From 61dfd74134f63cf307c89803e659b2951187636d Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Fri, 24 Nov 2023 18:01:54 +0700 Subject: [PATCH] feat: removed non-streaming for nextjs --- packages/create-llama/create-app.ts | 16 +-- packages/create-llama/index.ts | 62 ++++++------ .../types/simple/nextjs/.env.example | 3 - .../types/simple/nextjs/README-template.md | 30 ------ .../nextjs/app/api/chat/engine/index.ts | 7 -- .../types/simple/nextjs/app/api/chat/route.ts | 47 --------- .../nextjs/app/components/chat-section.tsx | 80 --------------- .../simple/nextjs/app/components/header.tsx | 28 ------ .../app/components/ui/chat/chat-avatar.tsx | 34 ------- .../app/components/ui/chat/chat-input.tsx | 42 -------- .../app/components/ui/chat/chat-item.tsx | 13 --- .../app/components/ui/chat/chat-messages.tsx | 38 ------- .../nextjs/app/components/ui/chat/index.ts | 6 -- .../types/simple/nextjs/app/favicon.ico | Bin 15406 -> 0 bytes .../types/simple/nextjs/app/globals.css | 94 ------------------ .../types/simple/nextjs/app/layout.tsx | 22 ---- .../types/simple/nextjs/app/page.tsx | 11 -- .../types/simple/nextjs/eslintrc.json | 3 - .../templates/types/simple/nextjs/gitignore | 35 ------- .../types/simple/nextjs/next-env.d.ts | 5 - .../types/simple/nextjs/next.config.app.js | 21 ---- .../types/simple/nextjs/next.config.static.js | 23 ----- .../types/simple/nextjs/package.json | 29 ------ .../types/simple/nextjs/postcss.config.js | 6 -- .../types/simple/nextjs/public/llama.png | Bin 36985 -> 0 bytes .../types/simple/nextjs/tailwind.config.ts | 78 --------------- .../types/simple/nextjs/tsconfig.json | 41 -------- 27 files changed, 42 insertions(+), 732 deletions(-) delete mode 100644 packages/create-llama/templates/types/simple/nextjs/.env.example delete mode 100644 packages/create-llama/templates/types/simple/nextjs/README-template.md delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/api/chat/engine/index.ts delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/api/chat/route.ts delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/chat-section.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/header.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-avatar.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-input.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-item.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-messages.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/index.ts delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/favicon.ico delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/globals.css delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/layout.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/app/page.tsx delete mode 100644 packages/create-llama/templates/types/simple/nextjs/eslintrc.json delete mode 100644 packages/create-llama/templates/types/simple/nextjs/gitignore delete mode 100644 packages/create-llama/templates/types/simple/nextjs/next-env.d.ts delete mode 100644 packages/create-llama/templates/types/simple/nextjs/next.config.app.js delete mode 100644 packages/create-llama/templates/types/simple/nextjs/next.config.static.js delete mode 100644 packages/create-llama/templates/types/simple/nextjs/package.json delete mode 100644 packages/create-llama/templates/types/simple/nextjs/postcss.config.js delete mode 100644 packages/create-llama/templates/types/simple/nextjs/public/llama.png delete mode 100644 packages/create-llama/templates/types/simple/nextjs/tailwind.config.ts delete mode 100644 packages/create-llama/templates/types/simple/nextjs/tsconfig.json diff --git a/packages/create-llama/create-app.ts b/packages/create-llama/create-app.ts index a6be4dd31..05186ed41 100644 --- a/packages/create-llama/create-app.ts +++ b/packages/create-llama/create-app.ts @@ -12,6 +12,14 @@ import terminalLink from "terminal-link"; import type { InstallTemplateArgs } from "./templates"; import { installTemplate } from "./templates"; +export type InstallAppArgs = Omit< + InstallTemplateArgs, + "appName" | "root" | "isOnline" | "customApiPath" +> & { + appPath: string; + frontend: boolean; +}; + export async function createApp({ template, framework, @@ -23,13 +31,7 @@ export async function createApp({ frontend, openAIKey, model, -}: Omit< - InstallTemplateArgs, - "appName" | "root" | "isOnline" | "customApiPath" -> & { - appPath: string; - frontend: boolean; -}): Promise<void> { +}: InstallAppArgs): Promise<void> { const root = path.resolve(appPath); if (!(await isWriteable(path.dirname(root)))) { diff --git a/packages/create-llama/index.ts b/packages/create-llama/index.ts index e051f595f..67a0f53ce 100644 --- a/packages/create-llama/index.ts +++ b/packages/create-llama/index.ts @@ -8,7 +8,7 @@ import path from "path"; import { blue, bold, cyan, green, red, yellow } from "picocolors"; import prompts from "prompts"; import checkForUpdate from "update-check"; -import { createApp } from "./create-app"; +import { InstallAppArgs, createApp } from "./create-app"; import { getPkgManager } from "./helpers/get-pkg-manager"; import { isFolderEmpty } from "./helpers/is-folder-empty"; import { validateNpmName } from "./helpers/validate-pkg"; @@ -155,21 +155,22 @@ async function run(): Promise<void> { process.exit(1); } - const preferences = (conf.get("preferences") || {}) as Record< - string, - boolean | string - >; + // TODO: use Args also for program + type Args = Omit<InstallAppArgs, "appPath" | "packageManager">; - const defaults: typeof preferences = { - template: "simple", + const preferences = (conf.get("preferences") || {}) as Args; + + const defaults: Args = { + template: "streaming", framework: "nextjs", engine: "simple", ui: "html", eslint: true, frontend: false, openAIKey: "", + model: "gpt-3.5-turbo", }; - const getPrefOrDefault = (field: string) => + const getPrefOrDefault = (field: keyof Args) => preferences[field] ?? defaults[field]; const handlers = { @@ -179,48 +180,51 @@ async function run(): Promise<void> { }, }; - if (!program.template) { + if (!program.framework) { if (ciInfo.isCI) { - program.template = getPrefOrDefault("template"); + program.framework = getPrefOrDefault("framework"); } else { - const { template } = await prompts( + const { framework } = await prompts( { type: "select", - name: "template", - message: "Which template would you like to use?", + name: "framework", + message: "Which framework would you like to use?", choices: [ - { title: "Chat without streaming", value: "simple" }, - { title: "Chat with streaming", value: "streaming" }, + { title: "NextJS", value: "nextjs" }, + { title: "Express", value: "express" }, + { title: "FastAPI (Python)", value: "fastapi" }, ], - initial: 1, + initial: 0, }, handlers, ); - program.template = template; - preferences.template = template; + program.framework = framework; + preferences.framework = framework; } } - if (!program.framework) { + if (program.framework === "nextjs") { + program.template = "streaming"; + } + if (!program.template) { if (ciInfo.isCI) { - program.framework = getPrefOrDefault("framework"); + program.template = getPrefOrDefault("template"); } else { - const { framework } = await prompts( + const { template } = await prompts( { type: "select", - name: "framework", - message: "Which framework would you like to use?", + name: "template", + message: "Which template would you like to use?", choices: [ - { title: "NextJS", value: "nextjs" }, - { title: "Express", value: "express" }, - { title: "FastAPI (Python)", value: "fastapi" }, + { title: "Chat without streaming", value: "simple" }, + { title: "Chat with streaming", value: "streaming" }, ], - initial: 0, + initial: 1, }, handlers, ); - program.framework = framework; - preferences.framework = framework; + program.template = template; + preferences.template = template; } } diff --git a/packages/create-llama/templates/types/simple/nextjs/.env.example b/packages/create-llama/templates/types/simple/nextjs/.env.example deleted file mode 100644 index 7ac0a0155..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -# Rename this file to `.env.local` to use environment variables locally with `next dev` -# https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables -MY_HOST="example.com" diff --git a/packages/create-llama/templates/types/simple/nextjs/README-template.md b/packages/create-llama/templates/types/simple/nextjs/README-template.md deleted file mode 100644 index 1509ded7c..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/README-template.md +++ /dev/null @@ -1,30 +0,0 @@ -This is a [LlamaIndex](https://www.llamaindex.ai/) project using [Next.js](https://nextjs.org/) bootstrapped with [`create-llama`](https://github.com/run-llama/LlamaIndexTS/tree/main/packages/create-llama). - -## Getting Started - -First, install the dependencies: - -``` -npm install -``` - -Second, run the development server: - -``` -npm run dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about LlamaIndex, take a look at the following resources: - -- [LlamaIndex Documentation](https://docs.llamaindex.ai) - learn about LlamaIndex (Python features). -- [LlamaIndexTS Documentation](https://ts.llamaindex.ai) - learn about LlamaIndex (Typescript features). - -You can check out [the LlamaIndexTS GitHub repository](https://github.com/run-llama/LlamaIndexTS) - your feedback and contributions are welcome! diff --git a/packages/create-llama/templates/types/simple/nextjs/app/api/chat/engine/index.ts b/packages/create-llama/templates/types/simple/nextjs/app/api/chat/engine/index.ts deleted file mode 100644 index abb02e90c..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/api/chat/engine/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { LLM, SimpleChatEngine } from "llamaindex"; - -export async function createChatEngine(llm: LLM) { - return new SimpleChatEngine({ - llm, - }); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/api/chat/route.ts b/packages/create-llama/templates/types/simple/nextjs/app/api/chat/route.ts deleted file mode 100644 index 097341ab4..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/api/chat/route.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { ChatMessage, OpenAI } from "llamaindex"; -import { NextRequest, NextResponse } from "next/server"; -import { createChatEngine } from "./engine"; - -export const runtime = "nodejs"; -export const dynamic = "force-dynamic"; - -export async function POST(request: NextRequest) { - try { - const body = await request.json(); - const { messages }: { messages: ChatMessage[] } = body; - const lastMessage = messages.pop(); - if (!messages || !lastMessage || lastMessage.role !== "user") { - return NextResponse.json( - { - error: - "messages are required in the request body and the last message must be from the user", - }, - { status: 400 }, - ); - } - - const llm = new OpenAI({ - model: "gpt-3.5-turbo", - }); - - const chatEngine = await createChatEngine(llm); - - const response = await chatEngine.chat(lastMessage.content, messages); - const result: ChatMessage = { - role: "assistant", - content: response.response, - }; - - return NextResponse.json({ result }); - } catch (error) { - console.error("[LlamaIndex]", error); - return NextResponse.json( - { - error: (error as Error).message, - }, - { - status: 500, - }, - ); - } -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/chat-section.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/chat-section.tsx deleted file mode 100644 index 133a0a884..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/chat-section.tsx +++ /dev/null @@ -1,80 +0,0 @@ -"use client"; - -import { nanoid } from "nanoid"; -import { useState } from "react"; -import { ChatInput, ChatInputProps, ChatMessages, Message } from "./ui/chat"; - -function useChat(): ChatInputProps & { messages: Message[] } { - const [messages, setMessages] = useState<Message[]>([]); - const [isLoading, setIsLoading] = useState(false); - const [input, setInput] = useState(""); - - const getAssistantMessage = async (messages: Message[]) => { - const response = await fetch( - process.env.NEXT_PUBLIC_CHAT_API ?? "/api/chat", - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - messages, - }), - }, - ); - const data = await response.json(); - const assistantMessage = data.result as Message; - return assistantMessage; - }; - - const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => { - e.preventDefault(); - if (!input) return; - - setIsLoading(true); - - try { - const newMessages = [ - ...messages, - { id: nanoid(), content: input, role: "user" }, - ]; - setMessages(newMessages); - setInput(""); - const assistantMessage = await getAssistantMessage(newMessages); - setMessages([...newMessages, { ...assistantMessage, id: nanoid() }]); - } catch (error: any) { - console.log(error); - alert(error.message); - } finally { - setIsLoading(false); - } - }; - - const handleInputChange = (e: any): void => { - setInput(e.target.value); - }; - - return { - messages, - isLoading, - input, - handleSubmit, - handleInputChange, - }; -} - -export default function ChatSection() { - const { messages, isLoading, input, handleSubmit, handleInputChange } = - useChat(); - return ( - <div className="space-y-4 max-w-5xl w-full"> - <ChatMessages messages={messages} /> - <ChatInput - handleSubmit={handleSubmit} - isLoading={isLoading} - input={input} - handleInputChange={handleInputChange} - /> - </div> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/header.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/header.tsx deleted file mode 100644 index 2b0e488f7..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/header.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import Image from "next/image"; - -export default function Header() { - return ( - <div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"> - <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> - Get started by editing - <code className="font-mono font-bold">app/page.tsx</code> - </p> - <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none"> - <a - href="https://www.llamaindex.ai/" - className="flex items-center justify-center font-nunito text-lg font-bold gap-2" - > - <span>Built by LlamaIndex</span> - <Image - className="rounded-xl" - src="/llama.png" - alt="Llama Logo" - width={40} - height={40} - priority - /> - </a> - </div> - </div> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-avatar.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-avatar.tsx deleted file mode 100644 index cd241104e..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-avatar.tsx +++ /dev/null @@ -1,34 +0,0 @@ -"use client"; - -import Image from "next/image"; -import { Message } from "./chat-messages"; - -export default function ChatAvatar(message: Message) { - if (message.role === "user") { - return ( - <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border shadow bg-background"> - <svg - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 256 256" - fill="currentColor" - className="h-4 w-4" - > - <path d="M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z"></path> - </svg> - </div> - ); - } - - return ( - <div className="flex h-8 w-8 shrink-0 select-none items-center justify-center rounded-md border bg-black text-white"> - <Image - className="rounded-md" - src="/llama.png" - alt="Llama Logo" - width={24} - height={24} - priority - /> - </div> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-input.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-input.tsx deleted file mode 100644 index 3eb979b02..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-input.tsx +++ /dev/null @@ -1,42 +0,0 @@ -"use client"; - -export interface ChatInputProps { - /** The current value of the input */ - input?: string; - /** An input/textarea-ready onChange handler to control the value of the input */ - handleInputChange?: ( - e: - | React.ChangeEvent<HTMLInputElement> - | React.ChangeEvent<HTMLTextAreaElement>, - ) => void; - /** Form submission handler to automatically reset input and append a user message */ - handleSubmit: (e: React.FormEvent<HTMLFormElement>) => void; - isLoading: boolean; -} - -export default function ChatInput(props: ChatInputProps) { - return ( - <> - <form - onSubmit={props.handleSubmit} - className="flex items-start justify-between w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl gap-4" - > - <input - autoFocus - name="message" - placeholder="Type a message" - className="w-full p-4 rounded-xl shadow-inner flex-1" - value={props.input} - onChange={props.handleInputChange} - /> - <button - disabled={props.isLoading} - type="submit" - className="p-4 text-white rounded-xl shadow-xl bg-gradient-to-r from-cyan-500 to-sky-500 disabled:opacity-50 disabled:cursor-not-allowed" - > - Send message - </button> - </form> - </> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-item.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-item.tsx deleted file mode 100644 index 2244f729a..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-item.tsx +++ /dev/null @@ -1,13 +0,0 @@ -"use client"; - -import ChatAvatar from "./chat-avatar"; -import { Message } from "./chat-messages"; - -export default function ChatItem(message: Message) { - return ( - <div className="flex items-start gap-4 pt-5"> - <ChatAvatar {...message} /> - <p className="break-words">{message.content}</p> - </div> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-messages.tsx b/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-messages.tsx deleted file mode 100644 index 65eacabbf..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/chat-messages.tsx +++ /dev/null @@ -1,38 +0,0 @@ -"use client"; - -import { useEffect, useRef } from "react"; -import ChatItem from "./chat-item"; - -export interface Message { - id: string; - content: string; - role: string; -} - -export default function ChatMessages({ messages }: { messages: Message[] }) { - const scrollableChatContainerRef = useRef<HTMLDivElement>(null); - - const scrollToBottom = () => { - if (scrollableChatContainerRef.current) { - scrollableChatContainerRef.current.scrollTop = - scrollableChatContainerRef.current.scrollHeight; - } - }; - - useEffect(() => { - scrollToBottom(); - }, [messages.length]); - - return ( - <div className="w-full max-w-5xl p-4 bg-white rounded-xl shadow-xl"> - <div - className="flex flex-col gap-5 divide-y h-[50vh] overflow-auto" - ref={scrollableChatContainerRef} - > - {messages.map((m: Message) => ( - <ChatItem key={m.id} {...m} /> - ))} - </div> - </div> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/index.ts b/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/index.ts deleted file mode 100644 index 5de7dce47..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/components/ui/chat/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import ChatInput from "./chat-input"; -import ChatMessages from "./chat-messages"; - -export type { ChatInputProps } from "./chat-input"; -export type { Message } from "./chat-messages"; -export { ChatInput, ChatMessages }; diff --git a/packages/create-llama/templates/types/simple/nextjs/app/favicon.ico b/packages/create-llama/templates/types/simple/nextjs/app/favicon.ico deleted file mode 100644 index a1eaef62f2dfa895f1bbffc6595bb53d9604963e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 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 diff --git a/packages/create-llama/templates/types/simple/nextjs/app/globals.css b/packages/create-llama/templates/types/simple/nextjs/app/globals.css deleted file mode 100644 index 09b85ed2c..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/globals.css +++ /dev/null @@ -1,94 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 222.2 47.4% 11.2%; - - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - - --popover: 0 0% 100%; - --popover-foreground: 222.2 47.4% 11.2%; - - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - - --card: 0 0% 100%; - --card-foreground: 222.2 47.4% 11.2%; - - --primary: 222.2 47.4% 11.2%; - --primary-foreground: 210 40% 98%; - - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; - - --destructive: 0 100% 50%; - --destructive-foreground: 210 40% 98%; - - --ring: 215 20.2% 65.1%; - - --radius: 0.5rem; - } - - .dark { - --background: 224 71% 4%; - --foreground: 213 31% 91%; - - --muted: 223 47% 11%; - --muted-foreground: 215.4 16.3% 56.9%; - - --accent: 216 34% 17%; - --accent-foreground: 210 40% 98%; - - --popover: 224 71% 4%; - --popover-foreground: 215 20.2% 65.1%; - - --border: 216 34% 17%; - --input: 216 34% 17%; - - --card: 224 71% 4%; - --card-foreground: 213 31% 91%; - - --primary: 210 40% 98%; - --primary-foreground: 222.2 47.4% 1.2%; - - --secondary: 222.2 47.4% 11.2%; - --secondary-foreground: 210 40% 98%; - - --destructive: 0 63% 31%; - --destructive-foreground: 210 40% 98%; - - --ring: 216 34% 17%; - - --radius: 0.5rem; - } -} - -@layer base { - * { - @apply border-border; - } - body { - @apply bg-background text-foreground; - font-feature-settings: - "rlig" 1, - "calt" 1; - } - .background-gradient { - background-color: #fff; - background-image: radial-gradient( - at 21% 11%, - rgba(186, 186, 233, 0.53) 0, - transparent 50% - ), - radial-gradient(at 85% 0, hsla(46, 57%, 78%, 0.52) 0, transparent 50%), - radial-gradient(at 91% 36%, rgba(194, 213, 255, 0.68) 0, transparent 50%), - radial-gradient(at 8% 40%, rgba(251, 218, 239, 0.46) 0, transparent 50%); - } -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/layout.tsx b/packages/create-llama/templates/types/simple/nextjs/app/layout.tsx deleted file mode 100644 index fb0977062..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/layout.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; -import "./globals.css"; - -const inter = Inter({ subsets: ["latin"] }); - -export const metadata: Metadata = { - title: "Create Llama App", - description: "Generated by create-llama", -}; - -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( - <html lang="en"> - <body className={inter.className}>{children}</body> - </html> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/app/page.tsx b/packages/create-llama/templates/types/simple/nextjs/app/page.tsx deleted file mode 100644 index 31f51facb..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/app/page.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import ChatSection from "@/app/components/chat-section"; -import Header from "@/app/components/header"; - -export default function Home() { - return ( - <main className="flex min-h-screen flex-col items-center gap-10 p-24 background-gradient"> - <Header /> - <ChatSection /> - </main> - ); -} diff --git a/packages/create-llama/templates/types/simple/nextjs/eslintrc.json b/packages/create-llama/templates/types/simple/nextjs/eslintrc.json deleted file mode 100644 index bffb357a7..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/packages/create-llama/templates/types/simple/nextjs/gitignore b/packages/create-llama/templates/types/simple/nextjs/gitignore deleted file mode 100644 index 8f322f0d8..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/gitignore +++ /dev/null @@ -1,35 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/packages/create-llama/templates/types/simple/nextjs/next-env.d.ts b/packages/create-llama/templates/types/simple/nextjs/next-env.d.ts deleted file mode 100644 index 4f11a03dc..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// <reference types="next" /> -/// <reference types="next/image-types/global" /> - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/create-llama/templates/types/simple/nextjs/next.config.app.js b/packages/create-llama/templates/types/simple/nextjs/next.config.app.js deleted file mode 100644 index 0ff949691..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/next.config.app.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - webpack: (config) => { - // See https://webpack.js.org/configuration/resolve/#resolvealias - config.resolve.alias = { - ...config.resolve.alias, - sharp$: false, - "onnxruntime-node$": false, - mongodb$: false, - }; - return config; - }, - experimental: { - serverComponentsExternalPackages: ["llamaindex"], - outputFileTracingIncludes: { - "/*": ["./cache/**/*"], - }, - }, -}; - -module.exports = nextConfig; diff --git a/packages/create-llama/templates/types/simple/nextjs/next.config.static.js b/packages/create-llama/templates/types/simple/nextjs/next.config.static.js deleted file mode 100644 index c5e9ab41f..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/next.config.static.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - output: "export", - images: { unoptimized: true }, - webpack: (config) => { - // See https://webpack.js.org/configuration/resolve/#resolvealias - config.resolve.alias = { - ...config.resolve.alias, - sharp$: false, - "onnxruntime-node$": false, - mongodb$: false, - }; - return config; - }, - experimental: { - serverComponentsExternalPackages: ["llamaindex"], - outputFileTracingIncludes: { - "/*": ["./cache/**/*"], - }, - }, -}; - -module.exports = nextConfig; diff --git a/packages/create-llama/templates/types/simple/nextjs/package.json b/packages/create-llama/templates/types/simple/nextjs/package.json deleted file mode 100644 index 5faf066d6..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "llama-index-nextjs", - "version": "1.0.0", - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "llamaindex": "0.0.31", - "dotenv": "^16.3.1", - "nanoid": "^5", - "next": "^13", - "react": "^18", - "react-dom": "^18" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "autoprefixer": "^10.1", - "eslint": "^8", - "eslint-config-next": "^13", - "postcss": "^8", - "tailwindcss": "^3.3", - "typescript": "^5" - } -} \ No newline at end of file diff --git a/packages/create-llama/templates/types/simple/nextjs/postcss.config.js b/packages/create-llama/templates/types/simple/nextjs/postcss.config.js deleted file mode 100644 index 12a703d90..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/packages/create-llama/templates/types/simple/nextjs/public/llama.png b/packages/create-llama/templates/types/simple/nextjs/public/llama.png deleted file mode 100644 index d4efba3b816bf765439c6d01b322b02684e946c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36985 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Y9Bd2>45zQ%?_ywJ;4JWnEM{Qf76xHPhFNnY z7#J8Bi-X*q7}lMWdC9=Qz>@Ch>&U>cv7h@-A}a&K1U^p}$B+ufw|m*AsCZW0|K9&< z-M73w<<_tNzI}V|-QBl$-~F@|I>2ZlqtMWx5TM}tDR4?<QBBbW;rqh#<UYCtiMVnJ zxCp&#P(EM1``+wGbL+I@zcb&*hAvgwq-A_KwKUZKyHDt~|J$dB&zv}M;>1YXul?`4 z^_5t{&Oa{N9iP`9YS*qMt=J;ql$Gq1w_N-7?4s&To38dc)M_03cmBz@`OS}fITTyg zurCi3`}%+Brg-74T)Twc|CdZvRBsV*I`Q>k{9?Dn{KKa-1piB&(kpY~P;7~@51IZ= z|5R>JUi+%l7|#p;`FH-EcW0LahhobF>Bdi!{wF>C%$_;ZWomckRADC$#opFUm+Tvh z4CXq{TCl%y(@cMm!efs-r?}od@VqEI?^`?z$bnK5|9;qUKiBbp|C4XO6<P$GJd{6k zoN6r6cjMf3x_1Aay0D)rAkpN-zb^8J*zt1zo!{VC020}JA@rux_3D&`@2B6^6ma5D zTypb<!uHM+PT|)q7vJJkY?<&ZIWW)PO>EbubKjdm3eL8@a=t&odFTBadk)1GflECr z6m$CBoBTj7d-k+W^~D=&koRZJzTkA99pq;d<L{b|_xT}AXRTAV3?L`Znk56){w3f7 z$QB+4N02Tf2G+R(P8=s0L`s}E6jhi<C2<DATLs;A0j9UPxexypEo`Vd`LyW8iRXeW zjAGNLIdCXGIkvd&YCZpwr5Tfx>TaJke|(YOR)@7#^77`*8dJSY<L}?U-rjHXgTe0m zjpK)p9XxVHW!m)D`4R$79Ff)<FLb*$ZTSCe{a>qphxPv%z1#IQ?9AEo$u(JCT%SL6 zUDtB_|3_W^xcwjYdj9_UABi?4_xHYd`*v!oPJ){$-;$?(9EwkVIXUJBragPMq42Ok zoj2F7yW8)!{eHKH*?L>v#B1M7j;X5$>WBrefBW|3G4}U6+2>dPNxreCP&v=GVzSM? zXs+M38Yf;)S#kc{`Kzg4g`GHdnt>ek>VI5B#DVqy4xLXv{6Jw_?#&+Sr5oy>H1j8< z<nT<se0j$7=gj?E*RuR=-2ML8WBE!Io4m=jubP?v-q@V2F1O=*-kr+Vx`~p)lY`$R ztG7&e&BD63RZ>#^xVYW#n*nD&zkU1S<-0@Ya&Lb)^0+_o|Gc|FQ;r+jSUqDoce6=u zVM}dB0z>(oB4fL+FWfI&zuf%srDji`?}aG!mI<Y8P4^z%DgOO-$Kz+SFW$V#sdy?= zR<`m^-3Nudy)PXymd>}U=JSraUo~sN>o2G6zVhFx70<i5U*6c*c!!Bi)6t`@pn#Xx zc%gf4+u7M4Hnz*V#pnA^(qMX0#I$=`{_*DTccr<0Yv=E4y}9$}hZ5bUbtj(R-dO)$ z&gRoW{s-%#^N)2JryH6XdS=fRaJt6GRn>j@^5yRH^^Z1Q2-RECp>4Qc;?={AMYHd3 z$=A=bEnsNBXWO&#rDREY=~a~%iISJzgkSr`sQKoUw1JIPmv{KOYa+h>9EwZIG+yZT zy)v(VbGX0d+Kx9&{YPzX1vcH$jQ#NY+nYlU@$&cVE2X$Em9D$<aw|twh?~26`<~<1 z3=-Cb=sfze^K+tQi-6NLHm<7f#cOh(hVB3RZ1#nDtIx3LO!};J$HgKq_G|ljUA+fa zZhlVu7sYDp<eRa%_O;lZnuPir=Jk=^R{Nj+SL(!}c%6@R@6o_%pZ}KM741{zU*5d+ z$eu+n3h&MS_V(b@)rS{u{rBQ9f1+uQgbc^=z2CooeK6HI|6-7O%LLPgrhAW8JlMWF zZ#Qdy-3!Mp&(E&>o9uY~#pJ&acW=vgj;@})<r06AsfPF-u0y+{zpZ?Kd$aWWJ>@EM zF0=_aop`ly!FH>l82)#6+t1s4)A)30?K)NKq&PqEONZnR{j;q;r19<Q{cVqq?a!>2 zDEa=a+WoNPD<(f_Zw|%PO{bS{vuJ&q>f__TFu-eBm8f>iWxchZ->vgo!#ejTU(Kh* z@(1fb$^T>f_U48lm#t#UgkK96Y`4f#oI3NS<(c!kEywN5clQe2-6|9p+9!4WUv&H* z*FWL)&&v-#%xw{Hdez?Kw_(ecmY=OZXC0~8`{L!hWAXpLsDJGCuMxXDH#_;Su#<<j zqoaC6OdMDH#D{EEyQeN)*S6*F-1~n@|J+Hp>s_}_Pr!*|r7V}#!9$0X(zGt`y5})v z#rwN^x&J?||M>mm?EQbbH?6Px>R8?)a49R`g6EF5pFzyMtl`>w|9+cZC;7YVt&84q z`#>j-m8}1wCKbeeZDotv9>ben{b1hi5B&cx@0aeYOn+jn*s_L)b#9B;uD#EG_PY5B z|GwE@uXE=LlVOX1(<*02bqy`Y`~z3dZ_B&c^Z!TwA1S*pjlVON3Ok+P3b@cI@@3MN zOVY)?pQ`hAi|+sEy}v;=dV7O_lZTZ^Nt1$x;)S%XY?Uh|Tl{Mt8QOe2dHkaHb!)|z zB~Fg&54E!2-m-bud+gXk#Xrx)>p9Ckv*!lBZxMLZzQ0e`Z??#Zxwp3`zdtuOBP8Vi z&)DtvdglNBqJH7_U0x>+MLm%(Vs4yI_ubw7q4j(%+je=I2DfGV*NfZ#f9d~dBEKC2 zR889JWxhYo*L^SlkiGxIb?LfQSLd8a{D05(NA&)W*~g65w+J|$D#$x4=KR%>pZCk- zdAIYA-~an|f8%-Ee}yHbWoAb=7=)g0w=0mh`}U!^;#ceR!yi9`^aNap?pQn9{P8{O z_Xou1|Io4fzw-FT%FD+L6xKxs^!DX`lKj^k|A(n>Up<$&UOby(%LF5lFFlKS-t#s$ z@A$p#_J^1K_FevVzY_0MCD{L}`n_c9y_(5eS6J15ImrKD;qUiHm&(UEt`unyaN=Oy zn;Cd*)hxNt+GjTJKK1q4e0z7RmB02uT#XyoPxg2F*sII(^0m5cdS`!ocT~UrUvb69 zt>y)l6%s81P8u(KTZP`A>+36s47|#}Fa5dSmv1GDm#^lw^j&c^V9V@pZ;!IS-z!~y zuc&y({H04hu2xt4X#Bmg`gmE4tfZsnf~kHSiXvas5;GDQK!wR;`8tXD|BpPjP*@vc zS{yZd(}mkb8+yO+Y5wv0v)PLM*S%Qlk2l)o53bz&+`!6^(TO9oRO1D2U(xE-9bfMM z+^YYGd;V{oZF%=Zx=VDf>h8$vtYV-4|4DMiucOlq?MzjFUy?4?t8(Jl85eLtTH>iy z_`0X{U*i8y-|_yP^~Jk4Q@bj=^&QFz?#tQyyXao<<456{b7va`oT4QCbS^K@IQ^%w z`rWbr|Lp%b*Su)tKT-GTUBH>CZNX<w=iJ*N*l+u3VL_7&)Ja`ZS<A#!c7FeM+sQlj z;wil{`K)6*YB%ZsmHXMpp}6Gg!Ug6ES~uP<{Qd6W`TB3c?@X496gSVkz5U_je!He` z-=4|$xpOF9XJXyUc+<e5LEq-1WzIysRM!`2{k3mh+)eB3G^FjbGUOCnwit<gVS6%- znSIIXzt;-hShUup^1Zv;-d`YU=H$`s?3nNHZpTjrv)mgEJ$#Ds#cfO6oqO2=iZ2U0 zd8~GF%y%ezf2Z-^zqkpv0<=%ut$sfD#@<?M4#g#*AO|*Idh}%0{jY_a-#FXvsE<!e zKc?I=Vd{bf<_fYuzg4V|TG@NBv99LHLH?HF+n}<>>1u{U*HR%SJ&Pdo{<;?n3(i$L zab&t`yx=|Y=8X+ktCC0Uo!Z-LZ|qMu|0Ed|*(czX)!KBgp{K7uxh|1$iQScwo#l6{ zxT|)(EK_gUA_wx=n^x`_^X9UyoL~KZkF4z*clDMn3Lx>h%Et@-JyQL)czshezub{& zzS5F!{Wvl$L3Z8b7XNsqTR*WZPi~3bwwyZx=VXr8l{k5<UKqCJhwX&6B*$;_=UbGj zZ86K={ZsASpD6aXxo>w^88tnRua)&aeOjSqLRh0%74ssQw}+FHe;l^|Up&X6mTgJd zud3<|<=^#6N=usroT50RUhsAaeVur*u*cV@<#jDT&zH^dJJ_yR&zdvq*k=9xTDo5Y z1)MxqJ2>Vih)thX@as<HlqdDu@0Bq8t*t!~cxCk>me{@9!|zu~ANQNbq}Z~BOXLfi zd*|hg!s>?&uT_`j9B(`581+hf!5-=L`~ULARlk;n8pk9iCid~u!tI9^=6GEw&$)d{ z<DFJXX~}~doxv6FriNQSmQ!4kx?q7h=g}lV_49MMTla?OJbcFd`{LzP-vv&GZCxr2 z&c*C#5Ra>74mLIhdAFhIp34f?=ws^YAD=z^{^8N<_6xV~_P$%ESMtPq!uj<H8@JE6 z(eLl`V5vFZ!$(tBL$#!=xcT@>i*eScncJ6am~T}bw{+3!&BA+aZ4={v&$@V|m%)@R zw%4`(|CLMuCl750$NV6#OHuNZukDgr{_mId`$tD+ZeCbjxnRHi+)eyD_g*@_Pmi(0 zSLw_8Jzuxwe35x5va4mnw1%d8M>G}&O<NH)_w8F{_m7v;=O3RsF_5RfM?t;l#rxM& z-~IUWwX-YVU?P8$(7oxsbHn-eO7@8;v`kpz?08<_bSu+6+bW*(`@dPmO}Ksgz3k*9 z`_5ix=NGTva=Y$Zv**{dMBAf3tvL5{$%OFEULIe?dYPw3xn&E(tLIbyo#?qV?exOM z%Kdek&)C1cIhZV8$-;lPTtDyD?(nWZ3q*d#eK}e8eV0zfM!$N!Y@IKw3X6Z-DExEw z|EK*Ed*?g`x#94^Gm>tuN6+i)wB0^(MWk<@Ri}Ra-`O{I=1RZY^H%K6uKIcl=DXW; zqYDb|+wt)7sE9A;%z0ovQR&myj*`7^TSQNV_0F7odwXl~Zcq+$aLgABiT{1+Ns-0* zpF6#$fB0qnUP0Z}Kk`NS-7@WexA%XZ|6p=|oypDv>Kj%n%_>sr_`kl*=#|QfIMJ^; zv)S4=<bIx3u<MQx^J5N0$@ZpuNiKr-FJ4;2-Q8_b_sYcW*zxQgJ5KG4I=XL_!1~4) zS*{v^_xILX-@0`>@KMmJmI*!1j_RD(AAMW*{8q^N+Ew%Se=E`f6(HNT$*gz|4srF= zl>0kY96tN*^Rnwju|<Wp*TYu3lzw}EtG6avTFik%@n&0-pU|5I^Y;=R3U*JI7AftB zyH>ZgNF{oEj?=o{`e!W@-W-m%3Q}8P=&QMG#U#UyV$12QU+>+IzQ7gn^v#VuqOvhF z`vfjAJ#p}Gd2lo9l=>OodAcPpUrV1kTR(NbpX1xo(9gH?C8W5N?{X@toDR6)*%7e$ z#7~z^Ex%m0KJ&e@;h^Y0QM2E6SsQ1)oo&AU?IP0_flCb+#BV-Yu`t$pTh7sWxz+*E zA7+*Xqz6>}z1}f({pM2}HkUrRwK4m5*^|#d3%*%6ah%i=`6BlG+1}qDzSn=={;|>e zomTYYu2qj#&gFUYWYyj$&rDapl#Xw`ZgYR$@xHaunG1!TjQCmiwgwjO_<u^co_GGA z5AKIm!;`Zvq`Jqf?o)2p{;_(Wd+nC(Ta%w(%l$OD$&cftnaCHhXX|F?AI<-NY5IoB zjAV%wVbew5L_FX6M11S>{`DK*2hU&ieCdMsx3<~FxJ?sq+Qh@U*Y)J~?T?H5?b_x> zFZnv_@|x=*dwrz)+kX8%^Lk!{+x~TS`*(AFlYS-b;9p)Dy0f8pm#~u&*Wx?T0;Vmm z54^Meu}9>K-_7HDlD=46nZ{$kI@9=5@>5^+h{e8F9q#R4zg#?eiFlLqbq>YIHnA%1 zOL}WR_uGCDc(?cMxmz|jwiW7SoygnqBwOIpft!(`0&~`%nRjkoL1x6n$#1U*akdCd za@BaD+flUHzUY0k#GAM4BQA%A)QakTlTw>hyzZminj1G(oUOfg_hxTz^PHGAfl0X< zFLc{px$jH8&uH_jk$tkmj;w=Oc4yb@`rs8{y8rtnQ7MkqHj<YwU+wj6Zhm^Qm_t!z zalnP>o^^fa0xo>dyZ>_DnzIjL8T+f&i)4haong8nIDDTlbM4<P7dRDXwl&>L%DKBk z^84Ky^-phQS7dLUa&=AHwnr*PNu`_5UiHim=Qmrqu+lQ>MazUYPLBD8ZNJzH3f}LN zN^9Nh7qWR%xKYjOoo}xP?6~|Q<MiVFyUk<7=L$G&;_{s)wn+JY<Lt7xNB_O8o^-^j zy>aIi!xrD?Qf-T_x(3J<EoWl*U0v<Sp%~dJR>ghs?#<TdZ*mUvOB}m{c6G|ctd_PZ zJ$23M*M{piMDMR>*}I&-MPO2>#tU7S{BZNUdt2>!guDx;24B&c)mT3z(sog`?5_)= zwV!VOuBvhXnb~yDX@%tFynCDF=XzaOA8O$G^naK&zt7#;7hl6}tT`L-UV*KO9j21! z+t+00{|dLR+<E)0CG%_Fi>S9XZ??w8uRRblz0NADNYXS}MzJMDl&gw+WAf!N%`Drg zl{b}{9xv8g<!8{mRr__+>1kiQ-?RL_z^NG7)^yM5&E0L>cV%OzmF~M_k{240J7LcI zN2c$Lx4(R!79gXjavRjDog2MvI;(B(R*|cs>Wg;n+q|uG%kzu(Z;R_m?~c)E5OCVW z#=6%vpm@jodz*x9W$%U_TY7WNf)Cj*i`FmCxl$j0^{l}aYk_Y|^~INg0<pR2o>EC! zNy6m=6Sf3=F73$GeZAybl+RqQ{d{^q{=KvNQc{|jH4T)Z<V3!RB?kXz`%?Z@DV^6e z+FWLOb=Bhp+f|Qu-wwFXP_?Ahk3%uCrRknh&I@^m>B0ixiMG2ozYfTJ_-4)dziidN zG+(q#IOF7)FKEV><4|tlJjdPi`WcsXo1AWI>BSpsJ<WR|Jw>nloR~YuNi~pN&i?}> z1h(zFvdigqZ=%AM3zj>16jf#iT!?N_%$(a+ykq)?Z!z};Grk6AMtt#he824UT!Be} z8ZUI4q&8ih8Gh}h)rx%IX+ORiUB5hkz50Dwy~VfYWjiknVNq;J;pD37UeI*#)6Q>O zH(m(8s<y*1ZO^s76P}9UjfHRDzSYnPyuhh=v#IGGlZNKo*Y9-u9pkyB*5vO|OPM=0 zbzfzHu+=T=4I8#_IB}d568R#wVC`DlEf;RPL_hBQn8ow`Do^L+>Q_I_zvVl)*Y!%7 zwFq2t2)Gd4aIS`ZSL*+rv;Kv!@QNKQ+bbpU$u9RqVsn@31TibcmK0vDD((d_XS5E* zYJALbEB`6A@LJ=2n+<_cFGNb5JiaYhu$=)kP}LSD`sI|d_VnKY?*n!`k^*V`w`nUw z?#?-Pu7uycA-sQ$?7zI$fD6@Z6Y`VgtrS(N11>}}s6P7{vu{sM*2;_NjgjnHywm6W z@n5^c?8;?+CytX+B45N5)OEkatlM-dYTB0?Q8~7!Yj0dIXMxFaFir7t%>KG?xz5d7 zdY^6>ZDDN@m}IK)Lf2to#DSv3NX=?tuBy3ut)lb%S=sa6$b$kI<ed#NTvd#zg?s$$ zzO&_8tT?d4cds-k_cS-%V-i_1Ltj^a{ruB^*}BSO&rUA*b-gTeVLn`IM8uIlk7{mA zm)o>zWw7)VD{0}kmz?h3@#mf^Fv(Wqh3<hzpM>1hj&IOe`=#LM)~`viI$uq5f>@p^ z)<m;Qh`4i{1f^Jq$Y+l?PmYL*a`JaC=M7)8F}6<m_vN+Kt3|JyeKFGL6PRRMq@a87 z!xN1(v1b!ljzvZ<$d9<4Ya8)&?^Pz#y>o3}Oq2#Cn5Y-Jho*i^Jag{+TAdANE&TSb zo53J>?y21s>xQ4Iy6YMQoMy>@)ZCoNJ!3-N_qJ`z)=y?%pv%*9TjT$a=mM!2Cy%s+ zt@o7XOm4C>vu#XTDdJZjC2oGEV=vpmwL$4yEly8s>=k%rE8?xtGC>E_PPt<7#rW`Z z!~HuN_N^;@WzQ#d=TWa%=0vey3Fj4B7PR_toa7VvBBnUuzwFKenaiIqn{w>R=-c-t z^je_nu6)TmF4L_QRf0G0?`^Gken#+Szn!e#%RINO)r;<AEABWLy*A={>*k|h^CnEQ z`u~Sh@n+-x4BeJj?)wd@Jj<lTvv()-Heb9pCzNZy&?ny7=1YQ(pir09c%ggb#TSct z_TP-so~57WH22!DetT=)!nU=!Z||S6D{=BzwqU__fvlvN+x_>e-+dRnmGe<=+0^Sz zf!kJOo<8~i*X~~zZq8#@Y)N4Sm5DJi$E=_CJ=!YVen$AU)*hy<XZ^OH(w(EF_KV*% z@9E7)Y*lQa#M0PwFDXWHzZUD?wO4hQ@8Zg?*g9?3isaRC{{OE{eeWW_yk4~>g@dcA z+tAX!SG<33+u`T^q335L@rF+fWH02Mz2DC?&-B9Gi>?3O*$Fs#ge_RGT_Wq<r_agL z3%(pG3@NP+-;uaz&$-(7b1yl)UkVCYfjJS&ST)7GH`(uf(UIa?_Fanm^{$|$>wd<_ z#lD>jYM44W<|l@Ud~g$cpS@<b)UInc9UawMQrNkww2Sw$>}Hf^yZck`jl``k+u3Cc z1v%m;Mm*e;zQ1Npj6}zm>}IX+-k(@BM5YBs#2xx{Dd|V#s!}B-rxU!bP4`x<S$e{3 zvh=<~ZTA%aJX;)p$UVRQh|R{n^FrdfcP=yp&C#3W$Z{*4^JL+c_^#7}ANT!>y!2`M z_tx2Zld?mj6g3j_>ez~lH_w<mbISbS8FS|zI`n6a$Pd;tr_V2KwcL63^cG2xlv%g* zMY$7e+!WS_w@$Th{`9%<Y^BpWZjq88`Lq9S#~3D7TUUQPahAXB_OAPvZk4-zez{1u zMe)Qg2XXD^-BY(Xsn!K{7HtgjTUZop=p{b&?~0zT2Jx*mN3(t|k<j<JIB(|cDM@zf ztaVbKvnC(1v$pPZ)qKaDI4g(6r#HFkjn=bN=Y+Bvk<Xth@`^;fi#IE@tg#m<NxHP6 zX>ZcrEUuTk7qa~7+rH~iweNzt-*=vW=q)UF{ZCfhM3HZO>+*O?%bk4>3!4f}a%;}Y z@G!64*s=7ftB%*g_>lRRvf}yHez!d1F;RYh4PSEl{o^a{EYq8J^vcz44X^2TiYadw zEZA;k?sXvimB~4cm49z){tR%g`yZ~cC-a?#L%lMSpWWv<fvZG*##GzQ@!Gz3Ilt|; z@`WKzj^7T8cWuhw7ck-Xr{YY>&B=!)LbVy@S@%wy>~2u`&_qn__(q-BpGS|n>YP5- z@GGZoyMW?#cCM<`kA836ckR=jEi*D+zh8LGo&VIjlD8LrT;Yy>sr{LCH|y0;>za1$ zf3?l*=YF$}KE5p{5A$gp<iD^tQ@f4tURP3LWYp`RC*tA;+Oc0Ii=RuV`_d)yYx2W? zZ$7A=@mO6~SHq$@bGpEz_9nlu{<n{FO|t^8Tg9FB%GH@aHEwmp_2+rwnyKslS(hol zSsJSEYIk4n=)T3=j{Juf?0T1Lz2W17xrr%zyEeqnkU4y2YWEDAdZFOy=Mw$8eqY%c zJY%0m>%UK~GuJmP2+&}ED0t~nzy(jMs)#bNoqY4|EKqutnH1wadqI_*vDQ7k`+BD} z@AF+)UAFea^mLBB2A`{5>-{+|`s9@Nn<uxfvP^sX;>8P>ee30GcYjN~%`ESx5c}P` z`0}Ns{Y^hNYD?JGNhBY?fAq%h_lfU5Rf>eD{F_s9{d60H@@r3RCr5R)vwDwwe_H45 zdmSRUopo#5`W0FKYjooaPuVj2Zg{<KeQ4Pw27}$AbIK>2_H2|tGT{!}_xnx0<#hty zmnTQenR(>P&tQqV=caT1o!o9v_-e(LTQ6s+uVrVQn^5}jy!nJQ;kTkO?;X32zS`Vz zS?A?}$;)R=eG_r~o@d&s`=_sm&)2$TYQ|7={{43`jxFWiTcW>Tla<)@vh2;zAI}T# z-~adCp!lWEIs31*Jo|r3srkuGT=(;H#FTZ_sSkxGrE0ubd!|?Hli0Veux_LB&s^ay z!8%d4lf#d=Rz=<65YSYbHEEf-+?zf7+M4gVE{J~K7^=S8aAT0O+r;c__xtB+cYO7( z7ydo}hp5k7+s2EB^AlorJ=Nd)NoAS-oUp|23M$<J7f$}VeCW{H&5yDLG_QA9of58l zxOsi_$)K|JU(My3w63#VEY*&9?pLWfk261R2QS;gMX!o;U);LUxsG@C#-Hc-6AF`f ze%t*l-cj^|HKy`yWzT#Io!@uT1EQ8?&r4zFvf5duaU<@Mi@wLr{?8mCrIV$vb6$T{ z`YwKE(6t@?9y;~&zh>`v&>Fcd^CI_m%OvyNmLliH8^j~NI(SWxV^IH~e{Xx-l)SI) z7r)GneQ|G_@a}Cn$FKdi@0mUCM`+KU&sKVSe@)qPYyP1_H#UfTQx&-MCg8%!R|_Ys z=d_#XCD3=^*7cd0hXiY$+cAael=vU9vPq4Yzt84kUDW<vlkJzrW%7zH-gBVXFM`vF z^(t?|hX=9?qw8+7%O8EVTkgQk`E|ijZ`?PSn6?EiWN?}#YI^?g`^GIIS&5VU?|cos zv;F(JUF#M%te>Z#>lDioUgNr{!7HFJlD%qH8YBC;om~r_Z*h%K(zaNB_Cc7ZcIdg= znI}s<ccxW7^$&TqK>vpj$LUYoexL3AS3EImru96=h-o|j+SUI3@vHj!y~^lnb}RO_ z4Nu>-Z+QQ4{_z9vm=k{;`q5Ex^nBxlv=%Wd&vvGLW*uLI?FzLbum4(e$3%Q*?%C;| zInPH_B<^}`D{b>s$|>^bUAgxhpDo`ku=`zi;oa-aUoP9Qo%_qYdfim!z?=MAYJUE6 zeDnX!`h?r;c3r2}+x80I|7+BCzlzn{c(THhnF|&Oi*x<l^{`m>wpiATZIdQ&SGe3d zrM~L^eb*&d{4Medmpg8Bin?0zFzVTdC*`kG>u&wNwpdju{^oU)*s90HFYfIU{%!a5 z^o^qT$`aPU#Qf^M>l>E6$vx8_!?S#;>XM5K7i?E?v^cwLs>`(rSxLdATNWr@@>H0u zU2;gfXQ`Ih_Po^POAn@R4Yw9cyUVmUukd=qbGwV1J4Iim?G^r8^;nku*Y3uZ*PhM% z@h;F#F#63U(fc<$|HZOj*j*}acCW_V?S3uq^Lc;e*6sT#l-90qb|vQ1+n;`0%1ai; zmdQUUTJ_z8<N49}s9Elbl@lMoix%Lj;tt~S(wL@o&|c(IsrrXyoR8;RpS1Pvm4@t{ z*-7D_?)Zzl#NRBlEPJfD?Hunxx6;=UJ2H=13%pFV`0gQC%>Iz8dXA}=u;(&|&6k+9 zSN}Tm)cV5y-)diS?)9B5x9!kgZ{N<X|JPzpR@tjVnk=nLUn|YXQngk*YBfFE-Mw7D zirsv1egXHc-)#mvGTC=kwOzP+SN-T-XEPtKh*|TG-}$1Erq*U?TF5HASlqy}%21@r z)ZXqSXnbPHifNm5L^Pkhb_q~DE5|o&TKxWV0_Cj+y5C*C965Dud+GfY;XH;}s%KPZ znB|3P$L`KQdFnCC>6>4_T)Wt7{=rO(W!3(Gz;hx~(;{A;eEC7b(o{M&U*iq)rL6m( zH=a*^GB>>N-%t4mr*7-FCf~e%IVn7>{QLv8oc%B3a_*M1o4wt^DZO3xK%4Gv=fL+9 z7wKvB3Mty=J*-O&j%Asw{Jik#A;UR#pOpIc{#4PMYp>Kg_wZ-XAPK7`o2w3c&f4|n zyHZ~-iLT5^<Y`znZFTNLt83d-&uzGK_hYTi_f4*``2t5CUvJgk)ip`LubF9@wcNa- zx!Du+o_+jzV9ok}YmRZ=FI;i!sZ-MFJwg1jcP77P-DRG0Y+ipIU-Y{QhT!LZ5AJ-v ze|)NW{E-h2uP<phm+UKG$&+`xdF}7_2j*GJ9h+vmJu%~TT+WSM?00RMPn`VUvR+lV zPCYd+{Oj5Bvc%KpW^ar%W6In4Sb4|mM)eQRxZ{sMyk6h3apLAJ*NnMX_p(M#3p@Jf zkkns>iL*F^zWwd^q3nAn&{yQK$>~|`@dru`x3*r%w7AjB`u3lPuD0N#pj&%uuP@ot zeqfh6(|PN)No$Wct(8*ny5hRCF`=Vcb@GK%VR{8y`>MYmTYIDAgP%^Fqb^S|Q~3Q_ z$;0pWD&GCLe4~wdY}`-Zu069hEDO<@a`*G8T0Pe2$a}f6oBr?KEG-+m_r;61$B)Hs zPq^({p7{Ih_l5DhF8yATdQbQ6OW95RF-Q32Rlase8Q(JQdNG%!YPM?oyL*Z<dp;}Q z*!n)t=Ep|;hZnf-AGp1~PW<sD+4a9}d6q3$uw8-sll;dwmvm0tN|y9Zo0a#elEuRJ z#)9Qb`)+^ZbuM1}@J7?NyLZbTJNOIVx>0;K>e}%+)4#iZ-F0}??iG4Z8rM%`_&oQQ zl*qB^3FVXApO-3bak(qbnqRVkJ@sJt<SS3A*)MEQW#8ttdar@GxZZ24^3ZS5r|Z7` zyr}(f$G4}gmLgC0TdJPXnxLzH_eZVQ7W2Hr7rxbgD&8&f;cUkH7jEg{{a?Op*R-}N zQaJMc@_gM3dpJLSW`FgUt!+8ut$mw5e3z?Xm~Hm{;Jw-Jj;}ud&sxUri*nR!$)=`z zO*)?3wN;5~JbkA-WlsEhD6BC5#q7MyddZI)uk*f(Tg|;Ruw6vkqQmvJ*5Q3}X$<pp z?;Nvz^jyeqm-4A!8$IgNS1#i7u2Ei-oUBuokS0_WIjiFKRGsY9r?b9&3%FsuB%v(- zMpN(ayu;^yr^c5q>{t+?qtB-Nf30R<sMA`O-D}s{@|0vxzP|0W|JU~hulV_2i!Iq^ z|LE4M^V&?i^WN>d6?m_4-@&yzem9;^dVP&K(bjLzcbl~I<98?OFM0XEr%<=!7kl0H zb+<pR+-=uZQ!SVBwzJjM|8iaASB`HlHjBt}A9wQm)@m3WUAg(!k;PxUEPweFXq~n3 zJEbEjw$ni8b4C1Y!*grmgV=x9c-E^aT(#1--_K#b{Gh^_=gr?TBc7ksURT$1#8vjL z*{3-i=T#@R=FAsXTIUpLFx5M@E2aAA(tCQk@A}@!WlsIRaPxBgE$2QP>FUS6%>Bu? z#nUkS@3Tac-J#2>^Aqo#Kb3v`;ywRU!Vd$sFYLA6@c$XV(_Y)Bb@4GXmaZ_jG&vt7 z@YTO8t4_+ed(NXGTh2Y1|4v5dFmBe(ThFR@ruMm&_S%$gtqq%Y-_<xS6`yza`t&eA z@n^;v&%KY;x+uK~`|G9oUhS>rBF#MSUt8~`d%a_QEBUoe>`l#~v-7{jy6~Fp?b-6F z=6>WW%iW5~Tgu;Nzo?ihdt*zgzTEFO?;kDXuQx0?Ir$lAICW9fi)i-k4?bGkHR&?X zcDTm&+uiDxxog0W`X#20UAiF;XZpw9_`GrY+RW;IUnkieuR7=T`Kj?K(KgokPs~57 ziEZ{c5*hJGb4^>zhrPl_rr9qlPcqj^;FSHtlsRL)UCZ$%(QoON?b{+^7ENq(oxkMe z_N!k)cDEboRL&38z4VUtu8{b=O<QZL{p;DzR|m#2#NK7T6jU!@Yumh|;9IQDiFX#4 z=3H>fcYU({{*5y(8A~U>c2Cgmb$^l&-N8^ZZTlgyvcplWdMh-4PKeliu5`n({=+#2 z4nL0GlquFb!`4&qdIkGs#?V(Qy7x3ZEc^bn{N2+1{(mL6l=Hl`{9<+U>-Em2zmKw8 zE6=a!+i-94cWbey++S)otZ)3S<7U^N!Tjv&({v#>TPv&T4+oUv4=kSl<88r1sY`PL zE<_86a#mM9;%Zy&?zoQmTK_ub3sNs1sRXSPjx#LNjd^(QzL<2xqPIKiL)>gm_L#l9 zb3J!~zgu$0=I2%GEwYtFD^7Wxek@#+FBy77R`a;P%gRNY_H;}Uw)-se@44x}X%pt1 zzuwW9Zm*?3{q(~61a7;3FZXx0%l{Sn^wV#`v*xCIO)CyezxZ-vz?IM?);r7I$d{}) zcr6~`v}pH|#YHt@Yjq=3{b%X^>k^u@=cMT&<u{!lreD&@dRtX3wqsJ_T=nzepX}mA z4aGfj|16OU-x$FAaohKaN++hi<B-Uddno>|WO>Z}&1*yWAKqMFlKA8N!7qoySN4A_ zUnHX$bmi)g@8|z)-QREh?qAE6E0PAca{?|zPg(lN$ggh>ulh{I?2Z+6yJlIiDhXcx zF=wy7&O<Rd!|m%dBVR9@e)qt#)Z7j|o76+fE^-IAORKvjJIpvQb^rEb(}Gum_S`(- zWlBDW;{9JolsEpC3cdH<V@Kw$4!2T+JFlZ2D{Xkkx|e50<$~#{v9CpQe$UzaUa;=| z-^p8Kw!Piq8ue;_vu^bFcHxH;o;BVN<No~YW%<$#;ttou)`zkMUVX%J>AdB;va?Za zf0$<6O4mDM_j%It#sr?w&r_G)jnCImkz+`Fa&hf1ixYfNj}NWm_EEg{p5J+o>rO$H z1)bX}&&_yy?)yL8g}g0)W3xEz4vOd9+u|ni=-1NghgS$sDtc7=(7*rHa&wI@RR@aC zf7*M7E#bzrjO@d*-)oroZT_(G@Z>UP%4xjNJ+u3He^TPi*EaFmj#IZdY+t5iBbKBo z#Jr?qt=^&!94i}=XIfqS5O(vJp^u}l(#_V1)2{ei9FmLt*KqGR-)X0HDIyn(UnlV{ zzbLSDx|Y&g>3v~dJM|3i?Kkbs?YiM;J)dLSO^MC>_bV*5dGULfhc)xruf=Jy!K_gV zTLmX{>@%=syJh=e_4;Y<J8#>6nHYaicYCdc%x1q?%v@F6#dU9#{Nin;&&jy2lZ_U6 z^X1jFN%1G%EZF$smr#rP+3>b>kD1rK)^KcGA$LbC@?dCd==NO?yK=7@J`G!}vT2*3 z?dpc>zf3mV^50eZUeqpn!P*jcp5RNX-o5_1@zt{D<}UV6qkg~VJe2G4;(q<sW6W!6 zV{dHFvF_-%`xbp;M<%~VF=%9{YpK#at4}u1rtJtgo%J!&VpqZq`+1E8uIIJ0KIGel zSDh5fx-FX5y(0JN?Mh+u@~ZhJHD52Pw+Zg6R&y-by7Nx!_0IxJuI#^M-SVw3hjGhM zfqNzoZPVXypa0vsd;Rn6>sco}O1<#!*cP^~dkP=S@)+LVUmRKfuvX7h_szS#<&W>N z+qGZ0#+j)BS_&8Zes9CanVfz<cN~*=l+fKh&0Rd{JNrHT6@~I!=Y<tMR_k67vTpqn z$J6QE>70jn{klI#D?Oe0>*{s`Z=ss-O1;;6-WHjsw+kC6J;=Um!^^+FA&Y65=@x;j zH$ShO{&s6c>$D9`C*0mU>mRldU(S8J=$f>~hWTeNS8&)oWxKZZ>Y8u!_VHFcaNgf= zaAB@OFF)(vqm{4kB<`ttCBVhgw_5t~@m*c685}$%2X)hX>U*{tU1s%K(iNepsw?LE zI;#3#neADQoZ=(an%hGJ)ej3N+`XM?z_B`RYP#OfdH(fs=bxF%wEnhz`QG%8NT^QU zLqV&xIeX*$q_pnuTy7{>@$PB%8`gPe*Lg1p_lU?WYj&RTv}*p<ZI`sKuh{ox?(V$9 zhd0^Bc9=~#23mR;GgIQ&<o5Z=_P<O8mMr7Uw>vJ?a{TVv-RB<)S~zg$2ro+w^SqoM zez|?w&A%^?ZCM{xSrt_ozr(TO1N+mPk1sy9;`naauwtWP(CN*t{NH{Hd@yHPwBAwt zrN;vo-p|{zpTE8NIKkFA$22>B_r(_%UJJ@)OWOW?#GLr=?F**2n{UNF6rWc#F>c*g zxn0$4h0piSKXO1}d1qb;C=!zr1@q_BvcHeFWZmRdGfn1?)02p_X$le-A5KlFohTSP z<L#%tk59b)9hs@>FX<=cbMZrL`t!|4@0?uT*=G24^|v?Qtev-hf4Q^&pY4^dho9CJ z)owL<>^8A5rh0Ghp0ehHyZUPnsb9FbaWcE9fEg1@+54Ts)@66t_ItOOaEX*OC5!t% zn5nFvP*};i#H_}?>l=SbM_Q@t^GSP_eO<-gdGzttR@DiIUa4=NX4g9{c&jwyxlJpT z3Rh2O`NO>-<7aPc;v%c|%tH}tj>gUktyVuIvU0~dkG{9Zn%<>;$SXK{@ny8zt_Rj( zRde!U_0PO#&^(`J!Vz@DVqLPUPVb*v_q*TmeXmql#J1pGIo}SaI6E=F#XMnmd($ty zTEFeyKHnW*`}!Ab-pszFaNz>sp7XvBW+v-DeDWc4g4M<rhw`bn!ggq@eTdF9WotS3 zS^52rSFTD<&%P>!3f!&cd_Q5wtLsbGZ%Dg-wNCuwMzv$#mjC0+`BJoKQ<BL+o;BGu zzt4RQy>zFo#en%L!)nLp`@|KV#xA*|em1N8USp~5p6gM)+`0DG@AWlrx6`@%ZcfIs zi3=A9Pw`Uy<MVBC{qJ7+#Cgs)!j6c|$k?C8*taHmhyAyE2ezGXYD?`ryy@J+uhra_ zYu7Co5B|(`*f_xG9l!d7v$v=7MF@WR_j*ya<Bd2D?>jZ`FWRZc2!7f5ws!u*ecSw2 zDo$GIq&3ONhADUX&g<7Z3hOUVe!#WeV2`lXNo&D-<wAE)SJr9YZ;X~ZcI@nKOW7Re z!})D3K4<(M-CqA+V0qj5rYju<^>a#JU-2=HedV$7+`~?n_NnWiY^*6wyw++Wu<iic zwuJCkZ{~;k?YQpx@{o>k(c$B%FH1$L_PNaIsVh(9T6}j$=i0k3B-VBOZaVVjy_Sby zj&sl3_b2tjg-fGZdVf_&<+WX1x1ayK^@aEO(P!J(5C5|MxbxxM^wv`SjIUpxyngfQ z;5ys#Le*_-ZB2eo)4EST{IIqD<6`?~Tsff}L6<J+NPj+l_YdROTt5|yGj(as2iESH zcr~A^c+#{b(U*5dIpsb7?E52W_k*tuwzse5b!5(3`m)mAL-3u$?*6~)atoWETVGi3 z$r3Z;W#)?}{W~Vh9T&`9zl;Az?C+|dE8^7S3+7y0(HQN2<0<$5y~=!dzA$`}jaBI7 zWSx8DjPAL|@%DeifAGb=*G`Huy})wnmG!nGMnW!s_vG%Jm6!i8;_5EZIZs5}SY`Q* zCm(lR82$KA;YxAc@ZEFuSA@yWXe@4wQ=f4@TqsXq!Q0Ra_h;%)x_5KScj=0K(%T&; z*2M37e=#G6<NwCQvt0lGKKfJ>wk!1ci@S{P?)SVb6v&(2QYaU<zImeguKrMdhL;}| zqL>rj`+i@%JKZ7d=;dDu<}zGXhBKn)9Jc>`Q2ycE&+Zv3qkq(G;XQ4jy8d6Y^pc$k z6aSo$I<7g}KZU39z^O;#oLlF{U3&H4v&4_n;&Fu~=a$=UFU^_GxK>6Yn)S6nX4T`J z?dQGPL))WHeW-ihp!}&Ua^-i&(v7?}*JnLiJ2&33{_G}~tedubr41~$*v=7~W+Eq2 zk|c2AKi}L+>Gg9en2!pv+VVbTkKK{9{Q1Yug@z{F25Uci?K`nZ*YaBBBz>L&;b~j> z&L;Jra!TqHZ=I^I=l<HC{fvUu#3_>IERSpsanu<zf48}|EB$`q!Q(HdW+oiY3}Ef4 zD{<jvefT$yY3;?-@AkK!PtI;pJm6Qq``gPUkw4$AYkRTh-}VL9&sX!`;FWopuM=`l zeamZx`(Lls*8Z${zx311ix+$6?#_3Y{(Vteh|8)l;PWp1)hiP$_gDMO+M4?B#m>un zUQH|EJS6yiQmW+brua{$3@*D;W1C)cU2neeW#9Kn0@F^*EX$T(*P6#&#&A7UZmx4p z?xh_Je-@?L&)+v~=f8Qm+NOf@yEfcTQnR@~Kep{(=3W2w>$l6Ce^a<@cFgMLQvTgG z)>U>MH`|vl6w2UF`QN*fmpRca?Mv0o(k<tn-nzA+@N?Xg+nO(WIaudTFg^H3^$M$i zT%q~es)rn#|1Ewant!0f&wov}F0X-<xZUd;-$bUoaqBeD{dZvBx?3}TdYpOKwfLUF zrSnrS$0%;Uzgqd-wQ#{DOI|;HF+a_=WwQLfU$4}UaD5f>WZZS))zfL;Tffh{_^<1` zz&F>h*z7tr3to2D>S(#>ZSNjSz2xPxcH)R+e0<#Rhs)_(;&zIn%f9jie<(S<UFXq0 z!)M=e@~6$n&YZY(?VYEtDw!L1$8zU&H$Te}w?B2=`e2^Y%EcESG`tPm5SAc3twK5T z!<4n<4>`Pb)EuY2cYB#BAltoTio&ifMRqn}r5sz%pZe-ItL*fO9u3EiB_9+#Ua5cC z<#s;ndi3h<|88k<zvo=w;@r~C<IjH5_;}J9`|V}=fA_j@Chpsjck!^~Zh@U<U-<JL z_7w7R>6SRXI*@-bWWK1MJ^$-DdTqOA+^Y2XZh42JAaU36w}yANh30+9t-d4_zNg^V zvALh#n(R=Lt2lB;B>#NPyIHE)yT9bly>j=M-Syq#@wShCcUtuSoqPK{^Z8;)v5hN= z>}Ncmlf9;R<@dJbee<f1J+CeOdgr{N`h}}E+y611lepdyaDj7WQ~ZImXQw~gda3p1 z{hW@K1=0-5Zg9JwN#>53krZ=9H|;jF!kH~D8g~_o_dP8Ab;M}j!pxJ#+{+W0Ziv~) zY~OQFmN7(7rhh~D+r`)RTl+s|(oB+xNd4(z^Q-RB@1=j{O8ngNd)FhaIlrA&Pp+-6 z|9gb1^3L?9cJsgaNX?DiD{<$**Nf7ETvm#v6VgPNp5+qn7XFhIbWdFFb&SQd&2kr> zN%PCaN_Xaz#0LI2KIe6BYmn=M-Uk*tczJ_2*cR{3em<vs(N)7Let~r}ZY#a5zQ6Sm z?*!*x8+B)G`|-+YZS>2FhAo<}-0HILOBAoWAAca{49DmE6Mw9Q@|+Kp+kW|dXydoH z*>m0>IH#X^zI@U0bY_poj*jXotqQ8TKMlp_nS5?H$vszA?G<`=lKI+{490@a3p1Kx zJTIU6?s`UC*E>4j<3*|~FWciiTl2f?A6&V(SL|HnLypdQ$ItQaI5c}2oBz(2OtXt} zy>>cA#XZ#Y7WP>zxM2Fyr~Z9^r*d9;^-Q?@uhsopSFg%>*<b#6U8w%u<{-t-c2qEk z^>6zb!Mp<-19}q^4cfbIGQE{kH*QpQ%nX~Am)rehm&S&*D<bz*9d_9M;H+D7N9=dM z{X5;C%&n_h+^7(wQ}y}o%cMN+?(iM8_c_-nn7sb2#a@0@LSgxI$)%xoSNk}aoGTt5 zFg*WvarF)UgezM=?I~24Kh0jZ!q;BjHekWjm7=ojuRFa`7gtN3UvT$E1_R5#@2lij zbCjD#%VgSQEEImExZ+{WhDo6>E#v*Z>*qX*cs#Y{sYj{G#CIz=%pdGH(X7$0drTm$ zWUtz<U7`7I57c=D*LTN?XK~~Q%&EVumcQ|n>wB$jR*QMH>*fEIOw3vvw)q>g^8OFc z8oyUPTypa|+f<glg)^>P*SS(|x6^ON_00E|<L5n(n^*q2^lJ8&t<Nvsyvu*70+f2& z3R>O7RoAcRdQ!8>l<)E(-9!5ybn4C9C2eOF-?HJ?HQ(vG<TR##S$ufwfrptn9Csfp z^d#&#P{CH-S5|Sa_g~zXl8B#|@7y$NEL}H?W9hExt?ox!|Iga7@6fMkfoEHv-S1RA zR25q~QM_Px&YC@q%M%|>Nw#ke&9`0q=jHroSIcFlDi&Ej`7G0Z50sZSUZ{V->_2O* zUR%OV`%l|cvt9e9vtHt=+I)G!m&wPSwC=pV#IjT6jz_t&g8vM?QrlU!eHqt3NjB+B zYV-V))sp@6b<(_F^K6wwmdq(%afyRtRm_e>Q{}qXWG?+J#c|SlLt6jlRte9&dwO}+ z)+}aZ^k+Vl{!-dW|I8<sy^Hj>{Qa~%ihr-~6Gth2E-OW;d-BB!R}bmjJj8Z(Z*GTD zk6p&%`!T!QUu(5rye|87vh}omQ{$g%-YON0iZ?&AXJ1`${M@&{j}$V6)jkj`J|HsH zWFz0IT64`u9B=3CE1vlJ?wZNfbMsWI-zQFA&8=_aw0fyD(^_+$HB~=PUF7SnTC(#A z<M;dsePxHQ-(})oXL7Hcdd<ap>0-f$+nqdGSJ_v|8GhL5(d(JEsQB8(^R{^rHx0z2 z3uE4`;Mg!NY)wbL(vvi0g~G|)x!Wvs=ZA&w_1o3(dXZel`KV3vgrn>-lHxw?xgK?N z&$IWu>mDdQjf?BP6F%+RxwFY@Wf;HD`EciYrcK9}UoTQQEW#?T{wdqlJ6GRz&*J^= zkM{_bc)2?t%5N3mp6|diFS)u{X*Vz9m9~|U*Cl2*EZ=`O?yS!d?FBCbAMd)c?A!9! zz04{HOLv(&ir2fJdAzGL#QXNW_U9IEKkgSw^=T}h68_yY_Q%mvH*;6n#ZP7PzE%A> z>e_~TrGGS6McuylJ9PE@dk!C`glbLQuxAegIDu~5*s5{wd-sgQt<~laS&mJ0y&^M7 ztTRLB3sax=o{Y{d`9H5Liu0SYKI!1`>k&_HpHDCoJM+10v5UC!-KXom|E|98-<5Io zm+Z?Wo%~yVGt6sq^Rn#A$hx+&?oDpTk>@SnD;q^$y}ok){w9tuzeBg~*jiVXFWXY> zKjZvj`RQJ)I(lcDK@A<J32G0f`acvbJ}XqNbg=d5GO=Y6(^?}f1fTg$n7u(KH$;m4 zkk0k9`g680Jaf{@`)}tXZm(m$C++0z;_I(}I<;h4u6y!n?ev7DCFlP#1wK{Lxp?in zE@KJH{mQiSmb+!nGU>hNuD7d@vOTm%d`;V=xzDu4_x*~zzHH&EU>&{W%tEmx9~Uf` zJni_lBQ;?w&DScWbqTd>pKr-I<#Y62)##Rm?0Y$t3(meUZhzgU&(-gs?5S;)8Rjs% zE}rr69KC0|eoS9eF0y>>^i;mjyS<L8XMNmyNS<SP?DQw5=NaGqJP;gKR6p_Gn?qX8 z5v2xFENRV`*2%B=lyLp{s`Z6A_qpeNj%s`QRQ1eR-zIQaD7E}fmWZBp$meqX0`FUu zu~$yNJhX9Bt=N{^_uuko7{`1slMCGT=WXG$V>0i<m=F1Qe|p8sc=we59znT<*W#A= zTP!Nik%`xqJLq-zxhBUdnb-Gs7TTrmEs0%|+kI=cyyn+6Pk2{76)t=1AW^#Ev)ld7 z!o9We=kM=7@48>*?%UwW;ouBf7_nLYw%UR3i(iVWYu|ldXRcFl_K@k3_!-W(zWmEO z9LitO{Pav)<ILq8*`-@NTHYE>xZ)c>)Ay<FA<;KC9&Kas7N7S->S4s9U)IsyO;az0 z@0za{cF2d{rqXw#aNOx_v$kg6@vgU5+Iiyk0fDR1a(4MGi66tA4@h)A(2YN@9XVtE zu^S&MCmd^T@{?&&aM09He0}5Hm8>S-x0m1emu<f>x7XzL?X%%uB0ji2j(Vu?yyN?Y z<y}{wSLokL&HTExeVyt(_O%C@yx+8{pRHPNXBdB)E!mf8)%)X4S^?dvdlqdtti0^j z-ZyUZi}iOuR6bL?T<=i5{_egHPd7>lW!{)pIj8MY{^37=MAX#v8bOirNWjA|UQ1`~ zOa6T4$)A*0ve&<SH2qIUc+9H{Yl<gw#Gc%A$6H{YiN77A`3c@x8`_%k{eNcd`gnTw zP79yNh?YqIzk4pQ#^o1qY!_6{d8oD8LE%BJ%+2>@XIH8vedyj*JaJxl1&dfHOUMkR zoTxvCPQ0$xzp&19o}>PC;lzA1k2@Kq*7FPF4$Qv4!*BQeMIl;AIZtH7o~1c}iqb-j z6ZKoTy}Kih&%ZC-_n!UMwq-flCk1SMC-5q=^whmLux&|V<eO<5jume{{&Xpa`5K$B zoySbpMMXUcGLQW*uQO-SbB0w_DoWe;&7JqH?s~H*>q@O<U2OB%8k8^H`fd15)h0=5 zy851b4O4ZB)#p#myMN!$Sep0H-ec$XJKg&9N$K1?8<pP|pF`Xdp(kdr*<yO4<@F7& zT6SjQ@tOzqA2ceTd#0o|(c1deeX~}}NK0MLMaHpD{r2w+a|=9>yfT_;{qxmVt`|J5 zK5}Qvg}2|6mN}NkMki%_7hSJz=h(ec?b6i0Ca0|<9>&E9ip+ECjhpr@?#%CwB|fkB zeE)aoPJ5{S_CHg8A6^wLI%W6YJ1fmM?m5z#DkaEeRTwet-M5c7IYqi%Qv~OKm3Z`b zV(ax^CeISYm$l}xY<t<u7(FAgt4?R%2A%v2v27dHWcP2)i~6(9b)C6e&G`o=83|om zl*2;p-u`{<J1c;7Ys}*1kxi1yt27p@SXeW$uJ?Z|SH)?^(u?b6iLZG1cg2>^>Guwv zxN7_`q6Ad7b~<ZvI5~!gRbAV#);)ZUcI~l-hk0gezHDhQKYjI`Xe{IY(A=p@x%WJt zc3rnVG3s+;nVqM&-~GCqN#Y;AKiz%!q0H)7m0ouDC+iodt_!~Eb^Wu;??TzuY{%@U zKc&<gm+Ktf^li$+9+3_I|G9km&c6Qo;f=>^OAFUj&p4mzzK>mL>A8l>3LGincck^} zWIq>APArhgw9$BR<n)s}B5Fovl`ZGJK1R;Vi(mPl{rV5ZYio)wyXwny-`d(?>wH?r z(Da&j`%6|2ru#OJk8C}e+_OvZXq5QBe+97|N`*|Tx=-@{KDk~gL;K<8u0T~?pYJ{1 z<}5p={jUCWHKj0I)7YW*{JXPDRAcv5$Sm*Q-*)Jel1H+Wqk5cPU;IJUovDJycXind z8yX)GE?9GAlJ28@2TVA&&zC*4X~E_86*s4q1>V<s6x(9Czk163$fVGS!`E7V#*{f9 z5vxCNd4=Fhri#T!Y*r}V74!;`(%9Oeb%$+!>^rabi<Xs7zGP4&6>!beZ^`Zzd*#ZM zUGguSJ<ay-^8NqLJu!BkulF=ATp+BkY@94HQ_eNapf2aFybj~xxsq>RKbpq#aMNXh z-M8Ly{8+TX^^!5a^%l|d0fmbXm(|~1SD4))HOXqmyV|w(vYwT{if8}*eMqphVxFS! z8Rq#M_ZVbON4Qsf3bT}7dUeYAecKD}^Db&@{#v&<yVt>at<C$tYro5039PqXf0^OJ zxs^vF&dsUdJ$|o}%XO!}lsK2w$3?#`obQV}ki>Q;yRLi9r<IWz+fv`{xU==FK!L7q zVe;+3w*}0P6!!dmw(G{LypJ9)Wc?e;cZEINalL!ruH)y^c0RL}o}kCltMtrN@z3$C zCINHwTCL{YuI!)ZUoC&HBz$Z06t=eLc`GjdjdSa@-e2@jBJSVK`H5dnNk&El*BsX6 zW}RE1DZ*Xx{ZC-bxeIg7{!>_T#Hd%dIC1B-i8~JRUgT@OwB|+0!nI4(l&0_SI5xdo z#s8wkw$mSWJYLJ0`sHDU>x-ux$3xe%zh%ul&vrKI`n=1WP0gx)yc*B!vagEyhWo76 znERnS@6r!pH@m~l3#0dn>buwQe4Y~+-*`n~+pDmhAJ`5YEbjd$H>qpN<*rZW312>G z+Wh|epS?ZqM^(nk$;aB7{DLg2Ue?CUl5jH)KFjp!?*aCC$?s1kmOW;e_2S^BX^h9u zu8aPz`c^KjnX!QBX+q@H3#{T7me1Kbf8mqW`@d!G7j_V5eYnSdf#K0VQ694yj-5#s z+{^4=y`b!Lr1$4o<$&UV_)x|5jT-mA97(nL-E4nI`h2~vNcp87Tbd_`@Xfbw+J0X4 z82k78%{A3>XWMd*{#f%l>+&qAu$8*&JS^KxHF;|0AL5A<E(?(1DX-bm&@IOx{`LIt zrbi{ycNwnac~JQG_xyPN8O_TbnM1@^yE$AnHkre$%{%q~WzlnX+b%tR{b2vHnz+5o z51bT_xEVTk%JZm*(o63b-doFIbH2GG%&LD&dE(sYIrERbJgomP{r^Ayf_Fz0b@b0R zo3L-W;HmYwm32?yt6ZOx^$*UreT>fF6f{|FykU*D^{l&`4bCc6>n@1f>b;#Lx+d&P zpW}AryLUNL-h6yfxMh#-ov7OGsyaq>4nO%t&pIr(l()P}x_9DQWx(Ug`B&f05zc#j zq5H!W%{z|``Zt`*te?H|dRyk9wcetp*H3Rh-50=Zbk>LOaqsf~vUOjk|Cc^DucA5W zUdjb0^_4n$`VXg0&VTUas_~60`vuQ>Jg_utS#|4KaXk0t^O53t$9?(!&w9L3wBJka z0Oy*^zppZ%?#-V*JFS&{>Yj}m&f+=#=1eh(D<d^#b%bc!+UX~(k$ZP~`O=%y3Uekd zpAzqH`}OwK>a~TwU8QnUm_(+DZLl!y<5s_Sq*}jL-2MI!!?a`TTNn$M>|C&5a!5$` z-!m^PYyPjD|M1}Kchl_yzW!TtM<Pf2l1Qe7(%Xo~yE3e&ZF1PUFE{?lPQ81}y6<c` zb9v48MYZ~jHx3qE-2Bq{Y1g*^v)fMWbL##*x%=a~>2=n9nMZ0^6MK*P?#RnipI>F( zc-%B^>Fsq@dj$obcCWj7^twQj|6bmS>u+6H@#e<Ypp~EQfBp1_r>mQL#%!s>Qzz#? zeiD8D!JUcW21O5RMY!fzEQ?&YVDc)Tv%ZhB*VnQCe^9)?``|oA6RXDO!QwwYZ7ld) z-EvQ`=D?OIt(k_ue_ejN@o{4T>-~Q^OnvMNBHmg>B+1&gf2fr8S$&tY&%1K^veVl- zkJu>rUU^#*+p)D+yR)|C(<_eZjPQ`OMH|<NAK2x-N_=74vCg??zsa5P?SJ^9`2L|v z%?H!{<&V8N61tPOm~98o0lSi*sYee9^~G5=)_=dW{lW{0{l!YIS8M}cbXH6Ct-kvr zTI}7GRjRjdwQAm5b~J};n{A^HLxl6qKaXT1u2-_k<!x^;H0)Wv=E+W*zniBPpR3Me zYLdEqrX<jGe&dQF{=mIFyBDUsQ!h18y53sNzj)1+Pp5qN;}6WX|Lwi!-(vftM<1_G zF8X0})J8er!pSb3Q+C_-SG}AqF;Vw-+Kg|88;;1#n(^{*eU0<>FPbsD6NTT^ygr)I zC|uzZ@j~$BA&xk1o$R~fFXKe^CFaP9+kRndf7aALFY<sy{(ANkmc4SZAB>fr3GVtJ znYlGC`|a&}JQ+``&)@uc<ka^Manpmuf6wXH_<!k=jo9;9`WL3I;bEP-rsI`&{ogOq z72jTTM@$l{Ru+nwe{o-aw@$I^NwH%06TaE^$`0OM_wB%jNr@5X-(4_S!hXzh{-M(6 z&cdH8&d&MhcRoG(*}h{vfBB+YLv1&&P>#J)sUPTkn4xr9WMXBV7`L&o!p-I;zc81- z5i3?E?Em)adqL%*k7<3yYYH>$+csX+ob&Ojs`G+Yb%u3w<T(80ccw2hxAvWX)Av2| zb@9lJ)3v@XWxeNMQ*9yBQ^j^{xxu{ib#=uS^ZrNFpPzYnTg~I=qRRxh&G$b%x`A6{ zU-7T4O5fxbdf8d;RpW2?ml?Zzi%I*>o0=2eI6A7E2I`1@oLoNd*kt#(1Ajg-NwMy} zf1!L$x7eEG+f7&3zJGCpBdEJYc$#XTmSf(bEk{aM-w-U`{XV+C=lW5ZY0n*2FSpk_ zko6%$DfXUAC}S4u>RR134;OgNivOd_@@nzDKcCK>=KfqXoAsoeNJ)^f_%Z#5{_}o% z&)HYCP4U+y-qlApohc18zH|0h-5h@lvDJEW+M=Vk=WVUoHamJguU?)6$J$1PNvZ*p zYxX5(7c6?p8*X3X-}E=8U>8r%F|LFoViNOs6^f@-URh9h$>ybY&{3|wOWBqATO*#7 z?tVS-o&tBu;hM@sK2^V`vph9kEYXXzEakXw`$hSTNdULKK&IZwuGO;BW^f0e;W6K= zI%nf+sm>qE{jO_Wy7PjmN@Ta3;rjIp!b*<ZG5#!*z_Ly9{DQgK_VJglE+~+)C{sRB zwcMfX$ejgjAI;|N7b_IgR@-rMTEO~@z1B~!<jz~XV^7P{qm~nLoE+6l4UO%)?W_N- z{?RA$H7VdwuR>_c0`93Fx~8v}zsZ+Sd_;Da!QrCA-0FvHgwm^Rb|$Vpe4oQWZQjLo z-JdF&-<2$MKlRy_DRnQuL&aX{NYxd;_k581_3zuF&)+O>&sx88V#?F?S0DLrJ|}wg zk&)Q*bcaoxtaGolc2$J0-thNo_x%GmCw|_ski%kKlKO(ve$Gjm?9)W&?YQpy`ldim z#V5`k-t!M_+4OZ`nydeUIf<3bZBy6pzH~P7am!`>`5n7Hn5FgDeLl6-%JEd)w3W{- zU)QN8Eq(3!X=7JgNbJ|Z`r=k5uI@SWZC3|e@Vt9QU-!ZC_W1|p|9$Z{FtY7>VD<0I z?=}3lt(xx6=ZSvvfWK)q$KKq(ZDE^D@7>w>E|F`q@)eJr$GpsAzFl~?zE^kqUarQi z>-Bd%x?6JEf5&@)3|YhVtuJhsDuwM3TU|Y0`(C-|ihZ9`xvJ6@E||P4kg;%b@#Te6 z|NS+u*JAzm>yN_=`@UbxJl6Q<P82#&V0$}kmEw~sJMTBL-FqjAJs142YscgU)3d33 zu^(c&<JM2VeWO8oFP}vmr?tj8fx?MOZ*CP{TY3Fy>|3k9`4{@0MwHsR@K%O(a&>8Y zZnr+ECQ`B~%a3pV!T<l>*7uqF?Umm3=(_OXODlJ%Ge3_}W$=l(w)~@Jz$e`%CW+cB zu8BMMF}|Ji)~G+`<*v|tzyDd^rZ12D@UQT7p0k3aw0s1w;QZBh%XT_*Px;(gc{=L( zqIbfk4<lYq-G4D-f86$+<@=9yt+;x%tEb?+4#?suOaFb_`TfKFKS$p`{P1(J#+u7T z-P>mTjyZ8o=INm=Y2HdgKK)<$jxc3@o4xy8`Ts>)VG46D2Qc)Qo}0Mi!`!LY-<V|Z zGDgf}us%D>=GgO-7w%84Ue|hL51S#+E1&hx>$XlW%<bizt)QW#Q51P)jgzDL^)uGb z`yZU2_y4<veHCMN@5jUHHjmatFFf?POsvlPYRSgvu!@wz!^wf%JM@ZY^foNg`*5rD z;@+=D%&TqUP4>+TYq7M=o#bC}_uaN~rUq-3++5SeJ69f05-VMHU*XHE6>b*SEzj$T zloXxyIqU!U{Jh^<|9-68f8fTOAG3U|ghOtcn<qxxwc|Fqpx((ir|#v87)yq8+fF@X z*?4sGE>7c9cRLEU+fA<d_QCwJaKiWPuj80wPwdqzz5luUiR{bgjQu;dYrOvWXSHVW z-u>)b#i|b2eL3UgsGi-l>D+&N%@^_2Pj^eiG6$9)iTUBON-1QQ$Kl7b+CJ=B-F;zA z@!?fh+j<Tbb#i+znJ6Q!%kQut@`|U!Tr+DKAMU$z1l)=@D;KVm7PIyV-~G_(JIC(a zTDE!RzLx~<-Iex|jgJXQz1l7}<(m1u);ks&FH(F1oUiNk#2%8b`5ym3Tfa_O=GL}f zo3_+`^?oAwxoDpXgASKTk@B9co$(C8KU%gn&3u++u2Xn^k@_(KQw6@b;%N@1N1`h3 zynXg%eOfrfme*%@9Xq7=$FV^5aV+QKy==Ftb3-5PpZQg*dT+$S4^#Jr9eftOY~g~* zrp}$eCU(Dny#Mzn`$PTrDvd<GR_T^TpSiro$9h(@_^v0x2YCH9vq;V|ecPj4zP8}5 zl9^g}WA0k+!(IAZ71R7h`?~k7`2L*Pt@cYq<Bg>D`^5|Q+way^dRsfWC9P6_QQw!M z+kPkhe@wSu{b9Chc9&4W)#d;0|2z7>D}V35=3UQfzIRqm$%~rztYm4~{2hwVJOqp9 zXB-wSuGWaY81?VU98tZE*O(L8j*7mGe7eTL@^_r)y%aNx<4)Hvy*cLp<lc7ixXycP z|L*hTy(7?n>{gw(*O}G~W^f+V+f)Bk<lpxEfAfF5T7CcEn?rZHrd4e?RQE}9&*?>M zheWNc19Zw_nfn~9UUwfhwx07LhW()lgUsrCC-_&_-?z>G@-qAUBKv$#d2hWn<&9eJ zXC}qTUynR;{Y%+A{YcKLb#t5Mh2C;JVYT3zfBow_)<2rx|GBR*)$2$0_j<NycC(Z6 zBHz`sRZrUp7CdyTik`1(>#<JhnXAg*v-=7k?YcTQ;><tAtZx>Dcc;p6#9x?Gu(rbg zv15FsZsFGHml-VN7;XoZyT<<5t>dBf>TieDxtEz&*X>o?qQCan{yADFZx!lYZ~Imw z?qRmD)$baw>XYMo`}^yEKK{=iU;Fg7#O#>`pKc_rTYfufUfRs%wN~#kcdX00`&D-7 zYbM$6jmuq5y-pS1`mng_@u8Al?!!|0VNz0_59UO!%dLFv*kE_C@2HHN;_}iwfi;2i zOqUl0H){2^9Qd_HaN_BOy7w6;`DQGfT$)-~$+><`mGJvmtH$DF@sHo_{#xJInpmB& zQhL9q=CsNy>GR$!k9_vDX63pZ>sc}eYu+wWyZ3FwMvpz*PUqFn7_s!&746-#C~RHr z`bnxEs*(@zwOx+=<MyZFypZ?@vuPU7ULW2S@%-z9ji(l~HC{OP{MM%v<rkdJYppVV z`rYA#)#i|hL$8<LKXT-bO5W{40qNi73UV%w1wS9ybY||ql;^?HN^ECOt=+LB_qDlH zTA0z18&Xwj0{Z1qS9D**2t8QFpKP2qHF({(IhiM=FCTj*;C_w$SLvZoQXCT3_Wr%I z?K;!En-4Uez3k9Be&}=L>3#2|s=H$rD|wuMY(3puTYtlOc0Wli{{Wo_r#iP6ygIww zaTB|4NzvUI(Q}T+@BL7!qoeo0{(pA8`1bd^B<H@J`>}HO{Oe+$uP|7gy_y^GuHdLm z;lgMot{sd8hjhHRZ~JQZdBc2}Tec6UNmlbGd^<Q>j_m+vgRq=-%nq?in`if|{MYd| z{)#+ns`z!+`L*YxGP2JvUc8)NW%dOp_3KkxpSsT3Q6;s!?fe4guAlRKcVC$J-h@R* zOx<@zj(N3_iSLZRcMolu^>)i5vlgAQgU=I|ab7ku*L{8@YP<T}&i0u%8A~mzPt3Y+ z#DDog-(2@UYgPzx9A6n5-n^nnC!sSfVE5K{OIW9c$}Ne0Y`J@l!d;{7>qYyP=0$!| zYM)r_Uif6``^FUhs25Lm8Sl1epTGCF&N{!|gpC_I)ZhKzQgSf=%AI$I@+U5<W%4ta zDagrpIf+l_V9)#I&o7?3y0*yH;M|MN;&R#dSFIL)!?u@^d4Fr)5oX2(>rRw*{gm3k zrtiOCn{>z2b)0j&U#<7nYwzom+p@iUfr9jPmFNpj>gFv^9~D`IzA<)>J8-m9`^NTC z{kAIe6Y_J+7RTS<<MKXYvMJ+X#1_@;Y1<BLm?vClcInM)S4$2(&F~1ZZKfxA9?Y~k zwl_VbE@7$Y+PcpUtGoaG5!f32eD(Lg+xQlp+L*j>u^YGTinmdRi`rhYuE^?SmpgsO z>wM;MOYQqlPE^jZ_#!gx*>cBCtgLhI1YG&D!ChbGc;rvz&EZ|YzAemMC>j`gMmsO} zcB(AL>iDQ1v5z~Y_g(rv*ZW9J`DSt5hudP`t9pMpTcz?;y!c<$i@OYE^DC3ic3-){ z7=1>xWb5^IkDL8{dl$*9QFx)fB=q*9KeJ}XPUOB*GQaw+UHbFj()qIcyM*)YI(MEF zoRH(_sBS*zX%gf6c&pCm{d-z|KCOInXAk$?SlfkL*F`^>*f3S+qW6(|u^p;nfj8C_ z8tcwX3*FD>c35%Ss^VuKHcwK$a?&!<Op9T=B9qF+*L?}x&wrM_cl~)iZby>beC4YG zp?$8r^S5$TUDf^YW%^;|6Cb$CR4(N0JD}^GEueGG@6nsx`U!tdNrD~1+Zc7jl{d5c z`<=iTiM<^)`-FF!y?0x;_AX~p_fh{B({^lVvDkUc-0u$GGVREBMYoNvv)W1Zh3Up8 zu%7<ecJk)q$8$?=i0!|<qw`4g`|@_x4@de}6zR-4f520`aa+Gg;`Sp~HcWf_dBahg z6-H}xJ>H4_aJ4VmeLJk$vFhkKxjMn{^Ky(Q#Y9Rj8Laqu@449Xf=8b;_muxzv8Ap1 zhQ$s}+t}JHH=fn`k=xT^7k-I+mik)if_kp!uLFOJH_cAc{=>^$AtnBCuTP_S?5mS+ zir2Nio4@+5MVrT4^W`(v`_wkgt6BDrUCwd+E>`WRhkXvqb9Nr6?=7GF|D2v|z3}t? z{e1tHrf_pvWok@Wx=wB3PLn#$^>X#R(~s#b-n^LGnOWL-we5*Wz49L|=7LehVP@V_ z61nymo|e{{X5r&~f96x)8P_%!9e=&~xa*>P6Bm~!`@Zu8Ha~0XpD)-c`cClkle?-v zPn_a-?aFz6-}}q=w!6kYEMEG2g5D3i?>pbd`4?}V{gWyGLyV>WPDVk#SnGP8^!`0P zi~ekP+r-Q|*F=Z=l4-@CM}>Q;f5nP4D{afW)Aw#(+|Tgnjn{I;x2Znc)^IEDTgEc8 z=T$oxOO9RHXu1EWoZRyV-zGjk^XZgR?%7|<mcDj=t@L`gN{RMfCGJ3GhBxN%yobtj zc3%8iocZY8)-%mVRNuW-|Gx8H;L$2`ms@jL^|lH&bbVbH+rOY?<-=}^;wP#)C;pX8 zlGS*zWMSayZM{Cd53Vj=|KP&!{FcLa&2n$F^_`n%Aa!rsneJJsa*=0Uz5fVvM{Pc1 zo7u_0UBB4zK##}u->)C;x>c&*nApgz%fYu{(GB77>YSz3Yl>s<oIC|8vOT$1aa%oj z@9+OI+5f$GyyKF$C9D1Id~ekDHXVATb8gRfrDbmVO`si?nOxJjPg~g6@SWfDQ)OLG zyra8a|JvxXHf?uF#_U5|Cj8yJbEe*xiqku%RbDL4y(si|OPfQMy-iNG?MI#&fxl-x z?eq9x8~B!KiJ!~V<cGg`VzlpWkI%kRwa)9nY{e^?e_u4J-gErQ)>zfBgr~9WW^L)S zyW$03?*vYGb71BpkKlzZf7|uz*dH4|w%G9B@6DZi*%8lnNl5*@bJ0*KygF&^?ZBre z*A&c4%(<XbJR@v}opVf}bkVZ&Z}Xy`c1FiqOg^q6W+}t^De}>lbJu4?#ceY0|3CXe z?B`=&r*XXg`Pk;_g-?>ay$YE<GeiYnym)nRTI}|Q6z+BHezUklIqmmbw69JM-=J{! zecO!gBU^KK-z;6dlcD^Z+3ip{wxgMuAC+|4w$A0)qj#lh@gbkfpAL!ssPLGzx3lX3 zbHTE@t!qkyl&{}Xy7Y<bwehX~BOwtJyLX-7@}GIH=u5TRPn*B*HoVi!*|@%D+xF52 z2j<E{vgDQ*jwyWx-7Yn6HKX79S99G=(b-wXW30RB%-6bKOX_2?6CBE?t1Hd<vOE0O zi?78VEz$3#)A#@UdR(qPE_eStlf#q3{-@V;HqN#edvYMZ^zhbCt+Dge-tCOBE_<_| z`|aGj3y=D3Vq~3bqOQc5X3TVZ!Pn};B9EKI4ANN+GJX^=U0yGn7r*OW)b-1AQX?7j z_gCi3JiO&Ysi66hyT2;??|w-6%MtYLYjS**fW-5X*HIxm?ZlE#FY^1n=<Oe`7hmmp zHabZ<{qy~nf1@w@U9HWWJ)J4cTvnN0HDX(3JEom^q1N-_yUKh6m-zT!S7HiOXRZtN z_dd2}x7hA``R{m~yVn*!<n!Kaw&2$xZIN%k1Vj5=z2+I5RX(8Tc&fB<_VzvU5~)^? zAL@SJalSV1`Sth8YsBVXc$YlA_Bp$KdyTuehuMM!lb5;vO%pABeM6Wb+-LI>UhTWW zD(u&PZTtO_SHD4QN;=!wo!$rC!pck5*!L$d4gc2reA$fkwx;`h0-sg|Z@J9;;DL31 z=Z50@3+9{@Kgt(U_%gh99fSGZpB&rX@AHj%Go?xAK>kD%)rq0myU+P*?~yqn#<@SS z^YEMFW{d8y&PlLNu8>M#*;^U=N|gIfM_c>TJn?CzdO>T7*ZipVf0fuOp4sulOW$_I zJhdEi3#RweXGUCaOrG1l<#(9b;(6cpKAagBrd^$JIqy!<ef5l`=`5hYOHve>HQSaw z`{9(7*v}TfY}413iA8_gAjNd=Wz=2C7cu5lkK*)SzPunU@UQY#srJ3?AH1f>FW9kO zEbyttJ^nMYjQgu&?Wd<{GTTkx9T`^Cd-MOgda2ZiFsqtghP{G<6{ps`S@AHN{rwLP zvs`<QOMe0`cor)yN=&)NQ{b?)K6=LCOIP-7dy|>7_IC05!y-S9#J-Pw!D?`9sr0+5 z2<I!0Y7<$m-W01a*}7Wqlc1b(&lT@3SKT0^t}U-kF7|XVUuM{zf9KaHp6NSMdw-j; zXr{8sUEf<L@I&`=#_5y)&2sPdueHu&%B+*P=P^s@Zk5^b39}y`>g6ci!B~=KDW@$X zcino@zrwq<@teW|F1IhRyk;}O%EkBp)V}(~tS3wrUY!u`UR$as7XH^IA?;h_hlh0n zGo0S-o_<Zi;C=42_c|M2W%IDq@i%RFHRH5r<oT_QCiWsFm$pa<zVbK{_V<fuiT5qB zVil#_h=&Dhzj`#3uD&H!eE2Az?}~?oi@A+$l{`OxpMCji-CT}UODfO3d?YD*`0=}K z(hP2g8P}Q0J?DPla{c!A>!(}G{FQCBju$=teM;plckH_*nw_yXFX(1J<l0_v`HW|( z&*^<C2|Ck)F2#I5*<zfwVYXqlj7hd^8uKA*=@?aBCcphV|E*cV=A|kk{!CDW%QUsT z<&02Lbk5%El}D~^>sUB7J?hP_1omft6ThvMK720edgX&%ubGQihQud3WF$Xj{lCMA zRk!5QmKMhXCBfvy`7&wqD{~5?yH~vUymxlyuG4q31P*LHRr-DJ+br|6PUB0$->X9S zZ00X0jhlMulaScC`3L{J6polP=fJUcdDrWGcirR;e`?j<;x_BuJ-$DwH<aY3i|+V6 zF*|1aoYlRy?O$JRea37N%W&+@+iQC#WjBBMHF;Tkliw_%ubV?$j1G27ilp;dcHjAM z>{Ytl>6r4n#}DzF?|;|S|Ld%>VZUxc?3;&OJMufE)_i#}Bg5nMrY(DVE?sI8`M7z8 z-6ylOzP;Tuzu%iQ-~B@U_rDUm-XD}Y?R57AFJs2EP38N_T=L!>*l;0tq3E?Fy=5!Z zufLjq;dJ3T-aB<Arw^IG=AR^}@nT6Pr^)I&g>#wn5@s9ReS48fr_l1F>C2=%x#+xa zUUN$>>N)OkENr;Foo`3r+gtjj+W()eVy$dC>Z<vuJ3>nO*puk>iLcIv8-6_29kHi? z@ATv3g;Uqv`0~+z;o9~0cih`{Zf@~~wJ#3{q}=~{NO_4{WPxt>{L=Rw)d}-9fBw1V zqsN@R(`qK<b#nXLdVY3xR6pCPct-Q@&5c*}67*+Awd{PdQt{ab&TZCfvwv>CGHaiy zQ2y&Vx{odzzc?1=`Ry-T<C@5Q%ysMq-3wUugz)@6++DmmLQ3-35$*GdUvAD%`1YeZ z=!&~jq5jFwW<MA9X1sp8I;v(ZQ&?_X>B6g__GYKPbu3*GG)?!y1)cisHUC=-H@dF> zpBOohg{!h`;eyG_R7!SoXMZzyztCzg;kWsWulGHfdtzVDzkXM;Iezb@00x`G7w))* z|IsTC6#JIM82o-;-^2NJ@^h`r7gxV${35r9_or{P!mZCItXwl2_4(tE{aN~XhJCRR z_w;j#zdqa!I>4X&?oK94(1GlQd-EA`WACOdTJQQq^oq#qnA_V~Ed_%v&&`cEFpV`g z;-=#Rw%rG}teM+jQG3+%_q@!ox(9a6+w+#J1Ub`H-YISOzQ-M<8P}{$7H(y+5_q@k zS=&?Ih}!2&=k~mI5-#2`&9Y@~*gr|$_kmi8{~lS!{J1sW>vb`wZFRoW`?ud0r2lvP z^2WO39`kmOh4)pDu40djcxO~Hzdwfe_d)S?{ls@~G|$Yp?fhB1+@SoE#WZ#GLpEAP zwj5bs0-qFJ+C7m!T&R1){VCyVY>!%Bv#hCPGPlp+wkc@68O**|PxQ6T)v0_I?@Aue zJ0>6dMbhH%wVvPG=E-YJ4!GbM9JK9%Yo%w%*(|g6jZ0lNGlw0RV{mzbiO8ajFVg1k z@>o+C!OJ=0k?d8?RmDkjcmI9%G-17}PTXFZyvOV9`eV|?t(HjdOn%K*l5?|d-Q4OW z2ky75i>+SzLf+x`1A(HS=M3W4EmjuU60`eHdabh9?G-F*RwgDdJtV|*bA4=3?fuWi z5%VMtADY@7F`;)_>*wbN^$*vGybaXp?`?ZNZMj;?ztk9RC%f%c{BF(1lRFP<PikD8 z+4g~LS!rI!mTmbQsR9z$Hpi*oy|nID`MUf14T2Zac3nO#IcHPTr_GWtkC_%Uee(G1 z<f!i3E%!ytb<^*()^4T;e;9M0-Fdfb_q`3@8ebJ}IX?eci?QONEteACwjcNMUt-Gj z`uNr@I|9U<c4{undi~C^`oF@h>R&1KAKA9#-)YIy{1m&Je?j)^vXZ>}t$*5h6YVbE zQ#=~C>-Fthinne#9TdLQ#jATWCVJEUrlaeBZEjw4E9LK%eRmZ4y|vZ`h<!-N)LirW z(Th-#C8c{SUNVWTi{r5uUmxR?SQhoI{rt)Enj-1x0TXH;pZXQ&edRMpZf<_yX;(SH z_1DVfo?f(nC>Urx|8)@mnPZJ=*PLFnZ<iMQ_@n6l-;#xV4|ZH*^j~~1YX4jlb8ww8 z%{V9V`uU~N&*EOoEqj`~<C)?e#Y~4+J_UBycfZTx-?E(3b@QyPD(6=!7;bH~Jr&e3 zRbsW>w>huU!xyd9DaqVeo^z|E@9gah8w-s;Wl2j+;%%&Zva4$8jq-Nhra6CdUca3B z)B4aRr-$3}^)GvU{v0uHqLYoe^3jNU@tvF29R75qWy=QlLke4uKGfFm@o$l1i=41! z+tjK1V#NL%+{phcs+=RR^7m2BeLi`Ua!ZeA&Z~V9wpQ&z-;38tZ+6}*t^EC3h}+2L z;r7d|p^S<5`9JKs^SERZr^bsVnw>7u{9W8FcF%02y3%@$#SIqUY<=xl-o8im+MbK% z`X%MNRlgi6*(<$B{=NEnA-U;X4z`DuFFJU2TZr7HrJF0BI-Nbbf~|2=-qhVOorRkh z*>EiFx_wW3%C$PBl*ZX&OCt7rtcki@w9VDV;Bt+V%mMiiY0uex#BGDt6y9%JaOyAf za{YOb5Pp$Y9NTa;Kc@0z$o>pz#sY)8Z#GI;Pb)ihW$gtQsZNXbB^^8c7Q7ev`t#8` z`GvP-BpoV+7u8j~Z7j(Sy^$&UeVboa@`2#AoVn~LH_E-uo1XkV^Z3haY14DLcl@+z ztmJ=QXCS3>XqEm+K9Q13Q(Atp7jr~C3F;4v=w4HCc#_zmh-X)}-C$lD_#is;>_3y= z=NrF#Jv+JTwG+P!Z-atNdtZ>+lCQ@WG<{0>zh_p9TS>{f3ETfH<c^wE%GX~i*O?R2 zrnzn2i89}s-Xi9|#s=?lxr!cCFc(ct{}%o1<jx&|414!AYQFok`7}$+oK_RnRPpTv zVo{o5Vj+e{rQYo*(Y`y^W7)15(_5nyO7~d4x$pT<{PT<8cP+K&dMx&-O<R8K@V>hC z1L>9ON;A_oa{caR@_Btr@bm$Z%nY$j^TdAWezutZP4kOlPFq6tsf|)h8_u)NOJ~Sf z32j7j$KEL3QN1juRqfV>UuPH(pPi@n?BtJPiNDY71lM27f2XkMIp-mbj|siX`=fbH zd2<retn98GwetJCW#*&xY8%!R&$zZzug*^Jo9krt-qr(xv3IS$ciLR)YhIEtf9hN_ z?U*|b3_Wa&C)rANPJZU{V)M>Oy|NjBFMq8m*tazF?Z59Ck0fq?@^gt<^CIqh=g#D* z+;1axc84ZJ2e3riX07|~aiMgfkxtfulEm9#tH0lvHJ5kU)-~Kqg<H~=vo2c^etP=q zM?vQ^d6|y8&X3A_Fo)UI*7$;xy053ohC&r<o!2rAb~?J7p7FkxUZ*PW@6hZrCHZyC z?L7wz4~e}#b$*G#>$!8T%X>t=@ZQ8E_j%%#o>`T7FJGxDpVba)jQ_CsuSxgaZPOmx zlqoyt>#s0TSo8Ypzrw}qtv%My&;FYIvhnJMf_KTbi=W#q*$Jwhj&>Hb-;Q6`Z@XQ$ z*gC;)`#xTAn+0FzbJqvR_-tg4x!C{V9lPlCYGHoqY!<P0{p4qVl`nnY_oUF-y}EIB zTI6#Borqi^3Ga&F=DQ4Q&s!O^M(H0u$A9_J_sHj|-)kO3JX<lx_|(<cA`y)R2GV*< zeuC^&>2lM5c4onjtb_Tf+OZje@9Q>h`+d1KNiJf3;C{<TwSw1!fBWhxuX%i`&LURp z_l5PGq7fFQFH%Ls#SSGOk8*pkJ?v_q>YBC}tm~$};m|*oSFn3c%!DP+-xxI=IGNwQ zKKbhJOIoS!vp2ZheV!<A%@W)VxID>6>+yUEHNIKGVH0K_H@d$5GLObue_6l!U3yoZ zO>^1ee7gD6*ElEc+KEkdYjwm8e*Kv|!@5>!&O9@x8*9~PT+6P=5f$ZJ7uTlO*7h}j z>f~ot=DNQX?pn1+ij`#B|JtDY&#ST_dfLNl+uu2Y2Vhhm8t7*<%@yvPeRt!%R>R}f zIUA4jGUc*a^ryyeJ9Ag`?ia(?zr3>BzVhv#!9I^&>)iRnGj>h6()(&tK=8%5zYonf z*jUQ(F|Sb-I9L8A*5>H83AXF<m-igl($@R>!A>(>0lf=4bt?0BCH&t0B!*A3(qR(= z>s%An)~Bu_Py4qEUuZjG)qhE;`__gNiBWGiIvl?9XlVc|&uZ%rISmDOUf9*VR5d+) z^N@`07t=?l`1g0NEaz|ieByY-p{H9HX#aeZEwg=#J5R2;In#M3tq+_PQ|wnx-}_X{ zTy(=Li5;bdQvAO@XO-$KXBGL(<LIdFd-BNC;u&-2dHg!sdNW*Z_x;?{GHLO<FZc6F z2p_Mw`_|#>!mLBeKcbuuxM$}1as9G+HS6@;B}UbsB+mW2x&P3em5(o2IiAW$TEV?W zNz9@4%udxSodw~u3U?{6d%RtKO*hR}|3TE3UD~lX7Uf3236td!+<q;zTuS8EZv|g| zkgrdFE}kK`w@Y>Fvuz*Pk6G%KI7m;<>)L57d6p|_U58HDZL9J+`EY?^*UUn_n6@cv zcpW!3oHUO=dR4tXAX8(lLfWy7l2_&4KGzBCX))PlwtTMh*3Q^9d#dJF=?P{26>c!p z?7f<CL0Z0QZjs-<BbNp4p8pm#;aOXg->hk;m)|@5=gkyR2K70n7kM{c`*ry7&8H06 z9kUA7md%*9vraCe^3#l|8t2X|+OdOSQ<+ZO-j?q8|HeGtf%>P|7Vt;k$-T&O=kKQr z8xCw~<JGn*__eCke9y$|)6cKst`U5HYi|y}qtd0u<EtNZ?d<qh;d$BFQQi0Sk=Dx* zQ>NvrJUjL(%cC>p`kI3GGH<8NaE^GsF#6fVw=DSwqOU4gaI0E0N?H3}o3iur`^Sf_ z|ChP^exKs+%iVob<%E}4PSa@B++n$X!>sGK<r-sDzBF2{@yQU|k+=2uG_yZ?KYqmB z+Gv@htNOxkb#Y05O|`m}^=?I$rweXAH20V_?P9UIfw}S29^3Y-{(QHM%5`%$@4wC4 zaQQRyw%M|N|99jry!|^<<XPGr)3YbHF5V-jeEuKH@&D`ZAHQ=mxNz6YDnAw@m*0m< zF8a^P&uc!QK4aHz>upc8pWY7JcJco@?(J&V+#<t%?keRwaC_^5_{H|m9~?-NxlwQb ztIE6qQo)|-?@##j$x>%EM`7Z(>FiGZ8RBu>HuIjI-E^jO;q{|7n{F(A@qJa&I&+4s z1s3Mgea`CH{)LHri}h_=h3kK?N9?GOQ<Cz0kXd_k(Hid6dqXm(*r#(F`v|s{=AIME zz8hu6YE!^sw|r{4In$)7-Nv_756N3xtM=RSaN2D9mcKz)Jc~gQ(aqH(Jw5NcQ{m07 zxa-eS#1Hk>v9IAwYEeI{|7>FIG_7ZCoFUdnZ%T?}E?h6Y^l56$pL5{_U*`W;_L*<< zC~B9TxM@%yWB3j2N7B9g=FGQkco{Rkv+m*LJnVJ-Qt?!~UvvD=n2PVcYbwB5T~fc- zaYOEB#ydqH6kk@oXU&WQbr2(`y}L4V;%N;pZrier%7VqQ2XeXX;?}Spn)^yLk3q)e z(X{Kj6|rY>v$mcSZGGuEMNC3u`#h0n>4h(U#~+@l|9}4s>vFX@M~(}GPSrG6o1I@@ zs&Z<g>07~j5e8o$7#}Fydi(mzYy0BzQVu>}R20l||9P1IrLzpXRxmF5W^KKz;I=M* zazOz%q#^BHSZF8m#p&qNc|E$~q06&-o9-{VdLxH%JFE5Cvv~>u;R18cetP0kSs@x3 zJ}rG&!Ate~$BxR^Gj|^j7pxDSCh%P8Vq50k-!XSQI30@DywKuh*{qnrdM)$!g*C-@ zr3221|9H<De1>=R-c9$_?!L3$cDLtkG=GzcKBz@2vZTAJ?1#{_>Ee?$V-~U>iac28 zV8kZ7!p@RM$WZ_PJI?L%?|jaDf4$|;L_MG0*4n)(e`oHm;9LIhPyC}l+y5~&e(8E4 zwsxcZj787IOU<?99F@K_=&t#&>%-z|g%2(Vqs6wp=g(PsG^Qt=`+=FmlmB18@;p3P zZO?vbPrwDw%R(aE5mTnUy>rB(=j&O<WS*V=XL`3(=@dT{{G7ev%;D^m!%GZo&vvG+ zlV*H&ZvMgF^}qBD{+!yJbuad^=-TMh95&ZVl{Q>hXME?uhS(Pu?!3xe_s#1-REaKw z@`-g%1S{XlF~o$|%y_oz*5W<Cex9pQ&)fg?@QLTU9cBr0S!HH%U0OAFUkTs7r9q4L zeN3s@xs8Kc=VE*I(%X}dF=XpM>q-?BP-mSRV}C_SkNeW@&+qJi+xG1H6*EKZyC(Cx z)v^UKuXfFNm3-iF;e&_0Cg00kw*>0^)cp{V;G1nLcbLyY@AHm}jF<Pme=F5+^}>bs ztwmdYKU)~P<L|R}M~MB?o~IiYKdsqh!0p4mcaC1r+Oh*%_LOS>t?JmhNaJ@Y_hykV zuY037(jV=0w)k}XKYN;=+|=Wam+IebTy$1p%K^cMDWAXhx7%;KwA#eB=3s`-5$7v! z+?q=DD^6W$eqQq4;pQ&>N4qq9&O1L!y>R;Vix&r(zt`~1lJ%d(0rveS{*t_$BeCB^ zQdir2ILo)ZbGxue`P`#1fpcbaA7426b-&Qphu7yH{wZI}+uC_CLZY`b#zraYd+_r| zx*z(C`*rG`-kZOxMyxydvA|M=ciHATFAr>a@s-W-4ex~`62B^UJd%rk&p1bq`S7FZ z(fiiQ{w}-MH}72?=tLdASyHBD)rmz{B#NGKl%84^{j}pU>m{|`NPfd`ktL^N&x*L` z@w~b_|L42-#2>xSukPAYc)vntO@r{BXFKkPp9vO>*L*QK{M@5Ax6dyQi7>kRrtN5) zV9eeaUHzKxrY<%HuY?!d_D>XB&Yg2_i?sE2*%pB<muB;VJbmTLyw8i3gAOp~?)z3$ zU%6+~tmK{5ciuB~PGJ65_$=w|(U`yhz4C7h?^`Un;Wyv5G5G$U;GdP3US2jk*1Vk8 z{PLR2yQ%LY-d@t0FS)bh`@El4X({q`FO2k;_M~n%t6elJ<^f-zciL?3J=bT7Rh??m z|Fn5~HAi*%J<bbn@0Eat27<N3HkcSUIxS4-v-jV4A(69G>4K6S|HEB3R=<tccD-32 zH)k%>&cZ2A?w>zlz5d~+&-O)kUS5c~vM<5-Fw^x<x9eR}wXF^uI-{Z|Q_H)Y@9&uv z&9XMnIrL0Ax4KyQIX_r$|K-;-?I*h)oc>bwHTm_k+7pEvr!8x~FOiw|g#Z4hGbUok z+>^Ff?~u_-IKv>`S*r74<JR0=H*EJGp7vq=+8NWQiEXI(xv1oK5znt))dPFB%((ym z*#4tGCT@Sga_Hc;rr6Uma^5#)ehb}o=lSyE24x>v;{JV;fB5Qmep~VB*_#is9@~5A z*OkZb82;Y4yx_v!ug3zcRpvVs#qL|nynFlIo_+TeCp>Fv@|!j9&><VKRQr-Bc`Kbn z|CVTpOb4$Ix2-yNF50r8<LJgjm&p?*NS{7))Og2-Km3Q+$=F^v(;3tLJCiTkxYcqw z=dVLoA}ZET<UaoKp7;I3cb;@)sz%SxyJG$4U>--0Tf@B{CtjXsI9t^oy)0=#x$-XS z-wv}t^Nm$k`rl6~Nxt>2EO<}u^y)>IRwm`$O}AAEU)#K|=4+SE9+slVfs94d<9<ml z^OL{qVj8(x=EII#iBZSfRM$SA`uF+4Pe#v{9XnhU;_!U;`C4Z8_@9DZr@IR){pzb~ z^0ULN-tu4iAao#0BI5V4bOv<?KUw}SxlaDy89a(XjXnRw!Z@y9C7TX#ZShP^U_TV8 zSGL=KZ_u-<=x2henlG}nf~H)1&9_93NwX*U_`O3*!{<$@k6=BXI`8w2TVIQJE{JNF z{l<R&yaSi+l+>($`1$z9Pv8Gbi1+P}i_=+lYVV%Y>)2*R%YUdA)an(=pZlOr%e!tx zy>ZnpjTdLxSm&D9o_eL}k?13ud0NZ-vcU4APa~c7%?sMCqkHJ6_w&OuPkSV9u(9ra zxIK=?UNp~sTRg|)vvcpq)~;IFC7$xXGSM<pZF@+}v8BQJk6YjW6--la6E?S)<o|Hy zuF&%HxAm%?-{bhBS9_pjcl+~GrSGRE-Me~|`BDt1kPn_SpFjL!k&Bhs_mb5z^ZsnO zbiLalDuw&GUvl9OqZ{q_ET(Xsw)p?Z|Io_Bt7r168lr60u9j`hi+uYm!2HPH=f=t5 zOWjY#sD*R>vDUBQzW>wwzwoo=Zfos69}q~`8z0l3bzNHKUhRR~_W8?Hc_-FXt5+>O zZF_$jJLnjwB`-Bk%Db4dt}%SOTKCBZ?wxwitgbu9T}{$4KF)XgeCmW_PL+OovQ>U% zooAMRn`y20?toCVvrY4brFQnJx?c`0D&8M(CH^1ZynomJx6bTbJ=N$;M)~&myRx^Q zeffI$&ExH_-wA)#Si3)+`PR+=?_h8=XJ&G??u^uaaaR9EUud7S^0SAvOBVR=uhu9z zI_cQsMQ_~WC)M7ITexj)aRw82vDCGSuCSlB=X>Ih6`k7k-J5%J#Ygq}Ch@v2`36-# zQz}I*4!qXe-WtQQO#1GQ_4E8sgEl~XT73Ro-@F12X{aCdydA^EcD-r$Yr5C6?b5AN zjrrepmbyo|XdSA3wf6eXoUG=euY1i6?5j*=)Z@w;*;g{=?+kjta#YoO(X{@nPfUXs z2VI!{r<iYr!p@f`6Zd@CY=2bSzt&P_{X3Ss2Ood>p7&0`ba5in>DLc37i`(SRr&bK z_}N@sR+)8A_}5A83Y#Q0;cXoI9sdJcPpvn1+}LpRwD^XKuSq)`I5KUfJzr)}_-)1) z2HoRIFZgY^9~BqQW9T#8Z(`qk^W*A=Z`!U(NL#jt&;QF6SNUwcfw^tgjzhgyFF!Jo z`1_*GbRFl8!2dheImS$Txys!lc+QEy3$r=7tWL5lJ?biw8ox#E#<aAl*M*L*W7)oC zOUKtm8n3N?Udt}oZf=luXwk*T?-e5AI__T2tKXKr^?A^_vwiUg-(2y?=nPkmVSIN= z^UsIq|03uAJh|@`{%6k1GIpNus>(|<j=b$xC^!-$UUeju<z7c6!@n?t%nFScD#9x~ zt&~n5*M72M{rZ~BCt7XwpJLC<w{QNsK;>xCtGU-5rNqB}Hz|EtVxe=XF!ON9LHBnb z=Da($Zi?{J`Et9ZxT@A_eE;pg|GWN&H~#;9Qy)oQHl1gtJtukXZ@aIYg^T_eto^=p zX{AWl8@?<xkaZf|dsXTyg73aA?Wo+*aO|qL#eenxT+{b|6^;DHbWJFA>iN00oih*T zH=F2rU3eZc|NEUDdktQ@@79w#3cW*?yXhxYeepW`o&WchROScK@qcUocyRr`@!{r& z{NtTb{jWm{=d-WlmX&+hR(J1K`25YqlOwd&yuEK184t32%CzZD<~tMTF5huI{FBnO zL;v1(&#<hMSnU5-fV-$(SJQp_{?1nI>}b8n>S@o?4ebplMLcXYwT_<fuIc(`@#$hq z7Q`PqRP%TBtFx!~{aIf3YyHPNm+R%etzWH~;+rkq_x0Up4UW^*53-jW$*X$#ZGQ9& zw?=0zP?|c);&s7$s{H(b4X-zzc)RIYnqm1T39ik?Gb-Qfo{_81_hr65P5qdG?(g%{ z+p@P`JJIV{`c%iacX!hZ(c=9RR@v`6I`iZOC;h2m;>Lz%RdVNTzo-8BqW)js&F$QZ zzOu7I-}QGf9e7jB|2pXAMxAdjEKb?)w`h;N`9oux#N&%T0T(>g0vL0S7WkG(B*k^R z=51cn@@EBCThyUXS6JNU|6W<L`+V}+8Fk-zd-i{lQJ<2@<khOGb8<iX;&`j0zg$zp z%++7TEc5S;J$B=1aD;AF)&s$pMfJa4+8;FE|C4=3!9Nd;R~xP+_P1JY(8*JowsWHT zD)lpeKd#iCF>^k{;zyur3KRgPjWN9w+(nkF8J0gwk!iI1dTn)L!j-5EHny#x?)Rai zn-zNdKmA%!$~1|iyj*l^%+aTB_2$pw_;u%r!7=x9kE3SJo_$PveI0ZBzf=EpeqVQY z{=WOr_38QF7PH@Du*|4ju+;Z#Pm5kTxP(^YIKD8v>Cw8Y%Vt!(b=8U6DY9Gr>J$Cb zlaqH``*|&N`+*zA_Q#&)*Q?IC+h=0uxKYGR<nh141I8}C#RsQ<`SNM!(VLkuR$uwj z)U*2w)(0t{Ie-4a+U@mC^?%OS$?EU<^WJcA%iY(89<La@59EgL(fg3~bbt3@bwjhG zdJEH<oBWI%6<CYb#@x94eqZ0AFDXIWbjrUy`IxO&|Lurj%&%MX6F)xM8lCmzm%^g| zZ@wODPWfXVbaYFOsQ#Ir<R6bZ3mz@r`sB>b?H|6r|0ito|5Ui4x%I;@3vUPh@T=c> zHD7M2uFlzqXO=FGh&Y_5R#dxS!DOEWN|&damaY{^TbA<wXQD`YdheH;-}_tT8nP3g zz1V%}R=w^QwFzp9>Jv^s-SYA2vKh;FZYmDkwWTawt*y}YTcvn+wzP5Jl={!&dU6NP z&-=OEqW)vY?RL3qh8_Ka*KZ1aJ|OaS<4Ny||92EKR}}M9ZFY22zv<w*ko|fd<5^Gb zs=^;$7A$`05C3GUuZ{EKE`C~hduK@2<q6r@?$z$$u5;ebd~|1N&{tp1RL8Q-F?OHz z)ZF#gou2hQYt65#6N`6L{QO(s%Y0eLT)kg#T7mO<>F3-AMumdQ_4aLl)KdoDk?*sB z>BhB3>=~cVh6l`;RdDHQPhpJ9(yswc_b%Q|cUzY|f19+O)U~#*3#*sb_V549^DIqm zL!3yL_rg{?d;8poXWLH4isz{tto!7j9%;tKCtEFbxj0$jEIaGml%|3?6)$hG#BzQ+ z@>*Z|?{h)!>F1`$KHU-()%C50y{f9+MtcQoSi+q9S@R|LH%)%Ow_)i~%QfPw^8Y=W z`hDXD17SJo!<WDCE_-dO<f)xl@<^!e&!_lHR{231FI22KVuZP;pZE6uGo}2Xi0R+# zz;Ek6r?1<3qWtTk@&e;a$L2|2d~)IUy3_NY-?JBqdj9%hUcbi4b;~Y(<c^4#V|e7w z#tY2#3uLr@f9Bp?@$GDWQpmT3lb^LT`5867IKiBo8)2HY=EF<jP3!;keBUBf6gFd) z&iAX6r#U>ib-{XzXsqquS*NW$MBNk5K3sQfgM8iJ_K3Ks`x%9)zN;&*A3v_Y)A@3Z zZoplu^);&)c3&3ffBe#XAJ?TlTbd{EOnCjqY29At)k`hx<@vOurKG>k3x8K(DykFv zZmn~4wKd!JH<R8T=}VE>rT*irWcRv%E-8oo&+?epy!^2%>bam+Q(e-ltR4C_fB$?q z&fxMgcyn^a%Mbhog->`qK09&GO=<dekMT)W)rP2P$J`8l9y|T8WPRL{1=FW2xcu^- z(Tav0XLsjw{=T?+_no^pA2VrgQ19Q<vT^nE0^5Mob5?aGym^=@XeZcjcXi6i_cHZ- z=lA}UJ)?iF!9;({1y8jXH#P{qwXKcdJ(arh*E#jLT0PT#E*mYKGnbw66>nMX+E{vj z?g?#f*>xG#n~!JCH=e9)@$FmijJZ4QE<QRM#5g%qY}dB_Q+8WwMKAvQwQ+et;tv)N z&=}9m1<9Yow(#>Ln67BpKJ##X+r&4SD;zAhKC2R7m7REIbLDf#mqqtw{d69SexBl) zdgb}f$?XNNZfIZEjk3`YJzV!?>a&dPci+GIZ*|N1;>7n%nRPFU)P4P<!}+bYzn${; z#oY+r){})ka#c&K4nzm=++DGx^hW*r#V`1nAGuVy>{idMOOsjNzpth9;%oDx`JUe{ zpMROXHv7=rw3+VDcUx6mxNgdzcq1gYOyk9pmznZ1PS^YHuKw*fNoieLTQK*A5Y;&< zDKleV=r+Bw-~aO8@e4QazUORcHs-Uvm2#h_O@Cj%a{j-PtJ(9{w@vzE9Tzd9Sn0#t z((`9C{(d^SEyns+72Cy`@wGf$nLHr#PkKAPzq3zx^}-!nI(7yh-)LeLW4pL$ZrtM| zrb{dZl-mFK-rksb{A@=4`wwiBBo|34UKV?vUhwVjbwjI~z0;5L9;*AY#q!qMs$1`V ztUG77Gw{M}SuU&0yd|OQ?!2`%zuR>+V8)ySH;V0@3m5+KiDUHrJk2rk`S15XC92rX zPRM&CMm*c6nDr}Qn|J#Cqo7^w+@G(TN7<C{y~vha@@;nbFOD@fdt?8;c=v`iGfzUq zeb%g)boE`|-%Jnt#kPjc)cVew-|l-iAD(#4W#`TEdqwuQKF{?#vLnA^)}oxX>=rdI zj_)XWc%oFYI#1#C(q;DBtmj_RDXWf%4&Ns&n>$zGEU#|Kr7I;lcY6L+%eS0Z`_8}e z&Czs&`j0&Aizm)_Yks$P?{@p1IT@ebHy-Bg2@d<+`F-Bu+w1H2i;XAm5M&9QUz_lC zzPjZj+v=WOuk7ESSg*HYiV5GA3!a~q?!J|sy*=^6KK>-r6*KRv#nrKS9}aiyP`ZDy zb#J*{Pj2=50`<uoW8PN%I`hO}-v5*Pk6t~kzHWbM--)MkKhm34^Z0*u+a2Dw+q&w) z)q@MO&+>s*&~$vW*|qJx+x2Z%S&!((*t8$*e!jkPZt*19U*>to-`$pXiraa6p?llx z&s(IQFIoNj%Esx1ul|M~{(3&2$MHt{JMIUU?e`j=@ci^vHX}d!@0F8F3>PezyiC=8 z3um)@4NI==SN6{<{vGSQ9)I9Z>*kW}lP8pAE_}E9dGd|==k1R-KEH5mrgiOwg^@9b zZhVNe`MlWv*omi?cT9Y;C{I0oPvx%FwpLT~-%n|p$DWx7$`IbikNLjX|2Zym<@NvR zF*76%zqwc*IAbQ0V%NTfYj^zIcl^TDtM6kgj&_uUi=X(iv{h23^0((4n_riB3%9y+ zWX|3iE;h0AvQGH!!gV!T%hs;t&E1(Dv37z9%a#kCmlypySN-ii&&9C)3(n8A*46zo zJ!9@<0n?D&^Kbc+{@;}^JU;#K`(1i^`j7q|)_<UW|JU<~m>EZVU3^zvS?PQK)#~+) zs_$|a>CQ=LGco_e=2@&%e}K*Y%SMA!d*iP3<Y%RB-6?$Bp<_{cg7CYFC(kcf@3@&g zcX#r|#>vOyj!wS+d%DEVDmHT|Q%OIOrE>i1yU*R6W_c%B^_gYV3&`|Eto8Q=@2^=; ze7&x|Z1tl%I&O8}_KK=cR$SY-DUbio=fF3+o-%HEeyTC?<ChhUmdbOi_`Dd^j_E!4 zIsdQp%dGmyvc>m*EI4(+>HP~Y$#rQDE!Q8hnZEe&wws{owv-Qz?icpfrr-U%oxPRm z*||OXx?iSS%;e#GDSM~M+V0P1iCZE6s)fShciOr5M(zs^Iul>}Y<<CxUiswAm&bP9 zQV!XBSoHFjx?=AgZ%zKj_r0<YfBeo9R5JRySNrR;y|3qZ>nt6pfAnXh&z>(jT$g#; zlvBgM-m{iFHZR()<J-4$DY>6Be74Iy)Z2dOl1*IYH|>g#FZUm~^M*yLbxuv+xw5P6 zazCEuvj-iu@msk**GEc#%PQ0A*SlTv%-`z-cGlEBPP^(8)g7*v_+$BfR>iJ^xzz>l zllM3AMt=*5z2MR!__ny>@z3>-PQL$hf5tqyy?NPluQz4QC@KH8l<i>X)vT*!oYDq7 z0^kyIWq{yY=Sz3j{W|}8smcC^kKywU-|=KSEch}l@BHHjwf&Eu{k9j3+Obda;Ub0| ztv5aQd^;2Vp?Uq^WFKF%duN(*H~rtezS_XfPdYzue)siEPOqmkpLqm>W&&KJ^YzW_ zzDaKR{%v6#XsYzh&-sa&H9Y2Q{}Rl&R-La5_%_r2!^-;(<?k14jI-F{pSshpH||ij zf4!uC?SFnl(|a>6v#kF2e&4)>pAK?4U&#rX6;-wM2E)PHC$~WP&atFq(f@0^4ZbwC zD~1^!NqhD7y5Zk*iY(?CReq+{vZ{LxU%Zh#vX<Yraqo7!j593aYnO?ApXqJ>d$xX^ zu>G%J_D2u>5s}&&xJ*o4Dxhhe(bm;_<rmqWDoW%$`lxr-wrOibMM^H2JYi?s_|(|G zf7`ir1u|8(D-^RXxAP}He5HCv!>gP7&GH<EDL-;=)~*)$a=tCr;^c)bDf_;ixEdD` zcjU<p)idW!*Uiwra>U?nR-3i%+E)VG98N21icH^l#*}xK9G{JfZ{w_cTi<`%z45Pj z-PSzAa3!naC$c^JKbUwGo9E5A`00vD`zccfTW0CP|I6!Tf4{FeA~`K>eW9N9v_P)b zbsMFVvXW*Te8>B-Q1|aMD{t@OOJ4B|nRyutCofyDcRBxT`;V1R%yXRfwm4snt7R-+ ze*buHN@b3T47-1xP8QS5+3$WzSnaAZW%O5@*yw&odgiAkMt7eUz7RD1GW)fT&ROrk zc$UmOjTcK212-Qi&AZw6&-&fb2Y>mKZa=T*+<ETT^_+Q?|805xzldHP*Wvo)^TRVG zvDM!^#oubpjk@H$VZpSl*fjg6Uzf%HJ6lr5pK$zO^@g_x?(X>7=%4)gT=P@Wt08R; zv*oUG^*IZ7?5gT&oY#9|`*ZE%p&o@MXLNiL^9rTFbMnU)ul42nY4+yd*Zr-z_TODg z^6p8o9eMgBO#kRl%O2a$n**-AE-Uvwy?k%Iz-;;dI^X^t|Ie`3{QkyOtqCHnH#2qO z?D~atzq~$mU|Q^sw}<W9cia8*zOn6lU%;1J#Xk$~lx<R3we6Z^LXW%n#a}CVd#c1l zAIhyy-`7<7F1fCdt=M}G*G^Eu(Y84KzwV8nOYa|=xBuhzi`Q<4zch-UJ9mqTS<l1y zHPWm%>tprjMwci2KL1~<?Ekg<Zr|V4KIBio`}e!3*tz+-*B`R!ZM>QFg(vUe-T6O4 zZN7Z2=WdoRYbl=UelTy*l#cEDuI+r6)qiZUxz(ws_tb3#etzp)#l7)HV}aFX?#nac z7qs4c6L7)P`Qpw}>u-Or-9NZZ|BuwI-@gidr+7*Hd$`^3@4e`+Ut>?ppIA4ydTHpt z`ANsc|1m!a-?(V@*)JQ*!>_JTSiN}ha{2O_Kim}$KK~bFGk;$e=4Tx9wlR0Ax&Qy2 zPMlTs@7s<zxz{Ge>4+H^)`sr7lkPA}n#(Fv;>wLrjlbm%Ej$0G^hvwfgQ$SZd-QnY z55Aae?~u81UxNJ8NB2K+@7G%US$}QkjMW-1UmnhH%_}demAJJ{yxitj>xHLreN_g} zEzFx9E{J~GareWntM^W5oS!JwJn#I|zmj1q{{Ok8v+S9A%J1pQ2D3nIAc>IuKd1TE z$;DciJ&w}!@qPGd`#-MB?)O$@zuC^U>-Nv={mpmxf871z#vb15U9)`B{+;nWBV*Sh zw76rv^mdz1EZbyvxJRx1>2l!<XUdnyT!+5jRMGp+TN{1xUR-T%vq}HqCvP;|)YmtF z*9;42yx#NtLGFzY6OX@+6S{i*%R}>}3+h?B!}YJ%^k!rq-lkqBxI6WJ?elH25!_6f zbN%=JlzQfO_l9Ee+U5!GzS-URdSm*9tJVRX$^3IZKK<rmbke7As!ij}?GrO6Py3m0 zKdofT^k%nksp7oFNB+F}VL9PhyYT4=Z4OUv8y0;3d+BQ2e~aSTPdfv9{(RXz!?te6 zy4O{y%}MXy|6?x6xw%WNm#g)axqSUsOP!c~44eL~h<vb3ZU=X*^mgUzVe{l7B5EHi zmi@Q<V$)a{yZG|$tMPG}z8zN#pJ$#IJn{cn`nm_FepF6))-Gn1$#G@EmVLM1IYy`d zb-r8@^5OQAh2e&uzVrvonZN$$F21Yz|Bl{wy02UAsTi@iUMxr=&0pr|lhyhKPBUM- zth4Qx-CoBqH}-DOgjU4|ZYtGBOH7*{GHur1dolK1?9aR$sau`D`RYWX+ic{PO1;{* zWlMwi;^z_q(?JV&6$5Io-(}}>+VZ?m_srZ%`S5-JLv`lZ2Y)tQw3vCe++US#|L?3n zQ56&2?6lm#Tv=Lt{RykN3_I<%oIG}8TJ84JZjtvMCtdGjK3`xugXz7G(Pf7(CA<$h z+v{cd@BYhtbE`<$j4$VS){I&5$5)<imxNk+f<M=#y=eRMu>0Ig)cSV*I-H;M<)nO@ z@Tn_JT>|g!?G(RV|M2?7ooojy3S&bI?%WKPsDJtL(;}TGyC%GU=eoaSyLO^}^omBy zi(RJvJ=!-M@77+pKG}dFFG1Vx>p}g8=Jvni7aHFe)tf6d@3L{2<g#VPcBP`~dV6|< z930OxiIiLtSfLqLJXiMmm2%skzq&2{i`U15E6ka-Bki;LyaN{w_pgiGztidKT>k$L zq&NBLH^$iS`rWo<_g?)w<uNb5Srp&(x_)e>`KOq7(!aJn@SgwUcg3TL`y1c&-LtS= z`@Tk%Z+@le8+-m8TnTCm7EEqan6v2X&H3x9?rh)Gq+j>-{Dz93NwJ5oR4tiZ|5@F> z|JyscHL6)}zdoE_Bi@?nr&eqmczSM}%{QxQY0D4SeVSutq8nax^p42y1D??{W*_=6 z^>PNwE~}~!7v|1Cq;B`&^oy5o;tMmcL{+@HaDC&JGY_XkHa7W5HNE_P@5sjc|KC4d z|4u7+QINvXVlKzTozJ|l7;IfT|F`Ow`-Sow+OGXPw3OT8`||%>#_so@7OlKKbLB(s zif^auAF!CMd*bHb%QQV!-P?OBd-yu>EStZ7x7WzT*SvY3==@)7@xIlCTg6l7|6J+a z{_)<;>rd^N%{DW!&NX4lGTUC2Ua~vP$}E>Ryzn$XU*cMgb3X0szP&8J=diNx7;B{T z73=sJGaatoFxes7f9G>#&fOi$@0gbO%6($s_TF6a_eQXW$WQZGsv0krm`=3sV*Xxd zFz1Zh+IMAdYdaXdxVa@Nza6*u{=8l#_P_Y6qQAnE`VKg6uNUIK_v_?^w{laM-u5hg z+o*olDe{TB{=V+z_kW3bY+JBk@-&s{?>VNs&9(g}_smb`@KzxfRh_s!4VV9)w?Fnq zYKpr@i_pjB-S3ayTz$Nt?uW~+-LZkr(nX1xeE$1?t_`^2xh-O)p}U7#;Okk>&2wC$ z{q?W0WcIE;u%}At4d+VMtM&Ub6RLOoc^$PNEPVDXY5vx^piOs*EdrAmEv8$8X^j^x z0!|)m3l<1FaVSbQH2HBTwxlp{S&d5K4+Pa0!U~{}Gd5nxQY+LV;KY%c=BMpw&*H?P z*kWRwK4pPDCxqFau@DrtXU|Vww8>a+yP|*-hvJf(7P{M+FK*ac&jnVb?7!-Nw@yjw z-2P^e^x0#KA&c&aX6ab1Edi<C`Qy6A?mNlcu?yFH2~LOyMb0IjIn!>dYt7HN?5A@g zH!#n?0i?0_Ts>p%i^|!hpImq5PPnZMcH-hiyH3`}`wM7F)~jtl?#Q9oGQrLHto&z2 zYs1{FTjQD3=P0%aI7#&`4|r!@?jc+v`gPrv`4iuRe3!hy<Y(cMHIr^_J9PB^^xKj< z@AA9t2l>XFN%g`1fV}<Tx|hA0)&;Elp1(jwr`(=Hu|=S0Z$Q}2S8Vk~OM95UZj^s2 zb|`sjEy$N^bT6jl|7X#BS1SLNYuCBQQ+*@f{(icRzvMK?#IFljs)bVXe@woWe)rG+ Z1<z_U4-`xNVPIfj@O1TaS?83{1OS^n$>{(9 diff --git a/packages/create-llama/templates/types/simple/nextjs/tailwind.config.ts b/packages/create-llama/templates/types/simple/nextjs/tailwind.config.ts deleted file mode 100644 index aa5580aff..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/tailwind.config.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { Config } from "tailwindcss"; -import { fontFamily } from "tailwindcss/defaultTheme"; - -const config: Config = { - darkMode: ["class"], - content: ["app/**/*.{ts,tsx}", "components/**/*.{ts,tsx}"], - theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, - }, - extend: { - colors: { - border: "hsl(var(--border))", - input: "hsl(var(--input))", - ring: "hsl(var(--ring))", - background: "hsl(var(--background))", - foreground: "hsl(var(--foreground))", - primary: { - DEFAULT: "hsl(var(--primary))", - foreground: "hsl(var(--primary-foreground))", - }, - secondary: { - DEFAULT: "hsl(var(--secondary))", - foreground: "hsl(var(--secondary-foreground))", - }, - destructive: { - DEFAULT: "hsl(var(--destructive) / <alpha-value>)", - foreground: "hsl(var(--destructive-foreground) / <alpha-value>)", - }, - muted: { - DEFAULT: "hsl(var(--muted))", - foreground: "hsl(var(--muted-foreground))", - }, - accent: { - DEFAULT: "hsl(var(--accent))", - foreground: "hsl(var(--accent-foreground))", - }, - popover: { - DEFAULT: "hsl(var(--popover))", - foreground: "hsl(var(--popover-foreground))", - }, - card: { - DEFAULT: "hsl(var(--card))", - foreground: "hsl(var(--card-foreground))", - }, - }, - borderRadius: { - xl: `calc(var(--radius) + 4px)`, - lg: `var(--radius)`, - md: `calc(var(--radius) - 2px)`, - sm: "calc(var(--radius) - 4px)", - }, - fontFamily: { - sans: ["var(--font-sans)", ...fontFamily.sans], - }, - keyframes: { - "accordion-down": { - from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: "0" }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, - }, - plugins: [], -}; -export default config; diff --git a/packages/create-llama/templates/types/simple/nextjs/tsconfig.json b/packages/create-llama/templates/types/simple/nextjs/tsconfig.json deleted file mode 100644 index e779aa667..000000000 --- a/packages/create-llama/templates/types/simple/nextjs/tsconfig.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": [ - "./*" - ] - }, - "forceConsistentCasingInFileNames": true, - }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - ".next/types/**/*.ts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file -- GitLab