From fd88fd5bb25ba646e53506ce2fb77263bbbdb14d Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 9 Apr 2024 16:23:28 +0200 Subject: [PATCH 01/35] First idea of navegability. Added link to the logo --- package-lock.json | 23 ++---- package.json | 1 + webapp/src/components/Instructions.js | 25 +++++++ webapp/src/components/fragments/NavBar.js | 6 +- .../loginAndRegistration/AddUser.js | 24 +++++- .../components/loginAndRegistration/Login.js | 32 +++++++- webapp/src/custom.css | 74 +++++++++++++++++++ 7 files changed, 164 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e7dbe69..bc118554 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^4.19.2", "i18n": "^0.15.1", "i18next": "^23.10.1", + "jquery": "^3.7.1", "jsonwebtoken": "^9.0.2", "mongoose": "^8.3.0", "react-countdown": "^2.3.5", @@ -560,23 +561,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/runtime": { "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", @@ -3831,6 +3815,11 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index e7b64080..399e7971 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "express": "^4.19.2", "i18n": "^0.15.1", "i18next": "^23.10.1", + "jquery": "^3.7.1", "jsonwebtoken": "^9.0.2", "mongoose": "^8.3.0", "react-countdown": "^2.3.5", diff --git a/webapp/src/components/Instructions.js b/webapp/src/components/Instructions.js index 160978ab..03b6a30d 100644 --- a/webapp/src/components/Instructions.js +++ b/webapp/src/components/Instructions.js @@ -1,6 +1,8 @@ import React from 'react'; import '../custom.css'; import {useTranslation} from "react-i18next"; +import { Link } from "react-router-dom"; + @@ -10,6 +12,7 @@ function Instructions() { return (
+

{t("instructions.title")}

@@ -57,7 +60,29 @@ function Instructions() {
+ {/* + + */}
+ ); } diff --git a/webapp/src/components/fragments/NavBar.js b/webapp/src/components/fragments/NavBar.js index cddffd1b..90e6249b 100644 --- a/webapp/src/components/fragments/NavBar.js +++ b/webapp/src/components/fragments/NavBar.js @@ -53,7 +53,11 @@ function Navbar() { } function Profile() { - return App logo; + return ( + + App logo + + ); } function Help() { diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 2324ecab..96e5a9ff 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -76,7 +76,29 @@ const AddUser = () => { - + {/* */} + + + + diff --git a/webapp/src/components/loginAndRegistration/Login.js b/webapp/src/components/loginAndRegistration/Login.js index d7381d5f..27b74bb9 100644 --- a/webapp/src/components/loginAndRegistration/Login.js +++ b/webapp/src/components/loginAndRegistration/Login.js @@ -29,10 +29,14 @@ const Login = () => { return (
- +
+
+
+ +

{t("login.title")}

{ {t("login.remember_me")}
- + + + + +
@@ -78,6 +104,8 @@ function LinkRegister() { ); } + + export default Login; // // src/components/Login.js diff --git a/webapp/src/custom.css b/webapp/src/custom.css index daa780fd..cf8ef0ee 100644 --- a/webapp/src/custom.css +++ b/webapp/src/custom.css @@ -234,6 +234,80 @@ button[type="submit"]:hover { box-shadow: inset 0px 0px 25px #3700ff; } +.button-back { + display: block; + position: relative; + width: 56px; + height: 56px; + margin: 0; + overflow: hidden; + outline: none; + background-color: transparent; + cursor: pointer; + border: 0; +} + +.button-back:before, +.button-back:after { + content: ""; + position: absolute; + border-radius: 50%; + inset: 7px; +} + +.button-back:before { + border: 4px solid #f0eeef; + transition: opacity 0.4s cubic-bezier(0.77, 0, 0.175, 1) 80ms, + transform 0.5s cubic-bezier(0.455, 0.03, 0.515, 0.955) 80ms; +} + +.button-back:after { + border: 4px solid #96daf0; + transform: scale(1.3); + transition: opacity 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), + transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); + opacity: 0; +} + +.button-back:hover:before, +.button-back:focus:before { + opacity: 0; + transform: scale(0.7); + transition: opacity 0.4s cubic-bezier(0.165, 0.84, 0.44, 1), + transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); +} + +.button-back:hover:after, +.button-back:focus:after { + opacity: 1; + transform: scale(1); + transition: opacity 0.4s cubic-bezier(0.77, 0, 0.175, 1) 80ms, + transform 0.5s cubic-bezier(0.455, 0.03, 0.515, 0.955) 80ms; +} + +.button-box { + display: flex; + position: absolute; + top: 0; + left: 0; +} + +.button-elem { + display: block; + width: 20px; + height: 20px; + margin: 17px 18px 0 18px; + transform: rotate(180deg); + fill: #f0eeef; +} + +.button-back :hover .button-box, +.button-back :focus .button-box { + transition: 0.4s; + transform: translateX(-56px); +} + + /*---------------------------Instructions---------------------------*/ .instructions_title { font-size: 35px; From af016d42949cedfcd72875a82e9e8a5f535cfd0c Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 10 Apr 2024 18:19:40 +0200 Subject: [PATCH 02/35] Removed back button --- webapp/src/components/Instructions.js | 22 +---------------- .../loginAndRegistration/AddUser.js | 24 ++----------------- .../components/loginAndRegistration/Login.js | 22 +---------------- 3 files changed, 4 insertions(+), 64 deletions(-) diff --git a/webapp/src/components/Instructions.js b/webapp/src/components/Instructions.js index 03b6a30d..7841aa06 100644 --- a/webapp/src/components/Instructions.js +++ b/webapp/src/components/Instructions.js @@ -60,27 +60,7 @@ function Instructions() { - {/* - - */} +
); diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 96e5a9ff..b0cb6f50 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -76,29 +76,9 @@ const AddUser = () => { - {/* */} + - - - + diff --git a/webapp/src/components/loginAndRegistration/Login.js b/webapp/src/components/loginAndRegistration/Login.js index 27b74bb9..ae209ddd 100644 --- a/webapp/src/components/loginAndRegistration/Login.js +++ b/webapp/src/components/loginAndRegistration/Login.js @@ -66,27 +66,7 @@ const Login = () => { - - - + From 8e5e7378ac0c39bead6d40c32584ee729352b870 Mon Sep 17 00:00:00 2001 From: sinne10 Date: Sun, 14 Apr 2024 12:38:23 +0200 Subject: [PATCH 03/35] Added basic password-strength-meter --- webapp/package-lock.json | 8 +++- webapp/package.json | 3 +- .../loginAndRegistration/AddUser.js | 45 ++++++++++++++++++- webapp/src/custom.css | 38 ++++++++++++++++ 4 files changed, 90 insertions(+), 4 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 076761a2..41859609 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -28,7 +28,8 @@ "react-icons": "^5.0.1", "react-router-dom": "^6.22.3", "react-scripts": "^5.0.1", - "web-vitals": "^3.5.1" + "web-vitals": "^3.5.1", + "zxcvbn": "^4.4.2" }, "devDependencies": { "axios-mock-adapter": "^1.22.0", @@ -28453,6 +28454,11 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zxcvbn": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", + "integrity": "sha512-Bq0B+ixT/DMyG8kgX2xWcI5jUvCwqrMxSFam7m0lAf78nf04hv6lNCsyLYdyYTrCVMqNDY/206K7eExYCeSyUQ==" } } } diff --git a/webapp/package.json b/webapp/package.json index 2ea16917..55422652 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -23,7 +23,8 @@ "react-icons": "^5.0.1", "react-router-dom": "^6.22.3", "react-scripts": "^5.0.1", - "web-vitals": "^3.5.1" + "web-vitals": "^3.5.1", + "zxcvbn": "^4.4.2" }, "scripts": { "start": "react-scripts start", diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 2324ecab..213967ca 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -5,6 +5,7 @@ import { useTranslation } from "react-i18next"; import axios from 'axios'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; +import zxcvbn from "zxcvbn"; const AddUser = () => { @@ -14,6 +15,8 @@ const AddUser = () => { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [repeatPassword, setRepeatPassword] = useState(''); + const [passwordStrength, setPasswordStrength] = useState(undefined); + const [passwordStrengthText, setPasswordStrengthText] = useState('Weak password'); const handleSubmit = async (event) => { @@ -34,6 +37,35 @@ const AddUser = () => { } }; + const handlePasswordChange = (e) => { + const newPassword = e.target.value; + setPassword(newPassword); + + const newStrength = zxcvbn(newPassword); + + switch(newStrength.score){ + case 0: + setPasswordStrengthText('Weak password'); + break; + case 1: + setPasswordStrengthText('Weak password'); + break; + case 2: + setPasswordStrengthText('Fair password'); + break; + case 3: + setPasswordStrengthText('Good password'); + break; + case 4: + setPasswordStrengthText('Strong password'); + break; + default: + setPasswordStrengthText('Weak password'); + break; + } + setPasswordStrength(newStrength); + }; + return (
@@ -51,7 +83,7 @@ const AddUser = () => { onChange={(e) => setUsername(e.target.value)} />
-
+

{t("addUser.password_placeholder")}:

{ placeholder={t("addUser.password_placeholder")} required value={password} - onChange={(e) => setPassword(e.target.value)} + onChange={handlePasswordChange} />
+
+ + {passwordStrengthText} + + +

{t("addUser.repeat_password_placeholder")}:

Date: Sun, 14 Apr 2024 13:54:13 +0200 Subject: [PATCH 04/35] Added password policies --- .../components/loginAndRegistration/AddUser.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 213967ca..43e751e1 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -17,20 +17,27 @@ const AddUser = () => { const [repeatPassword, setRepeatPassword] = useState(''); const [passwordStrength, setPasswordStrength] = useState(undefined); const [passwordStrengthText, setPasswordStrengthText] = useState('Weak password'); + const [submitError, setSubmitError] = useState(''); const handleSubmit = async (event) => { event.preventDefault(); try { //TODO: Add more validations - if(password === repeatPassword){ //User put the same password + if(password !== repeatPassword){ //User put the same password + setSubmitError('Passwords do not match'); + } else if(/\s/.test(password)){ //User put spaces in password + setSubmitError('Password cannot contain spaces'); + } else if(password.length < 8){ //Password too short + setSubmitError('Password must be at least 8 characters long'); + } else if(password.length > 64){ //Password too long + setSubmitError('Password cannot be over 64 characters long'); + } else{ //Continue + setSubmitError(''); const response = await axios.post(apiUrl, { username, password }); console.log("Registered user: " + response.data.username); navigate('/login'); } - else{ - //TODO: Show some errors to the user - } } catch (error) { console.error('Error adding user:', error); @@ -114,7 +121,7 @@ const AddUser = () => { onChange={(e) => setRepeatPassword(e.target.value)} />
- + {submitError &&

{submitError}

} From 2e0ff2e46246ae013e95dc409304aa160d757a82 Mon Sep 17 00:00:00 2001 From: sinne10 Date: Mon, 15 Apr 2024 01:01:26 +0200 Subject: [PATCH 05/35] User policies and internationalization --- .../loginAndRegistration/AddUser.js | 57 +++++++++++++------ webapp/src/translations/en/global.json | 11 +++- webapp/src/translations/es/global.json | 11 +++- webapp/src/translations/tk/global.json | 11 +++- 4 files changed, 70 insertions(+), 20 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 43e751e1..5b577edf 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -16,23 +16,32 @@ const AddUser = () => { const [password, setPassword] = useState(''); const [repeatPassword, setRepeatPassword] = useState(''); const [passwordStrength, setPasswordStrength] = useState(undefined); - const [passwordStrengthText, setPasswordStrengthText] = useState('Weak password'); + const [passwordStrengthText, setPasswordStrengthText] = useState(""); const [submitError, setSubmitError] = useState(''); const handleSubmit = async (event) => { event.preventDefault(); try { - //TODO: Add more validations - if(password !== repeatPassword){ //User put the same password - setSubmitError('Passwords do not match'); - } else if(/\s/.test(password)){ //User put spaces in password - setSubmitError('Password cannot contain spaces'); - } else if(password.length < 8){ //Password too short - setSubmitError('Password must be at least 8 characters long'); - } else if(password.length > 64){ //Password too long - setSubmitError('Password cannot be over 64 characters long'); - } else{ //Continue + //Validations + //TODO: email validation + if(password !== repeatPassword){ + //User put the same password + setSubmitError(t("addUser.error_passwords_no_match")); + } else if(/\s/.test(password)){ + //User put spaces in password + setSubmitError(t("addUser.error_password_spaces")); + } else if(password.length < 8){ + //Password too short + setSubmitError(t("addUser.error_password_minimum_length")); + } else if(password.length > 64){ + //Password too long + setSubmitError(t("addUser.error_password_maximum_length")); + } else if(/\s/.test(username)){ + //Spaces in username + setSubmitError(t("addUser.error_username_spaces")); + } else{ + //Continue setSubmitError(''); const response = await axios.post(apiUrl, { username, password }); console.log("Registered user: " + response.data.username); @@ -40,10 +49,24 @@ const AddUser = () => { } } catch (error) { + if(error.response.data.error === "Username already in use"){ //TODO: Improve + setSubmitError(t("addUser.error_username_in_use")); + } console.error('Error adding user:', error); } }; + //Possible email validation + /** + const validateEmail = (email) => { + return String(email) + .toLowerCase() + .match( + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + ); + }; + */ + const handlePasswordChange = (e) => { const newPassword = e.target.value; setPassword(newPassword); @@ -52,22 +75,22 @@ const AddUser = () => { switch(newStrength.score){ case 0: - setPasswordStrengthText('Weak password'); + setPasswordStrengthText(t("addUser.very_weak_password")); break; case 1: - setPasswordStrengthText('Weak password'); + setPasswordStrengthText(t("addUser.very_weak_password")); break; case 2: - setPasswordStrengthText('Fair password'); + setPasswordStrengthText(t("addUser.weak_password")); break; case 3: - setPasswordStrengthText('Good password'); + setPasswordStrengthText(t("addUser.good_password")); break; case 4: - setPasswordStrengthText('Strong password'); + setPasswordStrengthText(t("addUser.strong_password")); break; default: - setPasswordStrengthText('Weak password'); + setPasswordStrengthText(t("addUser.very_weak_password")); break; } setPasswordStrength(newStrength); diff --git a/webapp/src/translations/en/global.json b/webapp/src/translations/en/global.json index 8f79adda..154bdfa0 100644 --- a/webapp/src/translations/en/global.json +++ b/webapp/src/translations/en/global.json @@ -50,7 +50,16 @@ "password_placeholder": "Password", "repeat_password_placeholder": "Repeat password", "register_button": "Register", - "login_link": "Do you have an account? Login here." + "login_link": "Do you have an account? Login here.", + "very_weak_password": "Very weak password", + "weak_password": "Weak password", + "good_password": "Good password", + "strong_password": "Strong password", + "error_passwords_no_match": "Passwords do not match", + "error_password_spaces": "Password cannot contain spaces", + "error_password_minimum_length": "Password must be at least 8 characters long", + "error_password_maximum_length": "Password cannot be over 64 characters long", + "error_username_in_use": "Username already in use" }, "gameMenu":{ "history_button":"View Historical Data", diff --git a/webapp/src/translations/es/global.json b/webapp/src/translations/es/global.json index 410eebfa..1c0a5f1b 100644 --- a/webapp/src/translations/es/global.json +++ b/webapp/src/translations/es/global.json @@ -54,7 +54,16 @@ "password_placeholder": "Contraseña", "repeat_password_placeholder": "Repetir contraseña", "register_button": "Registrarse", - "login_link": "¿Ya tienes una cuenta? Inicia sesión aquí." + "login_link": "¿Ya tienes una cuenta? Inicia sesión aquí.", + "very_weak_password": "Contraseña muy débil", + "weak_password": "Contraseña débil", + "good_password": "Contraseña buena", + "strong_password": "Contraseña fuerte", + "error_passwords_no_match": "Las contraseñas no coinciden", + "error_password_spaces": "La contraseña no puede contener espacios", + "error_password_minimum_length": "La contraseña debe tener al menos 8 caracteres", + "error_password_maximum_length": "La contraseña no debe tener más de 64 caracteres", + "error_username_in_use": "Nombre de usuario no disponible" }, "gameMenu":{ "history_button":"Ver Historial", diff --git a/webapp/src/translations/tk/global.json b/webapp/src/translations/tk/global.json index 5a17d359..d79e6e10 100644 --- a/webapp/src/translations/tk/global.json +++ b/webapp/src/translations/tk/global.json @@ -50,7 +50,16 @@ "password_placeholder": "Şifre", "repeat_password_placeholder": "Şifreyi Tekrar Girin", "register_button": "Kayıt Ol", - "login_link": "Hesabınız var mı? Buradan giriş yapın." + "login_link": "Hesabınız var mı? Buradan giriş yapın.", + "very_weak_password": "Çok zayıf şifre", + "weak_password": "Zayıf şifre", + "good_password": "İyi şifre", + "strong_password": "Güçlü şifre", + "error_passwords_no_match": "Şifreler eşleşmiyor", + "error_password_spaces": "Şifre boşluk içeremez", + "error_password_minimum_length": "Şifre en az 8 karakter uzunluğunda olmalıdır", + "error_password_maximum_length": "Şifre en fazla 64 karakter uzunluğunda olabilir", + "error_username_in_use": "Kullanıcı adı zaten kullanımda" }, "gameMenu": { "history_button": "Tarihsel Verileri Görüntüle", From ee46ede9b9589e1924f703a0c14c77cb60dd032a Mon Sep 17 00:00:00 2001 From: sinne10 Date: Mon, 15 Apr 2024 21:04:20 +0200 Subject: [PATCH 06/35] Bugfix --- .../loginAndRegistration/AddUser.js | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.js b/webapp/src/components/loginAndRegistration/AddUser.js index 5b577edf..0714bd67 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.js +++ b/webapp/src/components/loginAndRegistration/AddUser.js @@ -16,7 +16,7 @@ const AddUser = () => { const [password, setPassword] = useState(''); const [repeatPassword, setRepeatPassword] = useState(''); const [passwordStrength, setPasswordStrength] = useState(undefined); - const [passwordStrengthText, setPasswordStrengthText] = useState(""); + const [passwordStrengthText, setPasswordStrengthText] = useState(''); const [submitError, setSubmitError] = useState(''); @@ -27,19 +27,19 @@ const AddUser = () => { //TODO: email validation if(password !== repeatPassword){ //User put the same password - setSubmitError(t("addUser.error_passwords_no_match")); + setSubmitError("addUser.error_passwords_no_match"); } else if(/\s/.test(password)){ //User put spaces in password - setSubmitError(t("addUser.error_password_spaces")); + setSubmitError("addUser.error_password_spaces"); } else if(password.length < 8){ //Password too short - setSubmitError(t("addUser.error_password_minimum_length")); + setSubmitError("addUser.error_password_minimum_length"); } else if(password.length > 64){ //Password too long - setSubmitError(t("addUser.error_password_maximum_length")); + setSubmitError("addUser.error_password_maximum_length"); } else if(/\s/.test(username)){ //Spaces in username - setSubmitError(t("addUser.error_username_spaces")); + setSubmitError("addUser.error_username_spaces"); } else{ //Continue setSubmitError(''); @@ -50,7 +50,7 @@ const AddUser = () => { } catch (error) { if(error.response.data.error === "Username already in use"){ //TODO: Improve - setSubmitError(t("addUser.error_username_in_use")); + setSubmitError("addUser.error_username_in_use"); } console.error('Error adding user:', error); } @@ -75,22 +75,22 @@ const AddUser = () => { switch(newStrength.score){ case 0: - setPasswordStrengthText(t("addUser.very_weak_password")); + setPasswordStrengthText("addUser.very_weak_password"); break; case 1: - setPasswordStrengthText(t("addUser.very_weak_password")); + setPasswordStrengthText("addUser.very_weak_password"); break; case 2: - setPasswordStrengthText(t("addUser.weak_password")); + setPasswordStrengthText("addUser.weak_password"); break; case 3: - setPasswordStrengthText(t("addUser.good_password")); + setPasswordStrengthText("addUser.good_password"); break; case 4: - setPasswordStrengthText(t("addUser.strong_password")); + setPasswordStrengthText("addUser.strong_password"); break; default: - setPasswordStrengthText(t("addUser.very_weak_password")); + setPasswordStrengthText("addUser.very_weak_password"); break; } setPasswordStrength(newStrength); @@ -126,7 +126,7 @@ const AddUser = () => {
- {passwordStrengthText} + {t(passwordStrengthText.toString())} { onChange={(e) => setRepeatPassword(e.target.value)} />
- {submitError &&

{submitError}

} + {submitError &&

{t(submitError)}

} From 8156e96b94d22f656a85fab401e701cfff0cff48 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Mon, 15 Apr 2024 21:43:46 +0200 Subject: [PATCH 07/35] The title of the navbar also gets you to home --- webapp/src/components/fragments/NavBar.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webapp/src/components/fragments/NavBar.js b/webapp/src/components/fragments/NavBar.js index 90e6249b..d6938b13 100644 --- a/webapp/src/components/fragments/NavBar.js +++ b/webapp/src/components/fragments/NavBar.js @@ -30,7 +30,9 @@ function Navbar() {
-

{t("navBar.title")}

+ +

{t("navBar.title")}

+
From 69b04a7c282f3de090d8dc12ba251ea32a7b5823 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Mon, 15 Apr 2024 22:01:50 +0200 Subject: [PATCH 08/35] Sound of correct and incorrect answers --- webapp/public/correct.mp3 | Bin 0 -> 33436 bytes webapp/public/incorrect.mp3 | Bin 0 -> 25920 bytes .../components/questionView/QuestionView.js | 20 +++++++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 webapp/public/correct.mp3 create mode 100644 webapp/public/incorrect.mp3 diff --git a/webapp/public/correct.mp3 b/webapp/public/correct.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..37e3cac5dc40322ee1050c485566de2f020db984 GIT binary patch literal 33436 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 iJ_cF94kE|HdI Date: Tue, 16 Apr 2024 11:15:15 +0200 Subject: [PATCH 09/35] Now it works and can be checked --- .../questionView/QuestionGenerator.js | 41 +++++++++++++++++-- .../components/questionView/QuestionView.js | 12 ++++-- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/webapp/src/components/questionView/QuestionGenerator.js b/webapp/src/components/questionView/QuestionGenerator.js index 28038332..f85aa212 100644 --- a/webapp/src/components/questionView/QuestionGenerator.js +++ b/webapp/src/components/questionView/QuestionGenerator.js @@ -8,9 +8,42 @@ class QuestionGenerator{ } - async generateQuestions(lang) { + async generateQuestions(lang, type, amount) { + try { - const response = await axios.get(this.apiUrl + '/' + lang); + //const response = await fetch(this.apiUrl); + //const receivedQuestions = await response.json(); + + //Mockup + console.log("type: "+type+" amount: "+amount) + const receivedQuestions = JSON.parse('{"0":{"question":"¿Cuál es la población de Oviedo?","answers":["225089","191325","220587","121548"]},'+ + '"1":{"question":"¿Cuál es la población de Gijón?","answers":["275274","159658","233982","305554"]},'+ + '"2":{"question":"¿Cuál es la población de Avilés?","answers":["82568","115595","41284","122200"]},'+ + '"3":{"question":"¿Cuál es la capital de Asturias?","answers":["Ciudad de Oviedo","a","b","c"]},'+ + '"4":{"question":"¿Cuál es la capital de España?","answers":["Madrid","a","b","c"]},'+ + '"5":{"question":"¿Cuál es la capital de Turquía?","answers":["Ankara","a","b","c"]}}') + + let i = 0; + var questions = []; + for (const key in receivedQuestions) { + questions[i] = new Question(receivedQuestions[key]); + i += 1; + } + console.log(questions); + return questions; + } catch (error) { + throw new Error(error); + } + + + + try { + let response; + if(type==="COMPETITIVE"){ + response = await axios.get(this.apiUrl + '/' + lang); + }else{ + response = await axios.get(this.apiUrl + '/' + lang + '/' +amount + '/' + type); + } const receivedQuestions = await response.data; let i = 0; var questions = []; @@ -22,9 +55,9 @@ class QuestionGenerator{ } catch (error) { throw new Error(error); } + } } -export default QuestionGenerator; - +export default QuestionGenerator; \ No newline at end of file diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index f160e2f4..bd23ac84 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -33,7 +33,7 @@ function QuestionView(){ } } - function revealColorsForAnswers(){ + function revealColorsForAnswers(correctAnswer, answerGiven){ let colorCorrectAnswer = '#6EF26E'; // verde let colorIncorrectAnswer = '#FF6666'; // rojo let audioCorrect = new Audio('/correct.mp3'); @@ -43,13 +43,17 @@ function QuestionView(){ var dataValue = $(this).attr('data-value'); if (dataValue === false || dataValue === "false") { $(this).css('background-color', colorIncorrectAnswer); // Cambia el color de fondo del botón actual a rojo - audioIncorrect.play(); // Reproduce el sonido de respuesta incorrecta } else { $(this).css({ 'background-color': colorCorrectAnswer, 'text-decoration': 'underline' // Subraya el texto del botón para respuestas correctas }); - audioCorrect.play(); // Reproduce el sonido de respuesta correcta + } + if(answerGiven===correctAnswer){ + audioCorrect.play(); // Reproduce el sonido de respuesta incorrecta + } + else{ + audioIncorrect.play(); // Reproduce el sonido de respuesta correcta } $(this).css('pointer-events', 'none'); }); @@ -85,7 +89,7 @@ function QuestionView(){ computePointsForQuestion(questions[numQuestion].getCorrectAnswer(), text); //reveal answer to user for 1 sec - revealColorsForAnswers(); + revealColorsForAnswers(questions[numQuestion].getCorrectAnswer(), text); setTimeout(function() { //after one second set colors back to normal setColorsBackToNormal(); From 1aedcb0d1fcebde4814c1099c59f72c41c677c04 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 16 Apr 2024 14:40:28 +0200 Subject: [PATCH 10/35] Tik-tak sound --- webapp/public/tictac.mp3 | Bin 0 -> 205965 bytes .../components/questionView/QuestionView.js | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 webapp/public/tictac.mp3 diff --git a/webapp/public/tictac.mp3 b/webapp/public/tictac.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e0525154a95c114831244931b56627322048e6c1 GIT binary patch literal 205965 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

UM<%}Tdh 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%0ABT zam60AFdEBRGH?ZT^W;zZ0CJ{mt79w~xM2@&oqT^tVkaMgr2xjV)GaY^o68hG%9H&q zlU@NSP!4Q{^y|-1tUmYm*H1zXcDX_&Qr3wc&qq}> z4ML-c@h~PG?l)7DPP03@)Nf;SV#LtD4gTf3(3Tb*x03uVMk>%&aHq+?gN^}>pDGh> zO34luDg|*bEo>YxqgP`(9|*!@V@+hzjq!W{NSG!GbA%&1{8$!nlOUJvg|V-KAPF`r z26`_U^-n6QK;*E)S2o)O2rqzj1#|<6>nl*cqJoNR1s$;`kCMv%g1iecm=qAY;<@5k zvP(A3G_iP$H`i)NPL;~-wf`Ts-UXiNKK}dPW}C4&%xQDV%pr$ih>$CXoI)aEiOey{ zRY+&q=FAX6DwShN%Au1^Y)(0JP;_;?3Q;;;jp|B;@BN}VVBeZSw& z=lyxTo-f7*V|p_J!P)1!j6lr<`&K`Hqn-aYi)#ocabw^Lut-CWE+2cM7khzaC;LNh z+Xa@jEHbwW?q3*43aQ~{4=KD>4&UA0s9dxPP;I_Z%Af|y4D0%s`B#?uTxe`)LU)R4 zIAs4s&#T&4um`%BvctCMQXL1pV}V3DsU=#X6mAz4z?r>{!y<`0Bz|qeaMU7oCs;5# zNj9N7=kgZm9du;gwR7%#Z`cf|x-N(xgv<`mZEq{{v{0mS$4)mT3k;Kyo5~sbMkku{imARut>HEUUHsW+-UcTzUM=GK zZeZj|Dxr4zzSVd!HIIrvGu_6Puj!}u`=w??>T%l!RMxfSr1j+Y|Hecn~>H5>$dFazk$~JZwauH~%QBqf3Uv1JK z_*{1B0CoYh{mP}QVey$f*KhG3uk5`Vc>mc6yU+2NCHVLGetWz zmpY zMwfa0oI{l^cVq-!f5Y2?zaiK@-pfrIIib)S4H(CDS-!?7L$-FLNh$C;uLIK| znnzV30{4-nKNt_TYGPT7wH~*L=owvKd1iHRn1q?c{5r0&qA82i-UNPYP&I+_5YP?v z^&%5=EO9li5P%C@)U*ofDoT?p$!!Dr!Yzq?I^3Pk`s6D07MWq0v0Q=>n6T;sbs?3m zt$@CPzCq@$Y!`zw8XBb@P+KsBNCya=q6AIXa z2?fk(rk#Jr_C@kpyg!fu>{VHArx66N14(xt`_mz`XKugEeoTKlkly81j=vj!C*Eig zFh8E{xwv$3w!5ka#NlZtK{#iaADJKMka@>geRPH;%vLT`p*AJ=`7ho)LH`_DKlej> zFp1U^kY0Jk2JzEV^fP1laMv@^x5f`$Zxi!jkBPTmKbnFRtS`9FYV%ieToxLf#B^-|QOK3%hG2@uk}*6%q%4;OXVP3>Dm0aC(9le- z7W^Y_V{)<`x;y8RG=zuelBuFe$RV7PTq=$*FYSx5#`WlaQ&!brrHwfX$5k5B84Yq> z!?+y80Ac2)xTL%bevMaldpv&Z0DTS`)>(?Ja^b@bB(xnvM!JzO)!nfgdr^(^Xxk;Ob z-u~>^GKX}8kEP<6a}Jn_12BLv$QJl!3+Gaot(mu%3;)txX`_+uAS*mYN|=U@y|y6A z7S*t85$*UTd*3dB$@uia?579e(b*k1ExB!S2=*V45N|P-E)E3Qzf>Qn&%=lw9V(|m z`L9f?%&R{a0~CkYU{sTSeGzf_(>v!zRv^gPn~d`+nz`~54a>vw#97Jw(*OyE)7;0I)5y${wg3MUZT3Hs+5hvx zQq@Ee`0UIKFU53uzoPxsS=2XbAft|yjm)R+X9=^)iDVVJ;T|qAG>=(pq+1h8vs zxv(Bjr5=bla0>BWFKQb+AjTKI8*;Ev(N{tLR{9nuF$iVg0#Bk@^;qhI8hue5*8kpuwt# zzV|K+CcSL1kOgFDdS%6`MbZp-QGf}v#7FAT`d12z+Gw^jxAz#kOb`Xv ztO6BEPjZav8)iZNOl9&Nr@t)wVn0~k@yO5V&zG%uFkXvvukQ{+gxh*Jxg-xb+oLnF zre}X#aCyo)zQyo5FF$J{OKcDbHUg}}+;SEe5df(1K(!|-SyR%l(oNEDIELIh?1tT8 zN9wl8=TK%+LMc4kyosg&W%Gcbi4LRQM1LR|_pawZgnOL-0(e*mCG%-89iian!w`gz zP;{6d?>LPn&%3$%jcDqu%o)Dd`^s$M9YPUZZv5XZ=cO{u-kG?S6`DiN-R3!TEa{FR zubhqF{MN9@DH;UJ8!;^yibR=3ui&YF)a3yn0JjADS`1rsjg%94EoX$Apt)0wxz!Rv zx;C;^P!D2Q5Il$Z)dAOawl%fZb0rv$S3vS4fPM2Ct!twrip&H0&03sE`a=VeMt)E}Bk;2k3^;x5!LT6x+CDIJy&xmM*c?feri;bcZqmI7%(~2Y=`` z0v`$12bXWIo<^P0Q<4$o5Gq_2ah+qEc`>*u6ZFn`BH;6%WHkTY}ev=LMM+ zdS@UOrA?j4RGRY9A)L6&WhCxG9vwEsKtpuc4361AF_;#U2$DwjZ}akj18}&K;2{&@ zJ;#;jERi|)aV=z#1iv_(L^qy>?x3(t+e2eva5A1vvZe%s5kb_QN=-4nvh)xJ&e$jE zDX;Zd3|h|n=hxMYep9eC>U#Fqv^zo1?_xyn&wDE?YE-ZcX%_2(cyxjb#R&N5K*uVh zsmujy`^$MNYF(qjOHQxa_}vCr!MDYj45e+#gF~>M30-Ioa1k;#x&}aBI>>b=(@|Ec z(I_n7-p0o48#G*F;~uahaE3gB!(i3`poaJ}cdA%wz*krzuJC&0j4wvV!d%Z-B8Tu2cp+>txEn%jh5R+b@rO&C@6EpRH6 zs85kC&Dfq1ORjRO8WfhM8%YLB7?7$gDs>zSQ188U!qSa^#e(X=`jXwq?s$E?Y&r@L zPD?!G)#NalTspypCg9+M5PYDdC;HK8e1K{gyf;w+0D=eMQx?{>0#7G<({o(ysfUrV z9;`ojgG3R^@R->?P6h68y0W*psUsWiJ9a#O_SV2aIuRr2&FC({6Zxvo-!~G)w3Nn_XAxTr*GJ4MzAo%rd;r)^LME=pk;Qe5Y}L2)yL)hkSwfWy!opZrfK zf$ZHwQ7r-CX>U+&RBGM_L7*>7(mbj34wD_x8c8^~^07bRfPI<2l$5cVf->WDuJqAQ z*i&?AW?Rw#p$~)O{`q`>846j^tn$|I&(^wrtR(ptn%A=|Vrl$5Z*8IS zU;jB@mMR7PXVe5;kcZCeamsGMOOk0y@E4b^HPWw%GoRur2;TisqE2E#__ zV=%QwdW*FLoH5zaA~ziipp`r(H=6oQ;sDy0RKpg^C#s=^J@E4$ct2fk+>vE1QeIVPn^X9%qacX5{^`8EyeYlxaU!zQ{;SvrNa%)7yVc=if)O(+@V%yg2A z$+Ab)pEfg=wSQOe`xL;;maLdrrZ+K@&|xQA+wg&mv9QelnoX>KGt&EPUyOZ92lTe< zHrPi{`fMlWBVA$-mJd!vXF9)6xRnw;^p4*?Aobzt*}E=3Uw^EC1EQ*{@=INqAKZ9xpFT zlZcAZjcJN&Wa78y_HkojR(q_V;JEy=YBYg5*yqizY%*x^iJI0wWf9elD?&@Fo>jeA zC8d9K?83{gTyD5miyKqdG*UZO(Xkj>(zZ5I_E;m`iksr?cNbHELifG<38k(&z(t>G zM{#w>3?%gTnDa`dOvmL1@<}v}B$nIvtN*v%XgDh^s^i#&LrqAX(0E_-Y+y&lq z_gN5({HKcI-zr(qmxsb_*6?SGzfiX4BK%086{w_#c~@*)_x&;Cx;v79b#-M!HcFs` zgangm6^V$@HbvE`!@6P4zp1PZpUs*tJ{sU+hIF3=#eEjZHzOCn#D6~WLMJ-(HM02Z z#Y(si?*n1jX_ae|8mD8XcVxxpR_o_9e*0oQ!<>g(@|Lu26%8H;$ux%GmG{5%Wsh5v3b5Y(a~^0D(|sd=j6uk$a)dd(>4 z07ViC%cgn2AkeZ$ci!mY+?HvB4S&1aMGmFB&h^iHx#{hvNdev#eS8HKB`6d?O zGd*NtAAI`DTCI;i-UFH;IWbRe>$bv+LPyHvpV(aCx}@XfUtZ-5=>DMl9f%7)5O?r3 zvgi1eiPcAh^H13A)bB5Tz~&UeB_)7wXWU%VJq($CL(Vg@iuZQ+l|n6AiWs;acb8Zq zDwtBm*U7w$a)70BR6&M!2>Pi?(J~rf4h5~42bib$X?MaYBWXdUlP!R$&gWIQWVjHXUoi}eKWu{&&_3nS3AhZt&=()d0!{a=5AJg@@t3N8=p&K_an`7M$Wx;>Z^5ZB);se zx%{NL_t@aVFRdSIZSpY^@-V{|s;%o$PL3sTtEzUNRN3X^(xH5nH@kb&^J`Tn zLvIwGSVc^`A1bZSIjqZ{j<*kL(ERDcAwnzb>!3 zTjB^ZVXc$m_HJl)ru!YgW7C_9Iud8>2mt+2dV344K>2?^5Fz{!pd7=HU}SY-gP=u&d+y*-KX5&x>a@~iqg$KJkd7Z zo#5rXP>h;#WmvAc-dlp>=HJs^HPfSpvAeadY|EN22X{rRPi;>MxW1OUaT0%^ z2BJ`BHpj8V`e%cuhPrkapUR@${-SwnS`8+vBrDD7zVi?+rtzPQymclnd^>vXh4};X zG^v^SXx&VybysFfd~Qh9`ta+fkLryEK6gm=o^lpg)~*I^-u*m<;>>{pyP3-h&6(fs zcVvBkQKY!{y4O0Nh*3`?P5%7fV{fM$TNI;B26mj#F^iTBeX1f0!GNN~Gn4Z#|3$vL zQ2aK>ZW^keX$cs=KiZ!)YV6?RGy4a+!x`y;gacwv8QML+OBhTXuEUdp^aCLM#((BmgtxJ z=zQ&MdnED2;a!G${wnW!J)1h;Qu!y<^G@vi>yJ|s77S5LuxZUP8{f8WvY!Q5d=6S} zx}i|?e9sQq$FVIZYTJLu1zMeU8($T)wm@ySS4l{D(#0@?eq9Vv^-9(iA()li^&c(f z*KMDyxNLUht+>8U%b&eg6R$65ujyc*@7SPDtj#Zxet+_O_NL*j%cgG-7bUKTWdb1U^MyJkZpCoTf=Lc=hy7M8R!wwyTd3OEbd48H9S_dttq&% z^T_y@Lx7d~fi7K1mLB6@9e4@~h%v-s08((+isFw)w+u2Gb3Y zOUPf$E3|S~t*Nesr%tt8>%x|}>BTGW!AchsQufMP6rZeKbw?}Q*dT`3W8%>RP? zI&Z!4=_d2q>pT3T(IK6BKN!5=Vcln5-{_m8Lx-+hvfeZJY_nx_JpXb>)-B5P<056^ zr)MWD{t3NMjM1962;uNE#bo0pp>Aec`(+(WG zN&FD*6hUkIZJjKo;?ikS(MeEX20j;GLVm}@!*Be#c(3W(2a7lP=yfof`fKpnlZbzS zwOT~G$^Z0>KO0s|wyAK&`s%_j9Thr;x_TFu6aI0`!)~^X3fjI^DuNMWXR1MwU=m#% z+e0<((C0pdfxl#WGQ@_Cb-V$Ib#G1Iv_8$%;I}?hq;Te`A&^*y4RMVypwCdi=$yV1 zg6^`3&BW#|y>W#uy>w~3bGno;V@y6%ezWK*Dg#5iN=&H1?<9N_#dNL0Z$}8QR*()p zw|g9f*o=sQx0KD01@vTmH?JkZ{Iw{u-CV>UgMbI7aCdcc2w|*Hp+#l< zQMQk!!4}ltWE@sW4xlpjyr}Rfr?*5pQJYB1^(_-8u^9?)tWgRj7}45qQqxt;-Do$d zt;s-}o%n}#IdsYY>!tNvhJ~rU*jFJ;Kmsya3fu@63R8TwCU2ds1N3g-1UwI7P}Q;3Pe+NTR$)wjygS!b2Q37 zfWD1_{<>4g6e1L*z(fHN?Gz60Dia+n!ylwaz1EK_@GG`3)Y0Z>{p+!<{IRNT*@Abu zyM931Ci`Q>4)+2Ejgdt_1cxZ$$C}hgC??x5t=$j?F&Js!I-C~XQpVAqGHsIaD2G#( zT`NpATwMa`Fn~^|0p`Kz6#P?8TbZ#lV+XmVAY(n@sXOX5uv5WL-sM0jDj3(wSdX1B zat%@Bg#aVP$(PO{yoP&*3(0`$Ok?8b=@?xdAhqs=H$JWo3qHW*bc24;xcUr`8sG$? zcIi{bGrq8F3#YGGd3tZYxFs`!rraF+97`Rwg8mMKrQ7jlxlh6@UVU)(w>+3 z$<0#hKOZD3`PuhNRlwkpg~rA}=zRlL%KO~$TVWL3!vqs_TxL@!KkcpAO!AgAjj+sy zpuC!vM&rZ{#xTlU(rAVNNhWXN)<$SaO1}*3O*Kk{_09RfnLTEr%M)X_`KKxL9~5Ua zVbLpLHoMebI3;Iq&y6Fa1oW$JgExzGpTP`yt(#J~%Mqm(_VvO0XV>OebUC``%+Pdt za*D{J5t)6lqHXE!$k<4_i-#1UaKcU(%QZn=nQ%aWN;C(!B7DON32!wn1>K-FuZE@;5mRVFY7QeUON{Hny(cb|91yb{z-C}*@NB6yD3YpqiU>k zWXF<742^%H?Wwa17vBsP(YO1S+5c6ukQ>mZ9f`keKDehMlb>boQ#u==dXd76Ed2r& z$UXfkIV7q6r61nk%{DOLo}SkcJ{9wy#D zx6#z3@Z0>AwrJ_fk|QwpqZFDck%|)^0Xgnw)}uW0Tie4~o&%cZxzwUMM&_Mqq^Lwb zq!pn=s+iU)@~ih!Ybn&?JaaeQ2sg92v^E8Ye!n@6)_ln8!*4_jvr4EUXM=+R6yP4@ z1#G68G(b`$1hJrXk(19xjfqszU8qHg44Zvie0CyXU%LGG_=K#MtbF)GIr;7yt?U$M zO*H7GduR@FIao3wK~A1+Z*Sw!V{fO~gQ0TdIfx)O*>M?dQF8({o#CvR!+{O$wMa`W z-s@iS@Bbf*2;xl)`KofsINDgn5?gagLd6SH0Xe4?eAV3CZGtm2za&AsQV0P8R0%39 zCS;u@D1{AqM-Op$M?ss&BOZ(BjUMt23~9Osj0ML`V8jxAuzw4E{b=Qq*#*`1hh+P4jYF?w&ha}j(KUmj#G}Job zZu=-r0fRPRO6(x~2?by(g-=@=V3!oF4$t-7cBxUBX+s#68P10mG<1`>hY4Ju z(Pyv^6UG&}JFqUWRElNiiVlnGE7GH5m-zg;=YOF-NIc)yrH^h$cZz?gkc^fmQ{4a` zY>#U(al9llalFEnbO2UE6VWjk5Yy1wX3LD_lRJSW9qUG_Z^FLBgmu} zUZOHSu|*dC`RKyD3ijl>N`GyAqo%-zi6 zp3Fm(d8;NCO>tErz5T(N4^vH3fFrd5mV+)RyRv;C6Vb^A@Gi?8W`dMkclCZjU_D`m z!-vu>noj(f4?_@&!yH6QA`>6P_5AkKvC5*G4GNQ~7U?|mt!ZhnIN)n6ZKefvx;3RDQ6^!6p*UV*gj%EOxtT=;XD&K+_M8A3)Fx5cA7COWmmnu;QdrMIjpjOJD4-AX&Vva8~r^CM6xNcN; z-E9k!YLLW7ZImYZT@D12735s@H{?w>0QxyEr!hVgw;rn`ZZ6ktgg$T(=vd$j`p@6h zmio@{V$g(MYB|?!bmbuM@mlIA1K4+VgaZPcJ7S4*mAJl${u$|c)P-1-;qUP=H1L6g zmXy)JbB#X$BI#fp=)?6Nzz-m29)O}6w9)V%)Gr{c=0MB6;mNN85LiRFTAo)V0=(J; zOI{^;Y-_r`&KPH03ql^Bx^sVXe|OoFr!C?7qU0;mwAQ?;XlugZjD0%e%Lt3)u^Xap zyarPshC1M>;>_MG4b#i&_{=Bi>|r1r@mlucX|DTRX}x%}bOo}98qJ*DJFX|`mEiJMNjv-26~-8< zLevi4!@|2+QJNK>Y1_E%Kx>W9+OsTnvafKMU4SoT#~8*iA|eLZG4jUR{ECX3GwiUt zA*?3BUDvz41~Nsl{Zp}h($egzENMcl;LIa$HaC;&+~U7n-#V{5FP0g2o4oLHEw6D^Qti)R>&LVWrn+{sGLCgu?<>5 z@XW^>wj?&jSg#1If4gEupw)*2)-u-wUIYX=GayYYEsYn=OE8baso=P2Q+4Kv$wbFm zH8u0ZHzWy`SJ1RshG`g8=5nMQ?FAdahL$j6tTB%1 zyFp+EH%WJQB7@z7-JOHo|LLDwzA$9U@q>K;cIcaLitX#W8z0}7l^+{Bnw1~F6AIF@ z5=!ykX^L0V+Wh}q{wgPDyox#YMh+y@dn*zW+4e2an|_TTZ#6U#QB2i=;blMY@p799 zpH!=2(pCvibgklDAKQ^4^M&`3ec-7j`(6g5Np;x~rm55BV|OGp@bBi~(l`aXg_I(5 zpLhK=@3x5FK}v8H+)39=UxxpYu9*=^=pZMU3wEZG_Nkv1MOIT%sAGkK?+un=V|TEj z8KFqV?y-B17cuLGm#yX&&8htiz~l&Q_P5Jm-6ix?oib{bGw#Z2SrAg1V#3FM7N@^O z5w5Vu(3hXb?3Amx8xyrFv1Gt4T2GbHAG}5nch{83Y!{GBY>zOXUG(=>^1oh{Ws2)t zVzvLBJZeycQvL9OAg-@LMbDVaGZPzXFrK1PN-{IgEgB&SEOlSXG1p7!Pq$|yuppKarj?@lpu*8n0~IhXu=059jX^U|Bn%A{&P{Y}lq4#z z2af_eDoP1gme%=DEXnf;*twwG`N(P(e*E?F2e0Ljlui9DHVQ_{a&?ibwyr-i_2u;M zw?BW6e|kTI{F`)N%VH8iE;VoU{vsk54*P zg)J*r!-qmhNwZhZ2#0@;wMnka(bke)XQMZn5m$+Dl*s8R{Wsfz2n)^JeH#ONOA zCm-5YtUTI|+WEosl2+C=%<&&@Z{>D4vQb8BOblcLK>oxqPkbMCXZB;4P|H(K+0ytP zIF-8@VRx@b2zNyUn|Y<0s6@5;)#$Q zS?|>L{;2(pgoEYrUdNKAqPb08Yu~c2ow;`~<;mA}4pRFf$Sh>XN=Y}J_(v<9B+H5d z?gcnIfhQ}j@mOP{Tl4wO3m<>~zO%bUyixxm^hy-XJJp{z3zoOEvV)A6v&cWe5f^Ae z@KHL6c9s3;gumW@r-us!#h16Er;~IDi^A78mjC_Ry-(^(z2Xl9R;MALXC)kg5YUc_ zv5Nw6%s3VqCm%(1y&%TZRi07{g(_&^g~z(;*f341*qa^0|HNIz%P{|BhhNFtqGXst z$|zB=@m@8|{33B1FM044$zxzN>&nPjPyXXBdICvr#Ej zi!TUb_P^iZ)b|U=q)}2)F+ns(u0Gsa%S;1uOhN-Hyp-;$Z*L!5(k2>LNv?3tXy{%U zb1w8vdgrwKk%sN-Ij<)cZY2iYOS%}mw~#)DA}urDv($g~H2y_&NCf_d#?O1DXsB=R z)5V6;;x)Wchl16fi}gvxvNHZxoO>j{50*8SqgFV|bJ^V3sw=*kal+x0WfejJb>+$F za&0-%u;Ulp`QrvE+VVAzy{WR;z)Qu`D=LQ85mIHDG+FM$TlSVbl<4{SAbGAPI*rR! zyg7rxD0%)9Fj%g)oI~dvC^uVP&zX2f&OBoFbcXvzcn5q5DjqG3Xzn^If0Rn&V;9s< zwzAjf0DcT?)8^4@8FsY7P=|17Mma;$UIj1x82-@P$!Z7EB6@T3?lhIYM@aWJR zKvER!uY13*yi~pm`8IoC`;RaFBMU>Xe{_D~AitUG8-`H%Di>UV3tkxV=eO$g%Iv=f zY7Zd`b>euHkH2T#e?Rv=vCu`Qk6SMAvVWiB-t{ooHR!4Eo!&>CUQ_)KnXE)|*0UQ+jN5YV0BOU&mjZ^nYQ74ybZzgP&)j|U zyd6lMjW_NbTE0+v-2L-M!uRWo<(#EzcS1ZB9Hws0)F>^t+_Nz#khgNP!^O9Qi;Xd` z-1f9P%YU5xKIiO+{7@F+UnQ(g5GK8)wrqNKL$;!t{XRdOpC#ih-hQ2o={WilpCNK) z9z6p2zrFq-E5EU!qCR{?)n^EuE@?Qm%KwTT15eU8n=VNeOQ$2w&?B?thyVv;)G?|o zjvfucIm~UIUp)^Z|vC5kb3*$1L=_i;& z<^H|gx0}|o*e$ylbuCoJ=k>UB&=%?2MTmt;W@ik`O;t?8yA8kfk<`v23+B$_rN1H# zA4UE;_5F_z$rXc~(f5Gd0jtd^czga;ZATa(%$>-u)Bd%xKsZB?5v6WPi~EB^=f2wm zFSzvMC^VEtl;K6LGdYN`FhC1Lal+v!EqJIX9z=2nkH8=_v0^mBN-g==V@+krhaIL( zTNks;za^foszoM@Gd!rV;lj*x0+|8nke_reN?s72!0!Ml>=yD9!Uxhz2&!8pJU({M z>3F&oerLK>#%}!fu>-FKKU!jh$J1A4Bun1L?#9Qew)_D@gn8JjLwxyOb`RTobIw;}i}USVBQyKLu;YA;_;l?^HW?-I6cRVicKrP5raEq~i1!zD>$& zg~?0hN%uF{>ZB-5k-rsqJn6q5mA_S7U#sOea7w61&q0mzGjk|xOtRbw+Z3-7={R@Y z*t0^(6#MJ6GrGGb4HEq^l~T-0eEhmgy50~sf8#f1enDd7v@ zqwx5+rV|YC#x*%(U5@=>i(~_4CEYPRAsosERqU1%#cO6l(o5)0I2eP}XlXu&fS0}{ z*r=?WhV!S=)IRbqfJac}B#4%p6-KZ|fx!heH3bdN#ow_;N+uxp$8-w*stPMF!#v#N z2CRjEZEiz2ETfh)Ew1nSd75@Z1ZMEFQFhFifK2cKmSm;=2- z1k&t?uJ>)=JFHLxS`w=_b4V(NVH!j4tv3(fMNwJ#GdS^QG7nEM zXx+ACQv?E|YyG;?rwAo&7*rQtfIDl4;Y3zi9jB~#39$gZ04&#S_+P%@yp z%&WQ98@?Byq7$FOD6Z2t%qHeK`L{wQK85BlTDm0;ixqut_}Ke)q=%<;bn0S2D2U9N zpe~Qstq?ZnqIGzdGQK18YW8Ylf61hxZqKWA$k0YnxACXbUDN~=Ub8|wum#Jw_rXDL za~ueMzGZBp;2~-Yz6Ezz&8bce9(*0&49IU`9kkCN#>ZigVo6nZx|PX#^q6Y5fMxx z;`&A`i$fD&`yJH|kR>(5J+4aw=ZLtvMG!X#c9K9ALSaxa=8y&D0V5@rX*B;Q7)y?@ zNta12r1mMV*=~iAUpVD*%u%qQ_!?Y(#fybFl~@&g?|-%!_^d($8hskU)9zwgh{Bu% z+j&)4&bVLh->zToX`xtj%s>00=G3Dj&R8wAI@=9n6yFWps?Y&Rfj;QV|Q z8-SQmGX|lnbL{}y2nC+K=yLDOF3LT4)-xeYc(XtZzgDsH*4Y<&*~Um2vJ0H66qVTmT(tn`5duTFBL?iLK+T697!0+> z-*rEjcYqtZA9R24p6^87!~T33YDK4kJgALbBR8ZO1vX3XqfcdGMf5KD3e4jkn!Ka4 zvgbK0Dz5R!^Ol6;EeUF3_x|SRH-qB9adO3puqN$s>FlugUcK#x?@Wf00=}t&Yeo%> z+mKgn#rYNh6k69cDkkEYg7l9vzW6G1y>^K=R6ifTP`A?f76V$Fu`(YtaIQPQ1L8Zc z^Rqvs4#a_;@A#NesSTwu@Z!1P+CU^uT;EGtt7U+{v94X)>-s!R;(2_*X3(C_9Hij- zZAJ1RoIdL#DTxFP`=*FrMb z1)%u6&fN+9H4k?Peq>mL{F~>Gx@>A$RLPOG-SaGR0B41RM*2f4c%Yy(c z1hCIU*x|_=T6_8MfDTK5kj_Wo$UZX&9V2LR!uT8v)n02C;bs7)hw;4h2PPT3wQW4t z=psYR(E1N6lns6S{M-O;!^4fcQ&d2BwG?7UchslJJJD1! ztK=p>{hT-HdTNmI@`~by;Y;gME7qxP%Mey=LjWAI??lq*Wk%~0O}E(lIw@O0wVYQR zro0bUDbyz{bR=vF#QJEr#3x`I$7 zA1o)V3e#8XBp$beqzv(CW_UL;GrAkDsQ!=snfX7}{J$<-NA~`+)&aSDQ-aY00fa5& zG@QB$YQt1gJ~-s2#FqK>wyq##hVEpM#UtTPh6*GPdWci)SnNQ97DHtctF6`JVqP`Q z%WILh?b1{oFq(nl;Oer`HQENmU(irIjJQU$#wD>-AffK85hOH0IsZEf61}7OswoXh z05pJrRF$J34hHl5Aq?LKqFbTQI4E|`6Fp8q02_>u6KYJzEIz7PJE2%P=PJEesfQJq zwg)J!?F~}H%bnYsfQc<$2lETri2bC<3lP`$B|R0ph>H7Dq({84kdF^e2vElDB#6W+ z=)?0mKoc5M7v+i-)W{eMqE=61UL&Ae@-^ww72{hW&yY-*b4i6xHG0y+LyqASk;77I zS>Bk`qIOoyIre~wWn96=^No;t!o7+sVxZ%Rtcz0p4MuFmyr<`sYwCamvah+k;BlaV962&!6ON7L|v}EJna8_X6#8sm_U^s*aOAR*|B?bV9s_NnrW43tn*k%zU zg~$Ox)a$tmP~2dnnXrj#h;nByM|nN~7KawUBFJkw#}>vVv-uVlSfxz9f&mhOal=CxgYAY zBJcIoSp*J7_Lp;8-~s1=wqfwRfZirHE&eK?UxTrZn0wryvV9CTQeYq-3AYCQ^9ik~ zGvB2D3%LVbx3{>+$J|sXsnAP-!4nuDn zHU#W;-XQswsQE2eU$z84dBSEd^un4AGEahp{Ge_ptXY zQJ*u|8mGsA3XO=O#qWZ|Qyo`LU*2U2qG$+m#fQOytyuhwNN*PDD84dyMwCD-KFKV0 zr?d|Y+-E4Y499-P=M$o)`v}tP3(Hk}qEPzInCLNFbYE%;n~v^rnoQNh%GNe877{b08y*!H_B*y_;*J$< zsKiR++`DjKKFaHYarEf8c>6`HomJ+={8%HRsr*{d*Fh415=%=OXE=agXeFqDR7~{mx3O#Dhd=q89Nf93R-)X)D z20M!^H7o6!u4Cs4%HV5%fs6_?t)Xo_*vFTMj)X7XC4Y6Go@gQ1X_JV#TPi%?K>)Tw6606k%cCqGNk&KV;!&c$(y2^wrb)NN5kDT3U%?+a2+Y?HVu=y#7ttY z${#&*>+kq|h7f?D!t|;Sc5aDkI>jCt>|p0Hih{X(A@E>90_QQAWXhbi)yVlHFE1;p zt*zBw@s%-$-%06UjwkllIc4gQ47!UQC~(sRj0Q4=9Ll^2r&pM2+K3|bYr*d{x3Bt^ zZ{Iz+s8xO1+|?0lQ(e;U3aaGwrHm|E#|dd?83gKpDAI$Sm~%nx>85KsSWAPaT$dIU z3qCrP)qd@5$6Bu+&XvwRd18j&xsTc|w}ORR5wQy;`tG#Y zqD&LrjYnxZJC%~l+fk|_-r-{gkBo7WcL%6OD&dhr-?~7*%R$V`kq!wF)5Y@LOP$_Rv?8C9Npay5rT%w$D4}$gC5fFyruR?LG zGH7M9NFi8?Ker+1+@Lso;6TCUGedf2wK3Z+{IN%hl&fAb9HEh3w2@wqAV3g0eofqU z68}vO+NLasQcmmd`Pq zxj`eyHO!DMJN&C4)43CYObeLJKs(7uY3cZhD&ow!4e*{B>yoDvY;ws?#R_Ci0^N>6 zD47!fE6gBi67=mf=$u;yNHX24!sRG4+%%z9K~rgDEb4m6Bw25etaq2{b$Xs2u?`ws z!i?+i9eFfQO4c6k{EdtWhebKlDWqicVVEixW+QmnOiX~i1_AaR>^QswvM_Ut=6nmw ztYI+a3@dD&W#EZejYvluz>W5P^UJYXcF(bBi7#qlpg=KP2K{I4Hyu{0F+R(WnI(|t-wW901G7vtkIjfBu5;*qwk|MFe3IN&<)Jv5Nb}B71F* z(Dv|gK(zY9icX7vleq;g(EV(i*oG`R_YOJ}OEdaIGLGTn=)S>j(T=6DUlIJgI4smx@@XEOup`>0%w`mw_?wOKX~`9=G0_*UB1b9 zUw`@E(HnnuA}>3Uy_1(udm#rt+iyAY&&%6Nzn^p%>VKOKEhy^vc<7RC?8T5$o%(vN z>gN3zKoIX3;rxyK+L`m{)tT#ik@wA0W2&UWQxKcOJ{!AOmMbl(xPu^Ht z%2t@ropo-Zu-)!&nD45w^daf@y`vxZbYy*TG-w?}9HYZx+)s3Mvh333Rc@``cF z#(kT{d}+zZ+WCR>DOR&Y14iBhH?Z4Z3HYPu%aT4=9%aezXA$&>&QZ>$;{CIgfvgm> z>fIz-li%Tj?zKS;E*7|zUH{8tvSi&?Ti*>vpJ#}eimJ4rkCPPxw>niv?6BOD^*ky4 zhx*Cyr1Phh$lS)$mM3s_an4bgY2E!?;^h5ENHS39@RpZn1)#3KP1H|(>!|NE(SHMk zRKg^gE4Z{;Cj$fdc2rfqg4T-HScMA>ddZ>7H_g-#F==%u+!?xdCy>K##<(syhF7t$IyWbN0YZ2s+AbtNGoh;Ncv5}SX!kYwJ@*t3&-}+&;`wpP`Vh!90o2_T;H{Z zXCQxY=emoUqquog<<`jxo?!dF_ zD#)YRQu+7Gh7IzhMrU)*O#G@Q=BQwQp3mG_iz6#xjC@Dhv^8AN=8s%MEKA43cCfkbcqw%dJwK_$0bo;a> zrH8y?uC&0n!>@jqY8CR!p{BM*D(80D;SF8YpZSPzl`vntAf z$y3PKLw+qP6t5hN-J5ggq+5X;mhf?2wRv8(B?eZD$NI@FQDcMTYIRYxI0Xiho&?b_ z&_9i2B$J*%UrYun*-a9YH$qdX@ytPSWs$F__IF$hnrAd4Nx8M!(yg-8H*HR8a^;5iZ{X0CC@=ThtB`12UO?tYiAx*1&JRjp8k2L1nJ+aD7_E&nK+ArUFU9@@zcJH$MF%OODMVc1i9jYraS9FVW(r#nHR!e81+v&k-kAw?u(qr5xvCq-~*q)>sPhA$*K047)PZjarWq#ZI2xUn3 z=4QK3v%h|C{Z18=I1c-n`DMOZ@(;Rd#liYQgrnJbdF2d<)$l@nMR^L???rlCs?!wv8|GIozyy4yxnY16_=P^? za@%DA^$K3{b9~25N6)Lfo;azxmi*h#!@YdA&?Y9?EL`H3rt&K}{K`zE_rat#!5N`M ze2O4e?}4~Jlq$-^FAr4OIVKe6kCZJAMd|-K$QL6MZx7FN_(hp_W)*t}P1jE{IClVW zQ&eXLBNU9|+Mlz*sH#oJ@w|Ep?hE!)plT0$YhQTs7SQujT!ka~-PWf2Iw|e95&ld{ z$jlxfNE0WfgI)hI#ld#)&BQzzRwu3+yLvQ9-GwZl_VX0FC|LZMIf!JK89`>iAhsSF z-GKXcT@p(N0FpYdvv22}us03w0s8=v!adQ;mkN^^7$jD3r$y15HcI!)U?f6ZtoFq{1n|>V<-|?BF%+p~%yb!@ z{x<~XWMT%LoKq{M)89>U$v2ee7w15|vUa?Mf^X6UYY% zrn8Ay5*YwCX%u!3$yA#rOcEd*3f6Ifk*p;kF~+rN z7@nUJ*;VR5N!FcZ9z3rwX-c!$@06$@EBnF0ab^R|ca~K_HKCKRf|O1A-^uF#s-Jym z8gi^z)%71{!o8P4HDN$5K5!bpjIuM@&YtRHONo#k3ijvJUVq220N!TiNOeMb?fG)u zaq4{3d<-PZuTHKRJBj{gcI>l3q<7OU>Ekn+TB^rnl zk2gl=uvPoEj>oAdsjsDQI=~n<(O($lzs%n+&L0=&Kz5+{OUH4Fz6u6YY11CaefrmA zOxQ8xj3*hVGQxZ_!klip-?&5m2d@TH-pj^$yZu z2er06;OM!72=0N@-fX7$dGu_iV{W6pqGI4bzGr>zncT)iQ60Q9zX-;-0mWNebltxv zb|Fi2%OzmXT{B;I0FP|a6LK~k2I^6joXLef2t4Z0g=q1c{}Hc$PdmdeGEsCWlF@pg z!ZdM%D*0uDU4Z?PE&Ej^EjINb;5R6A?ON7ildHPrK{-|jTV6!Et{M+Ms~hvn%0XoN z5UL8QV18=Zr+qaY;7-7=t$-BesrBMsK7gX3iuY#wo6M$YFxUPk98Mf))GMBSwA*sX zRZd@!6V{?~oCANoLIK;Hp-39pW{AbEfW$F|^ihNHsX(|V6Bs!!v~{-U0#~>kFQfu! zq0oO@_<1-lP;=v&6#C#?aHXZzR$DoRMN^^X06nd|LIu)SPw z*mRdimuGLbN*{RAnUa+##JtMwhT8=cehrJ2r-aaZ_@`MZ?BTuZc z1rs)yYOVlml&c;&)pQa};7H55Udi@)L6?sr={43PCjr?3*3d5gIGH2aPt#Z2KsO`h zx4#{1OW8Q6w+qR9-E(CNFIW78|6Th9NWI*F!2^bvV4fR7h(lV~dTH2l;!y1`4vwu1CVtGXa>qk97#vGwpuR6XN(?~&(GIp@H29(8H&9~m!wN#%u*>~9m!NM zYpfRMN{Jm}>9{b=9~Y+B&ukfORB$=9W<~kKeO);-9T^?Tx@re_HQTi*+jV;qp|>W* zj!|nbYE3kEFmxc}U4;G_9f|(9^^C5J9D8cfqnuX#i!qD~RDKK`i=$^_n3yxO@nQ)a zoZ-m4K|N9bH~rsib5odDI0RQenrKtR7qw8-7tV$u)&=-)M?nAF3!>|xXw}w7wXL?$ zQk4bLf|;uz{5#*Xc2*ZmCVLY7C+sO{VqmG{*y2PKUky2JkJvx#3^m0TdybJ~t$&el z*tR=X@w(n;ARQ!#^^FzxZS4d8N$z73Yh6aVQ7=5YI8JfRd&EEE8><+q@}q2f!?wNv zey=+0s|lnU?cUA650|w}*ie$>j2wIMZE8w8Jf=ll6Q{mj|C+chmMS_Uw}sucg}V^L zIMcfsMSGLvOs`%}bPAL%Tl_c6njygNaoA1s2tH!W^386a>4gLuxIaB#Ft8T#VM08%2COPq$?bG9YrN57UHexTdz2+i3FCR zF3XTWQX101OC=p~uvYr{fouQOjjL)Jw>12{x8~HTmxWo1^`Lw{kfZkj%^ zIh)PT&|8zs%WO62MjkDzXv!bw7<3~NV4*78jHJ}tv=F>YeQJ)G?#-3f#3gR>_DiYO zOlfRZ#CO5dQb&&5-H9+39IS2fpnqRi34>&?d0Dg%aA7kJa%CQ7ib2_8J+>nX9;RjzdKiO-zQ(;R#&CibxIJ6>Bmqx}>`2<^Wy=|_X6R7#$g-wpZ(KK-f-Aop! zqJRMQo;~wr)B&(y>v1H#Y#D#~>eTan2jlnLTox?oxUy`g*zQPlv5NCaw*UEAGE9sHnJKJVdE$4UJ>L+>BqL2Ir!i zWczXU1vSt(dxW>QQ80)Q=^=)&g{{cO!SNo9MCG^7`&QO%7)v}&nKw=NDdJHkN5R+& zDM(qQCa{?&F0tLarQZ2>HGy~0-W@sxddl8aGrO-agIo-14t=BI@fyQl8lq~+N*FSW ztPxd@FgWIzo&W|t4#PwiF~~?6Z-t{^$*0>2JG#oRukS9O`@|f3;ywlj7P937g31n; zAv6i4D=&XLiu&YX%7AX75SUrbHPNuA54%rWHk}QU-k1k_)l36=h zqN&(z=)+M6?U*z%2eQj!U6f=B#fQPjCNSut>okTH(4Th*RCa)Ubi4;FtawKl_Z@V| zLNYwaG%OZ_AlW`xRWi?N4Qmn(qw-!9Kpsklb2p zh;O;7iXLG#v``Xl<6d~;74cok{G!XW97scq*V-D^9I8fUBR=k#Ffp)P6`n^@4NUD8 z{<(B>PTo-11?~PmnMeDg;PT||W8OT8L@?&u5-J#O% zeojL5g`UGWg4F3UIZ7&YO$| z(*WGPhL>Jco^#Gm& zS;?=L(Qld1G@_G&B(6&zr;p6pR*;H!lnG;J12QH&Oyshgq<>~MuPFpkqHG1}9TbrF zYkH_GtnAq@Hm`+}_(SA+P=Chzyvk+cuX2k@>Z)5*`+y!C=(k4br&=2qeK;d!*fsDv zt+1yfU%MM~#blg9?_zNZY0`d-8KFy;*(E|3j#~6b#00O(T#KScB@452)4O(lMo|qb zwB*;Im7wrQfBnoUu{Z<+_r250dSMzHz^?4yfVaT!pc*f-{nWrV zKR6_Q^`S1*UBb6zy}#a6KS=$azw)s1p|0F}hl7~yS6$A};~^Is|JYUHJ}9FM*p>31x9LT%yULz#)us)c7!6IG=AZa_^xWv_FF&A}%AKp`=Resvuyrd% zTF*t4rS!lhOaHKV{kHPoC{l~-ok#th*zOThTfxgO$71F6W#S!5BJ^k{75c3im2!y8Yn_f6M887 zJr6#-oyrhKC7zlWni3~eXvFQQ(gP=zU%qjgLy~tj=+Hb z@?d;=Yh2&Ow&E0<1+J;Ht|=Fa4G>ZE+e>WMzY&&erHi+9m7`V#>#9~3l(`K@GEaYgE8XPeqZiv4$~?XLgopGm4Vz5`)M*_Mb0x;u;f z((fBENeQ(NJA0dbUJpDqSh~qR=m4*@nsVCp!?WCKY<=1fn}Y-aG;G?F1HSxJUXZZ# z^p;%)ZPwc)pJ33uxfFOV)V% zpar2p9utGP+jUY#QWm1S$*9^1X@SyXX@ zmwY63WXsak+=wRmrw{0n&XUbvR$CtNdLdu+?b~Pb6X@i-cMHdZEkAu+J-1Ka*7}Z- zk@hCwH~6pg_MP|AKZQb;dRRpn6^)$g3IIc^-2x95Y5WPxsGBcIA^Fxk*IP8ElgCOS zDSKDo1w6@4Pm&T{hd`I?R&Y#5B}{@+&2wyxWb>k#N$l`jPeTEVqc_&))U5!PW*efi z9pj@YRQ(ila1*%TQPl7$w5$bJ*E74vjD1^gLiD^lyv$;!T{jN8T6Q&nBy5%Rh z7Tn`?#YfurGEGaIGbL5Mp>di9HN~7Q$G67!Z&1Y7&FUxMKW|t)VA!KR5Blfye1}z; zsUyiT`A#;tLL{(<|JTjCtI_N6D*^&9G18g8N!JXMY?j&ch*a8BM?kSjmZyeatIyZ+I4 z+~e0zemmmTzHzmsA>lx$CD&xyMc!03y{x#X|M)ezyxrORz;M z=@@#XzYZ##tD>!?eUlk~QUiOo=N3DgADXk#2Q<;mfR|5N8ut~3|IK6$4CL=WQ}&9T zDXjr93TnZp|S6~YJInKsnX+_{MP(dcMtVJZZSI#FMwczh1y1d{o zXTV7R8|<%cJF$Xl!cap%$G}drW9_=nJ8ceE*BQ2i2A4FjHlyVTi_O9?cPQc;VR>8y`uD>hnz(d*OG{syF^GKb znC?*FVK`dbA0S#;-T0B)0f?p2X-+u|V_L`Klsq$9rg=yVuI1f{Q}s$$c%GZrl_M2o z0uBSNL_pVbsU{&xSlnHVOM@D+|L!Muw)zvLow(MF78RZc2Qg^1#5}F^i~~8sYXrl` zazbfZ^%>KZS+5c0W5dRA*chZ$84g#gaV@L;&U9<{v;+yy9BeF;tvq1cLj@}Lo~z_I z@1Gomy7_JSv|80$c8;{Gw4Apo{?Aj0c1|hawM%Qu@6ldZ*Zcb|08&)u7G2LZY1hu~ zi$e?N$hos}p#|yU1=%$6LM*9NG#roNwy%|X=w#!o_&?##V|zfI7KM99^Q5a|71KDbf`bFL+N;y+IlfTND+w?~Ttka6Z{|KmLgJxn6^Z|5UcG zE^Wup&wX|Hc=suwMIyCZvpgf;>q~wLXq{7`RTYW;Z#`ZjW~|o|m(IrxQ+xmZPfH(R0hnaQ5!u z^rIzD9fCE59e?#_hLx8H8(T__*%>Nz_ZWJMJa(BbBFh$$i77C^hD;;fU1NM$uX}b8 zoyH8jW+d0e+TOq@BX!gM{(0N_Ixpjp_9%hq~i#LWgc|9_V1}!wun_&rf zI3B8<{?Y{vhkkJw72AoYn#BV<-ejiag8IdJ#1{G(xQ)Z!sZlbqUl_1pu(^`nc1pMo zB^^GPPR0Iv(Iiua5Vlo3YpNwjf_^eU1f~*I-(N9l05zxI!UO{8x-Y}ikQb(hoFBVA zlj=cQz_zAf0%3a3b|5X#W~O$LW;W;T*UQ6Hg2&=rQpR87&-Dn&5(WmHQ9x=Bg4mq! z7Lt`dtd$F93gpS;*|ZjMvpca+ju+|dXZTpjn#9G4u{oJ4kD20$x>($6Th-b|5PRlS zH>!+wEu|{B&f@Ay)wZ=%SpadI!utu5oyebxPkeU0WA6FhsT=tJ;>+=cynvqt@2LcN)^2vuj}! z=a_q1R9>hI#ZV_2#Km!1Z4tIPyKMcF6Jw~oihp~WZN+dO7m`jUD8W>dP%WY1!o&o~ zNYZ;4m^vD{(1$Jn;h~hklQ6nO`dtMKA8Qz0a!9NV3+hM@V?S*sUqEB=TWI`7cxnm- zlSkxh@vCW4y1vX`DGZ7YWQH&iAUD+#hIgKn&LZ+|!{m{8ou)*hjcby;pi{yGY71jh z3YTCaWBs4;RYVi~%(NV>2X&l>kXQM5NsH>B4!8w?O+e|QIHKetZ=)nYrS$~90Z0z2}5=0PS&{q$EuvVe6wUIJm zpSFewg95A)J@LwVq>^zSjOTs_nWXh7+T}r2#E_Z-coSiCt=TwHzsYuQf z3x$4WQr1eTE7T{6V+KX)eTw+bnzbwP&-RC{F3e6jm%dC}`JLD?BN7G@X2pVrOmD{Ptp<=1?#W40 zD_aX^HbX5GFbr??8eQUC)-%R4D#W6j3|XQV6n2O${=6VKzSd;a+UjaR7FHI3;{@=Z zfd@&~QCUE;0ho{+CEi29mE>3G>v{{Pw~l0V{J{7DxKcYmbG7RLq&z*`G{&>Ql_K}? z%+*nuvyU6;x}HaXlDQuBKM}PITf&Ae#~B-rL!?8TiXAbLnD``kiT_~W#tOX@aHRmt z36K$HSQ6U%+i~%3k*PCr7jLyoe&9XUsho*-L(W)A(=EHU><3-6&M`OD$M&q9>*Mgv zi#MHn1nnn_@Mp@Qxa>x@zSw_ZN}Ip&^t{^K1JI>IhY#{Qv~NY=EpJ0#aXP;RMWI45 z|730isuT71pehYT>oT{auo)&+FlU#mbpjR%ze z2-p?H%EKS2(Cdy>T#jsj7v?_LJnV=L2BV4>uTv1t*g z)mG=N2L9zIQa}0L;QI;~A6N>FvlI`hL^ z`~}aY`ym`04Phx05C$T`($yFmj@@_iN{sg}8-AZxZp_WA0yC*Sd%N$!^9ILLS#u~< zCam`+|Fy6T)qp<+#xBchUguT8jqX8MZ=LfU(D8=OAymUz@!J_QyobxpbL_6(G zJNBGBVTl*L;@L@B_ejV*3Gz8ouipKbL((w^vkE#wLy!uDOoU$N8CyL@4aeByH+%O( z;jD{xuC$x0kT4p@!}4yBB=Z4{qgGzps%F`L^qpRB4+ba)3C~kZDg+LU0Ii5uIxG- z;q2P$6k@+dZ<`&UdVzVF#r44*mA~$qTx2t$>uDhrhow(bF`jP*v26 zi_3>+FdXwI%-7i$svULkWSHg5>Nu9!Egu*R(l#Cl-cB(zGRhYh<`0xIjgLCo&wWnx z+w-nRkvo^ov}K+iq&hN-i%IuONa zT|st8j<^%%f%8!3>sF+iQ|God<=h!7xqxwSf~+jU($u0jFfkunwvGO^sV^Z)m6_`1 z*Xjx^7EU554j0690&mXpq8>Jh?H{R(Ii`s3kE}V0aW(i48ZnmlVai$&)$LUc{1CO( zulPGy!LAK}7wViF*}G*;N#9V&YCFlrUf~5NU8auH4#a6|`sXdY-m_8ndVEC*mt{O$ z%N_+ChN`BDuZTZ()?WWfc4K?v_D9q#JdssbIivku%%kO(xOk0SOw!?xdxeM8`EfrGgNxTvEWeV!j}pl&~e%Gj67v5HOoa6c9uHGysIM@Mym z6Hw)a5>Ip;kh$~`?rs+7Jz>p_YYkAekd)LAOzEsMX<6&RNvU}hqgc|{L{(zch0*+z zHErSUWB5O-A#NxaFBl( z7hFJHu2=MarH*8&x@$h>#FyU`@m*$pT-UJ>_zY%095?JPEkaVhy4Ibw-+(Kilh2K9 z86)5FAqc;L{4iuo?$?sNiNWz$j@f}}aGkd37YtS=+#dhRHaG0*W{`Rb!y=@QU?o%! ziFx(cob3MeLFIaLBjqls$zhW_2##LHdvyGg#j~{YJ?B?A(QdZ}4u10XmJ8D~eVp6M zdBh%K*Kn43=wyTi^-D0wSG{Jp?m4;qo=m`-NZe~ix$OV?msi^c6S9u|0wb zzMs4eAH%mwm)~~Xefr1iyLvs_rqZUSOm-0(19MkSd8+?Xm0)}Aa;$^=bIaLv)sH<; zuKZwMris{7)v*>u3j$V%p~M!5NSFV;5y1tg+KWJ8pWt)QjndtDnKiO2}3Z#%~8CiBm^Wck{6P=?oTT)5MMSSMu=?|2GgbQiA57tEdS$}YS zP)}n}?~@117x2wn>WIJ01peOp{zizrzn;0}dp(5QayGBX>cICjx^L-nMaaR6@*hw0G*dgU|1|)$1kh;KcvQCR3SWLKQ6*ngK;AI8`rZ&MM|$k%ktoiyYZ zH0Y@{>*3jOm#~pXZc%5$OTIMelswS?IcQz~It$;DSf!A~0UpngMRnS%cGF&3q~SQ* z`{J%8?2BGCdizT#YCUkE^HABYi@$%yS|(RpCfzC>c@`1t+H=l`_DGMJz{YWiy=TID zl)TP5hde#LW0n06A$A87#I$R=KX0NG)YYAT_nZGS`NhW-PoMqp4ShF%@*6kxj?L-Q z!Sb^66PWz@q>bjN*QnJN$Cqo^%%F86@ym)&d)-+&`D>ZIZQ!-4kH??tXZ{PF6kE{~YPRAx|&iaAag;;4g@~$ z1emyA)T%fS2m#z=EbeV|&JHSn2?&mCp-D0)lQ~fhvzRjrT9wgMm{4j}faOo9ttv`w zTW_1Ka*xW*$r4K&&o0DL_eY}>=b;6%Q``w*oeAxnP~xZ?oqp2@wroV=T74Opwe3?Y>c-dPVD-(sxgOG ziAf2;M)>8&Y}fbpR3RQI5L-`s23lqvlcwZgaEMBn6DIZ1l}Fy0t>mE2h{gCa>6fgj zvVoKeWZ1L$*_61b_;g=Vy@qKfwuk!bxkz3VZX)K@u5;^xEEXyrZtoa;lYGX-_?Bs>!3ctEBRp%OT>O%WHV=MHQBd%Yc1kOUmPJZ z?K)~R7p~i4F8EP_CC_VE7 z!_AF>j}n?sgOro%S;t~W-6E<-M-bT{^kfq=7`W9)=)3N&MZB|G1VSUnCxa2AT*)G` znSLI~m{>x_8mi=A_-ZlWJzjyxgvgj5%r$Ji5oN4tR|S%XrRSbGPOPxL6gEZDrY_-O zazq*Gi9Uz~I*5T&CL}5q>rZz{1biA93o_ZrOS>8$J#qy9`I$#KEz$lU>ETX*xF=qG zyBlOZEubSBhD&W5mB*6mcSMV8;%6R7TVfckOw%*Dsa(^P*Cv9Gy4DL``Q=_}mANJ_ z7qU(A-g0MUi3_{$Bw?26CT<~O@19E>$3E-TwwO2k}Vuk$(>;j#N zzhAl=?Kw|9y|MV6-GW*ivX8=2f3lLu16nX~b_bddh>uTl%1tmi1j!mfc0+ar4&ETd zLS3$t!0dNIvDZ=zkFRSl*7L4k38g0d8Y(sT9F32ZRj77>; zB{z!19(10#bF@Z1fi}Sw?&bWf(u@n9dwOE&rt~{yp+hWAN7mAiXa(A6-Qe}k;2XPs zi}-T%@87qbyO;j=wLg}oe*Av^jiv`Et8QEg`709ULrUpd!-lOtgX3}O7l0IPumStD zr3x5P!wskFtju4*iMv9aC2!awt{9ybRSfKExNc{(Mn|a$2ud#+9{vqajGEhEX_|LD z#?WbdT$b1L;ff|Poaf-&;=0pl18WL;@f-gZNe-nfF1W9MSkO3RM!V~>u+s<=OoT@L zMWNt!j#>zIb#eef_a%l1SM3&2>BYXlZ$hdb_2Y94Mj+FrS7!qxK$R>>~a zYWx7?I2MsS0%lT@wFzA{a1#V^8RGqVoXiFAy6V;-xszN06$kFD$w28QBr`qLM}ZEzH$3V; zJ^GE1Bo9wuc6lO<-n14)mPstFi^U6W_kuu9G}bR z5l}zcc=0%c*^U=0JxlF-tDeYoilZi<89(D6!(5`4Uz*sqgM3Pc>N=_VtQ=oRtfOBc zdhgJfBPR-Wx!?NhCD&kruT6e#AlSKWf`3cyp29D@|HUCwTWFGd*C7opD$eW+Ur6l! z=n(1^82;7d*39Ukf8Dd)37^nI!z%PJHWB;WevmP=dZMF+DQN{%Eha5ioYQK>3dKXK z|44O4u7ZEtvFZ}Kqo?j{>h_>Vnrhd*`!iR_|N9#dvYt}%*~X$+GqJ1e(Ul|pyF z_Y(1JSQK^pTB_IVZeZwu{`_U*l*{Z1;64m*0_l5}-mUGGJ7*PT1G%l-@zMX8%KYE? zYExXU7m7}A*HAfkPm%eXy?3vkg%aZm*(Jfxb5(gxbb9ZwOPJy98fwzcW?}UGHd|cd3?Pa7cOG-QAsIqXYqcI2Oq2 z3)Jw6ReWp^> zI?+5B5zj0ZhKWfWs7y5KXB>nNe*6_mt9_SWv(qWtVK!ek<&Bd^jual=*sB|Nbv8f$ zrjwt}Eh`$dSSAWSt9li+?O2JL)S1HpctX=>ud3JolfMDmh7+4+%9X=g3gQQY;w0+Z zx3D1@No>`BsJ2?Dx>}&^TN$adf$Y`NH%65=EW3W7SYsVhYJ@>2!@57E{iJpQa z3Z{rz)lZz&1z`XEJBj6{A^qFCm6P19p(a#2fMH0-+3XtdchI4*K@ZL8V0Wa6@lsKB zzNj@H-_7GEXVlsd#Y%?^{ds}#IF6<@bTc^UgG{<7%wM>c5-8?@BGx(|Zm~K*NX_Z^ ziIKxpI{?D#r0@Fn59a@ZzvS6r#4_^pBnI-&arw~yq*xquRiHt_XWR*1URQK}?8(yH z$KX(IlKZ>b*=}_>mHBEY8sHXKaCR*cgO;6gPB}{5MN$`zNz>}MBqdZ!>PJOshqG#H(0Qu*4;YN zzH#Fp^wkZY7gF1~cDPMW!i~v#LT|l-WWA#s@3;GGKiKbdXWQ%@|EHZ3``)JKx9$F# zx~?}_k7MRkV8)~kNX>{+=hlMPzlA(?tsL1bn~$n^%6L1n-D7lasuj~tXhi!b3*VMS z?B&x}#jXD?`K{2zl_Q0A7(xjN=9K}Nr2$Tc^-cu=PC|I~>a_HL;|S)u93}rHk?U=fofGziqmEZF&38n?Ag_=B4=H2P8SI^cEEsoyh7S+JRvp zyf63=C_?{aN}T^|iV#*e=7?_53kDbkQfHCWxuBI&(L+%@_rE{zZYtKp8xmj@OW|Cr zVj=-Q3sO_jEz^R#VTxzNll%ZUPbtTG&9#c8P6aLSGVmH4GZNy3Dm~cJ`9U)Og|pnP z(yT$?#rp}J@_#{iw|kFEDCvRB_{3^C+~8mP^NGQg=cL^NqjB8~#hP5n2wEgupPSVa zr#n&N^th3S!HwsHe|IYxb?Ig}!9#r<-l2r0ISym_*BSp3md@l~g$-e*=ZBZORhTI< zP)BqOtwo{NTMM!;HCP}2fnv#PSG5S&ys(Pz_u4Y1ELXzku&!SX^)3CWqWFBs0S)B} zj{y$b<{;FGP2;E$6*zhvQ3tWqv7kv75`5JP*tcBt%7>o25KVxR!q>7m4X_`2_%Y0D zPi4K*KF-+Q!+D#ogBla!yU*EKmyFz*LG(w?1&-%AVs^6IUyG;(MRo{25vN2W^0Gw3}~1II%>h0i{K z!+wsd?2%?lD*L26u$W&W$`REH5A367O>vmW<^WKwZad<+|G^KVE<}+UKxueX=lZR{ zayt|Av5}L(vTi9^b7VrcVq5;?UGCVhWb6IRPIT;(?V=g_I)E`s6_Bw`bhSV&H-Ggj z-sP`R=*K2G0EEB@`w%3KpF010q~CllepyNIyZMqJ)J1sMAtBI3cnF92b`o^2wwmEO zJKmjmEnC5rzv`+|zT$=c8{2g*#Bj2!bB2pvY_dBsIckM+>pHDU`m=-Q!Vz!Gw|$4k zZuJHq66@+yOAV+7+7rpF%G9P+KGpZ@6VJKbdNrWy5X*E(PcA+^ct~|HxYYi0O8dym zc&=?!-H%6YZd^L*u(r(6v3*VKCg*S5%dh564+NF!e;wMjq@k*X^uWJ#=UL4++{e*M zDsJ2D$XFEyk^AkQ%;Q#mf7r~AT}0vfePrS0YdI3{x9W?h`uqe3mk^y(i8?nL`cF8W zShOf=q`)caJfghi-kS|)v+CnL6!8tTE75h?G&BW#;M`Vxc`LH4r6#q&*~zqbL&y@> zlGXJ)i7T$@ZUFDxpieTa|6oFs2>aV5A*7RidCHir^?bF32N5?=?&ROC-OVn;Axlh? zn~Y^xrAz*+-;^%F@acvJf?kezY~QtpEOyDW@W*rw^ZoUkju94Gl^EWUyHMlRjlV+Zi)Ejw;*hn)ZESsAnc#IuCN!XZwP0 zq8+n8m;T!C=ry<3?2CL=>b<#txcZSBw^-wkSVRVXnr&Fc{lo0b$XXW}>NT?0-l}Kf zO`JR;k;^DOx~=o=zmD2hR-x0038iO)e*YjZX*}}P;P{B`)zLrMX?|o? zcCcm10_4z=o?7*f-X|)_{4PsvPyr#snIV}l_g50NX*1SJ2KR2`_r!@Qq9Rv$mDEP2 z?qvn`v}o5!5~C`|=4%)5S434~TfTW=8YUMgYa~4jl&PdC__exMgG@hr%@ZdtTqOD} zp~K$`nyF@^%oa{H3H8vaSEJu-5#q7<;DvNP!e7)02dteZ=b~Iwm2R)>_-kwN3CpLZ z_3w82nR(VyEyn#mR?cyQ`kl#{Xb&f>+;rw9Hx+3SDPQLWR8 zaI*$qzJU1r6I}NEg$h(j5J7T|&(@Y)(5)69@wzu(Tr}*7`olra`_)WI|8d`te1F<8 z7C~if^P@|Pr%eXdgp6{lMoT)+#((3QHJor<0ZbiMtQ|Rfm4E{pU^6&4J1jhokfl4ZD9Ez40?D|AdZytqKm3k0hd< z+|R34dCwd4q-AvMzq!97(b3Scuf*fd;oOZIMr>89#L}A%3sJbS7_k&^mt1JM!;QsK zt53p+*%rIgR&EQ1N?IZ-npH}p75yY~0Pz+B&k?woCuQfMKN&X}MfK`kgHloPSS5Bl z^gN2I&;@`nkxa?rm6O|wz0lrKc|21d61?F)pax-Mo zPW3mjCXHyLUF_{FQ{(;3-1+0f*w7Qzoe^%X)1E=kQ;Spsg~%!bQI%ocbg|Kz!d7zI z8L>FgrG96n-FWDsrmnSEwsRCSdL8o=Zi1}!n1-<8r988bEV!2VO(jr9_v; zp-s6nksU*u<%LsejoD(cSb$D7T4xK;mr4HK`@St+ZXwe@@o(h%(_cFwGrjB6pLGIE ztDk|;yHn`1i?DYM-QSDfFfXToTXeQSOXlw-b7t%b=;sRe8Iz`xjdRCW3be$yX4WH~J#M^p}4O&v#6U_j5gc6@R%AEUQMP^je z&V}95jN&DA(i*4bqbR{o@pXow;a9rRqKzNY|GwcHyEX4(`M}8NeDjvVzk||CvYuZ% z;R;8Us>eguhA-;Zj5uTR6M25v{*k6tbUmz1LQ;93`eH?V18k0KXv6&IiE-qgMb!=I zL5Sc^6K;uHOhuVWRN1Pi2P3D|o@L-RK1&!kOX?xouqgFg1h;iM0*8@@XM=Y#20QV zxuKR2=)rO2ED3Y1E_XSYeoL9nTC!GN)|k0&IxM07*Rr$pOC!5V#BIGTYc6zMyoy-46F3toi$!#m76AACFpowmUI8ZT8J_T~l0L>b)=jtQ)-8vNgtf z=%k$chiloYi}x93qMitADNp49O=Q+LnF&qlv+^c?J_k{3ZMkveUSprj<&-t!+TRGSasIX0q_irjTcF-B z%Aa46E2m6BposGxD{D}tsdbA;Q%Q;t6X(59fhWzS24We&@GjOxrB1pKJ%Jr4kQiWz zCaQvt)`MT+s84JdOMy**Evg)Udr*xZ!!!)bBD1{huo+lWd_)BT`DFmaI=A|sBJ*NY z>lLJEY+ckFxDHS=PAuP5vV~TBuOee>Su^Cad~+1>4YnLm1OD^shbCsLWk`DJ6P6WcgXq!@ELh4f(p@D>`I(*A@_1)zs!Ji)b$@*IpIL_TEUD*5(Zay$L z+R81cN9RV$TJ3aK7uj%3Hw+e?i!&gSue6q?$5Gqd@B@Q-nUal7?I`Pm6!rYT*( z@H}nDT73ky2H_#Fo>v2ey`>#=N#KPbuBKD*Tgi|@z9z%<^UqcV09q4Xw4Y1PCa z0Z^==;`c{SG@gNi4IJ$dI*$UH<(W{B2F^wycmM}Olc;U)Ht~IZBeP{$lyhbqTmt~D zv1bS}p>><|UiIIbm{iIzLzJu6B8xCTAtr>dLjr4On8JoBn&vy4<&>fVIi({&$w8SD zkOA039~U7fAlU?v-edPbcq?=1`c+v@8Y}FoBJ7qf@2Z3%fpqzQh}{a;AANNJ3p$5c z<5``uWT09(=1LWpS!z!_#1UE&a?IFEl93c5j!kzW48>z88^0?1#N>gFJ@bo-!?oZy z=9jCzcb%J9_<18Fzjo{Umh_@(3 zSyLGRk*Sy-$%GF}S(8+0hU_4xb`NT>AbH^f7eODPLW`FnQWBb`CQmAy5H;L2yvT9u zQr^(3dkX@4Am7&e*g?XxOA#@3H;}!PcY_qYAUsQV&o$ls-rGU0{>Gu>TETj!{p&X9 zqO)1LiR<=UlU;qOHSsSFqt07j^?3oh%mWjo_o=lP&2ak}8KEmd`i_)Lld)nH{I`M?}v4R9i28}Xw#h*H*6^!Pt9mY-a{rw$ne$OzRStus&0yE zfj7Q)_-a8o{+4yleY{Yo0NU4UY%!eSUPcV94u4XmE~p#o3ee;PzK?sA?qY;KeaWe& zAUuP+*zc7qm(@nm&XZy+t68p)to)N?;Vt&1`kj}Rz5H%7shd=gn4*a91^Rl(KPzcF zm>OhFR+nz%1URboKr2ADNpGJQENVwh{ren}cN9J)dTB^snKEAK+7KPWW!bvRa!pgM z^T|1{UVeJHkX!gf?o(8v)fWhuwqjX!Us9j3?}+~n2HDH5O71KOr>J`%7u1I1-R(%ggc6F~M=TMa~W;}c%MC<4i>Re9Ag z6U^+A219{%E*66dIuk$+L2lyuy~k}CwTBp2nV@vWrRsT?E@E$l9vCG6scsaeIYWNS z&rUav^@L@w6p#Pj6%X~2bffRR@rIBayY8Q2Pf4aivwd=g)R7Xd4L$c@t0}e5g(+%9 zB3(SIP4U*D>`}z`ow*OPfNWhnW~ugStU4w&RV=#bpEC}f0Uh~%Vc(G+H%XwBTwvhk zKp>DZDf|7e1MWjX_kaia#X@pUY=q{i{^54q?U~bNCmbkZJt+%jl3%`Kf@W5XZC3IC zNiOFX$vwde(v*vw^cL*PIKPa_R(73K9NRJ!4;WrCR=CGSYD;0K2*Vh>9)JyDZ7FMn zF(me4=*Z+se(5sif8wLC>&sGqrNFVVu{X5n3jSu`0*ECr7mHZ;90Q zk>sY(a>~RCHZol64q|n1b8U2qIRi()_|OAsWFldu7KV>h_z?+sEQZgnmeAK_Tpdm~ zIG|7CTvc?y2snxZIxVAHz!`%~rME66Lu8H1k%aAIjHR(;G&^lwNXZd9Aa9x5P3%Zy zJqY@?pn3;AQkSG{;h~FYPl8n1=+SZ-QsKipKL;1>H$NR z!W8a5UbhP4IEU+yM(u=Qol@t*_k?P4-h#tT-8chf{9}?EZBKGdmV|Y_spZWNI@Ch< z4TDNK5Q6Uns9z*^mE^>E4H$GNm{2Q7V_tI7g4x(Fun#Is?1cL$|B@iWUSpdT7%A8x z1uK*nAmV~$K#CG_1zv<*@Pz%kB9`F~R(ewY5yzsaxxK2ADScG0?RW zdN$@$TbbnvDebos!34riHLj)Ys9i#mg5=d^pxIl;bimp1{p;+V@#U2lU!1T2Qm^ym zllhqW7zHgScS-mq59k&L55f;i;LfNI`tz|{|A~)KFxDR};bCJwM_h_&ZYpEOK*P$J z=3VESZZt1ukEySHLj>PodjxaF03fT)QW46M0yuUm#F#_)&6CQzv~bV#Hy6n&`CQnIca^x z|E^c6owqlBLRDnvAk?9CI1#TiWGtw1%!t4jj({OEl!)JostR9znn@v4Z{dq*m=+q~ zk(5Gc0$?WPFVOb*DO?irs%GA!sA;y>hEM3EKB^#U?xMy9)F zK3Ge^9x&##+8Kh-nOw2nszS~^=ImvVc0pOK9^qLcJk?SuD-}yrSHo~-o`WEd z%9iBNRXE7j*Hy}!4xY4h);$oo{J^*-VSNd6Jt={;qdcBYHf*S#@5wZ5?O;sO2I4E^ zUKMhSV|_H*fOB>D|KjUCz?w?GweOuu=!p;rMF>^8p^8`t2ndKuHzG=C0yYp)aYO?N zAXTaeic+PCQpCSlMiQDdl_I0gj1mwO+knU@AhO>T&pGe8zVExPFO=*go3N9W{p|g$ zb+6x@x<$*|`@_Z2bs&|l{qw%hfwU4)e^MD=={&ED#bQai8B4}JvR@bsp$!HO_J0}m zq+v-vy#L)Xs$8+_+pqoCT0)VCJf251Rh3PTr&%L6J`^@02FJI5$np9C)({?bg?+0F zRmEs0Rx8oX6p*>bY5we|j>b>jo(}vk*}cegN24vgkD}Pig^h%Xu5AbPfcwmBd5I%T zT?6RG9Y_-k2K&bc+lQV#vU^s4+(L=SXnANPnkM|uMaX{80*5cKT5S{E1x}dgS0$${ zJG-|y@G922$l-XmWYRmdaTQ9;H%dhN#_3*6c1QF4lbrk^&DnYz#zt8~C8A4*kS3xCav0fQHJObdHN_Y#2M%!Tb?yAYqin_pW$rbn zW!nA^@w3eE_(3CDV67`Ox4v4_tF;}BNpo)olx9eN24rjN@%4o?;v*67K7u*SFmk$?L9&oPx zQ#{vk@4enkl_kfyZzBm_WB$NJNN}ZROUXle51Woyqg=k z!S^ZZ{cz>Bi)}Aw#kD77?&P=aGxK>cY-Oz^XRVx@K5L53!>$Dxwj=AcbN7VinxYF$ z3E1C|z3noWTvGO@YWEBc_+ZH|(p4V>?GE&A{A;KAshbn|p8_dE%y|3B>~o0(@ymO( z4lA17uWEOi$hlyYmYQ#ta^}Ro;mEt)F6CQZC%pe+V81J6P&{Gtya}bsq_Ak&Ewd*l zW*EY}IQHbKb(DAP;*fLAxL_Arnd@?P<)VEFiVkmEIrsf+ly}URr%%;4JcYq$1$GwO zC6_t^>twXVCE?*)s-nP^5Y3cv=5=%1idl_Boys77R z7Z>M%ZqNECiKgZ()cKF-_h+cmz;JQ*_;F3SEYrQ4nJc?!NX_*>7XQpAewJ3EM)9I{ zF?Y1q8%)&HL${v4H~w8(c})Xe=mXX+ttLlfD9?tIilvMxg|H3qSm3QE|$_Zt5eEowiEQ6h3lBikI`PlTZf`H_! ztgJ0}VSwsj=AAE!?}jy8xoue@{>J4$JTSoDAn7es#x@RH7H20{>YgcL$ZIi?+~J{H zWoaocUOFqs!z(sVUq3jpu(o+J+3l|U=INgjiy`RDrivpr8SV}L ziN4&MKJzK(C+DU4GTJL}$TO3pjZHociJS|uX~>AM%Kv<2v(eP>eZ};ji&RIB=N%v{3~!o=B-sbOQwKbE*W=A6O|Eo3RZr^8 z8baZ;LH*^WvDTj&B#-FmRklF+e)Ij?%m+X5p`br@8!raWdFk9WT)8*o=x3B?=(!T} zWf@)U7+&n%@4xwQvjG%BufJ%%ME9YNB<|Yk_Obh8#pL+GgW`IP#XAxb5SsWOah?|P zgrT?^0pfhpQ5w5m zEwCDNU5pC>`VMy5@YoF?@!o8fxE`2A_OHw`MZz!g{UwfI5pGIhZZaM>!S!BMnY!D) ziKH77?Dkp9-SvsP>q5hYLvCRX@`OL!yjN-S>OZcnRLH#d@%?C++O(oUf~gdVw~Cl# zTJ(Y~-?f9fI4?1Uf6@{$YG+oGfp%XxAYuJVK6JFaJZ5+Q`V7N530pMt)y?@Cy_=a|u-%Z!&e(63W|D+9GeK9;e``cbrVtV=H4UI}C zc51!mZh7(Af3J%P{_z{c$oM_+8~Vlf-fH0ZoGju4um1XS9>Kjm6g?zK#K=Ua>+Z$& zDy|P-Jm%U#|1+pCijN}((vTh!o5&E)9&Ku&8}3i(ZE>njR=?C4b+qt+1%D`;A$WY< zrwT(4A5x$guhZYrUx|^z2AL^g*+{p8wK!Lb?r17yX3?o6MYEB$D}Q^@a!0#Rkmxv! z@M!Tpfk-fm(0I3$9J+Zgp@Dc;#(gk~wL0RWHN!$6$UZL>&7NN0>&J*5<_V|Gg)c07 z-F6ws`Y}S(T8axz4=jzCl7pJ^EXk&7FBp%vljD2tvu8|;BcmTXGQ&IZOoR-go)&ya z5Pk4q4$(M_{>Lk~g+Z(tvIp5m^GMR9G_TFDNX>~hO4SMp(hfA!b<&JyV#s(62Zd#0 z?q9Rz<4*E+j>7g>Mq?`d(Sqr0@I%Tot%g}JB4j_td<{vEoHw}Dq3lj7b4cD`~j}ZpK%u41v-Q1g=O+RKos-5qWT)pGj=N->xp3MapNLA;l znwB*fGJ^9crf`R@!4>_Pf1%W2HnX-FuVS5cqAvlXldTJ8Z8L{5^ME0N8bVS(x|j8@ zTF0N8LOsi0{Hu1&vFX#M&B|w$HR|x4;)M~?OgA*atYfFhyChw6Q8j~+7;TZNmD8=7 zr4?=Bl=HOY;+phxGFPo*#yh^wz5g`%C3gJf#CUJ-(+$b0z z=0&C2CGjMr)`)P9%?3$qfaD50KpADhcwr^8LWwmUTb4ZyR-fTcJi2P*2ILdbJwqg$ z%@drTO`lDNfN)4NApJYu*8Y(rc?04$yT1+X+?8?%sEr&-z%uY&+rB7D{t8ulHJ6*= zA642|(^ymK4bU-#w7%%DENIAIunV;|45%60H4U^;s|x4qEAoEDkl5+DSrIT@GkU4K z@<1OT9k9N#-jAUn&lhgh-3G95euPtdI;qU>!L!@S^S+MJx1lv$K_M+EsrFILpd-cm zS!4O*Z9pUS$|BVji{hK4esqZFeo+1_eNQe?0`JGxY&Kjn)NJ&6d+oPOybm>h9K_^1 zIFJDov1uJUS(pd5ue92Cj!cHzqVE68?s zCjm1P-q}s>N^e?7%I3`i3!C>v!d5a*J;mckdLieRzWt8cLxRM9$Ukct)-E0>*8O|8 zxJJlY#f=>G9u^62ax~i6<5)KLt%kE(;-fiv|EB1yFULS(d)5~8&6C=k6;sC-T+prt zWbC9tVZbg0ahI}P)+Dp(frvU&3UL@uV7Hc;HrjH_n-s|6gs=ZPw}3Bx-$IKmL6KAYr8H$pxIqf zUG$TULGcRfKyI7eg$>s&-z66?ad1@|I&l!@pA6eyv6OTDf5t4HBf5LJJ%Ujt>kvF# zeA6^hVprvSlHvKI?S<}DWc@@p-(rAakOHw6k__D<+AmbiHCA0&4@qc9M6eYS-1zW03U;-ubn2X$A0#o_?m(1qo zZvMSPU_9tUNM$32l0_7hDc*t;y#RmSW z4}Q`9eR&ys(CfTT3uWFSZ~y$qS;&Tpz_AZSV*kc_usRgDz@JvKVcDbwDqTET9(%z` zHd#f~DKLBQg_W#ieSEMTI%}QcWN(_tq|y1LL@j!6Vu*6oL7uxM&)E`L%Tz?*tMR~s z1#X`-@=TgOEKLpvSJjynY4>ngNl=Xvy%HmqH$K=n9)g*iof}tX_az=Addpl$440}g zYs}nCY3O(=tE(0@htAG%z(6L|+tk5yhYm+B0QlVjo!2LJ0ZFO+AS!DMkDto}A+E6~ zzW-fS*xMD9(36oCtm*Jd)%<+FnDk$_nqwLfzAA&hP0S6`fkZXN)W1)N3EQC{LqpWU z5Cx<_hI65qL6^jPvsDvE$R2r`#r0_z@9hqQr1G;B5;`BueDO~bj4(zRLks{^8*u{& zL5^vVN~bzJW7lWZJOv2Rpah$FAz`jjCti)sq>+g+Vv8&+ABV-EgHja+rqcv5x<@{i zmtCsl6sMYmq!2w4vAFDHnc3D*8#jkex0uci=i&I*E&yZds&%!02G>5X(!8Q;ON>7l zZz3oM>)KZAH)-~ubgYG4y)xqfF`h8CV99>IAabY`jn9kPe@HC<;y(v}`5PgIxG@eA zvu4GG^aT=wEYw)Rs!JnoICnYgaA^$it0Iychw**N8{xp%;iQb)waA_kNxyxMvgZWd zoY1hMM{%-CVkij;qs5R&#@UFyBF&l$N^t-Ds+RK6gvQvt?2hqdQE325LkUnmg-kS0 zURsf8M0)^2TPPriYE4i|o!=plq@QLt=;0hRAj;q6Sls-v})#5{GL1~N!{0{g7 zo;>X;1#%&fuigOlCJ;TrPO3Hbf9nh24cfzpJ;2Z?^o5$QP8F^Icfr`2+zMrBBZ85b zN$3lV4&CEo5Z;7fJY)!gtB z0kf^(;xc#)COC%Xg|sAHgZ&FAD=0V*_KR$bfALt*c}XJ$QBj*a3>XfNh_rs)r%QkZ zUm`3qx4(+DO z!}UR6WXMN~*ctC&$z%79Ggg}bApX0^kQDv~Dpvt8T+B;C5|G)z6vY?S^;iJ@MmVB3 zFZ}|uyAWv*J<@=J6C$kBBDuW;s$U{+3K4h%Qja5`&$n{dx7yeOr+DCL7yzg90Wj>L zsF8*5P+;?aGON=5vii%&igl=QXwQCn(y>#lbBy@MxOISZd!h1bT#@~)p-5^klLF|3dDh@G*zJifIE@1s4keam zbO%FXND$AFr26b|;+XhXuS%_=C|a)kDfUtKqO|tNqRYuJn<`S>UlCppD5Ic2(*&f7 zfGvN9?w2wwBjabKRPwBK^hYzK6ND~LDRMsseeovF5lid;mjBHERb$tno zyjbLH`Bp{xk}2(wlSY$-3rzv*ek}B8HO(p9gyNqv>1@`bRGJ-m4sfT?5dHYeS1pW`1i_3^*x4S`WSYQCV(v#z+7@2x;qWX$Sy*xiyQ_G2pa^E0eG8H16q2rte;#YjHGLgjn^&#!Tt z;CnVsT@kF()#0_Fg@>$sRlZ6m4^(-X6&~ty)Y6yFs8lv9a;vxURYn;vojU>>45ev@ zDg(=l@_CN&L&+UZD$>;CehmDlUmu$P`nBBg#$4%KJNB&vfu<)fYViO7R00M}mUoI+ z#EtQ7XkmC2OIpdT(${N_f2hN*4Q0Ft?+CS><3}zxsu)Uh7F5c{DFSL^=4_^r5o=A8 zCGog)SlUS2KvWclPRue^lXwa7vy3QfDYXqaF&{5YS+lI8)q zhg8osG=atiRrpa>WI?9_I!-MiiV`WyjKK~Zd-mQS^gIv+{1+CCG0_VcU$sozN8+Gp zFCWj^$bV}qarv>atOdD8VE3NLFeD}}z8@iKBKtY}L(T`kwPW7eDq;GekvGv;-gwL0%ycq%tE8hnpJlh0l|*y* z$WlsFqlw~s%(NWh3;bu*AC8?E(6=u!>=u)>z}=l-pJ5dDh})hJi0!kW(5RB6&5X)p zYLXI3h5s%Y(st+kdZMB%g8gGPlExKkU;BWO5#7C=+c%Ko-MG18|7LlXx}k)Ttlpo7 z1T1(IyYl_YD;Ws3k?JzVHn{j_d6kT&A#xz?@~GjYudjdQUmjwQzr?9qMK7G5FjCI> zG&8oQ7wSRLI2`mPmj1g*Y*}^chU2D{v@&Lkk5{5Mn5lXtL39&58ymcmK~F7v*#`dn z#O26z>o|4YZ?adOAKl?GmuJ4^kM{sNShTw*>aIH8{)1cPjtlOxLenI!R9P0$qRCJ zqKRJg&PU_&oziB78=9u&oQlR>iL zhSLK=Wc3DWy$73Yu(iE_0h4{-m-kOAErfo@6Wrh*Md0;Cc9}% zzwU*p??!~{vGF?bBy26bz5DCwNE9x46dk48L^gcq3q4Q?W$~>>A@Ks>Q=r@T}=>c z{LO|o*1dThu`NbkwoCGhQnbg^s(#kg=K9r_>P~+C&JJHG(OdaheV@293*~8f10#0f z*@5IV?l~d4WFU)Hpye6v-EU&lX=P=lWfhr2gBTKBc6`;CNW(1b{D}+CRBShu*P_^E z%4-hAiBytON`vESiIkK=GtD3DCyA74_LFmhE3)mIB!y2Bse>~~F?ze~aW=}fJR3Rh zpC|Wap;aZ#&!~ffy)akyy!$D!ZRH+m1K z7gd<`L$r65R)?#`#0F>v=UHWgTIcNdJ;T-J>I&+sNAAi^q}B`%kc5q7CdES|UKC$j zeZspY*&hjV#+?`C5XpjI~Q2OPU18!rh=?ernt|fEycjp?p~m>War)t)_qzzm^(Ed zNx6r9AtXHu0>v4vT=JLO)0jx;wHySf)CF+5+zYb$NS(WD=k~y^`tE$##+BHmb0}JZ zik13Ej0tnQx8#r)Pv^}V#QR}rZO+k5^PNU%7|+`)9PeD!>5>X=!UP!BK`&qF^Kn~9b+8-d*i8)ZJzPoH(W>Q_tSmvXE!0Ai?(c~ znp4fCO`jo!0l^l*86DmomRr^d)%m)9+m_1u?_$Hnh%!h@n~Ntl;)Khe5eE~uh^y%| z+BAl+wH%ykA_}b~@>Jw3Vs7N=wfn?pB2qGkx>ujHo%(htg%Y8^@4^jBq}F@4j?$t< z&a!KM9p}$up%L5lt1YTmTt{p{1G~IpoAuGn^=fn!{vzXf}NIAgo(L1aA-v*d#cCRfe$yE9ueV~X}BVfmm=leIid@7$_P`xB=9&_fv6R+tK zH^QavqCCIDwf@g;93TBK@~>aL#idN`{%cVy78ly>BR1?(@9T=b>;Im0^ZmI4e^l!D z*B^|D(9n8s_Q(4h!%Y&t>NlKn5AS=w?`(>k=VAYb6Q8f&zV~5f^!>TRN7_E0`Rn1c z(WR!b1E05_X}JIX+JU<_MjA%jZht?_Sth?puuI_Kap$cWZe9h2h!A1M3S)&M_LDi9 z+b#62rp`DeS>(hZ?d&>>+!^8sGog2r;&%1v`>(~YJ=vPuexGq!hkd_Z_BUr++~4y{ zn|a@3!n3R1#r$acg3h|TN9obYH2w-nQP?`jWa)hoI3YwlVr?Rc&T_UtyZ#=14ikb8 zR`Tb=UM4vv+L{LC_;*RjEU2bfQ{u4|fdqTWBm%*aE6zQ4k=}96#p)>NbX=pVb;5vQ z=&{#H)GjPSfr;X~Rj&{H2M>gOTV3&l#E1TU@U=Pasw(Yu+FJ%Ynt#~oLA_sbl4H%F z`|dP(@@^3}ld^Y*J-1z=@D?OX!)wU?dIJV=U1_9&prpbwr`W|b1$lX2z3*3zB#oR* zw+?uj%j?k_-8}+}(l)1c|Mv2q^GCBTq?>Mie4%20tj6LkdGfNx2SZwu9U+5NT2m$u zjj-%h^#lXW(zE`WrO*`1N+WbQ1f=|Dozv`?3NO|j%TwV+ulvGGlT_(Av97f=_BA+f zMRp5IwZMvN;qUHm>j)T?7q3-#QAZ{cR0zTHt;o-LEVJZPZ zXc9O(CNytUA?z0ndBIMe9r=aImf+0nV*teQPHz|bai1$%xAE_wiLp1n1VEkl2DNpK zzsM2_45jQhYGSP&AUzGfQgqPQ0%O4`J`(N?q-o)uFb^mgbugQP)GF+XYdI*|eYE6J z!1<<<)nfi(N((T_TQ&|rQN^V3XwhDZ&Q_S8*VBvbN;BLT)K&B?qQz)|b@D=*SCX=! zd>WUmi5L_z@q_Uo&$(2S2*UPE_j;@WHO(<(mt*Mqc^~h-{Cb?X3|KD5=%PXW+8O<3cIcnB;duHnQ86?T4T{|do1Kiu>A)pFg`QX#G{@?W;r8`QmOaM!$ zl;jwNCDj-TuK=WWq0WGN5`I%s zv+N591rtfZLB%#j$K`-7L5#oRY>VWJ>r_IZpZMS!`_?t?j*`q)g#<7_D{s7>#%=LQ z8*-N`tnCuS8H1KOy~*FF>*$_^+B5*8#?~07ajU6-EHc1G8*-xzf&c;mxom=mKVTtB z8@R{6us|;FJ8=h{SZM1)6*ulxEdS(>qEuTd*ea!!Kv;H7OzuO!99uB~$?cC8Tl6hf zY*tf#O9EMQG!wtw;$@$6y6R{L@4#b!8)Wt|vW3gABWu=fw4soQh`|-l)4mX+Iv?jz zDu}6W04&<6ew1o(?Lbz^L$?{x%=lJy*VnkB{s{nlr3)9$OX9|KqiO*>>w9zb&(cI> z`hs3O)pb-E1X&M3gDKYDbTUw)(7Ebf8$+pI-VVu;@2_|i284H`iYJ5u> zUjkuag;XLY9u|~j0{Lw0RjG4BwOLp2Og*Aqwyj@BQZ=I5nv#HI2Nn2z#>`{^h&bIrR?V zSJ{p+S>E)S*>@e;!RUC;$=Mkm?fC!AP5&=z?DT}oL4JX z8!=bYqOfEK`t3jnoCd#;M5Bv2td{igPGT3*VVTGxc+u#$_t%V4tuboI7AoN=3rR6d zFGdVZ%?#m9Y@6 zc(*uzjb`hbs2yG5Yp_*oB?oUijz@`=#Ta|Uf{o^Yqu~^LJqC}& z5DrT-M}*HYvgiVSjOT2@^H;VjmnI+N?G&A_j0i_WCmPbM@Z?5aRZC*yAIgCZ9d4E! zH2Eriz#?i;8Rr~6JKEuVaJ5wWVE+@R2HndXE zTmMF-zzF6=Tx&~@f}i^aiO<44n7{pEUKraJ6gRPThTNOxZfo8H7)LRD!yrcYh=9bU ze8Rqja7DiNG-wmd}+;|gjs~B>}`ZOh{#46v3DmNLN*ev z5=xP`g!7n(6teX6)ck)>Ij7 z#`EM1%h{pi3=3k)0aV(q#!{p~Ye0EWKY|lu>vh7XUll?(=(-!Y%XhYP=Lg|AxNSu# zchj#G#W!7(RA#kR^%l|+d^hgG`H3Zprv`GMPP3rgew+VC!VO3t;{@-U51RP7TTUhA zv87{`XMq|6e#JqrR5<=ts$kIJG^v=gMv{h2a?$EnCPHg>Ul`vB6Lrjf!uK*78c|Jv5-fGjPfu2 z^G{tY5%SNIh^}1k&kJ7R$Z|^$5M5jvFWatMR$sZSM}-@=(5Y+xrHh8-^gJm0wr4Th z09Gyff!i>nvJkgj_6@25##BOMIIdAeOk~H{{xMlqMJ(w#K#$^$5`w9YcHVLc{=RS+ zY^@Uq7Yk^Bjcu5PPaCrtR=|WvvRT+Cgw~se6OA_wCCXcGig)g!a?%C?0tEs!P8SEb z`{UtXPIo;`Z~a{{NqAe53oZSuS)&y~+eB%-VbFgJV1QX@NE`A>dksVO2LxXKQfln< zuA6g>O|;#qsaURT;$#=r9iL#~!z6j@21eu`*;_s!%YV$|Y)f&@#G%OqJLUM|>!Ia;4G8QiXmZ4lGoe8d(m)!FX$Cg;)qh zCEw|Q4ge{ff+?^*ivoDWT|Xx0cCRa?ILWh>DIU3vsVt@{w4!kdT?wbSj&DsAX>@;f zfnDHh*Z}WlA)z-Q3#TmL|mpTrPA zWe6@eV61^jAcr&SHKyVd67e5&Wi}NSp4LI(Ss<)HX>6Nfmw>o==OPzFB;l!CDKd${ zZ0+K6`E&txg5N4YvKUOdfX>5nrB=a1+5$Sa(S=>dPB_Z7Bk*2wWgWTI@J#=GSxiqL z`Y0AYkbApUu~2)JuQajhFhbWeb|JIG)I}OLXUe{czlRnkj)uj~@)DTc~D8 z<9RqcI)BjL7B-$ob`K)axIA*KBdo#IqoPve`X(=4d{L@PmFk=zKHtw zwLlsz+)_=U+d?VOBh#BbguNt2b*pl?GLB`R_#EpRSS=s$pPmRIa$7LP7Jkd}#d3x2X4cwMhsisiXLGxM-dEH=>BWqx ztG{1#TvJ)mz`0j_CKnPCxxIs>P2nCw1Upe|SXibjWM(ZOSLk+w3LFh;{toox6I~^HpWKJ`;Ct z=!og!PML3Uii&O@Nm#xY-_n40^laLmXnsEO*>D!KWqM*caYTXp{OH%I;olGS{X5&; zO#S#a^ta*80eAX9hv^n`bBe3wb$Z%1$>%OdR@LFjZl+zP0#iqMvZMUKugfufpO%HT z_Wu2znbH#OgKtBXk&ti%gAp0jt-O3JwSIk2Nm6mqokz66wMQ#WP81bt?x$lHT^OG3 z-tP8mocSrHI@_E?@wL!Fzjf^VnwuJbGn6JWn9mN#@=71+`xI@7?Nd$rZClIt=Sz!jq2yiik@*o< z*1HE6RO9HNGeT#V+-$$T+VtRa^Iwhft4}PG`fi>!Ir8$=(!H@iuHUy7?H_G(9H6KS zT-~X%FmS+JIpdz&)SfGrM>1{x$-Tq*u>=C~-m#ZPm$vIHnpKCa^iGQYMwc@=cXDn! z`a!ekeM`}>lY?j-?Sh>;ZUxRgMRIFAWYL%a>!;`-I>`AcI~W&aiC~$wx!H4Dde&E5 z6_dji5?x~UJc`>((xcbhQw%P2T~*n5YJ6(^ZEj`RS{;pdB3r_D<5S?hBatnGz$7mxkW&UI;QF{qNt;YRIEM8XjA2dbzEP zR(0{mXJqVxJKx>B0?sC)zrU*bedqThKWExdzbxzZFR6z-&h7a9e%jtc=3`Pn?lj*1 zJHN2^;E#(#SJ@j}NvF8i`;MHsB0VlVp4oL+*8GS1NtyNDUCrfRj*97SY0cb`V$gc$ zQ1v`|aYo}>*UpnvLch48v8P>nF~8jVZGBnI%WNrz#0?$tqhQjiBj0Ymy%B7)muk^c z2U_Qx`OmK7L90uR;+u`uh|h^vr0zR%U3{o>8aINaGge93^u6CxG_pQMYe%d9(Ja;A zm#Ygr{u5p8k~V!&$2tIUezOYcOd+fSxxSvZD84)OCM2~%|BO-8?{>fl7ziUZde^5w z(_Gio;_LaDCeCyTiOMLtOLX2Ts{tmttn+AMwVx~I~9%GP|3Jey?Z$B=TI1QNY}$_8NNf{D|sfw7d>B&xMCO`Y%^4K zTzN@ijpJxpIUpds7pnB5-F-~mU2pDXjoh%C5BMj2eQ5Pg zwD2g>QC85q^;@*b+PmfGEkjCXk~_@j1PNR{W=p!ZqLdk}-iA!KJD4mjNi^3++)8Kc zTCE2P{oI43k#kZsd$V_h4qAxarN=**{Z1i_{i67uFm4wof&Tf0dW`fUGyg(d-uZ z5?s4h&ju+(55>)=^0pIZM9FlU7Lk@(Iv9&M;O#@U(CLF6=I&eVEi??tekoRpL@61& z3pNN((eYqB=GlAG(ib+;Uj06%>>kUVcC(Sosx1Y#@~05YAGI-DVZWy|%JaRPJ@wmj zzklpY{KD=1ziT&YDm~-rJdQ5l1}TCd+8LUd*bBBoR4Fn1I3+tKrRRgWQ=szd;OdMo z#m6Z*Bfzj7(AvWIsDx%LWW2FHu-XCEyJ{{|9Mg$?K6TYzkVf%fL7Ga65!h=Nn>}6#P&o`|KN;pMn;OprtIcJ2^ULu zEfESX!X%sUpe05A@-P2iADwP-EOO9dLcL>jL1>~Ge$7~acck&!#fWSpn5DxUzp$k= zw2M0xnobxA<|jSots1#34)6>s`Ily&B>FG(Tj}uovjLwG8h7zmsc2FPGgwS)?zYRzqwzH!v2IX~zwvY`4 zoAz-QIJdVl@IH=gOZIhYN~n#8&{aYv-b@5)O>zKJ>#91}T&Y_VQ=3W@;75DBoa(yZ}uZdg&= z2Mx>*Da9r#zkrW~j+9Ce0(S;L|2sG{H z$=KUQ);o#Y*C#=pzF83{k!VzH06o2FJt94H8v3EwTF13^6X36Jj$Y8b2J&Zc({Z8N z*I0(vgC9uX^$y>ZDn$v+90ke_&2~M_@u(qCRl+}yzh*z)K5jqm0KNC3{WqGf3H=IN z%{SBWgh|l1JNtnqoMIpUL@Ot63N=fGU zy>%5aM1lZ0;VMcfkiku^&XAfPnx6)M zSd2Xg#wp%?Mj8&jjxoDLIS-M{q{WvM@a$c`+hv_nUTXN^ z`-KY31&ky{QZiXGIpu+)gQw<;G-%fc&`S_N7=R`sd5#he#g^DKrss<^2S3gBwaY$^ z`whw)mD{@Z8+7e6D7)Sj*8O%}aP+!2u}8WWMDcx~{+fWr??3!P^ZMt79{itiQGz^q zq%>IwwVJpi9R^TvQF#;Nt`+A?O=4XKg*l*UsS{P=&%CKY54lyG(1Te^sXBmQc<9XzV-_a;!A)%*^Bu8 zZEm~tBv=yu60EK?$KxuFQQWsio&<#)D@kX_Q(Y*SH5(qO;;Tp;qWcjHd}}|mn5+0y zeU@K&vA)1B$HNKSzw)P?ast3>3@pY#;OHF*f+Tdv>sbVqBKp+^PLZ2-{K`0U$n6Tz=1B$zVxDAVzDS*1T8)*`1^~A1VQo&PSkc z(MyySw(~R$DqUmUkXEW8$`f^kH&BoIi9hqf|6>qaZ`c*+k3DN3itmi(H*o~=lXZIc z@8%;720hRSkaQHnm=t~!%mux@)0+JEO0w>XTs1X6`FDNVo6enmXd+oIWE_%GVGG*E z)%Dc#`iZ9)VcAMkq(%G9y94qY`gTptJrZ3_8qO7Lyq2XOkl!?EyY|-uhI5OH8?(c5 zDRaDy#affRjjiUrvtd95E0CItHSgzb%+AV7jB7RTCoP_p0J&a&38Ne^7{Hnx!#|II)DPfNl{(awk# z-Vi+BehMRwZF17{C{ZB$zr5wey(RE)ie*9Di0RghAM|s{`nkoYSf$nNX|Mwt={0>t zb69%KZOYHmdTvr2ybb+|sr5I&yvs3(AfHxxBH=aR?%s4~zvvMVpw~7-{9q?7^&`OH zsH&Y1y9%u1&O%ZUNGq2Km9rb%jebeiCFh1w5k&eabgTetCDzB)g5vGt$SiM9_li%~ zZ!i8W6WU4idmM+L4+C%sU@i9(^8fg^;?G6kc8@)26Q%HJ&H;OmaTR22Su^T9MMD*G z$nh%6TJ091`2M3UA+dr#D1Bac%ge#ist75#A66Jwg#so8dN$$}Y&w+^>%hxK{u zCwk}g+WIEuZf|_%-q>)dj#@i)TJ0|mT3}`P_e6^5t4YZ}G^OtiYUC*FhVzocJQaK6 z+2E+)NYb6zbPjZ1F;o3Dy#z^7f&QA_G+&CIlpe)^qK^_`Qo*BeAZ&t^gcJy?UfXPt zwWB&Le1JRQtmRg4HadxQ#hH){$Sito(=xF;^hMDL#IswF8iDkWuv@xWt*YgRFp`k) zmvjwH#}v?6@=X!^Yw`Vk{RNT*IaYEZEkaLzXbn|p-^G33e3>Lq^iK$wsy1E&+p|5gPO?5}YNW{QgVW z?0wkj=MIX8Q??=Gi}Qk^CqleAAp+oF3HvUqPgQ}Z z+i=kECm08`{SrJwrdpJ&Mu)%}GZMxh*fi*{*tCNq(pg77i-d>ZVD;qF6YHlNpIFy_ z-T2k|jrE(2Z>%Q-Q(*i9<_B`jc1#H;%tGn5~DR6X1|#-BO-|biDzb9U2qkcNS~BI z>kbg4wiTfE0Bwc0VHrd%2`HYEcvcFc4vd~9*uYu6;3?iZK5vm_M3fxpvUTes_Pwjv z)rrvkTe>Q7W`jn(!DKUUDI;udx-0Bt*rd$i_vU)jf{t6OpFTeO&~j;^(b!0GoAYIz zK+g8O@uveZ*&A3Jhb22w*Gk*{zHaW^Kzx}c2B|l>j0AGv%~w*RAJa5tyPb;JeJjW5 zX;=Y?z{O-c>oVz=;<>&|QwEt|8XzL?f~1+DC*RXIf^|DT{lw~6YtI)stxGbRx@OR_ zZ-C>pWisvNnq|={K}23K1n|Ky^2WKyO)ZphD!V=gn7&1d$=PDG=@Y(8Gi;(rUQL$b zGUuAbMDhK$u31qEc`}Qrn9+| zYqV&E!@gS$Eecy$zQ%J+k!S&-QCL}S2o@F1WM6url=)fIfgG*%dGR(ZmIh^s-J&G|u^uZm_qyi!EEIOMSNmQ6M z`+HA9QmfP*1tBcO_a8k1CtQ03Nv)cDN@3l^Z84hg`2GLc#Q(h}&D+2Y-iWd+7^9Id zZSuHLq=4m?ZL`~{M7Bm~f=*(J6XuVUSx#AC4kf9lo!>1Z#TItO2fZaEWFA&E2np}# zR>;^dRkdQYA1iVRRFt?wttb%V5(e~)MlMS^AU)6w_MpeX&FzJ}8cB>Qr=ac3cg`*~ zJ6xH2cypM-d3H+oAnD9wqA0%S%oIfY=TC@+znbImBx_`+!qM>eYB>Ybj|I8gwLG_L z+abb)`OL5&!PA7Umdo2*D)NfG>~@=SxtDA<*qFGwV0lG<9@gf%m?!s*ggpJ|5~1f; zzOAKeKssAsCFQ@@3XV1Wpr_vLWP;o1rn)*XRptEIyz9q)j&}1-&g9I;pKHh@TD({a zf{Vw+E8i(3N$&Da#$rigU?7Objj4yZsLybn%rExs)LAqt8ABI0UPi|r{qjZ?1$l>G zj08@B?omj?q)Y4T4G=CJ`?)5KDvUU>XmW58De!H~dUZo%V?u!VYh2;NyK0c$6Vs&0_%SLiFyU!NE? zG$pHKT>N)>dQ=?YQClu>UvQ*QV>VF1~&chdD-VGEjlDnGaua1^9?}%o%wk=H2g&a zdO`Goxrkms#8XckF*tyy*RK)}fbC{*-K=ZpO#e(0%Q0lIGic^amwu@z_cu)qhcdGt zf$`0PA#>`bvXZ1{`7gf8MgtqF?a9X>h`PkTHF5>5$Ulkow<#g}$xhqDyd`d06nfC@ z^!p}nv6#S4z&*I@{CYruVzw%GF#ul%py&VEPt;$QNqv91OGS#{)7-Lh1@XOkc)IMKBWXQ)~q%cwu3>AU9V zI`qTV6{4>xYcQ2HhJHXBgrULIOyqF?@syk3en)^R>y?0y_Y54A)1QG%SNvNR+A+*p#5kXM`(p0J-0)m8IWEBw= zT{H>3D!qwPl_DY_t74-gRY7zGSEVS5Z3VfibWQOKl=e* z_m<6}q=r&r=!lkrrhjIO#`bmfz#Gfhlg0PcwREu(rbm*kQ!HxPiA9Si_td#6?HdTp zC^9iwbhlN>HQ2gdPi_jH7% z3%nlPzidU5+@fK6wr(f-YRx?~FH~&Dce7>AtJb-FsR{ckvXkGs)TMecBe0N3wdMhZiB2`m?d=wY|a}{>Rdx zJ(n9-DTLS5<=plE;*ZzWt&)a%LWac&q8oI?rs&QJ9?@=NM;CV&^uo`FT88att~-YSvX&v*=i2z+S2{*?sfL z_B4HU^d{|+FM8v4J_BAAu(#jSDro+-z-~OxucdX0<@-@Pe=TP~<=a~))-%&91N*LM zdPU?{ujQ{JIYwZEzp(n175HXjpv0|sBe(s==U*zUslIIW6~kX@toCbVOJK z8@tt!oB`Im7TfjpoY)d4-i8FXGnNo+h%770WSmu8S474}?QqWxJ`Y`q4Vh_FIVLZB zAc;LTZI3EO8-S~1OH$JqM?Wd+nXH)+F6%iaAn8tc(gl&7vXN>^S7p1cwj^b}fIG|o zmIW74x1%geL~(7)hAf|RD3Zh;N4lLulP+`=Ej*v82G*+#(YQ#vl4>is+O_xx3_Lx`x5)1%aj|I$#J*7Alm4u8Y5eANU=`AgT&r`Z&$ zNMtbCVoj1j*w$L>aMRI$Tppx3?>5_2Sx`D2H=^sQptYi3ID^LsN>1h$2#Lt2qM9ws z=vi@?V@zp=1b@h|he^Y%ddl}oVN6_-HM^V;-_O=YUF1aK;~kn@IRTU7+fU@CZI$s| zEFVX!WMOm##T@fxqF(P`$`N|$o&U!H-Ii6?+XH{E(w-gJYAwqhQM~JBE>p28aA5we z?lsdB0Y|P?f4+O6H0Wujv&*PW@o>;sw79IHg-oVljaS_H3s7*gY7cOWj@G~P9IH6G z7V_5RMpfqMsIyHijWusRKM(UKc|%{O{HObcdD=YO#U16ok(b9LC*8Z7w<9@ulkKaG zk|Vpte1!CmD6P-u?$%8;3aj4ucR6&Mzl-R{Hlr*vpZ+&0RzHQ~^sH2*EK`NED)_fa zt0*!`LdSRWJ#~1zcUj{Bv3Py!PXxj7<0BcAJLCzXqOzp17|L~vhRV;V#tA$Qpq<)FG)_hZUQRa{0 zle*7e`R>H@F0*FQcS9jr)C1yhKU)XEcsc(1&okVWA2^urKX07Z5<)vybh>_%l-K2_iEO({M zC@q#K@7l_pH^h%-W^~gt2;C-6NZFTpHwkZRhqs-tkUs&De=->pkCj<6&9Z%=BQjMD z4SyC~@Nen-;&Cv)K#=lNYw$`?P)o&^9RZ_FB*rK?o@j(4rVuPuln;^cbR}ZKEY!GZlZ8WT#KhRFY*a1hEz}Svc2tjp@P2Ompt( zn9~&>Wa&LzxA1z<5plZ`t7m%>>Q%krN-Zu7I0e396-KjRv-?xMu;#q6TnN`p z2$Pg_(SJ6tdt$=(YClKStO&9IH|`PDCgrvV`ebIeNROSQ?7peHv?l$$1qO(No%(dz zY4tKB5eh3lTlyL?l6|tA(H``hPqFkRLRZ)4DQNGiuAqrAG(|W_qdS{oWh@FvS%LVD4E(66i9wHtt`s#+ml~(D zkcnfMGTzN3bBzhz1nBxq1_COaHA7qaeds%1xUi=D3Q)#yG7T#X4WR7=^CZQE2syYp zs|^(0qI4j*wj)rBSOZiq*C(7eGRSwi^5}5-@$xFQIMlqjgf880juZE}=q>qe-BbSp z`-i<*K37(J>Q8(+S@fpp)5$8zd|r^%s8A(qE&$>B4W!ige!YazYP;Du_i|GD40vX0 z_MC#~$Gne@>rQnqFKN8%b*=7kg`XZgt)KVh<9x$W{XYBXKG&&FYV2sf+LDagu2fo1 zDvV0)VCpJ5ONcjr3n)0?KL>{|D2<1$;Ug}VSK$Tt^w}P>VPZ|amTu%)<(Pc`u+(Y? zt83y6jpVFlv*fJ*u*3~T0k$)yNP&qnTpKFt^U$SxN8TBX(KgN3Kg-xFB_!sIaq-;S){>a4|A^3}Ysx&ajgf`= z>&+y<`6ANqJp7v1u5;-oa_hv)Njc?^rFGr^`ioM}^AbAuoOV*9Ueb8!-$oC}de=r| zt!n04zU6LUA`+F97ux#m&q@ET@3+AC;=@9mixdy`QRQ7l@#hr#cMD6?H*}93CzdJM zS#Z7Isp;;MvP^H!Dm|xUw_8wgMR-Zd5(LQ%kGtHsxOsmY^*%jvyR+Fl2Djz_jI|~h07&% z;AByFbW%mNr99uRO4RgxGS;HJBakezCMy&Vq?UzHble?Hp+PAf9fbR$@70aD_IR#2 zSzNG^87tas6s#})7IW+ZGKc8$Y7t9i8pw+E|JI-Xe+b7y#ZvqGLoNl{UXcbJP;2c0 zgf^YnBqzgcYi9E6MhJ7rk_B42LFxGgIusIH;x3j`z$pals?ZR+pg5{y-+S*nGEuxD z0}pc|T@^%FS2OQ~zM?(wkhaf54J z30-+A$an0m9b4nfl;PuTrJNAU$LgZ+okG3B^Q7cde5W{c%9z-|hkPLgpT(QM%PRYL zd~b(Y^+1tjB2G3kgH%BzEu^vq?no`@MCx#kB2ehL(a}PJ#9}mAIU(`_>NS2egVb~Z zKt>6X*^&=_6C!3Lp=k1lBmjfqN^)$!qeLjJDT4&>9;2KP1C2RWydE9CXewhXW+#b$ zf%`ukB%R;(*j8*7&mPP0#60O}g@O{}7Pd(n9U)BA;Q~fKR{5CgZ2Rn;YfyK`LmGlD zF9jLae<5`tGvO$xN=kA7gUehGaIm9M7lC z6=H_?3Qg_pZ@(?fBeYJ?8BNB@el!twllO#_S=%NT|68bi?|YiVpp4E?iW-NqwPZ8E zI+}<;zbS1^ZNVM#(3=iQk-~Xh#MUsX0iDwkbeR(rlnTsV{gpyLdP$_SJq)Vi=| zuq=)Ti--59YvTBVOL?x^p==pm7g+|h258VaTLI_c8D`cBh4Y3NEg-4)DeoQ8UJIdHS;kPk)B|!DbNmSiIK*Us4%ZoPW#P%TUgmgpI{$N0!DB zSQGfqLO>COMNkG8c6<@_;`02oS86m4hEhZFgFZ=&t~)+>y{8rnozin ze@KWXPX~0on%;Vcx)2bj8?Qi!(eIS*ypZ6FGox~?7Xo7_wac@>B#b9c6F%&u){-UFHRbt3wL^xy~(~C zq*&^_{vaxWU$KkQoQ9K8@1oHyMeyv-cn|sgR$$9bVOI+_c8kaF!mw{{?)eTOc*0%Z z4M=Vytf9OC!jf#p4$5#m^pEg6Y_}%-DV$M-A?R*@t||AId+qa#GutyIXc+^-!+1#Q zi#I*w>M3N5SeyjOgnETLo8slp2>iVFK>JoP2WpPR1Yqr6lXrx>kaPU zP>j`WbdMcmj#Y?Ffd+jK7flbej;B)Sx8sFR5>nXx>G9j7uNt5k8r>CWH{V zrqsLtvqYHoyNj%mc@j1GU^~(oZ=PTiNq#Idn(`Q$QUD$#(-B}6($N?B1V>n4!qqf1 z_1m04xLg0xORWCKBo!x$#~Rlfs;L`BT?vq~B%pTf5=qN2)}o+P{EzM4Pp9F7m(huF zeFA)B@?FU5^Cn0O=W{an3H$BL0vUd%Q$4(OrRZ&ux<`$~2+wCEF!7dn96gOGPj#Vo zSXgB^s{Pg{|IphhEy2qlq--xSQBDp;iIeX$V6WO0)nxyRA@a!ZMrS0qiKc>WF5A(_!DpoS?ALS56+`lBukcua@ zKcyR|jzz@{-F`MJ61Cr*mtD4Md`#{{=wx?&`#~^Dn=iM%(6d&Ydre{;h_L+n`B@?L zz{c{ScY8Dtu@q|!|D&s45hUVz@u|kA{f$!*{ltjGU!W;}`>e#1cTVdKD1P|QVfV=& zDtmI&PtCSw+y1Ag%1U42sJ@&$aGaNBeoFU!KeOpT;VXX0h@til3iPg&Perjnx7yGA zpfM0-4p^nwOSXN+D`PysG%Y~?LPlSJQ+gv~nzd#rivD-U-n}8h@jWSkJoLkQLcAFH z_|t_xO&uMD#K0&ea)uSz`@F3(3D4~&*)1ke3H0vl4XX@VS9aiOMdfUyKs3zHFD&9u z>Ak(r z+)nIwy({4IBE0so@`Xt;2O*uvhrT z3b_GC`S~c}lEA}Mel&`KQt~Ze6P(1d@1h?Io5=P{xVXs>V!Gu=N&UEtrkI;)8}Yfe zDO+$BBeaXbtjV4N8kbDrjjy>zrKH8F0mvV$*0r!mPC=#P?&|sOsnE84^z^;3*Y}>E+CXE^jNX9!QKw`wv#F~u|abE;UqVZk<0SyFM zI;c9}^vJ9L$tinRr-RJZh3Kpt9tz6mu+66s)&{rBTJ8DX!H_4(brR{u$+adKF0i{NRnRfjUNzvHikZDW()etDy!)W$ zmBIR|)1mfR?&~+VdhP#5U|$>E3^f_{Pum6gz#i!zW(6zsgfD7h@3wZRUKu2{$|jUv zsR{~jeBGBq8KGqr$zr4Oj-YkAOd8)sT|Ls@aNe$AC@WQG|9%gCfAIm2ee*3E&n~OB zIWGNbd}; zMpF)FN=lX;OV(EpKl^#E@SFFqpZ~Jfzui0j@u;h-Z@Yt2RL=V6<*8E}>r?GNzrETq z7H+mBv^M6qxGT zDKHgpj{n(Z-em^-KDe5$}OSK{e5)Nvm>p+zx_F8>Z{^nsF1zOir?SU%C&?;=M9?~zN$w~QVO?vSF+!PnKNU%4Uk9FkNwX zLN=s-k0yY0cwbAM@o}{FAda1wc52{=$<=opA%Ye?JEC`R~UZ)EyZ2&AENr^tQA!Raec02M|{n{ zX&gNAwQLQ=z;KoM+v9c$vQgr3u^?$ll&v*q^A65P?QZ9r6nQQIKsb@Y2v8L1c*oCMhy7^LzjsHwCPwA*gfpkbPGBqwym5gzwxV-v+cMoIIc?~r~c+k7Pq-C1?ZD+1Lb?`LOliV zlq?!)r|)}$z!RGSp$rZttt@2>T?WLVljs5bD`h(D7So2^{Ttk|0g@a~N#7pd4eA<% zxy|aplT&UZ8#J?{nXjBN?7nYu_m6<_`}yzPEOJfe)l8$7Da-_4w;pX7fSmiw3`=dh zq%n~h^b@Aks2X{0XU#L76tBCq3bmhmh5r98XkYMbiTHl>qRpV+mJy@DKa9ezifc6P zQ0u%EaqOc)eCVXHNaG)@k*bI@0u918FN|4l$44IS2<~i&kP9Ab-LY%*kM9wa3gud& z&i9B1A=c3cdjUm2V>@}{o2S?(j7R$|*HUgS&ZBS?yOsn=qMJW;>>7|L%`ohv0f*Ic4&A(>ndWRGN49&VQws!6UgjG>LJTl6YpVU$v z*sY^#OV3kH^>^Qs)BITeRlX|sL*P|&+j+>IT08en%^WE}G0{KE=5Y+VEV_{pOXjfY z`0_4NWa@%H0o6g}B;m{mep0yd9x8wXHlSp%;D_MI`Z!7-=^SY%fu08EdpM#Whi#3c zgySgwBt{1{o@~V>v)0J5G`W-{-R^;Bp5FO7-`{lVL5c};K$o^#nx;8y$?mxYboQL=JQr*4&)e359T>4e` zc2vc;O!z#R>CJL|!z&S-tciPDx70DndiG_TJgeX0I0Sm}*k%dR(#K9@xIokJJ)(y{ z!6gkS-ggtv!-CXy;YZ|3A$Y6@c;5at+WvT&Zux7a6HwpsheXOsA?$f8X+Hg(y1k>l zL~s8LySUkT{}h_O{|6-jFdy_=a1*5|ZM^Zlqv$Az`^(j6C)Myd7x)bJFh}|=#T8RL z+UzWj3upP*a$#CYKl+F_hio!)(e8z|JL|Jw{0SE6i&*P7u(9u^=%iPq=(A?OA#bI7 zq!Du2C!^>2w8#fM*EhJlyL13XgT~jB&*NbqE*;Adpf_XS_M zr8POy9j#-m_(N^*uRzB%u{uXW5{{7Kw(`W(%o$k{F%zE!4qp)_K^_d!80Yb#_8l!;>>T#i>28~2}cVbrpy~2UM3s3A)H<}^PT!k(U zc1dBb0y;PhY_(TvbTq=iI{StvK5xV37l23z35DPr0RUOZ(k3)Dc`R-4={e*H^IkJ= z0^SHbv}@K09=yGXHWiv34nh9{B&7ODks<-@O|nZ*>{`g^+PbFfCpR5sX+UEC)+g6g zve&q%!!GA(_eNf!uBzRMr`a&Ra%~ne5F8_DAv2z0gYZD!1oOlfGfCZ>pbY^BojE2x zv56~3ITwvc#sYSuWUJ|p@}3XZ751iB7g!NO4YMrbeblcC!tpBOuF{4{C|K2-4p4&LmtXFB6hEVFoA)dFt;lMjki) zF|{HRwmsA=?X45Mt)aX%OM|;+HKD55MT4tKJ(8aXgg=xUq1<;JNV=ZXAerr^*?mCh zPWbfmPUyYj)itTVH*(_Nd;{8Y0`bg_2t`PUFq6Z@Lj+~wizM=vSm;3N{hb~0d=cUg z8XzA*sOkBghNK&kMGg2y>Xh-u& zOLg0m6yY$P8KEG3kn3|q+LxOilZHV2u|Kb+%gPn$5wxxQUV zlBQVu0@H$ne$O;-e(!(v5X*>M>Tm3i_YWaSIyn-=4`=a@JB4`y8LrB6gmaH`Jb4IB4p0i)Q+uhlQ9J6Ih9wzrxbN09LJ#T@mOuajFX~T0%S9VfaXc2d_eiJ z^PE1{b25(M5xXmxMxjr$lP0caYUIZcD?r+E)-e0K0N-%*_T~L};RNinw_`4nmY5l5 z&l3DxaIR5yT2C)?7ly+d-&K?MJU(zFO3@&wpU2-I2&L0C$W39|eD|9~>5*oS0$Msu z8Wfn*ru;)OH`(GdHY@3Ccc=N-x%MmHZiLpM-MSgoJz4dt?>4v*F(eX^7w)9+Xu zCs-JZwK!D8ns2B&RI?M@{k|}n(u`|pH;@e+os-DpgNI7MUX0uU+ZPlING>pDRH5i? z;H^gxaKD0r_)|BVEROYSVhDE}(p9!JViBCNj zj(p(@BQI$w zCg{(y1J8f+pEFDUrE6;UeEA+yIqawwe%-l)f@u;4mffXA-95IyX6E`0sS8i}stk(v zyhsv-Pu$7F6Bnns)lqgp7%w$U$hJd51j#GXI;GVi7k7AtKQ+xxfwd?AW4yQw8Sj70 zG&SK9#k(wo_2u)FK<`ql_g@Wj7ME)t^v8R*KC(14FW%ENZRt{s!`5K19TkBSd?hF}X$ zs#se$0OOKjgOgH)=dSS@xpDA+wRE)WJnwbY&?IZ^4XZ?vJ#AcZ^>?5RcR?OH>)NoH;TVyN*n0M*h$-8Ue zZ?Y%9EExZ}owE{Kp{T9=E+LlvL~nz%1bF8d#lk^>cS~sAk5Lp0hj?vL(0-+uJAgBs zj`%N9Zbunk$j#|K)|%+RyRMxcwu30)I(Op^aA(6>#&>LvEy5Bx$6BHTt)%XgDf||3 z1EkmM)iL%A-VJz9Nhbe5Jyz4!b4cc(^)^e%t!Kg%nP6k!YRpp;kh zr#s8$sN+QHJzE<_>Nz(v`7>ql?r8*RJCu3n<2|FU3t`7|CEDK7F3L&??3$^_H}W@1 zuC-b-cS#C;H`X_TKHn!IwO4HmUTDkqb5%~)uo<*mT&8n-j{ESWm-l4{bykP1{4Vla zg?O9|W`{n7YdRhKMqTK#s?#~Oje$!2dfE=QIdrP6kG4feY(A_L4V~%zgc;gQrsuZ>w1pbaS)`u#L36sPx@lux z>4!GOzcsg5ys;`;fvhSbKmS42e`UA;YUj=rGKQ>6_$OUJrmi@U<3p$1mZNGzl{Z-( zN&N3@=v3hZ(Q<<%bKJvj`>0=s(F|4WPfJyvYq=}PpZ`3%GZ}Sjx|_WgJ$lYCWj%?4WS5N{-!#v9R?C637rNO8qWz|%PPzZcYv21X2y3yBX?_VIGb6Cti#KKhY@exGAlZay4e3Zu=Mq(|uc znjU%xc?fPmxD4EBPunF#Y%02Lnjk!v0JeHB7VpqeHs(={#Up$e9D|kwzQ3ej1F`6m ziFD2$xP$E0C!qw-W+(c^Ho@C3b?j?upJQJwf(?MI?!K8kaA{{)>*EItv6JJ|Io5+A zdL>}(>=vMRa(0(V9sd?@YV8J8_x%vAj6lGXwePaKzJD4ohNiM!Ge6Cx+TA+H1mS%< zY8`yzQ?cuxZvS2TdhliamGCLp4LtX{jnoG@z=HX!8m(6~nxd|)y;0s}NEGZcnDbka zjZN_z1Y}kVXUA*GO({>?AXG>~-+oBKpYbNpI>ohRBb>{GZ#Wj;29Cw~2}-VR>TYwwyM) z>{yr4R7_^y)TRDD|20&9FC&i%(Q8zcYkq}7(fH2|@FlW*A1y@d&)6I1n^24l?333G zyl$%P3TE_Y^>ho0j6O%)rYnT={P+jPLz^aOE_1_``C9w=ul9@U7)+WbG+b9*fnOs@qom(c^J>nY zl<=ovdPs}jiupiw%hB8x&+TeCB`&3YyKOB4_nlg-H*X2~Z?9VJ8ASV~bk^Ma9LurM zH}}U!pKYmH-hQL?* z^&ifyqj2fGIQ{4Cg&n`*wm%eTkFxJ`Ng|A%0lcZOqH-tBYDM&^;6&VaaKeKrX!5!Hkz2+Li+vAQR(<4)SQ~%S>gmXd` z0zhI}Ka6aMn)W|F8P)oCQ|Gu$==DSk8WGwVw?uSVyD$$OXE zKY0}5l%?hr|KVHwhcELIA4Yid*HYt*@FrA%Q@_Hmv(HfcwfIXaoYE&Hb}C^}Lc`eu zlpM^6WVY{=B#}PYn^VoEm?pVD9yUBqu=ik6E}CFBVMVkED=JyEV>xktsWP86Zs9kD zq*kY;R7Yy)m$_*+c)n3}&EF4k6CRLxhS<}(Bhq?lfu+~d&77nd1#fXP0jlSD)MO51^oIE-< z`U62ezrOP4jg$HB^iN+oefo4o&Bn*NseemKE^X0z-k4uM=l@_T{3MW}ThpWvoRy4; zj5*(tfB4F_5&pm#$IJ1_A^0aaC!Ax)2Pe3!iJs&QYK&p5%pK)+-sth4njV4i>%0gd zFZgfxe{o0Sx6W(^XaL;!7QdA_G8#M`jKpt+7?|nvUu4=5_*&p8mt0#GlHjtCriXB? zq2CS~ZZLVqa#$ z4@qb@1?=;)8Jocu?;*L4H@?=&XTU!R{#eECO7y!t*)=V-&M=7HvI4pWkPMM^OuECz z7EaJrOaZ0&Y?>!`~Lyh1J$@tG*F&HMa1y1Ui7U<%U0YFfw-;QreT}UJNNpl(r=6qz#H(dE) z?w08>;9TBFD&vNCdkZFukd)${Dkmf(VkYOg7gEuiyPd-q#t}>iv@>u+Md)f4SKTRM z$bwYl));?wb0@Zs5?5}+Y3Y$hhoDdKoy6a<20!tzU*1Q3K2b*M*%!yof$h@gb8}1M z`^S?9!EZTGZh;X2H#%sV@1KCoZhX{dB){d>{#TRoH=?GeqP*MVr{`q%$81N|ZFYd? z_J9EzIH0`oJ)wAdg`l=q=bSR%%5wSP*}%$BtP7>-)1S}2>hIcQAK0s(>^cA)05#yj zo#@Ii$`BmwCiPd`rs5X5NiAlX8C#J@-ofXqYKINGR8DMGjW@|i>G-sbFjle+Kl;fq zV@xik|H&i9zJ#MP&CfFE-FSLDL2gApwZF$NF+1hmX(=n}v4nTKr3}wk8J*Z{b8H-} z>YrtrFK0A;(3~MkSR6s4_~mstxxbkj%4W*`n$mbGhbI__&dA`0>0F;sznNsfKX~Zg z7QT@rOFk#THj}4z_%ex=*?2R9O%YGsInREU7BMD(`%<~?+rYm5CDc1WW*>!vI^}y7Y)MpZ> zORgOVPs?lKJK(mVgssnK*YU{DnfqPqZEEYh>X=e+U7mn-tlO`?TH`k2#(;LpS>k@v zH$v6nY1yt@_V1}<+(Ic}I;7~RFT&0`oKRurLCh0KTU_*ZlkC8IG-$?(-{AkUU$U1s zzBd)O38PRUI!Bb`9^+&Syx1V^d0YpcLxZMu1n`D?+|#l>#Ip}+r9IT_^>Y)it?Tsw zB)}phH?9f$cKpQ&K@iL{_gQ$w1G5jcFp*k9i@s@#``A)MB0=;WWqo5Szq9i3(p?g+ zMb3_ut@|YtW7HX!*4zLxFi{T|%|%y9D!88C2);;*yYHS>s*D0}GuS`va0|Evs|2RV zvv8(OShKXiS-LExK^(FN!xiZl3N zVL@23K*t0YfAfAIQV{%#`?~riaCfdB1>ukZCA7y477)4mWlYT>1lq-mi=}fC`(NB@&qtqSFuu;c)PNloO3`zg5?L8 zF;AOp7fF|c>yE;rwPVcc{cvC?RKODsG>vP7j?LHO9>AJ#tgCsy5HF03Q9bE!0agcS z4+}cXgPaIqiWit(%Xs6vsPYN=_Ydn_R(1Wj+>euu0CF(6Q+41;CQ{R$m^a{5W!%KP z=xF8yOnYEPrP#N@V2)M*19`_*Ke+^_F1igkXFKC04v#svmd)3urA1ZQ)w};C>zXfz zpCMB%!ClUCuj9bSDi8MB)C7CJb0oS*2N-eXg&7{0J_re=Kq#Lr_|W;8nOz`BXMi*f zE?O?`XM!#2O_z}}{P;A_U~8TbV+Bu3h`}KV4BG@p(u^F4laUu75|jjgz~B^@N>2d+ zv&%dILWY9=m;Ma>#Fj_D`A*vv;i5LSL`N&z1t79a4?>TZWph+> zq#=sjO7Qlw97m_aaAK>Ww|HMfK~`(WUa&n=crkOrc07A4UV;a-NAItM1hBzUDG3iR zP2gyBX{~0m;M96m6X+SWPa!}uQ==;rVkD(@*3cTN_8gx}q)mna@poz-AS=Q=FD>wc zFa0*x)K;N@K`*gFES4c2rxZ-5m4ph zRQS%I@A9n3Q6wc=pc$b@gvrF+vF6m0ISph^hKNOq zb!QTR*+J%1Q~AhN`0_A2S!a@+HLAxV6{ikDr2;{K5AP?-9JI*qGFnK-X9e(iSaZ%3 zD39<(`ZH1l3$|=5nV;cLu%uacrdY$D!vt?CKO?=P4;1G1c+oW|rv%{85>)umIK|_w z@a!%iUqkzS7o1Zi*pq+nQ5U>~kn6`Y1z~^cTj($QRdBDqB?uV?)4VS-U5tnxB{V;uG z5$mG}k2+oETINs&b6Lk6EX$B!3RDh2yRe{R2J~ljr48Ue&!g1uU4MplD?$}qT*nMK z039S0Fwnl>pvD6M8h9T(3N(BHwp`rHId z)Fz_*fY&iG{p=B}|8c-rIFJl26o&z3VOrj1gA5PR3fHY8|764G1JfYYq^D&!RYe<8GORx0Uce?3PLGr z5S-&7Jb>fzKWl(zx|n(tHDUGX5P19B z1bNSok%C`zUlUAEgiG}2Cv$MB0sO*z!eAzu1@wKmGGIZ%s$Ag`$R|J{}1PCOBBSm04TXU@bloAacR_6D97`r$DhZmLaboAf( zkS!A9qP2vkONF|s-6d7WK4ddXXCW)0*LU0QGF^qjM3;S9i*Dkj2Ufl(t9E{bW~N2o z-qV3+f=>HNvbb=N$(`S36Z#p^E8SrVTcda4!P+5dbKbf`Ovgkc23gCU9#oaMFCy?= zsVe76BppLL5_r`}<+*Sk#dxw#S5)25F_WZ}r-a7EV{Nwa^9}K(a4vta_RE!Yl4493 z>kTlwgY;{0*DUId=5$A;n()o!DtnEajqmp*2L&7)=8dnP)_ZAL=aG4o>P=(v$E+;W z?v!4|EiRHm;Sw^;H^YUfC_L=~R6c zjLRN{G-V@Si-E?OGVgZKl|SeWhZ^EUJf3qLUwa80oUd{-awC<{Uan`d-rW27@Q3O@ zQ|Bn(U9HXG(Eb^M)Qu$(ic(XGIPrwG)YWw_xLO8gphv8#PEbP6Lv4C%m@>a8yzJ0*j}* zDEWbuHh~3jLne%RcfIeH5G?n<2T?P#4YfP@erZ-W5NTaYDDq$E`k;h& zi3$L}3PNt56$+5jZBC=ykPZ;jr+!}ZITo$YT1?MyN$-Ag%d%e#Wz0q|gmji!*l3*N zc5Z*GIucTO7^gX*LDM{%;GOyY!QnQ^y@C&SE5x~C|5|7#I*Ree*O;atxfRFLpNIOK z`O-{K_jK@TBHDbGkM}mV83js3H(xwXbJ6AW1U^s^_chTF7Znd+C-G3uDJvI!qgEz z9PnE0xNPN#P#?QT?Mv47eiFs(3gTGK?rFVvW9H#S^%l1MF1?#JO!Vebu&fkl7h;ov+3Sb3fNcrUwu`rY zUQ{9Fl^Hg);_kY;8~gS-qu(xAqp}uSYyWm`X!Ncf*YytfEzqJlmy63vX!`0J=Vw;! zn@f|Vxz)ak@VN80tENYLUY@p*T%oS-+U@-Oyh1tnw}j;D9Ns@R0@Urn!ngKeh{jU; z(j1a$c6*S8=*_Y8)*5P_;O;%XfWj5>GviPsnB?l((tLQGMfUhE)cj8wbV zdbZ^r9aW#BY&Nx;h*c09^`vfVU%rlA!`)J-tPBp-&m)`2+-#j8`>)pX#@B&nEV$io z82AjbcRl^$JW$a}l~Gl@DqftC?@V-HL<(bH@u)ZsI`#@9wD~IS;n_T`*Z>zk5y7MM zK?kvX(Vr`)%xkgx>^pas-G09*DuB|Nm@97-Ja+z~fQFd7yYpWc7MX@2@`TCtn#T9} zi^*E^RZb%k5u3H|UwMxfBa3-``0BdF^0{=arQj}Sp?iggcjvTDAxI@t@0p?;6ax^d zTD<5}5yP#|*)`+F!AEbR&pz9imcZPL%@|z^&t%t!zLpO+B(ECpaynU1@ZnY3I$~h`Rfm06CyuZ;B`jU>3k^mMwYX+ zrTnKePP#|JfBtj%W}ah~=^x&SlZt{$vkue5 zwB$P zPdK_;noF4p8B)8~>1=ahYvSsW)+`xTcC*<~tbI&-#9z3v{Z<+-ZWK2el)?Lz{VuIG zl-s>)w#JKvRXI(yqtCQHKge&H5R@z5W_^HD{z0RE|Ixee+KgI%dS86;aYOV0U&jIF z-#@k&{OG;8ptD7r@64R}_`Wv5=X~P~I$z%4P%g&c+HLP-t&cmgZF|p%xXYF8=IhM7 zTrl^~Gx%Vf`T6wqgXO88x^LP}&i%UG{_(~kqzySYr?;K%=xUoL9F`ZOd ztJIk(FN7`m+|XFgGIohnl%qAhd*ON9b-%+2k$ho%a8l>WiA?D&TSq!#!;gelwqK-~ zdcuRx_U{S^2=FyJAg@*5T-S1SQ1)W*<=V3cMU(pau0A{x-twvbkBfQ@hZ~yf+OL0V zxb?^CRKt literal 0 HcmV?d00001 diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index bd23ac84..bc116c5f 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -14,10 +14,13 @@ const creationHistoricalRecord = new CreationHistoricalRecord(); const questionGenerator = new QuestionGenerator(); var points = 0; function QuestionView(){ + const [numQuestion, setnumQuestion] = useState(-1); const [questions, setQuestions] = useState(null); const[t, i18n] = useTranslation("global"); const {user} = useUserContext(); + const [audio] = useState(new Audio('/tictac.mp3')); + const generateQuestions = async (numQuestion) => { if (numQuestion < 0) { @@ -50,9 +53,11 @@ function QuestionView(){ }); } if(answerGiven===correctAnswer){ + audio.pause(); audioCorrect.play(); // Reproduce el sonido de respuesta incorrecta } else{ + audio.pause(); audioIncorrect.play(); // Reproduce el sonido de respuesta correcta } $(this).css('pointer-events', 'none'); @@ -72,8 +77,10 @@ function QuestionView(){ function computePointsForQuestion(correctAnswer, answerGiven){ if(answerGiven===correctAnswer){ points+=100; + audio.pause(); }else if(points-50>=0){ points-=50; + audio.pause(); }else{ points = 0; } @@ -98,6 +105,7 @@ function QuestionView(){ //Last question sends the record if(!(numQuestion < questions.length - 1)){ + audio.pause(); creationHistoricalRecord.setDate(Date.now()); creationHistoricalRecord.setPoints(points); creationHistoricalRecord.sendRecord(user.username); @@ -113,18 +121,23 @@ function QuestionView(){ return (

); } -function QuestionComponent({questions, numQuestion, handleClick, t, points}){ +function QuestionComponent({questions, numQuestion, handleClick, t, points, audio}){ const renderer = ({seconds, completed }) => { if (completed) { + audio.pause(); return {t("questionView.end_countdown")}; // Rendered when countdown completes } else { + if (audio.paused) { + audio.loop = true; // Para que el sonido se reproduzca en bucle + audio.play(); + } return {seconds} {t("questionView.seconds")}; // Render countdown } }; @@ -153,6 +166,7 @@ function QuestionComponent({questions, numQuestion, handleClick, t, points}){ ) : ( <> +

{t("questionView.finished_game")}

{points} {t("questionView.point")}

    < RecordList record={creationHistoricalRecord.getRecord().game}/>
From ab067d2563b27e55bf8c5dc04e63a8a5f3119d9f Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 16 Apr 2024 14:59:27 +0200 Subject: [PATCH 11/35] Working the reading of the questions in SPANISH --- .../components/questionView/QuestionGenerator.js | 2 +- .../src/components/questionView/QuestionView.js | 10 ++++++++-- webapp/src/custom.css | 15 +++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/questionView/QuestionGenerator.js b/webapp/src/components/questionView/QuestionGenerator.js index f85aa212..12663c77 100644 --- a/webapp/src/components/questionView/QuestionGenerator.js +++ b/webapp/src/components/questionView/QuestionGenerator.js @@ -17,7 +17,7 @@ class QuestionGenerator{ //Mockup console.log("type: "+type+" amount: "+amount) const receivedQuestions = JSON.parse('{"0":{"question":"¿Cuál es la población de Oviedo?","answers":["225089","191325","220587","121548"]},'+ - '"1":{"question":"¿Cuál es la población de Gijón?","answers":["275274","159658","233982","305554"]},'+ + '"1":{"question":"¿Which is the population of Gijon?","answers":["275274","159658","233982","305554"]},'+ '"2":{"question":"¿Cuál es la población de Avilés?","answers":["82568","115595","41284","122200"]},'+ '"3":{"question":"¿Cuál es la capital de Asturias?","answers":["Ciudad de Oviedo","a","b","c"]},'+ '"4":{"question":"¿Cuál es la capital de España?","answers":["Madrid","a","b","c"]},'+ diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index bc116c5f..6b7542ef 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -129,13 +129,19 @@ function QuestionView(){ function QuestionComponent({questions, numQuestion, handleClick, t, points, audio}){ + const speakQuestion = () => { + const speech = new SpeechSynthesisUtterance(); + speech.text = questions[numQuestion].getQuestion(); + window.speechSynthesis.speak(speech); + }; + const renderer = ({seconds, completed }) => { if (completed) { audio.pause(); return {t("questionView.end_countdown")}; // Rendered when countdown completes } else { if (audio.paused) { - audio.loop = true; // Para que el sonido se reproduzca en bucle + audio.loop = true; // Loop of tiktak audio.play(); } return {seconds} {t("questionView.seconds")}; // Render countdown @@ -148,7 +154,7 @@ function QuestionComponent({questions, numQuestion, handleClick, t, points, audi
-

{questions[numQuestion].getQuestion()}

+

{questions[numQuestion].getQuestion()}

diff --git a/webapp/src/custom.css b/webapp/src/custom.css index cf8ef0ee..119eb48d 100644 --- a/webapp/src/custom.css +++ b/webapp/src/custom.css @@ -1278,6 +1278,21 @@ svg { max-width: 200px; } +.altavoz { + margin-right: 10px; + background: #000000; + border: none; + outline: none; + border-radius: 40px; + box-shadow: 0 0 10px #9f97ff; + cursor: pointer; + font-size: 21px; + color: black; + font-weight: 700; + margin: 0.5em; + max-width: 200px; +} + .questionContainer p, span{ font-size: 20px; } From 07fc99c42ca92f939315b159dbeb4774af4425a4 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 16 Apr 2024 15:22:57 +0200 Subject: [PATCH 12/35] Working for English and Spanish --- .../components/questionView/QuestionView.js | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index 6b7542ef..b82cf59d 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -121,19 +121,52 @@ function QuestionView(){ return (
{numQuestion >= 0 ? - : + :

{t("questionView.no_questions_message")}

}
); } -function QuestionComponent({questions, numQuestion, handleClick, t, points, audio}){ +function QuestionComponent({questions, numQuestion, handleClick, t, points, audio, language}){ const speakQuestion = () => { const speech = new SpeechSynthesisUtterance(); - speech.text = questions[numQuestion].getQuestion(); - window.speechSynthesis.speak(speech); + speech.lang = language; + console.log(language); + getVoicesForLanguage(language) + .then(voices => { + const voice = voices.find(voice => voice.lang === language); + // speech.voice = voice || voices[0]; // If there is no voice for the lang, choose the first one + window.speechSynthesis.speak(speech); + }) + .catch(error => { + console.error("Error al obtener las voces para el idioma:", error); + }); + }; + + // Función para obtener las voces disponibles para un idioma + const getVoicesForLanguage = (language) => { + return new Promise((resolve, reject) => { + const speech = new SpeechSynthesisUtterance(); + speech.text = questions[numQuestion].getQuestion(); + speech.lang = language; + + speech.addEventListener("error", reject); + + speech.addEventListener("end", () => { + const voices = window.speechSynthesis.getVoices(); + if (voices.length > 0) { + resolve(voices); + } else { + reject("No se encontraron voces disponibles."); + } + }); + + window.speechSynthesis.speak(speech); + }); }; + + const renderer = ({seconds, completed }) => { if (completed) { From 3aea4680d04ebad6b06759cb5da3e07cee941fdd Mon Sep 17 00:00:00 2001 From: sinne10 Date: Tue, 16 Apr 2024 15:40:35 +0200 Subject: [PATCH 13/35] Missing translation --- webapp/src/translations/en/global.json | 1 + webapp/src/translations/es/global.json | 1 + webapp/src/translations/tk/global.json | 1 + 3 files changed, 3 insertions(+) diff --git a/webapp/src/translations/en/global.json b/webapp/src/translations/en/global.json index 154bdfa0..60fd49fa 100644 --- a/webapp/src/translations/en/global.json +++ b/webapp/src/translations/en/global.json @@ -57,6 +57,7 @@ "strong_password": "Strong password", "error_passwords_no_match": "Passwords do not match", "error_password_spaces": "Password cannot contain spaces", + "error_username_spaces": "Username cannot contain spaces", "error_password_minimum_length": "Password must be at least 8 characters long", "error_password_maximum_length": "Password cannot be over 64 characters long", "error_username_in_use": "Username already in use" diff --git a/webapp/src/translations/es/global.json b/webapp/src/translations/es/global.json index 1c0a5f1b..6c6abaa9 100644 --- a/webapp/src/translations/es/global.json +++ b/webapp/src/translations/es/global.json @@ -61,6 +61,7 @@ "strong_password": "Contraseña fuerte", "error_passwords_no_match": "Las contraseñas no coinciden", "error_password_spaces": "La contraseña no puede contener espacios", + "error_username_spaces": "El nombre de usuario no puede contener espacios", "error_password_minimum_length": "La contraseña debe tener al menos 8 caracteres", "error_password_maximum_length": "La contraseña no debe tener más de 64 caracteres", "error_username_in_use": "Nombre de usuario no disponible" diff --git a/webapp/src/translations/tk/global.json b/webapp/src/translations/tk/global.json index d79e6e10..36d4dd1c 100644 --- a/webapp/src/translations/tk/global.json +++ b/webapp/src/translations/tk/global.json @@ -57,6 +57,7 @@ "strong_password": "Güçlü şifre", "error_passwords_no_match": "Şifreler eşleşmiyor", "error_password_spaces": "Şifre boşluk içeremez", + "error_username_spaces": "Kullanıcı adı boşluk içeremez.", "error_password_minimum_length": "Şifre en az 8 karakter uzunluğunda olmalıdır", "error_password_maximum_length": "Şifre en fazla 64 karakter uzunluğunda olabilir", "error_username_in_use": "Kullanıcı adı zaten kullanımda" From 243e28067fb263fc92932ee2f0fa2a9b4f8783ab Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 16 Apr 2024 16:13:03 +0200 Subject: [PATCH 14/35] Removed try and catch bc of pr --- .../questionView/QuestionGenerator.js | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/webapp/src/components/questionView/QuestionGenerator.js b/webapp/src/components/questionView/QuestionGenerator.js index 12663c77..731d055f 100644 --- a/webapp/src/components/questionView/QuestionGenerator.js +++ b/webapp/src/components/questionView/QuestionGenerator.js @@ -10,30 +10,30 @@ class QuestionGenerator{ async generateQuestions(lang, type, amount) { - try { - //const response = await fetch(this.apiUrl); - //const receivedQuestions = await response.json(); + // try { + // //const response = await fetch(this.apiUrl); + // //const receivedQuestions = await response.json(); - //Mockup - console.log("type: "+type+" amount: "+amount) - const receivedQuestions = JSON.parse('{"0":{"question":"¿Cuál es la población de Oviedo?","answers":["225089","191325","220587","121548"]},'+ - '"1":{"question":"¿Which is the population of Gijon?","answers":["275274","159658","233982","305554"]},'+ - '"2":{"question":"¿Cuál es la población de Avilés?","answers":["82568","115595","41284","122200"]},'+ - '"3":{"question":"¿Cuál es la capital de Asturias?","answers":["Ciudad de Oviedo","a","b","c"]},'+ - '"4":{"question":"¿Cuál es la capital de España?","answers":["Madrid","a","b","c"]},'+ - '"5":{"question":"¿Cuál es la capital de Turquía?","answers":["Ankara","a","b","c"]}}') + // //Mockup + // console.log("type: "+type+" amount: "+amount) + // const receivedQuestions = JSON.parse('{"0":{"question":"¿Cuál es la población de Oviedo?","answers":["225089","191325","220587","121548"]},'+ + // '"1":{"question":"¿Which is the population of Gijon?","answers":["275274","159658","233982","305554"]},'+ + // '"2":{"question":"¿Cuál es la población de Avilés?","answers":["82568","115595","41284","122200"]},'+ + // '"3":{"question":"¿Cuál es la capital de Asturias?","answers":["Ciudad de Oviedo","a","b","c"]},'+ + // '"4":{"question":"¿Cuál es la capital de España?","answers":["Madrid","a","b","c"]},'+ + // '"5":{"question":"¿Cuál es la capital de Turquía?","answers":["Ankara","a","b","c"]}}') - let i = 0; - var questions = []; - for (const key in receivedQuestions) { - questions[i] = new Question(receivedQuestions[key]); - i += 1; - } - console.log(questions); - return questions; - } catch (error) { - throw new Error(error); - } + // let i = 0; + // var questions = []; + // for (const key in receivedQuestions) { + // questions[i] = new Question(receivedQuestions[key]); + // i += 1; + // } + // console.log(questions); + // return questions; + // } catch (error) { + // throw new Error(error); + // } From 699f57d66f7d1a564a10448ae35ed2762f471023 Mon Sep 17 00:00:00 2001 From: sinne10 Date: Tue, 16 Apr 2024 16:46:58 +0200 Subject: [PATCH 15/35] Added tests --- .../loginAndRegistration/AddUser.test.js | 153 +++++++++++++++++- 1 file changed, 151 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.test.js b/webapp/src/components/loginAndRegistration/AddUser.test.js index 8cf04089..56cbfb5f 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.test.js +++ b/webapp/src/components/loginAndRegistration/AddUser.test.js @@ -1,14 +1,19 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import AddUser from './AddUser'; -import { BrowserRouter as Router } from 'react-router-dom'; +import axios from 'axios'; +import { BrowserRouter as Router } from 'react-router-dom'; // Mocking useTranslation hook jest.mock('react-i18next', () => ({ useTranslation: () => ({ t: key => key }), })); +// Mocking axios to simulate an error response +jest.mock('axios'); + describe('', () => { + test('renders the AddUser component', () => { render( @@ -24,6 +29,150 @@ describe('', () => { expect(screen.getByText('addUser.login_link')).toBeInTheDocument(); }); + + test('displays error message when passwords do not match', () => { + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'username' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '12345678' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '123456789' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + expect(screen.getByText('addUser.error_passwords_no_match')).toBeInTheDocument(); + }); + + test('displays error message when spaces in password', () => { + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'username' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '1234 5678' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '1234 5678' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + expect(screen.getByText('addUser.error_password_spaces')).toBeInTheDocument(); + }); + + test('displays error message when passwords too short', () => { + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'username' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '1234567' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '1234567' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + expect(screen.getByText('addUser.error_password_minimum_length')).toBeInTheDocument(); + }); + + test('displays error message when passwords too long', () => { + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'username' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '01234567890123456789012345678901234567890123456789012345678901234' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '01234567890123456789012345678901234567890123456789012345678901234' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + expect(screen.getByText('addUser.error_password_maximum_length')).toBeInTheDocument(); + }); + + test('displays error message when spaces in username', () => { + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'user name' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '12345678' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '12345678' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + expect(screen.getByText('addUser.error_username_spaces')).toBeInTheDocument(); + }); + + test('displays error message when username is already in use', async () => { + + // Mock axios post method to simulate response for username already in use + axios.post.mockRejectedValue({ response: { data: { error: 'Username already in use' } } }); + + render( + + + + ); + + const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); + fireEvent.change(usernameInput, { target: { value: 'existing_user' } }); + + const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); + fireEvent.change(passwordInput, { target: { value: '12345678' } }); + + const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); + fireEvent.change(repeatPasswordInput, { target: { value: '12345678' } }); + + const submitButton = screen.getByText('addUser.register_button'); + fireEvent.click(submitButton); + + // Wait for the asynchronous axios call to be completed + await waitFor(() => { + expect(screen.getByText('addUser.error_username_in_use')).toBeInTheDocument(); + }); + + // Ensure axios.post is called with the correct data + expect(axios.post).toHaveBeenCalledWith(expect.any(String), { username: 'existing_user', password: '12345678' }); + + }); + }); From 46c3e9293c120dcb97fec83ff9d78633eaadaaac Mon Sep 17 00:00:00 2001 From: sinne10 Date: Tue, 16 Apr 2024 16:59:22 +0200 Subject: [PATCH 16/35] Fixed duplicated code --- .../loginAndRegistration/AddUser.test.js | 124 +++--------------- 1 file changed, 16 insertions(+), 108 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.test.js b/webapp/src/components/loginAndRegistration/AddUser.test.js index 56cbfb5f..ca05c287 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.test.js +++ b/webapp/src/components/loginAndRegistration/AddUser.test.js @@ -14,12 +14,15 @@ jest.mock('axios'); describe('', () => { - test('renders the AddUser component', () => { + beforeEach(() => { render( ); + }); + + test('renders the AddUser component', () => { expect(screen.getByText('addUser.title')).toBeInTheDocument(); expect(screen.getByText('addUser.username_placeholder:')).toBeInTheDocument(); @@ -30,147 +33,52 @@ describe('', () => { }); - test('displays error message when passwords do not match', () => { - render( - - - - ); - + const fillFormAndSubmit = (username, password, repeatPassword) => { const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'username' } }); + fireEvent.change(usernameInput, { target: { value: username } }); const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '12345678' } }); + fireEvent.change(passwordInput, { target: { value: password } }); const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '123456789' } }); + fireEvent.change(repeatPasswordInput, { target: { value: repeatPassword } }); const submitButton = screen.getByText('addUser.register_button'); fireEvent.click(submitButton); + }; + test('displays error message when passwords do not match', () => { + fillFormAndSubmit('username', '12345678', '123456789'); expect(screen.getByText('addUser.error_passwords_no_match')).toBeInTheDocument(); }); test('displays error message when spaces in password', () => { - render( - - - - ); - - const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'username' } }); - - const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '1234 5678' } }); - - const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '1234 5678' } }); - - const submitButton = screen.getByText('addUser.register_button'); - fireEvent.click(submitButton); - + fillFormAndSubmit('username', '1234 5678', '1234 5678'); expect(screen.getByText('addUser.error_password_spaces')).toBeInTheDocument(); }); test('displays error message when passwords too short', () => { - render( - - - - ); - - const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'username' } }); - - const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '1234567' } }); - - const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '1234567' } }); - - const submitButton = screen.getByText('addUser.register_button'); - fireEvent.click(submitButton); - + fillFormAndSubmit('username', '1234567', '1234567'); expect(screen.getByText('addUser.error_password_minimum_length')).toBeInTheDocument(); }); test('displays error message when passwords too long', () => { - render( - - - - ); - - const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'username' } }); - - const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '01234567890123456789012345678901234567890123456789012345678901234' } }); - - const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '01234567890123456789012345678901234567890123456789012345678901234' } }); - - const submitButton = screen.getByText('addUser.register_button'); - fireEvent.click(submitButton); - + fillFormAndSubmit('username', '01234567890123456789012345678901234567890123456789012345678901234', '01234567890123456789012345678901234567890123456789012345678901234'); expect(screen.getByText('addUser.error_password_maximum_length')).toBeInTheDocument(); }); test('displays error message when spaces in username', () => { - render( - - - - ); - - const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'user name' } }); - - const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '12345678' } }); - - const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '12345678' } }); - - const submitButton = screen.getByText('addUser.register_button'); - fireEvent.click(submitButton); - + fillFormAndSubmit('user name', '12345678', '12345678'); expect(screen.getByText('addUser.error_username_spaces')).toBeInTheDocument(); }); test('displays error message when username is already in use', async () => { - - // Mock axios post method to simulate response for username already in use axios.post.mockRejectedValue({ response: { data: { error: 'Username already in use' } } }); - - render( - - - - ); - - const usernameInput = screen.getByPlaceholderText('addUser.username_placeholder'); - fireEvent.change(usernameInput, { target: { value: 'existing_user' } }); - - const passwordInput = screen.getByPlaceholderText('addUser.password_placeholder'); - fireEvent.change(passwordInput, { target: { value: '12345678' } }); - - const repeatPasswordInput = screen.getByPlaceholderText('addUser.repeat_password_placeholder'); - fireEvent.change(repeatPasswordInput, { target: { value: '12345678' } }); - - const submitButton = screen.getByText('addUser.register_button'); - fireEvent.click(submitButton); - - // Wait for the asynchronous axios call to be completed + fillFormAndSubmit('existing_user', '12345678', '12345678'); await waitFor(() => { expect(screen.getByText('addUser.error_username_in_use')).toBeInTheDocument(); }); - - // Ensure axios.post is called with the correct data expect(axios.post).toHaveBeenCalledWith(expect.any(String), { username: 'existing_user', password: '12345678' }); - }); }); From aeda7db304b5e4a4e74cf4bfc84f9f7c2f3e7bf0 Mon Sep 17 00:00:00 2001 From: sinne10 Date: Tue, 16 Apr 2024 17:21:33 +0200 Subject: [PATCH 17/35] Refactor --- .../loginAndRegistration/AddUser.test.js | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/webapp/src/components/loginAndRegistration/AddUser.test.js b/webapp/src/components/loginAndRegistration/AddUser.test.js index ca05c287..70493840 100644 --- a/webapp/src/components/loginAndRegistration/AddUser.test.js +++ b/webapp/src/components/loginAndRegistration/AddUser.test.js @@ -47,32 +47,23 @@ describe('', () => { fireEvent.click(submitButton); }; - test('displays error message when passwords do not match', () => { + test('displays correct error messages', async () => { + //Passwords do not match fillFormAndSubmit('username', '12345678', '123456789'); expect(screen.getByText('addUser.error_passwords_no_match')).toBeInTheDocument(); - }); - - test('displays error message when spaces in password', () => { + //Password with spaces fillFormAndSubmit('username', '1234 5678', '1234 5678'); expect(screen.getByText('addUser.error_password_spaces')).toBeInTheDocument(); - }); - - test('displays error message when passwords too short', () => { + //Password too short fillFormAndSubmit('username', '1234567', '1234567'); expect(screen.getByText('addUser.error_password_minimum_length')).toBeInTheDocument(); - }); - - test('displays error message when passwords too long', () => { + //Password too long fillFormAndSubmit('username', '01234567890123456789012345678901234567890123456789012345678901234', '01234567890123456789012345678901234567890123456789012345678901234'); expect(screen.getByText('addUser.error_password_maximum_length')).toBeInTheDocument(); - }); - - test('displays error message when spaces in username', () => { + //Username with spaces fillFormAndSubmit('user name', '12345678', '12345678'); expect(screen.getByText('addUser.error_username_spaces')).toBeInTheDocument(); - }); - - test('displays error message when username is already in use', async () => { + //Username in use axios.post.mockRejectedValue({ response: { data: { error: 'Username already in use' } } }); fillFormAndSubmit('existing_user', '12345678', '12345678'); await waitFor(() => { From 2f0b3593bc60b60406740fa217ad1a2afa362941 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Tue, 16 Apr 2024 17:39:57 +0200 Subject: [PATCH 18/35] Fixed a wrong copy-paste, bad comunication, my fault --- webapp/src/components/questionView/QuestionGenerator.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/webapp/src/components/questionView/QuestionGenerator.js b/webapp/src/components/questionView/QuestionGenerator.js index 731d055f..f471d69e 100644 --- a/webapp/src/components/questionView/QuestionGenerator.js +++ b/webapp/src/components/questionView/QuestionGenerator.js @@ -8,7 +8,7 @@ class QuestionGenerator{ } - async generateQuestions(lang, type, amount) { + async generateQuestions(lang) { // try { // //const response = await fetch(this.apiUrl); @@ -38,12 +38,7 @@ class QuestionGenerator{ try { - let response; - if(type==="COMPETITIVE"){ - response = await axios.get(this.apiUrl + '/' + lang); - }else{ - response = await axios.get(this.apiUrl + '/' + lang + '/' +amount + '/' + type); - } + const response = await axios.get(this.apiUrl + '/' + lang); const receivedQuestions = await response.data; let i = 0; var questions = []; From 85aab9e04f78ee23e167c9209339f88f7ed24c2d Mon Sep 17 00:00:00 2001 From: lauratbg Date: Tue, 16 Apr 2024 17:54:36 +0200 Subject: [PATCH 19/35] solved something? --- webapp/package-lock.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 076761a2..1def103f 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -1833,7 +1833,6 @@ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1907,6 +1906,9 @@ "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "version_number_here" + }, "engines": { "node": ">=6.9.0" }, From 6add3864a4e08ef73e568c90a66bd9945be8fbba Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Tue, 16 Apr 2024 21:57:00 +0200 Subject: [PATCH 20/35] Re runned npm install cause last commit got a corrupted version --- webapp/package-lock.json | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 1def103f..f4606c52 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -667,17 +667,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1906,9 +1895,6 @@ "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, - "devDependencies": { - "@babel/plugin-proposal-private-property-in-object": "version_number_here" - }, "engines": { "node": ">=6.9.0" }, From 33d78075e4005912b481318a63d80a7c841d4c35 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Tue, 16 Apr 2024 22:22:36 +0200 Subject: [PATCH 21/35] Deleted the package-lock.json and did a new npm install --- webapp/package-lock.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index f4606c52..076761a2 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -667,6 +667,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1822,6 +1833,7 @@ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", From 99b657cb7be41f92ae614a9d87aee1ad7a57dfec Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 11:57:32 +0200 Subject: [PATCH 22/35] Removing imports not used, solved something about "voice" --- package-lock.json | 123 ++++++++++++++++++ package.json | 1 + webapp/package-lock.json | 18 ++- webapp/package.json | 1 + webapp/src/components/Instructions.js | 1 - .../components/questionView/QuestionView.js | 2 +- 6 files changed, 138 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index bc118554..0df16a38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "react-router-dom": "^6.22.1" }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "jest": "^29.7.0" } }, @@ -131,6 +132,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", @@ -147,6 +160,29 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", @@ -181,6 +217,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.24.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", @@ -212,6 +260,18 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-plugin-utils": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", @@ -221,6 +281,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", @@ -233,6 +310,18 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", @@ -384,6 +473,25 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -531,6 +639,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", diff --git a/package.json b/package.json index 399e7971..48ad91a2 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "react-router-dom": "^6.22.1" }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "jest": "^29.7.0" } } diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 1def103f..0b64dc9d 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -31,6 +31,7 @@ "web-vitals": "^3.5.1" }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "axios-mock-adapter": "^1.22.0", "expect-puppeteer": "^9.0.2", "jest": "^29.3.1", @@ -668,9 +669,17 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, "engines": { "node": ">=6.9.0" }, @@ -1906,9 +1915,6 @@ "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, - "devDependencies": { - "@babel/plugin-proposal-private-property-in-object": "version_number_here" - }, "engines": { "node": ">=6.9.0" }, diff --git a/webapp/package.json b/webapp/package.json index 2ea16917..53a5c05f 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -52,6 +52,7 @@ ] }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "axios-mock-adapter": "^1.22.0", "expect-puppeteer": "^9.0.2", "jest": "^29.3.1", diff --git a/webapp/src/components/Instructions.js b/webapp/src/components/Instructions.js index 7841aa06..83ec9bf8 100644 --- a/webapp/src/components/Instructions.js +++ b/webapp/src/components/Instructions.js @@ -1,7 +1,6 @@ import React from 'react'; import '../custom.css'; import {useTranslation} from "react-i18next"; -import { Link } from "react-router-dom"; diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index b82cf59d..d30732d8 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -136,7 +136,7 @@ function QuestionComponent({questions, numQuestion, handleClick, t, points, audi getVoicesForLanguage(language) .then(voices => { const voice = voices.find(voice => voice.lang === language); - // speech.voice = voice || voices[0]; // If there is no voice for the lang, choose the first one + speech.voice = voice || voices[0]; // If there is no voice for the lang, choose the first one window.speechSynthesis.speak(speech); }) .catch(error => { From acdc9290d165f200a2c35030643ded77c16eff55 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 12:00:37 +0200 Subject: [PATCH 23/35] Maybe was corrupted agai, trying to solve --- webapp/package-lock.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 1ff886db..d4d75e5c 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -1923,6 +1923,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", From 18f10ff406cde6411464c4f55bdd1ae3cc6d230b Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 12:22:59 +0200 Subject: [PATCH 24/35] This is a simple test --- .../questionView/QuestionView.test.js | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index 25392c62..32657ef6 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -10,6 +10,19 @@ import MockAdapter from 'axios-mock-adapter'; import {configure} from '@testing-library/dom'; +// Mock the SpeechSynthesisUtterance and window.speechSynthesis APIs +global.SpeechSynthesisUtterance = jest.fn(() => ({ + lang: '', + text: '', + addEventListener: jest.fn(), + dispatchEvent: jest.fn(), +})); + +global.window.speechSynthesis = { + getVoices: jest.fn(() => []), + speak: jest.fn(), +}; + configure({ testIdAttribute: 'data-value', }); @@ -17,7 +30,6 @@ configure({ const mockAxios = new MockAdapter(axios); - i18en.use(initReactI18next).init({ resources: {}, lng: 'en', @@ -40,6 +52,26 @@ describe('Question View component', () => { // Wait for questions to load }); + + // Test for sound functionality + it('speaks the question when the speaker button is clicked', async () => { + const questionText = "What is the population of Oviedo?"; + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + [{question: questionText, + answers: ["225089","272357","267855","231841"]}]); + + await act(async () => { + render(); + }); + + fireEvent.click(screen.getByText('🔊')); + + // Check if the SpeechSynthesisUtterance is called with the correct text + expect(global.SpeechSynthesisUtterance).toHaveBeenCalledWith(); + + + }); + it('shows a question and answers',async () => { mockAxios.onGet('http://localhost:8000/questions/en').reply(200, From 06c1aa4ac2f96208e264519ff6151e5e6ee34dc2 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 12:50:32 +0200 Subject: [PATCH 25/35] Incorrect and correct sound tests --- .../questionView/QuestionView.test.js | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index 32657ef6..a1f33aa5 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -140,5 +140,90 @@ describe('Question View component', () => { const timerElement = screen.getByText(new RegExp(`(\\d+) ${i18en.t('questionView.seconds')}`)); expect(timerElement).toBeInTheDocument(); // Verificar que el temporizador esté presente en el DOM }); + + it('shows colors to reveal false answer', async () => { + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + [{question: "What is the population of Oviedo?", + answers: ["225089","272357","267855","231841"]}]); + await act(async () =>{ + await render(); + + }) + await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); + + fireEvent.click(screen.getAllByTestId('false')[0]); + // Esperar un segundo antes de continuar + await waitFor(() => { + // Clic en un botón de respuesta con data-value=true + const incorrectAnswerButton = screen.getAllByTestId('false')[0]; + // Verificar que el botón tenga el color esperado + expect(incorrectAnswerButton).toHaveStyle('background-color: #FF6666'); + + }, { timeout: 1000 }); // Esperar 1 segundo + }); + + it('the tik-tak sounds', async () => { + jest.spyOn(global, 'Audio').mockImplementation(() => ({ + play: jest.fn(), + pause: jest.fn(), + loop: true + })); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + [{question: "What is the population of Oviedo?", + answers: ["225089","272357","267855","231841"]}]); + await act(async () =>{ + await render(); + + }) + await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); + expect(global.Audio).toHaveBeenCalledWith('/tictac.mp3'); + }); + + it('the correct sound sounds', async () => { + jest.spyOn(global, 'Audio').mockImplementation(() => ({ + play: jest.fn(), + pause: jest.fn(), + loop: true + })); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + [{question: "What is the population of Oviedo?", + answers: ["225089","272357","267855","231841"]}]); + await act(async () =>{ + await render(); + + }) + await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); + + fireEvent.click(screen.getByTestId('true'));//clicamos en la respuesta correcta + + expect(global.Audio).toHaveBeenCalledWith('/correct.mp3'); + + }); + + it('the incorrect sound sounds', async () => { + jest.spyOn(global, 'Audio').mockImplementation(() => ({ + play: jest.fn(), + pause: jest.fn(), + loop: true + })); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + [{question: "What is the population of Oviedo?", + answers: ["225089","272357","267855","231841"]}]); + await act(async () =>{ + await render(); + + }) + await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); + + + fireEvent.click(screen.getAllByTestId('false')[1]);//clicamos en la respuesta incorrecta + + expect(global.Audio).toHaveBeenCalledWith('/incorrect.mp3'); + + }); + + + + }); \ No newline at end of file From dcb987109663307be2aa3d5a6a77358072ebc6df Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 12:55:37 +0200 Subject: [PATCH 26/35] less duplication --- .../questionView/QuestionView.test.js | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index a1f33aa5..b2fe381f 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -10,6 +10,15 @@ import MockAdapter from 'axios-mock-adapter'; import {configure} from '@testing-library/dom'; +// Función para configurar el mock de global.Audio +const setupAudioMock = () => { + jest.spyOn(global, 'Audio').mockImplementation(() => ({ + play: jest.fn(), + pause: jest.fn(), + loop: true + })); +}; + // Mock the SpeechSynthesisUtterance and window.speechSynthesis APIs global.SpeechSynthesisUtterance = jest.fn(() => ({ lang: '', @@ -163,11 +172,8 @@ describe('Question View component', () => { }); it('the tik-tak sounds', async () => { - jest.spyOn(global, 'Audio').mockImplementation(() => ({ - play: jest.fn(), - pause: jest.fn(), - loop: true - })); + setupAudioMock(); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); @@ -180,11 +186,8 @@ describe('Question View component', () => { }); it('the correct sound sounds', async () => { - jest.spyOn(global, 'Audio').mockImplementation(() => ({ - play: jest.fn(), - pause: jest.fn(), - loop: true - })); + setupAudioMock(); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); @@ -201,11 +204,8 @@ describe('Question View component', () => { }); it('the incorrect sound sounds', async () => { - jest.spyOn(global, 'Audio').mockImplementation(() => ({ - play: jest.fn(), - pause: jest.fn(), - loop: true - })); + setupAudioMock(); + mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); From 8e4d48a1f2150bf325c5344bd2a45582420cdf7a Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 13:03:53 +0200 Subject: [PATCH 27/35] Less duplication again --- .../questionView/QuestionView.test.js | 97 +++---------------- 1 file changed, 15 insertions(+), 82 deletions(-) diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index b2fe381f..330a6340 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -101,7 +101,8 @@ describe('Question View component', () => { expect(screen.getByText('231841')).toBeInTheDocument() }); - it('shows colors to reveal correct answer', async () => { + it('shows colors to reveal correct answer and it sounds', async () => { + setupAudioMock(); mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); @@ -111,6 +112,8 @@ describe('Question View component', () => { }) await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); fireEvent.click(screen.getByTestId('true'));//clicamos en la respuesta correcta + expect(global.Audio).toHaveBeenCalledWith('/correct.mp3'); + // Esperar un segundo antes de continuar await waitFor(() => { // Clic en un botón de respuesta con data-value=true @@ -119,7 +122,8 @@ describe('Question View component', () => { expect(correctAnswerButton).toHaveStyle('background-color: #6EF26E'); }, { timeout: 1000 }); // Esperar 1 segundo }); - it('shows colors to reveal false answer', async () => { + it('shows colors to reveal false answer and it sounds', async () => { + setupAudioMock() mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); @@ -128,52 +132,19 @@ describe('Question View component', () => { }) await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); - fireEvent.click(screen.getAllByTestId('false')[0]); - // Esperar un segundo antes de continuar - await waitFor(() => { - // Clic en un botón de respuesta con data-value=true - const incorrectAnswerButton = screen.getAllByTestId('false')[0]; - // Verificar que el botón tenga el color esperado - expect(incorrectAnswerButton).toHaveStyle('background-color: #FF6666'); - }, { timeout: 1000 }); // Esperar 1 segundo - }); - it('shows timer', async () => { - mockAxios.onGet('http://localhost:8000/questions/en').reply(200, - [{question: "What is the population of Oviedo?", - answers: ["225089","272357","267855","231841"]}]); - await act(async () =>{ - await render(); - - }) - await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); - const timerElement = screen.getByText(new RegExp(`(\\d+) ${i18en.t('questionView.seconds')}`)); - expect(timerElement).toBeInTheDocument(); // Verificar que el temporizador esté presente en el DOM - }); - - it('shows colors to reveal false answer', async () => { - mockAxios.onGet('http://localhost:8000/questions/en').reply(200, - [{question: "What is the population of Oviedo?", - answers: ["225089","272357","267855","231841"]}]); - await act(async () =>{ - await render(); - - }) - await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); - - fireEvent.click(screen.getAllByTestId('false')[0]); + fireEvent.click(screen.getAllByTestId('false')[1]);//clicamos en la respuesta incorrecta + expect(global.Audio).toHaveBeenCalledWith('/incorrect.mp3'); // Esperar un segundo antes de continuar await waitFor(() => { // Clic en un botón de respuesta con data-value=true - const incorrectAnswerButton = screen.getAllByTestId('false')[0]; + const incorrectAnswerButton = screen.getAllByTestId('false')[1]; // Verificar que el botón tenga el color esperado expect(incorrectAnswerButton).toHaveStyle('background-color: #FF6666'); - }, { timeout: 1000 }); // Esperar 1 segundo }); - - it('the tik-tak sounds', async () => { - setupAudioMock(); - + + it('shows timer and tiktak sound', async () => { + setupAudioMock() mockAxios.onGet('http://localhost:8000/questions/en').reply(200, [{question: "What is the population of Oviedo?", answers: ["225089","272357","267855","231841"]}]); @@ -183,47 +154,9 @@ describe('Question View component', () => { }) await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); expect(global.Audio).toHaveBeenCalledWith('/tictac.mp3'); - }); - - it('the correct sound sounds', async () => { - setupAudioMock(); - - mockAxios.onGet('http://localhost:8000/questions/en').reply(200, - [{question: "What is the population of Oviedo?", - answers: ["225089","272357","267855","231841"]}]); - await act(async () =>{ - await render(); - - }) - await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); - - fireEvent.click(screen.getByTestId('true'));//clicamos en la respuesta correcta - - expect(global.Audio).toHaveBeenCalledWith('/correct.mp3'); - - }); - - it('the incorrect sound sounds', async () => { - setupAudioMock(); - - mockAxios.onGet('http://localhost:8000/questions/en').reply(200, - [{question: "What is the population of Oviedo?", - answers: ["225089","272357","267855","231841"]}]); - await act(async () =>{ - await render(); - - }) - await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); - - fireEvent.click(screen.getAllByTestId('false')[1]);//clicamos en la respuesta incorrecta - - expect(global.Audio).toHaveBeenCalledWith('/incorrect.mp3'); - - }); - - - - + const timerElement = screen.getByText(new RegExp(`(\\d+) ${i18en.t('questionView.seconds')}`)); + expect(timerElement).toBeInTheDocument(); // Verificar que el temporizador esté presente en el DOM + }); }); \ No newline at end of file From 2248399f85d5ecb01cc9232938d1df4bccb1128b Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 13:21:51 +0200 Subject: [PATCH 28/35] continue trying to improve the % --- webapp/src/components/questionView/QuestionGenerator.js | 2 +- webapp/src/components/questionView/QuestionView.js | 4 ++-- webapp/src/components/questionView/QuestionView.test.js | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/webapp/src/components/questionView/QuestionGenerator.js b/webapp/src/components/questionView/QuestionGenerator.js index f471d69e..32facf1a 100644 --- a/webapp/src/components/questionView/QuestionGenerator.js +++ b/webapp/src/components/questionView/QuestionGenerator.js @@ -15,7 +15,7 @@ class QuestionGenerator{ // //const receivedQuestions = await response.json(); // //Mockup - // console.log("type: "+type+" amount: "+amount) + // // console.log("type: "+type+" amount: "+amount) // const receivedQuestions = JSON.parse('{"0":{"question":"¿Cuál es la población de Oviedo?","answers":["225089","191325","220587","121548"]},'+ // '"1":{"question":"¿Which is the population of Gijon?","answers":["275274","159658","233982","305554"]},'+ // '"2":{"question":"¿Cuál es la población de Avilés?","answers":["82568","115595","41284","122200"]},'+ diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index d30732d8..e4412a43 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -135,8 +135,8 @@ function QuestionComponent({questions, numQuestion, handleClick, t, points, audi console.log(language); getVoicesForLanguage(language) .then(voices => { - const voice = voices.find(voice => voice.lang === language); - speech.voice = voice || voices[0]; // If there is no voice for the lang, choose the first one + // const voice = voices.find(voice => voice.lang === language); + // speech.voice = voice || voices[0]; // If there is no voice for the lang, choose the first one window.speechSynthesis.speak(speech); }) .catch(error => { diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index 330a6340..f747fe35 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -159,4 +159,6 @@ describe('Question View component', () => { expect(timerElement).toBeInTheDocument(); // Verificar que el temporizador esté presente en el DOM }); + + }); \ No newline at end of file From 2ec2f2511cf83a2bc9f4aeabe3841d4213a1709b Mon Sep 17 00:00:00 2001 From: lauratbg Date: Wed, 17 Apr 2024 13:42:44 +0200 Subject: [PATCH 29/35] Removing things --- .../components/questionView/QuestionView.js | 5 +---- .../questionView/QuestionView.test.js | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/webapp/src/components/questionView/QuestionView.js b/webapp/src/components/questionView/QuestionView.js index e4412a43..ca598e11 100644 --- a/webapp/src/components/questionView/QuestionView.js +++ b/webapp/src/components/questionView/QuestionView.js @@ -155,11 +155,8 @@ function QuestionComponent({questions, numQuestion, handleClick, t, points, audi speech.addEventListener("end", () => { const voices = window.speechSynthesis.getVoices(); - if (voices.length > 0) { + if (voices.length > 0) resolve(voices); - } else { - reject("No se encontraron voces disponibles."); - } }); window.speechSynthesis.speak(speech); diff --git a/webapp/src/components/questionView/QuestionView.test.js b/webapp/src/components/questionView/QuestionView.test.js index f747fe35..a3a34531 100644 --- a/webapp/src/components/questionView/QuestionView.test.js +++ b/webapp/src/components/questionView/QuestionView.test.js @@ -37,6 +37,7 @@ configure({ }); const mockAxios = new MockAdapter(axios); +jest.setTimeout(10000); i18en.use(initReactI18next).init({ @@ -160,5 +161,25 @@ describe('Question View component', () => { }); + // it('renders end message when countdown completes', async() => { + + // setupAudioMock() + // mockAxios.onGet('http://localhost:8000/questions/en').reply(200, + // [{question: "What is the population of Oviedo?", + // answers: ["225089","272357","267855","231841"]}]); + // await act(async () =>{ + // await render(); + + // }) + // await waitFor(() => expect(screen.getByText('What is the population of Oviedo?')).toBeInTheDocument()); + + // const timerElement = screen.getByText(new RegExp(`(\\d+) ${i18en.t('questionView.seconds')}`)); + // expect(timerElement).toBeInTheDocument(); // Verificar que el temporizador esté presente en el DOM + + + // await waitFor(() => { + // expect(screen.getByText("Time's up!")).toBeInTheDocument(); + // }, { timeout: 9800 }); // Esperar 10 segundos + // }); }); \ No newline at end of file From 1664dd528cb9a9e4327daeb8d482a8459c825004 Mon Sep 17 00:00:00 2001 From: ErdemYabaci Date: Thu, 18 Apr 2024 10:59:08 +0200 Subject: [PATCH 30/35] changing the ip --- gatewayservice/openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gatewayservice/openapi.yaml b/gatewayservice/openapi.yaml index 7129380e..47615d2a 100644 --- a/gatewayservice/openapi.yaml +++ b/gatewayservice/openapi.yaml @@ -9,7 +9,7 @@ info: servers: - url: http://localhost:8000 description: Development server - - url: http://172.203.216.60:8000 + - url: http://wiqen1b.serveminecraft.net:8000 description: Production server paths: /adduser: From 47cb8df1bc019de9a68c682f99057928dc3e5514 Mon Sep 17 00:00:00 2001 From: Mister-Mario Date: Thu, 18 Apr 2024 11:36:38 +0200 Subject: [PATCH 31/35] Added prod profile to prometheus and grafana --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 26949792..89ffbe46 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -113,7 +113,7 @@ prometheus: image: prom/prometheus container_name: prometheus-${teamname:-defaultASW} - profiles: ["dev"] + profiles: ["dev", "prod"] networks: - mynetwork volumes: @@ -127,7 +127,7 @@ grafana: image: grafana/grafana container_name: grafana-${teamname:-defaultASW} - profiles: ["dev"] + profiles: ["dev", "prod"] networks: - mynetwork volumes: From 1a3ef8eb4f7be03cb29c52f65f1b30b1cc74b8ec Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 18 Apr 2024 16:23:46 +0200 Subject: [PATCH 32/35] Error page when a url does not exist --- webapp/public/gatotriste5.jpg | Bin 0 -> 50450 bytes webapp/src/App.js | 7 +++++-- webapp/src/components/fragments/ErrorPage.js | 18 ++++++++++++++++++ webapp/src/custom.css | 11 +++++++++++ webapp/src/translations/en/global.json | 6 +++++- webapp/src/translations/es/global.json | 7 ++++++- webapp/src/translations/tk/global.json | 7 ++++++- 7 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 webapp/public/gatotriste5.jpg create mode 100644 webapp/src/components/fragments/ErrorPage.js diff --git a/webapp/public/gatotriste5.jpg b/webapp/public/gatotriste5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebb0a9e2b5719fe287e7fd3834505105ded627db GIT binary patch literal 50450 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
OU?^1hNWHR3Rc~u_yr8 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 literal 0 HcmV?d00001 diff --git a/webapp/src/App.js b/webapp/src/App.js index 5eefcf70..70328a16 100644 --- a/webapp/src/App.js +++ b/webapp/src/App.js @@ -2,6 +2,7 @@ import React from 'react'; import QuestionView from './components/questionView/QuestionView'; import GameMenu from './components/GameMenu/GameMenu'; import Navbar from './components/fragments/NavBar'; +import ErrorPage from './components/fragments/ErrorPage'; import Home from './components/Home/Home'; import Login from './components/loginAndRegistration/Login'; import AddUser from './components/loginAndRegistration/AddUser'; @@ -14,7 +15,7 @@ import { UserContextProvider } from './components/loginAndRegistration/UserConte function App() { return ( - +
@@ -28,6 +29,8 @@ function App() { } /> } /> } /> + {/* Esta ruta atrapará cualquier ruta no definida */} + } />
@@ -36,4 +39,4 @@ function App() { ); } -export default App; +export default App; \ No newline at end of file diff --git a/webapp/src/components/fragments/ErrorPage.js b/webapp/src/components/fragments/ErrorPage.js new file mode 100644 index 00000000..402685c3 --- /dev/null +++ b/webapp/src/components/fragments/ErrorPage.js @@ -0,0 +1,18 @@ +import React from 'react'; +import {useTranslation} from "react-i18next"; + +const ErrorPage = () => { + const[t] = useTranslation("global"); + + + return ( +
+

{t("error.error")}

+

{t("error.sorry")}

+ App logo + +
+ ); +} + +export default ErrorPage; diff --git a/webapp/src/custom.css b/webapp/src/custom.css index 119eb48d..598beec9 100644 --- a/webapp/src/custom.css +++ b/webapp/src/custom.css @@ -4,6 +4,17 @@ width: 100%; } +/*---------------------------Error---------------------------*/ +.error { + color: red; + font-size: 28px; + font-weight: bold; +} + +.sorry { + font-size: 18px; +} + /*---------------------------Navbar---------------------------*/ .navbar-container { display: flex; diff --git a/webapp/src/translations/en/global.json b/webapp/src/translations/en/global.json index 8f79adda..52d76ec0 100644 --- a/webapp/src/translations/en/global.json +++ b/webapp/src/translations/en/global.json @@ -69,7 +69,11 @@ "game":"Game", "points":"points", "no_games_played":"No games played yet" - } + }, + "error":{ + "error":"Error", + "sorry":"We're sorry, this page does not exist. Don't be angry, I'm just a little cat." + } } diff --git a/webapp/src/translations/es/global.json b/webapp/src/translations/es/global.json index 410eebfa..ff6519e7 100644 --- a/webapp/src/translations/es/global.json +++ b/webapp/src/translations/es/global.json @@ -72,7 +72,12 @@ "game":"Partida", "points":"puntos", "no_games_played":"No has jugado todavía" - } + + }, + "error":{ + "error":"Error", + "sorry":"Lo sentimos, esta página no existe. No te enfades, solo soy un gatito." + } } diff --git a/webapp/src/translations/tk/global.json b/webapp/src/translations/tk/global.json index 5a17d359..2fd2da43 100644 --- a/webapp/src/translations/tk/global.json +++ b/webapp/src/translations/tk/global.json @@ -69,6 +69,11 @@ "game": "Oyun", "points": "puanlar", "no_games_played": "Henüz oyun oynanmadı" - } + }, + + "error":{ + "error":"Hata", + "sorry":"Üzgünüz, bu sayfa mevcut değil. Kızma, ben sadece küçük bir kedicik." + } } \ No newline at end of file From 2eb6f45353eed9a6f17bc535d2213cbfc87f647d Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 18 Apr 2024 16:39:27 +0200 Subject: [PATCH 33/35] Test for error page done --- webapp/src/App.js | 1 - webapp/src/components/fragments/ErrorPage.js | 4 ++-- .../components/fragments/ErrorPage.test.js | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 webapp/src/components/fragments/ErrorPage.test.js diff --git a/webapp/src/App.js b/webapp/src/App.js index 70328a16..f65fa0ca 100644 --- a/webapp/src/App.js +++ b/webapp/src/App.js @@ -29,7 +29,6 @@ function App() { } /> } /> } /> - {/* Esta ruta atrapará cualquier ruta no definida */} } /> diff --git a/webapp/src/components/fragments/ErrorPage.js b/webapp/src/components/fragments/ErrorPage.js index 402685c3..f353ac24 100644 --- a/webapp/src/components/fragments/ErrorPage.js +++ b/webapp/src/components/fragments/ErrorPage.js @@ -2,14 +2,14 @@ import React from 'react'; import {useTranslation} from "react-i18next"; const ErrorPage = () => { - const[t] = useTranslation("global"); + const{t}= useTranslation("global"); return (

{t("error.error")}

{t("error.sorry")}

- App logo + Cat crying
); diff --git a/webapp/src/components/fragments/ErrorPage.test.js b/webapp/src/components/fragments/ErrorPage.test.js new file mode 100644 index 00000000..0eeb97d3 --- /dev/null +++ b/webapp/src/components/fragments/ErrorPage.test.js @@ -0,0 +1,23 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { BrowserRouter as Router } from 'react-router-dom'; +import ErrorPage from './ErrorPage'; + +// Mocking useTranslation hook +jest.mock('react-i18next', () => ({ + useTranslation: () => ({ t: key => key }), +})); + +describe('Error handling', () => { + test('renders error page for non-existent route', () => { + render( + + + + ); + + expect(screen.getByText('error.error')).toBeInTheDocument(); + expect(screen.getByText("error.sorry")).toBeInTheDocument(); + expect(screen.getByAltText('Cat crying')).toBeInTheDocument(); + }); +}); From 252c9eae6335e4da072369f9482bd7c201d74582 Mon Sep 17 00:00:00 2001 From: lauratbg Date: Thu, 18 Apr 2024 18:05:32 +0200 Subject: [PATCH 34/35] Solved little bug --- webapp/src/components/fragments/ErrorPage.js | 3 +-- webapp/src/custom.css | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/webapp/src/components/fragments/ErrorPage.js b/webapp/src/components/fragments/ErrorPage.js index f353ac24..442be972 100644 --- a/webapp/src/components/fragments/ErrorPage.js +++ b/webapp/src/components/fragments/ErrorPage.js @@ -6,11 +6,10 @@ const ErrorPage = () => { return ( -
+

{t("error.error")}

{t("error.sorry")}

Cat crying -
); } diff --git a/webapp/src/custom.css b/webapp/src/custom.css index 598beec9..d0c542a6 100644 --- a/webapp/src/custom.css +++ b/webapp/src/custom.css @@ -15,6 +15,14 @@ font-size: 18px; } + +.error-body { + overflow: hidden; + height: 100vh; +} + + + /*---------------------------Navbar---------------------------*/ .navbar-container { display: flex; From 9279c8d576be3796a8ff1fa7f52b0787d4cda865 Mon Sep 17 00:00:00 2001 From: Mister-Mario <102600139+Mister-Mario@users.noreply.github.com> Date: Thu, 18 Apr 2024 19:03:36 +0200 Subject: [PATCH 35/35] Update README.md Changed the url of the app --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5575e13d..3d262ac9 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ docker compose --profile dev up --build ``` ### Deployed in Cloud -In order to view the application deploy in the cloud click [here](http://172.203.216.60:3000) +In order to view the application deploy in the cloud click [here](http://wiqen1b.serveminecraft.net:3000) ### Members - Lucía Ruiz Núñez uo289267@uniovi.es