From 380cde8ada76606ba3b37228cf40379fa0ee1d62 Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Wed, 12 Apr 2023 12:12:56 +0200 Subject: [PATCH 01/27] first changhes, welcome page created --- .eslintrc.json | 1 + package-lock.json | 141 +++++++++++++++++++++++---------- package.json | 5 +- src/App.js | 9 ++- src/components/AnswerButton.js | 0 src/components/NextButton.js | 0 src/components/ProgressBar.js | 0 src/pages/Question.js | 0 src/pages/Summary.js | 0 src/pages/WelcomePage.js | 26 ++++++ src/pages/question.css | 0 src/pages/summary.css | 0 src/pages/welcomepage.css | 5 ++ 13 files changed, 144 insertions(+), 43 deletions(-) create mode 100644 src/components/AnswerButton.js create mode 100644 src/components/NextButton.js create mode 100644 src/components/ProgressBar.js create mode 100644 src/pages/Question.js create mode 100644 src/pages/Summary.js create mode 100644 src/pages/WelcomePage.js create mode 100644 src/pages/question.css create mode 100644 src/pages/summary.css create mode 100644 src/pages/welcomepage.css diff --git a/.eslintrc.json b/.eslintrc.json index c9c0675c..90119e00 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -26,6 +26,7 @@ "react-hooks" ], "rules": { + "linebreak-style": "off", "react/function-component-definition": [ 2, { diff --git a/package-lock.json b/package-lock.json index 8bd1eecb..59e14584 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "dependencies": { "@babel/eslint-parser": "^7.18.9", - "@reduxjs/toolkit": "^1.8.3", + "@reduxjs/toolkit": "^1.9.3", "eslint": "^8.21.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.26.0", @@ -18,7 +18,8 @@ "eslint-plugin-react-hooks": "^4.6.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": "^8.0.2", + "react-redux": "^8.0.5", + "react-router-dom": "^6.10.0", "react-scripts": "^5.0.1" }, "devDependencies": { @@ -3128,14 +3129,14 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.3.tgz", - "integrity": "sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz", + "integrity": "sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==", "dependencies": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" + "immer": "^9.0.16", + "redux": "^4.2.0", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.7" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18", @@ -3150,6 +3151,14 @@ } } }, + "node_modules/@remix-run/router": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz", + "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==", + "engines": { + "node": ">=14" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -8873,9 +8882,9 @@ } }, "node_modules/immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -14448,9 +14457,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-redux": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz", - "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -14499,6 +14508,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz", + "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==", + "dependencies": { + "@remix-run/router": "1.5.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz", + "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==", + "dependencies": { + "@remix-run/router": "1.5.0", + "react-router": "6.10.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -14655,9 +14694,9 @@ } }, "node_modules/redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "peerDependencies": { "redux": "^4" } @@ -14818,9 +14857,9 @@ "dev": true }, "node_modules/reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" }, "node_modules/resolve": { "version": "1.22.1", @@ -19654,16 +19693,21 @@ } }, "@reduxjs/toolkit": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.8.3.tgz", - "integrity": "sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.3.tgz", + "integrity": "sha512-GU2TNBQVofL09VGmuSioNPQIu6Ml0YLf4EJhgj0AvBadRlCGzUWet8372LjvO4fqKZF2vH1xU0htAa7BrK9pZg==", "requires": { - "immer": "^9.0.7", - "redux": "^4.1.2", - "redux-thunk": "^2.4.1", - "reselect": "^4.1.5" + "immer": "^9.0.16", + "redux": "^4.2.0", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.7" } }, + "@remix-run/router": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.5.0.tgz", + "integrity": "sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==" + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -23941,9 +23985,9 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==" + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" }, "import-fresh": { "version": "3.3.0", @@ -27880,9 +27924,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-redux": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz", - "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", + "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", "requires": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -27905,6 +27949,23 @@ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "dev": true }, + "react-router": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.10.0.tgz", + "integrity": "sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==", + "requires": { + "@remix-run/router": "1.5.0" + } + }, + "react-router-dom": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.10.0.tgz", + "integrity": "sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==", + "requires": { + "@remix-run/router": "1.5.0", + "react-router": "6.10.0" + } + }, "react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -28030,9 +28091,9 @@ } }, "redux-thunk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "requires": {} }, "regenerate": { @@ -28160,9 +28221,9 @@ "dev": true }, "reselect": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz", - "integrity": "sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==" + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" }, "resolve": { "version": "1.22.1", diff --git a/package.json b/package.json index 58da74eb..9b4d7349 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@babel/eslint-parser": "^7.18.9", - "@reduxjs/toolkit": "^1.8.3", + "@reduxjs/toolkit": "^1.9.3", "eslint": "^8.21.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.26.0", @@ -13,7 +13,8 @@ "eslint-plugin-react-hooks": "^4.6.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": "^8.0.2", + "react-redux": "^8.0.5", + "react-router-dom": "^6.10.0", "react-scripts": "^5.0.1" }, "scripts": { diff --git a/src/App.js b/src/App.js index 690bd373..1248ce8e 100644 --- a/src/App.js +++ b/src/App.js @@ -1,7 +1,9 @@ import React from 'react'; +import { BrowserRouter, Routes, Route } from 'react-router-dom'; import { Provider } from 'react-redux'; import { combineReducers, configureStore } from '@reduxjs/toolkit'; import { quiz } from 'reducers/quiz'; +import { WelcomePage } from 'pages/WelcomePage'; import { CurrentQuestion } from 'components/CurrentQuestion'; @@ -14,7 +16,12 @@ const store = configureStore({ reducer }); export const App = () => { return ( - + + + } /> + } /> + + ); } diff --git a/src/components/AnswerButton.js b/src/components/AnswerButton.js new file mode 100644 index 00000000..e69de29b diff --git a/src/components/NextButton.js b/src/components/NextButton.js new file mode 100644 index 00000000..e69de29b diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Question.js b/src/pages/Question.js new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Summary.js b/src/pages/Summary.js new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js new file mode 100644 index 00000000..36bf9c6a --- /dev/null +++ b/src/pages/WelcomePage.js @@ -0,0 +1,26 @@ +import React from 'react'; +import './welcomepage.css'; +import { useNavigate } from 'react-router-dom'; + +export const WelcomePage = () => { + const navigate = useNavigate(); + const goToQuiz = () => { + navigate('/quiz'); + } + return ( +
+
+

Welcome to the React knowledge tester

+

This is a simple quiz to test the knowledge of React

+
+ + +
+ ) +} \ No newline at end of file diff --git a/src/pages/question.css b/src/pages/question.css new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/summary.css b/src/pages/summary.css new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css new file mode 100644 index 00000000..c961a4f8 --- /dev/null +++ b/src/pages/welcomepage.css @@ -0,0 +1,5 @@ +.welcome-background { + background-color: rgb(185, 17, 45); + width: 100%; + height: 100%; +} \ No newline at end of file From 0cd31636f224ea42aadc3987ccb029a31a594041 Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Wed, 12 Apr 2023 12:27:53 +0200 Subject: [PATCH 02/27] summary page craeated --- src/pages/Summary.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/pages/Summary.js b/src/pages/Summary.js index e69de29b..4c852f0c 100644 --- a/src/pages/Summary.js +++ b/src/pages/Summary.js @@ -0,0 +1,10 @@ +import React from 'react'; + +export const SummaryPage = () => { + return ( +
+

Summary Page

+

import score, import button to restart, import some celebration

+
+ ) +} \ No newline at end of file From c82d049852f1bc0a7eea0f5b0808ae84cde12280 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:21:31 +0200 Subject: [PATCH 03/27] Update README.md --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index d1f22b80..c3342f28 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,25 @@ Describe how you approached to problem, and what tools and techniques you used t ## View it live Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. + +# Running Locally + +This is a short guide on how to run a Redux quiz project locally. + +## Prerequisites + +- [Node.js](https://nodejs.org/en/) installed on your machine +- A code editor like [VSCode](https://code.visualstudio.com/) or [Sublime Text](https://www.sublimetext.com/) + +## Installation + +1. Clone the repository or download the project files to your local machine. +2. Open a terminal and navigate to the project directory. +3. Run `npm install` to install all the project dependencies including `react-redux`, `@reduxjs/toolkit`, and `react-router-dom`. + +## Running the Project + +1. After the installation is complete, run `npm start` to start the development server. +2. Once the server is started, you can view the project in your web browser by navigating to [http://localhost:3000](http://localhost:3000). + +That's it! You now have the Redux project up and running on your local machine with all the required dependencies installed. From c120fe2767085b5625d11a718ea187ca0fba5913 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:33:58 +0200 Subject: [PATCH 04/27] adding questions on React to the quiz.js file (#1) --- src/reducers/quiz.js | 96 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 20 deletions(-) diff --git a/src/reducers/quiz.js b/src/reducers/quiz.js index a38bbf68..cf8d92d4 100644 --- a/src/reducers/quiz.js +++ b/src/reducers/quiz.js @@ -1,23 +1,76 @@ -import { createSlice } from '@reduxjs/toolkit' +/* eslint-disable comma-dangle */ +import { createSlice } from '@reduxjs/toolkit'; // Change these to your own questions! const questions = [ - { id: 1, questionText: 'Who set the Olympic record for the 100m dash in 2012?', options: ['Usain Bolt', 'Justin Gatlin', 'Tyson Gay', 'Asafa Powell'], correctAnswerIndex: 0 }, - { id: 2, questionText: 'When was Michael Phelps last named male World Swimmer of the Year?', options: ['2012', '2014', '2016', '2018'], correctAnswerIndex: 2 } -] + { + id: 1, + questionText: 'What is React?', + options: [ + 'A front-end JavaScript library', + 'A back-end programming language', + 'A mobile application development platform', + 'A database management system', + ], + correctAnswerIndex: 0, + }, + { + id: 2, + questionText: 'What is JSX?', + options: [ + 'A type of HTML used in React components', + 'A JavaScript extension for writing React code', + 'A CSS framework for styling React components', + 'A backend server for React applications', + ], + correctAnswerIndex: 1, + }, + { + id: 3, + questionText: 'What is the Virtual DOM?', + options: [ + 'A real-time representation of the HTML DOM used for performance optimization', + 'A way to manage multiple React components on a page', + 'A tool for debugging React applications', + 'A database used to store React component data', + ], + correctAnswerIndex: 0, + }, + { + id: 4, + questionText: 'What is a React component?', + options: [ + 'A small, reusable piece of code that can be rendered on a web page', + 'A programming language used to create React applications', + 'A database used to store React component data', + 'A tool for debugging React applications', + ], + correctAnswerIndex: 0, + }, + { + id: 5, + questionText: 'What is the purpose of state in React?', + options: [ + 'To store and manage data that can change over time', + 'To render components on the page', + 'To handle user events like clicks and keyboard inputs', + 'To control the overall layout of the web page', + ], + correctAnswerIndex: 0, + }, +]; const initialState = { questions, answers: [], currentQuestionIndex: 0, - quizOver: false -} + quizOver: false, +}; export const quiz = createSlice({ name: 'quiz', initialState, reducers: { - /** * Use this action when a user selects an answer to the question. * The answer will be stored in the `quiz.answers` state with the @@ -34,15 +87,19 @@ export const quiz = createSlice({ * and `answerIndex` keys. See the readme for more details. */ submitAnswer: (state, action) => { - const { questionId, answerIndex } = action.payload - const question = state.questions.find((q) => q.id === questionId) + const { questionId, answerIndex } = action.payload; + const question = state.questions.find((q) => q.id === questionId); if (!question) { - throw new Error('Could not find question! Check to make sure you are passing the question id correctly.') + throw new Error( + 'Could not find question! Check to make sure you are passing the question id correctly.' + ); } if (question.options[answerIndex] === undefined) { - throw new Error(`You passed answerIndex ${answerIndex}, but it is not in the possible answers array!`) + throw new Error( + `You passed answerIndex ${answerIndex}, but it is not in the possible answers array!` + ); } state.answers.push({ @@ -50,8 +107,8 @@ export const quiz = createSlice({ answerIndex, question, answer: question.options[answerIndex], - isCorrect: question.correctAnswerIndex === answerIndex - }) + isCorrect: question.correctAnswerIndex === answerIndex, + }); }, /** @@ -63,9 +120,9 @@ export const quiz = createSlice({ */ goToNextQuestion: (state) => { if (state.currentQuestionIndex + 1 === state.questions.length) { - state.quizOver = true + state.quizOver = true; } else { - state.currentQuestionIndex += 1 + state.currentQuestionIndex += 1; } }, @@ -77,8 +134,7 @@ export const quiz = createSlice({ * This action does not require a payload. */ restart: () => { - return initialState - } - - } -}) + return initialState; + }, + }, +}); From 2fee8bbc6d74c5ab5adc89739eca146c03ba030b Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Wed, 12 Apr 2023 20:12:25 +0200 Subject: [PATCH 05/27] answerbutton --- src/App.js | 2 ++ src/components/AnswerButton.js | 41 +++++++++++++++++++++++++++++++++ src/components/answerbutton.css | 29 +++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 src/components/answerbutton.css diff --git a/src/App.js b/src/App.js index 1248ce8e..6b0d9266 100644 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,7 @@ import { quiz } from 'reducers/quiz'; import { WelcomePage } from 'pages/WelcomePage'; import { CurrentQuestion } from 'components/CurrentQuestion'; +import { AnswerButton } from 'components/AnswerButton'; const reducer = combineReducers({ quiz: quiz.reducer @@ -20,6 +21,7 @@ export const App = () => { } /> } /> + } /> diff --git a/src/components/AnswerButton.js b/src/components/AnswerButton.js index e69de29b..861f4060 100644 --- a/src/components/AnswerButton.js +++ b/src/components/AnswerButton.js @@ -0,0 +1,41 @@ +/* eslint-disable max-len */ +/* eslint-disable no-nested-ternary */ +/* eslint-disable no-shadow */ +import React, { useState } from 'react'; +import { useSelector, useDispatch } from 'react-redux'; +import { quiz } from '../reducers/quiz'; + +export const AnswerButton = ({ index, option, setGoToNextButton }) => { + const dispatch = useDispatch(); + const [activeBtn, setActiveBtn] = useState(false); + + // Gets all question in the store + const question = useSelector((state) => state.quiz.questions[state.quiz.currentQuestionIndex]); + + // Gets the answers the user has given + const usersAnswer = useSelector((state) => state.quiz.answers[state.quiz.currentQuestionIndex]); + + const onAnswerSubmit = (questionId, answerIndex) => { + dispatch(quiz.actions.submitAnswer({ + questionId, answerIndex + })); + setActiveBtn(true); + setGoToNextButton(true); + } + + const correctAnswer = usersAnswer && index === question.correctAnswerIndex; + + return ( + /* If activeBtn is true, it checks whether the answer is correct or incorrect based on the correctAnswer variable. + If correctAnswer is true, it sets the class to 'correct', which applies the appropriate styles to indicate a correct answer. + If correctAnswer is false, it sets the class to 'wrong', which applies the appropriate styles to indicate an incorrect answer. + If activeBtn is false, it sets the class to 'default', which applies the default styles to the button. */ + + ); +}; diff --git a/src/components/answerbutton.css b/src/components/answerbutton.css new file mode 100644 index 00000000..50245f97 --- /dev/null +++ b/src/components/answerbutton.css @@ -0,0 +1,29 @@ +button { + background-color: #3498db; + color: #fff; + font-size: 16px; + padding: 12px 24px; + border-radius: 12px; + border: none; + cursor: pointer; +} + +button.default:hover { + background-color: #2980b9; +} + +button.default:active { + background-color: #21618c; +} + +button.correct { + background-color: #2ecc71; +} + +button.wrong { + background-color: #e74c3c; +} + +button.default { + background-color: #bdc3c7; +} \ No newline at end of file From c3b8c662c6363835bf2b0d41f8d8f129006af1a8 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Wed, 12 Apr 2023 21:56:23 +0200 Subject: [PATCH 06/27] added nextbutton and restartbutton --- src/components/CurrentQuestion.js | 4 +++- src/components/NextButton.js | 18 ++++++++++++++++++ src/components/ResetButton.js | 18 ++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/components/ResetButton.js diff --git a/src/components/CurrentQuestion.js b/src/components/CurrentQuestion.js index 36ee2224..82a273b0 100644 --- a/src/components/CurrentQuestion.js +++ b/src/components/CurrentQuestion.js @@ -1,5 +1,6 @@ import React from 'react' -import { useSelector } from 'react-redux' +import { useSelector } from 'react-redux'; +import { NextButton } from './NextButton'; export const CurrentQuestion = () => { const question = useSelector((state) => state.quiz.questions[state.quiz.currentQuestionIndex]) @@ -11,6 +12,7 @@ export const CurrentQuestion = () => { return (

Question: {question.questionText}

+
) } diff --git a/src/components/NextButton.js b/src/components/NextButton.js index e69de29b..c0dc11c7 100644 --- a/src/components/NextButton.js +++ b/src/components/NextButton.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { useDispatch } from 'react-redux'; +import { quiz } from '../reducers/quiz'; + +export const NextButton = () => { + const dispatch = useDispatch(); + const goToNextQuestion = () => { + dispatch(quiz.actions.goToNextQuestion()); + } + return ( + + ); +} \ No newline at end of file diff --git a/src/components/ResetButton.js b/src/components/ResetButton.js new file mode 100644 index 00000000..960df80e --- /dev/null +++ b/src/components/ResetButton.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { useDispatch } from 'react-redux'; +import { quiz } from '../reducers/quiz'; + +export const ResetButton = () => { + const dispatch = useDispatch(); + const restart = () => { + dispatch(quiz.actions.restart()); + } + return ( + + ); +} \ No newline at end of file From 2f57b248a9ec8c030d7c25bf6344e39cd2d06060 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Wed, 12 Apr 2023 22:10:58 +0200 Subject: [PATCH 07/27] next and reset button styling --- src/components/NextButton.css | 10 ++++++++++ src/components/ResetButton.css | 10 ++++++++++ src/components/ResetButton.js | 2 +- src/pages/Summary.js | 2 ++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/components/NextButton.css create mode 100644 src/components/ResetButton.css diff --git a/src/components/NextButton.css b/src/components/NextButton.css new file mode 100644 index 00000000..c7299f6e --- /dev/null +++ b/src/components/NextButton.css @@ -0,0 +1,10 @@ +.nextButton { + background-color: #3498db; + color: #fff; + font-size: 16px; + padding: 12px 24px; + border-radius: 12px; + border: none; + cursor: pointer; + } + diff --git a/src/components/ResetButton.css b/src/components/ResetButton.css new file mode 100644 index 00000000..e265c9ef --- /dev/null +++ b/src/components/ResetButton.css @@ -0,0 +1,10 @@ +.resetButton { + background-color: #3498db; + color: #fff; + font-size: 16px; + padding: 12px 24px; + border-radius: 12px; + border: none; + cursor: pointer; + } + diff --git a/src/components/ResetButton.js b/src/components/ResetButton.js index 960df80e..89c3a0ea 100644 --- a/src/components/ResetButton.js +++ b/src/components/ResetButton.js @@ -9,7 +9,7 @@ export const ResetButton = () => { } return ( ); -} \ No newline at end of file +}; diff --git a/src/components/ProgressBar.css b/src/components/ProgressBar.css new file mode 100644 index 00000000..e69de29b diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js index e69de29b..65fe0d62 100644 --- a/src/components/ProgressBar.js +++ b/src/components/ProgressBar.js @@ -0,0 +1,19 @@ +/* eslint-disable no-unused-vars */ +import React from 'react'; +import { useSelector } from 'react-redux'; +import './ProgressBar.css'; + +export const ProgressBar = () => { + const questions = useSelector((state) => state.quiz.questions); + const currentQuestionIndex = useSelector((state) => { + return state.quiz.questions[state.quiz.currentQuestionIndex]; + }); + + return ( +
+

+ Question: {currentQuestionIndex.id} / {questions.length} +

+
+ ); +}; From f59f57ec09abeace73817fb11e887c4ca7af2b86 Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Thu, 13 Apr 2023 15:43:10 +0200 Subject: [PATCH 09/27] current question pages changes --- src/App.js | 6 ++--- src/components/AnswerButton.js | 2 +- src/components/CurrentQuestion.js | 38 +++++++++++++++++++++++++------ src/pages/Question.js | 10 ++++++++ src/pages/question.css | 9 ++++++++ 5 files changed, 53 insertions(+), 12 deletions(-) diff --git a/src/App.js b/src/App.js index 6b0d9266..bcd97f4a 100644 --- a/src/App.js +++ b/src/App.js @@ -5,8 +5,7 @@ import { combineReducers, configureStore } from '@reduxjs/toolkit'; import { quiz } from 'reducers/quiz'; import { WelcomePage } from 'pages/WelcomePage'; -import { CurrentQuestion } from 'components/CurrentQuestion'; -import { AnswerButton } from 'components/AnswerButton'; +import { Question } from 'pages/Question'; const reducer = combineReducers({ quiz: quiz.reducer @@ -20,8 +19,7 @@ export const App = () => { } /> - } /> - } /> + } /> diff --git a/src/components/AnswerButton.js b/src/components/AnswerButton.js index 861f4060..4b48d29b 100644 --- a/src/components/AnswerButton.js +++ b/src/components/AnswerButton.js @@ -35,7 +35,7 @@ export const AnswerButton = ({ index, option, setGoToNextButton }) => { onClick={() => onAnswerSubmit(question.id, index)} disabled={usersAnswer} type="button"> - {option} omadonna + {option} ); }; diff --git a/src/components/CurrentQuestion.js b/src/components/CurrentQuestion.js index 49dec649..0f10b8b0 100644 --- a/src/components/CurrentQuestion.js +++ b/src/components/CurrentQuestion.js @@ -1,22 +1,46 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; +import React, { useState } from 'react'; +import { useSelector, useDispatch } from 'react-redux'; import { NextButton } from './NextButton'; import { ProgressBar } from './ProgressBar'; +import { AnswerButton } from './AnswerButton'; +import { SummaryPage } from '../pages/Summary'; +import { quiz } from '../reducers/quiz'; export const CurrentQuestion = () => { + const dispatch = useDispatch(); + const [goToNextButton, setGoToNextButton] = useState(false); const question = useSelector( (state) => state.quiz.questions[state.quiz.currentQuestionIndex] ); + const quizOver = useSelector((state) => state.quiz.quizOver); if (!question) { return

Oh no! I could not find the current question!

; } + const moveToNext = () => { + dispatch(quiz.actions.goToNextQuestion()); + setGoToNextButton(false); + }; return ( -
-

Question: {question.questionText}

- + <> + {quizOver && } + {!quizOver && ( +
+

Question: {question.questionText}

+
+ {question.options.map((option, index) => ( + + ))} +
+
+ )} + {goToNextButton && } -
+ ); -}; +}; \ No newline at end of file diff --git a/src/pages/Question.js b/src/pages/Question.js index e69de29b..c11d0ff2 100644 --- a/src/pages/Question.js +++ b/src/pages/Question.js @@ -0,0 +1,10 @@ +import React from 'react'; +import { CurrentQuestion } from 'components/CurrentQuestion'; + +export const Question = () => { + return ( +
+ +
+ ); +} \ No newline at end of file diff --git a/src/pages/question.css b/src/pages/question.css index e69de29b..8e5e27ae 100644 --- a/src/pages/question.css +++ b/src/pages/question.css @@ -0,0 +1,9 @@ +.questions-background { + background-color: #222968; + background-size: cover; + background-repeat: no-repeat; + width: 100vw; + height: 100vh; + background-position: center; + overflow-x: hidden; +} \ No newline at end of file From 492cc8a1b53260bd7aadcf2ed83f3942be26bc00 Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Thu, 13 Apr 2023 16:21:47 +0200 Subject: [PATCH 10/27] afternoon work --- src/components/AnswerButton.js | 6 ++++++ src/components/CurrentQuestion.js | 4 ++-- src/pages/Summary.js | 10 +++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/AnswerButton.js b/src/components/AnswerButton.js index 4b48d29b..ce36f233 100644 --- a/src/components/AnswerButton.js +++ b/src/components/AnswerButton.js @@ -19,6 +19,12 @@ export const AnswerButton = ({ index, option, setGoToNextButton }) => { dispatch(quiz.actions.submitAnswer({ questionId, answerIndex })); + if (question.correctAnswerIndex === answerIndex) { + window.alert('Yay YOU!') + dispatch(quiz.actions.goToNextQuestion()) + } else { + window.alert('Wrong answer!') + } setActiveBtn(true); setGoToNextButton(true); } diff --git a/src/components/CurrentQuestion.js b/src/components/CurrentQuestion.js index 0f10b8b0..d81f9084 100644 --- a/src/components/CurrentQuestion.js +++ b/src/components/CurrentQuestion.js @@ -37,10 +37,10 @@ export const CurrentQuestion = () => { setGoToNextButton={setGoToNextButton} /> ))} + {goToNextButton && } + )} - {goToNextButton && } - ); }; \ No newline at end of file diff --git a/src/pages/Summary.js b/src/pages/Summary.js index 2dbe7780..e5365e6a 100644 --- a/src/pages/Summary.js +++ b/src/pages/Summary.js @@ -1,11 +1,19 @@ import React from 'react'; import { ResetButton } from 'components/ResetButton'; +import { useSelector } from 'react-redux'; export const SummaryPage = () => { + // Variable to calculate how many correct answer the user has given + const correctAnswer = useSelector( + (state) => state.quiz.answers.filter((answer) => answer.isCorrect === true).lenght + ); + console.log(correctAnswer); return (

Summary Page

-

import score, import button to restart, import some celebration

+ {` your final score was: ${correctAnswer} + import score, import button to restart, import some celebration + `}
) From fe7aaf32a610e95b655476890ea6cc0d6df77621 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Thu, 13 Apr 2023 18:03:33 +0200 Subject: [PATCH 11/27] add text to summery page depending on score (#5) --- src/pages/Summary.js | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/pages/Summary.js b/src/pages/Summary.js index e5365e6a..cc8110b7 100644 --- a/src/pages/Summary.js +++ b/src/pages/Summary.js @@ -1,3 +1,5 @@ +/* eslint-disable implicit-arrow-linebreak */ +/* eslint-disable react/jsx-no-useless-fragment */ import React from 'react'; import { ResetButton } from 'components/ResetButton'; import { useSelector } from 'react-redux'; @@ -5,16 +7,32 @@ import { useSelector } from 'react-redux'; export const SummaryPage = () => { // Variable to calculate how many correct answer the user has given const correctAnswer = useSelector( - (state) => state.quiz.answers.filter((answer) => answer.isCorrect === true).lenght + (state) => + state.quiz.answers.filter((answer) => answer.isCorrect === true).length ); - console.log(correctAnswer); + const answers = useSelector((state) => state.quiz.answers); + + const userSummary = () => { + if (correctAnswer === 5) { + return 'Youa are a genius'; + } else if (correctAnswer === 4) { + return 'Well done'; + } else if (correctAnswer === 3) { + return 'Well done'; + } else { + return 'You need to study more'; + } + }; + + // console.log(correctAnswer); return (

Summary Page

- {` your final score was: ${correctAnswer} - import score, import button to restart, import some celebration - `} +

+ Your final score was: {correctAnswer} out of {answers.length} +

+

{userSummary()}

- ) -} \ No newline at end of file + ); +}; From e99f4851133482ca3467063abaa13959d8927b05 Mon Sep 17 00:00:00 2001 From: malvinamaria Date: Thu, 13 Apr 2023 18:10:30 +0200 Subject: [PATCH 12/27] add emojis --- src/pages/Summary.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/Summary.js b/src/pages/Summary.js index cc8110b7..f036f215 100644 --- a/src/pages/Summary.js +++ b/src/pages/Summary.js @@ -14,13 +14,13 @@ export const SummaryPage = () => { const userSummary = () => { if (correctAnswer === 5) { - return 'Youa are a genius'; + return 'Youa are a genius 🧠'; } else if (correctAnswer === 4) { - return 'Well done'; + return 'Well done 👌'; } else if (correctAnswer === 3) { - return 'Well done'; + return 'Well done 👌'; } else { - return 'You need to study more'; + return 'You need to study more 🤦'; } }; From 4d4d76ea76263515e861f02a7dd6ab3f11bd1c61 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Thu, 13 Apr 2023 18:36:49 +0200 Subject: [PATCH 13/27] add css styling to the welcome page (#6) --- src/img/technigo.jpg | Bin 0 -> 76650 bytes src/pages/WelcomePage.js | 28 +++++++++++++++++++++------- src/pages/welcomepage.css | 27 +++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 src/img/technigo.jpg diff --git a/src/img/technigo.jpg b/src/img/technigo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e16f73c98c906dd634fd5e1abb2aa6ab7dc790f GIT binary patch literal 76650 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 literal 0 HcmV?d00001 diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js index 36bf9c6a..a5d15a3a 100644 --- a/src/pages/WelcomePage.js +++ b/src/pages/WelcomePage.js @@ -6,21 +6,35 @@ export const WelcomePage = () => { const navigate = useNavigate(); const goToQuiz = () => { navigate('/quiz'); - } + }; return (

    Welcome to the React knowledge tester

    This is a simple quiz to test the knowledge of React

    - +
    - ) -} \ No newline at end of file + ); +}; diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index c961a4f8..a6a14c92 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -1,5 +1,24 @@ .welcome-background { - background-color: rgb(185, 17, 45); - width: 100%; - height: 100%; -} \ No newline at end of file + height: 844px; + background-image: url(../img/technigo.jpg); + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +button { + cursor: pointer; + text-underline-offset: 6px; + font-family: futura-pt, 'sans-serif'; + font-weight: 600; + transition: all 0.2s ease 0s; + display: inline-block; + padding: 18px 30px; + border-radius: 50px; + text-decoration: none; + font-size: 18px; + border: 2px solid rgb(10, 37, 255); + place-self: flex-start; + color: rgb(255, 255, 255); + background: rgb(10, 37, 255); +} From 5de62abc5227e2a2b283ef73349a799d052bae25 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Thu, 13 Apr 2023 21:08:16 +0200 Subject: [PATCH 14/27] we lcome page styled --- public/assets/linkedinlogo.png | Bin 0 -> 4699 bytes src/components/Footer.css | 51 +++++++++++++++++++++++++++++++++ src/components/footer.js | 17 +++++++++++ src/pages/WelcomePage.js | 38 ++++++++---------------- src/pages/welcomepage.css | 30 +++++++++++++++++-- 5 files changed, 108 insertions(+), 28 deletions(-) create mode 100644 public/assets/linkedinlogo.png create mode 100644 src/components/Footer.css create mode 100644 src/components/footer.js diff --git a/public/assets/linkedinlogo.png b/public/assets/linkedinlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..50aeee7c37a359cee5c59db9188f55453e15c601 GIT binary patch literal 4699 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 literal 0 HcmV?d00001 diff --git a/src/components/Footer.css b/src/components/Footer.css new file mode 100644 index 00000000..40abe06d --- /dev/null +++ b/src/components/Footer.css @@ -0,0 +1,51 @@ +/* Footer */ + +footer { + /* margin-top: 20px; + height: 120px; + padding: 5px; */ + display: flex; + flex-direction: column; + align-self: flex-end; + border-color: rgb(0, 37, 255); + border-width: 0px 16px 16px 16px; + border-style: solid; + } + + footer p { + text-align: center; + color: black; + text-shadow: 1px 1px 2px white; + } + + .contact-me { + display:flex; + justify-content: center; + align-items: center; + gap: 5px; + padding: 5px; + /* + margin-top: 10px; */ + } + + .contact-logo{ + width: 20px; + height: 20px; + object-fit: cover; + opacity: .75; + } + + .contact-logo:hover{ + transform: scale(1.2); + opacity: 1; + } + + .about-me { + display: flex; + justify-content: center; + align-items: center; + font-size: 15px; + color: rgb(0, 24, 164); + text-shadow: 1px 1px 2px white; + text-align: center; + } \ No newline at end of file diff --git a/src/components/footer.js b/src/components/footer.js new file mode 100644 index 00000000..5896e69a --- /dev/null +++ b/src/components/footer.js @@ -0,0 +1,17 @@ +import React from 'react'; +import './Footer.css'; + +export const Footer = () => { + return ( +
    +
    + link to LinkedIn + link to LinkedIn + link to LinkedIn +
    +
    +

    Designed by Sara, Giorgio & Malwina

    +
    +
    + ) +} \ No newline at end of file diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js index a5d15a3a..94fafc27 100644 --- a/src/pages/WelcomePage.js +++ b/src/pages/WelcomePage.js @@ -1,6 +1,7 @@ import React from 'react'; import './welcomepage.css'; import { useNavigate } from 'react-router-dom'; +import { Footer } from 'components/footer'; export const WelcomePage = () => { const navigate = useNavigate(); @@ -8,33 +9,18 @@ export const WelcomePage = () => { navigate('/quiz'); }; return ( -
    -
    -

    Welcome to the React knowledge tester

    -

    This is a simple quiz to test the knowledge of React

    -
    - - + +
    +
    +
    ); }; diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index a6a14c92..22f0d8ef 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -1,11 +1,28 @@ + + .welcome-background { height: 844px; background-image: url(../img/technigo.jpg); background-size: cover; - background-position: center; - background-repeat: no-repeat; + background-position: center; + background-repeat: no-repeat; +} + +.content { + text-align: center; + padding-top: 16px; + border-color: rgb(0, 37, 255); + border-width: 16px 16px 0px 16px; + border-style: solid; +} +.welcome-text-container h1 { + font-family: futura-pt, "sans-serif"; + font-weight: 900; + letter-spacing: -0.01em; + color: rgb(0, 24, 164); } + button { cursor: pointer; text-underline-offset: 6px; @@ -21,4 +38,13 @@ button { place-self: flex-start; color: rgb(255, 255, 255); background: rgb(10, 37, 255); + align-self: center; + + /* this is the important stuff 👇 */ +animation: bounce 1s infinite alternate; +} + +@keyframes bounce { + 0% {transform: translateY(0);} + 100% {transform: translateY(50px);} } From a2bee21a37d0a51606eb2af16cf280ec787cd610 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Thu, 13 Apr 2023 22:02:38 +0200 Subject: [PATCH 15/27] styling --- src/components/CurrentQuestion.css | 22 +++++++++++++++++++++ src/components/CurrentQuestion.js | 8 ++++++-- src/components/NextButton.css | 31 +++++++++++++++++++++++------- src/components/ProgressBar.js | 4 ++-- src/components/ResetButton.css | 30 +++++++++++++++++++++-------- src/components/ResetButton.js | 1 + src/components/answerbutton.css | 5 +++-- src/pages/Question.js | 1 + src/pages/Summary.js | 5 +++-- src/pages/WelcomePage.js | 2 +- src/pages/question.css | 9 +++------ src/pages/summary.css | 22 +++++++++++++++++++++ src/pages/welcomepage.css | 8 +++----- 13 files changed, 113 insertions(+), 35 deletions(-) create mode 100644 src/components/CurrentQuestion.css diff --git a/src/components/CurrentQuestion.css b/src/components/CurrentQuestion.css new file mode 100644 index 00000000..73e60a70 --- /dev/null +++ b/src/components/CurrentQuestion.css @@ -0,0 +1,22 @@ +.eslint-hater h1 { + font-family: futura-pt, "sans-serif"; + font-weight: 900; + letter-spacing: -0.01em; + color: rgb(0, 24, 164); + text-align: center; + display: flex; + flex-direction: column; + align-items: center; +} + +.answer-buttons { + display: flex; + flex-direction: column; + gap: 10px; +} + +.eslint-hater-bottom { + display: flex; + flex-direction: column; + gap: 10px; +} \ No newline at end of file diff --git a/src/components/CurrentQuestion.js b/src/components/CurrentQuestion.js index d81f9084..50eb2ac1 100644 --- a/src/components/CurrentQuestion.js +++ b/src/components/CurrentQuestion.js @@ -5,6 +5,7 @@ import { ProgressBar } from './ProgressBar'; import { AnswerButton } from './AnswerButton'; import { SummaryPage } from '../pages/Summary'; import { quiz } from '../reducers/quiz'; +import './CurrentQuestion.css'; export const CurrentQuestion = () => { const dispatch = useDispatch(); @@ -31,14 +32,17 @@ export const CurrentQuestion = () => {
    {question.options.map((option, index) => ( ))}
    - {goToNextButton && } - +
    + {goToNextButton && } + +
    )} diff --git a/src/components/NextButton.css b/src/components/NextButton.css index c7299f6e..00400269 100644 --- a/src/components/NextButton.css +++ b/src/components/NextButton.css @@ -1,10 +1,27 @@ .nextButton { - background-color: #3498db; - color: #fff; - font-size: 16px; - padding: 12px 24px; - border-radius: 12px; - border: none; - cursor: pointer; + cursor: pointer; + text-underline-offset: 6px; + font-family: futura-pt, "sans-serif"; + font-weight: 600; + transition: all 0.2s ease 0s; + display: inline-block; + padding: 18px 30px; + border-radius: 50px; + text-decoration: none; + font-size: 18px; + border: 2px solid rgb(10, 37, 255); + place-self: flex-start; + color: rgb(10, 37, 255); + background: transparent; + align-self: center; + margin-top:40px; + margin-bottom:40px; + /* this is the important stuff 👇 */ +animation: bounce 1s infinite alternate; +} + +@keyframes bounce { + 0% {transform: translateY(0);} + 100% {transform: translateY(50px);} } diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js index 65fe0d62..ad3a6f6a 100644 --- a/src/components/ProgressBar.js +++ b/src/components/ProgressBar.js @@ -11,9 +11,9 @@ export const ProgressBar = () => { return (
    -

    +

    Question: {currentQuestionIndex.id} / {questions.length} -

    +
    ); }; diff --git a/src/components/ResetButton.css b/src/components/ResetButton.css index e265c9ef..d8d0a7ce 100644 --- a/src/components/ResetButton.css +++ b/src/components/ResetButton.css @@ -1,10 +1,24 @@ .resetButton { - background-color: #3498db; - color: #fff; - font-size: 16px; - padding: 12px 24px; - border-radius: 12px; - border: none; - cursor: pointer; - } + cursor: pointer; + text-underline-offset: 6px; + /*font-family: futura-pt, 'sans-serif'; */ + font-weight: 600; + transition: all 0.2s ease 0s; + display: inline-block; + padding: 18px 30px; + border-radius: 50px; + text-decoration: none; + font-size: 18px; + border: 2px solid rgb(10, 37, 255); + place-self: flex-start; + color: rgb(255, 255, 255); + background: rgb(10, 37, 255); + /* this is the important stuff 👇 */ +animation: bounce 1s infinite alternate; +} + +@keyframes bounce { + 0% {transform: translateY(0);} + 100% {transform: translateY(50px);} +} diff --git a/src/components/ResetButton.js b/src/components/ResetButton.js index 89c3a0ea..0a41b73a 100644 --- a/src/components/ResetButton.js +++ b/src/components/ResetButton.js @@ -1,6 +1,7 @@ import React from 'react'; import { useDispatch } from 'react-redux'; import { quiz } from '../reducers/quiz'; +import './ResetButton.css'; export const ResetButton = () => { const dispatch = useDispatch(); diff --git a/src/components/answerbutton.css b/src/components/answerbutton.css index 50245f97..6257da33 100644 --- a/src/components/answerbutton.css +++ b/src/components/answerbutton.css @@ -1,4 +1,4 @@ -button { +/* button { background-color: #3498db; color: #fff; font-size: 16px; @@ -26,4 +26,5 @@ button.wrong { button.default { background-color: #bdc3c7; -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/src/pages/Question.js b/src/pages/Question.js index c11d0ff2..7aaf870c 100644 --- a/src/pages/Question.js +++ b/src/pages/Question.js @@ -1,5 +1,6 @@ import React from 'react'; import { CurrentQuestion } from 'components/CurrentQuestion'; +import './question.css'; export const Question = () => { return ( diff --git a/src/pages/Summary.js b/src/pages/Summary.js index f036f215..804853aa 100644 --- a/src/pages/Summary.js +++ b/src/pages/Summary.js @@ -3,6 +3,7 @@ import React from 'react'; import { ResetButton } from 'components/ResetButton'; import { useSelector } from 'react-redux'; +import './summary.css'; export const SummaryPage = () => { // Variable to calculate how many correct answer the user has given @@ -26,8 +27,8 @@ export const SummaryPage = () => { // console.log(correctAnswer); return ( -
    -

    Summary Page

    +
    +

    Oh wow, what a ride!

    Your final score was: {correctAnswer} out of {answers.length}

    diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js index 94fafc27..8056fc14 100644 --- a/src/pages/WelcomePage.js +++ b/src/pages/WelcomePage.js @@ -15,7 +15,7 @@ export const WelcomePage = () => {

    Hello there friend 👋

    Ready to Rumbre with React?

    -
    diff --git a/src/pages/question.css b/src/pages/question.css index 8e5e27ae..6dd08181 100644 --- a/src/pages/question.css +++ b/src/pages/question.css @@ -1,9 +1,6 @@ .questions-background { - background-color: #222968; - background-size: cover; - background-repeat: no-repeat; - width: 100vw; height: 100vh; - background-position: center; - overflow-x: hidden; + border-color: rgb(0, 37, 255); + border-width: 16px 16px 16px 16px; + border-style: solid; } \ No newline at end of file diff --git a/src/pages/summary.css b/src/pages/summary.css index e69de29b..ee85ec66 100644 --- a/src/pages/summary.css +++ b/src/pages/summary.css @@ -0,0 +1,22 @@ +.summary { + height: 100vh; + border-color: rgb(0, 37, 255); + border-width: 16px 16px 16px 16px; + border-style: solid; + display: flex; + flex-direction: column; +} + +.summary h1, h3 { + font-family: futura-pt, "sans-serif"; + font-weight: 900; + letter-spacing: -0.01em; + color: rgb(0, 24, 164); + text-align: center; + padding-top: 40px; +} + +.summary p { + padding-top: 40px; + text-align: center; +} \ No newline at end of file diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index 22f0d8ef..0d60526c 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -1,5 +1,3 @@ - - .welcome-background { height: 844px; background-image: url(../img/technigo.jpg); @@ -22,11 +20,10 @@ color: rgb(0, 24, 164); } - button { cursor: pointer; text-underline-offset: 6px; - font-family: futura-pt, 'sans-serif'; + /*font-family: futura-pt, 'sans-serif'; */ font-weight: 600; transition: all 0.2s ease 0s; display: inline-block; @@ -39,7 +36,8 @@ button { color: rgb(255, 255, 255); background: rgb(10, 37, 255); align-self: center; - +} +.welcomeButton { /* this is the important stuff 👇 */ animation: bounce 1s infinite alternate; } From 9aae1a31948b648298c82de11e20e7b9d0dbc4c2 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Fri, 14 Apr 2023 09:50:11 +0200 Subject: [PATCH 16/27] position backgroung image (#7) --- src/pages/welcomepage.css | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index 0d60526c..2ce854ee 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -1,9 +1,10 @@ .welcome-background { - height: 844px; + height: 400px; background-image: url(../img/technigo.jpg); background-size: cover; - background-position: center; - background-repeat: no-repeat; + background-position: center; + background-repeat: no-repeat; + background-position: center -550px; /* Move the image up by 50 pixels */ } .content { @@ -14,10 +15,10 @@ border-style: solid; } .welcome-text-container h1 { - font-family: futura-pt, "sans-serif"; - font-weight: 900; - letter-spacing: -0.01em; - color: rgb(0, 24, 164); + font-family: futura-pt, 'sans-serif'; + font-weight: 900; + letter-spacing: -0.01em; + color: rgb(0, 24, 164); } button { @@ -39,10 +40,14 @@ button { } .welcomeButton { /* this is the important stuff 👇 */ -animation: bounce 1s infinite alternate; + animation: bounce 1s infinite alternate; } @keyframes bounce { - 0% {transform: translateY(0);} - 100% {transform: translateY(50px);} + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(50px); + } } From 523345f4725d02ac41d0ef6b2974b3351bc434eb Mon Sep 17 00:00:00 2001 From: malvinamaria Date: Fri, 14 Apr 2023 10:06:40 +0200 Subject: [PATCH 17/27] move play again button centrally --- src/components/ResetButton.css | 17 ++++++++++++++--- src/components/ResetButton.js | 15 +++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/components/ResetButton.css b/src/components/ResetButton.css index d8d0a7ce..2374b707 100644 --- a/src/components/ResetButton.css +++ b/src/components/ResetButton.css @@ -15,10 +15,21 @@ background: rgb(10, 37, 255); /* this is the important stuff 👇 */ -animation: bounce 1s infinite alternate; + animation: bounce 1s infinite alternate; } @keyframes bounce { - 0% {transform: translateY(0);} - 100% {transform: translateY(50px);} + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(50px); + } +} +.resetButtonContainer { + display: flex; + justify-content: center; + align-items: center; + margin-top: 40px; + margin-bottom: 40px; } diff --git a/src/components/ResetButton.js b/src/components/ResetButton.js index 0a41b73a..3849fdbb 100644 --- a/src/components/ResetButton.js +++ b/src/components/ResetButton.js @@ -7,13 +7,12 @@ export const ResetButton = () => { const dispatch = useDispatch(); const restart = () => { dispatch(quiz.actions.restart()); - } + }; return ( - +
    + +
    ); -} \ No newline at end of file +}; From 3fdcaff6c625204d5c00ffe2f48e47855ea007ec Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Fri, 14 Apr 2023 10:30:55 +0200 Subject: [PATCH 18/27] position progress bar (#8) --- src/components/CurrentQuestion.css | 30 +++++++++++++++--------------- src/components/ProgressBar.css | 7 +++++++ src/components/ProgressBar.js | 4 ++-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/components/CurrentQuestion.css b/src/components/CurrentQuestion.css index 73e60a70..2492353b 100644 --- a/src/components/CurrentQuestion.css +++ b/src/components/CurrentQuestion.css @@ -1,22 +1,22 @@ .eslint-hater h1 { - font-family: futura-pt, "sans-serif"; - font-weight: 900; - letter-spacing: -0.01em; - color: rgb(0, 24, 164); - text-align: center; - display: flex; - flex-direction: column; - align-items: center; + font-family: futura-pt, 'sans-serif'; + font-weight: 900; + letter-spacing: -0.01em; + color: rgb(0, 24, 164); + text-align: center; + display: flex; + flex-direction: column; + align-items: center; } .answer-buttons { - display: flex; - flex-direction: column; - gap: 10px; + display: flex; + flex-direction: column; + gap: 10px; } .eslint-hater-bottom { - display: flex; - flex-direction: column; - gap: 10px; -} \ No newline at end of file + display: flex; + flex-direction: column; + gap: 11px; +} diff --git a/src/components/ProgressBar.css b/src/components/ProgressBar.css index e69de29b..0e8eecbb 100644 --- a/src/components/ProgressBar.css +++ b/src/components/ProgressBar.css @@ -0,0 +1,7 @@ +.progress-bar { + font-family: futura-pt, 'sans-serif'; + letter-spacing: -0.01em; + font-size: 32px; + line-height: min(max(50px, 6vw), 53px); + color: rgb(0, 24, 164); +} diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js index ad3a6f6a..c3edf90e 100644 --- a/src/components/ProgressBar.js +++ b/src/components/ProgressBar.js @@ -11,9 +11,9 @@ export const ProgressBar = () => { return (
    -

    +

    Question: {currentQuestionIndex.id} / {questions.length} -

    +
    ); }; From 8ab5745cd7edf370bb7a4df621975784fbf5c4d4 Mon Sep 17 00:00:00 2001 From: malvinamaria <51817058+malvinamaria@users.noreply.github.com> Date: Fri, 14 Apr 2023 10:59:19 +0200 Subject: [PATCH 19/27] added progress bar (#9) --- src/components/ProgressBar.css | 18 ++++++++++++++++++ src/components/ProgressBar.js | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/components/ProgressBar.css b/src/components/ProgressBar.css index 0e8eecbb..09fa4692 100644 --- a/src/components/ProgressBar.css +++ b/src/components/ProgressBar.css @@ -5,3 +5,21 @@ line-height: min(max(50px, 6vw), 53px); color: rgb(0, 24, 164); } +.progress { + width: 100%; + height: 10px; + appearance: none; + background-color: #f4f4f4; + border-radius: 20px; + overflow: hidden; +} + +.progress::-webkit-progress-bar { + background-color: #f4f4f4; + border-radius: 20px; +} + +.progress::-webkit-progress-value { + background-color: rgba(0, 37, 255, 1); + border-radius: 20px; +} diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js index c3edf90e..12eec768 100644 --- a/src/components/ProgressBar.js +++ b/src/components/ProgressBar.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-vars */ import React from 'react'; import { useSelector } from 'react-redux'; import './ProgressBar.css'; @@ -9,11 +8,16 @@ export const ProgressBar = () => { return state.quiz.questions[state.quiz.currentQuestionIndex]; }); + const progress = (currentQuestionIndex.id / questions.length) * 100; + return (

    Question: {currentQuestionIndex.id} / {questions.length}

    + + {progress}% +
    ); }; From 3864bfad9e6fe28bea678cbb5188a6fcdcb0569a Mon Sep 17 00:00:00 2001 From: malvinamaria Date: Fri, 14 Apr 2023 11:17:51 +0200 Subject: [PATCH 20/27] fix img --- src/img/tech.png | Bin 0 -> 52557 bytes src/pages/welcomepage.css | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 src/img/tech.png diff --git a/src/img/tech.png b/src/img/tech.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2911e97d7cac3ee76fe5071a0e23fed298c91e GIT binary patch literal 52557 zcmeFZg;&(w`aX;ZNQ1N>C69!pN=Xi&f|Al5A`L@#jtD3qU=V_ogwznyjUt`WF?81e zl9InYj6Uc4oO9kk;9cvu7RzDgv*WJozV3VP;gyP#ED=5}J_ZH`(IdJ0su&p9&KMY& zGq^b59r~L>O&A#XQ&uuEDvxAjm{gqX&8=+BFfim^MaN!If7eD8uyo!pBP|aRNfnY3 zxs?8*7gKKY6WLpcG~R9ItboKO%Dk+X0iULGUOvy|WU`Th6fuPo9Y5#7YJk&P3WCsfBBP{PK#>;)X3QM$&ilFf|M&9TqQLK{o7d z8TaggAcY8H`tcku8k!UZdD6l3uq>iTMj7}X?%=9@$-_U<(yp8 zXurtrJP8gd3^N7OHRUp407v2dpUznM4diXY7%u|kNUu;`CY}x?WWwoyFlZCtL#~eC zxWVqI;N^V1>Tvxd*6V4m3S6GRwP~t~D-3~#d>DqXCtH`oWk_EHwvuA2hPW`Zv|@e< zT8o@3rL{E|jam4AQ>6e7jUfm}$mj z3PGhNrXCCmA=ez3uH*4OSDVgoApS^V50js{bx4E2FnUqYcra~vNGTSK$$szst;Zy0 zuRf*4Ws$0j-MV)3AzYgB(_MI(r|}kH)A(``~FmwuY(Uej;xcp)2j1kr+6pE;$^BZ zjiz|x#KN-?VcT1R)YW*^)OwM2U)@ZPi%f;DE74oPoEw9tM=H4VFF{F=G)PROAQa;O zk2hqvX?)gqd)tHAkG>AepTeKPpHA{6BO5zeI4;i%Qq0)G=Y`P@QN0Qkk7$^}$)jJg z-WPiM*X`(v812V-EQU8EnCsrXd)FW997FJqycPb2Gg_3{{XxDm^6sM#&y=3NC6iO_ zqv|tJC0Jozq5q&D$m;!eu1#m2d!E*b?$@(jzsrH-g7?kn?sb8|P2X3r7T2s5KKhSA1ys2we z`M9$EUbLac`<$X%@&X2~xvP%`k8_L`EqhElXSzm(KSR4W?lBJX4~h+XSO;0}Ssx74 zW%UpE4)hO{=L+RW4nl0=Y+hJ#^^bgZd}Mn6UCv5Q+Yhb*vFu-R1VeX*@rT<7bB0z2 zX#0nL?DtbyZT^7vGyHfmxIOS_a5UT5&_X-*(^@`f??kq@)WJ=~pyrf}{>N4uB~Qe; z#r?&zCok3V)H?c-pR%929_<||6TQT7349iqhy%w-3$6+#AlxCeA!59CHGKJ@Puj#o z`iG3K6~j%#g=mCmNj_wKC{%D#uvScpd#fm}5F4-gVN#$m{zq3|=YIUeoscg2&R>fQ zi$dJS1hNFMCc`jfWn5*qbC7fH;=cAntJ*f9^gzb_|`B;7%@^x*Hc#mK5>E$b-jhG=s z#Bk!N>xtK!B3vUHm4cOCDN!nkyWA3gU-!zd>Dt`-Le1E(yd4W_*;uaFcRccE# z46gL?_IHwn&ZkfOgnWg{#xIo{y2pEeI`%s-BoQYmlZ|e1R=%v9zr@@l6?}~)+A(~4 ztYb`m-F0k@r9Y_h?da_5pZhyJyU3qU_Fw(v*zsJ<-AtI(TN7PfnvPu?o{iil*_}d8 zHTIc1Y76B3!1x>xeQ5)h-te;FOT&`XqSS24BKFqv0BlhzF+4$hDjcEU08-7?h^Wu0 ztf}%c{zQ$zLBY`>wYcSYJp`LCQ|@!U5~kf|?&EZ_nV)0tXSY(fDUo)Oc2V4Iq1lX^ zjhh_tEaEgRXtDZ^Hyc0excy^0WVVIshzn8b!1R?lm1*Ye#=8d{)CLB5MZ&(@l{fL_ zN92`mJ|#0Hi)8gP3n|PUF@2Pm9-97y_+4?rPUu?OL>v8L<#woNU>mfpsZE9h$|0&6 z{EOj)?CfO#2RnJqqdjG~!f71UTQ_058{(|B5|@+T#5q39;!+?lvsit`)3Z*c^Ai7l zt-L`DQdi^_F$LpW$lC{RGr4Z{vAaH2%#f5j{xVVAQ7p+FX6R;J+2=I#vzu~}Q!t;V zbGz#o2X$gcn_X9bhhD;P`P-tO4Yw>c`f`Q_adLOGNbq0<7I@c7 znEN`{xt+zIoH3sGWpPLGl2Y&5I!vhiVmXri8fiecA&4A3tc}w1fVWmPgrE6ykf3EOvc}`CxY9&hGUN=?xYAeeQkM2w?b1_)Q4+k z1U@&}lCa9PMm&%^M4gDimd<8)_VIA%^c{>%Px*)P;OWy{`6jFOm2Ws%CJ!1dS?Y_* zIr6iQ6&gManGY}a*Xy2o9p+7r{&c>zRF=e+)FUbB$h`DTJ1om={%L#D+0adR6GP!U*Asg^@vr{uT3n z?j^mhiJj`6sr?Gy?TCZK4tE{*f+>Q!VPDDBv%sVmNt0I)S7b=~8S6aXpIV-5$Fs$; z1u0V|$B6ZNY3?PA+V9my)Gi&>9E&8&iuogYR{Zy>=MM@l|Ke@seT?IJ#U|J`q?`Dd zc*?7CYoUSjNAC8U=l<-cX|ts(Yer{VCuz?7ZZ6ZW54*mPD{c-<(fiq-*ST`JtdE9- zlgu#^NM`$s{QPiMIVay4`*qvQ$k9l?{)4a08N=ae+x_P6FJ5w+E0ADt z-)(WkP=Q{8=nGF6DdX{ic=vJ;zW83)6=Jt~H3yC9&3K)UVa z?%6(DBu)L~tu=nnh z2cc)1I^Xj^QwBS~5}XsoOz$(v!NY@V3g*TnXAF|L6B$-vM36wE)LVmqf?{_`4h2KAtnn#`j|;D0q! zCo?msv!%VuP3j{Mbx`&M>9Jzxz9p}Rt27tjC4C;wXU|BTfB*T~yb?AO0RF#)}gD|EL13=ZklNq9yRfc>gw<1pd|8{UZzv2*#uP zQtBR;)+c<| zSkv)I`DDIarZIgx5Ou9VsZ9D?ys`H=#^+AskC<9Pw~Jz8pA!{&6n#ial+E?|ND#=58yi2Uis%jzsE(v z0{DaiAE@5=kDZ_%cu_fd`M>U@6#|J%_`>&g1|4q}7xHa+rHXR0x z5Qu$^>n$1Hf73Hl=N`jk{@tDb z7j6FtCJ=xBi?;tjlmCI_zbB9X<+gv%MgPlf|B<`@M@jyjs{N0W{Ew3S$u9pZ0RBCx z{QtcGFgC*xxb=^+Et-I0;xco3;v_OFC+#%%p0PwW;ti6?UYZ(T)iqxyn zT6Qe|d-nZrmF@CRF<4*M@xA_zqwBwRC)L&qC01g`8(6oe4+7k zgkI&R^U9aWk#J!$&E%q+NyW&e;cd!Gm@EXlGGi2-48B>6LsS!ouK0HSrpnl5O+_s+ zHD`$8P2Hcr9Fw>hCdfnSBO{$(xz)M#kMX&;d2W0>ey-y#;beguxv8`DlK0Bh<=VZ_ z-tk+V^xxa>Vc`zQL*n!b_Ed-f5Gs+eBM-+OO&y!_!DfScO8cMk-Ll|jQAsCt+n2*V zCJFI#@D@gX9A|7CHoaX)Z$fPlZqpdbH?^>8?7!P|cBhP0!nwrVNchW7Iqlod=E8lW zbei_ULf7@k184SZr0ttR`HE*eJJdI=FgM7TL&{|R2T1I~OjmXyrEgQqj0IKOjki2) zMyG8^AQsi}flOeg#jW3Y9QGCKXl5N5m?})#I7Tth-0Swf!L9H|jHHdmc6i|}^Kxb= zgFgLGaA5(p}(iS^04z>ood7`;h49WL|vx_`2*}jc8PK9qMM3gI7 zPI7g<{2f#dUYAUeD|TWs=z@n|E=6u;BZ&qfQN+7j-_2e_|LmF)R?YG3=n4x%h$ez= zQP53#X}v48cqOlJHQYHua^{@8^}cbPowVa2U8=B0q#NFcyo5XG!X35>>iEIYsypcX z#%BgQ%O7Vm^*CNe=DAJAG`ThF6WY5sXB#(@@V;uYyjy;tZA?_hl zwKOK#5<@8J79wMF#*^pOy<=KYJsB~9tyK3hqTv;N#jzxJLt-}>O*C2;t@lAgrA?aS z9r{<{TFAKjbdsU@wuP#E@SbcE-8UK8Z*Q(J5;`X^;MF<{(%ZKbT2IXK{$z*YV}&+u zXPW7={p~tx*e@y-4Rm&HT(mfdsF$a{uNO_UcuzMc#NB&HzPvfIF(tR566d`Y zGSjPb{B4ZD@8+(#=4&^pf*Xb54Ug<7i2dz96pJhVDMbraAaT_yjl;j^-@sn~28X`V z?1U4qG5VY1MxOIsAN8oH*K=Q}T+$Ls;Vgfg!Z^!N!Raz9yUbuYh)|6AZF7~F0KRgr zN5jnM=F2V0<&X+d29lNHG%who_t1+%HssLh(xJ`PlB5t$HC-;_0PbrF_J|F_rmxkr zE#lIMhxvt%uA-Iyj)HViNp)Nsy{U#?%%-$$bMx%P=cMkI)praFpSnH3JwNOxW$+Vo z>6zjh;J#dXb9ninQQW0xo3#9lZy|#x}Hf3|4?P#Z+87dD{vJIA#tLf&MX%}1slS*%L_{z8Slo?%=TL$C13;NN9EvR z4ax#4@PLVm!J|b7*J>AM?TjWHu86bcLntDRgxl}A?B9(*)?2{R?B!oCa1v6D722}@ zqML-Vl&;*Mqwdglqt5`5(Hu#2yosN9S|kKLfV|FCr~OT@Qw)HMxxvdv(IUUXrC4b; z2acbZydK}`fzu}2z%y}FpkbY>@_n+RXs!T0bHex|cv)|K!gM9RSi}Z#rTA#=@+C zgpWkG7HTN=-Osi^rwVz0@A_f=)2&xCm6afs5Uu8b1~RbYn+{?R&^}AZqat<~SB4+x zd~b&XHsF@J^Zl&1dih?eP;qF-d#q4#p^$D^btZq6$)82Ba444vy*};yq0?b_>1P$$ z@aJb0VJjZCq_C&ww&&vSbzOv6Iirr|+>(3>nB2dtKm6mf;UKQ)KXenIr-S+VBkUz9 z>|k@#tX)?mRMN&%^qDOn+qZMI?{saD7tTN;&>yIEb+oNO64< zNjK4cr*xIw?K_>Oxb4zB2Ui`pP7334b7IxRQnK35=yBi5*=h0A;^Ry=mN@a>Zo^~> zoV_{hv&+Q}_^d8TA=8`2#SORL8KgSf^0@eKk8T9BTkSWURZClJcHK1SGW%Nrnan8` zNdAG>k1h;&hk|t8yuy-*z0!lfZ1-?KQu-xOUm5|$u>^N3ePR#iAG4KSC0!gc=b(_j z7`DpE)C%7mD@pxw*0qluXYQqUEIO8g5<1iWt)*WeCGHr>+(mMa07qx z-?19c!PIHDSQQT_AXt({4-zFRm`b3|)VrB_tSkwiZttpkcKf)ichpy{nAJ@1?`=uN ztttMFb}>ar)GsvWm98EtMo0txoy(lwi(LNG@0aFE>A%m|9_hKo_ z2*~zGQm^OX_M$?o0xgHi$uq6x^(_f;SI00@Q5lQj)nm0u{G%mmI=KqOmzf7UX0j+U;A|D6(Yz}Rd~8^epS z#&Q73Etkc%-Z2|3xM22Evd@w*_K`4OXLj+Ua-YX{s-^s6=hsx)qsyZou3y5G$ESF3 zReHukME-{2ahr3}?G5}d*Xx(_US>Z$$!hzt);*a1wm zCh8ZHojHidyzt4VJzdP#eX~l|DoKBPU;soMkcmBgYK^OLFCn*!1t~1@5?i%#u05GP zKbn&DF{w79@>jUpCuUN+&_?mXC{ z`f0NMmA{3u0hWgASd*gzlZ{~ac)rYmZLST!&L$pWeXTEs?h~aq)TyyJvliABf==yB zh2a5w?$?-A1=wb%lNlXnSqr$Fg)Wg z=HP$QK-3dok+bL`oicOke7r%q+a_LwsQc5GDtQEC${ZBbx)@H1JvO8@@TpuaC3|z{ zlQ)w~l8?P8^0ULnM zeDyi*q-t@qF6e!K@X7NJlV}DMFamFR0UdBi%qH^V60NM`8`%X;u(RaA5hv!Bw4Hfx zXD+?2zonoA=YpIN*GCsBR$+rFHH(t1&1c1&V2iAnTRO%drf>W>LVtz^KPt3bfzQEnp0}*#El-m0~0y@uyW8| z%2{r<3F-f1N54GZ*5eAg>hT!t-2B{@TWq}@-gJlk`R|RZ*nlJq zkCjEA${RZX8ZZ%B^2RM>gAk+MqO{S6rGuj9IJxYrv)lO`4wiLf11A+tt5n3vz7Xz8_2eLOmV>3r3 zLI|BiB}WBHzZ_RPS=8Sy-6ld;=s=rMk>D6Vxm1k0BPyE{p7;2D)bw{*N`>okvVm+jYdszJzSdzI@T<~d=;ltl? z&D1LhG&rt_@Iehpd4hSG_+op}f*2F4nR@x$Gk)uJZ>Y>cxKRb?pSZ>?c?f_oK11*c zYE{cmAQK~5l{!A+DkvI%5|R${bqWjohREhFgZ;t6Yk=b3)#ty7#%530x7R(396qcn zp$&ieLsUEc(%#1#y!hJ_#W6X@?`qsddqfu*u*+PtMVGE>adsfYR`2Z?H>jxKHSx2( zv7C&J7+?#n52j~KdvL3(Ep{bUyH<{WnYO4IZ6dordib3o?C9#q42$<+ztntL!Qtc_ z(9dh5r{t*n3Lr~RC?joF2Rg$V)UiX^_O%!m0gMF$wwfuT97xW@X8;?o<0EJAd)B1= zKz}D^)ZwePR@_;bn&ojOTR!nYH?h#W9j!AipVjqxyx1-=;nPQ1D7BKKieJ)kl?$V! z@WV`S@c7L~|JCDz^ z@w38}&dFIeuI=RrS&^A8#xXukA}d5>^L9^|Yq&R}1SM*Lv|Z{u{PgC3|POFEzDLEY0=k7NB-Pn@e~lIlmq z-J-lV*LNC4-A~OAk#8(`#iy;3d}VFz9ZoZOUsGgdZtVwF`->wg4$MAR9<4Ac&1{zu z8Hu0bC4u!Jjld8@M#lXpjDwluTNd?px(ehT;i``cX@vzHxv)}0b5dSUpmvGwjZX?r= z6BR48n~1&DH*Ry8W%$V=$NPR!Vn$&-C~waNOc2g#KZ!DJ6g+@QXgovBLkSbKA4$i# zUqmPNl_IfL}9=_6TH9rDKiEq4cT0~d4;pFTB6J^Z?eKlvtZQgFQ1>j-m=zf zdfELt}qk-8RQ60}D6Th0@G&8!d_bYm&wz+A@*&3F{W+nJmzjZy)S1;8JQ?2)`ldaJ@sKSCbYCWT#Pa?nr7o2Zy8 z;g^$gvd-n}e)D{OZPJOU=5#Nlxl)0~Rmhf>f1}~FA+tWL+Ob~5iD+(j@pMGT{k6dU zN+?6iyvy*eFi>zNGiV+JSKUU-ngw!S#H}S)tYGSw;?7~G#i`|f=7+;cNXn4C4srU| zEqLL#RED64Co%(Hp3k$cH!Io*uPSz{>II3GBWQVaPWzus;fK{hXP}4&%3Dle{yU&a zU=ECif;5;L!E)?4a!=^EjUc^@)hxKuZBfaO==F#`EQC?#>g1tTLUY~M5n<-llEC?( zTv23qzoYy22=*D5PWe6?Y;~spoFS!C?Z{i{z;hBSIdRv| z9wF;*kv>_1R}fBLG>6qT7u*_Fdr8$J;Rt)mbL&%6(mo9k?2XSN;da2kXmHNMUB{Yt@eZv^A%zGBatL2+1L*U7O0yE|yI( z-!#NFx#vwq{)COBJt}At3@_k%G#c9)p6>LMF^+6A-Sq|kV#~RIRk$3xKl?f^UtSqugST1 zf3Kd8T0K9!3cWf9X14q1Knz$L0fjg5i^;n^*S)8oB8!R&W`NGadH9rG9{t*|`KEWa z+!=*A;TSP&D^4cytFD&0)PrV^#@)gJUloPT%@JM$aQO3yinRRn;j2thX@DTKXsF!< z>cuTln-1`++|c(ZPAY>qE?d%wyLsjuL2ZW}c4hmMLbvfsG?_M?hZG1mOsK)w`@#W+}VDyaZ<|t_K zK5NQqJTMYc@}K+#EBCi>_2>v0iqx0Cc52mPm&=EQPJ4#^>dCHcv@uNx*=%+rX}r$( zQvA7E^7LdTr?gg_C}E;A9%P8%0aSM4};b|fRy zmm_GNoSL;>$fIOCo{$@*8T=07H9|Dv{Zm*Df6jWxc_QRKNKM(?&wn z!3q03%qHg7Cxnu&K~KNMn`AolRWgdMh$Kt*2jG)VpE+P=v2v9t=R1*y}i3E5b zGzT8H8{bPHVAS1T1JSd3rP8d-UE58C4G?7GZy;Lm0_jjp1VF-HDP5>4`99!)X{PI) z8}wXoLh2ik=_Sm~!`Cg1=SPblQe_4xCL_k%nKa(GVfp{`J^p4>7ID^?`Q8#Ai%+y$UERr#DLU&b>nD6xS8T`d65PJWIEI51erHVn{gZkd6o0n{f)9Sn zSH58P&6K3`5uD3=02kSttz7RMjEu}xgPkc;kGPGdnIJoNlFq)9MTU>J8=v*ft>Y%u zH&>K)4m*5JK9RwV>@jjZ>`6mt+xopHu{~0)knnr&8m=l&S^c~tK5`AU*gu@=F$M6~ z`wFo)_;MO(K;EoOOp91`1&7Y;D&~4Yk#){B3A7P<^4H+>WE;Y#j*{gILk^>zff?{# zQTJLA6ibvb*o@zs!WU|$tBWq>^vL>}h$12!fY5!$vcE7T6JKEi4Rc?Esqh;NSO#{4 zYpkDNwng=o7_T8`EL?T2DBWx6lNB5g`XxDTB8lS}ag(*MhzREoTltZ2#>yD=M%nTW z5_^w94{jn=e*{I+-_A~p&+fb*j1?@^@Yv|K`Q{!e<~^;OQ!zT$5GaZ| zl2-$HPs#HVAzHC9APj`0BY7F)8Vd(CwBir$hbHsHjP)MqKRP2e3jQLHL1D$=4Rg z-vuC0qp&EZEPekPE-AZmiiHK#GcNx=sBnAijmRf|%31`M+;#uRQp!(L4*ynh>eykO z>tKX9^)f?XCtywhUp<}!lxQ7a7}d~g0c?8`4_%KSF~_(De1istsbDU5zddnVENf~J z!yAxeD%Gf%Su8cxP}h_X9GGM-)udUF6VN}1xjeH`Aj#j}q3qQKFUt5b- zjXZCEcxTM+&Or>`!c8Pju zL|bcFC-v9$$~S0ph3xR7jeZ>`JgobnQ`M%MlN!z>RC>3<@1TJDVcEQCJw;>x9eWqI z{z)SuUjJS95PT=z1kWrZnGaG(ANoe5iXmCYJD~Wu6d*bIcR>miFrZ3l2m$sYgUw93 z;)jN3*wEu|3Le9+*IJN~$3N_jTcB1^P?wnJ2tWyMlYMg?X21odm_zz7kIxf)PPHg+ zdD{ZM_3a2EBRrv`z4FF7+aEi!@U%`^Rg*M;MJ}ogAcr(i0HdpY7vlf3BJcx%No*>b z;G0Z-9?Ei}Ph0Mlfpl!UQ)rT|Qkln4n|(&1Une-Zyk5N>Y|+SIHo0v3UZfrQBVo~h z>1)`Luh&L1{r<$X51{JoOr7w#oUDH}ko+)La4Z24wPq>wHe%Di=H4)rA&C?g65-61 zwb%Vfk#d1vIf+tU2BXZYzPIJ-?%=d%CrL%#I+}|ZXEG2U|n*P%y zt)6JjZLs?|mc8Xu{hA*-IT?8@r5`FBH#^#^K3;$q6+miTuD}}?#sI3hjNcjV9fc?Habrg!I5v>SMfOjQiBo>a(@(h>+B1-54 zu`9Eiq_4HGOF=(~d-Y#`D`kE6_T&2LJB0eELQ?~%K9|bP7p?l7hOeV4KIbiIbs`GjAghYUe{5rv13^76?H{FJ_`HrJ5MD?v!m;ce!9)MxLg z*wp=$(D|xZ4HAw3&B& zj*#d1NN{k{ger@bF`rif4Ol?nhk>*)_qGL$}&sD$7-E$NBA_e?7u;63y| zSrI*kAyxOfC1c&N&-*gjmg+CkfDTA^#kxFAsQv{c7i*}y#JVa>NpPQt2YKkFyNsKc_+DsI@=V|{hrkg*YQC*l{A zd)#CRXi%xIb`AB3A;mm?s0jJVoBWJS+F_e%?;?r$I!%khsEPnV0&+GXrVGTNQ8Au~ zzocyY)hc`MTgxVK?TC!_S`bxUIR~mN_zSj{FHV|Y?RG-jirC@)r*k-32~QB!%@1DS3lPH0@!nH@%G}yD5Xxs1X;l=3NmkkUd&nTJ z=?}e;UQq7?62L0iy*i zOq&Y!$2UMOLFz9zk;uNrKC2J0*4KY6KfYrxy}6u8OD%lg%4QC!Z-VS^ID%7`Ns?Zk z@CYn{Q%i1ml8|P-gA^1?5Z1>QDBV>dfSq8q6FNEIw}ELvtM;!OXKD4 z@IlIY>`j6xs7kT@LACN6!FpyQ#0JV6aIL{*Mlk`z6xL7DWxL5J*;KW>JEaE8-|5m_ zk%#dHoof15WI#tZg&5Nn*Qq}OvD3}HSw5v2m2k8tanc%^`VzZxu*99l`szm%jl&21 zB+8Vkzb;&hU9my27bkPQ-0-k*{7BsOir*V@JO$~7Zp0&Yxw7|?$0z#&Chv#v ztz@C2QqZaya9Vws;5{;gud%zb*AfnP<_f-iHe^CMZ~+TgN^FImb1O;Phfgtg;M5X7 z@4>05cD6^#8W7WXEBoSxrY>jH7*~a3-&TjwNh68O z(XzqWY;W}qKisAe+1=2eSfQ>91|8Ah%F!dH3Cs0j#!2$By5;3Zk&!>Ud_)6F=-lE! zke>4TSFxq*wu?>f746OJjBAm&w%q}Fjp<-Ppkj0se#}e1YHndhOBl3?Vp0lnKtXs? zbipX2fa0PMx>fxk(&aR`KC9w*Jk_~zLzkD|Cvi=pc5;D`LQ--O^pWxHeP+v->J9dtDFwJhvrz3uJ`-?3 z;>A}Y^wCZ5)#b!;&$#}?>bM3qIJM@@j@^mmKjY(OXcuI6=E(;aW?)|c+?a(`F`zwB z50avnV_9_S2d92a=~^U(<&~Qx)N0kujH>0b6Tj|n=FwUY_$5z{upHDlF9mx|II%_c z6(7WFbp@~Sp7_U9?>6-KqY6}Si!1g-&I@B#9@qaEDHIKyDw^TU2x+?8TfdZ=x~~x3k>vrKoGzVQC=fadMvA%SVi0UVD;4P1w| zpqAk4cE9?kPEv_vHc0E{zg2F5#<Jl*i{PHu67ci z#7ikDhz8mtj=xAL5pgKgEv(mHTh?bowH_V;qQwf&th^w-EZ7Jv_>tM5SE|=sS!A!C zuj4pgXEMYN>*0!gLa4G75^!BEUxr4Uj-694wdxR%yv|Aj4LPwZ{m=9230IsywD`&< ziEnjJ|DtWbK2-|bG%5^qYht5S*-!>8(M&n`wp8YZBu}guA|PLYjvLoTLj#7&1cau% z@Yg4`UTB@2WkyMmIMGX$7wWF7~v*Fsk16WSF-O(a1>Fk1a2pRVV6PEsUv+{n6qa$sn>JCK@4 ztUNN&RjcB!G9mV3IoEWEdsJE|pJ$X~BDjSMs{)6*YhTD#(IiM7*Rr$_OX-2KRjtZZ z+c4g7y|h8;u-K^q8>TIb^5m&r*4T;bHGvqk2>)78G+O^WaY= zefZYDX8KZOc^jr^gg-9m;|j901n-2$M$Bm}v5TLE$xle2D2m?;pl%&KV}6gm4iiHm zJQY!Q(>KRUbuB38*|_IKbdSwaO;XQ^t>0<2GXe z#nAyy9m4D`Nzj^UoZkLzg_ILez-0fWz~ilykD~rLATTuuswL2YDFvBAkdd}jz8E5y zTlU;g!-PIxghPzIFzwHJgHw;^L0%^+h=->yQ*e>=mmh!wDf;%R8J+lEK06}S$T8(a zU+$#605n0_l+(u#nibY z!17PMwNDF;@aVl&s4c@G_IudO>64WcPVU13IIZ__)&GhbyJmados*jH=fk%CHP!I$ za$9*50H6|Yc5nABzG{>Hk2$MP62>?Q$Jh=wllNl367}HthTMw;hmHgzAI5hn1tn3= zV;S5~CBU3cmwGRgm(+cQs{GXVg5%B3B=#4`V(Z}TYFd>>4L;`(^o9*|PxnYTH}~$y ziJIh!Kr1{q8e;Qrs54~NO0T}tYa;3i#(S?uWMz^6ABRS)n6*ZAeD5CXshV5YZiSQw zcLO^2;ABk7mphOg5**&NfTeSD3f zLI(pMaPt`U5v22b@EBdxkx9xR=F#Gi^Dnivpl+h_kZ$UFjUG%54Nll(&WQC_&^f)2 zg*^V+o;r3d{Zq~e9ylnU16QBTxc~eu03txg)CbuPfENbu79pOP z5m~K=91zxm<<~8wH7Ojl^CEk0FETQbC%M2+-oHZns{( z(k^6Cu8bL>`jqZ%N@M9DwAQi*Mz%+Y$?)#V=W z@O(c+3IonBQmQ3a?G#eGGMahUI|JUF0(>DrE8mw%zql@bO7M{@p;LeH0E_#0a6ydV zxf(COWs1-0nh#1a5mba1;#;F5JP=<$#~zuY-Y-@#<;A?$Upr^h&(%00K)DQ$s777! zQ@_R6so1Q_tWl;VH_Yg!g`_hSNHEkKyRG2ytEhsrJjb+G z`Wx^$8Z~gimo+68eH#A=-^KqI_Pgud+H<(qg|CN-)-h<-Y>=lO4v{ohz8w}+0GuP3 zJ8NY?$#}q^QbY0Ch(TrYsY9jE;B^-v+xYVHoS9{}RmKB6WGe<-!GB z!72EVqsG8RVRpgJOmSBl-$X)y4<>I8crhna=GOIfSM_ct>Yd6xWa@nkGjU%qBzONB zQ%ml~e8N}lq{bb4a?nCm=d)gLg@{+pCJ==jO>d+@@0Zv8x_!Y`^nw!IuU{t5H{M*? zmIeW(4lbs`X+{=MZW#a>#jJ(w@>?#{0oo!qmWpJ%E4IEZ&A}ZSpgYjbf^ATTc zDy=pjRO=kF7dsf&5%lr5+g>lik z)PXipfk6qdTEFrkf)89;H_fa|Rq%4d%JhtZ03oQbrH}?5u1tS2#M}AtsMo5Vw>k!# zx#CWV|6K2nDBpTD@VN|l1ZinIU}|*JlN9&hiAq;}YJmk#hjHp5LJc3vi-3aq2wH{(-Lk&MU!zcs zYJEAFtYr9!x8@^q+;Ki9)p8)*P!NHKA^~}y?p@er4XY})zQWZR`twB?%HO`L2nAI~ z?Bnj5Kb=BU$bjOe;SiHUnBJV)mbPd;vG8;EY-UfM_+DzipOG6kxaUFW(paRf5)B+A zApZFPIIXpjGbJHo=haGELRpC#7VXM$|MxA}22#wmp%(+t)WfsL5RW%%Hr!jFMl#gz zpVZ*R6NmF#*Xn0b#OiW?pQvntRX?u$7)EMY+<-hyjB+a{_R@EnDe61!PZHTTI6qib zW5iGBUJp`S^ER0~LT(q#9e}#6WLH-;;HY_T%4_WKvqaR~J#FF9h7-hk^vV8LN=mYGk;o3Sz7oMYM zfeh-GslujP z1|Pfn=^Y=oL99N?1Wsq@Jmp9r(EGad$$*dm!(=9Fl);V zuU6^t(jp&pqb|r0VU_4)eZ9dBLl+r0dMCUbao5(_uQl<63|rPlHQst{WNP2l#Ox~! z(pL-wA6j0=zEQEUFPVeyl#pS5amknOCAhCfdUFY7ZGda|>6!#yOGA!k?YS%2Lj;MD zQ}p=N`R&f|@#vxNla;8`>x(Br6AnP&6^Il51qH~;g&g!z50vt|Mzcpj!-rngKOC=| zv$<(Fn6Y}J*WmcEkaTXx)2xeh2PRN)2Eo}yE$4|2&PTAF@{&)ITW@i=QA{P6$F1t> zSe2HLi&N(BYx7`8CLnSOio@uyi>Q$#WQ+2kuP(;iEo4v^Ei)nt3Nq%GR|G#$_j$^oyKelSk(nKW`KM z763d}0J!p0soK2@1q(lFKqB4=>z*ps?|oyOq*AR|Yn2CY)eOm({ubn){aBUMfQd@V z*+sXNUqb|pzx3H>ha-HjsuIc;)bbwx5d`a>-^D1!v~q`T)^HCJ&#vm=QJilz_Ii%9 zNdsUBO4*ZUuql5kzYKT1TOvj!AN^<1HqdQhTeIW85KW~LvKgpF_QvJgts8J}SGx{1 z)GdY!cLN8yFDm;Tg>IppO+CeZP@c24E^LV#wXd~dMH6JZ^G|loKf40=x&RSYdNIm$ zG2ZwK_}W6HmcGcS)a#f;u#AAwmkQBxZ*$x7X>6XCrm8&z2O2q{i0HCE#UB=q}XS4#iu`9~$Ifr&AJlx%UkD`QB z#fHj9G8FFqqAt)1afP+e~)6>U?0Z=&`0 z-xq2Hmk$%VR5{QWPs7=Ik54;Vsspsj^&o3Ox_SQYbET=}tDdD<53c@yEOZOg$^v>o zR1nubf@2re;IkG4@F7yvcy-Bh`N0MfXRkj+r) zkV%4M(aKA&2ee^Nk55sZ7iM2K1#RO8Cto{{JY@L)j#9`P@G-ca6FJI)urdOdDcW)F zyaX%Jz+bVXx14vGxeqbZk_z~GMK#irmJRT=e6JO{S`8Z0Z@&ic<$75U-o0BqFeQ;+7c&)ru7oVpzS0J|Dxb{a@BBd_~E>{0^Q z1)Uzflwl)+^z*7(>PN8EmC7q{IA*CH%{z;q5lS1#b^ePdDI%PSJO3!%2SAoa-oPU- zV|AH~AW>r_3AFAY&3G&qB{<=!{{~Jq-MP&XwJW+6{L(W27u^(%;4W4Y2i2nl&Q>)~ zLOJDD{0CynD)uQ;5f<7@qo7XppU0K}TV~CIDj4)H6umLvwr8VXvnefW6_rl=BFBd?Jt674P$G_1No63a>D@+!aVf z0d~s${j%J-jC4_N zj|^^Wqn5_#-<&js24@2vo%a~wG>fiAo&G=@Dwso?{=?WI9N!#~1a5y@()#4#6xEaq zc6exn)d(MRy&dZ!1W6F|tMWb=Cz-j{dn1B+(Y8jwS$IXFXk##f{;%#uGrJ_-&o~i^ zn21Y;g8M^ipX-y%pU=`syfaAjZIFTRocg<^m5dTNN;h(BJVo()-*ryjnj|p<3j0z$ zp|gR&YSdY!@%_2b@W6)o&@Kr3=d_a%J&Gq_^KeqCtAk0F>Yb;0huLw32F(^i;OaW%y5R{Gg%5-e63e@pRG!~iqx=at1>s+7CU0H!Yu@~b`^%5N>!Zav8F-F!@AYB}&m z%KDbSs0Ip9@?e|VpP||2_opn~YR3J+wbc`6R-(zlcA@xxN*q%Dt9lYjj-|wd`YBTO z)607ixm8ATYigodvm7Q57>oB{WXj&RM4;yC3^!^$6Xs{Q*OFRt!OwWZBkx*?fb^w+ z`ZNro)rmd?>r#8|q$nb4a(fbMPN|bpUJ4;=BJ99o~58c*aRUOdyH(&3dP{(G!G=G$LGGP7dTi z`w*u}T$GvRSN5)h1n6;|zw9M{z)eBIJfXJE^it_A^Mp&FD)epzRccr4Z1DhXctIIl zYwuqv#5ve(^(JRe;+>ew-e6K?9mZcOMFT2n7x!geCO($A`+{w#=g&`JdxQB$5_{a< z4vSM=J>A`wbxO*d3SUK@zCq{P(5x;8SVX|nzx%@nalQ92nNxpw+;36^5PnNAa^BDH$^13TI>)n$9-&#lEBD@zEDJ(hc-{p znS)ttbtE2Hp`)#Kh1V{d)usaMcT>p~PX6iJfxdbT4C}U3&tE~aWataVFyfhH z<N*|$ zV#TqOU{_6yXIG&1&ga9hS%eF*r;uOM7S4nJc&6~DfLnr#-NG+XVEf|~*b+gb&MBB% zf`^uhsiNG9^(!1P?$hVJMWKy6`ZTMJHyb+H$Vp?T^6BOcpGN`xjfo(45WMVPWeAS} zj#%NI(q9keTP)NYw$#c?4U5HhrM?>U0nc9H>g@D5Uh`zN0)ea9tlVH&^G$@-y&>Bw zipzi+?h7>lYBcTA{+KIt^#&)^YO5>Z*-Zovk-C_BZ2`TZii0h^mWeb1)X!`dXwwJHtG1!MzA3@KgalZ6$bUyr&&fzl?KDKr15QfCn+S5HWQ)WZGINt3#fEhSOcIn zr@a!>lA}+1uZCns8sLnh*P#|Tb~V{r_^&||dg@~9H$hKS@MF7+Ew=Nc^Vd;ze}_%r z5;B3_wRaup3=udslmpXH`|XiW1?-1k@XdRt&%WE@zo!3ya8us&*p#_AInUnOig=W~ zeH>92x<(>@V`+urXF;e@n@@R#fL9V^Vs~%s-nU`)Y0M}dkn0V1-E<8LtXbO2Iv-ot z=f|qEpti$z8(eVSt)KEfT?xAIK4_nQc&^iuc7Job_NjUaoLtvk7G0oyq;rDU=|(nm>EU0M_@5u(u6WMl4|Gc|G0Fe+ztGRXvWbq$ z4gX)i|Fcf%3lJhH#uB`QZvWtdzf7%SHc z&jP~I>!SSNKRf)_5C1)Z;ooZl$3zr}?dyVsoJ)oKucyHJ=5c^kObBeN|La|U_xu}l zws$+BRQ@w%g>?RZ9i$xu^b;1UvoE`N|GgP-1JOXVwab5H{?o_%mll^S z`oE<7UsC?BRQ`V?l^StoV`%*f-N6JPiO9fK0k>^tVf}O8#Un2wCy$emx zTXCITIP~Q45{Gem1to)|%nO}g%~Oalf6sI*!K6Z~K z;DXs!@1Hs>uI%V%Je>J`2c$wM_A|p_-7Trq;!2BjGvW_1Yws#QSVP>#s%k_|$LyI4 zK6MQ1!U~GYJx*QQ`X&%ivUPGk>g!kP+au;*zave%kv(g1A#$S$sYmE?GQD0zvz}RK z^lL(7K9Fn2^bt9YD*8+_Q^7%putM4M$+FE29RhsM@#MW-onsI6V}u(1>xGNSGCu73 zx06_ob!g`bK8G1(q_Dng_h~Lt6rKMi#XP?7d3ac+c;i^>f}Z&4sc<^4U_{!*htSfJ z-yt#0-u9;}ecE*5BD8nD%_N9Z%!hr8uhoC!y7-9W{0{PCC{(;sw~CJfG*#i-sOPn( z?H`2;u1$*3f*EsZ_ZCAD?%?t{+3jyv%8BzTh_@Ha1kMGA=`{N8Fxnj(9AD=Nz0hX< z#r1fY85oB?4PbDLVn&)lRcI;nVsvNU``-Gg8-pLk%xBZA*7Oy2ry8$sA{WG=Wjtjb z6)%u@`p;uUXe)VP_bZ;&0yO|@{u`2F0a5+`1G2JcxsZk^*$y08sv<ysyU~YtlV~#gOm3nTMQBIR+tY2N%xQC%P8+RgQM1*N;0t1R}DZM*m4E zX`zSP%oQhq`uQ|`FiK7=nW*KQW|DjHsmSsk?OyfJCq^uUS)Jaugzt^`PSV;;2J7aw zCiTnds0xDP{%A3I+tHN_=x6~787)`)9MpNqvl2De!`6;osIBEh$EvX@WYB*-Q2K^A z51JLMKx1*th^XRg&qdAF@kkC7NwTD93;rLLS-Uf!rdd3c;oA5mjfUd?l`w7hyL-=8Mp|2O52)gMoVFA=OuP{t^pj-pma*jXoZWxC+*tyM3ecu3Sgs z4fs3&Aqf?krcZpp+=#Oz2CpbP!tWXS!WYCLlL3bx2;0zc!n7>{Cut|TebwwxiT({= zk-o5*S@wfSZG`VJh!9(@eonw)w9!Lp!o}p`Yo=yOtEkzuKsapYvtmxYost_-4I>)>ETOPWWs1 zxg9iv{&U;ZTgMlV8P0iYPrAGdv6?6r(e;mTK5!8xmeo{$@_`O3RWHtT@AQIl_k7Q1 zVg%M2s(|!VDzPH*6NZIkGu)YcEp4AIzxO>Clyf3s1tY6w9vvm0Vyko%+|lPg3sA9s zJ$!*K1qPUqfd>e*-b#iR5GfLpnJ~CuM@**f9iT?sR|;c)f6b=@@;m+sO#+a1OU#Rs9c_Zk-`j-K$>zo*Jl-o z+>5D;1xv`Fm!K@7w*}d3_nEL(!D011kL6oGSEMYIb^YI9^Msv0q)<4wVBMemtk8eq z?QuYMXUydm?lH2RedJDXRAk3(IWdj+OzR-xmsg$#62}gB@zvROXd^a?y4>rH;) z{FO-0*Bny#b@hqN38-UUp!)V5kDkm{2*R7 z2L8s(DFW2-%02T(g=%>}$;m>T>b0w@Yl~Bo$LhXPQJUT>^jlpeHrr^9>!zmR^cRiR zqp8~P#&i_IiJLPts%Cd9TH1iGsfr zgN%I^GcZ{4G_dE5R&6hK$DYm^#%(UX?z>`#>nk}LSc(67s~BUP4@y zvbf@$le4)Vp#;(YGgRUj>vT`mn=k~h+;yx0`bb}WPi{iJvrprd{Ium~rJO8IwN>UG z6ruG55KSb~+Wyd!k#lva(Yeb&0=`;(mX>Z?Zg=5l_AqY^5_7R1)FF04Rw@>+95#is zr2JMW5lF%up3Ho-S*{rbQXOUk@=5195Z_n@og-#S z@KRaWmV2)A-95`K2esMqhi+IzD4ZoM!{s2b6hFSqd=KsdNU1H8%9J_a6g^59uG~8m zJj$8Wxi2K#I`S0$(gxX7Z}PyF+E=70k-KmpbWWhu7EdE|BHxXQFJbrbaglW7Lk>*k zyFgpT>OuKn?)+vTJre;f-yU-JEFYZ8v%ut@aKo_Urlr4q)w&)^wK7dqpsz$%ahA&I zg>4aK%UN;norz$nE$$(Uir|dK4^Hmkftxj3$wLENSQ=Si*`MfTJ?MG?K45_NtDktC z(M!DR5Dsk!gV0Utd|jwWi@b~Xf-77=h^|?#r?_@h&a;60_)d6BF`aM5RI!j&r{rgW z+HJY7(KtnKr_HkJNU`hB6a8$lM!3;hyvWCRU87L}6e_dvvgd9l@c2I-HkoBz zDhgj_Ke_S>|3M(xPrX;Qc@oIqoCS45xT`GTT+OQ0qf;d07alN?p`B~wl{#wEsCuiP z?SxrHkfnr|7du`i)UrCEEac^?j~)H z3aUkzHTX;8J5zRe{7$sYwDBPw}_q|@%p+S+pEL`>zXi65}N$^@+)b? zsptT;B~^G=zR(qJ1)qiy$SkeR4|eOd*?u-m!!iHITBx)A(aeV(shGG-a3GyjhMNB0 z&#yvpyEu8-5#QWc>r#s2PV5bjAZee}9F#e{J)-PTa~vUh(rxrx-CwzJ#*n}O=|cG` z_DN^}vm{^@$2u#g*^~rLEl|?b7UWUI#q=MEk;%MAmgevQChpIZE8~P)Pr>_ft}eM` zJWy!3kQU%!vAOlqb$tNeE~8-lhLq7=Xv%lUdAy~)Jz*%69!pBUxA<-Ghtxvj9<^YV z#?{+5NoZ`GT@NdU+SZ_)bPxQWn@}@3Cy+<=Phu8&w^XRdlYd$dG1ggLMiQXnBI1CJ zNnr%HdkxRefMgK?ZnwGck=d+YT|EhVZ2j@geDA%r#ZOmKZxbiS)-ytd6l#((C?@zA+uH1Mzwl|$ zcvaf3>CSIZ5_<1_vI#-@@a?4s3oG6x&sXYAAewohA{sSyCTRl55xiz%d?~uLHSwR- zsW6jdoza}n4ET^)=`}|D2riyo%4xKocQ6!gHy}2>Mq&ry;Id!$C$Vj%nWhb zk?CGQ{@i({pA(0RqUd+yo|*;{;Wa zZK$BQw*cX+9EX0xl-?X2qH!HUR*j$&LPyyVKsl|m{C*9=#HZdg{bH|lvxkErRirRw zN1L7DO1>qJA zh3+4#OO$UnS;#wZ0*bkFF~m)*Y$k}pEiuuC$k^-*t`=IJOTiLOR$c#|Ucwwx_;xrK zVdJm9>9DTW`|;c<=@PZ1vK>YC>qqW5)61BdBs8b<&+8~3_{T`%{cDG^)HI$h%cy#e zGhuEhn6*)Rl{bVz0oxfQ8xTUpJLYA%m~(3N|v-rGiB?8G`Ah+-_C~y>0!Bi5(ct1FPe2k9MW8b&HkP#;Nu?U>_)dtd(5Za%BYI4w2x)!Wb%A;4zq_g9_JogO=#@5gJu#E~PTu}N9gekq6lz6fpLz#*}* zniO%JA2(#u>Aw3SWPSHnuJ=TTTa5)IMo`phydflO4}CTszei8(^j?H~rGbB^(|;*m zK_goW7Pto%2*Vn3#vNh{Pf~bLVC|-6MyP{$0}SVdym!edK@|iI5U&Och$b}kW^04f zeZ!JHBMucv*mK!EzG{Fuhuds-e9ddeO~`WvJ&c?S*ccm!O~NE-1g2EkxEDDrc^G#W z$`G7zk}(R@+IvX0ysazhoQ0@6cAOP3m{FR*@kFO-NoeQ?I3+N{N(5KwH7IhB$NY;&}r-cSSI*BL3-h#NuBHDIW+#e3PdgFMa$f;AWUpvoh71G zogc(3<@tQV4<)u4PiqKV3?+`hpkfWL&Gxc|CsqUM%>n9h5vNR(f7O1qODXQ+xI*N+ zGRpKSLq=|s81U3OqtoAv!>zgF)X#w_yGT>U%Awq7#3)X19(1^;5`PZ zd5q6C{#sB>KNU}S(qUl>EJqrmjGq^y{_x?PCedB{r_g8q98_}kg6xHTyN_w<;bfQt zETsS{phrR|^kClYJ_7~br9KVh+MJXwRj@{jCo-#e;eAMep-W#t3xVdS1?$Q7Ye-z89ToU!2WV& zsa3fq*u%)v-YLC&f;fyAhHrYdj3Xf<=+KK1V4PbxQ$u)N%=X)MHZ}LCQzAr|c>%%| zoN2v53lG8qq*3Bi2fzs2rt+%?i;8oUv=oGr*{ZKpY`+ICmbEst08dyQh?SnV`dv_1 z-~S_AqeK?WHVlHYSEPhZP!b>HkbYaze9)6r74!)||C$NA4JA{d7M=K29t}VmEZ^lY zP_G6|NI92b>+=*0$XJ4<>H`MCfIcYvu~w3ZD5~M(btP)7Vt+A4gsnGqmZ|(xv;rzM z&p2Z%RAj3NE_(vj;lhhFAY)Jr0_v76Pnfw+7v7&~)~VnOduuB7>K44x(sI+5^YItb zuh3WaXVdrvGh{Z@Krq)x2^l?33iE#0c++&JV8Z(Y7nyf+(Zgi#qfyWjDc>W=HFBEf z(9Zxcms88QAoF@qlWqJhxW*?lK{^SaDSgL=^&(XkpBNA3Ac3|MxknwrpjZh#CP8^b zG-|rYfCwoTlT!lyojXiGo$Za&lH*^sD2C?En!4CVTpbE6x<+(kwe?BY7dOCdL4x^3 zZT&e&+QN+i%y{l!lDnDG?T27|ge2Gup{gg@;#VJqIuTlpL3W)6?oR)RWqV&Axn6-+ zl^#)mLh25s=P}lEY`Kow^iRoIb-}%4kfZ0Ybdv*l28!by^bQs{tFZ=QPBz3MW)2p~ zWMSzxE?NMvBKFCC*=zh(y#TO~$=8udv;BSVTu(x5Xv#H++Cn*_Y%4g+N5J?`Eti9# zfnc3AdwaQj3i#@fphS+#S5j7$U)5JF=cw?wOO&m4%D^=U+^!#Jok*}o-=rogf$Kh1Aj%RFEck`{Ct256xQ^HC_ zQ(i;V<^Xt=8oG^P$Eih;H&3jZkDPD&Iz-yqyk>t?i-sP!R@BdHBYRdT+b7TJS8n>` zlAC9PrMRvo8h|m5Wk4W@jO7{nc;N8D_XixmOtmY01gZQZ_KTaWr@YD>J+2?^J^S#S z{r5ueo<=IYa8?}x-tHrW?*`mX^hmw#dk-IC zL%G@dCI6$_nE6T@$3w&vIPac>(l#)nsfdCVs+fE4V@O88w4RykY z*WtQJ_Q%L1n2kZsxuUp`Yv=ht)?D9IBqn{r*DiKG`_4Ji(JkMmwE~n<2|+q>zk;XH z{!S7)N<@VV1d~A~KqiFyo=g0m;CCzXWm+{1S|K!NMh+JlDdg zU3?3?xrRl#md)Kmb#c5GOyM^*5*HuhlxYC1M}<>ZnQCVC8JE#3SQ7YTH1IB#o)+k` zKcG4QDFS?)*iTdR;Qg&;lZr!hnCctp4Zl$JYrkt=IXahEU^^|}yF<1~pQ)V!&{nQdOK7-6~B9Mex2}3C6GPPn!{y7cJV`;1zI@bqC zVcH3@Oq1CXGR2j3rDy)tclz2_%r?$HNQHH#2;i+ADdHyB`8FjGZCj;*)kePB(-2}n zTJToc3OK|7aKgf1rm7}+>SSIFrJB)4E`|DN>GK8tDaDaj3045UWwQmB@Lf73?HuqK-sgu0f(S07!~_LlY$+vzl2cM1}C$H(TuCxVi5_E80~iL zy*Lp`x+K^VGL(Ka{m``Yf~G!d$2S(KDr?DX331feN0R0 zZ^G%ogN2S_8D6U>Rcc;F7T~zo9kCVhChOnnxkWT9i{xjlx342@y7$f$oV_-)@`f8P zVN4y(c4RZkWOz;VPS-5^lrvpfr8{hMe^kPCKf5wWu;BMFJ1NZ>9b!v?y(&5w?TE4i z6AIjiKqvub9+Ac4aKa*Th%A@$?T`#PLlr}V-pPUEQHLYQ(bycXC`|2{|8};vxBqGv zd495_6$?p3`O(QaDJ-_Sfzj_{wx^++6T^zim9$T_&ZC=-Zw%mgyJl%260SEwI z{tYP~s1>HQ&q%!DbyoN`RkoBTEC{39&bsQiG#@eok?s4(9UwmTTg1T4_37=3 zez;}pFDd#jx!GD?yh>z(1zkEPg5uYjN+n9do~&nT&Ii_$jGR}P89E*m(%t(k*R+Bx zOdIY?N{GS(Tx13g_egpQiDymqjtl<0RytBWO=m9#k>!ls_}nI3X(e4>@wu6+D6uh*|Km`Ss_l;*B@2R3V32N-g?Ftf z^2+%)=s>c=vc#R|Z#(nBEim(XlB9C=+f3Ew%h`Wrr#Fsg!-iUIREOg4X`E0*(gdmu z{PMlfr>VQx&@S3`i5xonCGIC0<3+sG|6>j2*1uk;)+>@pC0}?CkdP6 zo7j`*4%{4nKh~2po%fOt7O<13l#1qc$5vS+eh0#hjs8mv$*>CD!TiM?Tl;-~GU394 z&VF{(RpNl}Rv&P@IVcuC*THGX&(I*TngM`Bf7bY`a0q6k2J4lV)R>v1G8u9+qvzYc z#PUwjMrNcMLKR*k(jR&pU2({ZFPpLqh;Aw5m|kx@vjUc#+n;;C8a0pv7ROy_eY=4QBu9> zd2~(Fq%HFke%9o*rVkGLwHa9zoq2%t`R(6==N$pk$Ry2Q z1A&YD$s145_)DfiB;b!*G{hX96rq^YIqBlT-Pc@riYldOycQ^-5mZsT)$8Y+keRPX zI6V|cGAVq$@%`cBml0aBi`>b?)8|u3UMg&<+Kwgc6~@0bs}-0jqZI<*xVS`@BuTz{ z4m4!BaopN>huebD8jF^6t;V)m@Tl4|@a65I;@26({hoJn_-sLAO3D*B+f-`QLo!`* zbZp4Is;nPj--~5=@k3vBDD(H)N4k-Sis!+DckL>Irt<{@c)2ZrE6!GxAbT@0M7+1v zczHXc7)Luvd*7%{U%$RF4-Zu_$!_B}_PO#XZiEoPzIf8Wu&~A{T`a6}ocGA0NWXOr z!=7Y|9ZeUfg(uF!pbQh38XF0U5I7VCsaw{CVd~TuLY6qZ9RznoM_O}h#7?(Jh;DLT z6tih2+R|yuu4XcA6vb-f8||%&;-O08#*aRI>i0O+EZ;Iwnm7acq057jaMY6SEdfji zy4G`aHPQ0-@p(4qM(} z&sMB`txy=7bfKwWrq@@hd|Pn1J%84>?`0`J;;c$hg!2-h%uj9}uGU2Pq%PCk2rOy{(HSg!GXc{;LBu46V{ zyZoEt4z9cV5xCPK1kkxAkwa_QZ!Of>zG+=}+vOzM_K*IUHGO3;CH53HQE-m^+`w&R z)I-(qOW&2fGhp!Uxd5fE3sAL72Z9^SSW1to0#aXwm!1?=#)YYb7m)L*8icTZvaxb*I9ilIs(0jRN9y z&m&Lxqf{OuZm7@Jk#7$VI~HcZAli6|!6sCtOIS+V+Z9ZXf{k;6rv~lBk4m=~5AKp` zob5453!z8GgrcJd&TfQZP%MZVmYUBh8Kx^$J2z|Dw-UuSu8BjnJLWncRg^j|vWz~> z4Q&@lvd#Kfr=|-<-TPU-pPeqDeP=Y=VdB)f+@8oTBv;Wx=Ppd7Y?|vrx5|IbzTD$< zfW>@5Yz^IxSo*j@Bv9Z<2Mt~%+c#74FuvD&a<4$tsj*k0?qdBJQT}@Da4=(Dfo|30 z`$L!AC?|EVsW&{s2)Sn?yH5149#34kBHs1v$zv4@hn>tSpe>R)d7ad(UF>|55&y(+)A*G?_(ab_W8;6 zDc$DJm-SqGf_t~OOWl!y*;#xW9y=sP(J1%4Mf(1pw?2|#Z6rbBP?Ph+w;IV$ug7z< z{PrSx12)?|=kl*i-p{n|os|1=&Kp<2&y?uCHT))UqtMFW)DY)=eiEA9c2bTw7lN^SJ zh=Y%xT9=~7ZSG~CoIii|b5DByV#;C3pI%fQ$&OM{yUm=wQR{iWwKgJYO5lrn$KvH> z!^Pq-rL1IN$cv-K9{z*VTp2IKa!%ewN}TvsRI1xfJ^SoEgToRh@q|s8K=fdlILM^f zeSU7KrzvE>YOou)l0py!Lq&YBtm6vA2eQ%#b7A?g|;|OscO~WbjEm< zfxTOG#Ibv+-QE2M+w*cM{6G;U;bpuhiGAEKdS;4t9?39|&+YCpKTq~zWO1FfM9tcD z5$o)-qwbe~Q6sUthp>KSvQEW`5O;QXKsY6GJ)pBlM@Af;VpUbPV=kYVR9|P+}ZZW=^!ZeU8vF(E-bq|^k``eJDkU} zpMCK9qEwla*~7w^ED(t1TV;_;;Q$15X8tt)_!TxrN80tiM2Qqm4E_4r+XEekXZziE~ow@3I zq;Xo)jxX`Ew+gs1x}uM!KN6wQ(hl&t6R64W{2|#Re77`jo1wM`F8YsL*PI4LKmFhq zy+K~RV;kl=V~pE|&w91UVRd=VcIfB%`P?Ubvq+VndL8`NsM^)MQNQ{h*qNuL8}9@R z2a&Rs^#$=>M-Mfd2hcewxVHnuLjh}|gU4%(`avB?6$RL2Xgf$Ede}{!3qKHz;QAVa zxP$nFFS6}c{1jrf)x==K2fs?Jr7Ija6fHf6la^eL@Zlr)lf{9zqUB%UKDHFPyxo(m zoyiGC1Y>vF{9VE*dLWCtGgMG}c6G(Y`CxtQ$o+G^F7U3$C0|{6ihpQ#+8lp$?!oeC z1U`!Y^WnNy1Q-35o#S&VVvv6)0^4(K?qI#FCWbR@0zr6lkmXQPx>MqjE?oTqDR|Lp zUh?7Bk2u+Ry&{^a;D3TPvg{$xPFH<=)q&#JD1yM z9+-cY5`kt}!raTxLBfd$(p9Ucj$VQd56HPV54M^IZrJNl!T`|hSVATOnF5ECIhUI(0HEpa(7PPtWiOTwQ%7m;{KqYoP_caS((qLzF}sSdZ?!%eTQ zTu^J=L~14^43lH1=R+BklbsCb-dv!_=~o(TF!#0M5TRXjfh7cOJX0|A#77%+m`=Mn zB<2eI7;7Iz9w2!B>}=M25tqug@}8~EKm?QZ%X{ziIeG^zpV+v=$@{s62juWjDvu1t zqsgj?+bFAhPjCB;%D?a^pIxAoVW#Yg3yN#G~AE#_tS7`Y1KFQsY7^xk7(I` zpKy zo{Hf-oc^mrvh6WMRNh=-XbKs_uTL&Tirz;3Q@?IX={7e^BHt`rogDIj+AKTmq(2r{ zKL3Z``Z1-)PCYslj=B$#BX93*ZSEPHQwoTpcVjgc_hRvztAwYO=R?mwo=7ULyJ#oB zPu6(Xf!q*#xHTO^jEvl@IX$$6?e~1MKruv11>p@_Xv;PReEBpCtG)Twc)gU-UKG?O zp|LrXgz&QUo`hAA!NxRtdGXQdR_k5o9Sy^jEPpC|!pZ{N`}z#xG~`y|?p~gQt@Fec zb)-Zac+*oOu%jLwA!gb71I4B+a&fn7O9HwayBGZ87mDp0+e_b_N$o*lpd5)Je+Ax4 zUTkpJXt~#bJKRJm^A{99=Wtf8!ba=Ur+Ddn+yFdwlg7@`iFRMF{rK+?KbkDiEUZ>M z)acA8tCp2E@USURf9n5yoAC zvogf3m;kZ@w!w8)fAzrj-Tp2C;|*`4av|Bpp80uBhz-TJBh9s!ozXl)kFc+zSpeNU z25!dPFXXa$j3ie7S6p&nxPWv*MpRs1cVJ0KyAYV#&8WCvFKt5Q`XQb&13@Qe|73q; z2`|j?-SD>FRe9z$_IRK8#nekaVJFk$9arHy`V&i1h{zpwr_X61vg8Bx~}Gjdmoxo z?ckoSgd}+NICWEfPB@pd1V=GX1CASAnrYW1zj8oaSX`AQ1ewbQX_l>Db0#J{+ZwtK z8D$9v(FODN6$a+p;+`-`?7<#`bic~-U?18M1p0e zbr%q}I{Z5CAHptvgi=03ML98w9$9D%BWHvh?*%Qlwp}H6GCyQ!_Wh0)wQ} ziPb??3%67SutNr%|8j&t-*fncI7wsH`n73u&L%}?5f>J}h4YL>J=j{|u3U`kP54z@ z5?rfc&X2txCJ8+t@YTB)c|(nu@(IM(t8BdbHnj173+5WsGKb*ck(m4YT zPt>WOuemrua;&^x1kZj{dn3oRHawI7r@l$K|o5$4| z!=-{KlE$Q>kjEeCFfzR8!^)h4butnJo_PE|H*Bj4RhDHk@g;k%Z0)2=OwK?83gx0A zvaj5!SQ=3Ik!=m~TIz zU6=ZuG?KcL7d02HZ{}_Yd=Sqc@cdo32fp{Vka;F{1ccy$Jf&xghZdxbe9;%GXTS$j ziO`mS&BUn6&SyT!C=Z4@<0ra49^Z7np77OnaT49;7YQm~K)mJrFP6;5lILn0z!m?% z;b&wh7$u`2RKMpi_()hU!((G@@bl}nEw-b?RyD`YQA?S;7}2{Za`VuJmSNezc#bmO zsETb25vL5}gI_0G2~6Y75H$~l7jxhfzqIT?Z2KB$KwUHtxWyRWFW4Q}t6BPl;Xjt=!c2yIZa#mp>r^T%IMOp*PDR6v z$p3+&HA|2ll=4GIbH_oI)5QGZ^*jokWRIhRRBF#a3D_EBUbuqHyk z`y<#h>r)`k6lzI-m4p*oNj%MecV_-#e$rbS*JI)5$%FhpuA(_=p2(kw0z8tRN({rD z`G>v~CRF7i&0)l*ZIgt)b{EENM#qQ0fA!XnwORB&SU7E}=yIt;Pi^SK1l-2*Qu@9ZTg{PoT~;<#?!qZ$^IHToCniCFJ}-3+rWGf`;jyn! zACjwN^d5ez{3QsDc7)>T0+4@NFp(+VaUBrWJOxs<nXPAn8M;3~%aV`f<_c1k1r&VHj9S5f>5JpPFyHHr#n zJrdZ3y_Jjz{;SqgY4u<87EG1IG+ntB|wPE1a1WL`iix&me?m+m|K zBel>eEHsPX1z#L62~*8SE8`}5VuO1lgZU*Hg>Q%hUBVj5@OGsb3STqVG!LBels#f{ zW_DcgP6~0Cq5phCll?0{3Jrhtz^d+Nx=DW!DG95@ujYBRq&_~yr|lRgYUsQBAJG$Unb z{?5qZO@^`~Hc@60u~}j3-z)h9nVn;Zx&@)BT#{r{6d+AITlLh}%#X4* zEE-tH#r;6>pB>0Ik3_A>b{axpDWwty(>KmP8`~Phf|~ji^lhO1=1USn4IsJHqw0%w z+smuEnSSec4*czRqsLBSXS?1!D4^-u5puT&L&FewA?HbJu8LT_+FTkp9QV%_ni`Y6 z#L|cJZ0vwF(p32E`ieXBUCYNNS_;wFe9SOo5p#>%9yF;lhrf`4+pME0t<8ZffBOn^G|Qd+@$POmNXmdA@0OuVPNC?>$$ zeQe;Czzy&Z}qN#<0QR(U; zj-=Z`GpCt?XU}Hi(Km)Tk+KAG+*PK&Au^Vuw1dFNpMyWhE7`LX$Ph5kuQkCogHF+8 z`%~VG#^Oh2&yY4DL0*+%52?j)&OkKtRY^n0hN%E-7KXNPK$ct}Y}s+2D%c!62Cr>V zsdIG4FCuNXvkU=PhbgrDww2usTW@PyHZN>pT8(hvB%TsE5iQB9{#d9>_!{|@ZK9;2 z+Nzoi4xn*hYIXtvkr5y4F<-?e^{I#1bTjxUm6_WYwNq>libQ08)$QhnpAGUDksZWz zABC5Yt-15?bQtu7Z_S&7V+?uP~>n`EWU+?;0eMsVb^rl^H2FG^kYR4`= zvz!T!}BTd&S))EHW2-}_r>ih@cfL7){~YO{ zlF1T9mNJ$^RE#A{6h*_yZjhx@wv2rbO<5}>#?oZV*2Gw{%-AJcWtXL4gehdpz8l~B z!TG$tpYLDr{h@wrJkNbU_i|nD`+dEy>qh1rk_HNMw(Hy}nH$~WwsvQV3%GVRvybsh z7O4an<@!&5>ud?o7F0=H2iB@JD*D(iWWmr5=|_J-au+HtK2_%)w~6OgRC;`-;~$I_ zj#;ajrT}=#60)mbXI|}XF-CoOffU|v3fW*G4R=rR%UlaM zJSk;iULsHA*P<-l5`F%g^zSld=wV3BIj2s@1?Dhy{emPkmK5POf$z#PZfwCE$xAN zC|k%4l)o2e2ONl12Ov=(8@Y6QxRfMEwgH~ii&s2uG&7;a(N?u@a?o0hK;#9dqcRr* zKW=z3YOEa=z9qC?K@}`e*r6k$rp+iQ5!AA;;Ua)`brH&MP;Wb zlw>x*;__HV&hUjPQ@78OHSPe%LD zScS-r(dy^QzB_9OWq{+)Ie&NN3fP!!joN^KQ4$El&bWIc_sW}HGUo5;MS|1DhBRSN zyqu#%69G@{=E^bqSc$tf_(jyoN3nyFHQ_^dk;xqdH@s;dVp}4Z!~kA)I2dC1GW|%EWMe}>sKXxW?=B~38okjx%JGCMcQ_Tsb?a^GDc-Nshvq7Lk z(fVncO;0`xsV7ZCtG7wiNstInn^|f13sJE+I2y_WL}?rHfr~&_O$3IZin%I$kL(L! z%E&;Q{NU_rbYKa5Q2p+(u=R@x3v0qiR&he}sk~QqpKJlzouLDAahD!nPE%SfFzkJy z<+9RlrzMMO$woD@i)FyRJXFB}JU+mqcn7*n78oveu6PUYb>qS!Q`C_Wz122sM{9eM zxaUo`mADs1>kU0}elGHuqm1M4egg{6AXmpZ*Y=eN1Ek-{_276n?6^jO=3Ia#O zp)V77oy(-+6Q~b{M|3WGGO&uM^5<#uVU0yz=ZCCXT`Ue^Xr4O@Nv`27AkSOnF?b_4 z4-XUrfO;vx#9jrWwIM4XD^y7r(UHBFI79fD1E+!{n;ySpCfJG9o?}&_I`;D;b{C7! zEBB5vami!W>2-Y$;*wi!CICr9h86*h>m>x5!4WxB1(mr8!bFuTo-T{fDbrIh4Yw+q zW-utGq9e}POl3HcHuZx;ra{CpC{B5$HcMk$GnIkvlh_h}a~2RG2!c6}5!n?EKx--l z*@ zywbG+Gq4420D?^T6d+)CzqXbA`d!ZC0I8s!N1BHRX&BgS&6yzmfV2kjp0?IIkF?Ho z_+Ul~EI{WNE@4gAs5`Ja>)b!{j!j@x$Xhx-!MyZjb|zQ?pi8|@3o-1!G=j|=Sl(~j zc8p@{3a7Kp|zPX7KB90w^`?0Zz5O@L&5ihCnn0s7Ao)Mb_nQ z0_|vHzIfo|kYSBW%Xu?K{P#!dscv+Im37W0juR0sr)cBG=quZU5rVT`*ZFrIhmKD9 z;ngl)fT~ZofVozvN#ou3gyjcyXTa%=c?4_p^u!GY)^e~$ibY?lgTQg&gJ$y2n50B) zE4CAT?c%v=r;dTSd>fp5<3lak!IxioB*I=f> zg&xqc@-$m{O1LyQrWq(cwa$y59IrO|dp+D*J%bY%weKz;indg*;7+w&dNh`D>21np z|AAJ%H^*4}k^Dlg8Xm4*3T?pM!6xtkt?L|cB12Q70_^NHArSOr8W}NGBW8kFo4o+m z45TxG?mXm8Hn*Fa6Fap!H{ae5Bj~ztim6%7MCqNf^>F=M&;wXt3M}lGHpH<)-K;%M zCmLSnB{0<0?yYr~LCDcg@11_r%9n)<8}>ku5OzE44rz5|eN%gJr+HINw!1CEmV89K z{VxFpXXk*!im*4jmc=6`=Qv*@&pns9YP#0FBOF8|A)k%aHZp$4n>BahxG(Y^02l!j zKpa(IgCH98JtZod`nv&*bMWVeDOm&W{im1)Pg`o&=dWjfN0%o(``FPf^}d4Vmr-X| zh;2?`B;;swz72Q_R&TgGCQ4%TJaLca0|HNu|eZtp*4msoAn+Qk;4L=8yuxZ1nwB=pHga)@$(-j#rCQB;cMFk=zL! z<{<*$oS20!y8ooK{G?*OL;O$A^au-c9Sf`Y4$9GHst42eLiXml2MmVq`wo&CJOIZP zg-g5p&DZ{^jpEf*bxg7EmNKp4B*QRNQrI>dtbPURy)SzoH9#j?i2Ed&;kgw7)3qkP zA(w+3$f?m36+XrCp+JirBUNI4w9|AY927Q0ZXEJMg`Q6{O)gB%W)BM=EHUnrJJ+~V z(+917%d>xeBjBEVe!u%-sEoQ@<}9fceamSBY~7Jq{^YErnPL0)T1@8B?%6&9vZY5b z`l$C$1~2@Rzmy0JO^j#+aP_QZC84!{fPNAmV#{VCQ#$vM0*&#R!_@H-T|m<4;oO7K zZxaU^?ggVc)5&k;OrlNANx2<_HZr#K*z;z}UyUC?9}<8R%ga?vW1l5O!bC2B<8!$m zHARgWXt|n5@bp#_Vxmx}zru7u4y=|HrLa4;qxIVB0UR5b8#V&qHYKUUElo8ku#>KhvR83rqV)qJYm>|=0YP>KQL zcORfiAQY=|^qQKT37n=$ZY`vnUZx7r{a}2?TJ}@gNWUz@H3SckDPyrJz=|AJ7q0Kw z6H6^j@hx%_nq_2FS?U{iy-fgb9sY;-c`4rlmXCv%I%7K&m$jSwN10oyCku z<|ZkfSU5bMQ~rADzJR1=-gb(`%U?A~rb|--Ak|x!aF37oz9EE%>F;rZFsY}4&EAO& zq)6A_)x4i9&sL{7xa1%=)V2M^PzG)>YUH7D_mD3BQLHgi3>|lr@XZ2crkwp`2id2M z%g98wHkLSNm!V%S?nUXS{nS@7#MZ^3tq1V|I$}aPRos6uums=V!AP{Wn7!n87LCR! z$#zU~HtTJ7)jYU-ZfhN(>OJMYec-~QHm2`U%B&$SaMErdumO0x<2Lx+tA6=GHR9Oj zn|J@xty>|)Oob2Lu(_b=8p&3fou?!Q_jW=Z8fj*px2ZIU9z^02GZzjkd!rSZ{FlQ# zY2xs_lm{|F8ndQ4fB$;mKAr+lCDY@C{#KBawPl7ZIE^VGEo@e;ePaqAd{Qf1*%F;u zu+np0b3(iMM*-78z%Ce4$5^)7f`nyvx2F);t4aEwT=sU47M-ZedXcf1C;9u#rN5|x z^CVtJlp>HE;Ts(j!zn(7KOI<3?=nB(GC^hHG?g+kJkD}R*=dQzc4yhH zHlix2rRDO~eHAHCEsvSH-~wmaMtjSO;GwEN4kbAA8u_qLr>;AYR8Tk8*KDlAvHk*^ zy?V@ixg*ks!+8UBu>>g4#Ax}^d}KXAPT z|9o}r!}A&2ms@Ldi!3429}uDMzwPWyPRPjp&CFv;o7lEm%hWh2dqE8mAm4%Whaj^1>~MSiJ0^VPhfCs)88Q;bq*{H<6=j6nLqR|$#r)^w zk=C5+n5Q{b;^++FXj4IZ5C0!5559NxeP=Q9x@BaauY&5?Zc2%1c66eTcm>r!1eEAG z%aFYqi1K28-vc7H#+5>283C+kLRMza2Rj2a>PBt^z3wT>h@UW3$WZMxeJMM@cwIbF z^G@kS;y&a>%eU#9eSz!??aE)0rMT^u>F~LA76GFD6S=;=;C_PC8oE#CmJloV_G-t! z6qU@&F;!m=27-{-jHG|`iriab+8fKOT|DwVP523=JXmvCXUTsy`^`drZYCuR^GT$X zo+RGMe|+m}aD@{4UxAB`cRA&c5BOxqDATTUDS7TxQg-k1rq5z8xZtHJ8MmzUqyJ=Ybo^k!>BtS*)_IvPY;>S5AAKm1Y19q(aftIuVcks1Lh@nN+cN0|&okgbL~egpPr3$gYjN-ap@Hs}<_0 z)K*k+*o@30PWWP=<>i%^$0LP`@LQO9ZV~2@Su(_!(Nkvlb46&-NXU0-Y`KSI;aks; zW~4s|MV-az?8kcRW?%2Qx7sgs_<$L={Gd4;QH`_{Y24)b?TfjYn<|-09BZ~_mz(C7 zJM4P2&n$P71&9lSON@2AQsdCX#{?NPk*e@0<%yB$=|kx}+v_0?V7Y)5#ds>>vT%ox~b(Ts>+yExf488ozL zZGH7W4T;YCy88HI(Z`^wAi~&`HPXmeu9RE4tHZv!UZWRJ^)q4;>XA|{ch-+UH^FXSuBMJ8-%kZi%mGI;a%UCc>>RSY!l2Y=;DGm9QBgQ}Tj5w8{-VI; zt$FLo3C)S)JMtubUx8QVw{(c!6jxt;P9jgA($dM8atDiT)#lMd=F9G;taC2rgBo|3 z*BjQ5hj!uiNvJr(#2nZD%@~r=Pz))FkC5L1)RSyU@2FQ;%M}({wlXqiTimfp2`@-? zaI_hca4bQ?(oDxl*NeB|MLV`${Dko;=$VKHm}MTLs(p;&!3Zfab2y*k(*aTuz42f= zLjGRYjDzN+%=v2kE7hCBnxiu3FFEo>XP^(95eXltP32+*t3?RNu#yHpL9tFGnvS>|wEGz;${4CgaXhyW7&( zmqhwVo}(W$_!xZ#bG7Ay6X}z{Kw{JxTh@uSChwala`4I#gAdH*3xK_=;R#mjk1Z5(7H zNS?!Ck|z0&a`+9(k40=$x)EpPR4L%NyWxJjD0m z#CI97&GkwuN#*9`*mz$ZYO6fZlj33JOu@iLbqM^Jk_kWHje(LHERQcaXvP*H7($a9 zkV6U0+c$4c&@LRQ-qyS8crRvf<6I_tspmX&2c$fdzJ=l6y9pIkYvG5BIME2O$U#^g za$e@wWY3pxy5$WVSmKcPvNH&C!436Ztk&b#8Wn|na_mLZ%&tP3DF{dASKsbw_6tnf z0xtQulT`sMw>OFU!;)i`$6K3l)zT$!i@c*~B|apP-|Ii`T^U&Z;VMbkQe$yw7&z>yTS0BMdy$P-miv_|V{tjla@zC|1=k^w(AAQ%^zJV@rA+M%z ziUrNLN>I(DNaSpqY46&SLbOV?r_}e)zak=Ab*;U=(K_E!V82$YZw#-{;2qKr^}l(T zQ4OrU^xT`ooZ-%h_aJNoI62r{yp!_i{kYxb4y60sY!!H(4`Lua07v|cFA_@|Xz8nc zmVOfMX(ZvOiI8Y0Km;_%qEnB*yWe=*)RWxML&AIwCT+-Un>l_RW{$7@PGjH8QBt{A$=1(lu1Weu(axuLv+!_3QQ&)oa0o8{5we@r~HG4kOdH#&|(B zW3HfcLS99RKLaYIeU{OhgN^haVc`Q-H-|%HcBK<4@xR2f=#8AFqCyurBrwlpuJ}J4lDz>&Y z^n)1H9b9gTr*9PV(#SDsvXMwJ)tRPE;RO7q^qaL`9UW=)R&aS&j;$26^7|>HNzN)K zN?~w(a+i5C_sqTJY0UKKfKy}5Y2ey6M4pT9+~KNRol(;E&y!JX*@Ym5-FES z0it79e0B5RrK)6I?RH+*ooRoxF-X9@A5DYlnN*zWtsK|WMPMyO-d62ot$9#Zbp}nz z4;;Le;xHZM;?G&DMDYq?JL+A5?e9o$5!=ZqUv%A0V?@k5AI+|;xPUxD1J7*c)!B`7 z8W4QTAJl#A1rO+8i>b7N$Jt)5X~I^e%LJew&4UNl-zQ`s!^!&HGH`n;5!u*|?1)g? z-9fc^V6H1z<#x$k!1lbW9sYakkI`~tQ;$bNi3)$d*!#2nm4H-93NXFF@5RBK=vK|F<*XSs=~> z)IPVunLTR%zn@Lj0E44=s1*OdzV1Kmc0d}EmBzN_Jr41|+x`8SfN%IcoAkdIEl7j; zy*GcGpx>4ja<{)73V;W{{U+=;JotYJ4|WdsM1&?W9Zr7x2l#j6n)cN^Rm(^J1BQ?V A-v9sr literal 0 HcmV?d00001 diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index 2ce854ee..91ca5d6b 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -1,10 +1,10 @@ .welcome-background { height: 400px; - background-image: url(../img/technigo.jpg); + background-image: url(../img/tech.png); background-size: cover; background-position: center; background-repeat: no-repeat; - background-position: center -550px; /* Move the image up by 50 pixels */ + /* background-position: center -550px; */ } .content { From af3efa1832b1ffa0684ec739c6c3a940ac9e7acf Mon Sep 17 00:00:00 2001 From: malvinamaria Date: Fri, 14 Apr 2023 11:23:33 +0200 Subject: [PATCH 21/27] fix spelling error --- src/pages/WelcomePage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/WelcomePage.js b/src/pages/WelcomePage.js index 8056fc14..47624151 100644 --- a/src/pages/WelcomePage.js +++ b/src/pages/WelcomePage.js @@ -13,10 +13,10 @@ export const WelcomePage = () => {

    Hello there friend 👋

    -

    Ready to Rumbre with React?

    +

    Ready to Rumble with React?

    From e5b5efa45bc92ee6f41d6f1873c70ece8d2a02d2 Mon Sep 17 00:00:00 2001 From: GG_Cugs Date: Fri, 14 Apr 2023 11:41:37 +0200 Subject: [PATCH 22/27] Update CurrentQuestion.css --- src/components/CurrentQuestion.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/CurrentQuestion.css b/src/components/CurrentQuestion.css index 2492353b..2bc96ebd 100644 --- a/src/components/CurrentQuestion.css +++ b/src/components/CurrentQuestion.css @@ -20,3 +20,9 @@ flex-direction: column; gap: 11px; } + +.eslint-hater { + display: flex; + flex-direction: column; + align-items: center; +} From e7057a8e4e5b74280d471d068ecca85860e246cf Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Fri, 14 Apr 2023 13:50:29 +0200 Subject: [PATCH 23/27] nextButton styling fix --- src/components/CurrentQuestion.js | 1 + src/components/NextButton.css | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/CurrentQuestion.js b/src/components/CurrentQuestion.js index 50eb2ac1..2055b0c9 100644 --- a/src/components/CurrentQuestion.js +++ b/src/components/CurrentQuestion.js @@ -8,6 +8,7 @@ import { quiz } from '../reducers/quiz'; import './CurrentQuestion.css'; export const CurrentQuestion = () => { + console.log(quiz); const dispatch = useDispatch(); const [goToNextButton, setGoToNextButton] = useState(false); const question = useSelector( diff --git a/src/components/NextButton.css b/src/components/NextButton.css index 00400269..40a86b90 100644 --- a/src/components/NextButton.css +++ b/src/components/NextButton.css @@ -4,13 +4,13 @@ font-family: futura-pt, "sans-serif"; font-weight: 600; transition: all 0.2s ease 0s; - display: inline-block; + /* display: inline-block; */ padding: 18px 30px; border-radius: 50px; text-decoration: none; font-size: 18px; border: 2px solid rgb(10, 37, 255); - place-self: flex-start; + /* place-self: flex-start; */ color: rgb(10, 37, 255); background: transparent; align-self: center; From 72c9078e1093d9932945452f18f842a5af984319 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Fri, 14 Apr 2023 13:57:20 +0200 Subject: [PATCH 24/27] answerButton alignment fix --- src/components/CurrentQuestion.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/CurrentQuestion.css b/src/components/CurrentQuestion.css index 2bc96ebd..1d91b898 100644 --- a/src/components/CurrentQuestion.css +++ b/src/components/CurrentQuestion.css @@ -9,6 +9,10 @@ align-items: center; } +.answerButton { + place-self: center; +} + .answer-buttons { display: flex; flex-direction: column; From fc65f82808d0c8fee87dd73336e0d22ed7565145 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Fri, 14 Apr 2023 14:00:29 +0200 Subject: [PATCH 25/27] still fixing alignment --- src/pages/welcomepage.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/welcomepage.css b/src/pages/welcomepage.css index 91ca5d6b..d2ed2ad1 100644 --- a/src/pages/welcomepage.css +++ b/src/pages/welcomepage.css @@ -33,7 +33,7 @@ button { text-decoration: none; font-size: 18px; border: 2px solid rgb(10, 37, 255); - place-self: flex-start; + /* place-self: flex-start; */ color: rgb(255, 255, 255); background: rgb(10, 37, 255); align-self: center; From c037f8efa8e3e932045f90f0cf9b671f240b66a6 Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Fri, 14 Apr 2023 14:04:00 +0200 Subject: [PATCH 26/27] added live link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c3342f28..7a2567a9 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Describe how you approached to problem, and what tools and techniques you used t ## View it live -Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. +https://rococo-pony-134b75.netlify.app/ # Running Locally From df07bb43df46ee790ef47e7b17f84f156278d2cf Mon Sep 17 00:00:00 2001 From: Sara Battilotti Date: Fri, 14 Apr 2023 14:23:29 +0200 Subject: [PATCH 27/27] bottom border cancelled --- src/pages/question.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/question.css b/src/pages/question.css index 6dd08181..3f97b3cd 100644 --- a/src/pages/question.css +++ b/src/pages/question.css @@ -1,6 +1,6 @@ .questions-background { height: 100vh; border-color: rgb(0, 37, 255); - border-width: 16px 16px 16px 16px; + border-width: 16px 16px 0px 16px; border-style: solid; } \ No newline at end of file