From e670a8b7d71f3c15fc618e80f5fa75a8d7692430 Mon Sep 17 00:00:00 2001
From: Aryan Shah <149894557+ARYANSHAH1567@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:17:16 +0530
Subject: [PATCH 1/2] Unittests for
src/components/UserPortal/UserSidebar/UserSidebar.tsx (#2396)
* added Unittests for src/components/UserPortal/UserSidebar/UserSidebar.tsx
---
.../UserSidebar/UserSidebar.test.tsx | 170 +++++++++++++++---
1 file changed, 142 insertions(+), 28 deletions(-)
diff --git a/src/components/UserPortal/UserSidebar/UserSidebar.test.tsx b/src/components/UserPortal/UserSidebar/UserSidebar.test.tsx
index 7218bc745c..0bbf33a782 100644
--- a/src/components/UserPortal/UserSidebar/UserSidebar.test.tsx
+++ b/src/components/UserPortal/UserSidebar/UserSidebar.test.tsx
@@ -3,7 +3,7 @@ import type { RenderResult } from '@testing-library/react';
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { MockedProvider } from '@apollo/react-testing';
import { I18nextProvider } from 'react-i18next';
-
+import styles from './UserSidebar.module.css';
import {
USER_DETAILS,
USER_JOINED_ORGANIZATIONS,
@@ -15,6 +15,7 @@ import i18nForTest from 'utils/i18nForTest';
import { StaticMockLink } from 'utils/StaticMockLink';
import UserSidebar from './UserSidebar';
import useLocalStorage from 'utils/useLocalstorage';
+import userEvent from '@testing-library/user-event';
const { setItem } = useLocalStorage();
@@ -363,40 +364,57 @@ const renderUserSidebar = (
);
};
-describe('Testing UserSidebar Component [User Portal]', () => {
+describe('UserSidebar Component Tests in User Portal', () => {
beforeEach(() => {
jest.clearAllMocks();
});
- test('Component should be rendered properly', async () => {
+ test('UserSidebar component renders correctly with user data present', async () => {
await act(async () => {
renderUserSidebar('properId', link);
await wait();
});
+ expect(screen.getByText('Talawa User Portal')).toBeInTheDocument();
});
- test('Component should be rendered properly when userImage is present', async () => {
+ test('Displays the logo and title text of the User Portal', async () => {
await act(async () => {
- renderUserSidebar('imagePresent', link);
+ renderUserSidebar('properId', link);
await wait();
});
+ expect(screen.getByText('Talawa User Portal')).toBeInTheDocument();
+ expect(screen.getByTestId('leftDrawerContainer')).toBeVisible();
});
- test('Component should be rendered properly when organizationImage is present', async () => {
+ test('UserSidebar renders correctly when joinedOrganizations list is empty', async () => {
+ await act(async () => {
+ renderUserSidebar('orgEmpty', link);
+ await wait();
+ });
+ expect(screen.getByText('My Organizations')).toBeInTheDocument();
+ });
+
+ test('Renders UserSidebar component with organization image when present', async () => {
await act(async () => {
renderUserSidebar('imagePresent', link);
await wait();
});
+ expect(screen.getByText('Settings')).toBeInTheDocument();
});
- test('Component should be rendered properly when joinedOrganizations list is empty', async () => {
+ test('User profile data renders with all expected navigation links visible', async () => {
await act(async () => {
- renderUserSidebar('orgEmpty', link);
+ renderUserSidebar('properId', link);
await wait();
});
+
+ const expectedLinks = ['My Organizations', 'Settings', 'Chat'];
+ expectedLinks.forEach((link) => {
+ expect(screen.getByText(link)).toBeInTheDocument();
+ });
});
- test('Testing Drawer when the screen size is less than or equal to 820px', async () => {
+ test('UserSidebar renders correctly on smaller screens and toggles drawer visibility', async () => {
await act(async () => {
resizeWindow(800);
render(
@@ -411,28 +429,124 @@ describe('Testing UserSidebar Component [User Portal]', () => {
,
);
});
- expect(screen.getByText('My Organizations')).toBeInTheDocument();
- expect(screen.getByText('Settings')).toBeInTheDocument();
- expect(screen.getByText('Talawa User Portal')).toBeInTheDocument();
- const settingsBtn = screen.getByText('Settings');
+ const orgsBtn = screen.getByTestId('orgsBtn');
+ act(() => orgsBtn.click());
+ expect(props.setHideDrawer).toHaveBeenCalledWith(true);
+ });
- const orgsBtn = screen.getAllByTestId(/orgsBtn/i);
+ test('Active route button style changes correctly upon click', async () => {
+ await act(async () => {
+ renderUserSidebar('properId', link);
+ await wait();
+ });
- act(() => {
- orgsBtn[0].click();
+ const orgsBtn = screen.getByTestId('orgsBtn');
+ const settingsBtn = screen.getByTestId('settingsBtn');
+
+ fireEvent.click(orgsBtn);
+ expect(orgsBtn).toHaveClass('text-white btn btn-success');
+ fireEvent.click(settingsBtn);
+ expect(settingsBtn).toHaveClass('text-white btn btn-success');
+ });
+
+ test('Translation hook displays expected text in UserSidebar', async () => {
+ await act(async () => {
+ renderUserSidebar('properId', link);
+ await wait();
+ });
+ expect(
+ screen.getByText(i18nForTest.t('common:settings')),
+ ).toBeInTheDocument();
+ });
+
+ test('handleLinkClick function closes the sidebar on mobile view when a link is clicked', async () => {
+ resizeWindow(800);
+ await act(async () => {
+ renderUserSidebar('properId', link);
+ await wait();
});
- await waitFor(() =>
- expect(
- orgsBtn[0].className.includes('text-white btn btn-success'),
- ).toBeTruthy(),
- );
- act(() => {
- settingsBtn.click();
+ const chatBtn = screen.getByTestId('chatBtn');
+ fireEvent.click(chatBtn);
+ expect(props.setHideDrawer).toHaveBeenCalledWith(true);
+ });
+
+ describe('UserSidebar Drawer Visibility Tests on Smaller Screens', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test('Clicking a link closes the drawer when window width is 820px or less', () => {
+ act(() => {
+ window.innerWidth = 820;
+ window.dispatchEvent(new Event('resize'));
+ });
+
+ render(
+
+
+
+
+
+
+
+
+ ,
+ );
+
+ const linkElement = screen.getByText('My Organizations'); // Adjust text if different
+ fireEvent.click(linkElement);
+
+ expect(props.setHideDrawer).toHaveBeenCalledWith(true);
+ });
+
+ describe('UserSidebar Drawer State Tests', () => {
+ test('Drawer visibility changes based on hideDrawer prop', () => {
+ const { rerender } = render(
+
+
+
+
+
+
+
+
+ ,
+ );
+
+ expect(screen.getByTestId('leftDrawerContainer')).toHaveClass(
+ styles.hideElemByDefault,
+ );
+
+ rerender(
+
+
+
+
+
+
+
+
+ ,
+ );
+ expect(screen.getByTestId('leftDrawerContainer')).toHaveClass(
+ styles.inactiveDrawer,
+ );
+
+ rerender(
+
+
+
+
+
+
+
+
+ ,
+ );
+ expect(screen.getByTestId('leftDrawerContainer')).toHaveClass(
+ styles.activeDrawer,
+ );
+ });
});
- await waitFor(() =>
- expect(
- settingsBtn.className.includes('text-white btn btn-success'),
- ).toBeTruthy(),
- );
});
});
From 2fffd909c4ad8a46f09d195423c859406429aca4 Mon Sep 17 00:00:00 2001
From: Glen Dsouza
Date: Sun, 3 Nov 2024 13:06:57 +0530
Subject: [PATCH 2/2] Add Support For Volunteer & Volunteer Groups in User &
Admin Portal (#2397)
* base for vgroup
* Volunteer Membership Screens in User/Admin Portal
* Add User action item screen and add support to admin action items for hour updating
* Adding Leaderboard screens
* Add Screens In user portal for volunteer management & Add tests
* minor improvements
* improvements
* Modularize mocks and add interface.ts in countline exclusion
* correct allotedHours to allottedHours
* Add debounced search
* coderabbit suggestions
* Removed old query and fixed translation
---
.github/workflows/pull-request.yml | 2 +-
public/locales/en/translation.json | 109 +++-
public/locales/fr/translation.json | 181 +++++--
public/locales/hi/translation.json | 175 ++++--
public/locales/sp/translation.json | 175 ++++--
public/locales/zh/translation.json | 175 ++++--
src/App.tsx | 9 +-
src/GraphQl/Mutations/ActionItemMutations.ts | 18 +-
.../Mutations/EventVolunteerMutation.ts | 112 ++++
src/GraphQl/Queries/ActionItemQueries.ts | 41 +-
src/GraphQl/Queries/EventVolunteerQueries.ts | 134 +++++
src/GraphQl/Queries/PlugInQueries.ts | 47 ++
src/assets/images/bronze.png | Bin 0 -> 169265 bytes
src/assets/images/gold.png | Bin 0 -> 157071 bytes
src/assets/images/silver.png | Bin 0 -> 136779 bytes
.../IconComponent/IconComponent.test.tsx | 4 +
.../IconComponent/IconComponent.tsx | 10 +
.../OrganizationScreen/OrganizationScreen.tsx | 1 +
.../EventManagement/EventManagement.test.tsx | 15 +-
.../EventManagement/EventManagement.tsx | 62 ++-
.../EventVolunteers.module.css | 266 ++++++++++
.../Requests/Requests.mocks.ts | 221 ++++++++
.../Requests/Requests.test.tsx | 232 ++++++++
.../EventVolunteers/Requests/Requests.tsx | 338 ++++++++++++
.../VolunteerContainer.test.tsx | 94 ++++
.../EventVolunteers/VolunteerContainer.tsx | 113 ++++
.../VolunteerGroupDeleteModal.test.tsx | 141 +++++
.../VolunteerGroupDeleteModal.tsx | 100 ++++
.../VolunteerGroupModal.test.tsx | 349 ++++++++++++
.../VolunteerGroups/VolunteerGroupModal.tsx | 341 ++++++++++++
.../VolunteerGroupViewModal.test.tsx | 126 +++++
.../VolunteerGroupViewModal.tsx | 235 ++++++++
.../VolunteerGroups/VolunteerGroups.mocks.ts | 452 ++++++++++++++++
.../VolunteerGroups/VolunteerGroups.test.tsx | 232 ++++++++
.../VolunteerGroups/VolunteerGroups.tsx | 444 ++++++++++++++++
.../Volunteers/VolunteerCreateModal.test.tsx | 122 +++++
.../Volunteers/VolunteerCreateModal.tsx | 152 ++++++
.../Volunteers/VolunteerDeleteModal.test.tsx | 129 +++++
.../Volunteers/VolunteerDeleteModal.tsx | 103 ++++
.../Volunteers/VolunteerViewModal.test.tsx | 101 ++++
.../Volunteers/VolunteerViewModal.tsx | 202 +++++++
.../Volunteers/Volunteers.mocks.ts | 303 +++++++++++
.../Volunteers/Volunteers.test.tsx | 245 +++++++++
.../EventVolunteers/Volunteers/Volunteers.tsx | 462 ++++++++++++++++
.../FundCampaignPledge/FundCampaignPledge.tsx | 10 +-
.../FundCampaignPledge/PledgeModal.test.tsx | 4 +-
.../FundCampaignPledge/PledgeModal.tsx | 6 +-
src/screens/Leaderboard/Leaderboard.mocks.ts | 198 +++++++
src/screens/Leaderboard/Leaderboard.test.tsx | 264 +++++++++
src/screens/Leaderboard/Leaderboard.tsx | 372 +++++++++++++
.../ItemDeleteModal.test.tsx | 11 +-
.../ItemModal.test.tsx | 501 ++++++++++++++++--
.../OrganizationActionItems/ItemModal.tsx | 308 +++++++++--
.../ItemUpdateStatusModal.test.tsx | 104 +++-
.../ItemUpdateStatusModal.tsx | 31 +-
.../ItemViewModal.test.tsx | 248 +++++++--
.../OrganizationActionItems/ItemViewModal.tsx | 62 ++-
.../OrganizationActionItem.mocks.ts | 320 +++++------
.../OrganizationActionItems.module.css | 58 ++
.../OrganizationActionItems.test.tsx | 50 +-
.../OrganizationActionItems.tsx | 143 +++--
.../testObject.mocks.ts | 402 ++++++++++++++
.../OrganizationDashboard.module.css | 6 +
.../OrganizationDashboard.test.tsx | 422 +++++++++------
.../OrganizationDashboard.tsx | 213 ++++++--
.../OrganizationDashboardMocks.ts | 144 ++++-
.../UserPortal/Campaigns/PledgeModal.test.tsx | 4 +-
.../UserPortal/Campaigns/PledgeModal.tsx | 6 +-
src/screens/UserPortal/Pledges/Pledges.tsx | 10 +-
.../UserPortal/UserScreen/UserScreen.tsx | 1 +
.../Volunteer/Actions/Actions.mocks.ts | 268 ++++++++++
.../Volunteer/Actions/Actions.test.tsx | 221 ++++++++
.../UserPortal/Volunteer/Actions/Actions.tsx | 471 ++++++++++++++++
.../Volunteer/Groups/GroupModal.test.tsx | 308 +++++++++++
.../Volunteer/Groups/GroupModal.tsx | 415 +++++++++++++++
.../Volunteer/Groups/Groups.mocks.ts | 468 ++++++++++++++++
.../Volunteer/Groups/Groups.test.tsx | 217 ++++++++
.../UserPortal/Volunteer/Groups/Groups.tsx | 415 +++++++++++++++
.../Invitations/Invitations.mocks.ts | 263 +++++++++
.../Invitations/Invitations.test.tsx | 303 +++++++++++
.../Volunteer/Invitations/Invitations.tsx | 297 +++++++++++
.../UpcomingEvents/UpcomingEvents.mocks.ts | 281 ++++++++++
.../UpcomingEvents/UpcomingEvents.test.tsx | 224 ++++++++
.../UpcomingEvents/UpcomingEvents.tsx | 377 +++++++++++++
.../Volunteer/VolunteerManagement.module.css | 138 +++++
.../Volunteer/VolunteerManagement.test.tsx | 128 +++++
.../Volunteer/VolunteerManagement.tsx | 211 ++++++++
src/state/reducers/userRoutersReducer.test.ts | 12 +
src/state/reducers/userRoutesReducer.ts | 1 +
src/utils/interfaces.ts | 170 ++++--
90 files changed, 14917 insertions(+), 942 deletions(-)
create mode 100644 src/GraphQl/Mutations/EventVolunteerMutation.ts
create mode 100644 src/GraphQl/Queries/EventVolunteerQueries.ts
create mode 100644 src/assets/images/bronze.png
create mode 100644 src/assets/images/gold.png
create mode 100644 src/assets/images/silver.png
create mode 100644 src/screens/EventVolunteers/EventVolunteers.module.css
create mode 100644 src/screens/EventVolunteers/Requests/Requests.mocks.ts
create mode 100644 src/screens/EventVolunteers/Requests/Requests.test.tsx
create mode 100644 src/screens/EventVolunteers/Requests/Requests.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerContainer.test.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerContainer.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupDeleteModal.test.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupDeleteModal.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupModal.test.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupModal.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupViewModal.test.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroupViewModal.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroups.mocks.ts
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroups.test.tsx
create mode 100644 src/screens/EventVolunteers/VolunteerGroups/VolunteerGroups.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerCreateModal.test.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerCreateModal.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerDeleteModal.test.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerDeleteModal.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerViewModal.test.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/VolunteerViewModal.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/Volunteers.mocks.ts
create mode 100644 src/screens/EventVolunteers/Volunteers/Volunteers.test.tsx
create mode 100644 src/screens/EventVolunteers/Volunteers/Volunteers.tsx
create mode 100644 src/screens/Leaderboard/Leaderboard.mocks.ts
create mode 100644 src/screens/Leaderboard/Leaderboard.test.tsx
create mode 100644 src/screens/Leaderboard/Leaderboard.tsx
create mode 100644 src/screens/OrganizationActionItems/testObject.mocks.ts
create mode 100644 src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts
create mode 100644 src/screens/UserPortal/Volunteer/Actions/Actions.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Actions/Actions.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Groups/GroupModal.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Groups/GroupModal.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Groups/Groups.mocks.ts
create mode 100644 src/screens/UserPortal/Volunteer/Groups/Groups.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Groups/Groups.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Invitations/Invitations.mocks.ts
create mode 100644 src/screens/UserPortal/Volunteer/Invitations/Invitations.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/Invitations/Invitations.tsx
create mode 100644 src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.mocks.ts
create mode 100644 src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.tsx
create mode 100644 src/screens/UserPortal/Volunteer/VolunteerManagement.module.css
create mode 100644 src/screens/UserPortal/Volunteer/VolunteerManagement.test.tsx
create mode 100644 src/screens/UserPortal/Volunteer/VolunteerManagement.tsx
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 27f18e28ab..f73d36e130 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -38,7 +38,7 @@ jobs:
- name: Count number of lines
run: |
chmod +x ./.github/workflows/countline.py
- ./.github/workflows/countline.py --lines 600 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts
+ ./.github/workflows/countline.py --lines 600 --exclude_files src/screens/LoginPage/LoginPage.tsx src/GraphQl/Queries/Queries.ts src/screens/OrgList/OrgList.tsx src/GraphQl/Mutations/mutations.ts src/components/EventListCard/EventListCardModals.tsx src/components/TagActions/TagActionsMocks.ts src/utils/interfaces.ts
- name: Get changed TypeScript files
id: changed-files
diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json
index 55865167d5..d48f1a23c4 100644
--- a/public/locales/en/translation.json
+++ b/public/locales/en/translation.json
@@ -1,4 +1,16 @@
{
+ "leaderboard": {
+ "title": "Leaderboard",
+ "searchByVolunteer": "Search By Volunteer",
+ "mostHours": "Most Hours",
+ "leastHours": "Least Hours",
+ "timeFrame": "Time Frame",
+ "allTime": "All Time",
+ "weekly": "This Week",
+ "monthly": "This Month",
+ "yearly": "This Year",
+ "noVolunteers": "No Volunteers Found!"
+ },
"loginPage": {
"title": "Talawa Admin",
"fromPalisadoes": "An open source application by Palisadoes Foundation volunteers",
@@ -266,7 +278,9 @@
"members": "members",
"admins": "admins",
"requests": "requests",
- "talawaApiUnavailable": "talawaApiUnavailable"
+ "talawaApiUnavailable": "talawaApiUnavailable",
+ "volunteerRankings": "Volunteer Rankings",
+ "noVolunteers": "No Volunteers Found!"
},
"organizationPeople": {
"title": "Talawa Members",
@@ -461,7 +475,7 @@
"successfulDeletion": "Action Item deleted successfully",
"title": "Action Items",
"category": "Category",
- "allotedHours": "Alloted Hours",
+ "allottedHours": "Allotted Hours",
"latestDueDate": "Latest Due Date",
"earliestDueDate": "Earliest Due Date",
"updateActionItem": "Update Action Item",
@@ -470,7 +484,12 @@
"close": "close",
"eventActionItems": "eventActionItems",
"no": "no",
- "yes": "yes"
+ "yes": "yes",
+ "individuals": "Individuals",
+ "groups": "Groups",
+ "assignTo": "Assign To",
+ "volunteers": "Volunteers",
+ "volunteerGroups": "Volunteer Groups"
},
"organizationAgendaCategory": {
"agendaCategoryDetails": "Agenda Category Details",
@@ -733,10 +752,11 @@
"title": "Event Management",
"dashboard": "Dashboard",
"registrants": "Registrants",
- "eventActions": "Event Actions",
- "eventAgendas": "Event Agendas",
- "eventStats": "Event Statistics",
- "to": "TO"
+ "actions": "Actions",
+ "agendas": "Agendas",
+ "statistics": "Statistics",
+ "to": "TO",
+ "volunteers": "Volunteers"
},
"forgotPassword": {
"title": "Talawa Forgot Password",
@@ -1343,5 +1363,80 @@
},
"userPledges": {
"title": "My Pledges"
+ },
+ "eventVolunteers": {
+ "volunteers": "Volunteers",
+ "volunteer": "Volunteer",
+ "volunteerGroups": "Volunteer Groups",
+ "individuals": "Individuals",
+ "groups": "Groups",
+ "status": "Status",
+ "noVolunteers": "No Volunteers",
+ "noVolunteerGroups": "No Volunteer Groups",
+ "add": "Add",
+ "mostHoursVolunteered": "Most Hours Volunteered",
+ "leastHoursVolunteered": "Least Hours Volunteered",
+ "accepted": "Accepted",
+ "addVolunteer": "Add Volunteer",
+ "removeVolunteer": "Remove Volunteer",
+ "volunteerAdded": "Volunteer added successfully",
+ "volunteerRemoved": "Volunteer removed successfully",
+ "volunteerGroupCreated": "Volunteer group created successfully",
+ "volunteerGroupUpdated": "Volunteer group updated successfully",
+ "volunteerGroupDeleted": "Volunteer group deleted successfully",
+ "removeVolunteerMsg": "Are you sure you want to remove this Volunteer?",
+ "deleteVolunteerGroupMsg": "Are you sure you want to delete this Volunteer Group?",
+ "leader": "Leader",
+ "group": "Group",
+ "createGroup": "Create Group",
+ "updateGroup": "Update Group",
+ "deleteGroup": "Delete Group",
+ "volunteersRequired": "Volunteers Required",
+ "volunteerDetails": "Volunteer Details",
+ "hoursVolunteered": "Hours Volunteered",
+ "groupDetails": "Group Details",
+ "creator": "Creator",
+ "requests": "Requests",
+ "noRequests": "No Requests",
+ "latest": "Latest",
+ "earliest": "Earliest",
+ "requestAccepted": "Request accepted successfully",
+ "requestRejected": "Request rejected successfully",
+ "details": "Details",
+ "manageGroup": "Manage Group",
+ "mostVolunteers": "Most Volunteers",
+ "leastVolunteers": "Least Volunteers"
+ },
+ "userVolunteer": {
+ "title": "Volunteership",
+ "name": "Title",
+ "upcomingEvents": "Upcoming Events",
+ "requests": "Requests",
+ "invitations": "Invitations",
+ "groups": "Volunteer Groups",
+ "actions": "Actions",
+ "searchByName": "Search by Name",
+ "latestEndDate": "Latest End Date",
+ "earliestEndDate": "Earliest End Date",
+ "noEvents": "No Upcoming Events",
+ "volunteer": "Volunteer",
+ "volunteered": "Volunteered",
+ "join": "Join",
+ "joined": "Joined",
+ "searchByEventName": "Search by Event title",
+ "filter": "Filter",
+ "groupInvite": "Group Invite",
+ "individualInvite": "Individual Invite",
+ "noInvitations": "No Invitations",
+ "accept": "Accept",
+ "reject": "Reject",
+ "receivedLatest": "Received Latest",
+ "receivedEarliest": "Received Earliest",
+ "invitationAccepted": "Invitation accepted successfully",
+ "invitationRejected": "Invitation rejected successfully",
+ "volunteerSuccess": "Requested to volunteer successfully",
+ "recurring": "Recurring",
+ "groupInvitationSubject": "Invitation to join volunteer group",
+ "eventInvitationSubject": "Invitation to volunteer for event"
}
}
diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json
index 8bdb3e854a..3d8cb461ee 100644
--- a/public/locales/fr/translation.json
+++ b/public/locales/fr/translation.json
@@ -1,4 +1,16 @@
{
+ "leaderboard": {
+ "title": "Tableau des Leaders",
+ "searchByVolunteer": "Recherche par Bénévole",
+ "mostHours": "Le Plus d'Heures",
+ "leastHours": "Le Moins d'Heures",
+ "timeFrame": "Période",
+ "allTime": "Tout le Temps",
+ "weekly": "Cette Semaine",
+ "monthly": "Ce Mois",
+ "yearly": "Cette Année",
+ "noVolunteers": "Aucun Bénévole Trouvé!"
+ },
"loginPage": {
"title": "Administrateur Talawa",
"fromPalisadoes": "Une application open source réalisée par les bénévoles de la Fondation Palisadoes",
@@ -266,7 +278,9 @@
"members": "Membres",
"admins": "Administrateurs",
"requests": "Demandes",
- "talawaApiUnavailable": "API Talawa indisponible"
+ "talawaApiUnavailable": "API Talawa indisponible",
+ "volunteerRankings": "Classement des Bénévoles",
+ "noVolunteers": "Aucun Bénévole Trouvé!"
},
"organizationPeople": {
"title": "Membres Talawa",
@@ -427,50 +441,55 @@
"done": "Fait"
},
"organizationActionItems": {
- "actionItemCategory": "Catégorie d'élément d'action",
- "actionItemDetails": "Détails de l'action",
- "actionItemCompleted": "Élément d'action terminé",
- "assignee": "Cessionnaire",
- "assigner": "Assigner",
- "assignmentDate": "Date d'affectation",
+ "actionItemCategory": "Catégorie de l'Action",
+ "actionItemDetails": "Détails de l'Action",
+ "actionItemCompleted": "Action Terminée",
+ "assignee": "Attribué à",
+ "assigner": "Assignateur",
+ "assignmentDate": "Date d'Attribution",
"active": "Actif",
- "clearFilters": "Effacer les filtres",
- "completionDate": "Date d'achèvement",
- "createActionItem": "Créer un élément d'action",
- "deleteActionItem": "Supprimer l'élément d'action",
- "deleteActionItemMsg": "Voulez-vous supprimer cette action ?",
+ "clearFilters": "Effacer les Filtres",
+ "completionDate": "Date de Complétion",
+ "createActionItem": "Créer une Action",
+ "deleteActionItem": "Supprimer l'Action",
+ "deleteActionItemMsg": "Voulez-vous supprimer cette action?",
"details": "Détails",
- "dueDate": "Date d'échéance",
- "earliest": "Le plus tôt",
- "editActionItem": "Modifier l'élément d'action",
- "isCompleted": "Complété",
- "latest": "Dernier",
- "makeActive": "Actif",
- "noActionItems": "Aucune action",
- "options": "Possibilités",
- "preCompletionNotes": "Notes préalables à l'achèvement",
- "actionItemActive": "Actif",
- "markCompletion": "Marquer l'achèvement",
- "actionItemStatus": "Statut de l'action",
- "postCompletionNotes": "Notes post-achèvement",
- "selectActionItemCategory": "Sélectionnez une catégorie d'élément d'action",
- "selectAssignee": "Sélectionnez un responsable",
+ "dueDate": "Date d'Échéance",
+ "earliest": "Le Plus Ancien",
+ "editActionItem": "Modifier l'Action",
+ "isCompleted": "Terminé",
+ "latest": "Le Plus Récent",
+ "makeActive": "Rendre Actif",
+ "noActionItems": "Aucune Action",
+ "options": "Options",
+ "preCompletionNotes": "Notes Pré-Complétion",
+ "actionItemActive": "Action Active",
+ "markCompletion": "Marquer comme Terminé",
+ "actionItemStatus": "État de l'Action",
+ "postCompletionNotes": "Notes Post-Complétion",
+ "selectActionItemCategory": "Sélectionnez une Catégorie d'Action",
+ "selectAssignee": "Sélectionner un Attribué",
"status": "Statut",
- "successfulCreation": "Élément d'action créé avec succès",
- "successfulUpdation": "Élément d'action mis à jour avec succès",
- "successfulDeletion": "Élément d'action supprimé avec succès",
- "title": "Éléments d'action",
+ "successfulCreation": "Action créée avec succès",
+ "successfulUpdation": "Action mise à jour avec succès",
+ "successfulDeletion": "Action supprimée avec succès",
+ "title": "Actions",
"category": "Catégorie",
- "allotedHours": "Heures allouées",
- "latestDueDate": "Date d'échéance la plus récente",
- "earliestDueDate": "Date d'échéance la plus ancienne",
- "updateActionItem": "Mettre à jour l'élément d'action",
- "noneUpdated": "Aucun des champs n'a été mis à jour",
- "updateStatusMsg": "Êtes-vous sûr de vouloir marquer cet élément d'action comme en attente?",
+ "allottedHours": "Heures Attribuées",
+ "latestDueDate": "Date d'Échéance la Plus Récente",
+ "earliestDueDate": "Date d'Échéance la Plus Ancienne",
+ "updateActionItem": "Mettre à Jour l'Action",
+ "noneUpdated": "Aucun champ n'a été mis à jour",
+ "updateStatusMsg": "Voulez-vous vraiment marquer cette action comme en attente?",
"close": "Fermer",
- "eventActionItems": "Éléments d'action d'événement",
+ "eventActionItems": "Actions de l'Événement",
"no": "Non",
- "yes": "Oui"
+ "yes": "Oui",
+ "individuals": "Individus",
+ "groups": "Groupes",
+ "assignTo": "Attribuer à",
+ "volunteers": "Bénévoles",
+ "volunteerGroups": "Groupes de Bénévoles"
},
"organizationAgendaCategory": {
"agendaCategoryDetails": "Détails de la catégorie d'ordre du jour",
@@ -733,10 +752,11 @@
"title": "Gestion d'événements",
"dashboard": "Tableau de bord",
"registrants": "Inscrits",
- "eventActions": "Actions d'événement",
- "eventAgendas": "Ordres du jour des événements",
- "eventStats": "Statistiques des événements",
- "to": "À"
+ "actions": "Actions",
+ "agendas": "Ordres du jour",
+ "statistics": "Statistiques",
+ "to": "À",
+ "volunteers": "Bénévoles"
},
"forgotPassword": {
"title": "Talawa Mot de passe oublié",
@@ -1343,5 +1363,80 @@
},
"userPledges": {
"title": "Mes Promesses"
+ },
+ "eventVolunteers": {
+ "volunteers": "Bénévoles",
+ "volunteer": "Bénévole",
+ "volunteerGroups": "Groupes de Bénévoles",
+ "individuals": "Individus",
+ "groups": "Groupes",
+ "status": "Statut",
+ "noVolunteers": "Aucun Bénévole",
+ "noVolunteerGroups": "Aucun Groupe de Bénévoles",
+ "add": "Ajouter",
+ "mostHoursVolunteered": "Le Plus d'Heures de Bénévolat",
+ "leastHoursVolunteered": "Le Moins d'Heures de Bénévolat",
+ "accepted": "Accepté",
+ "addVolunteer": "Ajouter un Bénévole",
+ "removeVolunteer": "Supprimer le Bénévole",
+ "volunteerAdded": "Bénévole ajouté avec succès",
+ "volunteerRemoved": "Bénévole supprimé avec succès",
+ "volunteerGroupCreated": "Groupe de bénévoles créé avec succès",
+ "volunteerGroupUpdated": "Groupe de bénévoles mis à jour avec succès",
+ "volunteerGroupDeleted": "Groupe de bénévoles supprimé avec succès",
+ "removeVolunteerMsg": "Êtes-vous sûr de vouloir supprimer ce bénévole?",
+ "deleteVolunteerGroupMsg": "Êtes-vous sûr de vouloir supprimer ce groupe de bénévoles?",
+ "leader": "Chef",
+ "group": "Groupe",
+ "createGroup": "Créer un Groupe",
+ "updateGroup": "Mettre à Jour le Groupe",
+ "deleteGroup": "Supprimer le Groupe",
+ "volunteersRequired": "Bénévoles Requis",
+ "volunteerDetails": "Détails du Bénévole",
+ "hoursVolunteered": "Heures de Bénévolat",
+ "groupDetails": "Détails du Groupe",
+ "creator": "Créateur",
+ "requests": "Demandes",
+ "noRequests": "Aucune Demande",
+ "latest": "Le Plus Récent",
+ "earliest": "Le Plus Ancien",
+ "requestAccepted": "Demande acceptée avec succès",
+ "requestRejected": "Demande rejetée avec succès",
+ "details": "Détails",
+ "manageGroup": "Gérer le Groupe",
+ "mostVolunteers": "Le plus de bénévoles",
+ "leastVolunteers": "Le moins de bénévoles"
+ },
+ "userVolunteer": {
+ "title": "Volontariat",
+ "name": "Titre",
+ "upcomingEvents": "Événements à Venir",
+ "requests": "Demandes",
+ "invitations": "Invitations",
+ "groups": "Groupes de Bénévoles",
+ "actions": "Actions",
+ "searchByName": "Rechercher par Nom",
+ "latestEndDate": "Date de Fin la Plus Récente",
+ "earliestEndDate": "Date de Fin la Plus Ancienne",
+ "noEvents": "Aucun Événement à Venir",
+ "volunteer": "Bénévole",
+ "volunteered": "A Bénévolé",
+ "join": "Rejoindre",
+ "joined": "Rejoint",
+ "searchByEventName": "Rechercher par Titre d'Événement",
+ "filter": "Filtrer",
+ "groupInvite": "Invitation de Groupe",
+ "individualInvite": "Invitation Individuelle",
+ "noInvitations": "Aucune Invitation",
+ "accept": "Accepter",
+ "reject": "Rejeter",
+ "receivedLatest": "Reçu le Plus Récemment",
+ "receivedEarliest": "Reçu en Premier",
+ "invitationAccepted": "Invitation acceptée avec succès",
+ "invitationRejected": "Invitation rejetée avec succès",
+ "volunteerSuccess": "Demande de bénévolat envoyée avec succès",
+ "recurring": "Récurrent",
+ "groupInvitationSubject": "Invitation à rejoindre le groupe de bénévoles",
+ "eventInvitationSubject": "Invitation à faire du bénévolat pour l'événement"
}
}
diff --git a/public/locales/hi/translation.json b/public/locales/hi/translation.json
index b3b00bd989..01b65dedde 100644
--- a/public/locales/hi/translation.json
+++ b/public/locales/hi/translation.json
@@ -1,4 +1,16 @@
{
+ "leaderboard": {
+ "title": "लीडरबोर्ड",
+ "searchByVolunteer": "स्वयंसेवक द्वारा खोजें",
+ "mostHours": "सबसे अधिक घंटे",
+ "leastHours": "सबसे कम घंटे",
+ "timeFrame": "समय सीमा",
+ "allTime": "सभी समय",
+ "weekly": "इस सप्ताह",
+ "monthly": "इस माह",
+ "yearly": "इस वर्ष",
+ "noVolunteers": "कोई स्वयंसेवक नहीं मिला!"
+ },
"loginPage": {
"title": "तालावा व्यवस्थापक",
"fromPalisadoes": "Palisadoes फाउंडेशन स्वयंसेवकों द्वारा विकसित एक ओपन-सोर्स एप्लिकेशन",
@@ -266,7 +278,9 @@
"members": "सदस्य",
"admins": "प्रशासक",
"requests": "अनुरोध",
- "talawaApiUnavailable": "तालावा एपीआई अनुपलब्ध"
+ "talawaApiUnavailable": "तालावा एपीआई अनुपलब्ध",
+ "volunteerRankings": "स्वयंसेवक रैंकिंग",
+ "noVolunteers": "कोई स्वयंसेवक नहीं मिला!"
},
"organizationPeople": {
"title": "तालावा सदस्य",
@@ -427,50 +441,55 @@
"done": "पूर्ण"
},
"organizationActionItems": {
- "actionItemCategory": "कार्य आइटम श्रेणी",
- "actionItemDetails": "कार्रवाई मद विवरण",
- "actionItemCompleted": "कार्य आइटम पूर्ण हुआ",
- "assignee": "संपत्ति-भागी",
- "assigner": "असाइनर",
- "assignmentDate": "असाइनमेंट दिनांक",
+ "actionItemCategory": "क्रिया वस्तु श्रेणी",
+ "actionItemDetails": "क्रिया वस्तु विवरण",
+ "actionItemCompleted": "क्रिया वस्तु पूरी",
+ "assignee": "प्राप्तकर्ता",
+ "assigner": "सौंपने वाला",
+ "assignmentDate": "आवंटन तिथि",
"active": "सक्रिय",
"clearFilters": "फ़िल्टर साफ़ करें",
- "completionDate": "पूरा करने की तिथि",
- "createActionItem": "कार्रवाई आइटम बनाएं",
- "deleteActionItem": "क्रिया आइटम हटाएँ",
- "deleteActionItemMsg": "क्या आप इस क्रिया आइटम को हटाना चाहते हैं?",
+ "completionDate": "पूर्णता तिथि",
+ "createActionItem": "क्रिया वस्तु बनाएँ",
+ "deleteActionItem": "क्रिया वस्तु हटाएँ",
+ "deleteActionItemMsg": "क्या आप इस क्रिया वस्तु को हटाना चाहते हैं?",
"details": "विवरण",
- "dueDate": "नियत तारीख",
- "earliest": "जल्द से जल्द",
- "editActionItem": "क्रिया आइटम संपादित करें",
- "isCompleted": "पुरा होना।",
+ "dueDate": "समाप्ति तिथि",
+ "earliest": "सबसे पहले",
+ "editActionItem": "क्रिया वस्तु संपादित करें",
+ "isCompleted": "पूर्ण",
"latest": "नवीनतम",
- "makeActive": "सक्रिय",
- "noActionItems": "कोई एक्शन आइटम नहीं",
+ "makeActive": "सक्रिय बनाएं",
+ "noActionItems": "कोई क्रिया वस्तु नहीं",
"options": "विकल्प",
- "preCompletionNotes": "समापन पूर्व नोट्स",
- "actionItemActive": "सक्रिय",
- "markCompletion": "पूर्णता चिह्नित करें",
- "actionItemStatus": "कार्रवाई मद स्थिति",
- "postCompletionNotes": "समापन के बाद के नोट्स",
- "selectActionItemCategory": "एक क्रिया आइटम श्रेणी का चयन करें",
- "selectAssignee": "एक समनुदेशिती का चयन करें",
+ "preCompletionNotes": "पूर्व-पूर्णता नोट्स",
+ "actionItemActive": "सक्रिय क्रिया वस्तु",
+ "markCompletion": "पूर्णता को चिह्नित करें",
+ "actionItemStatus": "क्रिया वस्तु स्थिति",
+ "postCompletionNotes": "पूर्णता के बाद नोट्स",
+ "selectActionItemCategory": "क्रिया वस्तु श्रेणी चुनें",
+ "selectAssignee": "प्राप्तकर्ता चुनें",
"status": "स्थिति",
- "successfulCreation": "कार्रवाई आइटम सफलतापूर्वक बनाया गया",
- "successfulUpdation": "कार्रवाई आइटम सफलतापूर्वक अपडेट किया गया",
- "successfulDeletion": "कार्रवाई आइटम सफलतापूर्वक हटा दिया गया",
- "title": "एक्शन आइटम्स",
+ "successfulCreation": "क्रिया वस्तु सफलतापूर्वक बनाई गई",
+ "successfulUpdation": "क्रिया वस्तु सफलतापूर्वक अद्यतन की गई",
+ "successfulDeletion": "क्रिया वस्तु सफलतापूर्वक हटाई गई",
+ "title": "क्रिया वस्तुएँ",
"category": "श्रेणी",
- "allotedHours": "आवंटित घंटे",
- "latestDueDate": "सबसे अधिक नियत तिथि",
- "earliestDueDate": "सबसे पहले की नियत तिथि",
- "updateActionItem": "कार्य आइटम अपडेट करें",
- "noneUpdated": "कोई फ़ील्ड अपडेट नहीं किया गया",
- "updateStatusMsg": "क्या आप वाकई इस कार्य आइटम को लंबित के रूप में चिह्नित करना चाहते हैं?",
+ "allottedHours": "आवंटित घंटे",
+ "latestDueDate": "नवीनतम समाप्ति तिथि",
+ "earliestDueDate": "प्रारंभिक समाप्ति तिथि",
+ "updateActionItem": "क्रिया वस्तु अपडेट करें",
+ "noneUpdated": "कोई फ़ील्ड अपडेट नहीं की गई",
+ "updateStatusMsg": "क्या आप वाकई इस क्रिया वस्तु को लंबित के रूप में चिह्नित करना चाहते हैं?",
"close": "बंद करें",
- "eventActionItems": "कार्यक्रम कार्रवाई आइटम",
+ "eventActionItems": "घटना क्रिया वस्तुएं",
"no": "नहीं",
- "yes": "हाँ"
+ "yes": "हाँ",
+ "individuals": "व्यक्तियों",
+ "groups": "समूहों",
+ "assignTo": "सौंपें",
+ "volunteers": "स्वयंसेवक",
+ "volunteerGroups": "स्वयंसेवक समूह"
},
"organizationAgendaCategory": {
"agendaCategoryDetails": "एजेंडा श्रेणी विवरण",
@@ -733,10 +752,11 @@
"title": "इवेंट मैनेजमेंट",
"dashboard": "डैशबोर्ड",
"registrants": "कुलसचिव",
- "eventActions": "घटना क्रियाएँ",
- "eventAgendas": "इवेंट एजेंडा",
- "eventStats": "घटना सांख्यिकी",
- "to": "को"
+ "actions": "कार्य",
+ "agendas": "एजेंडे",
+ "statistics": "आँकड़े",
+ "to": "को",
+ "volunteers": "स्वयंसेवक"
},
"forgotPassword": {
"title": "तलावा पासवर्ड भूल गए",
@@ -1343,5 +1363,80 @@
},
"userPledges": {
"title": "मेरी प्रतिज्ञाएँ"
+ },
+ "eventVolunteers": {
+ "volunteers": "स्वयंसेवक",
+ "volunteer": "स्वयंसेवक",
+ "volunteerGroups": "स्वयंसेवक समूह",
+ "individuals": "व्यक्ति",
+ "groups": "समूह",
+ "status": "स्थिति",
+ "noVolunteers": "कोई स्वयंसेवक नहीं",
+ "noVolunteerGroups": "कोई स्वयंसेवक समूह नहीं",
+ "add": "जोड़ें",
+ "mostHoursVolunteered": "सबसे अधिक घंटे स्वयंसेवा",
+ "leastHoursVolunteered": "सबसे कम घंटे स्वयंसेवा",
+ "accepted": "स्वीकृत",
+ "addVolunteer": "स्वयंसेवक जोड़ें",
+ "removeVolunteer": "स्वयंसेवक हटाएं",
+ "volunteerAdded": "स्वयंसेवक सफलतापूर्वक जोड़ा गया",
+ "volunteerRemoved": "स्वयंसेवक सफलतापूर्वक हटाया गया",
+ "volunteerGroupCreated": "स्वयंसेवक समूह सफलतापूर्वक बनाया गया",
+ "volunteerGroupUpdated": "स्वयंसेवक समूह सफलतापूर्वक अपडेट किया गया",
+ "volunteerGroupDeleted": "स्वयंसेवक समूह सफलतापूर्वक हटाया गया",
+ "removeVolunteerMsg": "क्या आप वाकई इस स्वयंसेवक को हटाना चाहते हैं?",
+ "deleteVolunteerGroupMsg": "क्या आप वाकई इस स्वयंसेवक समूह को हटाना चाहते हैं?",
+ "leader": "नेता",
+ "group": "समूह",
+ "createGroup": "समूह बनाएं",
+ "updateGroup": "समूह अपडेट करें",
+ "deleteGroup": "समूह हटाएं",
+ "volunteersRequired": "आवश्यक स्वयंसेवक",
+ "volunteerDetails": "स्वयंसेवक विवरण",
+ "hoursVolunteered": "स्वयंसेवा घंटे",
+ "groupDetails": "समूह विवरण",
+ "creator": "निर्माता",
+ "requests": "अनुरोध",
+ "noRequests": "कोई अनुरोध नहीं",
+ "latest": "नवीनतम",
+ "earliest": "प्रारंभिक",
+ "requestAccepted": "अनुरोध सफलतापूर्वक स्वीकृत",
+ "requestRejected": "अनुरोध सफलतापूर्वक अस्वीकृत",
+ "details": "विवरण",
+ "manageGroup": "समूह प्रबंधित करें",
+ "mostVolunteers": "सबसे अधिक स्वयंसेवक",
+ "leastVolunteers": "सबसे कम स्वयंसेवक"
+ },
+ "userVolunteer": {
+ "title": "स्वयंसेवकता",
+ "name": "शीर्षक",
+ "upcomingEvents": "आगामी कार्यक्रम",
+ "requests": "अनुरोध",
+ "invitations": "निमंत्रण",
+ "groups": "स्वयंसेवक समूह",
+ "actions": "क्रियाएँ",
+ "searchByName": "नाम से खोजें",
+ "latestEndDate": "नवीनतम समाप्ति तिथि",
+ "earliestEndDate": "प्रारंभिक समाप्ति तिथि",
+ "noEvents": "कोई आगामी कार्यक्रम नहीं",
+ "volunteer": "स्वयंसेवक",
+ "volunteered": "स्वयंसेवित",
+ "join": "शामिल हों",
+ "joined": "शामिल हुआ",
+ "searchByEventName": "कार्यक्रम शीर्षक से खोजें",
+ "filter": "फ़िल्टर",
+ "groupInvite": "समूह निमंत्रण",
+ "individualInvite": "व्यक्तिगत निमंत्रण",
+ "noInvitations": "कोई निमंत्रण नहीं",
+ "accept": "स्वीकारें",
+ "reject": "अस्वीकार करें",
+ "receivedLatest": "हाल में प्राप्त",
+ "receivedEarliest": "सबसे पहले प्राप्त",
+ "invitationAccepted": "निमंत्रण सफलतापूर्वक स्वीकार किया गया",
+ "invitationRejected": "निमंत्रण सफलतापूर्वक अस्वीकृत",
+ "volunteerSuccess": "स्वयंसेवक के रूप में अनुरोध सफलतापूर्वक किया गया",
+ "recurring": "पुनरावृत्ति",
+ "groupInvitationSubject": "स्वयंसेवक समूह में शामिल होने के लिए निमंत्रण",
+ "eventInvitationSubject": "कार्यक्रम के लिए स्वयंसेवक बनने का निमंत्रण"
}
}
diff --git a/public/locales/sp/translation.json b/public/locales/sp/translation.json
index f698238e56..300b14ceef 100644
--- a/public/locales/sp/translation.json
+++ b/public/locales/sp/translation.json
@@ -1,4 +1,16 @@
{
+ "leaderboard": {
+ "title": "Tabla de Clasificación",
+ "searchByVolunteer": "Buscar por Voluntario",
+ "mostHours": "Más Horas",
+ "leastHours": "Menos Horas",
+ "timeFrame": "Período",
+ "allTime": "Todo el Tiempo",
+ "weekly": "Esta Semana",
+ "monthly": "Este Mes",
+ "yearly": "Este Año",
+ "noVolunteers": "¡No Se Encontraron Voluntarios!"
+ },
"loginPage": {
"title": "Administrador Talawa",
"fromPalisadoes": "Una aplicación de código abierto de los voluntarios de la Fundación palisados",
@@ -266,7 +278,9 @@
"noPostsPresent": "No Hay Publicaciones Presentes",
"membershipRequests": "Solicitudes de Membresía",
"noMembershipRequests": "No Hay Solicitudes de Membresía",
- "talawaApiUnavailable": "El servicio Talawa-API no está disponible. ¿Está funcionando? Compruebe también la conectividad de su red."
+ "talawaApiUnavailable": "El servicio Talawa-API no está disponible. ¿Está funcionando? Compruebe también la conectividad de su red.",
+ "volunteerRankings": "Clasificación de Voluntarios",
+ "noVolunteers": "¡No Se Encontraron Voluntarios!"
},
"organizationPeople": {
"title": "Miembros Talawa",
@@ -427,50 +441,55 @@
"done": "Hecho"
},
"organizationActionItems": {
- "actionItemCategory": "Categoría del ítem de acción",
- "actionItemActive": "Elemento de acción activo",
- "actionItemCompleted": "Elemento de acción completado",
- "actionItemDetails": "Detalles del ítem de acción",
- "actionItemStatus": "Estado del elemento de acción",
+ "actionItemCategory": "Categoría de Acción",
+ "actionItemDetails": "Detalles de la Acción",
+ "actionItemCompleted": "Acción Completada",
"assignee": "Asignado",
"assigner": "Asignador",
- "assignmentDate": "Fecha de asignación",
+ "assignmentDate": "Fecha de Asignación",
"active": "Activo",
- "clearFilters": "Borrar filtros",
- "close": "Cerrar",
- "completionDate": "Fecha de finalización",
- "createActionItem": "Crear ítem de acción",
- "deleteActionItem": "Eliminar ítem de acción",
- "deleteActionItemMsg": "¿Desea eliminar este ítem de acción?",
+ "clearFilters": "Limpiar Filtros",
+ "completionDate": "Fecha de Finalización",
+ "createActionItem": "Crear Acción",
+ "deleteActionItem": "Eliminar Acción",
+ "deleteActionItemMsg": "¿Desea eliminar esta acción?",
"details": "Detalles",
- "dueDate": "Fecha de vencimiento",
- "earliest": "Lo más temprano",
- "editActionItem": "Editar ítem de acción",
- "eventActionItems": "Elementos de acción del evento",
+ "dueDate": "Fecha de Vencimiento",
+ "earliest": "El Más Antiguo",
+ "editActionItem": "Editar Acción",
"isCompleted": "Completado",
- "latest": "Lo más reciente",
- "makeActive": "Activar",
- "markCompletion": "Marcar finalización",
- "no": "No",
- "noActionItems": "No hay ítems de acción",
+ "latest": "El Más Reciente",
+ "makeActive": "Hacer Activo",
+ "noActionItems": "No Hay Acciones",
"options": "Opciones",
- "preCompletionNotes": "Notas previas a la finalización",
- "postCompletionNotes": "Notas posteriores a la finalización",
- "selectActionItemCategory": "Seleccione una categoría de ítem de acción",
- "selectAssignee": "Seleccione un asignado",
+ "preCompletionNotes": "Notas Pre-Compleción",
+ "actionItemActive": "Acción Activa",
+ "markCompletion": "Marcar como Completado",
+ "actionItemStatus": "Estado de la Acción",
+ "postCompletionNotes": "Notas de Finalización",
+ "selectActionItemCategory": "Seleccionar una Categoría de Acción",
+ "selectAssignee": "Seleccionar Asignado",
"status": "Estado",
- "successfulCreation": "Ítem de acción creado con éxito",
- "successfulUpdation": "Ítem de acción actualizado con éxito",
- "successfulDeletion": "Ítem de acción eliminado con éxito",
- "title": "Ítems de acción",
- "yes": "Sí",
+ "successfulCreation": "Acción creada con éxito",
+ "successfulUpdation": "Acción actualizada con éxito",
+ "successfulDeletion": "Acción eliminada con éxito",
+ "title": "Acciones",
"category": "Categoría",
- "allotedHours": "Horas Asignadas",
+ "allottedHours": "Horas Asignadas",
"latestDueDate": "Fecha de Vencimiento Más Reciente",
- "earliestDueDate": "Fecha de Vencimiento Más Temprana",
- "updateActionItem": "Actualizar Elemento de Acción",
- "noneUpdated": "Ninguno de los campos fue actualizado",
- "updateStatusMsg": "¿Estás seguro de que deseas marcar este elemento de acción como pendiente?"
+ "earliestDueDate": "Fecha de Vencimiento Más Antigua",
+ "updateActionItem": "Actualizar Acción",
+ "noneUpdated": "Ningún campo fue actualizado",
+ "updateStatusMsg": "¿Está seguro de que desea marcar esta acción como pendiente?",
+ "close": "Cerrar",
+ "eventActionItems": "Acciones del Evento",
+ "no": "No",
+ "yes": "Sí",
+ "individuals": "Individuos",
+ "groups": "Grupos",
+ "assignTo": "Asignar a",
+ "volunteers": "Voluntarios",
+ "volunteerGroups": "Grupos de Voluntarios"
},
"organizationAgendaCategory": {
"agendaCategoryDetails": "Detalles de la categoría de la agenda",
@@ -734,10 +753,11 @@
"title": "Gestión de eventos",
"dashboard": "Tablero",
"registrants": "Inscritos",
- "eventActions": "Acciones del evento",
- "eventAgendas": "Agendas de eventos",
- "eventStats": "Estadísticas del evento",
- "to": "A"
+ "actions": "Acciones",
+ "agendas": "Agendas",
+ "statistics": "Estadísticas",
+ "to": "A",
+ "volunteers": "Voluntarios"
},
"forgotPassword": {
"title": "Talawa olvidó su contraseña",
@@ -1344,5 +1364,80 @@
},
"userPledges": {
"title": "Mis Promesas"
+ },
+ "eventVolunteers": {
+ "volunteers": "Voluntarios",
+ "volunteer": "Voluntario",
+ "volunteerGroups": "Grupos de Voluntarios",
+ "individuals": "Individuos",
+ "groups": "Grupos",
+ "status": "Estado",
+ "noVolunteers": "No Hay Voluntarios",
+ "noVolunteerGroups": "No Hay Grupos de Voluntarios",
+ "add": "Agregar",
+ "mostHoursVolunteered": "Más Horas de Voluntariado",
+ "leastHoursVolunteered": "Menos Horas de Voluntariado",
+ "accepted": "Aceptado",
+ "addVolunteer": "Agregar Voluntario",
+ "removeVolunteer": "Eliminar Voluntario",
+ "volunteerAdded": "Voluntario agregado con éxito",
+ "volunteerRemoved": "Voluntario eliminado con éxito",
+ "volunteerGroupCreated": "Grupo de voluntarios creado con éxito",
+ "volunteerGroupUpdated": "Grupo de voluntarios actualizado con éxito",
+ "volunteerGroupDeleted": "Grupo de voluntarios eliminado con éxito",
+ "removeVolunteerMsg": "¿Está seguro de que desea eliminar a este Voluntario?",
+ "deleteVolunteerGroupMsg": "¿Está seguro de que desea eliminar este Grupo de Voluntarios?",
+ "leader": "Líder",
+ "group": "Grupo",
+ "createGroup": "Crear Grupo",
+ "updateGroup": "Actualizar Grupo",
+ "deleteGroup": "Eliminar Grupo",
+ "volunteersRequired": "Voluntarios Necesarios",
+ "volunteerDetails": "Detalles del Voluntario",
+ "hoursVolunteered": "Horas de Voluntariado",
+ "groupDetails": "Detalles del Grupo",
+ "creator": "Creador",
+ "requests": "Solicitudes",
+ "noRequests": "No Hay Solicitudes",
+ "latest": "Más Reciente",
+ "earliest": "Más Antiguo",
+ "requestAccepted": "Solicitud aceptada con éxito",
+ "requestRejected": "Solicitud rechazada con éxito",
+ "details": "Detalles",
+ "manageGroup": "Gestionar Grupo",
+ "mostVolunteers": "La mayoría de voluntarios",
+ "leastVolunteers": "Menos voluntarios"
+ },
+ "userVolunteer": {
+ "title": "Voluntariado",
+ "name": "Título",
+ "upcomingEvents": "Próximos Eventos",
+ "requests": "Solicitudes",
+ "invitations": "Invitaciones",
+ "groups": "Grupos de Voluntarios",
+ "actions": "Acciones",
+ "searchByName": "Buscar por Nombre",
+ "latestEndDate": "Fecha de Finalización Más Reciente",
+ "earliestEndDate": "Fecha de Finalización Más Antigua",
+ "noEvents": "No Hay Próximos Eventos",
+ "volunteer": "Voluntario",
+ "volunteered": "Voluntariado",
+ "join": "Unirse",
+ "joined": "Unido",
+ "searchByEventName": "Buscar por Título del Evento",
+ "filter": "Filtrar",
+ "groupInvite": "Invitación de Grupo",
+ "individualInvite": "Invitación Individual",
+ "noInvitations": "No Hay Invitaciones",
+ "accept": "Aceptar",
+ "reject": "Rechazar",
+ "receivedLatest": "Recibido Recientemente",
+ "receivedEarliest": "Recibido en Primer Lugar",
+ "invitationAccepted": "Invitación aceptada con éxito",
+ "invitationRejected": "Invitación rechazada con éxito",
+ "volunteerSuccess": "Solicitud de voluntariado realizada con éxito",
+ "recurring": "Recurrente",
+ "groupInvitationSubject": "Invitación a unirse al grupo de voluntarios",
+ "eventInvitationSubject": "Invitación a ser voluntario para el evento"
}
}
diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json
index 5d8cfc4826..c5c8c2c2c5 100644
--- a/public/locales/zh/translation.json
+++ b/public/locales/zh/translation.json
@@ -1,4 +1,16 @@
{
+ "leaderboard": {
+ "title": "排行榜",
+ "searchByVolunteer": "按志愿者搜索",
+ "mostHours": "最多时数",
+ "leastHours": "最少时数",
+ "timeFrame": "时间范围",
+ "allTime": "全部时间",
+ "weekly": "本周",
+ "monthly": "本月",
+ "yearly": "今年",
+ "noVolunteers": "未找到志愿者!"
+ },
"loginPage": {
"title": "塔拉瓦管理员",
"fromPalisadoes": "Palisadoes 基金会志愿者开发的开源应用程序",
@@ -266,7 +278,9 @@
"members": "成员",
"admins": "管理员",
"requests": "请求",
- "talawaApiUnavailable": "塔拉瓦 API 不可用"
+ "talawaApiUnavailable": "塔拉瓦 API 不可用",
+ "volunteerRankings": "志愿者排名",
+ "noVolunteers": "未找到志愿者!"
},
"organizationPeople": {
"title": "塔拉瓦会员",
@@ -427,50 +441,55 @@
"done": "完成"
},
"organizationActionItems": {
- "actionItemCategory": "行动项目类别",
- "actionItemDetails": "行动项目详情",
- "actionItemCompleted": "行动项目已完成",
- "assignee": "受让人",
- "assigner": "转让人",
+ "actionItemCategory": "行动项类别",
+ "actionItemDetails": "行动项详情",
+ "actionItemCompleted": "行动项已完成",
+ "assignee": "受托人",
+ "assigner": "分配人",
"assignmentDate": "分配日期",
- "active": "积极的",
+ "active": "活跃",
"clearFilters": "清除过滤器",
"completionDate": "完成日期",
- "createActionItem": "创建操作项",
- "deleteActionItem": "删除操作项",
- "deleteActionItemMsg": "您想删除此操作项吗?",
- "details": "细节",
- "dueDate": "到期日",
+ "createActionItem": "创建行动项",
+ "deleteActionItem": "删除行动项",
+ "deleteActionItemMsg": "是否要删除此行动项?",
+ "details": "详情",
+ "dueDate": "截止日期",
"earliest": "最早",
- "editActionItem": "编辑操作项",
- "isCompleted": "完全的",
- "latest": "最新的",
- "makeActive": "积极的",
- "noActionItems": "无行动项目",
+ "editActionItem": "编辑行动项",
+ "isCompleted": "已完成",
+ "latest": "最新",
+ "makeActive": "激活",
+ "noActionItems": "无行动项",
"options": "选项",
- "preCompletionNotes": "预完成注释",
- "actionItemActive": "积极的",
- "markCompletion": "标记完成",
- "actionItemStatus": "行动项目状态",
- "postCompletionNotes": "完成后注释",
- "selectActionItemCategory": "选择操作项类别",
+ "preCompletionNotes": "预完成备注",
+ "actionItemActive": "活跃的行动项",
+ "markCompletion": "标记为完成",
+ "actionItemStatus": "行动项状态",
+ "postCompletionNotes": "完成后备注",
+ "selectActionItemCategory": "选择行动项类别",
"selectAssignee": "选择受托人",
- "status": "地位",
- "successfulCreation": "操作项创建成功",
- "successfulUpdation": "操作项已成功更新",
- "successfulDeletion": "操作项已成功删除",
- "title": "行动项目",
+ "status": "状态",
+ "successfulCreation": "行动项创建成功",
+ "successfulUpdation": "行动项更新成功",
+ "successfulDeletion": "行动项删除成功",
+ "title": "行动项",
"category": "类别",
- "allotedHours": "分配的小时",
- "latestDueDate": "最晚到期日",
- "earliestDueDate": "最早到期日",
- "updateActionItem": "更新操作项",
- "noneUpdated": "没有更新任何字段",
- "updateStatusMsg": "您确定要将此操作项标记为待处理吗?",
+ "allottedHours": "分配的小时",
+ "latestDueDate": "最新截止日期",
+ "earliestDueDate": "最早截止日期",
+ "updateActionItem": "更新行动项",
+ "noneUpdated": "没有字段被更新",
+ "updateStatusMsg": "您确定要将此行动项标记为待处理吗?",
"close": "关闭",
- "eventActionItems": "活动行动项目",
+ "eventActionItems": "事件行动项",
"no": "否",
- "yes": "是"
+ "yes": "是",
+ "individuals": "个人",
+ "groups": "小组",
+ "assignTo": "分配给",
+ "volunteers": "志愿者",
+ "volunteerGroups": "志愿者小组"
},
"organizationAgendaCategory": {
"agendaCategoryDetails": "议程类别详情",
@@ -733,10 +752,11 @@
"title": "事件管理",
"dashboard": "仪表板",
"registrants": "注册者",
- "eventActions": "事件动作",
- "eventAgendas": "活动议程",
- "eventStats": "事件统计",
- "to": "到"
+ "actions": "操作",
+ "agendas": "议程",
+ "statistics": "统计数据",
+ "to": "到",
+ "volunteers": "志愿者"
},
"forgotPassword": {
"title": "塔拉瓦 忘记密码",
@@ -1343,5 +1363,80 @@
},
"userPledges": {
"title": "我的承诺"
+ },
+ "eventVolunteers": {
+ "volunteers": "志愿者",
+ "volunteer": "志愿者",
+ "volunteerGroups": "志愿者小组",
+ "individuals": "个人",
+ "groups": "小组",
+ "status": "状态",
+ "noVolunteers": "无志愿者",
+ "noVolunteerGroups": "无志愿者小组",
+ "add": "添加",
+ "mostHoursVolunteered": "最多志愿时数",
+ "leastHoursVolunteered": "最少志愿时数",
+ "accepted": "已接受",
+ "addVolunteer": "添加志愿者",
+ "removeVolunteer": "移除志愿者",
+ "volunteerAdded": "志愿者已成功添加",
+ "volunteerRemoved": "志愿者已成功移除",
+ "volunteerGroupCreated": "志愿者小组已成功创建",
+ "volunteerGroupUpdated": "志愿者小组已成功更新",
+ "volunteerGroupDeleted": "志愿者小组已成功删除",
+ "removeVolunteerMsg": "您确定要移除此志愿者吗?",
+ "deleteVolunteerGroupMsg": "您确定要删除此志愿者小组吗?",
+ "leader": "领导",
+ "group": "小组",
+ "createGroup": "创建小组",
+ "updateGroup": "更新小组",
+ "deleteGroup": "删除小组",
+ "volunteersRequired": "需要志愿者",
+ "volunteerDetails": "志愿者详情",
+ "hoursVolunteered": "志愿时数",
+ "groupDetails": "小组详情",
+ "creator": "创建者",
+ "requests": "请求",
+ "noRequests": "无请求",
+ "latest": "最新",
+ "earliest": "最早",
+ "requestAccepted": "请求已成功接受",
+ "requestRejected": "请求已成功拒绝",
+ "details": "详情",
+ "manageGroup": "管理小组",
+ "mostVolunteers": "最多的志愿者",
+ "leastVolunteers": "最少的志愿者"
+ },
+ "userVolunteer": {
+ "title": "志愿服务",
+ "name": "标题",
+ "upcomingEvents": "即将举行的活动",
+ "requests": "请求",
+ "invitations": "邀请",
+ "groups": "志愿者小组",
+ "actions": "操作",
+ "searchByName": "按名称搜索",
+ "latestEndDate": "最晚结束日期",
+ "earliestEndDate": "最早结束日期",
+ "noEvents": "无即将举行的活动",
+ "volunteer": "志愿者",
+ "volunteered": "已志愿",
+ "join": "加入",
+ "joined": "已加入",
+ "searchByEventName": "按活动标题搜索",
+ "filter": "筛选",
+ "groupInvite": "小组邀请",
+ "individualInvite": "个人邀请",
+ "noInvitations": "无邀请",
+ "accept": "接受",
+ "reject": "拒绝",
+ "receivedLatest": "最近收到",
+ "receivedEarliest": "最早收到",
+ "invitationAccepted": "邀请已成功接受",
+ "invitationRejected": "邀请已成功拒绝",
+ "volunteerSuccess": "志愿请求成功",
+ "recurring": "重复",
+ "groupInvitationSubject": "邀请加入志愿者小组",
+ "eventInvitationSubject": "邀请参加活动志愿服务"
}
}
diff --git a/src/App.tsx b/src/App.tsx
index b138e93a52..37f3bc301e 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -18,6 +18,7 @@ import OrganizationDashboard from 'screens/OrganizationDashboard/OrganizationDas
import OrganizationEvents from 'screens/OrganizationEvents/OrganizationEvents';
import OrganizaitionFundCampiagn from 'screens/OrganizationFundCampaign/OrganizationFundCampagins';
import OrganizationFunds from 'screens/OrganizationFunds/OrganizationFunds';
+import FundCampaignPledge from 'screens/FundCampaignPledge/FundCampaignPledge';
import OrganizationPeople from 'screens/OrganizationPeople/OrganizationPeople';
import OrganizationTags from 'screens/OrganizationTags/OrganizationTags';
import ManageTag from 'screens/ManageTag/ManageTag';
@@ -27,6 +28,7 @@ import Requests from 'screens/Requests/Requests';
import Users from 'screens/Users/Users';
import CommunityProfile from 'screens/CommunityProfile/CommunityProfile';
import OrganizationVenues from 'screens/OrganizationVenues/OrganizationVenues';
+import Leaderboard from 'screens/Leaderboard/Leaderboard';
import React, { useEffect } from 'react';
// User Portal Components
@@ -41,13 +43,13 @@ import { useQuery } from '@apollo/client';
import { CHECK_AUTH } from 'GraphQl/Queries/Queries';
import Advertisements from 'components/Advertisements/Advertisements';
import SecuredRouteForUser from 'components/UserPortal/SecuredRouteForUser/SecuredRouteForUser';
-import FundCampaignPledge from 'screens/FundCampaignPledge/FundCampaignPledge';
import useLocalStorage from 'utils/useLocalstorage';
import UserScreen from 'screens/UserPortal/UserScreen/UserScreen';
import EventDashboardScreen from 'components/EventDashboardScreen/EventDashboardScreen';
import Campaigns from 'screens/UserPortal/Campaigns/Campaigns';
import Pledges from 'screens/UserPortal/Pledges/Pledges';
+import VolunteerManagement from 'screens/UserPortal/Volunteer/VolunteerManagement';
const { setItem } = useLocalStorage();
@@ -178,6 +180,7 @@ function app(): JSX.Element {
} />
} />
} />
+ } />
{extraRoutes}
@@ -195,6 +198,10 @@ function app(): JSX.Element {
} />
} />
} />
+ }
+ />
}>
6OpAv7}VaZQIVk)Dm
z2mt(~0sz240KoI72z&?t{9pk9j*S2Sz7zle$1$VjtH5UkjETIo1mNR8cTRh8!lwkz
zQAWoF06;+hPXW%X`@Vh(fey|}>cGi7_q5N4I&*DV3t3q@0O&sk0O&wS0PsJU&w>wx
z{x7Qe$$$Bu{I^e@=6_-!K6wm?{|9d!3iV%ji%B
zK=a=%xLSWVcX2iT?)ZP!fr(6i_|(DrkB+&AwFRHJgPnu3nxnC)Ie?3klbw^@3t;~V
zAo*Va-yI$7&Fx)X#2xG{tSx^y8@pON*aMiDm~5_d%|5Xh|BaRWw5V)h;bQIzU}a%*
z5u+{s-`e_5wWhhV%YW4WoVi5sY!`{eNS0{x?jH|L^)w49*B3eg;~TDypg|?Pho}mnf@<
z9vTM&fY!>9r4m4OwT0q$x%UrY=eLn=kR=<;VQCpMH8Kp6C_W;3h8Rl_s(&yPEbihZ
zZ4f0KTBLZlc;EPuaa)Vi3@XKzDhL58my>}|w1iH^x?m2MY$CTlAOI5X3z`dn#%h+#
zyPrj?g`I#E&_{|FDv2IIAwbtV?a9*;QB(pGL@F?_`I9xs7!D|($AG^{j%*+C_lm9`
z&ao~izufUFSdmo!TuhT%W%QvoC+&cDy()}B#u>Gi0-{m{%PB}-gx$r{r;sIkt~`tc
zN%|#B4Gm5ZCN|;{7G`-ZYkAE@0P+6rr0zFK_6rG&RS~Jtxhrm!5+bv<
zc0{J1EKA;^UPLUKU>#20iHcTKXx3;
zP)RP~hFo6~R$u^88sY0Y>i={$j^x6}zj}dpa*_a|{2NR~N&!VKGl9l>LM@$(*IA>G
zw5Q-k2U3OlZFA|0#cCj>@O$fst#P=xy|uCURQr{kGyZYii`!m_KRhLi;0(jb0IJM%
zABy!`y&XW7jx3by&kU%DIc*Tv4iOQ@?_&+2YPH^IuU{CSQ0PfpJwt)p(+NEZJ~9-j
zui;;@_ZM<5YQwuo(j#O?1r>y*ra_^O=4235ULGZGJI=toyz)L&r*Tl#6ZN-S_n^~q
zr+uTtem)}xcP-Z<5LYnGy&vx-OJQU8&*2-V=^R_RY#9*(wyl
zI#GkgmkD~Mn77{sR~u~9ivjPdz)dJxyF{o^5|Q>be(P7Uq8>k(9Y7F_UB%XCd<~@Z
zHMUCQ;Kp-}-}EYtSITBQD8UWA=X(c?9h+&~LLJtFxyce^8inzu0!Sp1U}>=89T2Lh
ze2@o&buKU)k_4Fq4v@qe<=~~?RemhapY`+Q^eIv(G6WfERWnS_O{G$bF`CgKi-6Ee
z+}JE=8x%}!>u3&07jyCV31(sJVaJ7xBhCU#Q;Hx#+8`#=xs=lBE;q5Puf2BIaa~JjsA$Ca
z%*JGwA1T}24+)xL@ew&mQqB5a&F+(rl&SEecu|nmGCgWSCS?(3hUsy|X$({xw
z5bML81ij6e6R7VoatO@W7&>}kFe_!w}
z4I>Xl21$p8-3e2_uQEDAOPo}Vm~?72UT#o7~rg-U$_z=5a>#ahVzz?rk$EfyH&vs
zJf|MOQxYIUKl9H(6(!ZGL&<9y(-MopZdyoWI7w~hl#b>|qGwf-<=R&N7{ZmU|G3<;
zjyLfu!|Ljl!9>1*%7fTvHkdH7#3hT|W;AHSUQl7encQgc8GJQkPzr=~yQc77VtzQs
z>%_zWO**EDfvuxrFmVIRkqP+{<%?&vf{j7rUB><4DdPbn6cXyDPc;dc5+m@hGF01F
ze}Udm1x8jM0s9NTI>UfGrxQlFJRI``Xi;>*2
zGiW(aQ#ImdrC`!52nL)m%I;a~0Y*~x(xC6W|Dx$4z|N^PHb<0(M$7VR-^ylv-cm=P
zde~E7x(r}}Iz}~AM5>7463=qob9E$tN_7i#G$`V2&P2)P!|WP>%UQvPX{@l#1J-TY
zB>`dYDTxYjd-S;w+I-+bGIr?^9&%KkFa(wX5|XW9Hj}cUfSDkZsqYO&4(00fG>P(L
zhIHuEBB+3(TwDOE3%b*h#QBi&9eLV2UJNF4(`jO8#D!3vexbe1HIp!-)Uh9+OV;|aBW@x_v9jQG|I!F6=_wC}<3V(A@z+NVZ{X2T~?W#itettD8L;wQh
zp)Pc|nb^moR)_WIlp#R~dRpt466Z|a9u7c}9d)$9#I+W*D-TXLJ3RESRa0O^E}DPI
z6<@-n`(5TZlnozJ{63^!^D`d3|7&*o4;!!Z=(k1Rx-X5Suu8?VzvS5BUg;9LU2nnt~s;Io-e3_)NXuI^HjZt4}lD%mK{iJ09G_K;C
z5QGRC!z7HgKh2bGFdd#|fMwmz*pZ~100aTjMieJF{NI7QbCB2xBrs58kgUj3U=fhk3u>C_
ztr=WyVq9BTR0S%kQ+HiV|Ji7B4EC_DBJ|Au=%T*z5EnbGAEFK|FkrSNOdk3|1cDp~9^$~XA2d$*zDb|nf-;^edesIG=OTphKNkwqP+%T03bRyC
zb*jkM;8KYhHHyUF_WP*~cmNE5JAfN`FgjP0Q8|+~K&O-eq|e64DAgou_12V6>GA_)
zTjrG*4`F&&xCRj5E;O+rKw8vn-va@rCYd0to%DtTh0l^U?j9QImj~Yk=2J2Hv`j8BO0Mqc5pp2ZQIWSPq)}saf
zuFaJ_?Wz>e4@5_8`G>Wqhn{AwU0_TLH%y6H<*o|n=vbL+luJioHLxYpLkb5(?q;+)
ze74~#ewTWyYF`Uod=$R6TcorG%YqF26vncT(-2APpwswZQx-_RRmsqP6V?lY!96Ms
znsYv0EB)~8=aB(uM3U!ZXc#
zz?3hBQ8Embrg7+cZ-gc(qtbQl0~-Cc;oTVEI#mHQP<6p(0?106`e*nU;^kfq!>p8b}^q0-gg)k&E0Tt$N+r1QB6buF%9I{pwqMJs2#W#%v+E|F_`g8z-C^9P;7I*+-@dO3}J}a2P
zab_wiF#p^1jG5@)pTFBoM69g)XeGq3;x(~gy5V*?;xr>McXG@yPV}o2MP*5_La`AG
zZP2E$L{>y_Ve?Q`&~@bj1ZK_m-%$j+H4QxpOG}dv=(|(@;lFw+kO%~3>Y9wtT+hiU
zf9a9xf0$lcL2ep;CPX9!PzNixd{H{xKpukc!T_IiE#Mape`U1e?hmRD3Pf2#RIoxN
zNA72kPZA=byRk9aGfP;V4&83XrX4<6pbWXB5bhnnyq|#?I^nX?8)XSiGl1(j3s7$8A{=_o8?X@S0
z+?K0DKUsIYE0}*Sla%5@B%N(o5D2$Zw0Xk{;veHo6$oOe`)fcH`DvW?|Op!D=
zq<|1?{0xx;@Yc6V$^%{NBDkpIVL!$)*wtrMySo>rhGeT~t*=+~B($jVmR-=&9K7LD
z^fA@y{o5ju?pFngNSt-L=#?c%kY<6x&8>51^AspT&zS0E_4)A{D?)8>l!Y
zRj(Pu=slJ`-$h`-Dw@U$;Ua(|sx4YUNBV|8>>S(qK^kh2ntv=Qx*sl0Dz>TBP3DfPF
zAPDc7q8^4L5ZR}gG;<%j>aC~CjgPTf?TxI{290NZFTL<|Pdm{X~?{aaUX0=}y#EIK7Q0$;^dN=!_wFj@I0%yLwsQ>QOm?0C#!q{Ey*Hl#G;ogDo(%jin9?XU}Bik3(OSY4TYHH
zqyb0>WE?@-sMT5NomPCF-)g?uEhUJwAFx7`Xr5Ry&6lX)e!X}LTwVTnXpZEwWYV9@
z-TYxgioebyDus2XHOheaD(9Q$N|r%GB;01(yELz5c+$F}Wl~oDEif|fWo4gKhr(D5
z>8K>E>ALuw5+Y5Wg;7>{T=`G(2pAD)4-BW68OCH7XLU0H75+jY)z?lV$CIx%5mIqt
z?!{2J{pT?Z{jS3MA-_)iYCiD~CkD~SSN^;Zsut&+@fmtD+d8Y$Z&JC!24c(M&ok{u
zXQQ|6agFcv!N&VS<6G3h$;J_3Dij<_pea@&z4ONI5>Lt$?#c}Zc7*}#B>@eZw1mde
zxME6j)Yj0zc*)PVlHEud$B?EoG8F<{r!;?P2h)z5Bv`hRLxLI7X{?CWv1P)vfs)yv^F!Jloj3x2ONmpIfC)w?oF{qe|cs;o-Pga+H?UqG|~RxlU)G
z;quhMx_DV^Jx&KoD0GiD8MVL%Np>j#*hDxZRA_=XzasK&f;6Cl@Yx(`(iL*`%X7NX
z_#dy@ala5WE>!9>_-wt-b!3kmJRK?fwFoi)%JNe$YI#o`*z)npNe$UmLkP4*R=QiD
zXWdluyOi#9jlAw38J0i8elrg|uUc9E*`g-*?f7K;He4%04N}Z^!9`fwry)sXd@+$K
z#)IlF+#mQ#$fD8w%h=OEZc|PMXsZfvPQdjc?ix){#RzI{EI#D^gdsQ~5F-UQlce9@
zl?pjFNu)Lk#?06Y9%yy!0T4dr@Vl?1ozgkDpb^|`YJw;SLaJ)r#C
zbu&^|pb@qzpsQzI1R;PNsB}-<-M#bnVY=Fk!p+SM>yNm_g3zr#x)1^-lWw1>#UqMN
z@_t$eljGaTOPHh+F;eF;o3OmFaQ|Z3yfh-@IV|=uhDN`QBjiQk(&TeOwWx_+26tZ`Ko1>kt@-Z^gu%tA*1LkeYFFk`BIH$FT^HSSJ>F07
zOu3-SbG;pj2b5w&tboFCATsFWh+OLNBP_*6eX9?F2H)YE!Hb+h9Y}k|?oYAel31YJZqNE(LE-u?_De
zRVYbLj0y?W;ld25Tqk+i*@bl2d!4}j~1UV7kST2uZ
z$o+Q5bWNc*8}ZZFz8mReuc?>gSfooj0*5xT{;Fs#YovrY`Kd(OW}&|sIq8Ckc5T|s
z4hA+B%z_z)ouaSVCdxJS{VUd=#|;KuUaj-xruass^iuKfKp7PZjLko}*^=06S-eqM
z%aE9Z{^|%)Zs!sgx#XxN%zv?uK)NiLqX}~h%V7lx`>+o<-HZ;uFBzcv(XTv^Pn-9N
ztmsVTefVH=JRjF0xYGjFe6XnGPb?2c>9i-mRV!=YX8Cpdl|tGppo}Q9`(JY7hK3Y-
zvtUCo{F&^BJhnC+0>-n?b3SfM`U7M}#cOM#^^Hvns;Zc$=a`VVaBXUKa8AA1t0
z!6BL=>W+2?*qDO|GIIVjVW_gv10ft!aobl5RNBk?ff^S6<};We5&Hfih<-+8B_*XX
z7n2&lFv{&kbTl)XQtSn@g&%lk(Z6HP4vcA71XyA`1j6l@!nNtfC3?y?PE3C>Krn1=
z?_Pppi229@O`jt_*#0H!@oiuKwBvPGHVX6CAD01$GEDiQ1};LTlkj1xqXT_W
ze8@rYvUP*)TRwT4Rio!Kb&$~Qx$L&;dJOA|DQl6LX
z^yHd55bn1(_;^bJbuMW7OG2jt8(nK&&PomZTA#ZH;!c`RVS^l&9o5`
zf`~5mGa^tHdKMzWi`XqeB)fwI9gCSha&Gdb!CfM6#kd|j5ew8ihllqmA{-Z)8W
zgn1chQdU-ysXEzM;it&VneA@gwFR$f>a|5(fm8VZIujgPcPwu0n+T=3{|)GKc3Di=
znKf4~kIC2j54x0CAuZOY?lpr@2)i+aU(v9n2F@mUBjL4PkA4&3Doym-emol9v80iZ
ziWH!Vkp#V+j^J8&?R^J`lqfq2a|&~0DUfetduQdmWUr8;SB%2$Gd4d<2XN=qNO-(-%t*k}!ynuvsb4|A(mr7ng9>LB#(6Cb+2vm>m=)oQ0
zegRbmlyO!mh>P-~IT$Q$r|iX^%+5z45&+1DUD&O(2;z?Z4&J~2E9;ldxSui4O|=;(
z7D$&*n*z9j8eyGYs*$kIbr^!@)`^d(A2Xq(?p;u@7Ey
zry!BYCRmvzT-pSBfBW07H8B>U**eyyE4*g3dtlME0I=Bvk)pcjlL?D4WxhNc849yi
zAmtUZD#11iz+ozpbsoW~hdg)5h|nP`D)|_n+Qh?)L;kUTUi-@7Mie<{!qer(#IH{6Y&t>tqPo%N!7FH5lw@8c
z4x+XIKnU4_ZM>J{Am%cP7=;*XveWw@8jA!j)K9juGef#buC_kVm!q%pLCE&o($EZV
zrJG;K#rdOs6`mWPdm-TQ(f+4~wOGz~lVG(W3E$!eaoQz)oN-bJ@@e1U>7J7TxAs%sUI)_dlS*P|GOq@dotblHl(0_?X;m-6fQ!lkk5pYYX&|y)I
zB@!IEyv5*fdj+`G^VAoa`uM2i@_KA0FlYg|-5=wtd`(YlRy!EwUb17@wj@l+%LO~y
zil17H@|gKLPVml?6U`i-fccLZ5*+9^wN!y6?
z*H=^VS4Et0ho2tKlSQsf^Y}1UfR^Nn(7Ndq1rz7$*t3mS3SNH{Y#EiD95Og~$m0>6
zKjcZOZ?G@9woQ`}HN71mo=FSZI@2jNSwBC%KsiB#5W*}djhHKIB(AfTH$8RQ-&HZx
ze+|>d7XRf3pyH)Un{q_`$q-q=8Z>x(Aks7ZNHp8BILhBFB=Tu%c{G2HiQMhCly%EhNWhzTG6a&}u
zRm1|01mXIS^?UjPH-`o(xB@_Wcq8%dG@Bp5G)}YHL^&>qvzsiLqLs_E6DBodYomcW
zOhG~0pXYYQtJAsf#$E!b-pl=q({1t&5*E|Vh~Zo!KaHB*L_98S(Z71yaHe-)@LX=L
zdu(pJW25-)bk>|y5+|JV`)jTOt@R9?&%V@L{;I;
z^aqrv?yFxPv_VMF&_ph1js}KnUN)8GIjC7>WVsPCrQy#6Yb6WLov$+_+dFPcS^JQLxkWffrT}kZkk*Rl-aO8Pot;d1@q#c@
zBD1V?6t6(A46xU9XKpRIzi=@lbm+V3eanV$qu)(YG+~=DQuFwy5FiHLo%>9cD;Eq_v1|>w7In1wO3eo=MaS%`
zX;H$7`ww-u1oNXll2;KXT$lw{YX>s~Zh`y?jR+8Umx&NaeZuV=hH{QA8$Jc8y
zEZ6Ca$e3-y88j0J9Nl;plE@&J;_Ul@2d5#SpM;u^59M8Bv?q2~pWZp^cwc|vVKm)B
zuho-e^EfQ6{z3l0v-c09Fn()$yQ}!0zA62x@VC!}IQ76OrcH8a9GKtXZQ^F1q{Fp{
zV=fi`&H*s)>N5pv?Sa{KMU7U4oWJ5O^46REkzmex!tA{vz0qX^;>S`n^qmNp|NXDp
zccaF?d^CSh12P@8%@u+WE;^BcoYrTlMW}~kjzH)^rFN$zf+xvV&WxSWoN*_6_3sNP
zh(wOcZbmnd^-Fv*NW&+w4Cn6;Oe+gGhrw{zi#4nKsQt=;i#o;>LEx$yl9ESh|K#Rvm~ZbQ^OESe7B0kE$CEjq`XVHR;kPqalXEIp%^iAFGmOcy_}
zB`*DAv8`|+K3}}GzgB+3tv_7|teW#w+kbOc$%s-z{IPlf_mV}GsI+iks4gc`A8~%~
z#<9c{BlH*gr1PBOcF8(K;>*wdKLvr*N=pLvl99j1Jbcu@ytO7W
zf{UyhSq=Sz(}E}*!HLOJ3^`&QQM`h)aAMl9F?Z5qZbFKParg@CB&Y|RKVWj0fz7o;uh$Rrh>Cn$?Ke2D1-aI<2
zer_V|xqnPzs_615o@pv9IiwTtG|><5euI}I>xGDT(g2y1z`^ELJJtDBXB~qe6m%{N
z$h0t^`X=ORJg(N3&jcYMAx9c&^R(kJts*r7!HIurDdn+knWx9jj@Uag3VZU!ebPS+
z`sBFh!=wZAE7?ERxK%B>bw#M~G7y^}g5Zsuh@&DzJaM}lq-*YSy*91=bM(avRRX@l
zB}VS3mnB{{ptPmyM1QZfbJsrbJygTm)n!_3w>{|UDMaXR$kcO{wme|w3FwrA;o8}|
z>6tt^sB-_6O(0D{dA(Pb#qJ(|xZdhzcr&wC4}F7U&|$fu)bfh-d;0Lo;B}hV8zo7w
zmGyep^t3M|)X8Lre5rNE`cMuUZngVyQQxxv%;TB(xv18m5dSC8vwxFMNNqnxvSDv*}x?X!XDhLW&i1+a6ucC@fo%`r5aJ@EIWy0P^{=*UA$j
z5(dc74dFI(8(dyqMC0YlB&l5Of+GX=
z$F8mX6ZRWyDE1=dPVb!^lxi0(1}zSu?ohWgiTX|)H*NDhG2qh`+~YjF+2@AGGi(_<
z&jwikii>={7M1_vZtD18zeL{4FuNuq79jY#na}rI?xuOR$iU-p(EUSgv~Ur&%;7O@
zrZ0y9OG=XQ7HuwU{4`85Gn4&{|J>JkM=*4c--1F$D*)b1Am$fgZ%{heVOhJ@3eBV?
z;17YcTqgb#Ui>~b=FWz--FLlo{W=B-T%OQ-`(k}I7>90%Fq7c3pB7)FU|@7>b?$Ra
z?5plo+eY-^n*&uqGy{qxubiy@mwSES8)hMtJ`f@z>lyh8N^f}-Ygy9Ku84!}*p6Se
zLX*?r9bnX?0Iv*-_*;v=9uh6y?b$xfL6t_~<-&plpCKc%(B+h~83A4}KpfR^2(={H
z8!8FjT#dEC+Zu-+hK_E~a(Ptv@d*7-UsCJCsdt^NXya1r2e=GcL?BDlOOHP*-Ry~M
zRi0_M=&-YGDN?|lzx>a&s*NLcCP95KquW`=h4gE)~xul>gvQoBa*sNpnU<
zm~#Uv*{zQDy|oFMQF4Nq47@+GO2xbi0=-dzC?B{V4pSpO8@DSr(5u@01sVGhEgD7f
zGMD@<{>!nx`vbv6sdUy;Iq#@e2fu{|zFK8Oo^!BQf%#w^?|saAdqS)|gZ|H}Uklzf
zs++0zZfUzr*Y*(R+%UAbn#?JIiA-eqRBKHldV^~p(_WB$zfg#H5FgF
z7<0_u5M*BAwFdZ8e~*27ixmB38pJ0=^5j7(aFn|RhEiB)$s{me+r4s3{v`5
zYx(g{F;Xkb;cTN-O_W^*9Yh{|Zn(txteTqlas3l+l#AWS+k^lB>+g?C`U{PU>N-Wx
z-JhrJ;&MM^;rxv-GWp*UQLNrupwCPL-oPMr^IjkAFH#vA7OT&EIxUOho%uu}MEs*C@a6SKfq{_WW-U+eG-Sq3agJcq-u$T^7)yvKcA2llL7O35=ba~T3oIXY
z-uoNeYrOQ>JOkb38j*f8$)Vmz!+$}BP##$?%{Wr?&qDM4K{{tQW-hmAq%R8ZsBk7-D35&{_+N2#kyMMV9LC8fJ-$%
z1sFIv`6bqC0;PoCFP8Ole+V`CMl0jTmvl}`Q6^WO@oC#K+xeZgoFxk*{oVo2_|+l`yRoT~0;3jtNar!k46m8OIVZ=nuXrA}x$?
zqy>cL5w3FG4A|Y@TPrqe=8747A>M+_C!gc-W0fEOhFAiX1K16%{>)Z@=*=}tgBHv*
z{8IUyXq&($5S;(XpWk1s2O3gkWXi4H_KcUX+eUYcE!|8=DFG}Iofc<(dBNXX>0i@=
z%&=YX@#CzrgLk1%P=%Xtq>=5-6=!v=yh}uq6KZD8zH@L1y$*NBCp6yP-rC{udHxzC
zkS{hPB8d?(+p_hSp*Hr!mP<;oI{GFyc`DHNejU3Zi!^`LNXXyd<^H>RBc1;v4;`Jc
z^P_k2?aI`e)BCA;bbr!n$YP#d&+R%I9f((<4twr8aRnmWEF2q2Hlz%DWH5~()CQ}|Z)?t@_{(0Kp-waM<
zG0sUh1J*b3ZI^ri@GJ-6Rx(nTSt=(JZ~6erh2`=+_A*a$z0^;ykM0Ir+k?r}TzTMB
z5q+2wPJ)cTHblf=mkx-3aC3<4pU)n&>mXs{->0f(fAkx^_p+QazogYhde6I#w<1C#Ph#}5(=zZ_)U9-JQ#m+alIt#W8j=40KiSjD$(qhfEDrP6h$VfvE
zM865~9jwzQEYf%O4rcPw%GPt62^m|Fck09+I2Khe>l*U*O}_I((^n87OFQ0S{ZN=4dkCw?TXf2zq0LzSNX5$8-$w?ss7fJzY`DK&+Sfh*t^
zHmO^ydM4adRZME`m)vhs($D_7yF}p`6?h6|#|_Pb6Q@dOi<`0cQ*=9_O<1*-7g(OBPui#v4G~T`0YF51*hX=w+VsrL?6^DkJ
zU_>QA1$)0(ym*?ZwqrUB5d|==f{KcQ)a&Xi_1SWhrfn^UhW9TDKrq!n?j{H=
z@&Rp{8ul4hXnnbPciVb#(swr6mbo+HIkrJl>N%J$3a$)utEJ21f^{w?Q)FcC(ivGo
zAjGDGMQ}Pg_g~NEILg^;@8s)fx?o*h8!$?v(sw=D;dy1l&*^%+%Bwe2=wUp)w85Ic
zivsg^T$@lPu+Ny5q>@54S3->}#z~aH0)r%QBVEWxNmWOwF5hoP$aZ{ruGJFuMgzJh
z1{fhq8(;)xNJi7}aip~>V<{L{&GmUwyn|`^@11ovKR{^c=f`s)vRxe*LP;HxFt$
zsIilV6;aRD&$5>o9OLEjegtSTGD42)kSrpO8!XJQA%%uY`#r3Fyi|O6j;3!E4!{tD
z^C`k)>35LI_8&7Z!Z*$3PNyn+@2$iN`p&(p
zL3SO+5xoDX$tVHC$_0g9JtmVoe7p)~#h*7i4^
zx|KkgwO|$DFx_U|vXDzvorN^H+T4WvUwYU&}ZUGpj>-
zw$Ub>*pBZuFo!pvuzy*6IjYyvosMDbG=Ffd5)BF9ew&aMess@%`Rn61qWaPHutoi+
z?vIRdQmzI;MDf=`9w;D^F&eK5qW`8KT(qvE&l&(O7DJvl)vhd
zrpx83rYks47)?m19gRVY+!;P>TmZs3
z*5~7-Q62Thae0M4hhu7Kfy$&(*%=sC3Wsl1ig^Hp?|igu?gD$He00xt?&Fh*WE
zS~AapQmBb^)K^~-y=<)^tU4G%^~hV*iRL&Pg@8=>Mzy)2O0**Pu#K0q24Asm;uUKPB()+Zssc{YhMDO5l!9_paZOBj9cqpnnEr5
zp$Pf<`PV>8sz?q5EiXs=`u*vP&jgJb6p&cfz+VObGk;KSD8+YOvvXDa$A!5?`+c#|
zzInfBVI6Njn(v7{
zpj;$v)-UyCC`7iBI^1NjxWBTxD76em%SVijlJO^TubIRdY<#Rg
zd`u8$zcsjbe4o4$f9boeEEuU4ps3Qa`z{0nB)*c+ES}Ygi~5H)0!m6Nns^#b;dh6Q
zBL-5$-3d^rLoFd9L*+mcY;+Q1ACM^C_3y)3la*C53>9}2k2imud>#cEm4PJDBu085
zqaUUQh}bF?s)pz4L*qM_JOj7C5ezlt)zlL{4WlWPCjmyymDuE;RD-F5prwvm&h#1@
z60ifgAm!z<1;#gN!V~Gp@SZLcu`LaLCcQp)E&SF8;DTwol1Qm&D$$<8)QHI6QP@XNsiUW+fpyVbtg`@cZEQ
zyKjH+-bTqcXuYp~$rCa3-tj_Zs}hP&g;cPmDav+7RPy5KK+f9-HO4
z3)F9QF4F&~@YC_SYmV%kn_1y4$Dh+jM-T3S3febHp29J3?tXl-U6#4n@);~NQ@+Uj
zBk1vA%J25R?B~1H?V-1wS&7^cz7nMWbM{AgV^s9NtNzZng)-&$34Zu=F5#{N2E81@
zvH2N`vz_7)@Zgmz4z@~`tv9%B@tG|&qfqgGx
zP?`~Kz)m5H&pw0Q&ub!v5(em^#+>H%FHeNnHv-BQv!(jhd5*zfS`2Y?9ku2XEr3w6
zpC`BVDW$;#-~>f4@6Uzx+!UxDIrXqp$o^gn+Z|dU~!$^o8)ma6r=h`|y2b
z%jVth%=slg?(~y1b2w>m1V%{=vXPw?Xa`bgrUrLlKwg{EXGIaock6i+d%PgN8l-F^
zfgNfwd6qBM4&i8HsXPx<@aOW)3`(|g0Tz`tZC;O-{JN0jn!WD7iob$ZtT33H;glBz
z)it<5Tv>!@lZWnck*8W|O1m-Q9}7A&(kuEJp9jk$#~!?7(OeLJ@X6jWv!y?2*EX}Z
zod!A_$0uFBsA@4~*SHq?x(>QEnA|O!C4@|26JTHA25!$}>qV2ru0=V2v2gsyNqi{|
zhMOBf+jazZU>y3GK;EAU1^Jso(jZ57nGlK2Yb_h6WlpsT{rL8^U9zO;r#MFwo`_4D
z0?F$SPv6LxEWJ{Z%%ApUWP^s6`G`M{X_4XlyRL>7(G{*q2ec(^K(+zJfp#vov-ftUi)7H|duc1AD>#6&zrbSATx_dH
z&t!E{U6^O!AOsAo)rsF*tWi|uYNy{v-ccm>>2ixZwc*>(L$&5QtfGLo$lF6lwMNc&
z6sUT(6}>baMl#*I{q$d33$1E9;-S@^2lfWP_&v&gP_1||^wmOSvVR%cHW!nJ3^yO0
zYIa65K1|8!{DBI#Ae27u&j#n#fv*=7~cp!Y!20!#-SUT
z2M0N#@(~#0!p{(ZITg~xU8MRRl_`sTjXOtNCKo!N!@sFp1neVx9@$UpxKFAQV<$ns
z`!g*D*#JXO2(;oDPeUH&WEk%b>(x|C-6&QX)3blMS1+6t8zM|JLBdqf6wTkER>P};
zs>O%^QX`+{otC+z6x&&`fDytPu$!=ZyK)T)-T3Up#Wsalqg5N+_+e?h6*qJsMVyQZl$if(G}
z;AA~?pea2(MC}^h_%S1~_d}@t`vEf%LGxSshwGD$3j7jk~jpMPx-9&u%5XvNU{5c*d!^UXA{II|l|i1AqGN
zG`t`+Yvk;G&D5j>R(xivue-aLYFx?Sku#JGCgfSwszw50oZS+qCx<6qrhi2rNU+|F
zH_D`oP{#ylY_m+5oj6JJhvZ*0tz`=cb~z9WCQYZ=*HKeLpc85-_|nVi&@LNI7L;DC
zf?%sT=dNJC?z>5@)qa;rEH2&3=edaTM<=raQ_|Dxbyr1NL#oWr8{#`VMArA(zQgx#
zTq?N5Au&p08I57#+Q`Y7qUv{~e?UAf*$rp^{x1NJKybgMTe`Z%oU3x98yvM{7u6
z^u+MgfbZv(GJ3)PW*D6De?)^rGZ(NJ{^Lvk#)!)3Tz%og2l|e@rXk@Vcft7#d>S<-
zr?Eyz%v!k!NACYRj_lpSVq?Qto=C!Tvm_B?GTvw-*+PTIdv#@Ul;MP8T{Gt(QvqvS
zvKsIBoe%!w55M`f!{@I%=T6tsmQ#&nRP`a^IZ!+`C)?VLV!6g(J3uJwy(pY8IM@%R
zBvd3J1Rw(mzg9!J6rxrk2-^cGF~%7m;MxKSMjF;si%?HZyQ*JfPTf8v#_RXqi9<0y
zbuHr0wFHTSn^xgZFnv+KB3@svxBivp;ADXj2Z19JfNudc8&JG{A`$~MXHb?xXh#U0
z0Md#8077#JZNZHc+~OGKW|J%|M-V)5&?b$zuIX~`K{mQ~8^C=KuP5Dw;%JH`q4P!b
zZrX(ncixLbM~@-V+RWPK%|bC2Z;R$E&z_9u5EDLvp#xR}7jm$7$M!KXi}|?A*ZnHr%VwoWqsxdiSlj-udH2wIG!Fv5Hu}Y>h@DfoxZ2
ztJ9c-mq{SfH3k*{Jc2&52Yn|F0ni{VP^$t#je#_WWfOB_&{}DL_z*7UPMP{D$N1<5>w+(Fp^Dvn0g(Flcx;`PdTeU!R3DE>YHAr3rWv^Au!$kV2!(+G&ZR&Y(Cthr@UX%<
zvmW*C*-D@)7^~JtnJJ0>!$;r*8jZpO6{;u~im+oIY9x{F=t{=UUYD5EHUyRIjwF-!
z-E;5k?pbrci$!yh-}$ua?>oX}=u<42g-;%QkwL0$9$RwW6^Lbc_J8=w{(rAgwHnmNe{^9=80A?`4gb-v}%_ACo+Z
zLL?AI3^O`xP;qvN`_d~efZ51&Y6<6_g(
zo2WwK7Zx}Eg3T~~ofIM{t`To+!ou?|(K68lG<5#^((^70rgcoW`*u7`lN)aXTuIzw
zpdbQx3d`Q`G0a$T2`c$v?0)QSV6-3bVgOt~#bNcFgLB{TK{ze5(A+Vd;#O##c=*Rr
zV&%%7KluCyzE=rDyyo?wj?>L(llFd1nL3yRgR84UH?Efz^wBvBuv<0GcaNT@PWY68>U
z3NpbEnt2gfRN!eJww6;ZNK@iYF-PK8aVk{|05A=K5T33gCCkW$MKpvHXoyCTm1Bs@
zal}*s397+UK5UY()N?IJO$w50D6SznP!TqK%OYZuGty%q>mCLNOIIw`GALlnWA_qj
z6F_kgg9mniMIp2#Xeoh6!3hceWD!RXA3<{_5kTgnMmxkrc?|FUF-KRqi6A16bcJIGpCpF@*<(2ghVZpc;=aHG-u&T
zv2*k8gWfrp{oV8htFUavV!7v;$JvPoz7JRxFct!}5J*kK>?>Y}?gb05|G+jp^`q|t
z)jSZ3BP18TFF;-cF1qn1R*(!cr+3oPU0dzamM5dxmtA=2{=Vb?6?is^L4a5?QL#8s
z%jbzoMS=zFdhB7y@lhaDkWmD!C5R$~Q4PzM&0!4<&FbL6qtL+Z_uPAT#C0TORD}c}
z0T3jZuHPaNq+wAASNn+RB2qGsv>Zb=8b_>_N7^qUD=SEcC1j!^k}8jsnm|k!O&-1}
z=1TReIMuJN0ar;RWfi$FkG5bC(}Tn43ihHa+=0$$2U@J7NV5}2@j)cmI6TV3V-uKX#(~X`0K1Dx|7D+$0N7*%39AcVX}7$Un|}{Y}@&BYUIb@CiEsi}vn4hQ#a@
zZ1vke2zS+GKyDV`wF9C7kREh}Aj=xTSP45Hc^LQq@7FP~`x#6Q9zn4*h6}E`k`+ah
z>{@;aa;why+b17=bpHicT_+ydvR*4M1}~XtA-BedVDYeUtVDue(9*dFWPl^n3qIpfZq70+V^bj-hAWIiRgqC+Nb6yw)Jde&C`;%ume6BpwTmJd4KOztLPC!qs|Jx)!$_$K
zxKsw9p*RO=hKK|zJcgP`KryZW;Pr2L(_MQH9(rQ$h9||+VcgbK5*eRSAP<mgAj8{3W2v9)W^$?3C@YKfjbpG0PV&nR)HLH8c
zA1*ro8a#O0J($AAyQu-2e|#qnmo0l4Fr54;M3y|KcH^@%J=w!jz;Dd2X!`@WVx`2Y?Mbzmdvz)DQ58cY48Ai
z`SX8(l$wCY2H~LsCcy%!$co3I5#jumi$M%1DlRP7Q5lO6C>s-D2CQKYzWc;(ge(nP
zaX3oCRV7TbB6uT5Fm`wwZ*EWNv6IKnb5&)-Raaa>Uak@M-v0nRH;#Bb&GOX%DvH4U
z8f+CIsuXa}Md!+f*)uIHod3;-zVXd}z4V3~H=}Dd4m|jP?w&J~506cfNVl-gi>?8X
z26z(6a-lWB)?q!uZ`+8cfBZd+9NC7nP0&)ITrQ(j^QpNh$J&}wG^%5C$zOb%!)d(^
zoZqEk3C*B1tB<4w09(AU^W~=&6Mad?{Dn0)bIafOc_f7Z00A3XDsb!6`KURxuc1m`
ztZupg;}3k}ucMAk+}^XVpU%1Ha?D$_kX6DOCi4@R92`Q>Hw-2fj*m`40ksj4Uo$K?SPkqD#err}qrDHa2}Fo8o`cxAOq?oro|oUS);R
zL6pbFVL>2fStu1IDQDudW{Ddw}UR61MK=>o$f5b)X
zekqA(a#=mBJY4^|Zy^72e@MRpOc(KKZ~(k^?b(Ry0&G4C!OD!ZqEtH7o^Hr}v!iX=
zCmrxb>o+{LzhhR
zF|)m`mzVr5@}rfl3+KzEV~M^K{YWG;%#T8lR$x+r5s)vJsC`BUOHXTN2>hM7uDPF#
ztz6v@?cA!;skA64o8oP=S?luifXD;f3;+R=0Yq2=Q&o&U^)Q~e{Z>?mdSQn(z^}nC
zl~65}D4kBBp?MlcN|Cz!qn{CIn)7*SrN5$?5X6|`B*2M1dmHr&U--fcj@s$fy-qKT
z8m~5g`X`?U0|#RaS`+xGgqKrEK%ct*{(EPwz4-iTwl!z(j_pxeaB*Psli0a=1IBuf
zvA#pckRKR9SSTZ^h7hC?`Bj`aaTv!B?8n6JJ@CfIkZfy4>)ak}zUyw*-8G#WThhF6
za!7YBS&<$)esqm2j#DLHw2mJ*j-XUwVI*M-3lu~s7fR&14!i1-OUVi}ZQr_&2h4rH
z67hX|4jmOu-Lq)I0mhVubdw;a;ZOx}UBvPkS;XZSvQ7=#o_Sga+h4wgL0sI$4`iwBdL;{j@;5K0e1$#G630t
zr6HUUtlEz~cl9)|G}5V+=cHV!ELrp%SUb!_3~@3BKS8MSvzV=1yACrVTqoj|2jLf)@pyjnsb
zs3B4c3Fd+dRUF^54?q0hTkyaa{~g8kn=z}Y3wt*01g{86Qi2C3Ms(+_h4GjZbE?Gx
zRVId5RLKLRAcO-bMv&7LK99q1R@N&iPO0^5c5-BR{M#2^d((e3u2|cMkVVH%^s7R-
z5-=y`DQ3N2a~orY0%zPZJt|X7AUsVpwLBW9m|!Z7kA0x?syO3o!pX6y@8~g!GD$Xn
zO>E_j@B2(iC!e_Q!S&tq7O#{?cJCGr3y_T_kdTXd
z*_3JP#H^*~G8s7l2}IHdECm#Yk>7AX9{t+CVaEe^!m3Q7FggssT0^x^K~VOIn9JhX
zHg|ML}_rHUf1DNy3ctzs+tn=21yB~NokC0tI>xOraTyVoX?7qn$
zN;kB!gq>tA1PNWA+9VkvB!yZSpj;_K1|f71B4xQ4J=~95zI-#Dd1?y=kBzeXZhHV~
zQj*IP96Uy`_L<}d5pxB|fdrxu(hrD7glxiNXRlow?caCM-f^J!33AdODFy-DY>G-2
zLzGHmGz7GhfTbcNR1qmPfutG-$|LAKbikT3XTI8h_}KgvYtG)f>Z)trf@DfUDqZO7
zw^I#`ytBK<9vd&9Tn%6UmH+-$Y{9~%N^w(cPccX0G$rgL5ZJJyEQu(Kq}BAUs0^r@
zU=Ag$>fu2PQA|U$M++~0^99RRT(V>PQ+uxInX^V6+Imo=A|I_(MhjJt2q$3660`~+
zEe9nli;|d!^vsJ?Z?PcKZRzj#o*4W>Wvt8_ZAYr&1ci~$D%CQ%5rb7L!$p~Ve;f@R
zvw_CxgdH21TOLDWx(hr#i@{BTv=5&qVCMudupLM5_#ZrV>sL|Oy&XBJ5sp{ESR9k(
zh(fI>)!4{tB1RK#b9B>J?{RSc>vjbB+Lc?kJ>vu5oa(uCUp&7qd%^ZXW+tKW^3dRT
zVEtoi-4!>8M;~3kM^98%H>`W(&iDS)x9q@aiiDfe*+hm3MO2!YBpF7KS|Q{bHAKh<
zB>(`A2;5gli3G}dAJw8nWh`VH?th96Y~BTo2Iqn<0SL9VHd6)HXj3bW(s#5@u%9(?F={#=Xj
zC(GWetu(%x_Vw3}1Mo|ua1cS(l-}^jQ!z$-wI%^g4hKMo_wFF{9p;EiHUx`0maa*=
zZL{v$dEn@q=d4(zvX&>TVi8{PB&G=;sb~_Ou0j(bVh(gHjf!;8*x9YPmqORf<$tn&
z@6c_{4Xt+9v}rP|mMG~sET~nIy|>bwgs5F57c=smh`;9SgFarZT!`&&EK
zvye}MNiUa1wxNN^Fr=VdC0z|5G+?p%3NK13XjvcqDK$qq(5O{3CWj_y^Fxo|#MYfa
ztP%59o`;@!i>PaQ2T?U(X)f7YPhf4(&a5RJ3+=Y3?Q9
zyDrKch&Ui1k)!}g@=+KcLNb*QvuDqjd$;dCDQR)iFyjHC^inii2q`
zp~3-neD~cH9J-qzhHWffru>fCD8<}ccW&MM?sC~zOUNpOUS
z)F5KVmcF#K35=y5a8i*P>_T->mtAKZ&mUqmNrbTbd!|$xJduZEgy7z6LckK}iUT
zWPq9u5JnoICe*;;gQM(A_>~B=8k(@<@eP2_NP0~;G&qW$IkVYp
z2JU*i@BH)EowMVaUE9U1g>zIjj1Yh!uonQ>(vEs7JRIiXtN<8dMpXs0>d^fFd|ahP*1GNF4367t`T`z5HVzc!O+dopIfR4?X#vT%yI!
z#4`N+i!PFL7cFMW&B0oF9(F#qk+PgqV@ng_U~qh&wmtd~)_?6w_|{*17Ka{v5b?q|
zcyR(Kmq}KNq@n=nYzD)Hl0G(8h?3p&`0Ic7GuAmD`|J@o>34nW+due7Kn!nr%T4^h
zzV_eBa=n-PBlv%g|AOs>Kll8{0P4NN{3n0Y3;&(Y`}t*_F`mOTL53li;8_3kQ|iLY
zF6Sl9@W8zfe+rqF#j$fP{`%|x=AZPruX&TDGL5`>c8^|t?m2SBq6OqBA52z=$r6z+
z5~&h+Sb`&cIH4qztE?lNrl?Y8&urMpt(HzbXU#?I-i^C-x~*IAc+B2;aPa6O$9HTr9yNfJn@#@ics%)B^R<@2~dtN6mc7)4%~V
zCTxrsPlBTxQB+>ccm_lYwdy32xiq{~8xq+pg`bC|DW|wnR@?livRLL%e%Iw~mR%
zw>)~^_MP+QPXCjk{y~RQ8NKQQpWxVYP#@p2m$%7oq^Flow-2c^zPtSko7tE6#cSI|P=k8Agb|Km5$$FL~+4+S_h=H!GG3
zC`?S~wHK^~CJiCnpE@SMODR$>txo#?uBg`cfJ`QXO0@z-5}xNlX$@{M2q6Fg
zRI3$)VT4>dgD8q17{j!dwt5yYt)ajmwT344Y~ohN>b=*3O)Z54J(Z59o(Oq%&;0*q
zNA%^uf6jmq4&bi4evE1u*3Uvez;|!IRlBZ>Yp=Ri+;jh(2bCX2Gx3$vS
zZ+h2X{>NAT+98JH!>n!YT;#fEV}93s!kSCA!)yD2nhgGPc(gR0Y3f3A`!sQ6-yQ{S
zL6Lqo-{PxgxX!!?PEY`giL=hf@gB42%Q-254E&Lm5<|ofs?*
z6bqB!jF3*HP_C7bOeRsOm7#@zgr3@awKAS@`tx=bEEQGR$YI2ySsA9
z#cpTn8tlO(b5*6iQma~#3{k6$LiN8s_J#BBtyTPc
zrEqA`x~s7Mfrm=hUv&Ac+m8JRg^40>o7t@jeih`!P_ZmjtQbO3pBfcYK2oxZWaNVh
z!D2S3JURA{U2Sa_GZjQZrEEus_R*pKaU`eDW)Kztf^-}}YoJ&`X}ky(gbbQPX`S(z
z?Mbq0mex!#O%;0Kk@@Ld_h&K_2u~9!iEKIrTL2bkjfxn2#Sw3qj)pmB1KC-CaDX-&
zBC{Vcl#tA1Skzyni3ugT<}HZ0@>@>qJ9ew%s*Ae1+w{(ZyI5}FIpnekfJVgP@VNuW
zjiVfl!wG#fHO7d^Ja+Bb`zjgSbBfBKdxe(Fr4KmSeiH>)_?=L=o;br~jFY3Ct
zt10cIk}eRHFtYV2gv6jq9C15_baM~ZyB`a@7Ja^xQ@BR2t+RZ_dgB91l
zUONxrd@Arw
z1t&%hI1AxY5e$HX6aWnmWq<=EQANeCB9Vwe2pjb*1trYw>0satzVD%2tx&mAgd##v
zix7{;rxLjmxK&@s-PIu?cnGZ&h&;FyfkQ%z`unQ43`Kq3=!
zeSUOuWEFhbQ5-K?EsK^|I%1W+;lYD_rOIRP{r`UNmf_t;ke=Rsf2u8g1^h60&6{3#
z$>09P-@Uh~ec9K_tiX~Uz@ShSK-F>)F%LpZBqE8F43UaL#FP}CYpc@O@J*>q?2}O_
z6^WQ7BZk`WFiM3o>sXuxgas)9?%L3>5DgDubU4qV8d1m?LLO$EuoiPwrDl;tWERIa
zf$(%F0A-eelj+dX@&ImSNofR{foIx)uK7R|2PzV1>_qp%mDv8kw=id35A5zW(BmbV
z^oQ(R`?M%1mM=VXc+bBsm^t@%JXbJJS1IeJ5LZ=%!a~5}sF22JD3MNha4ZiA2V%jB
z#o-Sgyl3rIAA0`>VSDP~#~*YrT)k#Dh`#go_q{i~=g0TX9WG8>ymr}~g~E$9w=^Yd
zNH2`ST0EC!CJnjR?Rd?_7S`yCUZ4ckyyL$Dy;->F@Pj@d~LG7^&%28C$
ze*G$6kLXluxSonj)@$uj0??@N2*e~9m#{R4O%?=&aHtA^vt*)~G0m9^$-p!%>s&%x
zx9-wWSO#nxN(SJZWB>kL#JNB`l>li1kp#2?gT|^=E7|14D37}is}v{5)kLlYg&^`-
zea@TEAq0Z@dt?A(dMf1?gQin~@l;n)JqW%ULm@N+hXv9cN@zHa4NKL)$NRA5p?lc6
zbFQQxee=H?;;#DC`RmTP%4^SAla;dYzxmC9AQHQ!n>#qOXWmx(`qzDV?3Qnp;CZM<
z3bA+!owMiThWQJTJo_Td0ptwJ7Q<#d13)o-8;Nr5qZ>DEzGclh7d^G_=n>vH%hOpo2F)ep)JGLr3@0YXF)b}{%H
zLGb;jFU#kH_eI>A@5kAUvI-lt0;Qdl%AGtoeB0kY{;A*lx9{Kj@Bi}O>_hKB8
zYz$sJrc0%g9_SsA_uYG+{OCtNCU
zA}GT4^C(V?a69FxmZt2-X7Zfjf$sS@00~ZbHsgJr{)ysyI_Jsht`&UxYYqS8D^C4B
z69`X}F9~t(;PZcS6OA3*N&*Uj28zWZnx3spaVTyb6VQT
zKeUe}+?Z@^XtsvD;%5bU*QD(j#dHKuSK%oSF0Ze1$aod;Bq5!PiSK{v_tf#RiPwGn
zQ=eJ~RSQq_9&%Qkwd(2pci;Q%@BhQs_{aX>kCdBm!Q3?d{PSN--f&*~4fEzryM}`B
zf|g`qMm3p%@E9fwMKI4sbEX-Vk|+(02wfhT(Uh^i^vu?c_kQ4`AIbmVo42qV-}N?%
z(hQOT_RpL^f2OI|fjR0~zikTZ*}qAGxI|nF*i3@4dSLUc7;l}{!upStRIM`MRlX!Tb&|YcAl<1cjZ=v)bFBW#dy%-jjpxCqXO@8QB0t+l)pAOK5cFsHPQM)R0Rik!)%cC{$4>
z6m-=O$@Aji+y-+kfY}guHLs0V?>2sJ01*&H5z3_Cr(3YCiu1&Tzu5CKr_l3d~qa9c8-hS|k?yj!;cWvJz7`GIMhNDBcR7I8-kg@Y9j}EA>f3LuQ_pfgF6Z@>?
zIQii1Y~kYRXg=@!zt}xAf%kvvL)tI*;hFos+1@#${he=r$2sqvHLH70W>z9aoi-nj>M_HMfDLvLq;wJL>H900%=
zgJ5{Jpqx6H&z!pr^;(Q#_0B_~>xoZ2U4^HsaL5Oskquo$ob&Mn7=bH_r0&~(5O00`
z+t~J}*UuNZYpwfR3VKooSwvo^0p%tN2DnT=jR5Ar(
zfDjHODJ0@4q|<4{6G@=40Z3)RTo-U+$nexEB5k-ZubE8pK1?10n$8$fYwN8N=R+
zMsqfUB@Htqa?{GWj+rRcCWNo6?BToaVd=~+YH#aC`|Q~ai&m1`(ykE%G*d8|vHeLA
z9^ZG)#Bkp^?dOmF$wRwt``_K`4}bX&KKt9fd-reNF>}T0n?cog0o=dg&2MPx-E-oP
zDi!^^GrAV?;nGo+VIB%e04xMWRX8?r%Z3V6?e|(c+ZvJd+e=d{B-an^XsEK1I5R(!S
zE5p%M*uf-P8$D4eMe4QJCx7db%dcFD@qEyGaKC%jg%>>f&>gqk>BVAL|HK3HI^yj2
z)}1};O`S7mWRkHI(A=ib(M@RT;+SOY#Np$j7FAe06{CjcMwYY$U|FpX28oRIEbz<*Y6eboTKVZqi1SU_OL@7Usf$?DiG&u^|(mvU$
z#5|#yYu|F?ag3HWR%LWoX>{_TbXXX&9FCxtN2NF+3YAF5r-sj*y0}EB
zw-D7&9V7h{V_~1`GJXZmKbyM83p{rom+}Qb1EVw>92~}Dk8c2N+{{v)v(Vl%k58M~L%eM!f{9+$l$}oPYnOHT{llNm#=YOU
z=b?K)JL~+_{~Vjw@tMlTeQ!-Pc6jJ$!lJVleB{=D|KWdLeD+xfEvdK@k&ZWiUCt7IU<*#M1JXAwfpDq&xuw4gmE#UuW@4e&fx~j9`
zXYGB?x&2P>qmf1$_1?SO3)lvm4k4k25JE^o-h_m_BqXGKNk||GA@GK7sxcTa?p>B_
zOIGiFr0IR;_EYxW>-*!}8A)!K7-Gw?e!s2Jlv~a|`|h>ZTF-i(v0>zT`|%Bh$
z_vFDd+aMBYa$2VG#PNe7Sr^l>6gD0^d-QdSm#zItXJ4PVZu2HHYFQAXgroPKpp9!b
z=|A}MZzSLI;hX;)a~I>-H@{(3avC&a-p5vs?L;;^`o}X@&HGf-thN{|AA>!;DzAiS
zNce(IAIG_;omf0VAhf_$okKQzO#CgPh2t!H&Tq
z2WJi(kZp?=X;_ZVjE=yzXkAS#@^)#7n;d_ry)-nAk=+BxX2vl-)~^$>2q&U(k|1ht
ziiDgV3`uN5m?#I5&X7z7ssS
z_b~$qu4`;Y`-~Y9O&v2ZW7UlK^!B&KgUonwpy#1XZtUBqjvc($_Pi455+3@_hvl^9
zCIgq*)iDftN#tb;zOpp?@91dLE2G8O`02Mh-Q@RqmSgiFd1K4Tp&UA{7036tF=
zf_z6l~$0-*S
z5py-Hn8Z*(Vq{C(g@MD5inb*y_3@{7UlnmES=Cafx-zb{Xu}&A
z(RRRCFv>?En?r3)1z-{M!96(k#5NqE
zPY?oK0!@OzFqtI~SUUfFpXr5Z)C+5fQza65_By!mC;T&8cP9IDf5t5&@pHd^_}XI1
zwNC=x4jn!M;Mb1uC7A$#K*B3A9AU%rOF7S1aGVIJSisofBdBg$1zQln48R5`fka(9
z5>^W11EZ*3kbw5{h*#I+bT&sbBj89(L&WXZdB9J|ijxzuVEGe>3m*&TP8TdKz3#e2
zf4KanH@2bsoI7&rSakW~`L|;Kp}tr?|A>X)^5l$0fK@OtG$F^czLiV~K6CO6l$Sw{
znU-w14%HpA0FS|07g8%g1sLl*PSP*xmKk%!^p%@;_8&dv{>T6OCjG@<{9lenqi|jK
zqB*#Pw!r5!VwA%n6ZTx056AbROR;XLrodGndWRXqz4x-MQ;6
ztbz|n@Fp%1w9x20&}EzmnP}9Z`f4fK8fJ*{=1N9sF6Od8*nt>I;t35c3>gYrFu43-
zCIBD}!3>_M1@r%?r|Xy)I(-)PwR0HB6rt!sF5if`
zLj&0N*pCr|#+>=f2{UJ4c723rxN~vr$=x(OJY=&PH{&CHX8EFpm%Zclw;Wdme4+p3
z@sXxwOKaf-=JMBH_0CWH%Rhbo6My_$PyY1&ABpvE`hXeN28BcgI9UmfC$6vqU}$6<
z6Gh@#vsZ**Jopfj!ORHqC3HUcFplm&g7H&FAbddO4P1}lc>(*%umV7A&cu}uH-Iz{
zT9bfaGj&KX1PBV_HZte?V<)l27rL=YhZHv8KYKnWohz494nGT@{JbeyzVLa>vwr?F
zUmsykLr{1Hf^ktV^sgP^OEfk%a`^zs>IBC1_;CWGM%pmGM`sQmK=tMcB&rk80Ru{h
zn{9mqrp=gvJu})A6yr8x))0>FdXU!6
zpQ-=l3twq|(?|dOqnJ4p=f3dI(JH$XL{hebQTs_ost0<`DLLFD3`OjL47k3ol_N@0
zW^@2j8bnf+sBV}AqoOdb2P+Z<(kbBNUOw`~R;*pQ8pX(Tpt}7Yf1rp@fBMs+v-7OB
zUX8tjq{B^s49Juqw1OamxUdkF9;&va(*!Ub<3a-mF;vJwJY5_VBTfq*Il%
z>+5PjMzc0bGXl}xF_TCbOAxaljcjg$v
z&|Egpe@v$E(@o`#fQSe}NW@8D`0Oq#-+Pz`ci(54n%m8c<*O;y+}bfep8D(Fb4Nbv
zmiQZub+w-@TINh9GmaD-nb3Ldia0dlD0qM?;>c1IfpDNi7>OEkVHx03KMFk)@MT#J
zj1C!TlIcn=F$0EoL|SHcMD`f^u@$^25&)N()F~HYoy7~ramBY~|AI6S5Z^hc{
zZv+;tAlq)o;_0h_o=zU@IxfcdJuU9Nf2UeBy}e@I{AC{-J#nb$sv_FgY%p`Lx?H>_
zH~z^;JaXOJ{`LRkvrnJGvTJW3acZ`v74xI!D#!~8XS2&6#}
zC=?1s?0<9{ykY?M359$KzAvCunG8Zm7{$=qY*k9bm?^%$=dd!;Z!*dvJf{QvAI$i(
zUgzh+6_iu*;Q{u!a#BCzdJx8i<{8)X>cKX=3}yiM#zM|x4rBy5gQr}>@QsqB441}6
zp}I~2K>^ZefHmNUP4ewa7s4-QfWET;djJ8ImDR`>vZA`K8WlB_3otY=H^T$XD>O7+&i7IQ%Co$lG+m~HI
zvu}7iRn;`Wwk;Hc0O^`~z)Ava!Ez)355dmuxa-URjV)`}0_<2iQSYL*{b3P_!*ZgA
z*}%4)mwU>8Irq_oknt!7h?EA9@JA3sfEZ~y{L}+-TD7g?5yn7Y&wCEte)|CvN&Ls$
z)vIPVEuODrRh1T%m9SHB%Zf#aq=Yhzf?K5Ve4dyYLP$g+5k#ZWFp}fR#6U3OB}iF+XjUR)v|1H#hhg;
ze}6PnI@mvv`gefQ?aD0=_YCLJR##_w_dHFQ7-1LkQ!f;E58@*g*{|F5}H_{{XMp_*(1Gk#lDMLyw#3^-b|OF}q^}5)Sm`H{EdU
zPwu?**nTR_q196RoCy0(STHajfl5&+{tN(0s!UfxAy+cLJyZ+6O-Ti}~p6TfyqT@%7vSUY)&lSK-7mc6SUTIX&uIoY@KpFv2
z$f3dXp+Ue`mG+AhTaKLEw`0ODd}ZO9Egdb(HY-$D8TdsB6A0)4N;7K`
z#Ewmf*q~?>(zZd;f?xr`0?Y(yg-Mu6hsewT3kZ^k#gZT*P`UI!=^PCvo8l?tc#{$=
z2vVMpB!MuU6^|$3I8g{;fgm9)2NFaH%c7|E5%+Q^bswc&cid{7x#N2VnUZQ>e@%S(
z`YS(r;PCOo6M^|X?KrTUs2LjUwNlbWk~2smk0|G1a~?L8V3P+y!3!fBETQ^-@46%F@y0S#4HzHaR&J;PWud%7Oq
zvs=_~9J$j2SJ+aZqOndptuuhuS;WjR+6N*Lm|PA)(G8`c6ob70fe&bwP|84Q&01?y
zDwa?xl}-dfaDs?nS@H$F$a!aYeh`~-6aFN1;Kfn(^Xrn9e_w7znjA0In9kD|(gp1<
zKi}(LP#`8I7+1w63OJt
zJ>|b(Gf2c7Lj1XWF&;&A)NDDv_U?jmv0$UefwsYMv4Z)9DLv|
z!mh0hFAvxb5Um2Lr(xYqZ$+f05q&+~ICcNMKu|&=5k*iefsG*ehGt!LEmG5_Q;s$5
z-L)Gh_U_?IQUW7`YUb*-D;|1m+xyc-Ves&NnFxGDwKvCR7e*LVwaf$%2T2=FgA_zs$EFd=q
z-^(CrOAMbqiEa1(2v0xp7>Y_jR5g$twSe6Cj72xzMF0Bt|A^s(`^=uLk8N7Kc*R?x
zB|A*gHj2-lI}Ig36D|=|&A`fcet?q8HxMeO!B`1E1%N8S_#Vjj(2%SFj-Eo-t+!(L
zx4wbg$%C+p!#q7@qc}QdYTK4cbgbQX+ZVs`6Xp9je(ad`JP%GJ0?+f#r}bV1CIAHa
zQ8-+Lml?(Uc?;5R79l7cG?~(pq51^QJ3sLZ2S`LX
zud#Z;>D>s}MnGx@h6I!)p@alOz&4;nV5m-coIiR1Tfh7n+dKNSi7i{K=3cdBQ`XPy
z9?K1XcwUsPVB8RleAf}6Ov_7R-zc$*~ShZ^XC##pO1jaJD
z|IBF$3I)_Px1w*tMQYjtta<&rfa(%VyV!
zq2A;CJ0JR8HkS2=r#d^g&t14^_Vg`R2S_!7bIOu-oc+M(R4PHKs%kP)LK6_k&
zv;deSAOu)Q7%5<6=%h3_bdI(R)22i)%rF-mE}k#S6XKc9PfR(_7rcDNROH5Gg#}Yi
zD_Lw1Gn!&vi4w}?Cm*<59QfAPEd)h1_xj82xr=B2$EYgZ+PG!CEhL+mD#%2TL8YHZ
zB2b8E^X$whS>bpU7z1!p3GCVZv<@sA=X!>Igp1^()&Ky207*naR5{BI%wDraX7WWd
z*maV&ee=H=!`%QEKvKc?6skKGWAoKFV0>>kpOdIClg<5m63+KmpMh?B%PmVAJI|
z(=&`{V-t;@KEc7*h|qllYR;l%Gj6_d_D8BB42SaoWh(`_04e12c|iF9`{16_*!|E0
zaC`+~0Yw&Et>GC34Tjd5J=Z1HY)A-6g7&79sqguoMzo?r7r_XGKp?F0R{>ofVWvYs
z2?1Z0e@EvB)A_&AgsBmTa7_J7JbO&?-~IrWKxw~E#M{6(qu>&wRB#bt3TqB-K;0*gbAdffPbVsotcW)*Ugtmj&3kTn+s)Tqg=j>h&?8F&
zJ={=JNxKf6Mf1YTF#nD30pg9wdjio&3Q__n10+Ak20dB7dIdX5L%{tHJOo3c
zT&D~BAC*52hqFjn9+u9nf;%xN5{VI$NLVl9f*z-1d4~Rm|Ln=GgupNWJqTH~|3}!<7yM
z3^Z9#RsuwX2zwAF!0T^$!^^!4UeKmZoA&&_B%ptI07+J;s;!a3ecc+Bt$*Hp{afxj
zvu7v8i;8=n+K!%vuXF3W-$#ff;dlg)h3LA~Sbbm(_CK{9TYvmbYh0|}+Ba5ye4Ga_1m;U-G
z1|@h#VR&Rr*Vna*{@#(hQQQ8Fb+3P?7%V}}XlS5a_x==TzV~flq#x)%hp{KOVd$>A
zfTD*42qULX;FR&&}3;}SO^@e90g8BRsyOV*7ydn~|4WUzXtaDhs_uu}@f*reK*WPX4U$bhxczXK|T`l8~mv9Y8a7dI5
zGT~;Au(aX`1{FNC)K-h?7TcgUZTH@H-+fL+-4%7qt_YB*wMwI-6t$ylKw)DZ2m%B>
z+1pM85P?kSkQAZp)WlT3FHz_KjVYr&C;b8oNMXYWhAcZX)>BP@5JEstMUSEDV-EYk
zzzp*<`U;=VNDx?0&Q18$2nyXghyNrKNy-)Sh()8kd;8;46ekaz#;V23si&`({Vqp3SHBj^F1!5w1DWyvh6;R#1WLY-
zh|xePhkZMDVz{>#mA;0>HVUxe1qOivj4Cqwz~(IrdDpJfYzqmC_@AV(;j@sQuyi0S
z7!r_BxOgcE=&96pC^2?ks!2eY@OP8Q%U_87qV|}V@I1ec2w#F}0G<>mS{91Zfh!{z
z9nZj$Hu5F?PyGXOPj1G5C-}j-FLM#>o
z*w@H+C6>==_(;v14q$8?-MuHMVOBE@ml*RmUJumFfUzndoD_sbNTnhW6*l0H;lvMb
z#kM=Y2ay{^W^^1QW8?5jE=r|5lyX_bV$_}W%(81K@cFfYg|M}2Y%$U;Iul-nJcCId_XBI}~(7Gyz40V!np^nBhyGMz`eO@eAJG{&>h
zaL+p<7chQkI^VPCl}hkRE)ZxU-$&=(J$&Ljx7tW2gZ33Gr~6vo>obz|H3_Y=-6B=$
zMzYik>16=pLl_^joHoAXjR8km5JtcjHYP@M+&aC%8tfVvgq8Z(<`4ZbsJYD`k>r+|
z3K~4Jhx2ET!^(|9kB`G2%c77e!2}Wr7*S?WAqzd+i+vB>iSPX9XVLSMpJL6rEjV?y
z7ch+0_D1AKdk9@;^t=@-o5qI*Z-FIyqwyr%T$ZVn0Uz3rJx^{&G7^LF7(z+F2ehZ)
z<%<{{4DjY#)>2JHg&G~rSr$d^OvNj2Ba#$Yjt(pbzObO_e1rMqkP={{V2pw#L^%~|
zmB+>4s297|Udi@M^6p>T|HKH;Qo^%r?lk;YFwp7JW+9gMD(AAhQ^Req}8TX
ztC1fX1eXd-fj`w(1_-bT>pb~f4#pTbPPuWt6pVHL;GSjEX3W0=8aT6ir*N7pxR{8d
zcK+qC8&@MJg|tCh2VkXvXawjvfqh^8G>$%g7a{=i1p_T&@B@KDZWI$kqddE#jdE-_
zv3RLo^%wsL#OgnB=J-J8hQ;fweNQ}X3>Zq9iyOMjQ4r|T_yiad(Byz&!Db(6HHHO|
z5zI1Oxb>g@3^7&0*@K6^l&YHcn#v_t1>kBMKEaU|gCzkr1j^2gB!mdjo)^n0U@lZA%zVoEJ$&&!(-;D=r8=8oD$0=NQkoI6wlE%apC#IlGeqnG(t=vS0`Uj
z;`|6fHsQ~;Bq&i%?~Cy7l~Rb=4x-XVg%hEwh{UP=d-&{qciU*J4Q4J}vS?%?^Id|E
zYCC6|yc6gUJ!pw}a7;+QXCNRsC_BVU+{!FKv1lB=3eeXzqN?i~sHbP}E2yad>Kp$3
zi`H2Q6|J(-P@lkPKF=fB0zAI}KPVy~g0>uZ8VJ}xD~)_117QNNTf}2OxevF0^ZS_a
zfjb^~7>E*_s6np#ERarOW@FtOboW{9kB%TWI*OswC$a6WA0q~XQZ@&z7=i^%se~9C
z*h=$N>*vwJc}w&Y+jrWwWp@eTyhmyaT3PUgg`yPjq>Vt>&|%vD{Ca|hFfODi!eRzY
z9L6MJI2sOE7o-`>hn*M7WnKdIOpV1~+yBs%u#k14n20ziSptEC0W1jPd@Nh^ww^k3
z+OC^3Tdi5Xgoa1@p`lSKm7q*Wo5xJh<Llfd$)g%FH!IkRy=a_ZaT`+JB(;=+mf>3h-3eL7@mm*F_;$;;XLTgszD^
zM8kCToB#P`8wy|9x8uNP=g(eD`<_0ce9ypkB%}oZW-1MM$r%$&*-_cXAgUEiA&=qS
zv-0&fUd<}+_T_SN&Bq*NIRDWT=;S2E{T=+Lk=c7p~HzZ3_Zcf%rb?G!t?%BZu
z_uOftqdjPw)qX>FPv>7Lzlei}4#}t!L1}y#j&UIgfOwTuTo|y7fMqVYm*m5;3BrkB
zWIX#`M5})KwvT_@?pI#mR8>fT8
zsA1HqK~(#LsPQIH8RU@)iim0#HY->R0OF#xe5u-`Q-77L*q3hq6J0GZAR%D{As>+-
za*+gJ8z2z~L2Q}PY~eSkw|B4g!yneJdCgTCg5}ZUr#b0Vky}(CO90SQo1)Pg;}a7E
z$H92tP})g1U5)xSV8=Gm!Wum0Q=~2qI1vb?0p$Wg4zLRt+V&uxy!(fcxh!<92-jE;
zfdLf5_gxShUbS`^^5oF4(-?f{AHHBC(sbvJr}w{4FknZb@YsP9i@+@ohty*z*SB6^
z4qnM7IMhRRv;lJzV^*`YrdMbc$C{zxiO()tv=OM9B~UC9biiOiVe`2U7!^iXkYy)W
zhMf|H6+>nirl}|`WQC#UoD*{qGk$o_C;u-5!5AGro@E(zN*9gE=NBL_(G(H)BJZ_??3C!Jt9ngoDn)*V?uIx!UUIjR(r4?OlT8fVP0sxRNj1Lux>
za=5?`)~vpH`;GxEor>)GO%{B2#F`k()
zpZvcczvYvE`-w+x{P3S``s&~QjbGzic7h$6a6KkzU=xvz5Y1~?gtb#pNE1o`vj!*t
zf&fNn>^q!AL)$r2)Yk(&$2eYBkvg`0TiTAeJksAU{8E%z#~`(UVL)2~exZm;hdB}j
zO|MAuk)3-?PhU<58UGW*&Ni*c(wdYhw@CQHMnDz-g}BZmR;JI3s8DM&E_^t~g)T56
zB@YTo6lD|zD~gzjFXrAq@3TCgz~ImMJeR&pf5~=!3J8D$APOK3
zAORo^ptAfm4IowiT3!AcGg(OZ(89o#0(sj(&W<8yM~y2T>#EnhrYCTNcXf64VDJ48
z%l7r_&GO|-DVv>O+aYjSNkBtGn*f3ZiW7MtSL74Nj@JgT8z3z1IeDC-+DG@vvyesr
z#c?3UA>U(=#mPIqiLJMN4c5dE^u#D4AQW?XD8=wgE=y(DiKXb&XaNr$>hwSK&tJ5W
zXnEpq{_$VmSk%Dk_3Om0ox9kISP-@aqk)QwiWhc*uW*yB;TRWD4(Y)xE@F;(5O@jFMk%}%roEX^Z$WC$<2d^5o9xzBI3vH
zzLOAmdcoCKp(L!&E!upAtgNrqNh^T#$06avkb$C$DXcD4o4k**47^f)5uRVb_}GAH
zY^alsO>JtVd*}w)zT&|9|K@X!XE&;XikVcZf)Wu6mIw)kgak-hU?Iaga+&EzX&-?J
z5NJlAY?OT9sizK6+KQnx*iT5MFp+-;`$nguD@y>
z5A^luq2ZjBE#QmO=Pdnn(b!Z1DOXx>EepOBFv5dP8KlfGs)8X@2P3FZV@UEi;-w*~
z;f$=LjEwn1vOcFo-t&tG>S3_!9db9BdUEw
zl|niws=fPm$Z6HhcaM&Z{83-m$Y<;y-A9WyZ!j$l-QvWVF0QO<0JA1W5Jmzl5Ji-b
zFJji;
zL|)}N>BNzWrfAREb4D&%!2jot?>eBm11C=O+^}HQ+~Bg6tK~gEx<}i#L|}R4=tUsc
z?_(LgRLRSi&ujpFN1uc!d5AIN%<7qwVOqL5n^
zWzf##@2HF(oy-CQ&>X->4Prtpo&>`ocPz^T4?JQu-h5LqXX)s&oj>~WAJtb^e7d)P
zK*pNp>U^XEplBEYz1$1nC7390@B{rrP)b2WB(zbG2o>#_fPujt{lO1>MDE)DL^guP
zD^t_ffB9{nx$X7azwi$j*nfvwzHpAUW6u$c=3N$c4AOSUaiVa&A}nJNPekFnMQBrQ
zQa1u51crJIc0RZhOI9ui$ieJ|%P?{B5SFzs#@@r-$P|1OOA4`gl-*Jm@hIpu?|dB(
z9yzIdGQKr1;eTQF(#w9gNDio?5?5V+J@P&wh((Z#0D+x{O(RIFajdV`h;jtGJNv|@
z8(xdti6bT%5jy8*kn$N1Z@m+Z%`>QPbd(258pU`cGFC0JvK|3B<(Yae9l#6fhvjwk
z^Vt7*?fk6Qd7i`HtHYiDLQFz3kd^|K6u`>&qdDp#nd?ToQ`9X^QBR92-BBCir5#NI
zLnlRpnLwo)L|Ts_u8WXtVAw%GQTWnHyH`goiAdCffDe!gQ#e9g(xl1~fMa~bi7_!gK?|2G)bKKG<6}dA);w;q?QYPb*6kMup*hKfi50{>USG)#cZV(F{)mN&T6M!4Zqn=4EQR1A37uzn6C5QU5!=9M4^o6g3Yr11
zgIJ^r76?732I=AZ9|v-pY8I}fn2DjvsieBfdK7a-SP+~WA4NQA(>vewCJnav@bNxt
zAcOyyHh1aoD%d!B>NKs|w3b~`7*iPpqJ$_W}WNmS7hR6IXuD@11dC!jx
z0LVxj46N##NeV?u@(AqbOV5HK3d8N&$nQxu3<)qK43$L#
zDP(sM#1JH4O9>$)2m(rJuqjV2bI9mH1cHGuCL{-E4Ppf*1tY`8elUTJInP;26ly_F
zK2`a@hC@c0$qQxRqDFmiIps^?20dAuv`naG;TuCm-{njpCz>{H2+-4)I&^lZ6f`e-
z^r@r0a%NRMM-1RuHng;G`**(mimxL-mxb{)@Y^5wKq$*3MVPTEN7<4YL>ep^!=1;u
zF)Bs>+2e97H@>TB{+u6(nX{Ip?dZ&b&XXeM7tE^JZKgR96FM_awlQ2R`X~j8v>-4f
zh$SRTScXA?kNWB)8d_(dWzJGYU}4AYKcuvbaCOTx^z`);e3#fa*mU_i)i`^R_2j*~
z=!qSt|8Cae)qkSwB+hjA)0_pfxu!M_JFX!kfGx5}>j9+I1ma2~s#$JWx879N)bK+)
zcCV1>y3bzohIf9ZZSMTHX8TU95`J+@ZX$P8U+=)J#e(Z`EKU6;ft(YCZv|lC;lz>S
z<(Ycs{5|8QPwp2#V=d6s3{%45WXk9QD|KG~>gFT(+?%T0v`)4*TU$`$m+>d~KSpc+zLQ)5aD<6(F&;kgY
zBwWd`l`;_uM0LIOg`-DL6e}v_mln>QZx8qG4+KfeW<^FTUa@v5(zTTs9LQtFrlo|@
zQ8vXq)m7JEaAF)b2}}%*AQ&!z2ymo_Y-WVhwuRXpO{lG`p|-h;dB;QBRQKShtev&c
zTJRe;11r|vi$Hwvu^;{5T#Jl5Vst>C`q8brG9HI=9Q0&H5l>e_b0KVq7W&zX`4Te=
zKoljEhK6a=(&aikUYz0T$h)bv1Mpb}+Hk~r5obZ36etzXYF_|Clqbq$*2I&MVHn{{
z3WZ|`3^EL2hExK=80Y}VWbz^J4I8jwIP(1aVQqmp1icWW%u8y(!XS_;1jxL==5k>J
zJ@DKp(ibAlp6XegtceN();@$G8tv+2oH`+ES8v3`!Ee9shSlr-l|(XAku8uCiYM#{
zd}&>hPH^h_QD!p{fOWwts9$k~Ys;(IIEGFSNh=)!RlMxwreh*IvKw&T-@5@X52ZV9_$3$PQz=T@CF`
zAQfe>$|G*_u#FO6#}Es>ch{Z;8LdBF*);ndOK*5Hp|T!(zx@?u1p;0nP(evAOefQC
zD;7%s9ZNexGBmLPNa5#lA1}fQzMS?e?+8gp%c&>@q9P;@Bgzxv^xj(6{KoEGJHDNS{6{O#hohA-jP&-&_FCw)@R9X2l%0Sf
zAkQ{Tv<@c78(A8a)2C1S#_hMC*gJSd=GIMDuU|UQ-G#$X>{0XQ%tS+DEiwh)8kY&o
z=vc(w{wJw69ph-a8C}PZP%)opAuPZzfE}jRIkmiG;c7(KFw)fqXNPh6;9e_M)nMKH
zw%-R;YN~35hWRddV*CuOF2qb0P9FHp(u~;Jl)?t4mIOH3Ag-3ip
z%Pas%8ppBS_lS9$FV`cd&%Sr&!W9WrPE#nd(CuDI+9^$`JQ5={9rN
zh|dDd&rWHD+KA_Cin6>t5OX*Otl&5iq?nN@j^VkI<42{kfVpt-a;W&;P?M>lZKm
z+L=9vMf-{kI-(;enM;3r(E`vM9ty-HbsiJQm=N&fDMX;~uD88g+`O)3V@tYW+Uwu*
z{@qTW`po>$P&jgJ`X*$Gqld-Pc*gU8lN`
z%a*86bV(6YOA==3ybj)a`~()p;sUjGw0zTM-u2-9UN&EfRwSxWGFkNYjp3=ocmHVn
z?%t1F^ZI$+PafPQr_J50Tjnk1LJ+`-IS@7hejceH52zvn%@)b1GQ|==^zp3ie{%ZL
zb$0ue?*Ni5>iEMC3deEe!WA2E?{{v)(5R2TzWnOC>YD#9j$}FIRKXVtOb)!MHklWp
z5dR8xg21o5Bb+n?BNSjfI9x=;xWpPL8M!>rEG*k7W0Y-l3Hu(n(=2=4TTRD}Z?J5Q
z-#oW__dBAN_{Y9uyFW3ld7AcyJ1tR_RJMr0SQ3ImZoZ;r0py^ns!oq(hOEt(Ejajv
z+m5Vt@znp<+En|&8ME4=fetX-J%p2Eg;LY1t0G8MizEB?BG-48m(QDLA_0qBu7r3h
zg;Z6N*I#=DV_FS*59|}8-F<@mbE2-I0khU#rm<|}cThR)ACEk~?NH8Uti68I=F*`j
zXLmhzXzr6+pC~yZar>6*ZaSoLM5*Qkm!gDhseqW25a2M4CN6ERNC5!uDCTWksL@gx
zE$kkBdt1vaKwF~Zi>YCoizDRu>{lxD1C6TPXyj0T3_{PXXhj7(8?U#}4d6
zUr!IlhDV@E0fM57sI(EWqp&Rp(vGpk&Xgn6tWhi(8ZQP=T!QKyg*HAa5>eDtC(zJb
z4Lc^`q#~gJubD#kOufI0_(z`+6`rp*KDRS`)*P0hv0=8>0LFtQ2vK;*3=aTZU6?j)
z8b*%pdTT5<{`b23kn4VTf{cZm|f{)tVu+!N>mK
zO+T7WuH?Dkg?dBwQ95^PY&z-MJmMH6g`>^4IbP*0b6bAdKxv84+KB;UjH@~jB
z@&9>7Z>pQtfc6{T7{IBs#yY#K>e_m)+q4S)6OUlLz~pKRft6gEk2PQ-&?XSp6sNL;
z^{N4x{E9n56Sf~vnD!Acu#JL42HFVN%31+0fFXu&5eexr4V|Ggciv{ry#8%G{pvSr
z6~M|3bboxFpM7n1aL@0g>l$|2iAtP4)JgR-(rjx1O$J)}a0$p-6>yBDj-EO#KX~(M
zueGh?kN)HH-}$#iv+%o{w=7*%_pU!Yk^AX`x_$GFzlVX089v#GwkV1Gu})Fz5~`du
zqKPz04<<6Bv3@BUaId%J$Wx(-$t?f!VWv3JSh|?lYennZ9<}rg;(fi{0a+*FXLL
z9%+lmBCxDDHofLXJhAoRzc|%-c*UHBYY#qobf1umDoi}x2rhcz)Rb#nmz+JL$k2V}
zw3yabVY=?S`-b30H~r(uL(o53;&A>e#rQ~EP^?nzW-Inokgy)UF2rjRO4Pez0Q
zWCVkc@4)VD+tJ;5629+)q~z+R7HVBFm(#WNh}YC{T~ixZR@H;7I737MDY#51N+y>>
zHk(BuKSo1cCn!7AjfuW48Xp^`(SZ}3Ogd<6t)sT~RwxRlSY#&q2rvBl%%~7N=^UTm
zLlMzb%2e|tU@CmPQXV7`A{@}z$N-NVKO*brE=GE5dQ0W(6*KQUu_ly@uL{)7R{kpK^txIls{b&B@U1syuugBso1z0K2
zW8c05vlhzG9xhwS6CwI_mYdgdreCW5%
zMk5m+D+E~_{MK!lpy=H*>l!ii_=BporOlbQbkW!E_{^8>Ou=7QHNC}IR67$b@o0C|
zjG3J?JC>ir%=x<@q7U!=+BYU9etHj9Etv7a%DSrmbL{c^W_ePBVkyjBw9cgGEiv#*
z*m=hfRHV8tx?=r?kCbxew|mZZVb%&8B`~O5H#OwH+&AaN*>m_W!QsNT0d#hE)3jO5
zaP8O|+7>JVd@v$5;>k1xeknZihme%=^IY&mlTGmDUzswRlNr!tg(+l&Y73+d;2S*o
z-S6S(?tPpcFQB@<1&h}#q*a@@u+!42(KZvX91FsskbOl0#tG4>LIB19CIrY-+BPZ?
zprte#Huv}U>e8vBd}QxaqU-npI&`E5*`nfk^Jc*yAciT+G67+tl%aJ1Da8v%g?MpM
z|73kJP#!E1fh`3h5;%MMFltw=P>qfC@oZQ3_2YKs7sj%_F!4%VovL`bSI0{<6C%N<
z2*m`ds;VJ<7s|~bmkY>N3S*}_7YWUn7#r31-uGks`uDyI=~XK@?anedS;t3y^h3FG
z->wx6jYHpwRn-1{ZClfS{K2)Ceg2Bqy#A{_$4-4UYNB}m=f4xF?jNs&E#$oHNbtQs
z{hi_EAO2Iv>py#w6HnA5mR3#k7PZZ+?z|yW%-{K=M;>wli&bq)m6^M2E{awPMI#ZA
zLWC3?!=MO@AcP6*YpZ2J{=gg~J%0V6_5nn*B?@xln&
z8`Bu>9fg2#00ki|R94o)2SFrL@O+s7zwyuJoB#E7Icr9T9`OuP^)1MG1{?=8E3CP(ffvr6ukXG68{|ZD))hBh
z8T{M#zCG*B@B7`$5z*MQcbDB>Sp{5m!@thyi5|FP>#kVx>J2pO{qM)%KmS{?w0jt_
z>;YisR($vN@1(DM{q>({tam;%I|6x_%s1O{K*~Rf6MRD5&+y`)Wx%i
zyW?2AcD;u0M|D@`GE~)u$QCW2O$-ta1eN(P`C_Lx^$l^zzEaMg`lOc#?EowxJ
zKrEU@Zr>BQ`>Wr;Xy-Xjrs{F!_3xl1*S*eQ;X)0|4td_nQcMtH2oU`MdSJ;Bu*ibp
zm0_Y5m=n-c1&Ait4XuEwM|*QT*1i-gx4Z^RkMGk@+QKB5j#k?^tiseRngJQool
zW`ZJSPH&)r(kSl#`j;?k_DVE1HHt)Q6D|1dKjN9Edi9P+A7Kn0Yp=+3{p$xdEc@7a
zSLdf@HPrp564h8Aukruxlb;?;I}GEEV$RC7*#4hi_E%hU&DO-U);Gb;szuAUSoc@l
z`I@%5O?TFxi0Rkd@LPE&F&c9a2!W(wR0KsdqlE1b-7Pk)z0O2q0y`hS|JK^N
zs&^K(qc?86hOlyl)%(p=Y7{53h{tVUd<27?C!q5gNJQW$?X)`5&K%uW
zVw))t7H91wJmHi{6U+s(_Kdszi|QZzg=H0lpd_E6bMp3dHSUNujFB4dn
zu^Z+tJO&dzHsEQjzWUmdR~g4$U-|}i{^$RbfBk#!)zAg(-hST)H?5!ZsdO|~>pM0Y
z>gttPbOix1;SG*a@2NhnYH31MeFLBw6Qg5DC941@orIIZ$OK?J(NJHpEMki(LD*Ni
znJM92f&sHe!ZvV<{b;F<33#6AJ#uP6yrzCOqNyngwNT)ergZwA^MghgMoeKXE)t2L
zAAbEv!T$aK{)fLhzUV!_MR))E
zzl*gimz#uDl=~0tQZXlbAJ}>mC@CwNr=w-|jBEbnFFzOg>rcJU)53y66p9>ZVIasw
zMN}f8N;tNEw^*}cx%v3Vz7To$`#0QC+g$Y;kW_0|ZIalqj)r$^XI~p?U%eIpAqZTE
zxD99*$c$sCw+9g+k@pB>ENL+;X@#}HP?i3?dc~{3e(eY$FxgfmSd=4+u%$vUN8+Lq
zhT}lpOjK^U4zQ~bx8jJ;_R*N_$FawLOxqv53oG2s99y$OOuK#yiMnVovUC6Cmhql=
z@W}_S-?-_DzOLg>%NZR@v|)u3rIB@#@GT#CF^Y;KHz3~e*0=JyKYWY+@%`WGsAx?5$IM03uW#M30x)hs
zrEw`zBvsET96CLM>KRLU=JJgMrw)iYK-UoJ5;kNa1tg+ov`|94HU>`_h{$;@J#i^)
zVT=&4Fp2780cIZ&GKl$k&_s@)JPZx=ub;PJ10ZY-B|;H~3$Kq*<`l*G$Z+x{$`otF
zWe_O~NCqqwz%~lSef#m_|N0`2^z>lay36VMkN%ZLZL5G|TM*O>;NJm!3qbF4T*32o
zL`{Wn6NQWqh!ety6OzpjC!RQA&3WA$*xdC^
z_DiD#<-xWke5GHQefz>UQ|2)JSrl!PT8PpTVAn_C)EOEd7&dO+u7k7|M%);f1JDz&{>{_FuTfgCb{){V2=y~(LPi`MJ#>K7frE_c9n`XZgIzhjAy|F+>c#Vy
z&wX<5fnBW&7R=DO(R0E!Azxoq`>@!DOOVS>^rc}K6c_L
z?b!JQcI?_oHO;Nmwqhf(hyjib1O*^7jHMkjxv`-UsH*8w@ihMRi(jFD38j1~q)Q?L
zG0BJcN;eL(jsQY{j|KuofK1`U$v!~ZNW>z`VzqVUOfLb3&$FqNTLzx9>8zW!CtkB(yL`pfD1kNuTG^Gu0~CW5d(4PYUY_$P!;u*}|lVL=j;
z5SwR;ZBJ$&5lf{JOT;M|kIQ5{DK*>P@IdCr69rrjS^1mR^2^45=c9jZZQH&_VZ2Dw
zHe7}rz!SL%fc;;trleuS$fCYeofzvMG|~XD?D@r99z^0*p->N$S@zh3y_|-jAmOov
zcw-xT5I}QFcQ#*wHny0*Xcefg4OG>FS(jad*^AeJjYM@ciFEsHYFc?EX0E-4hm|F|
zvjuC;`ZcO;c0*)-NBp0+-S_2(fBe1ARa~`kh5q`7J}eP1_C55_nS5bvSE!J!gSm?r
zqpk(7WkrZtaguBhCm^B?A{vMQNX8R1mKnx7-o5Y(i&rh&5J^USW5Xt!sPCb>c<;U)
zl&Vex)fM3Zu;hZXS%^{*kOJMOPC+R~$(u2rSAVIs*zjU|;Ur^9!*{
zV5j@#S}4hhbVXY#UU^&5b&*IpCZY;d8H}T~FoKp+4kN-`*yUoqqcErE3>{Zt?0R2|HDx
zI`O6V?!xLGcef~KwUXA(d
zHxbz}L?RKeF=fz(Ip0zIie2oX-k>H60t&=on$(vS7*;K)n7%Fy
zQI=SmtP7g+V-f=}$&pQyN`4l=HsZ;OvWE=t$alZV-QAsNnzw*n^T&Uw5UH^ciH&l8
z{MubR_WsHC?Rzpr(xT7|5luO{$t##tjku`gp{#BJ2owq>6iObKN+n$?mb3~2)HF28
zNM$XJ7wDUVXU11j$FieueB&+FQ$M;xp>;l`+ZH35NO7r<1-*#SUJzX*^>pETqYKhs
z=S7CYVKE^NiNf$W2F`RLGc*GD!E9++aNQDL>cXuCWxBfyv}x=}1TvC9iDE#ahD|8w
z*jE{;#o5DWMds`PP+~SE1t5uO%dbLp(=wdf*9&!I0I2Su#NsWq>MbAQMOWOyCyKD@
zR<1B>Zdwyud)@pi7PN`SzWOi!RKID#A{7kgq7jb3A^Sln7hpxTbLXI?efssk^XH$V
zx4-Unx=LwOLW2DyNHigum}S+}%{2Yzx<5F#qwT%vmO7Quo_*$A4|kvG<>AhAB#cJ=
z%<1LzZULsOni7owy?r=!@DQ@uB4<4h9(f>>8>;iNsLN$2YFr5Tuu+7~F7RA6!ApdB
z>O%V!cZ8F>UD+AJ0vid>)5Jz12=t&24^k?O^>qP$5rBW5XO9d(ajd-Z21se6=X59R
zx;Ba>>tQPD*i@t(*eY1RX7T#|f$q-c}o(>_FI+Ad2IGZ`_(7qV}*c-U^wfCj&2|VT75A`kpzs
z44)6VMJ<3O;0HiFhS42Q;KZJNsHkhDH@^2n8g;D}8d`cGA{%xeI`Y8sRcoz{Tec9w
zV(b4XE~9c&Sk