From d5ae7df87047dff4e14cd18cafa2c5af94712ffa Mon Sep 17 00:00:00 2001 From: matthewlipski Date: Mon, 15 Jul 2024 17:42:55 +0200 Subject: [PATCH 1/6] Updated PDF example and WIP custom MUI example --- .../12-custom-ui/.bnexample.json | 5 +- .../03-ui-components/12-custom-ui/App.tsx | 64 ++- .../12-custom-ui/CustomFormattingToolbar.tsx | 183 -------- .../12-custom-ui/CustomSlashMenu.tsx | 62 --- .../12-custom-ui/MUIFormattingToolbar.tsx | 424 ++++++++++++++++++ .../12-custom-ui/MUISlashMenu.tsx | 154 +++++++ .../12-custom-ui/package.json | 5 +- .../03-ui-components/12-custom-ui/style.css | 131 ++++++ .../03-ui-components/12-custom-ui/styles.css | 277 ------------ .../04-pdf-file-block/.bnexample.json | 3 +- .../04-pdf-file-block/App.tsx | 3 +- .../04-pdf-file-block/PDF.tsx | 68 ++- .../04-pdf-file-block/package.json | 3 +- .../04-pdf-file-block/pdf.pdf | Bin 0 -> 156312 bytes .../04-pdf-file-block/styles.css | 9 +- .../src/suggestionMenu/SuggestionMenuItem.tsx | 5 +- .../GridSuggestionMenuItem.tsx | 5 +- .../src/suggestionMenu/SuggestionMenuItem.tsx | 5 +- .../GridSuggestionMenuItem.tsx | 5 +- packages/react/src/util/elementOverflow.ts | 8 +- .../src/suggestionMenu/SuggestionMenuItem.tsx | 6 +- .../GridSuggestionMenuItem.tsx | 5 +- playground/package.json | 5 + playground/src/examples.gen.tsx | 8 +- 24 files changed, 868 insertions(+), 575 deletions(-) delete mode 100644 examples/03-ui-components/12-custom-ui/CustomFormattingToolbar.tsx delete mode 100644 examples/03-ui-components/12-custom-ui/CustomSlashMenu.tsx create mode 100644 examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx create mode 100644 examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx create mode 100644 examples/03-ui-components/12-custom-ui/style.css delete mode 100644 examples/03-ui-components/12-custom-ui/styles.css create mode 100644 examples/06-custom-schema/04-pdf-file-block/pdf.pdf diff --git a/examples/03-ui-components/12-custom-ui/.bnexample.json b/examples/03-ui-components/12-custom-ui/.bnexample.json index 6c50d66ec7..6969cbc23a 100644 --- a/examples/03-ui-components/12-custom-ui/.bnexample.json +++ b/examples/03-ui-components/12-custom-ui/.bnexample.json @@ -4,7 +4,10 @@ "author": "matthewlipski", "tags": ["Advanced", "Inline Content", "UI Components", "Block Side Menu", "Formatting Toolbar", "Suggestion Menus", "Slash Menu", "Appearance & Styling"], "dependencies": { - "react-icons": "^5.2.1" + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", + "@mui/icons-material": "^5.16.1", + "@mui/material": "^5.16.1" }, "pro": true } \ No newline at end of file diff --git a/examples/03-ui-components/12-custom-ui/App.tsx b/examples/03-ui-components/12-custom-ui/App.tsx index f3bb61a09f..5f1ea2601b 100644 --- a/examples/03-ui-components/12-custom-ui/App.tsx +++ b/examples/03-ui-components/12-custom-ui/App.tsx @@ -1,18 +1,25 @@ import { filterSuggestionItems } from "@blocknote/core"; import "@blocknote/core/fonts/inter.css"; import { + BlockNoteViewRaw, getDefaultReactSlashMenuItems, SideMenuController, SuggestionMenuController, useCreateBlockNote, } from "@blocknote/react"; -import { BlockNoteView } from "@blocknote/mantine"; -import "@blocknote/mantine/style.css"; +import { + createTheme, + CssBaseline, + ThemeProvider, + useMediaQuery, +} from "@mui/material"; +import { useMemo } from "react"; -import { CustomFormattingToolbar } from "./CustomFormattingToolbar"; +import { MUIFormattingToolbar } from "./MUIFormattingToolbar"; import { CustomSideMenu } from "./CustomSideMenu"; -import { CustomSlashMenu } from "./CustomSlashMenu"; -import "./styles.css"; +import { MUISlashMenu } from "./MUISlashMenu"; + +import "./style.css"; export default function App() { // Creates a new editor instance. @@ -28,30 +35,45 @@ export default function App() { ], }); + const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)"); + + const theme = useMemo( + () => + createTheme({ + palette: { + mode: prefersDarkMode ? "dark" : "light", + }, + }), + [prefersDarkMode] + ); + // Renders the editor instance. return ( - - {/* Adds the custom Formatting Toolbar */} - {/* `FormattingToolbarController isn't used since the custom toolbar is + + + {/* Adds the custom Formatting Toolbar */} + {/* `FormattingToolbarController isn't used since the custom toolbar is static and always visible above the editor. */} - - {/* Adds the custom Side Menu and Slash Menu. */} - {/* These use controllers since we want them to be positioned and + + {/* Adds the custom Side Menu and Slash Menu. */} + {/* These use controllers since we want them to be positioned and show/hide the same as the default ones.*/} - - - filterSuggestionItems(getDefaultReactSlashMenuItems(editor), query) - } - suggestionMenuComponent={CustomSlashMenu} - onItemClick={(i) => i.onItemClick()} - /> - + + + filterSuggestionItems(getDefaultReactSlashMenuItems(editor), query) + } + suggestionMenuComponent={MUISlashMenu} + onItemClick={(i) => i.onItemClick()} + /> + + ); } diff --git a/examples/03-ui-components/12-custom-ui/CustomFormattingToolbar.tsx b/examples/03-ui-components/12-custom-ui/CustomFormattingToolbar.tsx deleted file mode 100644 index 04a4673512..0000000000 --- a/examples/03-ui-components/12-custom-ui/CustomFormattingToolbar.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { - useBlockNoteEditor, - useEditorContentOrSelectionChange, -} from "@blocknote/react"; -import { useState } from "react"; -import { - MdAddLink, - MdFormatAlignCenter, - MdFormatAlignJustify, - MdFormatAlignLeft, - MdFormatAlignRight, - MdFormatBold, - MdFormatColorText, - MdFormatItalic, - MdFormatUnderlined, -} from "react-icons/md"; - -import { checkBlockHasDefaultProp } from "@blocknote/core"; -import { ColorMenu } from "./ColorMenu"; -import { LinkMenu } from "./LinkMenu"; - -type CustomFormattingToolbarState = { - bold: boolean; - italic: boolean; - underline: boolean; - - textAlignment: "left" | "center" | "right" | "justify" | undefined; - - textColor: string; - backgroundColor: string; -}; - -// Custom component to replace the default Formatting Toolbar. -export function CustomFormattingToolbar() { - const editor = useBlockNoteEditor(); - - // Function to get the state of toolbar buttons (active/inactive). - // TODO: this is a bit weird, better to use useSelectedBlocks and useActiveStyles hooks - const getState = (): CustomFormattingToolbarState => { - const block = editor.getTextCursorPosition().block; - const activeStyles = editor.getActiveStyles(); - - return { - bold: (activeStyles.bold as boolean) || false, - italic: (activeStyles.italic as boolean) || false, - underline: (activeStyles.underline as boolean) || false, - - textAlignment: checkBlockHasDefaultProp("textAlignment", block, editor) - ? block.props.textAlignment - : undefined, - - textColor: (activeStyles.textColor as string) || "default", - backgroundColor: (activeStyles.backgroundColor as string) || "default", - }; - }; - - // Callback to set text alignment. - const setTextAlignment = ( - textAlignment: CustomFormattingToolbarState["textAlignment"] - ) => { - const selection = editor.getSelection(); - - if (selection) { - for (const block of selection.blocks) { - editor.updateBlock(block, { - props: { textAlignment: textAlignment }, - }); - } - } else { - const block = editor.getTextCursorPosition().block; - - editor.updateBlock(block, { - props: { textAlignment: textAlignment }, - }); - } - }; - - // Keeps track of the state of toolbar buttons. - const [state, setState] = useState(getState()); - - // Keeps track of if the color and link sub menus are open. - const [colorMenuOpen, setColorMenuOpen] = useState(false); - const [linkMenuOpen, setLinkMenuOpen] = useState(false); - - // Updates toolbar state when the editor content or selection changes. - useEditorContentOrSelectionChange(() => setState(getState()), editor); - - return ( -
- {/* Button group for toggled text styles. */} -
- {/* Toggle bold button */} - - {/* Toggle italic button */} - - {/* Toggle underline button */} - -
- {/* Button group for text alignment */} - {state.textAlignment && ( -
- {/*Left align button*/} - - {/* Center align button */} - - {/* Right align button */} - - {/* Justify text button */} - -
- )} - {/* Button group for color menu */} -
-
- - -
-
- {/* Button group for link menu */} -
-
- - -
-
-
- ); -} diff --git a/examples/03-ui-components/12-custom-ui/CustomSlashMenu.tsx b/examples/03-ui-components/12-custom-ui/CustomSlashMenu.tsx deleted file mode 100644 index e4061ef8bf..0000000000 --- a/examples/03-ui-components/12-custom-ui/CustomSlashMenu.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { - DefaultReactSuggestionItem, - SuggestionMenuProps, - useBlockNoteEditor, -} from "@blocknote/react"; - -// Custom component to replace the default Slash Menu. -export function CustomSlashMenu( - props: SuggestionMenuProps -) { - const editor = useBlockNoteEditor(); - - // Sorts items into their groups. - const groups: Record = {}; - for (const item of props.items) { - const group = item.group || item.title; - - if (!groups[group]) { - groups[group] = []; - } - - groups[group].push(item); - } - - // If query matches no items, shows "No matches" message. - if (props.items.length === 0) { - return
No matches
; - } - - return ( -
- {Object.entries(groups).map(([group, items]) => ( - // Component for each group -
- {/* Group label */} -
{group}
- {/* Group items */} -
- {items.map((item: DefaultReactSuggestionItem) => { - const Icon = item.icon; - return ( - - ); - })} -
-
- ))} -
- ); -} diff --git a/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx b/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx new file mode 100644 index 0000000000..3d77dead03 --- /dev/null +++ b/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx @@ -0,0 +1,424 @@ +import { checkBlockHasDefaultProp, DefaultBlockSchema } from "@blocknote/core"; +import { + blockTypeSelectItems, + useBlockNoteEditor, + useEditorContentOrSelectionChange, +} from "@blocknote/react"; +import { MouseEvent, useCallback, useState, useMemo } from "react"; + +import { + Done, + FormatAlignCenter, + FormatAlignLeft, + FormatAlignRight, + FormatBold, + FormatColorText, + FormatItalic, + FormatStrikethrough, + FormatUnderlined, +} from "@mui/icons-material"; +import { + AppBar, + Box, + Button, + ButtonGroup, + Container, + Divider, + FormControl, + InputLabel, + ListItemIcon, + ListItemText, + Menu, + MenuItem, + Select, + SvgIconTypeMap, + Toolbar, + Tooltip, + Typography, +} from "@mui/material"; +import { OverridableComponent } from "@mui/material/OverridableComponent"; + +const colors = [ + "default", + "red", + "orange", + "yellow", + "green", + "blue", + "purple", +] as const; + +// Custom component to replace the Block Type Select. +function MUIBlockTypeSelect(props: { + blockType: keyof DefaultBlockSchema; + setBlockType: (blockType: keyof DefaultBlockSchema) => void; + blockTypeSelectItems: ReturnType; +}) { + return ( + + `${ + theme.palette.mode === "dark" + ? theme.palette.primary.main + : theme.palette.background.default + } !important`, + borderColor: (theme) => + `${ + theme.palette.mode === "dark" + ? theme.palette.primary.main + : theme.palette.background.default + } !important`, + }, + }}> + Block Type + + + ); +} + +// Custom component to replace the default formatting toolbar buttons. +function MUIFormattingToolbarButton(props: { + tooltip: string; + selected?: boolean; + onClick: (event: MouseEvent) => void; + icon: OverridableComponent, "svg">> & { + muiName: string; + }; +}) { + const Icon = props.icon; + + return ( + + + + ); +} + +// Custom component to replace the default color picker menu. +function MUIColorMenuButton(props: { + textColor: string; + applyTextColor: (textColor: string) => void; + backgroundColor: string; + applyBackgroundColor: (backgroundColor: string) => void; +}) { + const editor = useBlockNoteEditor(); + + const [anchorEl, setAnchorEl] = useState(null); + + return ( + <> + setAnchorEl(event.currentTarget)} + icon={FormatColorText} + /> + setAnchorEl(null)}> + + Text Color + + {colors.map((color) => ( + { + setAnchorEl(null); + props.applyTextColor(color); + setTimeout(() => editor.focus()); + }}> + + + + + + {color.slice(0, 1).toUpperCase() + color.slice(1)} + + + {color === props.textColor && ( + + )} + + ))} + + + Background Color + + {colors.map((color) => ( + { + setAnchorEl(null); + props.applyBackgroundColor(color); + setTimeout(() => editor.focus()); + }}> + + + + + + {color.slice(0, 1).toUpperCase() + color.slice(1)} + + + {color === props.backgroundColor && ( + + )} + + ))} + + + ); +} + +export function MUIFormattingToolbar() { + const editor = useBlockNoteEditor(); + + const defaultBlockTypeSelectItems = useMemo( + () => blockTypeSelectItems(editor.dictionary), + [editor.dictionary] + ); + const block = editor.getTextCursorPosition().block; + const activeStyles = editor.getActiveStyles(); + + // States for the toolbar items. + const [blockType, setBlockType] = useState( + block.type + ); + + const [bold, setBold] = useState(!!activeStyles.bold); + const [italic, setItalic] = useState(!!activeStyles.italic); + const [underline, setUnderline] = useState(!!activeStyles.underline); + const [strike, setStrike] = useState(!!activeStyles.strike); + + const [textAlignment, setTextAlignment] = useState< + "left" | "center" | "right" | "justify" | undefined + >(() => + checkBlockHasDefaultProp("textAlignment", block, editor) + ? block.props.textAlignment + : undefined + ); + + const [textColor, setTextColor] = useState( + activeStyles.textColor || "default" + ); + const [backgroundColor, setBackgroundColor] = useState( + activeStyles.backgroundColor || "default" + ); + + // Updates the states when the editor content or selection changes. + useEditorContentOrSelectionChange(() => { + const block = editor.getTextCursorPosition().block; + const activeStyles = editor.getActiveStyles(); + + setBlockType(block.type); + + setBold("bold" in activeStyles); + setItalic("italic" in activeStyles); + setUnderline("underline" in activeStyles); + setStrike("strike" in activeStyles); + + setTextAlignment( + checkBlockHasDefaultProp("textAlignment", block, editor) + ? block.props.textAlignment + : undefined + ); + + setTextColor(activeStyles.textColor || "default"); + setBackgroundColor(activeStyles.backgroundColor || "default"); + }, editor); + + // Callbacks for clicking the toolbar buttons. + const applyBold = useCallback( + () => editor.toggleStyles({ bold: true }), + [editor] + ); + const applyItalic = useCallback( + () => editor.toggleStyles({ italic: true }), + [editor] + ); + const applyUnderline = useCallback( + () => editor.toggleStyles({ underline: true }), + [editor] + ); + const applyStrike = useCallback( + () => editor.toggleStyles({ strike: true }), + [editor] + ); + + const applyTextAlignment = useCallback( + (textAlignment: "left" | "center" | "right" | "justify") => { + editor.updateBlock(editor.getTextCursorPosition().block, { + props: { textAlignment }, + }); + }, + [editor] + ); + + const applyTextColor = useCallback( + (textColor: string) => + textColor === "default" + ? editor.removeStyles({ textColor }) + : editor.addStyles({ textColor }), + [editor] + ); + const applyBackgroundColor = useCallback( + (backgroundColor: string) => + backgroundColor === "default" + ? editor.removeStyles({ backgroundColor }) + : editor.addStyles({ backgroundColor }), + [editor] + ); + + return ( + + + + + + { + applyBold(); + editor.focus(); + }} + icon={FormatBold} + /> + { + applyItalic(); + editor.focus(); + }} + icon={FormatItalic} + /> + { + applyUnderline(); + editor.focus(); + }} + icon={FormatUnderlined} + /> + { + applyStrike(); + editor.focus(); + }} + icon={FormatStrikethrough} + /> + + + { + applyTextAlignment("left"); + editor.focus(); + }} + icon={FormatAlignLeft} + /> + { + applyTextAlignment("center"); + editor.focus(); + }} + icon={FormatAlignCenter} + /> + { + applyTextAlignment("right"); + editor.focus(); + }} + icon={FormatAlignRight} + /> + + + + + + + + ); +} diff --git a/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx b/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx new file mode 100644 index 0000000000..12fff0947b --- /dev/null +++ b/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx @@ -0,0 +1,154 @@ +import { + DefaultReactSuggestionItem, + elementOverflow, + SuggestionMenuProps, + useBlockNoteEditor, +} from "@blocknote/react"; +import { + Chip, + List, + ListItem, + ListItemButton, + ListItemIcon, + ListItemText, + ListSubheader, + Paper, +} from "@mui/material"; +import { useEffect, useMemo, useRef } from "react"; + +// Custom component to replace items in the default Slash Menu. +export function MUISlashMenuItem( + props: Omit, "items"> & { + item: DefaultReactSuggestionItem & { index: number }; + } +) { + const editor = useBlockNoteEditor(); + + const itemRef = useRef(null); + + // Scrolls to the item if it's detected to overflow the Slash Menu. + useEffect(() => { + if (!itemRef.current || props.item.index !== props.selectedIndex) { + return; + } + + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".MuiPaper-root:has(.slash-menu)")! + ); + + if (overflow === "top") { + itemRef.current.scrollIntoView(true); + } else if (overflow === "bottom") { + itemRef.current.scrollIntoView(false); + } + }, [props.item.index, props.selectedIndex]); + + const Icon = props.item.icon; + return ( + theme.palette.background.paper, + }}> + { + props.onItemClick?.(props.item); + editor.focus(); + }}> + {Icon} + + {props.item.badge && } + + + ); +} + +// Custom component to replace the default Slash Menu. +export function MUISlashMenu( + props: SuggestionMenuProps +) { + // Sorts items into their groups. + const groups = useMemo(() => { + const groups: Record< + string, + (DefaultReactSuggestionItem & { index: number })[] + > = {}; + for (let i = 0; i < props.items.length; i++) { + const item = props.items[i]; + const group = item.group || item.title; + + if (!groups[group]) { + groups[group] = []; + } + + groups[group].push({ ...item, index: i }); + } + + return groups; + }, [props.items]); + + // If query matches no items, shows "No matches" message. + if (props.items.length === 0) { + return ( + + + + ); + } + + return ( + + + + ); +} diff --git a/examples/03-ui-components/12-custom-ui/package.json b/examples/03-ui-components/12-custom-ui/package.json index a29e9e7d82..b85154bed8 100644 --- a/examples/03-ui-components/12-custom-ui/package.json +++ b/examples/03-ui-components/12-custom-ui/package.json @@ -18,7 +18,10 @@ "@blocknote/shadcn": "latest", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-icons": "^5.2.1" + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", + "@mui/icons-material": "^5.16.1", + "@mui/material": "^5.16.1" }, "devDependencies": { "@types/react": "^18.0.25", diff --git a/examples/03-ui-components/12-custom-ui/style.css b/examples/03-ui-components/12-custom-ui/style.css new file mode 100644 index 0000000000..d3f2c37ef2 --- /dev/null +++ b/examples/03-ui-components/12-custom-ui/style.css @@ -0,0 +1,131 @@ +@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); + +.roboto-thin { + font-family: "Roboto", sans-serif; + font-weight: 100; + font-style: normal; +} + +.roboto-light { + font-family: "Roboto", sans-serif; + font-weight: 300; + font-style: normal; +} + +.roboto-regular { + font-family: "Roboto", sans-serif; + font-weight: 400; + font-style: normal; +} + +.roboto-medium { + font-family: "Roboto", sans-serif; + font-weight: 500; + font-style: normal; +} + +.roboto-bold { + font-family: "Roboto", sans-serif; + font-weight: 700; + font-style: normal; +} + +.roboto-black { + font-family: "Roboto", sans-serif; + font-weight: 900; + font-style: normal; +} + +.roboto-thin-italic { + font-family: "Roboto", sans-serif; + font-weight: 100; + font-style: italic; +} + +.roboto-light-italic { + font-family: "Roboto", sans-serif; + font-weight: 300; + font-style: italic; +} + +.roboto-regular-italic { + font-family: "Roboto", sans-serif; + font-weight: 400; + font-style: italic; +} + +.roboto-medium-italic { + font-family: "Roboto", sans-serif; + font-weight: 500; + font-style: italic; +} + +.roboto-bold-italic { + font-family: "Roboto", sans-serif; + font-weight: 700; + font-style: italic; +} + +.roboto-black-italic { + font-family: "Roboto", sans-serif; + font-weight: 900; + font-style: italic; +} + +.text-default { + color: var(--bn-colors-editor-text); +} + +.text-red { + color: var(--bn-colors-highlights-red-text); +} + +.text-orange { + color: var(--bn-colors-highlights-orange-text); +} + +.text-yellow { + color: var(--bn-colors-highlights-yellow-text); +} + +.text-green { + color: var(--bn-colors-highlights-green-text); +} + +.text-blue { + color: var(--bn-colors-highlights-blue-text); +} + +.text-purple { + color: var(--bn-colors-highlights-purple-text); +} + +.background-red { + background-color: var(--bn-colors-highlights-red-background); +} + +.background-orange { + background-color: var(--bn-colors-highlights-orange-background); +} + +.background-yellow { + background-color: var(--bn-colors-highlights-yellow-background); +} + +.background-green { + background-color: var(--bn-colors-highlights-green-background); +} + +.background-blue { + background-color: var(--bn-colors-highlights-blue-background); +} + +.background-purple { + background-color: var(--bn-colors-highlights-purple-background); +} + +.bn-container { + display: flex; + flex-direction: column-reverse; + gap: 8px; +} \ No newline at end of file diff --git a/examples/03-ui-components/12-custom-ui/styles.css b/examples/03-ui-components/12-custom-ui/styles.css deleted file mode 100644 index 294d9864e0..0000000000 --- a/examples/03-ui-components/12-custom-ui/styles.css +++ /dev/null @@ -1,277 +0,0 @@ -.bn-container * { - font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, - "Open Sans", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", - "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -} - -.color-menu { - position: absolute; - z-index: 9999; - - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - - display: flex; - flex-direction: column; - gap: 4px; - - margin-top: 8px; - padding: 4px; -} - -.color-menu-group { - display: flex; - flex-direction: row; - gap: 4px; -} - -.color-menu-item { - position: relative; - - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - align-items: center; - display: flex; - flex-direction: row; - gap: 4px; - justify-content: center; - - padding: 0; - - height: 24px; - width: 24px; -} - -.text.red { - color: #e03e3e; -} - -.text.orange { - color: #d9730d; -} - -.text.yellow { - color: #dfab01; -} - -.text.green { - color: #4d6461; -} - -.text.blue { - color: #0b6e99; -} - -.text.purple { - color: #6940a5; -} - -.background.red { - background-color: #fbe4e4; -} - -.background.orange { - background-color: #f6e9d9; -} - -.background.yellow { - background-color: #fbf3db; -} - -.background.green { - background-color: #ddedea; -} - -.background.blue { - background-color: #ddebf1; -} - -.background.purple { - background-color: #eae4f2; -} - -.color-menu-item.text:hover { - background-color: lightgray; -} - -.color-menu-item.background:hover { - color: gray; -} - -.link-menu { - position: absolute; - z-index: 9999; - - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - - display: flex; - flex-direction: column; - gap: 4px; - - margin-top: 8px; - padding: 4px; -} - -.link-input { - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - padding: 4px; -} - -.link-buttons { - display: flex; - flex-direction: row; - gap: 4px; -} - -.link-button { - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - cursor: pointer; - - font-size: 14px; - - flex-grow: 1; -} - -.link-button:hover { - background-color: lightgray; -} - -.formatting-toolbar { - position: sticky; - z-index: 9999; - - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 8px #dddddd; - - display: flex; - flex-direction: row; - gap: 16px; - - margin-inline: 54px; - margin-bottom: 8px; - padding: 4px; - - top: 8px; -} - -.formatting-toolbar-group { - display: flex; - flex-direction: row; - gap: 4px; -} - -.formatting-toolbar-button { - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - cursor: pointer; - - font-size: 16px; - - align-items: center; - display: flex; - justify-content: center; - - height: 32px; - width: 32px; -} - -.formatting-toolbar-button:hover { - background-color: lightgray; -} - -.slash-menu { - z-index: 9999; - - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 8px #dddddd; - - display: flex; - flex-direction: column; - gap: 8px; - - padding: 8px; - - top: 8px; -} - -.slash-menu-group { - display: flex; - flex-direction: column; - gap: 8px; -} - -.slash-menu-label { - color: gray; - font-size: 12px; -} - -.slash-menu-item-group { - display: flex; - flex-direction: row; - gap: 4px; -} - -.slash-menu-item { - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - cursor: pointer; - - font-size: 16px; - - align-items: center; - display: flex; - flex-direction: row; - - padding: 8px; -} - -.slash-menu-item:hover { - background-color: lightgray; -} - -.side-menu { - background-color: white; - border: 1px solid lightgray; - border-radius: 2px; - box-shadow: 0 0 4px #dddddd; - - cursor: pointer; - - align-items: center; - display: flex; - justify-content: center; - - margin-right: 4px; - padding: 8px; -} - -.active { - box-shadow: inset 0 0 6px #cccccc; -} - -.hidden { - display: none; -} \ No newline at end of file diff --git a/examples/06-custom-schema/04-pdf-file-block/.bnexample.json b/examples/06-custom-schema/04-pdf-file-block/.bnexample.json index 3045bc5a62..77445f783c 100644 --- a/examples/06-custom-schema/04-pdf-file-block/.bnexample.json +++ b/examples/06-custom-schema/04-pdf-file-block/.bnexample.json @@ -5,7 +5,8 @@ "tags": ["Intermediate", "Blocks", "Custom Schemas", "Suggestion Menus", "Slash Menu"], "dependencies": { "@mantine/core": "^7.10.1", - "react-icons": "^5.2.1" + "react-icons": "^5.2.1", + "react-pdf": "^9.1.0" }, "pro": true } diff --git a/examples/06-custom-schema/04-pdf-file-block/App.tsx b/examples/06-custom-schema/04-pdf-file-block/App.tsx index 077b331526..5c0d5c29f2 100644 --- a/examples/06-custom-schema/04-pdf-file-block/App.tsx +++ b/examples/06-custom-schema/04-pdf-file-block/App.tsx @@ -3,6 +3,7 @@ import { defaultBlockSpecs, filterSuggestionItems, insertOrUpdateBlock, + uploadToTmpFilesDotOrg_DEV_ONLY, } from "@blocknote/core"; import "@blocknote/core/fonts/inter.css"; import { @@ -53,7 +54,7 @@ export default function App() { { type: "pdf", props: { - url: "https://pdfobject.com/pdf/sample.pdf", + url: "https://ontheline.trincoll.edu/images/bookdown/sample-local-pdf.pdf", }, }, { diff --git a/examples/06-custom-schema/04-pdf-file-block/PDF.tsx b/examples/06-custom-schema/04-pdf-file-block/PDF.tsx index f7b12e0a58..840920e064 100644 --- a/examples/06-custom-schema/04-pdf-file-block/PDF.tsx +++ b/examples/06-custom-schema/04-pdf-file-block/PDF.tsx @@ -7,23 +7,76 @@ import { ReactCustomBlockRenderProps, } from "@blocknote/react"; import { RiFilePdfFill } from "react-icons/ri"; +import "./pdf.pdf"; import "./styles.css"; +import { useCallback, useEffect, useMemo, useState } from "react"; +import { Document, Page, pdfjs } from "react-pdf"; +import "react-pdf/dist/Page/TextLayer.css"; +import "react-pdf/dist/Page/AnnotationLayer.css"; +import { DocumentCallback } from "react-pdf/dist/cjs/shared/types"; +pdfjs.GlobalWorkerOptions.workerSrc = new URL( + "pdfjs-dist/build/pdf.worker.min.mjs", + import.meta.url +).toString(); + +// Component for the PDF preview. export const PDFPreview = ( props: Omit< ReactCustomBlockRenderProps, "contentRef" > ) => { + const [document, setDocument] = useState( + undefined + ); + const [editorWidth, setEditorWidth] = useState( + () => + props.editor.domElement.firstElementChild!.getBoundingClientRect().width + ); + + // Callback to save the PDF document to state once fetched. + const onLoadSuccess = useCallback((document: DocumentCallback) => { + setDocument(document); + }, []); + + // Resizes the preview dynamically when the editor width changes. + useEffect(() => { + const observer = new ResizeObserver(() => { + setEditorWidth( + props.editor.domElement.firstElementChild!.getBoundingClientRect().width + ); + }); + observer.observe(props.editor.domElement); + }, [props.editor.domElement]); + + const renderedPages = useMemo(() => { + const renderedPages = []; + + if (document) { + for (let i = 1; i <= document.numPages; i++) { + renderedPages.push( + + ); + } + } + + return renderedPages; + }, [document, editorWidth]); + return ( - props.editor.setTextCursorPosition(props.block)} - /> + + {renderedPages} + ); }; @@ -80,3 +133,4 @@ export const PDF = createReactBlockSpec( ), } ); +PDF.implementation.node.config.selectable = false; diff --git a/examples/06-custom-schema/04-pdf-file-block/package.json b/examples/06-custom-schema/04-pdf-file-block/package.json index c423526e0c..d73023b0d6 100644 --- a/examples/06-custom-schema/04-pdf-file-block/package.json +++ b/examples/06-custom-schema/04-pdf-file-block/package.json @@ -19,7 +19,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "@mantine/core": "^7.10.1", - "react-icons": "^5.2.1" + "react-icons": "^5.2.1", + "react-pdf": "^9.1.0" }, "devDependencies": { "@types/react": "^18.0.25", diff --git a/examples/06-custom-schema/04-pdf-file-block/pdf.pdf b/examples/06-custom-schema/04-pdf-file-block/pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96beea7011a4b3e3858a0ce0f98887956c709933 GIT binary patch literal 156312 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

w;OA?y7@-$nWRE z&OD!Bk$w!RXGER4`nJ z#C7qHWpz4?=%+D`REKfLQ`+-$zTIC>%~Sj3VUZ1z%`Z%cq?&ea_6Qu?0+?;|HDh7{ zazS)-jBFNC^Ji;blL3;INs|*9ULrrwD%jVBwb}KOUg^YQG1Xqn$>*2e@9pSN66ZR{ z)j5Z#>|43ov(mHEhFJAUmSMgXOo__8|;Wcq%?Crgjt8R3j>@0gg zlRr9jH9wPV=b(IvW@+Wct&{++6*bX@D~1a>+@sId%(Z=jhEF2D6{j2uk(MapH6%Y! zhNb713Mr2xL-vdgK}+!y+YJW_^v4{;bdpz(pC=?2FKJ!dt!HgXYPgz(88|o$ftD>Q zbXd-j^yt=hkwfXr+b3RK$?}633-oY;?1f0LXDOlEg0a2tX+}6;q_?LWw2Q8(F(%qm zb+^+&$J}2UtfH>dP*l}j^4X~Nr%%0{*~~y8BSpi`@82ce5$b@tF0e?H_m9EZf))iR zyWHE&jayHRdPR9&hH>YrExg?JeCA|sh3c_AuFBZReSAl2S94c{%jGeVR@`<7$QONB z)p&3)J2iR?cdt>;J-5vaA#A$x+;~Y8)X2|M* zQJ>g!U)Wt%i24u{{k1a-p@%YC50l*H#*)PynnO0HTeuf#1~HL6|o!c0-udkg(dl5bpgfAr*C zFXQ9H4rNiH#{uh{ACOiWQ*6x8?4ou~00+lC3XCZD;nT`!m{;YDAj!83o%qYt)uwtn zRhR5Du%UWzR8h_Wt8O|kUwF>uQryP@r`@C2Z|t?Y_56iFafE7q*hFkCiz0(W8$5^F zqLboD*A@h?bf@ATomT-yU%NxizwyWW1Y-Skb)^;(dKY6x@e6lNj)~i6DC=OJBdarb zzhLh+^8SwOozX%k2yKv=G3ep1qz6O-@%cyGbdE(U*ZmS-l#?|ti?XepM` zip9iG%Z-er<^$iLqX#~~+AF)qlyH+;)Z(`=8dmK<)if&@NtFu8UFzXb65<1%%^uMP z4*7UKty&gXzB(7coYa7yeX-fHpw98RJnajB*RZF$=w)!2)6z+gXC;s!_jY}|<+gCP zv)nILkgB1=QHXrX!T$E4$OKc*Q0Y_VMWlDdB2?{w#2u38iL}!kfuUlG8f1-gSk>uO zz~Jtc5b2z@I^KkQAzKWcARUL6GV2vs_pNWuK4WqTUz|P+mnO9LkO{9ID{z$J%7FH1Fz-@Nc}gFN-~cq59{1J z+3--jfjYf~NKarWd&m4@a`oo=YhNB;rU0)g$?BNNy5w;NF70am zR97hPvyQCBq$H5dyS{p>@g6(YgX^^i&yL>m2QDjnj@3PooYg(k+1q+Xa+|~UCa5C% zzj+70{Cly^WJzuN4OQ-BG;+daBn|P%Gis{9pq$;7t@`d*fs7CJq~*(5DiOSiG=+i? zD^JT;6=M4jS7!g*}N~3AF>Hv4QhB4j&Q3* zHI|A8w@t9WQ$k&@f?H{Xslh(txi%PJDasDQx08kMqC`>(fl41>eOAVEBprz{X<&ut zSbTaKBwW=osvbdz$oerfwUuoks0khMt~0^y|79$$6ykwDYZJ zom9IKs|1!^*g%(M_Fzt+xZugDofz%kjhmcqouCWqI&G`V zj!7z5W!}=6f7CrP5@;M9HAL<*9XX|);mSaJs&edd-ya-=BY*wV@Vb#ESc82cCWhgK z`hwaYIuc4nft^ATM~6QOs;Wc|BH~Rs(){w40t35QWNmkXjeO!?X6P(!E)RKBy0U03 zMG=&Wq?+5R>ksoZ@TXItA0rU6S1_u%;Dj*8RecqG5{fW6{)}xhX&J*!e zk0sjg5F#W7b8;+96Hbhva*?yEGJ(ll@fHReqM=2zlJ{~?P0~J=N+xU_<|)#f8kvNf zG)+C8BNiA>uZk&QQx#|)YYtZD>JN5wj3C*5^5o2E*QBVFI}xO#%J&NuZy%Vk?4jH( zb2hoY!{`8&4kr2UnljXXfino}R~mO}$RPoXl~=a1red6E;JT0RP#XqnXb32pC_d6e zQk7UzF^kSH-dQ(O_Z5{oY9A5C&6>T zsZ9N%Tlx-1jcd@M!SdPiX%Url_7{o+P}vN4rhc((%8Ilg9j|^_1<8n$D5qKwYYPFl zeU`;Cdk1oU>G9PFt(~*T+* z%^+>@srHWhtCzE*EXLBt8{)aLUK(sGiumhRq^iD5S3@an2B< zSJ^UZOS7B728>xY5T(q+^W2@X>yYrc?mroq{(wK|fm{dL0I%wxe&C=jcKyo|dnK{c z2$7sfD6T2o8f%EM9Zu!9h#_fqs`D<6!5zU>nS!=KKN34NWMu-sd0hJ(Kpgq0o$v<66|cuM@ydlbYg zGOMb|f+u;hVl8D}l&*Bu2bUU}t|i;=Jo~zb%%MnqItZ9imEm_$Y1p=v=#F+DD(`(a zGQ9{&=TwwW={|NrdNHVCrmYKUa~*uCXL4D9#_Nz>uPICjtC5qG=4Xwz`J6z$@F>pqBMfo@C;os`6Pc~M-#v=wtN*n z?+03(bB3vb`)>1OwXc5z*eM!i^F|k0HnZ#UKy4AqZplg-3QCYM=^+IkrF%`6OFu@D zjK0&6d;%>`)&KOC?#Ew`TWYD+FE+wg=Itm@YMQpY-_8G_lB3?R{Q^|c1I|v-v0T%t zIO^Z#d^qb6-4{{e@ze?N>{WbN=AUn&>1#=c7&GiArzGCnbue;=R2I#JfxAb7ti}?` zWzTNz^DIXfzOx>tw@=75!8#Vuf~y(yk*SuoyAEfAaC?sa&)WK0iDB}#(uS}M`bW;g z42W-5B|g^N4xg`*McOu927Yc)hB?tbie?_<>>siSNK%Z;WMP%M z)+ea%ltg=)fXe>QRN+&Hdj#! zKV9&uRWS5$dI(KxRK#SocEe^r$H%5Q$+DneOOX`6)vCj<=cp@>&jMG8r{M ztxoCV%K$PAqqevoyO@Xhg+r1BU8u zciRG4$V{O&dGqO9HMr)`-ug}-j8PS&cU$|qw}S-vZmw+u2gNw@%MZ8lc-A=oD5|%N z>~%NYf@Yc7VwMlWrnym*tgKwuL_#B|pWU}U`>uFBxNFL^fje3#0U3&=&cZVM#XK0Iklr6GTF+%V)*u1&sYb*|M#L2bPGUj72 zP4YS$?XtNocgGu9CA>nZ6?|Jh8xUZRxL@BP-F|Zg{7R-P!js)TqPb9MSXjE+3Lg(( z%>T2Pu)#$W+-1$8l`irfST&dr$_s7#&~~r^lz2hfJKOU!d2RC%$Gr z<-KKdR#zDdsPIn35~B}TM7@09m!Y_@%znPqbcpfu%Jp4-Zez<8E0uxCOBi53YI!9vuxD6)oQMk*L#v7@=t5LQ?Ia%8(fRO%9!_G|gg;waRhiol>9 z5D&AAxrYQredAPAx}rekM0IzZt9Vp_7G{lGKK;X8TM@BClK!-y4*zw8*sSV(k+cHr z039-3>yv&JA(#aeIs2Z?>v||J*tM-PUU_QBZ_f-~8pQVb5YAXKD2%RYt>Uh+M;h^BkFJ_fdAUeAY$= z>SrdmHiV+!cCqwOMOJN*4AhNut`^d6ee~li(19W74-0jTq*Sh>^6Yvx3!ld;6|6;_ zU&?YYZdW1wLX+`s0hstobw-<<(L#B4dNe71Kd2_1hr;Xo-tqG;XJ=5YI=mpBoQ^5YvL((zJBcJX5V6n{D|kXr3nlYJ>X6-V(rnqUoDRA>LT>4 zS{LDaVTgMQs$ji%_VCB_I+@7?e_D*%gz<{)eKOFIw^TkXyvFcQ-PkgSlOroJKhRK7 zW11Gw!fqNHqFVx~>SgfR;izy>4~@3v%Ln26s&uI^H6gi>PX#b%ZpcXPFMoE_%xiBEBXxIC>OqKI1bZ%>)%suy;3T2P6a2jfU zucQ;h?WCzIX=9)3zqHk|wKCu=>Vfb=HJR{>*C17Y4U!A11SO%;M(>c9&5Nw?C=9K7EYhwr z*FC@g-cm;L!9$Zue2gI1bSbrm5lF$YElLpNFaWU~u_{J#tFMJDD)9>MK7gX(Hz3m$ z%=EE*DNFfELdctnBl;AIY`jm^EhNIJEEWA86&tl1I%3P7Zt=9+oL#A-9B2h9R4zqhUN(H}UF%>DBoa4dgHx=g0QB&lCB+oQv!pNg_dHR-I z=?vfQ^p|_%yJDFNgq#%3<)J050zVh_m=E{#9mI)=Js&fA2J;o8Nt=vjMwiQHX5)fw zBh-|bwjQszV%N-E=CWyLp-J$gvRN1fTfd5FHHf;RaA!F@$V6D(NZ1P>Dq4w0EWvr1 zNADUMA||btSot2_49&6ChpUJ?I7k1ISD7-J>|DQAlr^1NhMpb|g~bdbWDgS4D824e zvp(Ax&Npd(uxajkT6?59q;-Dj{E{H<{8HO|TfcvpY{Q|g*LkZ9s~-u(%!cPb z9{_5r{LY*af5u_&kF$x|HEE1=$~2GSZAn`2qdBd;l8&^@q*oh;T_(G%wQY zskS}eI~;Bs$JpN`Vu*T1>y(vB(pgDzyPenU!crN)3Y>5;;JMqWzy<(}#r%?mP^Vwx z>_C+}TYW$uMH>{1i8(llQ7HcMNp%%Z9ter0ov0;LSc@kdRD{wLRi-2b7sj~5BsJ@gg4jY%z{|Q`plHWUFOy+7+zL7(so|jR8JS?6)L&eVVciA8}O4e6U1?!f?3sGIwyA6d78Z2w#--h(f&u{?CB)vsY6 z)=#~XbVScS!3K)?wIXZfix6tAdS%AMnj8lMhTu3z$8?8W8(r+s*H(nnQ_HR~sD}Z- zu!07TdB`<`>3jf}?t$%4MF-T4=Gwut;jo{3>q~0t8YY`zq({6biau%-Do1nH)GuK< zveb#oDM?|LM{IL_dZDX9VfPAU3Z%#3T*kZ$-wZ`w0gX%WX4PJSycBa;?-zX9PJ;hS#mISY2L}Y)>Gv@m57V~fZo9(54FJioX`ESbz z|6cIFPBUI&{PVApi^zW@{=M#vH#a_#T!LMmyL>)=K2BzdvT$^Aurx(p#L#B8WI)gp zfhQLc2?>4;5i$`{N`qfRP>@Ve@E=hjGC`q#M8RZ&;ESk~)PFR;XmHWofd8eblar+b z%IKd(LIVFNx}XdcAp`zJ`#+lsU3Bozo`uPT|7XHNz<((f6d@D*_tqC<`e$pPC>c=n zqCIKk!eoN~M(VGke^k|UHgj@+ZON~IG_|%Q`#VrEbwoUIa&RW4b>S9HHcvppKr;Rp zmT+qurzgT9Wc<=_C&!nT4l-!uYc$Fd<@7|5j9=E$9BpA~AV?-)M8*$=+mZftei<1B zEiI_2+uvpXtn<>;0qID(2TD(PN$q6NcFstY<3%4*QvAx6DC>(3A%ap;|9CF!pKY(5 z|Lf03q1!mZdD{zSiGU~mPr};FZkn*q-Fz>4`#JgC#M`^l?zf+lJ->4DJa;Ihna2Ir zRi3-ObMS*F2R>;>J~yQvKF{@g_$&BypK2Bu-F<^2 zB*zj5x^(|^|MciQmtQNHu@r_oCtQpheLh?afLFiu<32wZ5NJI7E7G?sJwc`Z&IE^z zMiPlx1UJBW#96$jJGt7~DEio_&Oi5jrG-fR_3nJExN)qw?ykxCM{GPL8ZG}d;=mMn z_RzpX>Z)(&=u9o)l;Qe0TBVWn3;ou3e&|>ImhsrbWG=A(y{FF$?}x&;?DMm6BTs^- z_ua^)*E`9C0}mDAj_Igp-prlovSZ_>71C2KP~h{EKf)LeBHW^KRREF zuTfdU8&gk>dJ|od{I|SIDVzg}*J%{1ipPrg&2Yg0L)|jvj}PzDwA?FnsX^kA1eau& zn!PW>*Xx_e{cFj+#|#1&@xKpd z(7%lBA1n>EGj+23o1g#5tY8t5|6o?P6r&hH)P%rYxnoIx)E6N(!1$YQKj4OJH=_*y zH3x|jEot-ZAu8Zrf$g}aaNsr06%=({F;nmLZ zdmfXjpK9jCex9?RrvA)1b@DkABR2Z17dO4ZLeC)enC%FSosia)Lu}=~cM?GmSxVfo z&`Bd%2*YDf_TkEcv*kW_cIow0?+Xrp9q33vkWRFe4Sg*a+yj3(`6@E>)xqi!;?-%} z!OK4wFhk}Pc74C{uS0f1~=B7Mt(@%l8fJ zU%K!e-0nKmaZ#8=KFap=zGxr%Enp8lHm$6}YigZ=pl;US!N zt0^XA-+l{z-MvN3f1||v`m^0*zMMZTO8clUv(id8U0rbK{r&OJEGoYEKaD5?5OL@n zsFX<6 zX|O5Qp;v^=6#Mi$rVY2){rvpuvMpy7?IG%Dh zwLv3I`7g3$Egj7r;IEy~4p07;0a|En6#Qa#e)1PXYw&Ab%=i~oFJ@{7M<*E@Q->#l z{K}^PhzbM$p7EdO*Ry`W7O| zY$4KI0~WbxBm4v+OsY?kz<<#b5q$zC$;agy+wjRevTazogAle@c#uNK?`O;udQxG`J+}OzBFwPr2f-M%jA|_d+iE z7>~fwX}P7|cBf_a{D{^8wNAG)A!v{^XXYLH^r4p#^y#Z=@?kF%pifN&2}Vz3 z->F$ulzTeLfw^mOUpuWV_i24?bzDk+J%Mo7>XxW?cdYSll?Xsdt6BC9$Hgz!QilDNYJOA|!Z`)}j|s5Ec@B0udsm zFW4MN3L(N|7wj)6aKZ1Qq{0gfiV8ge{e_`_gd_}#lG4H#jY!zMs3RlojA0SprTpG4_56hYvw?D`qm>Dy|h z;NZ7!;&-BCLNbVyZNU2ncgJ6+$ecF_RX9^hhQ8@{$oKBNzt3N4VvO7N9`kK9ic33{ zDq18utuV#+5(WazeZ|q@+tW_QYrd(UI*+|3i6#v_qb7}|-e2D}1e`+}_fI12h9M6>tmN|2+tLEm&S=ns2u9t^GGI71QcWk(PM_j2nV5}qDIS!qt5 zEio`ct2qBc9P_e(oTy2jZCe>gtEesB%NtYR5WyQ`XvxDH1HJEVo35pcpOS`iRU*i< zzpvAKJU10YK)xioA#$%32H~i`eYKr=EX1p)Qm0K@#6G1E^38T8m4;L#tXBC7yjdf4 zRfpV|<)L1_h1_4|a_@$l4Jw65^#_&7Nk#LdwD@MNO~TdA5m7y(Iyv<(HE!~9-3j9*t$!rq*@_0z2{lOxnSK%gq#p=t#FYWGE-GaS#M%TIhO<&R!(FAMp>2d1u z@x9^|>@A|Bqi*o*qdY&TI9%VRcAubY+H$YmC6**Zg>RuhZjYQBK}S1d_5Y|m{$tmi z#p8d0&wqIj`X7Y719W8Fx;7fywrzCSv2EM7ZQHhOckFa*+wP=e^-X&3@0|VL``>eF ztQu1&R{tMleogZJ4`hD*RsZ)O$;$HI$ovd6 zET3=YPt<*tU+=F#_W5+}-#YtO|5xz)8+88F_f`LtgZfA2ADu6`zc&6|{#))}wm$pV zzHEM$U%o!;P+ziapSHgI{nh)o?|Q4ywM} zsV|@#qvKTJbykH0E*ADk9q1J&lwZK9!0Q}2e{w@5(kJpWAy4$2Z%htBKM`)p{K*H; z{%BQnI_N;3)pTvUI)yP2w2?juQb{f0Z4#}(X_zrmwJl8P6uvLSRbvSQSw=jU z^M9st{^n->-=SJqL|IOf|6f$_e~;AvhW~#@>c8oe z|20yxvi%nyd|~qoKVMk+!qz_+{HOc}NB>oRV(Z`XP=7J^iLWmV{>Amb$NsiI?S098 z)!Dx$tzUBgf!R-8sDC)<%MSCW%$JXUu>7C4|LT6~|6}jp?Z5uN9RK+I9EbYq|I0Q1;*bB47ye^){$ERy|6aZPC2ARcYvcdR8b?6D)=iW4b6!r% z#PF~0f{}rNL7V<_d2afdOM;^3cQpJ;OtF7v%IF34?f#v-`rG{S@HO_O`kC=^(zh}< z|*`?XKcHN15BkIJvtl*(}y=cWJ#p^?B3#K;sH9kgnJ zyT?SL73Z3sJXw&tShd;JM0#XqTieUw@>D_!B=M&?6kqIpyhWo}@ z%kI6SA*|ax=lOL1c=O@-7sET|JIN+^T!9{eKNpWM zQ?m{|23cyCeYx@R?ohf>J%F^^K^cU&({1}$z3RY4zWbr%Y0p+!>O)+^UeT*R7s`t# z4jDQaAIu+0%?OJa?{GM8G1+_}|FC`7HsQWQ?mR$zz&YZ)1HGeoqrQAT8Fw$cV@16d z*d6ZUXT$rdqMz1kk1s{Z8Ft0LEgE?82ykj>2R?=@<^%npN(A~W=Xbq$wiWI3bRG5J zyFZdWvH?Ex!up$ieFDcM!76EYW#CDZ&$d(@?q1+5l=Q)|C85%SWprY7yIY%JW=S@lgp zK}$(3E*Cuq5em$~vEjX&rgr4gf%Ag3a>$Aa3q>6XG{+D#O2U3_eXf~JGU`b%U(Pk% z=ewz zBktP!CdY(yk+iWlG&xzlHuG){$_! zUHl&IIoH57nyrxuO0IJkvG8op;al$?@7XG=TS<_|PXTFl7lpwg@+>cxBATG=f(unW zG=B(E)uGc|S`gwwKQ_N8H29LFf?w^ppZ~nm1}Fij zpJ`?n0AC{Sqv*c*%?wSE^HqToC zW_xwForT_lLaN6eVg){C>S(RtS%t(^(^C$$(`6Syk+sxr)6q*@5Dyf7Z!vTqZFE6; zO*SZN7v|l9)T(c>^y`%rx3+uQ;%S{@!4f6q6~j=H1|N`!$;<%t!w^Raoxh4A=S9v| z;?U+DpTipnjgxf26yAelHcwRWl=<;c_+zy7m#ZRqSi}7!X|`(B_#swF+lNZs?f}u} z6>uVa--?bnLxRFXNO}+y&&c@Em4*_{H%3@SZP+v&CcV;wzNRG+3BR}Lc^ITyU5{-+ zvhbnXXwYCtt>S#iOw<;AwaY(wP^#ZQ3PZ1!asUMpl! z=NrMf*Db-bvzWThqvesa&F2J#mto;uktd=^$wTrXP5z=?b|FU>)k8QZnvq)uAXI_G z6dd=|HZLASXEP6r2yi|E-&J0V!hMT^|hoe8YxU=j(miTiB0`4MEJ)T*5 z`oVnalho4GL>>5%Z{^wn*)bE%#62Mp<1fG!?V#iDwn|Rx%K^N!1xB&x%Q)Cx6fiuvhpC+AP;Ddf^ zNKo%ZEv9b9nc~2Gc`V^a z!KP%vK+V$Keq0o5+*a_a@|QBBvQ*EWqx>P=glULo;rKGU`kPd7Ld17o-WYV%*RU1e z8mg#^7>o8)CBddhqd584hHABijMS{U`-(^o9n26u#J1$%VEc1dHmhB7axQ17dK;_7 zf$z!)fRol>0dU*C<=%mQJn*TCFa9B!%<@E_h1G@flHrurMA~(j1Bn0;1HShGP6|4| z&&;O{M~i2TDK93%Y)9OIBih{=l;syPe&cgN=n9;{zl{YdB#QfHib|q7fI^q8ZBZ~Z zFpzNCXe+l%nm#A0F?vud3+Bnz8;^if+-f(XbCd@%!1u&w8>H=03-3~`c*tdzdpU3^G;lc&P{K{= zu5Tof*o%lU3Wh~AAbzETba4sy5D*eE9ZcB=?*%ck6Vh!&v>{67PkQE-;->=|+O03J z5hg|VQ3Szx9MbL2V8&Ne^+Pk5=ajgV5#|;iK2*Pi7-ktRIsX|*ukHB&z*jKdZW}-^ zo{N5kjqlnz^h)6*Zt2Zhe`gPnqNEO_*MCM+)a5*MU`9ih-pv2GMgP^VP9G!47JdR- ztM6q>C#`5y3#F*+>h}O9fIbh$c}U1Ygac1`84~a5BxrmWx50-IWMN1dHe)x9UAw&T|5jPeK9L^vK&o27k+OhK*eq15B(b5n$wiC_upgHKDhd4)^c;z zmRG&%p1*HcB$-T$S;SuhiYwm%R+tLpB-t0E)hDo9)un7mg)Xq3$a5%&m$G zAguNjEb=@Mm=2SitirbMXo`B+DE2Vf7i&@(PlGly83?l~Nax{ZW>C(vHl9EB- z&#l~KCa*DWSOCAfbey?*xMWTnwZ9aTNA0R}D{@TESY2kQY$+IvMjxO+ z2Sz~$ZVJ`w!DauvWMHlSWX;`i@^qfi7o2Cp6rDb$V|LC$**XZUvH1V8;C^63Hn=AM3! zTzAlr-hf@2C(zaxO!p6r&n+g`0}O}v*|XbD`?0tGX3s!Rpx}->*BzJ70UN2msL#CI z9|%^ijTZ*sqYM93W6jIGQbr?W|MD0;a36G zH31C|GOh(yb-v$mXRScA!dkC%?LNSc!EST`i-L=pB9Xq^EiYlaZjM@Y;lXps?oz z@}=*Oi1DQ7rgA*!*hlfC z?)%HKV@BdO=})#Fo~|;EY-OX+eEt3@Pq1<;VT96+6hJ+ZtpnRb>xovH3TEpI;1!1F zLkELWG84Nhqa?H>wverRMUB>qbC@>KS~z2G{MZ^Iufn6c!=xyuL@VZ9@L}9D5wzL< zGA1_>&D3cxg{1z~qBqu}*W5oBqC0?Q!GG-%=kx}OZuk?!cL0Toq=Lakp@CoFS3}_h zS$|tXU=O30nTS#a#nR8j&BaYah6mNyzw=_0vR@3};Qt9$Mv&@%;P_fg@CHv!#IU`yJ&L~hywE`COUox8X#;C#`it6@2ISTSQTjT zTG20a_F#+UAru9{jFT)QzK8XKI_};4ouC`-M0zV}7ZjckRsuU|sFG(>f^RJfHBgtW zl@w}983k|EY9{O41ghcLh;*usIU2x*6wya8L1Zq1r+)M>vBX~u-o zqP*|9<%_S;hkRWG$4n0)V^*8ea%{v;wZvS795PtPF7_Rh)H`xO?eW)PJhv*|@7P{a zGZ}1J6CDivcg%SzcHVBui+~ri)xq;De_wn|IgAnWA2nE9<1-=OVN%zh(reVp1{Trw z4g!(Mk>MIaCk?8NuCbESXDBMw@Y2{pAF=F+2wgPziRI zuhS0(GCz4UCjPz;nLe{`7MRTvb&7QfHV`Uv;C<4Zd=}7+V#+JPSSN*`0UC+bGGQ_a z4%3i)jz^d~CpdZ>SDzlY(p#iEf@h8@{i;Rj^y!=teM9_Xu9d05P%i3fqe? zK{ET}w*z=CSv9O;f1|ip$|VR5p%Mtl3yNkNuB1#Pp#k#Mi*tc%1P7;d7LDl>25LZH zh^9rUtf;PR30?`@Ctb;U+40;?@bxRsTy3pUcV9gX9W|o|P|n=3KMbj`ETv zL4ahrZO#e#CD6Ue%-gxqNY&&q>{q(nv-unJ4{Dz_GmcE@vmDyM0e(Nyjoh|r-4ZH_ zSmL+y>m-4ji=kDimRK0}_3Y~@lR_9gLxw}wA)%)()67y%tVJ;(5fxNkdE8nwo6MFoO(9%Bt$Nb3Mwv~~d*LjQH1JCV!j^h~A!SP*2Gx&0~w@MXH>-o}c{)z)z zM+O1nUb=It8yZ1E4?1|pqP3lm&IL8p@{sCv!cJP<$|Q5c;u@kgrFlw=u-2g#s+K}q zvEAy(qkXw^Yc98$!z-N2Xv?IXCTrheX;{Sb+}_)Jlpx|H&VOv0o(Dz2!c-jOwUKPM z)M*N8)gqgfm7Y`G>@+H5?_<+v_?nFG9{GhZ2qZlgIqA<^g6`SmfIG+_n4&gbZ%YPW z8dJvRJOZc!&?R7=6sv$CH~9rDEXsk;iMF?uliXz%ATAckCNwHO7L2@1kSEa@H)30` z-66^-FgnuCj|~qQgnniyD8t31@8q+nF@5D3BgoBxEU1o+(bB#c7;WY*j^psH!qfEh zxvOZloNi+?6z?@Hpl{wEYqzyF>-Dehp&Y@ZW+SJO-VC?l+}z9vQyKuwEss8w3z1uk|^-1A3Y zSGjEo3Rp1!g)B3&X^!672t1<3He}NWo1Yx!%lG2@1|;(mrE{y%vp9_`T=mML!zpET z&7yHqLxwbF4JDETT&Vg8gYP61yLIH!W#F9L`Rw0BOIU%kYopeToF#IrWJrxT*$y2u z?j}@=$&HlyI%=7DF&0Qo;}F=Bv-nXilIx{TG+7tNsJumqgakz98zV(_0K#sll(XCd z`U4LXjb50q0BqTgsQ3N6d{%!(Jq1d)&=PFq@s6LdzvT1dF$Ta$k8&m zvsoIKCT%*)*n1chaM~Sa+j(n@s7Gq2EvMU0mY#7VZzKc3H8rNg(YOpF*|l=Sgim8g zBiVwWfYiZE_O=#WVyMe1dm`mdp=Pk(-XN1=P4?&_f`hUqL%El#tW?|b%PLANj@}B6 zGM3UeCnV12e$91$*!gZfV0p&Kabm$hxwNjkj!rGaLPd;Ap8Pzd8s(D$G(*AwM9iI- z0s6=wGx#Q~=yruqfnCwb&mpf=Jn89Rs(j+IpBB%Egbk0vS;)hT<-CEVoJ_QP@l64= zUknw3Seam_h7B1^07Yc2$vz@MPFopul08zP8n8}s5Ro8*Xf=}o2?NC} zER2}_9UdW5P`6b5|}e(2eMBws%!^Yle#{6gQL6|egRGhcx$|| z6sKbO3=xJ3%E;wu7WYjML}G9$kFq^a(QfJ{yT|Z~C(+>10pH8u$aDkR!*OJ=a%R4V zkohNI#XHdHB_Mj9Jb@Z0E;thyci{y0S7PrM`?2i>mX!@|%Ns zwRN(0wW<5kZICI3#mx7&Y{d*Go|&7U2;8j&@*SiQ24nF@)roHY&b;w=G*4!+hj z1W*2|k`_7<_>6`FqC^%0VpZSW0L$Yk*oz8v4sy?}Va)X-y7QM=RNYRF`>7@1aJTu? znl?MhGu2ohx3OT|Zq9pj8__?DsWvAoa#og2&0gMK>lu9>qUJW6xY&;*wi4XyT%|YU zmUNy?@?slav)Z-qS5qH`&ixm|uD86+{(voc^Z`lZuD2>LTEP06zLoaejFW z9%glMdp#1Fy%$)BWlYqxb$Ty9YY9E67B1+>nT1&zm(2s}{G=CDQ)()@_Cg}o0=7B^ zThAH3PtloWG}=xM=T7M~8LYNv|7mVDQ_fFlF1}i^Od;LYsK3Z)A(dQ(w&BrGj8A<# zbx%zN(=vWe`Kd|IGqq*mkh2Du_e(VF<-4f}c^R(dB( z)(6CeJ8<|H+Sb%Z0*_#GFYcQ>f3GNJJSu{raRAJCfd2M8hPBWva)!Jy!c(E165~_Z znO~XAD*<0T)Xjse&loK!wq>{X+pkN8l<-(S8D4M)4IwBzqUqHUMl5TJ2pi6GOhhJW zIEm1?!4dP91LoVToX}U&=oS!eVgZvRrFH5!&=YyLk8&ZuIFynCVFkBhFe`x|br}Jq z@i8$F@z=9=kPId{rfiU0?~Rv>eS#N$br3A<#u#N4Jt9L+x1ze|G7y_Y)bQ;A{V7Pa zswxOiA({ZRX!p-;@GcCY>=@@mIPI|K`*Z^6Orr&)gA?R1gjE>E`vb$jIgPb&rm$#4 z0UBRobV)*4qj9;b-^bb2pp5{aGFGx~%5CkR=6}pH_&N0MT&KG?%8s3|TZlG&wwq;9x=0 zR3VnQA_FDU)t+dZN0uy@r$xYN(|%Ae5?4!6Q;S@;Ks8a{C<2AfMx+rT!lnU||DbK^ z2S_Wlv&#fT~P-uAHA#%KH~bAIQ%UXUU`^j=Dvx|8GWX*1NtOBDDZ5R!X%v3 zKz49tLm``0(ivW)oT~T1IfZj55V`a*5l`^Q@C7HHlUD4tAiN3kcmytvZ0G~)Toi?O zP^r9tLfMxgw>bMVKh8M%Rw836=MkWmi3me9Y2134vIGO9Rh*T_TwV9g6|}C#Y+9@=sCCc zY(v09#Pe)5wocFf__lRfZC}r-hpVwzdNeC3I{c?G^A1E zE-gPoT#!eTswCiFMhBreVUFEd(sq_v45JMuI?IGs*v83@0b%B^(j!wNRRz_M$#$xh zkAlLss48X3n&Jkrr>YgfDwkdqbafJF;KUKpoyHI}SjwQ2PCl2l zoVV+$Srg`FouFp(TG{Nfxjeg4WTS1X=r+ikJJaN>+&!ylb|v4t#0}?g&0cmF6x>9L zEp|A}DyjZ(_V#ug-UYAoH2h=II;n8vySds0@aJgq~(@66*_?VHoJ*%QCJ*}H?MXE%-_(qv>2QzLx>y?~r~)UC+* z*j4Gc{o}KUt5djI$EX8A0vs;fpDk?65jEw8*Y85H7AKKD<4R+YBU@0v){nk-U=fms zF}D(%DV9#+POFj-v-zo#Bi>Q~Gi1b&q@DGX(`!|>X7l0rRe^V4JjciP`M&kzp&)LPsA0gS2w85AW}&lk!w7@0`fo3m;8N9Zf+?5dvBHuM|IR{h@V?D}#t{I!L)r;*SZJyE-^(&i&3 zYs>lEek=Z+-BfQAt#ts&u@gUog}9Z%nf<=?y4z){z_Cl`tynkax^7Wz!zOz;mt-TV zN2Y9t2bmN|`4~svP(gz>fkX#U9R`Zy=4Uw#74oSV-A^Of2tE`hWR%P}_f#NM6s0as z}|e-Fx@ zs0@?EFs_l%Lv4YQG*UkYj)3a$FeWb3t9D|c&a5%|%r-svI5S!z5h4QodBS)@Tv?W3 zCBw8)&Ej%=y}!7$N-$Pu*2Y6VQNTonE@Yqx$IjVG4+9Z$^W=(^$co7@ue;2^w*0bUWBKlwtP z>0vMOb9=H%2HRSf`U0~uedAEUCUXaA&ku~zJ9KRj+9vdn z^$-(>#al9CDgQ zqr+mv#t@b-6}7~5rm-CGmChyq1Boo}cl&aeMhF^}fg;C3!lQ^jW1V>a25_uN*uw>ArXGAV*p{s;3(%&34l_dV6A{ z)#eRvr^k4Ldmo$Sbj$~2=3tiY4BA+2CXj^FCb$ArR4G3sZuAuR@Xp^srV2hOOf1=< zjvqPn?8&YtF9x0>2rfp7r&sBbnMT=KsW`+XV-)J4kl7W-v>P1l27h7ehE3o)$_;*~ zxm2<5UW!|{(#p8yw(BRI2|91lXj0$U0J}hsGfAt!m68hP3NF(TYDhBX)D)^CV@ImY?pD^Y!2ppIb>V4?uSW80S>zkyd4Q3gqxT@DavHaeuFN@vf3!iYIp#dZ1}u zFG56J{6WrQTits!J4OvMbI>dV0!G2zW@h1cPgYuk;v~h&958QML+keUNm| zq(rteYL$!%Eh-401roGP#0)hB@_1iIpBxY9IfBDqJy;b222F}}Pk^ax7n@)P)(%di zngl>t9LPk-nQr+4843>}An^%>`ABTmKLD#k<_zLZY=A!ba)f zawd(#0e$szK9I!3S<3(?;|o%17%yoU-?pnKO9?6wt4QO}0aUHe2psM-xtKypGFs#? z+k&?sn9RWe8%ycHKY$}OYFHbi%ML~4a7Zzo%`?DzKL+p!ymx7pkcz-EbHw5m;eh)jjN89E#+!L*~a)R-wug`kW%+nBi!VkU~YutWzhb?vt@k}LnX3`pZwU1-hE zuRgb4Z+TS^GCD5FvcYaKnyS1NlIJ|d(W|9;+|PKIr!L!S^yuqx=h*+z&+5{DAEw>^ zJj?VbKsXYOM(1g%RiQ`r9c;NA53B~XEg@*l;Ag5kb2hUh8aw&{4I_Okj2hi!N`pn5 z87g`tL*V!pR&X-uI?BNsQ`@M>BtjDM%Q6xTu&;nvh?y7tG+puMhh@~l89E5xG3X@;&P8G zGXQ}j3yU?$1oJ zG&SsQ(bINN(C=XPl-5;PLC<+{=)lgAqRd%ar?lXR^r^R@Oba#M2yEw2g07nW+3Xc<%@lR0hxlo^Q75)L86>)#np zcbRUMlo{S)!leET1HzrfP=V}8ah_Ywur|SC-eZ;#3FZal3FUEiy5#03Mz$C&u@qdk zwud`_h#>b7v`NLJXV7m4!Uv9vfU1~iDVWzMRS?*wFzt|ayR{%xaT2}n_ITwv#bJ7% zy}co)BhS=yu|lt^rHDvrk`hJ!T-s1sY14HuLO=2=TN=2}YWm66v5<6qEUU?EPgaZh zK7vPtaSo3K^*eDqSV^B!CNA}b-dYlzq2|L|=Tg72ROy_x`k{8bx6YPd-4Nr++79mM zmfV77N4bHh%fsQ(rLdIzpvh5O?8~-)zr7&=TgDIS)XB+g`F+Edo3v6swuPH-!|Mip z(Ov-y`|jmnly?sfvNkpPP@b52{d241d^e_c$@uARY_v?{`HaFYOUa6Zspo*HheF7N zg9m}*3m;{#D85Ss*m|5y1d%|xI7)2(+Gs6EOXW@QR1|E}p5tLgA{qBk4 z9(kCE;qhdOIJU-A;3)AOi?_4H;uSCUOg_~KllqiNg-A!Kf1rgkJ_CtJp1ZsVby5+% zZg3;2{F3H_-@clC3nRaNOz97B8o{{yrmw4%?g>She|&O%0lzFI@rKJ{eTyT~h&QOP zuI9F*w|w^>H?NxwaA51|<4!kh&yn>izMc2gO{0XtsLipYS|DV2+ zM83ZaXm3Mv*%Lz=7;fV6n#8_s5Nqgr%%*+!3{T5-bMBcHnH*8<(7bf&m-Op}aGKM{ z^fwl7i|ut7yiRA3A0bCC!eXwawj z2c*q_*3M}|>dG=QTYL~)hC6Mlu_CiE2@yt4{cFzH41Am+?PU^~u&^V3G27Tl-HhLG;G(RSNB&u*|BC^mfy~r>Sj!+e-S5 z__7^fkrWnB4n2m z5@XIUQ<6vXRSoLt_Nly0F zF?%KvBJ~yVg9HKlL;$P?KT=RYhj8Vw2qyBpYbuZ@6Cf|rat5+uDgC5xU?@W*Ua7k# zb}*%ee!x3D;_@@d?ujzb_OWQwqChVXNuHXXWmX3#A*;2QL)#{oChVd;R7zK#+lulxc> zVzfA}Rc2F!Hl?*bn}m_EoP(Jyhd3imxK)&CAB2}IG^&Acg?^<_^$WG|EI`vwoFX64 zG_C>?Cu!{fB|!)5y?s~>5=uni1>9-9a5oa+oM_nFpeiERU!@)U;%dpzp>4srSw@b- z!VkgB^!3c}4w;FsJneua(-Yy#tKJ*Me5lP)p;6Mgvr&nb7uOc?qbo)1K#iyCc^n|j zDp80bxrGEeQPX|Tb4}KCzm>CsMF-)K~{x@xU+GvroxaCWIkoGGaYoxIIl z%02_acX+MIRsT&X9iE;e>rn>JOsY^MBXcyW=}*(&KMF-pxp%5O&B#>(A%0&v;U z=sWyXr9Jz@M!v_oWiwS9nRdHT?=_Z+h>)`OS*vwKA@z-!pNNl6DPWjYwXt(C{#m>aGj`!oHENdi*yUIrTFoZoeL)I0A^} zC=e~{Di-?Q$zfJU(}$1?Nug&&Z*W6`WPKO}q=jhzSY$YhgD2^vFe#hK^nz|6L(a0H z-HePX%p}X7a@A6L>6J=VP8ltrdNU${63%dolewd3PBW>OI6UZ!586(2>U5jV`jQ;!ta!c0;!Akn{W_x`iXIzqyxw@*k(62-ke#T+-o~ABzo0LFR3J76 zWeIS6TOGVbiSA8fxnX^Uy@Jlmzc-eXwqC$$Wm1VGw>dC501-qbBuhdTZ7?2=+9S%< zE9HmzHYGQjgS8=S&W{igSrS1Dd(BL?Reg;IjKQ^KXbS-O;ResBo88zz^&Z)P^kHKX zOf(^uRvjiJ8mM8$u&9n)*BHlKx*B4lz9vi^> z7o5}EXKt~PXhn%KVe|@xVitl2tDK)SmXB6gzswBkrR+m|fBr<%x&jkC?1GGrv2y4n z9DZ&pKkJDgK^aHn)Mm~{azs>Cq`Vx66gO+h<3>$$y?&NZxoA&45=*tss!zyR?N8PuhH>zl?Jcd70C((!yP5QhZ z$i#wZl>B_t{WVMJW8=B-O3@ElzjMIc3Mrf_C;T@G{r^zsND!xx!toj*1$_qU)0JDowCE+Ed86Cbdh zFX%6o4`h|VF&D!zTQ5tM4}4x+N@+UZ*l$k5MYBDvuu6f$+wK`T95cbj%JkF%6FBF~ z5~HJ;JSlL#d)nlK7*?8CW8U?5ySIHqq&%}ydkQ_TLwXkWl)OvH?%4FWr3q{}r8F#KQ;YG^2k!0BEs(OG53W(s=#no-w<@(&>2Be5$(V^!$Q(ONG(EnbGj)Wnsh$ z>`5Dlx6WZKaf2C1b|#ULh4>rXeFl$_b)m8uJaVe<%2DHPC5r zlvSAhR9~OpsF6t8)IK=NRCt1uiO53uC}1J99NqqEJ=4b4N-B%P`yz)!x2(+O5kue{ z>b%3&B%nP%8XDayCMgMur>;PIB}5YoIefN~?d_~})kb#krmY+S2K#6knx2M&k~T6a zhc|V`pd!;7*=#nf;>HuR34?Ceo-vhTCr;MdEQxo{G}RjC*VL->(Qz8eQ4*yb0?`X*R(JF$ zYemn))Hlh=4h2}ET_%#7Z#Y@AfJ=ipAjd?O9ZK-E$*7PDNq(i&Q;e}P|26F%lnQfE7rmLY2YrH)0NF@F-SY| zOZ>;R=3+-dETMUSCtI`RpL8zYhe}wBD(`ncBTFr(e@x6kxq}o4LdB7%fD9po8{St& zdHGaZf~{P|e1J9Og~=*1NMI;A-rHe;{mduGuOCHg@u$Da_T%a2`OzP}x3)rJjd|t9 z+XhVj?S5=Ju9sns$s64&^>%9gmDiiWxm?#B3T6i4<5R;>yo_`Ws^@4jOLzMlz4eYG z_Nn2Y&C~R0t}^!gL+P01Y>N2L8zW&RPO#yX{?GH#BTQzqMs*UCa8ptBMnv6}vE>?4 zd(gV``_Q~gn>nZHzonH43@+}~qF=a06g84rAu}M9mCX~!&eN5OovBEf$>njdE6nT| z&mDfaw5e5!pT~$BoSg3^)>`HKgzz1MiF{_)FVKhM5we%vCxmz@_pY2u4q$bykbE(V z(37e)Avus~TC~i5BMXlEkO=-b@_Vp{$_+n3PYRJ%GG(0wPs6AvJbz)PRATNRvhJ8k zM02kg%q)nKXVcU2wuFV4GGgHnmc&y-JQ#I~DGW3)n7+Kqr<yjQv9hQv{$M1hL?EhFnhysG@Va8nAtdFBZr}ApBt<>Yj7oHa;SJ}gat|`|q9epbDi=|L z9F-^PPYPoY4GX(7u79cd27FFq`8p?zP+#XzJ zFT(Jp%k!Kk#@R6(fktUnggm1eccXGp93S)b`MYXi{SJ3G@BYG|V6GEC@}|#QxB_a2 zr@7I&Ug`)ohQ^!e>rS`su|A_-jrAX_J zD{()SvE26L<8o(~BQ-~w^wxmhMrk4l6P<$FBb!S}bBg5^4Z2J_61yjFh)6^Kb#1IN z445?lB4zA`*9~(WCk{XS5YGbtK8X{~FeP<%$JB(05u)FRM@U%lYVJf8e!uWCMI-Nl zDk2}ESBHiyLKeRG4qJ6(%i!FQMEUzTJ&?-#%_cRz_t-M*hi+iZ3(IcaA1OEi4qi=mBV^EN6y2Qs+Z5misuwXUOp6 z+nV~8h(V7=;bhZa8tjPo0_^ZiSA-Xv3vz@v=NHwpj99L$Xfe81FDu)Ty@A)+j&jU{ zyfkXmZ1d(l4CTYh#1-KE;{-dMJ!xvP($T>gH0L~$S$-YQ^T0m>L6*@MJyfmk^eXlN zhJ>1~3+w_iaCksWP3a>lWC=eHq{s@(jA~4*XE_?6R{I(IBRz5aNTjjf35@Y<&R9u` zJ&K5#_FPWJ5KmrCBGS1!HuTOMVK8k-X>{>uGCisYUjUiCqtPn!DfGPDr?)fV4(wm_ zmbcR74B3S!bc?%|bp3=@1;81st+D;FRYMDP?G#IO+%k&_zaW(R@(_k!R8sF3kR&O6 zqSc>1XaJT#tBZxU_h`^hap$aq8Mb`D&9ylVI#S>%<=*KG4k3DE;Cq3Iq5fruXl6%| z*T=$`oN=_i<+3Mf%rOSZ)69`w%mje%voXm4m3HEo&CC*~J~1Ey{1`Xv4g_5FnWv1-rqtW3#*>t7qRF*iUW)f8mPyzj@lL zk1R6fqEsHidGE7dkNN^nJnweG=#^v^ZQF@Wx9BorteW+e!g?_0Qc;fY4Pk86G;7${ z@^V)4gb0H8tg#&O4ho!9;Ud3Bw|LV-nG?VWVPeH%<=QF8|5BZA=T_*psq*>Ee@)%6 za%bb+WfP}AAx?g1yF_DeD7Bbm;+jFfD7I}dz>1ltl5Rp#}(gosz54Gq)s3?)L zyTs2{_R-SVX)eP~Co1;gDk_Aow>Ao>3DP>owvKU1^$KWPT0hs_E#V8oryiz?LRJwt zFQ!wVsLBx+NTlSNoVD0v^AWmfLSHpivm|O{Vio&7qrnN4Z=$1#54mdZ=&jjcaE)QU z=ehC?P|mwXDg9$_FdP+~cOt&CLIvkh+FfkFECY+}KB{fY@%9NI$n=W+Zs+T-InHyH8-Yt-d|rVEN?OJ zKF+|%^SyI3k)vIjQ3G+&R6_W6f^b=d1G%tacVfO#sB183GF2Ys$pgecw$K|a85BVu zV)Fv%=|rjM=t!yQNcFTO=TGP(lx`T8Mm{4NCe`XNb4_a}E&E_EBeGLc;nB}7yXD`= zv+06NY_L{a&H#hQ3N!8u#Rj&^Wy8EuY$NS7@qe5F?%zAoxQN8SNOA&*j2BF6} ze-f)x8C5gMCSAZnYLS9h;-4Lvci{|r(TbAR1(FQ=`Q>q3AjHN-k9fi0CkhB?Sqoj_ z6iRq*V622-sDAVdU1Tv|o-Ipd(AFwj%L0c94< z!46;!X_sYF(o)l~tn-m3Q(P+p-w^;n>=>MmdLsw!`)k5K;xQ;9dY+n3s;+*ZnsHOZ zu5gzjjL9^CXb1UXo~U30Jp}GYhNAmo7$7gmOtDtXl{cS0~E)m?)+^+UhZvNqZJ2R`Dnz z+MAmC;OQJ5l)0r3tG}MEC&wXdm%=*aF|ai6uO6EC(jH``RD8LWW2-9Fc4uFs0r+ca zv8-Q=L*J>^*ru zNRFl@i#`)a|0Y;ZtVyGh;TZU*~BL|3iX+1^=IdeU4C%eeoJ3@(WPW+Xr%zB zpi(R>(Uc<$A`#{Qu*Jw6$Tpy=Rp--5{IwGJDSn-K>lcl*p}+YI!Z3H7lVfOBSEyfH zJg!Lv@ne_m6>dZ3<*=SjxYx5XAF-*tJIszT1U=76-tisZhrdZ*Fg4LlUEss>7bwbq zXA6Pgo1_=k>UyhhzG~$u(k}M!J#!Tty!Ou4qC~coH}CIrnc_6`2fXolY|yyb`91XI z4nUi3Z>#ZjV9+zHt=2t^hqe!Aea5ilIwYI7nYUKuW@e_U$6d0W{OtB;#U_XOEzEjP z??1D*^qC^)_Bd^)jaOQQ58BIhPHax?M1HPg&_6h#EPBF?hjPaUY~qR?cIlhrj@{v2 zia}HoSs22%yGr-y3H?| z_EhJ-lEHcDyFekGMJc~2cxQFeTi@=Br7&??sIQ?QSq%1=3uy>iM2r?IlH%TK9nkh3?&oWiJdi=QKz z^6R5?k=Z!*G%*LJqWWz?q+6zK$XR+IN8a4IrFgg60{n%!mOoSWV)>c5t@v`mY&2Z1WkCbK6 zX*NW2#;rQN@aKXcy!awY<9Y&*ESm8Jj)l8o?66MxS>F==U=3A zx5s}U6rxNPAOm3AvCdu=6b7O~A*6Bvjb!HKIynfRP$o>->~A_4aOR2$F?K8IeaMf$ zlM9*6>32kbeyhe$y-OcDT+n1Fsl-*{qqW8sZwwlv7#e?WE&wu)R4-E)%?hsAa^?|Qe};}7%+{aZYg!MU zZp1ZDC$1{_=o++2_Xk}o!Cz?iED@cm=7{GFo_FGdGxdQOQ6n0LbD!OtgD9)or3%Xx zm+L_gqD?BnUo-Roi)6wuRmI@cX=!fuh4zY%AS#;9Q80Gg`ly=uhd+$#N-Q`WLY{3f ztv9Ya3JFW)1?4Lj@4S!NNY-k*8@Qhb|{~eRAfsVXBGjNkg%_kUaq?eTsiKj~3i zIyq3R`@0gxntCxUf75^xUpv2ZpF_!flZZ5F|3Ln_9A5m`S)NlZl5Mt|tx5h=dYP2oDJX$-V1Ms(dfg%;fj ze7YHty&zovQ30Qu|!;PpU>p!V~U5vr(!8)D5v0 zQT7L!p}r+cu||%CQF?ifx>ZvB?G)(_|fa=oV&QFoIhXo zWyOJ)gKgY94jOK!KFlT7ARxxAh+p2wWl)w~tA4&)N}ZKp>ZC)7qX!EfDy=XIJOZ`8 zA8ViY7``(gg^`8`pDNwLgn3EMyK@xT($HynuF!^bB&mWYx6pt~vIjc9#&zxnQSm6G zF>r6}@zl!Ih3&1`TJ@`lCtC7L9Lys|`)bGpqf;ARjvEP99?u0Y=__eK;C*f{ua2gN z7vBh7&u1fTZT^l;1Jq@qOle%{idq7X1UE!Us@|{w7u?0HWVtcUA&nV4ywi*vpm8Uh zuQ1{x>n!9AYBl-s{b2Eor$tjuo5MfxTjY@R%Y%WvUZB>O_4P4nb?&uaj?Dr^REDgrrhF8CnvE) zx>L4k*V?yg)48K+NZ%ZuN}waM9A=BZG4f1-*W;*v-nqDR**$3d+G*sdH5M}KKKDY!^q3PS5rv=op)K9>`BSalTP??$b87K9CFT-U$EqsD?MY)DOvbG z-1y-ox-Y>gxucaIoIhYl@b8Y3Y&zgQ6n0IH!5xj;v>?|GS}(ZNU5u<64O7pTUkp+w zf*lu$nj=;XO$CHlKyyQCSBMsuVS6M%nii~`y0Bun6yU1*qvyk@##SieMFNOb<9?4q zDCk9)6=M|h3V3qZ?0duYiD zXY59BW!HR;zQl6B^b#wxN1ijhhUiEa!;0`FA;tsrx(9gJ1JSYX@0Q8GS+=?jeLf%` z@TzZqj)guSKTbS|KPQi&KS{HjJ?%nY#^$zo&J!Z~CFehz;-~Ll~5J#yc) z2OXn(5QmO|E6%{cK!22{PX7l=*8h~Q_+NVd{wEsc|6BIQ`G33qm>B=5j5*j@|9jWp zzaRgz>+ip8{-3!1{+Y)AH?F_`QvUc)Uhn@D>iF-y-v8D0$HK(P%K87g{cbo(Ql#c8@TFJnxW*_@okBVLMGiaZGt>^L4H4h$+@5Cj56lF&b%&<-p@ zO%N14QmtHF%=)T2j+>NUaKpOlui6H6IH0+E-O5L(nC^XtW^zpLW0Exg>G@{mrf28t z`zEW=?5gqkAiL{%-MV%}Rxud)Uoh7nbCK8Fx9k_yN;{HKeZnH1UksKO{BHh;kVn^o`r1&(jSuG>$TxVc9!;V`4M%@FJlc9xZql`| zxDirRSpr`VR^FL?(j|A^qI4<~T@UEF!*2)D_hil*pISchJW@Qa+%+pr{zjFDJO{NA z<4Gx1C~%wYIOT2k=du~5zm)h{bK!ZHO5~1-L;fplIqU1l@s5^S@Zzc(WfhR6Fp6Nt zA@cE(pHl|6yVHuv$K_v3s56V~jaW`*duV&#d-RnqAy@ZYd0XJ;jb3Vm9Cj3_0k z>W<_m-tSKRj`@W*B!r?)3!o6<*_JS8?Bi|T%Xk%Mj?(RA*007soV?uWzHe4@=dQYv z?gW0>*M9^rMzi$B73#$?90e{OIz?cIQi*@S{X9K!vm{_x&ti46j4nWUGvlj?K-wU$f zYDZq?fGtfjAi=>VC&>4j&3c6~qi)Yw3-v>wVcqB7J?Xez)Um+CGgSEI@rrN%reSz? zJBNG1dSq+|z6JgS``~=Re*d)A?H2e409E-faF4UH*?rD}#(e#hCY7(>x2(15-a2WVi zg;Z4FyRQ`J?qei0i4vV~=^0sRJl`!(_~~*>ep;`8&c)8%@N-WO78j$m3>IQsv7WA- zvC=_J?lLsXe=`@D(DyYWYoTSXxN>!K-3~&!0?vysChO{B2b*HdH#Dtp7afvD6N01N z`P8*7B!DL2V@Hwv&Fy}Uvr)iR-E3QHH;C8R+r@8&FkI3XZn?4J#uD^2t){Pyhr4+Z zgO{=4>QNh)dUbUrZ|GjPjmQw3wp3daP|PV30v^Fe20pvhmO0(l9`(;4BFht70zN9{!3=EGgaya62he1y9zISA`EFx{<ohS9&?!B~_hqs|L zEOr(HAKF2KobS!<31ukHm-&qM-(s3Iz&N{4Ealp+-6<}v&8-&>1P^3KYzzYJgO}WQ zUtvs4(AQHAqqP$buZzv&n9sH5!1r@{c_W4b*qREwMfwW5%g5xE@zQZUHAo7`&^+}7 zFjcR)_&tQOIGrs&160M|>MeLjt3qek*$5srQpHW_)q|qdvS?50ks*~VQXl?`oR3&3 z3oO;&piUboE)3eo_`=GRP#<$rUgE=^m(@+?hE?XDck%+0_mqJ8RKDSpXus$ZR%@S| zK}`7%iY>l~@ASXTF%C)3U}Bqa#jHY{XG=^HNT;2#h0|GGsZZ`F6U}?Oe?)QRW2^Q0^5_FEi37xo= z&N{svcB94Y+-D4)VZT-E`yISfob+qxThw~2$l*y>L9uPPq4I{-f-ftOkL^eol$110 zL3LAtdS_E0_E{SiaVPV(kFKzV;F)O(L~-{grnoeYz;fu^y)o&WnY3(jp)4s82%il= z0vl&a7$?sHM{zy*f)X&1!kRrO6Ievzxz8VIxq#Hf3yn=|$XYevdC3o>Fr|_iw--5r@&IDn(gAh*?CW~&*t%Tyd3VRfn&UN(QH`A1^(b2!bqJKKW4sBG_Og}^e( zgUbU-t*|RRj3YBXSiA3npPM_9Q#7`jHs>6O0(!t6R~j`LWmiZLLhSCuqCC(bAJzZz z6bb?1?D1$MfD&^&H=fj{8;prIeZ1J1({A)g8T&r;$#XrPZ*w+(GfcF0K7sFWS`y{C ziPVUd0y;*Xs3FwRDJgg)i7=E6`#rPDC?|H?XCT(u(>xRx!4!xkS)SsXs~OQ_khGwl zD%b@omyiD)P97(7CzI4{MhfNWNea-+E+v~DPZ$cy4cy+{-BEO+`7vzKd90AKCI(P=4^u?$+{M2xVe zb81D~fOC97=iv9=-X?T17Bk#tA6}dT7N#S2 zQt+JWH;YX#E;9-8VL$vuN{(5Wk-jGZ3hTI}tE}Rs;?p51lapB>rv9q@NN6ZnHL$grN6O zp$st_am;%@5)*x5c7*yVVpCWtz_J$qdp)J^eYp(n_b)#ir--~9rU*Y^Q3FW>q+74V z2iWSGPuNS8ncTU^5+}%M^a_vLu+$wRF!fAKrQ5b%a5WcQPlTClxC@V|Mg@_x0;;JU;2K(tJ+d>BwLbjLGv zzY41zMQQ#EH9U|$qldN#e52#md}~lrUHOU`(;;5kt@SwkJbm135N!NJeOaAp={juE z)_{0J+*?w6M9cHgS30KNM9w)PasjYev&!hko|p_tTA#>xUpS@JeZ;J86bNP@gfB2gDEe z8ZSq~Z^06d2n6vk_1ll1o{}{@guTl>twsHpEk1HT{G4?qI)MxLV22(bU_*`i+7Ztl zIgL){GsUIdq9sJMa*76Bhg7EVC_m)t-wY0UP0Xk%s!ZSnc#aKj+b{N#RsRH-MA_G1 z`(H16dauZztiD)&p%V4O;es#1l#%a*aXw&tG5X?p1xiJ8P-uVzOssomj|?obLO2;6 zFn$A*Htz&RE`YqjP`w&ld4E|&#=yv~Et3q1l}&ks7Sra*3a%UtJo|9_$-mp)vy#cx zYSsqqQ5#5#B`6}U*DJf05%=>iG!*cpmC%^mwK}HZ#Szt~EGK&zAIJ;frVi!1uyX4yW6T@Eze~myxzu_f4 zMC>owa5%`NWy2_a`k27jzt=v#W1<@HM1$Lv*p!Ltu&t7*u+)OZ{D*dV{>dX3?>1We zqJ$Nbe|=2yJF)+&yE~l#M$pT50|Vn+aB<{dQ7{$xqe>BAWw-_Mgw8YP1z!Rq3u{cy ze#%tHPJMF~RtK_1z+T>U{+q23!6h3$jGH#LBG#}DRIHF}Xf-VuTfbC zIXyDgm>yOXf^8_I6Cl#pNa=~r9{gw6;Hcx48B;>MM>HH~SH7R$YW8dXS07cn{lY^3 z1c--rFPA$=Mr;Yw)h38qmKjfn6dhDx=!qtc2&Pb>vW{W*l{+d?v<9OZVf=`(y+(>< z*;)O$bD0u}1taJsl;>i&`#AzB51bKZjuOQ=pq;B-k9)doAfFZQ*dFQ-wJKI!4Y-An ze08m>;8oyI56@8u()Z=o==v~?NS8K`Q02C? z0q@YBr^=4HY9ntn)V>0pP6mPc+-Z|l3hkhF2NBgLxS=QQPFZNYr(0(V*oP9=XgUh|=a$|Vv;vgWYTk`Bc5G!4SFGJMJyO6 z$DSlvhT<{&ar}nJ(P$nXM8=XZbnr~{JdJ=+=kF@wUaMbf2#$cuQ%Wj%%}j*ps7dl< zq`ZO4870vav0|&1x#r+W>V7lNNj2F}Z`JMSmp!hlom}kg%$$Q<4fW>6KiAu1DGO%m z3cQTA$GL#{lISXE4Rtn~nZXwS8?8`3i$=_es{5R2?b;Sb-0JtYrw?ED`i7=K66v%1 zu4R-)K6qx33ZWigc;XWCMmgUOrCgBQMb_~fMX95_Vt$DNR7zERaz8C zi-?iOp*4hsx7Z>_XG$wz$UL>hz>vmiA30#(hu7|yd-IkFvDadrdee(3#8FVb%1qxT zrRwhEy)_NzL_~#Ag(fzLwj__n)X|wv*M~8wx6dJ(;KYcYfQ$fzXYpN?sLUc1e&tCi zU5b^Ndfc#8D6?RwLk?;wF`)S6A~Nmj?aH*rU{sqj9gdQ@$olr8NwOiMMmyX;=KN7N zn2CMz{YZdeLL#;}OlVmM7D#bw;5f&U zrbKj{zeD!MP>>)Cl(Ljoa|QNH(_r`~0b6JSf`B{o!>>umOXK^n`ws`J?%gh#UOafp zi!{=#-cYsZP-x@a75e#A%vf4wn>gsE)PNY4^C+XMFVE%yI2Ev&w9Nez86{SI7=j`3 z&?(<^1lLfk*4OE?1=;1Zg>+N>-YW0A-(tVJHtU!-;$lgzPQBu=`~FzP#rTrS{eo*P z$1}D&> zH;1(xdr`w!sJISN8~_xysKgv5t05p9Tef7Ci2}vVh>zl2aaJZQ2A8N@!BqR3aiWq@ zNkk@OJ=(L3KD|j_3`et$i$p;XlBrRZY8rxv+ptf_No{FW*hp?s*?HG+#8VSf598Nn z_5I%K%n{^m?cL2C$g=&O-R4*nB6GEUq_xCP?^gy7izLG(o(lVT&MLCzs zLcbgB+);@hsz2krIu9K?%Ldr*2&h3+BUWx6?F`$=)P{(K8f|37>30nC5&3t`-r&Aq zGPn#3vg#j!RmSU?dp1W|Us3#CPs^s>&*ORXcsGregc|neP+4 zvpV5^fZPsJUh&&x_&Yz!&&LuHPX`mWIQZE;q>Cy%&j%uu`X)RSY(WVWF&?pBM}b*a)?{}qGWrpYikT#;sCKiJOKPwyl( zPinQ8+KF|hlCy`<&{o)ggz-t)R`{0|9Yc5(a|q5d2^_>yU-|x~;&M0@yp+yuVuuZo zl{!&~?2VT~6h=)U{M8jv)h!|G;A%^RtwTXYnOjn(Gj773kaZzf57LVlQau&~q;>9^GDv@K#c`Vb_|NePxm+YGhYWQn=$@G0aa)-~K91p|S^{wdl#FDKikPZOi{ zWhNm;LzbSa#w>nh8K6WemD;?Ga}H-35pqK2Ld{7wCKYQM!l9&vy@!2Ov0budwTZKu ztf%-@`XaKwatbF1CkhmcRh13|55lXc{MK=GB7|4e-cUk6B0!8jj-ql>?44`U!5eGd zofpDOs$btsH91*SlYPc_7TF02k`K>QB?MHKmD5H{pg+EmiawiNFuQ|)Z)nd3qOD4> zhAVrRyy%xwFhrgt762jM^JyY3h*(EdotJXtqv5^YD9tT}qovcR7Z>7Q(tY0@KPO6x2>SK{n1wbp0 z%pdeJnnR4~)SB&&!D-5|UTjsV5H$G&?4AG;!E_`ph92r4IJ<4GqP4vIb^#b*h6dYG^UE&cf9-L97uy~}P ztdHZdT~iecElDb0Q?w0Zcm%tLzBOAFlAwh?pe>m#a^ev~)C;!;mW-NwTQJK`N|%sk0SmryLvhzX{Z| zvII#h<%&v!v3Ftrf<(whxp{~@0dUL$o-_&&GUJWI->{%QtJPm`|9I4P?l;CAqTTCz zf7$g6;!Jl7iTE9RVQ2)7DVXyYLGkc;qSHzWjHXG96x$A+L%39WW_U(rs#Gp^f@3OI zRv{4s_hr^a&(E&j58XN9YZ3DS*+%_qbVO5)VS zX#x7{WIf0HhoU`_Wo~nMI75>`XL4Axl@$b@nY;gP9x1rhP|k8Wvx(k+w}9u=?O@7w zBmq0NoG@Jxb#mPPR#Qz4>32l%%CN4VZYtzK-T|aNP|#ebyZI-Q)}&2r9ud2yFxQ}A z>94#k3a!cv=I)5{gEdB$h+0!@BhZiaO;p!6p3{wvj08;^q4W&dEHFoX#1RD6u^{1E=695wLvJi_x81{KFP0*Pb39&R%%RQ$hC|f6hEwGN$GwKB?Kp;GY)q~% z+&+YEj?h}!>=_L+bCt($!e6UsoJfYCz;>*0bcbw8mE@>s?J)0z<-L~VlJ+rczuCv8 z)jQ_jqk54+M})9hlT+teDpo1T=0PbS;3QO~DnU<{5^l}43{!d~!Kr(tl?o3z($d1Z zs*{s9;*A8O|r+RnfxMv+O)-yvCF#3A*owsa|I8l6{)65LyU#!WspTAJrEY z@41rh?QVbZ;7y+(-gI`=QRXYT$kIF-7drH_^h7t-shAQ%Q+&`R$9a;DfLZr)jA1`7 zF*yYfKYDWHWg((33(_?sL!rhL$dZQ@8H1`)YL`KPWT2o#N3`#Tcm_;VpCbyZ7hfj* zjt`P9NdHYwW8_+nhLEP8t3YOAuSG6~zx`rlJ&}k8tMl#bGLj?%bCm?jm6P3z~- z)eictEK^`U9c2lwt1?%(nP$9l;U6J#dRMY$v;~wE%TRG%3Rg?Q9 zCc|zjNuC9-(3hFDW05Q7`yRgMIcn!Rf9iuM&ZR3;SOPw(w zzchnrL%4C(8P$-ZSG@$NqN08dN98HE_O~r?qryv`J7XRAE-HQZS~yZTd}V9YhyZNln9(s#++?!Eh_iUq+8sQrEuyXySz9T2 z#H0R|SuzwL<(bC@bY?6(h?_V^jKY>jl9qu1W4YsF#Q>O0Orp(5emBvZFk*Fvl7yxQ zun3MG`ir1b!&40-ROxDtl?WT2qWEtAd08t@xRvP7k8nOoM{lWSGk>DZCif%S>G1o( z>9K3?PG2amYFvRjVekz*<6-E2OjOTrF4X;FUK@mJEUH#!kf~E`r7E?&E-0{;+P1Y| zFs+d9wZF)fjVABu8Qr8kRIf6j=_99T>*%33RO7n>jd9}mR#I|CqnJCf$RQ;?a&~6r zrt~uyJch}FDb1Rs%5Akf{6tgFluh^VKiA&LvXMBU*3v8_Zp@YKNVjp~TsjX2o^IF+ zV=DKnW9y4yGJ7`@9cmi3+3wCgJLx+8rK6FhL_UH}&t9Y$ePU z0Eh?8={WvuoPr?&-Fy9Ep%zUkL>}0lSVprvk3xrVhgRi$qP$$sF@drMQ$l-tt4msG z4PJbQ@(lsFfSanA9}Iu&>)cBym^C$q7fG5gqKK>h_`}tnz~vpE4@># z5-=u3{PM-?zT|$r;p?$H;Y;i`PBDJgZ;#rovK=UpOXOBzgMoNJaTt9FvjjZbK&VX~ zqN=Y}vt>OKa#}il1xtu`@>qA4orKt~m^M@3a<++()@Ut=v5+&%)LvhU;oRO2qGD90 zNPS5w>)SQ!z^`w`ZC#^$DBC6Ql~^!fj;{bUWl-$%9Q;ix9UeKg$)GB3+(d2Xn&2%8 zuWD+qPp>x;I3T0p>nA*Oi`M7{CPJjl{8J&=d-9_1otHeh0c4WOMccDG6 zqOI*avFz^ZNO2S5Qc^%oC1|6rlTo6-V0R+x**!gu%~^F)PUPy!O+@8(w!(!{asf*w z5J}yJ{Pecd+nCd(!4F{5KCcM0Ertmb(EOe~D60EY%Q15DMA7E)KvuN6*0Potm{ZK< z(QMKp338D@*yvjLv^HmR2^N<+S~){;Z&gS7Bg{SZt;$d32ebDy(F#VJ505di^I#g; zC?g`LuRu7FGlw#5aEj7Z1SZZGRJawu`6kYS2JP5M$d75=vwkHUJGn!D+tV=z$<8>7F|8u3zO|dO>)c4 zLMySzy-4qyGXfT=SP`z|U^ULczSx}}|66vr$f7R-bFiu^f{)Da*?S@uf_h3zLY>b` zySvL=uB?!;u-U>8GK2a@&zF}%fqqw0}k@)1!M zw@5GKI$2kohZ^mwWIp2A-crvp&gZXn$3?~Xhggne5J}H8$XV62?p~6ir^Kw{Fkq5@ zho0c>?H-VEi43)w6sx7xge+cP#U2S(yJBRYHpiY7udbxd9$^%C?K>hgf;{S=C1Jt) zH)OzTOpWH>yX|vjQJ1k-gVZ%&<8ZdrO=Z0yyDN7uPqTJaHOHsNjEf2Ehvu-F9X$h` zkImSro~ntu$!U5`ou#G<8>79Fds`m!WjQ}}TEtymYo+!94b{vn^Eu9F)a$ky2RE%& z?!%-Vj^Igl4K2pf-kQHUj&>VdCxTKYfc-TI0V6ZV7a|U;q)TmVrrXZk7^}tX1xrvO zPD=pQ+>UM2`lQ8iwk%-&RL`nVTGazfJOmRJl#2q?BPy}YnG{rpu-qIm$e>g>T+yw@ zhC|LTDU8u3jI-hLvC-?(a4KDyhh(np)+r%9Li;ql_pIg+B(%iUamWy4t*dBsa=V+Yl=9?|oV_ zVo~hLEQW)TOXD7josQSr3Ie_m9`MHUX6_D(@U%;dOs8|T`;XW1kPFAp0RK@+{$8km zi}$G_?cG$3p^D?(OA)^`lfJf9eQ#ZM=t~Ilk)+chr)F!1;gHqinL`ma-%HtCI5tt5AE+ZNywzcLQ!vS6Pf7F zb%0)&?$T;;N#*hBX@M|d9=+!riy=}Ci1;5MkPN>%kz?+)V-2S2{U;U}YI?a1KwCm0VO zeFCx}&Lvr!PK5h8zHvFdRdSwpfZ>wnfEAZ~rK$VmZMX>b<^EzgTYYeG55T_wF~p+A z01YPWm$;#{73LE1tb`MI8;V+Be`dWMQ@utVaPu*?gS+!FZ zb_ty(>%q^IpYq+$&k(@3xabEREN21-F9c;F@mqwHk|G~yTpU?7CQ^}#TF|2mOby`p zOFT&lfw?fE3}Ff^!)nf^NW``b>j>as!T%1b9bO~2phS}ym8l4t8H%1SMoA?8z9I_- zM1;m0rrqxOvFwVr_^7v*b1L>qxR3P1P_t`&FkRqOXkgiEJaEgI$o{C1(1uYBn*HEH z3VPb>hvv8;!C=obceN?3TFDI9SYz>jF%Uk+YYHZIgBm7PNZxiI)9$1@Qj@l`;Nf%9#Fz?^*sevY9#m2S^$7f0K{>w+{@%e?`ie z{uN>WC;3>e{|{2e!S>(QWB-GQ`_J{*|3t|BuZS{sMh-^C|CcCZW@l&O{7*<(vNyD$ z>d@BfWT#VH%ZF>@%b({_a#*7PK@_L}N&J>@!NYK96llkBB8gl6aL6!ZG}~gU>irl< zQzsx`8=)fYzrT8{Z2zj24>bZ7l`Di@e|j=n>>A6TKi+q?GTyo}JXjvgd|xJY{t;v_ zR${mnS^SMvxb-tMtQ7`zj^9>a?-~k(!6WpoR(j4SeTdhA(E=o-`t|Nli76zxkEF0$8?xVjh&dTrO4Hh%C> zDOH;FR(;-I@AWQFLt$0fep6OAIVE~fXre?coE^yq-{7{=U)dM95PC*&B0kuQ2gH#+NhB1lLv*Tl#5-M zTfxsHh|i|{A{TQI*K)1app(wX*g@yB)Xo&$j80^kQT)4hVrr+t&fwZHIxO%R9n3Fg zxq=D+pUqm9f5sdT3t;a!v+iHt>2EC9U~ZdX_<{txUUD4?5M52eQ+Wk{PlakCMl#4U zZVbVgoY|rSBvj^?S611biQ>HwZOr&EK~2#MXOTQYa5 zZeY9qmtDwPrB8_O#?Q7kwYR!xNf_6hS8SnG@AXyO~#r~>qGUvGIj@@y^gF8 zSc2WSJFN5*N29FU@H!E9c~07Fl$_ZFzME1dPbW{Ec9N}>H(193YzRYi z;xY(v0fO!c!>$(K;VWUg-!zkYK#0ACcOi@{54X&n5C)(u9yq>80%OD9PM;u?^8~jV zjAkLhtLczQMkcfw2s<)k#0{Y~WG{*I_v~-6Nu03eC!3oGqc$Rvb54f4$&b z^IeNv!?_`JV{K1Lyb|;GQM^fg@_tKy8-1gGqZ-xRw%;aLpld|p4E?#gnYXuWQl-!% zWs`D~@hWOLH0zyCoBh*-apZIBaBcPnqy=Y7jM`n`jqZ(Z_kp)5K1&)%WelM+V>7%% zvfe(1Gcvk=VU~&?*y)SeBRHF=u(jMBCO0BAp}^A`5aoxSi2Y6GoahIfd(|>~&jvu- z5$#5)E(0Y|hWGi7#ObGKTbb+Fgw)(85cAugT8&ajEN$cN4K%nd41xG{fG;d?vb>8k z_lFsn=t0W^cK43;llC@5s}fp!U46r_#I(Y-!@c|m<1Ed#9FG#UV)f0?AeS%OB`N%q- zn=x7)dh!LNm+Zlf+Gp0p+6W>i@h?M320WFPST{`d$>Y9#F-Ocy(ip3g+>Lv@_a_}3 z-t0npSD@v=`c>!6ZVo;F&9>LB8FY&mHd(}yz%tE7bEUy`>Re5uO1Iv7?MNn#R^M4m zWnk#3(OfQ%UAz*{M}Mj;VTq(7^dBUOh^Nf%KHGcfKmYxOLN;^<&}2oShXV)o&09He zMdQS)*ecQd$BEKLfXpCAL&%3K*u<8gOi}S83;cWvJ#zCCFdv_ovX%nk+3M|bRGTu? zqMobEg{Fpn)KwO&t=cj*W0vzXg+L2Y_vaSp?(Qr&a-Ebwd);E=IK)*buy|AYbg-&` zaHIO*=b*cb4+^O^adYA`-IwN@p{EWC+FYYNbiFr;AMyjrwrqfBK@`Vv47Oss3YkE| z-TFse15LmoQeXy06eQmc4$h#Ib;p9=U{zc&*kmyYqKB{{;br$6VE5CC6}@f7b4}D{ zIhW<6anlktIp!wL7V>!jSD=W0ZO_!_OsAwS`d|CsoN$ykKgHL>NT9!B6+CKr_Aa`D z|KZNq>_=%3ZOzc#6NQfr)wU|Ef4=~spYxb8I5-9Ht!c@!Hh;39^y~tpvYA<6x)R`H z;Hf%++oR_x3KWV3b^xznnG2n?nao2Y!)eWQ)}h7FO~td(*2Z`N{>=Q}CdMge=qa01)elJn6nu`B1W5QGN zW+oJ+ZYP8xu?!zziOHV>AeY(pL6t$|iNm=SqxVPZ<}$}v|51^c_xALYrc^qZYxX1V z^?w~>ct4(;ISwZ~7eEH5$~{zsABX2mku8CM%cmrc31SOjiZxpqfPn9;$QnGTT%sgp z^eIC)cJ)0NWlsOrjHbWE+rn;#qgSrRU^`t=a@MK?wKN?Y{$*K078Z^2Vxv88m3;We zE*6yBji`dSL&cH!rLi(M5L!l}r0&FzO1~&gAp)Q0|WG78OgG;WE{vS2{JQ5LLzM;mvc?B6jF|BCDOH z^i+@btc#9ka&gpT=R(P+<^yhKeYnqGs8c?Jt+aY-vlLEI?#AAc9XMK|5&QR?0~IR{ zWh0pHR)z?Pg#}y*YkGr26Uc5}Zc5js3R8Lr&YnoU(`;`<@9FwF`EViXM&`z`o4Gba zl*E$z2ESuE?jIe#f;GYH>&b7P!14$kY@?dg{e&QhVN0ohaw^xs6hRK{Iy{zqt4+L^ z^0TpF_wxo5UUWN6u$g&&6fNV%%n{)K3uZu>zeLd3_Bh^rQM-mW&z#e+PX()F^Q?vr zg2}k%v5oD;P}Z;yj2VsP5}Hdh=|z-YpeY!prh~|=esCYyF|DkWXBq5zK{rM$Pd4%} zTF_1OJXP-~!8+1Fv0Tv2>m`~|n}VS#0vFKJ6z0a(9BiZ zNNtohn$!}Q5t`KjIs2jRD2zHs<60bShc;)h>~7rJK1vJjV=c|d)@+5EG_N(62P3D| z@*0Bv^ar2a`vkM+G<1$e&_0Wy##s8HoE8R=PeY6`Q9Qpm*493bYyBr55~PZ!r24zJ$i?$A;fN9L4qiK}zeL zw#{vu1NazA71EBg;U(imbC0UAD+IB&F z!a}G)0|?z=uvoF^!bVyvPKkyh{(r25^D0q6!WwT=M;TW*d!>_aTWU$)%cZ%?i8O$Y zQZiU)6YwmIWMipi!PJVzWUk75`pj)W+aoD~k7PGbqM;eY&ZJc9g848+kT;VT#3ADX z$cQ#vrq3W1)NNFAS}-4OqqCgtDRo7%Pm{nCFt8|Sh(1oLwJzG+7;Od~f-i!}4n|V~ zq|wEoKE>x#zEP(?PaQCSNanZAgnJQPwqQyEezti2qBv!)DT?p<bS zD47h?s{vL8>D@p@v$A4Czkf2lHE1lDejDU88Ug_Dy}bl)uFL0yb5qVKGcF0j#15j8 zTN<67hQ_JryItR12V=$mW@|)fj^ig}H(1NBAqiShnJs_>Zzh8TMA~O<7-QiE(l04O zg(w1M`T(dL;RbYwg^_Nqe`mrMdE*7H6di{^xYCYfVPqfIk1OmL716r6c&F1{ZXYv< zi$YgrERI6F3c@Z32O;oi9v6mu72@>}S|RL$a1g>95JZF^rlnB`s~|iA;W#bf3b{~6 zG@_2_$NAx2KRke)^P;aHWFT-bPA~N8Mbjb7gK#&5M<9r-9?e+=VLgO{5KgfYjq`Tg zTLEMDcHF^|&Sfjg+2wrwa&8m5?7X;9Pp4j_r{gE<)kf;ohF0p?gU9M=zkzz{EGciL zsaYvMG{(bu;2}LQ@YN7was=5i1{-uc=SC?AgcGwl8t3dRPLw}#kmC{N2#3)^6v-Uo zaEIb3A7dsN@)dHT2>Ftn)Jw?8PMf3rkuevL5790N2O)6eL-_uM`~|Hi$LX9yTnph5 z2nQh?gYXpuksOEb2k?ELypQbUJyZsv7Q#FTk3cvG;VTFdc@JWh{F$N>iz!?Sfsj8# ztdc*$WBmzYJ9!tNcgedjv^P7ds>}B=AX%0LA|+YC8_WVuPkA@_UB|bjfKdrpX~3uh zToD?LD!8JKlA(ZpzK)v9Bi-b$ozY}u`CdWDwV`*a5n^z93({@3nNZw3~Qp=tnQ$ z))~0*3drXrxbY=ehL_L>5O`RimjI1kf<|6~2J8^mLYN2P5QMKF zWFUx8y9fq;H;e5MmqDn7Fb~3d2wy=E*>JvsK+vk}5O=YG(LtAG2RhII%G#TR`&c$`Q~2=GL12jyU5*?b(5{x^zM#t zfpz2iI}!&XW8C;BD9i)q;cAq?C6JClE$n(23duCBL?QAVq~#r zJ&|uiCnBGPx(R@vh7Lsj5bfr1N96aA^W2`uTcO({uaK<+!Lt{T^gy; zYYn6K?1>D4AtZHh01UP?#5#?KA*U-cZ1(J`ZoE_*C~cD(r0LRdsazT;#iWQ-CVse#WnV<_$s(_n9rpz3R zr=$)oKvOP@rq0ZacVjack3xJb2I-8Z%o>{-k(|;kWoD$Rl2cMr-6aj}7~jFQa_^ZoPGFfd}_k@efaM*X>8cXjmBS3m_hTo(c>E% zr*z|bRu4t--=Q9$&fi%*8Kg9=hoW*=ulJx{uLSOgdc`z>dL|PpVf9K(CRUHfv|f8l z@r3d1#l@_SH;P(VofdC2zs_qVP^YAX)$z2V*I1p`Jgu}&YBZ}73PF`{h*iM>6k=6E zIKZmZ_f{#(R=GV_<#yH+hkNUU^g7CMqmFVM>LmZ$&!Vx(B<>v5xL_`Ig*C?~EP~LS zy5p*)KC0D6+ZQxuePoH|%N8u9Dd@G0@kQfP3*zIW?W5-YK=E8!JSslE9nGCEtD$|a zwrG6EC~ee)`26vWos;S+tNQeHd#U9n6G8)@BZmyno5{ntowi#@Ju^x5xXokb1V!oS#`$2Wtfh@_!lr=s!r9hxX zgT@RRLyLg4XpxQjJF`W;n?}Wg`|*x!kqX(4_*j%&cV)|!$T#8g@%pa?K9IHUN;=_s zoNW0|A1IrU(&mq+yQ@=D17=Q1)q(-tE=iEvOdlyV(#W$|CUj>G>6wEeb0p2=xLie= zS3~nmrfkLUum6?VbR4CER&t;dYhk<&wKQ_6@RV5uIKr%~V`)DqR#aBBG{OV6;3RG_ z+Q<$&nMC?EqR(uEbysGg>|CtNruv<5ON%ijxeuMJWNyaRv1ZwHCg(Pcv2nw>GBgHs z=OK^|f^-n1<&c(hWtuY);Yd})Bv(Z&=J63p93L@SZA>EOSOLR90G%D|iLqS-pAe;P z@_<%=1pWkv%o2YBBfl&PCkXcf8H!B!0X!J_lIoe7o|6)oMHK-O~^&CV)hr}E) zM+rp0bkVsecj%lZptC5-AEI3M+4TGPR&*4Z(ZbY*WW#PVbo!jwjq9`o=4uGRW?X~J zpeu7VNE{)JoQ~$9RcJlh4g=h7dGvnh_H@(f6Y9wt6*{G{dQ$Btn>Nk9N)t;ku7nfHL=Z+p-b4OyTfBq#fnlZSWEF&x7$XUtW_VOk5r>S$S%ZhhdSGN_AF3lsXOy&m)%ZgQ$X`83P28Ir8&rBwL)yA zd8iCl{3t|6p-0wdyZHTz@%^E-kk#C|KcM?r#oWORg5LvRr51B;GG= zQ(yJHOWqdWw*1K+$PH;@*1G)`-JuwRVG|TJNw~EIJ@73ILt;jur$gL9;?jQA7=NqbicK zRgqqGPd(Zie&r6je(>l`$&(OMuxSkgvr~ba)}W>o8JE)P8oI=&Uk!Cr{a^@JtBhIN{APi_EaW44e1nDx2HO^Oz) z=QPDpxtw25?j{e&{PR3EAyFWlNx)WuUo*4WHPdxMn7S1}Q|nSyK+NvU=bD3|Ylxw% zjiD>dmgc9(XkZ+}zJOKG6nmvW+p^KN1RNDKfe3!feq4h$Ae~g#=qtiLaG~?4T5mOW zRMV9~O-Za51~nL)Nz??vgsmnz*R{@SplVFy|h9& zOiRNd8bk8?Cc!%dHD-*Ez2%xZU}J^P|8=!BYY2LCf9(5;m){D83d7xI&?T913ul z$bk^2gw<~HMCWt|2CK)nn~oFFfpubHHTNNRa~`>ybL6hnn_IkZ0*|F6j}MTWQ530o zgl2W@t|jxxDzcvNWIrhe1L*E{Mx;%rPXaR3sHb)61SwT}vZv{U!%6W0qD{8JN!yL; z5nYO8Nmerj!D1^^!>ahp%qb)Rp~{e&AQ<#Iq7gOWrnNw|bZM2KBq=1^%~f=*AXb;c zsMnRHUPrZ~0;UvDs>B^jQ~^Q_A3m%S=#~j5AZid(q69x)I#)%!C67P&)s6?QzvUsk zui%^idGpNqPal44Zg}U;F*OSg-E`!m#mj&6P+P&VcRt_Q@azjuY@R<9FtI-KG4BCP zOyV@&kA%rQ(B&~3POXFt6ZncNa=2CY!#D_~mLa7p0tUfFe)V| zmeA^nGRosYpu!h9t7~gPQp{@hB6NjS4@(ak1m7AUDIa zLS5!s=($q4*0oV-bKM?%QZZYsij9{r^oJ=T(CwlFm>$?t@USkc)y@0%lP8d$EY(af zIst~KIQ!s*GY>DEd1AoXGB3I+N}@hWN6}WP&rMR^O;X-XQcHr#js!*tH9_F1Pw%Do zC$k5o{x|V{u&@zKo+T$4whrvZ_hykRd6J=5mieDfHsxeM&k0IKpr24&(@`yl zUL8V|1L_1cYNYH4uc1f;<{}@rDt0sA&h8aboNMEnmOuu^THcbU7_8-5Zx(zQxrQ z`~2tEytaJt!dtecKYjbf48GO(z^2qKH$3Wkm|Sz?f?IC8ExP-aB^?XrJv2D{i@Oe` z|M@Z1PXfRJRbfA9bP5Sk%zFV@GvDdc-c_%NSpgy#l0-BBQ%<%RfMCcL(Ev<2X=4DA zoUJSyfMiH#SpB$!zGTXkxf@q$ili0AE2Y-hFlnouP#U!;u1Z8y5+xj=H`99nII)M`Lw4J`@fL=9 zUr^nHO1aZiCe)}Ot4zp&Mt-KoQBCo!x_Z;#BoCa;ZnuNjV+M_qdB4M14RYcw%~Da# z6%DH9_`<>(W)1)%LLJRz)hyN4*1Bq|mZ-KCg&-YNts4yZ2kd2(4DPY=CXrJ}H&?!w zsxHXN8=^E>QBkhTQb%kUu5eVi;||V&$+n)`$j^TC^2=T6VR+t?+@5n6JehtJIQM-$ z%Yh+Ktv4n-1#(ql8cBhHBTfS-ux3}=X#fS*?2hFMkUG~$rW9Co`y zPAX(AcAgK16dOj84^$AQLNkCdOe+2;!=r=@kI{1km>lJCl};w6?JS-WxVEsZa9hFC z1ut3Ow*Dz7n+klk0RgVS>~(C)70|9V+jbkV+3cDdXNR%Z&f_;J z4+LSTIp}~K^VC)9di8FVSO04s=3_j}2NsFyBR+$N`L;%#FW_Owj_-q-BRXume~6bw z`tq_q+^mUOS-`*895ex^X#(bdVv{^LDF9lbe1X|z8X^p_><2l?F}_AQ+nOe7WEzSV zLLsHV2Kol?);XNpZ4dEG-3=*rCrHkY6?Wbbm}N8ozBqKbna|#UrxnE9F%I||a=RqZ zg%h)X;eKGnEnPdeT)d_KGk1}9diGAg?VdweUU%o|U-#fvwe5~0k3HBiz1Bni{(SnX zx#=_i^U6IP$Kmm(0;ah^ZWf{e__I988L{ICo`*Rc>>t(?tSF#P1%;xpOEHHrDp9GT z#cVA#>{Ti1c$wVvGF!`=HH?nFbyWS8fkI6u)gw(5g$6D6%ChO4qQT&H}{QajMJ(DHLM`bXau?fq@0_n^YI=rV`T_ zB&M`r zVO*^#wcdH&Ro?Yp-m7LSz-%zKYOD8pXj5Jf9kaKa6n7?brjsr!^YQJZE;yOMgbB+b z*FLI%b@hwJqp@xSyJ!Pcb~XlgV=S1J{tTxSCFm+*IOS4;0uz}*p%Zvve@UPC+3lb1e6Oc! z`d!o3KJnP~*FDS6v@IJlb;#&1|Gc0%{jcA(oxBN8!8hP%Ufgl`+425< z2v-ZqD!d+SJHIVUz|+*zO>1hVo<2EEJwt6C6=suayPzTHsx8oCu*+oS09PojVMc2e zwOJ2_h&WM-4|h7N=5xEZq)$#6Zr{h<@{im3?{;pvFYQd9?f%nF{5gK*A;h7XKsA1# z8ZU~YA>`#=y6Li_V0bVUV_@Hq*@Fi=V_{L~A9gBXD)5<;;`AQoqe$8T&luOW8wLpl zSfSm=(LyRWIinVrBRQ_vZKc)StVK5?Id`uwqOYTa%Ak|g)j5C1UN#WX7>KA32a)Hx|!aih$p0*Fhd6U_P zuETkB9X9BCPkp%Mpb4ACILQ)}%&VQutDVf_0?8J;76mR~$H=bQiM<=&(^c*>NZ)6W zzRz%i_*zmN=DNv}&SIldu~DhmaHek%Ey>;j-hOA)%hB;48=j2UJd3IJe zv8kk5OdcC3${gVjf$lrWy)PB!*RHjWI)2MvznB%Hsz4tN|}uz2f78hdy7va?_pZGw-~U zK6B4y8<#KLaQosVn@3LGI`ifoJ8xP4G#4zrf7$kTKiIzbC#3_AY9t*f&9jQy1y34XIq zmxf)m+sK%HdAJ|R!~KYX`xM62$dXsjk~x#BXUVH)!6P(BUuA3SKq_l@gRC{Epv0hp z5`zj#S{yklaA*$V*qZD^1t0>m6p+RLoXXWJ0uP{mpj*W=$2((DF>3f9*5IZ_CIESh zO&5SL=Q*W{Ny2eOg5tg;`Ke2^kQe5ZqX7897Ex0~Vp>Ybh&=FhybZa5x( zVC9~3SbF*Hlh+~n-&YvITDu24?$U|E|{2`L*K}cu>dr?9*(nj%nOd;s!-{d)c&gEcJUcQhA^9Gz} z28w*n9<*A2nZ4yZeG#FWXtDeM2&ht0%Wd4;!e7PCp&#X z5sssIZkoqMd8-TVGKB>}4vU=FO;&3rBwIhz2qt7dwg8W^XijSsEt0qyb^I~@1D@N; zW4;?>%~EGQBz<7zwpy{3UaNNLm_*h~trC%bWPke)Y?Ee<9|HV*C)JYyzk2c{pkPhl zWbKI>x_NVQlQ1}$1QTM@U>{2vF954`lX~Qc?Z}Z$f}VoTG9_i1IVBaoXpT+?a~isM zJ10x~GpE3i`9|mWYpJ2}pFhENS?uP9YStC9j4&_5gJJ^Xsi>`Gj!vM5IIh5PF2)ta zxI{lu;z-5+kcRi3>-p)U@8G{bFtI39A?*KdB7Pw~p3K49_FaAF9iRnm16}Sjz-0%s z9^R+eypJN7R!VnAcz$BMKE62KV!F*FULLqoSZ!*t+$!8^5&L;eoUh-2u&2-ja{SXg zeE;@W!j>XGHg+#h#<;zq#{E-(M8cxoK@1N-M%)1(XLuwlCXwoyH+!8%}SBkO53sq z2ErJ>XD^ryb08dL&i`oE^M8iP5e8(v{@-;mtknTg-v=-=-+xnb)LdWAuisSDL){+J z*!5K1_ojb(-MkQBeQQ+EfvG%mR8v13bHlMcfMAEoIRI4Q-7B0Ly8tuJm#{|KLV^N0(kOuXgc z^q=s`OB3VfjGT4fmh?_xf8)MImp)a|?}gSS?af2E84l0lsgqZgp4~24M=YN><67#~ zU7YzuxJq~v72-0sU%G%SD{6+h8K%ho@PfI_YJtUM3kYioK-LI!uw{ZGx{n5y-rAsM2ENAIRn^J| zySehN6<{S50MN0*%IRz6q#gs^9g4joA1^9~HE|YKl=EIGK}8yIyPQ<0@m+_{OTYBd z$@Cw7x(kmx{AWCH)WM3wKYHe`b60-6@$nA{8T!@P7x5Lp`v}i&KmPil?e{*G{_36s z>Cf6;pgP*aAj9SW-P>VZrZFqd8I9m^vQC{2HEc(+w+|Kd-MKWVC_*R3gd@yFZ(<~2 zGP9jrAIo7x#Uw-^Qm7i!s+zNYE>%}JfT+~}nyCI|5Y;yZQH6hisIr$$eJE+@ka5>) z!?~a&i?Sf|GB5gl0Ur@9X5ay4PIP-*o&pai203pGJ8cm82GO!=#p_GOx$$0gIdfjg`d8vs)!#uE!q6-#$0zrp9$G)2_Sc=!SGVuD<8Vp%bS5 zWW}_d>E8(Z-GvukmOggm>2&&;`Q3pK$xC8cnlDSzF%)aC)s+rMIkK9 zl7u*(E}7XBwjf!eIPOxNmC`Kkf~YyF5OYA`O(ZAd4X<>LnVJ4Sn3>7+AGn%z)FoLe z$S%QDgRwPDJ$>SPoQ!JYg3P#2?`U&1l)A|7>nMpjRSMk zgmI!@NpT-+FV4gE;vBXs^~F(+i;`%+X6D&G!DfpoMp+m4yKJ_YVq~MekhQJ-aKA!h z0Sb);D9kaI!bH@J%{j(mW~PtXpIC57AI36OZ90>kTa`^N75h2w0L(31>svI{)K3C< zKAw*ULxGS##EI5~TH;Pb5^@Qjh?n@3!Wi<{3t~{&RS=cnsz@k_;gAIo-sONOY>LHD zF$WPl`~!%u)~Gc(WrUIdY6|Y|0Zi}|xGQ-sY%*^*zhNe3fe?!foS_dY$a$zB8>q0mUXDtVNcTaQ zLINnDS(sA7e5fMzbh?>hf|+8{)T&^GSPVR{7ZUTrBr&L)oEcVC zQ&w;s!k}`>0%3Gn+pBL<$94=t9O5SqlkW~6?h%FkJx`H2-%TW)JyYRn4gzuB40F!m zI<^NwjOXVJfJoVi-~bq-WKEfGa}$mX7^(_ZU1)FsB_VKbSE`P}UK>T|}0M>&TVjW@WQOG%>E% zWuZ*38wa}hu-#I%G)H5u zbW2mT07nb7g1Um{0=@tz5ZkHO<;>>>KL0r@UZyzr7}Ir9ZCZ0Cry+w8ru!OBCSj(4 zBkhJ+G}(D3Pv9BZTqXN%E)O3D6USWTiBY?x)e9ys>wmcM#amuHinsfA+%T@?ChqHV z{_fY7y-(!|SVzJP$}`9;Hm_l>sH$2vjqGP0CJr}GGGEMX`(SDD}8-U0Q2a($-u z^cS}9ZNjts=dxht@i6{vo|q^{FgatDT$Dzjl6G3Foiw)-uH|gX)3lJKhdP}en*Y8w z&JTT-l$_Y^+T}TOsgyRA)Tp-gt%Mb}i!R$>*oYYM=cK$~W1)|9k{r@$4zV1~Jc2JW# z*{hTFG_5%aw)IIWSZXNysi~m>cnh_w=~)&?eQfJjlGPfy2CQfwSkb{=E1DXre;m=M zdl%`&sZOhdPVFhp3xKHF9F?+aQ!7mrGOIw+*|V&T$zH;u+rG1-QLq|_ z`u#l~06o^`fo$aAn1jC=BZ zxMu~3>WVB4;~0jY|OY8_SP5ND`xI>{N* z!3|IKJK$0OU|QP!2#I!h0+rLHfjq#XGjsw#pWSX?ExM4CZHj}bQ@}|95a=1S{uHu0 zX|Z6pawdd{Y_iypY$9fh$as*NWkBEUVGKw`^x#7F$-gn4{9IR`Go^H|rS{Mv^^G?U z(PJ*jEQ%oGjA=w-%v)qJ$6}tv0*hse?QsebW*UOhMb$rBuXoJMV##ox$#jAv?3|8( ztx>bH(#|3QEJ17oT^=TrowJ~=F@QC4fYc)=Qc1n0Al4BQjpbs^BD!;vJY9C0nLR*K z`olEkNfMn1g4%jS?6QjlW&SGbM(eL(Dy@^PlkHq7U!n}OHE@^kS1H%nHYu`&2y(SD z+%}y|;l@jvJXINMGv7}h;I>KI=O!#)FRm=IYu znJpkBZ8nvzQ?s+xNu2x14iFzhJA|m*jfd{Gn#_jdGV7hxO!eldW?gT=mi_S9Hf({q zq#F`DMq|u*4sOI`k(DY^C~9A=Vzryp?~Mx0LaP80n(XLwP(8>`k6t&`_;YQV2qt&*;7?*E3abU?m>{7J*kpxT)Uvx@ zU5MDT&OiFqwE?hFy~C?;4Ae0k$Bz4PF}`Go$3G0u!@_}d{jPL_u>b7W_ncq%Q|{b% z6ZzNA4&#rXr5xcQkZ}>9N)sWBDmkCwe3lKrUPrytVkoAv&+1_tnINw{*&WTe!!dTY zY-KS4eMyo*49P^|IN8J#Vv=N@12y7oPL1I5)CkVV-wixU6a_|q{ zTvOD7qn0{Lvt_lV)goBre7iPl=|**3T7e<|AAB#XPV?Var?c$OJStCHOEx8I7``;E zIsNbYvy*Q2RabA~8L}91iOU?{3*tzQLWJ01lA%MWO$C_HC2JF_VG0lJnOH4rn}_%>|)=UZ37m0AQgG76Ry|;5Y3#@r3iJUPmM=CnGHV zyI9gagcX>o^w{yxD;(MX%DFUP&CUFJz?jyvt@Mp=u(aP3-aH`-C@9;iA zRDYP`oMDT}-AC7S=OKyP&^7neyAx3fOTWxJ9xnkd(&d#5gc#)W_Q6AoVc**(8a|AD-QSK^-?PCxnQ57OIr{~FKvW%^&~W4ICrJF(?Q>5p`; zAKwGCt{@*CtZTH39Lrr~iaN!0iF%2Pw^+l#$dT7aT}nuH_F0f0Jha+b?@Y)CV0m;; zzpY+o-gH^b3dPf!lg^VIhz2nH0zSo8 z`jTXq!|+8hW0$%z+HF?QVD_%C*b$nGZXifl5eEbr$ujbkOU< zewAuAwP#Z(|6^xiLNABJ-sjZOeT*v;17F$nK_i_D?X%qLcCrSD`I%% z^V#h-Iot=i`W^tunV{i>?IF>4J4iGzfw@=w%+VsU9iOIX@#^B%Vy?KzN4|I3BZpqT z{}#Q(|0oOM)R6hUr!!0O{u92eznLlySu6uv2QI41*jau3s6IV;NHH&&|3O(_fM%98 zd$nC1>2QvuEE}(3I)e>3f52bu0NLP#VADd?Dwrf{Q3OJc**69|On&Nm(=03eeuVA7 z<#7>XGFg1q{Wt%%9pv?R3*y{h0vH`<*v*cI#2zJWM}BkNYi~~NKl{SW>BFZrE!v5*MzV@NF3rmWpU722khu*ejghlGPlB=k?cG6P%R?ghaC;Z=p zH_;Go4BIDnpniEL5fXWD?kpdymzrHczX1dQ7!zUjl)U{#YaVRLgF|_6(15`f@?{Z% z7y#A*t$+OjZUNuIt>gKUe#5xx&^T_gbYbCy$oS%k{bq8F(%iy}``=z*i&IB0MV?{< zC^3M90rWF~IKwNwvJR9OK*9j}QP0ps3iVeK#iW?)S2EmQ86RIVp=?gHK0do-g=Lwt z+_u=Y$ak&fI^{b1jp~)fEhQVdHp}fwoBd98L-DO8_bS`$+uY%-nKCGra0U|rQ=$|n z5GoBg`SPI&v1 zxEZg;Td|0{aZ0le3P%eH#?Gc43zVc4dPRo$&jGQ%E~?xCF;fDS;!-N+Z8kEy zls*q5;nF~P%s9*vGdMxaIQIo}gcDAxY0|r#1_yBFP8>LAQAXh(nsvfAO+CS!PuU$l zL$0%JKKgQz+S8OgL8H@jrhv$)Iz@MB8>w4rO)rh({0m0$!M!+$2L(NY1ZF}HvUtKw z`gk~F7X-*vKkgDH73JBDq~d<;pci{9BD*i>c6mL#m(jBbnnPmlUS-~|Z(Q~4%(}Uw z(km{ye928;|M>B5HwydhJD*8CT0H{4)6ja|#F@E_DG?!0(x%lHXP;@c_tdU4_9zq#3V$6YsHGQFZ=dH+$nue$PB%ev2~9X|xLi2d~Z3-&ULK{QydWB{V! z)s_BFudZl#b*2Bqs|);FAYni@#Qwn3)Jl_Fg`D5 znf%v=f8#@g+n+PIds?@gX^Zln2l8DVu=JqdpJ@76WpC@&X5HhtPp}KgB1hPYag4u~ z*JfW7pgUHiAYI6}rGtX9bLV&epmX;q=+AT)!i7gM>2FTh8~6tKRhjp6XZIs2`BCyj z{sQ?b`%}WFcFBr}gTC}8np}MZrYnyiT)nPXSArN86v9oH==(iHXJsHe_D znmwyMtsc(vAGNYQ^$OddGVDKdH2WrqE4rN8fEHzpRO1I$Dg z4{gR0+zW+;*5&SX!aD2qZoA;7UMVLi6Lum~6|Pn{ z8of+7R96SJFvkl55hYm`%zy?a#b&o#T?J03+vD~5+})X)P67F%G_^V%G}Y#~Wm6Oh zgn+H?!Wj7kSq{5>F1Op~w35HuvlK;KO^^~e#3YK|CCeuSr_>@%mN9KF7w z4yTzOh}Hc@B~UgX-*1HIe{W`;O}5^GPOBzp^lfX*+>~pZP|nQH<4u}kb;<%=GECfZ z_Ouvv8Bq>}D+-vysG`6LNkIjUV|r=~ANzw$wGV1yZaKmXnIcxceaFQuro{?Fy@NPU;5BYd4x{Orb7h9Q=$ z|A$!GTQ8eNa{MS$cjl8$ri^Up6+>GhuZbAsnF##F54D&{_Fwtkt zin|Z90+9IjD7M3~W}t!O8Qq0-y6L3aqbDCzDOUq9a~uQiZyKCT%3!Yu?3^QoHqq0K zDnwIKUck#x-nmBEYO?bCfm?Bz)B5>dssLeT)|l8P3k1G9^M1RZS}eVPUGn|6@`4@M zB2q)fyut#kUpB!bG6BHe$YVklSLja93hW@GdS3qm$Lc1Gy%dK&?Ac3Ja#Pb2Z@8gl zE8cakv*$;Y>z9JwlA^eYXX;#E?!}RRe@(Na-f5#E&#pKs&&QMG^G%#twwOqkXWFdD zreI6h3hXW{0z2%fsqHzEWrfM-cvwG-d6Su!&E`a5tg^oue+xo1ig{pkyt%(6REcRs zv8NMKo?=k}&4pWpup|$HBwW29Y#G)?^}IV6C-aOTdPaAYO$03e{ME znN2+n?24YashN6uO^td&J(oLnQ{$*+^Gm(hpnw9SvZ+~qw6>AGQ^R(_Or$7QjeW6d z6W!wSSCb;PNOYADT@GYs2R)E1ivrVl#H_}XENB1tfrnR7wFgTvcPaU*?)-DVXRl$)1 zCJ$&*ng%RWE+5c5q)pja`k?2hfoBwVe`7njAN#Km3O(h2w*Magf&NGQ$NK-y{a$~0 zya$J=Dd3U^;*I!{0|!)A^VI_<^XCt&mm8Cd<;#;-SvOfU{&v=CQMV_qjqL z3FV#zP3UJX4{?^#`RaTG>R|p3$TxYM@?6#(XQ@XbBma_EF;xq*#_JclT3F0ej!;a` zG0}ICim5k=&Sx>*d$-VG7qbBu8@h6FH@QT!_0#Bk=F!BE#IA%;O}$gpiUOndZ5=pZ zXfd7jiJ{fZ3m=YG4yis=O}1C#YA=1alQ!;^ja?pZiLa>4c%8Y-P>jlSQq&yvWyJ@@ zV;*8*>vejwkwVT4E=)* z-JVM(RUi=dpC~7DS}OA)CO`U!YNjW^+=I&#`oBx$ZeF8X%f=h>h>6vRyAsYB_({@^_cuiV2(7Ut5^+UGc{4o1d*y zP2QpxLf*@cteRWC^75sRB?@nyJ@L5>({7&TvMGV$67v;<&TCxbTXV-0ZTq$pGo z8XH<2*%}c?7SwoZ0vCEN3^d72N`t-0b7^3iyh2%Ozru4x;85fp>$~1}{T~*5;r+t@ z*TUnGOvE1*%IsyXAwsQP6E3vZ35$hy3;)S~r&?9FjR*D<41vmGc86>hdX&7^o#e|? zm~+RbF;zj*9mpAXdvq4XHt!=+-*BUMT^)FsnPAX^LbJg=tUU}8?!v3Cr-aY;9 z*ILqFrQiM;-ga>I9Yg42{riyhLL%0J{OG20)i6 z@0fvBXmOYFTcNu_fwF{(fM*2~OMrXFc3 zr-8loWwPQ(Xk5WK@63Xk-sXa4?@!53xd)Xe)F%Q~S@D~fk;}Pd!j;z5N~`jeb+>7c zdAHT-v2L{fm2kGAdG=NI^>)sVK@4b#A?%!4GYo4h+K!H+Q^r|Ugz>j&}0AU+*f0IPd-aA1; zIC&q#STG`-jP+Wi+==77v-j+6>Pq&1RXGOd%7LiLS|^i_P`Q66GWD6VG?}v`xis&Sp{Vz$q<~0|Bc9nKQ=R zhgIg@MDtZ(bf8x!MkNk=AFgWuL3Aswx0k5u8xE{GG)J?e)d75!l8Vk<9Zt%=9880u zeAXdS!g4Tf>tGHliW3eS#R-RT%Ee)vW^o)aMhA>_om0;JJ%;gL8akHksdpAj#%=-K zHKUj}s{WvKO!`2|NIb>9=@KV}83{ARKnm-m%`lQFXHtM+q(59)m&Yfm!PHWOU)G$+x~ypEWt8;fMzEcuOcD$j4p@o}nJqe}v`BWHQ`S~EtC>G5HjIjRknuXU z(PLrxFYJz3bY%VSuUz)lt2Kh!zWKQuJPIW;gQbdhtee@1A&b7f$D=o;}F_Zf1=ry>uwD_(D% zhdL8EPsqMi-L4W<<%1!!g!YqXDXkh(?2yKmS_PhSUjgtj`jW}1|NZarI_tff0xBu< zGb+Yk&nU)8QH3^Y>NlV=rC=oxp(iIx5|uRFOV!Q@j(83j3h|zLPeo21^uCTF8**AL zmbBsll?J{TXqIJDTC$!V0?VOLh@p_q)Itn-*a2*cLVZPTQ<7~Ho`5_+r!#C1U~29? zSt!uol&$GmQ^RaXr}26hJ5w0c3K0`gtso7AAz9!MdV_jfc-2F3Oj)5Kb%;s|IMvJ- zWZ9cJ$k>}%GF~m3cWF~u(os>?v?hHCzb{p80-3I=g=~e6yA^SJK?#y@W&qdJVKK~1N zKZ>C<*o+K!N^Z@mV+Cw-#wboEPd4eE75dk0)eij?4VUT=O_C^sRim1mLF5qaL7c?N z0XN@_lfXjO26rQ~r+{uS4C-3JiDo<7$pt~i7PO*VKl>FQRxzxyitYx1prUfhP5+{( z-S0=Hgu;oRVe@)_fg9pfI{vSxYZ#EYFjGf!;3Y|FXDluvAirK+JP^pQl&`Wb!m zzx%Fx-zNrOj6dr(JC|pA_QFCQ%o}i5J+T-XuK|b#AOVnTv?otb>4k+nn9uXW^V!ws z3_vsh34pwj_Iew8VIdFZa|Ux&y=ge5@ad+lrtPMb>5%CI(*EbY}Rp8 z#$=9|Ky{LM!kI+wK;}@kg#q>4O&E!S$eTr}L_qu_{B}OYAL5Vm;vxPNPY@sF-+(Kg z*EM!Bo2PpxUW$S|vlDnT9RknLk2lbdH}1LT@C^JD%zyL(qx*Y4WQ>b2HG{dK!|BL5QMCq=Xj-QV zS_M^WtJ+nOn`8BCtuJ8$n8f@FuYT)F>B7o!t1q2jQ7P=Fg|z3aDf4xX^L1_q@aAe; zpWp7$Z07rJCX2KA%;&8C*QbVDOMzO`a1^Q&=+_=;aFVE^QAH_=m7O9R&-xfwG~?{#>l5NC~hq}&!RM5 zLwm7V2e=_-opR1>LzXSeh0q1I2g=g?MSI5&QoNc&oR^q{)3QiDtNM-E2WQN?&ja`= z*S|dn&Rg;ss~tmI^)LSWJLtk`WR0xT3Y>WQXmgQNP}r1E`DPh0s2L2zcLok7tV2f6 z5pDO>j&yrQkjoQpnKj4#JE71f?~(Kz0wEnhq$A{$MLOQ7P_Jt5ByWO%lnX z^b^cQn{mo@a^^O0prFI&h@uG_YAA~7#7G zn@p~5GFn(wl_Rc=uxiloxgMc(+|ayMyE9gFs1Dpt*Se0AT}4`$B7E@0!C;(d;O$Is z2F+=W+Izl51F=87>4`-FDr|l^Xy7Mt?=UK?=w-TZJJX?aXuxkQLfLISc}`MSxH%U% zhN!S>Jdyg4d$8N%%MI$1DBcXg=Rp0Cc7G9alyGbK-{&56yYa`xV5!P<`KaUeNjB2% z6Yu z`s9!Nge$k!@Y)=)Nru6Tb9CV+O8l?c?{Q`e39_ge&Oi3$T_0g{Z!Q7>#uD+RKoZ0g z$4CYNV_y<`=#94RW+>sDxy$Mf>3Xx``gC4;-s#XmuT!EF5gkPA8y&C8M}N`sIN-=m zPdeJJ%8-+!LjO&%1GPhtajniY=zVIQUNW8Tl4EY@4vizx9<rlGemY_G zYY5K_A=)0WBiC5pNU5YEDzO|nFDg}X-g!ZWDOIFBB~tf`fThG2+e7>$5H2-R^g!zb z0W}M59+gU`BRbjjkHlMTTjD6Ga4^6ct}zHF9Re*=LuIU zLskbVFzS(1pcD&@X=^-R&%cukxHM87I=c!*{ zLmdOe&YQuu@ipCV|FUrP+pi<{I|G~R-WJ9~)APDYqb*xXXei{imFvS1bBv5QBw9~eN#&QO8l2JVD#=C52K zy2sWq`OxSAnJGw1L58#wB*O63NmbMvV8sz9*{@mVL_&8lYJ{y!z~YfiqIM*al0rW5 zrZPqpOdP0wl;x6$Mrsrk<_Ao|r`MfkW)rOf`3^>vrd_^PbyOk`472e@UpTX}(^nA$ z(MsxKgc1KD;>0qkWLv`r39drEPiOwpb^5j5wgmNjTfJLTT z%vdmT(F40qI87jw=hu%6iVR|?QpZF@o6!p^)rctZJ2~-@@oQ~7%~3uxcsm3V$Fk}( znSU0`3~g_k>$>V~!iPRC(W}?x`K?Namd}x}HG70uiY^reVbK|Rt>crhWrD7~OH5uG zBDi3W8XbX0ryEV$*u~9_J;J6t(}EG3yJ+g}$DPp`=dm&H(sK7BM8L)hSu=Jsc4q0) z>si(ORtsl{)dLkF8LN^$hh2j$DV?NwV}4?`OeGOZg0m+)oD<9n>mAB zp^WIE7aEUcKrcCsES+Z4^Ol1TYClJkixlKA4I(oBt(HI0dWUoak$+&>do(w6vK}0v zoRng2qa)OQf}D9WpLUYvS6<8oga&`PTB3(Y!B|NC|52^U6cMOeK6zqxoqwW*uV6@?+88=?_+7XN-NyYZi80@Uh{Zg zKD5Ws`Wu&T~dbXC2GOPNDImzs*5l6`=cP7NFvG%9rnZ5q_T?;v4Hd$V-#ck%xyUk(or zuSP75s&v3lW@{=$DEq^iooP+Sw3Ftq%w{)U1_)1HQydLV&Vp-M0}G0Jg`!a-sW8#6 z@yiE;pGZrS%qFK08>cbtD)hVNY$R7&g8jUIXjbYhI%G}0p_`Y)+JnHdDBt))p%YKu z@mq&y#oQF=#ep#6^o`l4j=?zS@^W~hj^W^+xHY?{jS&PUdJz338LY?G`HW>>T^)uP@Q}kY)@#c8K_T zo|s^$d8*SMsonmUefC%rb%eU$;7C3V8^MJjUMcxUNmxJ00Vem`i0a*sIZaxxG(DG< z7;JMLv>G!U0v(?6%lXlDzCSDIdLz~T^0!busIi8$%CZl&NzjdC@S_dn#mO?k6uT)m z>3TL93K8uwtM515gn3Wrj(mAv^=woqHE;h`L;3Hl}J&n=Eo5uCSoP27i z+NeBO##To95sHo1B+M|xFqC>AJP}>EoaSo*??m7Qz><$q`v#oi-H@EAgoD(es?}8$ zRVESUIR)rOqTXXHDLuxJjP%SC)K0Q^qnE~RL|N8D_V%O@dlmN)9g;DB8PKHn-A9#P zbeW8TBaxN){aicGZU9!69bT^vg!;QN{Pyb1ef8Mvhth}fmQT#7S-D;qcmO|HK+~(_ zbs6F_+t`GArLD~jy)~|NvDXHBo1*O+xe{Vg+=qOb{A34w#I+HazevpA0e$AADdD*!%?tv@V@y5Bt}La=}hH)euP~5O%gGlyp;+g3*dWr+nqW2wo)DVy-UJKNx$5 zr)#5J8h#+$7mxuBQg#*$ zK$IX!4LNzlpDULfdYg%_2hPt=a``Jhr$xBEUBg?2HTsQ?rkqFW@ zEXnFMT{b6~uJbaRT-qnIy>*ooJg0AeieVu!+*Zh|L6m&oA7VkJ|9zjeA-7dAd<9yW zU4tWgkT(jIP@H|-g#^)=<~;A`Af`LyW<%I~;x%6)H*rA#tEfOP5ZOd%>Iypn(_aE` zN($eIVOz3e@&T|dAkp27(mAa$eNnqpy8|ph&=H6?JTFXsgtLiYIvl9aoSBfkGhIZ9 zXmP*(k=WV&^A0I%Jc}HGw)t=+R}ddQc~+toLX+F>_#nGSSm&Fb=;HC|&i2rU-S+5U z-`tEPd_%cJ;W=lVXel+-DXp5uP#2O^m6b)AIG}ed@$t~sj;6gZC5a=&=u(-IYgz=I z_*D?|(y>jb&E|Qzvaj0(vR-xpdCf7?`Iq?OuuaHs`Q_A}*5|f+!m)d1D`X{8L1oGvY{k zpBrgd*kv#gQ?y7n3at@$I$oCXxC1;?UKJOgI7pPz^>lmkCSrORTSVCv-JE#u%}>JB zBn3d!6x9h+32FtfR{&6v+s-SFkUe3svT9+O|>I5HhfeBfG0#h|gz7bc+T8`K)G z>ul>WmK%d_)aD*d?6sox`)IaE%1qlUX#HtbZ?1bEeA@ZAz;hmxwLUfYip)~ctY~fOy}nE7($F3G1?(|_Pe=HXw3i_-USx@-emp6^ zy%KfdqKv1J4bCU?^p#itDGlAeo*_1Dcp(z|QOJl>-Paw>Iz<$*rZECml=4*$35;bVHNx@0W&s(!$* z&bJi$N^nDFCYhr1bm_?zg>6~Rr|VWN3l<_16D+c|l{27e($R6<+v>s@t~>(x7x5@v z8ZaDXbQ6UJ1k{`mKQ-AAO-ZEriy3kCu^{9wc~0SUiMcboe;%X!R|NlNjy3%2E2h{HV(?wUUfa7(vY|}be))Jsr(!ND2Xi>1-HP#{80nxYZj>;#->&ITV z4({gc-Flk2+L0eAoTkn zwk#N1u3BNTG=FgEMrnpclNvZJx~go**e}_%PGmX_n-RJY&@s7X;kS|^6Ilp6+&0v~ zM0rZpY7*bZ37s`+2p5+S^o8n{K+z%1ODmN`L>pz2L2Cfs( zJd&N3YWhm_=MJZH7F!jzs){0`GcPrS$csnLVv-YDHXx{b1gf*rg67o=u$E194~34g9kV0Ko{=`YMte-VmIa3E z4!As+93AC>_TTQq;9x~Ezrt^int&Tbc{8U$>4q88Pt^{YZZns|-_x?#8EwU8iqzX8 zveeWUl?TLRorJ>o{<}~X%gSkOJ18EvF(6*;qHXwO$i+Qgo{Zu8yvS6?QSg&r1^ z`A&K*6c|&Z=hyFUr281U3Rv|2a1XR^O~d+Gt?Hd$7tp2c<6m~|Fc9ITsVTt6DN=Xj zl(cS_x77$_0PyeFpvO6AW7Z+&RMh<}igh2({+vH%A!Tq9vf?PalKt*m%4hzap%#I! z+;^UttsY;Wqlq!fo&i?0Ubi)$z|JOz*=PpkKfB*tt&XdZ^#-p(kO5zOT3m26m&5H< zrgAnZYKZ<$s9p<%OE?RKQ%ou2iaAkbL2@eiJ>=46pwtpMYsK0M@?$xZX0S%DE|5Oga4| z0SciJk418t!$^i$u&Ec;RYN50B!mzxMiD!5mr9R1?{OtEGYi6j5G|y<<-jb*2t%TW zrimt&Q6pF?M1hp(!D^jWaL`yv_JyF@x0EVotQkAQwojLse2Cl7i|tC3de6`08{2*K zcCC`+35I$+RNVe{{Gg(CQOlDciyY0R2>yqlF6_TR04HTgAtjGVLm`fiFn8 zkh}3Y(=LR2i`(xydp9R3CkNZl_(Sfc<5S=o=No+)Y-~4oo4fe))3Nl1l(Ws>2We5~ z>gDy}8fki@(mc`@Y@5wo7oMiHLT@&4kC+=pu~%JdZ<}2EUQd-zl=_hYJDgAS5s6O9 zi%^xs`k1V#E-8qcesLnh&XF0jfu4_iQ)-g@T0@$>SAf8mi-6@O5G!pQB^zrcSz+w3 zmp{`U=IMNsd_&DvRHU+OB`1*3L#$=cYRM`EHx=Mo#jJWY_mAzEqMDkKa?Ab^@=b)c z20akH@Up#n`Ep7gTmZdO^Rvb?+f{pSWsh&c_)d8=`DACWzEmILy96V~J$S^V6+OaA zi+X?^FCiHkkY8!PY{{qgh8*|$hsJcy?V{7DU|9^rg$@hKgpN8w&IO#F5L**wvI(uf zQieHP0EjG>Y&pq?TasM7GEbKq2bqUcO4r~IUz)8VrnbCx3LA|1-xWigDJh8;a%M9( zDN9u^bgw`q6)G1{Gq|=hi;#-EMA4tglbS=qxG95-cyknLsc`&ofV&2Gvl6hyp};Bb z%-^XXeGn6R{IVepiC=++zumLQgcLYmx}+i)fXhQOAfw~d;BDw)VJPLf$1y_f682oA zH(Q7&_tTM?Fa5qF6!g-CQ^#v5Rb|pmCu7c1Oxl$C`xq;SAVVo>56^R6>tVgn`B1ip zo!oUQIt8Idp#M4bWz$LVzB2w&b^ch3`|fm@E?~#HOj$Qqol!Q}lfTt;YjqLzoWILo z?2nvBE*rtp7iAU+;V*6m&D$!MRr{z}yo3lo8DuNBau#ocOng&gg_8OZ!-q+nTtU$| zGCtJpg20>2t<5R^mknYMdEbtt7L0L2G#j2ULXY0E>BYgyip!hxkXFX?~;1dX}Ab*=VX@iTzKorI05aU>oG!O=o1rV6ONa8358T5TdaLkUVTu0WVh%;UK& z^Fj|T=wO3OL8wdX$A zjhKXlj(X{-xz8*GHda8jH}tuq7B$?YbFj8z^5UL`^(T`@O4FQC3AsfqAh_6>*7C12 zlcHN7X3s4J+W6Sb0o%v;)4EmN9d%W{fZ(1|&{?d9F%!ww#$6utOJFptR5O*RQ>wgF zQK|-%Z?dKFf5jU}Df1UK>yJ@1g5yv@!wS^clbC1S4f&~5RJx=6La8?Eg-JaYE|`vo zgS)tiIW(G--R%zMh!bci2!P5$!`Kvvdluq6+rFi6hMjRL+KrMc4)2mu#fKJ=z3ma-l9E^qV+R3F-utlEr`iAUrU9H*M@m|95oEy zF_TbOGHojnq?<81CUF`s1ZhUSypsw1`$E;!O{8Wk0rX%!T{0q-u6_Tfj5@mTj(f7~ zaZ0y*+3_n(<75i0viUCd1H`O=)3IZ4F!W{+uP7-c3$Hos8Dzn=#zt0mY>bL_w0#M; zNVlf@eYpT%x9ujQ>q_dgt|UIyU)}H6$56?UqU6^Rei1exyrPld*(D=Xz66YBsT-Q2VLPwd;^i|`YP8^c?P*PSHf8PkL0 zogK{5IUFCp84pnB&em54e*!JlYx4V{c@aiS;(k0Yu4aIZwNs=B?2r}WL zSK(_o3zI@UmmGsf^t&c~E8O8D$rtq3Bnxk`0i346i2{VKkXhmjMDSGeIwhJj$d+vc#O1w0ykyQ8~l~{ThAyrYDRxk zO*%++aI(myut4k<<~I7fl8>X0<3VW^-*U8d5!?JybEWxW-~+B-g+KHC*eJMco7~UH zaIu=Yn!4mJ^B3lnhHXgn43 z&h-5&0J&qLcAs!0SW#tx^DjULgohqYw!5zg_&O1@3P}lnlXvIyj?!cm~?* zw*?xjm4zfm0)mhTqRIgA8jxuKniB8f?iapMoCBEwKMm$Gpy9;TiJ)ZxMx6q&4+5S8 zf*3Gr0HXt$F2E-f1T*QknFDJofNu!`IB=gqNY6jI%z;-AKoUU=8ZdLB=0J$eL0=58 zIzTZefS(FNGwu=N@k8Fs?Cz~S7$Nfse?+(k3&wvx?;<5!8x=a1AdLcJ1e{;0=`=-& zehu)%apc0uZ1#ce($)7IQQo|oT3zU}3J&XS$bszyMZc`-YpF3TR< z3+N5@*4*Wb2WsaR`x0bZ=08VVoaF5JOTG$!KJGqfjt6|shnzSqdMjD~Kk%Qups7## zcJ~ee@*ZW2joK^YICS@lLwI7 zzqQ_Hqn>wp;X&vFud~`wGanz{%l+NnwjPHL;E??h`~rY0+9ltpsS&Apx+OKgKUa~Roqk@RQhcr;y{9=k{ihAa9p?Y<;`5sa&I#^ zf{WsKJy{~+68?QxZsLb{-tRnr_WFlcDYsS0(U;F~xymi~5XB%d7qAZ(ymd;3j!3-o zc_0*3HrwUSCwci9fC_v3tud7bnON2D#$f&mNtokpGu^2bCq2=HibRLH9Xj218rxF& z6vPxZ-Z-7jWO}cU-}%53h7<^z8n`DOYMNxhCqC4@$>IB6A*WS(Y>NR8%AQRGh6~(`s#Lzv347@z_56#%`ODjF11FKHqfqL|%Cs3~A~4=YWe|W_vHazz!YU zGX{MdFwuw{7Ji|zLi!H*MB*gJlOorObF;$94kNIF`oj4O^kWeK;tSGmbtm!*)Nwm8 zH>w3yD`;M=?ocL0o}0BhloyB}khsHMk7|xUQX-q?C{Semay~#p6-nRVy?{s2M)>|( zpowx6w^~5DvDgb=C_d0h8Sq&e0i5au<&Ec5TyVAG*b95kbZrJ6x2XT=+|3+e50lbP zhBDC$?(Qk^#_^6_Bo8I$7vd^#c;TK%e|xRru5E9@M@}9oPpl^3;}0b5g8bxo!_~~yi3Jo(&fVj#g@ba!p?znxPtY_)y&}Pf ztg{bTq!;BG5LB4kPaOA@gO*@*CtCATSd)X801E;R|yK z7L%WGxnOb(DB?9pD}_=ZCcnBz6s4=Yh}@#2>OEAeLV& zp!^m16uxiyLUDHN)(tEWq(5xGx4Um|m?rW5hh#{C?V&S*4uX4Int&o+@S3oHSMm<~ zHRmJsqu)UWgC)b#G|%in2Gcp|HA;1jktYFvc%^Z1jjTq7$(^1fa&zeFQ15W&7X8Df zH}qSpU0s9pOIu%W*Pl$m$d4rN3~UEIFj)-|Q&lzt`5G14{ z*r;xtwF5mtc>Ng10oRLOH^Dc|b-(m1M|qp%)&h z9b&>{wqRiChttd48%;9snsb>4K~W`iC?Db zP4SIg>%o7o+b`R-_ph=4q1T1KT&^n+IY-z&;KF_DT1zjbLZ` zJsIzSIuFFRh=Mas7#bU^Z#Bnn3^6hdP82o5C5h1e#ZzTKRz@WL7}~fUnAM^stFLqJ zF$|0;Q2T+_o z%QHjyM?M!Y1n#OAh~G@VxV0eWkBHoEx5L!~2$3OKpzDRuC(NOu$$262MHoR`5P5L7 zL%wDSe?i)Q${wuN1opr_C}VCw(7u7Zfe6I=jq2R-%-O+N6k`{d{)6<>kFHp;2I10% zzdM6~cY^%}=8o{3dolfRa3kjq{|fBgj{^~p1(NlmXbkvddrvpfYyu*KD}lQL?#Pa> z1CM+~X+HwvT`b2HS}>g>A0b+Pw7|)V{RdI|tiYV-!|bVl7k5PRK(O}}bALPAj!#wu z%Sbb~dD8~&8^sZfr}yqZd++~FZdOe2K<~DXrvrEAkfuFqd;H`C*^%Dy{3;}P#dZe0 zcP0SJ@rN;3^UVEB`+*e0&~}T8aKxZn#NaRd8OFkRjv(nz8T^2$lOO`Z#Jq{Cxyc^E z9!jA+`2d?7P(DXeFYMewFdjodbAdndMkP46eE3F}0r>S$ZUPH#iyOfk?bK#Ocmnxc zJ`BArXzenn@f+$JOhxX}Xey#tA&z|LZ$Hu1;`O;91C@Bhei%H!alwzC-XGM<+!#Ez zU-Lz?-x>m%jf9Zq^eYH@Qa(l=ffzOewPB2mxDVfrfuR$kZIDWaF`nOK%(a4*33>E} z*ldmStA{;mY&_@4%gplt0t_+JIHh1dy9hfy&n9zac2b#Z>Y+CtLnim1R~{>DET%3V}2*cc8_> zfiLgNg@TxQ?1jJ!h$`VYptsFhUO8zyRi*F=2oS);jFW7A+(={7fr__TruQ7NR&`+~ z2xmu$g^A8bK|U^mD?&<;mF+A`PCz{2#`Hot#bE?Q60H3N2YCvQ741AKvf@bQPJrnQ z{QCSk#;OfmIChMqvDD3Tks9*KrOlrAqAFuFXS|a>qJ>4U7HlPCo?Ch{i_7e0q4;o%Q z4Z?D34ayei*F>e|jtZ#mE~02nE?U6O_{L}$ryi^>#F@-ljnaKKDvp?Q7AC}jl7*M%mxr)K!QJ4aw-Z?zmOvMbRfk-yR&iuI==)Y=dm^(zO z6Es6aEZOsr9S2jRnPX=9Qq}UxjmUKB=<^6+;{f7=KuusQNfD?M))0VmSb=PFm>}B= zn^Aw%Y#6#GQaXU$UMXzBCyMaYDMi6x5fO@$$mOZ4+S#nc`33J7QZzY5{#P?j%5(YQ zyag{qd{YD?$_m;jr;hh8`f>dgF^F)j6d)iX!Yas(84Elus3Sy(a}fJ~O7k)v5pA*- z5`2(zGWL*4u*I>C3o_DPZ_Q^B%$4v~6z{`F8xOy! z@{(!lbJ41D8Ec6dt(2X!ezzvqdr74tcIc$ZjntCjVlhaTN2Je71yb90>tyn?o*mjC zd>pcs<>8wLP`AS2RYcNG7b`m!1NdQx(W&TL}kd$xdgRxsY#~g@H&}D08gKy4hP{FK_h~=uQ-8 z_uOW^;~Jve-zpfW1p)A&_Tf_7>@(10<3K(|hi9UxUM6i-a~y@^X1*59)*Ffj=0 z3fvn}Uf;K=VrO8^`9TFhIRXjufI(DF!R7`PYFvR>G+H(cA=CepdlEFVh)mPJk#O8} zG$XWGCr{|9H-?$sS*=vVv~DobfWbgmFbL0}!LS+mqCqS`7bY4{ky{p812LowQ75`# zEbu*pg_4AVYYz7;D;`Cp=Y@pNtg@MMW^_eAKqMj~W@LOjHTX4Kc)iF)7jwapo0RAF zjSK(h&j&<<3=%EU2GQT}8(=U5`XCR=5Hc_bC4(6eqA8ZCMf@oJ%A`#F;$qf0o#`q#HD6o-C#|lW0Kr=#+mT;uNi&lK_U{;hBx5-f>@C*Ae zA^WgEo3LM-#G@O{Fo7$(Tb8bKC)byZnQYxWJW)oKqU8rPb&xbQf*F}ZTM!7jgm{6Q z{W^Cn%|HvKc@t9r2-_U1a!G2t;4hj&FY>h!(1P|T$AH#z^D1ma4epkW1q9=&{8Ic5 z&k@GM#2D#nBO^G2vsdgyWbUZXK;xJyWPg$JlH$Y7xxyc7A)_@mFrK5pB1CJB-y$?1 zEH$+?Q|4a^+=zDd!<0$Ji3w3O;b=tQWZTaPw*m~WnwhC61HoDDcVadQ8P}9wX~@jh zp6!XFBP?*QV$M0V>m1{$G4zIRi`Ge)XH>hN3t{XipE?W|zQB1;MAsjzb*jxXB+_4l zz|v6x1pp7vm4Ked?A}qXNZzMj`|U%cXViAk)iGesG+VtUWIl? zM3s;Wc9d=t)(!^_<$wr=KB(5z7)&3n{y30x)(vG9+^#FlCbCsj+Ajc@JYI0ts!FO6 zb47w`X@nWHg0e;W7g%dXs|md?2jwo*uKh<7#E?4VxIk75s2H5_2Vz4Oz%dy8{{g;O z?9!JSENUJOYdYXR-~d<*SV8}THI_^FPhXAU5-5Pr;0HZniilW`0sjH#fAtiCgu!6Z z7*yc=pG`oa)qiXMHDUpZVE>`S5DgfBZ197`u>aKq21E*k1>6s1@gINyK#U+b{~-W* zjuEY20Z0TGPHgCZG~kSA@FMdo=KqZl7ON-VKi~iu3?4xKgVq1+F?j_(F7 z(le{@3P3K1WWpPu2IZiZB)q_b3QG9{Zoosxs8yRak`*ZbqCLUZLv8sLsuNN4#_djA zpX%>-eEKlRgQ)5m%{@?6V6=!utBZW_fvt%W)h#Kdl0kfq3eKht>ciqrtUWyy`h=#XI6U!$!Gw{71Ka}f5EvQgfAWqfAiAsX z;X#uu1QK=nc~+3ALFSf`D?uGfNSPP)$@hn-glkEBpw#RL`#V7lk_1t1LM z!v!D;DoL4<`r+{tpFdS0c)?#aqqw=?DF?c#bJq6rVU{UeULb)Y+(ZX|-kn`iKubX# zK)K-=DPvP}FQ}LH2_cB8hxFyFqp5^33GOQdaS0#;h09PO9(+0M3>vHM^B)ENek06% z!-Rl8y|B)WfV>cu!^*3ge%}V^iyYJZ_uX_k^yNSVe~3nKcRjg&<`1$l$QAw>{|fm= zNOy)p{0@xu45*Dp`0m+j`lnp`#qOWzFF9cOef8D&h5Z%zRfacyeY5*>69|vQaRgm= zU(-i~j|vxpWXC+&<(;RS=0#?bn;3GWCPG1!B^pVoU zWUuxdQ$2b)_? zSy_h8Wt8Ng1c?QW7PY5VlD8%U_BK3b=~Q@Fkop*@mqJZ%pgQKD@Y9lY$FYGNi18#$36L2YU`}ec9=0cNMt!vW>dhq%!u0VI}LK?lVKx1Rak2TcJ zt6JbV(pOc!qbs=Z#rSW#yHmxYxhM(VX4o6rMAJ|q#uL~hrwueRGimSRJ6N5&> z?0$!40Ax#EZKPdERd{MuLG9Ru+0Y7ssv=1h0@Of#nS<1V*`$_XLAjS;m4F^iKw+#O z2b+Yd$BeYD`z!k^Eefm9=t}xz3`v`V<&P1$Z91PjlQEk(3U5pGHBs z`o#mG!VA!|N5y1ZgzmbT%70iT2sr3jirZ_Nn)3>-s`|JL&&vw83^>&Vv21g_G}T{X zj_CAtCBCZjy;T|5BgX2zEbJ*9l7Gt z`Ay`i*i+f6Sj0RaQe?2Rs*XXtpM;%739Wr4 zc6=&iVCdf8&k-< z6dxgLe2A;?6|T-{GX`%r)xk#R4%9yd0to$kD~-0!7bn-3c0Ej&axUt#3_McN4^w*U zvx2`ezRbgi&(uMW7{%lZbVTUosHI)+yHG zY;xt0p|>532)kID@prc!J~{ry)O&~tf|zM4ga@}=1os>pPo#YOjZtr-;H7tdj1u|`NDEJ#cT%!b{Fd9iJ+BZ4s%DX z?{2q!X9%q$LKB`^>ASs)i0o&I#J_Y0rWX30G8@oeDJwTsKRNAe{ z#1a(yv>WCOZM)*ygeoc^GIxx=LZBKTD<)QVaMnj&3CKtUYS!xGxJTO_^$qG9w!9=g z^pVQbv2lP|m2cjApD~|V-aZYv$=87egCQ*DFhcTWEH~-vME93nsXjIzsjqQ=GG7x$ z+PZ+~_6m^6MoyzT-J$_|8dl_F82K{Yi2K|sW2VcArrd>&V8Y(ASbIFi=g<{L!Jy`O zHJpIvYz1Z1UvAt}Q9#v^Q&Q^&<`@h&W+T9VxZ7 zW&V+6LyKrQ&~cYLXIzqS;3JbGkoJVc1x5-ZQOH&Wiqz!8H#nx5Zr>?(plzg*i5m7KBSZgA6Ne$H@rhLJ-xdSL}3s#h%{ zb|83n_FOmFcgS_hb;^4UC+;L-llm%e%QwV#J~eeQi|(KbcKBqPv+^vkE$}Unnsqg8 zuM>d1TLPkAh~aTwRjw-DtY!2Z-aN_$;-`TfTK6v^ND3n82DgfwdBNZDW; z`WPJ@E8-u11E3?x|p1YKe^2f3a&Rbtg z1l0f%y@qMa2QS6Cv7}Wv;V9V>X-6}j{`Z_QeUZr}gS7xB)k#fdl4~ArPA6~SJQmW! zi?85(R3Vux5HjP+oJVh_{Vp`p}ztdYt~pM> z#>x|TuA3Nh<)cv@3Oc$QsC$T5i{fj|E6qx+0HoBVG)U;<;aN3YSvHnSsFQf<6P!6I zXp4Wm27r-aOikm5q6}|CF4GzEINMkHJj8}F=AB(5`LAp1cW(!_@A-9F`EHl5ccngJ zRv}Jzf0vo=>pn4Lg0IHgW^Cv5xt+pW+pXVRT&xc6qZ~m;{80ndH8l~`uQ+}S zDAZZ#dQ|)*`<#9gxO{Dfm}*8~51(d>Vc#-Xv*k4MSR^uZ*m>v{+B3-&67=dBmNER1C=-qy-`M zkV!RRBObQpjjA6iW~=1iuF|o2 z^U3-7{xeq73&xS;$;sTBHdW`X}nK>h(rT5$I<$ z{iE>#B8K(jy}(@$e@5AAx{XKir_0-tSbV=z{THWfKBtA8 zm~P|!(I{qoz0L+!`9XjF>rmxEcAtq7y9nd|R%lbvVX$+*K5>hl#eLT5iVdHptl>LB ztbyR+SktMkals?$Q3nyT80$_0n-`-m^YJj?PxkX)*M4N-spkY18* z!t?0N;^evWU9YEh@HEkWzZTieCd!;TU2p`b(f=z@LcfSfopN1s%)yStTO);c(z_v0bs{r-I2Tot7wJJ z>2zps+09yc;K!Yenxnf!ryJHu94)rb{mJX><7sa2JiZX!rL?d2wbFck=zKdlKcr;! zPUFz)^N>93=8AFNTb!Qt`?zg(c0YmV_B-{C1b5HX`ohR#d@VaqzAWQ-)@?r8=}MpO zdKa?FRU5ciTUhW=vc)p1W1F3?MdOH?b)Jpxis`BeSKx3SUo+*m@CEI${@0jgyi(Z- z7;?E6wQf#zcm9JP&n2MV+u(R#%SoQ&XHN`Oo`oVK2Mr;}NS%l-%Nb3kL+MMLD-CPz zEyY>Cme@o6%Gxfstl2P$&tuI}PjJ>wzqN?H|a3O6dPRD1KDdMH!b5dDj6YKbfPl>vt|!^Zo*BBllO1 zPIfEJ;|?mh(Qq^OS)lzle8md_7K6XpP?k8a!XvW?<1C_~silAj6yYdv9TeX3=fV4X z1*Xh1XXyb5qZGLZtlEW=ut)eC?AkOIRrkZQ-*w>IMt#6HEfKc5D=D$3RO;lUvCl8j zpwZ5bQYO7ns64sK#{sAmAy%N{z_jU9*hdisZ1qb02#h4IDIL3BPWi7arr2Xc=X6F= zX%t!sEXV`{5s5wWG{ss%Awrb zOSJT0UF=#yZKaRy-)=tv9pFJqij7}weX>`dkfj+W5rtIS57vjBlC8H>(2M;qrb&?q ziK+1vsDhQ!kRER12`$@MO+OWcA-){uCK z1@#&DHrF6h@}X1OfdMs?S(!P3!!U!mk@6HYm5d^~aUP&Zw-p>}O! zOingxj0Dg_k{-mi+}QH&TRW4!3sEXA>MxA+qqXb9W5BCGt{~bFtT8v(?yUq~fsXY5 zAFX`_RMg+|s7NCrAc&NtfW+<+OLsQ{(%rH2l2X!0OM{ejNq0+kNlFRQAl>yAzQ5Gp z`@i?j`+d$~n9tm)J9F>sJ%?p(D}{n$b+)h$VK1AZ2Y8DB}6}{ymEuSLiT3*MvQ@P`qA?Qz8N@- z*p~PxKGlNQcI$-$@a8F|6{Vr>Y>nsa=gsYEFmDqCvfS?nx88heu;4f~6+U=3uLCiU z2v5jbIAC)A=DcD!zTWgSj98cVN~BPbY9~4PIp^l3Wnr#_maembf0hj)|8f_P#nG@t z>JRH>J`vL6GA_@Q%F*i4GThyz#gBXjd}BAQ5}b-(_@;oZ;MTGj&DX^%B5kiZQdDvs z9`zd9bCAcs3;oX2)ZUn}^4g9>O%E5(@7*Y;n+pOJdxHUC%zNGXeb$N1*LtFv7L^^L zRpYV=ub~saKD?)iD>P9@GwM2SvU`0=YA);gK@avN!&yWK&b1Ks^p{e%l!dp^Oqyyd zcq9DghCg_AqH;5zjfvo%NP`>`I8reX^R`ftK4F^nnLWZHiowzhzM;g~^NK%LGJw|! zHk>Xsb+TKINL`P+S!=5K9=}VyKs4mxTeD<-4!+(PN?v9QnQ~7)=RDYT{+?&;g1`Yq zvd#0kHmlP3_+;6$*a4GUe0Y_!A9gKwSoj6zmpRVqhJ`DF8rklP!5GHkIO1rEddjQK zwX|hPF8YaC{Eqi}*tC`vh_woIia|nkzrTBJp5O) z*@~IQTSV{9NK-9Ailna3cG4VxN+h!dI+XT$tv~ni`2$00Z_?E`gY_LyUX{mW3V&{$ zVm7J_ZGC!(fG&!JM~th2rnlt-FWnk?tU4s2DNqW1J*0a5q-&X`aBaz}Omeo7ZWyrq3v& z+mLC+3q9pIJ*2Tr!bx5rHX3EfSmhU27|^ep(XVdsh`$dOOi!L4C+9Xul)8TZNSNn+ z5k;xZT$Iy`WTO@>Di-F|ouz^lRXZ?sr2Q?VFeh4x7!zHNWZ^^eq?vz?GV81EY(W-V zR~0ZrZ8pSK(p&bZPP=S`q&6m>sxS$M8_Oeh`btRt488?Omt`OGia+#Kqx!x#q9t{hE%>j!sZnCUE%bJvQcJETCCbHB(Aw8G-l< zj+jirsaO*)M z-pje9NTGR3oCNVys~II4qO|*1#2ZP*a7xA)mEK0=y?I}Q3Ttu0s2jkj8%I68Y%FFV zLh>zugtR9B%Jt^y3=?yMFA?Ko1xBA&Djfn))h820x_*7KiQTb^A^9F86zo9k9nm3s z1URsB{MxW3YSb%{Y@usL;gt{Hn7ky=Hqb#i^cU8F1n=iltZE1q+d%6)7~F~&8-F%E=C{M?`Fkxp$ zc8C(dfYkp;Tr-)F&3rvt*I5G^>#lleXBKrspw99SS z-H9A);sx?Ag-~S9G9~1-3go)|I!nX#+Yk{DbERGg8`|q_lqQG`vMQ$y5}?#QJ!lp7 zifWE-L;7e;->Zk$3ka0pBZ@>@bv5GS7T2H!(9lntW;Y#@Z|1oRUaC9o7}ZE|ud-)5 z|CH~cJ2l)?x09J;Jp9sIsG6t z0HFaFp?L-CW7FUQ5YG50N_na>UeZV~x}#wb8D-R=wK3xA^fw{!kFOPd;-=;SHT0Y^ zjNUqri)bY~^C>}}qgM?A1U?F|gr-u9U)o^~ z!p%pkHYFOqh>Jh2ryvDD66vN`RLY|34W^7_0T2l6ggO6^E^c*|p zsfrM!i5({bp2PVox{J&Q>%4vZkD_94BWpdYe6-p4((-6Bgyf^Xo zn^IDSB8;P2^*R#@YQ&Uqgs9buu*=A$+TMehUr-b~$(lS$CBq3Ot3_FPb|@)AASUH^ zAcAKN`>PG`(b=TM#l*6$lYWy> zlQMAjuco{fjL-!%9eH$jLW|t20ee5IxPDWHFv<|!Pc>z@sw-8&Z-a4ze|5a(*(iiZ zzCFB%qHOw^xj@25GMW+m9Vdb&Rf^&9iu)};POs77nEZ1(lDzCoTnV`Bc6+wK^?Iv$ zrZo-B;T68Mpw3T*K*A{1jI{#P;P5+rf9~t%&&SssX$JL*{ia%0LAurL`JDw912@$i z3~Rw`W|QANyTc};`7+DxaCPp#*LXQ_YfNcFs69JG;)uY%*wSqIerDke z^-ANj>(W5Mm`5_@^QiFlaZE%mZ5vc zIT58PI>9m6SI}ncJBFNi_}j7{CYlXl(-7LHSwA0toryBbLVk*Eq|o~4qKC+QeZ?Ki z>!az#2_rc%3ZB0Nty#-Q3w705YC=F3ubC{TMU16|?7QAsl5;$oA4!apvm&S(I}&N5 zoW+7BWT^fFYr1)8;Rl~vZZmePRFn5~rW4Okxmkp)Qb8mZ+9WtUI`0BGq(8MGv!gWoz3v)w76^Q zoK&Hh>@?1(EniEi&XjJt$vrZ8IytBdL9Dv`Q_O%`GH0Dz`$ewB>huMi&)iNq{9+kg z-MhiEJxNd9*tRF0eovYptf$#d9q}@`F%637a}C%j+EJ(@$1jMr#F$X06n=u?AmmJ- zVq(P#>6@kA1Ml>f`_!2&Rh&m^IuQ}83#mweOQ$&}vg_f?M41|Us>VgN#CwTa<%k9nvpbh&GKAjN>yBjLmK2b zr|8Gxv#}g5DOKn194z4G5nJSs+;_7A;3Y`L@>0A)Rhb@zGUdoQTOPYB9YfKW!czn0 znX>CyeVLwY{5ZkDdehE;csHicIQ;nVk$0{$7sK&pmPL6C(c?IK^(U{A&Z;cF38!Xg zIgRQuwrp8_y4_Z~QgF@7U@d&M!O;a|E__uf?a3!SX`QKPeXztOg%LhbwrM3hZfgB@S6g_yXsqZ^P435>raVOFBsUq9a~+Gtm9NPy ztW^|%mQ7I|R2Z+31vW3F+E1Y5WDrK6l9I~})RsNd)JpGbeA+4+;RW9E|O*0X-WOV&AgyocE)-^-|K6cCg<{b$1Szj`>7YlZngz} z#D!T?i0CgBGSOsw874IMtWKF37r+2imypKY1yaCv=h7nLoairDnsYw1I{1^Prx<1x zd85?>6pYjB-l^<2e471;!Q{^?55lo++oOpsvivJS2f2WYgX!sD0){ab1nD{xcezvau#=#d zD-pf9JGsQ-81r~@PK{waUB8x`K2Z2V-7_S@Hcjj}@#lKlumtoy(d*+{NL8Z9sl1~w z@Yz=z&DX1Bo+svSxlk##V0@!?ju}YTefDN@vdo3;dzWY1X*t7pf5(ExBy+=NJ-4e<4~{`2(X$kxWtz3iS@={%o9;?V-yBcN-@2Y!Bp*Hx$)oZip>|W;4Uky8^V`4`Khe)@e{Kl>6m?}k+_ z4X+SR?Ny#6zA`<=t;siLz-> z9^cYOLjhSAgsuK9=Y+FPKY7oS!dD+__kNZm)e8G!ROUwMd;FfBLtu^biyF;$D3|&& zA~~59_)UyjicXr7R64F$1d7QCI?XnMuC$qC9vE6|Q8O0v5KrC^)Nz9jI1E9j+*i@sA$s4!R=fg1Oe5q+-;LbGnN^ zA*C@O3IKBGpg*9OP26FuYn6eobX*A^t0;H6MKy;93PLW2F$OwDosky3i4H_~viGFR zy%R^AKf#)MmFD<6?G&g84u(ExCladms)2RN z;)U_Ae@(k&NG6Elqrfi6`U?M*++HTqT?89VLLiSy)O;^rXIf7)vFH|D^$$8+ym0K}5hI!vVjjfJOXd7H^Y*1v#`o#NPqz>s84*o+-CS8+du%7j}bndp-1GV&&01m`L0F=Ef# zisNMCc)+WS17-PUVZgwU{86x4%KbTTyXr zUczSKNNZ=Ajx^TMXx}fL0Z!PZk zQqKkopxN$Wx_x^0s>F->G+)Slrqg%eA^^h11&k{;Srz(u+KF$h+xKdQZI;MNR7`1y z@MVt8LZ`>wei@%GACutgpE(KUQVN4WRiw8ikE8l=pEyNP2dW9$L>|$t2qz+CsQD^T zzO=|Ikd5c0Wx$NI#|ZPhk>fpR$IR+>o7f22_iK z&iNv@!AS7!9V+v5PO)jSB0~{x%489`9-&*u6K{>8q(yAmUK8;QtQv6Y?xILVG_QDL z^YqW1nVBrQS&2Ffqj1n`y6A$c;H0>yw&Nzaz?3r1Pl6Vj7P+0@ni+_+;yl&8FTG|N zYfkG)Q=>y~Z+%y^t3ugn4vOWl6Gn%@yzdOQa9i9~>MupBq7P(!TLzgd^O~)dgFjPx zk)EGZh7mX2imYm@9D|;63On@dP5)Lw9eNEfZ+l#Un-av{oCb{~qg7y=r zw!=z0$*?>|Q*j|s#v-m1)ZU@=4fEcP#J)#g{bY}YS$VAmkGtk~3uQ(dsto34nm?3u z`SO1{3>a2?hdHn}`D%`}TySD=b-mAl#6kNBb8U{;x2%-4ads!glE)%DD#=IjXY`YX zXH6s})HojV?8FL;WgutP`5KdjPmXh=%?=S%LsYj>9P#Hn0bMkb3l5Hq+-D@7mvpb~ zl=ObZlA&53r)~KmDZ##H1X`?YEpN4}*~UC`D%ZZtIn3F{T{WCyzh+-%pS0QGKbRz+ zBtI>SD+?!7&GdY)LtsJY5L1`1I%hxbW}RZ5`7Xk^CiA=fH2DiQ%#*Irqzsdg7t-jg z-6=1|(|d_oh&vfRzBj?Iz|2>`%U8gPg&^|rqP=?jL=-O9+nfpWvk<&2fsdme-@8Vk zk+oA+<(tDbrSaN|(IeB$ls3_P^`fuiSa=t7rk10@KdH0pDf1CR*swu6l_!>>$J(aY zGXy6lOrRtON{lppvYL{NyR zF#;oXr<}u6-QL$bp&gwC@Z;fBOs{mdYo9k21 zRqkP0@pav{3H&>*(w>@kW$sdU(fgTgk@|h5h3Vuw1*60)GrDD7dZs&s>_#dUBO3@3 zqzWgmGP4(^Ayi`V{?^ff^9uw_WoFNpn+3KEcq|3b#GWXQ#AXOiAZ%5pc*f+mmgZ_Q z99t5onA*LuH{C{f*5QBp3>VKtZdfa(jwO1K6;X6T?*m-h_$<(E0^>sck}Vw8QEK+J zwnYvqg+d!sK_OdOeYw2DEF%ylPd~%=y;NLfK~8CA%hp9@MjkmCZE4K7pfd+ukh9dG z?QYp?wfw}7VY&H8R%7+-1p?HRyWb=lU`Ww7yDz7+y~}3L2BvTZi4d&b(}f_n!e#M< zC#0_tX(%l;L|=z$`?k!aoo~+~PM`izhy1uwUR!uUnIoEjr({!<*Xm;MV@3X@+lIrE zzu9teM{omsL|09b7O(x!-I%kgJ+w+9SvbZ$F`TA$*8bQ6Wk3{|j_E{#CVP*12*4&? znC;ZFM4%&}SD3Uxly(W{br#W=o8A1%(eJB@jq)h>N_`*jSwmg)|^y4W#!vA^TLLb#$j=4Y^ffJSv(G+?o<52w9?D|~gcTlqNPt%;F(w^NknTP#)DxT`kePljam zKx^q6RUT`P)fDq1p$6TzOqKNlSLj0QF9%+=Cf0k$Q~%m(K=o<{9SGe`0SK{V#(vFDz{QByxrJBS z*?kG*?)6Bkhv*Jg2_qpZ8R&5vd?h$>ptP^J^CcR;j=xoVkBIWfpZoP%`C0XsE3SQWP_t zeu#RC$}FTSL_nZkBFy5@rM(%wM>FPqGK($JPm%%DKuT!MrU30{I=%dlLXN;t?#FK_ zE%5x%P-ddkL`d9Zi-3oMKSNLqKb%uqVIzq?j`}RY{8enO&MSX|ooqZX^jH|nmK5Oq z1-}3KF~`fBw5F_iNc}tQ1E;BFS~d*3Z-kXf-$(M*gX989B#JyzJC8J&=hC$N69;)6 zYVam_99G6m?LC57ntS~8kC0yt8L41?Nz#qvXb*Vl=6M)H7oEGP)|6QiC3APu`e8J= zh8iW`)j-2@Fsb{JDf`#Q88I~$d_!kV3TsYcwCZhU-0L2$$EzTelI%tm31!~H#hBbqnEec&T4t$_7Wplrm{ zh2+{3hk$P-n-b?U`_ahaL%I$$6H~bQd!EE57LTND8n`Yk-Nmj)FEdj-Lfi+jLy{e& zv)&|Hq->c%t!TK-S{7oTR;em}t(r`j=A2QOx*}k6 z93b(PQ?-$c$4+T6`Yy~c*tz-Y?Q*v)N9k_$cT$hz>hIN2MOUB}x`WBHyA&4>S^MFV zvmJ9U`(aY9#lc|B>0O{MBBY{w0`^V6%;F9l!#<4F$%LAu7ls6e#izIJ^lz@37fl+- zuG{H-uC>hjxuIO0MmsgDgYcnZN@{OdDP_-wC$DQOmV8ubbMFFqOPXxutynFFb@ekx z*$H-I#>e+g#qttQ`-|8On}25e&nHkZIkH3YeW{&zIGop-woL}VKa$qu=RSBD+}z>c zk;|rZ*{omBea1Ucca@mZ8o7;a&{tWv_r{^dL5+D?a!$*duKSq=Vdzm9Bfd(Uj9W`8 zWR&J4OHntM=8~ygi-ZiNb#ZC3zfM9iiy~jtfO^=XU+zhwwYt@e4X3$2BO2QH3R?m{ zxm9gSYDpq}gB{YAvpG}65n?@nLbXo?@fQ<7F6uMhL|01mM&RtR_RunU*ets(ofHRR zSnptMiv4jZ~YJY;XmHYJN5r6vTjnqQ>-X#KPoo~ zoYI{9K50B3&lu}3e!x~=7Qm$>Ybz2L8B2m1zbWl|9G=Chxnw-VfT$f1#79q0Pi179 ze^IloI{m8@Kvc?V2uyQJXglR&8{$h3?fBoi5_hIUA$okPxx-dq70VZ4f%Omdn z=a@UR*uE#6n)VXmTZf(YJQuTt&(a;YkL=#?F%5KIB(_nM3QD!EN?NXcyGpk=w$S}t zbN*}N1C!LDbh;H=32(7rDy=m)+wK#lCvFz#kzeR=v(@EexOW4wh-RJpeS6JA$2I#5H-a|*guDaS`Kg4v0x-m ziIFjcb2C3wY4F7(>`F`f%PRP%lboHIKBr(;+a{V#^37h$c!$}D=I7tPNi9Zde{z$- zru0aT^VEOoDVtwHP!YYC_i;$kyw4wHV}D*>xNac_klTyN+mv>7>ivZ{Terlb@%oF` zmh?{vC#oCm&bQC4hK|MiMW+qxtR{<%Il)&69Z%ScE_eEe`TAt9%~BUi^JpWnyGp>| zPj|QDd|Cu49MtTYK)sqo%RqS#$oK&=I~F0|*F6;DS(df%V(qiS#cpiaCD_fcukT z4k0e517C8!c*1n^;ndUcGgt@7%^=~_vypK|7_bd1-CHq7)&&|v7N&&?CzU2<$xGsn z=+%J(;IJGyJ`YqA%-Fb?wS?Y2Qf(?q=1I1rFWV|{+ga~^wUL77k`vr*Slh4Eb$b2Y z_>y+MJoY??7*LL^!;LUUPXnisAn@_S;CYKoe>XTO6a?yHXsggK}50Wd{oU5-`@6N(@EK0e*F4SvpmI;+!eZ zYF+C`i3h^+47IL%j?=qoYMgF%q)vOEn2&OrzDvCOI>BwKHa|9Ai>yVRkc&{g{WKw$ z)awhT5ElbwYR_XD*C=13a+4v-=`5L4p(R1b6C3knT+*i}I;q=}u><#Z4U_bAgk7oE*R))aSn1TGQrrf3y zYRdr;U^#R+U-S9L1r%>aSqUg22|JYwjOJqeVshXzs;Oi(V=9;X(U7uey~xPF<&lYs zWQUEVbC`$x>=JTMKp66V!A$*;TkK#fM=~nr zvwj}ri1;NhzS8bSaUZS4Xku}z1?}>-P)*^yq(iMu2@mCQORth+MRLKovl8#mp=Z_w z+;ypsU8itu&<9aLKfIXNklsL}uuAuQB$s`BGBTcZ?HUG_@p$P!`$DsLr0jI#ij=nM z`kEttGF$K)qi~L;X@0^AGUP`nN$!VEC?m)?^ff+p8iI(QH(l2PK$*o8J$Jo1RIKwk zJs#pa`>WE8b8_hE9h_m^l>IsuMn2mVeyKir+HGQ!lNH^j7;TM&woE;C=YT?%Tzg*L zOg{sSVa&9g*mHikgUr|w);O$R*25!V5f;fA0ttew>0*geSCr$g>pwDCw%1ODC4|ot z6!GM&_TZIA!5i=Oy+^H$Gusfo=%zT)%aybw2TUE4nwk{jMWXU9@_R8+zP6 z&H0QogF^f0)!d68pV7rHM@N@-n8O_=O@`KwidSnt6}Pb!@f%#f z-v{=FBaV;U6{rslo0Qh+T=i>jO;hrcj2~2%6&54uI#!5e4>rCz5c0L{qXkLJ3Eo%AJ6E%&{twCbTvypW1hFzv_>F%Vv`F;KKiKHf*?6Vs+y1X0!xEOG{DOfi>V zgs|4lM*dgfr*54qSUvbTJUQb+pzvE1(^atv-Ync)eFKV@A$g|i7z0@(Tcvns%Z8D* zB=~a63skQh)gnz2cm|klBNV0=92qH0XXenZNgiqEzdnl>3ABr_)JTsd$SLbY;{@iq zLf42P5Kqe($bMhsa?Shhjq=gfo;kDjx1&bEZ$0F*nq4Hjn?k<78cfDZ;$qa+Qnx|& z)MV#8(zCi6m;D@-^ee%uge2ptC&fD7+`I=qt_#|!l89OTL91dz<#S((abah5vBkJ@ zY$h9{v2$=P;Ybq;E~big9$}*K3t1K@rP?nbum4>2rBY)s3loKokbmj^5OGTJMUU-h zG^GbGpO)Xxv$(LX&Tr+T?*pLCzD+C6(xDksWui70Y?I4h=g6H-#}Bl3v`=-caq!cI z!`42>AEfaU_`4^ng-m^}?ziGL_JULlp7LGEYN|`3O3&V$T5F=(V_?)Hrk5vuF3R~3 z&~<^S#0cI*V-B4Vel5Gqy3{2zu7^_J_O@8N(u(jE?5=M{DY3cNm9!WB4M{dHg5ObJ zU?B?WYkp9y>O7`+le0_kl6c_8Dl)}j-F`NJ9juk27lmOHdFygZyleGp0e@vP;!Gty zOVcmEgAz4PO7C+FD+1(o*hV(p~Az-2A+ST0BfttmNh!3t*z#M*IjrP5tLhD2 zdU4BM9_)gxYh+g~l&?CJ7hx{BYn#rxAH|o~;z`+csb{rMFnmaIj5SDcImoYpTwFmu z{$r?OhM;C39&$husbpkEHcn>BK@!09zEZB(}}>^Cb@@N)sk@?bawGZuA56FYc%1^kNkj8 z)@CT4Jbr1FMyOkfr-qNr;Op9Hv3ix$CH$i1l~t6(91>yi$)bm~x;1*&E9<1lyJ0hS z7j3n;+W}ZNcd=325eM#!)wE;dhNq6a(C9{)F_|$*Md3rokH*bBQq1wy@0OiDlOU5_ zyy$)XG0kFr-zQQ4U*$>0&2>Wc8`&eLf|sqs@Fic5SQ}v--JivsOzs7gj9qWCHl_p! zE~3>xEq+HKJ}zyh%YTr)CYE6Z$hv@!VakRE_w0pz1Z;Pdn7JsRkK4H<#l1^40`;;8 z#rV~D;#vVDS2X<!(4WQ&`0KKQE$;$k_6(5L| zo#h{$_;~nTZ1oK-jiF=)#-`@hyfk|aEi`22M!YntY_dRETVZ1}a|t(lVD7tNlaF+JWi8CniH1D}cEg0K^0Y{N0cUY&!Plwor2$YqER8`UWtIo{~R^g0{C0lcwjtSvNlHMCaxm- zP-8w=!$)RD*ez2)Hf0bq7YNM7%tjAn<^lqF0Kaj<77I*N*xnc>_J1S#FP#4(YGbbq zTS9z7e+7%|U&BZX0x^MDn1D>o9Ly|qf7yRf@;4bCzsy)Ns<4T<@VpsxRK#M9JY0|hdk^pBSU~O#Q5Gf2UyZUFprH4xlC;A zt@L3#L*LdGVs5B^zZwCs6-~p(0~>^zLm|d|4?9;70{shtnBVV2E{MLhDKCu+qmi+R zz9R%m!^g}F;N%2yu>6$`h&kV1$b%fm* zfa(6#;2t>M1IRys+dcN6)b<{G;4{3(Z0>>8J@`%YgID7JyMYH^9=v)04<6{>Gyiko zL7(V7&FCIH7=M_|1NLC|VS*2QTD12(4}LtTak+ne7y;d5z<<0x%*)~a^`9|$c-5k# zLjye26WH3nFJQDHT=&%v$O&WvF@wMlg^vaZq=B))3grKR<8OuO-!dk2Z}oqU>x0Mt zKbie24i9sF01t_Jz*z3BKfFE!;{jv7r*Yha2ke36Ar8v-JO1CCe_(h34~vKMUg!Zl zXnWAX0*j2GBh<{s{@*0u-n0Ho#Oe6>{g^YCGe%=#}Hh>ew%1$I=rfBsGbG6UII*ngwJ4iU`1(_k_nw%_=GU@)v1^Y8k= z?7#D|gE-j0zwxoNfmnX0F@xCHfA^1_nf(u0PBu19(C_+Kz#OdqP6GkiSbvWJ5Ozob zasI}~!ps8tV;-=j`@0QhSb6?EF3do7&>!=FS%Ec)zJLBD&g_501*Q-9d#qqq!GFX6 z2m=2$H(1_a>HN(GEFa+C=K*48X8zqjcG&LxeID#UmOo<(Wd6ejOqSzMeJp>(0H*K$ zSpIJ@Uk-!4}B;uAT~A-J3AURwWz!p+W!LivuHB_ literal 0 HcmV?d00001 diff --git a/examples/06-custom-schema/04-pdf-file-block/styles.css b/examples/06-custom-schema/04-pdf-file-block/styles.css index 00cf5b63ee..c802f381fa 100644 --- a/examples/06-custom-schema/04-pdf-file-block/styles.css +++ b/examples/06-custom-schema/04-pdf-file-block/styles.css @@ -1,10 +1,9 @@ [data-content-type="pdf"] .bn-file-block-content-wrapper, [data-content-type="pdf"] .bn-file-and-caption-wrapper { - height: 800px; - width: 100%; + max-height: 800px; } -[data-content-type="pdf"] embed { - height: 100%; - width: 100%; +[data-content-type="pdf"] .pdf-preview { + border-radius: 4px; + overflow: auto; } \ No newline at end of file diff --git a/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx b/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx index 1169c74031..8acf330c3a 100644 --- a/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx +++ b/packages/ariakit/src/suggestionMenu/SuggestionMenuItem.tsx @@ -17,7 +17,10 @@ export const SuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); diff --git a/packages/ariakit/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx b/packages/ariakit/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx index 6db77fda62..25dd9d3f25 100644 --- a/packages/ariakit/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx +++ b/packages/ariakit/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx @@ -17,7 +17,10 @@ export const GridSuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx index 6174ff4983..c7db27e386 100644 --- a/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx +++ b/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx @@ -25,7 +25,10 @@ export const SuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); diff --git a/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx b/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx index ded689a9cb..61da892658 100644 --- a/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx +++ b/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx @@ -19,7 +19,10 @@ export const GridSuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); diff --git a/packages/react/src/util/elementOverflow.ts b/packages/react/src/util/elementOverflow.ts index 25a004a81d..2eff6bf5b4 100644 --- a/packages/react/src/util/elementOverflow.ts +++ b/packages/react/src/util/elementOverflow.ts @@ -1,10 +1,6 @@ -export function elementOverflow(element: HTMLElement) { - if (!element.parentElement) { - return "none"; - } - +export function elementOverflow(element: HTMLElement, container: HTMLElement) { const elementRect = element.getBoundingClientRect(); - const parentRect = element.parentElement.getBoundingClientRect(); + const parentRect = container.getBoundingClientRect(); const topOverflow = elementRect.top < parentRect.top; const bottomOverflow = elementRect.bottom > parentRect.bottom; diff --git a/packages/shadcn/src/suggestionMenu/SuggestionMenuItem.tsx b/packages/shadcn/src/suggestionMenu/SuggestionMenuItem.tsx index 162c6b7b94..a8800f3a58 100644 --- a/packages/shadcn/src/suggestionMenu/SuggestionMenuItem.tsx +++ b/packages/shadcn/src/suggestionMenu/SuggestionMenuItem.tsx @@ -22,8 +22,10 @@ export const SuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); - + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); } else if (overflow === "bottom") { diff --git a/packages/shadcn/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx b/packages/shadcn/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx index 6db77fda62..25dd9d3f25 100644 --- a/packages/shadcn/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx +++ b/packages/shadcn/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx @@ -17,7 +17,10 @@ export const GridSuggestionMenuItem = forwardRef< return; } - const overflow = elementOverflow(itemRef.current); + const overflow = elementOverflow( + itemRef.current, + document.querySelector(".bn-suggestion-menu")! + ); if (overflow === "top") { itemRef.current.scrollIntoView(true); diff --git a/playground/package.json b/playground/package.json index 6cbfa384b7..7adfc9556f 100644 --- a/playground/package.json +++ b/playground/package.json @@ -18,9 +18,13 @@ "@blocknote/react": "^0.15.0", "@blocknote/server-util": "^0.15.0", "@blocknote/shadcn": "^0.15.0", + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", "@liveblocks/client": "^1.10.0", "@liveblocks/yjs": "^1.10.0", "@mantine/core": "^7.10.1", + "@mui/icons-material": "^5.16.1", + "@mui/material": "^5.16.1", "@uppy/core": "^3.13.1", "@uppy/dashboard": "^3.9.1", "@uppy/drag-drop": "^3.1.1", @@ -35,6 +39,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-icons": "^5.2.1", + "react-pdf": "^9.1.0", "react-router-dom": "^6.20.0", "y-partykit": "^0.0.25", "yjs": "^13.6.15" diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index eaac162755..533ecbd9a6 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -544,7 +544,10 @@ "Appearance & Styling" ], "dependencies": { - "react-icons": "^5.2.1" + "@emotion/react": "^11.11.4", + "@emotion/styled": "^11.11.5", + "@mui/icons-material": "^5.16.1", + "@mui/material": "^5.16.1" } as any, "pro": true }, @@ -852,7 +855,8 @@ ], "dependencies": { "@mantine/core": "^7.10.1", - "react-icons": "^5.2.1" + "react-icons": "^5.2.1", + "react-pdf": "^9.1.0" } as any, "pro": true }, From 58e78a61df24a6e167827b98ccd873f46726fbe2 Mon Sep 17 00:00:00 2001 From: matthewlipski Date: Tue, 16 Jul 2024 12:29:21 +0200 Subject: [PATCH 2/6] Finished remaining TODOs --- .../03-ui-components/12-custom-ui/App.tsx | 58 ++++++----- .../12-custom-ui/ColorMenu.tsx | 86 ---------------- .../12-custom-ui/CustomSideMenu.tsx | 15 --- .../12-custom-ui/LinkMenu.tsx | 47 --------- .../12-custom-ui/MUIFormattingToolbar.tsx | 55 +++++++--- .../12-custom-ui/MUISideMenu.tsx | 97 ++++++++++++++++++ .../12-custom-ui/MUISlashMenu.tsx | 8 +- .../03-ui-components/12-custom-ui/README.md | 4 +- .../03-ui-components/12-custom-ui/index.html | 2 +- .../03-ui-components/12-custom-ui/schema.ts | 14 +++ .../03-ui-components/12-custom-ui/style.css | 3 +- .../04-pdf-file-block/App.tsx | 1 - .../04-pdf-file-block/PDF.tsx | 11 +- .../04-pdf-file-block/pdf.pdf | Bin 156312 -> 0 bytes .../src/extensions/SideMenu/SideMenuPlugin.ts | 1 + playground/src/examples.gen.tsx | 2 +- 16 files changed, 197 insertions(+), 207 deletions(-) delete mode 100644 examples/03-ui-components/12-custom-ui/ColorMenu.tsx delete mode 100644 examples/03-ui-components/12-custom-ui/CustomSideMenu.tsx delete mode 100644 examples/03-ui-components/12-custom-ui/LinkMenu.tsx create mode 100644 examples/03-ui-components/12-custom-ui/MUISideMenu.tsx create mode 100644 examples/03-ui-components/12-custom-ui/schema.ts delete mode 100644 examples/06-custom-schema/04-pdf-file-block/pdf.pdf diff --git a/examples/03-ui-components/12-custom-ui/App.tsx b/examples/03-ui-components/12-custom-ui/App.tsx index 5f1ea2601b..71c540ce3f 100644 --- a/examples/03-ui-components/12-custom-ui/App.tsx +++ b/examples/03-ui-components/12-custom-ui/App.tsx @@ -7,16 +7,13 @@ import { SuggestionMenuController, useCreateBlockNote, } from "@blocknote/react"; -import { - createTheme, - CssBaseline, - ThemeProvider, - useMediaQuery, -} from "@mui/material"; +import "@blocknote/react/style.css"; +import { createTheme, ThemeProvider, useMediaQuery } from "@mui/material"; import { useMemo } from "react"; +import { schema } from "./schema"; import { MUIFormattingToolbar } from "./MUIFormattingToolbar"; -import { CustomSideMenu } from "./CustomSideMenu"; +import { MUISideMenu } from "./MUISideMenu"; import { MUISlashMenu } from "./MUISlashMenu"; import "./style.css"; @@ -24,6 +21,7 @@ import "./style.css"; export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ + schema, initialContent: [ { type: "paragraph", @@ -35,8 +33,8 @@ export default function App() { ], }); + // Automatically sets light/dark mode based on the user's system preferences. const prefersDarkMode = useMediaQuery("(prefers-color-scheme: dark)"); - const theme = useMemo( () => createTheme({ @@ -49,31 +47,41 @@ export default function App() { // Renders the editor instance. return ( - - - - {/* Adds the custom Formatting Toolbar */} - {/* `FormattingToolbarController isn't used since the custom toolbar is - static and always visible above the editor. */} + // Provides theming for Material UI. + + + {/* Adds the custom Formatting Toolbar. */} + {/* `FormattingToolbarController isn't used since the custom toolbar */} + {/* is static and always visible above the editor. */} {/* Adds the custom Side Menu and Slash Menu. */} - {/* These use controllers since we want them to be positioned and - show/hide the same as the default ones.*/} - + {/* These use controllers since we want them to be positioned and */} + {/* show/hide the same as the default ones. */} + - filterSuggestionItems(getDefaultReactSlashMenuItems(editor), query) + filterSuggestionItems( + getDefaultReactSlashMenuItems(editor).filter( + (item) => item.title !== "Emoji" + ), + query + ) } suggestionMenuComponent={MUISlashMenu} onItemClick={(i) => i.onItemClick()} /> - - + + ); } diff --git a/examples/03-ui-components/12-custom-ui/ColorMenu.tsx b/examples/03-ui-components/12-custom-ui/ColorMenu.tsx deleted file mode 100644 index 583c84d6a9..0000000000 --- a/examples/03-ui-components/12-custom-ui/ColorMenu.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { - useBlockNoteEditor, - useEditorChange, - useEditorSelectionChange, -} from "@blocknote/react"; -import { useState } from "react"; -import { MdFormatColorText } from "react-icons/md"; - -export const colors = [ - "default", - "red", - "orange", - "yellow", - "green", - "blue", - "purple", -] as const; - -// Formatting Toolbar sub menu for changing text and background color. -export function ColorMenu(props: { className?: string }) { - const editor = useBlockNoteEditor(); - - // Colors of the currently selected text. - const [textColor, setTextColor] = useState( - (editor.getActiveStyles().textColor as string) || "default" - ); - const [backgroundColor, setCurrentColor] = useState( - (editor.getActiveStyles().backgroundColor as string) || "default" - ); - - // Updates the colors when the editor content or selection changes. - useEditorChange(() => { - setTextColor((editor.getActiveStyles().textColor as string) || "default"); - setCurrentColor( - (editor.getActiveStyles().backgroundColor as string) || "default" - ); - }, editor); - useEditorSelectionChange(() => { - setTextColor((editor.getActiveStyles().textColor as string) || "default"); - setCurrentColor( - (editor.getActiveStyles().backgroundColor as string) || "default" - ); - }, editor); - - return ( -
- {/* Group for text color buttons */} -
- {colors.map((color) => ( - // Button for each color - - ))} -
- {/* Group for background color buttons */} -
- {colors.map((color) => ( - // Button for each color - - ))} -
-
- ); -} diff --git a/examples/03-ui-components/12-custom-ui/CustomSideMenu.tsx b/examples/03-ui-components/12-custom-ui/CustomSideMenu.tsx deleted file mode 100644 index 85ec869f5c..0000000000 --- a/examples/03-ui-components/12-custom-ui/CustomSideMenu.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { SideMenuProps } from "@blocknote/react"; -import { RxDragHandleHorizontal } from "react-icons/rx"; - -// Custom component to replace the default Block Side Menu. -export function CustomSideMenu(props: SideMenuProps) { - return ( -
- -
- ); -} diff --git a/examples/03-ui-components/12-custom-ui/LinkMenu.tsx b/examples/03-ui-components/12-custom-ui/LinkMenu.tsx deleted file mode 100644 index 5f0631b96d..0000000000 --- a/examples/03-ui-components/12-custom-ui/LinkMenu.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { HTMLAttributes, useState } from "react"; -import { BlockNoteEditor } from "@blocknote/core"; - -// Formatting Toolbar sub menu for creating links. -export const LinkMenu = ( - props: { editor: BlockNoteEditor } & HTMLAttributes -) => { - const { editor, className, ...rest } = props; - - const [text, setText] = useState(""); - const [url, setUrl] = useState(""); - - return ( -
- {/*Input for link text*/} - setText(event.target.value)} - /> - {/*Input for link URL*/} - setUrl(event.target.value)} - /> - {/*Buttons to create and clear the inputs*/} -
- - -
-
- ); -}; diff --git a/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx b/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx index 3d77dead03..49bc34ab25 100644 --- a/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx +++ b/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx @@ -1,11 +1,9 @@ -import { checkBlockHasDefaultProp, DefaultBlockSchema } from "@blocknote/core"; +import { Block, checkBlockHasDefaultProp } from "@blocknote/core"; import { blockTypeSelectItems, useBlockNoteEditor, useEditorContentOrSelectionChange, } from "@blocknote/react"; -import { MouseEvent, useCallback, useState, useMemo } from "react"; - import { Done, FormatAlignCenter, @@ -37,7 +35,11 @@ import { Typography, } from "@mui/material"; import { OverridableComponent } from "@mui/material/OverridableComponent"; +import { MouseEvent, useCallback, useState, useMemo } from "react"; +import { TextBlockSchema } from "./schema"; + +// The highlight colors used by BlockNote. const colors = [ "default", "red", @@ -50,10 +52,20 @@ const colors = [ // Custom component to replace the Block Type Select. function MUIBlockTypeSelect(props: { - blockType: keyof DefaultBlockSchema; - setBlockType: (blockType: keyof DefaultBlockSchema) => void; + block: Block; + setBlock: (block: Block) => void; blockTypeSelectItems: ReturnType; }) { + const editor = useBlockNoteEditor(); + + const selectedItemName = useMemo( + () => + props.blockTypeSelectItems.find((item) => + item.isSelected(props.block as any) + )!.name, + [props.block, props.blockTypeSelectItems] + ); + return ( - props.setBlockType(event.target.value as keyof DefaultBlockSchema) - }> + onChange={(event) => { + const newSelectedItem = props.blockTypeSelectItems.find( + (item) => item.name === event.target.value + )!; + + editor.updateBlock(props.block, { + type: newSelectedItem.type as keyof TextBlockSchema, + props: newSelectedItem.props, + }); + editor.focus(); + + props.setBlock(editor.getTextCursorPosition().block); + }}> {props.blockTypeSelectItems.map((item) => ( - +
setAnchorEl(null)}> @@ -235,12 +257,11 @@ export function MUIFormattingToolbar() { () => blockTypeSelectItems(editor.dictionary), [editor.dictionary] ); - const block = editor.getTextCursorPosition().block; const activeStyles = editor.getActiveStyles(); // States for the toolbar items. - const [blockType, setBlockType] = useState( - block.type + const [block, setBlock] = useState( + editor.getTextCursorPosition().block ); const [bold, setBold] = useState(!!activeStyles.bold); @@ -268,7 +289,7 @@ export function MUIFormattingToolbar() { const block = editor.getTextCursorPosition().block; const activeStyles = editor.getActiveStyles(); - setBlockType(block.type); + setBlock(block); setBold("bold" in activeStyles); setItalic("italic" in activeStyles); @@ -332,8 +353,8 @@ export function MUIFormattingToolbar() { ) { + const [anchorEl, setAnchorEl] = useState(null); + + // Since the side menu is positioned by the top-left corner of a block, we\ + // manually set its height based on the hovered block so that it's vertically + // centered. + const sideMenuHeight = useMemo(() => { + if (props.block.type === "heading") { + if (props.block.props.level === 1) { + return 78; + } + + if (props.block.props.level === 2) { + return 54; + } + + if (props.block.props.level === 3) { + return 37; + } + } + + return 30; + }, [props.block]); + + return ( +
+ { + props.freezeMenu(); + setAnchorEl(event.currentTarget); + }} + onDragStart={props.blockDragStart} + onDragEnd={props.blockDragEnd} + sx={{ + height: `${sideMenuHeight}px`, + display: "flex", + alignItems: "center", + justifyContent: "center", + }}> + theme.palette.text.primary, + paddingInline: "4px", + cursor: "pointer", + width: "fit-content", + }} + /> + + setAnchorEl(null)}> + { + props.unfreezeMenu(); + setAnchorEl(null); + props.editor.removeBlocks([ + props.editor.getTextCursorPosition().block, + ]); + props.editor.focus(); + }}> + + theme.palette.text.primary, + padding: "0.1em", + height: "0.8em", + width: "0.8em", + }} + /> + + + Delete Block + + + +
+ ); +} diff --git a/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx b/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx index 12fff0947b..f841d4ce06 100644 --- a/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx +++ b/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx @@ -16,13 +16,15 @@ import { } from "@mui/material"; import { useEffect, useMemo, useRef } from "react"; +import { TextBlockSchema } from "./schema"; + // Custom component to replace items in the default Slash Menu. export function MUISlashMenuItem( props: Omit, "items"> & { item: DefaultReactSuggestionItem & { index: number }; } ) { - const editor = useBlockNoteEditor(); + const editor = useBlockNoteEditor(); const itemRef = useRef(null); @@ -119,8 +121,8 @@ export function MUISlashMenu( return ( - Custom UI + Using Material UI
diff --git a/examples/03-ui-components/12-custom-ui/schema.ts b/examples/03-ui-components/12-custom-ui/schema.ts new file mode 100644 index 0000000000..1d59d5be57 --- /dev/null +++ b/examples/03-ui-components/12-custom-ui/schema.ts @@ -0,0 +1,14 @@ +import { BlockNoteSchema, defaultBlockSpecs } from "@blocknote/core"; + +// Simplified schema without media, file, and table blocks. +export const schema = BlockNoteSchema.create({ + blockSpecs: { + paragraph: defaultBlockSpecs.paragraph, + heading: defaultBlockSpecs.heading, + bulletListItem: defaultBlockSpecs.bulletListItem, + numberedListItem: defaultBlockSpecs.numberedListItem, + checkListItem: defaultBlockSpecs.checkListItem, + }, +}); + +export type TextBlockSchema = typeof schema.blockSchema; diff --git a/examples/03-ui-components/12-custom-ui/style.css b/examples/03-ui-components/12-custom-ui/style.css index d3f2c37ef2..c642b08086 100644 --- a/examples/03-ui-components/12-custom-ui/style.css +++ b/examples/03-ui-components/12-custom-ui/style.css @@ -124,8 +124,9 @@ background-color: var(--bn-colors-highlights-purple-background); } +/* Positions the formatting toolbar above the editor. */ .bn-container { display: flex; flex-direction: column-reverse; gap: 8px; -} \ No newline at end of file +} diff --git a/examples/06-custom-schema/04-pdf-file-block/App.tsx b/examples/06-custom-schema/04-pdf-file-block/App.tsx index 5c0d5c29f2..7491c7ea63 100644 --- a/examples/06-custom-schema/04-pdf-file-block/App.tsx +++ b/examples/06-custom-schema/04-pdf-file-block/App.tsx @@ -3,7 +3,6 @@ import { defaultBlockSpecs, filterSuggestionItems, insertOrUpdateBlock, - uploadToTmpFilesDotOrg_DEV_ONLY, } from "@blocknote/core"; import "@blocknote/core/fonts/inter.css"; import { diff --git a/examples/06-custom-schema/04-pdf-file-block/PDF.tsx b/examples/06-custom-schema/04-pdf-file-block/PDF.tsx index 840920e064..7068f34a13 100644 --- a/examples/06-custom-schema/04-pdf-file-block/PDF.tsx +++ b/examples/06-custom-schema/04-pdf-file-block/PDF.tsx @@ -7,19 +7,14 @@ import { ReactCustomBlockRenderProps, } from "@blocknote/react"; import { RiFilePdfFill } from "react-icons/ri"; -import "./pdf.pdf"; - -import "./styles.css"; import { useCallback, useEffect, useMemo, useState } from "react"; import { Document, Page, pdfjs } from "react-pdf"; +import { DocumentCallback } from "react-pdf/dist/cjs/shared/types"; import "react-pdf/dist/Page/TextLayer.css"; import "react-pdf/dist/Page/AnnotationLayer.css"; -import { DocumentCallback } from "react-pdf/dist/cjs/shared/types"; -pdfjs.GlobalWorkerOptions.workerSrc = new URL( - "pdfjs-dist/build/pdf.worker.min.mjs", - import.meta.url -).toString(); +import "./styles.css"; +pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`; // Component for the PDF preview. export const PDFPreview = ( diff --git a/examples/06-custom-schema/04-pdf-file-block/pdf.pdf b/examples/06-custom-schema/04-pdf-file-block/pdf.pdf deleted file mode 100644 index 96beea7011a4b3e3858a0ce0f98887956c709933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156312 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
+E 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

w;OA?y7@-$nWRE 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 diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index 236cbea3f0..47f0f2067f 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -529,6 +529,7 @@ export class SideMenuView< this.state.show = false; this.emitUpdate(this.state); } + console.log("hide"); return; } diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index 533ecbd9a6..8b35c68d99 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -551,7 +551,7 @@ } as any, "pro": true }, - "title": "Custom UI", + "title": "Using Material UI", "group": { "pathFromRoot": "examples/03-ui-components", "slug": "ui-components" From 2508264dce86fac5cbf8a3faeba6dde549d1e235 Mon Sep 17 00:00:00 2001 From: matthewlipski Date: Tue, 16 Jul 2024 13:23:59 +0200 Subject: [PATCH 3/6] Removed `console.log` --- packages/core/src/extensions/SideMenu/SideMenuPlugin.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index 47f0f2067f..236cbea3f0 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -529,7 +529,6 @@ export class SideMenuView< this.state.show = false; this.emitUpdate(this.state); } - console.log("hide"); return; } From 7f41b6e5841d5cb59f63470f39e14e921e911302 Mon Sep 17 00:00:00 2001 From: matthewlipski Date: Thu, 18 Jul 2024 23:37:21 +0200 Subject: [PATCH 4/6] Added non-pro static formatting toolbar example and refactored MUI example --- .../12-custom-ui/MUIFormattingToolbar.tsx | 445 --------- .../12-custom-ui/MUISideMenu.tsx | 97 -- .../03-ui-components/12-custom-ui/README.md | 12 - .../.bnexample.json | 6 + .../12-static-formatting-toolbar/App.tsx | 38 + .../12-static-formatting-toolbar/README.md | 9 + .../index.html | 2 +- .../main.tsx | 0 .../12-static-formatting-toolbar/package.json | 37 + .../12-static-formatting-toolbar/style.css | 9 + .../tsconfig.json | 0 .../vite.config.ts | 0 .../.bnexample.json | 0 .../{12-custom-ui => 13-custom-ui}/App.tsx | 19 +- .../13-custom-ui/MUIFormattingToolbar.tsx | 490 ++++++++++ .../13-custom-ui/MUISideMenu.tsx | 165 ++++ .../MUISuggestionMenu.tsx} | 122 +-- .../03-ui-components/13-custom-ui/README.md | 11 + .../03-ui-components/13-custom-ui/index.html | 14 + .../03-ui-components/13-custom-ui/main.tsx | 11 + .../package.json | 0 .../{12-custom-ui => 13-custom-ui}/schema.ts | 0 .../{12-custom-ui => 13-custom-ui}/style.css | 0 .../13-custom-ui/tsconfig.json | 36 + .../13-custom-ui/vite.config.ts | 32 + package-lock.json | 848 ++++++++++++++++-- packages/core/src/editor/BlockNoteEditor.ts | 4 +- playground/src/examples.gen.tsx | 25 +- 28 files changed, 1730 insertions(+), 702 deletions(-) delete mode 100644 examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx delete mode 100644 examples/03-ui-components/12-custom-ui/MUISideMenu.tsx delete mode 100644 examples/03-ui-components/12-custom-ui/README.md create mode 100644 examples/03-ui-components/12-static-formatting-toolbar/.bnexample.json create mode 100644 examples/03-ui-components/12-static-formatting-toolbar/App.tsx create mode 100644 examples/03-ui-components/12-static-formatting-toolbar/README.md rename examples/03-ui-components/{12-custom-ui => 12-static-formatting-toolbar}/index.html (88%) rename examples/03-ui-components/{12-custom-ui => 12-static-formatting-toolbar}/main.tsx (100%) create mode 100644 examples/03-ui-components/12-static-formatting-toolbar/package.json create mode 100644 examples/03-ui-components/12-static-formatting-toolbar/style.css rename examples/03-ui-components/{12-custom-ui => 12-static-formatting-toolbar}/tsconfig.json (100%) rename examples/03-ui-components/{12-custom-ui => 12-static-formatting-toolbar}/vite.config.ts (100%) rename examples/03-ui-components/{12-custom-ui => 13-custom-ui}/.bnexample.json (100%) rename examples/03-ui-components/{12-custom-ui => 13-custom-ui}/App.tsx (77%) create mode 100644 examples/03-ui-components/13-custom-ui/MUIFormattingToolbar.tsx create mode 100644 examples/03-ui-components/13-custom-ui/MUISideMenu.tsx rename examples/03-ui-components/{12-custom-ui/MUISlashMenu.tsx => 13-custom-ui/MUISuggestionMenu.tsx} (50%) create mode 100644 examples/03-ui-components/13-custom-ui/README.md create mode 100644 examples/03-ui-components/13-custom-ui/index.html create mode 100644 examples/03-ui-components/13-custom-ui/main.tsx rename examples/03-ui-components/{12-custom-ui => 13-custom-ui}/package.json (100%) rename examples/03-ui-components/{12-custom-ui => 13-custom-ui}/schema.ts (100%) rename examples/03-ui-components/{12-custom-ui => 13-custom-ui}/style.css (100%) create mode 100644 examples/03-ui-components/13-custom-ui/tsconfig.json create mode 100644 examples/03-ui-components/13-custom-ui/vite.config.ts diff --git a/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx b/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx deleted file mode 100644 index 49bc34ab25..0000000000 --- a/examples/03-ui-components/12-custom-ui/MUIFormattingToolbar.tsx +++ /dev/null @@ -1,445 +0,0 @@ -import { Block, checkBlockHasDefaultProp } from "@blocknote/core"; -import { - blockTypeSelectItems, - useBlockNoteEditor, - useEditorContentOrSelectionChange, -} from "@blocknote/react"; -import { - Done, - FormatAlignCenter, - FormatAlignLeft, - FormatAlignRight, - FormatBold, - FormatColorText, - FormatItalic, - FormatStrikethrough, - FormatUnderlined, -} from "@mui/icons-material"; -import { - AppBar, - Box, - Button, - ButtonGroup, - Container, - Divider, - FormControl, - InputLabel, - ListItemIcon, - ListItemText, - Menu, - MenuItem, - Select, - SvgIconTypeMap, - Toolbar, - Tooltip, - Typography, -} from "@mui/material"; -import { OverridableComponent } from "@mui/material/OverridableComponent"; -import { MouseEvent, useCallback, useState, useMemo } from "react"; - -import { TextBlockSchema } from "./schema"; - -// The highlight colors used by BlockNote. -const colors = [ - "default", - "red", - "orange", - "yellow", - "green", - "blue", - "purple", -] as const; - -// Custom component to replace the Block Type Select. -function MUIBlockTypeSelect(props: { - block: Block; - setBlock: (block: Block) => void; - blockTypeSelectItems: ReturnType; -}) { - const editor = useBlockNoteEditor(); - - const selectedItemName = useMemo( - () => - props.blockTypeSelectItems.find((item) => - item.isSelected(props.block as any) - )!.name, - [props.block, props.blockTypeSelectItems] - ); - - return ( - - `${ - theme.palette.mode === "dark" - ? theme.palette.primary.main - : theme.palette.background.default - } !important`, - borderColor: (theme) => - `${ - theme.palette.mode === "dark" - ? theme.palette.primary.main - : theme.palette.background.default - } !important`, - }, - }}> - Block Type - - - ); -} - -// Custom component to replace the default formatting toolbar buttons. -function MUIFormattingToolbarButton(props: { - tooltip: string; - selected?: boolean; - onClick: (event: MouseEvent) => void; - icon: OverridableComponent, "svg">> & { - muiName: string; - }; -}) { - const Icon = props.icon; - - return ( - - - - ); -} - -// Custom component to replace the default color picker menu. -function MUIColorMenuButton(props: { - textColor: string; - applyTextColor: (textColor: string) => void; - backgroundColor: string; - applyBackgroundColor: (backgroundColor: string) => void; -}) { - const editor = useBlockNoteEditor(); - - const [anchorEl, setAnchorEl] = useState(null); - - return ( - <> - setAnchorEl(event.currentTarget)} - icon={FormatColorText} - /> - setAnchorEl(null)}> - - Text Color - - {colors.map((color) => ( - { - setAnchorEl(null); - props.applyTextColor(color); - setTimeout(() => editor.focus()); - }}> - - - - - - {color.slice(0, 1).toUpperCase() + color.slice(1)} - - - {color === props.textColor && ( - - )} - - ))} - - - Background Color - - {colors.map((color) => ( - { - setAnchorEl(null); - props.applyBackgroundColor(color); - setTimeout(() => editor.focus()); - }}> - - - - - - {color.slice(0, 1).toUpperCase() + color.slice(1)} - - - {color === props.backgroundColor && ( - - )} - - ))} - - - ); -} - -export function MUIFormattingToolbar() { - const editor = useBlockNoteEditor(); - - const defaultBlockTypeSelectItems = useMemo( - () => blockTypeSelectItems(editor.dictionary), - [editor.dictionary] - ); - const activeStyles = editor.getActiveStyles(); - - // States for the toolbar items. - const [block, setBlock] = useState( - editor.getTextCursorPosition().block - ); - - const [bold, setBold] = useState(!!activeStyles.bold); - const [italic, setItalic] = useState(!!activeStyles.italic); - const [underline, setUnderline] = useState(!!activeStyles.underline); - const [strike, setStrike] = useState(!!activeStyles.strike); - - const [textAlignment, setTextAlignment] = useState< - "left" | "center" | "right" | "justify" | undefined - >(() => - checkBlockHasDefaultProp("textAlignment", block, editor) - ? block.props.textAlignment - : undefined - ); - - const [textColor, setTextColor] = useState( - activeStyles.textColor || "default" - ); - const [backgroundColor, setBackgroundColor] = useState( - activeStyles.backgroundColor || "default" - ); - - // Updates the states when the editor content or selection changes. - useEditorContentOrSelectionChange(() => { - const block = editor.getTextCursorPosition().block; - const activeStyles = editor.getActiveStyles(); - - setBlock(block); - - setBold("bold" in activeStyles); - setItalic("italic" in activeStyles); - setUnderline("underline" in activeStyles); - setStrike("strike" in activeStyles); - - setTextAlignment( - checkBlockHasDefaultProp("textAlignment", block, editor) - ? block.props.textAlignment - : undefined - ); - - setTextColor(activeStyles.textColor || "default"); - setBackgroundColor(activeStyles.backgroundColor || "default"); - }, editor); - - // Callbacks for clicking the toolbar buttons. - const applyBold = useCallback( - () => editor.toggleStyles({ bold: true }), - [editor] - ); - const applyItalic = useCallback( - () => editor.toggleStyles({ italic: true }), - [editor] - ); - const applyUnderline = useCallback( - () => editor.toggleStyles({ underline: true }), - [editor] - ); - const applyStrike = useCallback( - () => editor.toggleStyles({ strike: true }), - [editor] - ); - - const applyTextAlignment = useCallback( - (textAlignment: "left" | "center" | "right" | "justify") => { - editor.updateBlock(editor.getTextCursorPosition().block, { - props: { textAlignment }, - }); - }, - [editor] - ); - - const applyTextColor = useCallback( - (textColor: string) => - textColor === "default" - ? editor.removeStyles({ textColor }) - : editor.addStyles({ textColor }), - [editor] - ); - const applyBackgroundColor = useCallback( - (backgroundColor: string) => - backgroundColor === "default" - ? editor.removeStyles({ backgroundColor }) - : editor.addStyles({ backgroundColor }), - [editor] - ); - - return ( - - - - - - { - applyBold(); - editor.focus(); - }} - icon={FormatBold} - /> - { - applyItalic(); - editor.focus(); - }} - icon={FormatItalic} - /> - { - applyUnderline(); - editor.focus(); - }} - icon={FormatUnderlined} - /> - { - applyStrike(); - editor.focus(); - }} - icon={FormatStrikethrough} - /> - - - { - applyTextAlignment("left"); - editor.focus(); - }} - icon={FormatAlignLeft} - /> - { - applyTextAlignment("center"); - editor.focus(); - }} - icon={FormatAlignCenter} - /> - { - applyTextAlignment("right"); - editor.focus(); - }} - icon={FormatAlignRight} - /> - - - - - - - - ); -} diff --git a/examples/03-ui-components/12-custom-ui/MUISideMenu.tsx b/examples/03-ui-components/12-custom-ui/MUISideMenu.tsx deleted file mode 100644 index 6361d97728..0000000000 --- a/examples/03-ui-components/12-custom-ui/MUISideMenu.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { SideMenuProps } from "@blocknote/react"; -import { Delete, DragIndicator } from "@mui/icons-material"; -import { - Box, - ListItemIcon, - ListItemText, - Menu, - MenuItem, - Typography, -} from "@mui/material"; -import { useMemo, useState } from "react"; - -import { TextBlockSchema } from "./schema"; - -// Custom component to replace the default Block Side Menu. -export function MUISideMenu(props: SideMenuProps) { - const [anchorEl, setAnchorEl] = useState(null); - - // Since the side menu is positioned by the top-left corner of a block, we\ - // manually set its height based on the hovered block so that it's vertically - // centered. - const sideMenuHeight = useMemo(() => { - if (props.block.type === "heading") { - if (props.block.props.level === 1) { - return 78; - } - - if (props.block.props.level === 2) { - return 54; - } - - if (props.block.props.level === 3) { - return 37; - } - } - - return 30; - }, [props.block]); - - return ( -
- { - props.freezeMenu(); - setAnchorEl(event.currentTarget); - }} - onDragStart={props.blockDragStart} - onDragEnd={props.blockDragEnd} - sx={{ - height: `${sideMenuHeight}px`, - display: "flex", - alignItems: "center", - justifyContent: "center", - }}> - theme.palette.text.primary, - paddingInline: "4px", - cursor: "pointer", - width: "fit-content", - }} - /> - - setAnchorEl(null)}> - { - props.unfreezeMenu(); - setAnchorEl(null); - props.editor.removeBlocks([ - props.editor.getTextCursorPosition().block, - ]); - props.editor.focus(); - }}> - - theme.palette.text.primary, - padding: "0.1em", - height: "0.8em", - width: "0.8em", - }} - /> - - - Delete Block - - - -
- ); -} diff --git a/examples/03-ui-components/12-custom-ui/README.md b/examples/03-ui-components/12-custom-ui/README.md deleted file mode 100644 index 5f5339841b..0000000000 --- a/examples/03-ui-components/12-custom-ui/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Using Material UI - -In this example, we implement a basic editor interface using Material UI. We replace the Formatting Toolbar, Slash Menu, and Block Side Menu while disabling the other default elements. Additionally, the Formatting Toolbar is made static and always visible above the editor. - -**Relevant Docs:** - -- [Formatting Toolbar](/docs/ui-components/formatting-toolbar) -- [Manipulating Inline Content](/docs/editor-api/manipulating-inline-content) -- [Hooks](TODO) -- [Slash Menu](/docs/ui-components/suggestion-menus#slash-menu) -- [Side Menu](/docs/ui-components/side-menu) -- [Editor Setup](/docs/editor-basics/setup) \ No newline at end of file diff --git a/examples/03-ui-components/12-static-formatting-toolbar/.bnexample.json b/examples/03-ui-components/12-static-formatting-toolbar/.bnexample.json new file mode 100644 index 0000000000..0c02809402 --- /dev/null +++ b/examples/03-ui-components/12-static-formatting-toolbar/.bnexample.json @@ -0,0 +1,6 @@ +{ + "playground": true, + "docs": true, + "author": "matthewlipski", + "tags": ["Basic", "UI Components", "Formatting Toolbar", "Appearance & Styling"] +} \ No newline at end of file diff --git a/examples/03-ui-components/12-static-formatting-toolbar/App.tsx b/examples/03-ui-components/12-static-formatting-toolbar/App.tsx new file mode 100644 index 0000000000..fa61f64dc6 --- /dev/null +++ b/examples/03-ui-components/12-static-formatting-toolbar/App.tsx @@ -0,0 +1,38 @@ +import "@blocknote/core/fonts/inter.css"; +import { FormattingToolbar, useCreateBlockNote } from "@blocknote/react"; +import { BlockNoteView } from "@blocknote/mantine"; +import "@blocknote/mantine/style.css"; + +import "./style.css"; + +export default function App() { + // Creates a new editor instance. + const editor = useCreateBlockNote({ + initialContent: [ + { + type: "paragraph", + content: "Welcome to this demo!", + }, + { + type: "paragraph", + content: "Check out the static formatting toolbar above!", + }, + { + type: "paragraph", + }, + ], + }); + + // Renders the editor instance using a React component. + return ( + // Disables the default formatting toolbar and re-adds it without the + // `FormattingToolbarController` component. You may have seen + // `FormattingToolbarController` used in other examples, but we omit it here + // as we want to control the position and visibility ourselves. BlockNote + // also uses the `FormattingToolbarController` when displaying the + // Formatting Toolbar by default. + + + + ); +} diff --git a/examples/03-ui-components/12-static-formatting-toolbar/README.md b/examples/03-ui-components/12-static-formatting-toolbar/README.md new file mode 100644 index 0000000000..5c778dc3bc --- /dev/null +++ b/examples/03-ui-components/12-static-formatting-toolbar/README.md @@ -0,0 +1,9 @@ +# Static Formatting Toolbar + +This example shows how to make the formatting toolbar always visible and static +above the editor. + +**Relevant Docs:** + +- [Changing the Formatting Toolbar](/docs/ui-components/formatting-toolbar#changing-the-formatting-toolbar) +- [Editor Setup](/docs/editor-basics/setup) diff --git a/examples/03-ui-components/12-custom-ui/index.html b/examples/03-ui-components/12-static-formatting-toolbar/index.html similarity index 88% rename from examples/03-ui-components/12-custom-ui/index.html rename to examples/03-ui-components/12-static-formatting-toolbar/index.html index 11d3eff4e4..3fc4daa8f4 100644 --- a/examples/03-ui-components/12-custom-ui/index.html +++ b/examples/03-ui-components/12-static-formatting-toolbar/index.html @@ -5,7 +5,7 @@ - Using Material UI + Static Formatting Toolbar
diff --git a/examples/03-ui-components/12-custom-ui/main.tsx b/examples/03-ui-components/12-static-formatting-toolbar/main.tsx similarity index 100% rename from examples/03-ui-components/12-custom-ui/main.tsx rename to examples/03-ui-components/12-static-formatting-toolbar/main.tsx diff --git a/examples/03-ui-components/12-static-formatting-toolbar/package.json b/examples/03-ui-components/12-static-formatting-toolbar/package.json new file mode 100644 index 0000000000..86153d2c63 --- /dev/null +++ b/examples/03-ui-components/12-static-formatting-toolbar/package.json @@ -0,0 +1,37 @@ +{ + "name": "@blocknote/example-static-formatting-toolbar", + "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "private": true, + "version": "0.12.4", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "lint": "eslint . --max-warnings 0" + }, + "dependencies": { + "@blocknote/core": "latest", + "@blocknote/react": "latest", + "@blocknote/ariakit": "latest", + "@blocknote/mantine": "latest", + "@blocknote/shadcn": "latest", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.9", + "@vitejs/plugin-react": "^4.0.4", + "eslint": "^8.10.0", + "vite": "^4.4.8" + }, + "eslintConfig": { + "extends": [ + "../../../.eslintrc.js" + ] + }, + "eslintIgnore": [ + "dist" + ] +} \ No newline at end of file diff --git a/examples/03-ui-components/12-static-formatting-toolbar/style.css b/examples/03-ui-components/12-static-formatting-toolbar/style.css new file mode 100644 index 0000000000..839dd7baa0 --- /dev/null +++ b/examples/03-ui-components/12-static-formatting-toolbar/style.css @@ -0,0 +1,9 @@ +.bn-container { + display: flex; + flex-direction: column-reverse; + gap: 8px; +} + +.bn-formatting-toolbar { + margin-inline: auto; +} \ No newline at end of file diff --git a/examples/03-ui-components/12-custom-ui/tsconfig.json b/examples/03-ui-components/12-static-formatting-toolbar/tsconfig.json similarity index 100% rename from examples/03-ui-components/12-custom-ui/tsconfig.json rename to examples/03-ui-components/12-static-formatting-toolbar/tsconfig.json diff --git a/examples/03-ui-components/12-custom-ui/vite.config.ts b/examples/03-ui-components/12-static-formatting-toolbar/vite.config.ts similarity index 100% rename from examples/03-ui-components/12-custom-ui/vite.config.ts rename to examples/03-ui-components/12-static-formatting-toolbar/vite.config.ts diff --git a/examples/03-ui-components/12-custom-ui/.bnexample.json b/examples/03-ui-components/13-custom-ui/.bnexample.json similarity index 100% rename from examples/03-ui-components/12-custom-ui/.bnexample.json rename to examples/03-ui-components/13-custom-ui/.bnexample.json diff --git a/examples/03-ui-components/12-custom-ui/App.tsx b/examples/03-ui-components/13-custom-ui/App.tsx similarity index 77% rename from examples/03-ui-components/12-custom-ui/App.tsx rename to examples/03-ui-components/13-custom-ui/App.tsx index 71c540ce3f..f2892ae0d4 100644 --- a/examples/03-ui-components/12-custom-ui/App.tsx +++ b/examples/03-ui-components/13-custom-ui/App.tsx @@ -12,9 +12,9 @@ import { createTheme, ThemeProvider, useMediaQuery } from "@mui/material"; import { useMemo } from "react"; import { schema } from "./schema"; -import { MUIFormattingToolbar } from "./MUIFormattingToolbar"; -import { MUISideMenu } from "./MUISideMenu"; -import { MUISlashMenu } from "./MUISlashMenu"; +import { CustomMUIFormattingToolbar } from "./MUIFormattingToolbar"; +import { CustomMUISideMenu } from "./MUISideMenu"; +import { MUISuggestionMenu } from "./MUISuggestionMenu"; import "./style.css"; @@ -61,15 +61,18 @@ export default function App() { tableHandles={false} emojiPicker={false}> {/* Adds the custom Formatting Toolbar. */} - {/* `FormattingToolbarController isn't used since the custom toolbar */} - {/* is static and always visible above the editor. */} - + {/* `FormattingToolbarController isn't used since we make the custom */} + {/* toolbar static and always visible above the editor for this */} + {/* example. */} + {/* Adds the custom Side Menu and Slash Menu. */} {/* These use controllers since we want them to be positioned and */} {/* show/hide the same as the default ones. */} - + filterSuggestionItems( getDefaultReactSlashMenuItems(editor).filter( @@ -78,7 +81,7 @@ export default function App() { query ) } - suggestionMenuComponent={MUISlashMenu} + suggestionMenuComponent={MUISuggestionMenu} onItemClick={(i) => i.onItemClick()} /> diff --git a/examples/03-ui-components/13-custom-ui/MUIFormattingToolbar.tsx b/examples/03-ui-components/13-custom-ui/MUIFormattingToolbar.tsx new file mode 100644 index 0000000000..4c464ebd56 --- /dev/null +++ b/examples/03-ui-components/13-custom-ui/MUIFormattingToolbar.tsx @@ -0,0 +1,490 @@ +import { Block } from "@blocknote/core"; +import { + blockTypeSelectItems, + useBlockNoteEditor, + useEditorContentOrSelectionChange, +} from "@blocknote/react"; +import { + Done, + FormatAlignCenter, + FormatAlignLeft, + FormatAlignRight, + FormatBold, + FormatColorText, + FormatItalic, + FormatStrikethrough, + FormatUnderlined, +} from "@mui/icons-material"; +import { + AppBar, + Box, + Button, + ButtonGroup, + Container, + Divider, + FormControl, + ListItemIcon, + ListItemText, + Menu, + MenuItem, + Select, + SelectChangeEvent, + Toolbar, + Tooltip, + Typography, +} from "@mui/material"; +import { + MouseEvent, + useCallback, + useState, + useMemo, + FC, + ReactNode, +} from "react"; + +import { TextBlockSchema } from "./schema"; + +// This replaces the generic Mantine `ToolbarSelect` component with a simplified +// MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/toolbar/ToolbarSelect.tsx +// In this example, we use it to create a replacement for the default Formatting +// Toolbar select element (i.e. the Block Type Select) using MUI, but you can +// also use it to add custom select elements. +function MUIToolbarSelect(props: { + items: Item[]; + selectedItem: Item; + onChange: (event: SelectChangeEvent) => void; +}) { + return ( + + `${ + theme.palette.mode === "dark" + ? theme.palette.primary.main + : theme.palette.background.default + } !important`, + borderColor: (theme) => + `${ + theme.palette.mode === "dark" + ? theme.palette.primary.main + : theme.palette.background.default + } !important`, + }, + }}> + + + ); +} + +// This replaces the default `BlockTypeSelect` component with a simplified MUI +// version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx +function MUIBlockTypeSelect() { + const editor = useBlockNoteEditor(); + + // The block currently containing the text cursor. + const [block, setBlock] = useState( + editor.getTextCursorPosition().block + ); + + // Updates the block currently containing the text cursor whenever the editor + // content or selection changes. + useEditorContentOrSelectionChange( + () => setBlock(editor.getTextCursorPosition().block), + editor + ); + + // Gets the default items for the select. + const defaultBlockTypeSelectItems = useMemo( + () => blockTypeSelectItems(editor.dictionary), + [editor.dictionary] + ); + + // Gets the selected item. + const selectedItem = useMemo( + () => + defaultBlockTypeSelectItems.find((item) => + item.isSelected(block as any) + )!, + [defaultBlockTypeSelectItems, block] + ); + + // Updates the state when the user chooses an item. + const onChange = useCallback( + (event: SelectChangeEvent) => { + const newSelectedItem = defaultBlockTypeSelectItems.find( + (item) => item.name === event.target.value + )!; + + editor.updateBlock(block, { + type: newSelectedItem.type as keyof TextBlockSchema, + props: newSelectedItem.props, + }); + editor.focus(); + + setBlock(editor.getTextCursorPosition().block); + }, + [block, defaultBlockTypeSelectItems, editor] + ); + + return ( + + ); +} + +// This replaces the generic Mantine `ToolbarButton` component with a simplified +// MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/toolbar/ToolbarButton.tsx +// In this example, we use it to create replacements for the default Formatting +// Toolbar buttons using MUI, but you can also use it to add custom buttons. +function MUIToolbarButton(props: { + tooltip: string; + selected?: boolean; + onClick: (event: MouseEvent) => void; + children: ReactNode; +}) { + return ( + + + + ); +} + +const basicTextStyleIcons = { + bold: FormatBold, + italic: FormatItalic, + underline: FormatUnderlined, + strike: FormatStrikethrough, +}; + +// This replaces the default `BasicTextStyleButton` component with a simplified +// MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/DefaultButtons/BasicTextStyleButton.tsx +function MUIBasicTextStyleButton(props: { + textStyle: "bold" | "italic" | "underline" | "strike"; +}) { + const Icon = basicTextStyleIcons[props.textStyle]; + const editor = useBlockNoteEditor(); + + // Whether the text style is currently active. + const [textStyleActive, setTextStyleActive] = useState( + !!editor.getActiveStyles()[props.textStyle] + ); + + // Updates whether the text style is active when the editor content or + // selection changes. + useEditorContentOrSelectionChange( + () => setTextStyleActive(props.textStyle in editor.getActiveStyles()), + editor + ); + + // Tooltip for the button. + const tooltip = useMemo( + () => + `Toggle ${props.textStyle + .slice(0, 1) + .toUpperCase()}${props.textStyle.slice(1)}`, + [props.textStyle] + ); + + // Toggles the text style when the button is clicked. + const onClick = useCallback(() => { + editor.toggleStyles({ [props.textStyle]: true }); + editor.focus(); + }, [editor, props.textStyle]); + + return ( + + + + ); +} + +const textAlignIcons = { + left: FormatAlignLeft, + center: FormatAlignCenter, + right: FormatAlignRight, +}; + +// This replaces the default `TextAlignButton` component with a simplified MUI +// version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx +function MUITextAlignButton(props: { + textAlignment: "left" | "center" | "right"; +}) { + const Icon = textAlignIcons[props.textAlignment]; + const editor = useBlockNoteEditor(); + + // The text alignment of the block currently containing the text cursor. + const [activeTextAlignment, setActiveTextAlignment] = useState( + () => editor.getTextCursorPosition().block.props.textAlignment + ); + + // Updates the text alignment when the editor content or selection changes. + useEditorContentOrSelectionChange( + () => + setActiveTextAlignment( + editor.getTextCursorPosition().block.props.textAlignment + ), + editor + ); + + // Tooltip for the button. + const tooltip = useMemo( + () => + `Align ${props.textAlignment + .slice(0, 1) + .toUpperCase()}${props.textAlignment.slice(1)}`, + [props.textAlignment] + ); + + // Sets the text alignment of the block currently containing the text cursor + // when the button is clicked. + const onClick = useCallback(() => { + editor.updateBlock(editor.getTextCursorPosition().block, { + props: { textAlignment: props.textAlignment }, + }); + editor.focus(); + }, [editor, props.textAlignment]); + + return ( + + + + ); +} + +// The highlight colors used by BlockNote. +const colors = [ + "default", + "red", + "orange", + "yellow", + "green", + "blue", + "purple", +] as const; + +// This replaces the default `ColorStyleButton` component with a simplified MUI +// version. The original component can be found here: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx +function MUIColorStyleButton() { + const editor = useBlockNoteEditor(); + + // Anchor/trigger element for the color menu. + const [anchorEl, setAnchorEl] = useState(null); + + // The active text and background colors. + const [activeTextColor, setActiveTextColor] = useState( + () => editor.getActiveStyles().textColor || "default" + ); + const [activeBackgroundColor, setActiveBackgroundColor] = useState( + () => editor.getActiveStyles().backgroundColor || "default" + ); + + // Updates the active text and background colors when the editor content or + // selection changes. + useEditorContentOrSelectionChange(() => { + const activeStyles = editor.getActiveStyles(); + + setActiveTextColor(activeStyles.textColor || "default"); + setActiveBackgroundColor(activeStyles.backgroundColor || "default"); + }, editor); + + // Handles opening and closing the color menu. + const onClick = useCallback( + (event: MouseEvent) => setAnchorEl(event.currentTarget), + [] + ); + const onClose = useCallback(() => setAnchorEl(null), []); + + // Set the text or background color and close the color menu when a color is + // clicked. + const textColorOnClick = useCallback( + (textColor: string) => { + setAnchorEl(null); + textColor === "default" + ? editor.removeStyles({ textColor }) + : editor.addStyles({ textColor }); + setTimeout(() => editor.focus()); + }, + [editor] + ); + const backgroundColorOnClick = useCallback( + (backgroundColor: string) => { + setAnchorEl(null); + backgroundColor === "default" + ? editor.removeStyles({ backgroundColor }) + : editor.addStyles({ backgroundColor }); + setTimeout(() => editor.focus()); + }, + [editor] + ); + + return ( + <> + + + + + + Text Color + + {colors.map((color) => ( + textColorOnClick(color)}> + + + + + + {color.slice(0, 1).toUpperCase() + color.slice(1)} + + + {color === activeTextColor && ( + + )} + + ))} + + + Background Color + + {colors.map((color) => ( + backgroundColorOnClick(color)}> + + + + + + {color.slice(0, 1).toUpperCase() + color.slice(1)} + + + {color === activeBackgroundColor && ( + + )} + + ))} + + + ); +} + +// This replaces the generic Mantine `Toolbar` component: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/toolbar/ToolbarSelect.tsx +// In this example, we use it to create a replacement for the default Formatting +// Toolbar using MUI, but you can also use it to replace the default Link +// Toolbar. +function MUIToolbar(props: { children?: ReactNode }) { + return ( + + + + {props.children} + + + + ); +} + +// This replaces the default `FormattingToolbar` component with a simplified MUI +// version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/FormattingToolbar/FormattingToolbar.tsx +// You can remove any of the default selects/buttons, or add custom +// ones as children of the `MUIToolbar` component here. +export function CustomMUIFormattingToolbar() { + return ( + + + + {/* Replaces the `BasicTextStyleButton` component: */} + + + + + + + {/* Replaces the `TextAlignButton` component: */} + + + + + + + + + ); +} diff --git a/examples/03-ui-components/13-custom-ui/MUISideMenu.tsx b/examples/03-ui-components/13-custom-ui/MUISideMenu.tsx new file mode 100644 index 0000000000..aef3f8647e --- /dev/null +++ b/examples/03-ui-components/13-custom-ui/MUISideMenu.tsx @@ -0,0 +1,165 @@ +import { SideMenuProps } from "@blocknote/react"; +import { Delete, DragIndicator } from "@mui/icons-material"; +import { + Box, + IconButton, + ListItemIcon, + ListItemText, + Menu, + MenuItem, + Typography, +} from "@mui/material"; +import { MouseEvent, ReactNode, useCallback, useMemo, useState } from "react"; + +import { TextBlockSchema } from "./schema"; + +// This replaces the default `RemoveBlockItem` component with a simplified +// MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/SideMenu/DragHandleMenu/DefaultItems/RemoveBlockItem.tsx +function MUIRemoveBlockItem( + props: SideMenuProps & { closeDragHandleMenu: () => void } +) { + // Deletes the block next to the side menu. + const onClick = useCallback(() => { + props.unfreezeMenu(); + props.closeDragHandleMenu(); + props.editor.removeBlocks([props.editor.getTextCursorPosition().block]); + props.editor.focus(); + }, [props]); + + return ( + + + theme.palette.text.primary, + padding: "0.1em", + height: "0.8em", + width: "0.8em", + }} + /> + + + Delete Block + + + ); +} + +// This replaces the default `DragHandleMenu` component with a simplified MUI +// version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/SideMenu/DragHandleMenu/DragHandleMenu.tsx +function MUIDragHandleMenu(props: { + anchorEl: HTMLElement | null; + container: Element; + onClose: () => void; + children: ReactNode; +}) { + return ( + + {props.children} + + ); +} + +// This replaces the default `DragHandleButton` component with a simplified MUI +// version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/SideMenu/DefaultButtons/DragHandleButton.tsx +function MUIDragHandleButton(props: SideMenuProps) { + // Anchor/trigger element for the color menu. + const [anchorEl, setAnchorEl] = useState(null); + + // Handles opening and closing the drag handle menu. + const onClick = useCallback( + (event: MouseEvent) => { + props.freezeMenu(); + setAnchorEl(event.currentTarget); + }, + [props] + ); + const onClose = useCallback(() => { + setAnchorEl(null); + }, []); + + return ( + <> + + theme.palette.text.primary, + }} + /> + + + + + + ); +} + +// This replaces the generic Mantine `SideMenu` component: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/sideMenu/SideMenu.tsx +function MUISideMenu( + props: SideMenuProps & { children: ReactNode } +) { + // Since the side menu is positioned by the top-left corner of a block, we + // manually set its height based on the hovered block so that it's vertically + // centered. + const sideMenuHeight = useMemo(() => { + if (props.block.type === "heading") { + if (props.block.props.level === 1) { + return 78; + } + + if (props.block.props.level === 2) { + return 54; + } + + if (props.block.props.level === 3) { + return 37; + } + } + + return 30; + }, [props.block]); + + return ( + + {props.children} + + ); +} + +// This replaces the default `SideMenu` component with a simplified MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/react/src/components/SideMenu/SideMenu.tsx +// You can add to or replace the `MUIDragHandleButton` component using the MUI +// `Button` components. Unlike the Formatting Toolbar, we don't use button +// components specific to the Side Menu since there is really nothing more to +// them than just an MUI `Button` and some styles passed via the `sx` prop, as +// you can see in `MUIDragHandleButton`. +export function CustomMUISideMenu(props: SideMenuProps) { + return ( + + + + ); +} diff --git a/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx b/examples/03-ui-components/13-custom-ui/MUISuggestionMenu.tsx similarity index 50% rename from examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx rename to examples/03-ui-components/13-custom-ui/MUISuggestionMenu.tsx index f841d4ce06..d677bfe155 100644 --- a/examples/03-ui-components/12-custom-ui/MUISlashMenu.tsx +++ b/examples/03-ui-components/13-custom-ui/MUISuggestionMenu.tsx @@ -18,17 +18,25 @@ import { useEffect, useMemo, useRef } from "react"; import { TextBlockSchema } from "./schema"; -// Custom component to replace items in the default Slash Menu. -export function MUISlashMenuItem( +// If you want to change the items in a Suggestion Menu, like the Slash Menu, +// you don't need to modify any of the components in this file. Instead, you +// should change the array returned in the getItems` prop of the +// `SuggestionMenuController` in `App.tsx`. The components in this file are only +// responsible for rendering a Suggestion Menu, not setting its content. + +// This replaces the generic Mantine `SuggestionMenuItem` component with a +// simplified MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/suggestionMenu/SuggestionMenuItem.tsx +function MUISuggestionMenuItem( props: Omit, "items"> & { item: DefaultReactSuggestionItem & { index: number }; } ) { + const Icon = props.item.icon; const editor = useBlockNoteEditor(); - const itemRef = useRef(null); - // Scrolls to the item if it's detected to overflow the Slash Menu. + const itemRef = useRef(null); useEffect(() => { if (!itemRef.current || props.item.index !== props.selectedIndex) { return; @@ -36,7 +44,9 @@ export function MUISlashMenuItem( const overflow = elementOverflow( itemRef.current, - document.querySelector(".MuiPaper-root:has(.slash-menu)")! + document.querySelector( + `.MuiPaper-root:has([aria-label="suggestion-menu"])` + )! ); if (overflow === "top") { @@ -46,7 +56,6 @@ export function MUISlashMenuItem( } }, [props.item.index, props.selectedIndex]); - const Icon = props.item.icon; return ( + + + + + ); +} + +// This replaces the generic Mantine `SuggestionMenuLabel` component with a +// simplified MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/suggestionMenu/SuggestionMenuLabel.tsx +function MUISuggestionMenuLabel(props: { group: string }) { + return ( + theme.palette.background.paper, + }}> + {props.group} + + ); +} + +// This replaces the generic Mantine `SuggestionMenu` component with a +// simplified MUI version: +// https://github.com/TypeCellOS/BlockNote/blob/main/packages/mantine/src/suggestionMenu/SuggestionMenu.tsx +export function MUISuggestionMenu( props: SuggestionMenuProps ) { // Sorts items into their groups. @@ -96,60 +136,36 @@ export function MUISlashMenu( return groups; }, [props.items]); - // If query matches no items, shows "No matches" message. - if (props.items.length === 0) { - return ( - - - - ); - } - return ( -