From c14608dd7656c4a4214eabc804b1df6edef5b7fa Mon Sep 17 00:00:00 2001
From: Zan <62830223+Zan1456@users.noreply.github.com>
Date: Thu, 13 Mar 2025 21:08:24 +0100
Subject: [PATCH] 1.1.0
---
.gitignore | 9 +
.idea/Firkaextension.iml | 9 +
.idea/misc.xml | 6 +
.idea/modules.xml | 8 +
.idea/vcs.xml | 6 +
.idea/workspace.xml | 45 ++
LICENSE | 2 +-
README.md | 95 ++++
absences/absences.css | 520 +++++++++++++++++++
absences/absences.js | 462 +++++++++++++++++
dashboard/dashboard.css | 238 +++++++++
dashboard/dashboard.js | 446 ++++++++++++++++
fonts/Figtree-Regular.woff2 | Bin 0 -> 23324 bytes
fonts/Montserrat-Medium.woff2 | Bin 0 -> 127352 bytes
fonts/Montserrat-Regular.woff2 | Bin 0 -> 126576 bytes
fonts/Montserrat-SemiBold.woff2 | Bin 0 -> 128544 bytes
forgotpassword/forgotpassword.css | 202 ++++++++
forgotpassword/forgotpassword.js | 152 ++++++
global/maintenance.css | 51 ++
global/maintenance.js | 65 +++
global/navigation.css | 257 ++++++++++
global/navigation.js | 103 ++++
global/theme.css | 160 ++++++
global/theme.js | 127 +++++
grades/chart.js | 20 +
grades/grades.css | 716 ++++++++++++++++++++++++++
grades/grades.js | 586 +++++++++++++++++++++
homework/homework.css | 527 +++++++++++++++++++
homework/homework.js | 572 +++++++++++++++++++++
icons/absences-active.svg | 1 +
icons/absences-inactive.svg | 5 +
icons/close.svg | 1 +
icons/dashboard-active.svg | 3 +
icons/dashboard-inactive.svg | 5 +
icons/dkt.svg | 5 +
icons/eye-off.svg | 1 +
icons/eye-on.svg | 1 +
icons/grades-active.svg | 3 +
icons/grades-inactive.svg | 5 +
icons/logout.svg | 4 +
icons/naplo.svg | 3 +
icons/open-link.svg | 1 +
icons/others.svg | 5 +
icons/profile.svg | 1 +
icons/settings.svg | 1 +
icons/timetable-active.svg | 4 +
icons/timetable-inactive.svg | 5 +
images/firka_logo.png | Bin 0 -> 1427 bytes
images/firka_logo_128.png | Bin 0 -> 10004 bytes
images/loading.gif | Bin 0 -> 16742 bytes
login/login.css | 385 ++++++++++++++
login/login.js | 201 ++++++++
logout/logout.css | 138 +++++
logout/logout.js | 97 ++++
manifest.json | 119 +++++
profile/profile.css | 487 ++++++++++++++++++
profile/profile.js | 506 ++++++++++++++++++
roleselect/roleselect.css | 380 ++++++++++++++
roleselect/roleselect.js | 183 +++++++
settings/index.css | 276 ++++++++++
settings/index.html | 103 ++++
settings/index.js | 141 +++++
timetable/timetable.css | 822 ++++++++++++++++++++++++++++++
timetable/timetable.js | 543 ++++++++++++++++++++
64 files changed, 9818 insertions(+), 1 deletion(-)
create mode 100644 .gitignore
create mode 100644 .idea/Firkaextension.iml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 .idea/workspace.xml
create mode 100644 README.md
create mode 100644 absences/absences.css
create mode 100644 absences/absences.js
create mode 100644 dashboard/dashboard.css
create mode 100644 dashboard/dashboard.js
create mode 100644 fonts/Figtree-Regular.woff2
create mode 100644 fonts/Montserrat-Medium.woff2
create mode 100644 fonts/Montserrat-Regular.woff2
create mode 100644 fonts/Montserrat-SemiBold.woff2
create mode 100644 forgotpassword/forgotpassword.css
create mode 100644 forgotpassword/forgotpassword.js
create mode 100644 global/maintenance.css
create mode 100644 global/maintenance.js
create mode 100644 global/navigation.css
create mode 100644 global/navigation.js
create mode 100644 global/theme.css
create mode 100644 global/theme.js
create mode 100644 grades/chart.js
create mode 100644 grades/grades.css
create mode 100644 grades/grades.js
create mode 100644 homework/homework.css
create mode 100644 homework/homework.js
create mode 100644 icons/absences-active.svg
create mode 100644 icons/absences-inactive.svg
create mode 100644 icons/close.svg
create mode 100644 icons/dashboard-active.svg
create mode 100644 icons/dashboard-inactive.svg
create mode 100644 icons/dkt.svg
create mode 100644 icons/eye-off.svg
create mode 100644 icons/eye-on.svg
create mode 100644 icons/grades-active.svg
create mode 100644 icons/grades-inactive.svg
create mode 100644 icons/logout.svg
create mode 100644 icons/naplo.svg
create mode 100644 icons/open-link.svg
create mode 100644 icons/others.svg
create mode 100644 icons/profile.svg
create mode 100644 icons/settings.svg
create mode 100644 icons/timetable-active.svg
create mode 100644 icons/timetable-inactive.svg
create mode 100644 images/firka_logo.png
create mode 100644 images/firka_logo_128.png
create mode 100644 images/loading.gif
create mode 100644 login/login.css
create mode 100644 login/login.js
create mode 100644 logout/logout.css
create mode 100644 logout/logout.js
create mode 100644 manifest.json
create mode 100644 profile/profile.css
create mode 100644 profile/profile.js
create mode 100644 roleselect/roleselect.css
create mode 100644 roleselect/roleselect.js
create mode 100644 settings/index.css
create mode 100644 settings/index.html
create mode 100644 settings/index.js
create mode 100644 timetable/timetable.css
create mode 100644 timetable/timetable.js
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..489ba42
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+
+
+*.zip
+META-INF/mozilla.rsa
+META-INF/cose.manifest
+META-INF/cose.sig
+META-INF/manifest.mf
+META-INF/mozilla.sf
+dashboard/KRÉTA Iskolai Alaprendszer.html
diff --git a/.idea/Firkaextension.iml b/.idea/Firkaextension.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/Firkaextension.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
+ Modern, testre szabható felhasználói felület az e-KRÉTA rendszerhez +
+ + + +## 📱 Funkciók + +- **Modern Dizájn**: Teljesen újratervezett, modern felhasználói felület +- **Személyre Szabható Témák**: Világos és sötét módok, kék és zöld színsémákkal +- **Továbbfejlesztett Felületek**: + - Átdolgozott bejelentkezési képernyő + - Átláthatóbb jegynapló + - Modernizált órarend + - Fejlett hiányzás kezelés + - Egyszerűsített szerepkör választó + - Új kezdőlap elrendezés + - Továbbfejlesztett profilkezelő + +## 🚀 Telepítés + +1. Töltsd le a legfrissebb verziót a [Releases](https://github.com/Zan1456/filc-extension/releases) oldalról +2. Csomagold ki a letöltött fájlt +3. Chrome böngészőben navigálj a `chrome://extensions` oldalra +4. Kapcsold be a "Fejlesztői mód"-ot a jobb felső sarokban +5. Kattints a "Kicsomagolt bővítmény betöltése" gombra +6. Válaszd ki a kicsomagolt mappát +7. Kész! A bővítmény automatikusan működésbe lép, amikor megnyitod az e-KRÉTA oldalt + +## ⚙️ Beállítások + +A bővítmény beállításait a böngésző eszköztárán található Filx ikonra kattintva érheted el. Itt módosíthatod: + +- A felület színsémáját (Világos/Sötét) +- Az fő színeket (Kék/Zöld) + +## 💡 Támogatott Oldalak + +A bővítmény jelenleg az alábbi e-KRÉTA oldalakat támogatja: + +- Bejelentkezési oldal +- Kijelentkezési oldal +- Szerepkör választó +- Elfelejtett jelszó (részlegesen) +- Kezdőlap/Faliújság +- Jegyek/Értékelések +- Órarend +- Hiányzások +- Profil (csak dizájn) + +## 👥 Csapat + +- **[Zan1456](https://github.com/Zan1456)** - Vezető Fejlesztő +- **[BalazsManus](https://github.com/BalazsManus)** - Fejlesztő +- **[Xou](https://github.com/Xou)** - Designer + +## 🤝 Közreműködés + +Örömmel fogadunk minden fejlesztési javaslatot és hibajelentést! Ha szeretnél hozzájárulni a projekthez: + +1. Fork-old a repository-t +2. Hozz létre egy új branch-et a fejlesztésednek +3. Commit-old a változtatásaidat +4. Push-old a branch-et +5. Nyiss egy Pull Request-et + +## 📝 Licensz + +A projekt [GNU General Public License v3.0](LICENSE) alatt jelent meg. További információért lásd a LICENSE fájlt. + +## 💬 Kapcsolat + +- Discord: [dc.refilc.hu](https://dc.refilc.hu) +- GitHub: [github.com/refilc](https://github.com/refilc) + +--- + ++ Készült ❤️-vel diákoktól diákoknak +
diff --git a/absences/absences.css b/absences/absences.css new file mode 100644 index 0000000..d31f76e --- /dev/null +++ b/absences/absences.css @@ -0,0 +1,520 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; +} + +@media (max-width: 1200px) { + .kreta-header { + grid-template-columns: minmax(250px, 350px) 1fr minmax(180px, 250px); + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } +} + +.school-info { + margin: 0; +} + +@media (max-width: 768px) { + .school-info { + grid-area: school; + max-width: none; + display: flex; + align-items: center; + gap: 0.5rem; + } +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0 0 0.5rem; + display: flex; + align-items: center; +} + +@media (max-width: 768px) { + .logo-text { + margin: 0; + font-size: 20px; + } +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 0.5rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; +} + +.school-details span { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + +@media (max-width: 768px) { + .school-details span { + max-width: 200px; + } + + .school-details { + font-size: 12px; + } +} + + +.kreta-nav { + padding: 0 clamp(0.5rem, 3vw, 1.5rem); + position: sticky; + top: 0; + z-index: 100; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + -ms-overflow-style: none; + display: flex; + justify-content: center; +} + +@media (max-width: 768px) { + .kreta-nav { + grid-area: nav; + padding: 0; + margin-top: 0.5rem; + } +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} + +@media (max-width: 768px) { + .nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} + +@media (max-width: 768px) { + .nav-links a { + padding: 0.5rem; + font-size: 13px; + } + + .nav-links a .material-icons-round { + font-size: 20px; + } +} + +.nav-links a:hover { + color: var(--text-primary); + background-color: var(--card-card); +} + +.nav-links a.active { + color: var(--accent-accent); +} + + +.user-profile { + position: relative; + justify-self: flex-end; +} + +@media (max-width: 768px) { + .user-profile { + grid-area: user; + } +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} + +.user-dropdown-btn:hover { + background: var(--card-card); +} + +.user-info { + text-align: right; +} + +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; + font-weight: 500; +} + +.user-time { + display: block; + color: var(--text-secondary); + font-size: 14px; +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} + +.dropdown-item:hover { + background: var(--button-secondaryFill); +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1200px; + margin: 0 auto; + width: 100%; +} + + +.filter-card { + background: var(--card-card); + border-radius: 24px; + padding: 20px; + margin-bottom: 24px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.filter-header { + margin-bottom: 16px; +} + +.filter-header h2 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + background-color: var(--card-card); +} + +.filter-content { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 16px; +} + +.filter-group { + display: flex; + flex-direction: column; + gap: 8px; +} + +.filter-group label { + display: flex; + align-items: center; + gap: 8px; + color: var(--text-secondary); + font-size: 14px; +} + +.filter-input { + padding: 10px; + border: none; + border-radius: 8px; + background: var(--button-secondaryFill); + color: var(--text-primary); + font-family: inherit; + font-size: 14px; + transition: all 0.2s ease; +} + +.filter-input:focus { + outline: none; + box-shadow: 0 0 0 2px var(--accent-accent); +} + + +.absences-container { + display: flex; + flex-direction: column; + gap: 16px; +} + +.absence-group { + background: var(--card-card); + border-radius: 24px; + overflow: hidden; + animation: fadeIn 0.3s ease; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.absence-date { + padding: 16px; + color: var(--text-primary); + font-weight: 600; + display: flex; + align-items: center; + gap: 8px; +} + +.absence-count { + margin-left: auto; + background: var(--accent-accent); + color: var(--button-secondaryFill); + padding: 4px 8px; + border-radius: 12px; + font-size: 14px; +} + +.absence-list { + padding: 16px; + display: flex; + flex-direction: column; + gap: 12px; +} + +.absence-item { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + gap: 16px; + padding: 12px; + background: var(--accent-15); + border-radius: 12px; + transition: transform 0.2s ease; +} + +.absence-item:hover { + transform: translateX(4px); +} + +.absence-time { + display: flex; + align-items: center; + gap: 4px; + color: var(--text-secondary); + font-size: 14px; +} + +.absence-details { + display: flex; + flex-direction: column; + gap: 4px; +} + +.absence-subject { + font-weight: 600; + color: var(--text-primary); +} + +.absence-topic { + color: var(--text-secondary); + font-size: 14px; +} + +.absence-status { + display: flex; + align-items: center; + gap: 4px; + font-size: 14px; + font-weight: 500; +} + +.absence-status.justified { + color: var(--grades-4); +} + +.absence-status.unjustified { + color: var(--grades-1); +} + +.absence-status.pending { + color: var(--grades-3); +} + + +.loading-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: var(--background); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 9999; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + padding: 2rem; + border-radius: 24px; +} + +.loading-text { + color: var(--Text-Primary); + text-align: center; + font-family: Montserrat; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.loading-text2 { + align-self: stretch; + color: var(--Text-Secondary); + text-align: center; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.loading-logo { + width: 48px; + height: 48px; + margin-bottom: 1rem; + border-radius: 8px; +} + + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + + +::-webkit-scrollbar { + width: clamp(4px, 1vw, 8px); + height: clamp(4px, 1vw, 8px); +} + +::-webkit-scrollbar-track { + background: var(--background); +} + +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} \ No newline at end of file diff --git a/absences/absences.js b/absences/absences.js new file mode 100644 index 0000000..76f5783 --- /dev/null +++ b/absences/absences.js @@ -0,0 +1,462 @@ +function getCookie(name) { + const cookieName = `${name}=`; + const decodedCookie = decodeURIComponent(document.cookie); + const cookieArray = decodedCookie.split(';'); + + for(let i = 0; i < cookieArray.length; i++) { + let cookie = cookieArray[i]; + while (cookie.charAt(0) === ' ') { + cookie = cookie.substring(1); + } + if (cookie.indexOf(cookieName) === 0) { + return cookie.substring(cookieName.length, cookie.length); + } + } + return null; +} + +function shortenSchoolName(name, maxLength = 50) { + if (!name) return ''; + if (name.length <= maxLength) return name; + + const parts = name.split(' - '); + if (parts.length === 2) { + const [code, fullName] = parts; + if (fullName.length > maxLength - code.length - 3) { + return `${code} - ${fullName.substring(0, maxLength - code.length - 6)}...`; + } + } + return name.substring(0, maxLength - 3) + '...'; +} + +async function waitForElement(selector) { + return new Promise(resolve => { + if (document.querySelector(selector)) { + return resolve(document.querySelector(selector)); + } + + const observer = new MutationObserver(mutations => { + if (document.querySelector(selector)) { + observer.disconnect(); + resolve(document.querySelector(selector)); + } + }); + + observer.observe(document.body, { + childList: true, + subtree: true + }); + }); +} + +async function collectAbsencesData() { + await waitForElement('#HianyzasGrid'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const basicData = { + schoolInfo: { + name: getCookie('schoolName') || 'Iskola', + id: getCookie('schoolCode') || '' + }, + userData: { + name: getCookie('userName') || 'Felhasználó', + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00' + } + }; + + const absences = []; + const rows = document.querySelectorAll('#HianyzasGrid .k-grid-content tr'); + rows.forEach(row => { + const cells = row.querySelectorAll('td'); + if (cells.length >= 9) { + absences.push({ + date: cells[1]?.textContent?.trim() || '', + lesson: cells[2]?.textContent?.trim() || '', + subject: cells[3]?.textContent?.trim() || '', + topic: cells[4]?.textContent?.trim() || '', + type: cells[5]?.textContent?.trim() || '', + justified: cells[6]?.textContent?.trim() === 'Igen', + justificationStatus: cells[6]?.textContent?.trim() === 'Igen' ? 'justified' : + cells[6]?.textContent?.trim() === 'Nem' ? 'unjustified' : 'pending', + purposeful: cells[7]?.textContent?.trim() || '', + justificationType: cells[8]?.textContent?.trim() || '' + }); + } + }); + + const groupedAbsences = {}; + absences.forEach(absence => { + if (!groupedAbsences[absence.date]) { + groupedAbsences[absence.date] = []; + } + groupedAbsences[absence.date].push(absence); + }); + + return { basicData, absences, groupedAbsences }; +} + +function showLoadingScreen() { + const loadingHTML = ` + + `; + + document.body.insertAdjacentHTML('beforeend', loadingHTML); +} + +function hideLoadingScreen() { + const loadingOverlay = document.querySelector('.loading-overlay'); + if (loadingOverlay) { + loadingOverlay.style.opacity = '0'; + loadingOverlay.style.transition = 'opacity 0.3s ease'; + setTimeout(() => loadingOverlay.remove(), 300); + } +} + +async function transformAbsencesPage() { + showLoadingScreen(); + const { basicData, absences, groupedAbsences } = await collectAbsencesData(); + + + const schoolNameFull = `${basicData.schoolInfo.id} - ${basicData.schoolInfo.name}`; + const shortenedSchoolName = shortenSchoolName(schoolNameFull); + + document.body.innerHTML = ` +
+
+ Firka
+
+
+ Firka
+
{qGKrIVl`&yia4Z&SF7O8$nZ@4r=#9e#L1(rDFE zk*il-pUSd_E}f^gVPaYMF%^#MQ(dD9pFJ$NrK%8Qv`q3#r%&yy&41?HPCkGB%fY3e z-pOZkh|aHGv8Ta0C{emBK7##d}lZ# CPR(Fx#UpyCaI~bj|8TPE {<_d2r_P8R;(u=C9ssoYaad^N|Vwm&Fzx+mwJpvG_~Ve3r$ zNjvXxa@B0)oyK*A$M3wqWWe5v_DM2_7CoCQB5vt$;(WUNJ~0hhE4_=$9v00_%G!M_ z_lA )_I4;F|$`}FLv)vDO`nWk!d!bRuWWn!L6 z=eI4JGP%7bq)&8rpkU#(L+f0`6WyM_yfrl?+tlbwPj|)tGSj~=9! 1Sl@%B|wx#`y*zxw*!Gr4=GaDU%o z?jmWCJ W7Z=$*aXe&eG4;YU=YHbki!U&$r+HD=Bu} z_dBZJH*P-kOy;cY?i>7>a{8ZH)kP;(zDajH=3|?aT;#Jv&}h+*zamq6cJ4cINO6%{ zh}WbK`+ClYuWhj1Jgdv_<}>bD 5|ONhc{-mdLFjFF#R MN^IjP63ww~5MNta5ocu96sCI8lIL2% zU77t^p}Fn(L1GsByA}mmJ}OZ@pyqJSf8yjDsT;j`)1`HKI`3C5unJu39r#0AebV!M z3EtBwFY?-s&sck_Ce3l7^^=!g#}^$o^t{{YB-j-4$&0@*oUtr%>5&I(Ig`EoWqngB zgu}lWI^R3PzV)MN;+5>u)jW}sf2N8^6 Q^(;NQqTL3gUkLY3dP(kCRU(v9QJRlj+;#=BIu>(xx{hpr`6 z96_AwbrZV+H!L``AS=Qm?9{hyd0Kl8eZHioUt#v$AkY6Y%l{c0XZ&BZDXM|BI>f&3 zaHX-n(ccBHxbxbAoK;_5GyfX?Rr~KQNv`WJ8)o+fd`YQTEuZv}IdG-P{g?GDm+zkK zER5AVQe-WAv9b5j-?_`5SlC>MxjFL^_j)zE_cy~2v&yNyx>a;U-{8yRygs9SQKFZ1 zkMHF?lc5`U#>XNxC%7uDcYW6!F%_$jkBWL~Rc9M7?DG(K^e{<0)nnoZ24`2llW}LQ zCzqUJk#Kp=QLy9LYK`?ejydtiq$e;qh_0!;b&6MOc1pr;i=Y`6tjGAG6ok7XW!J^> ztZDz7!y+EE@z3W^3Le52@~3~-{b(2Fn0xKk{*U*+X{23my1Hf6%BxHvyS8LHu6nU4 z_>88Y`W}sdch@2s `C?bV91qwPe}L5LCJMdmBL-ZyXRbgZ?xlUaQorv?5I+^>c|M!sn4Un zh)+)3zKVN+)7@Pqc{as=ip3RPXL&Y#zm~!N$z;cYUlwJ8rv=JPL|F@--TL$-#FI}p zFNd|)Z+ElJ>;^HbPi6`1?+)eNO8b3%k>>Na9LtwEUA&qjt1h F1neVQoURu7_a)H|Q%136i4}MdgHThE) zm+11_FN^s8tENP3t`4;R-I|+vv`;r+*XziOuXe=whc39`m3TQ$;Lzg-N;+TdEDPk* z!i;b4de?aSQETkHdoEKty~I5x-|3yGv?lF#{Qbu=MXG;RSDsnckXhrhI^`kz<7+qf z9M*{vi_NPn_?DW#q6Ee1ct5#AKs)zKxNa=-%`-XBRCl zz7@$kmrayiV#T2!yh{%VA7OTW8s3%iywAe<+WPxz3`1u>H<-LgpepocwWtx>Zo_or z)9Z4|L)9O*OPtyBy!{z()HNI3ICX``?{+%BTeU9JiLd?igauVSQ;%(YpIouw>CEW+ zrW2c$-c34J{Gwv6;@OtM7vE3!D)vv0eR2H>msH%JN{M#!Ck9v6em}*1j_38XkjK2Y zJokN?GTYAm^4tY!>W269W7 rb~maJ;`d zgoF1`=q#QdMHRhJjvreOly5rHo#u8{Q@h-hQ>nI}Z*m0x^B$|Eg$~zh9u_{^yXX4b zAIsY|%)R@0XB%VWmU*vzTRU|xcl~qCuR9c+VLbcu9 ^D91CCW4`CZqeb@ K?M*sAXXj*lk8_$)#dDhXeDN3Hig>-h>%-e$yW5wm z6jaY?J{;`mwq@Rov phk^?ojV$w&2?z zDp01Qwch=m{1?mFGF&nf{2#2IdHP0R`0Je5qrdOZVz6@maDi S?r*@s$T(6(drMcjdoPvr}qbXDL pr^~YJ?tPQ@eolOM+~GF=2cf6@0`DzCPyJR{>char>GIb{V|wlb;~>{RSIUp7 zA5jV`E 2 zTVsv<*KZ3Vw(H&uTBjQFbfJp%{%YULGv)~$lDznk;YEI;e3s{7?`N|ArpVq3ja5Gu z!6q=(i>rKR0QZB%ugjBvG&TO*G2I}jv~)|rfuyg-7R#o5S#^A4O{4SC&g4&5Pj?7x zd~3FO-K-6{x6bUhv6>ZLKEZ9-ZSlu;Dtl*{PP5 tBAa{O7$0|C0F1 z`MPGPcuHG;o|xIw*1cC3=}ek2v&bcm=TV;IqD2$5`#MkLAE@HBeaJ7gJA~;>+dYrx z-!xt%OZCiJbKz=nVHxW}srts0C_CR{8|rjF9=mxkZl-&q%tw=-#yW*1%5jg51~cc+ z`*!O};P#jwM}F$+FZE2i?Y3R_tkAZKnkQB+aklsF$DW%l{kDAj>3|$o?QIiNX55)C z-qW}`^U
-CXe8k26zA4{5QF7XqqA!AbYIf|-H9MOYv3^?Z?;ty${dZ0) zi5?3zomyECEI8}qr^RP7BBkHXy~(lICjW3wTI rTwKIiY9{%vBCd$ec) z$Ap|;skIhWEBu0!vpLxl9+poMn{xa2UK=mXd7<5Bf(0z*Brkk)c7~&8u*jm|i@%-- zEsgPFt2sHBMLfAkPB4Ju9OIfphknoe{QW_aTE)q2H-%SkQ$E`4EmB``L;O$Y(tYQW z4QD9XOi{K--)^@<=9;tKJaxq!?i0qGf(upK9+ZFU&OAK-TB>UWSKWHC*uyg0HtAZ6 z8#c|)I=~#_z3$;$i@%$Mo%b}(xNfxWtcOvUtO%3d!c=L#hqlG$XD^pk{Pf%M^6(A5 zsqXJDG$k-@-`MQ5CMj&`(YvhuX@`#pPptaVs?x9_vn62OOUK_IGK_cU?g&YHS7Tq? z#hw>^s_#hq=X*MHJyr8ADBd<==@ybO{8-ApOIxKxLE`Ym(kq<%XZP@ZNNBknbj+K7 zkFaS*_c1RKt50(bqnJOQ{t _X@u)OB { z!>N~+{{QGC6HoPSgZ2C?x jD>e**+JL@A$wi zH1m{utQlkDo@8%+j(n{(npez@1+nk>yqv?UbPp4c+Kx$%!Fl$vIoXe*PPTp55UyXH zVA9+9`0j-t4x3d9BYG#edfC}Iu6i8v@n47F$CkWMh0v?Yv+hjyj^ JwWrQ(A&c&pFKImCw2e8|Ne{F8#l048*XXxWSuxyW8d3g- CtiFIn0TAXRbdkGh8s^x>UklnHKSboL~A}WWPU^_0Q#FnO9w)d~k==gfI>3MF9&t z5A|PlkSsm-<(PrgLGOizi`A}5uP{6-J3DJ(+>G9kux)W4<}!KzwdiMET5esncHz~Z zHuvS4vi(eqSY&VB@MoCP$;93{wb|UYUDjNFF>`FizWE)EH{A~ReNtMvUB TFMs!LTq$KIzh-ixgW0Ph$=+>WHgA}4wOn+M{M%=p`KPmFjxx%a za@R2H@~i7Tx7aUsMWO$Z$gU)X1vwM7t_g%0>a6%IQS<(CT!)#$KjuFbSAO0; bIe_~{)X> yALIsErHi)(?I<_+$*mwQ?Zb0+yGu~%Pu zQD=Us>)J^nJ4U$=mw(wz3cnay8+vlrd*_eulWkOQD}B|` 8sJVdiMDVFBZF D`NZhR^Lv)<)TKBDVH^vPWsEw^lOwn$`q@@ebK$C?)SypOt(8UXRk@q zyXq?aFg#r9-Tu!0d~MdN2d4V(*j^i6P}`H(TB)~N{#gEXiTL{u{2O9V%`%@UzS2hd z>->cl6MScADJI7pt2 `o5oy-5_?j1?rO)G z@(?qfRmV<6Xx!tyR5C~D+SYSf7FVtK`*)eG;@DanGC|^6 _x z{pt0GTsoxW%9bek8(nqbowvH@Gwa`?ghT)A(;Q=YIdpy%JN13fq2rT*Wqczxy> zkFWbaWz1bR?cx3C>q0aACfIyof43 ztTIKe94ahs1tOf$H4NcQE4y5_2_0l#y(D1yY7zVWt7M)o4d3~vYTc>F7avyDg*se5 zT9tU!ZqmFMEup%g^{ot# ^`2K z7Qsa`=Sth%us&TGe@S6ox!l~fPK_b| w6ZQn*lyU>W%f?_Ns7`{ho1NH7pA^l zE@qfG$L4b4Jk_n`;ak$58EKYJJ-n_-FZjh& ~h2KqrE^bPd{2$#VqG8<9<)p&e z%W>>R;q@bVr#xilfA3SfeJ0Lr_H!-k&TgxMTB%c?Lg%T8uP$M|x_rBH E`1YG01nBm7h{A?UgCgqGq C?IF(hExo%b7Z5 z^TQ_3KK#`5#QDp6#I|hs$&^^VWUt4&-z9bvBPPYKKl#ttG{f}ng%z8`q|KL1nLT6H z%<#C@)}>QRr?UROwrulXr?T3__YYn?dGknX>PgXhZw3LDHizictrzpJ^z5E^v*=0N z!QQvKo`R1`gPan!*m#DHS^Me7+$~BQU1lB4IN4;h(`jYU?B7#wyyQKmbiS?rZ-4dX z&E*9pMP;2OrQF3v+VMa87T$75S|7Y@Q~&H4J9oSH#chgD=j8MbI?PgZRg(RR#fu5K z+g2CLsPDR#mST34=ki&Tz)kwT1(#H|zOmUmE2r?iOYOI%vd66capi2dz$Cr2>GzS( ztaD(;n1uv|1%?Kz3xJOWTe$M7{;F~b-$iDvZc5o1SJjUBSw50HzB0Y+a#}=*V`mM2 z_r7=4clIrhKXdYD>Y?55SG-bJtTCR%k;K&^TkgU%L+oU|`pcgiuEeROuFOmM9W!~e z#MSDJ*CN_p)b;rGo)q!F^{8{@ezR*gb>l6U&DpklTZs{S#KZ!V`9UggqcbA+?@7)L zKY3X`yv=gS;Y(La6>c0{?P#5GdrjT$MWvfI_m}Q}ZGW2crs3Y_4?4dUs+?1|TJ!#5 zfBU_z_O>m>-nZJ9&n>yIa{8{z!TJ8HPVQGqI9%E%=NMM*dC_&sqU^uQ@7C>}?8CB| zr`T%drj>IvxJp}omnk=~rWs98Id$%x&MT)jp(9!DO6%q}KhR(bf8oQ)?7TN df0%U!GO6k{7(L=Qx35hG)p YSu1$tRfbaQ z%#F+&FFx{Lym5Y$fO0+W*=-fmR4iZS%gN>c5!*MhXT!>wFTWm1Q#4<1xY1_Ou_G(f zw~5%7{66rnr*Z1LXX!e}m$3cQn|kH`G9gc`UuvQrS(TG+NvVn6SlGikjqQ-3K!k_Z z1P=v+2`8L_xEl|+IooyGn95mg3lX|sE^*L)i|Em3UF%-C_vomfi`h~1_}qaA8O0;q zy9;@D$d{fzaKJ$!p=a05qi^C~e0wcvxv{8T;b(1yNXVW4-DiInZi_lUcUx}K+E>r7 z9J?~%vqI6+N~s9#OAL nO2$J@4+8*2A7Dg>3onPVV{3+537)>{<&`nRBu{=?hGnkNEor|Cg@({r2l&`(L-Z zO4Q!AUP}sgc(gvD)~-PR(VOSrAMF1!>(l1F3EMyLGdz}U>nT4!KUL(l(oYfh_V8eV zJ16&9S?>KHU-Eb5zeRGM0aI$3WWAZbubv?!_E(R=eV+7=<%=s7LfjN99wy4|xP4&J z`#s;k{R?xie4L=YPhs!+Ce1z5or{`mSB4iV-PB)_`YGkw_Bprz9XPoo=|w&h00?b4 AYybcN literal 0 HcmV?d00001 diff --git a/fonts/Montserrat-Medium.woff2 b/fonts/Montserrat-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3ffa4924d1f39a0b71e4b0796a25c6552012c10 GIT binary patch literal 127352 zcmXT-cQayOWME)m{8+&t$iTqBb~%E9@uL6(Cj(X>)tMvR`He&7rvY06!<-zB#vIN$ zJc1ltJzFZed(s%qm{gdr=5SvvU|>;T?J!_(YL4M)%#St;-gZ9d*dFU#?xS_BOlqtp z6H+gy 9y}6p k@NsGZ^UJf8)p(A-$Vd@S@!r zuje;Hlv-J~%~$gLj|Bdz*vl2aKKtj%S^J`Go-Y?(2;+Jh641hRx=U1KYN>vJv9Ug< ze3FZnQjJq)=!Q)`8mFfOxlDaEB`A2y(FGc9QJs8yjieSl-%!w5n7(G_?(+Fx=1#Z1 znvs=}R`0^U5Af}5$u9?3JE21AMu) @=kvcQr|i^E9q4=C?DY7M_xnV~CEqus zddRr<{MCul_&-JU;;Q*Gxt7*(gy*bMRNB{bvD1~q@#Wt8lb^j570ZpherlVn_U3=4 zHjl6WSTO0;v|T&*U%Y)>J(X*7_0MZZgFn0VF7UFNSDJ2n*6Tid>c;=PmsOtso9$L3 zzLg^`T7b1m^7Z>u#?S1pMRd(i?Af@&nXm3e$o?||tcmTcVv9{5>9@OWcApyZ@~eC4 z<%g{ncjJ`)9Nls#)PmtD_cxoY!h-uh!tUM6&{uo^)F)`(*{!>uM^~smeIBx%S>VZc z+xN2P&x&wmoo5q1ZZN}O){ZW*x;Llq^JyPHZe#oOfAG84^ZCE-t~Ioki9NzyICuZM z{I9cSn{V2vzG#(;N65-aGv}_JpMO>N>+(BqZ?TwW9g&d_P2O_pd3ksI PVS0%-qQ`gv%C`%h0C6rYj2n)ykFd|?`cArxnQDoxm8G7 z(%QKKOE*nob+f$lIef{Qz>uk5UU{kCo$2~z)1Q*asos)TCTY!F{Qs!a%~i+hWA%+^ zOC)r}Op~@?FllmVnkFP0*`!d-d5KYS=8SB|X{FBPUmX0uJbJe9)1;q@_Lct*?q8q( zwl?o;b?jfuvOkJEohK#=GV+{UW%&O5=c<1@-|v00ce>_6L!*fbEP_eLdP0?&It0tw zGcK;zkS)$yUH$rk?f!h)A4oBDiD@%2sl`$INyW5+emclqD% zCmwvj aBqHyPWIuKVZR&I3STkkZs)!6 zZ+^^C{a4BIf#v_dSALhh{r>vF8*V&ii`dt?XeKBbIXJM29`y2BDB9yDt7M*Co|zmy zReN^J7N@A=Ax&G?9`lP*UaH%*I>~$G)GMcQRSw=dp!}=rd79^Q 4v5YSn%Z7I{ieeX thAX)d^{Jng5_#Sb;bzfIR1SsEVhE +@Sq$PeV}r{n(HaR)OzA z%2&)BW%gDcUjD#rn)HQL_hmj`&^j`y_qXGQE6bM7WMN>P(C6u b zPVNd*kNdJ%%u&fI!|96s1yT0@f9KCUYO#Rz*P^=zyd`+nJ21{#_{aEtklDn5m-7GS zmELu&~uLndpbR2XK>oG5wnbI;{h?_wudo&OUluX6Euqa(vAuO-_U-0L0N%B2^~ z^$!$r4HR)*ep%4}yJ`I^ZqWvv*c!(Dsi(9BYOdTn7d*A{_Luz%yezX{JiO=rL58z& zWz6@ct*$j@PtsgvBAYdYt~ezaa7G%wUbpMjs{Gyi*F62rpMJl}$I)U=P}YLQyHr(w za=2e-IjI<8c84`j>+j|JoBy7)7B}g$Jf_yMNaf%B=lAOC=YD=QPgCUWk+b>%7Hw+_ z+!~lZx&F6#JugZoZht_;q7Z$qIX^#n*l{e?vtT#;>Az{d%1M=%>NCGouMK}2c73hi zHqS|0R6HlCoK*R%;yKA@Qi_r1B$b&eGgT&gs?GG7 VkzqxUCjXj-AF1}dqJ_+LyE9e07HM?tS~YWB-?uG%44!+-x4pM$ z`N6zk`&ro+K38`vdR^kXR_#KguD|c0)dGue$jpfE`B5(X@Up}EK*iZ<%kpL#RB;z` zJDZ41D%YRswfE(-fP+p~?j}10pWb%)4+G {Ue{^0I8n tFp tRcla}NqR(gWTFux)3FPq|S0 zKI(tyUCuedQ`6oF8-IDdbA3p8>Lnd#4g;Oy*tELC??anSjT2-Km_6s)x^(HqeX9HY z#n)Y5?CWb(zMFsP2abmqnq-8Onp*UXjBoB{oxEJ=%8Hm{=l{R@cUoJRTPK=r5)Z%K z1E#xo8K!ZB`mMV1^vuk^!U@F-Hm=Y0dHDZbPn$ynM@L5C*0Ozj|GSqa@lCGYlCoRj z#ILAFqOW#;|GDYOB9(nV*NWM^nY(Z^uWk!>M&t4;wXY&Ct-J7rlmEiQMSj`mug >)xOb}SZx2RShakf!s@6{!HaurUL5awb;K~|&W5fV9UV*ms@>A@ zoVNF-%wuM;+O#Fk>|OsFXX{;^%FnmGf8vI4-IGE4e6D^z{ZaqbgC5UgYkE>Ah|2|V z+06Hym3!&GUnvi#&_a>z&55tR-N|hH#3c8x{^!0R+1&8j?XRuc rcIst$(eos(h*ccd7AaoyBVy#F(lZ(= DS(0zxauQ z<*Ca5=Mqz%^WPCUWq6>+iRl7^(&5j4<7T(cs}AVgC6XMmzUlOz3q{-NZ!Jy_4}2B- z`r^#c)8RZuLMmL{7bE%wn*PU!{*JOav_+=wQH$((e$6kFj@kce-=SC@z2!h{#hwGz z42q45d?rrP_5RkQdsDf6<{n0Veuar1M`upF%x{_NcX!*$+g8gL-CXyvEu!*!&eo^D z{?FX39~#_z!Tr~{C({33uuGo!sM?lz{dLZ+n`{$9d|!KA&N95_^7_un?=oH2LtQVk zNxE%5c1z)|$$gXcdA -Ey$*ecgc{ zjW_=OpKQ(DuvoNhu|p8&6O9Rvk35Ju8C`kx=FZrir-kPfrLGLoocBNf=BD>TuTM|3 zi0Ydy*4G@WD5j_>GONsltLBr(?yRS$R0G5}>j*D<9@TCjRIyq7$aMasLyUpDW;~S) z4-c8E5^;3$1e;jbb5|-_96egT9;m Y0Uu)L~og zc~j4MrC&BRvzE6Omi+$9T=CC+UJl+1KFlWEPU}2(E}JOEV7b{O+e4s8=4`L=I>r+w zj+tx o<&6WT1(eU%kX$gm%Y@)iht(55ulxpbe+v&BCOYyp5 zsokoQJG;xT?p{$EQ*J2csoqie?7x2S-)-MRGfW&hoF=49C{kEk|4;F$z451(+R}!# zg8$D82SuHA+<#$u?84bA-m$IGW7{pQlIk$!WZr~LjIC9nSJyh3zhG|K!tZ&}PGzo; z=sB5I`Ga5Dr##j1^?3QlQnB^wny@W |&ze-+;6Y7%6h?9iU~*(N)U zVJ72uo~0REFCHte+aGyLxF9m~rGJ&;Q@dsR#k+ep&wP2*Z#9!>&sMJ``&z_)+}v62 zx~IBz9;cww;s3i#@9{3;l%2kB@A2PGkr7*NpX6j;C&)6dqT%P>sCBj~Pw#~63ArHp zIkoTW;v5eXVfBQ!MRQe6U0>(x^{+NvY4zvcQcvBRRlBaFDm3)GHIZPOtobkRtJpFH zlkFMjJf<^vFg*<7G7eHQO|RJ4ag?Lju-ou-(i|1nsjK_~m#%nhT;KZD)gZT=eTt(? zioirim5vqx7bgiP0ZvDi*>TUW%Uv&j|K6zh(eMA}lCP`(&-=Xo=HF1?(2!8y(9k0; zF21fVE-o&iSFe1G-oK_cG~jQtUDpMV%O1)?Di+4oDf!=bIG?y@)S}?4d`|QaSCiqC zZzmmhe`$XZv81`#;>7CNi~ddb;8=P>BeBQUeTC`$?eAB<+x!0H@^`BR#T8owoFo!^ z439}DHW{k59BdJA;&489^X|>-AL{>e-~U%FWVPY+o$CA5*;k`Nw`#3YQd+c1Ymt(c zl2X!<4ne^{!9dev5{B>hKiE89wiZj+Og)y;n!iyk+!Pahqp-MD*_OckgZ7 zbWowijL}$g@iw=+RTtLgocnvWG1%ga(*&0Do~5rgmEE+ufBxs+Bsbs7Z&u&jd)H-g zgJ_Rw9JkmMkI+Pi*2F2Ziq8H1RsH#2+Wq_;B}dBt{yl3EAbs)LO3TtEsu>dmp3E`- zb3U_{BUA6<>A#iMxoTP4W@T(s4l`eOHb{W+W`E)rwmqNNw@rWX#(6=2h6q=)u}#IH z&-4G=XR~cE2;g90Vs3O$4B!yqYII0+Rup)#_x;2_j&ml@bdxB3p6{gbclFL+RcFO! z&v Q0_|psru1(A*SeKoz&e8tg#oEUH z>}bMHp))}pJT8tb9x84VOtKu<3}u!~ B*!mU0(yXP9ix=u; z*<49o+fuclH=w_q;ni0^$G_W_2gIM}=}mpJFmq;N#*5r5@=oWQ`X;Uw)Uy*(b?tg{ zB2eh5)}m7pJ;6!ygnvIO*!eJLqtflU6ZhVmr`&(0V{-AU! l=dw^uzW?2eaKSPD{G9eEHgK`<&d$b zbm3AVXYC~|VW)Z4hD+R9YO=*W^+m(40P~U;CI)Z)zxJsqCT3lqx2sp((qQGmlc#1j zHEHV1dGut za4>FVadKFxE%{<8r Zc1-tE-p})djI%v{wG7Nm^TX&?tjbNV)=U3J*Vqu zrqv~Fj=q^#Z0&ZjPUoZj^->?viFpY}RH|* 0Yms?YlJZ1jIScY*{H`=Ws7?`st}V<-Q)T l%vmt#8`zcw$^#j2zI&ib8#T3t7P&Hf_vOMaWtl0WVqjt9Q$lxQ#O zvU0m{&c#@FOVISU->l!Kl`wRjPnBOVdwy n^EqP9H;=ZPb zGTF 4kncx373s({a05IY<5Kenu2!{&ZQV`A?EPfH^oz 1gA%PpRIwPS!79ck$(MHW9wNf719RcwdN>%WW0Dkox~j zJll&;?$55C{`cI=?#Z*~yo=}Ud~-e3-fpV2&7*h!va|a2^Na6o`F;3mp8DcFJGi$0 ze>{hM_fb(j|MH*Q#YT5(R)75bH1)k{Y+illqun*vv$x;Ol6$`C{p@=$Kh2)KOi#bQ z*zfxX-_L@Z>M!Yj+x7K)vHvH}^No)8e@&0$o?rbvpY_+}_lNa<^9VfHG=H{j!-E4$ zS(@*D;$hiwG(Puy{=BG_5)2OYHji8Xq&!hS#4y)v<-xU61vuuu6uBq xkpSyILrFgqT)RL-anYSI>&hV-I zJhaeviIeI4wAy$-*<2+*A)~&=3p`nW2^X!X(G&&;;ee zsi$Hq7d+%~oA_nRwd{(^E|I _2H8^x2pDQe%gGGvx0x0 zP|^7rE8Wd}vgA3QDZA>f*_@oIbf({xy?f3nZQBPSQg3Jdx;J}Q&?;$yq#}-R|?jBJLC6TGGy7-!g!1Pp4^w|-d)$dwS$VPf1g?(Vm~(| zdc`k}kbBV&1ZFrG>*`&N3_cty7-id#^f#^O*Yu@o`Dw+0_X8i_P!x `>I3623KV{)~lB|4Y^u>=*2J5UN8__XZpPNRGvx%E zrypCn-v9f<=POL_PCV%KVbagXl_s;iV`e>hkooI83xn+n#k{S0*LLpoF0+~PHYegy zsalcRr)L=}57bVc8NYAwyoQ>3l_bBFZ#bSze$Fa#zQFxe z&HY&uQ&XFaymGoeW{C-&KE^o1OUq*Ej;zh!ZV0Zw*Cn8k*%UHM?YYe%HQ~aObv2rH zadnCu>s5Nx_znKMTSQp@YTAC}|Ag&)lIsrabzCj6#`Z|cy;m!n+De+Hihb$YTDiPn zhEI}!=KUEpH@g;lwI*_IX?pdF_uJ`bN)w)JZallSAgt`GqECmVVhj-0x=E31H^`^~Z(S&9FrwucGGo)+v}#x(J_P^tEzV@?h~Ra!Uc2-v=V zC3GxYUwHB&Szg=8TNWmJeD|HXReP=bfn$EhA}8}j2nyZtwPu@NyZVJJ@Arr5`_?~| z+Ve6+NjhFfTYz=1M=#%dzB>na9=n|U`rv6)U7@3)chU4r@BRA)7_$|X*q?t(KeqU_ zdFQW^wA&}wd<;n4Y^K{0xFLIkq-6>B>RBfKijxf-BTY7&wtRMU|5G>BYnhuxMV@MO zCXe#V(A?{tQRi8_w0+NQFWD3K=%3sNj-93NqvUr7y*c_|UR_dkK>eLFvwdbJZ>| z;QwV+x+Qp;lk!S7ccmpxD~(EjzI}7xrv9JTZ&r)X{H$)4$g3Owarey%;S3$s^kY)V zPMe!&`YqzI*ncyy%R7+kXIQ92Z?@yD%Vrm^t^8G%bh2vKtA$aUDqY2A2Z=bkzFwqw zjw6F(ZrM|%z#Yu2P3?Pce7e0?&R6D8%<~1}m!*EYG^%X>>{n^BLT?f4mEOHvo$DDd z9!b?uFDXj$R-L(&gSr9z-3QJhDk~1zp4K{8TaN|c2p#9`D3g)|Nj!k zlQYz{=ss1x!m2F!X-+~Z!;vRn1lUh%c=4_>f4%UOuGPvFc9+67iK;EWKJ)Re-M`l~ z*_9mSX+3AVZ}vU+72i&5-8DtP
qcx~}{)}|G*vR|_I+jlg-Hx#z}uNh^% zabXMJZh6-dnL|%H>ZFb?YU}^U`h4%CwUJKze||1H^2KQ7jEF?Z12Uifu%9asND#h| z#oo63jzfIMu6z7^cV3--a)aAh^-Wre>dz~-ou}JW6enKdH|4F2n& N&ZHTq z7wUdLet4nFyL}>#uRLe}TA8#j=IXg5-8sJ}$uGI-o$yNgZhlnS7nZ5-o^##5`M_Yp z)WGv)pL@6x%|6VkcUM@x?dl2X%{i`%o_0Uq@>f`T`Pt-8Tz9(86whz{DX1E~_L5fc z!{QIOg5K>Ae#77`%8+Za?E3UZX{)7ka!n>i7s^)rjDB}}+v_E4MWXfBn`GCA9l2NI zc(~M4=gNo3lAnxn6V7-3kG}tlt-NGiw8W*F`<1I_P5Ah@@Pv6*^WGobX3EcO&$s^R z|FPsaOEkmw?@OdCSuS~tZPJ^+y6unhKexFt8-L`jy?Jftx}9IjqkLim`{kY&t#aPa zqItr~aAiCr! t6-D2!RJCz`!f%`2 z9I0~IIjnuj_b#h5VvdC;3q(&cu?vY?CUi>s 9t*nE&pPdy zt>h_veZ}!xC-&4t8b;XMkvKYc`lh+eoyBu|l}fE+oiD|jN`DNkd45~F-l11Gv0BlF zw=5^??`rwTqM1ULTQrXCc{E%6j*Di>GfCDXGk3md61R8#`O`*tz2kcygQvTGg(r0# zw*UG-OR(&6kjF`xMdE9+Eu!X3(hf0CTfMzHk~Qk7Smw#RTTA;Eal7^iSIif hl!;&Y#*2GJpLwZ=E~-EUws_Bl9~Em9X?RF zog?Aj$yQORYVC<-5(fW1{94p?%k5%X>lOKqe4jG2*Cj86t|UlYH)_0Rl~ygexNK)q zqxg0ezHO#j%CCB)g!Y`&D&;-3bpMm3Y !CICU1>(~3Q&^eOw`X0^BcpMs^@!B!NkReRjRTdkg4xPC%W*hq82nhoxo!m>|4`nNUm7^`mf^Uvl{Q})Nt z@R@n&g>J&-FD^wj?a3cCyVKUaE?4B46XV^Ia3!ll_N#KwYx!TE&9}sR@4e{VTd*U+ zecS1q(m4mK&9l~t&E?6lw~q{uZ$EZa?N{idmv$;lF@+jAPEHMbm8#2?cc)g}du8D$ z*7NAYis~6x=Uxe1{fzzSXP1{NqoVHi^Q3LHF25O2zjKGm9}R|6?=3FwKH|(9b>Q^^ zq10#X_ndS0PHJddbNKW0B!;; q@sivUU7>*-kU#7?-Zf#eTg>@%>xOZ*RM%SGdw%U}gNJdIQf#bGNyF_E@Ie_I#H> zmFINduL`CNE;G3A-mhm$e{IaAK4C(o=g&rkxXL-nr*y0eyi1y{&9z@KJ^GQ-zwFKB zQa2f&3rg;um$=~hg{r^pw|y>OaeT0E^4Fa+xdQl}u4juEQop_`t98$% ^$g z%{k3n!|tP5-^u^u`FG>$ 0u^I=;&Wm;*!+$~@CF4kwqmah8QI4fzR^%GAvHTyCPH@Dl0 z24W9AKdtLN@FmlP`9wHx+WO@aG%`Z+xSfjaGMC5uo_77cHzQ$Y+L;-4_Um3hp33#N zGflIPnaM(bx5ES1zzvOBZT@Yp>Qi?sIP`TXNo?zN&dO~N{2V@>!LX)^1cQ%+&i7 >vrgNV>oAu?YVP~^MO4hB@sSDk%=ACkL z^564z+4Id?f2* (aw5z(H>1ltEFF0 z9BT^X7v<#_^6z;mSLnKZ($`+=>`!|=la2?6s7#ykbVawa-zD>N#-48;aD2R98sPR- z=q>NnJv`q&RZd^f`16O?wh#AS$#cH 142 zMo!nH-O9@a`s&u5e)lB#-}Yb!yO#%Qo^{! y%9wE3&n`j~DWLXv|Y}3TSj#88aoh_Rr(~? =t1mlLIn6dtY|^NHn9K1jX8P&1-U{}=gqH_bHdjhprr(i_ zd9hl`DJbsV|EiRxrRF 9mN#lv-{G4s~O_%Cf{6DvD+@kI5AZb({N zQ}@72=IPq`lN=ArNR{|2-+07xd^6i~&zBFJax`8j_{@=3m@p~u5>L>J$vPQ}7tKuf zGF5oIewO%p=a)9;^6lH5=SKbc|Dn_CjOm?#hY#fr1xHnAapae|2n+drxl}oA<*}tR zr*S%KxM=*f4ZOPGsN^r%$Xxw*>#qJ*|99(V9iRQm{c~Nm+vffI{lDPtMN74AuPOWg zPQT)xx9^np+|ti~V{9ruA720G>Xo>huZPdqNzeY|D0u$oljC<@Onv-p{?A|gcSz2f zHObIIY3jL@;>wy%r C4z3x%-hOK+~pd73j-fqz;8e}O}jvPHA@ zj%M|W$E6=w>p5ByI9dz#a87)`dL!qKf=Ef$ ynE^Tjm_yL%C%FME_}l} zMLC_j;A_YOE5`4~tq*)>x;dZMj>A^7>_+N#+i$nh_cQZZJ=w6h@8!9NZ7CI2+s+@J z;H8@ru})j-s$1`DliYiYuKr7(SGw)y^BKkKc0Ql^e)|6IEn>a$%|D8gFIZo>{P^On z(v!V@AE*B^T|GTLY 2)RJ!lK`;Z#O3&?PHg(3+Pfv6ALpd^AimGDpm60qILQAdNZYf2?+&?POY5cie6`A z;yfl;7MF*wwOW4j#+?6UFE6AYm>?LOb|z};+Y6R{7bZOYks54rbkPlw_D4Z-)uzif z@_*v45M00GINym_-`D>cecoTJJvnvPVxGfhQs@73|D17-H^wu5VX#tB@Q3}zPep QL6bXH%XO^Z#AGUb@fV z>3`WYX+Z_&pD{IuWYv>APR-Suuq`DF#6Gv_TXj!B#Q<>00dJLjj0_Ai-Md|{E$=GBv?J@9^@ zto@+HAa!fl@=O2kB&X)9Xr+G+eK&2@p0^<@-k!BOfBtQa=$oH$VHfWehE9!3dcb%8 z$K-7hrM~&ApUru-F)Q9Xv~>N}RrQBM4@+AH_vXKm4)@LXIumkw_RqA?*R!SP2j_lb z4({(_m~bGXDI;uR#w3TJx@whPuL+JkjFQI+CK&cGN*)h6!K1CPdTnFQ241TPeiLQS zw%xaj>U(|D{xR3}JC7#+pZ@EMr~~`twG2zyricYt9Wa)fvT>q&>$(O1Y_^*ITl)If z4db8ZHWl=2*O4uLGjm6&hwvn2|Cl+GuGf5bY+G0?bZlmQLEM7sb%*Lcc(dAwJ1tcV zs`@+iu*Oq!$D=;slG=S+uO2`4>v6{Ak8w9APPo+h>bCuf7Pr0&E4sVHZ0@T(Z@&_; z=+eh%X`KwVzRC~Dfzf8AsqB;gZhPidb2|6`DP{%s7?wO6mbfZQt6JH`|N36qe$e@G za9`VT$L9K<1qm7)QK1)CCv!%glicC1U9m*RM*c5{erQrpVd7eWOF9ve>}=B7A#;Cx z4^^m`rr6D(Q_R8NSI~1pvg1=i)~7RX#m;~9dOLaQO`D^CehGj3r0Mnhr( (z&BR@i4Dy8lBZkEr=n@W4#w@!B{wQmo9k}dh+l*ClSe7}gQ>^Y}z^M&6N z-So+By~4fyJT3nD>;G6~)ji(+wES$-m+I!fC+|<)??1c#RmI)^W#^dx9Z&Y3yu7j~ zfscv%anX(s^FLZ@{0V;+5r3`UHzD|RP1LPjXZvKi6Mu9a4G%rr@k;CTij~t=PCEW4 zY3GN#jHm6J&z%r$IiFYkEZKyw?9sWo^*`^;`?G6vY$5- O3^U0u~I@qK;w_Ya0n z6Q|FTuG#x?;^!Ot`uGkdy*F1+t3PvQpKaf*+WYm} oG*Dk-r&aYO@@kDU)>y-&z>|gfibY~_Ul-xSuvD;3wQ&WEj-d-_1 z{o?hQ{UIL=Z%Bk?9A29**S>G#BL5@8kuQY*9trv5S$#?SXUepxb(_3X=iO0Xze#b~ zr?7>~yhP1?{j;Yo_PM%dS8Rgmr8}#3MxNfsU$Q#2*m+w*@${{Eg+khQv~Hbucr)GS z^7=2gyXx+j-YI?6AFJ ;h6y=_x}O2y8- z*x%@D*f&+TuxGaIN55Upj!TdJU2yqbrq$~`9BIc-`=p#*{jvQ`egNyCh=pA3dzC~v zmt304?;g5J>fWmBRyA8!#%{TmS|att|IG4ZrgrmZ-?&thTWPPp%_Dp3*VN~8mOu4z zzVci-dh7krI%%g<@-eBhH-3iRYmE&Nj=jIu^lI+iK<>L&W4GS1wGGj>y(PT$Zm?}U z``#PnrT6-+n&UX8UJ!H%aSN8Kw2$KI{Fb4uWdD5nq9mhbU7bf;v=ko-zw19aH>Te2 zZO;#H9_C$Ve)zn$GH>TNIY(mhGg)TcRjnI7J@ISjf0i)UYIFL%*3A~N+nn6ittst` zwO(G?RT5Yj8Gcvi!Ry806^ky1>U2h)e`UK}`Lpa!ThV(Pr*^%6GI!MxVZ}P(9X!I9 z+`PZk&7N7um&P`+BCR~2sPoLjf_bd+eAmwPEtD_G^~t$@?r3doQdXWr%xB)0S1P@K zM3fY)oWd=v{qE4liitj_6nmuhzlhYkH)*Q(lLxkq7vBB+5H0;)X2PQf+24~=+NI8B ztWWroymwJy-{)0PvXxhxpI!BtwEFR@+jD %Rr`fBkaUDqZ3Egx7Y7`PC;UW>>1-(J^0s$T;uc`oFvO&kMW8J$c>z z-5aNTT;izgebMFphV}fj7o1 ;39x<;BZCObwmKmZHwLy-cR$OZYOOhmjY* z#qBh6yVUr~#Vum4pXU~r4z4#XzBMY1B2~P+(kB)?=Xhed=BdcbCoH9LRrMbxtghd* z{MO${qxEZFFS~c8Iz1=LVu!>U^951i938h$$kgYkEOg!~Aaq!Db;$FL^PWX|{Z{=q z|NoVCW}yWPUO!lWC2)qS+}BY#+t0S^;6^slWi6SL=jwT0-ywhfQPrJR_K$~7NOQ|; z9bWTc!m~ZUysg%7+&5pj$Z@aU|L-Ned?8a=J#vN5+_K-(P-J>6^H<1*1tO^uEpA(q zM9mTfo1ZUU!6JAlph4;0L4M5}R(E-GY{Y8yuS~N$c%to%(s9w*mfvf4|NQ##!Hxsx zzMQ>~_ebnmh@w;V$3t;ldwr^x-pRTBU;B3Hmy5==uD^4%ZuuX7GsRuh*FR_OV(*L9 zrvu*4Ph6{=o>TU9&Wr3{YP;-A?j385PdVPcW5>CF$xB~f(qDYPR%@5->ph%19$T@n zpY1pqe8;wMmBXs%!cP`3I45mW?(k(j7qHPJ>rUe@1?6cnMp@_CZaNkIOkQmBLGadv zgX%R$%YQ6jua!8!acsrJmr;uU)|_AZx-w4UfD=!0u2;oD#g+aIyIh_ucDl-Ky2Aai z_;StM!)qEd|DL%Ko4kmZFY=7>wm*BOpR0J=ecwX)lZd8_|D()Jz30|N+Z|V)_tVw% zi=M&B^`|$7)c!Y3zj^F#sn@jCD_Z6B*|HXXbO a)wXGrJ0iZJ&GZ z_RQN1X7l2{%im{8*R;L2@xlDx6Jvh3|5|JscKmEc|2u)rUnfbhdYROI)ZKZG>3+v4 z7wZy-Rn||BAE-U_a4qwfL)t!_-iCE;hd=z$^LuDmm)kR8rEH1akxvQL#b4(*s)>I( zY^g2w=&VL+WcRDC?c(hhR~#+9_gqgiSM}Je{uchn-YN`#cBqQ(|C{?#cJbds(!Y8y z^Q@bgc6pJF!RFa%JM#~AnhAI4Ms*~A*Ssyf&1b$>YJu I;6JHzv^_a)CVwRCIcos;i9apjseS@TY&PphBj(v@mHuatNvpEhxeI#!-J zTVZ}v{FV)h^ETX)FzeS%=)NJet!wRM-yHSa?}-P$ZK!?IATvujc-_+ %L=mC*6Jb-KEF=OY^%57yhnJ%`%}jbKTWz z?Ouw7oKuYnxBYzZ%|sE&{EvKJmx#rEJF}x!=HltdgPGO#1qpj^uGis eBY|K zlQ$pvbJs5`?d{Q<(;T#4F{^EP+S922>6h!DhKEx#lohL%T hk(nH5SoK72jkep1VB-tu#|r 2$L8?|>GcQWGeP2MBrc-b(f`K?~%SxqrlhT{cmIX-kQIkBZ% z`9U-LoJrpqqv|h}R~q&S9Fh2;v10kk*w49NjlKvKn-=Ek=bzOx$yd<&)xi8<_sPuN ze&2t+T-hL1_Ds{f;lS%3#XVtp3z{d2&K2rZd-(k5KkHMxRXgNc8-8X)A6RsENi##) zZEur%mOok#ZRb?C(SPoHZQte3H*K_Us>mMCV*8>RX3tR{cZMY=?fg$ams`K36-4g! z-ZAVcE=cD(lBi!98u0qgV?p5_A&%_o#xs5DHJ%M7-(_}}m~_q&7cZ>h?Z214LSf$VM&0PEpI5&-u~%9C{6pdR7lpU3CM0Z>XV9xJJ-@VG z_s{A@&YRL>eJsTm>)Lp%X|4YA)?@?s6*aj%zW()+krQ@DOSyJ#VVQG`kx_tY>Xaa{ zJJM3yR({Xj?%kffH$-w4AIG1}kL^?6PK$egnSb-Xtrh33OkeF;aq7b 9tGZEFY(*ZH+IUE4 Ds}m5`7N39WxKC`e%@Gr^1b0<{-4Ln6{qst z(>c7pC}BpY1548C;D2&?djk{1<9!+U+28h*9CP)wwf3xbYARI_*n7#P Evkc zVChXMf>$QqwK~q>B%?3>+E*v)>p7(t^Nx!Bz3#E9LL%K)ywyX>;egtc2LCx4C$s~5 zKQ)K{ zCcaPariRe;lo!c7Z>Lr>Jmyt7?P7D_nVQ{sj_C^7-gfJc9{OgzK6`f8`+qs>uB?2# z((6R}@oIsSXBt0?aj!6VVwkXo(R=d`yTBmlTf7$~j(%WNf1~UFYw7H7izhDh>&tGM z*!d*u-pR6 J~{nWq%p= zDnDP=*`$Wm@$lQ1nM)P_znPWPyEAG !C+WLRKes$n`1jZ#i(>%Bp_Vnuz>Am5ZKg<{MvoV)}1QQRpMyhUa(X8to4M zIKJwV=Q}C4uUXf2tp2uYVdU4>e 2bTFu6;K7Gr!b!I_tR&c(VHS3|H(1i_e zF1~O%{rW ;n%cpB %H7P0M# z$L~2-xr-^gOl$c5y6_JF)Jbt6lTO6y^$7?#?moQyez%lVh24$+Ip^){QvN?!EnZi- z ?ORHrGiUOQh~+G-mC0U zcYxI72jXwuSUpKN6Xh;*?Q6v2)FraBCN2n{cq6Jr@@=-kjOE@gPM@aSOv}1+eOmHd zfusv}PFgHhR-M1 k;Yo+viGL 4C0;MU0=iKJld;)!yf&G<%Y4RcG$Blg~CVddA51hVJ-suia~^mI_0*V)5x?&&^F% zg$GaGXyzQ@UuC)=(fm{NL}vyDqYEq4ny!aDo%w0@+|QApUrWusJSnV%VdeFAolC3^ zKkrevyels&VC#{4z1xykMcppzy!`I*?nUqXY&ANs|5Lk{*?nv}&+U1yYIZz1arM=` zmwT7Fng^&A?26v;EjpKDvu$c!iQ5EYzkix9r<8ix+McX@w{muw@SIg4-ACiL1y%Um ztJQAXculuEh`lEuapned=82M16U=7sDCylQUF^MgZT zLn*gtYE} z$vP{y{yKEg#M0*P*7+~i=e(Y^zprG=<9GKQSN2(^JX-7d*uWx(Z+{=d?!#-=iE6|Y zu05W0y>LVC4<5g#_vRj)GU4F?C#|&{YjmO*U%W5y=PdlAXEIw+qP+cE`J=k`ndd7n z$}7g6Of;XkXi;&N;y1Ss>4$5VZ zl$|u|{NAV{lkOX)E1eboYj=8h=LntKRC!1>SMclU z2Ujlb)On}c))tcZ`1hXcc}2PL2Sl&;?&(xD+Tgw5)e-yrP3yKC_M4@CdD?dK#)|IC zYt#O}XN`$x+g|x<)2xX-sYdcfvs-oQ{i{!f?R)aN_1yNdW1Pk9>L=zt>B;!Gu5!o9 zyy;c(dHyD){qGiriQlUISHsIwFFi-GHTPbQh4r(Em0K)&4<>*9!Enn#ZjR0?sRu4+ zt}WI~dVM+QWAZEad1qdq$?)4e!&Z9Um)m YIE25@J^z68U%dVz^lG zmbRGU9F`A?`$SZ;t97QSUD})>EPd^G?&d>JPb?{!8eZbCY_Yh;&ggR|vI1tFel(Y5 z`ICj89A+@hxjgH7YV6Wg2aKEJX3l!`bf;56xE|l?xU*}1eYIQlO3v=O#C4I~AG@EG zu87smzAP3~ Zym@D*j?#*QtU8^>@uJ2)4bul%%^y{Y9 z3gh 2soC{go>_!lYkie)b# Uxdm z5{JW^{offMI(AL`^BldLiBl#zhziP{kyo9%#AlOxWagBW7Y?5aiQ75PD(=lHzp9%W z0$LMxIjaV2-xGA!e5?JWl{K4f9vCf+mS|oT9v)fxG`ri)B=mRiXW4%1=!xqy70eDF z;165;OrBls y!@G&wIqj `!bTv_&4 zo}KT-jn}U%&Qq`2G_U&FBG&G>jT_hgX1Cz}>wRS7Ty~)hd0GCj{OaEsW~)_I&-)1W zbO}9AU3}@(1|bK#q~?iD1yPQkvl^H4S2@)wxiHy$%=vU>BjduqVZ{wc756#rxDv~q zV7>LKhw}Ex`@HQn9vRMLEt$7#qwwv %LF= ze>Y!BP}Sr{YHnA{vIQyA9YnuRRgqT6QcdMQH7np>Q(F~VnQEExznaF2x8vqi?hxRd zEp#X9)fL`vA!oi#T5|EkIpHa`DoU+49_-#N)UIRpETU;{%0bnME+JRdSMB(i`}5pB z6%WS_*Y1fcv{q;RU~XS&_IXlGQ`_ZY4{L#@73E16dG7OO eXY4uF68yWar?r+>q(3>gGR|$+WARdPmeqaTyY?qn zomjhrf7!MZ%Ud_CRQQ@WgYA%}g3|1N2aohGiV)}fGI{#T!$F`@9!1o1;=bmvtEhwdHykAd$Rn@qn5h|*>+!c_;Tv< z8 v2YGz-cMBi1Nzg3%`@*1OW55mT-aL #k;PYrn2O zZ~jl!Ng0o(DO*mPplZVDd}!JS)deimVuEG89)7*H{p8Lo7d^P&mR$Or{chjc0KI!* zE2FQ~R94qkS4-bplB3u4_O}0@>0gYG*uIx|ZhQI6#uHNVrTdPv%@?0g@@>D}gAVyW zchvUpxW}+x-tT|(l_W8K;Y2Q<{WXhH56MV0C`Rns6uK_$Yj)J@s_Prqtznj~yQ;OT z^YG4>@*95Y&a`Wal#^wB@O8U;OgNvwGUp3COCt}Q5byK(@PfN$oznqbkCoOMAyS#C z6E+s4bl?7V?v3lL80GBbn*STiPFCd9o|3CCe|Yli;)=6~TP}ePA|0+UY-&N SyESu2#9X0CTBfAT}A8<(j zcReOml2zI5z>8O}UTJ+btw_7SD(?XQA?NNkz6LopVLdmmnJcGxOEgWK$-o^KreNk! zHX~<;rDo_I!<=O6x!JFG#)-dE`*J7gF;|oIo!<<{nfYpt-}pYE&f!CH% l0 z>=$~HpYVI`Jo}8h39r@o^FF??&N=_% oG~FGe^^Yr)0mG38VHM@Im$iBe}dkF=?0(f