From e0b7ae24e44823acf3d7a4fdedeeb456441c9e22 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Mon, 29 Nov 2021 14:11:32 -0500 Subject: [PATCH 01/13] PWA-2163 Create DynamicBlock component + Create config for PageBuilder usage --- .../__snapshots__/dynamicBlock.spec.js.snap | 57 ++++++ .../__tests__/configAggregator.spec.js | 17 ++ .../__tests__/dynamicBlock.spec.js | 57 ++++++ .../DynamicBlock/configAggregator.js | 9 + .../ContentTypes/DynamicBlock/dynamicBlock.js | 101 ++++++++++ .../lib/ContentTypes/DynamicBlock/index.js | 1 + packages/pagebuilder/lib/config.js | 5 + .../cmsDynamicBlock.spec.js.snap | 25 +++ .../__snapshots__/dynamicBlock.spec.js.snap | 7 + .../__tests__/cmsDynamicBlock.spec.js | 182 ++++++++++++++++++ .../__tests__/dynamicBlock.spec.js | 33 ++++ .../CmsDynamicBlock/cmsDynamicBlock.js | 79 ++++++++ .../CmsDynamicBlock/dynamicBlock.js | 32 +++ .../lib/components/CmsDynamicBlock/index.js | 1 + 14 files changed, 606 insertions(+) create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/index.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/dynamicBlock.spec.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/dynamicBlock.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/index.js diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap new file mode 100644 index 0000000000..89c44e814e --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap @@ -0,0 +1,57 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders a Dynamic Block component with custom classes 1`] = ` +
+ +
+`; + +exports[`renders a Dynamic Block component without custom classes 1`] = ` +
+ +
+`; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js new file mode 100644 index 0000000000..46fec7a413 --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js @@ -0,0 +1,17 @@ +import configAggregator from '../configAggregator'; + +test('dynamic block config aggregator retrieves data', () => { + const node = document.createElement('div'); + node.innerHTML = `
`; + + const aggregatedConfig = configAggregator(node.childNodes[0], { + appearance: 'default' + }); + + expect(aggregatedConfig).toEqual( + expect.objectContaining({ + displayMode: 'fixed', + uids: 'uids' + }) + ); +}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js new file mode 100644 index 0000000000..5a08d40989 --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js @@ -0,0 +1,57 @@ +import React from 'react'; + +import { createTestInstance } from '@magento/peregrine'; + +import DynamicBlock from '../dynamicBlock'; + +jest.mock( + '@magento/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock', + () => props => +); + +test('renders a Dynamic Block component without custom classes', () => { + const blockProps = { + displayMode: 'fixed', + uids: 'uids', + textAlign: 'right', + border: 'solid', + borderColor: 'red', + borderWidth: '10px', + borderRadius: '15px', + marginTop: '10px', + marginRight: '10px', + marginBottom: '10px', + marginLeft: '10px', + paddingTop: '10px', + paddingRight: '10px', + paddingBottom: '10px', + paddingLeft: '10px' + }; + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); +}); + +test('renders a Dynamic Block component with custom classes', () => { + const blockProps = { + displayMode: 'fixed', + uids: 'uids', + textAlign: 'right', + border: 'solid', + borderColor: 'red', + borderWidth: '10px', + borderRadius: '15px', + marginTop: '10px', + marginRight: '10px', + marginBottom: '10px', + marginLeft: '10px', + paddingTop: '10px', + paddingRight: '10px', + paddingBottom: '10px', + paddingLeft: '10px', + cssClasses: ['test-class'] + }; + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); +}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js new file mode 100644 index 0000000000..cef917385a --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js @@ -0,0 +1,9 @@ +import { getAdvanced } from '../../utils'; + +export default node => { + return { + displayMode: node.childNodes[0].getAttribute('data-display-mode'), + uids: node.childNodes[0].getAttribute('data-uids'), + ...getAdvanced(node) + }; +}; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js new file mode 100644 index 0000000000..f47e4b6982 --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js @@ -0,0 +1,101 @@ +import React from 'react'; +import { arrayOf, oneOf, string } from 'prop-types'; + +import CmsDynamicBlockGroup from '@magento/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock'; + +/** + * Page Builder Dynamic Block component. + * + * This component is part of the Page Builder / PWA integration. It can be consumed without Page Builder. + * + * @typedef DynamicBlock + * @kind functional component + * + * @param {props} props React component props + * + * @returns {React.Element} A React component that displays a Dynamic Block. + */ +const DynamicBlock = props => { + const { + displayMode, + uids, + textAlign, + border, + borderColor, + borderWidth, + borderRadius, + marginTop, + marginRight, + marginBottom, + marginLeft, + paddingTop, + paddingRight, + paddingBottom, + paddingLeft, + cssClasses = [] + } = props; + + const dynamicStyles = { + textAlign, + border, + borderColor, + borderWidth, + borderRadius, + marginTop, + marginRight, + marginBottom, + marginLeft, + paddingTop, + paddingRight, + paddingBottom, + paddingLeft + }; + + return ( +
+ +
+ ); +}; + +/** + * Props for {@link DynamicBlock} + * + * @typedef props + * + * @property {String} displayMode Display mode of the dynamic block + * @property {String} uids ID of the dynamic block + * @property {String} textAlign Alignment of the dynamic block within the parent container + * @property {String} border CSS border property + * @property {String} borderColor CSS border color property + * @property {String} borderWidth CSS border width property + * @property {String} borderRadius CSS border radius property + * @property {String} marginTop CSS margin top property + * @property {String} marginRight CSS margin right property + * @property {String} marginBottom CSS margin bottom property + * @property {String} marginLeft CSS margin left property + * @property {String} paddingTop CSS padding top property + * @property {String} paddingRight CSS padding right property + * @property {String} paddingBottom CSS padding bottom property + * @property {String} paddingLeft CSS padding left property + * @property {Array} cssClasses List of CSS classes to be applied to the component + */ +DynamicBlock.propTypes = { + displayMode: oneOf(['fixed', 'salesrule', 'catalogrule']), + uids: string, + textAlign: string, + border: string, + borderColor: string, + borderWidth: string, + borderRadius: string, + marginTop: string, + marginRight: string, + marginBottom: string, + marginLeft: string, + paddingTop: string, + paddingRight: string, + paddingBottom: string, + cssClasses: arrayOf(string) +}; + +export default DynamicBlock; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/index.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/index.js new file mode 100644 index 0000000000..f7143490ea --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/index.js @@ -0,0 +1 @@ +export { default } from './dynamicBlock'; diff --git a/packages/pagebuilder/lib/config.js b/packages/pagebuilder/lib/config.js index 713086df0a..849623452c 100644 --- a/packages/pagebuilder/lib/config.js +++ b/packages/pagebuilder/lib/config.js @@ -14,6 +14,7 @@ import Text from './ContentTypes/Text'; import tabsConfigAggregator from './ContentTypes/Tabs/configAggregator'; import tabItemConfigAggregator from './ContentTypes/TabItem/configAggregator'; import blockConfigAggregator from './ContentTypes/Block/configAggregator'; +import dynamicBlockConfigAggregator from './ContentTypes/DynamicBlock/configAggregator'; import productsConfigAggregator from './ContentTypes/Products/configAggregator'; import buttonsConfigAggregator from './ContentTypes/Buttons/configAggregator'; import buttonItemConfigAggregator from './ContentTypes/ButtonItem/configAggregator'; @@ -73,6 +74,10 @@ const contentTypesConfig = { configAggregator: blockConfigAggregator, component: React.lazy(() => import('./ContentTypes/Block')) }, + dynamic_block: { + configAggregator: dynamicBlockConfigAggregator, + component: React.lazy(() => import('./ContentTypes/DynamicBlock')) + }, products: { configAggregator: productsConfigAggregator, component: React.lazy(() => import('./ContentTypes/Products')) diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap new file mode 100644 index 0000000000..6d322a5491 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`#CmsDynamicBlock renders DynamicBlock when data with type fixed 1`] = ` + +`; + +exports[`#CmsDynamicBlock renders ErrorView when error 1`] = ` + +`; + +exports[`#CmsDynamicBlock renders null when items are empty 1`] = `null`; + +exports[`#CmsDynamicBlock renders null when loading 1`] = `null`; + +exports[`#CmsDynamicBlock renders null when no data 1`] = `null`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap new file mode 100644 index 0000000000..2a10022f1f --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap @@ -0,0 +1,7 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`#DynamicBlock renders 1`] = ` + +`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js new file mode 100644 index 0000000000..39e4375ea5 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js @@ -0,0 +1,182 @@ +import React from 'react'; +import { useQuery } from '@apollo/client'; + +import { createTestInstance } from '@magento/peregrine'; + +import CmsDynamicBlock, { + GET_CMS_DYNAMIC_BLOCKS, + fixedType, + salesRuleType, + catalogPriceRuleType +} from '../cmsDynamicBlock'; + +const mockUids = 'uids'; + +jest.mock('@apollo/client', () => ({ + gql: jest.fn(), + useQuery: jest.fn() +})); + +jest.mock('@magento/venia-ui/lib/components/ErrorView', () => props => ( + +)); +jest.mock('../DynamicBlock', () => props => ); + +let inputProps = {}; + +const Component = () => { + return ; +}; + +const givenDefaultValues = () => { + inputProps = { + displayMode: 'fixed', + uids: mockUids + }; +}; + +const givenCatalogRuleType = () => { + inputProps = { + displayMode: 'catalogrule', + uids: mockUids + }; +}; + +const givenSalesRuleType = () => { + inputProps = { + displayMode: 'salesrule', + uids: mockUids + }; +}; + +const givenUnknownType = () => { + inputProps = { + displayMode: 'test', + uids: mockUids + }; +}; + +describe('#CmsDynamicBlock', () => { + beforeEach(() => { + givenDefaultValues(); + }); + + it('renders null when loading', () => { + useQuery.mockReturnValue({ + data: null, + loading: true + }); + + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders ErrorView when error', () => { + useQuery.mockReturnValue({ + data: null, + loading: false, + error: { + message: 'Error' + } + }); + + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders null when no data', () => { + useQuery.mockReturnValue({ + data: null, + loading: false + }); + + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders null when items are empty', () => { + useQuery.mockReturnValue({ + data: { + dynamicBlocks: { + items: [] + } + }, + loading: false + }); + + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders DynamicBlock when data with type fixed', () => { + useQuery.mockReturnValue({ + data: { + dynamicBlocks: { + items: [ + { + content: { + html: 'Hello World' + }, + uid: 'uid' + } + ] + } + }, + loading: false + }); + + const component = createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { type: fixedType, uids: mockUids } + }) + ); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders useQuery with type catalogrule', () => { + givenCatalogRuleType(); + + createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { type: catalogPriceRuleType, uids: mockUids } + }) + ); + }); + + it('renders useQuery with type salesrule', () => { + givenSalesRuleType(); + + createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { type: salesRuleType, uids: mockUids } + }) + ); + }); + + it('renders useQuery with unknown type', () => { + givenUnknownType(); + + createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { type: fixedType, uids: mockUids } + }) + ); + }); +}); diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/dynamicBlock.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/dynamicBlock.spec.js new file mode 100644 index 0000000000..bf88a8088d --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/dynamicBlock.spec.js @@ -0,0 +1,33 @@ +import React from 'react'; + +import { createTestInstance } from '@magento/peregrine'; + +import DynamicBlock from '../dynamicBlock'; + +jest.mock('../../RichContent', () => props => ); + +let inputProps = {}; + +const Component = () => { + return ; +}; + +const givenDefaultValues = () => { + inputProps = { + content: { + html: 'Hello World' + } + }; +}; + +describe('#DynamicBlock', () => { + beforeEach(() => { + givenDefaultValues(); + }); + + it('renders', () => { + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js new file mode 100644 index 0000000000..88fd064281 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js @@ -0,0 +1,79 @@ +import React from 'react'; +import { array, oneOf, oneOfType, string } from 'prop-types'; +import { gql, useQuery } from '@apollo/client'; + +import ErrorView from '@magento/venia-ui/lib/components/ErrorView'; + +import DynamicBlock from './dynamicBlock'; + +export const fixedType = `SPECIFIED`; +export const salesRuleType = `CART_PRICE_RULE_RELATED`; +export const catalogPriceRuleType = `CATALOG_PRICE_RULE_RELATED`; + +const getType = displayMode => { + if (displayMode === 'fixed') { + return fixedType; + } else if (displayMode === 'salesrule') { + return salesRuleType; + } else if (displayMode === 'catalogrule') { + return catalogPriceRuleType; + } + + return fixedType; +}; + +const CmsDynamicBlockGroup = props => { + const { displayMode, uids } = props; + + const type = getType(displayMode); + + const { loading, error, data } = useQuery(GET_CMS_DYNAMIC_BLOCKS, { + variables: { type, uids }, + fetchPolicy: 'cache-and-network', + nextFetchPolicy: 'cache-first' + }); + + if (!data) { + if (loading) { + return null; + } + + if (error) { + return ; + } + } + + const { items } = data?.dynamicBlocks || {}; + + if (!Array.isArray(items) || !items.length) { + return null; + } + + return items.map((item, index) => ( + + )); +}; + +CmsDynamicBlockGroup.defaultProps = { + displayMode: 'fixed' +}; + +CmsDynamicBlockGroup.propTypes = { + displayMode: oneOf(['fixed', 'salesrule', 'catalogrule']), + uids: oneOfType([string, array]) +}; + +export default CmsDynamicBlockGroup; + +export const GET_CMS_DYNAMIC_BLOCKS = gql` + query dynamicBlocks($type: DynamicBlockTypeEnum!, $uids: [ID]!) { + dynamicBlocks(input: { dynamic_block_uids: $uids, type: $type }) { + items { + content { + html + } + uid + } + } + } +`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/dynamicBlock.js b/packages/venia-ui/lib/components/CmsDynamicBlock/dynamicBlock.js new file mode 100644 index 0000000000..42a5aa2626 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/dynamicBlock.js @@ -0,0 +1,32 @@ +import React from 'react'; +import { shape, string } from 'prop-types'; + +import RichContent from '../RichContent'; + +/** + * CMS Dynamic Block component. + * + * @typedef DynamicBlock + * @kind functional component + * + * @param {props} props React component props + * + * @returns {React.Element} A React component that displays a CMS Dynamic Block. + */ +const DynamicBlock = ({ content }) => ; + +/** + * Props for {@link DynamicBlock} + * + * @typedef props + * + * @property {Object} content Content object of the Dynamic Block + * @property {String} content.html Rich content of the Dynamic Block + */ +DynamicBlock.propTypes = { + content: shape({ + html: string + }) +}; + +export default DynamicBlock; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/index.js b/packages/venia-ui/lib/components/CmsDynamicBlock/index.js new file mode 100644 index 0000000000..fdf64baa96 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/index.js @@ -0,0 +1 @@ +export { default } from './cmsBlock'; From d3f92f17c5a8872b4ceea16b75f300bf19d8f477 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Tue, 30 Nov 2021 15:29:12 -0500 Subject: [PATCH 02/13] PWA-2169 Make feature EE only + Refetch data if user signs in + Update tests --- .../dynamicBlock.ce.spec.js.snap | 3 + ...c.js.snap => dynamicBlock.ee.spec.js.snap} | 34 ++++- .../__tests__/configAggregator.spec.js | 24 ++- .../__tests__/dynamicBlock.ce.spec.js | 17 +++ .../__tests__/dynamicBlock.ee.spec.js | 59 ++++++++ .../__tests__/dynamicBlock.spec.js | 57 ------- .../DynamicBlock/configAggregator.js | 15 +- .../DynamicBlock/dynamicBlock.ce.js | 5 + .../{dynamicBlock.js => dynamicBlock.ee.js} | 24 ++- .../DynamicBlock/dynamicBlock.module.css | 8 + .../cmsDynamicBlock.ce.spec.js.snap | 3 + .../cmsDynamicBlock.ee.spec.js.snap | 45 ++++++ .../cmsDynamicBlock.spec.js.snap | 25 --- .../__tests__/cmsDynamicBlock.ce.spec.js | 17 +++ ...ock.spec.js => cmsDynamicBlock.ee.spec.js} | 142 ++++++++++++++---- .../CmsDynamicBlock/cmsDynamicBlock.ce.js | 5 + .../CmsDynamicBlock/cmsDynamicBlock.ee.js | 102 +++++++++++++ .../CmsDynamicBlock/cmsDynamicBlock.js | 79 ---------- 18 files changed, 451 insertions(+), 213 deletions(-) create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ce.spec.js.snap rename packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/{dynamicBlock.spec.js.snap => dynamicBlock.ee.spec.js.snap} (55%) create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ce.spec.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js delete mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ce.js rename packages/pagebuilder/lib/ContentTypes/DynamicBlock/{dynamicBlock.js => dynamicBlock.ee.js} (75%) create mode 100644 packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.module.css create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ce.spec.js.snap create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ee.spec.js.snap delete mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ce.spec.js rename packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/{cmsDynamicBlock.spec.js => cmsDynamicBlock.ee.spec.js} (55%) create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ce.js create mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js delete mode 100644 packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ce.spec.js.snap b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ce.spec.js.snap new file mode 100644 index 0000000000..42a948a7f4 --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ce.spec.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`#PageBuilder DynamicBlock CE renders 1`] = `null`; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap similarity index 55% rename from packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap rename to packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap index 89c44e814e..9efe1d9285 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.spec.js.snap +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap @@ -1,8 +1,36 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`renders a Dynamic Block component with custom classes 1`] = ` +exports[`#PageBuilder DynamicBlock EE renders a Dynamic Block component inlined 1`] = ` + + + +`; + +exports[`#PageBuilder DynamicBlock EE renders a Dynamic Block component with custom classes 1`] = `
`; -exports[`renders a Dynamic Block component without custom classes 1`] = ` +exports[`#PageBuilder DynamicBlock EE renders a Dynamic Block component without custom classes 1`] = `
{ +test('dynamic block config aggregator retrieves data and display block', () => { const node = document.createElement('div'); - node.innerHTML = `
`; + node.innerHTML = `
`; - const aggregatedConfig = configAggregator(node.childNodes[0], { - appearance: 'default' - }); + const aggregatedConfig = configAggregator(node.childNodes[0]); expect(aggregatedConfig).toEqual( expect.objectContaining({ + displayInline: false, + displayMode: 'fixed', + uids: 'uids' + }) + ); +}); + +test('dynamic block config aggregator retrieves data and display inline', () => { + const node = document.createElement('div'); + node.innerHTML = `
`; + + const aggregatedConfig = configAggregator(node.childNodes[0]); + + expect(aggregatedConfig).toEqual( + expect.objectContaining({ + displayInline: true, displayMode: 'fixed', uids: 'uids' }) diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ce.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ce.spec.js new file mode 100644 index 0000000000..fb499a167d --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ce.spec.js @@ -0,0 +1,17 @@ +import React from 'react'; + +import { createTestInstance } from '@magento/peregrine'; + +import DynamicBlock from '../dynamicBlock.ce'; + +const Component = () => { + return ; +}; + +describe('#PageBuilder DynamicBlock CE', () => { + it('renders', () => { + const tree = createTestInstance(); + + expect(tree.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js new file mode 100644 index 0000000000..034304be5a --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js @@ -0,0 +1,59 @@ +import React from 'react'; + +import { createTestInstance } from '@magento/peregrine'; + +import DynamicBlock from '../dynamicBlock.ee'; + +jest.mock( + '@magento/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock', + () => props => +); + +const defaultProps = { + displayInline: false, + displayMode: 'fixed', + uids: 'uids', + textAlign: 'right', + border: 'solid', + borderColor: 'red', + borderWidth: '10px', + borderRadius: '15px', + marginTop: '10px', + marginRight: '10px', + marginBottom: '10px', + marginLeft: '10px', + paddingTop: '10px', + paddingRight: '10px', + paddingBottom: '10px', + paddingLeft: '10px' +}; + +describe('#PageBuilder DynamicBlock EE', () => { + it('renders a Dynamic Block component without custom classes', () => { + const component = createTestInstance( + + ); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders a Dynamic Block component with custom classes', () => { + const blockProps = { + ...defaultProps, + cssClasses: ['test-class'] + }; + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); + + it('renders a Dynamic Block component inlined', () => { + const blockProps = { + ...defaultProps, + displayInline: true + }; + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js deleted file mode 100644 index 5a08d40989..0000000000 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; - -import { createTestInstance } from '@magento/peregrine'; - -import DynamicBlock from '../dynamicBlock'; - -jest.mock( - '@magento/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock', - () => props => -); - -test('renders a Dynamic Block component without custom classes', () => { - const blockProps = { - displayMode: 'fixed', - uids: 'uids', - textAlign: 'right', - border: 'solid', - borderColor: 'red', - borderWidth: '10px', - borderRadius: '15px', - marginTop: '10px', - marginRight: '10px', - marginBottom: '10px', - marginLeft: '10px', - paddingTop: '10px', - paddingRight: '10px', - paddingBottom: '10px', - paddingLeft: '10px' - }; - const component = createTestInstance(); - - expect(component.toJSON()).toMatchSnapshot(); -}); - -test('renders a Dynamic Block component with custom classes', () => { - const blockProps = { - displayMode: 'fixed', - uids: 'uids', - textAlign: 'right', - border: 'solid', - borderColor: 'red', - borderWidth: '10px', - borderRadius: '15px', - marginTop: '10px', - marginRight: '10px', - marginBottom: '10px', - marginLeft: '10px', - paddingTop: '10px', - paddingRight: '10px', - paddingBottom: '10px', - paddingLeft: '10px', - cssClasses: ['test-class'] - }; - const component = createTestInstance(); - - expect(component.toJSON()).toMatchSnapshot(); -}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js index cef917385a..efc9ebe433 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js @@ -1,9 +1,10 @@ import { getAdvanced } from '../../utils'; -export default node => { - return { - displayMode: node.childNodes[0].getAttribute('data-display-mode'), - uids: node.childNodes[0].getAttribute('data-uids'), - ...getAdvanced(node) - }; -}; +export default node => ({ + displayInline: node.childNodes[0] + .getAttribute('class') + .includes('block-banners-inline'), + displayMode: node.childNodes[0].getAttribute('data-display-mode'), + uids: node.childNodes[0].getAttribute('data-uids'), + ...getAdvanced(node) +}); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ce.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ce.js new file mode 100644 index 0000000000..7d70ceac3d --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ce.js @@ -0,0 +1,5 @@ +/** + * Dynamic Block is an EE-only feature for now. + * Here in CE, don't render the component at all. + */ +export default () => null; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js similarity index 75% rename from packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js rename to packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js index f47e4b6982..6e5da69a92 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js @@ -1,7 +1,9 @@ import React from 'react'; -import { arrayOf, oneOf, string } from 'prop-types'; +import { arrayOf, bool, oneOf, shape, string } from 'prop-types'; +import { useStyle } from '@magento/venia-ui/lib/classify'; import CmsDynamicBlockGroup from '@magento/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock'; +import defaultClasses from './dynamicBlock.module.css'; /** * Page Builder Dynamic Block component. @@ -16,7 +18,9 @@ import CmsDynamicBlockGroup from '@magento/venia-ui/lib/components/CmsDynamicBlo * @returns {React.Element} A React component that displays a Dynamic Block. */ const DynamicBlock = props => { + const classes = useStyle(defaultClasses, props.classes); const { + displayInline, displayMode, uids, textAlign, @@ -51,10 +55,15 @@ const DynamicBlock = props => { paddingLeft }; + const RootTag = displayInline ? 'span' : 'div'; + return ( -
+ -
+ ); }; @@ -63,9 +72,12 @@ const DynamicBlock = props => { * * @typedef props * + * @property {Object} classes An object containing the class names for the component + * @property {String} classes.root CSS class for the component root element + * @property {Boolean} displayInline Select display inline or display block * @property {String} displayMode Display mode of the dynamic block * @property {String} uids ID of the dynamic block - * @property {String} textAlign Alignment of the dynamic block within the parent container + * @property {String} textAlign Alignment of the component within the parent container * @property {String} border CSS border property * @property {String} borderColor CSS border color property * @property {String} borderWidth CSS border width property @@ -81,6 +93,10 @@ const DynamicBlock = props => { * @property {Array} cssClasses List of CSS classes to be applied to the component */ DynamicBlock.propTypes = { + classes: shape({ + root: string + }), + displayInline: bool, displayMode: oneOf(['fixed', 'salesrule', 'catalogrule']), uids: string, textAlign: string, diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.module.css b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.module.css new file mode 100644 index 0000000000..c6c06034de --- /dev/null +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.module.css @@ -0,0 +1,8 @@ +.root:empty { + display: none; +} + +.root_inline { + composes: root; + display: inline-block; +} diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ce.spec.js.snap b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ce.spec.js.snap new file mode 100644 index 0000000000..2d4ac5d3c4 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ce.spec.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`#CmsDynamicBlock CE renders 1`] = `null`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ee.spec.js.snap b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ee.spec.js.snap new file mode 100644 index 0000000000..f3ca953a8c --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.ee.spec.js.snap @@ -0,0 +1,45 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`#CmsDynamicBlock EE renders DynamicBlock when data with type fixed 1`] = ` + +`; + +exports[`#CmsDynamicBlock EE renders ErrorView when error 1`] = `null`; + +exports[`#CmsDynamicBlock EE renders null when items are empty 1`] = ` + +`; + +exports[`#CmsDynamicBlock EE renders null when loading 1`] = ` + +`; + +exports[`#CmsDynamicBlock EE renders null when no data 1`] = ` + +`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap deleted file mode 100644 index 6d322a5491..0000000000 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/__snapshots__/cmsDynamicBlock.spec.js.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`#CmsDynamicBlock renders DynamicBlock when data with type fixed 1`] = ` - -`; - -exports[`#CmsDynamicBlock renders ErrorView when error 1`] = ` - -`; - -exports[`#CmsDynamicBlock renders null when items are empty 1`] = `null`; - -exports[`#CmsDynamicBlock renders null when loading 1`] = `null`; - -exports[`#CmsDynamicBlock renders null when no data 1`] = `null`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ce.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ce.spec.js new file mode 100644 index 0000000000..f9cfc791d0 --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ce.spec.js @@ -0,0 +1,17 @@ +import React from 'react'; + +import { createTestInstance } from '@magento/peregrine'; + +import CmsDynamicBlock from '../cmsDynamicBlock.ce'; + +const Component = () => { + return ; +}; + +describe('#CmsDynamicBlock CE', () => { + it('renders', () => { + const tree = createTestInstance(); + + expect(tree.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js similarity index 55% rename from packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js rename to packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js index 39e4375ea5..c4e50f83e9 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.spec.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js @@ -1,22 +1,37 @@ -import React from 'react'; +import React, { useRef } from 'react'; +import { act } from 'react-test-renderer'; import { useQuery } from '@apollo/client'; import { createTestInstance } from '@magento/peregrine'; +import { useUserContext } from '@magento/peregrine/lib/context/user'; import CmsDynamicBlock, { - GET_CMS_DYNAMIC_BLOCKS, - fixedType, - salesRuleType, - catalogPriceRuleType -} from '../cmsDynamicBlock'; + DYNAMIC_BLOCK_FIXED_TYPE, + DYNAMIC_BLOCK_SALES_RULE_TYPE, + DYNAMIC_BLOCK_CATALOG_RULE_TYPE, + GET_CMS_DYNAMIC_BLOCKS +} from '../cmsDynamicBlock.ee'; const mockUids = 'uids'; +const mockLocations = ['CONTENT']; +const mockRefetch = jest.fn(); + +jest.mock('react', () => ({ + ...jest.requireActual('react'), + useRef: jest.fn().mockReturnValue({ + current: false + }) +})); jest.mock('@apollo/client', () => ({ gql: jest.fn(), useQuery: jest.fn() })); +jest.mock('@magento/peregrine/lib/context/user', () => ({ + useUserContext: jest.fn().mockReturnValue([{ isSignedIn: false }]) +})); + jest.mock('@magento/venia-ui/lib/components/ErrorView', () => props => ( )); @@ -56,13 +71,37 @@ const givenUnknownType = () => { }; }; -describe('#CmsDynamicBlock', () => { +const givenLocations = () => { + inputProps = { + locations: mockLocations, + uids: mockUids + }; +}; + +describe('#CmsDynamicBlock EE', () => { beforeEach(() => { givenDefaultValues(); + + useQuery.mockReturnValueOnce({ + data: { + dynamicBlocks: { + items: [ + { + content: { + html: 'Hello World' + }, + uid: 'uid' + } + ] + } + }, + loading: false, + refetch: mockRefetch + }); }); it('renders null when loading', () => { - useQuery.mockReturnValue({ + useQuery.mockReturnValueOnce({ data: null, loading: true }); @@ -73,7 +112,7 @@ describe('#CmsDynamicBlock', () => { }); it('renders ErrorView when error', () => { - useQuery.mockReturnValue({ + useQuery.mockReturnValueOnce({ data: null, loading: false, error: { @@ -87,7 +126,7 @@ describe('#CmsDynamicBlock', () => { }); it('renders null when no data', () => { - useQuery.mockReturnValue({ + useQuery.mockReturnValueOnce({ data: null, loading: false }); @@ -113,35 +152,19 @@ describe('#CmsDynamicBlock', () => { }); it('renders DynamicBlock when data with type fixed', () => { - useQuery.mockReturnValue({ - data: { - dynamicBlocks: { - items: [ - { - content: { - html: 'Hello World' - }, - uid: 'uid' - } - ] - } - }, - loading: false - }); - const component = createTestInstance(); expect(useQuery).toHaveBeenCalledWith( GET_CMS_DYNAMIC_BLOCKS, expect.objectContaining({ - variables: { type: fixedType, uids: mockUids } + variables: { type: DYNAMIC_BLOCK_FIXED_TYPE, uids: mockUids } }) ); expect(component.toJSON()).toMatchSnapshot(); }); - it('renders useQuery with type catalogrule', () => { + it('calls useQuery with type catalogrule', () => { givenCatalogRuleType(); createTestInstance(); @@ -149,12 +172,15 @@ describe('#CmsDynamicBlock', () => { expect(useQuery).toHaveBeenCalledWith( GET_CMS_DYNAMIC_BLOCKS, expect.objectContaining({ - variables: { type: catalogPriceRuleType, uids: mockUids } + variables: { + type: DYNAMIC_BLOCK_CATALOG_RULE_TYPE, + uids: mockUids + } }) ); }); - it('renders useQuery with type salesrule', () => { + it('calls useQuery with type salesrule', () => { givenSalesRuleType(); createTestInstance(); @@ -162,12 +188,15 @@ describe('#CmsDynamicBlock', () => { expect(useQuery).toHaveBeenCalledWith( GET_CMS_DYNAMIC_BLOCKS, expect.objectContaining({ - variables: { type: salesRuleType, uids: mockUids } + variables: { + type: DYNAMIC_BLOCK_SALES_RULE_TYPE, + uids: mockUids + } }) ); }); - it('renders useQuery with unknown type', () => { + it('calls useQuery with unknown type', () => { givenUnknownType(); createTestInstance(); @@ -175,8 +204,55 @@ describe('#CmsDynamicBlock', () => { expect(useQuery).toHaveBeenCalledWith( GET_CMS_DYNAMIC_BLOCKS, expect.objectContaining({ - variables: { type: fixedType, uids: mockUids } + variables: { type: DYNAMIC_BLOCK_FIXED_TYPE, uids: mockUids } + }) + ); + }); + + it('calls useQuery with locations', () => { + givenLocations(); + + createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { + type: DYNAMIC_BLOCK_FIXED_TYPE, + locations: mockLocations, + uids: mockUids + } + }) + ); + }); + + it('calls useQuery with locations', () => { + givenLocations(); + + createTestInstance(); + + expect(useQuery).toHaveBeenCalledWith( + GET_CMS_DYNAMIC_BLOCKS, + expect.objectContaining({ + variables: { + type: DYNAMIC_BLOCK_FIXED_TYPE, + locations: mockLocations, + uids: mockUids + } }) ); }); + + it('refetches data when user signs in', () => { + const tree = createTestInstance(); + + // Sign in + act(() => { + useUserContext.mockReturnValueOnce([{ isSignedIn: true }]); + + tree.update(); + }); + + expect(mockRefetch).toHaveBeenCalled(); + }); }); diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ce.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ce.js new file mode 100644 index 0000000000..7d70ceac3d --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ce.js @@ -0,0 +1,5 @@ +/** + * Dynamic Block is an EE-only feature for now. + * Here in CE, don't render the component at all. + */ +export default () => null; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js new file mode 100644 index 0000000000..54e24317bd --- /dev/null +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js @@ -0,0 +1,102 @@ +import React, { useEffect, useRef } from 'react'; +import { array, oneOf, oneOfType, string } from 'prop-types'; +import { gql, useQuery } from '@apollo/client'; + +import { useUserContext } from '@magento/peregrine/lib/context/user'; +import ErrorView from '@magento/venia-ui/lib/components/ErrorView'; + +import DynamicBlock from './dynamicBlock'; + +export const DYNAMIC_BLOCK_FIXED_TYPE = `SPECIFIED`; +export const DYNAMIC_BLOCK_SALES_RULE_TYPE = `CART_PRICE_RULE_RELATED`; +export const DYNAMIC_BLOCK_CATALOG_RULE_TYPE = `CATALOG_PRICE_RULE_RELATED`; + +const getDynamicBlockType = displayMode => { + if (displayMode === 'fixed') { + return DYNAMIC_BLOCK_FIXED_TYPE; + } else if (displayMode === 'salesrule') { + return DYNAMIC_BLOCK_SALES_RULE_TYPE; + } else if (displayMode === 'catalogrule') { + return DYNAMIC_BLOCK_CATALOG_RULE_TYPE; + } + + return DYNAMIC_BLOCK_FIXED_TYPE; +}; + +const CmsDynamicBlockGroup = props => { + const { displayMode, locations, uids } = props; + + const [{ isSignedIn }] = useUserContext(); + const currentUserState = useRef(isSignedIn); + + const type = getDynamicBlockType(displayMode); + + const { loading, error, data, refetch } = useQuery(GET_CMS_DYNAMIC_BLOCKS, { + variables: { type, locations, uids }, + fetchPolicy: 'cache-and-network', + nextFetchPolicy: 'cache-first' + }); + + // Refecth data only when user signs in and was not already signed in + useEffect(() => { + if (currentUserState.current !== isSignedIn && isSignedIn) { + refetch(); + currentUserState.current = isSignedIn; + } + }, [isSignedIn, refetch]); + + if (!data) { + if (loading) { + return null; + } + + if (error) { + return ; + } + } + + const { items } = data?.dynamicBlocks || {}; + + if (!Array.isArray(items) || !items.length) { + return null; + } + + return items.map((item, index) => ( + + )); +}; + +CmsDynamicBlockGroup.defaultProps = { + displayMode: 'fixed' +}; + +CmsDynamicBlockGroup.propTypes = { + displayMode: oneOf(['fixed', 'salesrule', 'catalogrule']), + locations: array, + uids: oneOfType([string, array]).isRequired +}; + +export default CmsDynamicBlockGroup; + +export const GET_CMS_DYNAMIC_BLOCKS = gql` + query dynamicBlocks( + $type: DynamicBlockTypeEnum! + $locations: [String] + $uids: [ID]! + ) { + dynamicBlocks( + input: { + dynamic_block_uids: $uids + locations: $locations + type: $type + } + ) { + items { + content { + html + } + uid + } + } + } +`; diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js deleted file mode 100644 index 88fd064281..0000000000 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.js +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; -import { array, oneOf, oneOfType, string } from 'prop-types'; -import { gql, useQuery } from '@apollo/client'; - -import ErrorView from '@magento/venia-ui/lib/components/ErrorView'; - -import DynamicBlock from './dynamicBlock'; - -export const fixedType = `SPECIFIED`; -export const salesRuleType = `CART_PRICE_RULE_RELATED`; -export const catalogPriceRuleType = `CATALOG_PRICE_RULE_RELATED`; - -const getType = displayMode => { - if (displayMode === 'fixed') { - return fixedType; - } else if (displayMode === 'salesrule') { - return salesRuleType; - } else if (displayMode === 'catalogrule') { - return catalogPriceRuleType; - } - - return fixedType; -}; - -const CmsDynamicBlockGroup = props => { - const { displayMode, uids } = props; - - const type = getType(displayMode); - - const { loading, error, data } = useQuery(GET_CMS_DYNAMIC_BLOCKS, { - variables: { type, uids }, - fetchPolicy: 'cache-and-network', - nextFetchPolicy: 'cache-first' - }); - - if (!data) { - if (loading) { - return null; - } - - if (error) { - return ; - } - } - - const { items } = data?.dynamicBlocks || {}; - - if (!Array.isArray(items) || !items.length) { - return null; - } - - return items.map((item, index) => ( - - )); -}; - -CmsDynamicBlockGroup.defaultProps = { - displayMode: 'fixed' -}; - -CmsDynamicBlockGroup.propTypes = { - displayMode: oneOf(['fixed', 'salesrule', 'catalogrule']), - uids: oneOfType([string, array]) -}; - -export default CmsDynamicBlockGroup; - -export const GET_CMS_DYNAMIC_BLOCKS = gql` - query dynamicBlocks($type: DynamicBlockTypeEnum!, $uids: [ID]!) { - dynamicBlocks(input: { dynamic_block_uids: $uids, type: $type }) { - items { - content { - html - } - uid - } - } - } -`; From 7a6ec150d9a9247dd78100a5267146b2a9d7a9a5 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Tue, 30 Nov 2021 16:14:21 -0500 Subject: [PATCH 03/13] PWA-2169 Fix GraphQl call --- .../lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js index 54e24317bd..be5435ef61 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js @@ -81,7 +81,7 @@ export default CmsDynamicBlockGroup; export const GET_CMS_DYNAMIC_BLOCKS = gql` query dynamicBlocks( $type: DynamicBlockTypeEnum! - $locations: [String] + $locations: [DynamicBlockLocationEnum] $uids: [ID]! ) { dynamicBlocks( From fc92e2bf0911701841561311f329f8d88d29378d Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Tue, 30 Nov 2021 17:01:24 -0500 Subject: [PATCH 04/13] PWA-2169 Fix lint error --- .../CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js index c4e50f83e9..7540013f84 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js @@ -1,4 +1,4 @@ -import React, { useRef } from 'react'; +import React from 'react'; import { act } from 'react-test-renderer'; import { useQuery } from '@apollo/client'; From 65a9dff0a20ddcb13b901779184869f3cbc34841 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Fri, 3 Dec 2021 14:43:28 -0500 Subject: [PATCH 05/13] PWA-2169 Clean snapshots --- .../__snapshots__/useCategory.spec.js.snap | 54 ------------------- .../useCategoryContent.spec.js.snap | 45 ---------------- 2 files changed, 99 deletions(-) diff --git a/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategory.spec.js.snap b/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategory.spec.js.snap index a9909b7425..fe8b61f68c 100644 --- a/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategory.spec.js.snap +++ b/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategory.spec.js.snap @@ -1,59 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`returns the correct shape 1`] = ` -Object { - "categoryData": Object { - "category": Object { - "meta_description": "Category meta-description", - }, - "products": Object { - "page_info": Object { - "total_pages": 6, - }, - }, - }, - "error": null, - "loading": false, - "metaDescription": "Category meta-description", - "pageControl": Object { - "currentPage": 3, - "setPage": [MockFunction], - "totalPages": 6, - }, - "pageSize": 12, - "sortProps": Array [ - Object { - "sortAttribute": "relevance", - "sortDirection": "DESC", - "sortText": "Best Match", - }, - [MockFunction], - ], -} -`; - -exports[`runs the category query 1`] = ` -Object { - "variables": Object { - "currentPage": 3, - "filters": Object { - "category_id": Object { - "eq": "7", - }, - "price": Object { - "from": "0", - "to": "100", - }, - }, - "id": 7, - "pageSize": 12, - "sort": Object { - "relevance": "DESC", - }, - }, -} -`; - exports[`useCategory tests returns the correct shape 1`] = ` Object { "categoryData": Object { diff --git a/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategoryContent.spec.js.snap b/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategoryContent.spec.js.snap index d44de62358..065d6212ae 100644 --- a/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategoryContent.spec.js.snap +++ b/packages/peregrine/lib/talons/RootComponents/Category/__tests__/__snapshots__/useCategoryContent.spec.js.snap @@ -1,50 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`handles no data prop 1`] = ` -Object { - "categoryDescription": "Jewelry category", - "categoryName": "Jewelry", - "filters": null, - "items": Array [ - null, - null, - null, - null, - null, - null, - null, - null, - null, - ], - "totalCount": null, - "totalPagesFromData": null, -} -`; - -exports[`returns the proper shape 1`] = ` -Object { - "categoryDescription": "Jewelry category", - "categoryName": "Jewelry", - "filters": Array [ - Object { - "label": "Label", - }, - ], - "items": Array [ - Object { - "id": 1, - "name": "Ring", - }, - Object { - "id": 2, - "name": "Necklace", - }, - ], - "totalCount": 2, - "totalPagesFromData": 1, -} -`; - exports[`useCategoryContent tests handles no data prop 1`] = ` Object { "categoryDescription": "Jewelry category", From b5b3d2f293db9f24d2e114fde5232a20920a458f Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Fri, 3 Dec 2021 15:35:11 -0500 Subject: [PATCH 06/13] PWA-2169 Fix file name issue --- .../CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js index 7540013f84..b14733881b 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js @@ -35,7 +35,7 @@ jest.mock('@magento/peregrine/lib/context/user', () => ({ jest.mock('@magento/venia-ui/lib/components/ErrorView', () => props => ( )); -jest.mock('../DynamicBlock', () => props => ); +jest.mock('../dynamicBlock', () => props => ); let inputProps = {}; From daac452623d72a3c731906b908b267914fb53b53 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Mon, 6 Dec 2021 14:14:59 -0500 Subject: [PATCH 07/13] PWA-2169 Avoid loading broken block --- .../dynamicBlock.ee.spec.js.snap | 2 ++ .../__tests__/configAggregator.spec.js | 9 ++++++++ .../__tests__/dynamicBlock.ee.spec.js | 10 +++++++++ .../DynamicBlock/configAggregator.js | 22 ++++++++++++------- .../DynamicBlock/dynamicBlock.ee.js | 7 +++++- .../dynamicBlock/dynamicBlock.json | 6 ++--- 6 files changed, 44 insertions(+), 12 deletions(-) diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap index 9efe1d9285..81cce20a0b 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/__snapshots__/dynamicBlock.ee.spec.js.snap @@ -1,5 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`#PageBuilder DynamicBlock EE does not render a Dynamic Block component when no uids are provided 1`] = `null`; + exports[`#PageBuilder DynamicBlock EE renders a Dynamic Block component inlined 1`] = ` { + const node = document.createElement('div'); + node.innerHTML = `
`; + + const aggregatedConfig = configAggregator(node.childNodes[0]); + + expect(aggregatedConfig).toEqual({}); +}); + test('dynamic block config aggregator retrieves data and display block', () => { const node = document.createElement('div'); node.innerHTML = `
`; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js index 034304be5a..2266d496c8 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/dynamicBlock.ee.spec.js @@ -56,4 +56,14 @@ describe('#PageBuilder DynamicBlock EE', () => { expect(component.toJSON()).toMatchSnapshot(); }); + + it('does not render a Dynamic Block component when no uids are provided', () => { + const blockProps = { + ...defaultProps, + uids: undefined + }; + const component = createTestInstance(); + + expect(component.toJSON()).toMatchSnapshot(); + }); }); diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js index efc9ebe433..c63eaaff40 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js @@ -1,10 +1,16 @@ import { getAdvanced } from '../../utils'; -export default node => ({ - displayInline: node.childNodes[0] - .getAttribute('class') - .includes('block-banners-inline'), - displayMode: node.childNodes[0].getAttribute('data-display-mode'), - uids: node.childNodes[0].getAttribute('data-uids'), - ...getAdvanced(node) -}); +export default node => { + if (!node.childNodes[0]) { + return {}; + } + + return { + displayInline: node.childNodes[0] + .getAttribute('class') + .includes('block-banners-inline'), + displayMode: node.childNodes[0].getAttribute('data-display-mode'), + uids: node.childNodes[0].getAttribute('data-uids'), + ...getAdvanced(node) + }; +}; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js index 6e5da69a92..504d39aad8 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js @@ -22,7 +22,7 @@ const DynamicBlock = props => { const { displayInline, displayMode, - uids, + uids = '', textAlign, border, borderColor, @@ -57,6 +57,11 @@ const DynamicBlock = props => { const RootTag = displayInline ? 'span' : 'div'; + // If no uids are found, do not render + if (uids.length === 0) { + return null; + } + return ( #html-body [data-pb-style=A45CSMW]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;margin:0 0 10px;padding:10px}#html-body [data-pb-style=IDWEY8U]{margin:0;padding:0}#html-body [data-pb-style=OUF5BFN]{display:none;margin:0;padding:0}#html-body [data-pb-style=F2S7DBE]{margin:0;padding:0}<\/style>

Empty Dynamic Block<\/h2>
<\/div>

Hidden Dynamic Block<\/h2>
\n
    \n \n
  • \n
    <\/div>\n <\/li>\n \n <\/ul>\n<\/div>\n

    HTML Dynamic Block

", "content_heading": "", "title": "Verify Dynamic Block", "page_layout": "cms-full-width", diff --git a/venia-integration-tests/src/snapshots/integrationTests/pageBuilder/dynamicBlock.spec.js/Page-Builder-Dynamic-Block-Snapshot.snap.png b/venia-integration-tests/src/snapshots/integrationTests/pageBuilder/dynamicBlock.spec.js/Page-Builder-Dynamic-Block-Snapshot.snap.png index ccf91b5675bb89e4aa99cb3ff4dd8b0d4b6a292d..afbfa8baaa27847d4b016c34b7f7fffdc429503f 100644 GIT binary patch literal 133036 zcmeFZWmH|;vM!p0Bm{y62o52*LvRlsJV@~1?h@QWaEIU?90CLg?(P=c-QC?@pDRnw z+Gnk`@4m0Sd)jO5&L3097`^wZ>Q!HTRb%?Sl@x}D#e%(e?;gC!8v&Vn_a1?_k5QjI z1}{Zo8Ef|*KwFCl@XFcW-)?-W+V6vRem8ceGG{h-xhii-S5_>6KK90+{)~}$go^ZK zRfT+b<}|$5^U4r`s3+9XJ0^O1?IQlRaD;YkCTT0Ls%TyALi+a(*6-HW+EvRcOU{mR zC@5$~2|bbco)G+e%8nfV?JeX>BWkAKe?sE(RTc~S<4~m3QJFuTTKYe5YK!)H#y7Jl^gLe=}1NyOKM)zqO-25%b;K)>QdOcm=PknTO7^neD1@c%#DUj0V~YabO^a zt4&CV^NoYxqs}ds{my!xwZj$s9~g!Pqb1}nPG>sjp^Y)Iu_^y@yy+b*TwB{@oZ!*g z;fqf49HIg#UEb|0xTjdX3kfcYn;(Yt>Tgc5@iQ_|u#m`&2;qC=cs#dMF>ckAgby+%8{wToFG(1y%On~)HX$XSaKoyJw_ zxW&$JMZ;%t{J?qCe7vJ*iS*o}lMmJ5j-zKklpd#V!lx(^+ z>w;>#z3<$nD9t{XOM?S`+CHagBStwpvo7YZ^!pP@4bI<=rl%jalE$iD90)U;Uc^W* zgqgg#4Xx)pZ!w@zy-r&9+Z*g^L})Eqy2zU=4AX9x+F$tWH5^fU_LQopbUOd*;^hhU zHcx2xu#$C07k9(?M~#aFp|c=%zyd;p)mW@C46{6J{{C0?D!#`r99NcrVK zHqHCn`?YEz<S2AATVtM%DY86=~j z(UTCRkcZzq+N7jCTE%`}p=O_0-_*KCd$6LQUTk{wSh@Ve7v+AI>cOMlZ>qF4eYN5e z5T`M$bhae*Tycn9~uJ{P~Aga5bnJvk^J+|J0X+2Q&Kzo7#8afDf4 z=R1uJVKj|;TU%Egfd@3b)%jaF3N$k)XEvu@PS`9OuD1!S2?2gZ^pTN~L^SU^M|U{L z$jMtXw4ph#s!_P<iAB?DYwPxgHhN&NIg?RD`a9*wQ3%0dH(et>!(^d= zYy>0atAWR}2PZ=Mn!NvYKOwZP28xenm@N;kbdM`4G3e~S5JJHB7tPSxD#Ptbyt@y5 zcZCMFz1-G}+Y9!@NBHK~zDC3u8LW0Yt%oi4RkpS(N)$BYyqY=&Z|Ls|E`k0O$S7!p zG_|yvZida@CJPVzS@wTc%+h!ne0;f{47K5o<7XM}m$s{nlO<-IVcK&Cvk{mW7}+pz z7)@op*sP&WzM(}6+jmCj>`$%51B0Y{#1wl-lU@31CKxOWjT_w)JbGeq+r!7p9H4-+ zLVm@ZaHGBhEIJq>^6%xQyjQlSm?(IiF`+N2Y6oI3Pd2RzOygNBUYsEjXg5#XjnI5} zz8Vt~^X2@7CHa)?ZTy9`zSh;H@ivb|XeWc7cJ{#hY&i??M`qI%ou9n?dSYJrkpy9D zn|&kxr@7zQJJhr`5qEcvmxbSRH5D!?R%1sX_;1650oU zM7r~-oU|cnWqBb(CCm(6T`HAG0dbv&wT?A@?>rtK?+zq}HG6;OrpEQk@qwgbk=Cct9#pT`SaRk3=TJ~kySf@0 zuSEx8A3L7vPx$0o?oNi^a_`ac5QH(T^~v@Qw>->`C5L5TkS$TBe*E}xL`1~Cv@$zA z3gP)* zfZcUj@&T`9yu5a>*rYqk| z{l3IC%i)0yGHS{+Fp0IqKVtLwRHe-ovtDLqOk9iw=N*xtV5@inXJX~k=Q2C1`6^^x zloWK#uNGbV)UT5c4`JCqSfpnn1n<0&6j>?I(KG5A|M8;D`>|#IJh~Mk-r`oC38(Y5 zJ&Orkn$Y9J7i+YxQb4!C!KOK#MekKWAdyj05-E);E0g1JTX^|*W8Izv)8dol>-LXb ztq&D*M7vcqMLXR!pHdr6_g_3kC#Rs$TU_4gd0!Z6#9}_fC#@#!4gwo@(hUqAdS4=k zprT?-@zPMgZ|pgZ!c*As8m4gMW^b$7efBGBE59U+#-k>nqyb(+gRv?!;4=eZ@fsWX z=ji5l+>n_`A`0nKIAJ42gZK)@ta%)3@w}8Xgf#!nO3BP->Vjf($TLYuIQQU?e?vYk zbA5MpTzt9m2xP~OT>cVU;f9mx^k=UI4eT)@MO&eA_l=38oj<6`@W?5*Qf5P+ome}m&OH$HHXf*`25iI&BBHoEp4-st}vhnu%a?A8c>xUI-_=zu zceU2tOHa?d+A*L#{NZ@quEhR^2`r~F`QMD~+TWqce=%1s+{qm(2Il+l5yA@Z?S+-K zxP*9x^9pPb*5r@u6!<@0zR2Xf%^oqTxvX#Plj6~y>T_FK*!2d}u%V*f7|5sO;JIMo z;J$&|yN}07OF>CVPDQos+Eb#3kv#%V!)whgxD9u-+4{bfTTq$YUq3G4a~cd}0PswA zuS$6ZetzupNKr54{8deWh};8BIWXDJan&Ar|BlB~M=7YOn}0NX{7S(!WotOy z!Z*Fp{@0f$8(vL4J%RIK&9TX$zF@Bae+}71>Z7h^vzL)Dn%WLXPoG-Pp5issAU>CF zAAC0Tyuk9s+KVY$SJ6_v-gxPHSFX>a`J^V|WEWYI#jgyh5eI9O7#OkO@y+M__FhW? zFhtKppOVQxcOBw;MuGy&cc!XB%T!y!&=7MD=Qhd#Cg2IqW{7gW(7?Z*IAB!z@cfFN zmLROkW^;ei_>PG53<=+Kx(5VTdnAA!J_#e}11|<}04qmnR(5ubi_%r4!EwU9BS$5@+0)+70PU)rVEyo}Qj3cx(w5Fn$==muER=vun_#L`atMGEz>l4X84)(M(G#cU}#T?X}fvL3#3DBE#X!Mlok$rn#+vawL zuhH1l>KTX=3{)VEfq_AHFmnK6zE9m(*t5FY9EAcro||iiEf$lP9A_`EWk8 zjiu&xg7&hx?Nx{Vi?hw?G+NkSli8WUqzh}kfm&m9HPo-Ei&|X2d4G@raHgum7HE%r z;db+$=65)U_O@Wv$B$yiUF^^L!zc3j>Ze;Sxgjx=plWMtx2QM&q4y^QcpmROF0Ym1 zn9an`$EAJigRy=$iYEjD`5FJ^GEbz9bAAs!VDMq(f62)I51s0*%)sz__5)^H8vcK1 z;QyKB{{MZ{Kd>M$8Lj%+x}dZ9l!OkR)+LL=a$;*)3Sh6aulSRSs_jy0p7jL&Zeq8i z->nfpThoO=RYJ2RxjhpUbK+3tU|U+;7Fd()^VKH>ju0jw+7h5j|EN=20q>ABYf}A| zBh$$%Yql^q|8|>~cc?@9?cZ5l@qQT~y+39Cd7$Idysg7G5J1~g`4oe#2fuul>w*i+ zOXBd75wG3zAk6_4eCqXFH)J%uM%0sxZArsoBf)W+dM@A{v>?56c}V$rEUU<3)&zoo z!YAV@Jy1xcK;CMI3Q|b3TF3pevwOc8C?_`L%Jy<_)wX*JY9M#B1SuJ8Id`oh4n8EW zwy#=5iT+$@kI97F!PVkEeeY#+J2DzQ-hs1de}_(Y`&3aOoxaNDW5606kOi+L>wK9* zV%9flZmlGAt(&dMhI43hrSJ?;SjZ)$tKbMBA}5Ya;CEm&n||`kvW#Vz3k@bj@r38p zW-JSfS2V%8d(oXvQw^ri@gE}Mccq&VYF}ak3?6;pzTdzyP7fgvjMHr`u2>=hI0>ZP{>1n_S?bAZaz{reLdeKy z&Cq^g8wtCC_I37kTrryO#js8c?2fwFdK-2(znB5 zw~xEtxtoa3&@uHCNCe<{%;lZdQTQ#$_u%IkBrf>hVt|zJc#8ofIj8B9G!dI?5R-`8 ze?iM+*i?25U%|?804@s?;?K*8+kPaKx;~bLezpmo{K0l0NaATFCcakk7ZbIY20CIg zx|gr!y+_mJ7UC}Zl#X%Uz07RN{UxCPlF$jg5U zkj>qhY8~CR`N14Q2*FbgAiUB9Tg8V>2tHjr&{@N4(YLraGHk>IQtm7pF{kUB#{&gY zv@JJG&Xtc4txpyWTbd&k9nleO$i%^YH*PS0yQc?9NT{m*#jVvOr z4h*^61AdACIMzfCwj;WKvp)MM;Gh>7SU(O4AAwD5j|}+H+w4PsSZ>wgU{en6g)6b> z0SrU?N+pI_t1W&DjeB}}dVgNLLg$|rFPOpSwFo41jSR1D<_?QSOTnK+uMPjf9=ERg z$(rjY?DEDcnll?f5gtksFn>f2IcH22rgUuBwc(l6DIexODh8m`+ zZ6EVxfj<_l`r~`2)5XzhQa-Y}-V0j5vY}>V=;Cl#ep=5dKHpf&rILv0PwVQvdR(tb z$mYTb;l01Eth#sr#u=gsh|P35#~-N!8Vyj+sfGLOcb#1%Mu&`bx8~2EuJ-U<*Z1M` zh?h>+m;*+BVJhJ+wU|zrGYKS8WVEzv-34{4i)YdHl@1KIH0*3P^VbK>fNQ$_#@Alo zU3r8aL+|j+RGIAytJOBEu?+X(l=fWMcO$m`$%`eQoT&ISc)%n4I=nABzpgHE^C#hA z^RujRMU|tP3+A=@b*dieh^WY;odIp}IChWZg7?~u2}+!MR!4P>=HqW5HaOn#m zgUhq2e=I&aj&VV{b~qgdL=mF=D_^KepLO8Dd|+_zXx94FHQJU%0092D2w46+kqck* z5EtRDuPeUL#)js?eT|$DUfb2hQF>^t`s@p+x3uGblz7~Bf}qGxVfrqbY*l{lU>UK zK%wE#E;1=h#8HR@@$=7DseqqkU82{cf|}_Bv$rrH_3XM?KXC-9@xcxE5I-eGrPe?D{eR9S~V$P zU$o!-ke8%Ag$0YZy1A}FMD+(t194Z7o?eU7t>xcc1{ScRK%9%6@W!XohzfwfyDGE-m z=BrYY%}1{G!eFELpWQ=5Rd>EX3!|46QL6p4ZdlA}cl&@^%`K?qQPK7J(Yw{2fVIID z{K8`6#?*_V68oKZs1O1$K)vPQ+8GWG&eCKk&et++eQ~pC$=}zXcVTTyLSh3m7KHdv z4E*-u;hG7tYvWMFEg6cfWrd2n#EaA(Jwm94@AM{W5rM4OEkt73^Y%gN<$6B;+%{$Kq@BpNL`T5EQ^< z_r(bI&K-v`-%-}wc<;}8T0rvbS{W8IJ&7)1)tV1}>`^xBL%AH`X(Vp}(TJLZ%~DLV zLP(=lC4k$_e!MY~*eQ*Ytx!(m|DUeW|AwuyrImKk-j)0DV{g_nLy49O=?|7RywdO9 zwSGp+eKS=PY5eF>&0r0irZ(RJ-n{!_0ByY%-!ZC8xB`Pi+m*B3%VZ^4?HG1rgr7k< z<&D@}(`M;brTxY;_R`FXZ>cd$kHw7vBRC`Pf?mrRr9$Nrj;VXk>Hc>oc(|uAZI*Mh`rl=>Sc6pjR_HAu3LyWPcjDW5oS(?`! zaFxuaH!&b1V7rw-_@!nyJp?Z%hMTNwmZB_TNKVaB@wvtdW~REXafyzeK67*TJ(%)% z@fnY}ZxWx;p%F>Hee#~`iU|d zHqsnGL7(hTpyzG6*>q1_L`Vftwhh(Rk1Pc{5@89Ac@BP7ms1@7=cWm7O~ge~h0DMF z-6mV?|1E>%{02##AbD5wG&uzypx3%?7!BSg#|;ja7dq}ZLad$N82bU#H6|LWuV@CJ zG?4EnFR}561Nzoh;t!UVZByOh(o1tI#{-;Jh^zEqgXVPR#&RyX)NzDKt!Bz4Bu<7` zSu#Kn1`zIWQ67J?+Dt4Cle-ameZ4@_qAo}P`L(kfTPOS~8L|cd0o^YHa&3@W6KWp3 z^7aW_Q43pGf&c}cMM-I7SXo)w-7H>@%RkEm(jsw$^1PUQNn2D@bYr&kDHPWggVnJ; zKp})@8hF5?UJwx`0#$bYtNG!rg3a~vl^#X1PCA2&Eft&3;SUTW3y^2+_80;Jzd2yp z{#ImnntajKwbms*!NUO*V`Sqo4inZ#VIdKvpvf!u$EEHqt@`#vH^^oR%Uy7P$@@l4 zIXbwG;p?-c3U(ohFFt+8Q~(t8Q3ohpmiq+0SlfCJl>0&N=m&V&Q+n&6j2PwtFhe3<`?x59!3Rs=ySYHT0*#s{P zP<;@$n`QLfL4nqP{M^f=cbZqrnd-ERdOX_ZW5;@q0V5XY^bB1&UDp03{BtVhrqoA8 zpy1+j5Vp6l#S@q*5m)$O;lbu;4*z(Ihxfr72roe|Us62wN-ki51Z&_^-UNm;1FWatn^Q}O&1}l6X{OnCg3S`kWq!Y? zIP*YeC^IJBSgD9T7EPp+sHHFS{nRK9w^c-;-vFdGjY*%-)UJKgQpTGOwFgvnx5?E29BSPn4nR#5f5`i_8v$%PgqI-{e#1F0LX9M8w26t^=7{6qM}C^+NnS1;F*HNLp&ddM1ZeB z1z491fH^;3e*$`L1Rizsq$sd*P#ggDH-GJ^(UK2^`tOafP@3DNhrT0*D^^)C0XYq{ zmZI?7I0r4CJzvhx0U7 zhi4*TGDmqjSVOwPG*L+D>GiM-x8&0l|G`#C(f;0e{y~D-IjM^*LSD7q5J;;nh6Nxx zC&V-$WDF!wNdpe+88RBbmNO18A5LoJd`x2n>SoiAv^!I!x?l9&cJ*5~b>xYN!;v`R zZB13I&pV`>NQAUOpMy?|1?S964Cjr@>GlmGs7>%%UieTZ)LS46HqzE>0PL*=I5NeU z_@UBb%8;ew32Q3V?+N9XC!o-N&-$tLx4DYWZHK46z|5lKm|Le+#s1zIk!9BMM88*e zZ5{Ny038zZ^;d{=hMVGe?SE&-!S6YENGLgcK7NtL;VuNdXOBSc^ADTzlf5fQE$}h{ z?EM)-pbDygeHP={4b@lqW5INgnGtK2c&k71t~r{EV3%3kr&ffY3Y5o`)vM zG}*Ze0+Ou?3Bj1_ISe^^f9Z=(HJ^c^B8lxNV^xLiVpeiNSPggNkba-^&WwmGuokhV z8n$a0`@}-O@E8n+pc0#0htbrRZA+6mg!n`>DGoDp@B(B_<{&%1ZxCXN~}nkGocA2zpju0)gd)C?vWt(evgq z@u!T$rHmL!$6#T60q=eo^+Ni}Kx76@7Q~vfI8}BoP^~ZUX(bcc_!kc&?JKIKskNpJ zl-b79FxX7Uc(t3}C>MFkBb<^6J%rPg8-EC3RfY1~*A5Pk0Nn)gS$DKRli5Jhm7f8~ z+X(C&fM7v9>OJ}bs`;Sx1~3!Srq}C8I8$Z3pdqKNDWlsjo++`e)+yCuYbF5nND@#y7Zb`Fw~g`tL*A z%Rqt%h^^Vr|BF-b3Bg&4Zx#makT1V_1>;B_m&Afl)C3xU1c9pjx)oj#>OJFDOCmGL z%U3G1xbOe{&>-=k^}`d;DD{PI(BMCoVff)s+M2)g zCv4w8I$13M{ag*J!=-tWl9~&HD}XN0HXr-MGPm9Y3b&Aq*vLN#NpfzMOB$F7y_wt- zWa$BrsY}bt3;l0sgNOgv)8g`U*RN@^%il7M&)3&K^XpfCKsY|9c`rGgw*gor6wptm z7Knh=7#AVOCj_@90-CNu6F!Rqzwu%3^07ZJw^{nToS zEN|fs4;F`G8Hi}q{Q%$?>FVyrMBxr=+8XN=m&#C^sp5qBH7>{n{DC0K6x1EOS`Use zcow*}m1}}QILpZaO;BE9(I_m&?4Wa4U}3ZxJG`ujU&6M;{&pb%u zw=kJ{EGQxZ18F(#iRVB2X8r|Zd8svrLH~_v-7`cx7J!kpmZIRIoasV#-_N~1C@V*w zOJwcbEG6gsYwP=J2zn7plo&TEoo^~4Z4K|;24&KypWL5BtR}|R2rwB4=RD|SsX_SbaZqY)|<-mq*;X)8&*we zsYT_+jq&CmG(q2ra?L5l83ky~1(**Xz+Z(kGqT6^JI$T4`iiy8UU6+9u$iFQnhdxi z3>FGc-)sZm`QGM^aQYvlefnjGf*!uMAXtKz6mft;0;L36f54hS3KI5mj1(iBstFug zIYVJdVV%blMPwvGfmzJ-%WRr?_uI!7ssk(*NGmL%H@D7tAQcvn=@injWSJM>al!!Y z!yTS3o`J&7fj*=>rdH(1om97+%-I{rb`- z7YtK_U;Z&xHkHlk_5pAwtTqxvtVm0q*?|#jSBAQIH#`$iaZDt-zVf~8+QKY z4?JG}ilx!ZU2o7BWMx4IQ}*a&qq`C4?}l{K9E63(aB~Fz-b?3^NDZ>5^Gn3$=30DQ z4%Wem)>!taC^A6wfj!wg=7xc{d$T^?7}iJAH(XRAV0k+2;P3B`iO=S@QM{CGdo)Uo z3MvzSH?QIkr`L}}ySpql=if*GsG<~G64liu`qjq5L`)))-B#md5*3iXfKzM*zF+-L z)4t*?O&eO6y_!|Feem;dVeGNsuZT~AQoca*wVNGiW|!@)H8-CPQE7+@DW~soqw{Cb z@0XU76Cb1bHr*dvyhcVrk!g&su)DThd4!6F#=vd$4Ah^ce`|CEJoaA=`ONF@Bm(K2 z1O1JXxHvhTAcdn0AN{4jaTEbzx_`oY4bo!eyi5dG*|bT}!}T^oL2h0{KLGfyy4&V` zi#_3Xgy0XhmYE<1OLg^+VG9b#!TGnGvjSA>pxh%a;fKKjAt);y^FMAUsGd64h9vDm z#h_yLol6tQ8Sjk;$K~Z?y;W1=mA0gZ@B@D_6$H?FnIqedkf#>U_tU=n z-(i8;@$Hk}Fgjq6AfZUfp*tV(?&|c3ds^E;YhOst#$PJ|(rt>H><$MHyV95V5>&rB z$Lqpl!$}X0N{vm%OT2!BxdRleKX+@ADdigCGf`wi_#$+gS=Fe#m=qEc(y4=tLeeC3P-DvS`~2FLIY%cS2sUNAHq@rL8TEl)&5aG=}{ zk;;ZWNnofg$kN7k(Gb$s+DRErXR!X{GmmI<<7^bD=|4G0H8ju;0u`gu=y(=LEC-c) zdahM2P@;iFqqwDlG}pqSA!-{KG}MAhK}9rZcFm9pD{-c84^Dmo@{nH4*udm{JbG!A zCkSx!A{T&x?FD?vT4##+t?(3cezu5qdP*EPtH{L~i3DWEe8bC$5(XF@7VZML2 z9#07CJcrpsMqzRXHQ#^u3DTdt6A#JIQFe9H2S7LH8|Atfa5GD2WMVV8Nuf>3J|rd^ z<{|Xs{XCFop;E|k(v&KDfhOU!e>gN9!lbSOpgr_q;}FsL@&cXA)~z%;4ifx#KRxtD zaD^^a4ubUf%H&i)x^@AWu!J-nx1RPI)(n@xKzfDW=ExCItM`E0c{;lKG_8e5mPl)a z#fKk$f`a;opMGqekjZ7+V+4hHUxDfuS(&-yQbwjk1?U|15Y2dLc%c=H%fl;givaH8 zzy#PxE0qKZ2crQJH8SG>A=59)k8KRV?*SlhfcMqw@zehB2B}b)W*K;Ovd(V!A;<-MtDvHb`-s};tmXA^GsMROn7I|{f4YHpSvSgpo+timaR8o ztn(rQ=XqC;iS4b+tea|m!CoB#p!QRcDvF86JvjNoot zxqzj=y`vRNuw?KrSEAEgG&?*xs>BWN6yRl>VEg%HtoZcP@XnS`mBkkaYwF`=+N8PM zH-Q9%YT72pPc8+8ULXn?ym>zx3!gjsElqtdDT4ZaTobGHDHZtKjD#f93<$@7v8=XNh34j9B>Ft{(!lS!qOzgkX@txq;eOSYAFNtPczEzVI&~H$ad4@p zMO|IF5u1Zs-q$c(xwvxM`wkBqPy1zML679hYc3Zy4kN;>793JbCm@(k{YWvz2K;5~ zmaI1BcsUCTL##N4I0*_%cYlA@3t{1><)4$2r8L>tl`A5zubuH&2Bi6)z~^)aD(xK{ zHS%M8RmgA3&L#j?Y@1cI_q4C%-|^p{x&Ma!zJ#%R07{-x`F;L+wFOQ|J`WEJZu=K| zb$0~jHE6=66p=ad8LtqVC(?MNF)}E*ygFtS^X1_#E-vJ#@IMxhbk#wLM4VE3_1>oA zXUni51+;!@9MEbE4G-_`#i4!<$HrDU{&z<bc43_KXxJ4-a_d zc%1>eV)@}iOXlBQ=4zx=+X>Ix0iQZubmjGP+VhW}2ESztTxXm*UnTDuOr&C>bwkfD zZubD~M^MYgeWHj$Y-pW`#r3NuQ^{m}^zMIcx{vt(QVNiZO&ICUxf6+AMK}!%_y8mK8AWn0j*V}SU6E^$D@0F4PN)|MN&kx4-ACel|hcSv|T-pW$+x%Z}yM@ zd$&)X@(O`Sda?kO`6}G?3y=`d8$=)`rQi2nKg+lg)hy=Ofc`3n(4tkO!Js>6-xWp9 zAH6?ImB16dhQ&Nz@QZoCLPJBZ)}GPys+)8tAg*f5f=ko%^#NYlJG9EC0=IZVyuFO} zXktwr>Fqb1oyi&?f)s-Z%bXe zQ$#`)DN;dUsNFnSchK$TNnU*1x=Ei2>!e7nOmS{KCBzADx zKdto>0V!$pCt%h>Ksgx0^|YY;roTK6BjD|$S)>?R|IPIcT|bL?S9$!RpFdu=K4sKf zjD^}OYbK^h8r(@~9-^4)&fZ?)lS!r;|K}MmSQJ>mM%OEj{j(tRBhJns0HWs#R2lyB5Ix~V8X&OVC5_9xGkg8hD^z)-O{Qnh?7~Aa8ap&S{DQHXYCHaFi1>F; z_S=nYwEAanA`Xt4_0DEpI%Y-?VKQ&KG;U$2IJL0e`RpMygw4%25wkkdB@G*oWh+-c z8~G}?YRO==o_lSzPKUk3GPE|L>3ns8C4fh|v4N?GgF~mIr)zmU4l^5j!`;tf?C;?L zWoBk}yn)uYJkDBETk|AO&V2{Q&$-5)ym(Qo5N7|Er9~Q#4(3}!tE#F310rdd!xt77 zmj9+CR^EqeVQJae+Z)7P+Z2m~?Nc6&?jA`|$VCtqf=;U|uL^f&tbMIF`fcuYKi*6> z(!7+O{BspMqPK(P55X31S8{ZG{2Utk@bIwmx*gxS-jrjnCsyo?CeglV(O%lbNvBB6H7x+rfLz!oqTS46AQtf-|e8_E7$7 z!>OkLw^~hvk|q7L$!TH8j^eR zsLFQVd`UNl0sAZ@o~J-nb0w~{C!Qhvdxn@brHi9CgWaugiOB$*f`Y>1xa14>EQ#3qWD(TKCl3t9FZi-r zONGk$o{yo!qHGh-_saLzB2n7{1GWA^8~?C$Fj*HzF9tSd1an&22bAwLocLbi)2eml zRbaq2kBmg}LS51mGb7}Vh=R!&8jkthxjuDM6VdGHAY*Pb*W0;-Ki(b)g1vtWtgpyM z_yMttm`0JJ{q**9t&e-N5F}8?F*-h1pL>>`rC(^g$4$~MxfD5DOBdgZ>Kz}C{da?# zF`ud9FUaO$L_$%1w{d!KS8Pu%I~UV1*Z9wq+9l%Rf(r0}VqxH5onKuQN>*DC4-RUc z>JDfSMH^2F?Pw2(enm<1*yA6@hQ(qsp%dif+PLU?%^h=skgsmw&UHY(+S`s_C!A}W zSY&Bqqx<)k1{>dpJN0U<`2qr#%(?GSEX*lnMY-$M8EuC)B*aEmfcHYFlkH zs%^|XEuQGLdChzaq zyz6S498_yLOeqo_1+4b>r7!ESygHVaV;$j(fSA+4_E+YbOOS5%)?m0T4Fg0egYz*f zqz~eCr4=9q#lh`GMG#Xuj_Iu7T6&+^o6uSnDVB31F5&F&z`&*V%Dmq`+K@rN$ZSQ% zh(|X3pdbh^{)r1|?Uo0F#1Fb6wS{_gAopb7e3i{5nR;gX42>)52>ml4qDZqPsiSC> z80D()5BhfmLNFEeTEc0;_=x4RUZ_e>{&7BjO54)6~a^EpM~rCCZ4m zi6|VY)@X^qU3!vl6P2mdOYZR}Dl<()6^3W87bVn(2KrQU@Y)y^IS)KA5rW4Kl%h8W z1}H3djFBf#*=S>g!esx#o4wTNJGCaM^nf;-8v!Pwo!zI+VXceQN1P@g_W&$4N3(Fq z5@_Xk7(v+{7}Hr|IP*Eamg~YMQ!>60k>^(YfHX;?DaN46Zo@N0GC$5lY+OX{Sg}w2 zO&gHH7xq%cI)nQmXP3<1o{4MQQ;3@fzBsVU9gRK^iy0$XYqlqeBP4sB9w6^e zTf-zq`>)|_j7D@+nj}+G+pTW-Ug7QTJ{-wuJrsOOH=Oe>+!Tfbf-Ekcb^;}%$Ynk6 zMyGDjyEY~Sn$SOAw}kW~eY9GML1u_$&R3C9O!J0s%ZgzsUh5;IaD)R4~rA& zZ)J=p48Q5MzmSJXrBoCb^4z6qh3B?G%QD?612zzsDWQ-iu>$=+m1)bI?r>q_IqH!f zpeO|dLmEM#RLx?R_JFox=^r+J!&_=JI-hG}jBz*l29)D4xgBvp7vIY-s%&~K;+Ya# zQR9JbrbIvzaQIxopeqjGzd@Fg+VmREh$%fH-cH*#yxU{rE%iUMz8}Gb}=(kaiMwqbFdN&seOP z>l3*ksD@gFG0jRt5RSXGCKit&wp_oayCk+)vD}LM@AMxEo$H%L8gP38{)fXM(z9iT z(Re0`26qbLioU+f30#Qg_qlLfa#K9n&{vg^XdM{vO90h^6Z{qk4s96<=P-Or>xrn} ztI_E{;#{(hLUVTj{XBp$5`^FF>;+Go4bQ*bt9qO1Fcno5boK&_8<;Ex<1Zq{I}47w z=E-)6{%&Omc-&2CI&FDpbUm^3L6GgB_@1Mz9SJxN%;MQJ06SrGd25ll6PP@RDdmp_ zQl%;YWK*OHmis2>UX{z~(h42L=x4wuP0VH*dF#WBiHJ9UG>;t2qG0&tnv zcddl0bAE-JPWu*pD^qud!QsRnEqnDDKu~9!iEQ}$yI1(HocCV~A-F_BlWUIQvHP5n z5M?7I)2MVLLLe<}wXhX6H9Y^Dx47Kz%R-wR_4}Y}u5Nwc@Hs=n_|-ECMHL)j|45M+ zwg-}tki)8{!YTp~W?r%$HsgUP@bcvy7soTZffSX8!mi`|z={L}wmV0L<-CKjnn5m5 z8QzCG`3$&-qyo6b`IKh4T;+@^4LE4j9=2hVK!h2a(*d9m8{-Kw=m-%Va2qUzA#8XU@yuWtdNAd>Y9|`N3IN(P%eI9B9n}pe^@;>TrY%bY*-uKg(P#oyKy%$?@MLRfd z35|0Ms&6hrA)Tnzr%eF?kXqR@JWG(WD+FW*oBLry2DR;JZ~P!>DhIyXcQ`32#9iUo!Hf!Y z-~*U3O{j*(6FZQ#h1*a@|M+IiT93miu5-uhT&4wc*uS*9+9p+x zqjd^>baAsN=+ATT5CE%2V?u9&yLOPGLzoy>5Zk>PL11r>B)@Yzc+%DD5mMjPHb)w{ zO3-RAN4!1BUrON)gqU9V%yuV5Ir247x{RWNtn9_g4`cuoD$v2M7Tzp1mdlliZ93oC zW`oley&`z|%Oj*L7gRd8uq2VC5J&S>{W&pqs!kgUL8RRkuKvbFm#0#R>QLcWcStd3 z=D)_fKAl2sttY-@snd0*{;Q&V!M}rmi$Jyk(2;6&RNKuaI82r#C<|yXgz)Llk-)QU z_OB|v`=IwzNZ`4}EEf6qN42id?>}ruVgCMok;?x);dfym|Gku=j@H8eIPOY^{9PCN z@1KjL{;v>!7sfvb@qbWCyaEEZZgscr7^?48Ssm#7+Jk^QeXM|vE{P}3_j6~oH1W@G z;diKq0dIS_zJG$aED3lTGqZ2@=qIVp4sJ%H_Wr99ShBf#@XH6_NMDJ=970ZUa8Xq6 zPMxNinIKYU=WMl7SO}(wm#3ZI-1PsslRJ3)9yu)Q>gylPoT*$KP6a_?W4i=ki$Rhr zB39i8GMDe&G6o0-?M-YH!!sG< zU-$DZITfcsaB#2yBL1gorJySKiqD@v|mTYCCFt3`<-274io-O*O;-1)pZez8_> zmX5A&u~~C{WoSarSK_Bd>}&)fNsvG`%&JTUhdZ9!1ZLc{9K$M~rxdWz8)L|5f+VWZ z3j3=U9Oqzo=~hhI9i<7t-FTtiBVvE__RtC^T5ZxgzYaGKg@M!>Z1iTae6EAhoKOZw*iH$>u3Y`lINJ{M!f=5hA`E+iP*uIRHj32tLDO|VPf&&^6 zH&Y}xn*MkPt#5dYRD;!akqDnwxv9)EF@eJ_$@%br@}2+X$)^q6*+f8MRz_|V&n|(q zQ}(T+&|`@0MF4XJB$dXGeFHcEFSQr0D^W)mbtxe@7_Ql;rfVI!`JBUMV?4=luW$8m zg=f6d7_nV4Asz7IaR2T^IvmaqF(mnFZ9iyVeF6!vHY7QI8cnrSy;p8^cw7KfD_vrM zob**WGFrL*b(Sryc99}kUNRz{*1+J(_IPE$5ju@VlV`FzIo9yg6uW-Bhw^zJ3BDLf zfKFpNqGWbH-roff5UA0Wet-cCt{o`x&2(|JSoB?kQR(8Hj*>E?F<*Vh6TqLgk^mZx zxLcv7f2X1RQcimzRPUaK@ zq~7!lgmCP)hEFE0Q9%d1;JjM8T6J3&lko(`9T!BY#48lvzR^TbNq_ngs-b3b!g<2~ z>4Fl}8Q!eztEFeWZ~sv*MPx3C;qlX;$MK)qHneA9Fau_*5s72zJ;-a@d#$XjAR7`= zG=lsg=Qby%RLBcyHGF+hqzh7PMvq z{Rl}(ec}^2ZQ=k9EB?@G1QO>SKo2`0sTqxcoATSNE<$)FFzRFHXw}jM4i-_{NV^rZ zEG#Tuyv(C?V<9CKW-l{st_gXrg`)eKnS`c&ve$%_gmaPnn?d+v_U)5u$Qg%2Kl~1Ks^(h0tza7lg z4u!*oq?jj0ikDO}X%XCCPW8Sr4uF0J``0|XZNDw%|CLN`zXJXd^VK5Lx6DkdVo-le z&s19iw`qdj;lRoMVV%=JMT&S}51-T`&f{e`hhnY3;1RRePP=eX? z8EyrIp4%ELuly+#h+hFkKJnxeyy(00@bS*@3Z>@D6vceW@s^g}7QJa>!U{BC0!{38 zT75o8pkSeU@l^_wd->fis5gaNTkX?%qsOsi0MZH1`^#i$%-H}RT=m(m_UpMfaFUY2 zo;JHJU}@p;@!f~-l3zJ@do^0fVPgF9=*}DK;N}(lx0ECyySm8T6!S@K9|rMUKoS`_))IFDoYZ~|I_rg zqaSeqj=Ye~^^l0eZYR@9gZO!$6aJl*lvVMK2+v@VlhokQ5S!!mL+UBp#p42fgG*IH z?t~+RBs{$FKpgfM@aLD-yVs8ZtJpHx&+;Qz7~_!=sGWj;dg}+JYe1f^+{9XzIM%T} z%D*uArQl0R8Sf<)HBiV)2EtJ@32QcUBX4PupI^LR<4CJl3e=S~2l7ny;qCRK<&~8p zlMyU$c&v{TCaaR%N@Wk?JA8LJsifW&`1gW-l?o++vu`y#ZucD=9H>-Ey)``^YcR)G zhD$}|H;}waeHTU>i;fFM2LWIyoKt z83}0*LNwXU!_%;BCb&tKCr$j))zFep-0h_XVekD1~k zARO81OuwbcnaRl5*8n<=H>b{1JlmtdT#n8~=8LVx+SXZ2KrCO2C!+c!QZ}A`vH3LtQ8yJV~H!Z84HXGp`8IHR0-fGL*#QYo5sHMP{N2HL#|FhntFcKy<$b;D{tl z8|)~>p>tq#=my=L)nvbI8wCVQ&|m%jl-(&4J2&{*JVE^7E*&QD&n>Uj&*WMH{0I-N zobPy&!-&5!r;@8M7z zw%mMEEmL-}*!~*pA@G&lGnB&imv{Td`i{bD^E3pVvuz#;TW^x~=v z8(Y8Wq;qBVCEyFJSUhwEcAKjnY`4;y5~5it5Hw+jSa;$f@E`av`8MkzBTML||KfVrq2CqN4j%O69U zJ(1m9n`eGpSXTsVfr_=@G%}8{1$)|b6D|c8g^qX@oo#xAZ_RqU!`jP zwuTn1a4B|o_*QI6A+xn*#)kyR6EWznwZ+R`kR#=`zSD9tzCg@Vx8DVE5v&R=yPeb- z%qha!e$Wb(XoSYbN=f!fE>!ZF$|O02OYdDdJeVPLF1EuK4i-IcpJ30nFy=nd_@r-2 znbWkp3IKY??Z({CMyq68z5nJ1Z)(NzxxBcbg{^w`fLPd030Iq1<|z9-z;EbE00%oR zT^Gtw-v~TrST8N21BiD~PhjT#;t*Lj^*xoGGkSz;^%`Q${yrFIHufHr1O^Tr3jwjV znYDG2PEZXfv~WcqxJrpA z;X-S$>cF}o?#7wV;Q}b~W4)qxsHlR^{!G@k^*=0KM8lL?(Y%E9$o(&ug$l^0qeC4& z(dX*0Mj~>7(W>*1Gtl?~%%9Bs(oo2?vALLN>=tvR zdG#u|cYf+6C6IX8+Lli|d&Zl)0-~!f5QIgSy#wR7nFg%B?a0DHRb!oia#$}*q$F%^ z42CFR8Xvze;4P_hS+csB+5sbEgFiutjL2@61Z6RV|{#&Zd`b-OWG*|N7f59y&i z_iVxH#{GqAfGf+AH`rtp@N(kq38Ld&c<$a37us`^DjfRCPlLp4()|wRGizCRz*kiO zodq`GR~laK8w=Hzs!B^=@Ih0$U~M99@-isl3TYm+hL_PO^k79>;s)8vezh_V0NE7k zar$?NP{eM<(`&d(fl>;q7h!y=fal6>P111yg)R%?a0?3fF?Jwi$|g$_-uk@UZ2&IlPFV2?S>^!4RT+eKAQw$l~HY zyKGZpB7Qlap*OEPGz6z;YsLr@u;_P0N?sle(<$*EQz6I8K(OBZdL}KTl*QoF?y5!v z(x_C_(0PYTBr;wi(dP$`a|>-jdD69G#tk$t?#Khdo!lR@M%uN%O-a%D@F@0!5=xgXxSRAtO_*2~7qKgX{$oUSFwfs%9OiId#oY2)bhk!Y#Pk)OgW8eXrKp`42>`7z&?HYWFNz$ zl7R;^5wt_&avSpLxF5Rng}io$N9KI5v$6RgqfZVw$@}-lm`zPhIAg{++HgNIcSqwq$=oa8N{;oOak!sDzoow&WS*aaLT zfiUEe2J4QNBwxVuzE?Xu$=OK2HDUv@#@qAyhT2^?#gXS~i*>TWU0?#>lhU!;xShX^ zLx*Yv8;eu5J*G=yODTaSb-ugTG#*0w9mSPn1sQ$Q} zM<`HB9~eRLb6_%leD5P7uPf_v89Gg33m9K1mHDPR$zw1;&=gIW5hKq04>E3WLh>V` zMRa!uJ31xpVZv+ZI?Z6fy0GNIS&R%kyDV&C!gw6zui1~Q@w4G%heUc~FI4guEHQM} zQ)WLPUO0DjY|Il$sbH8fW|JN=02A-01%WS^K%Lr^P&}A~Q{QsfuzCSmus7<#G!_lO ztLjIxeIO=T=r#6fk$_vd=#nc;a)GZl6Iymf_6o*`UZPA1bWH*IRLvX}dee0s{B^+i zz4X%%*H{p1n1=63d-^n>{ zY~%g{M_uvlhd7-!1z^e5#UgSnKn}DKHf$VM#hefPwx;FS6bnW@#K<3-Vwq#Wg?7Ye zOxBxnYCVA|1cN`R)dRf?ezmWrp#p)bAk`l;fpFsNY~R^(s34`Z-~Fs;Pwz77VKY}X zgs3E_t5SpzvArA?iq1u3Ubcwt2Yl9Qp3$y09mpeex(aPc?P1?@X05l#t}#dY8@f0hp&yqIgE527f{B1-SJuj8vY?HiR3f%>lc;IJqd zmZ{X(57o4SAgz#B!q!sra+sCEgdWBuAZd(h{!adLBsZFU`DMW)lE!PVIa%Wk8t-7` zej2XNnik^5i0-T|LV0-babMqJp|c( zbs#faBjJt!o5{bRs-^}U^~vZ?s)DAzZPGvpg>HcxwcjkndNS~p0mKE9i$UP>6b9m& zz!0&(Oy60@Flj)l%a%r!FkZ&tC9hVlm!Y zF_Mnsm4Yztaa;V)L^QQRz_mDfe1v0`r+SPTD}ItcjJMtegMFL6L9@o7`3_(gJwT-J|QBPOEFWO z(!7(zd1w3@%2qpt+1vsX!Uz7QM_-;G0_sS+nAHo5jD<9%M)YlnB7;cwI+2D6vMuT|GYH^S>tjVUPbuO`&}s*PpM2;LnhPfNtd; z*enQqkL=Y(Ei!;V!|INf7yI@hIS#2DikWYhcG{J|3pSJrd!R#WmXM^BA3`-g@M(=* za^+sJ%Zw-hmPaOCJ!sz7kZAoFBY+F`xL^h$2}>E0m+FXKNYQeYT@X7;BBXRhY)Lpl zSRA(BTTZYi`b1dqmHI3A&7OqR|V9^<6sPx)3^*uw_%}>i~afTp*c% zZltXNS;mpa?EUWXm2xO$b4)p>cORSP~ z42FM1eMw~0O-P`Go9Gdg6L4}n3)Ew=qUUcTn!7K?GDCA{O8^!WT06r*Abn=>yE|`A zT*3zcRBmQO$z%g6ys;odHa_zJL9vl|_H5cdCMPI$k+|4}8saz~pL3N3h3{kqpM%MK zd#9}m5z!Zuz1v{xLWF~<{q_795c5TH2q2=9Y{&H!*oPH9=2NUgGe0Tj+H&!k*xGB0 zB=4^11vS35&&!tdD(EQKZinmu%1lZc24Ey!L;SYzOM|wVlP?WBM;1YIhypbi;^~7$ zn_D-MzQc`{5zm}pFe(bMfj8LF(XCnq)#5n+=x90+<=STsXS>=pjMjNR;)eMe(?C%UcDC9 zzr1l|*Fa4I-_GSU?XMc^GQa~+bERiVtIHMo5)nC~z$6!NI^zBMX$zyP6$_w~Yk>Gi z>9f^I2qf?Z{CrBY?u(P?gRl+^>oK^|Em(Re+fnT$x(AnzXfbRw$2o1TqJb?^!ADzX z`D_=jGcjQyejbF{h&v@w)G*z{B4yZfi_PBzZ|zYEX$44=5exeJ?haQgOkxCV{UOl# za5hcNCwCy?CWzzhVq*W#H-Cn+*w}%5+1G4FyLS>0N)CeWC%f`San5PH8$k~5V+=k!pd-k&)IZ^o7rr!7W2VD&Rd%^F{_kYORB*V)*?FWXoTeXUT-MUL@QtU9 zAn0OGf2qC7*=WBiPCkv!gW~4V!!3Ri5(iB-j8$hrCqnk?bbN%u79(<*75NVZBx}9I z0((7dGoGpXfcsYEkx9FsCOO}e^Q1KoJC^tJWu3JRkpr@x`TfGz+84krVa6a-CjjwYJyw!3Q zi`XmU{%W-%Hl_!KWhuzXgMED^FI{pO4Q?*hU3ht?A^M6$vAV!f$DrG~E}|=uAdFv& z=nfAC(Ob2=8uaR9x66{4^np1>ITO$ya~g-qu#K&thz8S^i%UeJ4ph*!m#fSomA7D(OIIAy%O%f^AFD|0GdcRMIJBrF=EI%${U6Sj&wX(J z{Iov^4$(L=e-e1y#8!CM04Y8yYOJ11AR{A#892+e(jQmox%Z%oe-|?usw@8P?~h~_ zr&lu8FJ`C6lz!ei9Jo1_C10$rCP|w*`Kup;yJ$uo|1tREB?0E|{e4GvorGS6#Q1h- zS5{97_Ix%jWh-}mr_vkV%DtpRlun+w*`X1~|En>(sgn23LM;I*--X8RD;-rAx+lnW1`M^(#kC z_bch-TY9_Fmz;NFA+^5o;H!ryoL`hKrg&;?*0oV@^dVvUA??+oq7ci;rq%rcQf`v? zoBcgScyREW+sDgPI#b`#3i70)@5htyvzaCFHci!|w)j!P9sw;04y2gPs1t0q z6IPhD`U+4D>ZR$IMT+6vK}h=&<&zwqw7>ql@R`-)o5g}%#+(u}pd3|3Qw1#+4c14# zrJz?@g2(*M5XGk5B|FoR;aZw|>++{h*(?;)BuVf7^#%?u+$D7#*mK)jLaCEYqp*)4 z<231O%jygKgqI}8B|@3UC&oYWvU)SbJ2yd+Sp(Qx{v&HdOTNW&I8u6gVe-*G$Al7+ zRck^{Y~t)#ko}tvm%)w*0oV=5%K&?q^*0$m8xHuYlunyzf9jp@!xXR8S1#oAp64qb z7r9La>x@RDh{)Q}=v(Gf!j~w_Hz-@{Ofj%Pvz*3cyn1|M{=}nY?mngrE@#U8jireaG8m%V)h{ zS7lraZ7|-tC5I93I*C4E>$=_G4oc7U=eNOUG;->cP3LTBx4;X=2~3pdihHu6sUnZLv2x zcTnZUbt;?F){vx5brcdZHLH}MS6wa5+e0j{7$0|bO0x=b<;c-H8p|}27Ow=;5 zWKSw+0HG@#hs^3u#n*M?gDr*c@9jLo8so-9?^IW?nvD3UO3F-Hz%DY_qGJZc(8Krs zucvjSl)l>iZSCl^&9}ccn-zi7H}!jzZ6na8-%QEH6;Pi9UuIsQzEHJav9e?vd1yf+ z?1A}~;*E|rKG*Uc#^e-B^x7IG2(!6?$)tNI*0T1Iie9bYId4&sY8Et8ujYe(O+$g( za5r{&gn$mlPy1ovkZm4r$s6nDOK{Ihl0Nxsj*~%K+Q|p$_lL_WedY%812nLRhsW)+ zWD{>1{?2Eg+VL*tEpQG2XDR++V81G4Ne9yIXf2C$>{i^_fNa%E@GW#uGn8=1L9FvxIzN9QRTK?mLi>;-+ZXqm3#PC zq8Li^L$BIdJnrXk>rpdqPv4#zH}k_}?$e{rBb~xx%vSSbGUpd(BGT?>`qDDY9|P+? zBBUV9(w;hhFC9uo*<|4=cX!VTZIQ#metvx+B_3bEnT(L^A?yOpi}GTUqPExdLm9x#Y4N3mJP`j)K@i`mmIR1V+5`!4+IabqaX) zZ=+NzY7L6_-^s?cKC`X7q1SXi@xzCUu8JKuK5rV;?{hc-BR|>YWoP5OOAP5R(H4vU z!2WU1-c<&hd^(rYDQ&ff`GWd=9rO#{mlr z1U1Yu@wVGM+tswmh1`Kg_WzG>M`=CQWq#_y`C;v6yr{r(*9b!1^FKpw^nQ0F#U8QwHlv-%S90ZH z&j>Rtehc(aN$DQfo?47FHMSg~o%7ri*m2YO>4r8#@~fenjQZK#%*0R`9zT21Ql`=y zc@`2iK85=*xa6WjVz+Mnjo7*-wftqHHgCG^t!ySw)naVd{)M`9Eld10D z!{&PpYFjs8(y971>XloOU4OB-xsd2w=%Kv4;gY)E;;Om;#(52kNc7>utJTsKZ5fMy zIq&XM9L(?88Fd@oe=qxYn@g3DSU}1tiyg^Jw5h4aJ6o4gSm$4}Z;5i zo9`*bk@69MN3MUYtGlw`jitPy$9*ur59?){FGfmSYo>u`t}lnsRU`T#e}67lQqFwz z{NCogEiw$tJ8zhG))&O(R0MZl;!;Unr{)TW71mbJEi^sU8AgZ1Vn>s*ykc3$9y+UU z&W15OFt9eCPEfZydUz{$v)sfs>FvnnOZd!I+%CyUT6ow*H3i}NM`4ofDZ*UYhc=wq z6UDa;9zWK%BnNAjt+_lKQ8s87%NV@i~J=z_lCNq@y`ogp|I>6uk3RO?XS@J5en9I z#PB+u%I^=A3N$i+cvrEtyI7zZ^BmdU{uMmI?Y(<@J)cJ&raeNlCc}lQnaRygRx75> z-=DI;b*Qe`!I8nHfOPTZnxWC=q7vEMFH9LK?30Glv4Y4*C)eb#8}xb7P0tO+>7!0! z9~@v{#ycKRIzN3RcVF6sF~PEonL(}K6`aazMk$bQjqLn=tuJaW0CBDNjZnI5twxN6 z^_4g8s-xNU)@m+>(X04F7$alhB1JmjWJwF!6xF8uXB_Hyd?=`Aq3!9_U%Hg=w*L>Eps%fv}&Xa6Q=f5Yi+!d!Qhwkkbvm)a`mFarm~8MTY=Z! z>)rmA6fD%)TJ)5V*ZN8I7t=463@XJ3s6l5TuLPAze`LVZX(145#>CP-DC=Z)#NX#Y zhC0XX#Q7wMrd993IfZ9kTu!3$;$0>l(kW&VaYp-r8DInv=lzQ*p03=1^FW7iAL5_er%@5&Lt(Wa3Rgip9l_dyecePa_wqEbw$cW!4`&?AXHgDG*#`!yFl4bb&eT}rLHLTlbzj4K)oM^3 zC&lEchGc5$Bsz%cO|BLJ>yUwjc1fEPT3wBA+mZoGVCk>$*`ZEUI(o4BbX&YjvK)cN z(_I1uvyy9wt52_O(_^(;f7&wPd*RZ@Cfncb8V^h`%HF1stwonL_eE;o*t!8YfU+hBE)uE3Fm)A0d9 zqT>7qT|zX{5a|90TPT;ebPiv0AMQ@;OOhW7#LdDOxR3D5FKT%!6gl!phJX5$*TKrh zG;GDo60*AXmIi8kEF}m>@YwzhKECGNc}XInus0j?LM0IWvtUkjdaR7s%f*Pz2uPYk z2JJB||M05fN_|3kMBJXfg2V_U+h}zN;msMw>%&JaumraLQUodS66`ePqxJyrC_%p9 zBBW#ZZBG1v5!OEik@u(}EI(Wjui5a&HRpzVU*R7$nJcw&YYYa zuPBDdIVRa*!8xkF@v|+W_puA?77BRfRA_hsxaifo56BFp*lDMI#6%yKN zGi(<2>?H>VI?zG4_T$US`-z1`+E0Nyy_4bXTZVH9=cf6;ToL;AZCv^Nwn;&WvJ}zt znI5onm64GVfh9`E06^_99Df88feXqnQb=O;X$1GW18n=?hGOz|@S(2B6njxu!3*yz zbef)?Jtejd8}bC=;T1qX@hQ?OFK6c`A_1Be#uiteT(sCN{&i z?Y`{R6d9mpJ;wWp!?bF>uBjHbvFlYE=Ez@yPV1V_1XW>haIi3xe^zjjA*CY($ zRLz;L1mZu7!LmEg=Ru~b7bIMO-VU2_Lj{TiZkW3T1&*0X7UL3cljDH<#_}kCfnen3 z+(huZmQb5-LHDt~4&H87AoPM+Zm-MGwPZb+z2Nk-XD?8Y86HP<7$r`14PdqHNJWDp zrTpS0oSMOTh`+cG^$B2pa>q(T&;I&7YD-&7a+u(Kef%()q5XZCQ0P%&DrOsRgVZ;X z9VQACOb1;sR!W;!hhfrD12GpC7I4NFCPZzdFCf23bOHJ2mwI)(S8vLXl!X&b`z-OqaHx1h$mY`dEF=t^7UTV06}NefonuQMI#TD(qF zUcHgF>xR(tnEDFxwC7DB^8j0|a7jNXn5AE_Jo-(VVisz8Et0|{?Dg|o1-vd7P~e9| z{h~{#<6VB4=twZp1npS?27?E#Ar&w34&`D1W6|l!J-kL~er>@8XAPk1^T*8XhjR_0?7vumeP+QfC+Phk$uch`Guoxr^Hx9f*)nw)P77%etrzL2b6NYlQgWP*Utes* z!D05iv#PIS#!ci)A{5vd@9h5*Ht4g5HY3}~X$?okLMmVi&`LuY66QNk_dJ7?iVfH* zkrP6b*GZoao7h0|JHe#tJDud!tPrE#pFjK{2Ln~JPH4^>``-U&5}yEjrRl7u#{vw> z#Z+j#q*Mflr8^VUR3weQXH44IOx4Iq3UUB zUJ=c}t;y^&(OflT#f!gNMj^PfrEnx0YSJEO{GR#L2=ckoCBWB=57sO*A4AmP)xXS8 zY0&wFLmlJ?TPDrwoGv>&ou42uu2|R#8(Ew0hOH=cI-c+~4N(^Mox>8*<;QMDuE6 zykF_G6{}5|E~n$?Uk=hz3GHK_m(S)Gd3Bkh~QF6_NH!Hob(Dyz` z`;|(PMUsSM95YGVyGeD;dVLKuN`N1H@m7g8@4v5!ZE9-^RxF>;er8@(Pmkpi0IZ>R zT|+^|tZ9LG3W<~QSN@pddtf3gHS9yzqrYgv^yg=z_iP2Ps&C#!Bv~%zN6AYCY0Os! zl>UJLN!!TDRkQ3~+PeSxcW1GQm?PX*^|T<%(%pMYEAq7Gh;`}1H|`rp0;jInd}KO; zDYtiS#Tl@hg|cdfFBCh{-l`SU*bXj^w+xfxsYmmKxA16zO|@i@*_@Y}Yf>}r+hYO1 znqSBO!?a-i!c&!;l61odt&Hkp`HPztuu}pvt1;%@R17mrJ9JoF|5s)UyNin%s!}E< zB$w4=s)8QZ8}z18f&-?lX`T#d)8AUyErd+3)QWk*Wh=*^a-OF6H3F0eq8^=>$86nt;@D{{3M*+m%H=AfbBMb^s0GwzSk0a?Ll)rgBxBiMK%jay_OhsW zgM@ za5iyqJQ$>wua7N7Phce-lv|@oAXSZ2(0D7;yzt&zsTv|b3o6>P!cwH9Fdv&dhZ5Rd z@)$em!2YX2Vc+>3DdR&M+-m=72<3=DcL{KDRj?FkO0bK=SF5?_5M@g1Ld3na^x81A z4gm(+s-qAKjpUGic5kM2BI-ivs-HVM@-JLZj|>(OW6yrS zoNtL+EmIK;>!lLo%F=S`t@??^ss2Jb8Fr@_LKep-f1zj-vRNdfu6k#;h=U_Ia)leZ zw0kZW(LRoNAH%}+8p@c-xL+Ui}zJH_8|dhij}FH&DVOc@(}4>1@#=dNn!rD)$#k6GeBVz0;^$DR*lU67P# ztuG&Z3`LV5j>F7i!YH3CBKSqxhFEio)V*U$ES@Mtwj~Z?!Lr4Kb+b44h8YPoj=opZ zUxK=eZ#}bS0CNSm4SH4o;5|OO$rjD8d)b~NBzt^6`XK`X_b@~W+!|CD*b+-b{kl=# zQ)AB%xpmUadPP#xpS>a?GG?N8=hthII(oWaKSn06r~IpLumf4^kM=pkZ-pp7{C&aO zhEKmQAbT8k<@Xh|+3$bd*7I)U;Wk%!A=LbwRzz#@y z@A0#DYjV2sP8Jw-l*9IW|yoEh_MN@|iHue9u5>q%|Qb)moth~}&; zN&pUk0(8%N50(OLo>{5=Q8qJ%`oWC{$u{$k5S&k%xM$TaxT+==`5d9u(V=kH zL<-35kYrw+iHU&I&J9kFZ_Rg51YqQ79t0l7pGRu}Ycw+3MQpWU+Uy5AlevIq>+=Ff zQ`=A=0zM5PlIHwP?f3n-47!G}sfwBX0S?7RcOze^sX<6|w~E27u~nwXd`;|CJ@?iu zMXaM4c)~bDu1!7Wu6fy2hEmv#UpIDkG!L8f{Uc%h!;L;qU}N+8(OoZo@JU`!lUnA zGQeeIrZ&a~Hm8i4&-gmx4AuL2kJeUSpG;R0pHPg)Ee z=?}_3=npz4qnbp=vY^H;rMd==XcmY>ad2=xSXfgWEnQnaI*T?D$X@`1$y9``WsrKL z&>MmgiSEp(YHPbJJhtQKn5)l3<`T-%Ea+;m2}J$RKYjDifZ({eQZW_5@n=p&)`Wn8 z(WE;X2~^BYD=;%06mwnNPH)dr#8r@(;W-+#1sl#Wl>IY1*<9(T2b-%*jvshmCJ3Lh z5O|pBU()iX`|{pmiUyQoPJWO7zhwFUN67O2N>m>XIqLlQwzvWy>SusMyqQfMC4UKs zHT~wIeZ1Q*k0F6$9T_kV2Tl&F8xC~L6%`Aw0T;zA{AxQoZhsE;T*yG~hX9zM6QS{X z5ID<>)EFdU#tRNtd?4wPtX6XIqX{s=jpV?>)Fa4SG%??{UbQqFs2s+z=rKC}AasP@ z&id@VLClnQTW%tNE-Po72q;iX4WYj^%OgB@#DQe~b1fiHl)vshWmJ@vEddqHD!`B; zqE9t-#yr}W*T=_F6;Al!RU$!SA5`7&RLYHOBz38ay0X~vsXMq2;m@k190Pr(r&SrD z3L(PiLX7F%fz9sp{_H(mrq{rQyQIX!aSsan&#cjMM&C2_cjnL#(wZYAHNs(+=EWP3hM7=Tf#qMFJzE5`7+IHYc%SU|jH<;)o*g--Ipm96d!pIwJ$V&ZRL zA{hWbpEh2$z9dvNLH;ZVJ{(J)>PuyIWWVcr~kVC2Sdt5_h9 zgaF9r`cEzx;UPu}^0lv&#}Svq&|m@@!aS5(gdp4IItO>cr4OJQpAMoHD%?E{SzGfu zazOQQ50n`M*yT0Dw;ImJ9>rIEvBou0!+N=wx$XW!lG=EeD^e1MHvqs0Hv&&rQN<9i zc?JW|tx+$L-l+Y<-^nn28F7iYBMwo;K5f$ou-F_x?1v!15AVFM#JNONGj7aDn5;uB z&8)NGi16=}=O){L!t(a^_j+70HAzE5quIIXfVfnk-OMRTT{cdFj!GMNPkRnyM%TCn zF}Zjrbm;P-y%+kN1|`t#Mv(PJNK;TO?GHG$XKgam4ID7#kUV=;Pwczvb?~CRrmk)T z$o8-6#3iQ1@fF3fq^1lGe%@DZXzny`O-?Ph-vk(ujFKZ%iqr+jfWJekAggAzG{JLs zcgLghC#_%A5gXOZwM2vLZ9r}Ldi?-qb#WmnLe+a@)6z=D@*r%q&JqyEz_cWP{^FD! zi!k=5K-z{lCve2Hh5&*rmA$0}vCJpn@uIkPsfqV`EGT!e4r&_ES~yp)YDWOuhjdnS zf73VsF2Lk_&^xdZ9d0-S78Qa>d5)tlOg4XJ$0UDwJaTgd^XDQOTX;NrwXUv7@B5x2 zO$JOf6KcqNKk)Af0P&(kj9=*z=i+bF{lWfRIHOt_C~RI|ccqz4dkBJxZDWk^^l3{{ z0N%184^5Gdziu;`yOp~-Y6x2vw}1m@ZqJy%H+!`a9i@=c4A}W6S_=j#*zhF5yPG>1 zsdWqRfMewd_6bQYPH1p60&hryEqSYvMWQMWAg-CECHYjOoN7R@OUxUI@j7Fr?3ci= z(aZpGf-k`8Mp+-GgJ?|pG}=6D2UWdOJWhwNW~%$)R{3kKtVJTY0yAVko%O?JOM7Ff zNI%)x_uTWfw>hCGpK#kAhUZ=uN&g3>yzAR1PtrTk#iY~LFkJ(g#|2`+x;WAeSkKIB zQ$3Mf;YBErOR|G)h-Bx$Y3ntmPcTaHR}~+O>o>Q}X4})yf%J-?E^b}}umcO8|B8}L zs6a?xm|b_J1U$61TK+22YyLSPA`2#*CLclabW0gdQWu0AwFJTXZm@b!R{K}!Wt(%5 zW-9w2)F*(6qRNVpGQyGoDWPgz-J5r>68<*szv_yd*85{1I33qmKq3OJ$U{En)$0T# za5b84%jN?Bq~zk}YO`vse{4SB0F^DDwu9GZJ6w&X+Y^X^llAN_a-C%{)IGEL%-)=% zpVwBm_S1NTsKDiy(8-D;onNjbL!D7M0zl>}s429Oq{^2B|F$`ZgvLe3Cnu56uX8j< zaRM8R8P`ZQQ_+aA1O}Ww@f4vlJ6l2e(zBa$-KIJ>MqFZIHS0@jmaPmUF7f4iND%JA zZdfxFc>M>5C@}*lYTSi0RJ7alC;-msBiN4EWNbPM1pzi=8WgM}$B)*8irJt^@+ac+ zM^MCk_qOQ@V76%LvZUxB`f}4!k)#KOU|v)QI9ZUzu`Z<+;Y>~!71Bt9+%Q63q1lpB zL&UV4UALqyq~dwXu0`Qjo0Z8&B+rKaX6!7@IE4`gMHYiz%QEd#^Tl4Ka&rE>fBo`*BfH;|MDom1tb76z2$Z{NQYqK2OhWp z;q8@inkMpfl4Nd3QOd1o>3ry*s-Kpm%t1CSmbZ`rIsb2Ku4i8 z9z@bypv%N`*qBE|y*QykQFXW~xmtK6I5qtvecP)M1%>IBl&(8M?!X?RJl~xMpuqdl z6?}JE3YzC5&~ngYNg#Av^6ivhI&pCUk5mwKgt*E05vW2n0$YSYx(fSdYun0?r+3ul zAmdq)$|fE`l2=TXdk#=F5R*u*QXkg#wHP>lv_F1@?qSJA?3@>i8*@qQK|w(*+wJde ziEp*PdogV#&w3}8H`s0Z#jcSB8(_O^%rtH~)FUjI3x_y9xDAj(9;sinKap|u1Elm$ zHh~|7^-xT-&fV;^ROyRb~bZ)!^J#SbY*i3Mm?n zUI~ENz0&|<8u;Qo<gIBhKCpYAuItFP+S~PBFHyEo|LZ;k{?Zo`pF$~ zxq>yyYKnI?SljY)+!+4_!!YXKIkG)`0ji=jr{am^Q(K?uV2%|G zu9$BC9S)dXFg&Rts9alXN&TQ8S}(TR+6Y9?C-;j}O3L;O9RM3`kDZ~1LuG@XTz8D zZR*>ph!N+V$e=Bj1!_q@0{+`_zrQF6M4=M93+E|tU2qCb_ulm6pH--#C$c1q2_OY% z#-brevzb32DTi36j{!*n_S}6~3fY(Kz1z|qxDZIw@6DCj{2ToIod`1$3uM<>gR_D?H;LbsBKB)-JU?Zkn}V&>LG1ppXn{Ghsm zJlvQCQ6S~pxHRV&52Ae#@#8>8`nNP5sT= zm&Z@Ts%9x*w!Z=UNWt|VM?;2`RslE=i{G<_lV2P+PAVeeX-}4Ba}YE3O#?cGM90av z`UMRuOPe4sO?lVQaIfH?D%xu1TX<4^`F1{1tz|P*QMuUQ+$orGY~?R$&VvEH>d{!r z?%1w`5ST&08QDz?j1F@XdeyyJ(Wqzg>}?5-4B>s$`;WwegJp7e&7)l!txjT*aBIH6II^X)cegGqdM(l;_IovjJ*oXz% z;juB&lsr{fdu4j=+S%PSsZoNP-)f5mRB|gd(-dtlHZ^1ohb)U0a2)jTbi3| z^^AF)xIl6jBK^9T{}pE>Vel)EOaw;Qt?@zE5%cGte=& zd_(HL_JM&0`|?_<^?EP4vUA5_)c8Y19S$Bb(Q!W?ZAO5UC~X<=OLG%TD&M$AKVADld11>|7z`3zHP7(QSZJ z5vqY}#49;K>jvlw5y7<$g18How-4srP5@YfKI z|0a1;ER41oNAi5sd6EQI4Z@v`8K}fDo~I0)+wkB(065pKqE!`0UoEEPVKcM6e0A>C z`JOM=pVVAKJdyax3nZQ{yEY>4Rb+rpMCKX`K z@qn7EVm5e0({!5}mgP^tIxycOY3cCR80WfH#Uu47mUHEvLpT3qDmb2G z;4QFKq8G4^_F0LDWCmOb>}`jtk>Y#vwwTA`W?X^5J&Gl;17~&ajB(=Ruc}PYgLD!pb4cp2M0(}% z3mV70U2fl?Vc=Z<*`d6q_+kJ&e`R>!b;BpT$;tLN@I3bIB@ zQU%xQ{`|-Ji|DoA|M~yVdrMsHE$zOYBE-2nyW0-`eBJr`eS5s~QjK;}?dIvl@x`I2 zWW55anY@m{fU$-Ce8-(`W%`G70crWRi!0Om`X7}t_Drod7t{pz=jgAdhmy|z<4fMZ zuayy2U{k+r-8Zv1sm0FDG0GuVopIny@-`tAKg)~PWPNk>+MjzKivM~2`xpLscb5x3 z9d&GN$LyZY6Ykw7h>BW{dN=yeMd?y_TJ=^#0-8pSB2z{b|8zgWoshfB&a3T^zr=_CWp5 zYu%PVLwn!%=0=O&?C~iR(@Lof(Tz?n71Eow4s<4l96`xptMoosrxW`s1?T;TiB=mga3CSl@(vNS} z=(;?`a6c9*;XYUWvjK^cICmiP@;|!0*N<;I|F|1Q_n`k#>w0BraNga&aX|gEc>x4+ zH~{nRCH>!8_3OXI`bW3;HeNxl_vDFZKjm&}CQntzfO=dM^NWhk&PyLDaB3mvxGldE zeg8p7All%ZhO>3xWwG=#?agm@=51;C>>}s{1ndk1yx1x(7T>sV>*ChbsLb7_nm3=` zyRFTse*Man=uqYHhM(MJZ-ej4d`-&atm)Evhg@EpXVats%IJw96>HB;F_m+T#X>T0 z8=_q`N`r2+>eeSvtuT1ae!rMKcV(`Llk=lM@v99VTsfMUrFhQJ^RuHM!F`jE8d>w? zIPp^kn8kNt)p_}HwtV}3Tfy>NExz*ou+Ud=vG)`=A6qqV$%g2U1%UMX3-R`v%cK@tV;CXx4 z?eKG|u@b4wU9*c|8bm}1r=A#Hr@s;9-^57q)!-S0*p2$_@d7j^Y`vuUVgGa4c3 z3T(?IY!Xq&vaIPRMhU5C_c34k8}$-*o12o-cUiycJJQs#tyBY+)a&o~tmxpBh6b@a zpWl>YTvg`3AEk)Rz2cT{-R>e>QUPOkAM+H)K$WjlUitDDb%Pd3DX0CSQIoh0)RsDz z0`l|O*x4%06wJ(d_Cbe)IXMg|i ztI>_!d#>TsLD_y%#?4G`;ZP174C=iUsmJ9zcDG-;en^Kcd{9ejLP7>h{gKQFCQC(@ zxA4Uib7}tVX0KOrRi~$KjV2FopIoi&i>RnS{2KEwy>mBh(AndYs|UKZ%{BacFt;$~ za{9={6EEzW56=Y`#|;`cO^_Dw2O@qfHh*B`$-Mcg)23`LCTEyD3M=ZY&;INSOQsIfV&U%6 za_H&Od$Zy(*HK#!%+I`ho(LZ8XOCUHdPPc1ANNu}yFd_m==h$+fGSB9V)UOK?h+gl zTq*rbtKg~hC8qtY%P4L@{;DuoC;OB6JdYfRf(>51dVQ0utlU#(ivt!XH+b8lo`)v` zOs?Q%KT(E&e=YmnyRz3J34^yL?<9PVOCN>l5cuuX&)yFFXO|H~H;Ss4n)rVwsn#W+ zprCo>xx_qj*;xwg1~QiVx^l`7Z$GnPRO=7_CNL^27Z)f5GpyHUtZj9jYinnQrq4iR za+Q4(lH&hlQN3N`N=>67w`{vwv^PUW?f($_UA%ZlAi;(E2Vr34p7gQv7i$Vadq3o_ zc#zl>=7d)b=DxO)zl8H{k}EoU`!tix9~-1}pZy;*akbvwGVp%!{)NY3i_m=2PGt2w+Ww1`8t88=-^;)Sa#x)hQ_^$AlbS1-}&%XZRK_c#F53pMG@ioA^gK1 zR|J!EQ{MV5>Ue1JI7~?buJg@I5i%216bI>}m;TKJbx)qS8pQVL9X;K30lx6eh5D(u zg2Yl$4IKXaofW z>1L$6%L1gO8;+z%NlABicjwSGbPVqv_4ph;4Bzv7f4}$rol%-Ok}rfEGyS%cqiK#COKyr84UIEpj^ z)CW&K)6~}vW;xN9QeRgAFV$%nE;L(|kzr=pM8!{*Y79ij0{St9t?b|*w*}F_5)X+Rt9<*p>qa&n{ z;~cD+recYLNI&gs8E~50TRTNHvR-?Ay%8EJ|IZziz5m9YA$#=b(E?qcxOo#}>gMKJ z=erAJ#l?Z|$v+N?ZwxFywOC;QaK6%Ra}E0bmcw(xH#cu`4D?oR?mz6OS9<)>sNAt% ziZ$7rl8pWRZ}k7gkg1~tG2}cY4mP>`iMSgBB8dyLA}jIK-Ya9f+&n+n(As*nKx9)= z(bOZUsEC_I^^|K`8o8Pfl@}+SxmqLrsQXv?HXEy}B{pYi(HYr4qwod(SDp7hM}Z2! zIi18_mUK^W%Zf;`S59(AiKrBqN6t=qQbFqb)*tW@h1G zbXdHANo+>=vlxENpGFxKSS(E)*QSxw(d7OHRDW|ZxV~~7{cmpxr_x??2s+*3Q9)Cj2)7G|6M3 zu=Xx{ydh@Z>r;3;6FDR4`U1Q>%8qZ-(!9ze_|165JASG(SkL}Kr)fQPtO58XZLoE> zQ~8BMZOOhbypbP9Z!T47W%|f`35&_DVGKEU;lf2S;Ncz?Qu%kAngdtp*7v0d(*625 zAmBNo^nW9|Y|zvZbUGtkb)%#D)6QqGFgLGx<5LndR_~wkim-}`wj=eUoc)vp5iqg2 zAspx1TIFtJZ2ob1_wv`J+KS+?rfuU1Bjab!B%~h*0q4m>K7`SpCPg{RC)n5PA>$hs zTBVArE+<|4o;upWC#sQ{mY&YFl0YirCjLC_N((Vvjb`!g9wugUd0{=(!R-Eqdo=N^JFgA=n|7}>&BC#uKBqs!Z} zb?qxFQ>Hz$lQ^;*>47f}otxv>8Pf)92P3oHN#i*Je8yzAgbf8E109+0h={zPy903R ztxhyxWSOd3f_9zx+cR0!VdHb<*~Rmd*h}#YE$<8XA3Zdoc?KS-f^TYxKOkPhzwAn_ z9jl>X`gxPe*Ei#$a6N6W=3u?Ytfclqv}dKi*>yL}WZ6~x1aabo;*XdWpRMFty2j!y zs`~mu(E19}!g=B}aZNKXT!?InDlQVP8lwSFih2E0O|WulI@YqJzoEt&8Ik!0Oi--l zVWQNvd@D?_N4Ua#f!IS6e6V2Y%~mHkv`_J_^uH&;l#$3QRej97KluAUe=4C=MmHg? zB^o6>kE2f(9~<-3L#4^B=flE~Omk#AlSf|PyE84*;v-6N<3`v-LHX?VYwR1BJ#nS0 zI&4y}uw~N%Q4kcar=g-wQwcJrWsVn*+i+(EBJ_-k|BF_YZaA-XIG`PR(zrH{j7wNQ zHWUg4fgJcF1qH>K0*ALLTx$%|TFefE>X9C>7v#bsm>7=WchEyEs}nan<8s_gj| zDc-@kU4`iuEH0bNRT}t{qKZ6}5N?o5zgn?~VtPiC-x*9smVjA8;|0zhT^;G!6%-XB zB_|D=d!#7{v@8KE?5|JhL*1h2L63EVSpg&xsMT%4K`e?}%>EIn^Yc}(BB^+?=mrLe zkrZ2a>QN&TKV%aZ(UGtw?%>BE_54YFNeawGuP?HtAc6M}qXZvnhvH7Qd%ls`Auj2^ zlcqLwgW$s_sTgZq`L8heQX&Rel4yW20q(>?^{boz3;ok<*t8qw**FPS_@b-uxZ;mK z>&Z>MdAa$mfWGpUld6qPTKl=ixw)TuQOKz3)_fM5keJ=uzfp{x^S_iB!ObOFsJJ#> z^`PFvH&A$jVVZ<-uA7&L;!&bRh8h-gkJMoJm!sHmoUZ;*Fr_hri*S!z-FrYZu3=*} zup1g~UY{IGZTk@H%P-8&nxNxtLT|ejkeQH$u5Q43t1NS;BS$8YU4gGAj_%E=4P5vo zaE6k-+nT3nWNb_-g0OB@mMTE_Ar5`{Kj#!sn%r*7h{E!r>(h9~Jud|X#mH$W0*!}< z7pQA16k~2Nl6(4lfQJc*`H&9S(cpPrXftrcXm>)qH&d4q7?bUV1&;O%R`?fGgy(+m zo^+{aH`PxjH>{kS6rkLNy2Qs-l}yb8VLWH8ku-^q_3`y-O6-pr6gjf-iBGY~Z+t-{ z1TTk4eOF4Z3;1ei6x3JBGs#0tfq75f19ptCEAl!NC|oP^NKIA3p^mcEv$7Jji`Ip|F?~)TOJ{2+8|Sb!8na$ zv{1QseTpE2TS!3hfWx;V^C?ZhJ36Iz#|y>L4SJKJrVV<+u@>?;vz_}p_Jj0Fr2W#_ z;THv=kM_3Im@b>dr$+jbL{gBkpAT?%E1qW)Y^fvXSiMX!YsW4rBW|;)1-vL%bPV;} zqP_Y)NjYcWjC~jd)ldUTQiQ3|6B0NT`bQW#yn+r&Z^@C?_o~miQ($vOk_F=n3!)(1 zvyiGdPfB6HVwkMh^zpzJINKbOGA(r&;@=h(G&tDyJ%%45{X|U02}Ij>jKJvD7n<0) zxUleuohwnRXHV(|CRR=;TX*VoE20Pl#({?mn{-J4xq$KhY+ki-X?S&i7h!)14v0ZA zn{R~guiU#;_JG~wAFGx>THZ09$X3Sh+VCH{j@q_;&^Xd1@(#u1es~TIE%8&bnxqyD z9M)VWnKTtpYXsuq*Rg}fsZ@vX_Y=e?T$Q=KsNAkEP-{u@)6n0syOQF9=6-`tW#}_D z;iu&CHs_7`;Bhv*<#hEIczZNR!uo~OUoWY%@+PXdSYg6zSWpVqX&ATNZl@LDR}^xz zj3;(oE4t^~8?2med3cg+WMdO-3gdba*-s3?>T>>j9G;M%HBInjh`d_sYxy z|1Z2zDt`M(we13~G;Sc=df+SwN#ZW;Eu*ooiQNqw5miSFa#-nP-|;*T)qc!w0XCYJ zl9EoRW)9dfg^eb5tqE(egRrNYn+TqPk_7)dagYzEjMyjcxjigS?gT4O_eh0RV%rCRAj8xb}NzBx+w@P|?tl)82KeU10z-&=L(RAAZ9Pya)6v zS0tXvR>e0;O}9k6O^|M&^%(<^7;tsfvxoaSN;a!!vxteecf{1}_whk)iwVRtEQ^X> z+>wqhuV}TgVlXcEOZHF{8~&<5meZtlar1g6HE96O4PKY-inn~1aK0FHUA!VCeTz~4 z4iFUIfWU{~P@hP-yUg)VR1F^xKX`3JY-+(Dhwu3qyoBQ(etc>)pck(q&KSldVXZo5 z`jUtHMV8UYdFhnV`rY~A41?bR zm$!+Kx_a(lgL4#Aa#1l8ijtaxA}DC~4jj<)^f?Qd)Q@3-eq`6$)s|pi`$Wqk)mSxS z*UHObfS_Mqj-BdGkt=&$PvcOl-rNivaUbw{mM8@hrNsR6I5_MhyJuwDPO z2S$ts^rjt9h|}nUqkf1~UJ)S<1Vb{~z%*%R%TPgZ1EGjkQYz1g!$i+fJ>dLPb*hVn zflD%}5zq8PB+I{qw+zrR04Xp6XCPE`3DgRW)V|q)uXO6T+E`y`2;^r_D9>lv7LTgN zDzPFI0!kvQO%2xcK*X8U`>$`_m_#l+>3C*GtY)ilz=TI(T&^3dy6gkJwLtg1{u^<) zmRa@i=ni0vP^i@BHbL+LNoJ5!My=m@IN*e)u{qMoSVN7neQSUTkBbW5X^N0qz3}GX zijnZ-j|Q(e36Lkx)n}Fbk`Vj^FR}2;3J1`OJ94?N%#);z{>Zo}K+v70?lz)PSmULt zxsU{0vj<{YG?M!i6Fe5^wCD{xg^Q;^%oQEA@EoIx{}4DW{^1x<>O9}t!PaR)>x952 z!+6H;Uc?D>j2x+-2KBm`@erCuU zo+`b1!6_%F79@1Gm7h(P&wg_{;JIM&{358!zlKfh3=qW?D^f#q!DQ|0)a|_Em~mmg zdlX`iFTOu+%uf@*?eT8At8jh%5 ze`a1$s{-EAF=&L!`1){9FL(&E;Jbnsr~-NTvD60zvh)stGthb^8{<8slwNET%3**b zClpHapVP8Gm8~i|M*NYM2w`n-9!N~uW9Q7<794x^7`IWIl%p^Y*w)fxr>Eua6g@7H z(Jt{G9iu`rNwYeOdf{#@Db-VNRMX-4ZQ`RY$IL+|eFqQYA z*e?H##weErX_3wb5m4qpZ~X$bD*4zQ9-I&uPSk{lY5$l)9OfACHet^uDoJBA_m}|3 z)=whX+gsKXvi5JXhFva5ba3c3w=idBP`Q1J!!tZ(AicmCPI1k>%Ppe0293+o^76F^ zZw!m2C45l8aGC;3M@EL2tkjXyORMGL9}6nvpbf}~5Loa%mJ+@5(Op?X`W2+*+}UVj z(}|kaooyA^QtE?f_-a}6kRsUCU%gc0;o_WI%o43kt|{!wNoMFM71dMmzA|C5h@l{W zt}z%ZH9ijUkhm!{kf~vxTPSYS&&0ET1@T&EKA^q}0YzXH2A`uywkCiD2kCctPO2@LJ-ms)xP!??ButgwcAqa(>-wk z$ONE?L$Tj^5XJ|=h=({OwaF(OBQIZkJTdJYo0$~$_a5lXEf^V8)IcQ_gdZxycKS5M zHQ$cfzI>tr0ye|jp!U=QpToDLQVIfDN&qYa(orgVlKo;Q+Lz_hTVz8rsYbA7qElMU zrO&|HKjUq{p!lmpGs31w?E8R>$QrnPJ4#FtO9zqscXSRuvL_MT1lQkJH+hczr)Lb^ z_(OC;ZJx+dwR9#GCgYuY5}=`HnlJurROHB^?X&p%6RFgRxUa5ts^x4uIf3wQ4Oh(w zIV(k|?d(FaN0l16k@N|#QyV82xQyPDwD;NLxmO8~CZ8Z|3TKRP>H5#-vva3=El00< znep=W<`w9En6b0_Vrto=lG%sL5c0GjfBe(mCQtZe175Kt0mT6{1KA|_qhHy85%WLO zdrK26VrEY78^=b?ifivY0Q3?Q6GO_`Z$mG6d?W#SXTJ~gX4`k!F4M|nRAKsPVP4f1 z*GzZroM_|a3)4zK1WgC@_(?{+Ne@IFg&QzHVa=D0qqL!13^wsLqM+cM>kk@RpJY?1mux14%$pWt;ufMa!kZTPoA&glEsrQFFbhd#f~Du2Ec!`N(YW((H@Y4znJ5J3ve40_0Nj|U37v(U7LfC%1mg3( zJ8Rqs#UXU`U=YnEh0a?n7z`G=R;p#Iv30e0kHzoqsP^>PhYV;j@1AfZoQ3X6$~jyO zYjPd};*L-_iRduCXDfX|6O9&VKUe_X1`#`u&by$ve>)Q#eZ@+3)iaC$;(Vk&17up_ z`^VHA`*ftRpdf+g5t8fMoN53V4kGA2ndV#;YzD)R)zangSWL*gj^uw>T$F1J&_q7*O{k`u7AQ%8F~Ha8}R*I>MpHB zdByZ)o}%J<;R>*`uFe$==;_}<75rd(;g@TV)}{p{3t=e0m;K@|EmZtPCm#F_md90h zP%-#d1LJuV1fyWoW!I=>GLVM24H5~hRrE}>rBTqgr`mG!j3Gzr2lsna*V6-o1i~sv zOl)h!>#%-tlz}o+&MS}LvOFKmaasU`73!}@uTdF~V}e-HwUe*Wo_R^BQM%ps-O~At z2Wbu)1FM2w4i0ME<~pG=BMo(?9E8OpISEmHYw@A;QnyNB1{&+wOvcHLmJP#g9(BKjH zy&!^)(t|2GjPc1>6?RI>vlXB=n#xUZI4MzUpWV=zAW>=!c9jp)71Y4EgYVCrA%2`_ zHm>ye+2gBc>fJ}iAMVM3teu3U?VES8QcSEA>7324e!U+#TTs}{2yR(ZdcrbMW6eA$ z80Wi(dFJ()o~0go0%79hgEJ3CA3T0GNzbVE?$zV#e1sR?+_zqpS9p2o1`?_|I^rKb z_zPE8lS$X$8IgT!&+3J69M;x1>fFRUb5h{PtgX}HLsusX@eE=m>cmq(wepth-lwv%iiO9tP?je${f9c2-NtXwsHAphOD)lBme+t=jMc-1d z)m3n3p^PLbR2W8QlSr)m##&?-SbRQXfFQTQwLhf67}=?x-y87tUoXQ%_6>$X<+ji9 z=MCQ*|1Kv#8r#F<^8qi+I$M@54-#0D5ov(%nFoIqZr`QLa^wRUS(a={K|x`1b@gjW z6X>8?ezGW3r`j8?mFpu+Zc* z@FxxEMJ$fBvn1+Vjw0U7!NgaN5jsPs+sd#B&$jubL~oRTW1&9qO3FJt33 z&s-2n)X)=EGY>!c;3^fpgZrgLs;=K@Tp@;%3#A7@ zdXX=quUxEu@(%#aC)07vak#hm7`M*#!<`)*5b}Pj2udTi#oEUvCo7A#_a`L5O1hDx z7!e9=#J0Q+$4Gr{x_Y|qPD_jR^sM9KL@714ji~+LU2z9cdw{)6=;#e<>&KN2u)!8^ zf(FBdPM~aZa{O?9G+`2S#Ap)hJCd_cIZ;%UuDg3+ymp&cKQIkH6% z1z_b|RgLOB{8<{-YNsl_>CV}6(YKc?L8*$*gH>Z(Pkw`%FCQP_vYMU06ct$kkJF4z ztJUgWPc(xv;jhlk ztIasV@HXh8OYLKHzBA$=dWP=5>#(vq_lw+}LPrF*IzOcmX*wfa@{LQ_T`cR%I8~m( z9{h!zoT(F71QX>t=_`mGxCdTDY17ZI=Zr?pch+F+4DaC?p2lus)+Y zp4~6G?(J5du$#?U?E1Y2w>kXXE%)exr!J?{8iF7-nAhI)^s%+9D!O?Zx5c=)_UMSW zL1->U&GpQ!{K_I}=gUOpK=NN~uM+m(>f1Vv zaww25bOO$IPU0fgKi*iaT1&31Vzlv8^e2L9G$Gn|H;_d*hPwGU6q*f_A_!Vf-!v ze-)TE#iMlWFWTw(U8AL>dRj}AuMbuI4kL;`l>~*vy%*P4%`3q(&;sdBdYWY})sa0{7$2xXjV<<0nRDZtBH?g*zyLTF`QiUmG z1__uy(JVLMcO{FV{Zke+k7TF^KPj8UpA;02&>DS(3xcC4hCR-#H**y!k>v@n6+3Ob zS=x*c7JC|gppvSOTo}NQH+XqmU?L5I%05lWvywZePMm~RipBdJULUR&HWyoaEgdP( zKn~iU|H3D!uFi3+-{8^?g+`LGR`YoiQz#|z@Ev}lviq!@G*N<2I`S5r6QqWY9!vX3 z<)%eJL?3g)L>=wTJNNu^U!P`|m2HYVsJeb*(u5f-;+^2I4BoU8;Gxpq*vE2mavYm; z#&k;gqSEgPnz?E-+e_;oNTgcrM~!a8k=H%k?CK`G zG&6t})Aqgt@5y5;Ts|&KzjQKBX6T5DeA|^`5io?#M9Gy&eX=`u{K4@E&y=3=^|g(R zspkxY@R)K&7M?19_{f!j{gq!p*FvANsOkf{p}s{6t(I^v%CuKsTAz-eyE3Yw$zr>S zBl+S(1KUP>x(wA_u5u4bN!(Erla!(eEbM^6wj2!p7@sADZy4zNC@xl1tXd~qE&Ig` z4LkdL|GGLW6Zi#lc3f^MuQfNCD@8A=qbjsA(~S@c-7stw)-b#h( zI$^NGr3ohpZ~7C`kZYPSNhbvmQ()=q>-R2N?M!fXsGrRJ7cZ%dPoo)SWQ6kUxl`Y%oeDdSc5N>;#`g1)TWCx5SeaR= zeF6iey^3tY!FlF>0ZU-(v~-nWy>6I(rA{^z`1Mj0YdZAsWIT6dqoR;&Znzi_U2+#; zp%8F5stzcR{x9Z*oxmIl9>j99SfWrD!iP2&mwk;U8uS_+y(vLKIZ@XH44lf!AMEwC zpV`;d@OV*h)0h^p9Sf6K%ueABrI>Vvr6VIpi&n>wNR86RtcCN;k)o=v8tSq)EySdx zOaw-Ffn$@OaSRy?z@9(ialCc;gQsjZ&A=`^H%G{t-ITK$RMEr5c8SICx0Ty$U~qn1{#|lv)2zy*sw@~?^~9YJwS?#Ul=f& zWup&_{bi(#XR4Tr#f*%uQv3O>PEG@@WUzWlIEDS(Kk(oN$x&q6K7)ql!^D9nZovET z3ffz=Dj@4sA8{JC>CPVgLoPOWEcuOfrfgIWCfLFYC?TC)e`VwWTJV|`(};7!Y^4Sh za>zh_!R{0w40s9FqG_*m5 z<;t^%!7#O|u_P>9Ife9Ps5qpA>nAn9aW=;Q11Snx*o8O01kVFf_2-3okZXr??428M zvuF+YuLe1C_LvDg`5Og9C=dt~idEHMkmJW` zelfDp^PQ6u6Oa`ktW;dPT*ViT>5SAFgY-7H2LQRc7rxaYnTB6dUZRbV7YvEbby8cc zv0l4zqrSE5Emhj5=!Kc(6%gsW6AlU5us#dQvZ^V_+uPgg(`CF(SKBo++J_3w7O;gI zycj0xuAj>dSI{+tJ?0~~Twi?K_OkNjy^LeTl~fFR4|7cQ`r_b|YTtX!;r4I!`M7cw ze-q+#xjSZ>nSC$V9qH!b7a78u0P4iX#RaIR5yQsg8Z_bxcH&VJXi6(pxkOA}o&Yf2 zF#09T0C3UO+kL9CPIz;Po&wgVSE$6fc`;5?Ab3^d;%No3)a)G7=xATA-OV!KXPEH= z#pZ8o9@4lYG|||{)+?R$b~$Xw0J_;YYqfUq{H4p}2BRm$q@^>Vj*L!c^UT0g&&Q0^ z`WOom^qVl{U%YbVHh|yAK|A1pox^a8DU5b|L?1W?o?tqri`iy_9A*@flurZX_x*~| z_=KAERHe`+Hl${{kgyP`ThmQi_QU)@In@2G<*jIA*=~}k)KAn62KWmCrQy!odB;hJ zPJCU!nh)DW=}tw>u|R|zA%h|7Je*Z6TMk&4S|{p|@-ks*UA@lc0)70Kn>h3+kZC)ux^_#YQgLF|U~)xuf4Rct zMfRPD(LZiR$`<>^PirZ(wdvJwFwBm*4hjQ=0jdx5_q3(f4PZlJ-+?V0Zma}lm1PEo z??1U$?BG0HWaASNP?r_O^IE37cFbQ!daPNYtR_m~COg&p%6C45gE^Pz!BT3oyh$Ui zL3Mp-i&1Txp*vZjx_v5Xn~tY|<`VEG$35<(D&*A{P1N`l7_emG+$o24WthEr`^HLZ zM>sSz%$QFgle(uO)`il9G$}9+i|~3SbAwEK=b#5IXXukWVhSE^A43||Nuzq&BqM0* z=!7`kRl@6!)yf60EDcn7f+zaZ8G9<6pUBsZNYsw`s_}c`idk~#W~9re#NKV1tnXs2 z_9hUCgx-a>5AJg?1;%1x5?2GiCYL!AfF~KbM|s586H&nJVV$<={i02~BY%-YK|*vO zTbC>$c8w&h2lE=CsAb3!-@4hmr(ZM)NDyPBz)KC;EF_~Oft(EQj^`0NC z%m6OL;Er`t1bpH19k7dvJ99>^$rR0&7m2`9epjQ?m-k_Pqp~7m2nu{<$fISY zqT1$qjsBL%KMLOYR8XfSmq+Bi@rLBxH+p*2^#UnJt|1Pa@2t{eae?z^<-e|uk?`II z3lCQe(VJiyk!ct?VWCOiQmSz;ot@O(3u11x%ww6!N$b~l>4qvg`Xv9+RC<;6w+U(& zSa?qQOEt4}kDtHrF-iF#4K_27gRwPYNzcX%?KZ0(gqMIP_MVj2VwweIQV@i73HP^) zrYh*G@8_mZT6Z(iH#POt$@+OV>5%JdQ^=%#Wpo&PvBs?%5;R@ipvIb6WW?MzZ-Q&T zW$%H@>%l@Bly0^|V`tK>p`IxxBp+HAkfiTH!WPKgA~zkEw?j8|G*wM$QOOVoG7KgI zmP-VtJbJxZ0sD8I20)ly{*6B5RC;?h6Ki>jqnxAPe4>ZvZ5 z!@l~K#C@nBukyfW41eCxe&Nc+@sKH6Z5@MZY@()k1q?sp$l4}U{MTd*>r=`NSup4D zDBk1cM<=Nc4QP0gZ->nb+!MXVjW4Pl(rY=_O>$#{pOHEvS9m~uzG5$yMua%^=}}Ot zUSG;OYZt^cbduiaDV`?#56|#fsd6P|R8rd#MrI zZolpJ=XbQZv0RVU&!6FpgWQHs{h1Dqq zRm>DDt5>e5Cd=k|#5KsQ+M{B@pdbpw31Bc`p9*-M%Ph09N{Ms+%EjA^s$^(ei{+F+ zbUpKkS@rsb5rGe{1YPe?Y!21alcv=cVa_wj_5=@y`od%z3h%M;;)%4s2cipt1cM>6 zz^nGX#y=(|U)q!`7bphcq~(sXkfbSd>dZ^lDVyN+mB;!0e*vQ5qHUM#Bp|! zTTC9JTi5mas$Cqn-+yU+O2NzUdOP<;AqsU}MZrNkl)@WuG=zAH|IXOy`F}L}pDIGkit)>$ zP=C}4D2&SyzE)2&7(%#$|sn?_wAm=sv-!C>(LL2Zsrs6gALBW5>LIUUh|G( z@kNwM!RCj8wLz$$WE&NS?NC9?sD?W}|Q~eu-#`))V4wF8m-r^t+F!js^DU_?2K8K+a zTFqmlX%?7Qua-7}5bg&63whOYgtu8N&a*ztA|HmDOAhu3^acm(%$mgHI#Plh7{@{UyM1mOdgp^_>B*DJ#>bLY^x%jV?<9VX%)d zwnJ3m?58CD<%jzJH1*@a#@mP9CwKTi>&^!=sk4F@&oNFfeYy9 zl?FL~_GUuMj}S&oDSM~i)5S*HT+o=3!#LbrhFY)opa}{SR+*BwWSTBJ4DXGe-rZcP zNbUq>oXqa8UY$_dh0te$dtBVM((N`ll@4>5*JnGzznpUV2(S<5OZYelJ%%+bI}H?k}*WIa(=W}aUX2hW4F;Ivv0RYZ@t9kvYnN9LB{N! z`ys4@d$U7eB_HR0$;0zHlar4 zb#$PJiK&U?An&wiVL++7!8z;zQyf26EdgTC0$@1=t>EWnKfLw!Tva*?Bq+D{q}eYT zJo@~nKL2P&K$%LlX;%QhvVGO-eO8|FEbJ3pl@>`6VfdY(7i3CQ+ z<~yfOoyrYZ$4;`|D%xTP3nLlmh?O5QH`>1zln3`Jw&Ial*@%BbV_l= zK%HEXSI&raQ10t=khxfEqr|E0`{IMq>{$E917p3W7IHd^6GL%nFPaLLi)z4fFrRa; zI&AQ;R=qQ@q%p#BeJUxfcpNt1SZ7+oQJL`M3GhB;_aRZ!=~287EkO<&Ec#4R({CVi zdp|z~hW5<82+ekTRJHe_*oG+WZ~$+2eYOdlw;Rl=$)vQ!y}|$+wjoH%C7~EM2P-@W zvlc5(PEM-cHB*O!htw%4GPss9*SvW+U3c6g#}w4>f=rN@^mD%)V_Il)BsoKCZ7s=_ ziU`&yWA)`9NH=L1;Zx%K$LLMo0xQ=If{REG6>+eOd0hj#*UY0glI_xzH;)ILT95<0 z(_DL-p|!LyK}!uI1Kw99qLCsiusiMqT}Wg#|^0mgBwP-*}Z~fd?N!q!D9hF zB#_EwZ+{7p?3oMS>69S`xnEGc3U;MBvO_Rw#C9Lw#jl9)l(Tv7HW%um*EP9$_0Jtd zM{idJo_c7zsbO3V@-WHMGnY!HEzX`rTdirK%b>F7fWsQq;Le1hhue7W%z=LCYAh`W zI+P$Oc38T6xPe>J8{Ps&CKjHoVZE7YmTeCs{<_>>F+I3}T-bs7iyKf4Ox%|$!;;K- zibqV*X=%DSym^FY{k$QfM!pimqYAqG8n#_miS|tqj-{^VQseCY&?E1aX~#mo{n8h9 zo5WULQKEJqxRz(!dp09%dy923!c2RZK?nup*=4~FYAS!cwia(9qhfy#aj@{=n{5bz zKyQSxO}6gWw7dvU5BC5{xg^6i+x&lnj`0O~%n5Ky44(3^!_^zBr`1>cY)3g9m{uQr z!-hP99HW`45s6&Jpt4nCa2OjI4=n+BB#ac|@P0t`c(L0@2vUPoNo;e7xc!td;jJ=o zI!Ph7H35g+dQ@L%R0D=HdNh!*`p=2`)!q}kkE=y6RZ#cx$ZAVVpadL5maMeiSuagj{9R`%@BE)aazEs z#d^&_E`-7E`cl*6q(BI;bmh^GlaY>&UX2u`0_9}Vhf^KkLBGK z0apAFT&CbpwOk=Q>YP!Eg_U4AzFqdA3=}ZbNhXS$o{tYTmIl7;)}WD>KL$)65z8 zGO&2&+_`o|yTSX_UU*H#r_ok-#vACZ(-){rp>gBp*(si=xlk(`9Kytm19^%~_xTdfI}hQx<^QA|^=H8af-Utf`+ z3#vOYT$=1=Jx!l+Mk zxZN;hC42YAf(3z+MZskdrd3h7nUa#S;J9>CH-jkz#JG@G*Bl}eM6Jge?da~YfGr%j zydj*fAlN$QfjA82nGm{Y(*0w@_Hhi4{ea5^OlP8Uh8(=0@0aF`8?;B-By*?#vpU#I$B z!|F}nld;1Ywt*?8e$7TMnNqI_cuq!HEXKveoQ`R$^(@?IE>I}w7Hgk5lP@eRs#3G0 z-1b~S?+)+Bk36ex?w(bY_p&HKhgn%)uU#W-%wg1-JfA-|MEgd!r(auJe`;uJ7$)wx zi*+G}zqJeGr56SZFw#&=qLIgDC5Q>CMdRKc1R{W^0og#x_FVOqo2rxN3x{p?h(I}l ztbcJh%RGD~&uoWD3F$#|nrg)(=b4nr1OyZ0<~3CoPF&;nDxFUOTQ7oy7ywM!OkRvA zks$gB^OPc@sAr@Ct)mhoTV}D6hvtEC;{`o z&H5X2kQIEBDd5`vYztq0%GT!+YNxm?4lkzNdOL1CS%a~|3sKF@Vuke%a6(Yq)~1Nz=NiU{dunBFVFCE>SZNs}+yaLV&&+x% zG{)zFZ@3cF-q+_UbK<0({K=Ci?TBI+KP-7v-_M^1*B1aEJ%4^%5^X3%l-~e(JF;zq z_}|)z{(0R<^;;~5$1lavT&^4j;&n*$%Ixd5rXZw7{~)E~yoa6l_ae7ph+`yBo!o%G6%@VyrEbgOZ)I73 z)E5BCf6}$dcJl7WR zqxqa`xVW{AlnEKjr4OR_wqOl`H;8vuAAhSBx_jftM7LRioeJ5Rl-eX>7c@IW*!8uS zlR_fji+`&XE8l~)Fl(8e8gcr)d}^ZL2I|(2s1A%x`hA#+D67LJuzoMBG-E?mU-jc4 zj}pyu#R5MImR?l|IMx6^z7W1-3qZ#Ea@eKW&mgZ2oV?h?ybv59twnq8);7&|zU6hl z*G#y0BfP}JLaks!TS(v}V8t<^{aNYI0v7ck{Ui!9o1iv`U*>229aKYAc70_v_*p+u z56Xjb`;i4DKl0zm3ISxNj<)`w(8riQ+}rzS78_KY7y}FWGY1Ik!lDH6_;^qf12V`H z1(QE>>mbwzUt7h}qwOzS1ke^M7V(DCkd&ST@&Lp@L1rFV&tUhT0+1sn^Os5ja0|E- zS;%Advx;eIJWfPGUw1+){)zRQEeLx{A)kR34@UqokLWgdSnx)3RKsrJsVgK0L{Y3P ztIY+=>88uPta@~lVWF&37lscO@b3=AwjUg{W3SB(&Bwjk67!QrS8KP$>QItLpY zYQ&K>8bjENgH5h}$lxfvd~5_+Y9!tg;`C36UI7CM-j(%e=%-|BPmmww-Jc=-Pf-%G zP(oLi_D|eM@~~?`k&{aOucEQVVyL3vM`c$!6n~E^BNIa?QmptxBy<2f50{dF5xPl+LE!Rxr9vrIQ*JB1byy+jJ+O@+tlkc!_f;2fXCw`%l|0 zSw=MH-^6#Au0_6I5)C%9HbolD>?sa z2T~6Hg^qvW@n72k^x$9n_^wegD>E za^{(~zINU8bd&N2RnjZU?;ynhytb^H%P4jU-D`q|CW=NTdTQehSrx!`SqSjZ|!4-0GY}*pU+6oWLC^Ks~gymA>kmy;NFh#z_%70 zZp3u76kXb%gJ?F+RKUfWex3d+%XsSL+w{p+j3e9AIT@-I&Vv>;iX4mnSnz~V2=U$n z-ksSAcTGU*q^%Zo91xPh)` zh;hQvZtD;}G&_=J$lBA{dHn=}omH>*Lz_AzB9g~;I-cJC*6IE|=*}hj$<%_9z)O^3 z%`yfBjkN+9dHlxEZy-zG^*+NQ0`_+772;dGDF=IwH2Y zxAxo730otZcsACVWpiH|PdDcB9uobvjZ!X|H998UCH+3l+EE3TDc{CWTY2PAAZJSu zP4&sL@PSgtn&iA3&7fOvO}qR>zFqr8^$~*YV3&)4Fbm?K_a8XW^g}#1YYRcV# z>}<_~uU}8B)W8o&_Nl~q4n*lnG#>Kij__(PkI?TGJ1#4jR>g&I!JP}k3K6^Wv)$Rc zUv+hX{3@>1tjv!jH-@s5G;wXXR`AF7d>zo(Oi^wo7~+O?FR&Zkzd~qyAHkJxz8JdL z-`^f55_Do&L2{T}$$BaP$(RtMG7dbJwGX0^HqVP!n+!EOYae9@3DkrlzgQ|bRL6IW3dVI+eTGp*ru$H_ z7Wizrd8U1-b@5xyo7UCEGJdbwD%(#wEQeA*4ES%ssAzJ z?BpZz?2yv~104)N6$$OjsjU}2qA??Usq>cQ;q70RS1`4=`@D&t0DT{Jy;RF-H9fg?JIo z*3e;^>|TF9`jDnzGv`ESvfPl5BxGx+F=Q1ZgkdKmSw4qOMl>?`Pxge}QOIKdMt3V! zKHkE^711zG@`0?c@v6sAoq*^tq{DP1XF5)GWQ??ZC6k0FR7P1b429IP=`3~MjY1Tp zhp@oDhQqg@u>xC5+Ap$g%$JH`!{LsbBY>LElVo7ybwMzM^@td(x|xu7tyMJANHyPL zh)H>`+MZ*vF%#Z30MjTZ51N9taQi*rTJ)!-%VXbL%(VQCmT-4v-k_EUQwN9b7!oKF zL27GweH&8418azF7!E9E2u7P&rWD6XN^Hc1sX6v1T;c&o5S#DY^0d3dk?_pQv9rz$ zUuPCs!{|}++e92>tbDB6=@Ow&7@O>9Y3yjZQwLG7ebT?T)llwo113XX6z;4ph93kD z^%~p@80bjXdQu%>EDb6rm^a#8ckGc)R$2+dCNE%4*IOk#!iQ@ znhRg)b+l^cbhKM4fTg0pT#gEi=dD#-a^q6T#S3Q zgVJ<(TPVb8%z9_$wPQq$!@8BjTBZ1DLruVB3E{eF&}L>HR<%7V{UI#P6qb^iX)u%@ zZnq0-9~=x9!iflK((j59P;xxj7_@@l4Y8kCPgcmLnP}d&t5#+rSI%9_C@pA0IGP%L z?NxKvV_JB-H}zGPZ7SHWIu0D|wdF9iX_hSOXABJw0CW^BGE;L1I)o_Eh`R4QR4aYnPEXrPMIFZs}SEHE#LXAbwO;5tJ zk_PYfCTfOP@YI?OW4dvT40i2U_In|W?vDXnAravV6A z)@D~7gu>Sx5uBF8oLuwWDGhZAj&w~;O(AA&*48oFk_nTq z4qRZ#@ETaL?Na@#O@#JrAG10*O%&9+o7gDM=Yxi~DimKTqXUa?t) z$9_joab!%jmrw-gD<(8MS2EtDfz1-2QTJf%|2`J?@>(7I;OCV>lPAxjxc%A=25;8^Vel zmL!FeKcv$d8WCc@>7b17Ma)G(8L^p%ltm=40W7|(uWz5BC@(*{I0N*eQGR+_GK%~5 zP*_-p(O_Fty+@zvT5Zfoi^JYR#FOeMTZ`e$Jp*m_sdp15eb0L|4t6)Jr~8yAUAzz3 zEt?|(c(!_ZE>n^?>LIl|UbK*^L>yQ&@SH|_Yj-y#a7?BmfV|($U_1nl16|)o!x0aB z_M0(Rc-U8@4T^TE(e;+2nwo4?9?%t-$l*sSWsm`r+Dv4srIog|6yiML%|X*MVr5F9 zWMweiIGYe2%ws_i>g?yWXO>#LDUvsrA<_%UzLX<#)vvqs4fVZwNNaNFUB#J zt6@=E2=SQ>z)w;}*+S3>gl$nO%kq0gqA{EVVErct8 zW8Tg%_Qo^=MqH3EmY5J#N8kzBS}25W4YeE9U#OYNNJ^~(&+)(;U{Nhd^I8)g(l=jZ z8$Y(K?p43RHXQDX6B&jaYnZOSwvfEMJbr)wt_JWakC(Lg`1rzS@=?6NSsF!pv0nIG z6iB_B>KCZ=$4hc(OsqonTsi@Mccty@i9~ zdxSg|qGFtjrm}fD&sn!7TO#YRAofg_jUgcr#};C3_Kis_=GlzIlMXrYg_jz`4(~gx zHo%w;szX9}wi^00CaOI{Hsj_^dr~st`|X^tLZ-kY0p4tvUPnLv_Hr=W;p_eJpcc(tPiAJ@rJ&5ZYEJ^@ zMUfs@DnJB3WE-(XjwQgC;7yXY)Bp}vN9*t~eHhYg$@HW))jv;yLp};@P2WqNec{J8 zH!~ynXltpdFJ`&*o3mf2X+T$^BL|%G;+=(DzswO{TeRWERz(*Lu#jNg8f@3>)9A~< zX=m6B#_EW%-MUw}HkYKm-Bcf7&3v%8{NafOA^Xj=RK>7>BU*Is+Ad);g8y*U}o z?UzRh4?2C~6SUe(C4E*}b)Ix*Q5f`ecKSN6jD+O~jl~o_Zz2z|Y#vs$>&>+>tgzi2 zG@{h1u-!)gSW>$`RvL^xs@+v$`7ok<mq2cy3A+4e&y-5^L;3FJ#ME>CR z8%60V!ri12HJ7p|XWih_lhibbjvQyb)(E^MF?GvB;eVY9Mly4ZIIgcSc%AtB`mp^=sb1Ij>MiF$j}D^Qerc#`E^hci8a0R^SMFbf2he^5bcGv{W~+q13vZ} z{Fiw)v{#BY^Ov@?I5bV_ms#m^W=8`N)RKUw@(yEZ|L8&SL6csdw9nR%s*84)^o+diaQpeVqs>{1a z*}||6h0&~K{y~J(wDU%V!WC0oIUG zrPFZbs8)Z~8!lv66JKK2Fx<919xYlXsqo`68>4~2+U)6WpYE?X5;OanL$s+$8({@D zdLaUa)3`fL!FWvwy(LgVAAeVh-ZY35ao)4;y5(<2%d8V1`qdA8DO%^r%_$}(W=X|o zj_>y$LU&Ft7`^RcvqV-jJ}J6!e7F}m__AS~8TbaDxzcri#FJEWe^42H@c*%!ndu5a z(y1~DP<*%m$mo}&g4W}m)#+H_pxGXO@do0O)xiAxQOnPB5_6$+%25?;*@zHP$fket3|?mNgQJ(Ghm)+((M9JNhO<(pj4CjdhSpFAparg5_J6VpJ=9d z=8J+>61Ap){`mBC2>=5K7N70#v1JAkBJu!bKdvVZuNP1n_aU)wojb*Js?pGu-ZOq7 zbTB34eavam(d<`~uhkNC2xb#`JUB07bUg99k;#kaME`c$@LEqx-!gM6bLvPw*KMYu zfC(A=7rv@z?Z(YQL)0eE#g$6;l%Z!$dSt2TmEZnYvYS8VN4z&7;Qp1NqTtt z1;fK094Ht+dFs&avnYl6kwrX>j4}SFPqktvPJYmYV087z)XsoV?{qWmX?-vSk`Oohd`D1r3 zeu0&oZ}ZjgLqE3ts@K$XWAnY&Qlq`J@e=gONr|yvvl$K`QEF>+~$tcX6R3)WGF%;Uc{@da-ZE=ZI8QPU)_bPQ}|`c z2>X_(Ut?pd)@C3fx7F&+QDtS*cY78DBl>9M716FeTY1UuRdfbrPGdY}uXhJj;ug%* zZ(j8B;#}*f4(BrWCLSrtSq|~Ka`CL=Zbsx#xl?`A6QQnZpN`?-2knt840A{LHUS|! zHyE{!c%SPoULnS9{ItdFxXU(}^@6HdCY?gx__|eD^|%GPvC$=y~=Oii&MShzZH$u0m!P z4Kog@_33`?s4d$3 zSd{#z_&&Kmv+?gFbLpN+T-i1K%s=qiRi|KD3J*RT!OCxezgDOFnAe`SJ=Bd(yGJv-VL)rhUOw)rI?G2c6v zvM=k!rqlsuie4`)f`26c)&rBr874rJ@<6@H(N~smaXi7e*Q(~|nj5=M(9Ux8ch!2R zWb2xrSv_26&&|tIrN45;LcyLw!nLx!ACE;ym&!^)!f`hyf@6$du9o=dpi>1_xz<)! z`~P}q*Z6Li^*0U_LmF0jg-&a$4U_+B-i&ieP9@#_^7YEQ1L9xw3S-d@(Sm{z*!UX`~|k|wqr`heQj^jH77dQ99);!3t$ za0qsL^bkt)djsw1V;VVe8$D*;gSUurX!?wH7Ja_GS{Q@=7OnF{MX?90CO_JmP`Sby z%`+won~WbDG#XE;$L+E0{zr=o``BL=zb>3-K(zY!0*pk9<*p=p`PZ}7Dql|_|Dzo3 z-hTPz%dnNG0VgNtF8A~2ixzqU1V)|ey9^*oNoicMfb>ulyc_=XMx6b;e|;Wvj?2T9 zmM)SZOixcvaWBlit#D`aGL34JFjgrk8&XowQZ+|o$sdGZdhFWa*lB3BM@+4f z*jIVhoG$egWM;9j#>V3cjF)4=oU|&)sc8aP&@-&`U-3H2Oc5o1qc!q%N^+^`nsoVv zpyt{ckW2j-&ygd(+c^t-FKzv`Z3hcI#Py-|^(;>uEy$-&{2M6hr0tDsI-`d(K%{zJUyYBM2WO@6Dyx;h+(aYJW9 z{ooz!wC|U@#*h&JqwIH?+qp0wmh215?_QbwI$P=UAhSPi-t=IqTcW7Uo+l%|Nk$BI z^GP^Uq#Z6!Nj?)$YPoxJd3o9N!m`L#u&-W2TMR3Yi&Rp@)9$|IVU`!?YfGp;s1zdG z=)ryllXVX-sLb^&&<*6izj$ zGm3LI8TZL#IOxmuv7-nDz>_V!AW=u@rY(`I!~>DNBmb{lbw_0&|6H#gcnrzxkvp0p2w zW{&I}^9w#duafkqPzt37Q{+mGFV^m{X?s`f{F*QmFhHkRGu9sT-k*ZrV*Hn;o$~u` zd04H(XBxFPvRTGW*|TKI8^VM}6BBA*H%{}l1WS4nUvh%uGQP>EJLy4ut{R4z8OJ@P z-z+Uw^tieA@ZnIs>B(BUa||eOV5=T44XHLEItqtq8mt;Tr#c&F)p}VYR>CFftc|u3O2eX0u4p7p zEeq$8Q<~m)t9&qOzDwcd6Qj0j2ZErWzxE3q9i8S_kn7MM1;+)vqz^XhWNCJ4M2IrT zD@5QZP+2T4tLGLJsGnmnk*MPTx>b(vQeD}GMYURL{aa9~SHoINOL*j~loZ$Fi?id` z@?Y4UU$16FK|xG)VJ{1Fw#E!WWV2;xR4AxoV47mJ37dooSE_-wMq|?*&Y(?Z*;Lr& zgPf{=O|h-pH7fsVX;}!)j&2{1|EZkaL1R`zW)_xBsmYTGDGwckzsWLaT&nMxm@s|Q z=CtmMEcDiOrhPA(W`k_?C%k_>#P7(YQ=%cY2_O<6KiF)+XY5alH+jXQm7=G2WJ{}m zwk#4F;~ixYMJbc{u~|Dlxu+?IBTDOK6IQwRy-eghlPSv4Ik#S_HAaG4xAQiZ+UDdU zvQLv{BqUOBpu3zhF{GDOLq|`9Q#(>sI~L!=F&R@564?w)L>SUD#u563uLqeDbM&R| zRxFuZFh`qje`RO8@cdlm3vf)%=*0Xm+h7(O4oN<)!VmNE?3p>eyKht{(^@Px2*c!> zjEZK(g&g5=upoR_GjS>=bZA2?jbbs0&I3hvw)1hE7= zyxHZZRX*_h(tZ$`r$aSA7{>wqwb|a&VfL@DM|PTqy|WsdM_&zj$6~b&=xM~$Qhprs zVak6Ff)kXM7UUOr3SG%G7`F9z!?`FZmUT_}_^IyQat*<9h4hDyKyQCNwiL(rUT*B{`E4US= zvR&lFadu1V_lk1UJjV`6c#@UP&=2(oAgBIFZikJ>kBoMlswgT6Tkhe zZI^gxgPNT{Q==%p{c9tO?&1L8)6N~{8swQ2S5N-6xq9+_In~MK$LLAjPO&!&*$C0i z0-spUjbIllzTkJpcs9Fr`mwY?_ovVC1M-y$1|)H1WkjN`A=X$FlilyJVfVCmm#1TY zG8g-Xi7YHF8TQNhhuc^Ne3t{8>6?~%Nch;^o zbVjs;kYk;jybtg1R+!+&6Vt}OPX??yo#A`~M{Zt$DnpnXG1nWdd@fNiwlmf$@ip>p znk#QKm=Tryq2X|!-L)opD6i~xSS4_9XcNM&^P2+-dbG`|$Gay~oh?dlJt@F15k-Kl z4a?V`E7y^_IjZ#funO6TG8ndmVR4r408jY?;myQPv2p+*jFQ-i-iyw6W1 z0*-1RujEaE4^a~A(DqOibxP3dcg3s32d6!+-gy(lch+cY;M~zce?=BR*bxJ?XA`AG z!43}d$qBWUx(4O7#aqnmD7$gzmYTdL0_y%UKJC8P!sM!0bPMETX zFmU}!7k5dlrh{W|YSG|&jlBv7JJFcPj?r45Z=9ZT&}%>h zOr)CBVXnH(3#Mx6Hoh!ArDCEUr~DgTf*Inja9uy&`fm^Xa!~yziuHd5 z7Zfx8#4CR&omQKt_08LPT^8Gfqoc|--d9@-CCLmqjz&@51RAZqgO+2z~4 zP$R#0-GJCKEbuZ4g+B&^x*&rUKaT9=e_^D;XICMld6;F+qx2hxfAJCnt@%M2#!Z^c z8oP<>M|R~8BA8!So)7MEQ3u1ys)1#t5d-j-p1dSC7`gS!9H1D!>)m9V=`lOwnQ zCy^b?VS_;<_2e_HKQef)>Lv_7Kt#i_8u@YNIT@qPO{OHu=#<-`KYDY;(UiJKT7dQ} z?R`Q2pt4_o>=)jx+WLa_hZbG%>r9g?cZ7x9A{UH}QnRIVEM^GYH%(Yye!Xy4f3Plo zodMW9iJ*^d@wC=x>(w0AD}*IfJB+3cM1?cBE3rjIAvB9jMtOO@zIkr8DCk%uSG{J7 z=0rdA_I%)0zr)QPu?vhRbn;`86eW8T)vy3SH-$c}$>+LcWV+Y@eQ$8z4OQ{M7yk5# zdPO+cu`*g{^Yc{~)T@lBJSx} zgF5d^z7Nnc=WhS}j$C`=ym{yFa7*Bqkit)&8X7*;z}`@9K3=n7OBUt9_7Pd@(^FLE z)^_S;l&Xtc6%4~TxdY+!AK1TG1Y(QfpWO|BUGBJLRW2<5O(a*bNn%r-R#cQAlcfzc z9}32G&`t0fif;b_D8+t)fcTwV)@|h2=Gs^$R_8pLXC})qj#_HzD&iCK(M=37Lkqmi zt7G>tjDaypv!C5b6H~a?PCUXU^=vAqU1HM~f6I!XJ#uPBR$0B)PiTGf&Uz-(T|jwt z-QE7alD^vcJO%#1F+|#M2K-{r13_ro&^s|9j!3#$6)io^y&_=P>enwAU&6wAAQbraDf=T+cA!>(thjpf^0wwjy_%)_`!3=1IHe}co5J%q#13q1 z-H4g|<{8L}db)U3jR1cZd^mEuqbTe@;th674?Qss(}e!wMX$nJ>_m3u<)%1HW;g=R zW;}`5!sF^C4AqmJfSSGT7?pVrxLmOpG%PPy>&$1Cmuvk5E_{$#A=@ds{&jny^_`m$ zfb&8>iV~uvZnr_g2STK?PYDPJjHFE2A5f4W&0k+ziOeC?i})5BJ6PjR$KB}YTdGp|4EZtX5cO1w0O;3U6Q!C zVjut@FbcQLZ~_eLG|9+bvi*8w7oH`JL^LTWjMs1f=74mVh{WE?&nslXBKh{uAU6^Y z^s}s0x{&x5X_5;%ypDZDB`VeJcIC35j1_@Z86`v*8|U4hL}WW=s&_2va9Vo@saSg9 ziW1kh_t#Xk4Lm8hbyY$_LQqiP$I5PU2STMUUoP6LO$cdZ$hmbsjfP;ZtH<=Zvy*Q? zq_gs>FqnbTH`is7s3$~zqWJD2tm-+wzQy4%8`=g^AXK?3Ee-gla_0YB0zoAf>!N); zo7R1a>Csv~E8*|6*9Yg4iiW4xv(Sh*UBS8nH?Ssc#;MW*{j%6t4*)!+o|>ULGD}kk zGxqc1)!p%Gp9aMothmbGq0tHN7x>XGkWq16EF1L)xmlhONE4TPLy>8S2f>P-T$EdC zx|e5~80-x9c6UJgZxi)(>iX~|`M~q%PolC2NTS4Tj5nBol!+evuZRLlb@=l+-V zR4m;kUyR!0((RV%$PqGcdpx+iwAuZCXZoN1J@Re-i4$m?Qpabvz=Y6g`kBG+K=;iq z{xcf9#N!EO9&v3`rtEtgW5=3XYc~@qAMkbqu1qHr8Z4zfRi^Bt$=mV-d|*wzAoy^L z9D*uK1#Ed43>A{m-Lb`Y}pu2W96QQ(Im znG-~|N=RuotPO0h&{pC5t1*F?=tOKyJ;K<#^^}y7I8I2~vEq2dGv#)8!BD58Ssv!6 z-m1KDL)JorPdEoQV%qv>d2dfun}P55lH7!6Ev=s5;;AnyPtw9Y`t zok_x8256+seyBDh}w{e{_XIZXh zXRcD>ZRgXcz>X7g*}ZAr3w;1)DgQG;v6ESCtBjHZCJzgku4(Tf%e{bpBq$BCh7W~Q zOXAFsp975o^GBTGp13~DR!$dJ`EjkGgw^Wcv_5-;x7ks3zeZJcwL@{S6*Z~mFpv|d zXiF{qMN`{D7W%TcNDh}t2w8V;OHEE;^2Vjy=36O@;3@rjc9S@`Q5KS;5Ojk%UwbIc z>^0Zc+4*tkE5lm89SqvQepj=`i_xa9p1s

_p24i2rhNL3#P|3t-5?-k!coR|Y~> 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

BK7q4LUwoxQDdkzEO-B23yx_Zj|te)Fg4?S zf{B*>Frv_}3%C;LR%PU7|Jh`qZ%e95daGRMk8!4}5e?CI&j`qcXdxns=b`v%L#b}wkpeGdK} zI3vNtKVMQLf68F79%fW$*W}YxQ9A!TOR7aC8TId{`3%rIkEIhbGKfLtASb~7X%FLX zrhz}HyR*%H{)-jlp1^J)L`t2>94602;A$GEY$AoR)j&BNT`tCaDD*rdY_hh!T_qzW zsy-zLs)Y+QLCptxP;fcs<9jyjFDL!|leDv0Ai-zE^z*yCQc^tejaWF`-Py)8v>J#C z;(q>$0IKz!9X^zB&M$0bR@>uY|KS+>0T&~5MM1Qyz@|Uy+D^5M5}!^jG5f}MPxz?K zj7fag5mCV#t(8MV7Zk*3yu7p)#&%>re@5t!3M8}vZ~zP$?9kvCR#8F1J`R?3p*II* zED-DhryiN+0?q1|A%Z8B_Y)tc&RKexD$ zxsY=l)GNf~UJEk7f&l{<@1!@?+A{8y;U4>rt9O zHDZIj60y~|UAZ{mtZbv@DN|DrErGuT<;k~DQG}q;FqafR;1p_Ztt$$j^ue^J7mF8C z(nK%w93O^9IfTJ*>ujU>X||6WpR{>H3}6|eK$&3E?uT+Y#1AqRDxTb}=$6@7vr@&$ z{`p(G@mR`~+rvY4=(T3K6x+0!-!faD70%JRX2*KgArhj{>DA%dDwo+wT}DYIDN(5Y zgHo*xX{fE3P~`(wRsCKUVQEg4Q5=jQ`5rXec%kCQbSDGlAJ+ZDCT`C zQZ8{^1#AJ7CO8H=6qznyg|_{A1onf_ZvP4h(qwzs5{M{8(Vr^N(+(!a+kOWTB~Nxc z6oJr&vxIJ?4)7^%J)za2pNC*d_^3^Z+D4le%x&+Tym!(|q)?|Oo0?Jn8iV`bLN(cH z)zc1aHS}31y;pSme#!(f{diKAWBgnpJ9qc@V@`=jehpXVvW9K%&z`zeUDZH$TeI^3 zWqqN?O+q{}wsExPEyr2LpR_tdP|5ZbiOnvav(TthWi(|CVGFF5?D)Cya6g#>djhr8 zp~u&_BiPp)8>N^B!>$! zfwj2AbMX|)R{f0edSw*1M#slrTYlgRhy651>Y=vD=fDgXa3LFOuyvC7r17R^dpsCm zC()p|d7L-Jr~T*|yuAf49^*o-98&xQwIM(BtnNXb4QbZcawQWwAjW1Ag&LL+7HbN` zfGHLe3M66nkiT_wGg9<|ibV@Mb2d>~E^&_KCoPo^B3QrC8)1KY0Hn+qf8g;!u!7vj zlTirA57pLCpdrU9I;O6;xh_;mNX70pZuQKvLBM|}O zS;v189Eca3_Qr#-F;L$Cg%^-OCu9a+o_1fQIcM-{QF!c4PDUQLgIG1Qz!i!QCckvX z31+_#B86b3e!#bSZ>0Dl#FWHzbYvBfWyvCQnYs(LE+S1-a)Dntz}=yqLq~`e4TJW2 z8l670$T6k1E@_``agNI-^iq`H_{7QCXUvR?qx^mP76ib^LGtcLV^%KGm4?q*Q4*ez zN}Lp7Mm_s9QJk7PXzLoxW!mqf44L8hLD7S&sw$MdzJj_`L_c6M z61`8Ug1XBI)1nXMAADHQNh&9_YwMG+k%|*53!G56@}vl;s}q<@h(nE*%6248&qLjx zaPXD-<->i*!u*lL9)>g=wQ`X&SnBUS(#rmM0sIb`&TOd9TcRFp9W#F#fY~zbT(!@Upl&KQVu6DhA|L@RxEWM&6aj;TRAdgYy_%OK8_bV;3oki&98yHB z0EyFDs(!@e{`Ijs04NF=Ez8X{$&=AS%387u=A_`Vx&>oZ0L2D`+;4zh@sXfZtM@`! zc!XDnBC}gG4FW(A{=dj%LmJuy)!A$$c3UhbI=1oAb75=2mg&#O)GmLll+9YPy>v4C ziWz_!H%po=_an@8l88Lmg6BKQEH#I6aOURzss{K@eBXU!4x-INBKoYIQK8OTr(d4C zp{hm*#gZ;VuN^YgM)t2ma!Oj%U(UBYP%DSUm>g(8q!Nq!i1trI5G%171}N=`%0T^9 z7oYLJus9dzc_jP%uLL@jXEkJu%-HO9j%mMmIk`I5e2OWtJ87p?8#r_X(y6bO`TPmQ z^;gF*ys9UjYPkgz_*8hrcB`VJ&yK$LpYPt+WJWu%^e8H;dvLJ z5PeMP1OuQN(fqO8Vx0y75y%Pwq#A#BLF&787QBiD|GBV36ngUKk`1GgNB@Vn9z;W4 zAh!&7*u%MU?WxE=KuQ%YyZ^kI0Iy?C+8k65R3g$nrUUP2y3K?@bwL6}TwoHLbQZ zWj}5_y=``S!b&Zt?!)alTsx7u_JT)>GHt_h3mUYhvF!Hc0h8Irvuz@jCNcg|4y^>$ zDdDoaq)oVcMZuoxX>O{5OI3dmuPSg-dpOe_Y@T z7bJC)9@u!>?lL^Xm9~&?Q*}d~oA9kJ%B)ukXMGvE6p$LiymHCCxk-n!n?FfB=EgY7vSbT1`#iCBt3ym$*Dt2=U zu4-X9Rqm8+Gp8>1^d%09)Ak>Isx{RcUY!oilou7gM?5AdiPMy7mc27hTB?kn!{%A@ z`Vjvurca96zPLzp>O--}z_y4HgE)_BK^;rnl*aC^qMZE~2mK@zWX+5M2{VM2$ER$# zd2IK$G!F(k=S|tg!`WL?sbm<8pIi?ZGB;8;#c7jkH(aXrxs{q+)oqL}%Fl}7L)d1^ zwKB;|DIPJ~i<^3djoP`>}sgLY%yRiKqAN{MGo}((}F3 zIt$5t)3kg)>}PvzX}KAfV4QD#cO8~#eo@E*lghQ7fZE}X_t-Pi9D~+tn97-+gM@;U zACJ)Py9!B@72R()d?XVr@z85}a**x9&07sqHSfDii`8(+T*x04+2XMX3QdH6K_lwD zPus;5{tkE6WU@ymTQ-B@MaxZ*{Ku0zI+X<2)&Bkz9e4Wfbxf#}e9#dkj|{wQ*S}~- zk?2K!gWpHwhi&!wY|p*-E<9kblzH{c(p{>QfW5`!RD-80X{NxeRpm+eAc~IqX3byM zK=x+(KvTJc&>G4CtKMB_wEIu@Qu5y6Ovh|kJ-hqj{d5N`wK?^x8j;!A9f@nng2uj) z6Y**EQP@f1{$<8@{Oh=QjpW$8v_j{5ZoP}IJauK5=XJC?iQNM^0o=$ylPA}!EG?!D zR~C)%U?y*&Q9g6pOa3&33s_*#e*Wg`-+yr#sUwRM!t5(zTEG`?I={(g^qF~(O4k3b zCJwp6?e*N;r(SLojl$UT1dG2X+&rIvE4{>J82tOS-wOt4(eMX+o)uX_YmFGPsihvv zxB2eye4N|tE|4&&^C3dG%{YQa0V`+!>?)gojPjK652sWzOuXdWaI#hVSM76222rD) zBpd`0;x0{#0fV^-etbec6BwsmUk>0yKbzP8Euv^L(8kP9jiU}OYgW%%X6dm|wzYoe zo%Rv4<#iRpV|OBhmD%AUgAYTX?Hl|sY>(YzA1dehm!V)x zd}#`9RlR|})c(rR;!UY?h?v4{Hq)&uN58*%;u2ALh+X*3eVOAHO(yRhOUR4eDQbTE zEF`we*t_)jSMDg-iNcD>ZVAaO!(^neo_Sv9O>j?c=58n#v6{Z;tb{-1M(uj$!1}Cy zTg3j^5*lYpN{JhNs&k<88kvf%@kTxm6=lSyLMYf@o+sB?`vuXb`#(|NAI_7i_9^ID zgZvS@$6V{|Y?z(EORpMPN{JXo0yO4Goym0bZF=k3ZhptGJ=r{dO*2|jQqnDtRgdSb z&SJT6cH(v2bKDhC0-`yC&_+Lh=Vw1E zkR|Wf?)XJcXo#&azUk8&;D`PjsQeAC4nrQ6z?ZXXvL?cXXT>g7J`J3mB0w6SCH63?ZY2UGG z|6+niJK-xy#t`C}Y*w+4M_gDzIibn4x9IUc@Wy2}m1|vC_wuH%GjZTWhzs%B5RL)C zJf4w0($a8?AAnry4EkjGu2y5 z*ERbko0ZB1v`<(}STHZ6@ZED^HQ&uM*J&<27Nup(F@Y4|jhcF+9ikCoaROc#jmzy} ztuV!Qw>IrRXjCd9R_)8ZKdqWVL6)Pvv}ozUB;j?M%Qu3;TEcNnbFFMI!BXtfgINFj zqNl+cwJa&pLX$fz65R?$2dkGtB(N{(&#Lrdg$x!sIy!dHmDA0&+4A*m^viJ?++`Wt zqDs-dQO<7Z?jiRR#kmKlA6W`yyLO4LHA*bGksoZMuE$+Q9(9V8m$eBtN=mJMXG~n( za~~>^`EFWq2jys1Q-H&l^UXUQHP#-RFt}u4!qOU8?x2e-aH85s?l%DJ5!ZJoOuqr+mxU6_wk`|&zE1{#{_*xf)|$q;Rw zF_y`si;c`s4A$`)T6{ekhmo0mx{VzxFxaz9o9OrBZ_# z0c0j^PBmN|9tjubROubT0i672ZCg^&t^F1 z6z>n8Dtl6FNPLzL6~0KjMXhO9_W(!~@LLv(5nL^id(4+6G>@cd5Q*Hsk9s({A1g1b zD3W(0t6}dq-$2w9ay-xq04-RPQ}hIAg}RHolTr1SFB^HcK=s;%QhQ^&b=VfyqurM$ zujP9kEXP_3`t(lAjPSm10h^`&WP(EL@x zg$RE6>kn($m*Nv|NM+gLom)3jyp<`dd0bgNtwCG$ls=julGPQ^4%j=)ccFfs%1L|) zz0W%ra>Kt^JghY{!W^otoPnF;`WFh{LgTbn?HKXe$ZmJNxeeWzj(2HLDhu=mXA0Wv zcspa~@Lc>V6a^%vhAes-`{GqC}TuU8(!e0gwc7Nh0X!rJ=Pl&06Ua2;pV{h zooV4QVKAYuN-N(wAEse zwht|TeC6X8FO<;F^;8+_|9WbR61?$*;IBbi`gDk%l7E*D1)b#C zAFqFDG=T5#*U}4sX`6(zrLd3Ku`mH$3->A#)iKgcvbJ(+8z?PQ9dc{ z5Flu1W`ak%)H|pN`TVCjaz)`et;9G2m8u1uz7S*vXm49Q#5ohzDk5YS762s<8G( zklKlPiMXwn*_!hvH;GwEfH$ET6_L&zf~r={H@v*OZ)eQPeV}auk{<@sOf?GRpr~Q` z5f;jqIXG~a@8#|QimBJjj&xn>R^pR(E;Q)pbaiwz1av)T=67^4NysI*2+sT-V5A0P z4k7^|0W2I`Tw#+O6lrL1?9Bl^8TRaw*EUQ{?SPYAKzA#2M-w>UW9WRYcFH- z32B9KK?z^0=FE`x_nmu;w7cD9L_YxrqAB4-3^}tj{7Jnr&$lg5?}Y48N7+=Vq=%Z^cf2-Ih^8~?X15jWtCKJBW!2V1 zgGd2bpLTL|gxcSQ;k~nejL^4EAWHIw@Lij}f9=fkAM^_KXU}5KmRFx|P%V%g>u^o^ zM|;nmj47GoRjc8_2x4=ydI(mI>J+G3<%IiU_f8k-E<(g|&bUa|%{@Ds(ZwmI_c;P- z?&_l9F@{xlEI_WTck07XAr3enFl|FhqF`$7t$bq7;4d8XRL)F-oHNXax4^;7&)>{& zW}}A7ngNOc|55meYh_8?hob~slAiq(P2g@xmt=p8Vz6QtB-zL(=@ixq`Rvc1 zKN}6a_|^|^Z{BD0SJqH|gK1#}Y=*iNHcx&Xli2VTBBzw{m|s1>#{HnpZ-6a=$U4!y z-Fgo&qv4i=&-}|VF4TSuu5Y9dYL!Hj9y(uY@1$8j)==#|q^r^3y`fH3*tiqs5h4xR zdL;#+v}*CU%}Sz=-#JBtq?76+M!>7(SFB$aHIebl)8-}$X;lTBaMENOS(szc%*L5S z1wFhsfJ8+Zz8AkNUtA~Vc+;1{91f78H`v}ouYxC`IeuvZn}53y&mEN|u7A<@2Hr?< z9o96U>_^wD5YgOd6e!5ZLPUdl{s%&>4X&>0c%DZc$%2qr%?wx2AehIA!YC7WNy&Qe z=KVv3vB5)HT^0!i%7kWDk)FrK#XS^oM8@pCpNGDZ`Z*XgBQ^pr=U2%R>9>0Lx!ygS_;dW0i%i8)F_e5oRMYT5bQ!rk-x^Z!0VN}8F zMx21d0Bk{+e*^uqPm=~?SCXv6-FJGLpL&E%KjXMhXF%;7n)&b%NwBBjB=Nk!J)?6H zTx?Ds+9LKgcF%=!wE~Or27sRt#@6+U55Y;1;UeJoU;xsLugX?wGb6D6j6hiMkqa#D zX)PSi)5{pHgB6~I1QhUpN%#Y*Tzfh;rpiq4 zVJHoDfLT|9BqY}4z8}~$eEV>b$MH^|3EY$nDyn-wJh|TSOT9$+bYPglq#AV~D)Yy6 zY|5gU*)YgD0uB_t*GZ9htjY+2rZuMtqbgu9ZMa4&5ZC#ZHJOKMqhA%ZvwNy-B^gr4 zfJGlY%ynC^4}JiO-K^9++w=mBh!Iu#ar_xz;ZC`DZ$#Pd8zwGLC(KA64BReQRqIms zft3b=Gu|w_wo#-1@etSO-bMGq7%9rgqi$@QuX{X5bd4V71(?-w(c$tRtR&?#MglkM zXuLhA+Hf6q4-w;{TdBi>Z!4c(o7gd$#?zmEAccJ!Bph!;6_lf6at3UA^2r#Yecrj2 z0#%ozb~{`ea&`Y3>?vM~INw4PE6In7yv;=>$>p4Oa4z%L;8YOpeb-gdqpxZN?aVPL z8NLHwwmB5t8#Ur3G9&eF4z}!VrYFO&MA>Y!jn%2S{eFs&$H>n>N_Ony&}z90bu$bI z@Lf>ynheLS+gg3m;A_-ui!u-(FVfwc&S{s#M>~sUMjVs{+@T!*h*u1$ZcI08jr9)f-&oFr;Lv43Mt zW48*^)LzkpkR!CAF^jMTi3iv3r*_gOk2xH$nc({z8=dvYF}~8X%7fptdhbnSFl(gi znqeZ(&TmqQJk{>KXLb*`-z19Puh!3F{Pvhgamj_tKp)TYN>O@F$&M6n3=iXlFfZ#U ztCU2#2%$}hh}{>Rfk~hlXhMoSUQ}7BjnCn$KPE|iua(-Q1svcUax{DaX%LkR9LD{m9nTg_V1Lh$hY z-;c4o9w9R?WJa-J%09f(Pc~??Bl-v-6xfajcg&fY@A|P?`~uc2`kc=DVdKr#7Gv7! zb)L4Tjj7F++7Im^=6eY6SCf-1;DteHZM=@ert!A%S&9Qn9*T59zMUccnFTqMy>6!V z&DG;=12hQ&-VVpy$NEKknwo5Q8@nW0AEtX}IGK}qAUsPpD?1!JI3!V7+lq?(J+;?( zZn2FQu`h~ zdg}u0uLxDjfb}^2(JPXY-ln&|o}12~jRxZTPuBB+_jT7a^=a zsoEb>mXB~CfpB}9nAH&i0fqi2&S>*OeH#IK@?rJ0xp|g@53@t!NbDSC;>dxu6!f{$ zG-7U=^e3(SXS?4Zan{U`xf&xu$i57JX|BoC7@woft-2G!e0y~G zBv1bo`58;d-DK&Ap0VHGTFot>LYQ%z;V1fst(iZP^Z)zu&i8^zf z5ZcTNN3qloauj5L(a)0Ke%`3cVY+#Hq$(sa$I&^|Li;HX7RtqI5dGa8D|V6SEP+1_+& z|BjjQGW6py?@3TmnDJLSBz+%Ty0NlKt9u&x!GN(W9{r2YQ;@1l`5#vU4*E;$8=bXJ8R>!YN`aXk7Y`kwt6=00K_Um?gJpDU0oV)Yu>So0= z@<2{TqO|1+^8y#Pl@H3c<>k*PLpQ*I)3kh6Gc<`qxcVZ z@CV~j=?{VyDiW2^@pAV#k^f;VqER^S+n(G9zU@6sj5d%=`nUROTTc(K6F}m)KMGLW zRMxVby&tiL^KxFjMVB6dtR<=rSXgCO1jGe&ZEKVZfaHa`jiu?X0(kmo4xM=k^8sc1 z@`f#zc5rZI;2s9}xC(VIPXHko;mFTR{hUaS?&W3Ugf9$rJss-yL%V*xZAo~LSrCi% zk*OtBAYu(wu0I0`DzBYcUtVk5nEd6_!ik}D8Tr6{WO*B7Jnuvw(0zn1oV@Le?15h- z#P{jijZ~m^fm*$n+aIQ*JG4YyGy;#`Dbb*f%7@en9){v{WBUT+u!H>ta~hUI4__LN zx4HsIwGjy%Ezkp8MEk5T-@yU^8dxz7g%f*=GfR>3-r=+s&##%VgGCFxqt|4o3%-oJ zlym&(b^q5-@$gtex2${l%2&hSi5-!_?3B1|!M&Q5hqA<;K<_P0zL9gk?k_mHs)7_( zrtNg6O4iK(XWY}w3=nooT^94FAV9g)eS-jXTP@okeD9yUSKf8Uug~S92l4l|Ni7DN z!rcD!h62C7$sZKhp+xDQ{@@<0C2iDgBpm(+w(`i}X5_l<=e?%A^va;GIUufIObP?& z@>H6_H+?ihh{~c_f6Yq1|H*%Q>H_J5u$vU0KF)o=xP62Ra%qC2825{GDIowH zMtsh9aTUSyi2fv>hYJqn{C*?@K-t<&VSSWH8!;ErYxDJ2w4hpL=$l3L`nay`B$R7{~q*CO8f^v07TifjicU%$#&$cmO zu%w|dHR!LxlL<#UPvS2$Z+8K>b1A?t^V1W;B|5D|gZ~Wb-&DpA4&kW$=uS!U$|&93&XKVZ>Q3Z?j`?f?Z00tvbw-vGXR37A@zi_9HtkAxxX z0j~y>dI_OARI>o4r>ilS^0z?wvSED-CUobmj z6k%8Y!Rl<#&X5RjD1R^xapG4cpqfPh?kXX4*u(fw%skciFo5?|F*|~#ABHgBdlPlX zaQX>=$g;+TbEuJtw7g3X{H=@z?!}1;5;i}+H=5pamCl42{A;H6z!4G;n`3}|dGMDa z)C&FM`r&xQY4*=Bx=dTaH;GeotLklIgr(#bxaAyfWKzC3{+=D{juy}>Z z9f#(UlIXcVM|dD0T(1#)!K;DZ#kuXZ@IrTCyf=RX9VP#XE=nJYWF^q!oIkSb_19A` zIOzp-T?fdjd?u9`Vd@}R;yUKjROx8vPyrg7r;$%Hu>l?%F=?UvboQQiO`RW<=6^%Y z&i)Nhy`jtn^fSj?UP#Ws&RGd|&Tx^#;7z~gC-leGxwK5L0-=*r;NMAw_7cFdV}FGU zl?4$vuo+gb*_rdB>#j1r&!&vV$0I5v5GeoNp+M`OKBI`5vLnHM!T5851=sG~-+ZbB zBUCw%a%%~tBqcPfh?FI=u!q%Yy$JB@xCK$nq#tNiIReP77R(XU(DFwgDX0@xQo45U zipVjX@9VBUhXW}Wo%B4ao)FExP#wX#VhY$3g8v{0n}|uCF;(>lXaFkkPrV02h&0)v z!W*~3$D+kKPgJ%>>|jR&tgED4hv2mJ7H+ESpD0!oD^#bzR8nRA3qmSc(FDnu?Q(}i z=kB*2V9Jt^6tX8Z=hm%mr(Xdc%4C2ApMSbtCM0`+Hoa53UkgPHg718+HaHgaCw@qY zs*l`+N~3>oTwV5$`&M?BPbSu>ybGN9P_j?_sbjwbx52qPMXI0J{dKI6y%%4LXz#ip8MaGNPB@&q&yVtA{kx z9?{}}Xuye-#8Vp}E(D=b^zaY77LCpE_!cAy8%K`--Gth&AqLtY%kIpLeTfSVt!<$ zK9!0^-V{I{1TBonLWO&ayocLNmWXF_O}#DuJmRcQtk}He(xw^)0F0YQjGaCmAAzKv z+PP-kzyI+enx>yzt))HHn`Td_8a#XU9HAqmPq-Dyp}f6QllQaKehcuB-x-FW!1*WS zZUKd_4$4>v6BXYmFS9eP@$Dla?Cg)P)+nS9Kbdr*eW6|+NWJcKp*vwXgBs-yw+^VfO1 zKkH>eK#Xh)aH`5PO|M8wzpd~~c&E(HrhNob&+Q983!UMDBzRu#Sm^N&4K^M>(`}US z&pxIgPt^T!L^AZ~2NIEs0e5&H;ycg}) zab5UcxO1|KqVsuF7A6J;_gwgzHwYP!_75*gu@NQhp28p4MuV$Ne3fcma28GUtuATT z_}JrmqUR*UgYN=UjL2PKOUEictMH8rUmoQwRE}SCGM^PaKrj%d9!l)%tk&loZruG) zT93$T{~Yb;|16Mv|8pMxLkBMRSV$|XI_m;2EDMQYlhk3=%Rf|kxuL%n>E3hkvikyk zwp3JHS4rCn3S{(udw~Oizz)$QCLLPk{h}gtdv~}P@E><7jCpa z(tf&kj1@q^L#irMn!~k;vj0;1oG*QAHE0_ z5g`497->%il>zcds;%#Ys=-_#l0L4W4{yI>paDuC*(oOfn|Xa2l))1B?`s#a?}Bs{ zLAB$e+os%}JkcK+#X@v8u$%y;H6c4pTP2JQ%A;#IEURAyKGQoe0%42@jVQY-x7~yO zF1jmn`@6Ku@BU#$#0dH^1hH9|9KzCBvVIWi#{-2sqSN{B%aW3QQO1>&fB1!JO!^gZ z(^ipO0msU!cdG+wIe<9@~u zl6PQRAiXQzS)pA19DfowI~!hBwSG$mPlT`;<3*BNX?>ut22~v3wJ%Bqf_`XF0O0u+ zLuATuiSJQwXA>d}fLf*jSdk@DuWoV1x*7Dp^ItcJ09ePG-gGEC-~9C zM!vsO|F2Xfh;I6@>g<=w8sS4bj_7kiVfAnE3f0Jg^y`OC>GD*%Pq24wYTsO=)V_iW z&F^pp&wg&=6cK>;gVfW8lHwFo$muhuPv7(JkvdRvFoyWmfaLo7+E&JatR(NMgveR@ zV*DS1mgLC4p0tq{`d9r2)g|1^LXxtwM0Is||CB!bDR((US%KB^@3Lt~*h*1xerxB4 z4CNT8IQC^Cv4oJG^6(I1fe7SpIvb=Oxi~nue;_CR-;^Q;TPskpKU6EZT7OHqg+Vj~ zJCKO-#@iYEkzxP~RG{z#0YV`vBps^+NEw(;C}NW_^B>{3wI>{SnUy=Bjd#DBlSwWqvw-D~V1_8^q;Ngny*vMTb@pSV_G_XUkE; zy-Wj=dBf-J2jZE?f5DlWlKrIYVf#;%cW<`sVi!u;{ZPL6&x%Ib{V?YG9+XD*3wC6; zx_LnWRXv)jX*$XX;(ZkNul^u?D8;-lG93JAZE<2@Z~0*(4qbSJn|$Y%_{4?S~q@?=k&kQdMbJv zN!;J=q`Ufx<{LBHJ7I1jgJfUX)Qc)vX5;XRVd2=3gqZs= zx8z;Sm`$@k@n{w>ksG9B*07`oY25M2WbLK64Vmr-!WTLHk zygl})R0uprwsEI4=+0P!pm)p;#ib1+L2n`<`1eNW$iWZZkL925f8rezc=-nMCvPG$ zt#U%-r{+gv!xFny&6*VV3k*4|*q+@GDt7jLb2(9_;EIQ*US$<&SmoE7c>5=zVX{4& z)u>*^T3<{~dlxgH*zbwEt=DC;o2}1+Prc#fR-h>r$$cCx%X0r}tfHbpj6T%Gs&&Ta zCr!Ui#7h-gvkDE~@m^NCMMb5hV9%L3_PO$nTm+rw=2>OCa(w2--w#eacYAYQy=dE- z;rzAhHTc%b+=cn(f@fUdlESv|fM03pak~vodgj%uMeCD#oZIV|Xj#7<^zdi|r3!y* zkoGp3PJ;hJ%M=9?jHyu;@r8|4-b&@IvF8sB*ISC{CQ7Qk=a|dSn#bh6I z|L&cYModb4(Jx2+%9Nw8?u=F~Y|B5J?JWn$c%g}OFD5I?x2%jeIMniY6}B*mQDMJZGWTV9 zx${i6m7V$chO?13!D^%9# z8@zxEXr$gb>ZCH-^;+L|&}o-vci}!v-=D{)^Xz7zvl{=p1#{iy7twIdsHkqaYiYbC znN&*2)MSF`;VGYQT(u1u45R_}FoHVUrQ`G7K3nH4(6EJFR%gchhA}WOF)MpAd^XZ< zKb$;knitt{SwmJryCje+lloZX1urjLz95y24R+eW)8Y2^ID6*h_-|KZ|IhUgv6SYb z3r{atYE6m;hqne&;novg7bhZ*eS93=VJxJ4p<+PQE(~8{+r~x4xsuZ{Lo2|Nb{z`|u!EN15PoH~{rFFz~LdaQPW! zlSf#og^TFZMx#DHRg+Kg@EsP(nu}IzTZ8C15@}ReLj{;a1(73{C;EJHZ+I3LZnAR4 z#Kbt+MZ%Z4Ev+6#|1@R32DgHDm(VcfI9Y`=1^kw^9FE!jz~wcYoC-r{Bt}HX7$b_QSyt z*))sWE+Lj^=|kQaoXU$5ulnsya*gzUGO*P7dd-YI4OcBiwRGGVvvSfB{6k&5qM{rq zx6T$=U@d~>eO~)|Q<(6gu4eo9-cQ;e<4a1oVGw*AZtuSJ_LdemYV)q4p5RwjzJ7Qs zHo}5}H%>XRt5CHno=YxutW!d11E z?{~Vi7b~4e0~bduRRh-);_5?rTIHCQiFGT(cE)=gZnT7l3kIEs$48idxe&+B5}v?^ zPx+|(tSMrKt<`?x;cc$4^rCqLjD=3)+i#y#Id3MNyGta%^tbA%&YRo#x%yp z#=d0atXb=sn;=1A> zC?rG{pQBqf8em39MfHnTIEaaeE;w<2Sl>1kXC1V(uROc7TiqID`Z|B|RS_=-Cp?^- zuUypb5u;Jz7P>HDtcI3G5*eYL_atK;J$C8)FZrN}*DMnt4XO;gI7rj3R2j_;>nKNguGA$kv78b!~ z9U@S*oseTyYYZ=QI>uPPE5>MW`E?8FUifA{b* z;;pO2@tx>i_+61vPk3PWs1=xNHTz2MrS_DDv9C5KB#9aPraeNga%x@I%zyUzxqn@7 zbI#sfJbbn{31FWaWNa3*k4Ff-X!ILZu3Pb{v>R29)ubsz^VF=)Sb^`B;wZ$infh#6 z|F|*zqH;H-TUpt$DAm0!rK~6YzSVxxmdgu5mo8npV>oiu*Vmuctc>ULdULW_(R&UX z!nF_s(Fg`F)B0@=&2VeOGgIx_OW!$;CU^%6uYMCd2dx033r1eIJdBdcNd9rb{AN2uG`SFel{2g7XVv=abDt~O;UhYou=>-lMtor zEM1Ye-#s3UpBu2A%N(^!JArLtVrn%X{z6tL1)2484o_~|Slccx9o|#d)2H>jKRf$H zID8#HIZMn*I9_g+|+yz3ehjcqM+H4-Z+Ll|NqqOya@NE9%!;&D&P{;VYjC+Y&gY*WHB$Z*vChB4|oo zyx+dPD;vMmLt{R69kDH1EQ=XYuu85m@RrRVtz`Q5zVqznnSr_|kgu;hJ9i;CxiTTV z9-Zv=ZH+;txyA1s7BXN)3AH%b%D!!`E)`t$)R&JPF*ZIjFgAKoE?J8tTURTJM}`O^ zvKGl(zJ<(PAmG-~A(P->eZ|q1tmML)t-Dyy#rgdMop?NCGztTjK5U!)m9u@$pLb@r z+~IvAPEN<7Si=T9!S6P1yj z5)VY^2kY$xu=x9Ag~W)-Gx<+oX_^lWE_f}89KUy0S@}zjl@)JWQjkzea1fFkY>DXV z65o7xs-eO1MMzq)KmJDuk;~(D3?T|>QME6fjhctwBzJAEkXN6}H@YgpzH_^rxcs_l z>$}tY)&-{ekH%HO`=n=si)deuYe{U$?(G)?+kbZHz8&yL+7Xy;SMu_KLHP zQ|Ti#xrOTw{U~DJzJ2@UTU`iClp$`B(eM~$OuRz0=!G*sbAPuKaE_n`h>?yIjZNSi=3owZfS~)Hi^B2 zfq~Ka+3M`dWIMrRv*828nf-{+_JUiP4UcEH16ZcqTONS5$V#MryJ$X@uBnGsPE6d( zIj%bNk~!)VY829+CH0q*uPZ7%qeSiPkNAX#RCk`1Xq=0i+IVJzS6*JO(O&sb0=un+ zY-whd{f(PjRb>LKBoE%JyN&m$nAh|@*`uhWWk-d{z@E~Lm$W<+lw9U|a;?rzOtjs? zbmEpxm35_sl1oxiQJA0Kd{ve(npG37ETt@6GUGT)O!b;j*G3f&N+wO{N3|dMLIiTk zDk_w3%d~!|psyf^U6YmYo4fkR4$nHlfMG*)Zf+nf-D$FDYt~|Z6BCRb!~7RPrm7l4 zG1@w<-|tgRH@|RSHZyzD^O3;?vR->(#kQmv1(D&qN`+dK8^@3Hwx!5~ELK%PDOoB2 z4r0P`*NS}})g)^97=uzmr#=?Te0Z8sd*0NEn?O}*{R)NuZ4wJ5DuenNK`)BUJ4TyJ zwuM^f(YaV(WJJ5Pq=;y%+RvQ7^7+$SS}e1?*L6yt=GPR)OlzeC=BIsiJ~Y(F$l>3pQ!oqw*LqnY(H7SA^XxEEwTzXt) z=a_3$_M|yUesKGlHX#@%T+_#LBbzCAwOZA7peC*Gs}803V1;a|FE`ZCU0v6Z3LhS> z(a#+O<^JiH&mTF?-bBpC@9E>42I5>EYgl%IL6Wz4og74j5(O_D)9=m-Qe>bb%Y+!b zdg+Yw>v^Nor%(Ix-@FvydjTIyKz8<%!E|DkYemaQ*>D%cBr6A-po{8wnj?*0#~bPG z+LgzOH*q#Lj!%1xj1W;hv0&`WH`8$F21^ub5K~{M5b10&KJTen8J1&w!=Nj;^yB4Z z!8Ccld~;nHs6rAbl}sxe8sb&^Siv|4+RKd5GxW9X8SAKe0~-?5Ck~$kqoN&uKQ-I> z7R(Bny};<#`P&~wUMr^0i*ZL@z^w2fVPOfvUpk~Ma#V=Xy2%R8n5dmUxgQ0l`6xb> z`u4C7vv0ZSg>frmrcLxBuP*9c4`j76)4cnP%NE3H%E$|4i@`b#3|#0&LA$8!Cd;mw z9ez?woOhuyri@m7oG4Uh$ye%-h0U~_=M5wEk;#CBY3-W$lh(I|@8GE6h|pTizD(w^ z@#s_B1Vw$}6(6jYShB6?s$=5hNsierv~^s!8@cF&iK%0!dzOTA=Qfi{j|+LCUsZpu zt4`+F$N1LPYNzMaMVrCVUhFTEC)-aF!{wF@eA)Iyc4%3CM)tsmWpaP01+T zS(wnyo9O0*giaK4N6`?50NTMaUd4#+m!uJ4C1M?_V&!Kp-(M+L&~NAw*Wy1RWv<&X z6n-Sfbj~rlvVr=&Qh=u*2lXuf9z0EWtGu{rH#GAUDajAW;nk_oo=@kwNC*gC&^dGj zyGn3XM5NB~__fM@WHNkQUEAe*+67amEsDh_UKI6;Q^7klly^0*Ze+~9^t1=gM<(Q` zZ6BY!4>ngSuG?L@cdIO?XDN`uh%=tih(G9WBMa*&MZ(}~S$xE3oZglsKm*WbYZ?+LCtjeoq%MvFgY37Wh+!6`ufg9%DPrh4w84!Dt#JDA8BcLV!EjVxRE5p zh5@@ZTvqx%>yC%*ACwwktw7w{oc4&Nkf*gA(e&fXu-9RQC8+=4y{a#r&oWv zXAfx6l8p6QZeSvH?cnN*H7OjjSpJnsBwx*Nu=1wuSS|{!l8G}NHn6~O`n@?hwkbvA z$I2DtCioo(8H0sMMxQp<{}RYV=l~L;#nDI?ES5 zvqdhaF4EE^wG@g7;04Ve)ATNRWUcayrj(yU6xOvdA^!IDg;p=QrLc1M^*aVxZi;i`t|{#qkz^Ij{%-znkbC zWVaXXVJub$G^F+h7!AH>~vYJ7b2;?_n*!)e2=85Q{4xb#+)(!)@NH9ZFb9sp55PMTuU zC&F+A2(Wpx^@?)m#P8LR11{%JKYrz59SAFCn4j}5NXD!Tzn$%Uw#LEx`fZR@*sKaG z0>Rw!xrEj-_0bKRaq>}#tE>C9jo+BmdR!2%K-Z%6RzCa8Oiy^ZQ#=XgWi*!!>pDfm zNkv6HmZne``lgr4>k>Wz?oX@Fdb7`rBc9%%q#t@GC zO<#(DyFo=v$`S+DQb{4MjGOM%DO>a5x2LZAs(Z4&gmts!hGp80tvxStdt;hTk={VK zwb-9BS~>4nlqYKx)jL6_i3ZMc1g(&Fy192AfY%uXhuks#$+ncbw`@l0MwFXRz3YqCrTfkpo}BLjdT zkW87Efh+HH$J&J0#)w8WRQmzgrm8U=npnp61({@-6kHJ-)YK2Zg<`ql^cLg8#RR;g z4Ds&-CY+qR<{qOqyTUXuQfxR~)0Z<)4QV7|N~07C%_$X^W8}pLXO2@#0j}70g4Cpn z4~tf})6RA?P1CGsUHaKfwf0g+@_mTO)~Zb|(O#@C6;O4L^$d}$^KOd|4&88Gyp_Yk zV-k)f_R?8wUcYL;Jkv%FQTu1)Q^m^svTg%8#MDM79qb;F3*Z_bYY+>o4>q5A(*FUQ z!&W?7)|A7jpcelkc{O#5M<8W1md&*L$^Gz?>FL{_+TPEFbntk7Iw25KENkF;pl z5f;CHo?vaRn@LRS0^jIH>U-9UoQ;ZWqA?>L!};{O_wj|uO}CzZ<>jy(cu1t%PV)Qjrh-i7*>0m(r;IR|IQpyGbNSZ`#(xK#rPWV+T2tAEP< z@-<4Oj5pYssEg)+H9^Y}c7QWzFKx9*s5c3S+~01(07LKr&yt-*Z(rG-!UD;z9cudQ zM`mTp^{LxvdOX@MZnf#f2KWru!MzA!%G8$ZO<3JO*Qi%WbeAvzTyDUk>z-R8&Osh#&+T+G!}&A32DG>=Y$nmSXlUA9T`Ouj4V)4oK32l>5415ZgOp z7DCC2eme#$-R9@=9gayMQKfYyr}t|(4#S6rqQ+)I$L9^Zis0KENE;T95J#En7))BCLD{Imqr*5Pe>?H|p`g^`(U4^^(d z-tqlD4nu+jth`&0rWcuP)pgK~?_Na40}`l-_EuYVUhnXx7IZJ!5a*~1wA@GRk3h^X&vY|g5<(S5U_882{=MqyOhXK%_smL zjTj_kliR*XV}W3F-l4v{5G)?orC6NTs>@%Qo&a+ihqMF^zLg1xi&4=MUW;}EAq$x+ zq+ewlGxZ2Sx~G7ws_waZqYi(FF&eNim}7M??L84@rR$9x!gt}8ZZY>gU|(!YnhR0jDEG!bqxuTa96DxvVe+o4C2(IT7p-E!iarj^7io_2cO-S$(q6COC2HFidX^dXbov*8bpOLa2BQz zZ(S9^J!)3NyAJp748(2+)%-9-NPHe)^oiwNw-`%>nCjKG_y{KJ7PfJlgjVqXD3BqUvn zthIk026QBX4?=>R=#AZ0fKkWUyW<_h!vios!Yv?#H$vMjw!-tm+k6WDLUQlR4R+OzoQ#BprD4wO<>hZ% z-G9IWKUYhNi8&_J`~qQWKcJx&n!F{tl$@QNf&Z8n@$>cF*L!5#4tJC_Hipf;l5qf? z!$geWyCJNvZ;Mj)$f8L8MJ%j}zj1Hp!JXJ`p=)%vV3K8mmLLc1YKbpt#ZucOgF7D6 ziw~YCI=z0|q*%Gw3O=mG#%PB~_)e?&?e^lc>G#&wtR1RdZr$0mu8PY|7;%MnTmb(N zN>O$N8+_6pLjwQ~|Nob|15;*}?uNRtT=&VKHjvKCzfK~qcGxE({{8#sP~p9g$?}aP z#2YFPP>o$WKJyO_E($SdjfDB^tugKppAr7O3=7u`7Z+U@K*Behoo zz=!~5VhS}=%iy>^MW}c313{2>4vV8mzUIYj8w&!X;w?_~SLno$nI?#%a?}BpLb%4_ zZwF+IKoE4xTD92&O810zN{L61xVxTt`8+rGxzW<%>m&e6;W7x#8^d!CG$=PN4J~9u z-$GJteh=IRAkPr3O3%{bEh@6X)q86gSY;QpIjFs$IW@vl&I!ti7&d2snuv{&j04;d zlKzW+fCUwY7(N^e#R_7cc!0ye?0>ev>;@soiJBX*eynyR6-dY!&P&iE1#h4Z`2D|W z1wD|W_)*9`mbiC|H`e!3wJ(K&XGzJ;C~qI1af_DowV_KlF-bW@qEA$qJPJV5h>72y zlamFOXxtTWQFSlQH{j{3oWt1ON@v`>ci|2&x*&5wxd1AE7&u)l?}OMg;xi?Y2oeVtMG7e3rLN{t zUm>v+(NpU~$!V@hip1cj-oW!mW&x4O;i$ApE2?=MyXLeLy|DE{)_#(?Y-pEB2W=(W>Y?A8Fy;iH&` z!K7+R4DL_d=Nl=a_wknCjMee^rrfe+0wYxKk<%x1;S7>-=TPDPxABf85$DoJMS$n! zEvdyNBm@G)0L(7M597bJIPgcv^Z6e~#{Xsj{oljD(fr>?JpOmw{xNRrpw8RRcR;@? z_ETPI3uVM=>;iR3e#%oGfrNM8Q~@72?&yLRuOu&!uWddS58|B{QtJ5XJDd8e{3(h- z=ZcmX!FkU|=r`01Cruf~K{3 zl%6&92-Fs)=~h->rUhIU<*y+p07;Vx@h`SUfflZ|Q89#`H@O*Nr8#>JvhE)$ zSTyv7X?1Oe7sv6x=CBR+HGF?5vmpc!3UQL=l2&V~oKK-#ftHwJ_LKS|NhqtHP4`xP zk1W-J%D@AM@%zIJXurs!SFH6to6+#3DhHVi8L=~5w`DRf{_4hjv^(C`Rfl}_-_q*C zT){5j9~%0Rt^0nLm?QD_)T;s{(?cTY)mN3H@-1e{zD7xvo>1Ao*&Wx z&4^^6&>iKzWKym%e=b$Xr0VW}vL%L)iWIDWw0hwsBk9qL_p|YedMmxGVKhLZBL)&H zWX!&fM4og3HIRB$Pllr*N80y?3)L@~Ugsw%pzr$3s<2(mHrqIJ(3Y9ysZMmy)FTz` zCvMKKYHuS*6h<3IGTq5&>;_IgXz;dDkvCT#&2z`Eh%Bx(kurEGqBZG(Pl6_e{LTIT z#FX-Uv44C06^Xz-qGL7fUzpg|9T0m~P*W2GXh;0IJ7UQr>gX~ss9LqbHD$0nDm}s1 zyTkzrtx^7zYJZN`!Zc|-AK(? z_2z~Bn>k&dIIEIG4I-k`rgHgsZKS+ zjbU?u*IvR{R7T8R{o<}29s>*Nq;L*iArj!=UlDcqPJ$K=Jtqd|&YAv=bK(gVdjRiH zNhz#MRz+$oJFYdQ2pGX2RmpYq)w*j(jNIL5Ip6V-iQmia+(DmkIiXJ&nBPaD2V2q} zcHyjRot*A2+MfU*8taLeUK^%Ir^uvlx~Z{as$9A95ut z9}#E6d;P_mdN2{Cg=ub{7JfYmSxm582$SY;E%wtuz@=^vvHT`(aLVZR3%{uwzGlZL zy;Aw2U!7lP*v%N{;pbSqx+gRf90Wq2GNTz-W{9h#({A|DJ=XhWroU;#eWhU-%uFK~ z9v4?OmkLxPM`TpUZEd+-$z)OtZ+3@{e$0Wo`y&&c_0wB5{xB?WKBO4$7vwZ)54}%qT=!TJ>;|3VC+12jVnP*6#6F7w(8AM6fTkO8(AWWAh5pI6X;7{@$zM4&yn z)M}>N1X$t?8Yn)~_I4<*6s=H&w1s}fOZPMoQO$<1>vOA4gS7+vmiUViE zizTT)ufKWo$*?a8ozXyAlh2v8)tyy*fO%4IC&hXsV^nc*sUo{4wO~A-g1Tk3KSd>e zi7H>zZLGdYpirqm9HnOBe5K#cWtVOLH&x3-atiX+uT*W%?d|A|dl#xTGdG#dSI!3; zub2mO=*1P?LYgq8{w(Wv`SRq$0NuOAoWabqmZKjZ%)GYH>zMfLM%5CPXDX{O@E%)1 zExs#LYtk)A_P5`*!>s0Z*36qm6{b3)T_$}oi({1;lk4j0tgS~gp`)bBGd?7f#Ukc% z3U%QOG7<5%!`3QKt1joGJVTa+ko&u4l*f~8ZqB+hf|Vf{%C!HdDU?lx#j7lGGDXIPRJkK( z`b;atet%wkc_7^EWf8~3vCI3jqhb~`n?K4Qd(U*qCAfI}$j%fxRa?K>WMZ+L5J_}_ zVV)E&BNLNe`;005-tI}WO)}ESVOa(9w&@3SD||j0wE0v1*V-PLnr3SCaSANWIoyqp zFp1(!o=i&JpV~@9lh#l2+rfW{zNZd;xU1`@Y~Cgp;F6Ml`BRB}=NY9(6#CBp`^*21 z!T;~=VDr1980*gTlI&95aBJcR(ZAeKaKXcOcn-SGn`;v()o)A~My{KRFHh_mSx z+pS4)4kXNp7w{StFBP|<^a^FAiZUmsmhy*!gSxFyVOax3@J<~&$NJ)R6T78O_5HT> zs-nGgR%(iyRc%%qAE3lrPKGe*JS;8(7h8?G#-KTACU#vdI-SAd>rG0fUEhNXpJAXM zSxMu{f3Sqbk%0Nl6S;6^eOTOD|G;~DyP`O8O-;q^M(LexS5oukcPUg!HCqo{25C)Ami;BXyBx2mVzwcN!(<)vx3&H0lTn*9 zoqdA76I$n7vi081`OSKZhK@4h3W}STzzx9N?T$uaZ?-Q)Bfmno$YkR6hSqToJVSe$ z!_r*-V*a)4^+{dj zt@UhkF*~a}Z{UzH^I3YkbRC})t5eAkFw)ICdXHN#j4GH{e%U3@w;sElot2f)@#17c zqhh1Z9=qJhwYm7D)Pm$lf;5J-;z+x-jgKYmDyCTD9Y)suMd zZHuI|BOEfIvl2U-wqjw`)miJ2v6~y15|iVE=n9>GotGcJZ^Je^PBbjlfqnkBKD#+? zT=TLE&MD2!(nze@tnRm&+7?M|Jgr`FOTRDkyFJGzTjvwYGhjhy7#LGK0I*1K=CZj@ z>W=$gPIPC!-t6y%utAqqMMcHdsV_%;8<-}im#Et}SLPDcBGM9N9t2(C z%97=B7!ty@8yP&K^rMTe!+J0??Y+m{me*w{T8kx&^xV_`#dC9+yElh(< zoOnms0>cmMK;|WkO$=YZJLbjCCV4;|d4y4`Z(<9Bv8~7c9cAfn$V?8z=OD>SDG;nJoT zzex>e5uv1{oHYM_1Psi)J+Ec?Yn&KPXIh#`*9Tq5pWaX1*T`}wCl4$$7vz3@MHLLriQm<~x z=*fUx(T6`~-4yF~^RPsUzaU*; zm&Dn0W_sqvCE&Rd-WXvH3!|H385IfO>`U6c1@K!Y0~})0&~e`XF|)rOR`?6?@4x-F z$CZ+DoMUO)ly%rws5@3f`|`?ozZj-2zh0M*L^4mLWMhnxha9T<%;lM`=mHXV+?0w4 z<;bXTj@3p^o4Hsu&b^m!;AQJ8t<~D*z4MPI??h^435y6XOYJvXBez*U;*&i^r6Sv^ z?lp^J*PF4K;3IK0{-d%upCdY60umx{{i??I;iIPO)n$JJC-<&YWq(_ZiL+sQBYgg1k{1;uE5lg^MY4*mroc-xa*5pPT zt4;|spHsC7iw6#kaF`JHQg=lnId$7;*GTdowRV9BvVai z)=OuOr`WDqh0$1fKbvUg<3sL5slrRzrM>-S_{J!?o%Ui?w|M{+`DBKGg$L*Cee)*< zluz20lFgf)jNhDs%iu6P&Xq5mk79*az)ZwoeoMR^Ak*~S@uV&?`#xEpt}NGPHcYt7 zkmv+Zg~_!>+b|*bt0}>m(vSq@C280lam~EYHz)AfCG`gE1^Aq~?=`S*g@XA+k&{>Z zRcRo}Xw&l|yDUQc-7*>0XX|&&nYB7ED(*B>=<06Xb#Oh+5Dk+O<)v#tIUb~z+H64* z@j=C6A}R{c#;jv}*t1O_%=RB60^psjwD%Jp8J{=S(@iQoC-9Rb=nf1*wzXTaF$twG z6?1y{(na!`QF`67rzzHhe3yxZqP)F%uLTDmmC&Ql?lNu890;cgIK5E-c#IKWg{2%=7r*&k)9zjp#rauL1R90llea^ zt*Iq{B3EHy41*`S(o$X=`FfS#dE|aIMs}*7413~`WIaB@E?k_=CMh*{%z9?ak6Mqr z?y7+icij^|f8X)w)lF%MmFWzZaGM3<%LaY(iaXfu@xYjT3Xnqe?Z zT1~jEVnp2k{A$IDiNF1}&eojwk^5p~{-*WJN^JNh(Y27^*7o+e$w_j9G$nICoNFC= zHga+**@d%xNq$DkX=sG6&|9|4(RJ4w39~jw6|%LxW+(Hs(Gj==Adz}MzfI=-Hu_Tm zLCQi-%PJ)DkwS2?PWi}mKDHzgRQ;s#gUG!V!<3@M(ZZE^sM4kb-*x9^2u)2+nl~QV znzAT{paw(438JDNvzjoA+UGpsWsuH>vsHmKx6yW}@u2?)N0o0OEVYXjbbVjx!)*ISeyPH20iF5?3(mcj0u zAH*Notc*k-KySI z2_K`larKiWJEJ6;6J>&^*897xA67*Nn>N_u=I$vlJgXIyvzSTp0*njhG7;^^luyv5 z$_hzG!R&~EAChhT52qenv||}tA&H1gs_9!C3ApCTw+HRb*bOH{D&|k0K96e>sJgLY zB->_gF|!jJu3O2Jlv1eDqOF|h9mC59mzDLeNlchXo1Ct`avJXCi{1GKA!nRl-sJAt zN{{91I(6B6Qa0{vk;Nyx`-=%x0PXZPehaOtGmR0?ztH8)P`A6Q}p$^X^fwMI2{ zWno&Eby^2lwu3HFpsi>-Qm~bm22HAn6np^6LwVN98$(10mPZn;txT}?Z?l66VCV(zT?DTvlH$4F-yGa zPgT^Z0K`ht#~-*GG4J^%zsk@osGtN30_ zUUN5cZC|-hersgP)9z*`jnD&UY}oBY>z)S+OQ9fTypn{S4jj^IR9!3DRBL23wx>4VpBio2i0#~u(LHC``9;=LKT8ssoCS&cXe znaLsf(*M2pEO(Ez`U|$*&W^%r5Qw$gBG)b@ij2U>Oo%X)70&2RSJ-3Dv{$86U4ye_@h6A@QSDy7{5Z!U=#3`# z!8?^2?4fS4yqzzJpAy+2+F%jz=93WgLw_&{cX#K;45mAbfXOtG^ZA;f3$}vjJDPwn zEWntjRpGv&q+68%sk2Ud`hFNe=^{OdJ<&2}_qkLtw;{!^;>Oy>DTz`1j*b@4ud^Wu zuU*NQ^rhn)&2|-sFJSR_C7#w9n|nJ2J6uD_^>2>!5)6tSXYjc6msPxAgUTD_c8^&G zE-UL0EV*O8c6zlRB}3D*QDfgTK{Xz?rXBj}&RJ_#lRsoT?`_+#uIwP70}5XV2x)46 zKymq-W9Ba#XiVv(oKiK&no1G(hs_}r)t@XfF`>om#P7RA)%W*;wcD`1U|%$gVIMa6 zA>$-hfWNNkk@s|kZBuyG&mO+(Rm2XcAF7^Q0n|EF{9Fm~++InW) z){OD)FxP=Y4Z^82gM$5%?P25x9`QsX=22kum2F79iKG~O>+J>Bl0sL5d%^Z1Hq>ug zCW$%}3lh;06aft9Y9swh=<|ihs9^n7}k$ zR^+d$fC|(2+e(B*lnbE_9QOsLUAKNZg*}`u&5Bnl)P04$0pe_u_=SaCz~_I-Z9k3> z4GLb5`p`hSnPo}Z!X=#gDR&D@f+=~<)d`+tdC%UZUL+wekhXKLLj_d0O86_jUO&2d zwk4z3$b?qYGjdu4mTfZGq0QE#;HG|L?!ij1t4y4cCAl_9$ zioEi4nX4?A!#LpLlyY~UKsTU6til5U3@DwJNvba?S3q@o&t~m6hdU#fXb!R4W*~E0 z^|V%|ibEq2K82B-G9=sEFH>rUJA`|aV`P=}H6%&ru=E;Rdbl^46CoK{`JYE`R{OZE zE@)G9ZJOsq8vM@LmBwWB3DO(uhRGJ7xAQXp@V5A1K6n>OZ*g&cehvj#>9O}>2X6ln zpJ?#);E~no#CE0D34jNuz1yr7O)U&4?o9YvHn95MlN-2{E|d0ZZP?5@Zg_Q7 zTA0V8(iO(I>%;fMN;Cts2oIi8QTyyDef}d-$Xg!1VV0J3x3osPyVIAKH%v78prl{R z<%XZK31%0<_((+}(@?!fm|EpVvCO>tar;HLh>6CgO*0)CExm>kj`OSRO@a)=W~7>D z8J-P?q(A93mNNih7Xho6tS4Z@?L`~M{2Z;MrO?%CyQ_aM&NOt&tz2|s)lX}9<89l}kHmZFFwPCRQC za*OXb_@J_8Mjud=y^rEiaPUqZlxB$WV=(LO`Y^L7)gQvC^|PH_&aMMxFkuivx*2E# zIkdw~_r*rtbiCB~=))=wXZHo$zKrTM@`jkprJ&{8sJs-GmMD+=JE?EC)i&m=I*n!j zMvsSL4NV9WZW&tQ6B8wg4daaD4qRA7UkyErsxG4S!tAr(OS%nvG}p1yuRFleK|*+H z3^2uipPg9ra(5$t-?7kO_EEh~@q3c9Hu>$Hq!c>(Y=ljw9VF{T4uKcE#AJ=sDe?X{ z7EcbXMaGs_%zxv{?}5Iz3r zv(dt3q+Je0Se0ui$0zyz^%b=cO{PmTnfMMU@5|;BGJHi2`lEGmMFL={(?63G!w(34 zbTn(OH+Sg%37GS$96yv2qs2*r!QuY@<_BAIR*fE|+hD3Tu0PaRPoB6bZ|*vCAdCj_);v8oHpUaM8->tm3CG4^%{nSFeV zD?%MAkd}6>?Mhd^JyFq9ziZ@DS|PsmvDZhcUz^XxYomhLP$<24ahd$^D^K~|PmZbg zp0*-i5{%bz#&3;;H);lSs}DS204I*Sx3q#CF%b^Pb7&Upu$nJcT!HPCmMAa9EwO90 zRS0y6mafrd!r0?h&wWt*;ii5}0=TmhI!@Wzzj|=2Fja0|yQ5#+DDWO?$=vPQX*h|? zjCo-z%`ncxX>M=Ji(Jd*vU^SroeQEjo9hIKEhFg+2&=(yl}};G0&A+jXidW|s9W<2 zCMt){uJ`sdTUtpNncY!vz;S!kIcXaC>DHXw)<{)v_Jc_ptXs&8o{(@wX-mS&J(5R8 zJJVjCOHel}X=Sh+Wp$CMK4yBbo$sWabR#QGdp{_CD(xfVCKzqCvE$1JYjn*;q&Ugg zVTEKF7o$~#jNb~0p^fxwGbZV-vYyKR2{8nfor%e_)`97vVEr?#4H~k0(e4rcBtuda z^?Us}ofdEnU_ez*hdwLWV6@g~a z=2Su=y<>9Z9G~3pf-UUnI-a846rP*IYqHt7r`jepG z=ci)G624FOrUg%{JL8pg#Nc{GnlwqXfyX1BCt7VNDPAQ$z4%$$1E?+ox#{7DA8zy^ z5wL;EO0Ab?!=pbo$ugW9_hh19`L*gj zbh?S5qY2*<9UleGL#K!F=y)W=6rB!o-a)5CXLOvqY0eP;XOFNn^-sD}@@mgZ5(vTFA%WoT4#5*NNPyr@aCZVtaEIU?9D;}7?he7-J?O@rw|1wy zzpu~f^f_m|`|cfYjLRQeirTg2nm&JXRt3D45l4K2_vGHadx)=Iipbx)_XvE1!FUV< z-by92HtyX|YdeC8Eecn4Dav42KOPGcbglX>g>X<0;!+V zmv#As9zXL&`SIef`YPo2kI;kZ7!%Ic1wuZryPeVVhFK&K1W7!CiQ{^s&z{_#g*kxqZ6V|&r7@dcE=vWl3$*mIg zv|jDnph`4m}Kf@^Qj)G19|hV69i+6Vvdw0%L{C)4lG4 zXI@M!EW!~#+qWi$@1GJ*AMcsJdW5yEx~KHU`sNbxl(@^_djXfe0kQV!F%@s9>7zzQ z8VCNN2vjHM)6QA--jVRL##RJm+}5R}_c-{tkf%%N8P!%0*K~>oNg7xljLy)FGWS-o zP(p!bKS`|guB!zdU%%ibs{#Jtkl^$DM~KMUc9Rdur61>{g|MB~xSr8(kFYbjyNyJDS)-e1Rb~gFDa#aj&cz8{V`QRcAb;tpsROe}^Q{7mYxc$~4^5%(4T|IBEawYxX zaQi+3WKCJC%=`#OwbJgB>L5q$@KJw}Iz!z+s&w&$?b)6N0wSU_!Cb9FnsZs~Ii)%J zzVzb_&02^3rSalQi0cggg9i`3s?wFuK`(W&$7i)znl$nVU8%lVvvoCYr_6})dXJs{S zOR@nLXZ*0}SUxz@WCQYT*1b42+E;}1IAPjPH@>$s%m=n1_R{Hld zK7S63eq}m!2w{KXe&Ms;pTNXTi86S*M|rw)gUrM-Phot4X4s$H84#KCQZ3e7;mW~m zpi5ulyBNJjLvTnmn=lNr?&?8Wt|IkbmV6!#liA}VftUKTx!QeweYwWF;`mOT6ZpwK zkE;C+50DX{+DL29jgiR0{5G~GLNb;?PtTw~yx9wf%Z-vcI`pVYyRJ2iERpvvVh_q+z*NxvfatB9VE2;;#w6%F( zT4@;ktly;tRy@x+sxeQSfNOAm^-7Q;omYUx(Kq9~YMk~NXdysHN8dBBocVCNJIzea`;qCHpq*<5%gOfGn&u3< z<>HIIXF?smWq0`+o3wpQOiY3h!Dac1-D{4cje)k)lZi=>#ix-*eI2hen(Hks`})gg ztE?j*!K24B8K6nyadgb8Oa2q>SCB)eARoz?$Wn8P`?v0jSL+9rZjQ^(CDE{~1YVg= zL`EH=ma^mwW!p=J5?qCzW%o5Ty^z*!LYcif)*VlBcB^NAubk(TyS7>rr&qrwYG?5A zQDJ-ctL~t(mR`}=aCIchU_!k)d{Xi>i|(-#x4qqRvF_jQ_7!J^dFy&%eBI-Jg|=nO zoKP8YsF2ezn8MCMSQ_FC`ZjAD=#E zB8P#EU1oiRl}_P3Qg4b~P*`wqxDz(`LN>)aF91%JMFGRmFdO(21O$YtSWnOURIg}o zHm6bzh>JR^O=T~y>RPY8MFx_1WZ4wZ(Z3pIQ}*>q4VjeV;NZNLmv0d_-fEKy{$y&T z481VXx724|u%)^ucqUH}pJbYEE3xKkA=hgTetGk%O+@TlerF06yLm&GvB>Ltg1apg9zYR7Y~17jwzHNA!q)e$v5BjS@40&+2%l( zj_}*mm{6hovEdv?S^kT&4aJ$;?#8W&N{-#>uj?SR$dvD>1HF zH0hcA_O!zn#=3A3+Xk6vdAq=j*X`Pg!wexq4Ce6Z27|jSST8ixJg>V{Lv1`WQ~vGS zSLHDk6^c9_OC+MA?NUj+$<^>!^1JJWYLprvGb z>w4FEN@qMfcma=1MNMtEyt>t=Q4(&#VL2xxrzz)I8iC56asx+%J&?>Js-hBCwlXs4 zAAe4-4F6=Zjx7?k)feisuWW4sQgE7&S|+>vhXhIAP1In5JR|rCQFF8K0^{PY2P!*x zR0&fW?~`bW5Frpu1YGKgd{ncmRsl;1kMMLZUo&;R}@B zjx?UmWIAIWe&>V}Ez$lUPjNQ?uu|eyihW!O;lL^AK9S{6g9g4X_Hz_gGfH1y-`OzD zV(~Pg_EsD`fD~~qN-`!m<^poyiwd(lymj6ise z6bNV`07gi!RV|d^%g$=@PWWGMAdV2Nt{L`!d&lbLx{Aa0-u7JW^Vrzd>+8#H^UulL zwlT0^6%o0&&atr7AcX;%uu~Wh}!duZzEmox4&%X7gwhaHcm?WorXeV>3n@Ju)`|i!g#D`2_MzMbsc(* zThCx~9$fBoLd}Q&3TNr#)O2*M-@`)F)=)gsImWkFl~DGoZ<|H*nGCH zZi>YTg@uLXgE*3ryAVl-m>4Hdc}{L_-21mz)y~_>(cHkH>51msPFJNBi3$iY4;8$2n8aL1Hpn3G6(64 zBlK(d{N${mK2N!rNZ{t0Wt+o{gy-xjzQXt?&g1?&ey{t34ihrM5o*P3>DM88^Wy(qV^wCj-1$;eP}1?6S$ zQM!USg%X3TzVM}zgZm|Jp!)+@;8)eiW!D%Dx!(;AIp5+bWkO;oleD&HUfA@c)_Z{{MVcgMZhy^2y>#%N0H+N{T~S2q(dgdG~Bo zAi!XP`ofKN_B1GqAF}BEkvjS}mha4ZtrGODyx0>A-AEM~8lFd*kQu1rQTo0 zFWWV|AJHjfnQZrd5koraEOeB09|Uwo*71jQGU;5uBWefVSf07yN#oyn#Ve3Qa>YX7 zI_E1MMd;``Db_Yz2do)FC5=>3t+z*lVom{AvyrMlvB#GQ_F#HO(@%*Yql@8 z$RA6baIvt~`%?IQ+~2zZHbkUEbbmeDfF3VO=7yGi%NI7hch5(RI@9C$-amovUJ<-N zKcmVqNu?4>O1ko>PR~F{m{)OKvryH~agkCzE4e?&^zL7toSHLN?24fBx>1JpIDVq= zs;hUxkxYJsk3@{7vavs)@WjDYX@Bj?2%L6D|D0Zv)%Cn$w_cTOu+{M zLqKgw0b^Wm>j@>3ks!zK!>cgbKO(P>6w5MvzPND7@b?c~@@mVnlW`Q|)#6yolHIX3fI z9AzU4_2gtLdxw^>DY*am1tjav@`8FT7fU^1yp}+VH%^mz&XJDw&j!M9S9g8Db^%im z4o`KreeJ>VRq$^q{}kUpP~=9j$+mayRfnYX12Sfk3r&*J2?tLZ*o<2$juC+!LI4lo z!U6@a*?zN6u(!Q2@PYwUM~K%WP*UQ&3?nw`ARWlabo8ETJ;H*9_Z`uL94zg3O%KfH zDjtY_J4oYY;O4SlJWZZiP33OwDqY%{k7z#9m0Wiyx;{q_xf}8ak+PZ?fT7^Mn=4Kn zsJFxW3rvf8SCZR#piIjwoWCZ3Oc8qO{hK*BVxA`~3JOGH0H^Kl8EDQ@5C^Dat^>gB zzI?H@+8RX#6?EH*@wp8=(farH5&x^+0Y3l1#d}cj7;m&#c019c+!ed$-unz1VtScNprCN-Ekthi zybr*Hh-6ok)aLt1{0UH;S*viVm(D3JA6qu^FUM1s|D-`n0A^XeM>8If9 zJ_2ELC%!<-R36`1&kt&4i2GaRb5@F@eq3u*Uq3U=IFkI_#Tg_pkHHpi&8DhhA-Duh zTN%zO-|epD9QWtRXn0^_We5SzEp%-USa;YStEHo(Gq8-j4#~yxU<^yydoWqnVgB36H5 z>yh?EtgD=eZ^)7k6k%4{`Nd&(DhRm5$7$#68;t-AlLOhZ^-ddHdd|RdPHOQNRvrE@ zYL0#UYu}JnAYZ7?#3Y^}0-W3C@*NSV4g5Q8Z_jl;udToL^3Z;~uzro5?8CJ@^gi)O z3xIaBg`d+)4!G~Sd&o@=SsQLGvEbMHgsvMvAw|i+u+dxGu)cg2>s0N`a!U`@_iIQi zz>sc>ggP60tB)n&5lF=PU? zIv)F^7IQ$2IKu@vF5t9Zsh*+2+8{%tDl$6vt;RrdV^eT<G^oVL{$Hhz=|u z_^Ul72&&q^1*E`M`!xtIX&d#ng6NfAWwS=%ooi@l7^svl3IMH7g701IwtF(WtoU!t zuz`ZF?NjrSMji)C5k3F$p2A+J6!hE4y1Kd_K#_{^$M-{CiNP-DS+K8uyf+5M$5W{m zVgU%bxNbHH_5Q8fCB%?_{uT~YsXaHKM*ynoi`tRx6SugpG4TrNTMNYu#6@pA7kmJS zQaq6{X5x%B%)$&Vw<`GiyKxO@n>g&ww|?<~-<(^K2AE$-#g}y1!9BBA8lAAV3meX# z#!Ntg3UonAO6v6w1oFrCwmX`??&X%cP>lFJIj*F1 zyfu|fm$!Ycy?4bc?NXo8(<7m&k51Z=@i;8d5E#-q2zeM=xbYzF2I=ayIocRs z_)e=<_3J#q8mD`nn9|T(9`6jqjM}>~p1sEaSR&X{TO|G_$HV<*Vdrp9ci{sf-l*xe z@QoLQw(st^clba!xOWz+ZP9bLHZfBzwz0M6!w zeDGqZa8NCY-xWzTh+T$~J^MM6>7JWRDxY7vC_V)SzQV^%fStT~^M>|qY2ep>wQ8l; zO*H+9=%7{tKni8U`5_I7UiQZ?E{}#r46XOBAF0;e;swC#UO+bT`{J<&vw8)zjV3;b z9_blFrt>LJH&)TG8~s-Uz}N(Ch5M@mJQ7zYwZ>)s)7?XJJV2F|&jGCy;9qQ;TQXgp0D`reTMAK$b^%x`g@ z!`}o7G6re2L9X2Z0&Q(JlHhNhvAO)cWhKx*P;hBuTUr`ON<^eR9EZ5GY_x7l^4c^U zd0U=?`CFNQmfHm;dU{THLR~^P%lt+y`h~uQL^}v8##?GC^$vX43>xWa<%pj5Z-bva z5dmzSOpTOOza|OY*wE9~_SZ`s7YW7}#a70~_z4w4n^ zMIFv0=Bnb^sEDm0!(`u8#?xer_oPA-Uewpv%Vk>3_9aAxRXJ^;+0$-+%TabD7nlB| zIafnDJX~4gvg<;xStBBBivP=lYg|kWe~B!iQUQwCs&i3-!NJa^CX`P0!T=nOK>8y3 zpULde&&9(4Dgd}4g_qKr{j0e9M{@yghSDKApr!gF4*HSMy@$`ADB4)gl4Si_@r z0ZR4TsfXDu*Hi`X7qeQ*Ovb&ggLV2eS#QJuWL;t}{3J5Fe|gfev$V97+|2Irt-IHG znfmoD8eC9pge@g7MedsI51Lt{S-9JD1ec) zf5gmxIa3#H`sh*Ja2=P9o)Cm+QLy~;XX=;&718PSLUkI-#pv~ZIDGWLvwO&UzzKbX zL_~t1##3SOGVRrh#{nlua9^KaxF{&Nh>?R-{&`0yMER9Eil0`~W5f0Vqk-VO>y)49 z(B#(>z3jozwQ~-x-+FeovK+K@_HHrNJ|<*YSzmV+B@TPY?Dj8V!dlzf;y%|p<^iWL zIDf|oY$>lhKc08xeFIN~?0U9h(sZTX-+7Bqs-o?dZ5CX@t&-OD?-`hIM2$5IG-3l`kCqk)r)ti{6R>%D?jtN6PuWtcezg`VWg-h8 znydNp69x1a=!9HHQbLQFD)5rV30f`4wto@6#NW&0i6}?};IZg+6goOFuw%cqx8qte z$clw{#Eys`b@9b@dT&x?k{25u2A^H*iSWlK%3C{_$bx~0f>#&*z(D0XzaYJLu{W|A zefU}9C;GrEnasn5j>{kF-QJ5s#2n))>Km3}OJQ{D&m$^I31HdkR2anX8Gqr)%HCXU zpR7t>c5oOK6;+n&1U&S2Nj3fFtquvsr>kq)V~$Y47lO0xf`&Q5Vq?JL{wiax+hv=sMlfdg(~VAj zgAEiE*1%TSQ=PoBCeRhu;1M9F;qm+RlNaJjaVY7t|fRs+oRA_6B z-zUk)NgsN5VCC34+mh6>&7o5A4lW3*O}lT0hAyG`{$cT zW1FzK>5xv(86;sgqphIR)Z1^MP0#6XYioN*%pm&&zIcTgr*HC`_IRNxm|}o)Ju@gh zD$}sDwqLRaW(=)kp+P5v1mr4UakQ0{gQJu6x3(txUB1$4ujAC>Y{BIX2i0Ee6d2cy zex+JpS5+#IF%*?&hAS;Io~U5+3nL&i(`AK$F%c3&$oYpI{sS$7rMmXaG#@{{@=uno zttjMjTcy-N&tL)#c4l2pAD;;bGJ>JmJH~A#x{RtS@A|7RlNVF;HB~hStc5Qn$eR|B zLB&WgQ<0tJ#kVa#5{JVdnh^6ou5CCvKOmVcguW>Gd~3t>d9m!;al9?4drNm(pT`ub zOM@-hS?{*V3TTl!zo*U_Olk#+ikTnzHX=$&Xvb{2+`NB@R2(i5C&be;Asn@pincD) zLz_`g*z0Yj32u8k+0I;S`@o**=GbVPR*Dv(Jx_Q&(@9fB$yp+6-GmUE?*h zO=h}|gtnqrT4~N+r`G`jcW|!=0 zvI7Gba4=8lp_y?gow17ATL>p~`yhq-1aw&pU{kL|6cGX-P<=mA9x~~N&b(MWa5G*g zqIDniV5{$q+0vR&~m>OzsnN2E6)^H}s8BEbz`nXm%R?Gmh=fAa_pF0v^rrn$Boy$X- z81ghaF>1=HIpu7?jpmJdANt9++rWMWGD2lHz?5(ecxm z)!S0;c+6Mb&)WvFHD<;M_-&#}0)}vKa^Y~92->f#A!b*r3RwMNSbm0{Akit)6GzW8{lUH1ifv z2Tf`?Jan<)Kr+B7aV8S&#~Cf;uR$g__TiVFUYdiGLul<+psjyo$V>IR^H2=>t-$#a zdC17fp66sjxj9$c;HeuPhMhBz^vwD~f_HZAHK?h5kxz2KsDK=T`;1>?&OnLT7@k`l zZ?)>{7tYR)8Z=XYIeKCSo6QGPtU;p;3AL}ukE{^{o&KXwU|8VCaF3k%^(G2%;eucW zrK2UQHz1KMxuM=Q-D-O-2#jK=M1GX$@?TP?qx@7?_lp*TEU3hro`|tqik0U-dK49_ zytusvErwN^yVm=2mHubf=ooQ0?_z4;a`Og*iRr4FT}vXeiQQmw1@!V?M@7d*R=JU} z=#nq3tOc}mOeYw?V}GKgVW0p^Fl>`*>Fh=K2`Ojm#iD=lzl8RGl=L))_(|UC0K5fM32ae^iiv702PXr?K#YsjD+c z!Dt{HunFp`!6-|s-{r_|$N(iw<8EuWf{{vv2_nB{$~7)@Cacm>76V`w!T6X$B8se_ zDgh%zC01KD%ZAc9misA`vo2@4cHbU@VIVXR{AJTKGrd=%6hSOWbDiLLjc^EA9*t*t zPOlZc6C`?jRI2Q_tjn^0BNt%ROx*7tf(cNlKLn;&t47T1=+>fU@&2{G*^DQk1h~3r za~=UQJN>7D05gOTZU%s9tH#dXZ5}Xe6b1$g)PK)>X@V!f{jjsb{B=}RR5%zpZmHvf zRy~1&{F+JJw!Up^G!QGtm4Rduc8hN9ZrG#W9D}8+D`YMpvOqJjCF5_k?^6PB3_|&A z!eHpM>Oa{Z0%XI)*iw9;nHNC)nV!|~s(@_XL z!XfUm@WDKUr~%4ZgoZm>v;U`&i(y(~1LBMhk-Oi*GNtgQigbqB}2 zI(KqTFDb1soN9SQ3GnN5{}dFN1u#Ddyabbl;$u{~Ay5v3F$U*xZbzGJ+Zq;GFTlk_ zg^4fRTs}UMv7iwbQm+9&@0J1YyY+iH z)hMgGBIA44GZ7uo%de7qCL$uL@a7G4L`E){7*pzR*OikB#t8$>gqDnSxx95~mkt1$ z0FMN&xS$qZU(1cfF zH+F(9m4H{4jQC+7*)imp>~7WAurI!|Aa96QQd-l}2Srx5b38;PE-?dO%oKN{#?b2c zrs`2&5?cS%5jG_qO>3SPDH~V0qrSngDu6Gcb5qtyd>)=)R4|E~Q$A9`Ra}X@FbmY_ zCUlyvAtv_Qd#g-x5OoWrR3$-yI>yaek(Dh&$W!8C{voQ#Bt|3~bobics_i8=71x#QE#o+d_v$fGEWA^Mw96 zn+KX$z-^pgBDc2I6BF`q4o|hmbH~I`g0c_TLFU142*zCdyzx5h6gVXku0E~A4 zoS^3>iOV$<%mLLnSg*Mcr0~ef$uX^vQZT)DAQ-cluklH*OaBG*PC?i^I3f1+a~0rr zu*xh8Vgch@az9x*V0q^P9t^H7jW$OlBu(>t0drA+fr_TPi%mC4e2&nuqYiNy-OC-$ z&vSM5@S@J5&>kl!O_#O>5RlK@?RFMl8etoKS5ZC8{3E4(864IMfJlIL=TU(ukIrPl zs$7g2o*dbmQhYWv^8Q{VNh_`ZwYSMG;f!2l`I`qI%u`a+L%SFMS)cO8n@j1~?7vTX zj+rXt78JC7`xY+nxn7UQOa$Y8cVq3ltjY z@Q=p=(KD-2&W6bgCbs0i=MZS+)UB|DrwOLbRx5b>_;BIQI5OKFK6h_$2tiD&K;dQ% z2esJFOltpe_dbLXAXjZIvjje+rA*MNYIjv0&eywtOJP!@Qv?*6N7@C93o1j;pU6I- z97y652b!Q!TXhKL9sXV+ubtI-xFT&C!!&BozJVr8m>z)EDZ#NLN-#JJa7rk|TkTT# z>rRsTsarj?OBaWMJ8&-d>?cY9Wh+Q?HbMz=yQlIVfF^~wbRi)@uEY8c7ts8z>GtS_ zk@-?Wwzq0*;KUDLcHa&QYt+FoI~(A;(rr~k>h(%59AxNS8|KAj&+bbFA{brgqL^?4 z0|!I8oQ^v$qyYp8Vu_ISU)4m+NT)gD-Tq`~LO~(kYfVi-Icp~9eHR#ik0L=cW71tM zuiYuDvd1=uX&w}}VITpa1Q~-TXqiU7o33Ii8j!hu1KUBqX1W6iBC739EAX<3F@`76M!cijD*f6R+y{GMS^>V*q{@#SL>{rCez-oxW=pi z{rwojus#Vv2Z&J#7ilEO7D&lWegTc*fA|;3k1=LAav<^}jmGX%5bBfh#Zb%v%s z1rSp|ZhUa+0TGiN`eP)7MdK>F3t0Y}Yj}*>#%W1u$2|-tN5Nmfn5`EWi3H85*I*X- zw_#uTysF>EcmJ0VN3F;UZSX>yWB*-3UxDcdg?`|HjIw}31z8=4>BArju&lR1bEGj= zJmEcPH|;MH7)%w+U|MwtnIRaMZa?jZB1v$+%{ik%C#aubBB%d2pAjHfE2~>9Nxbh9 zLJ6mj#Q$7v_f8La{(&t$&fT3rvFU`vZl58OuNji9M2nf&stP3+aYqM%kc_R$0QFac z=TXZ_#H&&ybIDb)NrnU4t8NlV@CJtLJa_#20!0fGj#_>ZJnHpCVUXgG)y`CRodf>~ zrz}TVvqR9`D9|bo{$e1Z5FVL9>I;+h4CCl@JwGHdSB3xAeC6Wd)oR~NjmCktZcFRq zbGQn#8Nrj!Z*tZ1NE}zx(m6$W`Ks~7Da3!fQXHc-$Hm3PY-qQB`lqBFf*%K^$oG7@ z^>v$Pr>@VB7|do$Bj2RDcZ8!BGqJloydfbChb3jrq~GuJePcQ?RO~3*6GJbp1ABd_>tXhbDZ2< zx{;}=Va@u?))b+kSQcag0;zsF;>+~&@i+Ve#JnOV-`V!sMn=58zsYB`nbiL7_wY#h zB8F1NuflxuTLq&1_UQ6SUMa%POk!fZ6gdKUWI*ED#)d+8Muv}C_uybo2>~J9tc1He ze^}yX?lW)SQGqUU?}o+tmBUEb6VH(oIF zYnoQE6%j>RvmgR7Z@A;aT{y>lV1{aRk7B-jyx-E!P%35caCC~$szrekjqmlf8+8nF z)0Bz9g6DIItLPR(k6~oRJOclA-R8x2rP^KH-D`%SSn$3{N$O@lJ9DWxSFRq9?X$Ap z>$?VMqbov>0tJ`Iw_SJ1-F|m6Mf^?s;eAfE!X2J)5#vVr$sO5CPwMCgr7En zogS-LOGOjeS)l-dMg|h6@|a$$l^B_TX|k{1UOGqe6>C z^wpV|E>mLd1s22kuOEhsvWBj+PTj6j_uoyW<6`#0E-vr%g|=x#(J3T+fbyt)DxNT) zmQpR7_0bzz;$MTxSO5(AEYpH;FB1?qnyVQicysjyG~~oWlV9jN;a~+l68_sw|CHet zzb`XlG=L&siR35`$Oc>N_;maJEofPicFH_u=0ylXxdMOqDqb7+hb2_x*d()KQ&7 zLlJis(6g-_){o;^yhjULz2pJ&29#*7ke%l-?rtQ!fP zGJ!4F&x%NGx~1AI2E$H0F;v2_2lKQ^0)JNWN_Zy|uYjyd+PB{~orHk;C)7bhG&3*}#nU56>tl zVn6(?=IE5Fgf|wszhoTbuNTQ?d5yDFe`U+Y7EMn$Ehq3iuC}|spX_9s ztu7EN>nVpahZH%wVOjiN8Ce*0b_Qi|{Z%C8%7$Nm5ua;ytE5nEI4yA zI=#YB0-gm8%`q|@r@2eVDMqjeS;Jw`Q@~%)hqTWW-YS*` zmUT1 zO!9YnJ;mlO;+HkyR;l&`)TrSF@tf3N?n&b1=!<7$#&A6_uuZyK>E=h%k zw9fPfHA!Gjri267B$k#rRk1VvuBipTze9yF}{48<6D_H z2ld1A$oS~?aYDGLV>(aZtgK^FQasz6J?rY+=HqcXcAH0|k3exIqoF)IvWBzj8-PfbL9r{q>GNuVwMX3r7>nCCb-IWs6LT?z@h!}_D^Zm+$ zjcAOH;9%XKZ{G)YcaTO|rP`40XuU5JsP!zkA!(^E`3{v%jkR@bEZVd9SVv;V4siW3 zA`;2PSrCv4oCc4>CrvAq2U=ULQIlI$RaGc>1R{s~*cVO^v>Jz<7xjxzVGuVvqb4~) zbO13VGfRWw_KNP>naqcYG~*wbr}J}49|g4w{Y*?PR`&J=-+pzM3J7U6DMtgus7~82 zH!ifKD$C=rFb9S}65rOkKj3q<%MkiiApY%Jv$=>DuNKgtUYUc(abIV#Bmx>o$wN}w zCn_HTE!~-}4eKr)0jUQ=pCOCS(*ImX4jlgrqIh1(4mK?>Hud)*AyrjZ59KIxM(V8` zoF0;t$Umx}cn;vStiHgY=EZ+l`-2!Fz7(pgtV;uPII>~A@HV!pwyayA^AW^vf9SJ@ zk(s)N2JX)lqb1w6v!d_9ieIf_cQJ8Lpgr66s^Zvf?F|6|0d$V(j_x1qk`WM%iaH(* z*aSH}O?MfihGtABT5bU$jUHTp2$nM~VkVPGZFhbr|0&xI9jN9vDPJ;@IdId{(?hlN z`bv~vv(CGSkmof6r~f?<4+28Mw?G%?xE-6?+kMP=9KQU-7P`Dxj5=mm%}BMk8eNZkeohMSkEHqOZL$&uV;3+t5JvQg%># zV*b5UXmSTly(@@f*8iwKPmqxvYwY)$R^yDFFsX#bs6C-OWlJsGkb&~|T!J{eO{NnN z{B7~+M~_CR^Y~V-2TR1pgXRbs*g1n7SQ+(XLcW>}1(T$t%=Y(yyUdnXE1|v^WMx?( z0Qi*Ko)N(y;deJR)Ef_PzIA&q8J?2TTvUG*N5B)J>~hv(#%{~P!NK7oe!SQp#~Fx4 zCj^q)$vS(U1+zf$RYNQyCbIXR6Z!yMSM9 z*5XiE;@Jz;Y#P6he(tXDP8JajTf6qr2RIGfXN91(AS~_ujz)GgWJgEeFrv|Vs~*YV4;yv^QBLw5VaaKg!|Y*R5Mk-3|tNsZybeziP; z_9mrnL%$F?4vw1oH=D7qC=}qZnJOA7snho3aV%Q^3kjBGvNRk_7FRsR0sg4j-UOY^ z>8USwxyctg9SXT2JuZ)DxPXce-$!*X(jVdclw1~|%utTF?(wFlcWRfb!WAhb<~BcI z8qIqXX%5E&jo%mW-2f#*SIoic#im*SdIpZuM z;)rSQP-T}52i7agHh|ry8w43DA{F>Q<2HFL8svn=Vawi_%m)o;z!zuOXp16b_#$@X z#Br2u43JX0ASmTWFLIX$;PImTlq(4KCS&?)Ei!;yn_D4fAmoQ*dF_Xy@Flo+(=UM} zaQR&bz-SuDCv`5+G0B$Rj=>nu)$xK*t@nfH8Tbbhd4V8RC1airgWUEyM@hPZZ09+( z3+)EOb8wHO%lvb{Ru^FcB`O4Y>UqEDi6c@JNK)*z zpHGMZY;xdWXazc1c7LshiPVtUT(xr5&{EbtId8=9pfyZD;W~gKj*&cJPlFrch|6Zi z$lqQU&*w-4WCY^c!-+iU(M8YMewGtF`PYRBZ09C(ct6!3_7yFB(1_q^6%Shh6GRWA zXgY)Ax}gsVP}{=B6&xZ-K_FoNu*IaXIh;m#nyJ*E6VHBvC?@OlAW^OrW<{Yd5%?@r zOg@GI5;YJIoeW8`O>Y+Db3 zKzD#Z$mV-|jDW{s_M$HleT&8FF^o}uG;rLl-W)mdXH(g{3S}^n9rYdlLo1~qFB1Y( zw)H3VTN({6?XHRTV)f?|sGxcQbWWO>Q0twqebZ@}KPOgte~GKCpkQrhM?%4qsCfemnF=JsfE=&N z;ElpBwZ3Ih`J&54On2$s>v8SbzWj1c0uzVFgi}X@Tjys+Q5w%}{7Vr%JpvJ`v`Ysf z9{Xc5hr{hUX3jvKpY1Hd%P;JJGM;Ih55d+@Dg&4UhSEgnE)#GZ(9$)xkvXo##lD7pha(lu-2NO z#ALbOz*0RN+~?MuUMw4mMgnfB&b<^_W6rHB}F!;oNpXi(SaBl*?NI{#_aG{=*S}zUqX8o^Nt` z=MDFZ$YUvri-;SaM33%<|Oy1BO{g8vHrlxzN=gb5 z!Ho_Ba%&CZo#E`Z0;ioe_MKhBttZY$S;D2_gA?SoaJTP|!${%7K7IRq(63pQu>K-K z-ro59>jMCdT+oacTqU*5xmM%L$|4&!@cDp9#rqPP%Fh`qZ1GS&LH+G7A`ugEtPg4A z*9OG@Rzp+;r6LoxyskIF6cYXbhnOdM6RwT0twf)uF=6G-vD=q6EKg#v=z z5`;LXpNY@%LCOi`GiX+90OvFt0<1ePZvt@hl}Ch~37DY|PTuR`U&| zLJh`QOY2;+>(bI*sQ+(&yaXr0AM%LN5D=DR08L*k*3hQy5jSGJ`~r3a{0Eh21#g{a z=Vs5hVukx|wfP&h>Rv)9Qa+u)(>a;9F|OWCMpOk|K5L#01GPD$lT+1E74zC11Ce00 z^8rM8>ijBmm^TwA?6bFqYpxPmIM^zNQcDq^Vm{hSkfuG^1~(1^6%u-9g>tqGy#C92 zhY(W~8{{~R=0fl@ZtL`z1%W@tHX{w;eVokm)nFjlm^W1F;tu|Ypuj5+w1!N}=m-z53NoD-uF`^@2J#T7U0dr5 z{#Z&xqz&nJkuIhV1pio0EY2CJn#v|V!fx_Z051jIF1NAq1efh8ZDOU_%G??MCs2fev~uZUT^iN-8-UEK9q2-U>2o@NXT@*0 zPM|8amU^#8va4wl@`LOy0UsZ~E`S?tE(wS85Xo@kJDZD^R)rJM&zP#8xd&^{1Gn5-(x!#|u7*K$daP9QO@&+Bi@zEDxwvqa0Us zo$|)uacpdCRKDtS{jQ344-G|#J|?iG=+5_z`1rfC zPHhVA62@563gzewYc>Rl3d)6L9>~)YK{55auRN61ZbpKJaq>dVj&BUiAE+Wb^d`%V zh=XEiNv#Jp!Gl2_68~#e;1`ujyrh5C>n9oNt z2^2iEzM#UC9DoLRwBKeDZxPG~0ca5C@+@GrA5IVDheBWJH6xv$W3;Xh(oo^(8rAiJ zM5yYmj0_Sm$hJXP867nx;BrU;&ta3hicjcEL6!9R_1>+F!0jPCd-MaELuERR(gcX5%rh32 zpv0_fO+Am{FwmEZ0Qa39jBlfZrw6h4l>T?Fxiaw>eQuVJU;-^}|t4 zQouVj&Gf=2(kRQv9WA*5B*QNwgER!sTfR`jfPfYYiIBggR|YpyYBzoR7C(Ie+(`$ zt}1>q*wy@DYXOZ_9#XL|ql@pd zrBuX=vaOeC=NL!Ojl$KQS{;1T$(BhJ1X=lB$N!hy-JAH}lgel;fdK6S1N3O5N=~>Z z>Xej+Co!W_w#0r0iP>US8}v=5?GQ+*tnp=JLazxA4-ex`Zv7_hOwO1++DDC9oIK`# zF{6G%DeLtOCD7T`mW<2?bVvyJU4r}iXvIPjyW$rHnD@$2XS@H$t6_{UWpr-Nl77t3 z%fq=mePYzpX8n7JzWJgJ3tTdLr)-M;M$sGqr`lSa_gA#`URhKKY>9I_?7wnx;T8`| z{bVpBlXQE6Af0O3=4U(KJkt6gF+v!2q~^U5^pRuFR^N8K4DOARJ9TgdHR2%w=b1vSwkbs;OeM)Aq2S zNOx79Pi_3Qu8udRP_?y0@Bw3D|7D9aRhD7N1tslJY`@A zGsqujH2ZcBVEK-R-Cr;#Ma1kj3_((`wyN!B9|$1NbFP($4|oc)z&OV6$sTDxN+0I2d6M+Mu+( zUVY`TH!Z!^Bte^W#(%q(^8c{+)=^ch?c33SR2`Zl!>Si_3U)E6)E_~CJLc&6MWc;@5*#q`dn4Pl-dRmld@m49A zeX$YZt>_!H2*Hkb)r&x<@9m#Y;^RvCA&+K$QWDKi-Ii`NF2TpoziPjIFm|Uw?oC_I z0xs!gVbw&CAy`)OxNZqAp;ez(_Zv?RmXLlgatwLdgWY3#ClNR*VL)di5+{GxlJd9da&r3@fg}D}W~5s&NQ?&5uD|RVIWiL$QZz~% zrm=@-#DLPh@t&ln_F)^?(TQO;>q6kFpALQG7&iAqumsbg&w*)Z?lC*yx5wAq-93{) z5`aKocAz&5hL<*p%6)4Pm|hZbNtPU{AM>q=YWQf^Mrn4=^zRbeUgZh{yO|dwta}+^ z>-OxjzEwv+nnzuCZP+^Y?Jj}o>S0!IA`%fHew1l|e`-BYZz>K&if9lxQxBdjR|8L@ zRuW_3J0^~Q`R@9*6zLeRMG`Ur9-Eu9*1l^D1)<33hE+0IUoLO)*yw17Pm+g2#jNCBCEM;+-~=u;wRt*Nq_#LNlGsC68mnhkql%Zgvx3`` zu1cb)Auh6kRe>ij`Z)ei*Q=;lpx(DL3knN;ePf%;9i|sDfV}Xn92?ejtz9Bv(|P*s z{S~$w77g)bU&_b=$%R{|SO)mquf(ub?nK&|X-pXWXE$WXvYBT4a)tTj+2%^!(}Z)k z=O>P`&n8h1GQo9luox*+fj&w(Oag5!h)6GX*3eAE5{-6j3Z#Pq&*}^m_6?|BfiboAQJI3R5 zrceU#rnc>mFOkk0|3ynM!4^CRII%u?tkE)bRFA)o({UI{GxPKFV{);khg7j0po=91 zkgC=IXy7xu2A%GCzNhD2HtUVu+5zhZ?xq=#aP66)A}%Y1;W|CeE5DL8EZ!w58kkaY zR5D|?GS7{m;~}56Dzui5oU{Y61c-C=FeSGjXYhQGIn_xlaeu)uZ)YdUL+CVUrZj{< zBdz!uvJ`op7sGk*WwCsZ&t;v|OKw4vU=zYz_P zRZPoa1_w)&QS`0Wf^=cHAQ^!u;4k5;9(y6{weo#kXLDMI>%k<3;e?gMgYE`UUTaWH zRP5VbO=MQRWngd#yPJ4Nt%z7v0Wss;v z;Y>oz_ASGiO)mcMqSzK|JP>naVa>08Ir)8?=zK2dB0fGoOL}MuIdmlACUrPtN=Q!>KnTZzn?p0c1$vL7Ft4}h@MUY9c_uNmDst_XDm0%SqRMeL>79Ev#$T>wcz z2@y0b5MUNixCnB@$n0MP#cfp@XlaD5!=Dj$928J#G8BzUb3G%ovoEy!KXA|A#nc~^ zSY9C`uMDMS#DgFC{PtI3UP5`)=dvKWb36x|c4sK4n!k?Iv)h7{j4WRPK$lj*I@<)moksl;1a zTE1n67lJ3HCOyPwge}!#-uXs76Z~+eUrS;Ytt&zG9%4fOeV!4Ct<~}@9ftT*?2Q2^6=#sVOX5xmO2|ZKkaE1<#M?fqf zoO5m3cDvf$L&{iMCPiHa$Ro28EIMlK!1ET(RaT`bk4s?W5V_}pj4WR47_ZHh9eY!7 z7lBCt_Dp$cElW0i3?;RF>U#V#RPhZkF=#ILyLP`Rz?c=1vdA#p>+aZxP= z+Pn*dDoZ|#q_9e!R2buX0a?K3Hg?Sm?to}cKGC)+S<%v-6stXzv>oLfDmY8|l~N4) zwpA&+I`66#NuzvR-8rfr(7eRpU8;@gdr?)?{WdK+qICIXO8@ zaQcVG^>mQ@Fa#Wz64hCI)P0>8={i%ux+ZU(0cU|xwa@{Tmwwfk^I3ai_kLqnwE;qw zCcUn5+F6ITlst$Rwu5_eKuYx*hFQD3>jN#2upCI>3nq|Rx#EHcOhVz$c2nAdfGk+Z z#=dBuIbT~63)y}haMNCsnWD51aKjtwAd_6Ow?haI^lg6aZ_qsoq$Y6Yf>kdlb^Dmr zQEw#s5zX8R(`@U((_OWzrieyM+vW43jp-X+Gnrem2_`=6uv6Ue3r)@E3tK(0NPm(N zbNiu1u*ZId96N^WR|zp`OBK_lEUKt55c(j<0UoenW&1iz=F{M}O@kd;UaP1NTZODBxm)8QHMP+ZMY3d2|EMDo>qVB9;H>N$G zh@RhV^_qL}$+IN7Yo-TInBXXt%A3F`RV{BcVDp5v>Frk!dKN(36;NF)ZlzM}lJN3- zMc)|^S&-T-4K{wen2CzjrI)jYwBigCO%{`tMY-=4=;2$n$;xZ}PQM1S?l2|b#UT9rxbV%RH40mWWGH1K<~KYqel2G*C?pemwEhHw8V)3T(p~}V z6ky~0Sy4W}4eX(xYCnkLhK}PXfX!@-&&*`%)J@Y``~IpoMi6@yu3}^WH@Z}@^(PcX z*5AbJ?5iV*Z_7X@qBT8*sJjwIF@)d-K#0(gri8tP=-skiN*NPGatZ1UB<3GMs82ir zBBJ$Z#=bJ1(PvW~SRV*C&q&`Z?I>Mxy}8z725JG3EgI;h&a{dbR{*jA{wvRTLExyD zDwG|33T&(qtYNYH%ZmfYM<_l)L{SPE#jRYWQxA%y^?!JG)q}+Ku*~`>#m0+;4E3jq zAw|i-zQ=Wi)(cEwd0K={z83?czUpKLSjE)E7oVJM*k!rZSV4~|Rk z?S#Zfw0|X{?}L;UaW??ey$0(HGkxpoQPyU+YQ0tx8QI{gklvq=7X|=ipG*Q@&>vW9 zOzx%jH|+1-HIZJ2&&Ag%Zx(%sz{St;2VhkV!mIz{v#LKPV1^FFj*o!Za z4M9>G+=wXat8W#Nfl?u#Yp8x1faQIc<#V1F`>zK493y}WuwK6smWNM}ytJ)p^oHrV zmII$(NkqPHz)VN&)W}Fx0d|K3;??}sPBc4$2to}u8!iwWH{1z+>)hKR6G!189L-1f z=DD>z=VBlu_&=nylA`P9Ak_>Kin_Mq;TnLs_9EirWo0lji=NPBkT-=Ov3~9wxXxO? zmGiKj5#W!t*6LcM8&4`{%gMywcmXa0(_Y8%^+dRHsFj5bf;0lJkpH9e8Acj(mIf6E zmmnm-WF`!jh9oAUqkSzPSww??q`9>{S+cm}HAB0dmwc!mT6WA{!!Ul>#um(*Mnx{ z+G4} zeK5(rUW8)5zirPQL~p7?vkD#r;X?hg zxf&jjNJp#~4NbAZt@(yta%`>SSyAojMd69bNp0}+S|GDVBC_!xbAi~=WY5Gr5Hy0f zW{0$b9fZ_iL64TOxVSm`WnUm@*zzIJ;ki|0veH9NglyFaF8ohE{QY2S!%KDMLaL(S zK*_y>;M+{oxV=;UaU<3L`q@7obfz&JTlu^1&z~>VI||pJ8|EX)ju^u8=krw!es_#` zoq5bZK0jZo|Mvy|=#BqVy>t>~_%D`M|R)6i_6%29JXbCk^n4Lv$x2kmwu z&>CYZ^V!OOEG>?%(Km%{@WV42)3z%DhALtgZkG!3SuklAe(f`up8Jm7a@?m*Y^>EK zG?maELK}L}>FFEl-jx$-iE!xs;LXUt!eG6(obx!?1l)Hx)3j8CbVP=F=_NSY=beK0 zrqECdhqWR6olwDg?14G$lF9}HF2p!HtCJT2qP)EP(d=6k=Mgto z@bvW5Gti*nTDw3mA5UY~SX_445PQRP`E-~jsbrMgp%2Cs`HG%iXh?|E?J*0N)tx9f zP{qfw@b+wPCeG1%vA;}CQydLJSQvdkGK1s`kB?_b`0Wpc_6QG~nnmTb5#gWL!QAlr z++bKQiRb9zl-FG;)aTEfjx~HabfRpDXJ=*=(>M(F#o>q+bm5ii zBbS1aG7YzC_LU47h|O$o*yc!P=vbo1jlzWN2hx z_7dLPg+YiMYP9`;Oh|*^*z<+qcgnGOr#@R8-iL^C%$2F+S~cisQ4hzE`Xd zBq|09NkS@Hq74(PKRTl|em~7vLPNvyRkF6XF_N*7EDi<^=boADJ-m$L7NGk~k9c@#??uXl zUe+Zh5s|I0Y5Hdq$f(2zzgL7yNE=_zq)Fa3*dqvPq=)#cUHBr?x3_M>PFwS^^Gbfy zpxB1nn}9k=Y)gbR0Uy_3v2B(#6rGl*^X$a1>9ACdMP(SI)~V84U*5wxL>n_L&)r<} z`b{y$9=oFTHN8>Rix|g>;l1OH<3#UO2S{quSQ6RoYV`0xRIhhu+gkcZtxr+e4c$v# zxZ{WI_lOc3EoYX`3)n7sjP}3Qf?9<^S9VO#Feyqdw{ON@+usy~wC~XeTf)H0H-M7J z!JFyDiEWpVI)J@BOugc(gImu0Vd1Y%o<&~s^Bo%rJaTC$Bgwwa^YpeNq!kl&$;8k8 z?E%_Lgg8%70xyMOa&2H7!Kc697&&gc*!RK^w0UY77t%0gLW+_S`IDV!psz`x1rAD? za&X`Undp?J(00{`LQfuQ2W~XZA|uyG|F!-MxDa*4bohRC1673)B=7`||o$*K$tB#$6yt2fbv) z8%?L1@^#fpEWx7^!X7TU)~WWH{_?ZgZ+OQgC<69;U)-u~ZYz7G-NkjKErH|YuStk< z?LS9BfYWK%t~>eWuAiU$-D@IOLb&I8hy?U6Bq!h|rTlk)9d$DOzKR=`<`o(rRy%np zb5FN-%eimkfNJPqM2tqUqV+hpi8ZZ;#$%3y7`s2k>OODCBytDGVboZo-Z%wW*v(JG zQVQ-^wyX4%Q3pjSJvOH;9gH}1bza+aW@4|aTYPJ7riljyImRa)&q8)9|4vtjKQ{FC zhH*E8@8gg;c4Rvb1v_aNTq@(9re1X}-&`18nwgGM>1BNEBInhPt?%Z{MFq90PQ<$j1hlqr3#T|L&T{CVGuRq6iy zDmHI|wbrCsaS1am-3jlmm5s@X422Vcr1gN%m0%#V@_AC6&`#~%^5){wmxBH<%=?+> zCk?VLA^x+oYOKP-9-yKIVyN1$`}_^pEZln}Y;S{d+1%3;p{|7j6rw^sFzLxL+?_`O z+GK@-FB3Ez)K!-xKA}2fUDG7cpLzWvT-;WMd7Q4Iseav-H7X(DmXp&dU^2Dpf1G|J z((@|SpX7dHZ`9ldG!u_(6OgMYb|FC>(n3R-Bju#I1<#_jTzc5+2fDsNzV(laKe3sq z6umW$xUN>>5HjezwKA7VyRw7H&Tx`yNd*Qd*f6dxP_Vx*M-8Ckd^HdpSQ^G zuG3RnY2sV>eRzoCO#ArpY}R0&FIEP>{(kx=Hkh2r-^(??Uln3Ug69uL|L`hFbTe4r z_BHi+;tM;}6rJA9j+Y$_ox$7Nq}Ez*I)`Uh%Jk=PoIH3m%*>DnXZr*EfE~4sp?t_Ub6d!#tg87!qup|jI4WcgN8{k_5jCS4;D6i9U!8> zZ0m{DNdq>i#I=$-E1om#lko|b*e7FOrS9t~>Lpc+<)Vn)nPO3E1N-+d?s^21F68l5 z1;sVUECKo3ipgN8By~oxe|rOz`a`;S)bh0pkLUU1gz<6w5WF*&Z;e@0DnQ2m+3rV^ zD|eZcoYZJ1x^k?h-XGqb%LyZ1;lJZ|=3T%O6xcH{Hxom1%^) z$b*mo-COYduTeJK>eq3rw5QShzRniqT8Tm$bYlm|- zV(CZZMzJWlJ&I8A&N)gV|LVc^K-#m@YmX8&h>M=7;$aimW1t#MXhgiMmB^Eew_rw} zvghTEWR62CxH>)P>M`TkcdpShKx^IwTU_5?Xd$ZYAE{N6u5)L|*@g_J>xi{`TIx#f zG+my_)>fRLeS%TpQ~{?8|DAqQ9vM)5Xf@35U=;Fc?p^9g2PlvDA|+9)&sX#VSi?C> zTX{CU=KJ42jwu><<^7oki=UN*f-f5DRq5Y3dyU5UI69azu-kZ2Me$BnJ@EyKrb$yC z@-)D**mXBu7BilNz`JxNn;81}1^MdN%}g^eFlZsR4rRjYW~O3AOYOdSGGvZdCvQOA zk=vBjBVkeUL82=vVg>8yi#n?bHTPpp^7~Dr<*r>@J{WTC%H3jT8aiYvqH=oON(sjK z@I`G?OUqcFufyjJ$|{S>#Jb9OY6}+UK);LEwRX|l(=#hwH{}wgXlS`3WU1Y2mXrPr zZ#eW2<+L#;g&2#JE{M8yO;>UpJTfXEKxRmNp}OG}4A&%P2vcGkS9c^z1@OU!PR3fttlovC4>O5fneQaLL8O0C4hIIy0~ zPxb}UmU%VO@6o&Gq`(iD2#jK0fhl|^q4et{-UDGYqs#X&9Mj;)oRa{!YXw3rg?wGW|Uh#B{_N`ZymB(u76Wx6^V-+#dkC~Jj z!r{W!?sZhK+~Gq1XBIEG?p*1b>i)ov756L|nah4Z3F(iX&D3Z9Q)=xQorW;d{lut9 zxvCn8{92mZX>H|5)4)1^%T*%GNii&DMYbWXw=v{2 zLR|YG)mon?OS!sSLxXt3A*>;QimWD7zm;Qub5Ck9ceb|Fg0;T0)}z%?DYxOQZX>(n zt_&VWz96Z{jpuWdmV6FwtB=l{J0jk<9?D5QDbnbQn2|GX3XpTm&YQ@ zFLrbjPmmz1AEGpUG~u2V9|ftC?Lu4ZJx$=D?_cIep=91%_M2Vcjr>xiAeob5fnF>r z?I%0T%_pUk#n(q~=H?HmqvC2uM|PSO;550q<<*Z-q-*o1b5d@5uF6n|Mgl3Roqt~k z49XpBm3B&6LM^+?(?7He4S$EF1mwki154Q>ioS=tmgqTb=P)5ih{O$n z(0I(~tv1c=%U*2Bm1)RON4|cWghbOOvv8i{=u&Rgxve!c#(1(NqSl}gF$1X};ygok zxe9Czsba2rFgz;9pjMJPEI!QR$~6audR*Mg(qRpOC6OY+r9_8^XYi~#2$w|4QGOpC?g)-v5G*1U2T505JsnW+|-UtWWjAGPkXeIhg{MVQluf zR%j?%=kyuUx|jT1zrwo^LH~%-KBWO2c6^u5Y_wl1HL3m9x<8T198X-lC$+xR>pkXD z#B!>$)74pl!oBiSbj878 zoLF*i?QLuAuAy&8k7t@`>YgDWeFd)Gj@$9Oj6sL`&0DwrOx<`kZzpqnZ!7uQDUm@! z1@IPkT#FV=WUBx4fbHcNWSn*OarrL|*(l-5Uqj zdyIi)_>?Tv_(}T+u^z|4+DapXZzJ^{PQ9=E-8v*}NxnwqK2J?N?Jjx{U^G$LXd?_` za6eA+hp>!QOB9>;>_f#%#VQ6ThMjy7Xi`bs#nr5vUwLC{w^ul+%@nKg5 zXw89Q^7`{&_kM*7zu(&3a&JaC$e`KP!KzEU@!OJihG9*mrI2L1HxokmoK%+`YqiBB z9O@Bch&^Dtqu%tyYw(Unbq7m^GAwU|n}?D0|4PhCEfAKUj*~!RP~+N8&r|SFz~=|s zi#%xt^{K-`gkyLEx{|7)Ydzon{smchyEIKVVeto6*gY}@e*<~z!Z<-J{qbYoVcP>s zq{ndZwXFI;ih1@|XIW3@Ta(-qwkJ@)U-}VV=Q=b*42cfE40lx-<6+m@&#ES+u50nZhalXeYz*bUSAD{2fJ7-hgKMr{ief#Ax zhM<4DA~d|qCfaxxBPq4r^}c!oN?#*ekr7xT8c~+1WUKkZM39IR2zxdAV$a076oGA} zCtGf~uO_zP$2X9~^4`zaIf-}v0r|E$T0{COBO_UueBkBqSMVcRj-FPbD}zfanyRFd zj#muAh~pl&`Rr(@YDW&`^Bt{o0sC^PJ>jhz%!MF$F9WH2rO%Nk`um@y9UU8cIk+gTp&>#G zEPlx#!0Fn^V+;FB)P;BNy3$p$Cw$?DLP9}ml9^NOB^v$w{G=GnJm|!wYwGJyLZSp! z8(<><0~F{x>k%7E8Qb2_ZVhp&3?;}?{<#=f$?fx7BA7xT;lf~qAZCUQ?Zk}`pGHNY ziyq~u`NGgbP&jJIhjca{fwu?TH>V!9qJfjf)5UUMfL>U%+asi?>zemr~kXOHf;sJCctj!f{_Snt|V zWW)Tx(h z<86U;(a)8}iMT`v-zOII@6GgQ|DMo>1=b{)cDW>JU>wq}fn|Kh2VsBBdSgascpZ!p zak|rnaWrBv&7;C%TLE*>`O!BNoN3fIavsvD6SbeBpCE=*1-L%1AKf3mLOF~>bB)KD zIs#$gGE#9;a#M0jF8@#f@?V%__6I?qo&f=Q%4unDLcVdOOMG|bEfSXJ19Kb z_|eTCFA`SQeu0?XM`;>eeINYLdn=;ti8Z$0CORyl^a&i_!m%*m{yLQJ+?J?c=UX>d z8Ay0it`XE71dj>9e2@XKX5743fYT4aDE5zLgP|&f!c9d1rwQsH{Pzv`{(Q7l*qQ%) z;`1vETIYCT11nX{hE<{o_DLnBDE3#}F|(I>98Pp5xbC6i`6&p_oH@hZw_qoo{52V$ zy&lpa+7(@leDq~*hga|Z@x_>z$4=!xJv7CGNdehz!A>XocbkKu%^=TVzhk!V6Z!h4cDpA_|K@)qgxpX2G;0$uCs9<|x0h;^^0z>C9X9L9zNA%Izv7 zq}{)gcy`<6o93RZ@%tQR+fUEZ<{P!rV`c?Dn)n;Ff8M}!5K!{_HK%*=rh?Zc?1TZk ze}SCWJs=~@-P!L497UQ2c!f>jNgO=q6aO!_NqNT3y@WtmDqnz0gh7aQ6mU7BZs{j(=aUET_? zI!l@>FG9huw!PaaBnN~=3cUjv*L zPhMBdx@iU5?Li@WJ#Cu4T)Zo-U9EXq^A6V!6v=y_itAU_*Y%*Iqa}h9tG?sMGB7iz zysxRbUD5YBP)>MnWr^faOhSUr{`0V#Xfsq{n-zS@Fx?T~I07M4RC>9%)JYtI2IC?f z2kq5INU5|}CvdDYfm-uzCTh^Vyn#7ux-)+^=b8Xr>^ZYOx>f4;Ac@XO<;3N442@gU0zNW9_sUN-jk8t@1# z#X#UhRBA&4(@_RYIa>Zr4Y@_R*nlDnnlm|D zQSLj4@(+v^r31ivnqGD^uy`oREc24X<80~g_5QHwNCS3Cyc{ixvB8Zel7MN~`>jxw zM1p{DtUMwUXlC6S|IQ}`ru=5AMRnkSPwwpOTkYZvyH-X)rWXwe5@97zb_wMq2{8hc z_*oP4l~{7bciBw$xi3q~9a{Odo;-<1W2(piJr(+4)`mKMf1nVu^fWje`X`7bjlIkf z&=)^k0BJMG0!W3;kL9wd%FRW#XQ-r}F(P3rFkB+s-=DjJm&+1;Zzhhtpr8;H_6)-F z{A7s&p?zUkg*KXw5zAXj--dFzxm{hF(5=%?T!dg#79BV&F`0P+@T-tqFb4ikRRH$n z|-w#wTt)vIEGmSr~b2)qCTxvH;7pEcUa`Wo)R#RJ<_;S-%q3>@+SYm~xCZ!|p zmLd?=<|;r~(Fx=S%;1!)xDf<-{(T5Dp*uLDW(-sm*guH)xMd*D92Gl~MB@L|R6&S*48U6h1bUargxa32=XK#GozTR2wc zt=U{;xJ1*JKR%iJS0ngD_SD$e?K+$#b_kk#%=S;$f`R69+CLFxV`ZiNeZuzy0o7d? zmX?=a7{gXvXKtmnzqw~_PQ{p!Ar6OLM|^y`dE%Z%OfZBXMo@{5=+jf&-el`k=~wLp zshUd(nD=m*tN5>rmTdSlJxc$J~+-|Bp?$-UPzx)6p=Bxl8^ikOcX5>`> zCf*0eqCz3!(Q0N|L()c#+GF1LpFC*_|I!a|7AK%^49Akps#epPxe_zm99P+V5w_#b7>? zofit~9cYzX02ezH%#PcxTF6HQQ9_i7@kJtT zDym1>4`UEuaQ6ujSm<;lhdeKT!xc{fWj#syC6}=HxRR36;ZpZWydPL%Kz9o4huuOI zI&}WylT)*BDTK~pHy02fxGx^mb2JG7Z8Fyt-#-tQ$5(;s@=J^AjsRosQ$if(4NeH5 z$RH2;QmjM>pEM$|!D+xxvNXu+H{*w`X|9Caiz;AH>Ij1f^J(uV{99tD5Cm2Fy5;iC z{ej}EI)hF+_KRcNz7DWnGM*$I6A|Hl+FwRiUTQz-n-*+y)r%0nik;S$$4jd7w$&v8 zTmsUg9m$vkW=||3jeQ8=)t=RF0m`HjCvYzCIMW^F>NNTh7eh*YAl+ElQUoPub^ry{ z@4d`-l@0Dpuol3H<`>-eC~Kdm?~bU>K{@PS|5`YiXzYE#U~n2%-^SZ|l-1-?cgZ&N*L%x~VO!$T-k%UZ zR>Qi%suD{;pz)g;N0IlPV@#Hd7iovNqJx0LZHe3-4fxb|jv6vyt}T`lVBGnE7NIxq z6w=QOWa40-cKyCVNNFH`2;dTJe|io)iffZO}|KRm*& ztmXvD0mKTtS3FclaDdmq^)mg-UAF~+Hg7Bf^=nJST8eaPOIMD%Kj3^{GsK*!EWVMV zxPH^>#i8)jZ~!loAeqO^P2QK<4}y;27?H4AFYY^TQtyX^xyRKkBec<8Z{;j(<;-O}Q#;s>9};Q}RmN6dS*gjo zX^4<~>*TjyCv|r3lZO}w(mUO@ZC?a{2MY9PdZPyV8Il`<$?jMoe9(w-A%|NVgL&O% zeCgf0`}o5ugbyxDH5&pkGHEyc>yLhGd(EN_Yw=skrP^1)!bE@BvePO7Op@%3FmmrdY`A1Sy(yt~SNz;j>hOf({4M+lUAQI+kJ zknJNX8h|0Ao8IG_2JF8UsHlh&dgk}`eDcqrQPA-R@%g!)!kuw><-##a6&~kMa)duC z@ny5-5RPw6O*ce}{6UQQBwyfVS}?cv?AS?!3tw9A%&pY<0Oxe_8n=H3dS5sSLRy5R zt_BX9k93QuwRTwlur&#flJj*aB)|HYIucZLLdPVm7pQGGGP6RI^@Q>kq|kY`E609p z?^>55&Ad{Za0M~|FGEQ@-OT{T-)pAP4?_%xV?g2E7E+NXMP8vQ`PYw$6*(`ZI!DQc z>qGEH(Fs^Ad;dbt2|SAD)juKHkWi!@5Wc=l0vy`dL82Um??RAsD0589x4z?EcrTvnyjTrDaQloEQFBw%ghW}X&c)gU%37ey@BoEkAIYdd zco!?(!#kj{LSR?EWnGH$Jsbql8?K+VU3JI0p6vvwP04wrW#2yDx3*bh7g9^-K^VFH z8a~J)-$4Mxal{1!4{<-vUMWkbuTZxnIw7bU(2!F?-BEySbDFnR&U|a82Cx7RK#yd5 z>>mgkN+lUYX*lxb90b_9r2IlYsHDzct~jJL3?Ib^3aVo`gd>pDj;`gtlai7}01Rsu z@N|78lSFv80K@M$4c8C6%u_|2__}HG<#C*~;bnU(fp`EGM|Sd)0RdEN{oqpsAo6ik zT)RQ7Eu7J9(3XG({=GnN)CDLknFoM@1dtw302esF>qZDJwE<|ioQZLC#b2PKLUaPT zUhVo{Iu96r6tWd_9*VMY*pFrc-EPCe6N}&J`|3o+aB1-F29-hm05-KpjL;h8VI}%i z)RI(LSsBQ7`QnP>+Y4J^+r?|++4{K;@^7D%!IEJqgcB||0gRZEk_JhIJi^C)L$Ydv z4*cZ2ymPg6E4q$u^G~4`*NUzMx?JlVnD<2%yuV}UpmWst@7=2eG5+;?vpzw5t&C)tz`dNtsAUoFDiAx zwW)8tz%+$RfNcPQlaA9~Ag%2}R|wPWK%wBGxt$l*gxO0~&U_!VN$WaljPw|e#%6{M1K2x5Ysahx)1k~qw z023MJkR-C*AQ_~D_mq{1FLK^^o(=pSRH3Ir2BO_7ScFcH9!Ko%@_j#|3pc_Mf||wE z$&P;i;3Dam+hGh-f4&U~-~gm5Jno@xTk;vRSVbCo5I`r8*a(GAC3(`f}H~lBaHQJCaMP+2ycXad%^}c@i{TND#gpEP+oZ z%=rr85bsGLka_2y)z@ef>(2pje$vL^D3;c_WB$R=3%?#&M{J+W$Bhw95*$ze6Gbex z6o@B<)c(#+k&!1vU+kv-zO~mW%Ui}!; z7FYTlB1q}ExxR(yQ=3bYQg|+(snbCG<+p1*&>Ia79U*pCI?7e0Ur-eo)kc3t-T!ps06D z8LA~thZH56RbStVwvs|1V7A$vC-oX+GtqO88;dXXJ_Od1b?b`G5ezLS5tC zK2Zh$BMy#tvQ<*OdtZV*2*`kR9Hrb5j}80tMXl8Sf;}EE-+6qd1n|hCM8e}DY8G^v ze%k1Y14PvO?%_j)9i2HIyjqWAC{@@5NflOX|13xEJ~ka;56_)10-!+Z0jN~jJx`px zPXR551PGzqsvphRTGKMZVnak7q01Q$Jm!$via;RsLdk!2M<)j;i;KDh;~B{Jj1IT+ z_*UxAHg^c1v8aY5p7vXS$#Kk43`v}ZnlPW@R37(pu5+lXZfgkMYBAPSF4t^cR_H(^`l^tg8eU(Yzm}>Cw=_cZjqQs3>hv z+amHEh<$yNU|GD^T+&{=1m5>#C`-jqy3!9+K<}{l$p`F}0&_-@g6BW6(VP#%1B}e<)z&MHMcH zHXOWyB_PT0;rAC~8G$JDpF%f)=^zz$qlpzgp!mls+-VIsP33n5Knl=|5kZiaGdQe^ z#5$#j?lrp7k|QmOPDI`cRP9~}twz&pQ8#N_fY@0`X1oZfnzFwDevyVxZI*P6$86`7 zpt`r68ArBqal$}9)S=+m=~_;^0pcp{?;j_Lq;Oe)Z)h;+Wd3R7c{TGJ zQF4#YS-ttQVcRp~@<*-9r*V%#;_8vZH;@ESR=046kbW3+W*aQE9W%EaY2-^FI88?n z`-DLMk4SFo0gJ{Z<@=)+qP8sT)3b^0MfgZHK-Hu|cV~c&*b!_7YeoioxA~l31kz;Ed4w z&O&MRXQyB{fI|5HeBa)yd|K?VQ=$f82DYUXe7=7q`!%pA=l<7~U9Vrr7d~x%2>$1% zyc>c~UNN^@f3^;tnRW`K=JNa2!p5N0uR2OR$zW+Ysw0pAyR$$$9JfDC9Ca4br@pNF zAl;;W+&L{Guv2U}2Vy5UwKGW{Tu;Oyw+?B(U?nofAVy$!!kp01{1n&25)0DYi{Dr^ z^w2}p+dI8tq#CO1QD6AAkz|2>t_O8hS29q~aoZV~RHR2hTL#K36XV_O*NIW+{A~w> z&s9{sgrxegmqfR?^x@^5lP8fhFw;sPPEXI^LgF@gshzt#2#I8DZl{j|axR@|(?}3N z$sLLin$YzlA<2#(Z@D6=H|!V*v0I^mdc%{wVv_8_kko^yWZW1E`!_*yiVPSS1ypXC z^!6T;(Ngc5HzFbv(~~yLA_=fs!y+O)uh7}y0H}s2GQ0Asu8?ZH;qZr0SR-2KB3RX` zs>9!rXQS7C>h(bzLivr^JK|lZkewHGFnP_9GEP6^xnErl6+BJ9UXcE=LKhgbnuv?Y z55ArLrKJ0rqjiHD^4T7tq=O@GKL=84BcK8()JLpAY$6jY6jD`v93e85&;3uF5o7l6 z2P2GdUVjp@>xcXzTt+Co{70uD8aC`FY7$b8LdP()w6}MZ#c&}>v(@c%nTD+-oERPx zR#2lra(1D}ic9I+yM7{OM|}}U2765)%K?)cb3q^$x&jh<%JkaiFISEjh>%i${GC=| zE>i{&7qR0Jo_Wg*!Igu91CpKp=-N!3)s;oyRG=CrC4|1NbI5?MP!|zg6F|VRQ>jG4 z4k9Q}k2eju?n%k<`zNIZ6K1RO7>Y07{~@XtRY3QDkGxs4hq@aSV0gadRbRDTHW3@v z5Jo=Xy$77z{=i;7IM)Gtw^mog< zmV@g9Qjx9hqoQ5n;yH=JkFuT15&X6M|Doc#ibj)n#@MJ zW;*M1;kze0GAV2@U4C#cwy97Gn?^yz!@b|(&*2CYn1UlhwqX3=ow^4vj_}eHz zC;V*`kWTp9C_pFtZ4{sr{x%B8diXn1fKK?^C_pFtA2bS|c6MygKU3J5j9)2iQTtr+ zum~~%Z_59j>Hhz28FCx#V55{mf|*s~g5Ac#DOQrixNhi6YcM5HQ=|PoZqdoUA?{P5 zR{qFGeNe~9KPKjF@U$hoOwZO-7PKQ_C)cL+zb{*AFrtHlr|YZ#3Zs*4X$=g@ZVu?T zDbPABlOd<-h?HpT(QBCJ=U;#A!S(D1!3+1Guld|D9L{o=+7hFTYHRzy&Gfx#ix#H$ zrn0t7lN-EJ*>Uv2*(r4E$I;O$lj@@nNYretSW9Nc)GWW&qekBO+f?5nnbvJ|zxFsn zQ~#fBnjF}2<>fL!H^1Cj<1};N%T4*8p4jpqpZLeViG%UMF0-nYhMa(za)+?{WAl>P zNTKzntB#$O16&puqsD!@WL*IKFYh(!%ap2NWQEgu)%%V+o36v{|I!JS z;nR(cYhzlkrNZbYi#Kvazq1W*PYvr0VGdSXDfa0lC(_v57`@v>*;P&c`5s8$KF=?52m8WG%bXQSrZZ*m#$$kp2l390IFfHO308kLq> zrrKj|1_ODgw{=D1hSQfY*m9SV<*RFff|a3zk`l+Nn3g&!KXaEZuHy86;~6j|`a^>( zme-~$IaR`#ZBx#nyPr=vA;DKd?jMq?5WnPYhl zgjDC=9-lHuryPErnNu#pW?$dkJ2kvmp*qCtoVd@LCX)~ck3pwMg~4l>tzKWj*q|pr zlUsBYbVefMTc9(!gBs7Y*GI-WG?1KEzrJOyaJM6Ok^~(*-R`^;QSTqrDpEKU^WXiA zKEdTWJ)3$$k$rA!cypLd)#08&ztO#d!7uk=eNE&g2ep@*G#2bN-K7hF^`|XK8N0W% z1LYy(m!`Ifm6=V=%WPL4 z-$G{HNa7r7I-&I$?@*k6I!kjIY7c4k&xwWn|DMT`M$|plQkr1VL-8SD69dI;A$p5w z9u}emht-U@GF!)

kFQI{A)2_m*OjJJ^Ydk-_q)4HDql%Asssym~c;UEmX)H{~Tt6cu^H;`*Y@tk0R#76H+1LO zfAdHFHB7|LH_gG2%DsU~smJ;?q4EhKSdLG0!{vLq3Xfy*CcaDcRj6w`tZ_ z(mU8qFPu(ro+wEUZo7rk*8b|hnp1`3JX0mXt~5%ThdW^A%p1TwWn65vL7p{Kr0dxH zy|i~Sv^A$`JXkcu9{ncfF%!C(JWaOsl_9Tb6B$!SYkaaMdZhjqL0qZ3BD0`y7`;Vo zl;G-Bdc6(xCIE0ue_x(oAiHX$K!p+5J$oeAab020FG?PN!wiRDCCbSki z@kPyXSG3g-x(9h;m=U`O^)BEaE85GM2{?$FUArQ{Eflgj7PJQREhIVhkq$czu%~l z(q{D=m(6~oe2c3|WeC#qB83J9D;f6+cR$4z4m9PEB?xdY4{W!x4Ml!vdEs8>j`SuD zVM1bSPMN^k)M6Bi`m==%)c)AnLhbPeX0?xe>8!$BQEqmR=_st$Yv9=!w^scA5+j96 ztSWKUTCXDv+0YgR#*_U0hCOY}BF~HzhwW_a$osi#719k%gw~g@^6SsWD7)=4I%4;R z!uF^g*oWO`MyqmHVW1Tr_kYu3Z;A|3+5ReY5N2rIS)`=z;v&=-x15iMk3ZQapAgDY z?zXqER&$nZ0-d|!a&XQm zT`l;po11G>_w_6nDW3Hn3$NaInyhlkQ>#-Rw-gh~g{aloMWftCKOpPHpgk^RWyQUv zh!+!%yS2YiyylIaq$H!prn^j54#z0S3vj5;C3#afGu}hDt#-;c?+tGyV6aslJBMO~ zI3wL7!{Bk4`DUK~oFyw$s%t~8LlO3eqXA_mQvs%>3!iq()c%XkrgGZ;zu5cguqwB$ z-?O)fl+pr%gtT->Nl1f~fTAEF-AGA?N_R<@v`CkLlyrlHv>+iN-HmrFb)U0C&-dN? z_kA9Ggtgw7bIcLH5p&G2gyNkpMxoOe)n8rL+fOn1W7dUsEH$mWP-*A;THO+QwGLtf zSKi7DO_ne#WBSuj^@*c>)c6X<`rbaT!pL@+A4>dV-&&0#ZvL1Rl0Vyf~Q zP6o`UE3ajFOr|BbcNCJ^<%TsQH#av)Y#LhGIXPc&2sz%?wD{0rQ``%h!sSbUZtd#) z3RkhIcb0rN1=-QS&$)nQdrHvONYH-i^I?BH4aRDgQ1tA8Kdo3~L*^p0ZD{Vx-YHGQ>K*L>3yN47w#g$bb9( z04KLbCp!oJ9T8NKqIY*TX?_zG={C!=tqEBf88h$fN_$js57~6Cvuoq4d-4=V@795l zYGwTL`nFTI8*+_iZ@4&1e?#Lr$hD98-(%E@ds+~JxlO>LJv8CyV(TC@?5s0yHh3Ms z%75!{+K0?>Ye|R_rJ;Ag@&Z&a=8jjywzdS-YZORsHl?>BYSd|=?rLLF0J>uSevC<~ zBPxGcF$^=cg1eN-AJHWK>n94XIX!IrLvnv-(ec!SFJ0U&dxr#gW||5QhMDOMWD`YT z80l0@Gb%L)6D2!qhyU`I#%+NU7CF?ja~j7x1D-zp7v68bogpD3k)zakLdDI;mTrD7 z3yd`<0e@N=ffm^2&2!k->bbw>*Ew^zy*QM?;h&W$P+trugcB1V?wy<$JU&53<0_!d zH6_5~$dsorZ@#V+etFZT8Uy+F-+#Y@gmi#Qi1n@@MJd~8#$7sGtgx@GZ77eBml0XG zB9^I=x0K80{REWmKZttsdovu21gDztjC19sN$#`aDbp%Y-K339_u8%u8&wdH9_~rJ zBkMjBQXO~5x6~Px+Gm92d9yt}eh8Zc&oiK^>ZVrWp*J+%fBw9C8FhK=d~;y7ved&O z{}<`v6J7TWYo|+k>s~(Ec4~NQC(Ne%1+QNv_Zqb^_SLbEop4-$^4;QqS8W#@-M{|! z{P%N9q(hPAlatb7U)@{|hCS4)?1I7?bq{acy^b$;!Xh1x!gYmc^esN6Pcu2nb4%Jg z*>|h=zA(tfu?Bx!Kl5sA4KA^my$sKBT>Wr2^%~in3R99$h=m4UnuEz0E~8BE%c7z% znzLvsX(ZyHK(mkjVU0R>5NAD{!U2gCw1|NyP7se>Zmz||d@1FybRIEgtNE33^~akh zj<(DFM9s=VFf9&E>jUGdb$(=IUDZbu>vBqXGl zC@34WtmID%dR!U}lih{u=XX7ytUlLi8Kh6odmw(h{~G6&i^J#}`-XEHghP)fJDN~+ zp)lWUVv7cs^r~oQ6cdm08VR(KHyqD=va?9)t@CBh4~l8RODzSNSp@ePYn%n2>hyaS z$tLe&-2d{$Xf3CpcjL2Aoeo?-F`UQXpJmA39o9t*d4LMpK=$>0AroJv9Mo-7; zr|Eo2tFp7}!#M>7lGAJXSvf_xOY}0T1NYyvRAaiI4PZ1l?~7qsq$|VO^jz`A zYgPU1>Kz>&in1{$RM2pM&aHIxj(V-N7cnX-YD_zg%Elb9Cf{x3=c=_R7t$q~aG(h`CGnUC*C3 z9B(WLb(2@yDM*>E(#Z1aC&)An;W=5z-Z8+Tyn6GMO%3fNJ3!ai>hjo-lL`f zk|w2~+VM6hUNx!qx!bhs!FI9%)?^j!RCH8|(bSrzMdlL*4k0+4VHzez(HS(Tx=hc& zAjzh^6#+X_(hm9zM6C`x@LgP84tVkLBk2$;kk>`=ACg$;0q0>j=^;rfB&65YCMgBL zR(Uc>MHQ7`orXEuO-p;p&9rXsnXO2MiWpf5^&QYiWbUPX>f-wN{zG|P6{YMxz)A?+ z`JluNS6id1kc%N=evgd5t07&F*==7yLKh3PWY56a(S2Oswpkv4uq^8t+1Y-k7casXDoW8%wY%D| zN%&pxDur7b8?QE(nO>}L(Nb&Ky)DC3ihfbtYO`v+Z>bbUdq*~bH45mUq@gUT)WIMd zvqh!lX8k)%p&1TjGFg z1_{$KMxl*)d8g7bm3+z{o?X@dWboE*t;xf+QMJyPLB&*{PZW7z4BBVI@;xYC6!*rs zB4wkAe6CLH)>9$>ekJr(5m7}Lsy8``kV517N`Sjd`(^~0qIzNEoBh(1O4_kfgVXsu zgz1jPCFmNE1iLl&!BP;d8Km{hc2n8U)B zU*N4zSX>c~kdW4w<$_{^Q;C+~V9B(;_t~NsZ26cT=W6ukW+lyy+bpzqsCKgSy^$lv zyE)|;eNdqdy;IUuadHU&Z)+uTe93 zJpGq@{@{lqyG8?V0h}O-H0Zsz2O3<$q~$gg-DMZlb;Ruw6W!z^4U&M)dsp8tl~xzo z36vx`g+K01q-8K<>Mk=MKyL1_pQIMFAf%|TfAzsc{p8domer24Ah%5{EzEau3e#Da z^5*_Z#>-bR_oHdkc&ty5js^wCjHu4)}LB$@3q;-pi1V8ppr&;PJWW*dN2&9LT|Av zC?rb^Gbf^=Y|M6X8@4+z#rq(i{ie_x1t-t_mMGszY&y)boK1VUH{n=pJ!D<;q7>tI zIGs!Bek;H&qCF|jD?#3raPI25$2sW35KvdgqKT}qvL_K27q>W4d)4)LN2h&@Q>}F4 z9Ue(nN?Pmt<=um$14{;_es(bO3%50{nsS>Nj8MYtul#pnm;Py80R_qYf`%tAh?HqL zmfB@23dWq^c>139!0x6230WDM2fyAybinWC9BGFJu652)YTev$IA+YgTm^Q)^P z+ugn2t{ETjU3?g6?I{!a>|VM%kmYA7Wyi2@vPIRs4JVlI(FSPi$CAaqs$f%ia|P)1 zY+;^12myG1^66~chc2yzrb5Np_as&;#5wq>;CqyVIHF(!sJ5{&(rd3RYh>d;lV0BMBcU z1o$uZ4hqSqTeglTI8rBq3D;)7;^#-&ux(?Iva!ES%^?suc>lgqwJG<<#s&wwy<`V% z?Q7j~0Hm`y43$+?n_vE>$oR0BP<&a%z{JGVaV9&f()N(ue7sbjP(;7pfZNL4!G1^bBxvjaA}D&;;s!=^DMOqQYi$3$HVZu|*&BO%$_??$JOm)V8Bs ztntZqhvt6&T&|y!ar^zt-%4w;E+#QO!~rzaZ4TVuuWu~tenbSt=P4=sth*t&hZz97 ziHG&JyUyo>aX$cX0 z_WkF#LC`0E`mr2VqWsgJU|%(4JP;R5P=mp`)qGe0r2cX9nK;eg-5-rVY=$nuQ{cic+VVL~5VX9)W^-_MR8&+IpDE@X%5{o# z_hFaewIQIoQ{i~^`G)hW>^%MB@v6faGA*6*o9~yO>?{uiC^qT>2AYt+UvT#BO}YQ! zK}j9#hU#0g-Kk&+RHW2_b0r(ZEzHE0=e@~Ksx)eqTK8rWPgd8zf+vX`)DpDz@hvN# z1tI9ciA&bHlxp1EXT<6?N9V=?;?4G+c@Hd!WexPr*0M?j`PPH$Kc1Ib?BAqsoU6Kf z{SOA2NK8-v8ZtH7xfJU_gi*b*!Z_p8iiO{o{Q8TDeA1a`(!PC`e&=O4e7B)a#`W~x z+1B)LErBG#VEjG|4i%HrdtG?z!)AJPcg9CZM6AwI@NmV(-+o>D)|>}m28-zE0gg>} zLWk*5)h5gkitDLD_da|`;6FtbSYHoLeVZ92)a&e5F=B)?J+;*Txsy@qb_#?6l9JAl zHXC&aH-s<&7Iq?>SFlqjDj#l?oj6X)G&M_XPks8lBMY!t)4}fYW+R*zx2SOM$qiZs zcah%XDx0b@v(e|;eWC~n@%)P3!T4F$^+)5T%yYYo>LwZBfeD9bZ`?tuPL*x#H9s0x{?>$bGem)M7#-FBCsOiR2Br4McC5e zSQfcmNf_M!Yfh6>iD8YT!Ue-AtPXGVj$ZglnfTf7yS5d;7P^YbU*2vNrcVUDKp(?Z zSf0rx)L)sLCf&&>bx0)&22zZsp;kY}$5Cen$>M@)6k^k#G3e424=(5zD+Y+DkE^32Q8yd`i;rQLb@aHs?dCO7_8*_{SAO zxy0N`2K0t&&ymo$3q-Zc$LU8D8|o=rjZI8a%XmE(DLfv8MT(wzlk{j*NX>sK;}^8! zJba9=n^!!PL=Z#b|5ldW)Kt!ktIt99i<2k)xjE6Y_RG z9s|i|K`)wFtSK=uN#9NG?{l1lr2s`@tH_@Ucnu!tqtS$m+)Wv{oad zP&Pt-KO*)RA7qIX9{cHQ3?;)@Lj2w{8qO#i`;_mdFcallaYI5{KLflgS*Q^k%IO4A z!a7?ozDeS;({7kf#rP@fr$ZCA`ZB9PKcV;>0vv*qn*3LUoL!X}zztvR8zVrNjR@AMG<6&a4k6iaB>( zcDuPJ$cBRA!}MeG&Wk4;EOK7*iD)}>jpcO12&b}IYYRckbDGdRo%tw^CErIFa?)-dQ zSZ9w}kUm|FU|J@Q0Omx#ty}x7Z|#?F`_jk6kH*}8XP=Rg&aCR0T!0DAx=Kya zC4xj18F*cmyn91&x)(UqbNH8w+?M01m||KL`i#q9jMiUvXc=YHe5*7SG_|pp%WI|k zpF5&7tlqtEC?2IBC@ehT%SPwh@!G_~OFkz9)P6x7Z)eA#9%p#dE*yDY|H5xpy0a@) zCM%f#y+9xs5*!`07X87E2e3D$ed0XooI&0@eO=ApGA^Ujqq0md&&p+IB$ReBQc3GP zx{Jh@7vnJxL4~In~4J>^m)+(!L}|@`BcnS@Du_=FFd0+b~iHz zmE_e7E{9XGv0ncjL6j#Klikkjm7*C%3I@XNKWIWnZ5P`?rxoDE&KnAXQA}#A`ZEsw>?Mo+ z*_4>Jm}$=C`JOS)jhXE`xd7gc5@quw$Sd`8jKWdcRz-b_rE1r&=Nufxm*mRINl;3w zR~%gR>l}z>r6Em}5147JBfSPuH;g1EV~c_K^AE0HZ~RYyt0fg*i!z5U z55*ixRy<&L4U3)E1!r{9u-&vS`J4k|vIg6&;s1j_IO-b)mnzb8DkU?@wgBVlr4` z{mz}c&vnLfE9s)DIWe2t2a@mH+2I;Ga)LN`EbkNcye^twyvj`;1o!#X$2N1`EZ!EV@g*N{A!N3*do$L?M{dqR~z<|+)ogT9rpAb?>Lqq)kg_h&A2YteR zzu@y`QChou4xy>5fbg?tT?u@#Dh9Y{s!^kAcbfb{NQc>xU`}7ABe4HbUHXx;2v*?^7A{8Ghe*Oj=*ap z?aDmyaiCBg9X4*onVOX<7tWerx+?Ijq}{LGi0UZiS#_;}z#*~qNYV0DH2>RoWaDoT zh=YCAQ#CLZ#-#qL@(L1Z3O(i2kug}Oh+)7lzL^EFQ=cXt=*JTkk@7d^FD zIl3!X^xo9m>ne)KvgEp<&2@fz9=ksR7j%RK43fj*F3C;1Rc%mB%(D{BDPdH2dEFF<@a82_ftL5e=L&C< zRJ(t|3ea-6EL@>6XmTSwecu0re*=jQ{LC1@r1!}9M4YUDuN9o6>&kr866CMjnlFG6 z=zmMwp2y*&PjT@HA0D>raiLAGvuqOUWsvr3#acXMC%ahw-pH|yk|8D6na<~_1n7u$ z-GSxt4G3z{pLoRs`nDUf%&yM+5VIRNStZjdUd_`PD`n?!Zs7zx1g4in&?(`bF+Dix zc$7NcN_XyxsGD*AF^~OHV>weB6iN96y*qcQU@tKAkKUS@80Dnx1cG0s5a9jIqaIfr z5###RqZ(HA0WDp3^zo1k>3dJE%j$r`p~s4OF;L_mrdG1yWFhpIRvDy7|70-?@A7(j zj|nyFyX34ax#{JSDTEr!*F1gpNEe`#T)i3Eyb~bcADZR|9FtAtc?JsFghd15!HFY2 zWHZzC=d5^lH?#28=<3zn@yQ;ukOq+n7m$AZuR^q$CaLtGI)X1J^4-7Olak;Bm|nNe zwVLA!r`-$BgFvpi&X>@~5E~nXj_#?jwaOp#Ay?(j9yUK%UPeX3(3>A@ zFJ+IvlW=sPjAsAhQC^*YNI5}BO9&jdw?_AKr9*dxcy*2d-{xRM8UmNB=i$IE1FEkF zUrhgJeYG;Od+EG5H68RW4$x_r*^c?&!EK6@V~w{ivE{ez`pWmuRm@q8LgNm~o0RxI z1JbvhXyCkaN@lJr&6(Wjg?I0UhJ|}(8Orn|oL&Ya0P&oD^`F~gN4++3oaihLZCQRu zH#GaW3y3+aCqb^_L1Gmu95ZMqas5(O#ETtS=tv|9vN}wBgFmXa#)%zNKVbYjfXS`6 zZXm3aYE&tfeN7TD{?KFBi1hQ@cYZ#^xa5+}ZkJk?vW<>@afs|bqAwsfzsJR#=H1#~ zeqRAZiJaT?Jags4H_#BItw*YP+BQ5qsU7$p6wUmX4`gi)rx&AWnW;+6i6KAa;(YeI zKSURn#&c*P1`!%x_MG^?;6^&@ax*wLCoD0{zj29*S|9>A51W8kPVcMb}K#(wOJizX6EO; zAx8vZo*y%zLtF{X4sj#G266oPa`5eINC{wakg^nNg+LMv88LFm_L;R$$sfHoV~=7= z`9>L5AvPjurj%DDYCvi$aQ0xPed;@+9wU_t0?6XxTYa?2*m#7upxy)2{H%3GkN-!D zRwIlVC(wQ1eINR@OPQdGCw}k;bYOXG-o@~8P=|tgn%c#+n!fBsL{zL7l{CUEXMIqD z=)~|;g1){9`xR-Cuqu6G=y1Ohc$Y+;mVPM~;iy7f$ySZ&!-pF#M~73=8pS9z@{-^! zu~1Rr_OT@F%!!q%ac`jow0%sF1n=nt4?GM2XVv@lZkKzU5oyM$Xf>(Mt_C<te&=a?SsY}ZA+)x&m53l#-%J)#6!d_k&C=IB#K9ydfa`6=7xZZqV660hH?GbN|J=vg9D1>RLEfLN8#{@Ps<0s4cX9 z75&*%@Qd>E;grI!@?XNm0qFoy94IJaech(hX=zhGyaiWFY;B%D{BoD*FX$|BF(l)0 zK~k4S=q_543oE}z1GzS?;4lZ@|_6on;j<0K_9@!IS?1aKR8g;WMQYajwR5cK$k zjfne;w)|Z@HX|V!L6$$eixel$0MQZA6SS(2J(xmgZKCH=3594##YH{3rqfzgBcq-} z^oQ-50Uek!@HZ*{0ntFsSphWRg^H(~ekI6dK~^3E5~!ZQs%ypraYOT1!3jL=FJDPP zvkT}XG}l~N@~i9J{J>fH6Rs8mY-e+@Xr+>o@e<-Jfxbky0TqDLdV;4K#cR1p2a6sE zi;kvT7*@1N>A*xA9sjFm{~aMmL);2Fks^a05Eq*g1T0PdOW51_=%w?6`@u;(;wz1q zo1+WvS*rqhZ1K-|ZFhJ8KYYsJFjUO>U~6R0B6MaX8a}9Aq^1}nDhodomx>v;4@UYB zRRMrK2)X%!%kAqrfg1T5rk~n2BlOa#AQTaFtqHGdM9~W25CJ6mznoe=0Ot#ru7c7J z*xcO|)<)xE=W;_T_&hhGQ$8Ncx zsZ~NcT@FUUD-f3buh;;u+T8gm2aMgNPt;r1{dTBaHSIM0OfUyF-|N8Y6 z7EsAzs^R>hKaF)**STLZXEB#*SE?N(sLe1q9A4?l}}( z7^%(+Em`P+w_m~n(=^OM$R9@K_xiPoY`sJrhl5k9N{(t$1s3>h4Rs12BxjNQD2=gF&lmte*`DhM-Rh!ih|Dp48p)ELyZx!wWlY zIQ&%LQ-S|0&iOkhtBeBvcellJO1y;NMblOjuqzgPdC=U0IZ@fxb^N}aM) zR-YL7Ik=&xI{z*ut-9EjtyWNw4#?I55>l3+t`6omM2HWqM&1YEBipSxhP30hqz)J> zitV8uD<4;G;b2jMhrj7FW3h-L`Hm&r5*4|2X}~ zO@}>PO+?YKYzCqQ6-tKRLC~i1PtZv8q7QNr_~L*h=h74eDd||BzA;x*zNg{wx94oj zyt;QC@Q7*!3r$usEYq>)iAjzLOpm%VsG0`>SUM;c zi{&=FEKXgeT23DVhc>c0&9MePdp2?XFPJa&Cm@Ij#HYDx9}5CL;Cdyz@;xhMk9`nZ z<1INWX}LIJb%r%c=H=r9ZD_kvU+Hl#bA9eBQ@$V(LgLNF8ahrvM;AH|d;#`R5j-=f z&x9H$P69KGhR;xFSoJZOeniR!yoX`ca(_&uy^BT$&34;CEDmA0#_7{?e-z{0*jF0FiZ;FTbp;GJ_&#aV)}+> zoL3>r1CGYZVdn*u2KO|-*_J}`CH=|CQ)VcyN*P`%9MZ~oxoB?m+~)%3Ehw1rsQ=U+ zrb~M$s^<>%10rCU>O3>5pC?>==&;h~Fjig#@Uj^qju7#GUtrIo?&4Cd_?uyGVwQ%{ zLwK=A>b23rC&VSmao*AOw;aW(#{=xy8J*~a#50tzLGz3*bEQ5Rct2Zff$|&?0DTZz z8mIw9xhWpVF9(bdr(4MmKfR*>cVx!T4|ijGxBk(_Tw77Z2}Q9`G_zL9%U4LzufJRo zgrokD#RPrjv#3W1o61awEun5*;(UUDeUe>@IizZV+w>ZT%)8u7u0X}uXZ%PrmdW6+2-x>)lLMEM}S0{OXLO9R3Ks{iDN@PMGADT?XgCxmao$ZbstVN-xKKYR~MNGd_hP7Q1!k3;7|R#a9F2modUS0jFN!_sgvK@~4@#o%KmKXev;w;0yQ3i$*X zjqDOI*=*;Dje8IgNRvo3h=d`A3uVnr58wR3=b%siF3u-cz6%DtF8@A!4Ntk^VZ=N_ zC?+Sz#0(DtYyN%S*uRua1W_C7Pnz_o$~+Nb4+<0ti+^}CDxfyNz|YgtP-asjbPkl9 z)_HxK5&E=Hj!f1i1pZlH7iwFq(1x>201yFihm=j|G7(0SRJho^dpCgA+`4};xm4A| z=gcNm+Ms40hB>wrcLuyz~FoIB#3ka(MoQA%H z+Zm~T?reWH&)oeWIy)5w#GvY{CS5~z?&W~_6ZuxcKl~R%&fUL#cHA~v7z?`*wnE(9 znv;_foF-lJJb9x8v-;X6x6kpgY*-n|Po$J5~PiQ9Y!NS~Jc)bb1<;s7Dk6B1bW zGBr7IacYP=Gvi0zo45|n+m#^XfQ$r0-7rj=VuJLFn<0=CBFnexgK=(mc0g>|DD+AC0qIJ>aixRovranHF?0s`HC*KdGJ z2SP#z)a~s`=<%+0d2_ke3n~lyJT4R&%wD#Lq#tR6xZ|C|G|&EGYY2%!-3O$r40n7V zs6$aMjSyGxX9i7CNM$94b+o&A3{R>`rbp)Igi|_;viaD zq2SvYB3SBBVJ)Rm?AtJdljLZ{X6H;9PK7;G#t{-s@(fJ(c30PuSzD)}>GZ>c<3k() z2P{)A3*nUEWnTBqn+O~M(MZS%Lo6Mi076skAwjx_{=@H=Z6RC6ez<9cS5p&zh}zy} zO$jcPpX&hyfSZknT`}x_Oo!vKrww3FO@2RjLd0QBSl)qWHV0u`x)DVYV^v-`Il0AM zzH3Kb98O}4%p94rIx=T=26Y=aCXsOvtc9wPmR=(MPwsGe1L){GIUgq4cG^P_c_>3o z^+1pgLcAv3ke0L4kUm9ocNfZsLgRmY=;nvO)~&7|A)PhATpiW_iMIF;fzu>Y+R z88qj22#vU9V}E~EWfvqy{j&i71$rYYEsbWh{`sy0g1-r1 zprs)p9=`Be6t^E4c7SFO5PfdNIX+_V^PL zKun;Dq4>X@?Ao!-(iT2M#VaP?tlo?f)W?BHA%u7ER_G`U79Zh3x#_d7xb<(lA8)M; z41k+jucRsL);C@Ou^EuB5(^tr8w2@P@J_(fgc=RwoJ2uv+=eTB}H z{LEkYtWFM0FBu@;M@A0ieR(ugKK5p%kUgYX|2&HlZb6gMc9Y3&R+ywiV4P{3w{dC; z9a?H5Ii2QJx0^%N#oJX^$A{u1J6#Ma#E^048!@(z-OgfKqkS-MFfptiy9oxwY~4lf z%cP?!zp${EsLq@yFS(VB)6Ou`z~SCbKBgyP?QHpC?N$X}sros@kpaWq(UZh}2pIxIQwHhhn ztCB|HDs^Q^w7=rVzT#CKp4`bAC6(e3!^nRdBSrY9kwQL8WWIWfjR1)YW z1)F^h_jfOcBStcC55+HK^51yo`^Nlme#Gia&8}^A-8mX%yz8GvHgPAMI=cxmoDeLZ zlIAH*G;1_KL(;A+ZN6%}R=bQzC!0xk_g&E}ZN+X>yq_PJHm8K;#)jhAL>@!da?c%g zwO~v0Ma%V%NWcFkc)H%}@UpQ+mW0C}K>))pkvt{bVdkimbH}*hY)(k=0Wz^i6Nvo5 z<&xM|va3ypG{HpT@YZ$?gA^6mutU)K{@JNcz*T~2mrLV7bXigKmLAXgLb6I64jBk{oKy^1w109tnOFUzPfgkDBbECXCq7rdjOPndTHW>SQTc+@Q&S+Pm@VPeCXa%X3 z#W1r`m6pKDUR)~QZk_qQXCZ|qtH>e^7m+1|l6q!77d(2uteRNk>8C59xJakH6{re` zYG$mN-S&|?GmY+!)EhGf-Ij?3RGcOQw(Z4tk`K!4&PAJc`P%w-cElQgWnikmoNK_* zhGm5wP-StLV?C?B_!w#XFZj+ROb8{)ij!}NZwrx4al+g6J+yA7=330X0*hfv2Q z-Mc1Dryd^P#ds66mYS)_77TlOu{HVSzxk(feQmFTiaS=-4xy~zw}E-acL=2?W6fdS z^E=65WkN4?WqVigEMr^aw_i9+$L?|wJf8gzQEO|QQ#ZI0^q1eT3m(sqadIECiHoz_ z%~`HhoO0nMyC33%OjTdJ_@BkGnp>C&pU^WHwYofq4Zq38m;6i8jhTYEy}Ohb-EwZh zn!>Fv85Rk42#S1LBw3SQJ?o**vu(ZN)0jwfAB*DauJU^_a^qt6MY*{;^_Mu~pheHo zaC8QjkYjrNkF;QJ8Mlne8}B%PO=9mSR$B4!+egA0D`)q{fw1f)D`0R?99^fzU#yLJ z2p1SW*~95s*ltH~$Mn7sl@wNdGYkk%CGX=?N+E(j-W!4yJ!deMa2{+NsuiqHw<_XW zapi~*5O7JMGo-THa_UtNyf3Zvy4si1&h5HBR(@-W3A(M4gFUv!l8x9}b6x}z^fp%X zK0*gr;E^|*&2LIxuxec`{~u@lr?+qZaxvuO1VQzYoF3o~UcX_rszbzAD763aBdHgZ zqA@dn-nc*pp`*f>ZvL}H@^7nGuhI$;W9xe>!+a?tBC-tYK>yF{__FW=j6w@eJ*`_)3t9Q> zU7qgL8-pc960YDPIs8O9c{c8xzUv&bXFvH2Hc)JgPyfM96exM0b2|-{S{{IuoUx!I z{Z4Yz?fKM{9m8MW#57D1-`q8r#Q|G8#)dwpTv*zA@9}Lb#)i8nIo3gNIIBc2JR_zfWhk4t74+hF)Kf9&0`^!jf6e{Ag-7X0IjADcZ+ z46^^T2LvI_)7&zD+pkckYJ&LUKR*ZEf8XQqIO@uOzD8W?R`Q=A!q`i;?y9g^b#O9A zgDkK3p`P5W(sYg}Qc%!GsHoB1vG_n&r|TT^g1rUx%Bsyx^aB;@Ab^FmG#jFG^9F9d z6BAv#JwLu7`Th+#%8y}rE_=gMT~;FK_#^MhCa?$P{CLIz1?V#x`Pi0%X6j0!y(T2Q z?|(~}THA2cT?Pp`7@@7ifyZqWDQwwnejj5#_xBI1>EWv9mI6gFvk$7asNJL&dTuDq zG3u{%$wo1krt#S4hg~zIw=py*woOUY@@OV$9gAeKx^ZuKFr4jBl{o{-egoTkt!qlY z-;XqX`_&Ih=gVBSApt$v^x+X(Ymwb&nG>u4-rzC@tr@i+A9zA>F5)SkU-f@nG4$gT zV7pR|-Q8DD;~&2b3;p+RWRzGa8_HnI-5~olFf!7X(N-+0t4lc?af|#Zx%x%5AImq* zeJe^IIxt|n9qXxPLMwq~MRF|25|N)c2_76MC+L56AnwtDaCo2aIfuf=8WJH#e|*y+ zHj6o3JYJb>0SyFBfn6sNf&$^FPV^fSQ_LSA%cnD}`c-=f#G-SOF1u#zPP@s4-kkB7u0^3^E@{tx>uVB8$akf2iYasr z%P8gHa8KYBK|I)!u^Ex&;JB-XEYKglTD8~D%!Pd1Wq9~$R>3MNa@L$Dfc|>8Bpg0g ze`(*kc9vFQbL&ePhEqDrxczE|h8f1JgrI~$)K%~#(CVfXtW_xvoj7R6Gj$Ng^F)XF@FqEtVqz1H!pH^Ow`Jl*MBpDT`{*; zHF#=0tJDP(YVTSWBG|4_A`YDvh=`~Nz0Yk1@gxqrCQFf?!C?-^BSvdYwXXHC(v+WE ze&;9Vvh$}?HtzmIx6K~3E9X8a2?oFD)5x2vk44YTSMVfV;f^E5G4n(yv^N&x!R0B> zgzTJr*(kknFK3ER|6*0Xo*ok9szsk4u5m3KD^6u#xZjgXcW8)NM+@ zfL^V(UvyP_&NRY!S;?8E1kemvbUGKo*u3#Kka50HisV5xlDo4MCJP2XB38duHMAAx z@}S7zDq=Lpp-q$`#z%m4wIT#UobVZj_aR!LFs z-LSr|3@G-@LlOmA3B_P3m=xeeEzHfd^?v?g5!c-hu%F#R|M=F;$W`mOP1Y4uYdB$p(}{FK>Jp*-@ZqI2NF{;=G9VWSVz2o+hnP!%yz8IT27l%DA{ zG5}!Vk4pNpB-!&0Pu*^J?iYT2uk9iTTlJqq<=A@;UcZ1}2<5-A#J_(*`428=zCh;g zUy@7mxKUMBF^r$j=wFz2711CMMLOMl-k3zbHplW`YBT{}ZbfhE9vqF7ueiCA8TPt` ze86c{o^1_%RFb-JeEK44UHfZFBg{cU7YT9ds-ZOwg&Dx6b$E{tQQaf>CMG(Dp=0k>!Qu;p6)KKCgnLk*&AFMhpiaaw>8{t$C z4bH)d{t02N;2u+z)>P|g$&_wc)8^m-8*t8lRaKimAD#a{WqvQV_u2_xPts}9%DsYO zheNrzLJbsWmR&;(F%suJkGdhq=alOB-j)5vFzm0;CG4MsY1>F#VMF!|p zz#S;1rG-YLXm)kAA*F8FbX?~25?c;!nw-hLzHeM?Rvv<~0M}8*l(?Mdz}~AVptqOe zTO{MbTk9Lqrn-u3_~A|0ju}(s6z@t|z#D|q`a%<4w0)91>N~8z(AHI40!oDg;D~^ga{L1c76L(Hu?v z&Faw!>utHa6;!nXR^jNdAJze}Cqb*#!LePW^vXpLBvax5|HJ&$=hWyB5jRh5pf1|_ z0MH#38Nt(z+Gl3qjrb>In2l6>9jXoxok$7s2_5_k@H;H&f(Wuue@G9e;4Oow#9iJ_ z)X@ibWxc41+5`iPl=1Mx<1-knA?!^>OKn{Xpq<@*8i$ma9mPX9L}zN;J*`vpD){~F z<9Ee=de4?9ofvL@lCm5{#&_Cv@l&d)1cU#*|zcJiVdA0jmlS-GhOB~&&+%iMUY&MYwq7bU8(x^ znh%1;gGu?baLldt-j1QKKj+punjg>s1sxp`(*Su=*n53nmH#nU`GgBDKC|Crg@ieg zU-6EwW>y+t3{1fzPlEYgnu$j*+f+NeyC23R-?-Y`lB!di^XgIibKWMg_*a(Fxh^+C zWK^{(B3oJ{z-Oj--`|j`&oFX&B-nqHVa?`2wj{Z5fsCA^v*#$`^GRrlVI8gWhaAQv z?)ZlmwSH*PP35%mIKSkvB8!1VQ6o$g z!BW|wRF_8$vCaKcMXXC~#V-MXol6&E)^nX!0c3)3YH!J)2SnvP+Fw4FT8{3BWL`FS2O9T(>rDyV9Z{I->6@4U?AuKJh5$^g#1T`3^EQ)D*HZ~K-Ncr%xU zPRDJ?7Vnp@#rxSx1^ktlX@4~|f5Z}ei|im|1Uzzj>nQfd+E9oOJ$PeD%BMjn-lH@` zfX60e$_F)lV85z2hi-Nyona`3NdVIn!R)oQwbQAd{F)KP{w}~Mb)--LB9S&9I2>?| zVp2k+ItWWOiU=$jJQRlfmk0;*z8udes!jKVFAaSJ*7~U34@sP>3!?rZBek&_LDc; zioNVWBhi5t@4t`*5Qn8*+E1PN7cYqn1xLx~#uYr1vMWIn-9!Zh;xJTC2jb{(L7s~s zv4@DK!Z~+K4UWL1cc_}irIzPsF25adw5R5#Vz_Se_tUHmcyIS!eJc~Qcr$Hm4u5ipbg z@+?IRC?|@TI*o51Fr?^YM>ptwN7#3H`Y1)>yVrCe-u{iUIt`21V)3$c0ErQCm-OuR z)_O|G*o`I>1XaOL^S&rQs{>AVQy~S!R23&eA5lU$82nyhFSR_0G)0@1W$`eq$CUI% z3=0wZ-4Ltixq`V!Tv=Uh6{vz0qOW4gUuONWH&GoB#4Y-sLc1@8g zRFx)6Xqj|hdi)XE9g zvs+L5LM}p29LO+3hdEqYc~_r?g$M*||1l&~E(TcVk*akjyq}KhK3or_e<+j#KB)ss zDBOgE@5{L_T&h#>6~cPdl;**(P#GBjlYR+4lCyQj?$Z6gF(pr1ZWB zD8P5d8;KZ#_6`uGK>%8WsQj3G*rO8Q_Mn>M$<(s%;^3)uA6zKeWOl#eL}!ODv9WWx zAD?Eu_8;n+=TR$BWdc7h_0_%;aB){cc__FGL_+it84N1Q8p;7PvNZ&CQz6Yd^GZE~ z&VXq~axbfae_27YtI6V4M;6d5YYG8(sP)bls~HY}Da==U1tz~}2b{&IQ4|Ly>>?1v zRSXOB1R&kBLmxpmUg?vS6f4~`cG2PW>k7iM+v0cis0ftScV{q>3e~zx4NBsS;ULt24tZ()*;O9y}m~;Gk&{Tc2lBlbEvBy0{{|bpN>ML073kSxk0z zc1D@D2eM^mZPF_#%CANhD3V za=c)=c;;iC9IhQyw>#}4%Cmi|)+!Py&K>Le1*Da6>}sC430)3|MZ}qWIj^9iqN9sO z#VaDFckZ`b6^^{oTm$CJ$>nA;6jqx_5l)kf{s2KC{G5{wc@WsXCuV$TvBiaNHGH+4 zL+_D0qm|Y7dkuOX`by*p!+dZoSYK{%alY^Gf8MN(@o9OzMGsgwNFST4uAUz^M6V75jGr)1`he$%g#7K^fLecJ4JUE^h|yK;K(XKMI(P zah`|yzK`?Rz;x0cXgG){dFV3?ht?Pg-oM^&1SvW4N&$rX<~z4%NqzS^zA&>K)OpRh zi(d(XN^MDK&RI$b>-x5whr@uo0mo9bMf! z5cvZ?=H%JG)Pj)3%{8tHl_R{;04VL(Q1)oY^SXw3^9Lo!!*`odG%2f!o0(xyKp=@> zC^yZf^}@kSj=S|vn!@7Fr&E++%zyK92iV~}mD$a^;h^3Tw@KYi$A&aJRb}O-Hxhz~ z>i$3yr1(gz@~rR}LR^ZgYsLyNc~IgjPOBHA^3+B5QV&ZFz!rQjIWQ>O&_&Gj#uch^ zA7b1Y)UXLs<`zP1ps@j9{|8-G>Zp;o#X~!Xfqb?VSpuMi^M@xNjdtA7V~Go4yY@R& z1OeiL@E4EPKL#WF_fI?_755LSiUeX~LlyAlUO2*>q&4I3w99(}uZ4Mp^wO3rmvKLM zV|{TnV18ToCyx@w#y1AKUX!-4sHS*^rJ#==ovM_LvQ_t&H++}_CaE`|Zd%QzqG|E` z*;+J|W&I=u9Iv{Nv(1%?KF|*=K?liOdg+gCQ`M2}3cKtUU>A zT=NE_z)zp1(@rWM-j^Rv1ZO@Wd3;a9nP|Uh7FwJYx$c{uWSbh|K>-9f#&ggXbdI(a z*O+r=@2*m@EA6SWGj6fPtbyBb=EdF<{cBn-y9$8t{kwIh!IU=a3jYW}Zv?O}?o!z; ziD?RBL)P*oxK|0|_BddwrOuSEIi7#WqjBHodjY^Fr8iM8tTHD9z^j1pjr{tHHM-ZY zO&zvZ?V+VYji%2BolNL0xJ|Ut2g@feMC6WIS-l>4V>j#spe(*qN z`*)5SLeZ(A{E;qapYJEI(2RNZ5!Tl?N-8Gg-$Vo%e=@43kc@vP`N6`_O(fmE{boJ= zaRDjaf0FQ7%U|wDSzreDUsd-9Rffi6cY=iGA*=uu2K2TsEZ5X2(b|>U7qr}(70Sxe z1HphI9C;8Hrz~4Z1OdMn5&ZS}D8r;4_3r>LvF%n?Ld#P|MC896w-p<#?qXtpVjZ(a z&q!8QF^@BKjq;f+EZeul@hj-{-y75H+1^|1q#^h$>R%K@X_Aj_#3S<1G_pN8(flsXmg1A{BP5gh@dkd(lx~^^bMpO(!MCp*0?k)pGr4*D70Rd6E8zlv#yH!d= zS_Gs7q)SD*8>B({0N>nT+~NJa@Ar-W`^W!}@t%Qa;Nk4OSIjlnoY!@&wVuX&!^|@7 z`jCiDF>LNf9@GMaf2Gv+r5aI@Fj}^(k>LRmB(c9C4K(*ZZVy5SLVmNaLI{(2JS0K4 z^Pvf+-3Y()YYytqn>$8(^%g7m!ApDbx@`*dZW!M#Cy(TMkYGM_7LKcK)Es7O6|MDv z5c*I5_tO6M#L~EQ9AB@8fOBm+joHrbEYAA;MRPf-h~-IRmn47(%AD*GFGeIn6{l)a zCM)ig}&vbCe5bRt#0ObVZvHd|4#5KGN1l(^~ZwTvT= zcG<0UVSlE{NSP>+WHG~1z}{9Ch>$Dwjp??9HaL*(+yZkh->4NUpNJ}#g7p^`t?D+* z2rCS@1fUG}MnVmab&3M#^@A3A0dXu#Zv#JS*K41CzdjdL`6{0T_)rAt1Fc8i-ViRJ zxk}A?faZqeu~GnO`V)NJ{{=+MDY-?qBrtGKksA*UYcPD9>&Npb7-m*22wUnV*n3vg z9RL7)4z-sB!YcmY&7L2Cqolh-m!X~qiUaYV{K3z!{fVsoh0b41mV-#~c+#2_r9(UM zTjRR%OVQDepf2FwTB85Okk1zvi~O~)2*^+Qi(zbv3#y;>@a+y<;hbFg-={DE-7kC{ zyMqz%@w8#Z1KyAxuBce6O+;{X>L-!#oVLrg-HMS4W7N#NiY$;+P9T#E^evMr zpZ}?q7`A_Q? zoGDI7^a5ZXnLH9=sK|o7HF88&w$DAQvAsbx0QQ#F+D!ZTJ`D}Clw|Gp!f4KOH<&ln zu;6(UrP-kf%V=KL+&ooT37dU|0C5U#83L}@g)EDNDsBJK$srK544jly2F~-RUW0XP zwtJ!boskg5-uj?{fdT9>22po0k?=D%NG2hMj$E&l>&SG3ZCW|LwtSI?Dc)soL^3)i z=F@|!!h)SR%U0UwM(F?QN#Mqy^g=kOw-+pJ!074bmZbjQQ93w z1htO1cfhx*`2+B4ak<3rEZc4vqL!tvkU|Xno zLRMH5(@mpweX?b#qj(_)0$M_$WsXc_-FQl?^81uN#X@9#YLuuxT8z0SP~=7j3cgGp zUf-xRS^aazI%5vhh)9yVsQPT2_**fr5#g6Ttz5t<`S>q;zU!aUBH0Q4Y?U$w4~?ZU_HH-}ZTm6>4{ z&};9(0=ElZ?m$UX2oRH(O7cj;-WCCfP2x}f{L4+iG(Z~F?Xq|bjtqf>>H1t)<#MbV zkd!}|C6JMl_P!l8y8oV(0BEnP7MESIemaj|?i2Q#*)MfpUF~`Ea5*51c#SHjJ5%YM z>}jag#2|O1a9$o{&edPK3;;y(xI>rA6uW2wsE~{J4+lo=noGkbZ@`A6kw1-txl-?K~0Ul05rTjL6u>XTA+IJiE8mo-H zlg$(1F(yDEEzNm{oc|j&^l!WbtQuWJmZz8dFD(aqKqh;5_yH_2xUJZ^IIXXleXoKP zQY}E(^|}axK`q&c-*P$iWFoL2Tdq_S`qC0PX1;DNiq}duP^2%U=^zb8#&mMe?z|1M z1tY>ytoRRF?3LPBm~0n6DNrto^t)2+sCcU)_=v?5Z{AzO!AhGC$SDE2hcPU=F@>iQ zDHa3H0AwE|ye3+}D>x%0%$g;cNy#d9UaHvT+etz2K!oT3R}I!ycP?0DObl#IJ-8zOTiWmR57CZ$`o(6RXS9U(Kwtr?ihJKe_5!@+Q*?M@ zh(s+JiSd{VbcW>$F*@q1W4^}Eq??6 z%F5>Npm2mtzlu$9qp;!;@+9QW5t8A$S20O00nSm4b)5IJSJKi}SplxI!@uFXR3H9< zyB8Avu6PK|f&k&*9@vSg;rtKO?pxJqTNjK>y1(!`AU^#r+PQct^C(N_AF#F&$T@e^ zXu=?P-v})?jAtiLCjJwjM7y$&{l0&|(-sYzH(&ZU@UZrGSmP-K4E1>`ehSd{{rQvi z>c60ZiTv^l2zHsLa=#hkhFTw=r!@JBCqNi;e|ht~WoWkH_=8+cr3()MG2FfIM|!&y zV6ssi5Yhv#MhUc6ojI3crJ;W!PfYtI*r>2_l^URQnbazI<$9MsOKJl7zv02OfKUFy zp)EM{zals^U~?JDO=j+~Y3m2*F^Ukf>hQb3i2<$grlaeNJ1i_i6y0s9QZL>(@&RH} zIOE?-#F;G?UdaEmiJci)I-dzG6vp+M?8xrU#O*-H@;4L=ARC3mi{=i69F*~=>gR^F z1^e3K0rjk%3;_un3A1XE=j@f0TR;)GqS$oA55uaR>J>d5j#|oNot%jr0I2!Z%3nwL zI>4_KLCl%zP#|VL<`%%O`S)9!PyY>PoLsrB0A#{x08mcj>0BywM)qhQaG@|M+u@`0 zC#$ah4QMuOp0;0pe3WV5L>bnXdWm1KVc z9Lc`aD|yr{R`$1#&V;%`3t-?-TtRLFGObvXhu4X~oDc;-weC1*wf#+WWU|Auv_v4$|5IBPn)as15pRRT=sM?jo>Cb-uPBs4#eLCvve z!?Vg~kQBu$!O^Gkp3kKth&1#hsOG;(&Q-sYj@exMa2+OXAT=Df)?2$3%3>gdd-n2G z=5TYtAneWgb7jTPu0UMGOYHRl>2s%s+V*yzVhHv%e&9%ifyi!G!~9EPOQ~};36VDe zo&nfHA)w1gai%2JUh%}X-eor(`C>EMw|%s^*%^dDQt|x$|2?_=#f>yT#SuN8qf6X2 zshGmQ=+`sdfw6%T7XUwyA2!FsJPN4^zNg?}I#8NNq(28~%CrT3HpBW^=huHqfgnsiP{s!|{zP)jGSYwM zVjfKJ@plb=#DU5mNO9yR_a~ z{(<7yvyI(80qfZTBmqV)-6#iz8FKCz!-44ap)w4TN!Sk*IRk6v(BnV$X+^c-H>j(i z6e@8TI#smkv9Z(a?&0yNXcQe(1EYI+7!*Ud@SkiIxU96Wa}iy`F}Tfij*;q$cwqAJ zYdD@Sp53h&^>Gn-{p6h7;lo-6H`D?(@Gc$06<0UY4SI3NC;j9hD(P!Dw2$4TQXD6D zT6j7qOh3A%zuD+3c%mjCTAm=S`j$g~SWY;elkv_g@jN;|L=s9xwLB&%f(+S zF#WxRthZIZ>WzQ3eCv{fo-io8y1_5__Tgna@&K{>M1a& zuC^5>|I9g{v+{N>H2fVL?v=8FK6igG`=m_EquB%#AKWjg8T}tPu~E%wDT- z;@}4PRB9E3L}QX#rE~s3_=y#-1f!+E8yOghDQeaeE^BZrS zLWh}#F@~^@WuZ}dMYpkw z<4RD6tY^1;I%~@=1-8{M-!WiTdh41)?fEHPl^~kO_`^rs#3(Tb!99PC{&yc=n^7a( zj_PhJI^(NAvog9QHDGIW26uS)o}Mn3uEOc@O_cNQQmaT)F%v#L~+;&^QNC|LnSjYFfdRW z^xP{ErNB#VxwnHs@hMS~o>g!6b699-Xdt%{r$z!KH2S%_ZUIxDlJQF4Sv^-Cy^5GV zSm=uUfO5%GlVWRB|E>d*Agg$Qm;^}vSXSHl{@u21zu86_;d2cw?|ku6yMqO$`=QgvHI z)E~6Q*~5te3|YV*b-h-Q0=s`}xcwB(2`{I2?yx|dQIsMlha;4L zfTW5|ONrUt)BV)VG&$P7dCtu6HvJPzw!$B3tK~ExA|Zh6=iE6?PFF7d6C802%pXRV zPLYsYwlmA&7@H(Gbr&x7@H}mrl6@+mvvHAQG>2G0O8>-3Xp*8xE)Nge5)ID)qJZ{n zZ9#dZYcRBu8JQU?Cs%O4-{WxX-*0L99Jx%G95e~%*;si!QK&=`mAvh;j-b>{~ zL9}jxA~h+c`^R7x#HJ?Z2OTeEE?CR3qFEP{B@71C&Q$B=Ycuj&`Dj*Z=L}7zcF$Qm zI*XBK5rC1W4Siu~$Wvn8DB`B1tRVEfXl;$%o?eX?7#Gs$aY82k#e>^4DJ3Y!%Bm`M z4^MYEMF)ZrYEjnkN3*eNFJ4e>GQbI8gq{^i99gGG@S68%Y4{1N*dw_o&T8wtC?fQ& zc1=jY$0v4$ty#Iae4}|@A$OL%aQ_-o)`Q9%uY=Po85x65{@3^SgE6NjgbAi0J{CQ0 z$$#H$L4;W?Ug}eKUL-cD@Q0QxYx($oHhaElG=AK-ic7`D0ZbMVc zaIeUq8HY@&+r&DzmVr5Abv11yXP(7|b*s%`cP}q3G;DIgrfS$Or>Aew)lO2ubomQ| zRFrZzO=<@1`{C@iw|6A*Syk(!DlbVXcMBw?luJ%x^q5h4Rmt=!uqYQA(t`bR=;}@e zM(?u5QQWVUH4`M`E>Ar!86wZX%32W`6<1Z@P<9y_IFpqG8GGi^B*NKZjdGuDhsPB; znDMoBv~81Y4iON4DQ9DN$Vn(_e@L`EpfHkfi^fuaP3UA%B&aWgbLrfM6X}OmV2@hw z=dzb<^vd&2g=i6$EH>T6XO-3Ke$_61Yb=3)0m4@UK=7K~U*EH#*UGP$?E`EMf zAF5Ayluei`(xWj%`RxOqTS2&%4?4q(e8W$l8nfhF3@Vd~-ldcAa!WD@*%WZYz`k4k zm8ay}*M}QRcoZa;7vlSEAI|TOtX`A!Mi*?Cu*$qEZ%PV?`awf*_wHUKgxnU^B`=M36j9TA(Hz8H|pEf6-TLF}!?@g$S@igs%zDl`>Cq~Y_}?RWGVgaPTwTruBm~adY=3PIMF8SOpVXO9((p&Z5S8D1YY$84HB9i7`iJkc^32}o4RkUv5?)7bxA^$YzcB9L@kKay{^GI*@JotXyg81?)ZfAZ+ z_uj7^&+jyDKk@datDA;VTQIa_%de;=WnW{zMz#?@_Jv1ybwfwZ=qO@q@G3_avUaM* z@d~(^HJ>5eQBINnu$|`MN^Rr>uj5)D69aCpcc}8)PO%r4ZAGUyf3Mw`%}}q114q7r zl^7LOglca`2K$c1f<`7U`uBDie5_OJ{NW59p5K$Yas0Dqy+IJl{O3QfBqv9bS_{F| zF-+%=$wM6#V;&z=2;Ofi{U{?9m7EsQ&(E)U=$<<$JG`F_|MLaBnYa*+5~P0dY*laQ2F1+^^7lu%SC|QmIHVj;(wbLo@*gj+CwvT6m_o-h#|PL##|y z8fmA?LyKQyIwaqyTac}Qm{hg@6 z&k)3G*lymrbomnd=8{fc&;7n^w4H5HahR;Ktf;trpHpAWdr&Vd&PrGQ?9rF}nN90f z4PkON@IMYQyeWzWto)?b&S{Wul<+?wtv@-rs4C#FMhYSQ%6RAA`^gnJedxaJB-yvG z15wB%)~Bo6#dK#R!aO2OE9>_01N&>NsNp#Wx5w3?UmilAvn_EEiA%(xZ9~MlVFvS1l+aA88n$P3 zB}BEy!TOq1EeNvjjWh0!F4dkYid{Z=f{??S3P<##f9>{q)wJbJxI^fh{HM-4SafBA zhv1l{c3y~ld0tg>t@s^>P$`y)bt0r$^_qIIe+4?m-G)ZCyKvMVbNmWjxwwWiTGdrQ zouyd51G_6C#mqzl|9Rh15#8R}=~QalV+NYS6K)t-?;j}H?Io6*acE>kG*-;4nm>n0 zW~qM{9djxM!U^xR+{P=Q;z6p92FXrv@M&j;f?nzC*N-o6=P~Q@NR#wScgo-lnRan_ z99Dcjcv-}5!n?NcGh?wDjipmyR@v^+phhF*8^nI|4=%K3;*3}dvcng(7N4OhVKFVZ zeB)!Sfu{=CmTItC!aP#e>+%SqK?rX+?pPO1Aq|RweeV67wY;2MCEK`lF~sW^5ic@k zZ@w{gOXcl?I7-^eyEu)t-MGxJgRD5)W>A#1x<)$2JI#qnu`*S)0MA8UU5bRyh%RL< z12xc9*dVOIR&2fJ=ABj6R1LXoG!C!xr2-5g)2X^!dNj?n&sFt5cN#r|pd-<1&-=3+ zADCL+jxX5;%K24o?WY`dk_L<7erCz*qbqU6i}p@$3zJC zH9f<7lZP?*Q`Mfh9fUwt+FFC_gBGCowcz-BatP^n(re|$)Lzlr$#q-`63NsxBV_If zCTP)Wez$(@dgJ?VV}Z{jYy3!SAWc%vzekQn&zWay_Jtq5Qt@WAvH!J7$VIJB%9T}@ zrsF=w)nJjF>%@U@F*B=dVl^krltTe>onN`Mt-}D7tE(#^%${het!I||e5q|`T0=~a z2>dq5O%o=^fvE3ME+-Dd!;aqGB~Gy^|RXUAeXGU{!VY;ARAJy{yi9QY!(~<6im4JC48K#z$O(m z4<)*8aeb;I>YEkGOX9QjQ^PJVeg{1)_ZjnnEpIqZvX*F2u*C3zPuEjk=4eh3iTe+=Qu;FzxmZgb2cGTL9+qyS z#DWD&QTY`MPM5CQg($!D*`}yVP^}ye4mBx5DNKPPJ7g9BH#)nwdyb1PpcbNMd;KL& za1*wp`Jcqyz0AOKGQe?_1OJx8{{4FM=Zs-YT=y@Cr8LDh8(Gbm+PDebH+67&Rb7kw z@vm7p+HaF?w7=%QI)aeiw<4~%ZD8wUNKHwlAK#ae4R0x!at{}k#R|wjDSrJla_W`Z zD-4SJjgi;o?f5y+ysG@CO)H%T4rK&Wu8(C6gl$lJ-ahbdog7V+fyF(``loL#0DKb$kMRlOg^e zh~=UP>77F$2~I22eZbo|+Ka~Zq`;T5&!N6PoM6$YdGfr~ViYU?)Moi+j?xCjcX+_^ zJ7|KK8ZNnKnu;T-ll|&YM$t+3u<&=?xpQ24(os*q(R?YjzyJgj0gBLI8S{I+{AGCr z=>t#}Hfd2u>9lGnWXhx}_#{}uvU$ygu=qI81ss9&cBEtN2-yrUYk)9H6B6S149 zV$3RFV)@mTo}}65+rCotmDr#6ZXCzK0roV{e3e+kc8!QtZ#1R(8^yOX0utD#vd!A` zw#0VN2zcR~V%Mvr!Dm+XubmkVk1@Vi)zj{NJI&Pq^qNiT*^mHof`e!k-sG>+bVQRM z?#>hbvT&=cKaW5@j4_O8b0p!|@wCd7s;hyKAKlugiEd}kYOg&NYjgQ1KSnBW;eF)s z5T)#U0_0gbhvupTPn$t9nF1XZ>z-Na?h$>kL4X1NC0fNI`})VBK7hMGG_0^V;- z&qVJ<@}Pa}lCnUNxP&6@`)s9SC$VT@j$eks2EQa2W9NrID9rYEm!(+u2lky)kMJ zj?;9Kma@EK{PIpnUx_0`4pp^JYab{fNDZU}W2uDrCs*`k>7NxAx>qyFMT*#$AA& z_@SoeriPj!CK{y8OSYw$6kO!#TGf^**@5R$L;k4Jrex+0-IG+he?E@>8v&5`2KVl1SMUO_nomKn4W00;!v{ah^*kVr8@Vk+P&0Q)J{wcno%{@ z5QSs`6$>Kg7wK2c^2r43pN<5dmdbz7@hrE|1KbYE`OB+YZpLvG_m&g%*=;Jcqj`Y+ zbvkV@`0i}Ed$soPsB}WE$-2x5nX@0?>F{ldiAGwbF##rd-lR+tW55%Esoi^msS`rotg^}k;py8~EhlD%I|Xjm9*Y_3SUQ7fayN&vxIim-2WWo?Y8 z?%;gfnOMeWR<*|8TpZbF=FQTh@PZti+6u zLP-Mr<*5}I7k7E}!O~#>YUSdqwJTc7p#%SlWj(Z=oZ~K8u?7(HwZq=!looqrmZIv! z0hBkSm}GHykavk9K&&SDUFuRlvvQFSg5`7u@O>(}EF|?8EUUa~{KSjP#T`V{nUGNQkjy_*z5)3Q+ETw7$HXAUqGSTg;iztjX zUs>)hUijnF9qP0@c}K(4S*42XHqQ_c$QLU}Bf)#l8Z_|i?u4pJK?!93GT?6}TN5NQ z#n89b^u`LkONxgt3%)V(Yny&Qxo$DmW#*{CMxc|gV)v|>Lg|fg6oA^uFpGq&x_QB% z60j;yOy@)3YMN$APn?i3m)NmaI{~3TgdanmDm)wlWY{Ww4mc~}%#)k?NAYmUuj(oA zrhgu!eLrpbab&<1K5NbKA2KT_K+t~f+z z1J*|AmhgW31QnN%m#b??->q`;2r3B41WraQUt2hgY~lg%IMnaDX2D~J7;d_A!orv* zO&33E8J8^`h3B!%mwMSrhOeNw+#vL!hD+~EFUV>9KydpUN3q1Ox&sf>)G?>I=oQ{9 zVE2`q!GP%S*u;3=c8rNZ|FS44wh#dRv0^UdMWUq}4NCsIwz0im2X5@Vvno8}ur^0; zH7988SQL|nS7S;`3SOBbB*m3NCI7yRC1B&g09zCxc)(7%bCVlc&#mt95p91`k(!aS z>0NmyVrVel+{mXTG@L~jcC4rY&wZ^SNCD8m=3Ku*0qe=#Wx5m;%F$jFb$%zoHd<%9 zd|Zy_!N*6B?5&KeM;Q?2CO%^KoA7lP<@Zem11aDFQlz6V_)au;mG3z)D;1X8ak17c ztXrt|zeB}d#Ueg+Gpi-TR#-Q(Y;PBX`NE|^w7bK5lk3}PVx3$hosa6Cn9})?RloXX zv)LMQm3dN#E#+{0oA353m|#8kk8iG2a=9sk8S17h;DJL;wKj?>zRy4h z@eH7-wh$kLhS?p%IXPaGns6ag3Ktfv)o)}u@I-ab#0BswuR8Rk?5 zWgDU~$>$=TXc7Lt76~IO+ji!4HxFS}Rc7!FexOJo7JonV7+opH9*eDXi`W?jDfh=> zeLf`RepG=D=nJhMfrj&02mpBLJSFVuZ)zA?a*s-sHo2#@2`H*n>fo%`Xy=?O*W53f zkPlepaspeqPwi;+w56#@Tg_844otw6T8aJzMn7(A|1l9<(s)tCRc$3qhzNqZ@|YqR zfqC(tQwafleUv^I@_ir>kg<$owQvam&E89FaT;vJ@RMN&r%3B9zDIklRO%U_;e;jT z4AlHoe;x@!&Hv+@6CV0U^GxkH8x=C>7&%>K=6X17KFLYJk&{&t0Za3qI1EfHr^xXe zEM&zVtGURv4USI*)Do?s^0ntFSoy$l+q&o& zG72IZ2MY|TVIZwJ79_yZA+zT&_0&j3-vCb{JzwT4_NF8NSSGo)&LD0RO0*0WZY1Dl zEr0p)e7xPV*)F%^nUugl#z-GuU$Y{$$h8Hr_a4?R+brwc58S5{9M!*;A)o?`Cw%wH_W@nSFFLYf5_2j%gnY}itnL16Hu4Zw1Gt93s}lY@b-@BA zW&(4Y#$r13(z;zMt)JiAy3C8Rq82Jg5w{KN)V@^DJ34x`?1PCB@Y1u8)o4uAu)~9|p)&-*XYPNgvw(&yhIRng?v8b2@KZao$c$hd;G&%l!o0K2t=r2wUDHl;1wxqaA*)^!6vdL z+EipwJw__}9zZ#w#f`hhWz$DRRU%|GE}~@!Stox|$5JZQKAtewS3jc56!oo#kgBqh zP+)>5oK<#s1IK}*f5prC3_kwSK=c{ocf&^&l9J57)lwLIF67w301X0^(L7;lOm* zRgUI;a19(Z>=E$?v|QS(xmgjZfHkJPZiKHzbv3g_4zgGfMvYvt9@f{+jH>bMmGrEl zjQI>um1wVY%wdvPJsl7!ZcF;44mOIIXbNJ3%h0`FGVkEYYX@Y0$x_5X{IpTNQM-?5 z>FG#*UBN0%GOv1eOyYhg0w#i%+It1Pc2*ngbh0rQf$sn(C*okKd*ucr8raje>YJhP zqkc>FrC*9R@xz<8Po}(la(=f+pTdUQ*uQnMN~?g&x#|2N(YkAiii5jv?)M&Nz6p~@ zm=>Ek1Ik%!z2JTY3l{O{s(qTp3JY`8I>8~)YnoTGB*+u5`|?JrU1W{l9+g*XW!~L$ zMKB394u`Vd)~@UF*JnS44IJ-hFo9vITtejm$hj0uLZuGYsTN+=$OP7t|3Lc&P>}6J zGekn#gsU^{!{*n2{XZoqBqg{jk*O5#orM6c=oSqONBz2?+U~_pzoe9`#KNS*@^jHV zbk!|3+s|7Vkigd z3E)#+(+jF^b8N4i7=i+>sWAwZ^)-Le5zDn1L}PseZwguJUej;iSs{0hkcZ%U^K#>M z*V4GLwR2Gn^fpkZfcN_N);BipdyRxO_0t=rJsTQ=oz&ksObC;R6mOoAr+-Qb1YQa> z&&H?=HZrpd+T3pqK(*$ZG;9V`op z5SSO<2CxJnotz!ugtfZW>V48n4G)PM6j-A1)Oma!HLw!6+_$3ujGaTmpF9zaSB)Y6 z!EJp+0R@ji$^f`qeIwgBKCy&?NtPGZ&CzPu5OO1t_klq#NzMYknF4nLUTL{kRnP_7 z+=*jf3@~#Eyi!pxBnS8>_k61lZEhZk1cy;I4iV0}Ru8xlXK(PY-wQ;Iuv2>n)SMdL zgZ7s#5bs-zO>sQveC0h|_elrk1V`vlQ5SvoC*2O>$dauN1?f$S{@ypv@%Ai5ug2$4 z>1)!OwO^mE-p(Mt0(qGk!)}=_NlJ>!;H;1@0Rx7Kl1^`Eco|lv`R}Q>Lo@s%e@9*a-NP+gLr$iSp0~g7fx3e8CftMx1uA z9-Tz&6^p`23YaZv5+1}oi0>Y-a!{AfSM^_(64SuXx(w#Vm78?SwAWor@u!g9v9~G= zMtsDA`}~(IRj-rn@CLn(lqy0VT91g&oDdel0XJ7m;e|a3t)SKfj8pIg%L^#*Fq^P1 zGNw?zSO|$z^y1akE6ei8;|hb=v;={_1anA$gb0iA6}3bFY)pPZs{K3w#C1rImOp|4 zCN~h2SQ`mgDGa}(qMyCsql326M#y#X%$HNIZWX$^BA!Pq6)G>=4ZmeRI|mNvHaA-t zXLzC*d1?vRQyat`;K*J1A8ha#I zg|1oNHz0>~vU52Sii|I|R=);EXkIY8emn*I>M401pF}vuaKH(puCW!iE~Mz*Y&Qn5 z;WjeT)6~=HsHntJA#IBlaR>((Lha&37|Al#w6u}HEet=%I}qlmLHiaXgEig+);!0%LZHF6`tPj`1AWIP0UbA?P)bQQ7)4sC} zlDx&j8oo0~LBqzDpu+R;9F@7i`1rWaD+QML@7%K5S(kYJaELU(83iCs7EyWjj5v7f zZ!%LYVK<9%Pqsm%LI2ELmmoqFI;n-Mr>*F+gB18i7{iLEz|XVQyXed+?_7CZ3KIZ@=Z}*CZ*fvrR~OEc^3R{)%?6bj z)Hnjxk4OEem=%Q7pgE|{e+k|K=;kw}4y)&MtpvBR9b3!L2dSydi~3;EJk7VMhWz)x zcy>?(3iC|eD%;v3*)2lORkU@jd_jdg4wNeh!T|klwythto{_!ZW#CJMV6%D~NEmJ4 zcZa+GMqd9Pu-&-`QM|aEejvFD_M@{ItgiAdH5DXNW3*8wTDuW;3Y1KPzewq0FK^dh z4Jlq28UCOFkt}Q20l|$7JrLLJ>5USD1`7cBxJTgTOL%P1B<1CZfDVnIVk>{7l~|Kw z+Y$p`T&>7fiUb8C5=7Ynq8^@-#0jYe>y^KAu|a#yL&Ucs`g%U&=2)~%!Wz~)hj1V+ z5uGzvU{Gd)w>_>-G1k~WXqpC`5G^e&s<=dhZGYraosIH)7zzUViWlo^wnv7SLx!K0%1fT;YV#ZO!^O|EXf4|wtv+JBV+l_L(cQef|9mM=V3-} zE7U?qKo}4Q0%r6FL{zz<+@ga;C$l;w8Yh}<-)K?+VaPKxKuybn-WGD%Q=1rE-M^@T z{~~9d23@dT*$(#3wy^l}S4#jupLqLEMA09WOSBh8T)AF*H0BB4meb_;H(=Ov8+ZMI zxF6`zIKPJCcA6^>sVes*_AWHq(QNL0#tB~ipe>5 zyH7xZTJvv=Or6Q-SepFn7A1*1IvYH8m+2eux)#k#l+{}MA&pCUuR`M6)MxL%Qb8Pu z{$i4U)*2AC?!BFhdQ#*8%@4*wPiwb%1P&!X3+q)q0OlP}|E!d4ctl46b9A=bLds!= zO^SHs1mD0--%)zb&EZ8{#GixlVDM(5fk+!sMuWl`5xH!4WK2awK0-v?;YJA@4;#b* zvP+qd6AA<+88B@dJO?BP?fcOs*a?CPDw~4e9GweHf|RG$-F)I$R^|`4OI3tHkq5K* z9(lrGE7GIOw!(loq&Uqee3O(yq@IX?GLlD^3fOLWkWT__{Y)Z421R_pgPaD<&7VZ7 z-Gv5RbbsfC_Inbyh`g)t=yzECE=EL|KfM_PFz*b;&W}x9RD5glrK)r`D|E|J70{1rk*5|TW^N3;u^p2pJ8`i1O;dvbi zQpnR|mdg*JAX?9#hwA@D!-<5lRq+&;RBG&jG?LkQSFn7uHS@z&iTyB#$~+^_4C@`l z`F-{)(uSyeTsW&!H?ElicFb$h@oQ4WaDX#LV8~F%uinUM@ z2cmcG2X*+7_5v^o*fwNbA}{`FH>;Lu&ns=J>f6=B&iwEF}oSK>|17Kk$>y8o^ zet=k!RMeHAL)V*GV`GmKwu%M^jE6`_#M_v zE`*s%&l-Dhe$)Ta;vzfq`-;n699MqgVt~c&gJLLRz#&nqCNZYP{h<2+JuSb>uJD2H z>qIB%eCdfb|9)mQcYDU<{+DbtSsZ(W>kwZ5d=1n0qGkJeh}UTUn@G+c>u;ePn6`wl zNctXk&giap4t{*8g&t4-?L24`?dFq%2=Uz@W};b}z470~FLu>`3t${fF01cH_Sp7+ zMc%G?-1~oQ9{k^)IREE@KlQ`Eis}BRmHvO!N^@#v90!gA-sL!mP%g6-Cu2L%2ln-<-b5c?~w<+x1 zlN&Wg`)!!&>hDG8xnz-Jl38NXMq&Oa)LOG#UAeLqR*C!(95&BA;phzWIV`?B+j_~_ zelr~Ya9N&*Yozlq*=D>wEF)k>1D7V~PUm(imyFTkv)OsW{?DwXi^6YfQ1l7f&C$f7 z0q{KirQnFJh3a|IkLef*ohxi*AG#;i>x!8eH(qYaidI|k^)*>3s@LFptyVOBf0YTG z*yQUiWhq&cwOuvZxJ&lNuqJhDvY1IJ+Z0zI^(lFE2QlZ=eiOBRE;ACC>&+iud1vv} zQgE(6NUIk6o+{UZw@2*qXkMK_Nh@V6r~MfWSg8^nO&reZ5I1977)79AA0_YXh`%z~ zC!1O-sQse_1~ENQF{{&uWKp;ZS#FaWj}zA><(s2Lykd9kEmNI}-x_AD8TFc9$RbAx zahr5J&7bKos~=ZvGsyC{>`ABY^+Ec@Y2eD3RN-CHRDbd-A;D6fNDn-kE+6k9F`n3p zG1i*3Bgnnmf*u)l@apEfTv^_YO|;R{f+`T(Ll=ELF5kcRk<{E1i~RlD7i}73L{QlW z9htgQbriYKkw(?8yDeTS7l%WcCck`2+@KNLt|wfZ`4p!ZQQ9(Ayzr|biB9h}2cIGR zeD=OO-++h9>oGjUG!`;nJ~Of-K}^i3KFh^Qz`>@^Ejs@pk>FP^L#7F_r87t)*XtAU z+WsLR8Byx_y`)i2Tr`fytskO0yulzIj#AtZ&(mwA)bGkc@5b*Jn=5$3Vp5e3J&sh6 z#dbJ3qQ1La5l2+A_^naB-D-X(2iL(X&&1Q6t-{)1Dwl~nWvIPicqbpFxw|=k0-sq; zyd_%)Bb$Y>{$AlsILZBi*F@{B@l{YME!A7W^^3~bQ|)fCP*49~WjeD=+g*;=UJ9U>f7B%?i7+t#F6LQ3Ye8>f9)}n8fOGsy_*;lu} zF;Q*#vk4li-mZ(dSBq)cLlnO!gc_Hg>OJe@wl}zg(@Z%T3T>_kmA$+Tho^DxU<-w^ zRYIwkTWy#McT-gPw@ZBQ4`#B&t$nRiGywDeQE#s8mzT=KcivT4NDlki3^$+H?{Yg? z=CS^>XOYH3E45$DBD9{p;Jg;X;i!zfGpnx=pTuX?hBh_d6R|%(j@vS zknL8l!eYNk)!=}uzUJeF*(R45r2fc2>8xKZ-=e)N5&r=?W-^pR-)!$q@y4sCBBNs6 z#GQkdCx2M}TJx>Ch?nP|%@{8h6dd$PwsZ4-kF4l5Lz(_4lexi3G+(lL6kAO1m~TYM z2X{@4>STiWTE$^~F`}vtr0VQHd)VKdO}Rki**ymszQTJp`yGO`6pV+g80Z!ANfy39 zi^(t3P0>5-KMJAO>jRhh>MfQ!J-WKFA~saeMnSc2;_n2XDdNznvHQp7wH6=y{uHh} zqbrn}k9XExQ+F}5_VDDYi?auf=ce8$O6<~WC@ph#_S>FJNOtNq_aqm3#MYCRD3Jp$ zR(SCv^^d_9WyEx1^F(NYYkzMgQ{!{P0<_p=H}1VxQYiugNF7IL*>ZT+X1e2`$hrBP zQ4@xKntNZ(HK13rVB@@B1$VtY>N3oCZkKm zH{Lls_VR8bpX#X13jW7;cbM$07kqx0|9Ck(_~(FcT9$MD@t3IajKe<~imOre_|LM2 z7o7fSJL-l zU3CLw>tkbhS3kZ;a;IB~cl42<(0u=Hb;cmS3Y&D#jnZ;w-sXO8QBF{|g>!9Fw?(1L zS2Dxt?rOH&p)|3ZIk~}}%~-SV8e34NUye02-l&&=a~p6^Q|Mo*zTv#KB3U@Tm2S}e z!aYD`ZHojoqS(nXnyK2|@x`b|{F)=K!tK{%vnyR!o}7NMp~G_@1x7cc1F)=R{S4tC%9;mbY*zQqAw2#mg*=?xmByr<#M5 zHO>YXLMQ2@OZJvCl~1162D371KYaaCslIzsv#E(8Bu(v3wL4Sh#M|q5-3n(RI9bD5 z*~OqR-KAAD9UFGyU)rDugiCfjv4o4J49M*a$;C){T(fQ{8$2|Q;SOSxd%GplQo1NN zU$%Nww0@#Frf5Dz70#U=3&rzK9gTO$E_(i$)&<4I*T)$}y+z(IgeI|MHn8EcTLJFQ z;&a{bY}rgfn#uj4%(Qj$wmBQK;Ub-SyRD*X;jN8BEqmRv28sioikc2_-h6$P)uXL? zlO|Sop)_jF%~@#~8RLl^U%o7Yl@W1#Q(EhDQiRpqjW%3$h;F7EF2Gt$%Nex>Dn?ZYYJv~hVF;Y8Hmu(N=*e3r?iafjKbAI@L5h3( zj_zjrDj%oOgc~W}y;I$WJgEsh{_A2&(gm!8y2T^fdd=}w3ll6ui)pf7rn7%sqWZ@JH`+9JYjhPg zYhQN?#8qL7M2=WS9~1`O4c|s5JS`3^7~G^+FYAqxTG4y05;p#siT?BJ?zP#X zZR2}+?Xk`s{Ky>CYOH>p;4JQG8>y(4lad;Gd-47CMcN}YyvBXkCS@Gt6;*5N#mF0- z`-^Y&*wepym5U?^#S2?Tmqz><+U&II8)paegaj0&Vn5XQkxcg)m_Ylq@J}8Za9D79 zXSK=NdzOF;Qh8@S6ErUhdv?m8W(6+2SzFkX?uQXTX`T`Z#V=U)#1zj*RcLvUieCeT zjX8Mj++NmVQ?;gviCd$K$(VR* z!8%mBK9H&!v5*Tk1c~M_M8BpR&oS^$gE4>*Q2#@A1q`eIY^%R)`g@IVtB!^=D_GPB z5G+D#v}H8fbY~VuD(6iu7TcZVM|}hXVrbLnbQz|yx0<<;H&>vK1mwn7jtJRIUHEl3 z_YaLOTPF(!1Uz1W+~!aqKe7TYwB8hO2``tz0RRi%cb3Q7i{Lh zZ2s>LfOkEDGP_GkYcm6WpF4zZ-3dc5nl7hK6TH)uxTlfMw%AgJb4QKIM2f9w)o+Vm z>*LTBWMj6A+HtU^pY-t#=_)j%juV=bRyQJ}-?L@jwpzGqFcbIkRRe-hA;H0MZ=n>a zNe^1KJeSt_F*Ode(ilNy!`=>90t>S}{a zBcEy~R+>f#rb{(t|E>FJjEf&K$}(@E_ZQDfUQZE#{w^>4s-h>n$X<&@^gk2o|J@b< z_a2!u3TJ+?Bi3S88#-N*J*K<1&<*Q}>14D=Yy2$d-|&5R$N+$S%2QSReB}z_zn1b= zHt$Mf^{>q}Syxv#0d58nV$(Lo>lBFyr|YS{kpd3bWto#4BAgiNxl9qFS(Eh^%@4MK) z4>rW<`IB%y`42 zmxwd%yXn(rU~a$A88U8CUe$3UdBeoxh=*hFRpRT(8&X(USZaGQsthLbHN#HW!}2`5 z!8ek-RJK>AYD`SxKa7!NCDOFTI_UMa>Zhfr>x|)eetbc5S!UaM9Fu}Gu$F-No@5mU zPEz)>N3lq~?2I{JBWhZz^D?PKAIm9Ph4&5#To1l^GcfyIif62~QKP`ib+oZB9UV(e zkTAivkhmAk1e+i2?$}Oj65N;5)NFk@>M0j16Vm2T9?$HuO(vQJld>~u(I{$num zR3h6iLEMn5jYdu4|F8D0JF2O4+v|0ZQATn{Q7$S0l~IHNMnE7mWssps5JC|HB1q`H z3lSVFC@5$`5eT9PM5GD|fpA@Lv;^wVs8L5WEE`XVuBALr!Q zwRxx?#!_n#zmBLV#>dA;d44XRqU`ux+(|FPbiTmJvOOxrzE)1Fu6;Z9zRi)+ix>&~ zKHQRcBR>Aws`xb&TFXjpqmVHkUxf?yzb14`^>;x(du{BCg25k@$Fx+(uKYz1+9VM^ zK9S7q^nFx|cb>ds7dIr?E)M+8w~OyK4o)J|D1kgd_r!M3@e(pCF$P$VL;*(h^ayp`r?S z7If70`wEG+$2mdDv#UHz=bqEG`Qet#wjG*z>b1L=2(F9TjCxa7*7ub|oE<)o8sz@q z_dAfENQ&)8{-98bh_~Gxb$Z)<(v zH@*i;*gVGqSBfFRIf+J1Y5{+e3 z`!NafZnm#*!S{n{Wo_;4Pew+E6@2EjeC^+oC^K?|)q$>!vS1^ObZXKd)8Ih0O*|P) z$&1}P()^6)D;7M+aCUWOM#(e`Aupy(B@`B&xht;yu(WEQ?4+%=(R1tuqT)QB-O+_s zAiO$@DUqbK?Cc0CV5MZuTf$@qtXQ-)#EFNRos!7vS@^w;JEqK5#>{Wqru<~YA!4jE zHn{Ltz(LE@z;>>GFJ_u$4KT(4IWs-|0qB2To?$^-T4vPP7`w~R!NIA(s4wj%fD*E! z{W(&twkldQ)zDo3n%bvsrr6MhiPHc_i9{!BXm1g+)6?4qS9$7yqsM>==B2{-BIE}* zM8?MCo;*8KV6PTV`hjC^@XEEn?`kOe;>~@RBW$5tW@3_Uom8qc!#1@%kGM7jt3%M2 zC-2KqMN>Wb+J=Wcb#$bendxS_a0WflV(>iW!|kvE{LgFRR-yaMmIKw83F>fDQ*Imu z)*UdX6zxBb9!_#5Dyqrm^B8X?xeIVak7Edi+R#DCQ!-enU2Y|fi=iz?PnG2;$k%O6!A1AYe zO6|e=V!W3o{qAzwSOSVu_NtNpiv^n2E_j!H*DE++GfH_?l+3#K8#N;E7n`Q$sAsPA zRsZMG1AW0SuUlQbE8~a0$g6l8ZlU7W!L!~-_KzKhs(bm`=1TqNH$ze`Q9y8f)K+F& zrUlUF5)O-t6LekZI!E$z3O|eV-$mFAn61Q5>3raQWHYuCvoPb$`MkHOlegeVc*Ni%RzY2JdvA#VJLqatl`LLM;VJpmnU9&wVkx9sq!YF7z%#z%%1B&*IeKGl7swq^z$kOS^Pj zo*VZ<`cEezuRkr%RXwNGGW3E555QJ|nD#r%oM@%wB=YkA;~CJv5~a~s?c~yf6dRc>A&2$~%H>vOJ3LRXQN`EJ37PWg)76}qNT-9n zbW-*OCrKsjMXVj2hVfS;hwLG#h0>jAfcv4tMBbioF2?|2*OdTr7b zI^7t;3YJVaHkLhHV)@n{{qk;q8f*Tu03Q}TD$s6b2wxk=VeVgMkLzOpBp)I0yXsa}`vCVJZ7LH)CSql4 z=@vJH$VL3nDkZO_V^zuLi;{k=`9&c(XF+BQU}Kx*c`d3oZgqck;KfwvQSOZiK zvdEU`=nQ+vfIq1*392bj6#!$v$`&7GulNp4!b~CVFs8Y91f-|z*Nve+arNp|0O24H z{ta2)r;g7KBprmfs;0Kl*w_roEe*b)`a}T)0xz?|D!7UUFOQ2W&vX$X?Ws1SS#9zf zYG7msPX0uFBs${N^m~s_V<|ZNeRhOFF#z+_Ipr&PseyJX)nkyXl;EF`R?x(|K^J)+ zXv6A4hOufp<7P$+QUS#+?+_K+%BwPR9O(+N`#6^TW+E(n z>CySJV1-s&)t6ARF#%aqZ#STsIa; zNSxKS`p;$!GT}%h2ECXpiUm)~%*-@Lh$bV!{+4B0qsjXNSpDHI((2Dm6#Fnsribt) zbJSzA4t;@~O=p)Gmd{;UPNent9>BT2xO2F$w>s*bD|0>F?^JOsR{4eh7R#vQQFgc?2HAmkDkXhmaC~^=kN|jEskmMD1}VbO0~ko*DK2 z5h3ri3FLR>zE}4Y6EmHrw-A^{gp4?v`;Sm%z_1|_z6Hn%^W}Ys@gX69<2^QaE=b8` zb4H$7fOl`~R|M|4KSZ7LP@YUZIlP8a6{do7kwN=^FS8P$OAS{53PM`L-HL15gh)7p zqA=4KNk+I)be8S4#v00mj00C0mp|Mj0#F}oEzqMA_5^&6BHu?0hlIn<6N1v(%KV@_Ikiz*is~h&Xl~q6l zm%*ePg&}s5P(vfEEzcuC#`4;y6x#|Z2{I&0Z^z{e4Q0+sCYJ^6;Ns#UQd`d=kAXk< zP?LA~_fRxpwIbHQwD1NbI38_3hI)*sl{%1843T(GD_K_T9U&feO}GYU+PDwJTI9VC>?^B5q~Tohyl=f;2dAPd<+C^)_M ztrXvuEhiI?gv(S}94G16m*T{)@hZksycH4mW7W`e!MWQ=zjoJ8lndQ8vY3gK9d{Ma z@3M<{aY-b)DS&DM)IM2!2Gpf<)8$1o#e1~)cTOib<$P$}+syv^kd*lwCoH37;`#iwpn&?fenxCK8F{gjMF zycz`qzd&d7>v-asBi>ETUy^b2fza8P>XFjxA8H?EygLDUt}u4JTw(5h9}^(655ut* zHHq>Tjhwc~-y)g!R?q{W8~e3WMa3ls7p_fOGG^~5r1LYL?_tK!rg58DZr!GBwzEGL)_6(H%4m+fi=&Blvi+Z`1% z0}zcnlzDe>|1(`{TT3ZwqW9mxS%0YW;J=-+{S2!u?7`)Tq3|dy6~SYW%vmpC3?Wa* z=qttPO9wFB(f%U_m6k*SsG98iN(3|oJ^m4jZcAu9Uw!GJeXpaYD{Tec7tGl-Cg+k2 z5J4p+U^^hSC;y{)y6E+*uU|$Y^Nxr;U@)>v%_9aUX&kjmi#eX%4k;y>QC62D-dDbx zOsVbX6zY-D7mTNHesgZPEVN`EU<_ zK5ssTBh(&^M&+t3KfP4&*`%%#$n;@0q zBgCoWAghmz(!~}bv&9uEW-atkUSpr&Ta&+jvm~9moAci!MB6_zD85nC{>9(>#@+*U z`usQZ|C4_>&T&EUYHirC;qMzXIGXGOZJXi$4bR(=?S{hL$acVF6Y|#Mh-@$6w;^xt z85@x|*Q3bxW!ATYz6s)+Mtn1kZ$9Fiv)oX)dDAQ0DI3MpVn}e%*1(>~{`FkQKLLTL B;Q9an diff --git a/venia-integration-tests/src/tests/integrationTests/pageBuilder/dynamicBlock.spec.js b/venia-integration-tests/src/tests/integrationTests/pageBuilder/dynamicBlock.spec.js index 2fb7151ec7..34191906d7 100644 --- a/venia-integration-tests/src/tests/integrationTests/pageBuilder/dynamicBlock.spec.js +++ b/venia-integration-tests/src/tests/integrationTests/pageBuilder/dynamicBlock.spec.js @@ -1,12 +1,23 @@ import { graphqlMockedCalls as graphqlMockedCallsFixtures } from '../../../fixtures'; -const { getCMSPage } = graphqlMockedCallsFixtures; -describe('PWA-1170: verify pagebuilder dynamic block content is rendered correctly', () => { +const { getCMSPage, getDynamicBlocksCall } = graphqlMockedCallsFixtures; + +describe('Verify pagebuilder dynamic block content is rendered correctly', () => { it('verify dynamic block content', () => { cy.intercept('GET', getCMSPage, { fixture: 'pageBuilder/dynamicBlock/dynamicBlock.json' - }).as('getCMSMockData'); - cy.visitHomePage(); - cy.wait(['@getCMSMockData']).its('response.body'); + }).as('gqlGetCMSMockData'); + cy.intercept( + 'GET', + getDynamicBlocksCall + encodeURIComponent('mock-3') + '*', + { + fixture: 'pageBuilder/dynamicBlock/dynamicBlock-mock-3.json' + } + ).as('gqlGetDynamicBlockMock3'); + + cy.visit('/'); + cy.wait(['@gqlGetCMSMockData']).its('response.body'); + cy.wait(['@gqlGetDynamicBlockMock3']); + cy.loadFullPage().then(() => { cy.captureFullPageScreenshot({ name: 'Page Builder Dynamic Block Snapshot', From c4a2e22a4608e97f6ff70865986dafcc07a244d5 Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Mon, 6 Dec 2021 15:28:27 -0500 Subject: [PATCH 09/13] PWA-2169 Avoid rendering component if no uids is provided --- .../DynamicBlock/__tests__/configAggregator.spec.js | 9 +++++++++ .../ContentTypes/DynamicBlock/configAggregator.js | 13 +++++++++---- .../ContentTypes/DynamicBlock/dynamicBlock.ee.js | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js index 5f77c59a40..bb3f78da94 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/__tests__/configAggregator.spec.js @@ -9,6 +9,15 @@ test('dynamic block config aggregator does not render if widget block is not pre expect(aggregatedConfig).toEqual({}); }); +test('dynamic block config aggregator does not render if no uids is found', () => { + const node = document.createElement('div'); + node.innerHTML = `

`; + + const aggregatedConfig = configAggregator(node.childNodes[0]); + + expect(aggregatedConfig).toEqual({}); +}); + test('dynamic block config aggregator retrieves data and display block', () => { const node = document.createElement('div'); node.innerHTML = `
`; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js index c63eaaff40..a9b5e31c7a 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/configAggregator.js @@ -1,16 +1,21 @@ import { getAdvanced } from '../../utils'; export default node => { - if (!node.childNodes[0]) { + const widgetBlock = node.childNodes[0]; + + if ( + !widgetBlock || + (widgetBlock && !widgetBlock.getAttribute('data-uids')) + ) { return {}; } return { - displayInline: node.childNodes[0] + displayInline: widgetBlock .getAttribute('class') .includes('block-banners-inline'), - displayMode: node.childNodes[0].getAttribute('data-display-mode'), - uids: node.childNodes[0].getAttribute('data-uids'), + displayMode: widgetBlock.getAttribute('data-display-mode'), + uids: widgetBlock.getAttribute('data-uids'), ...getAdvanced(node) }; }; diff --git a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js index 504d39aad8..502e0761d0 100644 --- a/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js +++ b/packages/pagebuilder/lib/ContentTypes/DynamicBlock/dynamicBlock.ee.js @@ -58,7 +58,7 @@ const DynamicBlock = props => { const RootTag = displayInline ? 'span' : 'div'; // If no uids are found, do not render - if (uids.length === 0) { + if (!uids || (uids && uids.length === 0)) { return null; } From 53bc6edb3919b8115480b4b281da20a2b544389c Mon Sep 17 00:00:00 2001 From: mikhaelbois Date: Fri, 17 Dec 2021 08:29:06 -0500 Subject: [PATCH 10/13] PWA-2169 Fix cache clear + Add dynamic blocks in customer cache clear + Update tests --- .../clearCustomerDataFromCache.spec.js | 30 ++++++++++++++++++- .../lib/Apollo/clearCustomerDataFromCache.js | 1 + .../peregrine/lib/talons/SignIn/useSignIn.js | 2 +- .../__tests__/cmsDynamicBlock.ee.spec.js | 26 +--------------- .../CmsDynamicBlock/cmsDynamicBlock.ee.js | 16 ++-------- 5 files changed, 34 insertions(+), 41 deletions(-) diff --git a/packages/peregrine/lib/Apollo/__tests__/clearCustomerDataFromCache.spec.js b/packages/peregrine/lib/Apollo/__tests__/clearCustomerDataFromCache.spec.js index 83d1988274..6297ef730d 100644 --- a/packages/peregrine/lib/Apollo/__tests__/clearCustomerDataFromCache.spec.js +++ b/packages/peregrine/lib/Apollo/__tests__/clearCustomerDataFromCache.spec.js @@ -40,7 +40,8 @@ test('clears customer data from cache without persistor', async () => { cache.restore({ ROOT_QUERY: { anotherLocalField: { __ref: 'AnotherCacheEntry' }, - customer: { __ref: 'Customer' } + customer: { __ref: 'Customer' }, + dynamicBlocks: { __ref: 'DynamicBlocks' } }, Customer: { __typename: 'Customer', @@ -63,6 +64,18 @@ test('clears customer data from cache without persistor', async () => { } ] }, + DynamicBlocks: { + __typename: 'DynamicBlocks', + items: [ + { + __ref: 'DynamicBlock' + } + ] + }, + DynamicBlock: { + __typename: 'DynamicBlock', + uid: 'dynamicBlockUID' + }, OrderItem: { __typename: 'OrderItem', id: 'orderItemId', @@ -115,6 +128,18 @@ test('clears customer data from cache without persistor', async () => { }, ], }, + "DynamicBlock": Object { + "__typename": "DynamicBlock", + "uid": "dynamicBlockUID", + }, + "DynamicBlocks": Object { + "__typename": "DynamicBlocks", + "items": Array [ + Object { + "__ref": "DynamicBlock", + }, + ], + }, "OrderItem": Object { "__typename": "OrderItem", "id": "orderItemId", @@ -127,6 +152,9 @@ test('clears customer data from cache without persistor', async () => { "customer": Object { "__ref": "Customer", }, + "dynamicBlocks": Object { + "__ref": "DynamicBlocks", + }, }, } `); diff --git a/packages/peregrine/lib/Apollo/clearCustomerDataFromCache.js b/packages/peregrine/lib/Apollo/clearCustomerDataFromCache.js index 89793f32c9..e89fa130bd 100644 --- a/packages/peregrine/lib/Apollo/clearCustomerDataFromCache.js +++ b/packages/peregrine/lib/Apollo/clearCustomerDataFromCache.js @@ -12,6 +12,7 @@ export const clearCustomerDataFromCache = async client => { // Cached ROOT_QUERY client.cache.evict({ fieldName: 'customer' }); client.cache.evict({ fieldName: 'customerWishlistProducts' }); + client.cache.evict({ fieldName: 'dynamicBlocks' }); client.cache.gc(); diff --git a/packages/peregrine/lib/talons/SignIn/useSignIn.js b/packages/peregrine/lib/talons/SignIn/useSignIn.js index be1685ba58..8f683ee487 100644 --- a/packages/peregrine/lib/talons/SignIn/useSignIn.js +++ b/packages/peregrine/lib/talons/SignIn/useSignIn.js @@ -66,7 +66,7 @@ export const useSignIn = props => { // Clear all cart/customer data from cache and redux. await apolloClient.clearCacheData(apolloClient, 'cart'); - await apolloClient.clearCacheData(apolloClient, 'checkout'); + await apolloClient.clearCacheData(apolloClient, 'customer'); await removeCart(); // Create and get the customer's cart id. diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js index b14733881b..50091e61a7 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/__tests__/cmsDynamicBlock.ee.spec.js @@ -1,9 +1,7 @@ import React from 'react'; -import { act } from 'react-test-renderer'; import { useQuery } from '@apollo/client'; import { createTestInstance } from '@magento/peregrine'; -import { useUserContext } from '@magento/peregrine/lib/context/user'; import CmsDynamicBlock, { DYNAMIC_BLOCK_FIXED_TYPE, @@ -14,14 +12,6 @@ import CmsDynamicBlock, { const mockUids = 'uids'; const mockLocations = ['CONTENT']; -const mockRefetch = jest.fn(); - -jest.mock('react', () => ({ - ...jest.requireActual('react'), - useRef: jest.fn().mockReturnValue({ - current: false - }) -})); jest.mock('@apollo/client', () => ({ gql: jest.fn(), @@ -95,8 +85,7 @@ describe('#CmsDynamicBlock EE', () => { ] } }, - loading: false, - refetch: mockRefetch + loading: false }); }); @@ -242,17 +231,4 @@ describe('#CmsDynamicBlock EE', () => { }) ); }); - - it('refetches data when user signs in', () => { - const tree = createTestInstance(); - - // Sign in - act(() => { - useUserContext.mockReturnValueOnce([{ isSignedIn: true }]); - - tree.update(); - }); - - expect(mockRefetch).toHaveBeenCalled(); - }); }); diff --git a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js index be5435ef61..80dbd410f5 100644 --- a/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js +++ b/packages/venia-ui/lib/components/CmsDynamicBlock/cmsDynamicBlock.ee.js @@ -1,8 +1,7 @@ -import React, { useEffect, useRef } from 'react'; +import React from 'react'; import { array, oneOf, oneOfType, string } from 'prop-types'; import { gql, useQuery } from '@apollo/client'; -import { useUserContext } from '@magento/peregrine/lib/context/user'; import ErrorView from '@magento/venia-ui/lib/components/ErrorView'; import DynamicBlock from './dynamicBlock'; @@ -26,25 +25,14 @@ const getDynamicBlockType = displayMode => { const CmsDynamicBlockGroup = props => { const { displayMode, locations, uids } = props; - const [{ isSignedIn }] = useUserContext(); - const currentUserState = useRef(isSignedIn); - const type = getDynamicBlockType(displayMode); - const { loading, error, data, refetch } = useQuery(GET_CMS_DYNAMIC_BLOCKS, { + const { loading, error, data } = useQuery(GET_CMS_DYNAMIC_BLOCKS, { variables: { type, locations, uids }, fetchPolicy: 'cache-and-network', nextFetchPolicy: 'cache-first' }); - // Refecth data only when user signs in and was not already signed in - useEffect(() => { - if (currentUserState.current !== isSignedIn && isSignedIn) { - refetch(); - currentUserState.current = isSignedIn; - } - }, [isSignedIn, refetch]); - if (!data) { if (loading) { return null; From 3026a33d5e6f264c1e8d8b39506903f5eef539c3 Mon Sep 17 00:00:00 2001 From: Jeremy Charron Date: Wed, 22 Dec 2021 11:29:46 -0500 Subject: [PATCH 11/13] PWA-2227 Edit homepage styling for dynamic blocks --- .../lib/components/HomePage/homePage.module.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/venia-ui/lib/components/HomePage/homePage.module.css b/packages/venia-ui/lib/components/HomePage/homePage.module.css index c9141608b1..19d6e7bb8c 100644 --- a/packages/venia-ui/lib/components/HomePage/homePage.module.css +++ b/packages/venia-ui/lib/components/HomePage/homePage.module.css @@ -419,3 +419,15 @@ :global(.venia-home-products .slick-slider .slick-dots .slick-active > button) { background-color: hsl(205 004% 048%) !important; } + +:global(.venia-home-banner-text > div) { + flex-direction: unset !important; + justify-content: normal !important; +} + +@media (max-width: 960px) { + :global(.venia-home-banner-text > div) { + flex-direction: column !important; + justify-content: center !important; + } +} From c6c04aa148621910c2be6279103ad3e500b818ce Mon Sep 17 00:00:00 2001 From: Jeremy Charron Date: Tue, 4 Jan 2022 16:30:29 -0500 Subject: [PATCH 12/13] PWA-2227 Add label from discount data in price summary of cart --- .../discountSummary.spec.js.snap | 64 ++++++++++++++++--- .../__tests__/discountSummary.spec.js | 38 ++++++++++- .../CartPage/PriceSummary/discountSummary.js | 16 +++-- 3 files changed, 104 insertions(+), 14 deletions(-) diff --git a/packages/venia-ui/lib/components/CartPage/PriceSummary/__tests__/__snapshots__/discountSummary.spec.js.snap b/packages/venia-ui/lib/components/CartPage/PriceSummary/__tests__/__snapshots__/discountSummary.spec.js.snap index 4d19127097..f2541ae8cb 100644 --- a/packages/venia-ui/lib/components/CartPage/PriceSummary/__tests__/__snapshots__/discountSummary.spec.js.snap +++ b/packages/venia-ui/lib/components/CartPage/PriceSummary/__tests__/__snapshots__/discountSummary.spec.js.snap @@ -1,14 +1,38 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`renders "Discount applied" label if label data is empty 1`] = ` +Array [ + + Discounts applied + , + + - + + $ + + + 1 + + + . + + + 00 + + , +] +`; + exports[`renders accumulated discount value 1`] = ` Array [ - + Discounts applied , + Rebate + , + + - + + $ + + + 1 + + + . + + + 00 + + , +] +`; + exports[`renders discount summary line item correctly 1`] = ` Array [ - + Special rebate , { expect(tree.toJSON()).toMatchSnapshot(); }); + +test('renders discount label value from data ', () => { + const props = { + ...defaultProps, + data: [ + { + amount: { + value: 1, + currency: 'USD' + }, + label: 'Rebate' + } + ] + }; + const tree = createTestInstance(); + + expect(tree.toJSON()).toMatchSnapshot(); +}); + +test('renders "Discount applied" label if label data is empty', () => { + const props = { + ...defaultProps, + data: [ + { + amount: { + value: 1, + currency: 'USD' + } + } + ] + }; + const tree = createTestInstance(); + + expect(tree.toJSON()).toMatchSnapshot(); +}); diff --git a/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js b/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js index 3463d98a74..4f780ef2f4 100644 --- a/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js +++ b/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js @@ -1,5 +1,5 @@ import React, { Fragment } from 'react'; -import { FormattedMessage } from 'react-intl'; +import { useIntl } from 'react-intl'; import Price from '@magento/venia-ui/lib/components/Price'; import { useStyle } from '../../../classify'; @@ -22,6 +22,7 @@ const getDiscount = (discounts = []) => { return DEFAULT_AMOUNT; } else { return { + label: discounts[0].label, currency: discounts[0].amount.currency, value: discounts.reduce( (acc, discount) => acc + discount.amount.value, @@ -40,6 +41,14 @@ const getDiscount = (discounts = []) => { const DiscountSummary = props => { const classes = useStyle({}, props.classes); const discount = getDiscount(props.data); + const { formatMessage } = useIntl(); + + const label = discount.label + ? discount.label + : formatMessage({ + id: 'discountSummary.lineItemLabel', + defaultMessage: 'Discounts applied' + }); return discount.value ? ( @@ -47,10 +56,7 @@ const DiscountSummary = props => { className={classes.lineItemLabel} data-cy="PriceSummary-DiscountSummary-label" > - + {label} Date: Thu, 27 Jan 2022 08:30:34 -0500 Subject: [PATCH 13/13] PWA-2227 Yarn Prettier for test --- .../lib/components/CartPage/PriceSummary/discountSummary.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js b/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js index 4f780ef2f4..2853684e33 100644 --- a/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js +++ b/packages/venia-ui/lib/components/CartPage/PriceSummary/discountSummary.js @@ -46,9 +46,9 @@ const DiscountSummary = props => { const label = discount.label ? discount.label : formatMessage({ - id: 'discountSummary.lineItemLabel', - defaultMessage: 'Discounts applied' - }); + id: 'discountSummary.lineItemLabel', + defaultMessage: 'Discounts applied' + }); return discount.value ? (