From 12318f13859aaf47eb903a6d849bc32884204a56 Mon Sep 17 00:00:00 2001 From: Aleksey Semikozov Date: Tue, 4 Aug 2026 12:00:15 -0300 Subject: [PATCH] =?UTF-8?q?Scheduler:=20Multilevel=20grouping=20=E2=80=94?= =?UTF-8?q?=20Writing=20Demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Angular/app/app.component.css | 23 ++ .../Angular/app/app.component.html | 36 +++ .../Angular/app/app.component.ts | 215 ++++++++++++++++ .../Angular/app/app.service.ts | 194 +++++++++++++++ .../MultilevelGrouping/Angular/index.html | 26 ++ .../MultilevelGrouping/React/App.tsx | 212 ++++++++++++++++ .../MultilevelGrouping/React/data.ts | 171 +++++++++++++ .../MultilevelGrouping/React/index.html | 24 ++ .../MultilevelGrouping/React/index.tsx | 9 + .../MultilevelGrouping/React/styles.css | 23 ++ .../MultilevelGrouping/ReactJs/App.js | 162 ++++++++++++ .../MultilevelGrouping/ReactJs/data.js | 202 +++++++++++++++ .../MultilevelGrouping/ReactJs/index.html | 44 ++++ .../MultilevelGrouping/ReactJs/index.js | 5 + .../MultilevelGrouping/ReactJs/styles.css | 23 ++ .../Scheduler/MultilevelGrouping/Vue/App.vue | 231 ++++++++++++++++++ .../Scheduler/MultilevelGrouping/Vue/data.ts | 159 ++++++++++++ .../MultilevelGrouping/Vue/index.html | 27 ++ .../Scheduler/MultilevelGrouping/Vue/index.ts | 4 + .../MultilevelGrouping/jQuery/data.js | 159 ++++++++++++ .../MultilevelGrouping/jQuery/index.html | 20 ++ .../MultilevelGrouping/jQuery/index.js | 181 ++++++++++++++ .../MultilevelGrouping/jQuery/styles.css | 23 ++ apps/demos/menuMeta.json | 6 + ...MultilevelGrouping (fluent.blue.light).png | Bin 0 -> 93276 bytes ...ltilevelGrouping (material.blue.light).png | Bin 0 -> 75124 bytes 26 files changed, 2179 insertions(+) create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.css create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.ts create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.service.ts create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/index.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/React/App.tsx create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/React/data.ts create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.tsx create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/React/styles.css create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/App.js create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/data.js create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.js create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/styles.css create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/App.vue create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/data.ts create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.ts create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/data.js create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.html create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.js create mode 100644 apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/styles.css create mode 100644 apps/demos/testing/etalons/Scheduler-MultilevelGrouping (fluent.blue.light).png create mode 100644 apps/demos/testing/etalons/Scheduler-MultilevelGrouping (material.blue.light).png diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.css b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.css new file mode 100644 index 000000000000..5e50b8f8a105 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.css @@ -0,0 +1,23 @@ +::ng-deep .dx-scheduler-cell-sizes-horizontal { + width: 100px; +} + +::ng-deep .dx-scheduler-group-header { + min-width: 120px; +} + +::ng-deep .dx-scheduler-group-header, +::ng-deep .dx-scheduler-header-panel-empty-cell, +::ng-deep .dx-scheduler-work-space-vertical-group-table, +::ng-deep .dx-scheduler-work-space-vertical-grouped .dx-scheduler-time-panel-cell, +::ng-deep .dx-scheduler-work-space-grouped:not(.dx-scheduler-work-space-vertical-grouped) + .dx-scheduler-header-panel-cell { + background-color: var(--dx-color-main-bg); +} + +::ng-deep .dx-scheduler-group-header, +::ng-deep .dx-scheduler-group-header .dx-scheduler-group-header-content { + font-size: 11px; + font-weight: 600; + line-height: 16px; +} diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.html new file mode 100644 index 000000000000..92d182da6bbc --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.html @@ -0,0 +1,36 @@ + + + + + + + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.ts b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.ts new file mode 100644 index 000000000000..ed0e1d8f7cc6 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.component.ts @@ -0,0 +1,215 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { Component, enableProdMode, provideZoneChangeDetection } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { DxSchedulerModule } from 'devextreme-angular'; +import { DxSchedulerTypes } from 'devextreme-angular/ui/scheduler'; +import { Appointment, Assignee, Service } from './app.service'; + +type Form = DxSchedulerTypes.AppointmentFormOpeningEvent['form']; +type FormItem = { + name?: string; + dataField?: string; + items?: FormItem[]; + [key: string]: unknown; +}; +type FoundItem = { list: FormItem[]; index: number } | null; + +if (!/localhost/.test(document.location.host)) { + enableProdMode(); +} + +let modulePrefix = ''; +// @ts-ignore +if (window && window.config?.packageConfigPaths) { + modulePrefix = '/app'; +} + +@Component({ + selector: 'demo-app', + templateUrl: `.${modulePrefix}/app.component.html`, + styleUrls: [`.${modulePrefix}/app.component.css`], + providers: [Service], + imports: [ + CommonModule, + DxSchedulerModule, + ], +}) +export class AppComponent { + appointments: Appointment[]; + + assignees: Assignee[]; + + rooms: Assignee[]; + + groups: string[] = ['assigneeId']; + + currentDate: Date = new Date(2026, 6, 13); + + constructor(service: Service) { + this.appointments = service.getAppointments(); + this.assignees = service.getAssignees(); + this.rooms = this.assignees.filter((item) => item.parentId === null); + } + + employeesOf(roomId: string | null): Assignee[] { + return this.assignees.filter((item) => item.parentId === roomId); + } + + roomOf(assigneeId: number | undefined): string | null { + return this.assignees.find((item) => item.id === assigneeId)?.parentId ?? null; + } + + findItem(items: FormItem[], predicate: (item: FormItem) => boolean): FoundItem { + for (let i = 0; i < items.length; i += 1) { + if (predicate(items[i])) { + return { list: items, index: i }; + } + + const nested = items[i].items; + + if (nested) { + const found = this.findItem(nested, predicate); + + if (found) { + return found; + } + } + } + + return null; + } + + createRoomGroup(form: Form, roomId: string | null): FormItem { + return { + itemType: 'group', + name: 'roomGroup', + cssClass: 'dx-scheduler-form-group-with-icon', + colCount: 2, + colCountByScreen: { xs: 2 }, + items: [ + { + colSpan: 1, + name: 'roomIcon', + cssClass: 'dx-scheduler-form-icon', + template: () => '
', + }, + { + itemType: 'simple', + name: 'roomEditor', + colSpan: 1, + label: { visible: false }, + editorType: 'dxSelectBox', + editorOptions: { + dataSource: this.rooms, + displayExpr: 'shortText', + valueExpr: 'id', + value: roomId, + placeholder: 'Room', + stylingMode: form.getEditor('assigneeId')?.option('stylingMode'), + onValueChanged: (e) => { + const editor = form.getEditor('assigneeId'); + + editor?.option('dataSource', e.value ? this.employeesOf(e.value) : []); + editor?.option('value', []); + }, + }, + }, + ], + }; + } + + renderEmployeeTag(data: { text: string; color?: string }) { + const tag = document.createElement('div'); + + tag.className = 'dx-tag-content'; + tag.style.backgroundColor = data.color ?? ''; + tag.style.borderColor = data.color ?? 'transparent'; + tag.textContent = data.text; + + const removeButton = document.createElement('div'); + + removeButton.className = 'dx-tag-remove-button'; + tag.appendChild(removeButton); + + return tag; + } + + hideLabels(items: FormItem[]) { + items.forEach((item) => { + if (item.items) { + this.hideLabels(item.items); + } else if (item.dataField !== 'allDay') { + item.label = { ...(item.label as object), visible: false }; + } + }); + } + + roomIdOf( + appointmentData: DxSchedulerTypes.AppointmentFormOpeningEvent['appointmentData'], + ): string | null { + const assigneeIds = appointmentData?.assigneeId as number | number[] | undefined; + const [assigneeId] = Array.isArray(assigneeIds) ? assigneeIds : [assigneeIds]; + + return this.roomOf(assigneeId); + } + + requireEmployee(items: FormItem[]) { + const found = this.findItem(items, (item) => item.dataField === 'assigneeId'); + + if (!found) { + return; + } + + const item = found.list[found.index]; + + item.validationRules = [{ type: 'required', message: 'Employee is required' }]; + item.editorOptions = { + ...(item.editorOptions as object), + tagTemplate: this.renderEmployeeTag, + }; + } + + hideGroup(items: FormItem[], name: string) { + const found = this.findItem(items, (item) => item.name === name); + + if (found) { + found.list[found.index].visible = false; + } + } + + onOptionChanged(e: DxSchedulerTypes.OptionChangedEvent) { + if (e.name === 'currentView') { + e.component.option('crossScrollingEnabled', e.value === 'Horizontal Grouping'); + } + } + + onAppointmentFormOpening(e: DxSchedulerTypes.AppointmentFormOpeningEvent) { + const { form } = e; + const items = form.option('items') as FormItem[]; + + if (this.findItem(items, (item) => item.name === 'roomGroup')) { + return; + } + + const roomId = this.roomIdOf(e.appointmentData); + const mainGroup = items.find((item) => item.name === 'mainGroup'); + const employee = this.findItem(items, (item) => item.name === 'assigneeIdGroup'); + const repeatValue = form.getEditor('repeatEditor')?.option('value'); + + employee?.list.splice(employee.index, 0, this.createRoomGroup(form, roomId)); + this.hideLabels(mainGroup?.items ?? []); + this.requireEmployee(items); + this.hideGroup(items, 'descriptionGroup'); + + form.option('items', items.slice()); + + form.getEditor('repeatEditor')?.option('value', repeatValue); + form.getEditor('assigneeId')?.option('dataSource', roomId ? this.employeesOf(roomId) : []); + } +} + +bootstrapApplication(AppComponent, { + providers: [ + provideZoneChangeDetection({ eventCoalescing: true, runCoalescing: true }), + ], +}); diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.service.ts b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.service.ts new file mode 100644 index 000000000000..eda9a2100084 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/app/app.service.ts @@ -0,0 +1,194 @@ +import { Injectable } from '@angular/core'; + +export class Appointment { + text: string; + + assigneeId: number[]; + + startDate: Date; + + endDate: Date; +} + +export class Assignee { + id: number | string; + + text: string; + + parentId: string | null; + + shortText?: string; + + color?: string; +} + +const assignees: Assignee[] = [ + { + id: 'room-1', text: '🏢 Room 1', shortText: 'Room 1', parentId: null, + }, + { + id: 1, text: 'Samantha Bright', parentId: 'room-1', color: '#A7E3A5', + }, + { + id: 2, text: 'John Heart', parentId: 'room-1', color: '#F9E2AE', + }, + { + id: 'room-2', text: '🏢 Room 2', shortText: 'Room 2', parentId: null, + }, + { + id: 3, text: 'Todd Hoffman', parentId: 'room-2', color: '#F1BBBC', + }, + { + id: 4, text: 'Sandra Johnson', parentId: 'room-2', color: '#CFE4FA', + }, +]; + +const appointments: Appointment[] = [ + { + text: 'Upgrade Personal Computers', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'Install New Database', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Install New Router in Dev Room', + assigneeId: [1], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 15), + }, { + text: 'Brochure Design Review', + assigneeId: [1], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 13, 30), + }, { + text: 'Book Flights to San Fran for Sales Trip', + assigneeId: [1], + startDate: new Date(2026, 6, 16, 10, 0), + endDate: new Date(2026, 6, 16, 12, 0), + }, { + text: 'Upgrade Server Hardware', + assigneeId: [1], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, { + text: 'Google AdWords Strategy', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 9, 0), + endDate: new Date(2026, 6, 13, 12, 0), + }, { + text: 'Rollout of New Website and Marketing Brochures', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Update NDA Agreement', + assigneeId: [2], + startDate: new Date(2026, 6, 14, 11, 0), + endDate: new Date(2026, 6, 14, 14, 15), + }, { + text: 'Submit Questions Regarding New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 10, 0), + endDate: new Date(2026, 6, 15, 11, 30), + }, { + text: 'Submit Signed NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 13, 0), + endDate: new Date(2026, 6, 15, 15, 0), + }, { + text: 'Review Training Course for any Omissions', + assigneeId: [2], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 14, 0), + }, { + text: 'Update Employee Files with New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 11, 45), + }, { + text: 'Website Re-Design Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'New Brochures', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 15), + }, { + text: 'Approve Personal Computer Upgrade Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 10, 0), + endDate: new Date(2026, 6, 14, 11, 0), + }, { + text: 'Final Budget Review', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 12, 0), + endDate: new Date(2026, 6, 14, 13, 35), + }, { + text: 'Approve New Online Marketing Strategy', + assigneeId: [3], + startDate: new Date(2026, 6, 15, 12, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Prepare 2026 Marketing Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 13, 30), + }, { + text: 'Create Icons for Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 10, 0), + endDate: new Date(2026, 6, 17, 11, 30), + }, { + text: 'Launch New Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 12, 20), + endDate: new Date(2026, 6, 17, 14, 0), + }, { + text: 'Comment on Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 13, 10, 0), + endDate: new Date(2026, 6, 13, 13, 0), + }, { + text: 'Approve Hiring of John Jeffers', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 0), + }, { + text: 'Non-Compete Agreements', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 13, 0), + endDate: new Date(2026, 6, 14, 15, 45), + }, { + text: 'Review Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Review Changes to Health Insurance Coverage', + assigneeId: [4], + startDate: new Date(2026, 6, 16, 9, 0), + endDate: new Date(2026, 6, 16, 13, 0), + }, { + text: 'Provide New Health Insurance Docs', + assigneeId: [4], + startDate: new Date(2026, 6, 17, 12, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, +]; + +@Injectable() +export class Service { + getAppointments(): Appointment[] { + return appointments; + } + + getAssignees(): Assignee[] { + return assignees; + } +} diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/index.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/index.html new file mode 100644 index 000000000000..1ab1fb54a1df --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Angular/index.html @@ -0,0 +1,26 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + + + +
+ Loading... +
+ + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/React/App.tsx b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/App.tsx new file mode 100644 index 000000000000..5e48ffb84e92 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/App.tsx @@ -0,0 +1,212 @@ +import React, { useCallback, useState } from 'react'; + +import Scheduler, { Resource, View } from 'devextreme-react/scheduler'; +import type { SchedulerTypes } from 'devextreme-react/scheduler'; +import { appointments, assignees } from './data.ts'; + +const currentDate = new Date(2026, 6, 13); + +const groups = ['assigneeId']; + +type Form = SchedulerTypes.AppointmentFormOpeningEvent['form']; +type FormItem = { + name?: string; + dataField?: string; + items?: FormItem[]; + [key: string]: unknown; +}; +type FoundItem = { list: FormItem[]; index: number } | null; + +const rooms = assignees.filter((item) => item.parentId === null); + +const employeesOf = (roomId: string | null) => assignees + .filter((item) => item.parentId === roomId); + +const roomOf = (assigneeId: number | undefined): string | null => assignees + .find((item) => item.id === assigneeId)?.parentId ?? null; + +const findItem = (items: FormItem[], predicate: (item: FormItem) => boolean): FoundItem => { + for (let i = 0; i < items.length; i += 1) { + if (predicate(items[i])) { + return { list: items, index: i }; + } + + const nested = items[i].items; + + if (nested) { + const found = findItem(nested, predicate); + + if (found) { + return found; + } + } + } + + return null; +}; + +const createRoomGroup = (form: Form, roomId: string | null): FormItem => ({ + itemType: 'group', + name: 'roomGroup', + cssClass: 'dx-scheduler-form-group-with-icon', + colCount: 2, + colCountByScreen: { xs: 2 }, + items: [ + { + colSpan: 1, + name: 'roomIcon', + cssClass: 'dx-scheduler-form-icon', + template: () => '
', + }, + { + itemType: 'simple', + name: 'roomEditor', + colSpan: 1, + label: { visible: false }, + editorType: 'dxSelectBox', + editorOptions: { + dataSource: rooms, + displayExpr: 'shortText', + valueExpr: 'id', + value: roomId, + placeholder: 'Room', + stylingMode: form.getEditor('assigneeId')?.option('stylingMode'), + onValueChanged(e: { value: string }) { + const editor = form.getEditor('assigneeId'); + + editor?.option('dataSource', e.value ? employeesOf(e.value) : []); + editor?.option('value', []); + }, + }, + }, + ], +}); + +const renderEmployeeTag = (data: { text: string; color?: string }) => { + const tag = document.createElement('div'); + + tag.className = 'dx-tag-content'; + tag.style.backgroundColor = data.color ?? ''; + tag.style.borderColor = data.color ?? 'transparent'; + tag.textContent = data.text; + + const removeButton = document.createElement('div'); + + removeButton.className = 'dx-tag-remove-button'; + tag.appendChild(removeButton); + + return tag; +}; + +const hideLabels = (items: FormItem[]) => { + items.forEach((item) => { + if (item.items) { + hideLabels(item.items); + } else if (item.dataField !== 'allDay') { + item.label = { ...(item.label as object), visible: false }; + } + }); +}; + +const roomIdOf = ( + appointmentData: SchedulerTypes.AppointmentFormOpeningEvent['appointmentData'], +): string | null => { + const assigneeIds = appointmentData?.assigneeId as number | number[] | undefined; + const [assigneeId] = Array.isArray(assigneeIds) ? assigneeIds : [assigneeIds]; + + return roomOf(assigneeId); +}; + +const requireEmployee = (items: FormItem[]) => { + const found = findItem(items, (item) => item.dataField === 'assigneeId'); + + if (!found) { + return; + } + + const item = found.list[found.index]; + + item.validationRules = [{ type: 'required', message: 'Employee is required' }]; + item.editorOptions = { ...(item.editorOptions as object), tagTemplate: renderEmployeeTag }; +}; + +const hideGroup = (items: FormItem[], name: string) => { + const found = findItem(items, (item) => item.name === name); + + if (found) { + found.list[found.index].visible = false; + } +}; + +const onAppointmentFormOpening = (e: SchedulerTypes.AppointmentFormOpeningEvent) => { + const { form } = e; + const items = form.option('items') as FormItem[]; + + if (findItem(items, (item) => item.name === 'roomGroup')) { + return; + } + + const roomId = roomIdOf(e.appointmentData); + const mainGroup = items.find((item) => item.name === 'mainGroup'); + const employee = findItem(items, (item) => item.name === 'assigneeIdGroup'); + const repeatValue = form.getEditor('repeatEditor')?.option('value'); + + employee?.list.splice(employee.index, 0, createRoomGroup(form, roomId)); + hideLabels(mainGroup?.items ?? []); + requireEmployee(items); + hideGroup(items, 'descriptionGroup'); + + form.option('items', items.slice()); + + form.getEditor('repeatEditor')?.option('value', repeatValue); + form.getEditor('assigneeId')?.option('dataSource', roomId ? employeesOf(roomId) : []); +}; + +const App = () => { + const [crossScrollingEnabled, setCrossScrollingEnabled] = useState(false); + + const onOptionChanged = useCallback((e: SchedulerTypes.OptionChangedEvent) => { + if (e.name === 'currentView') { + setCrossScrollingEnabled(e.value === 'Horizontal Grouping'); + } + }, []); + + return ( + + + + + + ); +}; + +export default App; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/React/data.ts b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/data.ts new file mode 100644 index 000000000000..03e0ea45df7a --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/data.ts @@ -0,0 +1,171 @@ +import type { SchedulerTypes } from 'devextreme-react/scheduler'; + +type Appointment = SchedulerTypes.Appointment & { assigneeId: number[] }; + +type Assignee = { + id: number | string; + text: string; + parentId: string | null; + shortText?: string; + color?: string; +}; + +export const assignees: Assignee[] = [ + { + id: 'room-1', text: '🏢 Room 1', shortText: 'Room 1', parentId: null, + }, + { + id: 1, text: 'Samantha Bright', parentId: 'room-1', color: '#A7E3A5', + }, + { + id: 2, text: 'John Heart', parentId: 'room-1', color: '#F9E2AE', + }, + { + id: 'room-2', text: '🏢 Room 2', shortText: 'Room 2', parentId: null, + }, + { + id: 3, text: 'Todd Hoffman', parentId: 'room-2', color: '#F1BBBC', + }, + { + id: 4, text: 'Sandra Johnson', parentId: 'room-2', color: '#CFE4FA', + }, +]; + +export const appointments: Appointment[] = [ + { + text: 'Upgrade Personal Computers', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'Install New Database', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Install New Router in Dev Room', + assigneeId: [1], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 15), + }, { + text: 'Brochure Design Review', + assigneeId: [1], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 13, 30), + }, { + text: 'Book Flights to San Fran for Sales Trip', + assigneeId: [1], + startDate: new Date(2026, 6, 16, 10, 0), + endDate: new Date(2026, 6, 16, 12, 0), + }, { + text: 'Upgrade Server Hardware', + assigneeId: [1], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, { + text: 'Google AdWords Strategy', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 9, 0), + endDate: new Date(2026, 6, 13, 12, 0), + }, { + text: 'Rollout of New Website and Marketing Brochures', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Update NDA Agreement', + assigneeId: [2], + startDate: new Date(2026, 6, 14, 11, 0), + endDate: new Date(2026, 6, 14, 14, 15), + }, { + text: 'Submit Questions Regarding New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 10, 0), + endDate: new Date(2026, 6, 15, 11, 30), + }, { + text: 'Submit Signed NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 13, 0), + endDate: new Date(2026, 6, 15, 15, 0), + }, { + text: 'Review Training Course for any Omissions', + assigneeId: [2], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 14, 0), + }, { + text: 'Update Employee Files with New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 11, 45), + }, { + text: 'Website Re-Design Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'New Brochures', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 15), + }, { + text: 'Approve Personal Computer Upgrade Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 10, 0), + endDate: new Date(2026, 6, 14, 11, 0), + }, { + text: 'Final Budget Review', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 12, 0), + endDate: new Date(2026, 6, 14, 13, 35), + }, { + text: 'Approve New Online Marketing Strategy', + assigneeId: [3], + startDate: new Date(2026, 6, 15, 12, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Prepare 2026 Marketing Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 13, 30), + }, { + text: 'Create Icons for Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 10, 0), + endDate: new Date(2026, 6, 17, 11, 30), + }, { + text: 'Launch New Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 12, 20), + endDate: new Date(2026, 6, 17, 14, 0), + }, { + text: 'Comment on Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 13, 10, 0), + endDate: new Date(2026, 6, 13, 13, 0), + }, { + text: 'Approve Hiring of John Jeffers', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 0), + }, { + text: 'Non-Compete Agreements', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 13, 0), + endDate: new Date(2026, 6, 14, 15, 45), + }, { + text: 'Review Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Review Changes to Health Insurance Coverage', + assigneeId: [4], + startDate: new Date(2026, 6, 16, 9, 0), + endDate: new Date(2026, 6, 16, 13, 0), + }, { + text: 'Provide New Health Insurance Docs', + assigneeId: [4], + startDate: new Date(2026, 6, 17, 12, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, +]; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.html new file mode 100644 index 000000000000..ee451f8288ff --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.html @@ -0,0 +1,24 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.tsx b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.tsx new file mode 100644 index 000000000000..8acbec4b6179 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/index.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; + +import App from './App.tsx'; + +ReactDOM.render( + , + document.getElementById('app'), +); diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/React/styles.css b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/styles.css new file mode 100644 index 000000000000..2fdf6823a33d --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/React/styles.css @@ -0,0 +1,23 @@ +.dx-scheduler-cell-sizes-horizontal { + width: 100px; +} + +.dx-scheduler-group-header { + min-width: 120px; +} + +.dx-scheduler-group-header, +.dx-scheduler-header-panel-empty-cell, +.dx-scheduler-work-space-vertical-group-table, +.dx-scheduler-work-space-vertical-grouped .dx-scheduler-time-panel-cell, +.dx-scheduler-work-space-grouped:not(.dx-scheduler-work-space-vertical-grouped) + .dx-scheduler-header-panel-cell { + background-color: var(--dx-color-main-bg); +} + +.dx-scheduler-group-header, +.dx-scheduler-group-header .dx-scheduler-group-header-content { + font-size: 11px; + font-weight: 600; + line-height: 16px; +} diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/App.js b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/App.js new file mode 100644 index 000000000000..591be721b788 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/App.js @@ -0,0 +1,162 @@ +import React, { useCallback, useState } from 'react'; +import Scheduler, { Resource, View } from 'devextreme-react/scheduler'; +import { appointments, assignees } from './data.js'; + +const currentDate = new Date(2026, 6, 13); +const groups = ['assigneeId']; +const rooms = assignees.filter((item) => item.parentId === null); +const employeesOf = (roomId) => assignees.filter((item) => item.parentId === roomId); +const roomOf = (assigneeId) => assignees.find((item) => item.id === assigneeId)?.parentId ?? null; +const findItem = (items, predicate) => { + for (let i = 0; i < items.length; i += 1) { + if (predicate(items[i])) { + return { list: items, index: i }; + } + const nested = items[i].items; + if (nested) { + const found = findItem(nested, predicate); + if (found) { + return found; + } + } + } + return null; +}; +const createRoomGroup = (form, roomId) => ({ + itemType: 'group', + name: 'roomGroup', + cssClass: 'dx-scheduler-form-group-with-icon', + colCount: 2, + colCountByScreen: { xs: 2 }, + items: [ + { + colSpan: 1, + name: 'roomIcon', + cssClass: 'dx-scheduler-form-icon', + template: () => '
', + }, + { + itemType: 'simple', + name: 'roomEditor', + colSpan: 1, + label: { visible: false }, + editorType: 'dxSelectBox', + editorOptions: { + dataSource: rooms, + displayExpr: 'shortText', + valueExpr: 'id', + value: roomId, + placeholder: 'Room', + stylingMode: form.getEditor('assigneeId')?.option('stylingMode'), + onValueChanged(e) { + const editor = form.getEditor('assigneeId'); + editor?.option('dataSource', e.value ? employeesOf(e.value) : []); + editor?.option('value', []); + }, + }, + }, + ], +}); +const renderEmployeeTag = (data) => { + const tag = document.createElement('div'); + tag.className = 'dx-tag-content'; + tag.style.backgroundColor = data.color ?? ''; + tag.style.borderColor = data.color ?? 'transparent'; + tag.textContent = data.text; + const removeButton = document.createElement('div'); + removeButton.className = 'dx-tag-remove-button'; + tag.appendChild(removeButton); + return tag; +}; +const hideLabels = (items) => { + items.forEach((item) => { + if (item.items) { + hideLabels(item.items); + } else if (item.dataField !== 'allDay') { + item.label = { ...item.label, visible: false }; + } + }); +}; +const roomIdOf = (appointmentData) => { + const assigneeIds = appointmentData?.assigneeId; + const [assigneeId] = Array.isArray(assigneeIds) ? assigneeIds : [assigneeIds]; + return roomOf(assigneeId); +}; +const requireEmployee = (items) => { + const found = findItem(items, (item) => item.dataField === 'assigneeId'); + if (!found) { + return; + } + const item = found.list[found.index]; + item.validationRules = [{ type: 'required', message: 'Employee is required' }]; + item.editorOptions = { ...item.editorOptions, tagTemplate: renderEmployeeTag }; +}; +const hideGroup = (items, name) => { + const found = findItem(items, (item) => item.name === name); + if (found) { + found.list[found.index].visible = false; + } +}; +const onAppointmentFormOpening = (e) => { + const { form } = e; + const items = form.option('items'); + if (findItem(items, (item) => item.name === 'roomGroup')) { + return; + } + const roomId = roomIdOf(e.appointmentData); + const mainGroup = items.find((item) => item.name === 'mainGroup'); + const employee = findItem(items, (item) => item.name === 'assigneeIdGroup'); + const repeatValue = form.getEditor('repeatEditor')?.option('value'); + employee?.list.splice(employee.index, 0, createRoomGroup(form, roomId)); + hideLabels(mainGroup?.items ?? []); + requireEmployee(items); + hideGroup(items, 'descriptionGroup'); + form.option('items', items.slice()); + form.getEditor('repeatEditor')?.option('value', repeatValue); + form.getEditor('assigneeId')?.option('dataSource', roomId ? employeesOf(roomId) : []); +}; +const App = () => { + const [crossScrollingEnabled, setCrossScrollingEnabled] = useState(false); + const onOptionChanged = useCallback((e) => { + if (e.name === 'currentView') { + setCrossScrollingEnabled(e.value === 'Horizontal Grouping'); + } + }, []); + return ( + + + + + + ); +}; +export default App; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/data.js b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/data.js new file mode 100644 index 000000000000..4c73285e8f2e --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/data.js @@ -0,0 +1,202 @@ +export const assignees = [ + { + id: 'room-1', + text: '🏢 Room 1', + shortText: 'Room 1', + parentId: null, + }, + { + id: 1, + text: 'Samantha Bright', + parentId: 'room-1', + color: '#A7E3A5', + }, + { + id: 2, + text: 'John Heart', + parentId: 'room-1', + color: '#F9E2AE', + }, + { + id: 'room-2', + text: '🏢 Room 2', + shortText: 'Room 2', + parentId: null, + }, + { + id: 3, + text: 'Todd Hoffman', + parentId: 'room-2', + color: '#F1BBBC', + }, + { + id: 4, + text: 'Sandra Johnson', + parentId: 'room-2', + color: '#CFE4FA', + }, +]; +export const appointments = [ + { + text: 'Upgrade Personal Computers', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, + { + text: 'Install New Database', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, + { + text: 'Install New Router in Dev Room', + assigneeId: [1], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 15), + }, + { + text: 'Brochure Design Review', + assigneeId: [1], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 13, 30), + }, + { + text: 'Book Flights to San Fran for Sales Trip', + assigneeId: [1], + startDate: new Date(2026, 6, 16, 10, 0), + endDate: new Date(2026, 6, 16, 12, 0), + }, + { + text: 'Upgrade Server Hardware', + assigneeId: [1], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, + { + text: 'Google AdWords Strategy', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 9, 0), + endDate: new Date(2026, 6, 13, 12, 0), + }, + { + text: 'Rollout of New Website and Marketing Brochures', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, + { + text: 'Update NDA Agreement', + assigneeId: [2], + startDate: new Date(2026, 6, 14, 11, 0), + endDate: new Date(2026, 6, 14, 14, 15), + }, + { + text: 'Submit Questions Regarding New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 10, 0), + endDate: new Date(2026, 6, 15, 11, 30), + }, + { + text: 'Submit Signed NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 13, 0), + endDate: new Date(2026, 6, 15, 15, 0), + }, + { + text: 'Review Training Course for any Omissions', + assigneeId: [2], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 14, 0), + }, + { + text: 'Update Employee Files with New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 11, 45), + }, + { + text: 'Website Re-Design Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, + { + text: 'New Brochures', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 15), + }, + { + text: 'Approve Personal Computer Upgrade Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 10, 0), + endDate: new Date(2026, 6, 14, 11, 0), + }, + { + text: 'Final Budget Review', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 12, 0), + endDate: new Date(2026, 6, 14, 13, 35), + }, + { + text: 'Approve New Online Marketing Strategy', + assigneeId: [3], + startDate: new Date(2026, 6, 15, 12, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, + { + text: 'Prepare 2026 Marketing Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 13, 30), + }, + { + text: 'Create Icons for Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 10, 0), + endDate: new Date(2026, 6, 17, 11, 30), + }, + { + text: 'Launch New Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 12, 20), + endDate: new Date(2026, 6, 17, 14, 0), + }, + { + text: 'Comment on Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 13, 10, 0), + endDate: new Date(2026, 6, 13, 13, 0), + }, + { + text: 'Approve Hiring of John Jeffers', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 0), + }, + { + text: 'Non-Compete Agreements', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 13, 0), + endDate: new Date(2026, 6, 14, 15, 45), + }, + { + text: 'Review Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, + { + text: 'Review Changes to Health Insurance Coverage', + assigneeId: [4], + startDate: new Date(2026, 6, 16, 9, 0), + endDate: new Date(2026, 6, 16, 13, 0), + }, + { + text: 'Provide New Health Insurance Docs', + assigneeId: [4], + startDate: new Date(2026, 6, 17, 12, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, +]; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.html new file mode 100644 index 000000000000..db31b0fd60c6 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.html @@ -0,0 +1,44 @@ + + + + DevExtreme Demo + + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.js b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.js new file mode 100644 index 000000000000..b853e0be8242 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/index.js @@ -0,0 +1,5 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App.js'; + +ReactDOM.render(, document.getElementById('app')); diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/styles.css b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/styles.css new file mode 100644 index 000000000000..2fdf6823a33d --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/ReactJs/styles.css @@ -0,0 +1,23 @@ +.dx-scheduler-cell-sizes-horizontal { + width: 100px; +} + +.dx-scheduler-group-header { + min-width: 120px; +} + +.dx-scheduler-group-header, +.dx-scheduler-header-panel-empty-cell, +.dx-scheduler-work-space-vertical-group-table, +.dx-scheduler-work-space-vertical-grouped .dx-scheduler-time-panel-cell, +.dx-scheduler-work-space-grouped:not(.dx-scheduler-work-space-vertical-grouped) + .dx-scheduler-header-panel-cell { + background-color: var(--dx-color-main-bg); +} + +.dx-scheduler-group-header, +.dx-scheduler-group-header .dx-scheduler-group-header-content { + font-size: 11px; + font-weight: 600; + line-height: 16px; +} diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/App.vue b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/App.vue new file mode 100644 index 000000000000..f175c07e53f6 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/App.vue @@ -0,0 +1,231 @@ + + + + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/data.ts b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/data.ts new file mode 100644 index 000000000000..6a9ffea09cb4 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/data.ts @@ -0,0 +1,159 @@ +export const assignees = [ + { + id: 'room-1', text: '🏢 Room 1', shortText: 'Room 1', parentId: null, + }, + { + id: 1, text: 'Samantha Bright', parentId: 'room-1', color: '#A7E3A5', + }, + { + id: 2, text: 'John Heart', parentId: 'room-1', color: '#F9E2AE', + }, + { + id: 'room-2', text: '🏢 Room 2', shortText: 'Room 2', parentId: null, + }, + { + id: 3, text: 'Todd Hoffman', parentId: 'room-2', color: '#F1BBBC', + }, + { + id: 4, text: 'Sandra Johnson', parentId: 'room-2', color: '#CFE4FA', + }, +]; + +export const appointments = [ + { + text: 'Upgrade Personal Computers', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'Install New Database', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Install New Router in Dev Room', + assigneeId: [1], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 15), + }, { + text: 'Brochure Design Review', + assigneeId: [1], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 13, 30), + }, { + text: 'Book Flights to San Fran for Sales Trip', + assigneeId: [1], + startDate: new Date(2026, 6, 16, 10, 0), + endDate: new Date(2026, 6, 16, 12, 0), + }, { + text: 'Upgrade Server Hardware', + assigneeId: [1], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, { + text: 'Google AdWords Strategy', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 9, 0), + endDate: new Date(2026, 6, 13, 12, 0), + }, { + text: 'Rollout of New Website and Marketing Brochures', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Update NDA Agreement', + assigneeId: [2], + startDate: new Date(2026, 6, 14, 11, 0), + endDate: new Date(2026, 6, 14, 14, 15), + }, { + text: 'Submit Questions Regarding New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 10, 0), + endDate: new Date(2026, 6, 15, 11, 30), + }, { + text: 'Submit Signed NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 13, 0), + endDate: new Date(2026, 6, 15, 15, 0), + }, { + text: 'Review Training Course for any Omissions', + assigneeId: [2], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 14, 0), + }, { + text: 'Update Employee Files with New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 11, 45), + }, { + text: 'Website Re-Design Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'New Brochures', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 15), + }, { + text: 'Approve Personal Computer Upgrade Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 10, 0), + endDate: new Date(2026, 6, 14, 11, 0), + }, { + text: 'Final Budget Review', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 12, 0), + endDate: new Date(2026, 6, 14, 13, 35), + }, { + text: 'Approve New Online Marketing Strategy', + assigneeId: [3], + startDate: new Date(2026, 6, 15, 12, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Prepare 2026 Marketing Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 13, 30), + }, { + text: 'Create Icons for Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 10, 0), + endDate: new Date(2026, 6, 17, 11, 30), + }, { + text: 'Launch New Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 12, 20), + endDate: new Date(2026, 6, 17, 14, 0), + }, { + text: 'Comment on Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 13, 10, 0), + endDate: new Date(2026, 6, 13, 13, 0), + }, { + text: 'Approve Hiring of John Jeffers', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 0), + }, { + text: 'Non-Compete Agreements', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 13, 0), + endDate: new Date(2026, 6, 14, 15, 45), + }, { + text: 'Review Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Review Changes to Health Insurance Coverage', + assigneeId: [4], + startDate: new Date(2026, 6, 16, 9, 0), + endDate: new Date(2026, 6, 16, 13, 0), + }, { + text: 'Provide New Health Insurance Docs', + assigneeId: [4], + startDate: new Date(2026, 6, 17, 12, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, +]; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.html new file mode 100644 index 000000000000..c90687f1390f --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.html @@ -0,0 +1,27 @@ + + + + DevExtreme Demo + + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.ts b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.ts new file mode 100644 index 000000000000..684d04215d72 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/Vue/index.ts @@ -0,0 +1,4 @@ +import { createApp } from 'vue'; +import App from './App.vue'; + +createApp(App).mount('#app'); diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/data.js b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/data.js new file mode 100644 index 000000000000..fddf43749178 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/data.js @@ -0,0 +1,159 @@ +const assignees = [ + { + id: 'room-1', text: '🏢 Room 1', shortText: 'Room 1', parentId: null, + }, + { + id: 1, text: 'Samantha Bright', parentId: 'room-1', color: '#A7E3A5', + }, + { + id: 2, text: 'John Heart', parentId: 'room-1', color: '#F9E2AE', + }, + { + id: 'room-2', text: '🏢 Room 2', shortText: 'Room 2', parentId: null, + }, + { + id: 3, text: 'Todd Hoffman', parentId: 'room-2', color: '#F1BBBC', + }, + { + id: 4, text: 'Sandra Johnson', parentId: 'room-2', color: '#CFE4FA', + }, +]; + +const appointments = [ + { + text: 'Upgrade Personal Computers', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'Install New Database', + assigneeId: [1], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Install New Router in Dev Room', + assigneeId: [1], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 15), + }, { + text: 'Brochure Design Review', + assigneeId: [1], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 13, 30), + }, { + text: 'Book Flights to San Fran for Sales Trip', + assigneeId: [1], + startDate: new Date(2026, 6, 16, 10, 0), + endDate: new Date(2026, 6, 16, 12, 0), + }, { + text: 'Upgrade Server Hardware', + assigneeId: [1], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, { + text: 'Google AdWords Strategy', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 9, 0), + endDate: new Date(2026, 6, 13, 12, 0), + }, { + text: 'Rollout of New Website and Marketing Brochures', + assigneeId: [2], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 30), + }, { + text: 'Update NDA Agreement', + assigneeId: [2], + startDate: new Date(2026, 6, 14, 11, 0), + endDate: new Date(2026, 6, 14, 14, 15), + }, { + text: 'Submit Questions Regarding New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 10, 0), + endDate: new Date(2026, 6, 15, 11, 30), + }, { + text: 'Submit Signed NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 15, 13, 0), + endDate: new Date(2026, 6, 15, 15, 0), + }, { + text: 'Review Training Course for any Omissions', + assigneeId: [2], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 14, 0), + }, { + text: 'Update Employee Files with New NDA', + assigneeId: [2], + startDate: new Date(2026, 6, 17, 9, 0), + endDate: new Date(2026, 6, 17, 11, 45), + }, { + text: 'Website Re-Design Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 9, 30), + endDate: new Date(2026, 6, 13, 11, 30), + }, { + text: 'New Brochures', + assigneeId: [3], + startDate: new Date(2026, 6, 13, 13, 0), + endDate: new Date(2026, 6, 13, 15, 15), + }, { + text: 'Approve Personal Computer Upgrade Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 10, 0), + endDate: new Date(2026, 6, 14, 11, 0), + }, { + text: 'Final Budget Review', + assigneeId: [3], + startDate: new Date(2026, 6, 14, 12, 0), + endDate: new Date(2026, 6, 14, 13, 35), + }, { + text: 'Approve New Online Marketing Strategy', + assigneeId: [3], + startDate: new Date(2026, 6, 15, 12, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Prepare 2026 Marketing Plan', + assigneeId: [3], + startDate: new Date(2026, 6, 16, 11, 0), + endDate: new Date(2026, 6, 16, 13, 30), + }, { + text: 'Create Icons for Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 10, 0), + endDate: new Date(2026, 6, 17, 11, 30), + }, { + text: 'Launch New Website', + assigneeId: [3], + startDate: new Date(2026, 6, 17, 12, 20), + endDate: new Date(2026, 6, 17, 14, 0), + }, { + text: 'Comment on Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 13, 10, 0), + endDate: new Date(2026, 6, 13, 13, 0), + }, { + text: 'Approve Hiring of John Jeffers', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 9, 0), + endDate: new Date(2026, 6, 14, 12, 0), + }, { + text: 'Non-Compete Agreements', + assigneeId: [4], + startDate: new Date(2026, 6, 14, 13, 0), + endDate: new Date(2026, 6, 14, 15, 45), + }, { + text: 'Review Revenue Projections', + assigneeId: [4], + startDate: new Date(2026, 6, 15, 11, 0), + endDate: new Date(2026, 6, 15, 14, 0), + }, { + text: 'Review Changes to Health Insurance Coverage', + assigneeId: [4], + startDate: new Date(2026, 6, 16, 9, 0), + endDate: new Date(2026, 6, 16, 13, 0), + }, { + text: 'Provide New Health Insurance Docs', + assigneeId: [4], + startDate: new Date(2026, 6, 17, 12, 0), + endDate: new Date(2026, 6, 17, 15, 0), + }, +]; diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.html b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.html new file mode 100644 index 000000000000..2ae8d3e24cc1 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.html @@ -0,0 +1,20 @@ + + + + DevExtreme Demo + + + + + + + + + + + +
+
+
+ + diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.js b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.js new file mode 100644 index 000000000000..4688be6bd2a7 --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/index.js @@ -0,0 +1,181 @@ +const rooms = assignees.filter((item) => item.parentId === null); + +const employeesOf = (roomId) => assignees.filter((item) => item.parentId === roomId); + +const roomOf = (assigneeId) => { + const employee = assignees.find((item) => item.id === assigneeId); + + return employee ? employee.parentId : null; +}; + +const findItem = (items, predicate) => { + for (let i = 0; i < items.length; i += 1) { + if (predicate(items[i])) { + return { list: items, index: i }; + } + + if (items[i].items) { + const found = findItem(items[i].items, predicate); + + if (found) { + return found; + } + } + } + + return null; +}; + +const createRoomGroup = (form, roomId) => ({ + itemType: 'group', + name: 'roomGroup', + cssClass: 'dx-scheduler-form-group-with-icon', + colCount: 2, + colCountByScreen: { xs: 2 }, + items: [ + { + colSpan: 1, + name: 'roomIcon', + cssClass: 'dx-scheduler-form-icon', + template: () => $('
').addClass('dx-icon dx-icon-conferenceroomoutline'), + }, + { + itemType: 'simple', + name: 'roomEditor', + colSpan: 1, + label: { visible: false }, + editorType: 'dxSelectBox', + editorOptions: { + dataSource: rooms, + displayExpr: 'shortText', + valueExpr: 'id', + value: roomId, + placeholder: 'Room', + stylingMode: form.getEditor('assigneeId')?.option('stylingMode'), + onValueChanged(e) { + const editor = form.getEditor('assigneeId'); + + editor?.option('dataSource', e.value ? employeesOf(e.value) : []); + editor?.option('value', []); + }, + }, + }, + ], +}); + +const renderEmployeeTag = (data) => { + const tag = document.createElement('div'); + + tag.className = 'dx-tag-content'; + tag.style.backgroundColor = data.color ?? ''; + tag.style.borderColor = data.color ?? 'transparent'; + tag.textContent = data.text; + + const removeButton = document.createElement('div'); + + removeButton.className = 'dx-tag-remove-button'; + tag.appendChild(removeButton); + + return tag; +}; + +const hideLabels = (items) => { + items.forEach((item) => { + if (item.items) { + hideLabels(item.items); + } else if (item.dataField !== 'allDay') { + item.label = { ...item.label, visible: false }; + } + }); +}; + +const roomIdOf = (appointmentData) => { + const assigneeIds = appointmentData?.assigneeId; + const [assigneeId] = Array.isArray(assigneeIds) ? assigneeIds : [assigneeIds]; + + return roomOf(assigneeId); +}; + +const requireEmployee = (items) => { + const found = findItem(items, (item) => item.dataField === 'assigneeId'); + + if (!found) { + return; + } + + const item = found.list[found.index]; + + item.validationRules = [{ type: 'required', message: 'Employee is required' }]; + item.editorOptions = { ...item.editorOptions, tagTemplate: renderEmployeeTag }; +}; + +const hideGroup = (items, name) => { + const found = findItem(items, (item) => item.name === name); + + if (found) { + found.list[found.index].visible = false; + } +}; + +$(() => { + $('#scheduler').dxScheduler({ + dataSource: appointments, + views: [{ + type: 'workWeek', + name: 'Vertical Grouping', + groupOrientation: 'vertical', + cellDuration: 60, + }, { + type: 'workWeek', + name: 'Horizontal Grouping', + groupOrientation: 'horizontal', + }], + currentView: 'Vertical Grouping', + currentDate: new Date(2026, 6, 13), + startDayHour: 9, + endDayHour: 16, + groups: ['assigneeId'], + resources: [ + { + fieldExpr: 'assigneeId', + dataSource: assignees, + parentIdExpr: 'parentId', + label: 'Employee', + allowMultiple: true, + icon: 'user', + }, + ], + crossScrollingEnabled: false, + showAllDayPanel: false, + showCurrentTimeIndicator: false, + height: 700, + onOptionChanged(e) { + if (e.name === 'currentView') { + e.component.option('crossScrollingEnabled', e.value === 'Horizontal Grouping'); + } + }, + onAppointmentFormOpening(e) { + const { form } = e; + const items = form.option('items'); + + if (findItem(items, (item) => item.name === 'roomGroup')) { + return; + } + + const roomId = roomIdOf(e.appointmentData); + const mainGroup = items.find((item) => item.name === 'mainGroup'); + const employee = findItem(items, (item) => item.name === 'assigneeIdGroup'); + const repeatValue = form.getEditor('repeatEditor')?.option('value'); + + employee?.list.splice(employee.index, 0, createRoomGroup(form, roomId)); + hideLabels(mainGroup?.items ?? []); + requireEmployee(items); + hideGroup(items, 'descriptionGroup'); + + form.option('items', items.slice()); + + form.getEditor('repeatEditor')?.option('value', repeatValue); + form.getEditor('assigneeId')?.option('dataSource', roomId ? employeesOf(roomId) : []); + }, + }); +}); diff --git a/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/styles.css b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/styles.css new file mode 100644 index 000000000000..2fdf6823a33d --- /dev/null +++ b/apps/demos/Demos/Scheduler/MultilevelGrouping/jQuery/styles.css @@ -0,0 +1,23 @@ +.dx-scheduler-cell-sizes-horizontal { + width: 100px; +} + +.dx-scheduler-group-header { + min-width: 120px; +} + +.dx-scheduler-group-header, +.dx-scheduler-header-panel-empty-cell, +.dx-scheduler-work-space-vertical-group-table, +.dx-scheduler-work-space-vertical-grouped .dx-scheduler-time-panel-cell, +.dx-scheduler-work-space-grouped:not(.dx-scheduler-work-space-vertical-grouped) + .dx-scheduler-header-panel-cell { + background-color: var(--dx-color-main-bg); +} + +.dx-scheduler-group-header, +.dx-scheduler-group-header .dx-scheduler-group-header-content { + font-size: 11px; + font-weight: 600; + line-height: 16px; +} diff --git a/apps/demos/menuMeta.json b/apps/demos/menuMeta.json index 615934456789..ca85a670ba07 100644 --- a/apps/demos/menuMeta.json +++ b/apps/demos/menuMeta.json @@ -3927,6 +3927,12 @@ "/Models/SampleData/GroupByDateTasks.cs" ], "DemoType": "Web" + }, + { + "Title": "Multilevel Grouping", + "Name": "MultilevelGrouping", + "Widget": "Scheduler", + "DemoType": "Web" } ] }, diff --git a/apps/demos/testing/etalons/Scheduler-MultilevelGrouping (fluent.blue.light).png b/apps/demos/testing/etalons/Scheduler-MultilevelGrouping (fluent.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..08978424426609c834a7c77ed96b845b3bf7aa3b GIT binary patch literal 93276 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 R8E9ZAd1)1?atTBK{|(szL9_q> literal 0 HcmV?d00001 diff --git a/apps/demos/testing/etalons/Scheduler-MultilevelGrouping (material.blue.light).png b/apps/demos/testing/etalons/Scheduler-MultilevelGrouping (material.blue.light).png new file mode 100644 index 0000000000000000000000000000000000000000..6fe5dc8aad5f185458638867ee431facb5ed666c GIT binary patch literal 75124 zcmdSBbyQs2w>6jq3j~Ki0R<#D1S`CP1$PLN;99s-xCeJB2yP)kLV}YZf#6k0VS(W8 za3R4hSRd}a?>FAp-DA8S{r%H@Mp2_Uwa?z`?7h}pbIr3M=B2s<0UkBpy?gfvloVyP z?%l)K0)C!6#0Jh(gA~Q@-FtISNmfe7=l*VovE!?=kh4o3QUBRsQA>XUk>8;mr__-d z;xPsJa!T(jc6XbT~=G@>e@sidBr*JlRU)3Z)g#@1Rw8&VP1QiUY@E;MA z{Cyzg(xheoIVgIm;i#|7n=|2F&}j{MiE~dp=aKx7v~^C|q<5FK#|2MV0)9Y1E|E;|ph$k?l(Ev-lI{ zzPqL|wN}u@pwD{V!E@R=G?a1MjYv&44iZkfp7gx3)u!mO8c=oL8p+x9{Vnq0^JLAY z8%|eCmXg=?5qcN2`r!A5g5(w6;$MnxcJAOHZp)(u_WFRM`(BckjbKqoUoX$%N^c}* zlCxgyGRL6mQK!3Leh~L^S|7iFkkwRU2W*qxM<&pSc}diyd>srJ5Qs7Xt+V1RteW8))(1w=S86cc zxq$Fc*J40^%;jY5p6Ijf-hG>~E5Eb7tw7xT^HYo~9~q2EOY7_|7;C1jf%0T5Holnx zWBtt$C~Bh0>el=9C}R1~fF7ZkBr36t=U_jq;)_+|yOcgFX}5PU^n5}Ig@xDgEYk5GY^>rzOhrNpzV|BCEY?< zPt{%bB~7dxHY85P7L*Mmk;44Qs)E2Ydhq!hZ#`E^jeWPVmi;=JfSq=MGs&r;%9H)h zBbVCJV~zwaQ*&UID233=n+}dNz8SjK(48BvAv9<4)TQZ^NS`micKq%&hQGeDu1ajq zkMlxCv6G`S^ZAVP3>V8Re1&P>CEnTWY<5aogUoerN&mFc8(4NF&TVYLIXmIiUqn~u zi>5XemsYXQwBqTXcWO%p(@zA(1YgLf_qo2!!y&AzD9eKXD2(vsPdAmMIjq2N7rSz$ znWfW5m7EIP%{m)8Gs#?#zOYqg;XUFw_XIW0Dr_3?E z)K7e7HQMD>$whdUK1y9^e?RQ=)WsUdgtb|mD7qu~nvn;b-RUK0)>y3#5|V7qr?(~x zIv#7dC?a>FMcb~n#7ri-Z_P71UZIqQ>Rr`PNp!Hab^UL2`pAt5@`2o?$zf!?)hwHH z|7dT|AmqVW>!|6`Ikhd~hE!cJ;gX45ZRfz0>DOZm2yn z-oE^y>ZQcC z*7|;2&y=v;R0}t9d6J9ktjh8zmK+Gi@9F!^HSE3I#SYhebhc{l69eRJK{p_U?3t-= z>?)6VZ)S4h!P&4?#?MnfpZ6?NCe^r%R{I)fcU7^*+oabX+`I;^a+?_7B-0*KRaJ%A zwGXJ)++M)IL-jStyp5$DZB@%Uv2PuPTwMyg2jSOMs(kVo#=+wQ-8(&0roXl3M&g%; z5F0Eu|M5H6WyaLeFHc8jwVK9JkHBk*Q%e)8ow_~uec`Iww9Ba@pJxCzXjro+iMJAF zuI{^k5IAJdvW}f?l|~Q^@(BqcMZ9auzTfXc7H#`k5*WV`_X|a5*X#y6=jvwH?)tg1 zM>;@y&K-KD^s`DDgO~va=M|LmT{PTv5q9)tQ=uu~OWRLX?wqlXN-#|CJXqbO_KgeM z$=UV|*RWgq;S`J(*_>uapOaha3Xi1RXW@jAB^xiQszmy-8_ZeHWSTiTQeVDIS7^BA zTFtd7f}L5@;`+p#GskMDFEfwP{Y!(W<6j1-ne@MND}2>M{7d|0@DT-0 zrxJ>u?+awGkk>q3zFz!oaRe6N(>86TdKYi{j*aI;{j7evR&UJ&47|*o80kBxN4K?+H=1KLDBi=6>YJ7+229esQXc$ep1u$VpZKa#jxC_hN zztsvh@}@sHUKvm_BCWm*(1O_FcT>KfbZv*PdM=$vISIkGo>fTE(#`ThQ2&5p&+a;G8C z%bAzgGc@pW!D10EGc2QTz~>GCA!?`}Y}ov|w#+kKh9{wxQEZU#$?TW#zEqoc+jKYU zm!>5Rj0t&}mTMUPGE`7S$fBnn)zxfxQd}~9b8W+1Wq1`vSrX&)R;`81A71wfR z2XN(Yu02n|c`GB$?&ZF&1R9b*2NEo9ed5KV)ay11Upd;T9Uv8d)U+n3sqNL>zU-Wu z%&`;m%MGjZuGyA~O2p3)f=%Ck)(jGz?X6cx|A7jH?&4>v#u5oyYY9B?vQ8Y%tl7OC zXZt&98PT?|g#mJ$)iK@+3DHxQxmnD;+<-^vi|F1ncOVk}=48T=b}p+mrwvmFGj4=x zUuvN4p@CI{Z<<5%PX!+B+72XcO1wL`Y1@d{E4TRd(_iem>NZY14dyssoh_I<)))Yl z^n(*1Pp~nr&S&jdZnp(Z^nTTB-sSN(c`K;)}uM(vEnx9WX3 zAM>8N&I#|ycPvK4^>V{D&-PYpUZZ)uZZ%pTvw)**e9cZcFAL(Jie!t|t;0l#O8=$}%`Ge9u*KiF7%N^mifh0P6lp;TVKj)+FB2yLODz^E)JX+$rY!h`pp~63RJAUc=>2t_u z;lW3eqTLN9*~>Ro3&YyR1i6Cz0BTfUnJ6y~AK31Iqw<5(Sn~s;@^~s%mbvut|4#KX zmg%(@9nI4hN8y36F%QVlqrJ}Sc_$A+ewV}p;f2)^&M$+ie1~^GsCEca{Q7?Z?}VME{%u!7SO%H%}Ik?xnp16u1wDA%?^m63nxo59s9Kc zT-mt>3~S;mjH&v0Sisqtt0C5vs@fRFXd1ndyFfrMnp--i9Av$oX{ts63EV(C8B%WS zWQ$))mGhvaL`1|Z8}+z?TvxdI-Jr3u;U6bdqZa#fx_-z5^58#&3g<5w4cjiPf{tJE zM;gjx=e)9JH@poJ#3{JISnng6(tNHwc{Wj9#*7>^Py9jY;K=nI4N{pp|N3uEa1NsC zDp8oI-X_Tu@e5y(Y(tK-65AS~W7&O_H0E*EW#+VnBO#)eV7vT*a3I2vsll@aTBT1FdrXhWN_kOYn31ET%ZAyDGyu zp4{QL3v88VaVa8WVRdg5S7B65?7KO8q`SJ>ARG@Ae1?gm4p(<4qsgG5ZjvaqwuWMT z`BHSAY}a@A;?bsROHXC6e_CFRIXX;#rcpTyyLQm^uOh1e?C05ajqhFMpdu&4=Plv;0y2zHI-ky?H+Z{sKa7tb%6yGzuA z@HK#gN@f+FD?X#8;_kmW07(X%g2;>=rkaq25m0rt0XUxRK#|@^Z`4MkmebCxkH{sr ze=yY#5r0ZUIum(?$hb_{)yR&c|7l=+TlzdwXofF$($Ur>@_J7l0>N;~g0dtUqMG6= z*9kxr1CXFC&wBAo36v@Nw*`$8)esu=&ETCF6nT#CVfiLCy-(lPPW{KkIyxtW2; z6BhfN?>K#-^-C>ixo_Ayjr<*j4^E=;_YI|NlpY*(v^VWs&|UZ-CNzk#L$js#JwCBa z04JwV42iTF{qnVF*%MtDqc7A@WNw|!c)(edF*@;fMW(b7Pg@(D^`_jR*SgU!OTcN6 z_u@A$%K9B+m#5;7gO`bj4bDru;wdZMIfK!;HPs#tuRtQ74WhR_3)VaQ)tml1Q*+rC zZg*4gaB=2ZsH!?V!L&I^JgH$ceR(6p?wu9taQ0TDlgLop(IKj9SmDac3paQ&jX7ue zk1Ery?>2_*txA2R%aWF=J4Vap{dLn;bwe+~9Gj%Nor~0wV@gM7jk zHWcs0DBGn5+>VPdsbaYLte8q&&}zE&TS#1%$RC!)dB6gJulvVg1o3UBbgKjCB0HDi z(H|{u2Y2{)C3uG_H#4-1B-ENxc(aV0mINOBo}jajXOA7AAOS# zx}tYEI$kKg+V8-YH;sh~JmNBnBd0a~ytO`YSIRwqU9;og&L8{^+%`C2v&6b+_>XMi zC15ezc8v(D1Hg0qzrd3q%i8ZIh&IZ*Z73=DreGJ=K`JEC5=ooHiF6g;5COOL@hlj3 zZg4%*9~&tC`sMJ$UPV*^ow@h+V=oN-GoJGdR(G+9Yzrv`T^z~ATg+SHRw(JukC;jTFF(ir#o)6_*C+|>fq zkAK;>ew9eL3*|Xm_89n!<= zjN-ar#tFOP`-B?TIaZUwN88KVd@Ae`zVxZXbmp6NRn<7X^}#U(0qz7j*&zgM47`)!rZsGd}N*c@4PaJ^KML;y@aoy4M?Hc*!m#Rw@`TXOlp96AVoq8dM zg8~}2VjG6TEd+DOE}|Pj(VL*h4*V}z&=W2JF&NE@)_2oc7k;`+%58bPF1#h)-qP%I z{&{EmP-o_5?ie*hjn-@A!>>*IvSX9O?UrN1Yt9C>M0NQiHU$lc?TxkJH zAYffHUF=a|+wNMtktyN~9UoOSj2zC++Ss2WFRfMCwpVk{U#Gl16>UA4(F!_Df__t1 z4{Lt=6)<2J?1i0~z0%t}A_D23xV<4vFuh!y()Hk-qxt`^ zt^^B%^wIIolRklJFHelW85&tH@cD#q0xme};bGatFgWNT;BF4Qd%9j{=WH7+4vee( z7@ZlAv!d2({uZLr51OdtHEM&ROaszbgCx*E2u=U=2o?8VTvq%;7j(R@h3}m%&;T0C zE`Ed zNxYy#Q{5vyg=|qZYQ$`~oiTFZ*5>h@wG4;8wq|3irq*P_dT2hs0wZ~zl>b36{(r12 z|9`Au_Oq8&lmANPh+&QFXCu?oG0}6a|M)_*QIg;Hp-@2omaSCyZek+^L<_^@CzGnW zcXf4Sh#k$UN&UMEdQU!1?ii{6?`iJ;FJ?wwcFk`(llNhbNq)=bKCTc8zI3_nlRYX~ zZjP9Tp~+K+?ASb}?cM|o88$JY$=&GH=3J}QWL~d>K*}yL8nQ@8;@&D%#UR zl=4#s_;*Lum)zRaWu*ENPjS(2<@?W89-Gy@!mRqqr`R4Za0c4;K*Uiz*2Oedi4LvR4Pbx|N%pb2A57i1j*qDws0HxlIAL%RfRK4Ae z7XQdmHCLpuQtG!+Vn%6cPtU#^U`7W@HYRMZ*(bjP(o4%35#39$yt0X}`LYY1nD9V) z2XO|Lu>8O$6V|2E8O;VVcXiEtg6$~l>ysSPVa{PL%f$xa)nloRHe2N=){2;dr&qiJ z(Up;62vzcliAjTyKR+=?Mm_7MXbOW?#wpo%Q#gW2sR}|}qCa3NM!(0LbcehEzXfq% z$+{(&Sw{1JK1 z!V(QW{LWos0Y$U?Bn{hy=E8a}xYzAvL!- zy|n#}YhV?<&zff@_fwkZ_VlyCM{I5(t(+`K%eKR2VRt=O;W21+i`} zKY_cUL_j&jhC|9Jn4D%}aPDpd(uXd8(}MVZk9#2nX){!;ODrtI{bK}4BORfcQ9-U! zG^wjN(XhLoS-i^7*Po%(xJN0`yvo(lM)?pz6bs-%DNOg{qI(}JF*3jzsVF7)Nc1wK zhwh~x;Rk6DEx(KjxsTJsqSuhq8X8p?*(=v15n=Sg*Eac+c|NkXeTmXPMx_h?RM(Y2 zPgujHDr#;zerLIfP-xR!q~`$cqaL5(E`s*)ploJOiv)fA2I5Ryl&RWW@%ARe&j5j3 z-3X5G2^nyFI9ka!58*{Wm|v zb^LQ-*xU?|L>@gC6(wn+JMqi=`ypyVbT8%5k{=y|E?R_}j?w~{L4<<^*l2i}KOS)O zXro7~jXu%QMtT3kv(vkN+U1{`udG~hM?SNJy*E(J?bcge65+1gS$U4#Br~09z=c{1 z5bOG?V)4Gawq1m-GHgzh)2%{&cWvLeYn{1UGjtsfbaz{M9V{eYdsi-?;L5zOxJnis zZf*qd(i+HDgZRD+pU6jb5KYG>KWqR?dMg-!fj5z;aH+I+)Wj%?)icDAF@6R~)LVsq z9eW7n+Mi?cIFC*6+EB9W{c-!WC((-gTfc{weIp$#9OCf_G!vlc9jbS2vvSVCLX{-g zuRe_@_fo@=K>?HNa7P_;pK9fS$NPSutv!^SvuQe8xmE=>=2y_1*sMDg+?57I;ydYL zYOOe~O%VM1wc~JeZ{E|G2cO0{q=*qqKjsU%j_@f{!mT2epQeAdgdd-}uq8i*zrL;VY|7M;4;rPnv{u(=XPS-lD^0%`l2 zbyW3F4n`f=S|WlN3o!Q06Xiyh7$k%DbDAj3@i+Fwq=uDQ2^{!D8D-49dA;)Czz9!@ zC=4aM6T?=YG$h}RtVo(pMOQ}5Y?Q-fS)@~9eSh`G{G@`$(6X3{4i`j>G-WDUnYnup zy~@z=m`0N;jV%h2PJ@hkI`ag+W5ny6lxU$V4z}$pwU}5H^i(m_$5aI zv26N|6_7q;9y6fzQ73(yfmgXvJKsdGn~bNU?aO4L@ij)`tcyJ_^PiF7;1i`kNcpfl4q(ny0x92%v;=MzEa*GXNRjhy)Ob49E& zZtgXy{Z|nBL0HZaFjTHVmKL%5prfo+k#x5htlePEE1g(Q&|(NusnMFuYV$x|`6;e$ zzeOr0T5NS?6YfI@$Ei_DV5`ktU0OdP4@hd{Q)OQ1XTD#&jEAtw2W~FIVxjAacVsx= zx&Q)f1RVO(m%c6`@17G$XZuKM(0)#S2&DV8A|Urj#jhr#y;Fxb58SyUeU)Ccr&Tin zrirblpqq>`<1zru3i;YS@c_H&y9l%(G=tT2{{a7pQ**$xS~iX36Nwqz!&?+{{S9VQ zAXWV8viBwVp)b7BJcK}|@^y;d5F88+o3jH#a(G}d3Ja2kr`w_RS?3|yM$_75 z{n(CZZyvJmg1klSA~eY+(SI^%`Gb2MkfPv$se)FPs z3agTKQp0t^GOU=^rT&yu$~*P~5Nf5z53QNXP^=c$jgMa*O-C5gXx<689HoCz>6I#ltGZ;MD?#Lv-T&)-cFSg+aEy9D#0I;mY+hnGIZXYba%h+?m;Ehxs53;l<&?i|v z!w*J4i$jrUqnONh)TI2wC+z3k@SQs*o_dHEczkv?*7iMVA^*WeZd?bc!qc>6bNNn8 z#G_b@{&nId((lY1m=_?9iSD~>y1A7Q5i>l-jv((676QeB#Y)I zs-BkNPo&ngNkidTy!YoGAoIc4h+#yZ<~~53fn-9`M9iAeCxJY~VnM!ySO_MDRxtlaT!1U?8{?-cc|fx+&?EfLY#j9Jv!K$ZE=x%l-ZKlR>2u zDwOz9jzp83#89>}q{Gb^{}E|QHv>F>S%xBReFfZutZuh(3hiCLGhRh+Y2(p3Av{h6 zSerOEcc_szV{Lj-y4evoHo{lvy%wROo>>e>7yhfpA`vzSIq&e&QLURSKv_iyu@RE|65qqRj^TFouPt2J zo?y4+-~ZEWEGy9kP;zPJ2S)pFaUh2)M%$C5`=XHUw6a6)2XO8Z3iDKIbFPjvS_w4i zI0NTVeAp(nEcXy8)?@p0AVNEOq?~cs?{0@Me-o%WNH7ICDa~L&x(>(U&ffzRf+k+> zprO@rk$2QAM$r|o%EHsJP$vh#z#S)#d?I~urJ7VT_o;+Fy~HJ>08O%PGQi!G5|oMS z+I@WSpkZ@#z?QH%CZo1Dd#w*gSG7k&FntdB#7atj%OaJ z-dP#M@%Y+!45a7+{rB&>M_eN^vABc0=_nBzZh?MybT&vJiI9X&!4sJY(f9dSTk8Vr3bw41!%S zt**0E#I1>k^&+9?->>n{UvZ>yNWI;6L!GdDc#q|s0mR=3{2CXwK?RR^kT2!Ts4_IL zO8T!Z(fjN3-z2tgu!mFuk}kAN|e$2Fw1tp0T~VyQX#La9{8%H-Ru5<0Y)zd;*`3@9-3tm6iD4+uk>76mqw( zaBcyxgF#sOyNSY@JfNIJ8&v_PdlT-Yn2Q#mw9K0PFHwclR)4zlR`})?{%62$Z6ZUh zVgIE5HZM{K!}RTcq?uR${kHkh__x#N9IVzFPa0YWQt)qkGQKsj1`?ST0qxg;B?1_E zQ|kDRr>yhaKRVsp{H2K5uC-mv)l!uH_!m49gy?v83aE0?(w=#w*r}1J> z^1R#^2Y1Oa0R`FG;Tl-N0+4Pj_m6-J$N+RFrnw4Diu*?#+y(3a#(&SYa=d-F3x`)+ zeDL^Kpj4v(FkG>8k0G_sby)mtx0=Zq-IhX8#Mx;%uuB2zS2eyV3@n#pOq- z0MS=Y%bt}9)*yuPR1)%wh)FYlSv#C3Z#dIDHg2_b<6;t`Yu$YLjOZme{O0iCcPND# z_$}M3_Px`moc!dd;}g$SDhU+nE9Llb!ie8uEI^1QZp|-**;s^X#c%+MlLF~mP-3hj z&jxQmdcvppw;UtCMi*DjMOX=+y?us@;D1rDw@*T&Nz1NTBjLQzBl!32^{R0r1(l1n zS|r`GGZGW{XFY^@@-jE_(>{M(9PhsLZg3qotz1dq_de)IA-`Q6l$7Q`vNFqleN&B{ zU%j*Lp{luE~0pZ8hv2YHa8 zBl$};IJv)n@1?~2yss)bsXli*DVAV-LC?T!%o9-E)LOA8WHs9=+ccj2ZnkUL;Z7G8O18kITzkCrYmZSO zw7{cI{9z1PFY{w;Y;1NM2#fAJZ?j~H#ruXZOS3nHaK)8#50^cg>aA2AoNXSYkF)ew z(ooZ)DjJS1#_)6UOPsB}Q;}ih9*wo7fA`D1dk`QWgUMD$=9}{tLNQtuDoK~ApWsqa zfh|9RE#}3LH+M;>bNLs31YspX876K}O_DR~JDpD{Yq7^f$78Advg1#&u~je;PbcSl z+Rb>JJ>T3QK$A6?h^O-QW>oKkN7iS#k1Rfg$tjx?te%ZZHs*!Wkl_>Y z>V49xqq|tRA6dWYb`I8y`?>@g0=&}UBMYvc%FD`RkIgMlvT{#X@DK#M=S40rPX{$6 zOr*z+SBRnJ&2nlAwbWWN4+U=;NvMJJkoS3V4tllwzIkrxtd)s0SG-#QJwsgYpcU>Q zfy2el@nws|31R8^RT01G2EwYM#qG)$MRS`jeRO%1wAyA9dNgX6)MocB?z~%b0qP#< zo~`fe%}Ov96=QAPqvY^(RL;I!McIv}}Zg8)3 zZT?bd7gdSIFdT?;YxRNkqoT_Yy=s&T=c6;n@8vQVUXU^ z#t4(x*5WzcB5$)y`0nWZq>49p;pk$|i}6Ai+vN8&FR8&SikxmBQXPyHBg8_>QxKIU zuj}?UmsuwXP{X^4bf31Gr(E5Wx%N%zeU%MhuT*!ptM(rQaih{zNjsXQQaLBF%i>XxUyEfpCVu%6`qPb5tc~&9xHq z`*XQ{LO{=#Yg5fx&B+@Oxy}#Z#I7}4IX4UtLc2Qi|E;oC)(w(C>53g@zM`w-Q* zI7X>>O)%NBr71qBsRX=Lm7p$@;ts$fQ4czAdOXBshuHk=QW_2opp@W3%Veu%e7FGFwXARwb^ zo+Zy9)@itX1|r-J&^2GB+|_U@rBO;@+D87^O88~wFeSSR36r(N5ghuxgB0WM z_~Myq8I&?JA|;q})@V*Am1DiH9><5lO!YLrb^26Qr=aa09#} zaV8jOJ3VM{18hPl-m%RWd1lnkO1&eV80(fzlUsyUv{$))zQL^vwVIDFT7<=At)w@< zQJ@UmxHp|FKby54V%&pGUYz6ckXoIV=H*-G(ZV@AibCC;e1!%w_c`3`n(n!;79*j(%kY04amah*gWL-P3g8Qiaiaikw zRdU*8Q|M9X{9eHQB!E0&U1T|lT*b8?P#tJa!8hP%H+q~$K{3J~ePM#KalYQpsC_@m^h zRPwDY_%!&47^9+iv*c5P<~&G$m>xLm;`e;kato~Y`eos8tr0M#IgJQP%2UpIPcxD> zhfFMPJFI!k3d^+pB<~_3*XK+en^;rzOuEZ?X$R_s`qT9CCLC{=W#77SxqEu%drsD& z!T@%8;TYNMaBHUg^hu1IsZ|uT4@WSnA_ijd3zwVot0FRZaJGh`;O&sRq+%U^Q-+>H z=%d!CB||pOosIE@vnjG#wkE=+a|e7LDT01iKu>FR6%`t-(>UKADs6 z8_wSa#9;mCarnN+TP~bgm(kmOHu`zsU~*L9%ZIj=d0EOKL!|HZ~o`s>GgEZ_F$NzZ1SjNFMt)1C#q{H_s2E~%1; z_)FDQLXm&w68n2lME$ok+5;z}imM3!eqNViZ!>Jcjpy1r$*;G>qN+cQ6gz-ENk6w< z8UKurML0#6XPsF@h0=ND*ZGt@qRNUTO2lWEx0I-06YL7e>O~@D-*;-Gbk5|fj zXy=c~MN3-&^mdH9>Y4&o*7F`6uD-1);$`a5v)=6IJ$+}TnO{i-)| zA$gA<{jy#$$RfqUD_2JUwLV3%?S1{VoeXz9d0-=Bk1`MBi#%!~JlMX>2vhhXK8%m+oFV%q#8@4U=Kn5J)-J zXzzhn?wem=dv-c1Unh#oKN!>Mvn3?@M1NEUBNM8xd*!_?BHT1HlpNF0^rLZ*!Tirh z*Y5^Pm1Fmvq8E!4Ko7TdFo)$E-)8$N{<6`qh%}gAhPAB!@|vi!kxto`b+wGv z@@pI4=C>9Sbu-S0-tgv!b}Tsw58X{--_9&mHiw&uze@Pw;2imanc@N}dV;O%;E8{v z7J0%~z?o|^L%D_80dGwsPe;Urr=r_yUEr?<|I3>BmTXYBQ{HBm7p)Zihd}>nx>oh+ zzn=V!uAm=FCcnh!r-fpLx?7K(>!Yg1HeSJJ#Qy0tyzBCuM=9-VuFoNU_hAoi$ZhD6UkACCIZWYp4bXBOdno1In5q-dm#=E|MqF#oRqfpueRA2%=_0+?)2ME zTGRc<$|)6Pi;yQivW!JN51+UE1Sm#QJMM$4dybPfHS_Nl9BV9|IFg2UVm<^*F3o0s zP!Qn@N?!$d!0&y##C#F;o2^T*gbyibWu%V`OsCv=a0Y!I_?9e+sMg}Rmpzewz#>oT z4;=xm#8BV%8Px6YA&y2ZXW!J1RPgOQ2#ItX$`|PnamEaqq zdd(asx64Vx9|fYJS^l}L4Tk2g-9GQd{^oPEZ;l$uTbt@|FXtHbIG#GSRNd8& zqiqIMvAW8kv1hLCo%*Ean}7;J4gcjH0hK zq7;D>^AWe!ywMOktj6<>HRawOiJD~8WZ&=vynfiG+!w`F$VOtZM9Fp;8WkRv)CUW3-PeD*CF1_2`E=jQ^nuI| zUeDCX3Uga_)gMchJNwD5`*Qcfqp8?Q3qk&ueCM3njNK2T%kbhtmLS798)NX0&xKO; zsQQ}EXJ@;%1)E*3qvPoq$G#SXLDKEQJyN}TE#;no171(7honrQtrPmXdVw{-Sa7rJyiayVRw1GB-$zp6O_q3KpqlS&bA+wKDDV4J1@9&a}HZ|GE^&kao@Y2AX1omT(>qjn8 zj{;t{hE1H%UB-*5>Nt-v43w<7_{ubOw!PYeVSJnDc?0cDpAypgt#H-!90PF;j&8V^ z?PR9dvSzxbGyE<_X+I|L^Xciyug*_5MBH)4EwiZ`&KDTU%MDaXuP>^vs66wdvt8Vu zEW_QFT?S%#ujlt_cpf;Zmj5X@pQ5*JVU;U8z;c)P94^zvKBgsn@Oi;_>5oUu&ed14 z)j`Y1dU{st+cctCPfQKj!3JouYg6OCFp&Rd{d%ZQc@8&c#A+(frYO02HCv_Ptd!GD zPk$jDZ(`y)oKgSD+>Cp?bT0c15n{i3g9y84ubh@itxg^<{B_BU03LWHqB-a%pVck- zizR(8YnY;&9U>}z$yUvffqtsA_^R-wnH+b9OiI22@Chgm44Tj=kNT6Fd~=tS;Lkiu zHSgn`wij!=pu@6gOP4>JdS8P#wRU0}5d*_>AgBs?b;T3CD0zxG$B z!WYE|(*(qKF>CnRb%zka!V3$FzjqToNX^%#)WY40&Rc zv>C4?Ds_93S_dUo3CYrCzvvZ?O`g!XP+M^*OMbcOR7gkFFD%xo7;VCvLxwpdKaRfi zg5(P{8r(cP!{{)GJ>^GT)@vGHc^@YBd}6CA3PRJlA%Z`Pw{KiraY_u(^qC&YaFFAz z!J(}&{qE81`>};22gWEq@sBUO2bf3*KK!BUGA6M<8)C4=4iyv0FF}(>t7VD5AHt*%LQS{D;jc^Ki|VTZy}7FYI_XIhV0jL}HaxU)@WHrjxRYxYxm#@R;GF zrbnPfWQdid*#tMNa2ZE}nB~)7Y;P((NUY>CKYse~1gL1m=?k)*Nbp=3KX8jKSDmOiiIE=1VsO?4Yl}fyrF*poggfW0`m~BM}oe<#VIJKtdmto|MC$0q}_&qd1#|j*oSL0p)>Yj%uD=k z(tO{QY5-O;J*5V#0`MIR;Frdzg+xr!`rEq4xyI-;0uW^5O&K6w|hT<8RMOFRhjz zNB&-HEG1g2zgIl_-)yAWIy7H+7NCmznSbj$EvR1$6Ee>#^wO<@$=)QM@Eq2KRuYSw=ed742rDZlixmRbbh_&WzqVw)6`yHX2V z{ca71SQ(;w)jZcY_2&|i8~nPLkIn)@HW%0H`FnS^C97rbNz0Ilt@$v|%s2tJrIdy;*Tg-+MvW zdJmJPy6ns5{@CS3nB5OtZ~&IT;0s*q#)*Lg=fj38hdBmf?uT@Txz7Sd<7=wU+72Wy zDA**5H<*~Cczl1WaSM`Oy}vxWs$!?iAkLQTIr)pL--B(EXEcX;wY{A;owvQY3yH+y zZ0&cq@m(T>HDYmuT7~-UXiJQp9mNgM`wZfwaR`61q6Q=(ACGtpW9|$NVWpA<^LB}0 z)&*V{@1_8)Z|&tv1t|>a2LyN#51Nb!x7T&p$a~k}S8pHVVZocgl2#GYAx7L$OyWt> zh3&ByvIx;%vjLLtJ)#6S8)62@Vn^jv_1{1Cc_Xc-k*X7zJ;XrU8XP;S_MANAo$_=Y z$rU5pmO-|OahK<&K0c-fTlk5967v0u(18z7X-BiGe0h-c%KTe`01E+!I$6?YgYXH( zENu3okQ@)|H2@Dx+syz@lmiASjvld*;|-M6sXp_*@Y4L|nNUC34NH69+Sz(MTw}l4 zB!{0W^cX0<@vvwy_}?;=h&29jK1EXBLH477wD+gUKLj}&RE;0zza050@SXZg9+p9Q zsYBrLU)1UR8paQWC`x7(%`so~19g1`APZ2ZV&C<)sKQFEoT>x12X4%yr2rY_%Xpy@ zr1iY6DfH6i@vI$$xD;{^Y2N88;y6 z_+she(ZHo+?-6C@*#(7=XK63W@vk9_zXEjWXd4u9wr95#0s8XK>z0_o*0stVXYtH8 zo0zCkPoIHuQNHRg*9O0cW-nTz?NVh0AVv|xIl4_+xA@!Z)y{{>BM6me4d34`m zmHf>bP^5|WSrRCv1aZ7&a~piI?!d;PIrzegE3KLWspDfV9UIb59jj!N1Upp2@5BST zA4RLjkWS+3v_@Kxj^pc0XpggLzFLneC7oF5ewA1C;gjb3PyK!z=3KF5Pp&bx6h|kO z`QTfi9wHX@L<*=6=dezVe2q`+YH6ubw&3Ac&70v{#=a(Z?Vs{Qe0*A#E7z;JBH}TE zd?;H|ka&NLTe?2^Fz`PNE>p?taG>xN%&1sa-&-S+a`%?tEAqZn1u8)V({^!jN^}d# zRj-HSX{SYg8A^a4pErRdh%Ujxm++GXWU^IGpQ+cAAhkqJA-p|rB`iQLNwadF`(Mfd`_N?3B_vk#p!OOqOu%Spp?lgebklrM^8YjFj>OK9f8U_*FH|!K$E4{L%lpoU1qky^7>O51$ zR3i?}L3iO+Clx%1?4H-QM2h(NAtxNOX<35*qo4L7tGSk=IQ)uvOq-iUF*w`-c}g!|B{s17<< z$5nZc6#oj>uG4}pCubU|81>ZZ94Z_@!A*d$mxP8Am~aju??UE3wWqL$0&&ji066Mv~}Z94cOi9 z={`h}ZeOGzG!QoIpy&UfqKc1*KsI=7ELlZG3|BuB)FiYbYxJ488v;9Uf1ir>$=f%e zjJLw-z2aO@kVwfUzJcMsCAC>`1@bPb$76M|nxu8_P+v zPSu44sj3JOoumv!DdvX*ySm96rPGV}4^hFv@uk(+(|^!Ef^EetUOXT#N=*q1CxP|} z#)3X5710Pa(lU#d<_jh z6H*!9sFDCy&j06quNpi-kP;Fwkkh%Qf2bm;$dl+1ev3kI75mf1kWK?ylxVy&#TG>d z?#Wdq7Ici8-A8p`2S76o5eJ)WL2^Xi7t;?^;w4y4S(QL(iY6_+_#~QvF|J?)Q zNY+xMN}ka#XbLkq!d*rXbPROm+t;c9LI-`j=qlTM(EKe*6CTwY_LfdrvF;|&QOgVM zYg)fw{!~?6kX+ADj6(P2NCGI>3}YsED3BlYnfn47n?KwWYn@SfApi9EM!cy`*{*rT z9Q`6ilA<>9H200pao(p>*44weJ?PLT3>HZpF><5lx$<=yw%EU&fKIFcZy;A1FP-we zMwHwFe10o>hy-G$gu=`XBl?BLo3Igg2u2kNlZxsr8d4S4jrog5rmy7j5`zX3=m{m? zfa3DM>kJkgH|$nCSkx4wH87U?w&7~>F{>BL4z?}GjT*bVrsy-G?RQOU5A+!iSHMV@ ze$J_mnp7{bK&$F=Bo^%xL#VEr#-2jr)kTOvrf-nc8I6G-84E}LDivJ1oFH zSH!?<3Cd_`cJr%WambO8`U_VXnJIbP?*a9(G4Ml}vjEHE)x>y}BY*KBsS!~s?J-Id z>{?jjjw|hn&df!tD&eYl{%fr|X#HRMes-a=-vN~f;k zTcCZ)6T7h>$K0f%VfwedvgRNLdpjxVxO9Xx}ljUwA3mX2fMcz~r5Gs-uf%-DXS930LP81H795hB+)CNFHh*9wX- z(Eq_P#w!a_qw9+#_TPk$;*cL+WCdbkdil#zISBp*1~b~Ny`t#3lf+a+ensyGBWC-I z0!8PBYWRq|U5HW;j}P3F-kHKueq(LolmYx-+Aw*^~ z+mJr5@AT{Z;5oTpp zW~yw>W!vEOS4kN!WLB(`6dGia2eC^l`;!9#B?1CW6_6ppvi;X2R@2?et)XR87_e;f zy_lqWGylg$`la$UMja(sv^anoq^+WoWh((Ee@Ig)`T@UB1x<#xIm_RIhSglZgod0c z!{=9kM6XUkKWu>5Y{}(ED@Lfii7$(yDC8Bnl+r{}QQ5}!VUZ+)vd^q~A4x&OJJ`|4 zY|bah56WUG%4WRw_t5=TNhb&76S5@xHNC~x#Cx&+w5chgzl(7xFkYiHhMeVmgdgL& zD-F2SU-|+IachRE2;@;V1RPW%i9N=ce?|(iO-Eg7O?q*cePNJ+v2N9r#Ij)*4h$=1 zpQ;Og7x}W$E9W2bV2OHz{P&^?9+-QN3i*5p3A;)vV>jM)SzAsFAh9Vazo*7-_ z!cdOxhJSwG&C<0A)*O_bu+l!{Ea*Gj2|Q9DlXygZiX@=eY{EYu*4L!|dGyxCWw*Kg z0`Dx&NY9;xKrt6H;op9d>U7A zYU={Fb^_B(32ik__!Uk*O38TDj#q}$+Q5#~0Y^C5O+~UQsdZhG*Cq|=`^}+hm5Sup zG}p~vq8pYtO)mU-iRGR;hk<)n4JF-dKb%lvvG~&~3CtmXb)Y_fOgq)#i~AUCzt7zN zMu7u)FrJCiMoHVEhOr~~yQl;Pjl3tuj#tINX*l13pW&kX(=a@_<4 zGb16iby@~S{xE~y99^s6s#Yq@I#i??rfc}zIEFK=9=UM81CsU~q-ZWlM8KyNE1Z^d zQ~bj<8M$xJYdV5=o>pfy`p+4QaZvCu{4$H*5T2PU)$=HRA2@|`LQ};q%)}O)&))FK z5%bBdjfvKTBoc4mZz_TdlCz^t^fql0iRPvcWgd|_qrOm^0I?nu4U6YMv@|4FM~*nJ z=y4Fm&y`P)Sn+Cb63gJF5rAk_SA&&&(Us<5Is#xa;!L z--U{-EVv0;En?iT{cK7;-8@dHK=lKBM9Hca0?4U)2xqDp-pu3rdXcpd0_@V4Zk$Ci zgi~WsgMYa*!bJ(!{*ZO{F@=B|a|(zl$&~LZ9`BUYi{@Qy-g)JJ z-=*@#P9;;F{4f`Zs7dW@Y)eLzAqg`e(jGeAL=Qim{Ow-6XdIz-6agzzHx(plLVpUN&BBN6c<_-T) zgiA#qO3mDvAD|acM#f|}`cR4Gi&4dTu?Iv?B1Q-4^mA?Z{bG(Q6`M8RsG;b>6V$_G zw%(`~y}wR)RJ<*4!BQ5PH4Gp|(TR*zA+d0VipGKH*dSMxjhQwwZoPG29bk`)v7SLq z)pyePaBN~}h~`hxbu}`k@{$Q~hH=;Ugsg(5eHUazVYU!+R212Ka!=3A?Yf@)pAUX5 z7rLl7XtU1y&C9J5I`T#zq>P4{XH5e?ET`s^kWuB9sA$l5dXi!YrsYAR>}7CzD7_@U zFGaM7z(4&GmIhmAy$`NP*9Mtv?rO9lhYHjgKYDHI}v>U7Hza=|5k#D#0+dMyv& z_GQxmWh*e-@Gv2ykYJ7zHIqmHbBYbIOkY3=i>YGuVJA7&@g@R{NO|)RN#-Ci8!tp zpwb}42|`c|e>?@XmtE+bPWM-RMff|SS%k6JkO8Q^LXk|mt?$gEwz0LnU7aVL>lM2; zhYtrER1*NPM#9WI;kWT4M3Z^(th#ES=h1SkN20gpO1t{q!ZGXOqo3~%9o+8^2<9}E zPN_(l4B-p8^@X=>9Jq}S0`d(}+f^Bvj|_>mR6zqaw%Bio||sm%Ee&X3kp z`;G?BLKQ6AYd<;{s2{k$w$t;-gz(;vg|m@r{q1I3bNAPY#Kl$*=xlXpGxYGQ0~Ysv1-HEk}I-QAf!QuieeUvTZWtdGC<}wX4-iB z!ZunekSL_YKGP?j9=6=Kjd2e3ykwxd5B2O39DK&|xUOv=5&N?C9}OG&+OSVL(2aV7 zrbZo|L+z7T3O4fgxtcxQgAJV< zLZf7CMDTxQ>s7o&KL9$@uFVXD#@e*VETv@9i54UlHE3Sj1<-wkGo z3d4a(CYe^Qf^b~cV!sDoORgOGcVZ=qeyM6CX?NX7Nq^DrUD1&MQWbLhhsx@iO;CQ< zer4AQugKaJBvDiG0BjAZhQyovk9pjumHj8JCaMHeUv zakv{VMKwh2@E8L?@pVbywf?@Mu2Pf@aA&4<(KuZ-2H=mA;QqO-6i*Tocluikv7 z0V=XcUn1~^;rP5=hT-{#Kl>Ak0#8kyC5P5j&xic^7Ljfjjmftp%e`uaUAt-s!6qNm zGFK_ZGt0D(=HN9<@C67WB}zD%?UvE*X-bpG@dyfpjAyI>vNs5c+&WHfzlm%Yrd_d~ z*R2Ixa$wm`i1-?fxnU5UuX(wHR>EE}>=KpK;(9z5g+7??@#vDpCyW!2Ga||u)z}Vn- zVGWLf^6Bai&NoOX__W5^oW*P7RaJYS-%IYPUY6R5tHhF9FiDQSvPV~)&JT!cv5 z@CN3710ezYYDIGo6z($!1{3d9P*l9#2&F?9f0IY0v13X(xj)XhatZz|s@Rh&>j(!^ z$ysGrp(BZ6a=2%%s1y{1BQ70`yr7gw^|Z+weW>*>)p~6JU<~|f)l?NRdMMxcCq1VAFJ2i^@+fe&MFPD{&uT04wl*l?;(AmdvC} z&ojqV3x{O{5k`sGGzWiErZB$oQP0aaQ*;wmbwA+9`__|pmT-7+cm1eo{Rfmc`{iuQ zES4(GCEBtBjeG&YHBC;PS7c))?~u@OOhm~dw#6qHh(St>&J-WlKa&3D42SuUD--~T z!A(!VVf3k?!lLV#9pZ|HR@Yve;+*=@ViQr>Z(2boEAAq6v}jhV0gcf+)8=jCrN1G5 zq2|%I9$WN#Y3eCx&_u`o832XnfBR|`+4*sT)oz90tnr-n*i9<#=0pW}RF?0yoWp3) z^Ac)pX*f>vlHV^sibW#4`)@Tq7;EA@=+#MKqQYHRfczH*h6Fd&aIHv49T&>ax-ngR zoRgjZSpmTmAbE8nwiKF*?#I}rBwQ}Tcs`^Ls^o2wSeYg*J0r>S=A;B9ycrFCR=}RO z)c3AiVfmj=&6f){OCk+8isF4=x8;Es5&5=Nk$;4{8XbbaM5Sfr*Yk?Dj5t6B? zFRmr?ORH?leAo2vS2L!|nce6V82!l!8t6CfTzS&SB{7H;=15`3z2Zvc$FmFuPTy+e zqA&2&{5YYeDaEef!}W|VKGZ_{o+dwDVpNwDy}PEqr*2xL?&o-6qM>8V^cEW5QByj=3BY5Bol1<_`DM! zv=a#{Qss~!*d;5|gTj6vBes3c%Y(d0;rdgxm+4e%{UC1cA zF6|hjw#zN@aDYe!{#7x>7w_8*YW~vRuDf40LKcf^swFD!I54WtmI4 zr#CG-j_wVUT1|^rQ@zL>#s|5<1nxsI!#ct9!-rFca-yX7-?o>AV2L2uRS0}P7RITR zCOe=0j1EU38#IL9LnzD`g1odrPU>A zcZpUjJwJVQbXG1vBsp-8U2qYf@5;H$unx>+DE66SP5``6Zm&u_eal$Cnt88_LY7?R z_vPHwrgpeREwRv+DB3uC4+9*M#M`-$gXP_q_eY2Hd|A#)*yEJ5%*y^yrs%*iOr@1n z9Y)aHjAz*@*o_;=vJz-5HBniM533I(UtOmo_?^kA=txS&TF#b5>k9#R8&n@pGF=RT{U!MM=xAc1NktwFcheU3V;HrHD35Ttn_ z+ius0{ot$|o^l0*przGp+Re^hZ?*kyTl_KbRYa#S*F<&G9h;o`x-orCq!)*;n9xHX z2xr}RaZ0Fq@te|_p!oE5)Yb;qM4j zQnSgQ>5nzeq1=msn~3jjFKj2#6M;G9{MwaIVWS~KW(L4AN_mR3HS?nP)>Eb(52Qq; zo=e}Z$eThKGjuC#KiMU6{9@n<9c|ZRsjF1dGZqV+EyLmFq~|JXaS@zf5Kw8+#Kz_O zv0)^_Iy&rA20G`QC2jibP;!Zz+)NT3I3U1en@>|Xz^M*13$DxUxJ9+Gi}X%2C&R$_ zp~UR}RcKf5&l0*C?{|=VJk>J$p98e@-Mjg^a>LnVFJH2|GxBvl`3@K8&Ij6O4Lz!y zK0GQmmTyr2ag+eXS)umLNd!l99`Z!W0(oySsdrA;$I=B9k}T75h&aZR4g747}Y zUcm*|bZsXw$NWr<@^Q9T1*y9#WnsI|?>$Z!ygz~D*dl5&&#$+-1W9F?Y-@?C>ES0X z)y8*AR*)Vi!Qs^BAhWc6O?W8rowXl-7qEF+x-nHe`>yk-cN6QYuTw?eo#wam%5WRh zER@U`>Ijc!7bg$G3eFENboI+#N!UFd?R&GLc7JAh%%OS z8RpD0n{rGm;<$beD!nOAzCx2qydM{wSz964(hbux@9t-N;BKhN3|!oKCci9?7w#Ih z?>2;D#CjO~%_2t8H_cAguy;A;WuGL1@82JZsS!|)WK`YkYXCt`e%#8rz^q^zKoKiR*XVX-J(K;zcoO-p}91Kqo26a)j? z#5zRP+3PA##tl)HS=avEGorIXb4S_D9X-~=Ekait;YACt9wPEijy~$#`i1*sw&>edFxMm{i%d=I-|CgtV3yopSca?__$~nJNRwRe96{w{)uxO zKK{+G6VoMmoj=Xx|0lb!{sWUm^qT-Jm^=!H zUGEPTSs>eDKj-pnh7@QVtM`RPzE6i0>poLcj+1$tcEHWf7O!Dfh$GoO%j^{Cu`p|6 z*cT%y$$PY(>@5Y6)$1Zy@s30_z82S%_?2OHj(I(fWPA$C`?)8RG%I*NG` zh|B)$D_?jC*J}vEuYcFN3X_zdBCoZ(b#$IucE_Gzd+Cp(mhV&6Gy7QSnO64by}!P6 z(RSq#G6W<)c|CSeA=6gbWvz?HYuERV^##_qA3DevTAe8Bvi)Xvd+ZZYvw=iYgwQMB z#x0WDLJ;y`A<_-~Y-0ms<4Pc8 z$iH9m?}Iun{Wd5#egRpP{73)(0r+an2>p9$NQf05);|)|60oUnPnn*ONYS0SR8WqM zU~SM`zyudxVL*tAU~L>%&u+{VEWkF7O+UM1%1zHG0g3Uz|F6|yq#kN%!*{wi-eRX! zH!FcEYViM_8eE-E<7+T&m0gH^Z^d3gaxxAIAmKtl4mbV7RM<7>H1J@}5Qul55;W*( znPky79zh&!dKYt)u~V>Us?)PJF76!Tz71{GDo6x$oU{*>vm4+qK^9{=Db1n5Kj!Nq zA952Sffr`zp0+|{0hcPMt`L*>n zXPvI_#CR-KZ)1U21K;?caRTNbf<``i>%@AXmQbB3XxxPK(B&&aK|DN(DRofuW9&rb`(vHCKk2E0-#nmDBAE}7kqSzsm3D7GS1!@-@?%NC6ne}RO(|jHloVm?`4UO`AS~u%uw{tI z5fhvah4{|w(m#?u2=3i!4S~nPinj2;wf$j`qK$`PU}zr*fsszZ3br;xVg1~wd9Ywk zq(kapPvvLAU9XAAjx3-#Vu>Lp7w29ac5K?LI5WZVSpa=r^XAyG1&CAzYBNTxC1g9gJ0?B2 zi!C0#;josz3n`a2wg;M+13@ueZfA2^Y{C8w(IPtnMK*JKEiyk%*_sLNlSygjC{qx9 z5DA_?iemGa;oRWo*6g9GsfdRFIfcR%dgVjz!z*(u`w}~6LYxUsM%R^cq9%k0U3MCM z-h%NrEVmb;2hs(s5QAXRxuVf`hSBaWsk_#Z?%1~ZA^hQ9eZuYuj`c$y@yRLf{;jb} zgl}#RR_B1f-2(5=j5Kb-U$7MWLw4qm57HX(vd7((BXdvAsHj6KD#UIB%^!C83$T@8 zpUha}vem~WH~YEf4b_sm-2OLzRv=cmxcf*MGhqe3gu`^o8t>gxfd3efIyvwv`hEYp z?3?1eFE%nD=iDbD=V8L^d>wK3zW1{gCJdgd(7}epe=UP2tR2ugQ_e119$fr2;UOzT z|Ms#qbWHZO6Hbb+zNs~?Z42PVGQ4`PWpZ~+v}(;2)~us#PS!Jr6SjGysE z;<_RonQ9cwcQZgl%+D`dGvK5fTS6J^x*aJ-oXVhd-5gHHp{zVM*Bq*zv2{>mK0=zU zke>SYw|`XcsSC*LQUw~{)aw{vLG7404vtp5z1R5i8{Ve<774ZEnLjvcLSfq(6!rnl z&UM7d%0ABS96xxCS9E$ij9obx)vi3l$j~0rVOZKYh~16Sh*|;>P#+)PR3)HY zj~cCX<%2low)$d5eu}h>#+Ca%)!SvC2l^W;}#rX90zbmE!o|HL6NCNg#6Bu3Vt?~dX`};XxJB0eJ&-HIX*qb zCvWgOUE;@xsHiLN{U}Pbr0HqJ4(39oP^VOI&__!MH(O*>RQ5E|-D4$&L=BFGZv>1( z{`sjE7dun&o;n{3F^@4rp`nMMj0dAgZm56Xw~@wQ5?*~-3UqTeWUkUv@e;y&Q#820W8^tO>vgzOF-P>I{HXZZ2kq_fIE%hFA< zsxq_kWr>OJc;R5aMZ;y$5)&6c1LU_uiFDD;%C<$_#I$HM#$T&ODv~&%IEDV2ZPLFc z6k#RR2>X5X)eUw7u!V%fhTA_<__aq;yn~PrZxLqF$bWy+joCViQCqtzXdi-k!_Bo4 z*h#^3*E|a6eftVq6n4wV^$2k~GlyGF7mbUR-|z}~l&oxgdeEi%fGzz$s&t1&gz;eS zMw)fJ)e1AEx~Yc*_#SS= z$;T^~(gRVX2BimV!%k=SUIR!H7V%ivf0O^l{)vnXS!bA)WiNVjyfeM?X}V~j&fs=&Y~9NHDa8E+LaXh?M% z&Mne%g-w_5o{)@4psRZk9mDPIk6V0?SutL1ti@ED%zb zq~`ZAxT*PW2Is#=h+`8K_*P$xW!YVF=o2}YcNAZz>=@xMYaB-SA2EhqB%8U=bNttH zb_h=l@7R&~Xe{l5JlVtNzmEk@FhEdH)T;g+A)Gl3i)ZQ9jVc}Zw`2~&c@2q~h8H$q zntg}v{Vufk;XCs$IT9t0rF6kwy`(iGHqt#0F_!AVQe^~v^>aaIuIH}oPd=%;o6lwk zzmhK^-k*$*UG8nIf8*PJ%$eL;JxbS(LY_H;o-{pryxU@G>A-VkM>w4T)&1gg&p5x< zeu3BNguSIakxjmr`2`)$=2FuWc#GJ^zC28r{EZOpa&AKzIY_2{Oy^_*)KgL@#6}c( zu`)Gl?9Z2!$C>}#W2xgxVC~5G$Lt+)=zvY?mHvlyuPm8QOl~s9t6xDo0iMnGpX6$S z&4Qg{LkO9ijx-Lxo?O0+oU1d>0M1mS-@ok~yVM`;d}1gjmH&iW=kyKIFgoRR}fcU&rkFpuD;5Q-n)jz)BA#wf{o3w29edvfze4` zqj~})$d&+iyRD%|-sfv@%`k*cokKd2M~mH~_#!TD%=p)xT?uYoMFJ|{+kvlfnCk8l z{Bq}-XBJw5itchKDR@k58RDqDE$R}P!kEW!y&5x!_5CJ|0De+2+Hj#kfR=X+qIU(s zP8>g28z)#?Lj%?YFF3$X3Lf7ysXdcs{f`)GK}!#XL0dg0v+I|$k?OZWta5QOrqZ-D z_jb=7<#pwp2tu+u+1rl5MqKPK9JjDCV?1WO%jW1r=G=U0Lgq)FbH7>`P!U>0h%su( z!^FCPWbTbo|1`_HoFA#XenKN_#)M_P??hQKwat7X`Y_P1R1vqCWlqs}w_Sdq&!8Oj ztwhQ$3>!*PYq2%kg)F|pExDl}R;^r#^t};p1?iKVji_3IJIJR%9%ss`<~t?|3w|j9aAsXNu`y^GZi6jeOk#MnLao+sq+(vx$j4$dSH>+OUSNg zbH5`Kt|;PH09?a-_6?K!2`N~RKFT7Yjof^&`&fI+zBnvc0zYsiRaS3u7L+PiJ(rd* z7hfnxGJ7_Nh}XQ*0)7X(<>PoX_-N(o=V%*x9ceE2hg_33yw}N~x(o3MbaHECG_`$_ zvtEDCgsfD648NkvNre3PDAZI`DB#<@!!clZ+7)WMk=$3^lW)+stC&wfCV0T9SY&Jj{CI%Kg(}_EM zV!4F6hI-a$a<#BUt4I`L%Xasr9Y?!=nhE9vj4w<0Kd)GH`V{!`HFP_Si6O z&D+7zD=1eSHjiOGM{KN>8_%*ccZQh4vR>n`5kbQxb~`cLD$Kv`(O{E_h!9)dtGE5V z_{4?A5jXr&b@L75gq;qt?$+s1RjN}EV4rt*;F~p<{~*2m!E~wlSabV{p@Q5#NPb+e zXuK75KPj5s@@B>+aL%6_;&`O}`#mG~{Ic@nhvMuE7*a9NypSm4)giR^HV=;Ag666UJMFmIz?vJtbE(rZQ_Z6AdmHxV#Mx*7&0%E7p??!>!^@3ivjnoR5M#vAf? zQ-pisvSsSW!kkG2tG-~Cd164ETBmYnV-KPvL7n9!Pd}4geQObY7f{b3+WLpvK_nt1 z#Pb?ZYVGT-3wb~q;H3SxMzTK_I$zuN7!*2XxM-QA0sR(F>}w5%fVzG%HLe>0{=q}h z|LENB2x1Pdbdj51AQWxJY@i}1C+q@zCcYrChii!)p|^X-862k;6k+bb@ycufwE@xn z(`|4RC7RWn1^8_%*?jN)LxRR?hlN&GW<~_17OeC&ttBSCd4hLcw(tUyZ1y6>W?U(< zF5>pgAcW?W7h;vdteqc&hoge6Bbg*;EoDy>9fBq`3n9z)tDyFK3BIi~V}28VwWBt?RtlEnTS;sHVsx_dWA%kAI!$Kk$2Yfr*|rBP2Q$bjVYx73DR z^@2r4r%uZ!X&_W6k}kzYoidQp(0lkKY;H^7RwArUnd$Icb%SF!CPX1Adi$XBzR7WYWXrJC zG}978Rx;x|zy!ifpN3zN#SX**3iGwW8+Cakul`@Sd8&u`-D+v>MG`-5IGACKPcX@Ho8TX=_D+bS zb?}H$MiFp=E5k!r*;-P~QL8z=Y{$Qi9}?Z?j2tou@d-NTNFjc^t8N83wTT z#*BYiqUWbR{o3IG-aR#3bUVsquO_rXRyW?n-fB$aapFon2=Lfa@xrAmC!aVoeh&h( za&%+O_y&z4F?t^jMz(5v%fRv&0hDL4OMu@KImtg1rjE|K?uca@qo&z8${pK>t*`al zr`$czSfjXb&spt~b$osID-n%*WqdNsMnc^wXtC(hfsJfhkw`<=)nc=JlwNu(fy=Lei z>Yot5xX^Z}=VP_~-{omxc~D6|SJ=h1i$pu-;&y7Q%Q&gc^+>{ET*({P-hQ{&oEftB z(<5U;5~AUjlWU>E)(_>^tw4J}*R#3Y{Yu?mbi#%4t3kPaGRXd#WMqY+)YiSBC)3ei zQ*Q2|pm`*9o&mrqm8wfq1uEIEPGHi1gVaE+yrK=@xWnib2E^Cb_@7bS{|1N*L0P1K z5+)@EK=n^K%B!5(*E+>;6MmoQkydOE>@jUGR1L&Uz5@egVE9X+7i3z80DJXDQ%kF- z@@I%AMy6cw-yy#W1CXP$4A}F?yrGW=7-@MPCw`;`umHvb#p|${Jry}|0rF}CpP1N~ z^Zm$TA#grgmNEPAXRm}RnGzMl)q?{%3O(@>6;V>q538i<6*|3Q;Ku)QI>1o;e}Ovx zylw67tAErX?mvNkwIPL%0GkQ%s>@|&z{c5E)b5;5bkRj*e>WQ!Bzm<)ugAaj2HfDE ztAPu|jYm^odn4c&O8OtWq1O}tmuSKN?`{YnnCt5iY%`1I?d{i5Xg=s`M82}bP$Wl< zcU-97Xb>UCU=%x-vVV>At-Ks-(zYou_Aa3h);JAYTAjZjmC1h^>=3!^N+c43G zMiTaLy1R+PkgTX2oyMgartIq5OZ9_0j8(PX$oP|r8GK`oKa8x#c4@4mLZMh3a=KJ? zFX=i#juD5$c8JZ*e92dH$h)D^h*lS-QEaEXLoLjAhK`O2fD~u&4NBw(fbg9M@*~74 zJy%~fiK6MqksrWE9oB_P2pF-SfTX$qLBZ-A2JwlYMpk-^_LdZ*_Us?GOp?>~H(U9* zckLAzJzN_Ivyv&3jr@<}9CEd{m0PT%h!=4NXonMvQ<&xLbGmT208+F=Lz8o0#{xVm zKR>_S;o(b244ins)<&>^_t2~Q)mS?^V#l)N{huphEKBTYUl|Iqea+ z@(Q`2BKE_Gum43l0f3<~vFD@nAl;~)xb7NnY5p(BOWq#o) z=`kYqKn^dLSSllc631P45czD8BKAjsC1#gzs(8mEl8wfk9y}4jU|c#fzOj0N?wyqI ze{=oH16m`q!}j&wDXO*VDqMX4KONL1ehKhiXY4Aq-b~j-J#e$IZzxnem`t$mSedjT zZS~uadRT1ZumAt(&U_LHGFq8qUIG zL^rC&Zb_@&-pxRz=b%=kB z_;vPHTVSyN?M7L=q1lTJi1d5Ecjdy5wHM6j4>p(CWhRi^g-c0mvfi$~9J>A~D9(lv zt5Jg=D%ihtFwr*_-mw~f5)L6NS2!F~M&R%BI$ZNxE4a6oaw}y7tbHEotS^9(^*C0GA!Gyu~%ZC}1q^hR+6QsdDd9@Kd~dB0-=`3)8Q`#+o#BI4opE1F@{SdxiLPHW?6ilB3<7RyT|I9&e<5| zXPF!X=wVkdNIweab4+Hezp+g5%9rChKsSo{h#U)FT0X!wHR@wDbEST0n;(+|OhQR3 z>%%v8f6jUWocgQht`=Y$DfS6?%3&r0mn@kz3QI|{haJ?bVUhA3?juVi;QB_L4FjHN ztO^CqbR)i~ANp}p5f>VHWPWbUZsGN>Egfrvg$2O9A=Yb<;05MO$_x3r-5&z5>{avw zS@rmvUc&9*a4@VVwP0eFKN7?Uyy&ICTZ#$9#DJ55abPxTxa?w zyE4xQcYi;sol7e;J>3i)d&AvyWK!-eG-+~GfRzstY|b|G_$|fn;o9g;Cgx)hb@9}V z=gK`B9Vt?}kB~JU6}M*%3{Uy?@|l)1kzv1|j6DTBea$znAZ;|$+vtDJEEs2cFir~C zoJt>yZ_xg&B(y~a*E#6i7OZXIM~3!(oZG*wyboU9_yd7s(9&#YHl71o?5mE8cgO;R zEy3vK{tt|u+f|vUl7=iSs8+O=1ao8LwU>~^YR@D6LwS>5BRp5~G+ulzIz-1iP zcOMn+%3hmZQtTSA|-I%~xb9 zm;!Xo`6mqE-;KS+>#)JP? z)&v!xZD1QH(qqrI&Cj^X&1Mcuf;YS25bA&3{;6t<-(1_D5%MULA?t^{cYBZLK4xMU z9EGUikyj#XOF9ULK_vd?PsH~n!P3FWCH*Uj2DnS{>2Jv<>~d!z>Vg9{70(wAV*pBS zhZ3KTkGm1WowLiLIG97rCcdzP819smXw)|A?!|R0RSwxSt&wMvs@Fko@-|o@xuT@&3Sr6VR z&<33m&$CAF&TDKtYs3EW8tJ^XlK^-c-pVgRp3 zE}>WScc>Siwkz+4AUR+P!>y%9>;{ zl(W3XN3%Vp$?Nj3zMXSeAU@WfnJb&rTc}qR-{}U#$R2I$fMO7jxptFckP+_(Hk{c* zZ;vK7lY{jGU7aM$lbY1~&sf#W8&^j*57DM*21{LVMYzvsW|^F78ij))~ zZ0&Z{wRhA;GqiymaB6%_H!r|UBZ$$8PTM&m)2YUbM;KuG8cH~rg>=(snz{&=+0Ntj z+%f4hGTcpA-bC~`c;ivNsa~tDxv{GoB5Xn@Z{rVDhwjY2l_Jf-2NK)Z1IZ z030ran$L}sN{C;%Q;b&-NY85yBry!IF=tG3xkhU*;pI)?N_gaLi;nBMi&%b9tveBB z=w#*+I^dx`l?=KuVN8cH&6tK?{~{=5TjaedCf%EYIYV~=emljQc4pDA|4fPIob73{p+yirl-rjVBH~%m8-ZLJq@9h^>NAJD&E`#V@ z)aZl+(MFHxofy50-UU%3L_+k05y3EejYyOby+jCuVDx9p?|(n{|31%s&YSbRI4{nA zF`qSi_N;o+0hn%$sczpF0Bi@cia`P7zGN&qk`@M7#8Xk!{E+&`^9cfc z-ov&K(-~*XY`y40b$3yc>>W;fJw4A&z`l@>#L-N0?|D7_ZjyuO{aX;jp}})p5qr^s zipjUD9~nH?%|k#`r0M~*S8|wz?&k|(&?-I{4YYS#6yv$ThrBt+)YjgbyrS&8WiA64 zruhPUG(C`ir1^Rh+441Luy=X(%5gQhh*a&%<;`xluD7LG^w##0>?sx;hwWpzO@?jc z7ck$Em_@?yxK1n=Uy@iR3$l`yh05x#b7du6^KzE%oey8LY6$LpsD`LN3~Fe9-SoL~ zTyP!fnjqQ>n+5G^nIX>vL}c)$MMY3?=8RTmiuDW9P{QnCGoWa94LjJc1C z>|cX@u#^taeIyN$Yt6zS*xH*>4?nL4?S2-exw#6wSWI)~_83X41K}$10dDK>1#1CH zBP&)(L20iZNM$YgatZhb`X|j02F?CFmC0$!ynN22o!R`#7=n-3P#znk627t7V#IeU}U%1`YJbDHf1YP8#Fs9UAX1@RS(CN1y)T3Wu&LEUI{& zhDqJ`X_sa&xQr~_WQpexn%^M~W+d1dqODH{y(12lp*pHW>+d;lp%;4%&sb>}td$mi zfc&2Cr}r()dHP7p51jIb51%$H?;Wn}Ni707&M09MzHrSsORIB=eW$dlOy?l@&bar} zSvw+`f9!rbA^?pd?6}@PyHonhC-kCqSNF_u2ULn;xF+5AT38ukp4W~6rRz2;f0?zn zJ;&@?gp_vmg%-A=?F9;lE+i;{y&-Q}0$_@N%gDyI`Q_4}kh@*|T^@A@@Ys3Fn;s8V zdeqP~iIUw?$6}W^*esmv+z+_!DCwepAOkxHAD=DNlE zc@I|pypaUx!{330c*7faIVZ}0cyfu9BqkCJ`xJPYwEx&lHvcPy02wrE@qbJIKg|Jf zu&`N{KjYUtruT1*itCK;XaL8YPMJHuU5pM+`sJVcRKVUgZ}X7y*qKgH^0nJTK`|{J z7RF<_T5xDNT>b3>yXps=SXqyXHy){fcvMO4quy#!wV3$Ez)aw;aJK#ShK=hz$6Lcp zI^=c_LuWE@^xIpWR1L80j!{90v*6Pv{|^R!C)UnYoUFML_07Q@YEI8yynQqD<(o#9 zZr+<*%E!9NR&Kp|6JHY^j|kg%h@I|f2vWeZNRKP!e!OKg5#z1}>FUmyS6i?CNH+0j z)U~qx^(Bc8Zkj5a@!q_%W$?j+O4FJLNw=6vX8n^MLzJz}RTuf$Yhd6eIzRpGeyuV$ zf1os~{Mym;!5QXQja3V(eUkL{fvQ8BhJyHjdo7OMy(7ZoN3h2WPHmY+g~bjZvGn@h zznFRAPbrw2z*V0AYgEHoXIJ~Nu9bz=YvaOlb#-bj|6lrY-xzsLc*dL2a?a9wAlF8RB6nL>P$9?PHGsWNQ=MDld7gQa!(s>hq&{Ui|E7r#@ec#lFTb;Z zT;tJBe$KSAsSP3xW4+OrUrbZsCRLMf#Y|Q^!DE^*_~W=oJ$aL!tpa%?ms4XA>Ndha zAG~w{PKxqvOBrl_(mJnT1kR&4s|Fe;12|K?MC0Fogk}O~k3G$z)lHsx(<*0Fu<@X_ z7yDaVNcBSA`}3JDD zk?HRWwyvVOM{V}TU_#8cmK^gAyLQ=w8cJ)+*SVvV(!czL#P#~_Jg53A2-al*r^@io zw*Sw59vuqcefX&lATy>rA3sov!B*+zw6W9`GPue60CR*wBZGTamokf+GbzN%)c*X7 zf;f+ond#dH$#fQV(g{qWl9n9hakrpMf`YOz=V1<|+_6TTjoasqC~)y37=KzKTtxeR zaGCmBtlDSUq^ALeUkeF*1mfTHnl8MYe3FTwU2{)7@vShe^g?v8I;$>-midSf=_k5+|}U%xI8{P1(SI_Dp>a7!QPaYt}c@;+E} z>i1`DPQl9jFp6(&xYY{OW^KW5hxJ<3_!8gda4OL}bcRbP>$gsEBnstlveKEgy*Ju8 zG6jz}Bh-xJ=FV_QO`Y>?fyl~jhpB)L=W6&Q650wU>6!*-CBRMZ{rv^d?*Cl>TPozg zsGq~nb3GR8eLgMTf3xO7!U1Ki@F$|^jOTAlz6$>s7Mz^EyZ@(`faTr;v|YkKeEn}4 z@jn^;C7|B^8CMbTG%KSxOaIuN^}dD;Tf6x@U`;b!9JFPfu2Vn%$=oXCgM8D^G+u7! z1vD<8AoHx-tTvsd|FSl*QV1FIVKhD2p6{=3rAHos9{$VKA+-OYNo^ngJ6BVW(!Sj0 z5&^08pJkKl<(x@6E&wn;PEGdn`irv%e`N_N-A zh5K*D#>K2_9~8C?QtLAo$5uRaX_N2UUC?;?O;B81viwoZqaG^m_rLVZpQgUCsLDkp zB=D#G{95QQlOvJm3dnEjfBcsT7G^ntVP9+ABTW#>ZSz7 zL|YpWm2YXyw(5hgULOJ!9w~|g3hjyPI65_`Us}dT~sB_b(ZLOX6-fOzJhHHDqwe(TMK<>VOnch zVWMB9QB&sQy^rU3>ov^@3aR6id0X{g5=8DQM`S+m%RGzQ@t>X17PKmAzyG$aH&NXj&B~8wKy)}U zfj=oYD^`u*g0u4->6j*-{m+)iD#XQdV+N^@6BV_wav$gZ{C>CA@j2YM%Cf*t(6g}! zbxbf$m7)RPQ(n%(Btv&&`2Es%zn1dMz~Z1DcOYC7wd&ii^L;{H?l=3Xk8E!_Tb~ri zMU=~h-Lj7i200g9_gP`k^9L=+g$Ln&+VbJbU*+Z&%7`FwFhh;|vCG6T$YRgQ(T}jU zMzKZTNm28q^W75VjY1Lkho=N-=z(E|QnS*8ld|rMt9U`EA>PnvdSP-sdvhdTA$d`E zN>P+MOUgz@)I!MUePZN8XcK7hR)&haP*_i1#?o71{@i!!8FRWTMkVS?>vk^VBHPm| z>dWW`gRe_fVB;Ium22yD0{gk3wCV6UB3P+Xk;}A7+lT6Nau%o3%OSB*3j!!L;B@Zq zN}i`ch9tdgve-O&kuaDnMO6u-U(}d5h6d`J$JZprE0@|xy401*wilhs;V(MtxWvEi zC;AhMi@bPXvzt!{-A#I-I#@cOz9tHfGyM2zP*uI8Y~KBIxq3h~Kx})ul$7kNQ3-}T z*d+!%N42JFU!ZZ1_&Ab23X6cL%^p$XLH!S=#Dik<)`{qFAqE|48HT7Bj=){KhR~QlHh4Yz6h&tgyq3sHJ_6ne zm7CTIw^mus8@1@6BhlGN6v^nU{+Dk{F1C%2Z1*HVDjss_@o)e5;;$+vZ ze94~8q(5Jn86dmJza)TQmuvrwNFf@xKa{$ii)&o3fi zPSN7Z-HvYXKiq-b@k*z0-m7%6T%~DX5BR_G)3`>RBECBlq$MMmbi5;J0cl!h($b&N})>28=C$V9Ez1K6!~GchoH%k zNi#xI#@R;=Ch$n~DuSb9W@SXc-r%yRVcGji@{{tt;3h%~vL)Mrc_JJty1~7#2P>Ab zE?|`#T5xj1nwRQ6XuE?Z4c~@O#-tA&0Hw7v{FG>WLt}A5*!^}2{=s$y#sG{e`SiXS zEPsgcUPIgnXY`cU>i$)ddn?&1WiIAs_)8?UQ2upS#^MgDoRA_!FYo-D?x%KzzVTf0VB|qwgy)_U@Gq0Am`(=H7XqtDEm#1f1{@~YVb3i@l`!)7=fqVZ`e7c1@O!S0uCg_{m#kryS%xv$&%u#V;SoqR4}QCFeM;{Ja#I zIh7A#@ugjAPaG-b_8>d-T4xnAsyMq0-)k)(tMAefYN?$i1^WR;M5^g9=Kn8^EA}E`5q4 znI7C*K)A4$-^3=iO+@>^Q<=~|z@kygM}F=cob%WCE`|;s>F%#cx_59KWEalsy^++u zUKDyZ2pl2wsGs_tWRG9=a+?Tp|2oZG95WtX%j8&Sy-ZznA?w_FuO)&kP6xFteWwuz1 zZU3~H=#xAPw%@3T1Y9B_u|T6tVyx$zY-g#}%Ep(<@PMd3XT3_fv0eAvgo`ZN8L&u} zRgp{G<8nEZS3Vw@Bge6x()LeJC_hl1>We8(Eq`BiqW$?rUvSjw#p_;lZr9=^stS5rJ%t#zSOcY};Ms4xS$B)s7wUtt&`IN?q_G}Sl?E3!1 zX^|nF^U(8WgtGb8+xfAr#pCK_Ajzg>ms#-QYl4rYUVAfA{qc^ugJKd5Bt;Sodaf2n zUH+FQMjHo6=FAZPYNxRtwsejIY!s~Z41KNNRGWTldDG=gAmmRRnc&p!;W+#~C|;$b z-2*k0EaF}SE^oNHs8X63Z4drZs{(IPZ!Di^)ir1bGdl*7K!6Q>?%Rvv-7b#6o#4`x z6~vxFl0Dl!NK*u%B7=61M9q;$QoN%pXQrf7kAY!^2@pR*ZPKLt==ptuuVoWu6-{yh zPsPzRfcR?kG*`_z5Je)_ee+Q`n_rh8iV$CNVllhOi3hifZ1|wSF5D+RgjG7=fN+HF zEG6XmizDdMz{YOji|P@5B^uk021k@4k@?>%g}$Ow-t_GDV3j5bid(%XeLcUO(MzL4 zL8f8))Ngc#QmzR3pg+>&Ik?J8Z9lB92I11xxH)M{* zQtDd`ue>NrSou1Rm;l>3VeqIwrV$e+Jd05(tCZ(ZxQp^s{Js3U1CX8uQ{BTH#0iRBjtT~N&4@K=OLS=ezS*_V_HYD`^_f@2=_AoeH^@0UoQzeq56x5ygZ>ho zB!EVwD(kOvoRc@Ke$Z)uyyoK2dj-FHtMxdY~AZ zA|d-8VqjhrMHjZB6lOCNopZuM8aO7JZ(pZyqKc@$M|+cix|~;uCBT9nV!C$W)xqXv z41<3~@Gr5&eh7cuwOqIa z@-%c;7c~S@+D9QdLP2a9$4_IcA`-`#aTu-_Z+cxyUOku%VKaM|DO5br&asFsusq{k z7=&-|Nlk`A1tWZC25mRYf!$Y1X+S(Qt<StZNJ7ke$-b3;@F5!t|@ypB?=M8>%1~-yz zW|W_pqA{bHL%&EuMKyw_vudwsXRh)gO`0+z~WMS8F++2rh{h zpwzo2$;XOa-oGN;XNEnP4Nn)YrpUQA^p=Gb?|LSODPHa=LKj!hEq56thNNziP+vtF zEwK7mq#{yx>X$#VQRx8!lZqX|x1Y(gV{|F7(wpJ_n`?A^LhOpk5!s5*7hfTCL!>ZK zdAo=swW~9E+6-~36kkXNLCp8BbN@_7sC44b$yH#VkU-Yh?zi%BxY#v-#+wJ~S03H4 z=CNT*114%tq*6n&?T!2c)?qpLx2^#i-fpjM2#m`Lul37{*dA@2UvgMGTs|UQDCJ%Y z=5{1kRs>H+AD6=JCD%4-Iz6IaIm6RXb-V{cQsgqRdBeUz5l$1dweJ%rHYml;;>~_W zVnL~D9_vo@X^Wq%BZBjHysK-sRjQqBlF|Ix7JGkg>IU0li+7zU!$U<5Vz^&=KXmsX==ynBO@(5K z8vrO6df=VQD`YOkUh}3OW&DUsd3C7Fo?y5Nn}--ch}0H-1eCaAT#-&V)19{~FpPPv|smiNa*6Th%w+HTY#4W+&v;c5%U86a1X>mO+BLF224d_f> z+Fi|@xP4LP_R4f{p$Lht@X6Kn%Y%Qvk2XE}-aa}8q|qa1%50218$ z;_>B;^pil!6CUnb-eb*dgPvwLo2|nIVWOEAgGarpM(alw4O|Lf4EdgeA-^14OPs>3 zBO1h}>~J*8EzG%&PnJ*75Q2)tQ&`3%3*Hlo9E2g{d)_6&H5j|{!fdd|Ehp3 zy79J_|LJr8pNb}QdDPd1Tz$gqqJ(CC`RhCc+q`hGYti}Y;r;v2sm{tPBj+igp+%L8 z8)PC1oa~=SC0_5}zJ}$#T3(e2@V5olA218?oty9*@P%NJW_J0f>8lB`EZ-rXN=E zA+*FlP=X!Qz{ixMwv4Xt?Eb`8V!;Z#9M@Vt6g{V#Eke3P+9LPgMQ^=91&pc_7w)f^ z;F-?{NR;2DKH*QWV2h)f{#7C{-ludDL&D_;Zo3ZjSCgY09&n@?ZF{dMtB5- zaLOmj9w`3oO5gvjvWFFT$qgs=Mqk6wKUmU+k!Z5UgRo6<; z&6K}tK@Y{chcgFWACKxvoPUfRN-7=*%3@Wo;y9CrM$jF4*_9K_+N|M=M>VQ_k|hWv zVJ5TCyB6N{jNa<^N%t6?N&+j8loo%$sIG|@>NN@ zj`5(*WioL?bO(FP=t6j{WW$!IgA4oIsUla|m0 zU;%)$521j1VeniF^TxeITjpC~Dx=6j85VjRu%%~YrH|>alz5e++0yKKSb?dBP>WxK zc;U&0EHGi}es*j^hYZg{0S7+OIOEGb($Jpf{Lej+BF==6c=V5l{Eo~GxG7z*9j25O z4x$x&M|r@zBIDXZR4vcBU|lY&T?Xb&IPr-FCP-(Kzq{A3Mw_in)Lys@ug93g>8}X3 zQKHSPnsy9%Yd~q1kPZI9&s(nDK_G5c@8{8}(>hn7hVz58I9BoC4}cnv`}qhuS3h`3 zeb1_({IO~YUVpUV+}bk;muLuoQ5-@w1AE3LeFs~%LAD{1sez9vl3_*cEIT7Sn$29V za}cvNb%ax|4p9Q3bZGI}&Jb}5W?EW8gp!h2qHAeR^07n_@_5}iytX(d7}=}E*mu22 zqnUAJy~9r6N*UNATSpA^Bc0Y($}v4S7yY8L>1?~vw}P<54dlJcqzYO;ge2#y61QMT zA?5KZmVtjZI4o14A`K6eaF~2!3lKOAoikC(66UNrK3DpK#aPI&5Ps@|E0RxJ$!B+d zUJ-oB;cAkEdg0!kc*#sXt_lHg5gLbSz?{L0X6BViF39hp=IchmFS#p9m+@$`*)}5Q zdz`rP8xSSl{|qS47@+f{f&$z1VLf7Q39zl>3FBwO`;?^Wm5hFQuM4WVg*)U2+DCYt zmx?PH2ZRq2_&HTeERoiF2Q-(VzTK=Xo5>vS7k2 z){6(1kOYBVQS%s8;%!EpTi7mx4YL%n%xXK1pHdQYt+gEGj@w0)pAC^&XUWGPwjG?M z5@p1Y9ZXfbS&|jCis^9`EhH}iwWgg`iT)KJ9to!o`I+=fWMXGn#F#UE`~Ka4HJfn? z5!MPhVMrU)kG6&RQ|*u2_h5yKI;M9eZwd3#txi$pm!ZNJLW+>xgW-P|6L{`nf ziqmHu_{4BymfG;RTx2uq)`n0PkpOJuoUk;v8p+VNjy3xO7>W$R5b4F;O9-7wf?Y5j zp;(0*dC`WGBSpyLI6{+L`mES5e>9v$ruj8^baKI|&agMnGUo~iDF{N(6~IZsW%Jvg ze{oL4tms>@jn3kx=pT6EmsB|-LeuaK)be9~lITf*RG2kC+8j?64dh^bRCb#_R~GcAJ-Bp8;=yo7&*s zM^GByAVLoYCP}@p)Mq>u>u;g{_=Ar&oS05KoEwS$X(#RQvjPzIfA#=-UR)_-@be z-{w}RlhE)Wd^`j8*?x*0!b;43#udJ{bf84GEeB(+P{Z$^rJ{~hf^#^k)D4!DVT9+Y zVN&x#yqT1LuHw0&!$H8_FldiUgq@}>b}PuD-{F#%_>tY`jbvOSC>22Z^KJ_Lr`>d- zcC7g94H+ctEUKdYKsA55eRB4Z4Ma$N6oVF;`n=F67~3rf6{B=3=%NRwQI=iEeb1=v zHCPxaS_zHCJBrPLL)*jwXPxzFh#YdzBLr`#kUK=knJS{Sz#7mW96DaLA$)gdZHjf2_%u}mB8O{Q#) zJT>9h^G0~B;jxOJGr}bYnMG>IGx-v#>W#b(6B2%1QjUeNR^JT@D3DchI1xOyU~OG+ zjM7qn2)1_fB?t*OPgv}w)@1KUU7EwuguIK^Rzi>|cWW&T^lu>|_row88|I@DyAb`P z^sBA=J_tRCFGIK+4fDkpa$bWNYnSvOQFt<22yT{s8A6=ErcaY<**BkR3j=1T)Z5;i z-$NQ6N>lnr)IquT8BsXP%udt|4qF%-QzC1t}NNGX0T*T1_O z>fs%!n95Ly@M=X3kvi|f%)PpokjH`D#|Ox%SvcXM>bV#=V7J*QKlYDQ_-CgjDJAJd zKrtz-OC2DI9cB((2}3%=opJgF^VgRSkoqSUgMi<~3b+2b4*{YGD@s!XUS7Tk07DS~ zMsoM05>u}T6q={F*bO03J{06GREf%a2!IKBtL$e%&>pTpyNfVj6Wg9g*aI$T$;*Dm z5MS_cBzO` zcuLp8D5IqHy~pbiCv5gyu>{t_7|i6dY~W}SA2?6Xo%W+S-i9o`~-y=j>yZqCg|#3%i=A8U4q>^(zlFB0~e7; zMjxa1>y|^XTGRIH{9-Npg3Lk?LHkW!BoSVzVFKZ6iZ+`6>^Vb0AshIgrGFxgz$-}% z>Yc#ZKmT0+{=k2C?>1*kC~pMF%^J5{$DQ(QJ!=7i#p<1;g={y{oXt_6==a*BwPm_n zYj0!OhZco}h3=m3&+33TzVd9^f4sH=i=(Hy*#DbcFV$@F0umt9|Mb09@HrpU^4}9s zG;I{9sHlokMxcej?b|d$fcID&hBD}qCny1%e4-f;@VD1s<(i*=nH0Ok9hu1VtByi9%1kVYbc?(FDa51+(uFm_fw+9oAFYXelh+XjE%TE z^dwc)pA^VF>}G*B4VAEis%UTnZ-x%TNrwN9i5_IiRe2K4Z zIF%YB>!nZ*A{o#vuY{^nB+tXkUfte-Qe5VWB`(j=Xtus8hh<8uXUudOyESV=+1SxmO)AgHP9V$%zAw%WLh5JXL(H7n+=Xt&2%DrYa8A@8v zRa`48PaS1T{lQs$ z?C*%Gg---2%fRRuWi=-;-)YUF@p{-{>lXPXec!#PK(eOT2aVcAT}eJ>A*r9Wfi0I~ z$JrWsX4fdaRb)3;)bge=t7wJI5IeCQ|md*iqI| zEVN|{JxLt$?|RXMMO(T@uh11~x;E^r8&YIGNe?-H+VJXu$tM(mM2^_sH~mS`6PqvZ z5+ZBNU3Uj(8V=>*GIp@s-A0UYHFUo34)MXd?b?XG>b{`e1@HpSfAr&>%p2txp~Zni z@SkwQxvn(jYphN=O^ZXGV5Mxs?t^dUWI|j}InWijo!OMvyCoHO&2BXQbGu#v+1$e( zZ>C|XmHs8lYCfOis)W}z?C);4>;~0vyeUG9@CLT{%PvHy=cvJoacox{K28PpYmB!I zAKY@kg0t1R#AI*tGPC?Dft9H$y{at2ie`(2{N4knbY1UU*Fdx@^o2cAzf+3N$B1mF zPVKj_Qf(tw$crcLSUVB;k5t8QlzZx^>3DYW3(aj-vv8Vd9hp>cUPc#Qmi7+3wnJe~ zck1B>SOL|onGg<2HLMeNKE`DJTGHR{p;~fKkhPWQd~H~?)cbM&fv1-$w8&c0o78*R zZMQng4~7LzGAj_7$Al`{MP6AF-6v(tD7>EGW*lZoP5f1ia`+*_aBa0H(dl= zM7`owvl}nhTfi-6q;`j}-l|eeT?kr9qcc7LOqEv5QzA=bOn4O}@XWeQbr9QUjfeAQ zKL`6{BTpbSxpzt#nTJ_U*?v4>?h1Xq5}MP&MqzkG<}Co%@97U!!R3w6+Xb8WbCz$r zG+5rGe6!{D%@gpH0>p1U_#ZB!dK_DLNA+tY{-89bgBjgC+A=Aa(h7tGmo^l3y++(q zATTC~k!n{ea}Pt5tP(oy5QZKunY7G)yWmS=4f?^ofF|L<8ZL_Q{dq0qBpnYYy{4aR zZ0^lw=o=Fve;k`0p>{tl%0o4?xyqfw^D^G37-v5E(?}W$bEO{^`-J!%-b;uX>F=&r zv(>6|xSkJM;6kvmh_cy|*j}|x((c*Gvrs~%Ol0lS18=jfQhqtf`wGPEyK`ts-1gxe zv)Rn67g)f%qaW=78%v$l%!x^d6;TEsieaFZez{CB^m3hpkY7#(cDSa0KYmvT5*&j! zV)uD99OMMMpfRFV$iEjtrPEoVL<~%b8s+U;bHb3{Gl0UO%B|&cd&&C#cO|jgXVa;~ z5sk=)k<2M!b%cv$qao~OxL!t^yGP^?IsSCZFm_^bY+;yT`ikytRg;JCUqE*K9-=@_ z<6Ij6FzjUxY?yN^x=Z@M8LS9CbiZJ67lmkTSX|yG5sF7(?AXL1I)|IlnT(H!qcEpC z2&LkgLP1;4%oEDcCsa9FX~` zAP%YT8a&a3;{yBn@m!`tDw}e=#}(^{Utpi;`4)Ou>g5$HJupEeM}Il^5i=Sm{*EwP z!$9hCH9^ZUxaF9Y_7_}-#EN8<5Kdtw+1;|(*RqIIWiexjTIZgH#g2`bdtnO>bRP(? zR=+aB`ewYhaVb+L*HePV0iQrQ>Igj(j=dm{ng)P4iQQRb80#v9_rv>ys#`4XJJzZ} z7~hP&x!_NuJvx#-I$&{fbr05*h9qV&vRu7){b;NLq7}oL&9r@hskQq@#ylcE+%a!S z^dU3DwYBHKz>UQ)#+sC=dw}