aboutsummaryrefslogtreecommitdiff
path: root/apps/web
diff options
context:
space:
mode:
authorDhravya <[email protected]>2024-05-25 18:41:26 -0500
committerDhravya <[email protected]>2024-05-25 18:41:26 -0500
commit075f45986fd4d198292226e64afb71b3515576b4 (patch)
tree5c728356cd0310f1c1c012fd6618c72a836c314b /apps/web
parentadded social material (diff)
downloadsupermemory-075f45986fd4d198292226e64afb71b3515576b4.tar.xz
supermemory-075f45986fd4d198292226e64afb71b3515576b4.zip
refactored UI, with shared components and UI, better rules and million lint
Diffstat (limited to 'apps/web')
-rw-r--r--apps/web/.eslintrc.js9
-rw-r--r--apps/web/.eslintrc.json7
-rw-r--r--apps/web/.gitignore41
-rw-r--r--apps/web/README.md62
-rw-r--r--apps/web/app/(auth)/auth-buttons.tsx15
-rw-r--r--apps/web/app/(auth)/signin/page.tsx8
-rw-r--r--apps/web/app/(landing)/Cta.tsx44
-rw-r--r--apps/web/app/(landing)/EmailInput.tsx78
-rw-r--r--apps/web/app/(landing)/FeatureContent.tsx59
-rw-r--r--apps/web/app/(landing)/Features.tsx251
-rw-r--r--apps/web/app/(landing)/Hero.tsx74
-rw-r--r--apps/web/app/(landing)/Navbar.tsx37
-rw-r--r--apps/web/app/(landing)/RotatingIcons.tsx97
-rw-r--r--apps/web/app/(landing)/footer.tsx38
-rw-r--r--apps/web/app/(landing)/formSubmitAction.ts48
-rw-r--r--apps/web/app/(landing)/linkArrow.tsx34
-rw-r--r--apps/web/app/(landing)/page.tsx58
-rw-r--r--apps/web/app/api/[...nextauth]/route.ts2
-rw-r--r--apps/web/app/api/ensureAuth.ts33
-rw-r--r--apps/web/app/api/hello/route.ts22
-rw-r--r--apps/web/app/api/upload_image/route.ts56
-rw-r--r--apps/web/app/globals.css50
-rw-r--r--apps/web/app/helpers/lib/get-theme-button.tsx11
-rw-r--r--apps/web/app/helpers/lib/handle-errors.ts25
-rw-r--r--apps/web/app/helpers/server/auth.ts (renamed from apps/web/src/server/auth.ts)12
-rw-r--r--apps/web/app/helpers/server/db/index.ts (renamed from apps/web/src/server/db/index.ts)0
-rw-r--r--apps/web/app/helpers/server/db/schema.ts (renamed from apps/web/src/server/db/schema.ts)2
-rw-r--r--apps/web/app/layout.tsx71
-rw-r--r--apps/web/app/page-ref.tsx116
-rw-r--r--apps/web/app/upload/file-uploader.tsx315
-rw-r--r--apps/web/app/upload/page.tsx99
-rw-r--r--apps/web/app/upload/uploaded-files-card.tsx93
-rw-r--r--apps/web/cf-env.d.ts7
-rw-r--r--apps/web/components.json16
-rw-r--r--apps/web/db/wipe.sql7
-rw-r--r--apps/web/drizzle.config.ts21
-rw-r--r--apps/web/env.d.ts25
-rw-r--r--apps/web/migrations/000_setup.sql (renamed from apps/web/db/prepare.sql)1
-rw-r--r--apps/web/migrations/meta/0000_snapshot.json492
-rw-r--r--apps/web/migrations/meta/_journal.json13
-rw-r--r--apps/web/next-env.d.ts5
-rw-r--r--apps/web/next.config.mjs27
-rw-r--r--apps/web/package.json64
-rw-r--r--apps/web/postcss.config.js7
-rw-r--r--apps/web/public/android-chrome-192x192.pngbin38955 -> 0 bytes
-rw-r--r--apps/web/public/android-chrome-512x512.pngbin208878 -> 0 bytes
-rw-r--r--apps/web/public/apple-touch-icon.pngbin34899 -> 0 bytes
-rw-r--r--apps/web/public/favicon-16x16.pngbin689 -> 0 bytes
-rw-r--r--apps/web/public/favicon-32x32.pngbin1916 -> 0 bytes
-rw-r--r--apps/web/public/favicon.icobin15406 -> 15406 bytes
-rw-r--r--apps/web/public/icons/android-chrome-192x192.pngbin0 -> 10386 bytes
-rw-r--r--apps/web/public/icons/android-chrome-512x512.pngbin0 -> 38300 bytes
-rw-r--r--apps/web/public/icons/apple-touch-icon.pngbin0 -> 9388 bytes
-rw-r--r--apps/web/public/icons/black_without_bg.pngbin89265 -> 0 bytes
-rw-r--r--apps/web/public/icons/brain-icon.pngbin3131 -> 0 bytes
-rw-r--r--apps/web/public/icons/favicon-16x16.pngbin0 -> 455 bytes
-rw-r--r--apps/web/public/icons/favicon-32x32.pngbin0 -> 987 bytes
-rw-r--r--apps/web/public/icons/logo_bw_without_bg.pngbin41595 -> 0 bytes
-rw-r--r--apps/web/public/icons/logo_without_bg.pngbin218280 -> 0 bytes
-rw-r--r--apps/web/public/icons/white_without_bg.pngbin89822 -> 0 bytes
-rw-r--r--apps/web/public/icons/wordmark.pngbin144083 -> 0 bytes
-rw-r--r--apps/web/public/images/carousel-illustration-01.pngbin0 -> 107760 bytes
-rw-r--r--apps/web/public/images/feature-illustration.pngbin0 -> 46075 bytes
-rw-r--r--apps/web/public/landing-bg-1.svg12
-rw-r--r--apps/web/public/landing-bg-2.svg12
-rw-r--r--apps/web/public/landing-ui-2.pngbin0 -> 13770 bytes
-rw-r--r--apps/web/public/landing-ui.svg74
-rw-r--r--apps/web/public/logo.pngbin279317 -> 0 bytes
-rw-r--r--apps/web/public/logo.svg4
-rw-r--r--apps/web/public/note.svg5
-rw-r--r--apps/web/public/og-image.pngbin132192 -> 1938412 bytes
-rw-r--r--apps/web/public/site.webmanifest8
-rw-r--r--apps/web/public/twitter.svg1
-rw-r--r--apps/web/public/web.svg3
-rw-r--r--apps/web/src/actions/db.ts676
-rw-r--r--apps/web/src/app/MessagePoster.tsx24
-rw-r--r--apps/web/src/app/api/[...nextauth]/route.ts2
-rw-r--r--apps/web/src/app/api/addTweetsToDb/route.ts91
-rw-r--r--apps/web/src/app/api/ask/route.ts78
-rw-r--r--apps/web/src/app/api/chat/route.ts109
-rw-r--r--apps/web/src/app/api/getCount/route.ts80
-rw-r--r--apps/web/src/app/api/me/route.ts48
-rw-r--r--apps/web/src/app/api/query/route.ts88
-rw-r--r--apps/web/src/app/api/spaces/route.ts72
-rw-r--r--apps/web/src/app/api/store/route.ts165
-rw-r--r--apps/web/src/app/api/vectorizeTweets/route.ts63
-rw-r--r--apps/web/src/app/content.tsx18
-rw-r--r--apps/web/src/app/globals.css140
-rw-r--r--apps/web/src/app/layout.tsx65
-rw-r--r--apps/web/src/app/not-found.tsx58
-rw-r--r--apps/web/src/app/page.tsx97
-rw-r--r--apps/web/src/app/privacy/page.tsx15
-rw-r--r--apps/web/src/app/privacy/privacy.ts49
-rw-r--r--apps/web/src/assets/Bin.tsx104
-rw-r--r--apps/web/src/assets/Memories.tsx69
-rw-r--r--apps/web/src/assets/MemoryWithImages.tsx531
-rw-r--r--apps/web/src/assets/Note.tsx0
-rw-r--r--apps/web/src/components/ChatMessage.tsx128
-rw-r--r--apps/web/src/components/Main-2.tsx709
-rw-r--r--apps/web/src/components/Main.tsx533
-rw-r--r--apps/web/src/components/MemoryDrawer.tsx51
-rw-r--r--apps/web/src/components/ProfileDrawer.tsx40
-rw-r--r--apps/web/src/components/SearchResults.tsx40
-rw-r--r--apps/web/src/components/Sidebar/AddMemoryDialog.tsx480
-rw-r--r--apps/web/src/components/Sidebar/DeleteConfirmation.tsx47
-rw-r--r--apps/web/src/components/Sidebar/EditNoteDialog.tsx155
-rw-r--r--apps/web/src/components/Sidebar/ExpandedSpace.tsx287
-rw-r--r--apps/web/src/components/Sidebar/FilterCombobox.tsx303
-rw-r--r--apps/web/src/components/Sidebar/MemoriesBar.tsx709
-rw-r--r--apps/web/src/components/Sidebar/SettingsTab.tsx99
-rw-r--r--apps/web/src/components/Sidebar/index.tsx172
-rw-r--r--apps/web/src/components/WordMark.tsx12
-rw-r--r--apps/web/src/components/dev/SessionProviderWrapper.tsx12
-rw-r--r--apps/web/src/components/dev/tailwindindicator.tsx16
-rw-r--r--apps/web/src/components/ui/avatar.tsx50
-rw-r--r--apps/web/src/components/ui/badge.tsx36
-rw-r--r--apps/web/src/components/ui/button.tsx56
-rw-r--r--apps/web/src/components/ui/card.tsx86
-rw-r--r--apps/web/src/components/ui/command.tsx161
-rw-r--r--apps/web/src/components/ui/dialog.tsx119
-rw-r--r--apps/web/src/components/ui/drawer.tsx124
-rw-r--r--apps/web/src/components/ui/dropdown-menu.tsx200
-rw-r--r--apps/web/src/components/ui/input.tsx53
-rw-r--r--apps/web/src/components/ui/label.tsx26
-rw-r--r--apps/web/src/components/ui/popover.tsx40
-rw-r--r--apps/web/src/components/ui/textarea.tsx57
-rw-r--r--apps/web/src/contexts/MemoryContext.tsx241
-rw-r--r--apps/web/src/env.js59
-rw-r--r--apps/web/src/hooks/useDebounce.ts27
-rw-r--r--apps/web/src/hooks/useTouchHold.ts27
-rw-r--r--apps/web/src/hooks/useViewport.ts34
-rw-r--r--apps/web/src/lib/icons.tsx34
-rw-r--r--apps/web/src/lib/searchParams.ts12
-rw-r--r--apps/web/src/lib/utils.ts111
-rw-r--r--apps/web/src/server/db/test.ts6
-rw-r--r--apps/web/src/server/helpers.ts39
-rw-r--r--apps/web/tailwind.config.ts100
-rw-r--r--apps/web/tsconfig.json29
-rw-r--r--apps/web/types/memory.tsx16
-rw-r--r--apps/web/wrangler.toml27
140 files changed, 2469 insertions, 8407 deletions
diff --git a/apps/web/.eslintrc.js b/apps/web/.eslintrc.js
new file mode 100644
index 00000000..7d644a4c
--- /dev/null
+++ b/apps/web/.eslintrc.js
@@ -0,0 +1,9 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@repo/eslint-config/next.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: true,
+ },
+};
diff --git a/apps/web/.eslintrc.json b/apps/web/.eslintrc.json
deleted file mode 100644
index abd7bea7..00000000
--- a/apps/web/.eslintrc.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": [
- "next/core-web-vitals",
- "plugin:eslint-plugin-next-on-pages/recommended"
- ],
- "plugins": ["eslint-plugin-next-on-pages"]
-}
diff --git a/apps/web/.gitignore b/apps/web/.gitignore
deleted file mode 100644
index b7862632..00000000
--- a/apps/web/.gitignore
+++ /dev/null
@@ -1,41 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-.next/
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-.yarn/install-state.gz
-
-# 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
-
-# wrangler files
-.wrangler
-.dev.vars
diff --git a/apps/web/README.md b/apps/web/README.md
index 5164b159..3d7b63af 100644
--- a/apps/web/README.md
+++ b/apps/web/README.md
@@ -1,70 +1,28 @@
-This is a [Next.js](https://nextjs.org/) project bootstrapped with [`c3`](https://developers.cloudflare.com/pages/get-started/c3).
-
## Getting Started
First, run the development server:
```bash
-npm run dev
-# or
yarn dev
-# or
-pnpm dev
-# or
-bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-## Cloudflare integration
-
-Besides the `dev` script mentioned above `c3` has added a few extra scripts that allow you to integrate the application with the [Cloudflare Pages](https://pages.cloudflare.com/) environment, these are:
-
-- `pages:build` to build the application for Pages using the [`@cloudflare/next-on-pages`](https://github.com/cloudflare/next-on-pages) CLI
-- `preview` to locally preview your Pages application using the [Wrangler](https://developers.cloudflare.com/workers/wrangler/) CLI
-- `deploy` to deploy your Pages application using the [Wrangler](https://developers.cloudflare.com/workers/wrangler/) CLI
-
-> **Note:** while the `dev` script is optimal for local development you should preview your Pages application as well (periodically or before deployments) in order to make sure that it can properly work in the Pages environment (for more details see the [`@cloudflare/next-on-pages` recommended workflow](https://github.com/cloudflare/next-on-pages/blob/05b6256/internal-packages/next-dev/README.md#recommended-workflow))
-
-### Bindings
-
-Cloudflare [Bindings](https://developers.cloudflare.com/pages/functions/bindings/) are what allows you to interact with resources available in the Cloudflare Platform.
-
-You can use bindings during development, when previewing locally your application and of course in the deployed application:
-
-- To use bindings in dev mode you need to define them in the `next.config.js` file under `setupDevBindings`, this mode uses the `next-dev` `@cloudflare/next-on-pages` submodule. For more details see its [documentation](https://github.com/cloudflare/next-on-pages/blob/05b6256/internal-packages/next-dev/README.md).
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-- To use bindings in the preview mode you need to add them to the `pages:preview` script accordingly to the `wrangler pages dev` command. For more details see its [documentation](https://developers.cloudflare.com/workers/wrangler/commands/#dev-1) or the [Pages Bindings documentation](https://developers.cloudflare.com/pages/functions/bindings/).
+To create [API routes](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) add an `api/` directory to the `app/` directory with a `route.ts` file. For individual endpoints, create a subfolder in the `api` directory, like `api/hello/route.ts` would map to [http://localhost:3000/api/hello](http://localhost:3000/api/hello).
-- To use bindings in the deployed application you will need to configure them in the Cloudflare [dashboard](https://dash.cloudflare.com/). For more details see the [Pages Bindings documentation](https://developers.cloudflare.com/pages/functions/bindings/).
+## Learn More
-#### KV Example
+To learn more about Next.js, take a look at the following resources:
-`c3` has added for you an example showing how you can use a KV binding.
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn/foundations/about-nextjs) - an interactive Next.js tutorial.
-In order to enable the example:
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-- Search for javascript/typescript lines containing the following comment:
- ```ts
- // KV Example:
- ```
- and uncomment the commented lines below it.
-- Do the same in the `wrangler.toml` file, where
- the comment is:
- ```
- # KV Example:
- ```
-- If you're using TypeScript run the `build-cf-types` script to update the `env.d.ts` file:
- ```bash
- npm run build-cf-types
- # or
- yarn build-cf-types
- # or
- pnpm build-cf-types
- # or
- bun build-cf-types
- ```
+## Deploy on Vercel
-After doing this you can run the `dev` or `preview` script and visit the `/api/hello` route to see the example in action.
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js.
-Finally, if you also want to see the example work in the deployed application make sure to add a `MY_KV_NAMESPACE` binding to your Pages application in its [dashboard kv bindings settings section](https://dash.cloudflare.com/?to=/:account/pages/view/:pages-project/settings/functions#kv_namespace_bindings_section). After having configured it make sure to re-deploy your application.
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/apps/web/app/(auth)/auth-buttons.tsx b/apps/web/app/(auth)/auth-buttons.tsx
new file mode 100644
index 00000000..9da1f5a5
--- /dev/null
+++ b/apps/web/app/(auth)/auth-buttons.tsx
@@ -0,0 +1,15 @@
+"use client";
+
+import { Button } from "@repo/ui/src/button";
+import React from "react";
+import { signIn } from "../helpers/server/auth";
+
+function SignIn() {
+ return (
+ <Button className="mt-4" onClick={async () => await signIn("google")}>
+ Login with Google
+ </Button>
+ );
+}
+
+export default SignIn;
diff --git a/apps/web/app/(auth)/signin/page.tsx b/apps/web/app/(auth)/signin/page.tsx
new file mode 100644
index 00000000..44d2b4f4
--- /dev/null
+++ b/apps/web/app/(auth)/signin/page.tsx
@@ -0,0 +1,8 @@
+import { getThemeToggler } from "../../helpers/lib/get-theme-button";
+
+async function Signin() {
+ const SetThemeButton = getThemeToggler();
+ return <SetThemeButton />;
+}
+
+export default Signin;
diff --git a/apps/web/app/(landing)/Cta.tsx b/apps/web/app/(landing)/Cta.tsx
new file mode 100644
index 00000000..be99bf99
--- /dev/null
+++ b/apps/web/app/(landing)/Cta.tsx
@@ -0,0 +1,44 @@
+import Image from "next/image";
+import React from "react";
+import EmailInput from "./EmailInput";
+
+function Cta() {
+ return (
+ <section
+ id="try"
+ className="relative mb-44 mt-60 flex w-full flex-col items-center justify-center gap-8"
+ >
+ <div className="absolute left-0 z-[-1] h-full w-full">
+ {/* a blue gradient line that's slightly tilted with blur (a lotof blur)*/}
+ <div className="overflow-hidden">
+ <div
+ className="absolute left-[20%] top-[-165%] h-32 w-full overflow-hidden bg-[#369DFD] bg-opacity-70 blur-[337.4px]"
+ style={{ transform: "rotate(-30deg)" }}
+ />
+ </div>
+ </div>
+ <Image
+ src="/landing-ui-2.png"
+ alt="Landing page background"
+ width={1512}
+ height={1405}
+ priority
+ draggable="false"
+ className="absolute z-[-2] hidden select-none rounded-3xl bg-black md:block lg:w-[80%]"
+ />
+ <h1 className="z-20 mt-4 text-center text-5xl font-medium tracking-tight text-white">
+ Your bookmarks are collecting dust.
+ </h1>
+ <div className="text-center text-sm text-zinc-500">
+ Launching July 1st, 2024
+ </div>
+ <p className="text-soft-foreground-text z-20 text-center">
+ Time to change that. <br /> Sign up for the waitlist and be the first to
+ try Supermemory
+ </p>
+ <EmailInput />
+ </section>
+ );
+}
+
+export default Cta;
diff --git a/apps/web/app/(landing)/EmailInput.tsx b/apps/web/app/(landing)/EmailInput.tsx
new file mode 100644
index 00000000..7e7ee5e7
--- /dev/null
+++ b/apps/web/app/(landing)/EmailInput.tsx
@@ -0,0 +1,78 @@
+"use client";
+
+import { FormEvent, useState } from "react";
+import formSubmitAction from "./formSubmitAction";
+import { useToast } from "@repo/ui/src/shadcn/use-toast";
+
+function EmailInput() {
+ const [email, setEmail] = useState("");
+ const { toast } = useToast();
+
+ return (
+ <form
+ onSubmit={async (e: FormEvent<HTMLFormElement>) => {
+ e.preventDefault();
+
+ const value = await formSubmitAction(email, "token" as string);
+
+ if (value.success) {
+ setEmail("");
+ toast({
+ title: "You are now on the waitlist! 🎉",
+ description:
+ "We will notify you when we launch. Check your inbox and spam folder for a surprise! 🎁",
+ });
+ } else {
+ console.error("email submission failed: ", value.value);
+ toast({
+ variant: "destructive",
+ title: "Uh oh! Something went wrong.",
+ description: `${value.value}`,
+ });
+ }
+ }}
+ className="flex w-full items-center justify-center gap-2"
+ >
+ <div
+ className={`transition-width z-20 rounded-2xl bg-gradient-to-br from-gray-200/70 to-transparent p-[0.7px] duration-300 ease-in-out ${email ? "w-[90%] md:w-[42%]" : "w-full md:w-1/2"}`}
+ >
+ <input
+ type="email"
+ name="email"
+ className={`transition-width flex w-full items-center rounded-2xl bg-[#37485E] px-4 py-2 outline-none duration-300 focus:outline-none`}
+ placeholder="Enter your email"
+ value={email}
+ required
+ onChange={(e) => setEmail(e.target.value)}
+ />
+ </div>
+ <div
+ className="cf-turnstile"
+ data-sitekey="0x4AAAAAAAakohhUeXc99J7E"
+ ></div>
+ {email && (
+ <button
+ type="submit"
+ className="transition-width rounded-xl bg-gray-700 p-2 text-white duration-300"
+ >
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ fill="none"
+ viewBox="0 0 24 24"
+ strokeWidth={1.5}
+ stroke="currentColor"
+ className="h-6 w-6"
+ >
+ <path
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ d="M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5"
+ />
+ </svg>
+ </button>
+ )}
+ </form>
+ );
+}
+
+export default EmailInput;
diff --git a/apps/web/app/(landing)/FeatureContent.tsx b/apps/web/app/(landing)/FeatureContent.tsx
new file mode 100644
index 00000000..7de64d53
--- /dev/null
+++ b/apps/web/app/(landing)/FeatureContent.tsx
@@ -0,0 +1,59 @@
+export const features = [
+ {
+ title: "For Researchers",
+ description:
+ "Add content to collections and use it as a knowledge base for your research, link multiple sources together to get a better understanding of the topic.",
+ svg: <ResearchSvg />,
+ },
+ {
+ title: "For Content writers",
+ description:
+ "Save time and use the writing assistant to generate content based on your own saved collections and sources.",
+ svg: <ContentSvg />,
+ },
+ {
+ title: "For Developers",
+ description:
+ "Talk to documentation websites, code snippets, etc. so you never have to google the same thing a hundred times.",
+ svg: <DeveloperSvg />,
+ },
+];
+
+function ResearchSvg() {
+ return (
+ <svg
+ className="mr-3 shrink-0 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="24"
+ height="24"
+ >
+ <path d="m7.951 14.537 6.296-7.196 1.506 1.318-7.704 8.804-3.756-3.756 1.414-1.414 2.244 2.244Zm11.296-7.196 1.506 1.318-7.704 8.804-1.756-1.756 1.414-1.414.244.244 6.296-7.196Z" />
+ </svg>
+ );
+}
+
+function ContentSvg() {
+ return (
+ <svg
+ className="mr-3 shrink-0 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="24"
+ height="24"
+ >
+ <path d="m16.997 19.056-1.78-.912A13.91 13.91 0 0 0 16.75 11.8c0-2.206-.526-4.38-1.533-6.344l1.78-.912A15.91 15.91 0 0 1 18.75 11.8c0 2.524-.602 5.01-1.753 7.256Zm-3.616-1.701-1.77-.93A9.944 9.944 0 0 0 12.75 11.8c0-1.611-.39-3.199-1.14-4.625l1.771-.93c.9 1.714 1.37 3.62 1.369 5.555 0 1.935-.47 3.841-1.369 5.555Zm-3.626-1.693-1.75-.968c.49-.885.746-1.881.745-2.895a5.97 5.97 0 0 0-.745-2.893l1.75-.968a7.968 7.968 0 0 1 .995 3.861 7.97 7.97 0 0 1-.995 3.863Zm-3.673-1.65-1.664-1.11c.217-.325.333-.709.332-1.103 0-.392-.115-.776-.332-1.102L6.082 9.59c.437.655.67 1.425.668 2.21a3.981 3.981 0 0 1-.668 2.212Z" />
+ </svg>
+ );
+}
+
+function DeveloperSvg() {
+ return (
+ <svg
+ className="mr-3 shrink-0 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="24"
+ height="24"
+ >
+ <path d="m11.293 5.293 1.414 1.414-8 8-1.414-1.414 8-8Zm7-1 1.414 1.414-8 8-1.414-1.414 8-8Zm0 6 1.414 1.414-8 8-1.414-1.414 8-8Z" />
+ </svg>
+ );
+}
diff --git a/apps/web/app/(landing)/Features.tsx b/apps/web/app/(landing)/Features.tsx
new file mode 100644
index 00000000..dd60ce8f
--- /dev/null
+++ b/apps/web/app/(landing)/Features.tsx
@@ -0,0 +1,251 @@
+"use client";
+
+import { useState, useRef, useEffect } from "react";
+import Image from "next/image";
+import { X } from "@repo/ui/src/components/icons";
+
+import { features } from "./FeatureContent";
+import { CardClick } from "@repo/ui/src/components/cardClick";
+
+export default function Features() {
+ const [tab, setTab] = useState<number>(0);
+
+ const tabs = useRef<HTMLDivElement>(null);
+
+ const heightFix = () => {
+ if (tabs.current && tabs.current.parentElement)
+ tabs.current.parentElement.style.height = `${tabs.current.clientHeight}px`;
+ };
+
+ function handleClickIndex(tab: number) {
+ setTab(tab);
+ }
+
+ useEffect(() => {
+ heightFix();
+ }, []);
+
+ return (
+ <section className="relative w-full overflow-hidden max-lg:after:hidden">
+ <div className="py-12 md:pb-32">
+ {/* Carousel */}
+ <div
+ id="use-cases"
+ className="mx-auto max-w-xl px-4 sm:px-6 md:pt-40 lg:max-w-6xl"
+ >
+ <div className="space-y-12 lg:flex lg:space-x-12 lg:space-y-0 xl:space-x-24">
+ {/* Content */}
+ <div className="lg:min-w-[524px] lg:max-w-none">
+ <div className="mb-8">
+ <div className="mb-4 inline-flex rounded-full border border-transparent px-4 py-0.5 text-sm font-medium text-zinc-400 [background:linear-gradient(theme(colors.zinc.800),theme(colors.zinc.800))_padding-box,linear-gradient(120deg,theme(colors.zinc.700),theme(colors.zinc.700/0),theme(colors.zinc.700))_border-box]">
+ Use cases
+ </div>
+ <h3 className="font-inter-tight mb-4 text-3xl font-bold text-zinc-200">
+ Save time and keep things organised
+ </h3>
+ <p className="text-lg text-zinc-500">
+ With Supermemory, it's really easy to save information from
+ all over the internet, while training your own AI to help you
+ do more with it.
+ </p>
+ </div>
+ {/* Tabs buttons */}
+ <div className="mb-8 space-y-2 md:mb-0">
+ <CardClick
+ tab={tab}
+ items={features}
+ handleClickIndex={handleClickIndex}
+ />
+ </div>
+ </div>
+
+ {/* Tabs items */}
+ <div className="relative lg:max-w-none">
+ <div className="relative flex flex-col" ref={tabs}>
+ {/* Item 1 */}
+ <div
+ className="transition-all duration-700 transform order-first"
+ style={{
+ height: tab === 0 ? "auto" : 0,
+ opacity: tab === 0 ? 1 : 0,
+ // transform: tab === 0 ? 'translateY(0)' : 'translateY(4rem)',
+ }}
+ >
+ <div>
+ <Image
+ className="mx-auto rounded-lg shadow-2xl lg:max-w-none"
+ src={"/images/carousel-illustration-01.png"}
+ width={700}
+ height={520}
+ alt="Carousel 01"
+ />
+ </div>
+ </div>
+ {/* Item 2 */}
+ <div
+ className="transition-all duration-700 transform order-first"
+ style={{
+ height: tab === 1 ? "auto" : 0,
+ opacity: tab === 1 ? 1 : 0,
+ transform: tab === 1 ? "translateY(0)" : "translateY(4rem)",
+ }}
+ >
+ <div>
+ <Image
+ className="mx-auto rounded-lg shadow-2xl lg:max-w-none"
+ src={"/images/carousel-illustration-01.png"}
+ width={700}
+ height={520}
+ alt="Carousel 02"
+ />
+ </div>
+ </div>
+ {/* Item 3 */}
+ <div
+ className="transition-all duration-700 transform order-first"
+ style={{
+ height: tab === 2 ? "auto" : 0,
+ opacity: tab === 2 ? 1 : 0,
+ transform: tab === 2 ? "translateY(0)" : "translateY(4rem)",
+ }}
+ >
+ <div>
+ <Image
+ className="mx-auto rounded-lg shadow-2xl lg:max-w-none"
+ src={"/images/carousel-illustration-01.png"}
+ width={700}
+ height={520}
+ alt="Carousel 03"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ {/* Features blocks */}
+ <div
+ id="features"
+ className="mx-auto mt-24 max-w-6xl px-4 sm:px-6 md:pt-40"
+ >
+ <div className="grid gap-8 sm:grid-cols-2 lg:grid-cols-3 lg:gap-16">
+ {/* Block #1 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <X className="mr-2" />
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Import all your Twitter bookmarks
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ Use all the knowledge you've saved on Twitter to train your own
+ supermemory.
+ </p>
+ </div>
+ {/* Block #2 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <svg
+ className="mr-2 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ height="16"
+ >
+ <path d="M13 16c-.153 0-.306-.035-.447-.105l-3.851-1.926c-.231.02-.465.031-.702.031-4.411 0-8-3.14-8-7s3.589-7 8-7 8 3.14 8 7c0 1.723-.707 3.351-2 4.63V15a1.003 1.003 0 0 1-1 1Zm-4.108-4.054c.155 0 .308.036.447.105L12 13.382v-2.187c0-.288.125-.562.341-.752C13.411 9.506 14 8.284 14 7c0-2.757-2.691-5-6-5S2 4.243 2 7s2.691 5 6 5c.266 0 .526-.02.783-.048a1.01 1.01 0 0 1 .109-.006Z" />
+ </svg>
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Chat with collections
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ Use collections to talk to specific knowledgebases like 'My
+ twitter bookmarks', or 'Learning web development'
+ </p>
+ </div>
+ {/* Block #3 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <svg
+ className="mr-2 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ height="16"
+ >
+ <path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7ZM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5Zm8.707 12.293a.999.999 0 1 1-1.414 1.414L11.9 13.314a8.019 8.019 0 0 0 1.414-1.414l2.393 2.393Z" />
+ </svg>
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Powerful search
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ Look up anything you've saved in your supermemory, and get the
+ information you need in seconds.
+ </p>
+ </div>
+ {/* Block #4 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <svg
+ className="mr-2 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="14"
+ height="16"
+ >
+ <path d="M13 0H1C.4 0 0 .4 0 1v14c0 .6.4 1 1 1h8l5-5V1c0-.6-.4-1-1-1ZM2 2h10v8H8v4H2V2Z" />
+ </svg>
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Knowledge canvas
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ Arrange your saved information in a way that makes sense to you
+ in a 2d canvas.
+ </p>
+ </div>
+ {/* Block #5 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <svg
+ className="mr-2 fill-zinc-400"
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ height="16"
+ >
+ <path d="M14.6.085 8 2.885 1.4.085c-.5-.2-1.4-.1-1.4.9v11c0 .4.2.8.6.9l7 3c.3.1.5.1.8 0l7-3c.4-.2.6-.5.6-.9v-11c0-1-.9-1.1-1.4-.9ZM2 2.485l5 2.1v8.8l-5-2.1v-8.8Zm12 8.8-5 2.1v-8.7l5-2.1v8.7Z" />
+ </svg>
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Just... bookmarks
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ AI is cool, but sometimes you just need a place to save your
+ stuff. Supermemory is that place.
+ </p>
+ </div>
+ {/* Block #6 */}
+ <div>
+ <div className="mb-1 flex items-center">
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 20 20"
+ fill="currentColor"
+ className="mr-2 h-5 w-5 fill-zinc-400"
+ >
+ <path d="m2.695 14.762-1.262 3.155a.5.5 0 0 0 .65.65l3.155-1.262a4 4 0 0 0 1.343-.886L17.5 5.501a2.121 2.121 0 0 0-3-3L3.58 13.419a4 4 0 0 0-.885 1.343Z" />
+ </svg>
+ <h3 className="font-inter-tight font-semibold text-zinc-200">
+ Writing assistant
+ </h3>
+ </div>
+ <p className="text-sm text-zinc-500">
+ Use our markdown editor to write content based on your saved
+ data, with the help of AI.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </section>
+ );
+}
diff --git a/apps/web/app/(landing)/Hero.tsx b/apps/web/app/(landing)/Hero.tsx
new file mode 100644
index 00000000..d571cc26
--- /dev/null
+++ b/apps/web/app/(landing)/Hero.tsx
@@ -0,0 +1,74 @@
+"use client";
+import React from "react";
+import { motion } from "framer-motion";
+import { Twitter } from "@repo/ui/src/components/icons";
+import EmailInput from "./EmailInput";
+import LinkArrow from "./linkArrow";
+
+const slap = {
+ initial: {
+ opacity: 0,
+ scale: 1.1,
+ },
+ whileInView: { opacity: 1, scale: 1 },
+ transition: {
+ duration: 0.5,
+ ease: "easeInOut",
+ },
+ viewport: { once: true },
+};
+
+function Hero() {
+ return (
+ <>
+ <section className="mt-24 flex max-w-xl flex-col items-center justify-center gap-10 md:mt-56">
+ <a
+ className="group/anchor flex items-center justify-center gap-4 rounded-full bg-white/10 py-2 pl-10 pr-6 text-sm text-white/80"
+ href="https://twitter.com/supermemoryai"
+ target="_blank"
+ >
+ <Twitter className="h-4 w-4" />
+ <div className="flex items-center">
+ {" "}
+ Follow us on Twitter{" "}
+ <LinkArrow classname="group-hover/anchor:opacity-100 opacity-0 transition" />
+ </div>
+ </a>
+ <motion.h1
+ {...{
+ ...slap,
+ transition: { ...slap.transition, delay: 0.2 },
+ }}
+ className="text-center text-4xl font-semibold tracking-tight text-white/95 md:text-5xl"
+ >
+ Build your own second brain with Supermemory
+ </motion.h1>
+ <motion.p
+ {...{
+ ...slap,
+ transition: { ...slap.transition, delay: 0.3 },
+ }}
+ className="text-soft-foreground-text text-center"
+ >
+ Bring saved information from all over the internet into one place
+ where you can connect it, and ask AI about it
+ </motion.p>
+ <EmailInput />
+ </section>
+ <motion.img
+ {...{
+ ...slap,
+ transition: { ...slap.transition, delay: 0.35 },
+ }}
+ src="/landing-ui.svg"
+ alt="Landing page background"
+ width={1512}
+ height={1405}
+ draggable="false"
+ className="z-[-2] mt-28 h-full w-[80%] select-none"
+ />
+ </>
+ );
+}
+
+export default Hero;
diff --git a/apps/web/app/(landing)/Navbar.tsx b/apps/web/app/(landing)/Navbar.tsx
new file mode 100644
index 00000000..7d0e3225
--- /dev/null
+++ b/apps/web/app/(landing)/Navbar.tsx
@@ -0,0 +1,37 @@
+import Logo from "../../public/logo.svg";
+import { Github } from "@repo/ui/src/components/icons";
+import Image from "next/image";
+import Link from "next/link";
+import React from "react";
+
+function Navbar() {
+ return (
+ <nav className="fixed top-0 z-[99999] mt-12 hidden w-full px-24 text-sm md:flex">
+ <div className="flex w-full flex-row justify-between rounded-2xl bg-white/10 shadow-[0px_2px_3px_-1px_rgba(0,0,0,0.1),0px_1px_0px_0px_rgba(25,28,33,0.02),0px_0px_0px_1px_rgba(25,28,33,0.08)] backdrop-blur-lg backdrop-filter">
+ <Link href={"/"} className="flex items-center p-3 opacity-50">
+ <Image src={Logo} alt="Supermemory logo" width={40} height={40} />
+ </Link>
+ <div className="absolute left-1/2 top-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center gap-8 p-3">
+ <Link href={"#use-cases"} className="text-soft-foreground-text">
+ Use cases
+ </Link>
+ <Link href={"#features"} className="text-soft-foreground-text">
+ Features
+ </Link>
+ <Link href={"#try"} className="text-soft-foreground-text">
+ Try supermemory
+ </Link>
+ </div>
+ <Link
+ href="https://git.new/memory"
+ className="m-2 flex items-center gap-3 rounded-xl bg-white/20 px-4 text-center text-white"
+ >
+ <Github className="h-4 w-4" />
+ Open source
+ </Link>
+ </div>
+ </nav>
+ );
+}
+
+export default Navbar;
diff --git a/apps/web/app/(landing)/RotatingIcons.tsx b/apps/web/app/(landing)/RotatingIcons.tsx
new file mode 100644
index 00000000..fafe9f0b
--- /dev/null
+++ b/apps/web/app/(landing)/RotatingIcons.tsx
@@ -0,0 +1,97 @@
+"use client";
+
+import { motion } from "framer-motion";
+import {
+ Github,
+ Medium,
+ Notion,
+ Reddit,
+ Twitter,
+} from "@repo/ui/src/components/icons";
+import Image from "next/image";
+
+const icons = [
+ <div className="rounded-full bg-purple-600/20 p-4">
+ <Github className="h-8 w-8 text-purple-500" />
+ </div>,
+ <div className="rounded-full bg-blue-800/20 p-4">
+ <Twitter className="h-8 w-8 text-blue-500" />
+ </div>,
+ <div className="rounded-full bg-green-800/20 p-4">
+ <Medium className="h-8 w-8 text-green-500" />
+ </div>,
+ <div className="rounded-full bg-red-800/20 p-4">
+ <Reddit className="h-8 w-8 text-red-500" />
+ </div>,
+ <div className="rounded-full bg-white/20 p-4">
+ <Notion className="h-8 w-8 text-white" />
+ </div>,
+];
+
+const RotatingIcons: React.FC = () => {
+ return (
+ <div className="relative flex w-full flex-col items-center justify-center gap-8 px-4 sm:px-6">
+ <h3 className="font-inter-tight mb-4 mt-8 text-center text-3xl font-bold text-zinc-200">
+ Collect data from <br />{" "}
+ <span className="bg-gradient-to-r from-blue-500 to-blue-300 bg-clip-text italic text-transparent ">
+ any website{" "}
+ </span>{" "}
+ on the internet
+ </h3>
+ <div className="flex items-center justify-center">
+ <div className="relative m-2 mx-auto h-96 w-96 scale-[70%] md:scale-100 ">
+ <div className="relative h-full w-full rounded-full border border-gray-800">
+ {icons.map((icon, index) => (
+ <motion.div
+ key={index}
+ className="absolute top-1/2 -translate-x-10 transform"
+ style={{
+ originX: "200px",
+ originY: "-8px",
+ }}
+ animate={{
+ rotate: [0, 360],
+ }}
+ transition={{
+ repeat: Infinity,
+ duration: 5,
+ ease: "linear",
+ delay: index,
+ }}
+ >
+ <motion.div
+ style={{
+ rotate: index * 72,
+ }}
+ animate={{
+ rotate: [0, -360],
+ }}
+ transition={{
+ repeat: Infinity,
+ duration: 5,
+ ease: "linear",
+ delay: index,
+ }}
+ >
+ {icon}
+ </motion.div>
+ </motion.div>
+ ))}
+ <Image
+ src="/logo.svg"
+ alt="Supermemory logo"
+ width={80}
+ height={80}
+ className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 transform text-white"
+ />
+ </div>
+ </div>
+ </div>
+ <p className="text-center text-sm text-zinc-500">
+ ... and bring it into your second brain
+ </p>
+ </div>
+ );
+};
+
+export default RotatingIcons;
diff --git a/apps/web/app/(landing)/footer.tsx b/apps/web/app/(landing)/footer.tsx
new file mode 100644
index 00000000..4ebfca0b
--- /dev/null
+++ b/apps/web/app/(landing)/footer.tsx
@@ -0,0 +1,38 @@
+import React from "react";
+import LinkArrow from "./linkArrow";
+
+function Footer() {
+ return (
+ <footer className="mt-20 flex w-full items-center justify-between gap-4 px-8 py-8 text-sm text-zinc-500">
+ <p>© 2024 Supermemory.ai</p>
+ <div className="flex gap-5">
+ <a
+ className="group/mail flex items-center"
+ target="_blank"
+ href="mailto:[email protected]"
+ >
+ Contact
+ <LinkArrow classname="group-hover/mail:opacity-100 opacity-0 transition" />
+ </a>
+ <a
+ className="group/twit flex items-center"
+ target="_blank"
+ href="https://twitter.com/supermemoryai"
+ >
+ Twitter{" "}
+ <LinkArrow classname="group-hover/twit:opacity-100 opacity-0 transition" />
+ </a>
+ <a
+ className="group/git flex items-center"
+ target="_blank"
+ href="https://github.com/dhravya/supermemory"
+ >
+ Github{" "}
+ <LinkArrow classname="group-hover/git:opacity-100 opacity-0 transition" />
+ </a>
+ </div>
+ </footer>
+ );
+}
+
+export default Footer;
diff --git a/apps/web/app/(landing)/formSubmitAction.ts b/apps/web/app/(landing)/formSubmitAction.ts
new file mode 100644
index 00000000..9c2eefff
--- /dev/null
+++ b/apps/web/app/(landing)/formSubmitAction.ts
@@ -0,0 +1,48 @@
+"use server";
+import { headers } from "next/headers";
+
+const formSubmitAction = async (email: string, token: string) => {
+ console.log("email submitted:", email);
+ const formBody = `email=${encodeURIComponent(email)}`;
+ const h = await headers();
+ const ip = h.get("cf-connecting-ip");
+
+ if (ip) {
+ if (process.env.RATELIMITER) {
+ // @ts-ignore
+ const { success } = await process.env.RATELIMITER.limit({
+ key: `waitlist-${ip}`,
+ });
+
+ if (!success) {
+ console.error("rate limit exceeded");
+ return { value: "Rate limit exceeded", success: false };
+ }
+ } else {
+ console.info("RATELIMITER not found in env");
+ }
+ } else {
+ console.info("cf-connecting-ip not found in headers");
+ }
+
+ const resp = await fetch(
+ "https://app.loops.so/api/newsletter-form/clwcn8dde0059m6hobbdw2rwe",
+ {
+ method: "POST",
+ body: formBody,
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ },
+ },
+ );
+
+ if (resp.ok) {
+ console.log("email submitted successfully");
+ return { value: await resp.json(), success: true };
+ } else {
+ console.error("email submission failed");
+ return { value: await resp.text(), success: false };
+ }
+};
+
+export default formSubmitAction;
diff --git a/apps/web/app/(landing)/linkArrow.tsx b/apps/web/app/(landing)/linkArrow.tsx
new file mode 100644
index 00000000..def37e91
--- /dev/null
+++ b/apps/web/app/(landing)/linkArrow.tsx
@@ -0,0 +1,34 @@
+import React from "react";
+
+function LinkArrow({ classname }: { classname?: string }) {
+ return (
+ <svg
+ className={classname}
+ width="24px"
+ height="24px"
+ viewBox="-2.4 -2.4 28.80 28.80"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ transform="matrix(1, 0, 0, 1, 0, 0)rotate(0)"
+ >
+ <g id="SVGRepo_bgCarrier" strokeWidth="0"></g>
+ <g
+ id="SVGRepo_tracerCarrier"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ ></g>
+ <g id="SVGRepo_iconCarrier">
+ {" "}
+ <path
+ d="M7 17L17 7M17 7H8M17 7V16"
+ stroke="currentColor"
+ strokeWidth="0.792"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ ></path>{" "}
+ </g>
+ </svg>
+ );
+}
+
+export default LinkArrow;
diff --git a/apps/web/app/(landing)/page.tsx b/apps/web/app/(landing)/page.tsx
new file mode 100644
index 00000000..36f0ce8d
--- /dev/null
+++ b/apps/web/app/(landing)/page.tsx
@@ -0,0 +1,58 @@
+import RotatingIcons from "./RotatingIcons";
+import Hero from "./Hero";
+import Navbar from "./Navbar";
+import Cta from "./Cta";
+import { Toaster } from "@repo/ui/src/shadcn/toaster";
+import Features from "./Features";
+import Footer from "./footer";
+import { auth } from "../helpers/server/auth";
+
+export const runtime = "edge";
+
+export default async function Home() {
+ const user = await auth();
+
+ console.log(user);
+
+ return (
+ <main className="dark flex min-h-screen flex-col items-center overflow-x-hidden px-2 md:px-0">
+ <Navbar />
+
+ {/* Background gradients */}
+ <div className="absolute left-0 top-0 z-[-1] h-full w-full">
+ <div className="overflow-x-hidden">
+ <div
+ className="absolute left-0 h-32 w-[95%] overflow-x-hidden bg-[#369DFD] bg-opacity-70 blur-[337.4px]"
+ style={{ transform: "rotate(-30deg)" }}
+ />
+ </div>
+
+ {/* a blue gradient line that's slightly tilted with blur (a lotof blur)*/}
+ <div className="overflow-x-hidden">
+ <div
+ className="absolute left-0 top-[100%] h-32 w-[90%] overflow-x-hidden bg-[#369DFD] bg-opacity-40 blur-[337.4px]"
+ style={{ transform: "rotate(-30deg)" }}
+ />
+ </div>
+
+ <div className="overflow-x-hidden">
+ <div className="absolute right-0 top-[145%] h-40 w-[17%] overflow-x-hidden bg-[#369DFD] bg-opacity-20 blur-[110px]" />
+ </div>
+ </div>
+
+ {/* Hero section */}
+ <Hero />
+
+ {/* Features section */}
+ <Features />
+
+ <RotatingIcons />
+
+ <Cta />
+
+ <Toaster />
+
+ <Footer />
+ </main>
+ );
+}
diff --git a/apps/web/app/api/[...nextauth]/route.ts b/apps/web/app/api/[...nextauth]/route.ts
new file mode 100644
index 00000000..50807ab1
--- /dev/null
+++ b/apps/web/app/api/[...nextauth]/route.ts
@@ -0,0 +1,2 @@
+export { GET, POST } from "../../helpers/server/auth";
+export const runtime = "edge";
diff --git a/apps/web/app/api/ensureAuth.ts b/apps/web/app/api/ensureAuth.ts
new file mode 100644
index 00000000..a1401a07
--- /dev/null
+++ b/apps/web/app/api/ensureAuth.ts
@@ -0,0 +1,33 @@
+import { NextRequest } from "next/server";
+import { db } from "../helpers/server/db";
+import { sessions, users } from "../helpers/server/db/schema";
+import { eq } from "drizzle-orm";
+
+export async function ensureAuth(req: NextRequest) {
+ // A helper function to protect routes
+
+ const token =
+ req.cookies.get("next-auth.session-token")?.value ??
+ req.cookies.get("__Secure-authjs.session-token")?.value ??
+ req.cookies.get("authjs.session-token")?.value ??
+ req.headers.get("Authorization")?.replace("Bearer ", "");
+
+ if (!token) {
+ return undefined;
+ }
+
+ const sessionData = await db
+ .select()
+ .from(sessions)
+ .innerJoin(users, eq(users.id, sessions.userId))
+ .where(eq(sessions.sessionToken, token!));
+
+ if (!sessionData || sessionData.length < 0) {
+ return undefined;
+ }
+
+ return {
+ user: sessionData[0]!.user,
+ session: sessionData[0]!,
+ };
+}
diff --git a/apps/web/app/api/hello/route.ts b/apps/web/app/api/hello/route.ts
new file mode 100644
index 00000000..363d0704
--- /dev/null
+++ b/apps/web/app/api/hello/route.ts
@@ -0,0 +1,22 @@
+import type { NextRequest } from "next/server";
+import { getRequestContext } from "@cloudflare/next-on-pages";
+
+export const runtime = "edge";
+
+export async function GET(request: NextRequest) {
+ let responseText = "Hello World";
+
+ // In the edge runtime you can use Bindings that are available in your application
+ // (for more details see:
+ // - https://developers.cloudflare.com/pages/framework-guides/deploy-a-nextjs-site/#use-bindings-in-your-nextjs-application
+ // - https://developers.cloudflare.com/pages/functions/bindings/
+ // )
+ //
+ // KV Example:
+ // const myKv = getRequestContext().env.MY_KV_NAMESPACE
+ // await myKv.put('suffix', ' from a KV store!')
+ // const suffix = await myKv.get('suffix')
+ // responseText += suffix
+
+ return new Response(responseText);
+}
diff --git a/apps/web/app/api/upload_image/route.ts b/apps/web/app/api/upload_image/route.ts
new file mode 100644
index 00000000..0d93c5b0
--- /dev/null
+++ b/apps/web/app/api/upload_image/route.ts
@@ -0,0 +1,56 @@
+import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
+import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
+
+import type { NextRequest } from "next/server";
+import { ensureAuth } from "../ensureAuth";
+
+export const runtime = "edge";
+
+export async function PUT(request: NextRequest) {
+ const d = await ensureAuth(request);
+
+ if (!d) {
+ return new Response("Unauthorized", { status: 401 });
+ }
+
+ const reqUrl = new URL(request.url);
+ const filename = reqUrl.searchParams.get("filename");
+
+ if (!filename) {
+ return new Response("Missing filename", { status: 400 });
+ }
+
+ if (
+ !process.env.R2_ENDPOINT ||
+ !process.env.R2_ACCESS_ID ||
+ !process.env.R2_SECRET_KEY ||
+ !process.env.R2_BUCKET_NAME
+ ) {
+ return new Response(
+ "Missing one or more R2 env variables: R2_ENDPOINT, R2_ACCESS_ID, R2_SECRET_KEY, R2_BUCKET_NAME. To get them, go to the R2 console, create and paste keys in a `.dev.vars` file in the root of this project.",
+ { status: 500 },
+ );
+ }
+
+ const s3 = new S3Client({
+ region: "auto",
+ endpoint: process.env.R2_ENDPOINT,
+ credentials: {
+ accessKeyId: process.env.R2_ACCESS_ID,
+ secretAccessKey: process.env.R2_SECRET_KEY,
+ },
+ });
+
+ const url = await getSignedUrl(
+ s3,
+ new PutObjectCommand({ Bucket: process.env.R2_BUCKET_NAME, Key: filename }),
+ { expiresIn: 3600 },
+ );
+
+ return new Response(JSON.stringify({ url }), {
+ status: 200,
+ headers: {
+ "Content-Type": "application/json",
+ },
+ });
+}
diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css
new file mode 100644
index 00000000..8eee6cbd
--- /dev/null
+++ b/apps/web/app/globals.css
@@ -0,0 +1,50 @@
+:root {
+ --max-width: 1100px;
+ --border-radius: 12px;
+ --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono",
+ "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro",
+ "Fira Mono", "Droid Sans Mono", "Courier New", monospace;
+
+ --foreground-rgb: 255, 255, 255;
+ --background-start-rgb: 0, 0, 0;
+ --background-end-rgb: 0, 0, 0;
+
+ --callout-rgb: 20, 20, 20;
+ --callout-border-rgb: 108, 108, 108;
+ --card-rgb: 100, 100, 100;
+ --card-border-rgb: 200, 200, 200;
+
+ --glow-conic: conic-gradient(
+ from 180deg at 50% 50%,
+ #2a8af6 0deg,
+ #a853ba 180deg,
+ #e92a67 360deg
+ );
+}
+
+* {
+ box-sizing: border-box;
+ padding: 0;
+ margin: 0;
+}
+
+html,
+body {
+ max-width: 100vw;
+ overflow-x: hidden;
+}
+
+body {
+ color: rgb(var(--foreground-rgb));
+ background: linear-gradient(
+ to bottom,
+ transparent,
+ rgb(var(--background-end-rgb))
+ )
+ rgb(var(--background-start-rgb));
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
diff --git a/apps/web/app/helpers/lib/get-theme-button.tsx b/apps/web/app/helpers/lib/get-theme-button.tsx
new file mode 100644
index 00000000..41720927
--- /dev/null
+++ b/apps/web/app/helpers/lib/get-theme-button.tsx
@@ -0,0 +1,11 @@
+// Theming that works perfectly with app router (no flicker, jumps etc!)
+
+import dynamic from "next/dynamic";
+
+// Don't SSR the toggle since the value on the server will be different than the client
+export const getThemeToggler = () =>
+ dynamic(() => import("@repo/ui/src/shadcn/theme-toggle"), {
+ ssr: false,
+ // Make sure to code a placeholder so the UI doesn't jump when the component loads
+ loading: () => <div className="w-6 h-6" />,
+ });
diff --git a/apps/web/app/helpers/lib/handle-errors.ts b/apps/web/app/helpers/lib/handle-errors.ts
new file mode 100644
index 00000000..42cae589
--- /dev/null
+++ b/apps/web/app/helpers/lib/handle-errors.ts
@@ -0,0 +1,25 @@
+import { isRedirectError } from "next/dist/client/components/redirect";
+import { toast } from "sonner";
+import { z } from "zod";
+
+export function getErrorMessage(err: unknown) {
+ const unknownError = "Something went wrong, please try again later.";
+
+ if (err instanceof z.ZodError) {
+ const errors = err.issues.map((issue) => {
+ return issue.message;
+ });
+ return errors.join("\n");
+ } else if (err instanceof Error) {
+ return err.message;
+ } else if (isRedirectError(err)) {
+ throw err;
+ } else {
+ return unknownError;
+ }
+}
+
+export function showErrorToast(err: unknown) {
+ const errorMessage = getErrorMessage(err);
+ return toast.error(errorMessage);
+}
diff --git a/apps/web/src/server/auth.ts b/apps/web/app/helpers/server/auth.ts
index 95edcf35..e2817cf0 100644
--- a/apps/web/src/server/auth.ts
+++ b/apps/web/app/helpers/server/auth.ts
@@ -1,15 +1,15 @@
-import { env } from "@/env";
-import NextAuth from "next-auth";
+import NextAuth, { NextAuthResult } from "next-auth";
import Google from "next-auth/providers/google";
import { DrizzleAdapter } from "@auth/drizzle-adapter";
import { db } from "./db";
export const {
handlers: { GET, POST },
+ signIn,
+ signOut,
auth,
} = NextAuth({
- secret: env.NEXTAUTH_SECRET,
- trustHost: true,
+ secret: process.env.NEXTAUTH_SECRET ?? process.env.AUTH_SECRET,
callbacks: {
session: ({ session, token, user }) => ({
...session,
@@ -22,8 +22,8 @@ export const {
adapter: DrizzleAdapter(db),
providers: [
Google({
- clientId: env.GOOGLE_CLIENT_ID,
- clientSecret: env.GOOGLE_CLIENT_SECRET,
+ clientId: process.env.GOOGLE_CLIENT_ID,
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
});
diff --git a/apps/web/src/server/db/index.ts b/apps/web/app/helpers/server/db/index.ts
index 4d671bea..4d671bea 100644
--- a/apps/web/src/server/db/index.ts
+++ b/apps/web/app/helpers/server/db/index.ts
diff --git a/apps/web/src/server/db/schema.ts b/apps/web/app/helpers/server/db/schema.ts
index cd2756f1..c4616eb2 100644
--- a/apps/web/src/server/db/schema.ts
+++ b/apps/web/app/helpers/server/db/schema.ts
@@ -6,7 +6,6 @@ import {
sqliteTableCreator,
text,
integer,
- unique,
} from "drizzle-orm/sqlite-core";
export const createTable = sqliteTableCreator((name) => `${name}`);
@@ -90,6 +89,7 @@ export const storedContent = createTable(
url: text("url").notNull(),
savedAt: int("savedAt", { mode: "timestamp" }).notNull(),
baseUrl: text("baseUrl", { length: 255 }),
+ ogImage: text("ogImage", { length: 255 }),
type: text("type", { enum: ["note", "page", "twitter-bookmark"] }).default(
"page",
),
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
new file mode 100644
index 00000000..035b5827
--- /dev/null
+++ b/apps/web/app/layout.tsx
@@ -0,0 +1,71 @@
+import "@repo/tailwind-config/globals.css";
+
+import type { Metadata } from "next";
+import { Inter } from "next/font/google";
+import { ThemeScript } from "next-app-theme/theme-script";
+
+const inter = Inter({ subsets: ["latin"] });
+
+export const metadata: Metadata = {
+ title: "Supermemory - Your personal second brain.",
+ description:
+ "Bring saved information from all over the internet into one place where you can connect it, and ask AI about it",
+ openGraph: {
+ images: [
+ {
+ url: "https://supermemory.ai/og-image.png",
+ width: 1200,
+ height: 627,
+ alt: "Supermemory - Your personal second brain.",
+ },
+ ],
+ },
+ metadataBase: {
+ host: "https://supermemory.ai",
+ href: "/",
+ origin: "https://supermemory.ai",
+ password: "supermemory",
+ hash: "supermemory",
+ pathname: "/",
+ search: "",
+ username: "supermemoryai",
+ hostname: "supermemory.ai",
+ port: "",
+ protocol: "https:",
+ searchParams: new URLSearchParams(""),
+ toString: () => "https://supermemory.ai/",
+ toJSON: () => "https://supermemory.ai/",
+ },
+ twitter: {
+ card: "summary_large_image",
+ site: "https://supermemory.ai",
+ creator: "https://supermemory.ai",
+ title: "Supermemory - Your personal second brain.",
+ description:
+ "Bring saved information from all over the internet into one place where you can connect it, and ask AI about it",
+ images: [
+ {
+ url: "https://supermemory.ai/og-image.png",
+ width: 1200,
+ height: 627,
+ alt: "Supermemory - Your personal second brain.",
+ },
+ ],
+ },
+};
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}): JSX.Element {
+ return (
+ <html lang="en">
+ <head>
+ <ThemeScript />
+ </head>
+ {/* TODO: when lightmode support is added, remove the 'dark' class from the body tag */}
+ <body className={`${inter.className} dark`}>{children}</body>
+ </html>
+ );
+}
diff --git a/apps/web/app/page-ref.tsx b/apps/web/app/page-ref.tsx
new file mode 100644
index 00000000..2d4c9cc3
--- /dev/null
+++ b/apps/web/app/page-ref.tsx
@@ -0,0 +1,116 @@
+import { Button } from "@repo/ui/src/shadcn/button";
+import { auth, signIn, signOut } from "./helpers/server/auth";
+import { db } from "./helpers/server/db";
+import { sql } from "drizzle-orm";
+import { users } from "./helpers/server/db/schema";
+import { getThemeToggler } from "./helpers/lib/get-theme-button";
+
+export const runtime = "edge";
+
+export default async function Page() {
+ const usr = await auth();
+
+ const userCount = await db
+ .select({
+ count: sql<number>`count(*)`.mapWith(Number),
+ })
+ .from(users);
+
+ const SetThemeButton = getThemeToggler();
+
+ return (
+ <main className="flex flex-col items-center justify-center min-h-screen">
+ <div className="flex max-w-2xl justify-between w-full">
+ <SetThemeButton />
+
+ <div className="flex gap-2 items-center justify-center">
+ {" "}
+ <svg
+ viewBox="0 0 256 116"
+ xmlns="http://www.w3.org/2000/svg"
+ width="45px"
+ height="45px"
+ preserveAspectRatio="xMidYMid"
+ >
+ <path
+ fill="#FFF"
+ d="m202.357 49.394-5.311-2.124C172.085 103.434 72.786 69.289 66.81 85.997c-.996 11.286 54.227 2.146 93.706 4.059 12.039.583 18.076 9.671 12.964 24.484l10.069.031c11.615-36.209 48.683-17.73 50.232-29.68-2.545-7.857-42.601 0-31.425-35.497Z"
+ />
+ <path
+ fill="#F4811F"
+ d="M176.332 108.348c1.593-5.31 1.062-10.622-1.593-13.809-2.656-3.187-6.374-5.31-11.154-5.842L71.17 87.634c-.531 0-1.062-.53-1.593-.53-.531-.532-.531-1.063 0-1.594.531-1.062 1.062-1.594 2.124-1.594l92.946-1.062c11.154-.53 22.839-9.56 27.087-20.182l5.312-13.809c0-.532.531-1.063 0-1.594C191.203 20.182 166.772 0 138.091 0 111.535 0 88.697 16.995 80.73 40.896c-5.311-3.718-11.684-5.843-19.12-5.31-12.747 1.061-22.838 11.683-24.432 24.43-.531 3.187 0 6.374.532 9.56C16.996 70.107 0 87.103 0 108.348c0 2.124 0 3.718.531 5.842 0 1.063 1.062 1.594 1.594 1.594h170.489c1.062 0 2.125-.53 2.125-1.594l1.593-5.842Z"
+ />
+ <path
+ fill="#FAAD3F"
+ d="M205.544 48.863h-2.656c-.531 0-1.062.53-1.593 1.062l-3.718 12.747c-1.593 5.31-1.062 10.623 1.594 13.809 2.655 3.187 6.373 5.31 11.153 5.843l19.652 1.062c.53 0 1.062.53 1.593.53.53.532.53 1.063 0 1.594-.531 1.063-1.062 1.594-2.125 1.594l-20.182 1.062c-11.154.53-22.838 9.56-27.087 20.182l-1.063 4.78c-.531.532 0 1.594 1.063 1.594h70.108c1.062 0 1.593-.531 1.593-1.593 1.062-4.25 2.124-9.03 2.124-13.81 0-27.618-22.838-50.456-50.456-50.456"
+ />
+ </svg>
+ <span className="italic">Cloudflare Next Saas Starter</span>
+ </div>
+
+ <div className="border border-black dark:border-white rounded-2xl p-2 flex items-center">
+ Start by editing apps/web/page.tsx
+ </div>
+ </div>
+
+ <div className="max-w-2xl text-start w-full mt-16">
+ Welcome to Cloudflare Next Saas Starter. <br /> Built a full stack app
+ using production-ready tools and frameworks, host on Cloudflare
+ instantly.
+ <br />
+ An opinionated, batteries-included framework with{" "}
+ <a
+ className="text-transparent bg-clip-text bg-gradient-to-r from-[#a93d64] to-[#275ba9]"
+ href="https://turbo.build"
+ >
+ Turborepo
+ </a>{" "}
+ and Nextjs. Fully Typesafe. Best practices followed by default.
+ <br /> <br />
+ Here's what the stack includes:
+ <ul className="list-disc mt-4 prose dark:prose-invert">
+ <li>
+ Authentication with <code>next-auth</code>
+ </li>
+ <li>Database using Cloudflare's D1 serverless databases</li>
+ <li>Drizzle ORM, already connected to your database and auth ⚡</li>
+ <li>Light/darkmode theming that works with server components (!)</li>
+ <li>Styling using TailwindCSS and ShadcnUI</li>
+ <li>Turborepo with a landing page and shared components</li>
+ <li>Cloudflare wrangler for quick functions on the edge</li>
+ <li>
+ ... best part: everything's already set up for you. Just code!
+ </li>
+ </ul>
+ <div className="mt-4 flex flex-col gap-2">
+ <span>Number of users in database: {userCount[0]!.count}</span>
+ </div>
+ {usr?.user?.email ? (
+ <>
+ <div className="mt-4 flex flex-col gap-2">
+ <span>Hello {usr.user.name} 👋</span>
+ <span>{usr.user.email}</span>
+ </div>
+ <form
+ action={async () => {
+ "use server";
+ await signOut();
+ }}
+ >
+ <Button className="mt-4">Sign out</Button>
+ </form>
+ </>
+ ) : (
+ <form
+ action={async () => {
+ "use server";
+ await signIn("google");
+ }}
+ >
+ <Button className="mt-4">Login with Google</Button>
+ </form>
+ )}
+ </div>
+ </main>
+ );
+}
diff --git a/apps/web/app/upload/file-uploader.tsx b/apps/web/app/upload/file-uploader.tsx
new file mode 100644
index 00000000..2404ce7c
--- /dev/null
+++ b/apps/web/app/upload/file-uploader.tsx
@@ -0,0 +1,315 @@
+"use client";
+
+import * as React from "react";
+import Image from "next/image";
+import { Cross2Icon, UploadIcon } from "@radix-ui/react-icons";
+import Dropzone, {
+ type DropzoneProps,
+ type FileRejection,
+} from "react-dropzone";
+import { toast } from "sonner";
+
+import { cn, formatBytes } from "@repo/ui/lib/utils";
+import { useControllableState } from "@repo/ui/hooks/use-controllable-state";
+import { Button } from "@repo/ui/src/button";
+import { Progress } from "@repo/ui/src/progress";
+import { ScrollArea } from "@repo/ui/src/scroll-area";
+
+interface FileUploaderProps extends React.HTMLAttributes<HTMLDivElement> {
+ /**
+ * Value of the uploader.
+ * @type File[]
+ * @default undefined
+ * @example value={files}
+ */
+ value?: File[];
+
+ /**
+ * Function to be called when the value changes.
+ * @type React.Dispatch<React.SetStateAction<File[]>>
+ * @default undefined
+ * @example onValueChange={(files) => setFiles(files)}
+ */
+ onValueChange?: React.Dispatch<React.SetStateAction<File[]>>;
+
+ /**
+ * Function to be called when files are uploaded.
+ * @type (files: File[]) => Promise<void>
+ * @default undefined
+ * @example onUpload={(files) => uploadFiles(files)}
+ */
+ onUpload?: (files: File[]) => Promise<void>;
+
+ /**
+ * Progress of the uploaded files.
+ * @type Record<string, number> | undefined
+ * @default undefined
+ * @example progresses={{ "file1.png": 50 }}
+ */
+ progresses?: Record<string, number>;
+
+ /**
+ * Accepted file types for the uploader.
+ * @type { [key: string]: string[]}
+ * @default
+ * ```ts
+ * { "image/*": [] }
+ * ```
+ * @example accept={["image/png", "image/jpeg"]}
+ */
+ accept?: DropzoneProps["accept"];
+
+ /**
+ * Maximum file size for the uploader.
+ * @type number | undefined
+ * @default 1024 * 1024 * 2 // 2MB
+ * @example maxSize={1024 * 1024 * 2} // 2MB
+ */
+ maxSize?: DropzoneProps["maxSize"];
+
+ /**
+ * Maximum number of files for the uploader.
+ * @type number | undefined
+ * @default 1
+ * @example maxFiles={5}
+ */
+ maxFiles?: DropzoneProps["maxFiles"];
+
+ /**
+ * Whether the uploader should accept multiple files.
+ * @type boolean
+ * @default false
+ * @example multiple
+ */
+ multiple?: boolean;
+
+ /**
+ * Whether the uploader is disabled.
+ * @type boolean
+ * @default false
+ * @example disabled
+ */
+ disabled?: boolean;
+}
+
+export function FileUploader(props: FileUploaderProps) {
+ const {
+ value: valueProp,
+ onValueChange,
+ onUpload,
+ progresses,
+ accept = { "image/*": [] },
+ maxSize = 1024 * 1024 * 2,
+ maxFiles = 1,
+ multiple = false,
+ disabled = false,
+ className,
+ ...dropzoneProps
+ } = props;
+
+ const [files, setFiles] = useControllableState({
+ prop: valueProp,
+ onChange: onValueChange,
+ });
+
+ const onDrop = React.useCallback(
+ (acceptedFiles: File[], rejectedFiles: FileRejection[]) => {
+ if (!multiple && maxFiles === 1 && acceptedFiles.length > 1) {
+ toast.error("Cannot upload more than 1 file at a time");
+ return;
+ }
+
+ if ((files?.length ?? 0) + acceptedFiles.length > maxFiles) {
+ toast.error(`Cannot upload more than ${maxFiles} files`);
+ return;
+ }
+
+ const newFiles = acceptedFiles.map((file) =>
+ Object.assign(file, {
+ preview: URL.createObjectURL(file),
+ }),
+ );
+
+ const updatedFiles = files ? [...files, ...newFiles] : newFiles;
+
+ setFiles(updatedFiles);
+
+ if (rejectedFiles.length > 0) {
+ rejectedFiles.forEach(({ file }) => {
+ toast.error(`File ${file.name} was rejected`);
+ });
+ }
+
+ if (
+ onUpload &&
+ updatedFiles.length > 0 &&
+ updatedFiles.length <= maxFiles
+ ) {
+ const target =
+ updatedFiles.length > 0 ? `${updatedFiles.length} files` : `file`;
+
+ toast.promise(onUpload(updatedFiles), {
+ loading: `Uploading ${target}...`,
+ success: () => {
+ setFiles([]);
+ return `${target} uploaded`;
+ },
+ error: `Failed to upload ${target}`,
+ });
+ }
+ },
+
+ [files, maxFiles, multiple, onUpload, setFiles],
+ );
+
+ function onRemove(index: number) {
+ if (!files) return;
+ const newFiles = files.filter((_, i) => i !== index);
+ setFiles(newFiles);
+ onValueChange?.(newFiles);
+ }
+
+ // Revoke preview url when component unmounts
+ React.useEffect(() => {
+ return () => {
+ if (!files) return;
+ files.forEach((file) => {
+ if (isFileWithPreview(file)) {
+ URL.revokeObjectURL(file.preview);
+ }
+ });
+ };
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ const isDisabled = disabled || (files?.length ?? 0) >= maxFiles;
+
+ return (
+ <div className="relative flex flex-col gap-6 overflow-hidden">
+ <Dropzone
+ onDrop={onDrop}
+ accept={accept}
+ maxSize={maxSize}
+ maxFiles={maxFiles}
+ multiple={maxFiles > 1 || multiple}
+ disabled={isDisabled}
+ >
+ {({ getRootProps, getInputProps, isDragActive }) => (
+ <div
+ {...getRootProps()}
+ className={cn(
+ "group relative grid h-52 w-full cursor-pointer place-items-center rounded-lg border-2 border-dashed border-muted-foreground/25 px-5 py-2.5 text-center transition hover:bg-muted/25",
+ "ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
+ isDragActive && "border-muted-foreground/50",
+ isDisabled && "pointer-events-none opacity-60",
+ className,
+ )}
+ {...dropzoneProps}
+ >
+ <input {...getInputProps()} />
+ {isDragActive ? (
+ <div className="flex flex-col items-center justify-center gap-4 sm:px-5">
+ <div className="rounded-full border border-dashed p-3">
+ <UploadIcon
+ className="size-7 text-muted-foreground"
+ aria-hidden="true"
+ />
+ </div>
+ <p className="font-medium text-muted-foreground">
+ Drop the files here
+ </p>
+ </div>
+ ) : (
+ <div className="flex flex-col items-center justify-center gap-4 sm:px-5">
+ <div className="rounded-full border border-dashed p-3">
+ <UploadIcon
+ className="size-7 text-muted-foreground"
+ aria-hidden="true"
+ />
+ </div>
+ <div className="space-y-px">
+ <p className="font-medium text-muted-foreground">
+ Drag {`'n'`} drop files here, or click to select files
+ </p>
+ <p className="text-sm text-muted-foreground/70">
+ You can upload
+ {maxFiles > 1
+ ? ` ${maxFiles === Infinity ? "multiple" : maxFiles}
+ files (up to ${formatBytes(maxSize)} each)`
+ : ` a file with ${formatBytes(maxSize)}`}
+ </p>
+ </div>
+ </div>
+ )}
+ </div>
+ )}
+ </Dropzone>
+ {files?.length ? (
+ <ScrollArea className="h-fit w-full px-3">
+ <div className="max-h-48 space-y-4">
+ {files?.map((file, index) => (
+ <FileCard
+ key={index}
+ file={file}
+ onRemove={() => onRemove(index)}
+ progress={progresses?.[file.name]}
+ />
+ ))}
+ </div>
+ </ScrollArea>
+ ) : null}
+ </div>
+ );
+}
+
+interface FileCardProps {
+ file: File;
+ onRemove: () => void;
+ progress?: number;
+}
+
+function FileCard({ file, progress, onRemove }: FileCardProps) {
+ return (
+ <div className="relative flex items-center space-x-4">
+ <div className="flex flex-1 space-x-4">
+ {isFileWithPreview(file) ? (
+ <Image
+ src={file.preview}
+ alt={file.name}
+ width={48}
+ height={48}
+ loading="lazy"
+ className="aspect-square shrink-0 rounded-md object-cover"
+ />
+ ) : null}
+ <div className="flex w-full flex-col gap-2">
+ <div className="space-y-px">
+ <p className="line-clamp-1 text-sm font-medium text-foreground/80">
+ {file.name}
+ </p>
+ <p className="text-xs text-muted-foreground">
+ {formatBytes(file.size)}
+ </p>
+ </div>
+ {progress ? <Progress value={progress} /> : null}
+ </div>
+ </div>
+ <div className="flex items-center gap-2">
+ <Button
+ type="button"
+ variant="outline"
+ size="icon"
+ className="size-7"
+ onClick={onRemove}
+ >
+ <Cross2Icon className="size-4 " aria-hidden="true" />
+ <span className="sr-only">Remove file</span>
+ </Button>
+ </div>
+ </div>
+ );
+}
+
+function isFileWithPreview(file: File): file is File & { preview: string } {
+ return "preview" in file && typeof file.preview === "string";
+}
diff --git a/apps/web/app/upload/page.tsx b/apps/web/app/upload/page.tsx
new file mode 100644
index 00000000..4899d695
--- /dev/null
+++ b/apps/web/app/upload/page.tsx
@@ -0,0 +1,99 @@
+"use client";
+
+import * as React from "react";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useForm } from "react-hook-form";
+import { toast } from "sonner";
+import { z } from "zod";
+
+import { getErrorMessage } from "../helpers/lib/handle-errors";
+import { Button } from "@repo/ui/src/button";
+import {
+ Form,
+ FormControl,
+ FormField,
+ FormItem,
+ FormLabel,
+ FormMessage,
+} from "@repo/ui/src/form";
+import { FileUploader } from "./file-uploader";
+
+import { UploadedFilesCard } from "./uploaded-files-card";
+import { useUploadFile } from "@repo/ui/hooks/use-upload-file";
+
+const schema = z.object({
+ images: z.array(z.instanceof(File)),
+});
+
+type Schema = z.infer<typeof schema>;
+
+export default function ReactHookFormDemo() {
+ const [loading, setLoading] = React.useState(false);
+ const { uploadFiles, uploadedFiles, isUploading } = useUploadFile(
+ "imageUploader",
+ { defaultUploadedFiles: [] },
+ );
+ const form = useForm<Schema>({
+ resolver: zodResolver(schema),
+ defaultValues: {
+ images: [],
+ },
+ });
+
+ function onSubmit(input: Schema) {
+ setLoading(true);
+
+ toast.promise(uploadFiles(input.images), {
+ loading: "Uploading images...",
+ success: () => {
+ form.reset();
+ setLoading(false);
+ return "Images uploaded";
+ },
+ error: (err) => {
+ setLoading(false);
+ return getErrorMessage(err);
+ },
+ });
+ }
+
+ return (
+ <div className="flex flex-col w-full min-h-screen items-center justify-center">
+ <Form {...form}>
+ <form
+ onSubmit={form.handleSubmit(onSubmit)}
+ className="flex max-w-2xl flex-col gap-6 w-full"
+ >
+ <FormField
+ control={form.control}
+ name="images"
+ render={({ field }) => (
+ <div className="space-y-6">
+ <FormItem className="w-full">
+ <FormLabel>Images</FormLabel>
+ <FormControl>
+ <FileUploader
+ value={field.value}
+ onValueChange={field.onChange}
+ maxFiles={4}
+ maxSize={4 * 1024 * 1024}
+ onUpload={uploadFiles}
+ disabled={isUploading}
+ />
+ </FormControl>
+ <FormMessage />
+ </FormItem>
+ {uploadedFiles.length > 0 ? (
+ <UploadedFilesCard uploadedFiles={uploadedFiles} />
+ ) : null}
+ </div>
+ )}
+ />
+ <Button className="w-fit" disabled={loading}>
+ Save
+ </Button>
+ </form>
+ </Form>
+ </div>
+ );
+}
diff --git a/apps/web/app/upload/uploaded-files-card.tsx b/apps/web/app/upload/uploaded-files-card.tsx
new file mode 100644
index 00000000..fc9b7d5b
--- /dev/null
+++ b/apps/web/app/upload/uploaded-files-card.tsx
@@ -0,0 +1,93 @@
+import Image from "next/image";
+import type { UploadedFile } from "@repo/shared-types";
+
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardHeader,
+ CardTitle,
+} from "@repo/ui/src/card";
+import { ScrollArea, ScrollBar } from "@repo/ui/src/scroll-area";
+
+interface UploadedFilesCardProps {
+ uploadedFiles: UploadedFile[];
+}
+
+import { ImageIcon } from "@radix-ui/react-icons";
+
+import { cn } from "@repo/ui/lib/utils";
+
+interface EmptyCardProps extends React.ComponentPropsWithoutRef<typeof Card> {
+ title: string;
+ description?: string;
+ action?: React.ReactNode;
+ icon?: React.ComponentType<{ className?: string }>;
+ className?: string;
+}
+
+function EmptyCard({
+ title,
+ description,
+ icon: Icon = ImageIcon,
+ action,
+ className,
+ ...props
+}: EmptyCardProps) {
+ return (
+ <Card
+ className={cn(
+ "flex w-full flex-col items-center justify-center space-y-6 bg-transparent p-16",
+ className,
+ )}
+ {...props}
+ >
+ <div className="mr-4 shrink-0 rounded-full border border-dashed p-4">
+ <Icon className="size-8 text-muted-foreground" aria-hidden="true" />
+ </div>
+ <div className="flex flex-col items-center gap-1.5 text-center">
+ <CardTitle>{title}</CardTitle>
+ {description ? <CardDescription>{description}</CardDescription> : null}
+ </div>
+ {action ? action : null}
+ </Card>
+ );
+}
+
+export function UploadedFilesCard({ uploadedFiles }: UploadedFilesCardProps) {
+ return (
+ <Card>
+ <CardHeader>
+ <CardTitle>Uploaded files</CardTitle>
+ <CardDescription>View the uploaded files here</CardDescription>
+ </CardHeader>
+ <CardContent>
+ {uploadedFiles.length > 0 ? (
+ <ScrollArea className="pb-4">
+ <div className="flex w-max space-x-2.5">
+ {uploadedFiles.map((file) => (
+ <div key={file.key} className="relative aspect-video w-64">
+ <Image
+ src={file.url}
+ alt={file.name}
+ fill
+ sizes="(min-width: 640px) 640px, 100vw"
+ loading="lazy"
+ className="rounded-md object-cover"
+ />
+ </div>
+ ))}
+ </div>
+ <ScrollBar orientation="horizontal" />
+ </ScrollArea>
+ ) : (
+ <EmptyCard
+ title="No files uploaded"
+ description="Upload some files to see them here"
+ className="w-full"
+ />
+ )}
+ </CardContent>
+ </Card>
+ );
+}
diff --git a/apps/web/cf-env.d.ts b/apps/web/cf-env.d.ts
new file mode 100644
index 00000000..98303f35
--- /dev/null
+++ b/apps/web/cf-env.d.ts
@@ -0,0 +1,7 @@
+declare global {
+ namespace NodeJS {
+ interface ProcessEnv extends CloudflareEnv {}
+ }
+}
+
+export {};
diff --git a/apps/web/components.json b/apps/web/components.json
deleted file mode 100644
index c9b7b380..00000000
--- a/apps/web/components.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "$schema": "https://ui.shadcn.com/schema.json",
- "style": "default",
- "rsc": true,
- "tsx": true,
- "tailwind": {
- "config": "tailwind.config.ts",
- "css": "src/app/globals.css",
- "baseColor": "gray",
- "cssVariables": false
- },
- "aliases": {
- "utils": "@/lib/utils",
- "components": "@/components"
- }
-}
diff --git a/apps/web/db/wipe.sql b/apps/web/db/wipe.sql
deleted file mode 100644
index 456a48ad..00000000
--- a/apps/web/db/wipe.sql
+++ /dev/null
@@ -1,7 +0,0 @@
-DELETE FROM `account`;
-DELETE FROM `contentToSpace`;
-DELETE FROM `session`;
-DELETE FROM `space`;
-DELETE FROM `storedContent`;
-DELETE FROM `user`;
-DELETE FROM `verificationToken`; \ No newline at end of file
diff --git a/apps/web/drizzle.config.ts b/apps/web/drizzle.config.ts
index c4f5d5fe..ab071121 100644
--- a/apps/web/drizzle.config.ts
+++ b/apps/web/drizzle.config.ts
@@ -1,17 +1,12 @@
import { type Config } from "drizzle-kit";
-const localDb = {
- url: process.env.LOCAL_DB_URL!,
-};
-
export default {
- schema: "./src/server/db/schema.ts",
- driver: process.env.LOCAL_DB_URL ? "better-sqlite" : "d1",
- dbCredentials: process.env.LOCAL_DB_URL
- ? localDb
- : {
- wranglerConfigPath: "./wrangler.toml",
- dbName: "dev-d1-anycontext",
- },
- out: "drizzle",
+ schema: "./app/helpers/server/db/schema.ts",
+ dialect: "sqlite",
+ driver: "d1",
+ dbCredentials: {
+ wranglerConfigPath: "./wrangler.toml",
+ dbName: "",
+ },
+ out: "migrations",
} satisfies Config;
diff --git a/apps/web/env.d.ts b/apps/web/env.d.ts
index 8868e855..d74dcdf3 100644
--- a/apps/web/env.d.ts
+++ b/apps/web/env.d.ts
@@ -1,13 +1,14 @@
-declare global {
- namespace NodeJS {
- interface ProcessEnv {
- [key: string]: string | undefined;
- DATABASE: D1Database;
- VECTORIZE_INDEX: VectorizeIndex;
- AI: any;
- RATELIMITER: any;
- }
- }
-}
+// Generated by Wrangler on Sat May 25 2024 17:07:13 GMT-0500 (Central Daylight Time)
+// by running `wrangler types --env-interface CloudflareEnv env.d.ts`
-export {};
+interface CloudflareEnv {
+ GOOGLE_CLIENT_ID: string;
+ GOOGLE_CLIENT_SECRET: string;
+ NEXTAUTH_SECRET: string;
+ R2_ENDPOINT: string;
+ R2_ACCESS_ID: string;
+ R2_SECRET_KEY: string;
+ R2_BUCKET_NAME: string;
+ STORAGE: R2Bucket;
+ DATABASE: D1Database;
+}
diff --git a/apps/web/db/prepare.sql b/apps/web/migrations/000_setup.sql
index 4c8c2af6..db7f9444 100644
--- a/apps/web/db/prepare.sql
+++ b/apps/web/migrations/000_setup.sql
@@ -47,6 +47,7 @@ CREATE TABLE `storedContent` (
`url` text NOT NULL,
`savedAt` integer NOT NULL,
`baseUrl` text(255),
+ `ogImage` text(255),
`type` text DEFAULT 'page',
`image` text(255),
`user` text(255),
diff --git a/apps/web/migrations/meta/0000_snapshot.json b/apps/web/migrations/meta/0000_snapshot.json
new file mode 100644
index 00000000..29cc4323
--- /dev/null
+++ b/apps/web/migrations/meta/0000_snapshot.json
@@ -0,0 +1,492 @@
+{
+ "version": "6",
+ "dialect": "sqlite",
+ "id": "409cec60-0c4b-4cda-8751-3e70768bbb6c",
+ "prevId": "00000000-0000-0000-0000-000000000000",
+ "tables": {
+ "account": {
+ "name": "account",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "userId": {
+ "name": "userId",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "type": {
+ "name": "type",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "provider": {
+ "name": "provider",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "providerAccountId": {
+ "name": "providerAccountId",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "refresh_token": {
+ "name": "refresh_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "access_token": {
+ "name": "access_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "expires_at": {
+ "name": "expires_at",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "token_type": {
+ "name": "token_type",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "scope": {
+ "name": "scope",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "id_token": {
+ "name": "id_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "session_state": {
+ "name": "session_state",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "oauth_token_secret": {
+ "name": "oauth_token_secret",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "oauth_token": {
+ "name": "oauth_token",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ }
+ },
+ "indexes": {
+ "account_userId_idx": {
+ "name": "account_userId_idx",
+ "columns": ["userId"],
+ "isUnique": false
+ }
+ },
+ "foreignKeys": {
+ "account_userId_user_id_fk": {
+ "name": "account_userId_user_id_fk",
+ "tableFrom": "account",
+ "tableTo": "user",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "contentToSpace": {
+ "name": "contentToSpace",
+ "columns": {
+ "contentId": {
+ "name": "contentId",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "spaceId": {
+ "name": "spaceId",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {
+ "contentToSpace_contentId_storedContent_id_fk": {
+ "name": "contentToSpace_contentId_storedContent_id_fk",
+ "tableFrom": "contentToSpace",
+ "tableTo": "storedContent",
+ "columnsFrom": ["contentId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ },
+ "contentToSpace_spaceId_space_id_fk": {
+ "name": "contentToSpace_spaceId_space_id_fk",
+ "tableFrom": "contentToSpace",
+ "tableTo": "space",
+ "columnsFrom": ["spaceId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {
+ "contentToSpace_contentId_spaceId_pk": {
+ "columns": ["contentId", "spaceId"],
+ "name": "contentToSpace_contentId_spaceId_pk"
+ }
+ },
+ "uniqueConstraints": {}
+ },
+ "session": {
+ "name": "session",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "sessionToken": {
+ "name": "sessionToken",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "userId": {
+ "name": "userId",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires": {
+ "name": "expires",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ }
+ },
+ "indexes": {
+ "session_userId_idx": {
+ "name": "session_userId_idx",
+ "columns": ["userId"],
+ "isUnique": false
+ }
+ },
+ "foreignKeys": {
+ "session_userId_user_id_fk": {
+ "name": "session_userId_user_id_fk",
+ "tableFrom": "session",
+ "tableTo": "user",
+ "columnsFrom": ["userId"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "space": {
+ "name": "space",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "name": {
+ "name": "name",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false,
+ "default": "'none'"
+ },
+ "user": {
+ "name": "user",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ }
+ },
+ "indexes": {
+ "space_name_unique": {
+ "name": "space_name_unique",
+ "columns": ["name"],
+ "isUnique": true
+ },
+ "spaces_name_idx": {
+ "name": "spaces_name_idx",
+ "columns": ["name"],
+ "isUnique": false
+ },
+ "spaces_user_idx": {
+ "name": "spaces_user_idx",
+ "columns": ["user"],
+ "isUnique": false
+ }
+ },
+ "foreignKeys": {
+ "space_user_user_id_fk": {
+ "name": "space_user_user_id_fk",
+ "tableFrom": "space",
+ "tableTo": "user",
+ "columnsFrom": ["user"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "storedContent": {
+ "name": "storedContent",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "integer",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": true
+ },
+ "content": {
+ "name": "content",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "title": {
+ "name": "title",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "description": {
+ "name": "description",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "url": {
+ "name": "url",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "savedAt": {
+ "name": "savedAt",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "baseUrl": {
+ "name": "baseUrl",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "ogImage": {
+ "name": "ogImage",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "type": {
+ "name": "type",
+ "type": "text",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": "'page'"
+ },
+ "image": {
+ "name": "image",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "user": {
+ "name": "user",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ }
+ },
+ "indexes": {
+ "storedContent_url_idx": {
+ "name": "storedContent_url_idx",
+ "columns": ["url"],
+ "isUnique": false
+ },
+ "storedContent_savedAt_idx": {
+ "name": "storedContent_savedAt_idx",
+ "columns": ["savedAt"],
+ "isUnique": false
+ },
+ "storedContent_title_idx": {
+ "name": "storedContent_title_idx",
+ "columns": ["title"],
+ "isUnique": false
+ },
+ "storedContent_user_idx": {
+ "name": "storedContent_user_idx",
+ "columns": ["user"],
+ "isUnique": false
+ }
+ },
+ "foreignKeys": {
+ "storedContent_user_user_id_fk": {
+ "name": "storedContent_user_user_id_fk",
+ "tableFrom": "storedContent",
+ "tableTo": "user",
+ "columnsFrom": ["user"],
+ "columnsTo": ["id"],
+ "onDelete": "cascade",
+ "onUpdate": "no action"
+ }
+ },
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "user": {
+ "name": "user",
+ "columns": {
+ "id": {
+ "name": "id",
+ "type": "text(255)",
+ "primaryKey": true,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "name": {
+ "name": "name",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ },
+ "email": {
+ "name": "email",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "emailVerified": {
+ "name": "emailVerified",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false,
+ "default": "CURRENT_TIMESTAMP"
+ },
+ "image": {
+ "name": "image",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": false,
+ "autoincrement": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {},
+ "uniqueConstraints": {}
+ },
+ "verificationToken": {
+ "name": "verificationToken",
+ "columns": {
+ "identifier": {
+ "name": "identifier",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "token": {
+ "name": "token",
+ "type": "text(255)",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ },
+ "expires": {
+ "name": "expires",
+ "type": "integer",
+ "primaryKey": false,
+ "notNull": true,
+ "autoincrement": false
+ }
+ },
+ "indexes": {},
+ "foreignKeys": {},
+ "compositePrimaryKeys": {
+ "verificationToken_identifier_token_pk": {
+ "columns": ["identifier", "token"],
+ "name": "verificationToken_identifier_token_pk"
+ }
+ },
+ "uniqueConstraints": {}
+ }
+ },
+ "enums": {},
+ "_meta": {
+ "schemas": {},
+ "tables": {},
+ "columns": {}
+ }
+}
diff --git a/apps/web/migrations/meta/_journal.json b/apps/web/migrations/meta/_journal.json
new file mode 100644
index 00000000..a77d9616
--- /dev/null
+++ b/apps/web/migrations/meta/_journal.json
@@ -0,0 +1,13 @@
+{
+ "version": "6",
+ "dialect": "sqlite",
+ "entries": [
+ {
+ "idx": 0,
+ "version": "6",
+ "when": 1716677954608,
+ "tag": "0000_calm_monster_badoon",
+ "breakpoints": true
+ }
+ ]
+}
diff --git a/apps/web/next-env.d.ts b/apps/web/next-env.d.ts
new file mode 100644
index 00000000..4f11a03d
--- /dev/null
+++ b/apps/web/next-env.d.ts
@@ -0,0 +1,5 @@
+/// <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/apps/web/next.config.mjs b/apps/web/next.config.mjs
index 31faf8ff..51c492f4 100644
--- a/apps/web/next.config.mjs
+++ b/apps/web/next.config.mjs
@@ -1,20 +1,19 @@
+import MillionLint from "@million/lint";
import { setupDevPlatform } from "@cloudflare/next-on-pages/next-dev";
-// Here we use the @cloudflare/next-on-pages next-dev module to allow us to use bindings during local development
-// (when running the application with `next dev`), for more information see:
-// https://github.com/cloudflare/next-on-pages/blob/5712c57ea7/internal-packages/next-dev/README.md
-if (process.env.NODE_ENV === "development") {
- await setupDevPlatform();
-}
-
/** @type {import('next').NextConfig} */
const nextConfig = {
- eslint: {
- ignoreBuildErrors: true,
- },
- typescript: {
- ignoreBuildErrors: true,
- },
+ transpilePackages: ["@repo/ui"],
};
+export default MillionLint.next({
+ rsc: true,
+})(nextConfig);
-export default nextConfig;
+// we only need to use the utility during development so we can check NODE_ENV
+// (note: this check is recommended but completely optional)
+if (process.env.NODE_ENV === "development") {
+ // `await`ing the call is not necessary but it helps making sure that the setup has succeeded.
+ // If you cannot use top level awaits you could use the following to avoid an unhandled rejection:
+ // `setupDevPlatform().catch(e => console.error(e));`
+ await setupDevPlatform();
+}
diff --git a/apps/web/package.json b/apps/web/package.json
index 8dccd4d6..70ad3b46 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -1,56 +1,36 @@
{
"name": "web",
- "version": "0.1.0",
+ "version": "1.0.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
- "lint": "next lint",
+ "lint": "eslint . --max-warnings 0",
+ "cf-typegen": "wrangler types --env-interface CloudflareEnv env.d.ts",
"pages:build": "bunx @cloudflare/next-on-pages",
- "preview": "bun pages:build && wrangler pages dev .vercel/output/static",
- "deploy": "bun pages:build && wrangler pages deploy .vercel/output/static",
- "build-cf-types": "wrangler types --env-interface CloudflareEnv env.d.ts",
- "prepare-local-db": "drizzle-kit generate:sqlite --out db/prepare.sql && wrangler d1 execute dev-d1-anycontext --local --file=db/prepare.sql",
- "schema-change": "drizzle-kit generate:sqlite --out db/schema-change.sql && wrangler d1 execute dev-d1-anycontext --local --file=db/schema-change.sql"
+ "preview": "bun pages:build && wrangler pages dev",
+ "deploy": "bun pages:build && wrangler pages deploy"
},
"dependencies": {
- "@formkit/auto-animate": "^0.8.1",
- "@radix-ui/react-avatar": "^1.0.4",
- "@radix-ui/react-dialog": "^1.0.5",
- "@radix-ui/react-icons": "^1.3.0",
- "@radix-ui/react-popover": "^1.0.7",
- "@radix-ui/react-slot": "^1.0.2",
- "cheerio": "^1.0.0-rc.12",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "cmdk": "latest",
- "framer-motion": "^11.0.24",
- "lucide-react": "^0.338.0",
- "next": "14.2.0",
- "novel": "0.1.22",
- "react": "^18",
- "react-dom": "^18",
- "tailwind-merge": "^2.2.1",
- "tailwindcss": "^3.4.3",
- "tailwindcss-animate": "^1.0.7",
- "tiptap-markdown": "^0.8.10",
- "vaul": "^0.9.0"
+ "@million/lint": "^1.0.0-rc.11",
+ "@repo/ui": "*",
+ "million": "^3.1.6",
+ "next": "^14.1.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
},
"devDependencies": {
- "@cloudflare/next-on-pages": "1",
- "@cloudflare/workers-types": "^4.20240329.0",
- "@types/node": "^20",
- "@types/react": "^18",
- "@types/react-dom": "^18",
- "autoprefixer": "^10.0.1",
- "eslint": "^8",
- "eslint-config-next": "14.1.0",
- "eslint-plugin-next-on-pages": "^1.11.0",
- "postcss": "^8",
- "tailwind-scrollbar": "^3.1.0",
- "typescript": "^5",
- "vercel": "^33.6.2",
- "wrangler": "^3.41.0"
+ "@next/eslint-plugin-next": "^14.1.1",
+ "@repo/eslint-config": "*",
+ "@repo/typescript-config": "*",
+ "@repo/tailwind-config": "*",
+ "@repo/shared-types": "*",
+ "@types/eslint": "^8.56.5",
+ "@types/node": "^20.11.24",
+ "@types/react": "^18.2.61",
+ "@types/react-dom": "^18.2.19",
+ "eslint": "^8.57.0",
+ "typescript": "^5.3.3"
}
}
diff --git a/apps/web/postcss.config.js b/apps/web/postcss.config.js
index 12a703d9..2e342dc3 100644
--- a/apps/web/postcss.config.js
+++ b/apps/web/postcss.config.js
@@ -1,6 +1 @@
-module.exports = {
- plugins: {
- tailwindcss: {},
- autoprefixer: {},
- },
-};
+module.exports = require("@repo/tailwind-config/postcss.config");
diff --git a/apps/web/public/android-chrome-192x192.png b/apps/web/public/android-chrome-192x192.png
deleted file mode 100644
index 5e57b282..00000000
--- a/apps/web/public/android-chrome-192x192.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/android-chrome-512x512.png b/apps/web/public/android-chrome-512x512.png
deleted file mode 100644
index 2553425e..00000000
--- a/apps/web/public/android-chrome-512x512.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/apple-touch-icon.png b/apps/web/public/apple-touch-icon.png
deleted file mode 100644
index d55c6339..00000000
--- a/apps/web/public/apple-touch-icon.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/favicon-16x16.png b/apps/web/public/favicon-16x16.png
deleted file mode 100644
index 67fbac93..00000000
--- a/apps/web/public/favicon-16x16.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/favicon-32x32.png b/apps/web/public/favicon-32x32.png
deleted file mode 100644
index 2fc8f0b3..00000000
--- a/apps/web/public/favicon-32x32.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/favicon.ico b/apps/web/public/favicon.ico
index 163c3627..dd86c6dd 100644
--- a/apps/web/public/favicon.ico
+++ b/apps/web/public/favicon.ico
Binary files differ
diff --git a/apps/web/public/icons/android-chrome-192x192.png b/apps/web/public/icons/android-chrome-192x192.png
new file mode 100644
index 00000000..0b684f93
--- /dev/null
+++ b/apps/web/public/icons/android-chrome-192x192.png
Binary files differ
diff --git a/apps/web/public/icons/android-chrome-512x512.png b/apps/web/public/icons/android-chrome-512x512.png
new file mode 100644
index 00000000..b40756d0
--- /dev/null
+++ b/apps/web/public/icons/android-chrome-512x512.png
Binary files differ
diff --git a/apps/web/public/icons/apple-touch-icon.png b/apps/web/public/icons/apple-touch-icon.png
new file mode 100644
index 00000000..bb8cdb45
--- /dev/null
+++ b/apps/web/public/icons/apple-touch-icon.png
Binary files differ
diff --git a/apps/web/public/icons/black_without_bg.png b/apps/web/public/icons/black_without_bg.png
deleted file mode 100644
index 1bd7582d..00000000
--- a/apps/web/public/icons/black_without_bg.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/icons/brain-icon.png b/apps/web/public/icons/brain-icon.png
deleted file mode 100644
index cebe4095..00000000
--- a/apps/web/public/icons/brain-icon.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/icons/favicon-16x16.png b/apps/web/public/icons/favicon-16x16.png
new file mode 100644
index 00000000..12776519
--- /dev/null
+++ b/apps/web/public/icons/favicon-16x16.png
Binary files differ
diff --git a/apps/web/public/icons/favicon-32x32.png b/apps/web/public/icons/favicon-32x32.png
new file mode 100644
index 00000000..9686aff9
--- /dev/null
+++ b/apps/web/public/icons/favicon-32x32.png
Binary files differ
diff --git a/apps/web/public/icons/logo_bw_without_bg.png b/apps/web/public/icons/logo_bw_without_bg.png
deleted file mode 100644
index 167b9aea..00000000
--- a/apps/web/public/icons/logo_bw_without_bg.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/icons/logo_without_bg.png b/apps/web/public/icons/logo_without_bg.png
deleted file mode 100644
index 54313f60..00000000
--- a/apps/web/public/icons/logo_without_bg.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/icons/white_without_bg.png b/apps/web/public/icons/white_without_bg.png
deleted file mode 100644
index 4f7d8d42..00000000
--- a/apps/web/public/icons/white_without_bg.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/icons/wordmark.png b/apps/web/public/icons/wordmark.png
deleted file mode 100644
index 6fb4ee7b..00000000
--- a/apps/web/public/icons/wordmark.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/images/carousel-illustration-01.png b/apps/web/public/images/carousel-illustration-01.png
new file mode 100644
index 00000000..13ecb109
--- /dev/null
+++ b/apps/web/public/images/carousel-illustration-01.png
Binary files differ
diff --git a/apps/web/public/images/feature-illustration.png b/apps/web/public/images/feature-illustration.png
new file mode 100644
index 00000000..60d98263
--- /dev/null
+++ b/apps/web/public/images/feature-illustration.png
Binary files differ
diff --git a/apps/web/public/landing-bg-1.svg b/apps/web/public/landing-bg-1.svg
new file mode 100644
index 00000000..4154dade
--- /dev/null
+++ b/apps/web/public/landing-bg-1.svg
@@ -0,0 +1,12 @@
+<svg width="1512" height="1405" viewBox="0 0 1512 1405" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g opacity="0.4" filter="url(#filter0_f_380_454)">
+<rect x="-413" y="809.23" width="2320.46" height="298.291" transform="rotate(-30 -413 809.23)" fill="#369DFD"/>
+</g>
+<defs>
+<filter id="filter0_f_380_454" x="-750.4" y="-688.4" width="2833.52" height="2093.36" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
+<feGaussianBlur stdDeviation="168.7" result="effect1_foregroundBlur_380_454"/>
+</filter>
+</defs>
+</svg>
diff --git a/apps/web/public/landing-bg-2.svg b/apps/web/public/landing-bg-2.svg
new file mode 100644
index 00000000..4d0020e1
--- /dev/null
+++ b/apps/web/public/landing-bg-2.svg
@@ -0,0 +1,12 @@
+<svg width="1512" height="2500" viewBox="0 0 1512 2500" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g filter="url(#filter0_f_360_1234)">
+<rect x="927.59" y="2274.47" width="2361.16" height="535.813" transform="rotate(-135 927.59 2274.47)" fill="#577490" fill-opacity="0.1"/>
+</g>
+<defs>
+<filter id="filter0_f_360_1234" x="-967.1" y="0.899994" width="2498.67" height="2498.67" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
+<feGaussianBlur stdDeviation="112.55" result="effect1_foregroundBlur_360_1234"/>
+</filter>
+</defs>
+</svg>
diff --git a/apps/web/public/landing-ui-2.png b/apps/web/public/landing-ui-2.png
new file mode 100644
index 00000000..956da910
--- /dev/null
+++ b/apps/web/public/landing-ui-2.png
Binary files differ
diff --git a/apps/web/public/landing-ui.svg b/apps/web/public/landing-ui.svg
new file mode 100644
index 00000000..43e64a70
--- /dev/null
+++ b/apps/web/public/landing-ui.svg
@@ -0,0 +1,74 @@
+<svg width="1364" height="804" viewBox="0 0 1364 804" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="1.39184" y="1.39184" width="1361.22" height="800.306" rx="32.0122" fill="#171B1F"/>
+<rect x="1.39184" y="1.39184" width="1361.22" height="800.306" rx="32.0122" stroke="url(#paint0_linear_380_370)" stroke-width="2.78367"/>
+<g clip-path="url(#clip0_380_370)">
+<rect x="377.086" y="266.692" width="239.061" height="81.1905" rx="10.8254" fill="#1F2428"/>
+<path d="M390.55 328.266V331.818H389.643V323.945H390.55V326.836H390.627C390.765 326.531 390.973 326.289 391.25 326.11C391.529 325.928 391.901 325.837 392.365 325.837C392.767 325.837 393.119 325.917 393.422 326.079C393.724 326.238 393.959 326.483 394.125 326.813C394.294 327.141 394.379 327.559 394.379 328.066V331.818H393.472V328.128C393.472 327.659 393.35 327.296 393.107 327.04C392.866 326.781 392.531 326.652 392.103 326.652C391.806 326.652 391.539 326.714 391.304 326.84C391.07 326.966 390.886 327.149 390.75 327.39C390.617 327.631 390.55 327.923 390.55 328.266ZM398.931 325.914V326.682H395.871V325.914H398.931ZM396.763 324.499H397.671V330.127C397.671 330.383 397.708 330.575 397.782 330.704C397.859 330.829 397.956 330.914 398.074 330.957C398.195 330.998 398.321 331.019 398.455 331.019C398.555 331.019 398.637 331.014 398.701 331.003C398.765 330.991 398.816 330.98 398.855 330.973L399.039 331.788C398.978 331.811 398.892 331.834 398.782 331.857C398.671 331.882 398.532 331.895 398.362 331.895C398.106 331.895 397.855 331.84 397.609 331.73C397.366 331.62 397.163 331.452 397.002 331.226C396.843 331.001 396.763 330.716 396.763 330.373V324.499ZM403.189 325.914V326.682H400.129V325.914H403.189ZM401.021 324.499H401.928V330.127C401.928 330.383 401.965 330.575 402.039 330.704C402.116 330.829 402.214 330.914 402.332 330.957C402.452 330.998 402.579 331.019 402.712 331.019C402.812 331.019 402.894 331.014 402.958 331.003C403.022 330.991 403.074 330.98 403.112 330.973L403.297 331.788C403.235 331.811 403.149 331.834 403.039 331.857C402.929 331.882 402.789 331.895 402.62 331.895C402.364 331.895 402.112 331.84 401.866 331.73C401.623 331.62 401.421 331.452 401.259 331.226C401.1 331.001 401.021 330.716 401.021 330.373V324.499ZM404.878 334.033V325.914H405.755V326.852H405.862C405.929 326.749 406.021 326.618 406.139 326.459C406.26 326.298 406.431 326.155 406.654 326.029C406.88 325.901 407.185 325.837 407.569 325.837C408.066 325.837 408.505 325.961 408.884 326.21C409.263 326.458 409.559 326.811 409.772 327.267C409.985 327.723 410.091 328.261 410.091 328.881C410.091 329.507 409.985 330.049 409.772 330.507C409.559 330.964 409.265 331.317 408.888 331.568C408.511 331.817 408.077 331.941 407.585 331.941C407.205 331.941 406.902 331.879 406.674 331.753C406.446 331.625 406.27 331.48 406.147 331.319C406.024 331.155 405.929 331.019 405.862 330.911H405.786V334.033H404.878ZM405.77 328.866C405.77 329.312 405.836 329.705 405.966 330.046C406.097 330.384 406.288 330.65 406.539 330.842C406.79 331.032 407.098 331.126 407.462 331.126C407.841 331.126 408.157 331.026 408.411 330.827C408.667 330.624 408.86 330.352 408.988 330.012C409.119 329.668 409.184 329.286 409.184 328.866C409.184 328.451 409.12 328.077 408.992 327.743C408.866 327.408 408.675 327.142 408.419 326.948C408.165 326.75 407.846 326.652 407.462 326.652C407.093 326.652 406.783 326.745 406.531 326.932C406.28 327.117 406.091 327.376 405.962 327.709C405.834 328.039 405.77 328.425 405.77 328.866ZM415.982 327.236L415.167 327.467C415.116 327.331 415.041 327.199 414.941 327.071C414.843 326.94 414.71 326.832 414.541 326.748C414.372 326.663 414.155 326.621 413.891 326.621C413.53 326.621 413.229 326.704 412.988 326.871C412.749 327.035 412.63 327.244 412.63 327.497C412.63 327.723 412.712 327.901 412.876 328.032C413.04 328.162 413.297 328.271 413.645 328.359L414.522 328.574C415.049 328.702 415.443 328.898 415.702 329.162C415.961 329.423 416.09 329.76 416.09 330.173C416.09 330.511 415.993 330.814 415.798 331.08C415.606 331.347 415.337 331.557 414.991 331.711C414.645 331.864 414.242 331.941 413.783 331.941C413.181 331.941 412.683 331.811 412.288 331.549C411.893 331.288 411.643 330.906 411.538 330.404L412.4 330.188C412.482 330.506 412.637 330.745 412.865 330.903C413.095 331.062 413.396 331.142 413.768 331.142C414.191 331.142 414.527 331.052 414.775 330.873C415.026 330.691 415.152 330.473 415.152 330.219C415.152 330.014 415.08 329.842 414.937 329.704C414.793 329.563 414.573 329.458 414.276 329.389L413.291 329.158C412.751 329.03 412.353 328.831 412.1 328.562C411.849 328.291 411.723 327.951 411.723 327.544C411.723 327.21 411.816 326.916 412.004 326.659C412.193 326.403 412.451 326.202 412.776 326.056C413.104 325.91 413.476 325.837 413.891 325.837C414.475 325.837 414.934 325.965 415.267 326.221C415.603 326.477 415.841 326.816 415.982 327.236ZM418.442 331.88C418.252 331.88 418.089 331.812 417.953 331.676C417.818 331.54 417.75 331.378 417.75 331.188C417.75 330.998 417.818 330.836 417.953 330.7C418.089 330.564 418.252 330.496 418.442 330.496C418.631 330.496 418.794 330.564 418.93 330.7C419.066 330.836 419.134 330.998 419.134 331.188C419.134 331.313 419.102 331.429 419.037 331.534C418.976 331.639 418.893 331.724 418.788 331.788C418.685 331.849 418.57 331.88 418.442 331.88ZM418.442 327.497C418.252 327.497 418.089 327.43 417.953 327.294C417.818 327.158 417.75 326.995 417.75 326.805C417.75 326.616 417.818 326.453 417.953 326.317C418.089 326.181 418.252 326.113 418.442 326.113C418.631 326.113 418.794 326.181 418.93 326.317C419.066 326.453 419.134 326.616 419.134 326.805C419.134 326.931 419.102 327.046 419.037 327.151C418.976 327.257 418.893 327.341 418.788 327.405C418.685 327.467 418.57 327.497 418.442 327.497ZM423.87 323.576L421.332 333.002H420.502L423.039 323.576H423.87ZM428.053 323.576L425.516 333.002H424.686L427.223 323.576H428.053ZM431.683 331.941C431.191 331.941 430.756 331.817 430.38 331.568C430.003 331.317 429.708 330.964 429.496 330.507C429.283 330.049 429.176 329.507 429.176 328.881C429.176 328.261 429.283 327.723 429.496 327.267C429.708 326.811 430.004 326.458 430.384 326.21C430.763 325.961 431.201 325.837 431.698 325.837C432.083 325.837 432.386 325.901 432.609 326.029C432.835 326.155 433.007 326.298 433.125 326.459C433.245 326.618 433.339 326.749 433.405 326.852H433.482V323.945H434.389V331.818H433.513V330.911H433.405C433.339 331.019 433.244 331.155 433.121 331.319C432.998 331.48 432.822 331.625 432.594 331.753C432.366 331.879 432.062 331.941 431.683 331.941ZM431.806 331.126C432.17 331.126 432.477 331.032 432.729 330.842C432.98 330.65 433.171 330.384 433.301 330.046C433.432 329.705 433.497 329.312 433.497 328.866C433.497 328.425 433.433 328.039 433.305 327.709C433.177 327.376 432.987 327.117 432.736 326.932C432.485 326.745 432.175 326.652 431.806 326.652C431.422 326.652 431.101 326.75 430.845 326.948C430.591 327.142 430.4 327.408 430.272 327.743C430.146 328.077 430.084 328.451 430.084 328.866C430.084 329.286 430.148 329.668 430.276 330.012C430.407 330.352 430.599 330.624 430.853 330.827C431.109 331.026 431.427 331.126 431.806 331.126ZM437.409 328.266V331.818H436.502V323.945H437.409V326.836H437.486C437.624 326.531 437.832 326.289 438.108 326.11C438.388 325.928 438.759 325.837 439.223 325.837C439.626 325.837 439.978 325.917 440.28 326.079C440.583 326.238 440.817 326.483 440.984 326.813C441.153 327.141 441.238 327.559 441.238 328.066V331.818H440.33V328.128C440.33 327.659 440.209 327.296 439.965 327.04C439.724 326.781 439.39 326.652 438.962 326.652C438.665 326.652 438.398 326.714 438.162 326.84C437.929 326.966 437.745 327.149 437.609 327.39C437.475 327.631 437.409 327.923 437.409 328.266ZM443.222 331.818V325.914H444.099V326.805H444.16C444.268 326.513 444.463 326.276 444.745 326.094C445.026 325.912 445.344 325.821 445.698 325.821C445.765 325.821 445.848 325.823 445.948 325.825C446.048 325.828 446.123 325.832 446.175 325.837V326.759C446.144 326.752 446.073 326.74 445.963 326.725C445.856 326.707 445.741 326.698 445.621 326.698C445.334 326.698 445.078 326.758 444.852 326.879C444.629 326.996 444.452 327.16 444.322 327.371C444.194 327.578 444.129 327.815 444.129 328.082V331.818H443.222ZM449.312 331.957C448.938 331.957 448.599 331.886 448.294 331.745C447.989 331.602 447.747 331.395 447.567 331.126C447.388 330.855 447.298 330.527 447.298 330.142C447.298 329.804 447.365 329.53 447.498 329.32C447.631 329.107 447.809 328.94 448.032 328.82C448.255 328.699 448.501 328.61 448.77 328.551C449.042 328.489 449.315 328.441 449.589 328.405C449.948 328.359 450.239 328.324 450.462 328.301C450.687 328.275 450.851 328.233 450.954 328.174C451.059 328.115 451.112 328.013 451.112 327.866V327.836C451.112 327.456 451.008 327.162 450.8 326.952C450.595 326.741 450.284 326.636 449.866 326.636C449.433 326.636 449.093 326.731 448.847 326.921C448.601 327.11 448.428 327.313 448.328 327.528L447.467 327.221C447.621 326.862 447.826 326.582 448.082 326.383C448.341 326.18 448.623 326.039 448.928 325.96C449.236 325.878 449.538 325.837 449.835 325.837C450.025 325.837 450.243 325.86 450.489 325.906C450.737 325.949 450.977 326.04 451.208 326.179C451.441 326.317 451.634 326.526 451.788 326.805C451.942 327.085 452.019 327.459 452.019 327.928V331.818H451.112V331.019H451.065C451.004 331.147 450.901 331.284 450.758 331.43C450.614 331.576 450.423 331.7 450.185 331.803C449.947 331.905 449.656 331.957 449.312 331.957ZM449.451 331.142C449.81 331.142 450.112 331.071 450.358 330.93C450.607 330.789 450.794 330.607 450.919 330.384C451.047 330.161 451.112 329.927 451.112 329.681V328.851C451.073 328.897 450.988 328.939 450.858 328.977C450.73 329.013 450.581 329.045 450.412 329.074C450.245 329.099 450.083 329.122 449.924 329.143C449.767 329.161 449.64 329.176 449.543 329.189C449.307 329.22 449.087 329.27 448.882 329.339C448.679 329.405 448.515 329.507 448.39 329.643C448.267 329.776 448.205 329.958 448.205 330.188C448.205 330.504 448.322 330.742 448.555 330.903C448.791 331.062 449.089 331.142 449.451 331.142ZM458.616 325.914L456.433 331.818H455.51L453.327 325.914H454.311L455.941 330.619H456.002L457.632 325.914H458.616ZM460.723 334.033C460.569 334.033 460.432 334.02 460.312 333.994C460.191 333.971 460.108 333.948 460.062 333.925L460.292 333.125C460.513 333.182 460.708 333.202 460.877 333.187C461.046 333.172 461.196 333.096 461.326 332.96C461.46 332.827 461.581 332.61 461.692 332.31L461.861 331.849L459.677 325.914H460.661L462.291 330.619H462.353L463.983 325.914H464.967L462.461 332.679C462.348 332.984 462.208 333.237 462.042 333.437C461.875 333.639 461.681 333.789 461.461 333.887C461.243 333.984 460.997 334.033 460.723 334.033ZM468.047 331.957C467.673 331.957 467.333 331.886 467.028 331.745C466.723 331.602 466.481 331.395 466.302 331.126C466.122 330.855 466.033 330.527 466.033 330.142C466.033 329.804 466.099 329.53 466.233 329.32C466.366 329.107 466.544 328.94 466.767 328.82C466.99 328.699 467.236 328.61 467.505 328.551C467.777 328.489 468.05 328.441 468.324 328.405C468.683 328.359 468.974 328.324 469.197 328.301C469.422 328.275 469.586 328.233 469.689 328.174C469.794 328.115 469.846 328.013 469.846 327.866V327.836C469.846 327.456 469.742 327.162 469.535 326.952C469.33 326.741 469.018 326.636 468.601 326.636C468.168 326.636 467.828 326.731 467.582 326.921C467.336 327.11 467.163 327.313 467.063 327.528L466.202 327.221C466.356 326.862 466.561 326.582 466.817 326.383C467.076 326.18 467.358 326.039 467.663 325.96C467.97 325.878 468.273 325.837 468.57 325.837C468.76 325.837 468.977 325.86 469.223 325.906C469.472 325.949 469.712 326.04 469.942 326.179C470.176 326.317 470.369 326.526 470.523 326.805C470.677 327.085 470.753 327.459 470.753 327.928V331.818H469.846V331.019H469.8C469.739 331.147 469.636 331.284 469.493 331.43C469.349 331.576 469.158 331.7 468.92 331.803C468.681 331.905 468.391 331.957 468.047 331.957ZM468.185 331.142C468.544 331.142 468.847 331.071 469.093 330.93C469.341 330.789 469.528 330.607 469.654 330.384C469.782 330.161 469.846 329.927 469.846 329.681V328.851C469.808 328.897 469.723 328.939 469.592 328.977C469.464 329.013 469.316 329.045 469.147 329.074C468.98 329.099 468.817 329.122 468.658 329.143C468.502 329.161 468.375 329.176 468.278 329.189C468.042 329.22 467.822 329.27 467.617 329.339C467.414 329.405 467.25 329.507 467.124 329.643C467.001 329.776 466.94 329.958 466.94 330.188C466.94 330.504 467.057 330.742 467.29 330.903C467.526 331.062 467.824 331.142 468.185 331.142ZM473.395 331.88C473.206 331.88 473.043 331.812 472.907 331.676C472.771 331.54 472.703 331.378 472.703 331.188C472.703 330.998 472.771 330.836 472.907 330.7C473.043 330.564 473.206 330.496 473.395 330.496C473.585 330.496 473.748 330.564 473.884 330.7C474.019 330.836 474.087 330.998 474.087 331.188C474.087 331.313 474.055 331.429 473.991 331.534C473.93 331.639 473.846 331.724 473.741 331.788C473.639 331.849 473.523 331.88 473.395 331.88ZM478.27 331.941C477.778 331.941 477.343 331.817 476.967 331.568C476.59 331.317 476.295 330.964 476.082 330.507C475.87 330.049 475.763 329.507 475.763 328.881C475.763 328.261 475.87 327.723 476.082 327.267C476.295 326.811 476.591 326.458 476.97 326.21C477.35 325.961 477.788 325.837 478.285 325.837C478.67 325.837 478.973 325.901 479.196 326.029C479.422 326.155 479.593 326.298 479.711 326.459C479.832 326.618 479.925 326.749 479.992 326.852H480.069V323.945H480.976V331.818H480.1V330.911H479.992C479.925 331.019 479.831 331.155 479.707 331.319C479.584 331.48 479.409 331.625 479.181 331.753C478.953 331.879 478.649 331.941 478.27 331.941ZM478.393 331.126C478.757 331.126 479.064 331.032 479.315 330.842C479.567 330.65 479.757 330.384 479.888 330.046C480.019 329.705 480.084 329.312 480.084 328.866C480.084 328.425 480.02 328.039 479.892 327.709C479.764 327.376 479.574 327.117 479.323 326.932C479.072 326.745 478.762 326.652 478.393 326.652C478.008 326.652 477.688 326.75 477.432 326.948C477.178 327.142 476.987 327.408 476.859 327.743C476.733 328.077 476.671 328.451 476.671 328.866C476.671 329.286 476.735 329.668 476.863 330.012C476.993 330.352 477.186 330.624 477.439 330.827C477.696 331.026 478.013 331.126 478.393 331.126ZM485.564 331.941C484.995 331.941 484.504 331.816 484.092 331.565C483.682 331.311 483.365 330.957 483.142 330.504C482.922 330.047 482.812 329.517 482.812 328.912C482.812 328.307 482.922 327.774 483.142 327.313C483.365 326.849 483.675 326.488 484.073 326.229C484.472 325.967 484.939 325.837 485.472 325.837C485.779 325.837 486.083 325.888 486.383 325.99C486.683 326.093 486.956 326.26 487.202 326.49C487.448 326.718 487.644 327.021 487.79 327.397C487.936 327.774 488.009 328.238 488.009 328.789V329.174H483.457V328.389H487.086C487.086 328.056 487.02 327.759 486.887 327.497C486.756 327.236 486.569 327.03 486.325 326.879C486.084 326.727 485.8 326.652 485.472 326.652C485.111 326.652 484.798 326.741 484.534 326.921C484.272 327.098 484.071 327.328 483.93 327.613C483.789 327.897 483.719 328.202 483.719 328.528V329.051C483.719 329.496 483.796 329.874 483.95 330.185C484.106 330.492 484.322 330.727 484.599 330.888C484.876 331.047 485.198 331.126 485.564 331.126C485.802 331.126 486.018 331.093 486.21 331.026C486.405 330.957 486.573 330.855 486.714 330.719C486.855 330.581 486.963 330.409 487.04 330.204L487.917 330.45C487.825 330.747 487.67 331.009 487.452 331.234C487.234 331.457 486.965 331.631 486.644 331.757C486.324 331.88 485.964 331.941 485.564 331.941ZM494.363 325.914L492.179 331.818H491.256L489.073 325.914H490.057L491.687 330.619H491.748L493.378 325.914H494.363ZM498.055 323.576L495.518 333.002H494.687L497.225 323.576H498.055ZM499.455 334.033V325.914H500.332V326.852H500.439C500.506 326.749 500.598 326.618 500.716 326.459C500.836 326.298 501.008 326.155 501.231 326.029C501.457 325.901 501.762 325.837 502.146 325.837C502.643 325.837 503.081 325.961 503.461 326.21C503.84 326.458 504.136 326.811 504.349 327.267C504.562 327.723 504.668 328.261 504.668 328.881C504.668 329.507 504.562 330.049 504.349 330.507C504.136 330.964 503.841 331.317 503.465 331.568C503.088 331.817 502.654 331.941 502.161 331.941C501.782 331.941 501.478 331.879 501.25 331.753C501.022 331.625 500.847 331.48 500.724 331.319C500.601 331.155 500.506 331.019 500.439 330.911H500.362V334.033H499.455ZM500.347 328.866C500.347 329.312 500.412 329.705 500.543 330.046C500.674 330.384 500.865 330.65 501.116 330.842C501.367 331.032 501.675 331.126 502.038 331.126C502.418 331.126 502.734 331.026 502.988 330.827C503.244 330.624 503.436 330.352 503.565 330.012C503.695 329.668 503.761 329.286 503.761 328.866C503.761 328.451 503.697 328.077 503.568 327.743C503.443 327.408 503.252 327.142 502.996 326.948C502.742 326.75 502.423 326.652 502.038 326.652C501.669 326.652 501.359 326.745 501.108 326.932C500.857 327.117 500.667 327.376 500.539 327.709C500.411 328.039 500.347 328.425 500.347 328.866ZM506.377 331.818V325.914H507.253V326.805H507.315C507.422 326.513 507.617 326.276 507.899 326.094C508.181 325.912 508.499 325.821 508.852 325.821C508.919 325.821 509.002 325.823 509.102 325.825C509.202 325.828 509.278 325.832 509.329 325.837V326.759C509.298 326.752 509.228 326.74 509.118 326.725C509.01 326.707 508.896 326.698 508.775 326.698C508.488 326.698 508.232 326.758 508.007 326.879C507.784 326.996 507.607 327.16 507.476 327.371C507.348 327.578 507.284 327.815 507.284 328.082V331.818H506.377ZM512.948 331.941C512.415 331.941 511.947 331.815 511.545 331.561C511.145 331.307 510.833 330.952 510.607 330.496C510.384 330.04 510.273 329.507 510.273 328.897C510.273 328.282 510.384 327.745 510.607 327.286C510.833 326.827 511.145 326.471 511.545 326.217C511.947 325.964 512.415 325.837 512.948 325.837C513.481 325.837 513.948 325.964 514.348 326.217C514.75 326.471 515.063 326.827 515.286 327.286C515.511 327.745 515.624 328.282 515.624 328.897C515.624 329.507 515.511 330.04 515.286 330.496C515.063 330.952 514.75 331.307 514.348 331.561C513.948 331.815 513.481 331.941 512.948 331.941ZM512.948 331.126C513.353 331.126 513.686 331.023 513.948 330.815C514.209 330.607 514.403 330.334 514.528 329.996C514.654 329.658 514.717 329.291 514.717 328.897C514.717 328.502 514.654 328.134 514.528 327.793C514.403 327.453 514.209 327.177 513.948 326.967C513.686 326.757 513.353 326.652 512.948 326.652C512.543 326.652 512.21 326.757 511.949 326.967C511.687 327.177 511.494 327.453 511.368 327.793C511.243 328.134 511.18 328.502 511.18 328.897C511.18 329.291 511.243 329.658 511.368 329.996C511.494 330.334 511.687 330.607 511.949 330.815C512.21 331.023 512.543 331.126 512.948 331.126ZM517.333 325.914H518.241V332.249C518.241 332.613 518.178 332.928 518.052 333.195C517.929 333.461 517.742 333.667 517.491 333.814C517.243 333.96 516.929 334.033 516.549 334.033C516.519 334.033 516.488 334.033 516.457 334.033C516.426 334.033 516.395 334.033 516.365 334.033V333.187C516.395 333.187 516.424 333.187 516.449 333.187C516.475 333.187 516.503 333.187 516.534 333.187C516.811 333.187 517.013 333.105 517.141 332.941C517.269 332.779 517.333 332.549 517.333 332.249V325.914ZM517.779 324.929C517.603 324.929 517.45 324.869 517.322 324.749C517.196 324.628 517.134 324.484 517.134 324.314C517.134 324.145 517.196 324 517.322 323.88C517.45 323.76 517.603 323.699 517.779 323.699C517.956 323.699 518.107 323.76 518.233 323.88C518.361 324 518.425 324.145 518.425 324.314C518.425 324.484 518.361 324.628 518.233 324.749C518.107 324.869 517.956 324.929 517.779 324.929ZM522.703 331.941C522.134 331.941 521.643 331.816 521.231 331.565C520.82 331.311 520.504 330.957 520.281 330.504C520.061 330.047 519.95 329.517 519.95 328.912C519.95 328.307 520.061 327.774 520.281 327.313C520.504 326.849 520.814 326.488 521.211 326.229C521.611 325.967 522.078 325.837 522.611 325.837C522.918 325.837 523.222 325.888 523.522 325.99C523.822 326.093 524.094 326.26 524.341 326.49C524.587 326.718 524.783 327.021 524.929 327.397C525.075 327.774 525.148 328.238 525.148 328.789V329.174H520.596V328.389H524.225C524.225 328.056 524.159 327.759 524.025 327.497C523.895 327.236 523.707 327.03 523.464 326.879C523.223 326.727 522.939 326.652 522.611 326.652C522.249 326.652 521.937 326.741 521.673 326.921C521.411 327.098 521.21 327.328 521.069 327.613C520.928 327.897 520.858 328.202 520.858 328.528V329.051C520.858 329.496 520.935 329.874 521.088 330.185C521.245 330.492 521.461 330.727 521.738 330.888C522.015 331.047 522.336 331.126 522.703 331.126C522.941 331.126 523.156 331.093 523.349 331.026C523.543 330.957 523.711 330.855 523.852 330.719C523.993 330.581 524.102 330.409 524.179 330.204L525.056 330.45C524.963 330.747 524.808 331.009 524.59 331.234C524.373 331.457 524.103 331.631 523.783 331.757C523.463 331.88 523.103 331.941 522.703 331.941ZM529.251 331.941C528.698 331.941 528.221 331.811 527.821 331.549C527.422 331.288 527.114 330.928 526.899 330.469C526.684 330.01 526.576 329.486 526.576 328.897C526.576 328.297 526.686 327.768 526.906 327.309C527.129 326.848 527.44 326.488 527.837 326.229C528.237 325.967 528.703 325.837 529.236 325.837C529.651 325.837 530.025 325.914 530.359 326.067C530.692 326.221 530.965 326.436 531.177 326.713C531.39 326.99 531.522 327.313 531.573 327.682H530.666C530.597 327.413 530.443 327.175 530.205 326.967C529.969 326.757 529.651 326.652 529.251 326.652C528.898 326.652 528.588 326.744 528.321 326.928C528.057 327.11 527.851 327.368 527.702 327.701C527.556 328.032 527.483 328.42 527.483 328.866C527.483 329.322 527.555 329.719 527.698 330.058C527.844 330.396 528.049 330.659 528.313 330.846C528.58 331.033 528.893 331.126 529.251 331.126C529.487 331.126 529.701 331.085 529.893 331.003C530.086 330.921 530.248 330.803 530.382 330.65C530.515 330.496 530.61 330.311 530.666 330.096H531.573C531.522 330.445 531.395 330.759 531.193 331.038C530.993 331.315 530.728 331.535 530.397 331.699C530.069 331.861 529.687 331.941 529.251 331.941ZM535.792 325.914V326.682H532.732V325.914H535.792ZM533.624 324.499H534.531V330.127C534.531 330.383 534.569 330.575 534.643 330.704C534.72 330.829 534.817 330.914 534.935 330.957C535.056 330.998 535.182 331.019 535.316 331.019C535.416 331.019 535.498 331.014 535.562 331.003C535.626 330.991 535.677 330.98 535.715 330.973L535.9 331.788C535.838 331.811 535.753 331.834 535.642 331.857C535.532 331.882 535.393 331.895 535.223 331.895C534.967 331.895 534.716 331.84 534.47 331.73C534.226 331.62 534.024 331.452 533.863 331.226C533.704 331.001 533.624 330.716 533.624 330.373V324.499ZM541.559 327.236L540.744 327.467C540.692 327.331 540.617 327.199 540.517 327.071C540.419 326.94 540.286 326.832 540.117 326.748C539.948 326.663 539.731 326.621 539.467 326.621C539.106 326.621 538.805 326.704 538.564 326.871C538.326 327.035 538.206 327.244 538.206 327.497C538.206 327.723 538.288 327.901 538.453 328.032C538.617 328.162 538.873 328.271 539.221 328.359L540.098 328.574C540.626 328.702 541.019 328.898 541.278 329.162C541.537 329.423 541.666 329.76 541.666 330.173C541.666 330.511 541.569 330.814 541.374 331.08C541.182 331.347 540.913 331.557 540.567 331.711C540.221 331.864 539.818 331.941 539.36 331.941C538.757 331.941 538.259 331.811 537.864 331.549C537.47 331.288 537.22 330.906 537.115 330.404L537.976 330.188C538.058 330.506 538.213 330.745 538.441 330.903C538.672 331.062 538.973 331.142 539.344 331.142C539.767 331.142 540.103 331.052 540.352 330.873C540.603 330.691 540.728 330.473 540.728 330.219C540.728 330.014 540.657 329.842 540.513 329.704C540.37 329.563 540.149 329.458 539.852 329.389L538.868 329.158C538.327 329.03 537.93 328.831 537.676 328.562C537.425 328.291 537.299 327.951 537.299 327.544C537.299 327.21 537.393 326.916 537.58 326.659C537.77 326.403 538.027 326.202 538.353 326.056C538.681 325.91 539.052 325.837 539.467 325.837C540.052 325.837 540.51 325.965 540.844 326.221C541.179 326.477 541.418 326.816 541.559 327.236Z" fill="#B8C4C6"/>
+<path d="M392.477 288.615H389.845V280.086H392.594C393.421 280.086 394.129 280.256 394.718 280.598C395.306 280.937 395.758 281.424 396.071 282.06C396.385 282.693 396.542 283.451 396.542 284.334C396.542 285.222 396.384 285.987 396.067 286.628C395.751 287.267 395.29 287.758 394.685 288.103C394.079 288.444 393.344 288.615 392.477 288.615ZM390.878 287.699H392.411C393.116 287.699 393.7 287.562 394.164 287.29C394.628 287.018 394.973 286.631 395.201 286.128C395.429 285.626 395.542 285.028 395.542 284.334C395.542 283.645 395.43 283.052 395.205 282.555C394.98 282.056 394.644 281.672 394.197 281.406C393.75 281.137 393.194 281.002 392.527 281.002H390.878V287.699ZM399.476 284.767V288.615H398.493V280.086H399.476V283.217H399.559C399.709 282.887 399.934 282.625 400.234 282.43C400.536 282.233 400.939 282.135 401.442 282.135C401.877 282.135 402.259 282.222 402.587 282.397C402.914 282.569 403.168 282.834 403.349 283.192C403.532 283.548 403.624 284 403.624 284.55V288.615H402.641V284.617C402.641 284.109 402.509 283.716 402.245 283.438C401.984 283.158 401.622 283.018 401.158 283.018C400.836 283.018 400.548 283.086 400.292 283.222C400.039 283.358 399.84 283.556 399.692 283.817C399.548 284.078 399.476 284.395 399.476 284.767ZM405.774 288.615V282.218H406.723V283.184H406.79C406.906 282.868 407.117 282.611 407.423 282.414C407.728 282.217 408.073 282.118 408.456 282.118C408.528 282.118 408.618 282.119 408.726 282.122C408.835 282.125 408.917 282.129 408.972 282.135V283.134C408.939 283.126 408.862 283.113 408.743 283.097C408.626 283.077 408.503 283.067 408.372 283.067C408.061 283.067 407.784 283.133 407.539 283.263C407.298 283.391 407.106 283.569 406.965 283.796C406.826 284.021 406.757 284.278 406.757 284.567V288.615H405.774ZM412.371 288.765C411.966 288.765 411.598 288.688 411.268 288.536C410.937 288.38 410.675 288.157 410.481 287.865C410.286 287.571 410.189 287.215 410.189 286.799C410.189 286.432 410.261 286.135 410.406 285.908C410.55 285.677 410.743 285.497 410.985 285.366C411.226 285.236 411.493 285.139 411.784 285.075C412.078 285.008 412.374 284.955 412.671 284.917C413.06 284.867 413.375 284.829 413.617 284.804C413.861 284.776 414.039 284.731 414.15 284.667C414.264 284.603 414.32 284.492 414.32 284.334V284.3C414.32 283.889 414.208 283.57 413.983 283.342C413.761 283.115 413.424 283.001 412.971 283.001C412.502 283.001 412.134 283.104 411.867 283.309C411.601 283.514 411.414 283.734 411.305 283.967L410.372 283.634C410.539 283.245 410.761 282.943 411.039 282.726C411.319 282.507 411.625 282.354 411.955 282.268C412.288 282.179 412.616 282.135 412.938 282.135C413.143 282.135 413.379 282.16 413.646 282.21C413.915 282.257 414.175 282.355 414.425 282.505C414.677 282.655 414.887 282.881 415.053 283.184C415.22 283.487 415.303 283.892 415.303 284.4V288.615H414.32V287.749H414.27C414.204 287.887 414.093 288.036 413.937 288.194C413.782 288.352 413.575 288.487 413.317 288.598C413.059 288.709 412.743 288.765 412.371 288.765ZM412.521 287.882C412.91 287.882 413.238 287.805 413.504 287.653C413.773 287.5 413.976 287.303 414.112 287.061C414.251 286.82 414.32 286.566 414.32 286.299V285.4C414.279 285.45 414.187 285.495 414.046 285.537C413.907 285.576 413.746 285.611 413.562 285.641C413.382 285.669 413.206 285.694 413.034 285.716C412.864 285.736 412.727 285.752 412.621 285.766C412.366 285.799 412.127 285.854 411.905 285.929C411.686 286.001 411.508 286.11 411.372 286.258C411.239 286.402 411.172 286.599 411.172 286.849C411.172 287.19 411.298 287.449 411.551 287.624C411.806 287.796 412.13 287.882 412.521 287.882ZM422.451 282.218L420.085 288.615H419.086L416.72 282.218H417.786L419.552 287.315H419.619L421.385 282.218H422.451ZM424.733 291.014C424.566 291.014 424.418 291 424.287 290.972C424.157 290.947 424.066 290.922 424.016 290.897L424.266 290.031C424.505 290.092 424.716 290.114 424.899 290.097C425.083 290.081 425.245 289.999 425.387 289.852C425.531 289.707 425.663 289.473 425.782 289.148L425.966 288.648L423.6 282.218H424.666L426.432 287.315H426.499L428.264 282.218H429.331L426.615 289.548C426.493 289.878 426.342 290.151 426.161 290.368C425.981 290.587 425.771 290.75 425.532 290.855C425.296 290.961 425.03 291.014 424.733 291.014ZM432.667 288.765C432.262 288.765 431.894 288.688 431.564 288.536C431.233 288.38 430.971 288.157 430.777 287.865C430.582 287.571 430.485 287.215 430.485 286.799C430.485 286.432 430.557 286.135 430.702 285.908C430.846 285.677 431.039 285.497 431.281 285.366C431.522 285.236 431.789 285.139 432.08 285.075C432.374 285.008 432.67 284.955 432.967 284.917C433.356 284.867 433.671 284.829 433.913 284.804C434.157 284.776 434.335 284.731 434.446 284.667C434.559 284.603 434.616 284.492 434.616 284.334V284.3C434.616 283.889 434.504 283.57 434.279 283.342C434.057 283.115 433.72 283.001 433.267 283.001C432.798 283.001 432.43 283.104 432.163 283.309C431.897 283.514 431.709 283.734 431.601 283.967L430.668 283.634C430.835 283.245 431.057 282.943 431.335 282.726C431.615 282.507 431.92 282.354 432.251 282.268C432.584 282.179 432.912 282.135 433.234 282.135C433.439 282.135 433.675 282.16 433.942 282.21C434.211 282.257 434.471 282.355 434.72 282.505C434.973 282.655 435.183 282.881 435.349 283.184C435.516 283.487 435.599 283.892 435.599 284.4V288.615H434.616V287.749H434.566C434.5 287.887 434.389 288.036 434.233 288.194C434.078 288.352 433.871 288.487 433.613 288.598C433.354 288.709 433.039 288.765 432.667 288.765ZM432.817 287.882C433.206 287.882 433.534 287.805 433.8 287.653C434.069 287.5 434.272 287.303 434.408 287.061C434.547 286.82 434.616 286.566 434.616 286.299V285.4C434.575 285.45 434.483 285.495 434.341 285.537C434.203 285.576 434.042 285.611 433.858 285.641C433.678 285.669 433.502 285.694 433.329 285.716C433.16 285.736 433.023 285.752 432.917 285.766C432.662 285.799 432.423 285.854 432.201 285.929C431.982 286.001 431.804 286.11 431.668 286.258C431.535 286.402 431.468 286.599 431.468 286.849C431.468 287.19 431.594 287.449 431.847 287.624C432.102 287.796 432.426 287.882 432.817 287.882ZM446.193 282.218C446.143 281.796 445.94 281.468 445.585 281.235C445.229 281.002 444.793 280.885 444.277 280.885C443.899 280.885 443.569 280.946 443.286 281.068C443.005 281.191 442.786 281.359 442.628 281.572C442.472 281.786 442.395 282.029 442.395 282.301C442.395 282.529 442.449 282.725 442.557 282.888C442.668 283.049 442.81 283.184 442.982 283.292C443.154 283.398 443.334 283.485 443.523 283.555C443.712 283.621 443.886 283.676 444.044 283.717L444.91 283.95C445.132 284.009 445.379 284.089 445.651 284.192C445.926 284.295 446.189 284.435 446.438 284.613C446.691 284.787 446.899 285.012 447.063 285.287C447.227 285.562 447.309 285.899 447.309 286.299C447.309 286.76 447.188 287.177 446.947 287.549C446.708 287.921 446.358 288.216 445.897 288.436C445.439 288.655 444.882 288.765 444.227 288.765C443.616 288.765 443.087 288.666 442.64 288.469C442.196 288.272 441.846 287.997 441.591 287.644C441.338 287.292 441.195 286.882 441.162 286.416H442.228C442.256 286.738 442.364 287.004 442.553 287.215C442.744 287.424 442.986 287.579 443.278 287.682C443.572 287.782 443.888 287.832 444.227 287.832C444.621 287.832 444.975 287.768 445.289 287.64C445.603 287.51 445.851 287.329 446.034 287.099C446.218 286.866 446.309 286.594 446.309 286.283C446.309 285.999 446.23 285.769 446.072 285.591C445.914 285.414 445.705 285.269 445.447 285.158C445.189 285.047 444.91 284.95 444.61 284.867L443.561 284.567C442.894 284.375 442.367 284.102 441.978 283.746C441.589 283.391 441.395 282.926 441.395 282.351C441.395 281.874 441.524 281.457 441.782 281.102C442.043 280.744 442.393 280.466 442.832 280.269C443.273 280.069 443.766 279.969 444.31 279.969C444.86 279.969 445.349 280.068 445.776 280.265C446.204 280.459 446.543 280.726 446.792 281.064C447.045 281.403 447.178 281.788 447.192 282.218H446.193ZM450.208 284.767V288.615H449.226V280.086H450.208V283.217H450.292C450.442 282.887 450.666 282.625 450.966 282.43C451.269 282.233 451.672 282.135 452.174 282.135C452.61 282.135 452.992 282.222 453.319 282.397C453.647 282.569 453.901 282.834 454.081 283.192C454.265 283.548 454.356 284 454.356 284.55V288.615H453.373V284.617C453.373 284.109 453.242 283.716 452.978 283.438C452.717 283.158 452.355 283.018 451.891 283.018C451.569 283.018 451.28 283.086 451.025 283.222C450.772 283.358 450.572 283.556 450.425 283.817C450.281 284.078 450.208 284.395 450.208 284.767ZM458.389 288.765C457.983 288.765 457.615 288.688 457.285 288.536C456.955 288.38 456.692 288.157 456.498 287.865C456.304 287.571 456.206 287.215 456.206 286.799C456.206 286.432 456.279 286.135 456.423 285.908C456.567 285.677 456.76 285.497 457.002 285.366C457.243 285.236 457.51 285.139 457.801 285.075C458.096 285.008 458.391 284.955 458.688 284.917C459.077 284.867 459.392 284.829 459.634 284.804C459.878 284.776 460.056 284.731 460.167 284.667C460.281 284.603 460.338 284.492 460.338 284.334V284.3C460.338 283.889 460.225 283.57 460 283.342C459.778 283.115 459.441 283.001 458.988 283.001C458.519 283.001 458.151 283.104 457.885 283.309C457.618 283.514 457.431 283.734 457.322 283.967L456.39 283.634C456.556 283.245 456.778 282.943 457.056 282.726C457.336 282.507 457.642 282.354 457.972 282.268C458.305 282.179 458.633 282.135 458.955 282.135C459.16 282.135 459.396 282.16 459.663 282.21C459.932 282.257 460.192 282.355 460.442 282.505C460.694 282.655 460.904 282.881 461.071 283.184C461.237 283.487 461.32 283.892 461.32 284.4V288.615H460.338V287.749H460.288C460.221 287.887 460.11 288.036 459.954 288.194C459.799 288.352 459.592 288.487 459.334 288.598C459.076 288.709 458.761 288.765 458.389 288.765ZM458.539 287.882C458.927 287.882 459.255 287.805 459.521 287.653C459.791 287.5 459.993 287.303 460.129 287.061C460.268 286.82 460.338 286.566 460.338 286.299V285.4C460.296 285.45 460.204 285.495 460.063 285.537C459.924 285.576 459.763 285.611 459.58 285.641C459.399 285.669 459.223 285.694 459.051 285.716C458.881 285.736 458.744 285.752 458.638 285.766C458.383 285.799 458.144 285.854 457.922 285.929C457.703 286.001 457.525 286.11 457.389 286.258C457.256 286.402 457.189 286.599 457.189 286.849C457.189 287.19 457.316 287.449 457.568 287.624C457.824 287.796 458.147 287.882 458.539 287.882ZM464.449 284.767V288.615H463.466V280.086H464.449V283.217H464.532C464.682 282.887 464.907 282.625 465.207 282.43C465.51 282.233 465.912 282.135 466.415 282.135C466.851 282.135 467.232 282.222 467.56 282.397C467.888 282.569 468.142 282.834 468.322 283.192C468.505 283.548 468.597 284 468.597 284.55V288.615H467.614V284.617C467.614 284.109 467.482 283.716 467.219 283.438C466.958 283.158 466.595 283.018 466.132 283.018C465.809 283.018 465.521 283.086 465.265 283.222C465.013 283.358 464.813 283.556 464.666 283.817C464.521 284.078 464.449 284.395 464.449 284.767ZM478.062 283.892V284.808H474.33V283.892H478.062ZM483.927 280.086H485.159L488.058 287.165H488.158L491.056 280.086H492.289V288.615H491.323V282.135H491.24L488.574 288.615H487.641L484.976 282.135H484.893V288.615H483.927V280.086ZM495.211 291.014C495.045 291.014 494.896 291 494.766 290.972C494.635 290.947 494.545 290.922 494.495 290.897L494.745 290.031C494.984 290.092 495.195 290.114 495.378 290.097C495.561 290.081 495.724 289.999 495.865 289.852C496.01 289.707 496.142 289.473 496.261 289.148L496.444 288.648L494.079 282.218H495.145L496.911 287.315H496.977L498.743 282.218H499.809L497.094 289.548C496.972 289.878 496.82 290.151 496.64 290.368C496.459 290.587 496.25 290.75 496.011 290.855C495.775 290.961 495.509 291.014 495.211 291.014ZM505.108 291.014V282.218H506.058V283.234H506.175C506.247 283.123 506.347 282.981 506.474 282.809C506.605 282.634 506.791 282.479 507.033 282.343C507.277 282.204 507.607 282.135 508.024 282.135C508.562 282.135 509.037 282.269 509.448 282.539C509.859 282.808 510.18 283.19 510.41 283.684C510.64 284.178 510.756 284.761 510.756 285.433C510.756 286.11 510.64 286.698 510.41 287.195C510.18 287.689 509.86 288.072 509.452 288.344C509.044 288.613 508.573 288.748 508.04 288.748C507.629 288.748 507.3 288.68 507.053 288.544C506.806 288.405 506.616 288.248 506.483 288.073C506.35 287.896 506.247 287.749 506.175 287.632H506.091V291.014H505.108ZM506.075 285.416C506.075 285.899 506.145 286.326 506.287 286.695C506.429 287.061 506.636 287.349 506.908 287.557C507.18 287.762 507.513 287.865 507.907 287.865C508.318 287.865 508.661 287.757 508.936 287.54C509.213 287.321 509.422 287.027 509.56 286.657C509.702 286.285 509.773 285.872 509.773 285.416C509.773 284.967 509.703 284.561 509.565 284.2C509.429 283.837 509.222 283.549 508.944 283.338C508.669 283.124 508.324 283.018 507.907 283.018C507.507 283.018 507.171 283.119 506.899 283.322C506.627 283.521 506.422 283.802 506.283 284.163C506.144 284.521 506.075 284.939 506.075 285.416ZM512.607 288.615V282.218H513.556V283.184H513.623C513.74 282.868 513.951 282.611 514.256 282.414C514.561 282.217 514.906 282.118 515.289 282.118C515.361 282.118 515.451 282.119 515.559 282.122C515.668 282.125 515.75 282.129 515.805 282.135V283.134C515.772 283.126 515.696 283.113 515.576 283.097C515.46 283.077 515.336 283.067 515.205 283.067C514.895 283.067 514.617 283.133 514.373 283.263C514.131 283.391 513.939 283.569 513.798 283.796C513.659 284.021 513.59 284.278 513.59 284.567V288.615H512.607ZM519.726 288.748C519.149 288.748 518.642 288.611 518.206 288.336C517.773 288.061 517.434 287.676 517.19 287.182C516.948 286.688 516.828 286.11 516.828 285.45C516.828 284.783 516.948 284.202 517.19 283.705C517.434 283.208 517.773 282.822 518.206 282.547C518.642 282.272 519.149 282.135 519.726 282.135C520.304 282.135 520.809 282.272 521.242 282.547C521.678 282.822 522.017 283.208 522.258 283.705C522.502 284.202 522.625 284.783 522.625 285.45C522.625 286.11 522.502 286.688 522.258 287.182C522.017 287.676 521.678 288.061 521.242 288.336C520.809 288.611 520.304 288.748 519.726 288.748ZM519.726 287.865C520.165 287.865 520.526 287.753 520.809 287.528C521.092 287.303 521.302 287.007 521.438 286.641C521.574 286.274 521.642 285.877 521.642 285.45C521.642 285.022 521.574 284.624 521.438 284.254C521.302 283.885 521.092 283.587 520.809 283.359C520.526 283.131 520.165 283.018 519.726 283.018C519.287 283.018 518.926 283.131 518.643 283.359C518.36 283.587 518.15 283.885 518.014 284.254C517.878 284.624 517.81 285.022 517.81 285.45C517.81 285.877 517.878 286.274 518.014 286.641C518.15 287.007 518.36 287.303 518.643 287.528C518.926 287.753 519.287 287.865 519.726 287.865ZM524.477 282.218H525.46V289.081C525.46 289.475 525.392 289.817 525.256 290.106C525.122 290.394 524.92 290.618 524.647 290.776C524.378 290.934 524.038 291.014 523.627 291.014C523.594 291.014 523.561 291.014 523.527 291.014C523.494 291.014 523.461 291.014 523.427 291.014V290.097C523.461 290.097 523.491 290.097 523.519 290.097C523.547 290.097 523.577 290.097 523.611 290.097C523.91 290.097 524.13 290.008 524.269 289.831C524.407 289.656 524.477 289.406 524.477 289.081V282.218ZM524.96 281.152C524.768 281.152 524.603 281.087 524.464 280.956C524.328 280.826 524.26 280.669 524.26 280.485C524.26 280.302 524.328 280.145 524.464 280.015C524.603 279.884 524.768 279.819 524.96 279.819C525.151 279.819 525.315 279.884 525.451 280.015C525.59 280.145 525.659 280.302 525.659 280.485C525.659 280.669 525.59 280.826 525.451 280.956C525.315 281.087 525.151 281.152 524.96 281.152ZM530.294 288.748C529.677 288.748 529.146 288.612 528.699 288.34C528.254 288.065 527.911 287.682 527.67 287.19C527.431 286.696 527.312 286.122 527.312 285.466C527.312 284.811 527.431 284.234 527.67 283.734C527.911 283.231 528.247 282.84 528.678 282.559C529.111 282.276 529.616 282.135 530.194 282.135C530.527 282.135 530.856 282.19 531.181 282.301C531.505 282.412 531.801 282.593 532.068 282.843C532.334 283.09 532.547 283.417 532.705 283.825C532.863 284.234 532.942 284.736 532.942 285.333V285.75H528.011V284.9H531.943C531.943 284.539 531.871 284.217 531.726 283.934C531.585 283.651 531.382 283.427 531.118 283.263C530.857 283.099 530.549 283.018 530.194 283.018C529.802 283.018 529.463 283.115 529.177 283.309C528.894 283.501 528.676 283.75 528.524 284.059C528.371 284.367 528.295 284.697 528.295 285.05V285.616C528.295 286.099 528.378 286.509 528.544 286.845C528.714 287.178 528.948 287.432 529.248 287.607C529.548 287.779 529.897 287.865 530.294 287.865C530.552 287.865 530.785 287.829 530.993 287.757C531.204 287.682 531.386 287.571 531.539 287.424C531.691 287.274 531.809 287.088 531.893 286.866L532.842 287.132C532.742 287.454 532.574 287.737 532.338 287.982C532.102 288.223 531.811 288.412 531.464 288.548C531.117 288.681 530.727 288.748 530.294 288.748ZM537.388 288.748C536.788 288.748 536.272 288.606 535.839 288.323C535.406 288.04 535.072 287.65 534.839 287.153C534.606 286.656 534.489 286.088 534.489 285.45C534.489 284.8 534.609 284.227 534.847 283.73C535.089 283.23 535.425 282.84 535.855 282.559C536.288 282.276 536.794 282.135 537.371 282.135C537.821 282.135 538.226 282.218 538.587 282.385C538.948 282.551 539.244 282.784 539.474 283.084C539.705 283.384 539.848 283.734 539.903 284.134H538.92C538.845 283.842 538.679 283.584 538.421 283.359C538.165 283.131 537.821 283.018 537.388 283.018C537.005 283.018 536.669 283.117 536.38 283.317C536.094 283.514 535.871 283.794 535.71 284.154C535.551 284.513 535.472 284.933 535.472 285.416C535.472 285.911 535.55 286.341 535.705 286.707C535.864 287.074 536.086 287.358 536.372 287.561C536.66 287.764 536.999 287.865 537.388 287.865C537.643 287.865 537.875 287.821 538.083 287.732C538.292 287.643 538.468 287.515 538.612 287.349C538.757 287.182 538.859 286.982 538.92 286.749H539.903C539.848 287.127 539.71 287.467 539.491 287.769C539.274 288.069 538.987 288.308 538.629 288.486C538.274 288.661 537.86 288.748 537.388 288.748ZM544.474 282.218V283.051H541.159V282.218H544.474ZM542.125 280.685H543.108V286.782C543.108 287.06 543.148 287.268 543.229 287.407C543.312 287.543 543.417 287.635 543.545 287.682C543.676 287.726 543.813 287.749 543.957 287.749C544.066 287.749 544.155 287.743 544.224 287.732C544.293 287.718 544.349 287.707 544.391 287.699L544.59 288.581C544.524 288.606 544.431 288.631 544.311 288.656C544.192 288.684 544.041 288.698 543.858 288.698C543.58 288.698 543.308 288.638 543.041 288.519C542.777 288.4 542.558 288.218 542.383 287.973C542.211 287.729 542.125 287.421 542.125 287.049V280.685ZM550.721 283.651L549.838 283.9C549.782 283.753 549.7 283.61 549.592 283.471C549.487 283.33 549.342 283.213 549.159 283.122C548.976 283.03 548.741 282.984 548.455 282.984C548.064 282.984 547.737 283.074 547.476 283.255C547.218 283.433 547.089 283.659 547.089 283.934C547.089 284.178 547.178 284.371 547.356 284.513C547.533 284.654 547.811 284.772 548.189 284.867L549.138 285.1C549.71 285.239 550.136 285.451 550.417 285.737C550.697 286.02 550.837 286.385 550.837 286.832C550.837 287.199 550.732 287.526 550.521 287.815C550.313 288.104 550.021 288.332 549.646 288.498C549.271 288.665 548.836 288.748 548.339 288.748C547.686 288.748 547.146 288.606 546.718 288.323C546.291 288.04 546.02 287.626 545.906 287.082L546.839 286.849C546.928 287.193 547.096 287.451 547.343 287.624C547.593 287.796 547.919 287.882 548.322 287.882C548.78 287.882 549.144 287.785 549.413 287.59C549.685 287.393 549.821 287.157 549.821 286.882C549.821 286.66 549.743 286.474 549.588 286.324C549.432 286.172 549.194 286.058 548.872 285.983L547.805 285.733C547.22 285.594 546.789 285.379 546.514 285.087C546.242 284.793 546.106 284.425 546.106 283.984C546.106 283.623 546.208 283.303 546.41 283.026C546.616 282.748 546.895 282.53 547.247 282.372C547.603 282.214 548.005 282.135 548.455 282.135C549.088 282.135 549.585 282.273 549.946 282.551C550.31 282.829 550.568 283.195 550.721 283.651ZM556.319 291.014V282.218H557.268V283.234H557.385C557.457 283.123 557.557 282.981 557.685 282.809C557.815 282.634 558.001 282.479 558.243 282.343C558.487 282.204 558.818 282.135 559.234 282.135C559.773 282.135 560.247 282.269 560.658 282.539C561.069 282.808 561.39 283.19 561.62 283.684C561.851 284.178 561.966 284.761 561.966 285.433C561.966 286.11 561.851 286.698 561.62 287.195C561.39 287.689 561.071 288.072 560.662 288.344C560.254 288.613 559.784 288.748 559.251 288.748C558.84 288.748 558.511 288.68 558.264 288.544C558.017 288.405 557.826 288.248 557.693 288.073C557.56 287.896 557.457 287.749 557.385 287.632H557.302V291.014H556.319ZM557.285 285.416C557.285 285.899 557.356 286.326 557.497 286.695C557.639 287.061 557.846 287.349 558.118 287.557C558.39 287.762 558.723 287.865 559.117 287.865C559.528 287.865 559.871 287.757 560.146 287.54C560.424 287.321 560.632 287.027 560.771 286.657C560.912 286.285 560.983 285.872 560.983 285.416C560.983 284.967 560.914 284.561 560.775 284.2C560.639 283.837 560.432 283.549 560.154 283.338C559.88 283.124 559.534 283.018 559.117 283.018C558.718 283.018 558.382 283.119 558.11 283.322C557.837 283.521 557.632 283.802 557.493 284.163C557.354 284.521 557.285 284.939 557.285 285.416ZM565.699 288.765C565.294 288.765 564.926 288.688 564.596 288.536C564.265 288.38 564.003 288.157 563.809 287.865C563.614 287.571 563.517 287.215 563.517 286.799C563.517 286.432 563.589 286.135 563.734 285.908C563.878 285.677 564.071 285.497 564.313 285.366C564.554 285.236 564.821 285.139 565.112 285.075C565.407 285.008 565.702 284.955 565.999 284.917C566.388 284.867 566.703 284.829 566.945 284.804C567.189 284.776 567.367 284.731 567.478 284.667C567.592 284.603 567.648 284.492 567.648 284.334V284.3C567.648 283.889 567.536 283.57 567.311 283.342C567.089 283.115 566.752 283.001 566.299 283.001C565.83 283.001 565.462 283.104 565.196 283.309C564.929 283.514 564.742 283.734 564.633 283.967L563.7 283.634C563.867 283.245 564.089 282.943 564.367 282.726C564.647 282.507 564.953 282.354 565.283 282.268C565.616 282.179 565.944 282.135 566.266 282.135C566.471 282.135 566.707 282.16 566.974 282.21C567.243 282.257 567.503 282.355 567.753 282.505C568.005 282.655 568.215 282.881 568.381 283.184C568.548 283.487 568.631 283.892 568.631 284.4V288.615H567.648V287.749H567.599C567.532 287.887 567.421 288.036 567.265 288.194C567.11 288.352 566.903 288.487 566.645 288.598C566.387 288.709 566.071 288.765 565.699 288.765ZM565.849 287.882C566.238 287.882 566.566 287.805 566.832 287.653C567.102 287.5 567.304 287.303 567.44 287.061C567.579 286.82 567.648 286.566 567.648 286.299V285.4C567.607 285.45 567.515 285.495 567.374 285.537C567.235 285.576 567.074 285.611 566.891 285.641C566.71 285.669 566.534 285.694 566.362 285.716C566.192 285.736 566.055 285.752 565.949 285.766C565.694 285.799 565.455 285.854 565.233 285.929C565.014 286.001 564.836 286.11 564.7 286.258C564.567 286.402 564.5 286.599 564.5 286.849C564.5 287.19 564.626 287.449 564.879 287.624C565.134 287.796 565.458 287.882 565.849 287.882ZM573.359 291.147C572.884 291.147 572.476 291.086 572.135 290.964C571.793 290.844 571.509 290.686 571.281 290.489C571.056 290.294 570.877 290.086 570.744 289.864L571.527 289.314C571.616 289.431 571.728 289.564 571.864 289.714C572 289.867 572.186 289.999 572.422 290.11C572.661 290.224 572.973 290.281 573.359 290.281C573.876 290.281 574.302 290.156 574.638 289.906C574.974 289.656 575.142 289.264 575.142 288.731V287.432H575.058C574.986 287.549 574.883 287.693 574.75 287.865C574.62 288.034 574.431 288.186 574.184 288.319C573.939 288.45 573.609 288.515 573.193 288.515C572.676 288.515 572.212 288.393 571.802 288.148C571.393 287.904 571.07 287.549 570.831 287.082C570.595 286.616 570.477 286.049 570.477 285.383C570.477 284.728 570.592 284.157 570.823 283.671C571.053 283.183 571.374 282.805 571.785 282.539C572.196 282.269 572.671 282.135 573.209 282.135C573.626 282.135 573.956 282.204 574.2 282.343C574.447 282.479 574.636 282.634 574.767 282.809C574.9 282.981 575.003 283.123 575.075 283.234H575.175V282.218H576.124V288.798C576.124 289.348 575.999 289.795 575.75 290.139C575.502 290.486 575.169 290.74 574.75 290.901C574.334 291.065 573.87 291.147 573.359 291.147ZM573.326 287.632C573.72 287.632 574.053 287.542 574.325 287.361C574.597 287.181 574.804 286.921 574.946 286.582C575.087 286.244 575.158 285.838 575.158 285.366C575.158 284.905 575.089 284.499 574.95 284.146C574.811 283.794 574.606 283.517 574.334 283.317C574.062 283.117 573.726 283.018 573.326 283.018C572.909 283.018 572.562 283.123 572.285 283.334C572.01 283.545 571.803 283.828 571.664 284.184C571.528 284.539 571.46 284.933 571.46 285.366C571.46 285.811 571.529 286.203 571.668 286.545C571.81 286.884 572.018 287.15 572.293 287.345C572.571 287.536 572.915 287.632 573.326 287.632ZM580.957 288.748C580.341 288.748 579.809 288.612 579.362 288.34C578.918 288.065 578.575 287.682 578.334 287.19C578.095 286.696 577.975 286.122 577.975 285.466C577.975 284.811 578.095 284.234 578.334 283.734C578.575 283.231 578.911 282.84 579.341 282.559C579.775 282.276 580.28 282.135 580.857 282.135C581.191 282.135 581.52 282.19 581.844 282.301C582.169 282.412 582.465 282.593 582.731 282.843C582.998 283.09 583.21 283.417 583.369 283.825C583.527 284.234 583.606 284.736 583.606 285.333V285.75H578.675V284.9H582.607C582.607 284.539 582.534 284.217 582.39 283.934C582.248 283.651 582.046 283.427 581.782 283.263C581.521 283.099 581.213 283.018 580.857 283.018C580.466 283.018 580.127 283.115 579.841 283.309C579.558 283.501 579.34 283.75 579.187 284.059C579.035 284.367 578.958 284.697 578.958 285.05V285.616C578.958 286.099 579.042 286.509 579.208 286.845C579.378 287.178 579.612 287.432 579.912 287.607C580.212 287.779 580.56 287.865 580.957 287.865C581.216 287.865 581.449 287.829 581.657 287.757C581.868 287.682 582.05 287.571 582.203 287.424C582.355 287.274 582.473 287.088 582.557 286.866L583.506 287.132C583.406 287.454 583.238 287.737 583.002 287.982C582.766 288.223 582.475 288.412 582.128 288.548C581.781 288.681 581.39 288.748 580.957 288.748Z" fill="white"/>
+<rect x="635.09" y="266.692" width="239.061" height="81.1905" rx="10.8254" fill="#1F2428"/>
+<path d="M648.554 328.267V331.819H647.647V323.946H648.554V326.837H648.631C648.769 326.532 648.977 326.29 649.254 326.11C649.533 325.928 649.905 325.837 650.368 325.837C650.771 325.837 651.123 325.918 651.426 326.079C651.728 326.238 651.963 326.483 652.129 326.814C652.298 327.142 652.383 327.559 652.383 328.067V331.819H651.476V328.128C651.476 327.659 651.354 327.297 651.11 327.04C650.87 326.782 650.535 326.652 650.107 326.652C649.81 326.652 649.543 326.715 649.307 326.841C649.074 326.966 648.89 327.149 648.754 327.39C648.621 327.631 648.554 327.923 648.554 328.267ZM656.935 325.914V326.683H653.875V325.914H656.935ZM654.767 324.499H655.674V330.127C655.674 330.384 655.712 330.576 655.786 330.704C655.863 330.83 655.96 330.914 656.078 330.958C656.199 330.999 656.325 331.019 656.459 331.019C656.559 331.019 656.641 331.014 656.705 331.004C656.769 330.991 656.82 330.981 656.858 330.973L657.043 331.788C656.981 331.811 656.896 331.834 656.785 331.857C656.675 331.883 656.536 331.896 656.366 331.896C656.11 331.896 655.859 331.841 655.613 331.73C655.369 331.62 655.167 331.452 655.006 331.227C654.847 331.001 654.767 330.717 654.767 330.373V324.499ZM661.193 325.914V326.683H658.133V325.914H661.193ZM659.025 324.499H659.932V330.127C659.932 330.384 659.969 330.576 660.043 330.704C660.12 330.83 660.218 330.914 660.336 330.958C660.456 330.999 660.583 331.019 660.716 331.019C660.816 331.019 660.898 331.014 660.962 331.004C661.026 330.991 661.077 330.981 661.116 330.973L661.3 331.788C661.239 331.811 661.153 331.834 661.043 331.857C660.933 331.883 660.793 331.896 660.624 331.896C660.368 331.896 660.116 331.841 659.87 331.73C659.627 331.62 659.424 331.452 659.263 331.227C659.104 331.001 659.025 330.717 659.025 330.373V324.499ZM662.882 334.033V325.914H663.759V326.852H663.866C663.933 326.75 664.025 326.619 664.143 326.46C664.264 326.299 664.435 326.155 664.658 326.029C664.884 325.901 665.189 325.837 665.573 325.837C666.07 325.837 666.509 325.961 666.888 326.21C667.267 326.459 667.563 326.811 667.776 327.267C667.989 327.723 668.095 328.262 668.095 328.882C668.095 329.507 667.989 330.049 667.776 330.508C667.563 330.964 667.269 331.318 666.892 331.569C666.515 331.818 666.081 331.942 665.589 331.942C665.209 331.942 664.906 331.879 664.678 331.753C664.449 331.625 664.274 331.481 664.151 331.319C664.028 331.155 663.933 331.019 663.866 330.912H663.789V334.033H662.882ZM663.774 328.866C663.774 329.312 663.839 329.706 663.97 330.047C664.101 330.385 664.292 330.65 664.543 330.842C664.794 331.032 665.102 331.127 665.466 331.127C665.845 331.127 666.161 331.027 666.415 330.827C666.671 330.625 666.864 330.353 666.992 330.012C667.122 329.669 667.188 329.287 667.188 328.866C667.188 328.451 667.124 328.077 666.996 327.744C666.87 327.408 666.679 327.143 666.423 326.948C666.169 326.751 665.85 326.652 665.466 326.652C665.097 326.652 664.786 326.746 664.535 326.933C664.284 327.117 664.094 327.376 663.966 327.709C663.838 328.04 663.774 328.426 663.774 328.866ZM673.986 327.237L673.171 327.467C673.12 327.331 673.044 327.199 672.944 327.071C672.847 326.94 672.714 326.833 672.545 326.748C672.376 326.664 672.159 326.621 671.895 326.621C671.534 326.621 671.233 326.705 670.992 326.871C670.753 327.035 670.634 327.244 670.634 327.498C670.634 327.723 670.716 327.902 670.88 328.032C671.044 328.163 671.3 328.272 671.649 328.359L672.525 328.574C673.053 328.702 673.447 328.899 673.706 329.162C673.964 329.424 674.094 329.761 674.094 330.174C674.094 330.512 673.997 330.814 673.802 331.081C673.61 331.347 673.34 331.557 672.994 331.711C672.648 331.865 672.246 331.942 671.787 331.942C671.185 331.942 670.687 331.811 670.292 331.55C669.897 331.288 669.647 330.906 669.542 330.404L670.403 330.189C670.485 330.507 670.64 330.745 670.869 330.904C671.099 331.063 671.4 331.142 671.772 331.142C672.195 331.142 672.531 331.053 672.779 330.873C673.03 330.691 673.156 330.473 673.156 330.22C673.156 330.015 673.084 329.843 672.941 329.705C672.797 329.564 672.577 329.458 672.279 329.389L671.295 329.159C670.755 329.03 670.357 328.832 670.104 328.563C669.852 328.291 669.727 327.952 669.727 327.544C669.727 327.211 669.82 326.916 670.007 326.66C670.197 326.404 670.455 326.202 670.78 326.056C671.108 325.91 671.48 325.837 671.895 325.837C672.479 325.837 672.938 325.965 673.271 326.222C673.607 326.478 673.845 326.816 673.986 327.237ZM676.446 331.88C676.256 331.88 676.093 331.812 675.957 331.677C675.821 331.541 675.754 331.378 675.754 331.188C675.754 330.999 675.821 330.836 675.957 330.7C676.093 330.564 676.256 330.496 676.446 330.496C676.635 330.496 676.798 330.564 676.934 330.7C677.07 330.836 677.138 330.999 677.138 331.188C677.138 331.314 677.105 331.429 677.041 331.534C676.98 331.639 676.897 331.724 676.792 331.788C676.689 331.85 676.574 331.88 676.446 331.88ZM676.446 327.498C676.256 327.498 676.093 327.43 675.957 327.294C675.821 327.158 675.754 326.996 675.754 326.806C675.754 326.616 675.821 326.454 675.957 326.318C676.093 326.182 676.256 326.114 676.446 326.114C676.635 326.114 676.798 326.182 676.934 326.318C677.07 326.454 677.138 326.616 677.138 326.806C677.138 326.932 677.105 327.047 677.041 327.152C676.98 327.257 676.897 327.342 676.792 327.406C676.689 327.467 676.574 327.498 676.446 327.498ZM681.874 323.577L679.336 333.003H678.506L681.043 323.577H681.874ZM686.057 323.577L683.52 333.003H682.689L685.227 323.577H686.057ZM688.041 334.033C687.888 334.033 687.751 334.02 687.63 333.995C687.51 333.972 687.426 333.949 687.38 333.925L687.611 333.126C687.831 333.182 688.026 333.203 688.195 333.187C688.364 333.172 688.514 333.096 688.645 332.961C688.778 332.827 688.9 332.611 689.01 332.311L689.179 331.85L686.996 325.914H687.98L689.61 330.619H689.671L691.301 325.914H692.286L689.779 332.68C689.666 332.985 689.527 333.237 689.36 333.437C689.193 333.64 689 333.79 688.78 333.887C688.562 333.984 688.316 334.033 688.041 334.033ZM695.366 331.957C694.991 331.957 694.652 331.887 694.347 331.746C694.042 331.602 693.8 331.396 693.62 331.127C693.441 330.855 693.351 330.527 693.351 330.143C693.351 329.804 693.418 329.53 693.551 329.32C693.684 329.107 693.863 328.941 694.086 328.82C694.308 328.7 694.555 328.61 694.824 328.551C695.095 328.49 695.368 328.441 695.642 328.405C696.001 328.359 696.292 328.324 696.515 328.301C696.741 328.276 696.905 328.233 697.007 328.175C697.112 328.116 697.165 328.013 697.165 327.867V327.836C697.165 327.457 697.061 327.162 696.853 326.952C696.648 326.742 696.337 326.637 695.919 326.637C695.486 326.637 695.147 326.732 694.901 326.921C694.654 327.111 694.481 327.313 694.382 327.529L693.52 327.221C693.674 326.862 693.879 326.583 694.135 326.383C694.394 326.181 694.676 326.04 694.981 325.96C695.289 325.878 695.591 325.837 695.888 325.837C696.078 325.837 696.296 325.86 696.542 325.906C696.791 325.95 697.03 326.041 697.261 326.179C697.494 326.318 697.688 326.527 697.841 326.806C697.995 327.085 698.072 327.459 698.072 327.928V331.819H697.165V331.019H697.119C697.057 331.147 696.955 331.284 696.811 331.431C696.668 331.577 696.477 331.701 696.238 331.803C696 331.906 695.709 331.957 695.366 331.957ZM695.504 331.142C695.863 331.142 696.165 331.072 696.411 330.931C696.66 330.79 696.847 330.608 696.973 330.385C697.101 330.162 697.165 329.927 697.165 329.681V328.851C697.126 328.897 697.042 328.94 696.911 328.978C696.783 329.014 696.634 329.046 696.465 329.074C696.299 329.1 696.136 329.123 695.977 329.143C695.821 329.161 695.694 329.177 695.596 329.189C695.361 329.22 695.14 329.27 694.935 329.339C694.733 329.406 694.569 329.507 694.443 329.643C694.32 329.776 694.259 329.958 694.259 330.189C694.259 330.504 694.375 330.742 694.608 330.904C694.844 331.063 695.143 331.142 695.504 331.142ZM704.235 327.237L703.42 327.467C703.369 327.331 703.293 327.199 703.193 327.071C703.096 326.94 702.963 326.833 702.794 326.748C702.624 326.664 702.408 326.621 702.144 326.621C701.783 326.621 701.481 326.705 701.241 326.871C701.002 327.035 700.883 327.244 700.883 327.498C700.883 327.723 700.965 327.902 701.129 328.032C701.293 328.163 701.549 328.272 701.898 328.359L702.774 328.574C703.302 328.702 703.696 328.899 703.955 329.162C704.213 329.424 704.343 329.761 704.343 330.174C704.343 330.512 704.245 330.814 704.051 331.081C703.858 331.347 703.589 331.557 703.243 331.711C702.897 331.865 702.495 331.942 702.036 331.942C701.434 331.942 700.936 331.811 700.541 331.55C700.146 331.288 699.896 330.906 699.791 330.404L700.652 330.189C700.734 330.507 700.889 330.745 701.118 330.904C701.348 331.063 701.649 331.142 702.021 331.142C702.444 331.142 702.78 331.053 703.028 330.873C703.279 330.691 703.405 330.473 703.405 330.22C703.405 330.015 703.333 329.843 703.19 329.705C703.046 329.564 702.826 329.458 702.528 329.389L701.544 329.159C701.003 329.03 700.606 328.832 700.353 328.563C700.101 328.291 699.976 327.952 699.976 327.544C699.976 327.211 700.069 326.916 700.256 326.66C700.446 326.404 700.704 326.202 701.029 326.056C701.357 325.91 701.729 325.837 702.144 325.837C702.728 325.837 703.187 325.965 703.52 326.222C703.856 326.478 704.094 326.816 704.235 327.237ZM706.941 328.267V331.819H706.033V323.946H706.941V326.837H707.017C707.156 326.532 707.363 326.29 707.64 326.11C707.92 325.928 708.291 325.837 708.755 325.837C709.157 325.837 709.51 325.918 709.812 326.079C710.115 326.238 710.349 326.483 710.516 326.814C710.685 327.142 710.769 327.559 710.769 328.067V331.819H709.862V328.128C709.862 327.659 709.74 327.297 709.497 327.04C709.256 326.782 708.922 326.652 708.494 326.652C708.196 326.652 707.93 326.715 707.694 326.841C707.461 326.966 707.276 327.149 707.14 327.39C707.007 327.631 706.941 327.923 706.941 328.267ZM717.371 325.914L715.187 331.819H714.265L712.081 325.914H713.065L714.695 330.619H714.757L716.387 325.914H717.371ZM721.157 331.942C720.588 331.942 720.098 331.816 719.685 331.565C719.275 331.311 718.958 330.958 718.735 330.504C718.515 330.048 718.405 329.517 718.405 328.913C718.405 328.308 718.515 327.775 718.735 327.313C718.958 326.85 719.269 326.488 719.666 326.229C720.066 325.968 720.532 325.837 721.065 325.837C721.373 325.837 721.676 325.888 721.976 325.991C722.276 326.093 722.549 326.26 722.795 326.491C723.041 326.719 723.237 327.021 723.383 327.398C723.529 327.775 723.602 328.239 723.602 328.79V329.174H719.051V328.39H722.68C722.68 328.057 722.613 327.759 722.48 327.498C722.349 327.237 722.162 327.03 721.919 326.879C721.678 326.728 721.393 326.652 721.065 326.652C720.704 326.652 720.391 326.742 720.127 326.921C719.866 327.098 719.665 327.329 719.524 327.613C719.383 327.898 719.312 328.203 719.312 328.528V329.051C719.312 329.497 719.389 329.875 719.543 330.185C719.699 330.493 719.916 330.727 720.192 330.889C720.469 331.047 720.791 331.127 721.157 331.127C721.396 331.127 721.611 331.094 721.803 331.027C721.998 330.958 722.166 330.855 722.307 330.719C722.448 330.581 722.557 330.409 722.634 330.204L723.51 330.45C723.418 330.748 723.263 331.009 723.045 331.235C722.827 331.457 722.558 331.632 722.238 331.757C721.917 331.88 721.557 331.942 721.157 331.942ZM725.307 331.819V325.914H726.184V326.806H726.245C726.353 326.514 726.548 326.277 726.829 326.095C727.111 325.913 727.429 325.822 727.783 325.822C727.849 325.822 727.933 325.823 728.033 325.826C728.133 325.828 728.208 325.832 728.26 325.837V326.76C728.229 326.752 728.158 326.741 728.048 326.725C727.94 326.707 727.826 326.698 727.706 326.698C727.419 326.698 727.163 326.759 726.937 326.879C726.714 326.997 726.537 327.161 726.407 327.371C726.278 327.579 726.214 327.816 726.214 328.082V331.819H725.307ZM729.66 331.819V325.914H730.536V326.837H730.613C730.736 326.521 730.935 326.277 731.209 326.102C731.483 325.926 731.812 325.837 732.197 325.837C732.586 325.837 732.911 325.926 733.17 326.102C733.431 326.277 733.635 326.521 733.781 326.837H733.842C733.993 326.532 734.22 326.29 734.523 326.11C734.825 325.928 735.188 325.837 735.611 325.837C736.139 325.837 736.57 326.003 736.906 326.333C737.242 326.661 737.41 327.172 737.41 327.867V331.819H736.502V327.867C736.502 327.431 736.383 327.12 736.145 326.933C735.907 326.746 735.626 326.652 735.303 326.652C734.888 326.652 734.566 326.778 734.338 327.029C734.11 327.278 733.996 327.593 733.996 327.975V331.819H733.073V327.775C733.073 327.439 732.964 327.169 732.747 326.964C732.529 326.756 732.248 326.652 731.905 326.652C731.669 326.652 731.449 326.715 731.244 326.841C731.041 326.966 730.877 327.14 730.751 327.363C730.628 327.584 730.567 327.839 730.567 328.128V331.819H729.66ZM741.131 331.957C740.757 331.957 740.417 331.887 740.112 331.746C739.807 331.602 739.565 331.396 739.386 331.127C739.206 330.855 739.116 330.527 739.116 330.143C739.116 329.804 739.183 329.53 739.316 329.32C739.45 329.107 739.628 328.941 739.851 328.82C740.074 328.7 740.32 328.61 740.589 328.551C740.86 328.49 741.133 328.441 741.408 328.405C741.766 328.359 742.057 328.324 742.28 328.301C742.506 328.276 742.67 328.233 742.772 328.175C742.877 328.116 742.93 328.013 742.93 327.867V327.836C742.93 327.457 742.826 327.162 742.619 326.952C742.414 326.742 742.102 326.637 741.684 326.637C741.251 326.637 740.912 326.732 740.666 326.921C740.42 327.111 740.247 327.313 740.147 327.529L739.286 327.221C739.439 326.862 739.644 326.583 739.901 326.383C740.16 326.181 740.441 326.04 740.746 325.96C741.054 325.878 741.356 325.837 741.654 325.837C741.843 325.837 742.061 325.86 742.307 325.906C742.556 325.95 742.795 326.041 743.026 326.179C743.259 326.318 743.453 326.527 743.607 326.806C743.76 327.085 743.837 327.459 743.837 327.928V331.819H742.93V331.019H742.884C742.822 331.147 742.72 331.284 742.576 331.431C742.433 331.577 742.242 331.701 742.004 331.803C741.765 331.906 741.474 331.957 741.131 331.957ZM741.269 331.142C741.628 331.142 741.93 331.072 742.177 330.931C742.425 330.79 742.612 330.608 742.738 330.385C742.866 330.162 742.93 329.927 742.93 329.681V328.851C742.892 328.897 742.807 328.94 742.676 328.978C742.548 329.014 742.399 329.046 742.23 329.074C742.064 329.1 741.901 329.123 741.742 329.143C741.586 329.161 741.459 329.177 741.362 329.189C741.126 329.22 740.905 329.27 740.7 329.339C740.498 329.406 740.334 329.507 740.208 329.643C740.085 329.776 740.024 329.958 740.024 330.189C740.024 330.504 740.14 330.742 740.374 330.904C740.609 331.063 740.908 331.142 741.269 331.142ZM746.479 331.88C746.289 331.88 746.127 331.812 745.991 331.677C745.855 331.541 745.787 331.378 745.787 331.188C745.787 330.999 745.855 330.836 745.991 330.7C746.127 330.564 746.289 330.496 746.479 330.496C746.669 330.496 746.831 330.564 746.967 330.7C747.103 330.836 747.171 330.999 747.171 331.188C747.171 331.314 747.139 331.429 747.075 331.534C747.013 331.639 746.93 331.724 746.825 331.788C746.723 331.85 746.607 331.88 746.479 331.88ZM749.124 331.819V325.914H750V326.837H750.077C750.2 326.521 750.399 326.277 750.673 326.102C750.947 325.926 751.277 325.837 751.661 325.837C752.051 325.837 752.375 325.926 752.634 326.102C752.895 326.277 753.099 326.521 753.245 326.837H753.306C753.458 326.532 753.684 326.29 753.987 326.11C754.289 325.928 754.652 325.837 755.075 325.837C755.603 325.837 756.035 326.003 756.37 326.333C756.706 326.661 756.874 327.172 756.874 327.867V331.819H755.967V327.867C755.967 327.431 755.847 327.12 755.609 326.933C755.371 326.746 755.09 326.652 754.767 326.652C754.352 326.652 754.03 326.778 753.802 327.029C753.574 327.278 753.46 327.593 753.46 327.975V331.819H752.538V327.775C752.538 327.439 752.429 327.169 752.211 326.964C751.993 326.756 751.712 326.652 751.369 326.652C751.133 326.652 750.913 326.715 750.708 326.841C750.505 326.966 750.341 327.14 750.216 327.363C750.093 327.584 750.031 327.839 750.031 328.128V331.819H749.124ZM761.333 331.942C760.764 331.942 760.273 331.816 759.861 331.565C759.451 331.311 759.134 330.958 758.911 330.504C758.691 330.048 758.581 329.517 758.581 328.913C758.581 328.308 758.691 327.775 758.911 327.313C759.134 326.85 759.444 326.488 759.842 326.229C760.241 325.968 760.708 325.837 761.241 325.837C761.548 325.837 761.852 325.888 762.152 325.991C762.452 326.093 762.725 326.26 762.971 326.491C763.217 326.719 763.413 327.021 763.559 327.398C763.705 327.775 763.778 328.239 763.778 328.79V329.174H759.226V328.39H762.855C762.855 328.057 762.789 327.759 762.656 327.498C762.525 327.237 762.338 327.03 762.094 326.879C761.853 326.728 761.569 326.652 761.241 326.652C760.879 326.652 760.567 326.742 760.303 326.921C760.041 327.098 759.84 327.329 759.699 327.613C759.558 327.898 759.488 328.203 759.488 328.528V329.051C759.488 329.497 759.565 329.875 759.719 330.185C759.875 330.493 760.091 330.727 760.368 330.889C760.645 331.047 760.967 331.127 761.333 331.127C761.571 331.127 761.787 331.094 761.979 331.027C762.174 330.958 762.342 330.855 762.483 330.719C762.623 330.581 762.732 330.409 762.809 330.204L763.686 330.45C763.594 330.748 763.438 331.009 763.221 331.235C763.003 331.457 762.734 331.632 762.413 331.757C762.093 331.88 761.733 331.942 761.333 331.942Z" fill="#B8C4C6"/>
+<path d="M647.849 288.615V280.086H648.882V283.884H653.43V280.086H654.463V288.615H653.43V284.8H648.882V288.615H647.849ZM659.348 288.749C658.77 288.749 658.263 288.611 657.828 288.336C657.394 288.061 657.056 287.677 656.811 287.183C656.57 286.688 656.449 286.111 656.449 285.45C656.449 284.784 656.57 284.202 656.811 283.705C657.056 283.208 657.394 282.822 657.828 282.547C658.263 282.273 658.77 282.135 659.348 282.135C659.925 282.135 660.43 282.273 660.864 282.547C661.299 282.822 661.638 283.208 661.88 283.705C662.124 284.202 662.246 284.784 662.246 285.45C662.246 286.111 662.124 286.688 661.88 287.183C661.638 287.677 661.299 288.061 660.864 288.336C660.43 288.611 659.925 288.749 659.348 288.749ZM659.348 287.866C659.786 287.866 660.147 287.753 660.43 287.528C660.714 287.303 660.923 287.008 661.059 286.641C661.195 286.275 661.263 285.878 661.263 285.45C661.263 285.023 661.195 284.624 661.059 284.255C660.923 283.886 660.714 283.587 660.43 283.36C660.147 283.132 659.786 283.018 659.348 283.018C658.909 283.018 658.548 283.132 658.265 283.36C657.982 283.587 657.772 283.886 657.636 284.255C657.5 284.624 657.432 285.023 657.432 285.45C657.432 285.878 657.5 286.275 657.636 286.641C657.772 287.008 657.982 287.303 658.265 287.528C658.548 287.753 658.909 287.866 659.348 287.866ZM664.098 288.615V282.218H665.048V283.218H665.131C665.264 282.876 665.48 282.611 665.777 282.422C666.074 282.231 666.43 282.135 666.847 282.135C667.269 282.135 667.62 282.231 667.901 282.422C668.184 282.611 668.404 282.876 668.563 283.218H668.629C668.793 282.888 669.039 282.625 669.367 282.431C669.694 282.234 670.087 282.135 670.545 282.135C671.117 282.135 671.585 282.314 671.949 282.672C672.312 283.028 672.494 283.582 672.494 284.334V288.615H671.511V284.334C671.511 283.862 671.382 283.525 671.124 283.322C670.866 283.119 670.562 283.018 670.212 283.018C669.762 283.018 669.414 283.154 669.167 283.426C668.92 283.695 668.796 284.037 668.796 284.451V288.615H667.796V284.234C667.796 283.87 667.678 283.577 667.442 283.355C667.206 283.13 666.902 283.018 666.53 283.018C666.275 283.018 666.036 283.086 665.814 283.222C665.595 283.358 665.417 283.547 665.281 283.788C665.148 284.027 665.081 284.303 665.081 284.617V288.615H664.098ZM677.325 288.749C676.709 288.749 676.177 288.612 675.73 288.34C675.286 288.066 674.943 287.682 674.701 287.191C674.463 286.697 674.343 286.122 674.343 285.467C674.343 284.812 674.463 284.234 674.701 283.734C674.943 283.232 675.279 282.84 675.709 282.56C676.142 282.277 676.648 282.135 677.225 282.135C677.558 282.135 677.887 282.191 678.212 282.302C678.537 282.413 678.833 282.593 679.099 282.843C679.366 283.09 679.578 283.418 679.736 283.826C679.895 284.234 679.974 284.737 679.974 285.334V285.75H675.043V284.9H678.974C678.974 284.539 678.902 284.217 678.758 283.934C678.616 283.651 678.413 283.428 678.15 283.264C677.889 283.1 677.58 283.018 677.225 283.018C676.834 283.018 676.495 283.115 676.209 283.31C675.926 283.501 675.708 283.751 675.555 284.059C675.402 284.367 675.326 284.698 675.326 285.05V285.617C675.326 286.1 675.409 286.509 675.576 286.845C675.745 287.178 675.98 287.432 676.28 287.607C676.58 287.78 676.928 287.866 677.325 287.866C677.583 287.866 677.816 287.83 678.025 287.757C678.236 287.682 678.417 287.571 678.57 287.424C678.723 287.274 678.841 287.088 678.924 286.866L679.874 287.133C679.774 287.455 679.606 287.738 679.37 287.982C679.134 288.224 678.842 288.413 678.495 288.549C678.148 288.682 677.758 288.749 677.325 288.749ZM689.136 283.893V284.809H685.404V283.893H689.136ZM694.267 280.086H695.45L697.816 284.067H697.915L700.281 280.086H701.464L698.382 285.1V288.615H697.349V285.1L694.267 280.086ZM704.064 288.765C703.659 288.765 703.291 288.689 702.961 288.536C702.63 288.381 702.368 288.157 702.174 287.866C701.979 287.571 701.882 287.216 701.882 286.799C701.882 286.433 701.954 286.136 702.099 285.908C702.243 285.678 702.436 285.497 702.678 285.367C702.919 285.236 703.186 285.139 703.477 285.075C703.771 285.009 704.067 284.956 704.364 284.917C704.753 284.867 705.068 284.83 705.31 284.805C705.554 284.777 705.732 284.731 705.843 284.667C705.957 284.603 706.013 284.492 706.013 284.334V284.301C706.013 283.89 705.901 283.571 705.676 283.343C705.454 283.115 705.117 283.001 704.664 283.001C704.195 283.001 703.827 283.104 703.56 283.31C703.294 283.515 703.107 283.734 702.998 283.968L702.065 283.634C702.232 283.246 702.454 282.943 702.732 282.726C703.012 282.507 703.318 282.354 703.648 282.268C703.981 282.18 704.309 282.135 704.631 282.135C704.836 282.135 705.072 282.16 705.339 282.21C705.608 282.257 705.868 282.356 706.118 282.506C706.37 282.656 706.58 282.882 706.746 283.185C706.913 283.487 706.996 283.893 706.996 284.401V288.615H706.013V287.749H705.963C705.897 287.888 705.786 288.036 705.63 288.195C705.475 288.353 705.268 288.488 705.01 288.599C704.752 288.71 704.436 288.765 704.064 288.765ZM704.214 287.882C704.603 287.882 704.931 287.806 705.197 287.653C705.466 287.501 705.669 287.303 705.805 287.062C705.944 286.82 706.013 286.566 706.013 286.3V285.4C705.972 285.45 705.88 285.496 705.739 285.538C705.6 285.576 705.439 285.611 705.255 285.642C705.075 285.669 704.899 285.694 704.727 285.717C704.557 285.736 704.42 285.753 704.314 285.767C704.059 285.8 703.82 285.854 703.598 285.929C703.379 286.001 703.201 286.111 703.065 286.258C702.932 286.402 702.865 286.6 702.865 286.849C702.865 287.191 702.991 287.449 703.244 287.624C703.499 287.796 703.823 287.882 704.214 287.882ZM713.673 283.651L712.79 283.901C712.735 283.754 712.653 283.611 712.544 283.472C712.439 283.33 712.295 283.214 712.111 283.122C711.928 283.031 711.694 282.985 711.408 282.985C711.016 282.985 710.69 283.075 710.429 283.255C710.171 283.433 710.042 283.659 710.042 283.934C710.042 284.179 710.13 284.372 710.308 284.513C710.486 284.655 710.763 284.773 711.141 284.867L712.091 285.1C712.662 285.239 713.089 285.452 713.369 285.737C713.649 286.021 713.79 286.386 713.79 286.833C713.79 287.199 713.684 287.527 713.473 287.816C713.265 288.104 712.973 288.332 712.599 288.499C712.224 288.665 711.788 288.749 711.291 288.749C710.638 288.749 710.098 288.607 709.671 288.324C709.243 288.041 708.973 287.627 708.859 287.083L709.792 286.849C709.881 287.194 710.049 287.452 710.296 287.624C710.545 287.796 710.872 287.882 711.274 287.882C711.732 287.882 712.096 287.785 712.365 287.591C712.637 287.394 712.774 287.158 712.774 286.883C712.774 286.661 712.696 286.475 712.54 286.325C712.385 286.172 712.146 286.058 711.824 285.983L710.758 285.733C710.172 285.595 709.742 285.379 709.467 285.088C709.195 284.794 709.059 284.426 709.059 283.984C709.059 283.623 709.16 283.304 709.363 283.026C709.568 282.749 709.847 282.531 710.2 282.372C710.555 282.214 710.958 282.135 711.408 282.135C712.041 282.135 712.538 282.274 712.898 282.552C713.262 282.829 713.52 283.196 713.673 283.651ZM716.604 284.767V288.615H715.621V280.086H716.604V283.218H716.687C716.837 282.888 717.062 282.625 717.362 282.431C717.664 282.234 718.067 282.135 718.57 282.135C719.005 282.135 719.387 282.223 719.715 282.397C720.042 282.57 720.296 282.835 720.477 283.193C720.66 283.548 720.752 284.001 720.752 284.551V288.615H719.769V284.617C719.769 284.109 719.637 283.716 719.373 283.439C719.112 283.158 718.75 283.018 718.286 283.018C717.964 283.018 717.676 283.086 717.42 283.222C717.167 283.358 716.968 283.557 716.82 283.818C716.676 284.079 716.604 284.395 716.604 284.767ZM727.035 280.086L729.567 287.266H729.667L732.199 280.086H733.282L730.15 288.615H729.084L725.952 280.086H727.035ZM736.915 288.749C736.299 288.749 735.767 288.612 735.32 288.34C734.876 288.066 734.533 287.682 734.292 287.191C734.053 286.697 733.934 286.122 733.934 285.467C733.934 284.812 734.053 284.234 734.292 283.734C734.533 283.232 734.869 282.84 735.3 282.56C735.733 282.277 736.238 282.135 736.815 282.135C737.149 282.135 737.478 282.191 737.802 282.302C738.127 282.413 738.423 282.593 738.69 282.843C738.956 283.09 739.168 283.418 739.327 283.826C739.485 284.234 739.564 284.737 739.564 285.334V285.75H734.633V284.9H738.565C738.565 284.539 738.492 284.217 738.348 283.934C738.206 283.651 738.004 283.428 737.74 283.264C737.479 283.1 737.171 283.018 736.815 283.018C736.424 283.018 736.085 283.115 735.799 283.31C735.516 283.501 735.298 283.751 735.145 284.059C734.993 284.367 734.916 284.698 734.916 285.05V285.617C734.916 286.1 735 286.509 735.166 286.845C735.336 287.178 735.57 287.432 735.87 287.607C736.17 287.78 736.518 287.866 736.915 287.866C737.174 287.866 737.407 287.83 737.615 287.757C737.826 287.682 738.008 287.571 738.161 287.424C738.313 287.274 738.431 287.088 738.515 286.866L739.464 287.133C739.364 287.455 739.196 287.738 738.96 287.982C738.724 288.224 738.433 288.413 738.086 288.549C737.739 288.682 737.349 288.749 736.915 288.749ZM741.411 288.615V282.218H742.361V283.185H742.427C742.544 282.868 742.755 282.611 743.06 282.414C743.366 282.217 743.71 282.118 744.093 282.118C744.165 282.118 744.255 282.12 744.364 282.123C744.472 282.125 744.554 282.13 744.609 282.135V283.135C744.576 283.126 744.5 283.114 744.38 283.097C744.264 283.078 744.14 283.068 744.01 283.068C743.699 283.068 743.421 283.133 743.177 283.264C742.935 283.391 742.744 283.569 742.602 283.797C742.463 284.022 742.394 284.278 742.394 284.567V288.615H741.411ZM746.126 288.615V282.218H747.076V283.218H747.159C747.292 282.876 747.508 282.611 747.805 282.422C748.102 282.231 748.458 282.135 748.875 282.135C749.297 282.135 749.648 282.231 749.929 282.422C750.212 282.611 750.432 282.876 750.591 283.218H750.657C750.821 282.888 751.067 282.625 751.394 282.431C751.722 282.234 752.115 282.135 752.573 282.135C753.145 282.135 753.613 282.314 753.977 282.672C754.34 283.028 754.522 283.582 754.522 284.334V288.615H753.539V284.334C753.539 283.862 753.41 283.525 753.152 283.322C752.894 283.119 752.59 283.018 752.24 283.018C751.79 283.018 751.442 283.154 751.195 283.426C750.947 283.695 750.824 284.037 750.824 284.451V288.615H749.824V284.234C749.824 283.87 749.706 283.577 749.47 283.355C749.234 283.13 748.93 283.018 748.558 283.018C748.303 283.018 748.064 283.086 747.842 283.222C747.623 283.358 747.445 283.547 747.309 283.788C747.176 284.027 747.109 284.303 747.109 284.617V288.615H746.126ZM758.553 288.765C758.148 288.765 757.78 288.689 757.45 288.536C757.119 288.381 756.857 288.157 756.663 287.866C756.468 287.571 756.371 287.216 756.371 286.799C756.371 286.433 756.443 286.136 756.588 285.908C756.732 285.678 756.925 285.497 757.167 285.367C757.408 285.236 757.675 285.139 757.966 285.075C758.26 285.009 758.556 284.956 758.853 284.917C759.242 284.867 759.557 284.83 759.799 284.805C760.043 284.777 760.221 284.731 760.332 284.667C760.445 284.603 760.502 284.492 760.502 284.334V284.301C760.502 283.89 760.39 283.571 760.165 283.343C759.943 283.115 759.606 283.001 759.153 283.001C758.684 283.001 758.316 283.104 758.049 283.31C757.783 283.515 757.596 283.734 757.487 283.968L756.554 283.634C756.721 283.246 756.943 282.943 757.221 282.726C757.501 282.507 757.807 282.354 758.137 282.268C758.47 282.18 758.798 282.135 759.12 282.135C759.325 282.135 759.561 282.16 759.828 282.21C760.097 282.257 760.357 282.356 760.607 282.506C760.859 282.656 761.069 282.882 761.235 283.185C761.402 283.487 761.485 283.893 761.485 284.401V288.615H760.502V287.749H760.452C760.386 287.888 760.275 288.036 760.119 288.195C759.964 288.353 759.757 288.488 759.499 288.599C759.241 288.71 758.925 288.765 758.553 288.765ZM758.703 287.882C759.092 287.882 759.42 287.806 759.686 287.653C759.955 287.501 760.158 287.303 760.294 287.062C760.433 286.82 760.502 286.566 760.502 286.3V285.4C760.461 285.45 760.369 285.496 760.228 285.538C760.089 285.576 759.928 285.611 759.744 285.642C759.564 285.669 759.388 285.694 759.216 285.717C759.046 285.736 758.909 285.753 758.803 285.767C758.548 285.8 758.309 285.854 758.087 285.929C757.868 286.001 757.69 286.111 757.554 286.258C757.421 286.402 757.354 286.6 757.354 286.849C757.354 287.191 757.48 287.449 757.733 287.624C757.988 287.796 758.312 287.882 758.703 287.882Z" fill="white"/>
+<rect x="893.098" y="266.692" width="239.061" height="81.1905" rx="10.8254" fill="#1F2428"/>
+<path d="M906.562 328.267V331.819H905.655V323.946H906.562V326.837H906.639C906.777 326.532 906.985 326.29 907.261 326.11C907.541 325.928 907.912 325.837 908.376 325.837C908.779 325.837 909.131 325.918 909.433 326.079C909.736 326.238 909.97 326.483 910.137 326.814C910.306 327.142 910.391 327.559 910.391 328.067V331.819H909.483V328.128C909.483 327.659 909.362 327.297 909.118 327.04C908.877 326.782 908.543 326.652 908.115 326.652C907.818 326.652 907.551 326.715 907.315 326.841C907.082 326.966 906.898 327.149 906.762 327.39C906.628 327.631 906.562 327.923 906.562 328.267ZM914.943 325.914V326.683H911.883V325.914H914.943ZM912.775 324.499H913.682V330.127C913.682 330.384 913.719 330.576 913.794 330.704C913.871 330.83 913.968 330.914 914.086 330.958C914.206 330.999 914.333 331.019 914.466 331.019C914.566 331.019 914.648 331.014 914.713 331.004C914.777 330.991 914.828 330.981 914.866 330.973L915.051 331.788C914.989 331.811 914.903 331.834 914.793 331.857C914.683 331.883 914.543 331.896 914.374 331.896C914.118 331.896 913.867 331.841 913.621 331.73C913.377 331.62 913.175 331.452 913.013 331.227C912.854 331.001 912.775 330.717 912.775 330.373V324.499ZM919.201 325.914V326.683H916.141V325.914H919.201ZM917.032 324.499H917.94V330.127C917.94 330.384 917.977 330.576 918.051 330.704C918.128 330.83 918.225 330.914 918.343 330.958C918.464 330.999 918.591 331.019 918.724 331.019C918.824 331.019 918.906 331.014 918.97 331.004C919.034 330.991 919.085 330.981 919.124 330.973L919.308 331.788C919.247 331.811 919.161 331.834 919.051 331.857C918.94 331.883 918.801 331.896 918.632 331.896C918.375 331.896 918.124 331.841 917.878 331.73C917.635 331.62 917.432 331.452 917.271 331.227C917.112 331.001 917.032 330.717 917.032 330.373V324.499ZM920.89 334.033V325.914H921.767V326.852H921.874C921.941 326.75 922.033 326.619 922.151 326.46C922.271 326.299 922.443 326.155 922.666 326.029C922.892 325.901 923.197 325.837 923.581 325.837C924.078 325.837 924.516 325.961 924.896 326.21C925.275 326.459 925.571 326.811 925.784 327.267C925.996 327.723 926.103 328.262 926.103 328.882C926.103 329.507 925.996 330.049 925.784 330.508C925.571 330.964 925.276 331.318 924.9 331.569C924.523 331.818 924.088 331.942 923.596 331.942C923.217 331.942 922.913 331.879 922.685 331.753C922.457 331.625 922.282 331.481 922.159 331.319C922.036 331.155 921.941 331.019 921.874 330.912H921.797V334.033H920.89ZM921.782 328.866C921.782 329.312 921.847 329.706 921.978 330.047C922.109 330.385 922.3 330.65 922.551 330.842C922.802 331.032 923.109 331.127 923.473 331.127C923.853 331.127 924.169 331.027 924.423 330.827C924.679 330.625 924.871 330.353 925 330.012C925.13 329.669 925.196 329.287 925.196 328.866C925.196 328.451 925.132 328.077 925.003 327.744C924.878 327.408 924.687 327.143 924.431 326.948C924.177 326.751 923.858 326.652 923.473 326.652C923.104 326.652 922.794 326.746 922.543 326.933C922.292 327.117 922.102 327.376 921.974 327.709C921.846 328.04 921.782 328.426 921.782 328.866ZM931.994 327.237L931.179 327.467C931.128 327.331 931.052 327.199 930.952 327.071C930.855 326.94 930.722 326.833 930.552 326.748C930.383 326.664 930.167 326.621 929.903 326.621C929.541 326.621 929.24 326.705 928.999 326.871C928.761 327.035 928.642 327.244 928.642 327.498C928.642 327.723 928.724 327.902 928.888 328.032C929.052 328.163 929.308 328.272 929.657 328.359L930.533 328.574C931.061 328.702 931.455 328.899 931.713 329.162C931.972 329.424 932.102 329.761 932.102 330.174C932.102 330.512 932.004 330.814 931.81 331.081C931.617 331.347 931.348 331.557 931.002 331.711C930.656 331.865 930.254 331.942 929.795 331.942C929.193 331.942 928.694 331.811 928.3 331.55C927.905 331.288 927.655 330.906 927.55 330.404L928.411 330.189C928.493 330.507 928.648 330.745 928.876 330.904C929.107 331.063 929.408 331.142 929.78 331.142C930.203 331.142 930.538 331.053 930.787 330.873C931.038 330.691 931.164 330.473 931.164 330.22C931.164 330.015 931.092 329.843 930.948 329.705C930.805 329.564 930.585 329.458 930.287 329.389L929.303 329.159C928.762 329.03 928.365 328.832 928.111 328.563C927.86 328.291 927.735 327.952 927.735 327.544C927.735 327.211 927.828 326.916 928.015 326.66C928.205 326.404 928.463 326.202 928.788 326.056C929.116 325.91 929.488 325.837 929.903 325.837C930.487 325.837 930.946 325.965 931.279 326.222C931.615 326.478 931.853 326.816 931.994 327.237ZM934.453 331.88C934.264 331.88 934.101 331.812 933.965 331.677C933.829 331.541 933.761 331.378 933.761 331.188C933.761 330.999 933.829 330.836 933.965 330.7C934.101 330.564 934.264 330.496 934.453 330.496C934.643 330.496 934.806 330.564 934.942 330.7C935.077 330.836 935.145 330.999 935.145 331.188C935.145 331.314 935.113 331.429 935.049 331.534C934.988 331.639 934.904 331.724 934.799 331.788C934.697 331.85 934.582 331.88 934.453 331.88ZM934.453 327.498C934.264 327.498 934.101 327.43 933.965 327.294C933.829 327.158 933.761 326.996 933.761 326.806C933.761 326.616 933.829 326.454 933.965 326.318C934.101 326.182 934.264 326.114 934.453 326.114C934.643 326.114 934.806 326.182 934.942 326.318C935.077 326.454 935.145 326.616 935.145 326.806C935.145 326.932 935.113 327.047 935.049 327.152C934.988 327.257 934.904 327.342 934.799 327.406C934.697 327.467 934.582 327.498 934.453 327.498ZM939.881 323.577L937.344 333.003H936.514L939.051 323.577H939.881ZM944.065 323.577L941.528 333.003H940.697L943.234 323.577H944.065ZM948.033 325.914V326.683H944.973V325.914H948.033ZM945.865 324.499H946.772V330.127C946.772 330.384 946.809 330.576 946.883 330.704C946.96 330.83 947.058 330.914 947.176 330.958C947.296 330.999 947.423 331.019 947.556 331.019C947.656 331.019 947.738 331.014 947.802 331.004C947.866 330.991 947.918 330.981 947.956 330.973L948.141 331.788C948.079 331.811 947.993 331.834 947.883 331.857C947.773 331.883 947.633 331.896 947.464 331.896C947.208 331.896 946.957 331.841 946.711 331.73C946.467 331.62 946.265 331.452 946.103 331.227C945.944 331.001 945.865 330.717 945.865 330.373V324.499ZM951.06 331.819L949.261 325.914H950.214L951.491 330.435H951.552L952.813 325.914H953.782L955.027 330.42H955.089L956.365 325.914H957.319L955.52 331.819H954.628L953.336 327.283H953.244L951.952 331.819H951.06ZM958.843 331.819V325.914H959.75V331.819H958.843ZM959.304 324.93C959.127 324.93 958.975 324.87 958.847 324.749C958.721 324.629 958.658 324.484 958.658 324.315C958.658 324.146 958.721 324.001 958.847 323.88C958.975 323.76 959.127 323.7 959.304 323.7C959.481 323.7 959.632 323.76 959.758 323.88C959.886 324.001 959.95 324.146 959.95 324.315C959.95 324.484 959.886 324.629 959.758 324.749C959.632 324.87 959.481 324.93 959.304 324.93ZM964.304 325.914V326.683H961.244V325.914H964.304ZM962.136 324.499H963.044V330.127C963.044 330.384 963.081 330.576 963.155 330.704C963.232 330.83 963.329 330.914 963.447 330.958C963.568 330.999 963.694 331.019 963.828 331.019C963.928 331.019 964.01 331.014 964.074 331.004C964.138 330.991 964.189 330.981 964.228 330.973L964.412 331.788C964.351 331.811 964.265 331.834 964.155 331.857C964.044 331.883 963.905 331.896 963.735 331.896C963.479 331.896 963.228 331.841 962.982 331.73C962.739 331.62 962.536 331.452 962.375 331.227C962.216 331.001 962.136 330.717 962.136 330.373V324.499ZM968.562 325.914V326.683H965.502V325.914H968.562ZM966.394 324.499H967.301V330.127C967.301 330.384 967.338 330.576 967.412 330.704C967.489 330.83 967.587 330.914 967.705 330.958C967.825 330.999 967.952 331.019 968.085 331.019C968.185 331.019 968.267 331.014 968.331 331.004C968.395 330.991 968.447 330.981 968.485 330.973L968.669 331.788C968.608 331.811 968.522 331.834 968.412 331.857C968.302 331.883 968.162 331.896 967.993 331.896C967.737 331.896 967.485 331.841 967.239 331.73C966.996 331.62 966.794 331.452 966.632 331.227C966.473 331.001 966.394 330.717 966.394 330.373V324.499ZM972.664 331.942C972.095 331.942 971.604 331.816 971.191 331.565C970.781 331.311 970.465 330.958 970.242 330.504C970.021 330.048 969.911 329.517 969.911 328.913C969.911 328.308 970.021 327.775 970.242 327.313C970.465 326.85 970.775 326.488 971.172 326.229C971.572 325.968 972.038 325.837 972.571 325.837C972.879 325.837 973.183 325.888 973.482 325.991C973.782 326.093 974.055 326.26 974.301 326.491C974.547 326.719 974.743 327.021 974.889 327.398C975.035 327.775 975.109 328.239 975.109 328.79V329.174H970.557V328.39H974.186C974.186 328.057 974.119 327.759 973.986 327.498C973.855 327.237 973.668 327.03 973.425 326.879C973.184 326.728 972.899 326.652 972.571 326.652C972.21 326.652 971.897 326.742 971.633 326.921C971.372 327.098 971.171 327.329 971.03 327.613C970.889 327.898 970.818 328.203 970.818 328.528V329.051C970.818 329.497 970.895 329.875 971.049 330.185C971.205 330.493 971.422 330.727 971.699 330.889C971.975 331.047 972.297 331.127 972.664 331.127C972.902 331.127 973.117 331.094 973.309 331.027C973.504 330.958 973.672 330.855 973.813 330.719C973.954 330.581 974.063 330.409 974.14 330.204L975.016 330.45C974.924 330.748 974.769 331.009 974.551 331.235C974.333 331.457 974.064 331.632 973.744 331.757C973.423 331.88 973.063 331.942 972.664 331.942ZM976.813 331.819V325.914H977.69V326.806H977.751C977.859 326.514 978.054 326.277 978.336 326.095C978.618 325.913 978.935 325.822 979.289 325.822C979.356 325.822 979.439 325.823 979.539 325.826C979.639 325.828 979.714 325.832 979.766 325.837V326.76C979.735 326.752 979.665 326.741 979.554 326.725C979.447 326.707 979.333 326.698 979.212 326.698C978.925 326.698 978.669 326.759 978.443 326.879C978.22 326.997 978.044 327.161 977.913 327.371C977.785 327.579 977.721 327.816 977.721 328.082V331.819H976.813ZM981.151 331.88C980.961 331.88 980.798 331.812 980.662 331.677C980.527 331.541 980.459 331.378 980.459 331.188C980.459 330.999 980.527 330.836 980.662 330.7C980.798 330.564 980.961 330.496 981.151 330.496C981.34 330.496 981.503 330.564 981.639 330.7C981.775 330.836 981.843 330.999 981.843 331.188C981.843 331.314 981.811 331.429 981.746 331.534C981.685 331.639 981.602 331.724 981.497 331.788C981.394 331.85 981.279 331.88 981.151 331.88ZM986.194 331.942C985.641 331.942 985.164 331.811 984.764 331.55C984.364 331.288 984.057 330.928 983.841 330.47C983.626 330.011 983.519 329.487 983.519 328.897C983.519 328.298 983.629 327.768 983.849 327.31C984.072 326.848 984.382 326.488 984.779 326.229C985.179 325.968 985.646 325.837 986.179 325.837C986.594 325.837 986.968 325.914 987.301 326.068C987.634 326.222 987.907 326.437 988.12 326.714C988.333 326.99 988.465 327.313 988.516 327.682H987.609C987.54 327.413 987.386 327.175 987.148 326.967C986.912 326.757 986.594 326.652 986.194 326.652C985.84 326.652 985.53 326.744 985.264 326.929C985 327.111 984.794 327.368 984.645 327.702C984.499 328.032 984.426 328.421 984.426 328.866C984.426 329.323 984.498 329.72 984.641 330.058C984.787 330.396 984.992 330.659 985.256 330.846C985.523 331.033 985.835 331.127 986.194 331.127C986.43 331.127 986.644 331.086 986.836 331.004C987.028 330.922 987.191 330.804 987.324 330.65C987.458 330.496 987.552 330.312 987.609 330.097H988.516C988.465 330.445 988.338 330.759 988.135 331.038C987.936 331.315 987.67 331.536 987.34 331.7C987.012 331.861 986.63 331.942 986.194 331.942ZM992.566 331.942C992.033 331.942 991.565 331.815 991.163 331.561C990.763 331.308 990.45 330.953 990.225 330.496C990.002 330.04 989.89 329.507 989.89 328.897C989.89 328.282 990.002 327.745 990.225 327.286C990.45 326.828 990.763 326.472 991.163 326.218C991.565 325.964 992.033 325.837 992.566 325.837C993.099 325.837 993.565 325.964 993.965 326.218C994.368 326.472 994.68 326.828 994.903 327.286C995.129 327.745 995.242 328.282 995.242 328.897C995.242 329.507 995.129 330.04 994.903 330.496C994.68 330.953 994.368 331.308 993.965 331.561C993.565 331.815 993.099 331.942 992.566 331.942ZM992.566 331.127C992.971 331.127 993.304 331.023 993.565 330.815C993.827 330.608 994.02 330.335 994.146 329.997C994.271 329.658 994.334 329.292 994.334 328.897C994.334 328.503 994.271 328.135 994.146 327.794C994.02 327.453 993.827 327.178 993.565 326.967C993.304 326.757 992.971 326.652 992.566 326.652C992.161 326.652 991.828 326.757 991.566 326.967C991.305 327.178 991.111 327.453 990.986 327.794C990.86 328.135 990.798 328.503 990.798 328.897C990.798 329.292 990.86 329.658 990.986 329.997C991.111 330.335 991.305 330.608 991.566 330.815C991.828 331.023 992.161 331.127 992.566 331.127ZM996.951 331.819V325.914H997.828V326.837H997.905C998.028 326.521 998.226 326.277 998.5 326.102C998.775 325.926 999.104 325.837 999.488 325.837C999.878 325.837 1000.2 325.926 1000.46 326.102C1000.72 326.277 1000.93 326.521 1001.07 326.837H1001.13C1001.28 326.532 1001.51 326.29 1001.81 326.11C1002.12 325.928 1002.48 325.837 1002.9 325.837C1003.43 325.837 1003.86 326.003 1004.2 326.333C1004.53 326.661 1004.7 327.172 1004.7 327.867V331.819H1003.79V327.867C1003.79 327.431 1003.67 327.12 1003.44 326.933C1003.2 326.746 1002.92 326.652 1002.59 326.652C1002.18 326.652 1001.86 326.778 1001.63 327.029C1001.4 327.278 1001.29 327.593 1001.29 327.975V331.819H1000.36V327.775C1000.36 327.439 1000.26 327.169 1000.04 326.964C999.82 326.756 999.54 326.652 999.196 326.652C998.96 326.652 998.74 326.715 998.535 326.841C998.333 326.966 998.168 327.14 998.043 327.363C997.92 327.584 997.858 327.839 997.858 328.128V331.819H996.951ZM1009.47 323.577L1006.93 333.003H1006.1L1008.64 323.577H1009.47ZM1011.71 329.666L1011.7 328.544H1011.88L1014.47 325.914H1015.59L1012.84 328.697H1012.76L1011.71 329.666ZM1010.87 331.819V323.946H1011.78V331.819H1010.87ZM1014.62 331.819L1012.31 328.897L1012.96 328.267L1015.77 331.819H1014.62ZM1018.82 331.957C1018.44 331.957 1018.11 331.887 1017.8 331.746C1017.5 331.602 1017.25 331.396 1017.07 331.127C1016.89 330.855 1016.8 330.527 1016.8 330.143C1016.8 329.804 1016.87 329.53 1017 329.32C1017.14 329.107 1017.32 328.941 1017.54 328.82C1017.76 328.7 1018.01 328.61 1018.28 328.551C1018.55 328.49 1018.82 328.441 1019.1 328.405C1019.45 328.359 1019.75 328.324 1019.97 328.301C1020.19 328.276 1020.36 328.233 1020.46 328.175C1020.57 328.116 1020.62 328.013 1020.62 327.867V327.836C1020.62 327.457 1020.51 327.162 1020.31 326.952C1020.1 326.742 1019.79 326.637 1019.37 326.637C1018.94 326.637 1018.6 326.732 1018.35 326.921C1018.11 327.111 1017.93 327.313 1017.83 327.529L1016.97 327.221C1017.13 326.862 1017.33 326.583 1017.59 326.383C1017.85 326.181 1018.13 326.04 1018.43 325.96C1018.74 325.878 1019.04 325.837 1019.34 325.837C1019.53 325.837 1019.75 325.86 1020 325.906C1020.24 325.95 1020.48 326.041 1020.71 326.179C1020.95 326.318 1021.14 326.527 1021.29 326.806C1021.45 327.085 1021.53 327.459 1021.53 327.928V331.819H1020.62V331.019H1020.57C1020.51 331.147 1020.41 331.284 1020.26 331.431C1020.12 331.577 1019.93 331.701 1019.69 331.803C1019.45 331.906 1019.16 331.957 1018.82 331.957ZM1018.96 331.142C1019.32 331.142 1019.62 331.072 1019.86 330.931C1020.11 330.79 1020.3 330.608 1020.43 330.385C1020.55 330.162 1020.62 329.927 1020.62 329.681V328.851C1020.58 328.897 1020.5 328.94 1020.36 328.978C1020.24 329.014 1020.09 329.046 1019.92 329.074C1019.75 329.1 1019.59 329.123 1019.43 329.143C1019.27 329.161 1019.15 329.177 1019.05 329.189C1018.81 329.22 1018.59 329.27 1018.39 329.339C1018.19 329.406 1018.02 329.507 1017.9 329.643C1017.77 329.776 1017.71 329.958 1017.71 330.189C1017.71 330.504 1017.83 330.742 1018.06 330.904C1018.3 331.063 1018.6 331.142 1018.96 331.142ZM1023.51 331.819V325.914H1024.38V326.806H1024.44C1024.55 326.514 1024.75 326.277 1025.03 326.095C1025.31 325.913 1025.63 325.822 1025.98 325.822C1026.05 325.822 1026.13 325.823 1026.23 325.826C1026.33 325.828 1026.41 325.832 1026.46 325.837V326.76C1026.43 326.752 1026.36 326.741 1026.25 326.725C1026.14 326.707 1026.03 326.698 1025.9 326.698C1025.62 326.698 1025.36 326.759 1025.14 326.879C1024.91 326.997 1024.74 327.161 1024.61 327.371C1024.48 327.579 1024.41 327.816 1024.41 328.082V331.819H1023.51ZM1030.8 325.914V326.683H1027.74V325.914H1030.8ZM1028.63 324.499H1029.54V330.127C1029.54 330.384 1029.57 330.576 1029.65 330.704C1029.72 330.83 1029.82 330.914 1029.94 330.958C1030.06 330.999 1030.19 331.019 1030.32 331.019C1030.42 331.019 1030.5 331.014 1030.57 331.004C1030.63 330.991 1030.68 330.981 1030.72 330.973L1030.9 331.788C1030.84 331.811 1030.76 331.834 1030.65 331.857C1030.54 331.883 1030.4 331.896 1030.23 331.896C1029.97 331.896 1029.72 331.841 1029.47 331.73C1029.23 331.62 1029.03 331.452 1028.87 331.227C1028.71 331.001 1028.63 330.717 1028.63 330.373V324.499Z" fill="#B8C4C6"/>
+<path d="M905.857 288.615V280.086H906.89V284.317H906.99L910.821 280.086H912.171L908.589 283.934L912.171 288.615H910.921L907.956 284.651L906.89 285.85V288.615H905.857ZM915.608 288.765C915.203 288.765 914.835 288.689 914.505 288.536C914.174 288.381 913.912 288.157 913.718 287.866C913.523 287.571 913.426 287.216 913.426 286.799C913.426 286.433 913.498 286.136 913.643 285.908C913.787 285.678 913.98 285.497 914.222 285.367C914.463 285.236 914.73 285.139 915.021 285.075C915.315 285.009 915.611 284.956 915.908 284.917C916.297 284.867 916.612 284.83 916.854 284.805C917.098 284.777 917.276 284.731 917.387 284.667C917.5 284.603 917.557 284.492 917.557 284.334V284.301C917.557 283.89 917.445 283.571 917.22 283.343C916.998 283.115 916.661 283.001 916.208 283.001C915.739 283.001 915.371 283.104 915.104 283.31C914.838 283.515 914.651 283.734 914.542 283.968L913.609 283.634C913.776 283.246 913.998 282.943 914.276 282.726C914.556 282.507 914.862 282.354 915.192 282.268C915.525 282.18 915.853 282.135 916.175 282.135C916.38 282.135 916.616 282.16 916.883 282.21C917.152 282.257 917.412 282.356 917.662 282.506C917.914 282.656 918.124 282.882 918.29 283.185C918.457 283.487 918.54 283.893 918.54 284.401V288.615H917.557V287.749H917.507C917.441 287.888 917.33 288.036 917.174 288.195C917.019 288.353 916.812 288.488 916.554 288.599C916.296 288.71 915.98 288.765 915.608 288.765ZM915.758 287.882C916.147 287.882 916.475 287.806 916.741 287.653C917.01 287.501 917.213 287.303 917.349 287.062C917.488 286.82 917.557 286.566 917.557 286.3V285.4C917.516 285.45 917.424 285.496 917.283 285.538C917.144 285.576 916.983 285.611 916.799 285.642C916.619 285.669 916.443 285.694 916.271 285.717C916.101 285.736 915.964 285.753 915.858 285.767C915.603 285.8 915.364 285.854 915.142 285.929C914.923 286.001 914.745 286.111 914.609 286.258C914.476 286.402 914.409 286.6 914.409 286.849C914.409 287.191 914.535 287.449 914.788 287.624C915.043 287.796 915.367 287.882 915.758 287.882ZM920.686 288.615V282.218H921.635V283.185H921.702C921.819 282.868 922.03 282.611 922.335 282.414C922.641 282.217 922.985 282.118 923.368 282.118C923.44 282.118 923.53 282.12 923.639 282.123C923.747 282.125 923.829 282.13 923.884 282.135V283.135C923.851 283.126 923.775 283.114 923.655 283.097C923.539 283.078 923.415 283.068 923.285 283.068C922.974 283.068 922.696 283.133 922.452 283.264C922.21 283.391 922.019 283.569 921.877 283.797C921.738 284.022 921.669 284.278 921.669 284.567V288.615H920.686ZM928.584 282.218V283.051H925.269V282.218H928.584ZM926.235 280.686H927.218V286.783C927.218 287.06 927.258 287.269 927.339 287.408C927.422 287.544 927.528 287.635 927.655 287.682C927.786 287.727 927.923 287.749 928.068 287.749C928.176 287.749 928.265 287.743 928.334 287.732C928.404 287.718 928.459 287.707 928.501 287.699L928.701 288.582C928.634 288.607 928.541 288.632 928.422 288.657C928.302 288.685 928.151 288.699 927.968 288.699C927.69 288.699 927.418 288.639 927.151 288.519C926.888 288.4 926.668 288.218 926.493 287.974C926.321 287.73 926.235 287.421 926.235 287.049V280.686ZM930.414 288.615V282.218H931.397V288.615H930.414ZM930.914 281.152C930.722 281.152 930.557 281.087 930.418 280.957C930.282 280.826 930.214 280.669 930.214 280.486C930.214 280.303 930.282 280.146 930.418 280.015C930.557 279.885 930.722 279.82 930.914 279.82C931.106 279.82 931.269 279.885 931.405 280.015C931.544 280.146 931.614 280.303 931.614 280.486C931.614 280.669 931.544 280.826 931.405 280.957C931.269 281.087 931.106 281.152 930.914 281.152ZM934.465 286.283L934.449 285.067H934.649L937.447 282.218H938.663L935.681 285.234H935.598L934.465 286.283ZM933.549 288.615V280.086H934.532V288.615H933.549ZM937.614 288.615L935.115 285.45L935.815 284.767L938.863 288.615H937.614ZM944.064 288.615V280.086H947.045C947.64 280.086 948.13 280.189 948.515 280.394C948.901 280.597 949.189 280.87 949.378 281.215C949.566 281.556 949.661 281.935 949.661 282.352C949.661 282.718 949.596 283.021 949.465 283.26C949.337 283.498 949.168 283.687 948.957 283.826C948.749 283.965 948.522 284.067 948.278 284.134V284.217C948.539 284.234 948.801 284.326 949.065 284.492C949.329 284.659 949.55 284.898 949.727 285.209C949.905 285.52 949.994 285.9 949.994 286.35C949.994 286.777 949.897 287.162 949.702 287.503C949.508 287.845 949.201 288.115 948.782 288.315C948.363 288.515 947.817 288.615 947.145 288.615H944.064ZM945.096 287.699H947.145C947.82 287.699 948.299 287.569 948.582 287.308C948.868 287.044 949.011 286.725 949.011 286.35C949.011 286.061 948.938 285.794 948.79 285.55C948.643 285.303 948.434 285.106 948.161 284.959C947.889 284.809 947.567 284.734 947.195 284.734H945.096V287.699ZM945.096 283.834H947.012C947.323 283.834 947.603 283.773 947.853 283.651C948.106 283.529 948.306 283.357 948.453 283.135C948.603 282.913 948.678 282.652 948.678 282.352C948.678 281.977 948.547 281.659 948.286 281.398C948.025 281.134 947.612 281.002 947.045 281.002H945.096V283.834ZM955.941 286V282.218H956.924V288.615H955.941V287.532H955.874C955.724 287.857 955.491 288.134 955.175 288.361C954.858 288.586 954.458 288.699 953.975 288.699C953.575 288.699 953.22 288.611 952.909 288.436C952.598 288.258 952.354 287.992 952.176 287.637C951.998 287.278 951.91 286.827 951.91 286.283V282.218H952.892V286.216C952.892 286.683 953.023 287.055 953.284 287.333C953.548 287.61 953.884 287.749 954.292 287.749C954.536 287.749 954.785 287.687 955.037 287.562C955.293 287.437 955.506 287.245 955.679 286.987C955.853 286.729 955.941 286.4 955.941 286ZM959.076 288.615V282.218H960.059V288.615H959.076ZM959.575 281.152C959.384 281.152 959.219 281.087 959.08 280.957C958.944 280.826 958.876 280.669 958.876 280.486C958.876 280.303 958.944 280.146 959.08 280.015C959.219 279.885 959.384 279.82 959.575 279.82C959.767 279.82 959.931 279.885 960.067 280.015C960.206 280.146 960.275 280.303 960.275 280.486C960.275 280.669 960.206 280.826 960.067 280.957C959.931 281.087 959.767 281.152 959.575 281.152ZM963.193 280.086V288.615H962.211V280.086H963.193ZM967.761 288.749C967.228 288.749 966.757 288.614 966.349 288.345C965.941 288.072 965.622 287.689 965.391 287.195C965.161 286.698 965.045 286.111 965.045 285.433C965.045 284.762 965.161 284.179 965.391 283.684C965.622 283.19 965.942 282.808 966.353 282.539C966.764 282.27 967.239 282.135 967.777 282.135C968.194 282.135 968.523 282.205 968.764 282.343C969.009 282.479 969.195 282.635 969.323 282.81C969.453 282.982 969.554 283.124 969.627 283.235H969.71V280.086H970.693V288.615H969.743V287.632H969.627C969.554 287.749 969.452 287.896 969.318 288.074C969.185 288.249 968.995 288.406 968.748 288.544C968.501 288.68 968.172 288.749 967.761 288.749ZM967.894 287.866C968.288 287.866 968.621 287.763 968.894 287.557C969.166 287.349 969.373 287.062 969.514 286.695C969.656 286.326 969.727 285.9 969.727 285.417C969.727 284.939 969.657 284.521 969.518 284.163C969.379 283.802 969.174 283.522 968.902 283.322C968.63 283.119 968.294 283.018 967.894 283.018C967.478 283.018 967.131 283.125 966.853 283.339C966.578 283.55 966.371 283.837 966.232 284.201C966.096 284.562 966.028 284.967 966.028 285.417C966.028 285.872 966.098 286.286 966.237 286.658C966.378 287.027 966.586 287.321 966.861 287.541C967.139 287.757 967.483 287.866 967.894 287.866ZM977.512 283.651L976.629 283.901C976.574 283.754 976.492 283.611 976.384 283.472C976.278 283.33 976.134 283.214 975.95 283.122C975.767 283.031 975.533 282.985 975.247 282.985C974.855 282.985 974.529 283.075 974.268 283.255C974.01 283.433 973.881 283.659 973.881 283.934C973.881 284.179 973.969 284.372 974.147 284.513C974.325 284.655 974.602 284.773 974.98 284.867L975.93 285.1C976.502 285.239 976.928 285.452 977.208 285.737C977.489 286.021 977.629 286.386 977.629 286.833C977.629 287.199 977.523 287.527 977.312 287.816C977.104 288.104 976.812 288.332 976.438 288.499C976.063 288.665 975.627 288.749 975.13 288.749C974.478 288.749 973.938 288.607 973.51 288.324C973.082 288.041 972.812 287.627 972.698 287.083L973.631 286.849C973.72 287.194 973.888 287.452 974.135 287.624C974.385 287.796 974.711 287.882 975.113 287.882C975.571 287.882 975.935 287.785 976.204 287.591C976.477 287.394 976.613 287.158 976.613 286.883C976.613 286.661 976.535 286.475 976.379 286.325C976.224 286.172 975.985 286.058 975.663 285.983L974.597 285.733C974.011 285.595 973.581 285.379 973.306 285.088C973.034 284.794 972.898 284.426 972.898 283.984C972.898 283.623 972.999 283.304 973.202 283.026C973.407 282.749 973.686 282.531 974.039 282.372C974.394 282.214 974.797 282.135 975.247 282.135C975.88 282.135 976.377 282.274 976.738 282.552C977.101 282.829 977.359 283.196 977.512 283.651Z" fill="white"/>
+<rect x="936.395" y="266.692" width="42.3995" height="81.1905" fill="url(#paint1_linear_380_370)"/>
+</g>
+<path d="M32.0228 76.4224C33.765 76.4224 34.2781 77.8376 34.2781 79.5798V85.6691H37.2099V83.3297C37.2099 82.1933 37.6614 81.1033 38.465 80.2997L38.9314 79.8333C38.8395 79.6169 38.7886 79.3787 38.7886 79.1287C38.7886 78.1323 39.5964 77.3245 40.5929 77.3245C41.5893 77.3245 42.3971 78.1323 42.3971 79.1287C42.3971 80.1252 41.5893 80.9329 40.5929 80.9329C40.3429 80.9329 40.1047 80.8821 39.8883 80.7902L39.4218 81.2566C38.872 81.8064 38.5631 82.5522 38.5631 83.3297V85.6691H43.4304C43.698 85.0078 44.3463 84.5414 45.1035 84.5414C46.0999 84.5414 46.9077 85.3492 46.9077 86.3456C46.9077 87.3421 46.0999 88.1499 45.1035 88.1499C44.3463 88.1499 43.698 87.6834 43.4304 87.0222H34.2781V91.0818H38.9198C39.1875 90.4205 39.8357 89.9541 40.5929 89.9541C41.5893 89.9541 42.3971 90.7619 42.3971 91.7583C42.3971 92.7548 41.5893 93.5626 40.5929 93.5626C39.8357 93.5626 39.1874 93.0961 38.9198 92.4349H34.2781V96.4945H38.1961C39.3326 96.4945 40.4225 96.9459 41.2261 97.7495L43.4967 100.02C43.7132 99.9282 43.9513 99.8774 44.2013 99.8774C45.1978 99.8774 46.0056 100.685 46.0056 101.682C46.0056 102.678 45.1978 103.486 44.2013 103.486C43.2049 103.486 42.3971 102.678 42.3971 101.682C42.3971 101.432 42.448 101.193 42.5399 100.977L40.2692 98.7064C39.7194 98.1565 38.9737 97.8476 38.1961 97.8476H34.2781V102.133C34.2781 103.875 33.765 105.29 32.0228 105.29C30.3933 105.29 29.0514 104.055 28.8823 102.465C28.5891 102.544 28.279 102.584 27.9633 102.584C25.973 102.584 24.3548 100.966 24.3548 98.9753C24.3548 98.558 24.4281 98.1521 24.5578 97.78C22.855 97.1372 21.6484 95.4908 21.6484 93.5626C21.6484 91.764 22.7028 90.2078 24.2307 89.4861C23.7402 88.8716 23.4527 88.0935 23.4527 87.2478C23.4527 85.5168 24.6705 84.0734 26.2943 83.7182C26.2041 83.4081 26.159 83.0755 26.159 82.7372C26.159 81.0513 27.3205 79.6305 28.8823 79.2358C29.0514 77.6571 30.3933 76.4224 32.0228 76.4224Z" fill="white" fill-opacity="0.5"/>
+<rect x="15.3359" y="328.938" width="56.8333" height="147.946" rx="28.4167" fill="#1F2428"/>
+<path d="M37.9524 352.985C38.3005 352.891 38.6597 352.843 39.0205 352.843H48.4927C48.8626 352.843 49.2198 352.893 49.5599 352.985C49.335 352.536 48.9894 352.158 48.5619 351.894C48.1345 351.63 47.6419 351.49 47.1395 351.49H40.3736C39.8711 351.49 39.3783 351.63 38.9507 351.894C38.523 352.158 38.1773 352.536 37.9524 352.985ZM34.9609 359.609C34.9609 358.892 35.2461 358.203 35.7536 357.696C36.2611 357.188 36.9495 356.903 37.6673 356.903H49.8459C50.5636 356.903 51.252 357.188 51.7595 357.696C52.2671 358.203 52.5522 358.892 52.5522 359.609V365.022C52.5522 365.74 52.2671 366.428 51.7595 366.936C51.252 367.443 50.5636 367.728 49.8459 367.728H37.6673C36.9495 367.728 36.2611 367.443 35.7536 366.936C35.2461 366.428 34.9609 365.74 34.9609 365.022V359.609ZM37.6673 355.55C37.2974 355.55 36.9402 355.599 36.5992 355.691C36.8242 355.242 37.1699 354.864 37.5975 354.6C38.0252 354.336 38.5179 354.196 39.0205 354.197H48.4927C48.9951 354.197 49.4876 354.336 49.9151 354.6C50.3426 354.864 50.6881 355.242 50.9131 355.691C50.5652 355.597 50.2063 355.549 49.8459 355.55H37.6673Z" fill="#6A737D"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M43.7566 394.115C38.8987 394.115 34.9609 398.052 34.9609 402.91C34.9609 407.768 38.8987 411.706 43.7566 411.706C48.6145 411.706 52.5522 407.768 52.5522 402.91C52.5522 398.052 48.6145 394.115 43.7566 394.115ZM44.4332 397.498C44.4332 397.318 44.3619 397.146 44.235 397.019C44.1081 396.892 43.936 396.821 43.7566 396.821C43.5771 396.821 43.405 396.892 43.2782 397.019C43.1513 397.146 43.08 397.318 43.08 397.498V402.91C43.08 403.284 43.3831 403.587 43.7566 403.587H47.8161C47.9955 403.587 48.1676 403.516 48.2945 403.389C48.4214 403.262 48.4927 403.09 48.4927 402.91C48.4927 402.731 48.4214 402.559 48.2945 402.432C48.1676 402.305 47.9955 402.234 47.8161 402.234H44.4332V397.498Z" fill="#6A737D"/>
+<g clip-path="url(#clip1_380_370)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M32.9258 446.212C32.9258 443.341 34.0663 440.588 36.0964 438.558C38.1264 436.528 40.8798 435.387 43.7508 435.387C46.6217 435.387 49.3751 436.528 51.4052 438.558C53.4353 440.588 54.5758 443.341 54.5758 446.212C54.5758 449.083 53.4353 451.837 51.4052 453.867C49.3751 455.897 46.6217 457.037 43.7508 457.037C40.8798 457.037 38.1264 455.897 36.0964 453.867C34.0663 451.837 32.9258 449.083 32.9258 446.212ZM34.3691 446.212C34.3693 443.967 35.1742 441.797 36.6378 440.094C38.1015 438.392 40.1268 437.271 42.3464 436.934L43.0291 437.278V437.829L41.9841 438.352C41.8712 438.408 41.7752 438.494 41.7055 438.599C41.6359 438.705 41.5952 438.827 41.5875 438.953C41.5797 439.079 41.6052 439.205 41.6614 439.318C41.7176 439.431 41.8025 439.527 41.9076 439.597L44.0726 441.041C44.1912 441.119 44.3303 441.161 44.4724 441.161H45.1941C45.3855 441.161 45.5691 441.085 45.7044 440.949C45.8397 440.814 45.9158 440.63 45.9158 440.439V439.717H46.6374V440.439C46.6373 440.534 46.6558 440.628 46.692 440.715C46.7281 440.803 46.7812 440.883 46.8482 440.95L47.3591 441.459V442.305L47.0603 442.604H46.0861L43.3524 441.237C43.2521 441.187 43.1414 441.161 43.0291 441.161C42.9169 441.161 42.8062 441.187 42.7058 441.237L41.4155 441.882H39.4208C39.2598 441.882 39.1035 441.936 38.9766 442.035C38.8498 442.134 38.7597 442.273 38.7208 442.429L37.9991 445.316C37.9687 445.437 37.9702 445.563 38.0033 445.684C38.0365 445.804 38.1001 445.913 38.1882 446.001L40.3532 448.166C40.4081 448.221 40.4715 448.266 40.5408 448.301L41.5858 448.825V450.542C41.5856 450.637 41.6041 450.731 41.6403 450.819C41.6765 450.906 41.7295 450.986 41.7965 451.053L42.3074 451.563V452.707C42.3075 452.819 42.3336 452.93 42.3839 453.031L43.1056 454.474C43.1656 454.594 43.2577 454.694 43.3717 454.765C43.4856 454.835 43.6169 454.872 43.7508 454.872H45.1941C45.313 454.872 45.43 454.843 45.5347 454.787C45.6394 454.73 45.7287 454.649 45.7945 454.55L47.2379 452.385C47.2543 452.361 47.2693 452.335 47.2826 452.309L48.0043 450.866C48.0546 450.765 48.0808 450.654 48.0808 450.542V449.34L50.1014 446.645C50.1819 446.538 50.2309 446.41 50.2429 446.277C50.2549 446.143 50.2294 446.009 50.1693 445.889L49.9715 445.491H50.9689C51.1603 445.491 51.3438 445.415 51.4792 445.279C51.6145 445.144 51.6906 444.96 51.6906 444.769V444.047H52.8827C53.1859 445.335 53.2133 446.672 52.9633 447.971C52.7133 449.27 52.1914 450.501 51.4319 451.584C50.6725 452.667 49.6926 453.577 48.5566 454.254C47.4206 454.932 46.1542 455.362 44.8404 455.515C43.5267 455.669 42.1953 455.543 40.9336 455.146C39.6719 454.749 38.5085 454.089 37.5197 453.211C36.5308 452.332 35.739 451.255 35.196 450.048C34.653 448.842 34.3712 447.535 34.3691 446.212Z" fill="#6A737D"/>
+</g>
+<g clip-path="url(#clip2_380_370)">
+<rect x="377.086" y="705.12" width="608.929" height="64.9524" rx="21.6508" fill="#1F2428"/>
+<path d="M404.384 742.576H402.703L406.48 732.078H408.31L412.088 742.576H410.406L407.439 733.985H407.357L404.384 742.576ZM404.666 738.465H410.119V739.798H404.666V738.465ZM419.324 736.625L417.935 736.871C417.877 736.693 417.784 736.524 417.658 736.363C417.535 736.203 417.367 736.071 417.156 735.969C416.944 735.866 416.679 735.815 416.361 735.815C415.927 735.815 415.565 735.912 415.275 736.107C414.984 736.298 414.839 736.546 414.839 736.85C414.839 737.113 414.936 737.325 415.131 737.486C415.326 737.647 415.64 737.778 416.074 737.881L417.325 738.168C418.049 738.335 418.589 738.593 418.944 738.942C419.3 739.29 419.478 739.743 419.478 740.3C419.478 740.771 419.341 741.192 419.068 741.561C418.798 741.926 418.42 742.213 417.935 742.422C417.453 742.63 416.894 742.735 416.259 742.735C415.377 742.735 414.658 742.547 414.101 742.171C413.544 741.791 413.202 741.253 413.076 740.556L414.557 740.331C414.649 740.717 414.839 741.009 415.126 741.207C415.413 741.402 415.787 741.499 416.248 741.499C416.751 741.499 417.152 741.395 417.453 741.187C417.754 740.975 417.904 740.717 417.904 740.413C417.904 740.167 417.812 739.96 417.627 739.792C417.446 739.625 417.168 739.499 416.792 739.413L415.459 739.121C414.724 738.954 414.181 738.687 413.829 738.321C413.481 737.956 413.306 737.493 413.306 736.932C413.306 736.468 413.436 736.061 413.696 735.712C413.956 735.364 414.314 735.092 414.772 734.897C415.23 734.699 415.755 734.6 416.346 734.6C417.197 734.6 417.866 734.785 418.355 735.154C418.844 735.519 419.167 736.01 419.324 736.625ZM422.572 739.905L422.562 738.034H422.828L425.965 734.703H427.8L424.223 738.496H423.982L422.572 739.905ZM421.163 742.576V732.078H422.695V742.576H421.163ZM426.135 742.576L423.315 738.834L424.371 737.763L428.016 742.576H426.135ZM433.986 745.528C433.757 745.528 433.548 745.509 433.36 745.472C433.172 745.438 433.032 745.4 432.94 745.359L433.309 744.103C433.589 744.178 433.839 744.211 434.057 744.201C434.276 744.19 434.469 744.108 434.637 743.954C434.808 743.801 434.958 743.55 435.088 743.201L435.277 742.678L432.397 734.703H434.037L436.031 740.812H436.113L438.107 734.703H439.752L436.508 743.626C436.357 744.036 436.166 744.383 435.933 744.667C435.701 744.954 435.424 745.169 435.103 745.313C434.782 745.456 434.409 745.528 433.986 745.528ZM444.241 742.735C443.503 742.735 442.859 742.565 442.309 742.227C441.758 741.889 441.331 741.416 441.027 740.807C440.723 740.199 440.571 739.488 440.571 738.675C440.571 737.858 440.723 737.144 441.027 736.533C441.331 735.921 441.758 735.446 442.309 735.108C442.859 734.769 443.503 734.6 444.241 734.6C444.979 734.6 445.623 734.769 446.173 735.108C446.723 735.446 447.151 735.921 447.455 736.533C447.759 737.144 447.911 737.858 447.911 738.675C447.911 739.488 447.759 740.199 447.455 740.807C447.151 741.416 446.723 741.889 446.173 742.227C445.623 742.565 444.979 742.735 444.241 742.735ZM444.246 741.448C444.724 741.448 445.121 741.322 445.435 741.069C445.75 740.816 445.982 740.479 446.132 740.059C446.286 739.639 446.363 739.176 446.363 738.67C446.363 738.168 446.286 737.706 446.132 737.286C445.982 736.862 445.75 736.522 445.435 736.266C445.121 736.01 444.724 735.882 444.246 735.882C443.764 735.882 443.364 736.01 443.047 736.266C442.732 736.522 442.498 736.862 442.344 737.286C442.194 737.706 442.119 738.168 442.119 738.67C442.119 739.176 442.194 739.639 442.344 740.059C442.498 740.479 442.732 740.816 443.047 741.069C443.364 741.322 443.764 741.448 444.246 741.448ZM454.609 739.311V734.703H456.147V742.576H454.64V741.212H454.558C454.376 741.633 454.086 741.983 453.686 742.263C453.29 742.54 452.796 742.678 452.205 742.678C451.699 742.678 451.252 742.567 450.862 742.345C450.476 742.119 450.172 741.786 449.95 741.346C449.731 740.905 449.622 740.36 449.622 739.71V734.703H451.154V739.526C451.154 740.062 451.303 740.49 451.6 740.807C451.897 741.125 452.283 741.284 452.758 741.284C453.046 741.284 453.331 741.212 453.614 741.069C453.901 740.925 454.139 740.708 454.327 740.418C454.518 740.127 454.612 739.758 454.609 739.311ZM458.206 742.576V734.703H459.687V735.953H459.769C459.913 735.53 460.165 735.196 460.528 734.954C460.893 734.708 461.307 734.585 461.768 734.585C461.864 734.585 461.977 734.588 462.106 734.595C462.24 734.602 462.344 734.61 462.419 734.621V736.087C462.358 736.07 462.248 736.051 462.091 736.03C461.934 736.006 461.777 735.994 461.619 735.994C461.257 735.994 460.934 736.071 460.651 736.225C460.371 736.375 460.148 736.585 459.984 736.855C459.82 737.122 459.738 737.426 459.738 737.768V742.576H458.206ZM473.465 736.625L472.076 736.871C472.018 736.693 471.925 736.524 471.799 736.363C471.676 736.203 471.509 736.071 471.297 735.969C471.085 735.866 470.82 735.815 470.502 735.815C470.068 735.815 469.706 735.912 469.416 736.107C469.125 736.298 468.98 736.546 468.98 736.85C468.98 737.113 469.077 737.325 469.272 737.486C469.467 737.647 469.781 737.778 470.215 737.881L471.466 738.168C472.19 738.335 472.73 738.593 473.086 738.942C473.441 739.29 473.619 739.743 473.619 740.3C473.619 740.771 473.482 741.192 473.209 741.561C472.939 741.926 472.561 742.213 472.076 742.422C471.594 742.63 471.035 742.735 470.4 742.735C469.518 742.735 468.799 742.547 468.242 742.171C467.685 741.791 467.343 741.253 467.217 740.556L468.698 740.331C468.79 740.717 468.98 741.009 469.267 741.207C469.554 741.402 469.928 741.499 470.389 741.499C470.892 741.499 471.293 741.395 471.594 741.187C471.895 740.975 472.045 740.717 472.045 740.413C472.045 740.167 471.953 739.96 471.768 739.792C471.587 739.625 471.309 739.499 470.933 739.413L469.6 739.121C468.865 738.954 468.322 738.687 467.97 738.321C467.622 737.956 467.447 737.493 467.447 736.932C467.447 736.468 467.577 736.061 467.837 735.712C468.097 735.364 468.455 735.092 468.913 734.897C469.371 734.699 469.896 734.6 470.487 734.6C471.338 734.6 472.007 734.785 472.496 735.154C472.985 735.519 473.308 736.01 473.465 736.625ZM478.697 742.735C477.921 742.735 477.253 742.569 476.693 742.237C476.136 741.903 475.705 741.433 475.401 740.828C475.1 740.22 474.95 739.507 474.95 738.69C474.95 737.884 475.1 737.173 475.401 736.558C475.705 735.943 476.129 735.463 476.672 735.118C477.219 734.773 477.858 734.6 478.589 734.6C479.033 734.6 479.464 734.674 479.881 734.821C480.298 734.967 480.672 735.198 481.003 735.513C481.335 735.827 481.596 736.235 481.788 736.738C481.979 737.236 482.075 737.843 482.075 738.557V739.1H475.816V737.952H480.573C480.573 737.549 480.491 737.192 480.327 736.881C480.163 736.567 479.932 736.319 479.635 736.138C479.341 735.957 478.996 735.866 478.599 735.866C478.169 735.866 477.793 735.972 477.472 736.184C477.154 736.392 476.908 736.666 476.734 737.004C476.563 737.339 476.477 737.703 476.477 738.096V738.993C476.477 739.519 476.57 739.967 476.754 740.336C476.942 740.705 477.204 740.987 477.538 741.182C477.873 741.373 478.265 741.469 478.712 741.469C479.003 741.469 479.268 741.428 479.507 741.346C479.746 741.26 479.953 741.134 480.127 740.966C480.301 740.799 480.434 740.592 480.527 740.346L481.977 740.607C481.861 741.035 481.653 741.409 481.352 741.73C481.055 742.048 480.681 742.295 480.229 742.473C479.782 742.647 479.271 742.735 478.697 742.735ZM487.091 742.735C486.329 742.735 485.673 742.562 485.123 742.217C484.576 741.868 484.156 741.388 483.862 740.777C483.568 740.165 483.421 739.464 483.421 738.675C483.421 737.875 483.572 737.17 483.873 736.558C484.173 735.943 484.597 735.463 485.144 735.118C485.69 734.773 486.335 734.6 487.076 734.6C487.674 734.6 488.207 734.711 488.675 734.933C489.143 735.152 489.521 735.46 489.808 735.856C490.098 736.252 490.271 736.715 490.326 737.245H488.834C488.752 736.876 488.564 736.558 488.27 736.292C487.98 736.025 487.59 735.892 487.102 735.892C486.675 735.892 486.3 736.005 485.979 736.23C485.661 736.452 485.414 736.77 485.236 737.183C485.058 737.594 484.969 738.079 484.969 738.639C484.969 739.213 485.057 739.709 485.231 740.126C485.405 740.543 485.651 740.865 485.969 741.094C486.29 741.323 486.668 741.438 487.102 741.438C487.392 741.438 487.655 741.385 487.891 741.279C488.13 741.17 488.33 741.014 488.491 740.812C488.655 740.611 488.769 740.368 488.834 740.085H490.326C490.271 740.594 490.105 741.048 489.829 741.448C489.552 741.848 489.181 742.162 488.716 742.391C488.255 742.62 487.713 742.735 487.091 742.735ZM495.281 742.735C494.543 742.735 493.899 742.565 493.349 742.227C492.798 741.889 492.371 741.416 492.067 740.807C491.763 740.199 491.611 739.488 491.611 738.675C491.611 737.858 491.763 737.144 492.067 736.533C492.371 735.921 492.798 735.446 493.349 735.108C493.899 734.769 494.543 734.6 495.281 734.6C496.019 734.6 496.663 734.769 497.213 735.108C497.763 735.446 498.191 735.921 498.495 736.533C498.799 737.144 498.951 737.858 498.951 738.675C498.951 739.488 498.799 740.199 498.495 740.807C498.191 741.416 497.763 741.889 497.213 742.227C496.663 742.565 496.019 742.735 495.281 742.735ZM495.286 741.448C495.764 741.448 496.161 741.322 496.475 741.069C496.79 740.816 497.022 740.479 497.172 740.059C497.326 739.639 497.403 739.176 497.403 738.67C497.403 738.168 497.326 737.706 497.172 737.286C497.022 736.862 496.79 736.522 496.475 736.266C496.161 736.01 495.764 735.882 495.286 735.882C494.804 735.882 494.404 736.01 494.087 736.266C493.772 736.522 493.538 736.862 493.384 737.286C493.234 737.706 493.159 738.168 493.159 738.67C493.159 739.176 493.234 739.639 493.384 740.059C493.538 740.479 493.772 740.816 494.087 741.069C494.404 741.322 494.804 741.448 495.286 741.448ZM502.194 737.901V742.576H500.662V734.703H502.133V735.984H502.23C502.411 735.567 502.695 735.232 503.081 734.979C503.47 734.727 503.961 734.6 504.552 734.6C505.088 734.6 505.558 734.713 505.962 734.938C506.365 735.161 506.677 735.492 506.9 735.933C507.122 736.374 507.233 736.919 507.233 737.568V742.576H505.7V737.752C505.7 737.182 505.552 736.736 505.254 736.415C504.957 736.09 504.549 735.928 504.029 735.928C503.674 735.928 503.358 736.005 503.081 736.158C502.808 736.312 502.591 736.538 502.43 736.835C502.273 737.129 502.194 737.484 502.194 737.901ZM512.235 742.729C511.6 742.729 511.033 742.567 510.534 742.243C510.038 741.914 509.649 741.448 509.365 740.843C509.085 740.235 508.945 739.505 508.945 738.655C508.945 737.804 509.086 737.076 509.37 736.471C509.657 735.866 510.05 735.403 510.549 735.082C511.048 734.761 511.613 734.6 512.246 734.6C512.734 734.6 513.127 734.682 513.425 734.846C513.725 735.007 513.958 735.195 514.122 735.41C514.289 735.625 514.419 735.815 514.511 735.979H514.603V732.078H516.136V742.576H514.639V741.351H514.511C514.419 741.518 514.286 741.709 514.111 741.925C513.941 742.14 513.705 742.328 513.404 742.489C513.103 742.649 512.714 742.729 512.235 742.729ZM512.574 741.422C513.014 741.422 513.387 741.306 513.691 741.074C513.999 740.838 514.231 740.512 514.388 740.095C514.549 739.678 514.629 739.193 514.629 738.639C514.629 738.092 514.55 737.614 514.393 737.204C514.236 736.794 514.005 736.474 513.701 736.245C513.397 736.017 513.021 735.902 512.574 735.902C512.112 735.902 511.728 736.022 511.42 736.261C511.113 736.5 510.88 736.826 510.723 737.24C510.57 737.653 510.493 738.12 510.493 738.639C510.493 739.165 510.571 739.639 510.728 740.059C510.886 740.479 511.118 740.812 511.426 741.058C511.736 741.301 512.119 741.422 512.574 741.422ZM522.266 742.576V732.078H523.799V735.979H523.891C523.98 735.815 524.108 735.625 524.276 735.41C524.443 735.195 524.675 735.007 524.973 734.846C525.27 734.682 525.663 734.6 526.152 734.6C526.787 734.6 527.354 734.761 527.853 735.082C528.352 735.403 528.743 735.866 529.027 736.471C529.314 737.076 529.458 737.804 529.458 738.655C529.458 739.505 529.316 740.235 529.032 740.843C528.749 741.448 528.359 741.914 527.864 742.243C527.368 742.567 526.802 742.729 526.167 742.729C525.689 742.729 525.297 742.649 524.993 742.489C524.692 742.328 524.457 742.14 524.286 741.925C524.115 741.709 523.983 741.518 523.891 741.351H523.763V742.576H522.266ZM523.768 738.639C523.768 739.193 523.848 739.678 524.009 740.095C524.17 740.512 524.402 740.838 524.706 741.074C525.01 741.306 525.383 741.422 525.823 741.422C526.281 741.422 526.664 741.301 526.972 741.058C527.279 740.812 527.512 740.479 527.669 740.059C527.829 739.639 527.91 739.165 527.91 738.639C527.91 738.12 527.831 737.653 527.674 737.24C527.52 736.826 527.288 736.5 526.977 736.261C526.669 736.022 526.285 735.902 525.823 735.902C525.379 735.902 525.003 736.017 524.696 736.245C524.392 736.474 524.161 736.794 524.004 737.204C523.847 737.614 523.768 738.092 523.768 738.639ZM531.179 742.576V734.703H532.66V735.953H532.742C532.885 735.53 533.138 735.196 533.5 734.954C533.866 734.708 534.28 734.585 534.741 734.585C534.837 734.585 534.949 734.588 535.079 734.595C535.212 734.602 535.317 734.61 535.392 734.621V736.087C535.33 736.07 535.221 736.051 535.064 736.03C534.907 736.006 534.749 735.994 534.592 735.994C534.23 735.994 533.907 736.071 533.623 736.225C533.343 736.375 533.121 736.585 532.957 736.855C532.793 737.122 532.711 737.426 532.711 737.768V742.576H531.179ZM538.939 742.75C538.44 742.75 537.989 742.658 537.586 742.473C537.182 742.285 536.863 742.014 536.627 741.658C536.395 741.303 536.279 740.867 536.279 740.351C536.279 739.907 536.364 739.541 536.535 739.254C536.706 738.967 536.936 738.74 537.227 738.573C537.517 738.405 537.842 738.279 538.201 738.193C538.559 738.108 538.925 738.043 539.298 737.998C539.769 737.944 540.152 737.899 540.446 737.865C540.74 737.828 540.953 737.768 541.086 737.686C541.22 737.604 541.286 737.471 541.286 737.286V737.25C541.286 736.802 541.16 736.456 540.907 736.21C540.658 735.964 540.285 735.841 539.79 735.841C539.274 735.841 538.867 735.955 538.57 736.184C538.276 736.41 538.073 736.661 537.96 736.937L536.519 736.609C536.69 736.131 536.94 735.745 537.268 735.451C537.599 735.154 537.98 734.938 538.411 734.805C538.841 734.668 539.294 734.6 539.769 734.6C540.083 734.6 540.417 734.638 540.769 734.713C541.124 734.785 541.455 734.918 541.763 735.113C542.074 735.307 542.329 735.586 542.527 735.948C542.725 736.307 542.824 736.773 542.824 737.348V742.576H541.327V741.499H541.266C541.167 741.697 541.018 741.892 540.82 742.084C540.622 742.275 540.367 742.434 540.056 742.56C539.745 742.687 539.373 742.75 538.939 742.75ZM539.272 741.52C539.696 741.52 540.058 741.436 540.359 741.269C540.663 741.101 540.893 740.883 541.051 740.613C541.211 740.339 541.291 740.047 541.291 739.736V738.721C541.237 738.776 541.131 738.827 540.974 738.875C540.82 738.919 540.644 738.959 540.446 738.993C540.248 739.024 540.054 739.053 539.867 739.08C539.679 739.104 539.521 739.124 539.395 739.141C539.098 739.179 538.826 739.242 538.58 739.331C538.337 739.42 538.143 739.548 537.996 739.716C537.852 739.88 537.78 740.098 537.78 740.372C537.78 740.751 537.92 741.038 538.201 741.233C538.481 741.424 538.838 741.52 539.272 741.52ZM544.865 742.576V734.703H546.398V742.576H544.865ZM545.639 733.488C545.373 733.488 545.144 733.399 544.952 733.221C544.765 733.04 544.671 732.825 544.671 732.576C544.671 732.323 544.765 732.107 544.952 731.93C545.144 731.749 545.373 731.658 545.639 731.658C545.906 731.658 546.133 731.749 546.321 731.93C546.512 732.107 546.608 732.323 546.608 732.576C546.608 732.825 546.512 733.04 546.321 733.221C546.133 733.399 545.906 733.488 545.639 733.488ZM549.992 737.901V742.576H548.46V734.703H549.931V735.984H550.028C550.209 735.567 550.493 735.232 550.879 734.979C551.269 734.727 551.759 734.6 552.35 734.6C552.887 734.6 553.356 734.713 553.76 734.938C554.163 735.161 554.476 735.492 554.698 735.933C554.92 736.374 555.031 736.919 555.031 737.568V742.576H553.498V737.752C553.498 737.182 553.35 736.736 553.052 736.415C552.755 736.09 552.347 735.928 551.827 735.928C551.472 735.928 551.156 736.005 550.879 736.158C550.606 736.312 550.389 736.538 550.228 736.835C550.071 737.129 549.992 737.484 549.992 737.901ZM558.096 742.673C557.816 742.673 557.575 742.574 557.373 742.376C557.172 742.174 557.071 741.932 557.071 741.648C557.071 741.368 557.172 741.129 557.373 740.93C557.575 740.729 557.816 740.628 558.096 740.628C558.376 740.628 558.617 740.729 558.819 740.93C559.02 741.129 559.121 741.368 559.121 741.648C559.121 741.836 559.073 742.008 558.978 742.166C558.885 742.319 558.762 742.442 558.609 742.535C558.455 742.627 558.284 742.673 558.096 742.673ZM562.184 742.673C561.903 742.673 561.663 742.574 561.461 742.376C561.259 742.174 561.159 741.932 561.159 741.648C561.159 741.368 561.259 741.129 561.461 740.93C561.663 740.729 561.903 740.628 562.184 740.628C562.464 740.628 562.705 740.729 562.906 740.93C563.108 741.129 563.209 741.368 563.209 741.648C563.209 741.836 563.161 742.008 563.065 742.166C562.973 742.319 562.85 742.442 562.696 742.535C562.542 742.627 562.372 742.673 562.184 742.673ZM566.271 742.673C565.991 742.673 565.75 742.574 565.549 742.376C565.347 742.174 565.246 741.932 565.246 741.648C565.246 741.368 565.347 741.129 565.549 740.93C565.75 740.729 565.991 740.628 566.271 740.628C566.552 740.628 566.792 740.729 566.994 740.93C567.196 741.129 567.296 741.368 567.296 741.648C567.296 741.836 567.249 742.008 567.153 742.166C567.061 742.319 566.938 742.442 566.784 742.535C566.63 742.627 566.459 742.673 566.271 742.673Z" fill="#989EA4"/>
+<rect x="932.785" y="716.848" width="41.4974" height="41.4974" rx="9.02116" fill="#369DFD" fill-opacity="0.1"/>
+<path d="M954.659 743.235L960.297 737.597M960.297 737.597L954.659 731.958M960.297 737.597H946.765" stroke="#369DFD" stroke-width="1.35317" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<rect x="376.635" y="704.669" width="609.831" height="65.8545" rx="22.1019" stroke="url(#paint2_linear_380_370)" stroke-width="0.902116"/>
+<path d="M1233.97 763.759H1235.34L1236.3 765.011L1236.75 765.567L1238.28 767.563H1236.86L1235.84 766.231L1235.49 765.746L1233.97 763.759ZM1238.57 762.145C1238.57 763.125 1238.39 763.969 1238.04 764.674C1237.68 765.377 1237.18 765.918 1236.56 766.298C1235.94 766.675 1235.23 766.863 1234.44 766.863C1233.64 766.863 1232.93 766.675 1232.31 766.298C1231.69 765.918 1231.2 765.375 1230.84 764.67C1230.48 763.964 1230.3 763.122 1230.3 762.145C1230.3 761.164 1230.48 760.322 1230.84 759.62C1231.2 758.914 1231.69 758.373 1232.31 757.996C1232.93 757.616 1233.64 757.427 1234.44 757.427C1235.23 757.427 1235.94 757.616 1236.56 757.996C1237.18 758.373 1237.68 758.914 1238.04 759.62C1238.39 760.322 1238.57 761.164 1238.57 762.145ZM1237.2 762.145C1237.2 761.397 1237.08 760.768 1236.84 760.257C1236.6 759.742 1236.27 759.354 1235.85 759.09C1235.44 758.824 1234.96 758.691 1234.44 758.691C1233.91 758.691 1233.44 758.824 1233.02 759.09C1232.61 759.354 1232.28 759.742 1232.03 760.257C1231.8 760.768 1231.68 761.397 1231.68 762.145C1231.68 762.892 1231.8 763.523 1232.03 764.037C1232.28 764.549 1232.61 764.937 1233.02 765.203C1233.44 765.467 1233.91 765.598 1234.44 765.598C1234.96 765.598 1235.44 765.467 1235.85 765.203C1236.27 764.937 1236.6 764.549 1236.84 764.037C1237.08 763.523 1237.2 762.892 1237.2 762.145ZM1244.56 763.88V759.848H1245.9V766.737H1244.58V765.544H1244.51C1244.35 765.912 1244.1 766.219 1243.75 766.464C1243.4 766.706 1242.97 766.827 1242.45 766.827C1242.01 766.827 1241.62 766.73 1241.28 766.535C1240.94 766.338 1240.68 766.047 1240.48 765.661C1240.29 765.275 1240.19 764.798 1240.19 764.23V759.848H1241.53V764.069C1241.53 764.538 1241.67 764.912 1241.93 765.19C1242.19 765.468 1242.52 765.607 1242.94 765.607C1243.19 765.607 1243.44 765.544 1243.69 765.419C1243.94 765.293 1244.15 765.103 1244.31 764.849C1244.48 764.595 1244.56 764.272 1244.56 763.88ZM1247.71 766.737V759.848H1249.05V766.737H1247.71ZM1248.38 758.785C1248.15 758.785 1247.95 758.708 1247.78 758.552C1247.62 758.394 1247.53 758.205 1247.53 757.987C1247.53 757.766 1247.62 757.578 1247.78 757.422C1247.95 757.264 1248.15 757.184 1248.38 757.184C1248.62 757.184 1248.81 757.264 1248.98 757.422C1249.15 757.578 1249.23 757.766 1249.23 757.987C1249.23 758.205 1249.15 758.394 1248.98 758.552C1248.81 758.708 1248.62 758.785 1248.38 758.785ZM1253.75 766.876C1253.09 766.876 1252.51 766.725 1252.03 766.423C1251.55 766.118 1251.18 765.698 1250.93 765.163C1250.67 764.628 1250.54 764.015 1250.54 763.324C1250.54 762.625 1250.67 762.007 1250.94 761.472C1251.2 760.934 1251.57 760.514 1252.05 760.212C1252.53 759.91 1253.09 759.759 1253.74 759.759C1254.26 759.759 1254.73 759.856 1255.14 760.05C1255.55 760.242 1255.88 760.511 1256.13 760.858C1256.38 761.204 1256.53 761.61 1256.58 762.073H1255.28C1255.21 761.75 1255.04 761.472 1254.78 761.239C1254.53 761.006 1254.19 760.889 1253.76 760.889C1253.39 760.889 1253.06 760.988 1252.78 761.185C1252.5 761.379 1252.28 761.657 1252.13 762.019C1251.97 762.378 1251.9 762.803 1251.9 763.293C1251.9 763.795 1251.97 764.229 1252.12 764.593C1252.28 764.958 1252.49 765.241 1252.77 765.441C1253.05 765.641 1253.38 765.742 1253.76 765.742C1254.02 765.742 1254.25 765.695 1254.45 765.603C1254.66 765.507 1254.84 765.371 1254.98 765.194C1255.12 765.018 1255.22 764.806 1255.28 764.558H1256.58C1256.53 765.003 1256.39 765.401 1256.15 765.751C1255.9 766.1 1255.58 766.376 1255.17 766.576C1254.77 766.776 1254.3 766.876 1253.75 766.876ZM1259.25 764.401L1259.24 762.764H1259.47L1262.22 759.848H1263.82L1260.69 763.167H1260.48L1259.25 764.401ZM1258.02 766.737V757.552H1259.36V766.737H1258.02ZM1262.37 766.737L1259.9 763.463L1260.82 762.526L1264.01 766.737H1262.37ZM1270.39 766.89C1269.96 766.89 1269.56 766.809 1269.21 766.648C1268.86 766.483 1268.58 766.245 1268.37 765.934C1268.17 765.624 1268.07 765.242 1268.07 764.791C1268.07 764.402 1268.14 764.082 1268.29 763.831C1268.44 763.58 1268.64 763.381 1268.9 763.235C1269.15 763.088 1269.43 762.977 1269.75 762.903C1270.06 762.828 1270.38 762.771 1270.71 762.732C1271.12 762.684 1271.45 762.646 1271.71 762.616C1271.97 762.583 1272.16 762.53 1272.27 762.459C1272.39 762.387 1272.45 762.27 1272.45 762.109V762.077C1272.45 761.686 1272.34 761.382 1272.12 761.167C1271.9 760.952 1271.57 760.844 1271.14 760.844C1270.69 760.844 1270.33 760.944 1270.07 761.145C1269.81 761.342 1269.64 761.562 1269.54 761.804L1268.28 761.517C1268.43 761.098 1268.64 760.76 1268.93 760.503C1269.22 760.243 1269.55 760.055 1269.93 759.938C1270.31 759.819 1270.7 759.759 1271.12 759.759C1271.4 759.759 1271.69 759.792 1271.99 759.857C1272.31 759.92 1272.6 760.037 1272.86 760.207C1273.14 760.378 1273.36 760.621 1273.53 760.938C1273.71 761.252 1273.79 761.66 1273.79 762.163V766.737H1272.48V765.795H1272.43C1272.34 765.969 1272.21 766.139 1272.04 766.307C1271.87 766.474 1271.64 766.613 1271.37 766.724C1271.1 766.834 1270.77 766.89 1270.39 766.89ZM1270.68 765.813C1271.06 765.813 1271.37 765.74 1271.64 765.594C1271.9 765.447 1272.1 765.256 1272.24 765.02C1272.38 764.78 1272.45 764.525 1272.45 764.253V763.365C1272.4 763.412 1272.31 763.457 1272.17 763.499C1272.04 763.538 1271.89 763.572 1271.71 763.602C1271.54 763.629 1271.37 763.655 1271.21 763.679C1271.04 763.699 1270.9 763.717 1270.79 763.732C1270.53 763.765 1270.29 763.821 1270.08 763.898C1269.87 763.976 1269.7 764.088 1269.57 764.235C1269.44 764.378 1269.38 764.57 1269.38 764.809C1269.38 765.141 1269.5 765.392 1269.75 765.562C1269.99 765.73 1270.31 765.813 1270.68 765.813ZM1278.48 766.876C1277.81 766.876 1277.24 766.725 1276.76 766.423C1276.28 766.118 1275.91 765.698 1275.66 765.163C1275.4 764.628 1275.27 764.015 1275.27 763.324C1275.27 762.625 1275.4 762.007 1275.66 761.472C1275.93 760.934 1276.3 760.514 1276.78 760.212C1277.26 759.91 1277.82 759.759 1278.47 759.759C1278.99 759.759 1279.46 759.856 1279.87 760.05C1280.28 760.242 1280.61 760.511 1280.86 760.858C1281.11 761.204 1281.26 761.61 1281.31 762.073H1280.01C1279.93 761.75 1279.77 761.472 1279.51 761.239C1279.26 761.006 1278.92 760.889 1278.49 760.889C1278.12 760.889 1277.79 760.988 1277.51 761.185C1277.23 761.379 1277.01 761.657 1276.86 762.019C1276.7 762.378 1276.62 762.803 1276.62 763.293C1276.62 763.795 1276.7 764.229 1276.85 764.593C1277.01 764.958 1277.22 765.241 1277.5 765.441C1277.78 765.641 1278.11 765.742 1278.49 765.742C1278.74 765.742 1278.97 765.695 1279.18 765.603C1279.39 765.507 1279.56 765.371 1279.71 765.194C1279.85 765.018 1279.95 764.806 1280.01 764.558H1281.31C1281.26 765.003 1281.12 765.401 1280.88 765.751C1280.63 766.1 1280.31 766.376 1279.9 766.576C1279.5 766.776 1279.03 766.876 1278.48 766.876ZM1285.96 759.848V760.925H1282.2V759.848H1285.96ZM1283.21 758.198H1284.55V764.715C1284.55 764.975 1284.59 765.171 1284.66 765.302C1284.74 765.431 1284.84 765.519 1284.97 765.567C1285.09 765.612 1285.23 765.634 1285.37 765.634C1285.48 765.634 1285.57 765.627 1285.66 765.612C1285.74 765.597 1285.8 765.585 1285.84 765.576L1286.09 766.683C1286.01 766.713 1285.9 766.743 1285.75 766.773C1285.61 766.806 1285.43 766.824 1285.22 766.827C1284.86 766.833 1284.53 766.77 1284.23 766.639C1283.92 766.507 1283.68 766.304 1283.49 766.029C1283.3 765.754 1283.21 765.408 1283.21 764.993V758.198ZM1287.44 766.737V759.848H1288.79V766.737H1287.44ZM1288.12 758.785C1287.89 758.785 1287.69 758.708 1287.52 758.552C1287.36 758.394 1287.27 758.205 1287.27 757.987C1287.27 757.766 1287.36 757.578 1287.52 757.422C1287.69 757.264 1287.89 757.184 1288.12 757.184C1288.35 757.184 1288.55 757.264 1288.72 757.422C1288.89 757.578 1288.97 757.766 1288.97 757.987C1288.97 758.205 1288.89 758.394 1288.72 758.552C1288.55 758.708 1288.35 758.785 1288.12 758.785ZM1293.49 766.876C1292.85 766.876 1292.28 766.728 1291.8 766.432C1291.32 766.136 1290.94 765.722 1290.68 765.19C1290.41 764.658 1290.28 764.036 1290.28 763.324C1290.28 762.61 1290.41 761.985 1290.68 761.45C1290.94 760.914 1291.32 760.499 1291.8 760.203C1292.28 759.907 1292.85 759.759 1293.49 759.759C1294.14 759.759 1294.7 759.907 1295.18 760.203C1295.66 760.499 1296.04 760.914 1296.3 761.45C1296.57 761.985 1296.7 762.61 1296.7 763.324C1296.7 764.036 1296.57 764.658 1296.3 765.19C1296.04 765.722 1295.66 766.136 1295.18 766.432C1294.7 766.728 1294.14 766.876 1293.49 766.876ZM1293.5 765.751C1293.91 765.751 1294.26 765.64 1294.54 765.419C1294.81 765.197 1295.01 764.903 1295.15 764.535C1295.28 764.167 1295.35 763.762 1295.35 763.32C1295.35 762.88 1295.28 762.477 1295.15 762.109C1295.01 761.738 1294.81 761.441 1294.54 761.216C1294.26 760.992 1293.91 760.88 1293.5 760.88C1293.07 760.88 1292.72 760.992 1292.45 761.216C1292.17 761.441 1291.97 761.738 1291.83 762.109C1291.7 762.477 1291.63 762.88 1291.63 763.32C1291.63 763.762 1291.7 764.167 1291.83 764.535C1291.97 764.903 1292.17 765.197 1292.45 765.419C1292.72 765.64 1293.07 765.751 1293.5 765.751ZM1299.54 762.647V766.737H1298.2V759.848H1299.49V760.97H1299.57C1299.73 760.605 1299.98 760.312 1300.32 760.091C1300.66 759.869 1301.09 759.759 1301.6 759.759C1302.07 759.759 1302.48 759.857 1302.84 760.055C1303.19 760.249 1303.46 760.539 1303.66 760.925C1303.85 761.311 1303.95 761.787 1303.95 762.356V766.737H1302.61V762.517C1302.61 762.018 1302.48 761.627 1302.22 761.346C1301.96 761.062 1301.6 760.92 1301.15 760.92C1300.83 760.92 1300.56 760.988 1300.32 761.122C1300.08 761.257 1299.89 761.454 1299.75 761.714C1299.61 761.971 1299.54 762.282 1299.54 762.647ZM1306.63 766.823C1306.39 766.823 1306.17 766.736 1306 766.562C1305.82 766.386 1305.73 766.174 1305.73 765.926C1305.73 765.68 1305.82 765.471 1306 765.298C1306.17 765.121 1306.39 765.033 1306.63 765.033C1306.88 765.033 1307.09 765.121 1307.26 765.298C1307.44 765.471 1307.53 765.68 1307.53 765.926C1307.53 766.09 1307.49 766.241 1307.4 766.379C1307.32 766.513 1307.21 766.621 1307.08 766.701C1306.94 766.782 1306.8 766.823 1306.63 766.823ZM1306.63 761.808C1306.39 761.808 1306.17 761.72 1306 761.544C1305.82 761.367 1305.73 761.157 1305.73 760.911C1305.73 760.666 1305.82 760.457 1306 760.283C1306.17 760.107 1306.39 760.019 1306.63 760.019C1306.88 760.019 1307.09 760.107 1307.26 760.283C1307.44 760.457 1307.53 760.666 1307.53 760.911C1307.53 761.076 1307.49 761.227 1307.4 761.364C1307.32 761.499 1307.21 761.607 1307.08 761.687C1306.94 761.768 1306.8 761.808 1306.63 761.808ZM1315.21 766.944C1314.85 766.944 1314.51 766.854 1314.21 766.675C1313.9 766.492 1313.66 766.25 1313.48 765.948C1313.3 765.643 1313.21 765.308 1313.21 764.943C1313.21 764.576 1313.3 764.241 1313.48 763.939C1313.66 763.634 1313.9 763.39 1314.21 763.208C1314.51 763.025 1314.85 762.934 1315.21 762.934H1316.2V761.346H1315.21C1314.85 761.346 1314.51 761.257 1314.21 761.077C1313.9 760.898 1313.66 760.657 1313.48 760.355C1313.3 760.05 1313.21 759.714 1313.21 759.346C1313.21 758.978 1313.3 758.643 1313.48 758.341C1313.66 758.039 1313.9 757.799 1314.21 757.619C1314.51 757.437 1314.85 757.346 1315.21 757.346C1315.58 757.346 1315.92 757.437 1316.22 757.619C1316.52 757.799 1316.77 758.039 1316.94 758.341C1317.13 758.643 1317.22 758.978 1317.22 759.346V760.324H1318.81V759.346C1318.81 758.978 1318.9 758.643 1319.08 758.341C1319.26 758.039 1319.5 757.799 1319.8 757.619C1320.11 757.437 1320.44 757.346 1320.81 757.346C1321.18 757.346 1321.51 757.437 1321.82 757.619C1322.12 757.799 1322.36 758.039 1322.54 758.341C1322.72 758.643 1322.81 758.978 1322.81 759.346C1322.81 759.714 1322.72 760.05 1322.54 760.355C1322.36 760.657 1322.12 760.898 1321.82 761.077C1321.51 761.257 1321.18 761.346 1320.81 761.346H1319.83V762.934H1320.81C1321.18 762.934 1321.51 763.025 1321.82 763.208C1322.12 763.39 1322.36 763.634 1322.54 763.939C1322.72 764.241 1322.81 764.576 1322.81 764.943C1322.81 765.308 1322.72 765.643 1322.54 765.948C1322.36 766.25 1322.12 766.492 1321.82 766.675C1321.51 766.854 1321.18 766.944 1320.81 766.944C1320.44 766.944 1320.11 766.854 1319.8 766.675C1319.5 766.492 1319.26 766.25 1319.08 765.948C1318.9 765.643 1318.81 765.308 1318.81 764.943V763.957H1317.22V764.943C1317.22 765.308 1317.13 765.643 1316.94 765.948C1316.77 766.25 1316.52 766.492 1316.22 766.675C1315.92 766.854 1315.58 766.944 1315.21 766.944ZM1315.21 765.921C1315.4 765.921 1315.56 765.878 1315.71 765.791C1315.86 765.704 1315.98 765.586 1316.07 765.437C1316.16 765.287 1316.2 765.123 1316.2 764.943V763.957H1315.21C1315.03 763.957 1314.87 764.001 1314.72 764.091C1314.57 764.178 1314.45 764.296 1314.36 764.445C1314.27 764.595 1314.23 764.761 1314.23 764.943C1314.23 765.123 1314.27 765.287 1314.36 765.437C1314.45 765.586 1314.57 765.704 1314.72 765.791C1314.87 765.878 1315.03 765.921 1315.21 765.921ZM1315.21 760.324H1316.2V759.346C1316.2 759.164 1316.16 758.999 1316.07 758.853C1315.98 758.703 1315.86 758.585 1315.71 758.498C1315.56 758.412 1315.4 758.368 1315.21 758.368C1315.03 758.368 1314.87 758.412 1314.72 758.498C1314.57 758.585 1314.45 758.703 1314.36 758.853C1314.27 758.999 1314.23 759.164 1314.23 759.346C1314.23 759.528 1314.27 759.694 1314.36 759.844C1314.45 759.99 1314.57 760.107 1314.72 760.194C1314.87 760.28 1315.03 760.324 1315.21 760.324ZM1319.83 760.324H1320.81C1320.99 760.324 1321.16 760.28 1321.3 760.194C1321.45 760.107 1321.57 759.99 1321.65 759.844C1321.74 759.694 1321.79 759.528 1321.79 759.346C1321.79 759.164 1321.74 758.999 1321.65 758.853C1321.57 758.703 1321.45 758.585 1321.3 758.498C1321.16 758.412 1320.99 758.368 1320.81 758.368C1320.63 758.368 1320.46 758.412 1320.31 758.498C1320.16 758.585 1320.05 758.703 1319.96 758.853C1319.87 758.999 1319.83 759.164 1319.83 759.346V760.324ZM1320.81 765.921C1320.99 765.921 1321.16 765.878 1321.3 765.791C1321.45 765.704 1321.57 765.586 1321.65 765.437C1321.74 765.287 1321.79 765.123 1321.79 764.943C1321.79 764.761 1321.74 764.595 1321.65 764.445C1321.57 764.296 1321.45 764.178 1321.3 764.091C1321.16 764.001 1320.99 763.957 1320.81 763.957H1319.83V764.943C1319.83 765.123 1319.87 765.287 1319.96 765.437C1320.05 765.586 1320.16 765.704 1320.31 765.791C1320.46 765.878 1320.63 765.921 1320.81 765.921ZM1317.22 762.934H1318.81V761.346H1317.22V762.934ZM1331.2 765.194V759.131H1332.41V765.194H1331.2ZM1328.78 762.764V761.562H1334.84V762.764H1328.78ZM1340.36 766.737V757.552H1341.75V761.938H1341.86L1345.71 757.552H1347.46L1343.75 761.687L1347.47 766.737H1345.8L1342.84 762.634L1341.75 763.88V766.737H1340.36Z" fill="#989EA4"/>
+<path d="M1254.33 98.2686V89.0834H1257.6C1258.32 89.0834 1258.91 89.2134 1259.38 89.4736C1259.85 89.7337 1260.2 90.0895 1260.43 90.541C1260.66 90.9895 1260.78 91.4948 1260.78 92.0569C1260.78 92.622 1260.66 93.1303 1260.43 93.5818C1260.19 94.0303 1259.84 94.3861 1259.37 94.6492C1258.9 94.9093 1258.31 95.0394 1257.6 95.0394H1255.34V93.8643H1257.47C1257.92 93.8643 1258.29 93.7866 1258.57 93.6311C1258.85 93.4726 1259.06 93.2574 1259.19 92.9853C1259.32 92.7132 1259.39 92.4037 1259.39 92.0569C1259.39 91.7101 1259.32 91.4021 1259.19 91.133C1259.06 90.8639 1258.85 90.6531 1258.57 90.5006C1258.28 90.3481 1257.91 90.2719 1257.45 90.2719H1255.71V98.2686H1254.33ZM1262.3 98.2686V91.3797H1263.59V92.474H1263.67C1263.79 92.1032 1264.01 91.8117 1264.33 91.5994C1264.65 91.3842 1265.01 91.2765 1265.41 91.2765C1265.5 91.2765 1265.6 91.2795 1265.71 91.2855C1265.83 91.2915 1265.92 91.2989 1265.98 91.3079V92.5906C1265.93 92.5757 1265.83 92.5592 1265.7 92.5413C1265.56 92.5203 1265.42 92.5099 1265.28 92.5099C1264.97 92.5099 1264.69 92.5771 1264.44 92.7117C1264.19 92.8433 1264 93.0271 1263.85 93.2633C1263.71 93.4966 1263.64 93.7627 1263.64 94.0617V98.2686H1262.3ZM1269.8 98.4076C1269.15 98.4076 1268.59 98.2596 1268.11 97.9636C1267.63 97.6676 1267.25 97.2535 1266.99 96.7212C1266.72 96.189 1266.59 95.5671 1266.59 94.8555C1266.59 94.1409 1266.72 93.516 1266.99 92.9808C1267.25 92.4456 1267.63 92.03 1268.11 91.734C1268.59 91.438 1269.15 91.29 1269.8 91.29C1270.45 91.29 1271.01 91.438 1271.49 91.734C1271.97 92.03 1272.35 92.4456 1272.61 92.9808C1272.88 93.516 1273.01 94.1409 1273.01 94.8555C1273.01 95.5671 1272.88 96.189 1272.61 96.7212C1272.35 97.2535 1271.97 97.6676 1271.49 97.9636C1271.01 98.2596 1270.45 98.4076 1269.8 98.4076ZM1269.8 97.2819C1270.22 97.2819 1270.57 97.1712 1270.84 96.95C1271.12 96.7287 1271.32 96.4342 1271.45 96.0664C1271.59 95.6987 1271.66 95.2935 1271.66 94.851C1271.66 94.4115 1271.59 94.0078 1271.45 93.6401C1271.32 93.2693 1271.12 92.9718 1270.84 92.7476C1270.57 92.5233 1270.22 92.4112 1269.8 92.4112C1269.38 92.4112 1269.03 92.5233 1268.75 92.7476C1268.48 92.9718 1268.28 93.2693 1268.14 93.6401C1268.01 94.0078 1267.94 94.4115 1267.94 94.851C1267.94 95.2935 1268.01 95.6987 1268.14 96.0664C1268.28 96.4342 1268.48 96.7287 1268.75 96.95C1269.03 97.1712 1269.38 97.2819 1269.8 97.2819ZM1277.85 98.2686V91.3797H1279.14V92.5009H1279.22C1279.37 92.1212 1279.6 91.8252 1279.93 91.6129C1280.25 91.3976 1280.64 91.29 1281.1 91.29C1281.56 91.29 1281.94 91.3976 1282.25 91.6129C1282.57 91.8282 1282.8 92.1242 1282.95 92.5009H1283.02C1283.19 92.1331 1283.45 91.8401 1283.81 91.6219C1284.17 91.4006 1284.59 91.29 1285.09 91.29C1285.71 91.29 1286.22 91.4858 1286.62 91.8775C1287.02 92.2692 1287.21 92.8597 1287.21 93.6491V98.2686H1285.87V93.7746C1285.87 93.3082 1285.75 92.9703 1285.49 92.761C1285.24 92.5517 1284.94 92.4471 1284.58 92.4471C1284.15 92.4471 1283.81 92.5816 1283.56 92.8507C1283.32 93.1168 1283.2 93.4592 1283.2 93.8778V98.2686H1281.86V93.6894C1281.86 93.3157 1281.75 93.0152 1281.51 92.7879C1281.28 92.5607 1280.98 92.4471 1280.6 92.4471C1280.35 92.4471 1280.12 92.5144 1279.9 92.6489C1279.69 92.7805 1279.52 92.9643 1279.38 93.2006C1279.26 93.4368 1279.19 93.7103 1279.19 94.0213V98.2686H1277.85ZM1291.91 98.4076C1291.27 98.4076 1290.7 98.2596 1290.22 97.9636C1289.74 97.6676 1289.37 97.2535 1289.1 96.7212C1288.84 96.189 1288.7 95.5671 1288.7 94.8555C1288.7 94.1409 1288.84 93.516 1289.1 92.9808C1289.37 92.4456 1289.74 92.03 1290.22 91.734C1290.7 91.438 1291.27 91.29 1291.91 91.29C1292.56 91.29 1293.12 91.438 1293.6 91.734C1294.09 92.03 1294.46 92.4456 1294.73 92.9808C1294.99 93.516 1295.13 94.1409 1295.13 94.8555C1295.13 95.5671 1294.99 96.189 1294.73 96.7212C1294.46 97.2535 1294.09 97.6676 1293.6 97.9636C1293.12 98.2596 1292.56 98.4076 1291.91 98.4076ZM1291.92 97.2819C1292.34 97.2819 1292.68 97.1712 1292.96 96.95C1293.23 96.7287 1293.44 96.4342 1293.57 96.0664C1293.7 95.6987 1293.77 95.2935 1293.77 94.851C1293.77 94.4115 1293.7 94.0078 1293.57 93.6401C1293.44 93.2693 1293.23 92.9718 1292.96 92.7476C1292.68 92.5233 1292.34 92.4112 1291.92 92.4112C1291.5 92.4112 1291.15 92.5233 1290.87 92.7476C1290.59 92.9718 1290.39 93.2693 1290.25 93.6401C1290.12 94.0078 1290.06 94.4115 1290.06 94.851C1290.06 95.2935 1290.12 95.6987 1290.25 96.0664C1290.39 96.4342 1290.59 96.7287 1290.87 96.95C1291.15 97.1712 1291.5 97.2819 1291.92 97.2819ZM1299.2 98.4031C1298.64 98.4031 1298.15 98.2611 1297.71 97.977C1297.28 97.69 1296.94 97.2819 1296.69 96.7526C1296.44 96.2204 1296.32 95.5821 1296.32 94.8376C1296.32 94.0931 1296.45 93.4562 1296.69 92.927C1296.95 92.3978 1297.29 91.9926 1297.73 91.7116C1298.16 91.4305 1298.66 91.29 1299.21 91.29C1299.64 91.29 1299.98 91.3617 1300.24 91.5052C1300.5 91.6458 1300.71 91.8102 1300.85 91.9986C1301 92.187 1301.11 92.3529 1301.19 92.4964H1301.27V89.0834H1302.61V98.2686H1301.3V97.1967H1301.19C1301.11 97.3432 1301 97.5106 1300.84 97.699C1300.69 97.8873 1300.49 98.0518 1300.22 98.1923C1299.96 98.3328 1299.62 98.4031 1299.2 98.4031ZM1299.5 97.2594C1299.88 97.2594 1300.21 97.1578 1300.47 96.9545C1300.74 96.7482 1300.95 96.4626 1301.08 96.0978C1301.23 95.7331 1301.3 95.3085 1301.3 94.8241C1301.3 94.3457 1301.23 93.9271 1301.09 93.5683C1300.95 93.2095 1300.75 92.93 1300.48 92.7296C1300.22 92.5293 1299.89 92.4291 1299.5 92.4291C1299.09 92.4291 1298.76 92.5338 1298.49 92.7431C1298.22 92.9524 1298.02 93.2379 1297.88 93.5997C1297.74 93.9615 1297.68 94.3696 1297.68 94.8241C1297.68 95.2846 1297.74 95.6987 1297.88 96.0664C1298.02 96.4342 1298.22 96.7257 1298.49 96.941C1298.76 97.1533 1299.1 97.2594 1299.5 97.2594ZM1307.5 98.4076C1306.82 98.4076 1306.23 98.2626 1305.74 97.9725C1305.26 97.6795 1304.88 97.2684 1304.61 96.7392C1304.35 96.207 1304.22 95.5836 1304.22 94.869C1304.22 94.1633 1304.35 93.5414 1304.61 93.0032C1304.88 92.465 1305.25 92.0449 1305.73 91.7429C1306.2 91.441 1306.76 91.29 1307.4 91.29C1307.79 91.29 1308.17 91.3543 1308.53 91.4828C1308.9 91.6114 1309.23 91.8132 1309.52 92.0883C1309.81 92.3634 1310.03 92.7207 1310.2 93.1602C1310.37 93.5967 1310.45 94.1274 1310.45 94.7524V95.2278H1304.98V94.2231H1309.14C1309.14 93.8703 1309.07 93.5579 1308.92 93.2858C1308.78 93.0107 1308.58 92.7939 1308.32 92.6355C1308.06 92.477 1307.76 92.3978 1307.41 92.3978C1307.04 92.3978 1306.71 92.4904 1306.43 92.6758C1306.15 92.8582 1305.93 93.0974 1305.78 93.3934C1305.63 93.6864 1305.56 94.0049 1305.56 94.3487V95.1336C1305.56 95.594 1305.64 95.9857 1305.8 96.3086C1305.96 96.6315 1306.19 96.8782 1306.48 97.0486C1306.78 97.2161 1307.12 97.2998 1307.51 97.2998C1307.76 97.2998 1308 97.2639 1308.21 97.1922C1308.41 97.1174 1308.6 97.0068 1308.75 96.8603C1308.9 96.7138 1309.02 96.5329 1309.1 96.3176L1310.37 96.5463C1310.27 96.9201 1310.08 97.2475 1309.82 97.5285C1309.56 97.8066 1309.23 98.0234 1308.84 98.1789C1308.45 98.3313 1308 98.4076 1307.5 98.4076Z" fill="#989EA4"/>
+<rect x="1317.99" y="86.2686" width="29.7698" height="17.0113" rx="8.50567" fill="#303336"/>
+<rect x="1319.41" y="87.6855" width="14.1761" height="14.1761" rx="7.08806" fill="#D9D9D9"/>
+<path d="M381.498 155.787L377.495 141.353H379.785L382.597 152.531H382.731L385.656 141.353H387.925L390.85 152.538H390.984L393.789 141.353H396.087L392.077 155.787H389.885L386.847 144.975H386.734L383.697 155.787H381.498ZM400.011 149.359V155.787H397.903V141.353H399.982V146.723H400.116C400.37 146.141 400.758 145.678 401.279 145.335C401.801 144.992 402.482 144.82 403.323 144.82C404.065 144.82 404.714 144.973 405.268 145.278C405.827 145.584 406.26 146.04 406.565 146.646C406.875 147.247 407.03 147.999 407.03 148.901V155.787H404.923V149.155C404.923 148.361 404.719 147.745 404.31 147.308C403.901 146.866 403.332 146.646 402.604 146.646C402.106 146.646 401.66 146.751 401.265 146.963C400.875 147.174 400.567 147.484 400.342 147.893C400.121 148.297 400.011 148.786 400.011 149.359ZM414.402 156.005C413.387 156.005 412.502 155.773 411.745 155.307C410.989 154.842 410.401 154.191 409.983 153.355C409.565 152.519 409.356 151.542 409.356 150.423C409.356 149.3 409.565 148.318 409.983 147.477C410.401 146.636 410.989 145.983 411.745 145.518C412.502 145.053 413.387 144.82 414.402 144.82C415.417 144.82 416.303 145.053 417.059 145.518C417.816 145.983 418.403 146.636 418.821 147.477C419.239 148.318 419.448 149.3 419.448 150.423C419.448 151.542 419.239 152.519 418.821 153.355C418.403 154.191 417.816 154.842 417.059 155.307C416.303 155.773 415.417 156.005 414.402 156.005ZM414.409 154.236C415.067 154.236 415.612 154.062 416.044 153.715C416.477 153.367 416.796 152.904 417.003 152.326C417.214 151.748 417.32 151.112 417.32 150.416C417.32 149.726 417.214 149.091 417.003 148.513C416.796 147.931 416.477 147.463 416.044 147.111C415.612 146.758 415.067 146.582 414.409 146.582C413.747 146.582 413.197 146.758 412.76 147.111C412.328 147.463 412.006 147.931 411.795 148.513C411.588 149.091 411.484 149.726 411.484 150.416C411.484 151.112 411.588 151.748 411.795 152.326C412.006 152.904 412.328 153.367 412.76 153.715C413.197 154.062 413.747 154.236 414.409 154.236ZM430.203 156.026C429.517 156.026 428.897 155.899 428.343 155.646C427.788 155.387 427.349 155.014 427.025 154.525C426.705 154.036 426.546 153.437 426.546 152.728C426.546 152.117 426.663 151.614 426.898 151.22C427.133 150.825 427.45 150.513 427.849 150.282C428.249 150.052 428.695 149.878 429.188 149.761C429.682 149.643 430.185 149.554 430.697 149.493C431.345 149.418 431.871 149.357 432.275 149.31C432.679 149.258 432.973 149.176 433.156 149.063C433.34 148.95 433.431 148.767 433.431 148.513V148.464C433.431 147.848 433.257 147.372 432.91 147.033C432.567 146.695 432.055 146.526 431.373 146.526C430.664 146.526 430.105 146.683 429.696 146.998C429.292 147.308 429.012 147.653 428.857 148.034L426.877 147.583C427.112 146.925 427.455 146.394 427.906 145.99C428.362 145.581 428.885 145.285 429.477 145.102C430.069 144.914 430.692 144.82 431.345 144.82C431.777 144.82 432.235 144.872 432.719 144.975C433.208 145.074 433.664 145.257 434.087 145.525C434.514 145.793 434.864 146.176 435.137 146.674C435.409 147.167 435.546 147.809 435.546 148.598V155.787H433.488V154.307H433.403C433.267 154.579 433.062 154.847 432.79 155.11C432.517 155.373 432.167 155.592 431.74 155.765C431.312 155.939 430.8 156.026 430.203 156.026ZM430.661 154.335C431.244 154.335 431.742 154.22 432.156 153.989C432.574 153.759 432.891 153.459 433.107 153.087C433.328 152.711 433.438 152.31 433.438 151.882V150.487C433.363 150.562 433.217 150.632 433.001 150.698C432.79 150.759 432.548 150.813 432.275 150.86C432.003 150.903 431.737 150.942 431.479 150.98C431.221 151.013 431.004 151.041 430.831 151.065C430.422 151.116 430.048 151.203 429.71 151.325C429.376 151.448 429.109 151.624 428.907 151.854C428.709 152.079 428.611 152.38 428.611 152.756C428.611 153.278 428.803 153.672 429.188 153.94C429.574 154.203 430.065 154.335 430.661 154.335ZM438.352 155.787V144.961H440.389V146.681H440.502C440.699 146.098 441.047 145.64 441.545 145.307C442.048 144.968 442.616 144.799 443.251 144.799C443.382 144.799 443.537 144.804 443.716 144.813C443.899 144.823 444.042 144.834 444.146 144.848V146.864C444.061 146.841 443.911 146.815 443.695 146.787C443.478 146.754 443.262 146.737 443.046 146.737C442.548 146.737 442.104 146.843 441.714 147.054C441.329 147.261 441.023 147.55 440.798 147.921C440.572 148.288 440.46 148.706 440.46 149.176V155.787H438.352ZM450.247 156.005C449.181 156.005 448.262 155.777 447.492 155.321C446.726 154.861 446.134 154.215 445.715 153.383C445.302 152.547 445.095 151.567 445.095 150.444C445.095 149.336 445.302 148.358 445.715 147.513C446.134 146.667 446.716 146.007 447.463 145.532C448.215 145.058 449.094 144.82 450.099 144.82C450.71 144.82 451.302 144.921 451.875 145.123C452.448 145.325 452.963 145.643 453.419 146.075C453.874 146.507 454.234 147.069 454.497 147.759C454.76 148.445 454.892 149.279 454.892 150.261V151.008H446.286V149.43H452.827C452.827 148.875 452.714 148.384 452.488 147.957C452.263 147.524 451.946 147.184 451.537 146.935C451.133 146.686 450.658 146.561 450.113 146.561C449.521 146.561 449.004 146.707 448.563 146.998C448.126 147.285 447.788 147.661 447.548 148.126C447.313 148.586 447.196 149.087 447.196 149.627V150.86C447.196 151.584 447.322 152.199 447.576 152.707C447.835 153.214 448.194 153.602 448.654 153.87C449.115 154.133 449.653 154.264 450.268 154.264C450.668 154.264 451.032 154.208 451.361 154.095C451.69 153.978 451.974 153.804 452.214 153.574C452.453 153.343 452.636 153.059 452.763 152.721L454.758 153.08C454.598 153.668 454.311 154.182 453.898 154.624C453.489 155.061 452.975 155.401 452.355 155.646C451.739 155.885 451.037 156.005 450.247 156.005ZM470.594 147.604L468.684 147.942C468.604 147.698 468.477 147.466 468.304 147.245C468.134 147.024 467.904 146.843 467.613 146.702C467.322 146.561 466.958 146.491 466.521 146.491C465.924 146.491 465.426 146.625 465.026 146.892C464.627 147.155 464.427 147.496 464.427 147.914C464.427 148.276 464.561 148.567 464.829 148.788C465.097 149.009 465.529 149.19 466.126 149.331L467.846 149.726C468.842 149.956 469.584 150.31 470.073 150.79C470.561 151.269 470.806 151.892 470.806 152.657C470.806 153.306 470.618 153.884 470.242 154.391C469.871 154.894 469.351 155.289 468.684 155.575C468.022 155.862 467.254 156.005 466.38 156.005C465.167 156.005 464.178 155.747 463.412 155.23C462.647 154.708 462.177 153.968 462.003 153.01L464.04 152.7C464.167 153.231 464.427 153.632 464.822 153.905C465.217 154.173 465.731 154.307 466.366 154.307C467.056 154.307 467.608 154.163 468.022 153.877C468.435 153.585 468.642 153.231 468.642 152.812C468.642 152.474 468.515 152.19 468.261 151.96C468.012 151.729 467.629 151.556 467.113 151.438L465.28 151.036C464.27 150.806 463.523 150.44 463.039 149.937C462.56 149.434 462.32 148.798 462.32 148.027C462.32 147.388 462.499 146.829 462.856 146.35C463.213 145.87 463.706 145.497 464.336 145.229C464.965 144.957 465.687 144.82 466.499 144.82C467.669 144.82 468.59 145.074 469.262 145.581C469.934 146.084 470.378 146.758 470.594 147.604ZM477.682 156.005C476.668 156.005 475.782 155.773 475.025 155.307C474.269 154.842 473.682 154.191 473.264 153.355C472.845 152.519 472.636 151.542 472.636 150.423C472.636 149.3 472.845 148.318 473.264 147.477C473.682 146.636 474.269 145.983 475.025 145.518C475.782 145.053 476.668 144.82 477.682 144.82C478.697 144.82 479.583 145.053 480.339 145.518C481.096 145.983 481.683 146.636 482.101 147.477C482.52 148.318 482.729 149.3 482.729 150.423C482.729 151.542 482.52 152.519 482.101 153.355C481.683 154.191 481.096 154.842 480.339 155.307C479.583 155.773 478.697 156.005 477.682 156.005ZM477.69 154.236C478.347 154.236 478.892 154.062 479.325 153.715C479.757 153.367 480.076 152.904 480.283 152.326C480.495 151.748 480.6 151.112 480.6 150.416C480.6 149.726 480.495 149.091 480.283 148.513C480.076 147.931 479.757 147.463 479.325 147.111C478.892 146.758 478.347 146.582 477.69 146.582C477.027 146.582 476.477 146.758 476.04 147.111C475.608 147.463 475.286 147.931 475.075 148.513C474.868 149.091 474.765 149.726 474.765 150.416C474.765 151.112 474.868 151.748 475.075 152.326C475.286 152.904 475.608 153.367 476.04 153.715C476.477 154.062 477.027 154.236 477.69 154.236ZM485.081 155.787V144.961H487.104V146.723H487.238C487.463 146.126 487.832 145.661 488.344 145.328C488.856 144.989 489.469 144.82 490.183 144.82C490.907 144.82 491.513 144.989 492.002 145.328C492.495 145.666 492.859 146.131 493.094 146.723H493.207C493.465 146.145 493.877 145.685 494.44 145.342C495.004 144.994 495.676 144.82 496.456 144.82C497.438 144.82 498.239 145.128 498.859 145.744C499.484 146.359 499.797 147.287 499.797 148.527V155.787H497.689V148.725C497.689 147.992 497.49 147.461 497.09 147.132C496.691 146.803 496.214 146.639 495.66 146.639C494.974 146.639 494.44 146.85 494.06 147.273C493.679 147.691 493.489 148.229 493.489 148.887V155.787H491.389V148.591C491.389 148.004 491.205 147.531 490.839 147.174C490.472 146.817 489.996 146.639 489.408 146.639C489.009 146.639 488.64 146.744 488.302 146.956C487.968 147.162 487.698 147.451 487.491 147.823C487.289 148.194 487.188 148.624 487.188 149.112V155.787H485.081ZM507.287 156.005C506.22 156.005 505.302 155.777 504.531 155.321C503.765 154.861 503.173 154.215 502.755 153.383C502.342 152.547 502.135 151.567 502.135 150.444C502.135 149.336 502.342 148.358 502.755 147.513C503.173 146.667 503.756 146.007 504.503 145.532C505.255 145.058 506.133 144.82 507.139 144.82C507.75 144.82 508.342 144.921 508.915 145.123C509.488 145.325 510.002 145.643 510.458 146.075C510.914 146.507 511.273 147.069 511.537 147.759C511.8 148.445 511.931 149.279 511.931 150.261V151.008H503.326V149.43H509.866C509.866 148.875 509.753 148.384 509.528 147.957C509.302 147.524 508.985 147.184 508.576 146.935C508.172 146.686 507.698 146.561 507.153 146.561C506.561 146.561 506.044 146.707 505.602 146.998C505.165 147.285 504.827 147.661 504.587 148.126C504.352 148.586 504.235 149.087 504.235 149.627V150.86C504.235 151.584 504.362 152.199 504.616 152.707C504.874 153.214 505.233 153.602 505.694 153.87C506.154 154.133 506.692 154.264 507.308 154.264C507.707 154.264 508.071 154.208 508.4 154.095C508.729 153.978 509.013 153.804 509.253 153.574C509.493 153.343 509.676 153.059 509.803 152.721L511.797 153.08C511.638 153.668 511.351 154.182 510.937 154.624C510.529 155.061 510.014 155.401 509.394 155.646C508.778 155.885 508.076 156.005 507.287 156.005ZM523.574 155.998C522.7 155.998 521.92 155.775 521.234 155.329C520.553 154.877 520.017 154.236 519.627 153.404C519.242 152.568 519.049 151.565 519.049 150.395C519.049 149.225 519.244 148.224 519.634 147.393C520.029 146.561 520.569 145.924 521.255 145.483C521.941 145.041 522.719 144.82 523.588 144.82C524.26 144.82 524.8 144.933 525.209 145.159C525.623 145.379 525.942 145.638 526.168 145.934C526.398 146.23 526.576 146.491 526.703 146.716H526.83V141.353H528.937V155.787H526.88V154.102H526.703C526.576 154.332 526.393 154.596 526.154 154.892C525.919 155.188 525.594 155.446 525.181 155.667C524.768 155.888 524.232 155.998 523.574 155.998ZM524.039 154.201C524.645 154.201 525.158 154.041 525.576 153.722C525.999 153.397 526.318 152.949 526.534 152.375C526.755 151.802 526.865 151.135 526.865 150.374C526.865 149.622 526.757 148.964 526.541 148.401C526.325 147.837 526.008 147.397 525.59 147.083C525.172 146.768 524.655 146.61 524.039 146.61C523.405 146.61 522.876 146.775 522.454 147.104C522.031 147.433 521.711 147.881 521.495 148.45C521.284 149.018 521.178 149.66 521.178 150.374C521.178 151.097 521.286 151.748 521.502 152.326C521.718 152.904 522.038 153.362 522.461 153.7C522.888 154.034 523.414 154.201 524.039 154.201ZM536.611 156.005C535.544 156.005 534.626 155.777 533.855 155.321C533.089 154.861 532.497 154.215 532.079 153.383C531.666 152.547 531.459 151.567 531.459 150.444C531.459 149.336 531.666 148.358 532.079 147.513C532.497 146.667 533.08 146.007 533.827 145.532C534.579 145.058 535.457 144.82 536.463 144.82C537.074 144.82 537.666 144.921 538.239 145.123C538.812 145.325 539.327 145.643 539.782 146.075C540.238 146.507 540.597 147.069 540.861 147.759C541.124 148.445 541.255 149.279 541.255 150.261V151.008H532.65V149.43H539.19C539.19 148.875 539.077 148.384 538.852 147.957C538.626 147.524 538.309 147.184 537.901 146.935C537.496 146.686 537.022 146.561 536.477 146.561C535.885 146.561 535.368 146.707 534.926 146.998C534.489 147.285 534.151 147.661 533.911 148.126C533.677 148.586 533.559 149.087 533.559 149.627V150.86C533.559 151.584 533.686 152.199 533.94 152.707C534.198 153.214 534.558 153.602 535.018 153.87C535.478 154.133 536.016 154.264 536.632 154.264C537.031 154.264 537.395 154.208 537.724 154.095C538.053 153.978 538.337 153.804 538.577 153.574C538.817 153.343 539 153.059 539.127 152.721L541.121 153.08C540.962 153.668 540.675 154.182 540.262 154.624C539.853 155.061 539.338 155.401 538.718 155.646C538.103 155.885 537.4 156.005 536.611 156.005ZM552.544 144.961L548.618 155.787H546.363L542.43 144.961H544.693L547.434 153.292H547.547L550.282 144.961H552.544ZM558.822 156.005C557.755 156.005 556.837 155.777 556.066 155.321C555.3 154.861 554.708 154.215 554.29 153.383C553.877 152.547 553.67 151.567 553.67 150.444C553.67 149.336 553.877 148.358 554.29 147.513C554.708 146.667 555.291 146.007 556.038 145.532C556.79 145.058 557.668 144.82 558.674 144.82C559.285 144.82 559.877 144.921 560.45 145.123C561.023 145.325 561.538 145.643 561.993 146.075C562.449 146.507 562.809 147.069 563.072 147.759C563.335 148.445 563.466 149.279 563.466 150.261V151.008H554.861V149.43H561.401C561.401 148.875 561.289 148.384 561.063 147.957C560.838 147.524 560.52 147.184 560.112 146.935C559.708 146.686 559.233 146.561 558.688 146.561C558.096 146.561 557.579 146.707 557.137 146.998C556.7 147.285 556.362 147.661 556.123 148.126C555.888 148.586 555.77 149.087 555.77 149.627V150.86C555.77 151.584 555.897 152.199 556.151 152.707C556.409 153.214 556.769 153.602 557.229 153.87C557.69 154.133 558.227 154.264 558.843 154.264C559.242 154.264 559.607 154.208 559.935 154.095C560.264 153.978 560.549 153.804 560.788 153.574C561.028 153.343 561.211 153.059 561.338 152.721L563.332 153.08C563.173 153.668 562.886 154.182 562.473 154.624C562.064 155.061 561.549 155.401 560.929 155.646C560.314 155.885 559.611 156.005 558.822 156.005ZM567.912 141.353V155.787H565.804V141.353H567.912ZM575.307 156.005C574.292 156.005 573.406 155.773 572.65 155.307C571.893 154.842 571.306 154.191 570.888 153.355C570.469 152.519 570.26 151.542 570.26 150.423C570.26 149.3 570.469 148.318 570.888 147.477C571.306 146.636 571.893 145.983 572.65 145.518C573.406 145.053 574.292 144.82 575.307 144.82C576.321 144.82 577.207 145.053 577.964 145.518C578.72 145.983 579.307 146.636 579.726 147.477C580.144 148.318 580.353 149.3 580.353 150.423C580.353 151.542 580.144 152.519 579.726 153.355C579.307 154.191 578.72 154.842 577.964 155.307C577.207 155.773 576.321 156.005 575.307 156.005ZM575.314 154.236C575.971 154.236 576.516 154.062 576.949 153.715C577.381 153.367 577.701 152.904 577.907 152.326C578.119 151.748 578.224 151.112 578.224 150.416C578.224 149.726 578.119 149.091 577.907 148.513C577.701 147.931 577.381 147.463 576.949 147.111C576.516 146.758 575.971 146.582 575.314 146.582C574.651 146.582 574.101 146.758 573.664 147.111C573.232 147.463 572.91 147.931 572.699 148.513C572.492 149.091 572.389 149.726 572.389 150.416C572.389 151.112 572.492 151.748 572.699 152.326C572.91 152.904 573.232 153.367 573.664 153.715C574.101 154.062 574.651 154.236 575.314 154.236ZM582.705 159.846V144.961H584.763V146.716H584.939C585.061 146.491 585.238 146.23 585.468 145.934C585.698 145.638 586.017 145.379 586.426 145.159C586.835 144.933 587.375 144.82 588.047 144.82C588.921 144.82 589.701 145.041 590.387 145.483C591.073 145.924 591.611 146.561 592.001 147.393C592.396 148.224 592.593 149.225 592.593 150.395C592.593 151.565 592.398 152.568 592.008 153.404C591.618 154.236 591.082 154.877 590.401 155.329C589.72 155.775 588.942 155.998 588.068 155.998C587.411 155.998 586.873 155.888 586.454 155.667C586.041 155.446 585.717 155.188 585.482 154.892C585.247 154.596 585.066 154.332 584.939 154.102H584.812V159.846H582.705ZM584.77 150.374C584.77 151.135 584.88 151.802 585.101 152.375C585.322 152.949 585.642 153.397 586.06 153.722C586.478 154.041 586.99 154.201 587.596 154.201C588.226 154.201 588.752 154.034 589.175 153.7C589.598 153.362 589.917 152.904 590.133 152.326C590.354 151.748 590.465 151.097 590.465 150.374C590.465 149.66 590.357 149.018 590.14 148.45C589.929 147.881 589.61 147.433 589.182 147.104C588.759 146.775 588.23 146.61 587.596 146.61C586.985 146.61 586.469 146.768 586.046 147.083C585.628 147.397 585.31 147.837 585.094 148.401C584.878 148.964 584.77 149.622 584.77 150.374ZM599.62 156.005C598.553 156.005 597.635 155.777 596.864 155.321C596.098 154.861 595.506 154.215 595.088 153.383C594.675 152.547 594.468 151.567 594.468 150.444C594.468 149.336 594.675 148.358 595.088 147.513C595.506 146.667 596.089 146.007 596.836 145.532C597.588 145.058 598.466 144.82 599.472 144.82C600.083 144.82 600.675 144.921 601.248 145.123C601.821 145.325 602.335 145.643 602.791 146.075C603.247 146.507 603.606 147.069 603.87 147.759C604.133 148.445 604.264 149.279 604.264 150.261V151.008H595.659V149.43H602.199C602.199 148.875 602.086 148.384 601.861 147.957C601.635 147.524 601.318 147.184 600.909 146.935C600.505 146.686 600.031 146.561 599.486 146.561C598.894 146.561 598.377 146.707 597.935 146.998C597.498 147.285 597.16 147.661 596.92 148.126C596.685 148.586 596.568 149.087 596.568 149.627V150.86C596.568 151.584 596.695 152.199 596.949 152.707C597.207 153.214 597.566 153.602 598.027 153.87C598.487 154.133 599.025 154.264 599.641 154.264C600.04 154.264 600.404 154.208 600.733 154.095C601.062 153.978 601.346 153.804 601.586 153.574C601.826 153.343 602.009 153.059 602.136 152.721L604.13 153.08C603.971 153.668 603.684 154.182 603.27 154.624C602.862 155.061 602.347 155.401 601.727 155.646C601.111 155.885 600.409 156.005 599.62 156.005ZM606.602 155.787V144.961H608.639V146.681H608.752C608.949 146.098 609.297 145.64 609.795 145.307C610.298 144.968 610.866 144.799 611.501 144.799C611.632 144.799 611.787 144.804 611.966 144.813C612.149 144.823 612.292 144.834 612.396 144.848V146.864C612.311 146.841 612.161 146.815 611.945 146.787C611.728 146.754 611.512 146.737 611.296 146.737C610.798 146.737 610.354 146.843 609.964 147.054C609.579 147.261 609.273 147.55 609.048 147.921C608.822 148.288 608.71 148.706 608.71 149.176V155.787H606.602ZM622.331 147.604L620.421 147.942C620.341 147.698 620.215 147.466 620.041 147.245C619.872 147.024 619.641 146.843 619.35 146.702C619.059 146.561 618.695 146.491 618.258 146.491C617.661 146.491 617.163 146.625 616.763 146.892C616.364 147.155 616.164 147.496 616.164 147.914C616.164 148.276 616.298 148.567 616.566 148.788C616.834 149.009 617.266 149.19 617.863 149.331L619.583 149.726C620.579 149.956 621.321 150.31 621.81 150.79C622.298 151.269 622.543 151.892 622.543 152.657C622.543 153.306 622.355 153.884 621.979 154.391C621.608 154.894 621.088 155.289 620.421 155.575C619.759 155.862 618.991 156.005 618.117 156.005C616.904 156.005 615.915 155.747 615.15 155.23C614.384 154.708 613.914 153.968 613.74 153.01L615.777 152.7C615.904 153.231 616.164 153.632 616.559 153.905C616.954 154.173 617.468 154.307 618.103 154.307C618.793 154.307 619.345 154.163 619.759 153.877C620.172 153.585 620.379 153.231 620.379 152.812C620.379 152.474 620.252 152.19 619.998 151.96C619.749 151.729 619.366 151.556 618.85 151.438L617.017 151.036C616.007 150.806 615.26 150.44 614.776 149.937C614.297 149.434 614.057 148.798 614.057 148.027C614.057 147.388 614.236 146.829 614.593 146.35C614.95 145.87 615.443 145.497 616.073 145.229C616.702 144.957 617.424 144.82 618.236 144.82C619.406 144.82 620.327 145.074 620.999 145.581C621.671 146.084 622.115 146.758 622.331 147.604ZM633.262 156.026C632.576 156.026 631.956 155.899 631.402 155.646C630.847 155.387 630.408 155.014 630.084 154.525C629.764 154.036 629.605 153.437 629.605 152.728C629.605 152.117 629.722 151.614 629.957 151.22C630.192 150.825 630.509 150.513 630.908 150.282C631.308 150.052 631.754 149.878 632.247 149.761C632.741 149.643 633.244 149.554 633.756 149.493C634.404 149.418 634.93 149.357 635.334 149.31C635.738 149.258 636.032 149.176 636.215 149.063C636.399 148.95 636.49 148.767 636.49 148.513V148.464C636.49 147.848 636.316 147.372 635.969 147.033C635.626 146.695 635.114 146.526 634.432 146.526C633.723 146.526 633.164 146.683 632.755 146.998C632.351 147.308 632.071 147.653 631.916 148.034L629.936 147.583C630.171 146.925 630.514 146.394 630.965 145.99C631.42 145.581 631.944 145.285 632.536 145.102C633.128 144.914 633.751 144.82 634.404 144.82C634.836 144.82 635.294 144.872 635.778 144.975C636.267 145.074 636.723 145.257 637.146 145.525C637.573 145.793 637.923 146.176 638.196 146.674C638.468 147.167 638.605 147.809 638.605 148.598V155.787H636.547V154.307H636.462C636.326 154.579 636.121 154.847 635.849 155.11C635.576 155.373 635.226 155.592 634.799 155.765C634.371 155.939 633.859 156.026 633.262 156.026ZM633.72 154.335C634.303 154.335 634.801 154.22 635.215 153.989C635.633 153.759 635.95 153.459 636.166 153.087C636.387 152.711 636.497 152.31 636.497 151.882V150.487C636.422 150.562 636.276 150.632 636.06 150.698C635.849 150.759 635.607 150.813 635.334 150.86C635.062 150.903 634.796 150.942 634.538 150.98C634.28 151.013 634.063 151.041 633.89 151.065C633.481 151.116 633.107 151.203 632.769 151.325C632.435 151.448 632.168 151.624 631.966 151.854C631.768 152.079 631.67 152.38 631.67 152.756C631.67 153.278 631.862 153.672 632.247 153.94C632.633 154.203 633.124 154.335 633.72 154.335ZM643.519 149.359V155.787H641.411V144.961H643.434V146.723H643.568C643.817 146.15 644.207 145.689 644.738 145.342C645.273 144.994 645.948 144.82 646.761 144.82C647.498 144.82 648.144 144.975 648.699 145.285C649.253 145.591 649.683 146.047 649.988 146.653C650.294 147.259 650.447 148.008 650.447 148.901V155.787H648.339V149.155C648.339 148.37 648.135 147.757 647.726 147.315C647.317 146.869 646.756 146.646 646.042 146.646C645.553 146.646 645.118 146.751 644.738 146.963C644.362 147.174 644.064 147.484 643.843 147.893C643.627 148.297 643.519 148.786 643.519 149.359ZM657.325 155.998C656.451 155.998 655.671 155.775 654.985 155.329C654.304 154.877 653.768 154.236 653.378 153.404C652.993 152.568 652.801 151.565 652.801 150.395C652.801 149.225 652.996 148.224 653.386 147.393C653.78 146.561 654.321 145.924 655.006 145.483C655.692 145.041 656.47 144.82 657.339 144.82C658.011 144.82 658.552 144.933 658.96 145.159C659.374 145.379 659.693 145.638 659.919 145.934C660.149 146.23 660.328 146.491 660.454 146.716H660.581V141.353H662.689V155.787H660.631V154.102H660.454C660.328 154.332 660.144 154.596 659.905 154.892C659.67 155.188 659.346 155.446 658.932 155.667C658.519 155.888 657.983 155.998 657.325 155.998ZM657.79 154.201C658.396 154.201 658.909 154.041 659.327 153.722C659.75 153.397 660.069 152.949 660.285 152.375C660.506 151.802 660.617 151.135 660.617 150.374C660.617 149.622 660.508 148.964 660.292 148.401C660.076 147.837 659.759 147.397 659.341 147.083C658.923 146.768 658.406 146.61 657.79 146.61C657.156 146.61 656.627 146.775 656.205 147.104C655.782 147.433 655.462 147.881 655.246 148.45C655.035 149.018 654.929 149.66 654.929 150.374C654.929 151.097 655.037 151.748 655.253 152.326C655.469 152.904 655.789 153.362 656.212 153.7C656.639 154.034 657.165 154.201 657.79 154.201ZM675.001 155.998C674.127 155.998 673.347 155.775 672.661 155.329C671.98 154.877 671.444 154.236 671.054 153.404C670.669 152.568 670.476 151.565 670.476 150.395C670.476 149.225 670.671 148.224 671.061 147.393C671.456 146.561 671.996 145.924 672.682 145.483C673.368 145.041 674.146 144.82 675.015 144.82C675.687 144.82 676.227 144.933 676.636 145.159C677.05 145.379 677.369 145.638 677.595 145.934C677.825 146.23 678.003 146.491 678.13 146.716H678.257V141.353H680.364V155.787H678.306V154.102H678.13C678.003 154.332 677.82 154.596 677.581 154.892C677.346 155.188 677.021 155.446 676.608 155.667C676.194 155.888 675.659 155.998 675.001 155.998ZM675.466 154.201C676.072 154.201 676.584 154.041 677.003 153.722C677.425 153.397 677.745 152.949 677.961 152.375C678.182 151.802 678.292 151.135 678.292 150.374C678.292 149.622 678.184 148.964 677.968 148.401C677.752 147.837 677.435 147.397 677.017 147.083C676.599 146.768 676.082 146.61 675.466 146.61C674.832 146.61 674.303 146.775 673.88 147.104C673.458 147.433 673.138 147.881 672.922 148.45C672.711 149.018 672.605 149.66 672.605 150.374C672.605 151.097 672.713 151.748 672.929 152.326C673.145 152.904 673.465 153.362 673.887 153.7C674.315 154.034 674.841 154.201 675.466 154.201ZM688.038 156.005C686.971 156.005 686.053 155.777 685.282 155.321C684.516 154.861 683.924 154.215 683.506 153.383C683.092 152.547 682.886 151.567 682.886 150.444C682.886 149.336 683.092 148.358 683.506 147.513C683.924 146.667 684.507 146.007 685.254 145.532C686.006 145.058 686.884 144.82 687.89 144.82C688.5 144.82 689.093 144.921 689.666 145.123C690.239 145.325 690.753 145.643 691.209 146.075C691.665 146.507 692.024 147.069 692.287 147.759C692.551 148.445 692.682 149.279 692.682 150.261V151.008H684.077V149.43H690.617C690.617 148.875 690.504 148.384 690.279 147.957C690.053 147.524 689.736 147.184 689.327 146.935C688.923 146.686 688.449 146.561 687.904 146.561C687.312 146.561 686.795 146.707 686.353 146.998C685.916 147.285 685.578 147.661 685.338 148.126C685.103 148.586 684.986 149.087 684.986 149.627V150.86C684.986 151.584 685.113 152.199 685.367 152.707C685.625 153.214 685.984 153.602 686.445 153.87C686.905 154.133 687.443 154.264 688.059 154.264C688.458 154.264 688.822 154.208 689.151 154.095C689.48 153.978 689.764 153.804 690.004 153.574C690.244 153.343 690.427 153.059 690.554 152.721L692.548 153.08C692.389 153.668 692.102 154.182 691.688 154.624C691.28 155.061 690.765 155.401 690.145 155.646C689.529 155.885 688.827 156.005 688.038 156.005ZM703.132 147.604L701.222 147.942C701.142 147.698 701.016 147.466 700.842 147.245C700.673 147.024 700.442 146.843 700.151 146.702C699.86 146.561 699.496 146.491 699.059 146.491C698.462 146.491 697.964 146.625 697.565 146.892C697.165 147.155 696.965 147.496 696.965 147.914C696.965 148.276 697.099 148.567 697.367 148.788C697.635 149.009 698.067 149.19 698.664 149.331L700.384 149.726C701.38 149.956 702.122 150.31 702.611 150.79C703.099 151.269 703.344 151.892 703.344 152.657C703.344 153.306 703.156 153.884 702.78 154.391C702.409 154.894 701.89 155.289 701.222 155.575C700.56 155.862 699.792 156.005 698.918 156.005C697.705 156.005 696.716 155.747 695.951 155.23C695.185 154.708 694.715 153.968 694.541 153.01L696.578 152.7C696.705 153.231 696.965 153.632 697.36 153.905C697.755 154.173 698.269 154.307 698.904 154.307C699.594 154.307 700.146 154.163 700.56 153.877C700.973 153.585 701.18 153.231 701.18 152.812C701.18 152.474 701.053 152.19 700.799 151.96C700.55 151.729 700.168 151.556 699.651 151.438L697.818 151.036C696.808 150.806 696.061 150.44 695.577 149.937C695.098 149.434 694.858 148.798 694.858 148.027C694.858 147.388 695.037 146.829 695.394 146.35C695.751 145.87 696.244 145.497 696.874 145.229C697.503 144.957 698.225 144.82 699.038 144.82C700.207 144.82 701.128 145.074 701.8 145.581C702.472 146.084 702.916 146.758 703.132 147.604ZM705.661 155.787V144.961H707.768V155.787H705.661ZM706.725 143.291C706.358 143.291 706.044 143.169 705.78 142.924C705.522 142.675 705.393 142.379 705.393 142.036C705.393 141.689 705.522 141.393 705.78 141.148C706.044 140.899 706.358 140.775 706.725 140.775C707.091 140.775 707.404 140.899 707.662 141.148C707.925 141.393 708.057 141.689 708.057 142.036C708.057 142.379 707.925 142.675 707.662 142.924C707.404 143.169 707.091 143.291 706.725 143.291ZM715.142 160.072C714.282 160.072 713.542 159.959 712.922 159.733C712.306 159.508 711.803 159.209 711.413 158.838C711.023 158.467 710.732 158.061 710.539 157.619L712.351 156.872C712.478 157.079 712.647 157.297 712.858 157.527C713.074 157.762 713.366 157.962 713.732 158.126C714.103 158.291 714.58 158.373 715.163 158.373C715.962 158.373 716.622 158.178 717.143 157.788C717.665 157.403 717.926 156.787 717.926 155.942V153.813H717.792C717.665 154.043 717.482 154.3 717.242 154.581C717.007 154.863 716.683 155.108 716.269 155.314C715.856 155.521 715.318 155.625 714.655 155.625C713.8 155.625 713.03 155.425 712.344 155.025C711.662 154.621 711.122 154.027 710.723 153.242C710.328 152.453 710.131 151.483 710.131 150.332C710.131 149.18 710.326 148.194 710.716 147.372C711.11 146.549 711.651 145.92 712.337 145.483C713.023 145.041 713.8 144.82 714.669 144.82C715.341 144.82 715.884 144.933 716.298 145.159C716.711 145.379 717.033 145.638 717.263 145.934C717.498 146.23 717.679 146.491 717.806 146.716H717.961V144.961H720.026V156.026C720.026 156.957 719.81 157.72 719.377 158.317C718.945 158.913 718.36 159.355 717.623 159.642C716.89 159.928 716.063 160.072 715.142 160.072ZM715.121 153.877C715.727 153.877 716.239 153.736 716.657 153.454C717.08 153.167 717.399 152.758 717.615 152.227C717.836 151.692 717.947 151.051 717.947 150.303C717.947 149.575 717.839 148.934 717.623 148.379C717.406 147.825 717.089 147.393 716.671 147.083C716.253 146.768 715.736 146.61 715.121 146.61C714.486 146.61 713.958 146.775 713.535 147.104C713.112 147.428 712.792 147.87 712.576 148.429C712.365 148.988 712.259 149.613 712.259 150.303C712.259 151.013 712.367 151.635 712.583 152.171C712.799 152.707 713.119 153.125 713.542 153.426C713.969 153.726 714.496 153.877 715.121 153.877ZM724.959 149.359V155.787H722.852V144.961H724.875V146.723H725.009C725.258 146.15 725.648 145.689 726.179 145.342C726.714 144.994 727.388 144.82 728.201 144.82C728.939 144.82 729.585 144.975 730.139 145.285C730.694 145.591 731.124 146.047 731.429 146.653C731.735 147.259 731.887 148.008 731.887 148.901V155.787H729.78V149.155C729.78 148.37 729.576 147.757 729.167 147.315C728.758 146.869 728.197 146.646 727.482 146.646C726.994 146.646 726.559 146.751 726.179 146.963C725.803 147.174 725.504 147.484 725.283 147.893C725.067 148.297 724.959 148.786 724.959 149.359ZM739.379 156.005C738.312 156.005 737.394 155.777 736.623 155.321C735.857 154.861 735.265 154.215 734.847 153.383C734.434 152.547 734.227 151.567 734.227 150.444C734.227 149.336 734.434 148.358 734.847 147.513C735.265 146.667 735.848 146.007 736.595 145.532C737.347 145.058 738.226 144.82 739.231 144.82C739.842 144.82 740.434 144.921 741.007 145.123C741.58 145.325 742.095 145.643 742.551 146.075C743.006 146.507 743.366 147.069 743.629 147.759C743.892 148.445 744.024 149.279 744.024 150.261V151.008H735.418V149.43H741.959C741.959 148.875 741.846 148.384 741.62 147.957C741.395 147.524 741.078 147.184 740.669 146.935C740.265 146.686 739.79 146.561 739.245 146.561C738.653 146.561 738.136 146.707 737.695 146.998C737.258 147.285 736.919 147.661 736.68 148.126C736.445 148.586 736.327 149.087 736.327 149.627V150.86C736.327 151.584 736.454 152.199 736.708 152.707C736.966 153.214 737.326 153.602 737.786 153.87C738.247 154.133 738.785 154.264 739.4 154.264C739.8 154.264 740.164 154.208 740.493 154.095C740.821 153.978 741.106 153.804 741.345 153.574C741.585 153.343 741.768 153.059 741.895 152.721L743.89 153.08C743.73 153.668 743.443 154.182 743.03 154.624C742.621 155.061 742.107 155.401 741.486 155.646C740.871 155.885 740.168 156.005 739.379 156.005ZM746.362 155.787V144.961H748.398V146.681H748.511C748.709 146.098 749.056 145.64 749.554 145.307C750.057 144.968 750.626 144.799 751.26 144.799C751.391 144.799 751.546 144.804 751.725 144.813C751.908 144.823 752.052 144.834 752.155 144.848V146.864C752.07 146.841 751.92 146.815 751.704 146.787C751.488 146.754 751.272 146.737 751.055 146.737C750.557 146.737 750.113 146.843 749.723 147.054C749.338 147.261 749.033 147.55 748.807 147.921C748.582 148.288 748.469 148.706 748.469 149.176V155.787H746.362ZM762.091 147.604L760.181 147.942C760.101 147.698 759.974 147.466 759.8 147.245C759.631 147.024 759.401 146.843 759.109 146.702C758.818 146.561 758.454 146.491 758.017 146.491C757.42 146.491 756.922 146.625 756.523 146.892C756.123 147.155 755.924 147.496 755.924 147.914C755.924 148.276 756.058 148.567 756.325 148.788C756.593 149.009 757.026 149.19 757.622 149.331L759.342 149.726C760.338 149.956 761.08 150.31 761.569 150.79C762.058 151.269 762.302 151.892 762.302 152.657C762.302 153.306 762.114 153.884 761.738 154.391C761.367 154.894 760.848 155.289 760.181 155.575C759.518 155.862 758.75 156.005 757.876 156.005C756.664 156.005 755.675 155.747 754.909 155.23C754.143 154.708 753.673 153.968 753.499 153.01L755.536 152.7C755.663 153.231 755.924 153.632 756.318 153.905C756.713 154.173 757.228 154.307 757.862 154.307C758.553 154.307 759.105 154.163 759.518 153.877C759.932 153.585 760.138 153.231 760.138 152.812C760.138 152.474 760.011 152.19 759.758 151.96C759.509 151.729 759.126 151.556 758.609 151.438L756.776 151.036C755.766 150.806 755.019 150.44 754.535 149.937C754.056 149.434 753.816 148.798 753.816 148.027C753.816 147.388 753.995 146.829 754.352 146.35C754.709 145.87 755.202 145.497 755.832 145.229C756.462 144.957 757.183 144.82 757.996 144.82C759.166 144.82 760.087 145.074 760.758 145.581C761.43 146.084 761.874 146.758 762.091 147.604ZM772.218 141.353V155.787H770.04V141.353H772.218ZM785.033 156.005C783.985 156.005 783.083 155.768 782.326 155.293C781.575 154.814 780.997 154.154 780.593 153.313C780.189 152.472 779.987 151.509 779.987 150.423C779.987 149.324 780.193 148.354 780.607 147.513C781.02 146.667 781.603 146.007 782.355 145.532C783.106 145.058 783.992 144.82 785.012 144.82C785.834 144.82 786.567 144.973 787.211 145.278C787.854 145.579 788.373 146.002 788.768 146.547C789.167 147.092 789.405 147.729 789.48 148.457H787.429C787.316 147.949 787.058 147.513 786.654 147.146C786.254 146.78 785.719 146.596 785.047 146.596C784.46 146.596 783.945 146.751 783.503 147.061C783.066 147.367 782.726 147.804 782.481 148.372C782.237 148.936 782.115 149.603 782.115 150.374C782.115 151.163 782.235 151.845 782.474 152.418C782.714 152.991 783.052 153.435 783.489 153.75C783.931 154.065 784.45 154.222 785.047 154.222C785.446 154.222 785.808 154.149 786.132 154.004C786.461 153.853 786.736 153.639 786.957 153.362C787.182 153.085 787.34 152.751 787.429 152.361H789.48C789.405 153.061 789.177 153.686 788.796 154.236C788.416 154.786 787.906 155.218 787.267 155.533C786.633 155.848 785.888 156.005 785.033 156.005ZM794.884 156.026C794.198 156.026 793.578 155.899 793.023 155.646C792.469 155.387 792.03 155.014 791.705 154.525C791.386 154.036 791.226 153.437 791.226 152.728C791.226 152.117 791.344 151.614 791.578 151.22C791.813 150.825 792.131 150.513 792.53 150.282C792.929 150.052 793.376 149.878 793.869 149.761C794.362 149.643 794.865 149.554 795.377 149.493C796.026 149.418 796.552 149.357 796.956 149.31C797.36 149.258 797.654 149.176 797.837 149.063C798.02 148.95 798.112 148.767 798.112 148.513V148.464C798.112 147.848 797.938 147.372 797.59 147.033C797.247 146.695 796.735 146.526 796.054 146.526C795.344 146.526 794.785 146.683 794.376 146.998C793.972 147.308 793.693 147.653 793.538 148.034L791.557 147.583C791.792 146.925 792.135 146.394 792.586 145.99C793.042 145.581 793.566 145.285 794.158 145.102C794.75 144.914 795.373 144.82 796.026 144.82C796.458 144.82 796.916 144.872 797.4 144.975C797.889 145.074 798.344 145.257 798.767 145.525C799.195 145.793 799.545 146.176 799.817 146.674C800.09 147.167 800.226 147.809 800.226 148.598V155.787H798.168V154.307H798.084C797.947 154.579 797.743 154.847 797.47 155.11C797.198 155.373 796.848 155.592 796.42 155.765C795.993 155.939 795.481 156.026 794.884 156.026ZM795.342 154.335C795.925 154.335 796.423 154.22 796.836 153.989C797.254 153.759 797.571 153.459 797.788 153.087C798.008 152.711 798.119 152.31 798.119 151.882V150.487C798.044 150.562 797.898 150.632 797.682 150.698C797.47 150.759 797.228 150.813 796.956 150.86C796.683 150.903 796.418 150.942 796.16 150.98C795.901 151.013 795.685 151.041 795.511 151.065C795.102 151.116 794.729 151.203 794.391 151.325C794.057 151.448 793.789 151.624 793.587 151.854C793.39 152.079 793.291 152.38 793.291 152.756C793.291 153.278 793.484 153.672 793.869 153.94C794.254 154.203 794.745 154.335 795.342 154.335ZM805.14 149.359V155.787H803.033V144.961H805.056V146.723H805.189C805.438 146.15 805.828 145.689 806.359 145.342C806.895 144.994 807.569 144.82 808.382 144.82C809.12 144.82 809.766 144.975 810.32 145.285C810.875 145.591 811.305 146.047 811.61 146.653C811.915 147.259 812.068 148.008 812.068 148.901V155.787H809.961V149.155C809.961 148.37 809.756 147.757 809.348 147.315C808.939 146.869 808.377 146.646 807.663 146.646C807.175 146.646 806.74 146.751 806.359 146.963C805.984 147.174 805.685 147.484 805.464 147.893C805.248 148.297 805.14 148.786 805.14 149.359ZM822.494 155.787L819.308 144.961H821.486L823.607 152.911H823.713L825.841 144.961H828.019L830.133 152.876H830.239L832.346 144.961H834.524L831.346 155.787H829.196L826.997 147.971H826.835L824.636 155.787H822.494ZM840.754 156.005C839.739 156.005 838.854 155.773 838.097 155.307C837.341 154.842 836.754 154.191 836.335 153.355C835.917 152.519 835.708 151.542 835.708 150.423C835.708 149.3 835.917 148.318 836.335 147.477C836.754 146.636 837.341 145.983 838.097 145.518C838.854 145.053 839.739 144.82 840.754 144.82C841.769 144.82 842.655 145.053 843.411 145.518C844.168 145.983 844.755 146.636 845.173 147.477C845.591 148.318 845.801 149.3 845.801 150.423C845.801 151.542 845.591 152.519 845.173 153.355C844.755 154.191 844.168 154.842 843.411 155.307C842.655 155.773 841.769 156.005 840.754 156.005ZM840.761 154.236C841.419 154.236 841.964 154.062 842.396 153.715C842.829 153.367 843.148 152.904 843.355 152.326C843.566 151.748 843.672 151.112 843.672 150.416C843.672 149.726 843.566 149.091 843.355 148.513C843.148 147.931 842.829 147.463 842.396 147.111C841.964 146.758 841.419 146.582 840.761 146.582C840.099 146.582 839.549 146.758 839.112 147.111C838.68 147.463 838.358 147.931 838.147 148.513C837.94 149.091 837.837 149.726 837.837 150.416C837.837 151.112 837.94 151.748 838.147 152.326C838.358 152.904 838.68 153.367 839.112 153.715C839.549 154.062 840.099 154.236 840.761 154.236ZM848.153 155.787V144.961H850.19V146.681H850.302C850.5 146.098 850.847 145.64 851.345 145.307C851.848 144.968 852.417 144.799 853.051 144.799C853.183 144.799 853.338 144.804 853.516 144.813C853.699 144.823 853.843 144.834 853.946 144.848V146.864C853.861 146.841 853.711 146.815 853.495 146.787C853.279 146.754 853.063 146.737 852.847 146.737C852.349 146.737 851.905 146.843 851.515 147.054C851.129 147.261 850.824 147.55 850.598 147.921C850.373 148.288 850.26 148.706 850.26 149.176V155.787H848.153ZM857.708 152.115L857.694 149.542H858.06L862.373 144.961H864.897L859.977 150.177H859.646L857.708 152.115ZM855.77 155.787V141.353H857.877V155.787H855.77ZM862.606 155.787L858.73 150.642L860.182 149.169L865.193 155.787H862.606ZM874.416 155.787L871.231 144.961H873.408L875.53 152.911H875.636L877.764 144.961H879.942L882.056 152.876H882.162L884.269 144.961H886.447L883.268 155.787H881.119L878.92 147.971H878.758L876.559 155.787H874.416ZM888.447 155.787V144.961H890.554V155.787H888.447ZM889.511 143.291C889.144 143.291 888.83 143.169 888.567 142.924C888.308 142.675 888.179 142.379 888.179 142.036C888.179 141.689 888.308 141.393 888.567 141.148C888.83 140.899 889.144 140.775 889.511 140.775C889.877 140.775 890.19 140.899 890.448 141.148C890.711 141.393 890.843 141.689 890.843 142.036C890.843 142.379 890.711 142.675 890.448 142.924C890.19 143.169 889.877 143.291 889.511 143.291ZM898.442 144.961V146.653H892.529V144.961H898.442ZM894.115 142.368H896.222V152.608C896.222 153.017 896.283 153.325 896.405 153.531C896.528 153.733 896.685 153.872 896.878 153.947C897.075 154.018 897.289 154.053 897.519 154.053C897.688 154.053 897.836 154.041 897.963 154.018C898.09 153.994 898.188 153.975 898.259 153.961L898.64 155.702C898.517 155.749 898.344 155.796 898.118 155.843C897.892 155.895 897.611 155.923 897.272 155.928C896.718 155.937 896.201 155.838 895.722 155.632C895.243 155.425 894.855 155.105 894.559 154.673C894.263 154.241 894.115 153.698 894.115 153.045V142.368ZM903.113 149.359V155.787H901.006V141.353H903.085V146.723H903.219C903.473 146.141 903.86 145.678 904.382 145.335C904.903 144.992 905.585 144.82 906.426 144.82C907.168 144.82 907.816 144.973 908.371 145.278C908.93 145.584 909.362 146.04 909.668 146.646C909.978 147.247 910.133 147.999 910.133 148.901V155.787H908.025V149.155C908.025 148.361 907.821 147.745 907.412 147.308C907.004 146.866 906.435 146.646 905.707 146.646C905.209 146.646 904.762 146.751 904.368 146.963C903.978 147.174 903.67 147.484 903.444 147.893C903.224 148.297 903.113 148.786 903.113 149.359ZM915.249 151.635V151.502C915.259 150.628 915.346 149.932 915.51 149.415C915.679 148.899 915.919 148.48 916.229 148.161C916.539 147.841 916.913 147.55 917.35 147.287C917.632 147.108 917.885 146.909 918.111 146.688C918.336 146.467 918.515 146.213 918.646 145.927C918.778 145.64 918.844 145.323 918.844 144.975C918.844 144.557 918.745 144.195 918.548 143.89C918.35 143.585 918.087 143.35 917.758 143.185C917.434 143.016 917.072 142.931 916.673 142.931C916.311 142.931 915.966 143.007 915.637 143.157C915.308 143.307 915.036 143.542 914.82 143.862C914.603 144.177 914.479 144.583 914.446 145.081H912.303C912.336 144.235 912.55 143.521 912.945 142.939C913.339 142.351 913.861 141.907 914.509 141.606C915.163 141.306 915.884 141.155 916.673 141.155C917.538 141.155 918.294 141.318 918.942 141.642C919.591 141.961 920.094 142.41 920.451 142.988C920.812 143.561 920.993 144.231 920.993 144.996C920.993 145.523 920.911 145.997 920.747 146.42C920.582 146.838 920.347 147.212 920.042 147.541C919.741 147.87 919.379 148.161 918.957 148.415C918.557 148.664 918.233 148.922 917.984 149.19C917.74 149.458 917.561 149.775 917.448 150.141C917.336 150.508 917.274 150.961 917.265 151.502V151.635H915.249ZM916.314 155.921C915.928 155.921 915.597 155.784 915.32 155.512C915.043 155.235 914.904 154.901 914.904 154.511C914.904 154.126 915.043 153.797 915.32 153.524C915.597 153.247 915.928 153.108 916.314 153.108C916.694 153.108 917.023 153.247 917.3 153.524C917.582 153.797 917.723 154.126 917.723 154.511C917.723 154.769 917.657 155.007 917.526 155.223C917.399 155.434 917.23 155.603 917.018 155.73C916.807 155.857 916.572 155.921 916.314 155.921ZM930.971 141.353V155.787H928.794V141.353H930.971ZM935.785 141.353V142.706C935.785 143.105 935.71 143.526 935.559 143.967C935.414 144.404 935.207 144.825 934.939 145.229C934.671 145.633 934.357 145.981 933.995 146.272L932.952 145.525C933.229 145.121 933.469 144.691 933.671 144.235C933.877 143.78 933.981 143.277 933.981 142.727V141.353H935.785ZM937.501 155.787V144.961H939.524V146.723H939.658C939.883 146.126 940.252 145.661 940.764 145.328C941.276 144.989 941.889 144.82 942.604 144.82C943.327 144.82 943.933 144.989 944.422 145.328C944.915 145.666 945.279 146.131 945.514 146.723H945.627C945.886 146.145 946.297 145.685 946.86 145.342C947.424 144.994 948.096 144.82 948.876 144.82C949.858 144.82 950.659 145.128 951.279 145.744C951.904 146.359 952.217 147.287 952.217 148.527V155.787H950.11V148.725C950.11 147.992 949.91 147.461 949.51 147.132C949.111 146.803 948.634 146.639 948.08 146.639C947.394 146.639 946.86 146.85 946.48 147.273C946.099 147.691 945.909 148.229 945.909 148.887V155.787H943.809V148.591C943.809 148.004 943.626 147.531 943.259 147.174C942.893 146.817 942.416 146.639 941.828 146.639C941.429 146.639 941.06 146.744 940.722 146.956C940.388 147.162 940.118 147.451 939.911 147.823C939.709 148.194 939.608 148.624 939.608 149.112V155.787H937.501ZM378.672 179.787V165.353H380.779V170.716H380.906C381.028 170.491 381.204 170.23 381.434 169.934C381.665 169.638 381.984 169.379 382.393 169.159C382.802 168.933 383.342 168.82 384.014 168.82C384.888 168.82 385.668 169.041 386.354 169.483C387.04 169.924 387.578 170.561 387.968 171.393C388.362 172.224 388.56 173.225 388.56 174.395C388.56 175.565 388.365 176.568 387.975 177.404C387.585 178.236 387.049 178.877 386.368 179.329C385.687 179.775 384.909 179.998 384.035 179.998C383.377 179.998 382.839 179.888 382.421 179.667C382.008 179.446 381.683 179.188 381.449 178.892C381.214 178.596 381.033 178.332 380.906 178.102H380.73V179.787H378.672ZM380.737 174.374C380.737 175.135 380.847 175.802 381.068 176.375C381.289 176.949 381.608 177.397 382.026 177.722C382.445 178.041 382.957 178.201 383.563 178.201C384.192 178.201 384.719 178.034 385.142 177.7C385.564 177.362 385.884 176.904 386.1 176.326C386.321 175.748 386.431 175.097 386.431 174.374C386.431 173.66 386.323 173.018 386.107 172.45C385.896 171.881 385.576 171.433 385.149 171.104C384.726 170.775 384.197 170.61 383.563 170.61C382.952 170.61 382.435 170.768 382.012 171.083C381.594 171.397 381.277 171.837 381.061 172.401C380.845 172.964 380.737 173.622 380.737 174.374ZM397.784 175.297V168.961H399.898V179.787H397.826V177.912H397.713C397.464 178.49 397.065 178.971 396.515 179.357C395.97 179.737 395.291 179.928 394.478 179.928C393.783 179.928 393.167 179.775 392.632 179.469C392.101 179.159 391.682 178.701 391.377 178.095C391.076 177.489 390.926 176.74 390.926 175.847V168.961H393.033V175.593C393.033 176.331 393.238 176.918 393.646 177.355C394.055 177.792 394.586 178.011 395.239 178.011C395.634 178.011 396.026 177.912 396.416 177.715C396.811 177.517 397.137 177.219 397.396 176.82C397.659 176.42 397.788 175.913 397.784 175.297ZM402.729 179.787V168.961H404.837V179.787H402.729ZM403.794 167.291C403.427 167.291 403.112 167.169 402.849 166.924C402.591 166.675 402.461 166.379 402.461 166.036C402.461 165.689 402.591 165.393 402.849 165.148C403.112 164.899 403.427 164.775 403.794 164.775C404.16 164.775 404.472 164.899 404.731 165.148C404.994 165.393 405.126 165.689 405.126 166.036C405.126 166.379 404.994 166.675 404.731 166.924C404.472 167.169 404.16 167.291 403.794 167.291ZM409.779 165.353V179.787H407.672V165.353H409.779ZM416.666 179.998C415.792 179.998 415.012 179.775 414.326 179.329C413.645 178.877 413.11 178.236 412.72 177.404C412.334 176.568 412.142 175.565 412.142 174.395C412.142 173.225 412.337 172.224 412.727 171.393C413.121 170.561 413.662 169.924 414.348 169.483C415.034 169.041 415.811 168.82 416.68 168.82C417.352 168.82 417.893 168.933 418.301 169.159C418.715 169.379 419.034 169.638 419.26 169.934C419.49 170.23 419.669 170.491 419.796 170.716H419.922V165.353H422.03V179.787H419.972V178.102H419.796C419.669 178.332 419.485 178.596 419.246 178.892C419.011 179.188 418.687 179.446 418.273 179.667C417.86 179.888 417.324 179.998 416.666 179.998ZM417.131 178.201C417.738 178.201 418.25 178.041 418.668 177.722C419.091 177.397 419.41 176.949 419.626 176.375C419.847 175.802 419.958 175.135 419.958 174.374C419.958 173.622 419.85 172.964 419.633 172.401C419.417 171.837 419.1 171.397 418.682 171.083C418.264 170.768 417.747 170.61 417.131 170.61C416.497 170.61 415.969 170.775 415.546 171.104C415.123 171.433 414.803 171.881 414.587 172.45C414.376 173.018 414.27 173.66 414.27 174.374C414.27 175.097 414.378 175.748 414.594 176.326C414.81 176.904 415.13 177.362 415.553 177.7C415.98 178.034 416.507 178.201 417.131 178.201ZM425.037 179.787V168.961H427.145V179.787H425.037ZM426.102 167.291C425.735 167.291 425.42 167.169 425.157 166.924C424.899 166.675 424.769 166.379 424.769 166.036C424.769 165.689 424.899 165.393 425.157 165.148C425.42 164.899 425.735 164.775 426.102 164.775C426.468 164.775 426.78 164.899 427.039 165.148C427.302 165.393 427.434 165.689 427.434 166.036C427.434 166.379 427.302 166.675 427.039 166.924C426.78 167.169 426.468 167.291 426.102 167.291ZM432.087 173.359V179.787H429.98V168.961H432.002V170.723H432.136C432.385 170.15 432.775 169.689 433.306 169.342C433.842 168.994 434.516 168.82 435.329 168.82C436.066 168.82 436.713 168.975 437.267 169.285C437.821 169.591 438.251 170.047 438.557 170.653C438.862 171.259 439.015 172.008 439.015 172.901V179.787H436.908V173.155C436.908 172.37 436.703 171.757 436.294 171.315C435.886 170.869 435.324 170.646 434.61 170.646C434.121 170.646 433.687 170.751 433.306 170.963C432.93 171.174 432.632 171.484 432.411 171.893C432.195 172.297 432.087 172.786 432.087 173.359ZM446.38 184.072C445.52 184.072 444.78 183.959 444.16 183.733C443.544 183.508 443.041 183.209 442.651 182.838C442.261 182.467 441.97 182.061 441.778 181.619L443.589 180.872C443.716 181.079 443.885 181.297 444.096 181.527C444.312 181.762 444.604 181.962 444.97 182.126C445.341 182.291 445.818 182.373 446.401 182.373C447.2 182.373 447.86 182.178 448.381 181.788C448.903 181.403 449.164 180.787 449.164 179.942V177.813H449.03C448.903 178.043 448.72 178.3 448.48 178.581C448.245 178.863 447.921 179.108 447.507 179.314C447.094 179.521 446.556 179.625 445.893 179.625C445.038 179.625 444.268 179.425 443.582 179.025C442.9 178.621 442.36 178.027 441.961 177.242C441.566 176.453 441.369 175.483 441.369 174.332C441.369 173.18 441.564 172.194 441.954 171.372C442.348 170.549 442.889 169.92 443.575 169.483C444.261 169.041 445.038 168.82 445.908 168.82C446.579 168.82 447.122 168.933 447.536 169.159C447.949 169.379 448.271 169.638 448.501 169.934C448.736 170.23 448.917 170.491 449.044 170.716H449.199V168.961H451.264V180.026C451.264 180.957 451.048 181.72 450.615 182.317C450.183 182.913 449.598 183.355 448.861 183.642C448.128 183.928 447.301 184.072 446.38 184.072ZM446.359 177.877C446.965 177.877 447.477 177.736 447.895 177.454C448.318 177.167 448.637 176.758 448.854 176.227C449.074 175.692 449.185 175.051 449.185 174.303C449.185 173.575 449.077 172.934 448.861 172.379C448.644 171.825 448.327 171.393 447.909 171.083C447.491 170.768 446.974 170.61 446.359 170.61C445.724 170.61 445.196 170.775 444.773 171.104C444.35 171.428 444.03 171.87 443.814 172.429C443.603 172.988 443.497 173.613 443.497 174.303C443.497 175.013 443.605 175.635 443.821 176.171C444.038 176.707 444.357 177.125 444.78 177.426C445.207 177.726 445.734 177.877 446.359 177.877ZM462.493 180.026C461.807 180.026 461.187 179.899 460.632 179.646C460.078 179.387 459.638 179.014 459.314 178.525C458.995 178.036 458.835 177.437 458.835 176.728C458.835 176.117 458.952 175.614 459.187 175.22C459.422 174.825 459.739 174.513 460.139 174.282C460.538 174.052 460.985 173.878 461.478 173.761C461.971 173.643 462.474 173.554 462.986 173.493C463.634 173.418 464.161 173.357 464.565 173.31C464.969 173.258 465.263 173.176 465.446 173.063C465.629 172.95 465.721 172.767 465.721 172.513V172.464C465.721 171.848 465.547 171.372 465.199 171.033C464.856 170.695 464.344 170.526 463.663 170.526C462.953 170.526 462.394 170.683 461.985 170.998C461.581 171.308 461.302 171.653 461.147 172.034L459.166 171.583C459.401 170.925 459.744 170.394 460.195 169.99C460.651 169.581 461.175 169.285 461.767 169.102C462.359 168.914 462.981 168.82 463.634 168.82C464.067 168.82 464.525 168.872 465.009 168.975C465.497 169.074 465.953 169.257 466.376 169.525C466.804 169.793 467.154 170.176 467.426 170.674C467.699 171.167 467.835 171.809 467.835 172.598V179.787H465.777V178.307H465.692C465.556 178.579 465.352 178.847 465.079 179.11C464.807 179.373 464.457 179.592 464.029 179.765C463.602 179.939 463.089 180.026 462.493 180.026ZM462.951 178.335C463.533 178.335 464.032 178.22 464.445 177.989C464.863 177.759 465.18 177.459 465.396 177.087C465.617 176.711 465.728 176.31 465.728 175.882V174.487C465.653 174.562 465.507 174.632 465.291 174.698C465.079 174.759 464.837 174.813 464.565 174.86C464.292 174.903 464.027 174.942 463.768 174.98C463.51 175.013 463.294 175.041 463.12 175.065C462.711 175.116 462.338 175.203 461.999 175.325C461.666 175.448 461.398 175.624 461.196 175.854C460.999 176.079 460.9 176.38 460.9 176.756C460.9 177.278 461.093 177.672 461.478 177.94C461.863 178.203 462.354 178.335 462.951 178.335ZM472.749 173.359V179.787H470.642V168.961H472.664V170.723H472.798C473.047 170.15 473.437 169.689 473.968 169.342C474.504 168.994 475.178 168.82 475.991 168.82C476.729 168.82 477.375 168.975 477.929 169.285C478.484 169.591 478.913 170.047 479.219 170.653C479.524 171.259 479.677 172.008 479.677 172.901V179.787H477.57V173.155C477.57 172.37 477.365 171.757 476.957 171.315C476.548 170.869 475.986 170.646 475.272 170.646C474.783 170.646 474.349 170.751 473.968 170.963C473.592 171.174 473.294 171.484 473.073 171.893C472.857 172.297 472.749 172.786 472.749 173.359ZM489.144 179.787H486.832L492.026 165.353H494.543L499.737 179.787H497.425L493.344 167.975H493.232L489.144 179.787ZM489.532 174.134H497.03V175.967H489.532V174.134ZM503.999 165.353V179.787H501.821V165.353H503.999ZM515.404 180.026C514.718 180.026 514.098 179.899 513.543 179.646C512.989 179.387 512.55 179.014 512.225 178.525C511.906 178.036 511.746 177.437 511.746 176.728C511.746 176.117 511.864 175.614 512.099 175.22C512.334 174.825 512.651 174.513 513.05 174.282C513.449 174.052 513.896 173.878 514.389 173.761C514.882 173.643 515.385 173.554 515.897 173.493C516.546 173.418 517.072 173.357 517.476 173.31C517.88 173.258 518.174 173.176 518.357 173.063C518.54 172.95 518.632 172.767 518.632 172.513V172.464C518.632 171.848 518.458 171.372 518.11 171.033C517.767 170.695 517.255 170.526 516.574 170.526C515.864 170.526 515.305 170.683 514.897 170.998C514.492 171.308 514.213 171.653 514.058 172.034L512.077 171.583C512.312 170.925 512.655 170.394 513.106 169.99C513.562 169.581 514.086 169.285 514.678 169.102C515.27 168.914 515.893 168.82 516.546 168.82C516.978 168.82 517.436 168.872 517.92 168.975C518.409 169.074 518.864 169.257 519.287 169.525C519.715 169.793 520.065 170.176 520.337 170.674C520.61 171.167 520.746 171.809 520.746 172.598V179.787H518.688V178.307H518.604C518.467 178.579 518.263 178.847 517.991 179.11C517.718 179.373 517.368 179.592 516.94 179.765C516.513 179.939 516.001 180.026 515.404 180.026ZM515.862 178.335C516.445 178.335 516.943 178.22 517.356 177.989C517.774 177.759 518.092 177.459 518.308 177.087C518.529 176.711 518.639 176.31 518.639 175.882V174.487C518.564 174.562 518.418 174.632 518.202 174.698C517.991 174.759 517.749 174.813 517.476 174.86C517.204 174.903 516.938 174.942 516.68 174.98C516.421 175.013 516.205 175.041 516.031 175.065C515.622 175.116 515.249 175.203 514.911 175.325C514.577 175.448 514.309 175.624 514.107 175.854C513.91 176.079 513.811 176.38 513.811 176.756C513.811 177.278 514.004 177.672 514.389 177.94C514.774 178.203 515.265 178.335 515.862 178.335ZM523.553 183.846V168.961H525.611V170.716H525.787C525.909 170.491 526.085 170.23 526.316 169.934C526.546 169.638 526.865 169.379 527.274 169.159C527.683 168.933 528.223 168.82 528.895 168.82C529.769 168.82 530.549 169.041 531.235 169.483C531.921 169.924 532.459 170.561 532.849 171.393C533.244 172.224 533.441 173.225 533.441 174.395C533.441 175.565 533.246 176.568 532.856 177.404C532.466 178.236 531.93 178.877 531.249 179.329C530.568 179.775 529.79 179.998 528.916 179.998C528.259 179.998 527.721 179.888 527.302 179.667C526.889 179.446 526.565 179.188 526.33 178.892C526.095 178.596 525.914 178.332 525.787 178.102H525.66V183.846H523.553ZM525.618 174.374C525.618 175.135 525.728 175.802 525.949 176.375C526.17 176.949 526.49 177.397 526.908 177.722C527.326 178.041 527.838 178.201 528.444 178.201C529.074 178.201 529.6 178.034 530.023 177.7C530.446 177.362 530.765 176.904 530.981 176.326C531.202 175.748 531.313 175.097 531.313 174.374C531.313 173.66 531.205 173.018 530.988 172.45C530.777 171.881 530.457 171.433 530.03 171.104C529.607 170.775 529.078 170.61 528.444 170.61C527.833 170.61 527.317 170.768 526.894 171.083C526.475 171.397 526.158 171.837 525.942 172.401C525.726 172.964 525.618 173.622 525.618 174.374ZM535.802 183.846V168.961H537.86V170.716H538.036C538.158 170.491 538.335 170.23 538.565 169.934C538.795 169.638 539.114 169.379 539.523 169.159C539.932 168.933 540.472 168.82 541.144 168.82C542.018 168.82 542.798 169.041 543.484 169.483C544.17 169.924 544.708 170.561 545.098 171.393C545.493 172.224 545.69 173.225 545.69 174.395C545.69 175.565 545.495 176.568 545.105 177.404C544.715 178.236 544.179 178.877 543.498 179.329C542.817 179.775 542.039 179.998 541.165 179.998C540.508 179.998 539.97 179.888 539.551 179.667C539.138 179.446 538.814 179.188 538.579 178.892C538.344 178.596 538.163 178.332 538.036 178.102H537.909V183.846H535.802ZM537.867 174.374C537.867 175.135 537.977 175.802 538.198 176.375C538.419 176.949 538.739 177.397 539.157 177.722C539.575 178.041 540.087 178.201 540.693 178.201C541.323 178.201 541.849 178.034 542.272 177.7C542.695 177.362 543.014 176.904 543.23 176.326C543.451 175.748 543.562 175.097 543.562 174.374C543.562 173.66 543.454 173.018 543.237 172.45C543.026 171.881 542.707 171.433 542.279 171.104C541.856 170.775 541.327 170.61 540.693 170.61C540.082 170.61 539.566 170.768 539.143 171.083C538.725 171.397 538.407 171.837 538.191 172.401C537.975 172.964 537.867 173.622 537.867 174.374ZM549.439 179.921C549.054 179.921 548.723 179.784 548.446 179.512C548.169 179.235 548.03 178.901 548.03 178.511C548.03 178.126 548.169 177.797 548.446 177.524C548.723 177.247 549.054 177.108 549.439 177.108C549.825 177.108 550.156 177.247 550.433 177.524C550.71 177.797 550.849 178.126 550.849 178.511C550.849 178.769 550.783 179.007 550.652 179.223C550.525 179.434 550.356 179.603 550.144 179.73C549.933 179.857 549.698 179.921 549.439 179.921Z" fill="white"/>
+<path d="M378.271 434V423.503H379.542V428.177H385.14V423.503H386.411V434H385.14V429.305H379.542V434H378.271ZM392.526 434.164C391.767 434.164 391.113 433.997 390.562 433.662C390.016 433.323 389.594 432.852 389.296 432.247C389.002 431.639 388.856 430.931 388.856 430.125C388.856 429.319 389.002 428.608 389.296 427.993C389.594 427.374 390.007 426.892 390.537 426.547C391.07 426.199 391.692 426.024 392.403 426.024C392.813 426.024 393.217 426.093 393.617 426.229C394.017 426.366 394.381 426.588 394.709 426.896C395.037 427.2 395.299 427.603 395.493 428.105C395.688 428.608 395.785 429.226 395.785 429.961V430.474H389.717V429.428H394.555C394.555 428.984 394.466 428.587 394.289 428.239C394.114 427.89 393.865 427.615 393.54 427.414C393.219 427.212 392.84 427.111 392.403 427.111C391.921 427.111 391.504 427.231 391.152 427.47C390.803 427.706 390.535 428.013 390.347 428.393C390.159 428.772 390.065 429.178 390.065 429.612V430.31C390.065 430.904 390.168 431.408 390.373 431.822C390.581 432.232 390.87 432.544 391.239 432.76C391.608 432.971 392.037 433.077 392.526 433.077C392.843 433.077 393.13 433.033 393.387 432.944C393.646 432.852 393.87 432.715 394.058 432.534C394.246 432.35 394.391 432.121 394.494 431.847L395.662 432.175C395.539 432.572 395.333 432.92 395.042 433.221C394.752 433.518 394.393 433.751 393.966 433.918C393.539 434.082 393.059 434.164 392.526 434.164ZM398.059 434V426.127H399.227V427.316H399.309C399.453 426.927 399.712 426.611 400.088 426.368C400.464 426.125 400.888 426.004 401.36 426.004C401.448 426.004 401.559 426.006 401.693 426.009C401.826 426.013 401.927 426.018 401.995 426.024V427.255C401.954 427.244 401.86 427.229 401.713 427.208C401.57 427.185 401.418 427.173 401.257 427.173C400.874 427.173 400.533 427.253 400.232 427.414C399.935 427.571 399.699 427.789 399.525 428.07C399.354 428.346 399.268 428.662 399.268 429.018V434H398.059ZM406.923 434.164C406.165 434.164 405.51 433.997 404.96 433.662C404.413 433.323 403.991 432.852 403.694 432.247C403.4 431.639 403.253 430.931 403.253 430.125C403.253 429.319 403.4 428.608 403.694 427.993C403.991 427.374 404.405 426.892 404.935 426.547C405.468 426.199 406.09 426.024 406.8 426.024C407.21 426.024 407.615 426.093 408.015 426.229C408.415 426.366 408.779 426.588 409.107 426.896C409.435 427.2 409.696 427.603 409.891 428.105C410.086 428.608 410.183 429.226 410.183 429.961V430.474H404.114V429.428H408.953C408.953 428.984 408.864 428.587 408.687 428.239C408.512 427.89 408.263 427.615 407.938 427.414C407.617 427.212 407.238 427.111 406.8 427.111C406.318 427.111 405.902 427.231 405.55 427.47C405.201 427.706 404.933 428.013 404.745 428.393C404.557 428.772 404.463 429.178 404.463 429.612V430.31C404.463 430.904 404.565 431.408 404.771 431.822C404.979 432.232 405.268 432.544 405.637 432.76C406.006 432.971 406.435 433.077 406.923 433.077C407.241 433.077 407.528 433.033 407.784 432.944C408.044 432.852 408.268 432.715 408.456 432.534C408.644 432.35 408.789 432.121 408.892 431.847L410.06 432.175C409.937 432.572 409.73 432.92 409.44 433.221C409.15 433.518 408.791 433.751 408.364 433.918C407.936 434.082 407.456 434.164 406.923 434.164ZM419.266 434.185C418.767 434.185 418.314 434.091 417.907 433.903C417.501 433.711 417.178 433.436 416.939 433.077C416.699 432.715 416.58 432.278 416.58 431.765C416.58 431.314 416.669 430.949 416.846 430.668C417.024 430.385 417.262 430.163 417.559 430.002C417.856 429.841 418.184 429.722 418.543 429.643C418.905 429.561 419.269 429.496 419.635 429.448C420.113 429.387 420.501 429.341 420.798 429.31C421.099 429.276 421.318 429.219 421.454 429.141C421.594 429.062 421.664 428.926 421.664 428.731V428.69C421.664 428.184 421.526 427.791 421.249 427.511C420.976 427.231 420.561 427.091 420.004 427.091C419.426 427.091 418.974 427.217 418.645 427.47C418.317 427.723 418.087 427.993 417.954 428.28L416.805 427.87C417.01 427.391 417.284 427.019 417.625 426.752C417.971 426.482 418.346 426.294 418.753 426.188C419.163 426.079 419.566 426.024 419.963 426.024C420.216 426.024 420.506 426.055 420.834 426.117C421.166 426.175 421.485 426.296 421.793 426.481C422.104 426.665 422.362 426.944 422.567 427.316C422.772 427.689 422.874 428.188 422.874 428.813V434H421.664V432.934H421.603C421.521 433.105 421.384 433.288 421.193 433.482C421.002 433.677 420.747 433.843 420.429 433.979C420.111 434.116 419.724 434.185 419.266 434.185ZM419.45 433.098C419.929 433.098 420.332 433.004 420.66 432.816C420.991 432.628 421.241 432.385 421.408 432.088C421.579 431.791 421.664 431.478 421.664 431.15V430.043C421.613 430.104 421.5 430.161 421.326 430.212C421.155 430.26 420.957 430.303 420.732 430.34C420.51 430.374 420.293 430.405 420.081 430.433C419.872 430.456 419.703 430.477 419.573 430.494C419.259 430.535 418.965 430.602 418.692 430.694C418.422 430.783 418.203 430.918 418.036 431.099C417.872 431.277 417.789 431.519 417.789 431.827C417.789 432.247 417.945 432.565 418.256 432.78C418.57 432.992 418.968 433.098 419.45 433.098ZM425.515 434V426.127H426.684V427.316H426.766C426.909 426.927 427.169 426.611 427.545 426.368C427.921 426.125 428.344 426.004 428.816 426.004C428.905 426.004 429.016 426.006 429.149 426.009C429.282 426.013 429.383 426.018 429.452 426.024V427.255C429.411 427.244 429.317 427.229 429.17 427.208C429.026 427.185 428.874 427.173 428.713 427.173C428.331 427.173 427.989 427.253 427.688 427.414C427.391 427.571 427.155 427.789 426.981 428.07C426.81 428.346 426.725 428.662 426.725 429.018V434H425.515ZM434.38 434.164C433.621 434.164 432.967 433.997 432.417 433.662C431.87 433.323 431.448 432.852 431.151 432.247C430.857 431.639 430.71 430.931 430.71 430.125C430.71 429.319 430.857 428.608 431.151 427.993C431.448 427.374 431.861 426.892 432.391 426.547C432.924 426.199 433.546 426.024 434.257 426.024C434.667 426.024 435.072 426.093 435.472 426.229C435.871 426.366 436.235 426.588 436.563 426.896C436.891 427.2 437.153 427.603 437.348 428.105C437.542 428.608 437.64 429.226 437.64 429.961V430.474H431.571V429.428H436.41C436.41 428.984 436.321 428.587 436.143 428.239C435.969 427.89 435.719 427.615 435.395 427.414C435.073 427.212 434.694 427.111 434.257 427.111C433.775 427.111 433.358 427.231 433.006 427.47C432.658 427.706 432.389 428.013 432.201 428.393C432.013 428.772 431.919 429.178 431.919 429.612V430.31C431.919 430.904 432.022 431.408 432.227 431.822C432.435 432.232 432.724 432.544 433.093 432.76C433.462 432.971 433.891 433.077 434.38 433.077C434.698 433.077 434.985 433.033 435.241 432.944C435.501 432.852 435.724 432.715 435.912 432.534C436.1 432.35 436.246 432.121 436.348 431.847L437.517 432.175C437.394 432.572 437.187 432.92 436.896 433.221C436.606 433.518 436.247 433.751 435.82 433.918C435.393 434.082 434.913 434.164 434.38 434.164ZM449.982 427.89L448.895 428.198C448.827 428.017 448.726 427.841 448.593 427.67C448.463 427.496 448.285 427.352 448.06 427.239C447.834 427.126 447.546 427.07 447.194 427.07C446.712 427.07 446.31 427.181 445.989 427.403C445.671 427.622 445.513 427.9 445.513 428.239C445.513 428.539 445.622 428.777 445.841 428.951C446.059 429.125 446.401 429.271 446.866 429.387L448.034 429.674C448.738 429.845 449.263 430.106 449.608 430.458C449.953 430.807 450.126 431.256 450.126 431.806C450.126 432.257 449.996 432.66 449.736 433.016C449.48 433.371 449.121 433.651 448.66 433.856C448.198 434.062 447.662 434.164 447.05 434.164C446.247 434.164 445.583 433.99 445.056 433.641C444.53 433.293 444.197 432.784 444.057 432.114L445.205 431.827C445.314 432.25 445.521 432.568 445.825 432.78C446.133 432.992 446.534 433.098 447.03 433.098C447.594 433.098 448.041 432.978 448.373 432.739C448.708 432.496 448.875 432.206 448.875 431.868C448.875 431.594 448.779 431.365 448.588 431.181C448.397 430.993 448.103 430.853 447.706 430.761L446.394 430.453C445.673 430.282 445.143 430.017 444.805 429.659C444.47 429.296 444.303 428.844 444.303 428.3C444.303 427.856 444.428 427.463 444.677 427.121C444.93 426.78 445.273 426.511 445.707 426.317C446.145 426.122 446.64 426.024 447.194 426.024C447.973 426.024 448.584 426.195 449.029 426.537C449.476 426.879 449.794 427.33 449.982 427.89ZM455.578 434.164C454.867 434.164 454.244 433.995 453.707 433.657C453.174 433.318 452.757 432.845 452.456 432.237C452.159 431.629 452.01 430.918 452.01 430.104C452.01 429.284 452.159 428.569 452.456 427.957C452.757 427.345 453.174 426.87 453.707 426.532C454.244 426.194 454.867 426.024 455.578 426.024C456.289 426.024 456.911 426.194 457.444 426.532C457.98 426.87 458.397 427.345 458.694 427.957C458.995 428.569 459.145 429.284 459.145 430.104C459.145 430.918 458.995 431.629 458.694 432.237C458.397 432.845 457.98 433.318 457.444 433.657C456.911 433.995 456.289 434.164 455.578 434.164ZM455.578 433.077C456.118 433.077 456.562 432.939 456.911 432.662C457.259 432.385 457.517 432.021 457.685 431.57C457.852 431.119 457.936 430.631 457.936 430.104C457.936 429.578 457.852 429.088 457.685 428.633C457.517 428.179 457.259 427.812 456.911 427.531C456.562 427.251 456.118 427.111 455.578 427.111C455.038 427.111 454.594 427.251 454.245 427.531C453.897 427.812 453.639 428.179 453.471 428.633C453.304 429.088 453.22 429.578 453.22 430.104C453.22 430.631 453.304 431.119 453.471 431.57C453.639 432.021 453.897 432.385 454.245 432.662C454.594 432.939 455.038 433.077 455.578 433.077ZM461.425 434V426.127H462.594V427.357H462.696C462.86 426.937 463.125 426.611 463.491 426.378C463.856 426.142 464.295 426.024 464.808 426.024C465.327 426.024 465.76 426.142 466.105 426.378C466.453 426.611 466.725 426.937 466.92 427.357H467.002C467.203 426.951 467.506 426.628 467.909 426.388C468.312 426.146 468.796 426.024 469.359 426.024C470.063 426.024 470.639 426.245 471.087 426.686C471.534 427.123 471.758 427.805 471.758 428.731V434H470.549V428.731C470.549 428.15 470.39 427.735 470.072 427.485C469.754 427.236 469.38 427.111 468.949 427.111C468.396 427.111 467.967 427.279 467.663 427.613C467.359 427.945 467.207 428.365 467.207 428.874V434H465.977V428.608C465.977 428.16 465.831 427.8 465.541 427.526C465.25 427.25 464.876 427.111 464.418 427.111C464.104 427.111 463.81 427.195 463.537 427.362C463.267 427.53 463.048 427.762 462.881 428.059C462.717 428.353 462.635 428.693 462.635 429.079V434H461.425ZM477.704 434.164C476.945 434.164 476.291 433.997 475.741 433.662C475.194 433.323 474.772 432.852 474.475 432.247C474.181 431.639 474.034 430.931 474.034 430.125C474.034 429.319 474.181 428.608 474.475 427.993C474.772 427.374 475.186 426.892 475.715 426.547C476.248 426.199 476.87 426.024 477.581 426.024C477.991 426.024 478.396 426.093 478.796 426.229C479.195 426.366 479.559 426.588 479.887 426.896C480.215 427.2 480.477 427.603 480.672 428.105C480.866 428.608 480.964 429.226 480.964 429.961V430.474H474.895V429.428H479.734C479.734 428.984 479.645 428.587 479.467 428.239C479.293 427.89 479.043 427.615 478.719 427.414C478.398 427.212 478.018 427.111 477.581 427.111C477.099 427.111 476.682 427.231 476.33 427.47C475.982 427.706 475.713 428.013 475.526 428.393C475.338 428.772 475.244 429.178 475.244 429.612V430.31C475.244 430.904 475.346 431.408 475.551 431.822C475.76 432.232 476.048 432.544 476.417 432.76C476.786 432.971 477.215 433.077 477.704 433.077C478.022 433.077 478.309 433.033 478.565 432.944C478.825 432.852 479.049 432.715 479.236 432.534C479.424 432.35 479.57 432.121 479.672 431.847L480.841 432.175C480.718 432.572 480.511 432.92 480.221 433.221C479.93 433.518 479.571 433.751 479.144 433.918C478.717 434.082 478.237 434.164 477.704 434.164ZM490.702 434.164C490.046 434.164 489.467 433.998 488.965 433.667C488.462 433.332 488.07 432.86 487.786 432.252C487.502 431.64 487.36 430.918 487.36 430.084C487.36 429.257 487.502 428.539 487.786 427.931C488.07 427.323 488.464 426.853 488.97 426.522C489.476 426.19 490.06 426.024 490.723 426.024C491.235 426.024 491.64 426.11 491.938 426.281C492.238 426.448 492.467 426.64 492.625 426.855C492.785 427.067 492.91 427.241 492.999 427.378H493.101V423.503H494.311V434H493.142V432.79H492.999C492.91 432.934 492.783 433.115 492.619 433.334C492.455 433.549 492.221 433.742 491.917 433.913C491.613 434.08 491.208 434.164 490.702 434.164ZM490.866 433.077C491.352 433.077 491.762 432.951 492.097 432.698C492.431 432.442 492.686 432.088 492.86 431.637C493.035 431.183 493.122 430.658 493.122 430.063C493.122 429.476 493.036 428.961 492.865 428.521C492.695 428.076 492.442 427.731 492.107 427.485C491.772 427.236 491.358 427.111 490.866 427.111C490.354 427.111 489.927 427.243 489.585 427.506C489.247 427.765 488.992 428.119 488.821 428.567C488.654 429.011 488.57 429.51 488.57 430.063C488.57 430.624 488.656 431.133 488.826 431.591C489.001 432.045 489.257 432.408 489.595 432.678C489.937 432.944 490.361 433.077 490.866 433.077ZM500.428 434.164C499.67 434.164 499.015 433.997 498.465 433.662C497.918 433.323 497.496 432.852 497.199 432.247C496.905 431.639 496.758 430.931 496.758 430.125C496.758 429.319 496.905 428.608 497.199 427.993C497.496 427.374 497.91 426.892 498.439 426.547C498.973 426.199 499.594 426.024 500.305 426.024C500.715 426.024 501.12 426.093 501.52 426.229C501.92 426.366 502.284 426.588 502.612 426.896C502.94 427.2 503.201 427.603 503.396 428.105C503.591 428.608 503.688 429.226 503.688 429.961V430.474H497.619V429.428H502.458C502.458 428.984 502.369 428.587 502.191 428.239C502.017 427.89 501.768 427.615 501.443 427.414C501.122 427.212 500.743 427.111 500.305 427.111C499.823 427.111 499.407 427.231 499.055 427.47C498.706 427.706 498.438 428.013 498.25 428.393C498.062 428.772 497.968 429.178 497.968 429.612V430.31C497.968 430.904 498.07 431.408 498.275 431.822C498.484 432.232 498.773 432.544 499.142 432.76C499.511 432.971 499.94 433.077 500.428 433.077C500.746 433.077 501.033 433.033 501.289 432.944C501.549 432.852 501.773 432.715 501.961 432.534C502.149 432.35 502.294 432.121 502.396 431.847L503.565 432.175C503.442 432.572 503.235 432.92 502.945 433.221C502.654 433.518 502.296 433.751 501.869 433.918C501.441 434.082 500.961 434.164 500.428 434.164ZM512.159 426.127L509.248 434H508.018L505.107 426.127H506.419L508.592 432.401H508.674L510.847 426.127H512.159ZM517.208 434.164C516.45 434.164 515.795 433.997 515.245 433.662C514.698 433.323 514.276 432.852 513.979 432.247C513.685 431.639 513.538 430.931 513.538 430.125C513.538 429.319 513.685 428.608 513.979 427.993C514.276 427.374 514.69 426.892 515.219 426.547C515.752 426.199 516.374 426.024 517.085 426.024C517.495 426.024 517.9 426.093 518.3 426.229C518.7 426.366 519.064 426.588 519.392 426.896C519.72 427.2 519.981 427.603 520.176 428.105C520.371 428.608 520.468 429.226 520.468 429.961V430.474H514.399V429.428H519.238C519.238 428.984 519.149 428.587 518.971 428.239C518.797 427.89 518.548 427.615 518.223 427.414C517.902 427.212 517.523 427.111 517.085 427.111C516.603 427.111 516.186 427.231 515.834 427.47C515.486 427.706 515.218 428.013 515.03 428.393C514.842 428.772 514.748 429.178 514.748 429.612V430.31C514.748 430.904 514.85 431.408 515.055 431.822C515.264 432.232 515.553 432.544 515.922 432.76C516.291 432.971 516.72 433.077 517.208 433.077C517.526 433.077 517.813 433.033 518.069 432.944C518.329 432.852 518.553 432.715 518.741 432.534C518.929 432.35 519.074 432.121 519.176 431.847L520.345 432.175C520.222 432.572 520.015 432.92 519.725 433.221C519.434 433.518 519.076 433.751 518.648 433.918C518.221 434.082 517.741 434.164 517.208 434.164ZM523.951 423.503V434H522.741V423.503H523.951ZM529.798 434.164C529.087 434.164 528.463 433.995 527.927 433.657C527.394 433.318 526.977 432.845 526.676 432.237C526.379 431.629 526.23 430.918 526.23 430.104C526.23 429.284 526.379 428.569 526.676 427.957C526.977 427.345 527.394 426.87 527.927 426.532C528.463 426.194 529.087 426.024 529.798 426.024C530.509 426.024 531.131 426.194 531.664 426.532C532.2 426.87 532.617 427.345 532.914 427.957C533.215 428.569 533.365 429.284 533.365 430.104C533.365 430.918 533.215 431.629 532.914 432.237C532.617 432.845 532.2 433.318 531.664 433.657C531.131 433.995 530.509 434.164 529.798 434.164ZM529.798 433.077C530.338 433.077 530.782 432.939 531.131 432.662C531.479 432.385 531.737 432.021 531.905 431.57C532.072 431.119 532.156 430.631 532.156 430.104C532.156 429.578 532.072 429.088 531.905 428.633C531.737 428.179 531.479 427.812 531.131 427.531C530.782 427.251 530.338 427.111 529.798 427.111C529.258 427.111 528.814 427.251 528.465 427.531C528.117 427.812 527.859 428.179 527.691 428.633C527.524 429.088 527.44 429.578 527.44 430.104C527.44 430.631 527.524 431.119 527.691 431.57C527.859 432.021 528.117 432.385 528.465 432.662C528.814 432.939 529.258 433.077 529.798 433.077ZM535.645 436.952V426.127H536.813V427.378H536.957C537.046 427.241 537.169 427.067 537.326 426.855C537.487 426.64 537.716 426.448 538.013 426.281C538.314 426.11 538.72 426.024 539.233 426.024C539.896 426.024 540.48 426.19 540.986 426.522C541.492 426.853 541.886 427.323 542.17 427.931C542.453 428.539 542.595 429.257 542.595 430.084C542.595 430.918 542.453 431.64 542.17 432.252C541.886 432.86 541.493 433.332 540.991 433.667C540.489 433.998 539.909 434.164 539.253 434.164C538.748 434.164 538.343 434.08 538.039 433.913C537.734 433.742 537.5 433.549 537.336 433.334C537.172 433.115 537.046 432.934 536.957 432.79H536.855V436.952H535.645ZM536.834 430.063C536.834 430.658 536.921 431.183 537.095 431.637C537.27 432.088 537.524 432.442 537.859 432.698C538.194 432.951 538.604 433.077 539.089 433.077C539.595 433.077 540.017 432.944 540.355 432.678C540.697 432.408 540.953 432.045 541.124 431.591C541.298 431.133 541.386 430.624 541.386 430.063C541.386 429.51 541.3 429.011 541.129 428.567C540.962 428.119 540.707 427.765 540.366 427.506C540.027 427.243 539.602 427.111 539.089 427.111C538.597 427.111 538.184 427.236 537.849 427.485C537.514 427.731 537.261 428.076 537.09 428.521C536.919 428.961 536.834 429.476 536.834 430.063ZM548.174 434.164C547.416 434.164 546.761 433.997 546.211 433.662C545.665 433.323 545.243 432.852 544.945 432.247C544.651 431.639 544.504 430.931 544.504 430.125C544.504 429.319 544.651 428.608 544.945 427.993C545.243 427.374 545.656 426.892 546.186 426.547C546.719 426.199 547.341 426.024 548.051 426.024C548.461 426.024 548.866 426.093 549.266 426.229C549.666 426.366 550.03 426.588 550.358 426.896C550.686 427.2 550.947 427.603 551.142 428.105C551.337 428.608 551.434 429.226 551.434 429.961V430.474H545.366V429.428H550.204C550.204 428.984 550.115 428.587 549.938 428.239C549.763 427.89 549.514 427.615 549.189 427.414C548.868 427.212 548.489 427.111 548.051 427.111C547.57 427.111 547.153 427.231 546.801 427.47C546.452 427.706 546.184 428.013 545.996 428.393C545.808 428.772 545.714 429.178 545.714 429.612V430.31C545.714 430.904 545.817 431.408 546.022 431.822C546.23 432.232 546.519 432.544 546.888 432.76C547.257 432.971 547.686 433.077 548.174 433.077C548.492 433.077 548.779 433.033 549.036 432.944C549.295 432.852 549.519 432.715 549.707 432.534C549.895 432.35 550.04 432.121 550.143 431.847L551.311 432.175C551.188 432.572 550.982 432.92 550.691 433.221C550.401 433.518 550.042 433.751 549.615 433.918C549.188 434.082 548.707 434.164 548.174 434.164ZM553.707 434V426.127H554.876V427.316H554.958C555.102 426.927 555.361 426.611 555.737 426.368C556.113 426.125 556.537 426.004 557.008 426.004C557.097 426.004 557.208 426.006 557.342 426.009C557.475 426.013 557.576 426.018 557.644 426.024V427.255C557.603 427.244 557.509 427.229 557.362 427.208C557.219 427.185 557.067 427.173 556.906 427.173C556.523 427.173 556.181 427.253 555.881 427.414C555.583 427.571 555.348 427.789 555.173 428.07C555.003 428.346 554.917 428.662 554.917 429.018V434H553.707ZM565.088 427.89L564.001 428.198C563.933 428.017 563.832 427.841 563.699 427.67C563.569 427.496 563.391 427.352 563.166 427.239C562.94 427.126 562.651 427.07 562.299 427.07C561.817 427.07 561.416 427.181 561.095 427.403C560.777 427.622 560.618 427.9 560.618 428.239C560.618 428.539 560.727 428.777 560.946 428.951C561.165 429.125 561.506 429.271 561.971 429.387L563.14 429.674C563.844 429.845 564.368 430.106 564.713 430.458C565.059 430.807 565.231 431.256 565.231 431.806C565.231 432.257 565.101 432.66 564.842 433.016C564.585 433.371 564.227 433.651 563.765 433.856C563.304 434.062 562.767 434.164 562.156 434.164C561.353 434.164 560.688 433.99 560.162 433.641C559.636 433.293 559.302 432.784 559.162 432.114L560.311 431.827C560.42 432.25 560.627 432.568 560.931 432.78C561.238 432.992 561.64 433.098 562.135 433.098C562.699 433.098 563.147 432.978 563.478 432.739C563.813 432.496 563.98 432.206 563.98 431.868C563.98 431.594 563.885 431.365 563.693 431.181C563.502 430.993 563.208 430.853 562.812 430.761L561.5 430.453C560.779 430.282 560.249 430.017 559.911 429.659C559.576 429.296 559.408 428.844 559.408 428.3C559.408 427.856 559.533 427.463 559.783 427.121C560.035 426.78 560.379 426.511 560.813 426.317C561.25 426.122 561.746 426.024 562.299 426.024C563.078 426.024 563.69 426.195 564.134 426.537C564.582 426.879 564.9 427.33 565.088 427.89ZM574.294 434.185C573.795 434.185 573.343 434.091 572.936 433.903C572.529 433.711 572.207 433.436 571.967 433.077C571.728 432.715 571.609 432.278 571.609 431.765C571.609 431.314 571.697 430.949 571.875 430.668C572.053 430.385 572.29 430.163 572.588 430.002C572.885 429.841 573.213 429.722 573.572 429.643C573.934 429.561 574.298 429.496 574.663 429.448C575.142 429.387 575.53 429.341 575.827 429.31C576.128 429.276 576.346 429.219 576.483 429.141C576.623 429.062 576.693 428.926 576.693 428.731V428.69C576.693 428.184 576.555 427.791 576.278 427.511C576.005 427.231 575.589 427.091 575.032 427.091C574.455 427.091 574.002 427.217 573.674 427.47C573.346 427.723 573.115 427.993 572.982 428.28L571.834 427.87C572.039 427.391 572.312 427.019 572.654 426.752C572.999 426.482 573.375 426.294 573.782 426.188C574.192 426.079 574.595 426.024 574.991 426.024C575.244 426.024 575.535 426.055 575.863 426.117C576.194 426.175 576.514 426.296 576.821 426.481C577.132 426.665 577.39 426.944 577.595 427.316C577.8 427.689 577.903 428.188 577.903 428.813V434H576.693V432.934H576.632C576.55 433.105 576.413 433.288 576.222 433.482C576.03 433.677 575.776 433.843 575.458 433.979C575.14 434.116 574.752 434.185 574.294 434.185ZM574.479 433.098C574.957 433.098 575.361 433.004 575.689 432.816C576.02 432.628 576.269 432.385 576.437 432.088C576.608 431.791 576.693 431.478 576.693 431.15V430.043C576.642 430.104 576.529 430.161 576.355 430.212C576.184 430.26 575.986 430.303 575.76 430.34C575.538 430.374 575.321 430.405 575.109 430.433C574.901 430.456 574.732 430.477 574.602 430.494C574.288 430.535 573.994 430.602 573.72 430.694C573.45 430.783 573.232 430.918 573.064 431.099C572.9 431.277 572.818 431.519 572.818 431.827C572.818 432.247 572.974 432.565 573.285 432.78C573.599 432.992 573.997 433.098 574.479 433.098ZM581.753 429.264V434H580.544V426.127H581.712V427.357H581.815C581.999 426.957 582.28 426.636 582.656 426.394C583.031 426.147 583.517 426.024 584.111 426.024C584.644 426.024 585.111 426.134 585.511 426.353C585.91 426.568 586.221 426.896 586.443 427.337C586.665 427.774 586.777 428.328 586.777 428.997V434H585.567V429.079C585.567 428.461 585.406 427.979 585.085 427.634C584.764 427.285 584.323 427.111 583.763 427.111C583.377 427.111 583.031 427.195 582.727 427.362C582.427 427.53 582.189 427.774 582.015 428.095C581.841 428.416 581.753 428.806 581.753 429.264ZM592.393 434.164C591.737 434.164 591.158 433.998 590.655 433.667C590.153 433.332 589.76 432.86 589.476 432.252C589.193 431.64 589.051 430.918 589.051 430.084C589.051 429.257 589.193 428.539 589.476 427.931C589.76 427.323 590.155 426.853 590.66 426.522C591.166 426.19 591.75 426.024 592.413 426.024C592.926 426.024 593.331 426.11 593.628 426.281C593.929 426.448 594.158 426.64 594.315 426.855C594.476 427.067 594.6 427.241 594.689 427.378H594.792V423.503H596.001V434H594.833V432.79H594.689C594.6 432.934 594.474 433.115 594.31 433.334C594.146 433.549 593.912 433.742 593.608 433.913C593.304 434.08 592.899 434.164 592.393 434.164ZM592.557 433.077C593.042 433.077 593.452 432.951 593.787 432.698C594.122 432.442 594.377 432.088 594.551 431.637C594.725 431.183 594.812 430.658 594.812 430.063C594.812 429.476 594.727 428.961 594.556 428.521C594.385 428.076 594.132 427.731 593.797 427.485C593.462 427.236 593.049 427.111 592.557 427.111C592.044 427.111 591.617 427.243 591.275 427.506C590.937 427.765 590.683 428.119 590.512 428.567C590.344 429.011 590.261 429.51 590.261 430.063C590.261 430.624 590.346 431.133 590.517 431.591C590.691 432.045 590.947 432.408 591.286 432.678C591.627 432.944 592.051 433.077 592.557 433.077ZM606.283 434.164C605.627 434.164 605.048 433.998 604.546 433.667C604.043 433.332 603.65 432.86 603.367 432.252C603.083 431.64 602.941 430.918 602.941 430.084C602.941 429.257 603.083 428.539 603.367 427.931C603.65 427.323 604.045 426.853 604.551 426.522C605.056 426.19 605.641 426.024 606.304 426.024C606.816 426.024 607.221 426.11 607.519 426.281C607.819 426.448 608.048 426.64 608.205 426.855C608.366 427.067 608.491 427.241 608.58 427.378H608.682V423.503H609.892V434H608.723V432.79H608.58C608.491 432.934 608.364 433.115 608.2 433.334C608.036 433.549 607.802 433.742 607.498 433.913C607.194 434.08 606.789 434.164 606.283 434.164ZM606.447 433.077C606.932 433.077 607.343 432.951 607.677 432.698C608.012 432.442 608.267 432.088 608.441 431.637C608.615 431.183 608.703 430.658 608.703 430.063C608.703 429.476 608.617 428.961 608.446 428.521C608.275 428.076 608.023 427.731 607.688 427.485C607.353 427.236 606.939 427.111 606.447 427.111C605.935 427.111 605.508 427.243 605.166 427.506C604.828 427.765 604.573 428.119 604.402 428.567C604.235 429.011 604.151 429.51 604.151 430.063C604.151 430.624 604.236 431.133 604.407 431.591C604.582 432.045 604.838 432.408 605.176 432.678C605.518 432.944 605.942 433.077 606.447 433.077ZM616.009 434.164C615.25 434.164 614.596 433.997 614.046 433.662C613.499 433.323 613.077 432.852 612.78 432.247C612.486 431.639 612.339 430.931 612.339 430.125C612.339 429.319 612.486 428.608 612.78 427.993C613.077 427.374 613.491 426.892 614.02 426.547C614.553 426.199 615.175 426.024 615.886 426.024C616.296 426.024 616.701 426.093 617.101 426.229C617.501 426.366 617.865 426.588 618.193 426.896C618.521 427.2 618.782 427.603 618.977 428.105C619.172 428.608 619.269 429.226 619.269 429.961V430.474H613.2V429.428H618.039C618.039 428.984 617.95 428.587 617.772 428.239C617.598 427.89 617.349 427.615 617.024 427.414C616.703 427.212 616.323 427.111 615.886 427.111C615.404 427.111 614.987 427.231 614.635 427.47C614.287 427.706 614.019 428.013 613.831 428.393C613.643 428.772 613.549 429.178 613.549 429.612V430.31C613.549 430.904 613.651 431.408 613.856 431.822C614.065 432.232 614.353 432.544 614.723 432.76C615.092 432.971 615.52 433.077 616.009 433.077C616.327 433.077 616.614 433.033 616.87 432.944C617.13 432.852 617.354 432.715 617.542 432.534C617.73 432.35 617.875 432.121 617.977 431.847L619.146 432.175C619.023 432.572 618.816 432.92 618.526 433.221C618.235 433.518 617.877 433.751 617.449 433.918C617.022 434.082 616.542 434.164 616.009 434.164ZM627.119 427.89L626.032 428.198C625.964 428.017 625.863 427.841 625.73 427.67C625.6 427.496 625.422 427.352 625.197 427.239C624.971 427.126 624.682 427.07 624.33 427.07C623.849 427.07 623.447 427.181 623.126 427.403C622.808 427.622 622.649 427.9 622.649 428.239C622.649 428.539 622.759 428.777 622.977 428.951C623.196 429.125 623.538 429.271 624.002 429.387L625.171 429.674C625.875 429.845 626.4 430.106 626.745 430.458C627.09 430.807 627.262 431.256 627.262 431.806C627.262 432.257 627.133 432.66 626.873 433.016C626.617 433.371 626.258 433.651 625.796 433.856C625.335 434.062 624.799 434.164 624.187 434.164C623.384 434.164 622.719 433.99 622.193 433.641C621.667 433.293 621.334 432.784 621.194 432.114L622.342 431.827C622.451 432.25 622.658 432.568 622.962 432.78C623.269 432.992 623.671 433.098 624.166 433.098C624.73 433.098 625.178 432.978 625.509 432.739C625.844 432.496 626.012 432.206 626.012 431.868C626.012 431.594 625.916 431.365 625.725 431.181C625.533 430.993 625.239 430.853 624.843 430.761L623.531 430.453C622.81 430.282 622.28 430.017 621.942 429.659C621.607 429.296 621.44 428.844 621.44 428.3C621.44 427.856 621.564 427.463 621.814 427.121C622.067 426.78 622.41 426.511 622.844 426.317C623.281 426.122 623.777 426.024 624.33 426.024C625.11 426.024 625.721 426.195 626.165 426.537C626.613 426.879 626.931 427.33 627.119 427.89ZM629.516 434V426.127H630.726V434H629.516ZM630.131 424.815C629.896 424.815 629.692 424.735 629.521 424.574C629.354 424.413 629.27 424.22 629.27 423.995C629.27 423.769 629.354 423.576 629.521 423.416C629.692 423.255 629.896 423.175 630.131 423.175C630.367 423.175 630.569 423.255 630.736 423.416C630.907 423.576 630.992 423.769 630.992 423.995C630.992 424.22 630.907 424.413 630.736 424.574C630.569 424.735 630.367 424.815 630.131 424.815ZM636.552 437.116C635.968 437.116 635.466 437.041 635.045 436.891C634.625 436.744 634.275 436.549 633.995 436.307C633.718 436.067 633.498 435.811 633.334 435.538L634.297 434.861C634.406 435.005 634.545 435.169 634.712 435.353C634.88 435.541 635.109 435.703 635.399 435.84C635.693 435.98 636.077 436.05 636.552 436.05C637.188 436.05 637.713 435.896 638.126 435.589C638.539 435.281 638.746 434.8 638.746 434.144V432.544H638.644C638.555 432.688 638.428 432.866 638.264 433.077C638.104 433.286 637.871 433.472 637.567 433.636C637.267 433.797 636.86 433.877 636.347 433.877C635.712 433.877 635.141 433.727 634.635 433.426C634.133 433.125 633.735 432.688 633.441 432.114C633.151 431.54 633.005 430.843 633.005 430.022C633.005 429.216 633.147 428.514 633.431 427.916C633.715 427.314 634.109 426.85 634.615 426.522C635.121 426.19 635.705 426.024 636.368 426.024C636.88 426.024 637.287 426.11 637.588 426.281C637.892 426.448 638.124 426.64 638.285 426.855C638.449 427.067 638.575 427.241 638.664 427.378H638.787V426.127H639.956V434.226C639.956 434.902 639.802 435.452 639.495 435.876C639.19 436.303 638.78 436.616 638.264 436.814C637.752 437.016 637.181 437.116 636.552 437.116ZM636.511 432.79C636.997 432.79 637.407 432.679 637.742 432.457C638.076 432.235 638.331 431.916 638.505 431.499C638.68 431.082 638.767 430.583 638.767 430.002C638.767 429.435 638.681 428.934 638.51 428.5C638.34 428.066 638.087 427.726 637.752 427.48C637.417 427.234 637.003 427.111 636.511 427.111C635.999 427.111 635.572 427.241 635.23 427.501C634.892 427.76 634.637 428.109 634.466 428.546C634.299 428.984 634.215 429.469 634.215 430.002C634.215 430.549 634.301 431.032 634.471 431.453C634.646 431.869 634.902 432.197 635.24 432.437C635.582 432.672 636.006 432.79 636.511 432.79ZM643.813 429.264V434H642.603V426.127H643.772V427.357H643.874C644.059 426.957 644.339 426.636 644.715 426.394C645.091 426.147 645.576 426.024 646.171 426.024C646.704 426.024 647.17 426.134 647.57 426.353C647.97 426.568 648.281 426.896 648.503 427.337C648.725 427.774 648.836 428.328 648.836 428.997V434H647.626V429.079C647.626 428.461 647.466 427.979 647.144 427.634C646.823 427.285 646.382 427.111 645.822 427.111C645.436 427.111 645.091 427.195 644.787 427.362C644.486 427.53 644.248 427.774 644.074 428.095C643.9 428.416 643.813 428.806 643.813 429.264ZM654.78 434.164C654.022 434.164 653.367 433.997 652.817 433.662C652.27 433.323 651.848 432.852 651.551 432.247C651.257 431.639 651.11 430.931 651.11 430.125C651.11 429.319 651.257 428.608 651.551 427.993C651.848 427.374 652.262 426.892 652.792 426.547C653.325 426.199 653.947 426.024 654.657 426.024C655.067 426.024 655.472 426.093 655.872 426.229C656.272 426.366 656.636 426.588 656.964 426.896C657.292 427.2 657.553 427.603 657.748 428.105C657.943 428.608 658.04 429.226 658.04 429.961V430.474H651.971V429.428H656.81C656.81 428.984 656.721 428.587 656.544 428.239C656.369 427.89 656.12 427.615 655.795 427.414C655.474 427.212 655.095 427.111 654.657 427.111C654.176 427.111 653.759 427.231 653.407 427.47C653.058 427.706 652.79 428.013 652.602 428.393C652.414 428.772 652.32 429.178 652.32 429.612V430.31C652.32 430.904 652.423 431.408 652.628 431.822C652.836 432.232 653.125 432.544 653.494 432.76C653.863 432.971 654.292 433.077 654.78 433.077C655.098 433.077 655.385 433.033 655.641 432.944C655.901 432.852 656.125 432.715 656.313 432.534C656.501 432.35 656.646 432.121 656.749 431.847L657.917 432.175C657.794 432.572 657.588 432.92 657.297 433.221C657.007 433.518 656.648 433.751 656.221 433.918C655.794 434.082 655.313 434.164 654.78 434.164ZM660.313 434V426.127H661.482V427.316H661.564C661.708 426.927 661.967 426.611 662.343 426.368C662.719 426.125 663.143 426.004 663.614 426.004C663.703 426.004 663.814 426.006 663.947 426.009C664.081 426.013 664.182 426.018 664.25 426.024V427.255C664.209 427.244 664.115 427.229 663.968 427.208C663.824 427.185 663.672 427.173 663.512 427.173C663.129 427.173 662.787 427.253 662.487 427.414C662.189 427.571 661.954 427.789 661.779 428.07C661.608 428.346 661.523 428.662 661.523 429.018V434H660.313ZM671.694 427.89L670.607 428.198C670.539 428.017 670.438 427.841 670.304 427.67C670.175 427.496 669.997 427.352 669.771 427.239C669.546 427.126 669.257 427.07 668.905 427.07C668.423 427.07 668.022 427.181 667.701 427.403C667.383 427.622 667.224 427.9 667.224 428.239C667.224 428.539 667.333 428.777 667.552 428.951C667.771 429.125 668.112 429.271 668.577 429.387L669.746 429.674C670.45 429.845 670.974 430.106 671.319 430.458C671.664 430.807 671.837 431.256 671.837 431.806C671.837 432.257 671.707 432.66 671.448 433.016C671.191 433.371 670.832 433.651 670.371 433.856C669.91 434.062 669.373 434.164 668.762 434.164C667.959 434.164 667.294 433.99 666.768 433.641C666.242 433.293 665.908 432.784 665.768 432.114L666.916 431.827C667.026 432.25 667.233 432.568 667.537 432.78C667.844 432.992 668.246 433.098 668.741 433.098C669.305 433.098 669.753 432.978 670.084 432.739C670.419 432.496 670.586 432.206 670.586 431.868C670.586 431.594 670.491 431.365 670.299 431.181C670.108 430.993 669.814 430.853 669.418 430.761L668.106 430.453C667.385 430.282 666.855 430.017 666.517 429.659C666.182 429.296 666.014 428.844 666.014 428.3C666.014 427.856 666.139 427.463 666.388 427.121C666.641 426.78 666.985 426.511 667.419 426.317C667.856 426.122 668.352 426.024 668.905 426.024C669.684 426.024 670.296 426.195 670.74 426.537C671.188 426.879 671.506 427.33 671.694 427.89ZM678.583 434V426.127H679.793V434H678.583ZM679.199 424.815C678.963 424.815 678.759 424.735 678.589 424.574C678.421 424.413 678.337 424.22 678.337 423.995C678.337 423.769 678.421 423.576 678.589 423.416C678.759 423.255 678.963 423.175 679.199 423.175C679.434 423.175 679.636 423.255 679.803 423.416C679.974 423.576 680.06 423.769 680.06 423.995C680.06 424.22 679.974 424.413 679.803 424.574C679.636 424.735 679.434 424.815 679.199 424.815ZM683.651 429.264V434H682.442V426.127H683.61V427.357H683.713C683.897 426.957 684.178 426.636 684.554 426.394C684.929 426.147 685.415 426.024 686.009 426.024C686.542 426.024 687.009 426.134 687.409 426.353C687.808 426.568 688.119 426.896 688.341 427.337C688.563 427.774 688.675 428.328 688.675 428.997V434H687.465V429.079C687.465 428.461 687.304 427.979 686.983 427.634C686.662 427.285 686.221 427.111 685.661 427.111C685.275 427.111 684.929 427.195 684.625 427.362C684.325 427.53 684.087 427.774 683.913 428.095C683.739 428.416 683.651 428.806 683.651 429.264ZM696.59 436.952C696.385 436.952 696.202 436.935 696.041 436.901C695.881 436.87 695.77 436.84 695.708 436.809L696.016 435.743C696.309 435.818 696.569 435.845 696.795 435.825C697.02 435.804 697.22 435.703 697.394 435.522C697.572 435.345 697.734 435.056 697.881 434.656L698.107 434.041L695.195 426.127H696.508L698.681 432.401H698.763L700.936 426.127H702.248L698.906 435.148C698.756 435.555 698.57 435.891 698.348 436.158C698.126 436.428 697.868 436.628 697.574 436.758C697.283 436.887 696.955 436.952 696.59 436.952ZM707.195 434.164C706.484 434.164 705.86 433.995 705.324 433.657C704.791 433.318 704.374 432.845 704.073 432.237C703.776 431.629 703.627 430.918 703.627 430.104C703.627 429.284 703.776 428.569 704.073 427.957C704.374 427.345 704.791 426.87 705.324 426.532C705.86 426.194 706.484 426.024 707.195 426.024C707.905 426.024 708.527 426.194 709.06 426.532C709.597 426.87 710.014 427.345 710.311 427.957C710.612 428.569 710.762 429.284 710.762 430.104C710.762 430.918 710.612 431.629 710.311 432.237C710.014 432.845 709.597 433.318 709.06 433.657C708.527 433.995 707.905 434.164 707.195 434.164ZM707.195 433.077C707.734 433.077 708.179 432.939 708.527 432.662C708.876 432.385 709.134 432.021 709.301 431.57C709.469 431.119 709.552 430.631 709.552 430.104C709.552 429.578 709.469 429.088 709.301 428.633C709.134 428.179 708.876 427.812 708.527 427.531C708.179 427.251 707.734 427.111 707.195 427.111C706.655 427.111 706.21 427.251 705.862 427.531C705.513 427.812 705.255 428.179 705.088 428.633C704.92 429.088 704.837 429.578 704.837 430.104C704.837 430.631 704.92 431.119 705.088 431.57C705.255 432.021 705.513 432.385 705.862 432.662C706.21 432.939 706.655 433.077 707.195 433.077ZM718.003 430.781V426.127H719.213V434H718.003V432.667H717.921C717.737 433.067 717.45 433.407 717.06 433.687C716.67 433.964 716.178 434.103 715.584 434.103C715.092 434.103 714.654 433.995 714.272 433.78C713.889 433.561 713.588 433.233 713.37 432.795C713.151 432.355 713.042 431.799 713.042 431.13V426.127H714.251V431.048C714.251 431.622 714.412 432.08 714.733 432.421C715.058 432.763 715.471 432.934 715.973 432.934C716.274 432.934 716.58 432.857 716.891 432.703C717.205 432.549 717.468 432.314 717.68 431.996C717.896 431.678 718.003 431.273 718.003 430.781ZM721.861 434V426.127H723.03V427.316H723.112C723.256 426.927 723.515 426.611 723.891 426.368C724.267 426.125 724.691 426.004 725.162 426.004C725.251 426.004 725.362 426.006 725.496 426.009C725.629 426.013 725.73 426.018 725.798 426.024V427.255C725.757 427.244 725.663 427.229 725.516 427.208C725.372 427.185 725.22 427.173 725.06 427.173C724.677 427.173 724.335 427.253 724.035 427.414C723.737 427.571 723.502 427.789 723.327 428.07C723.156 428.346 723.071 428.662 723.071 429.018V434H721.861ZM733.367 429.264V434H732.157V426.127H733.326V427.357H733.429C733.613 426.957 733.893 426.636 734.269 426.394C734.645 426.147 735.13 426.024 735.725 426.024C736.258 426.024 736.724 426.134 737.124 426.353C737.524 426.568 737.835 426.896 738.057 427.337C738.279 427.774 738.39 428.328 738.39 428.997V434H737.181V429.079C737.181 428.461 737.02 427.979 736.699 427.634C736.378 427.285 735.937 427.111 735.376 427.111C734.99 427.111 734.645 427.195 734.341 427.362C734.04 427.53 733.803 427.774 733.628 428.095C733.454 428.416 733.367 428.806 733.367 429.264ZM744.335 434.164C743.576 434.164 742.922 433.997 742.371 433.662C741.825 433.323 741.403 432.852 741.105 432.247C740.812 431.639 740.665 430.931 740.665 430.125C740.665 429.319 740.812 428.608 741.105 427.993C741.403 427.374 741.816 426.892 742.346 426.547C742.879 426.199 743.501 426.024 744.212 426.024C744.622 426.024 745.027 426.093 745.426 426.229C745.826 426.366 746.19 426.588 746.518 426.896C746.846 427.2 747.108 427.603 747.302 428.105C747.497 428.608 747.594 429.226 747.594 429.961V430.474H741.526V429.428H746.364C746.364 428.984 746.275 428.587 746.098 428.239C745.924 427.89 745.674 427.615 745.349 427.414C745.028 427.212 744.649 427.111 744.212 427.111C743.73 427.111 743.313 427.231 742.961 427.47C742.612 427.706 742.344 428.013 742.156 428.393C741.968 428.772 741.874 429.178 741.874 429.612V430.31C741.874 430.904 741.977 431.408 742.182 431.822C742.39 432.232 742.679 432.544 743.048 432.76C743.417 432.971 743.846 433.077 744.335 433.077C744.652 433.077 744.939 433.033 745.196 432.944C745.455 432.852 745.679 432.715 745.867 432.534C746.055 432.35 746.2 432.121 746.303 431.847L747.471 432.175C747.348 432.572 747.142 432.92 746.851 433.221C746.561 433.518 746.202 433.751 745.775 433.918C745.348 434.082 744.868 434.164 744.335 434.164ZM753.292 426.127V427.152H749.212V426.127H753.292ZM750.401 424.241H751.61V431.745C751.61 432.086 751.66 432.343 751.759 432.514C751.861 432.681 751.991 432.794 752.149 432.852C752.309 432.907 752.478 432.934 752.656 432.934C752.789 432.934 752.899 432.927 752.984 432.913C753.069 432.896 753.138 432.883 753.189 432.872L753.435 433.959C753.353 433.99 753.239 434.021 753.092 434.051C752.945 434.085 752.758 434.103 752.533 434.103C752.191 434.103 751.856 434.029 751.528 433.882C751.204 433.735 750.934 433.511 750.718 433.211C750.507 432.91 750.401 432.531 750.401 432.073V424.241ZM757.328 434L754.929 426.127H756.2L757.902 432.155H757.984L759.665 426.127H760.957L762.618 432.134H762.7L764.401 426.127H765.672L763.274 434H762.085L760.362 427.952H760.239L758.517 434H757.328ZM770.635 434.164C769.925 434.164 769.301 433.995 768.764 433.657C768.231 433.318 767.814 432.845 767.514 432.237C767.216 431.629 767.068 430.918 767.068 430.104C767.068 429.284 767.216 428.569 767.514 427.957C767.814 427.345 768.231 426.87 768.764 426.532C769.301 426.194 769.925 426.024 770.635 426.024C771.346 426.024 771.968 426.194 772.501 426.532C773.038 426.87 773.454 427.345 773.752 427.957C774.052 428.569 774.203 429.284 774.203 430.104C774.203 430.918 774.052 431.629 773.752 432.237C773.454 432.845 773.038 433.318 772.501 433.657C771.968 433.995 771.346 434.164 770.635 434.164ZM770.635 433.077C771.175 433.077 771.619 432.939 771.968 432.662C772.317 432.385 772.575 432.021 772.742 431.57C772.909 431.119 772.993 430.631 772.993 430.104C772.993 429.578 772.909 429.088 772.742 428.633C772.575 428.179 772.317 427.812 771.968 427.531C771.619 427.251 771.175 427.111 770.635 427.111C770.095 427.111 769.651 427.251 769.303 427.531C768.954 427.812 768.696 428.179 768.529 428.633C768.361 429.088 768.277 429.578 768.277 430.104C768.277 430.631 768.361 431.119 768.529 431.57C768.696 432.021 768.954 432.385 769.303 432.662C769.651 432.939 770.095 433.077 770.635 433.077ZM776.482 434V426.127H777.651V427.316H777.733C777.876 426.927 778.136 426.611 778.512 426.368C778.888 426.125 779.312 426.004 779.783 426.004C779.872 426.004 779.983 426.006 780.116 426.009C780.25 426.013 780.35 426.018 780.419 426.024V427.255C780.378 427.244 780.284 427.229 780.137 427.208C779.993 427.185 779.841 427.173 779.681 427.173C779.298 427.173 778.956 427.253 778.656 427.414C778.358 427.571 778.123 427.789 777.948 428.07C777.777 428.346 777.692 428.662 777.692 429.018V434H776.482ZM783.413 431.13L783.393 429.633H783.639L787.083 426.127H788.58L784.91 429.838H784.808L783.413 431.13ZM782.286 434V423.503H783.495V434H782.286ZM787.288 434L784.213 430.104L785.074 429.264L788.826 434H787.288ZM791.452 434.082C791.199 434.082 790.982 433.991 790.801 433.81C790.62 433.629 790.529 433.412 790.529 433.159C790.529 432.907 790.62 432.69 790.801 432.508C790.982 432.327 791.199 432.237 791.452 432.237C791.704 432.237 791.921 432.327 792.103 432.508C792.284 432.69 792.374 432.907 792.374 433.159C792.374 433.327 792.331 433.481 792.246 433.621C792.164 433.761 792.053 433.874 791.913 433.959C791.776 434.041 791.622 434.082 791.452 434.082ZM791.452 428.239C791.199 428.239 790.982 428.148 790.801 427.967C790.62 427.786 790.529 427.569 790.529 427.316C790.529 427.063 790.62 426.846 790.801 426.665C790.982 426.484 791.199 426.394 791.452 426.394C791.704 426.394 791.921 426.484 792.103 426.665C792.284 426.846 792.374 427.063 792.374 427.316C792.374 427.484 792.331 427.637 792.246 427.777C792.164 427.918 792.053 428.03 791.913 428.116C791.776 428.198 791.622 428.239 791.452 428.239ZM381.634 474H377.912V463.503H381.664C382.72 463.503 383.629 463.713 384.391 464.133C385.153 464.55 385.739 465.15 386.149 465.932C386.563 466.715 386.77 467.651 386.77 468.741C386.77 469.835 386.563 470.774 386.149 471.56C385.739 472.346 385.15 472.949 384.381 473.37C383.616 473.79 382.7 474 381.634 474ZM380.132 472.098H381.541C382.197 472.098 382.749 471.982 383.197 471.75C383.648 471.514 383.986 471.15 384.212 470.658C384.441 470.163 384.555 469.524 384.555 468.741C384.555 467.965 384.441 467.332 384.212 466.839C383.986 466.347 383.65 465.985 383.202 465.753C382.754 465.52 382.203 465.404 381.546 465.404H380.132V472.098ZM390.989 469.448V474H388.806V463.503H390.928V467.516H391.02C391.198 467.051 391.485 466.687 391.881 466.424C392.277 466.158 392.775 466.024 393.373 466.024C393.919 466.024 394.396 466.144 394.803 466.383C395.213 466.619 395.53 466.959 395.756 467.403C395.985 467.844 396.098 468.372 396.094 468.987V474H393.911V469.377C393.914 468.891 393.791 468.514 393.542 468.244C393.296 467.974 392.951 467.839 392.506 467.839C392.209 467.839 391.946 467.902 391.717 468.029C391.491 468.155 391.314 468.34 391.184 468.582C391.057 468.821 390.993 469.11 390.989 469.448ZM398.246 474V466.127H400.363V467.501H400.445C400.588 467.012 400.829 466.643 401.167 466.394C401.506 466.141 401.895 466.014 402.336 466.014C402.445 466.014 402.563 466.021 402.69 466.035C402.816 466.048 402.927 466.067 403.023 466.091V468.029C402.92 467.998 402.778 467.971 402.597 467.947C402.416 467.923 402.251 467.911 402.1 467.911C401.779 467.911 401.492 467.981 401.239 468.121C400.99 468.258 400.791 468.449 400.644 468.695C400.501 468.941 400.429 469.225 400.429 469.546V474H398.246ZM406.604 474.149C406.102 474.149 405.654 474.062 405.261 473.887C404.868 473.71 404.557 473.448 404.328 473.103C404.103 472.754 403.99 472.32 403.99 471.801C403.99 471.364 404.07 470.996 404.231 470.699C404.392 470.402 404.61 470.163 404.887 469.981C405.164 469.8 405.478 469.664 405.83 469.571C406.186 469.479 406.558 469.414 406.948 469.377C407.406 469.329 407.775 469.284 408.055 469.243C408.335 469.199 408.538 469.134 408.665 469.049C408.791 468.963 408.854 468.837 408.854 468.669V468.639C408.854 468.314 408.752 468.063 408.547 467.885C408.345 467.707 408.058 467.619 407.686 467.619C407.293 467.619 406.98 467.706 406.748 467.88C406.515 468.051 406.362 468.266 406.286 468.526L404.267 468.362C404.369 467.883 404.571 467.47 404.872 467.121C405.172 466.769 405.56 466.499 406.035 466.312C406.514 466.12 407.067 466.024 407.696 466.024C408.133 466.024 408.552 466.076 408.952 466.178C409.355 466.281 409.712 466.44 410.023 466.655C410.337 466.87 410.585 467.147 410.766 467.485C410.947 467.82 411.038 468.222 411.038 468.69V474H408.967V472.908H408.906C408.779 473.154 408.61 473.371 408.398 473.559C408.186 473.744 407.932 473.889 407.634 473.995C407.337 474.097 406.994 474.149 406.604 474.149ZM407.23 472.642C407.551 472.642 407.834 472.578 408.08 472.452C408.326 472.322 408.52 472.148 408.66 471.929C408.8 471.711 408.87 471.463 408.87 471.186V470.351C408.801 470.395 408.707 470.436 408.588 470.474C408.472 470.508 408.34 470.54 408.193 470.571C408.046 470.598 407.899 470.624 407.752 470.648C407.605 470.668 407.472 470.687 407.353 470.704C407.096 470.742 406.872 470.802 406.681 470.884C406.49 470.966 406.341 471.077 406.235 471.217C406.129 471.353 406.076 471.524 406.076 471.729C406.076 472.027 406.184 472.254 406.399 472.411C406.618 472.565 406.895 472.642 407.23 472.642ZM420.223 466.127L417.471 474H415.01L412.258 466.127H414.564L416.199 471.76H416.281L417.911 466.127H420.223ZM423.121 476.952C422.845 476.952 422.585 476.93 422.342 476.886C422.103 476.845 421.905 476.792 421.748 476.727L422.24 475.097C422.496 475.175 422.727 475.218 422.932 475.225C423.14 475.232 423.32 475.184 423.47 475.082C423.624 474.979 423.749 474.805 423.844 474.559L423.972 474.226L421.148 466.127H423.444L425.074 471.909H425.156L426.802 466.127H429.113L426.053 474.851C425.906 475.275 425.707 475.644 425.454 475.958C425.204 476.276 424.888 476.52 424.505 476.691C424.123 476.865 423.661 476.952 423.121 476.952ZM432.697 474.149C432.195 474.149 431.747 474.062 431.354 473.887C430.961 473.71 430.651 473.448 430.422 473.103C430.196 472.754 430.083 472.32 430.083 471.801C430.083 471.364 430.164 470.996 430.324 470.699C430.485 470.402 430.703 470.163 430.98 469.981C431.257 469.8 431.571 469.664 431.923 469.571C432.279 469.479 432.651 469.414 433.041 469.377C433.499 469.329 433.868 469.284 434.148 469.243C434.428 469.199 434.631 469.134 434.758 469.049C434.884 468.963 434.948 468.837 434.948 468.669V468.639C434.948 468.314 434.845 468.063 434.64 467.885C434.438 467.707 434.151 467.619 433.779 467.619C433.386 467.619 433.073 467.706 432.841 467.88C432.609 468.051 432.455 468.266 432.38 468.526L430.36 468.362C430.463 467.883 430.664 467.47 430.965 467.121C431.266 466.769 431.653 466.499 432.128 466.312C432.607 466.12 433.16 466.024 433.789 466.024C434.227 466.024 434.645 466.076 435.045 466.178C435.448 466.281 435.805 466.44 436.116 466.655C436.431 466.87 436.678 467.147 436.859 467.485C437.041 467.82 437.131 468.222 437.131 468.69V474H435.06V472.908H434.999C434.872 473.154 434.703 473.371 434.491 473.559C434.28 473.744 434.025 473.889 433.728 473.995C433.43 474.097 433.087 474.149 432.697 474.149ZM433.323 472.642C433.644 472.642 433.928 472.578 434.174 472.452C434.42 472.322 434.613 472.148 434.753 471.929C434.893 471.711 434.963 471.463 434.963 471.186V470.351C434.895 470.395 434.801 470.436 434.681 470.474C434.565 470.508 434.433 470.54 434.286 470.571C434.139 470.598 433.992 470.624 433.846 470.648C433.699 470.668 433.565 470.687 433.446 470.704C433.189 470.742 432.966 470.802 432.774 470.884C432.583 470.966 432.434 471.077 432.328 471.217C432.222 471.353 432.169 471.524 432.169 471.729C432.169 472.027 432.277 472.254 432.492 472.411C432.711 472.565 432.988 472.642 433.323 472.642ZM440.534 474.133C440.196 474.133 439.906 474.014 439.663 473.774C439.424 473.532 439.304 473.241 439.304 472.903C439.304 472.568 439.424 472.281 439.663 472.042C439.906 471.803 440.196 471.683 440.534 471.683C440.862 471.683 441.149 471.803 441.396 472.042C441.642 472.281 441.765 472.568 441.765 472.903C441.765 473.129 441.706 473.335 441.59 473.523C441.478 473.708 441.329 473.856 441.144 473.969C440.96 474.079 440.757 474.133 440.534 474.133ZM440.534 468.618C440.196 468.618 439.906 468.498 439.663 468.259C439.424 468.02 439.304 467.73 439.304 467.388C439.304 467.053 439.424 466.768 439.663 466.532C439.906 466.293 440.196 466.173 440.534 466.173C440.862 466.173 441.149 466.293 441.396 466.532C441.642 466.768 441.765 467.053 441.765 467.388C441.765 467.617 441.706 467.825 441.59 468.013C441.478 468.198 441.329 468.345 441.144 468.454C440.96 468.563 440.757 468.618 440.534 468.618ZM451.403 474H448.164V463.503H451.547C452.565 463.503 453.436 463.713 454.161 464.133C454.885 464.55 455.44 465.15 455.827 465.932C456.213 466.711 456.406 467.644 456.406 468.731C456.406 469.824 456.211 470.766 455.821 471.555C455.432 472.341 454.865 472.946 454.12 473.37C453.375 473.79 452.469 474 451.403 474ZM449.435 472.872H451.321C452.189 472.872 452.908 472.705 453.479 472.37C454.05 472.035 454.475 471.558 454.755 470.94C455.036 470.321 455.176 469.585 455.176 468.731C455.176 467.883 455.037 467.154 454.76 466.542C454.484 465.927 454.07 465.456 453.52 465.127C452.97 464.796 452.285 464.63 451.465 464.63H449.435V472.872ZM460.017 469.264V474H458.807V463.503H460.017V467.357H460.119C460.304 466.951 460.581 466.628 460.95 466.388C461.322 466.146 461.818 466.024 462.436 466.024C462.973 466.024 463.442 466.132 463.846 466.347C464.249 466.559 464.561 466.886 464.784 467.326C465.009 467.764 465.122 468.321 465.122 468.997V474H463.912V469.079C463.912 468.454 463.75 467.971 463.425 467.629C463.104 467.284 462.658 467.111 462.088 467.111C461.691 467.111 461.336 467.195 461.021 467.362C460.71 467.53 460.464 467.774 460.283 468.095C460.106 468.416 460.017 468.806 460.017 469.264ZM467.768 474V466.127H468.937V467.316H469.019C469.162 466.927 469.422 466.611 469.798 466.368C470.174 466.125 470.597 466.004 471.069 466.004C471.158 466.004 471.269 466.006 471.402 466.009C471.535 466.013 471.636 466.018 471.704 466.024V467.255C471.663 467.244 471.569 467.229 471.423 467.208C471.279 467.185 471.127 467.173 470.966 467.173C470.584 467.173 470.242 467.253 469.941 467.414C469.644 467.571 469.408 467.789 469.234 468.07C469.063 468.346 468.978 468.662 468.978 469.018V474H467.768ZM475.888 474.185C475.389 474.185 474.936 474.091 474.53 473.903C474.123 473.711 473.8 473.436 473.561 473.077C473.322 472.715 473.202 472.278 473.202 471.765C473.202 471.314 473.291 470.949 473.469 470.668C473.647 470.385 473.884 470.163 474.181 470.002C474.479 469.841 474.807 469.722 475.165 469.643C475.528 469.561 475.892 469.496 476.257 469.448C476.736 469.387 477.123 469.341 477.421 469.31C477.721 469.276 477.94 469.219 478.077 469.141C478.217 469.062 478.287 468.926 478.287 468.731V468.69C478.287 468.184 478.149 467.791 477.872 467.511C477.598 467.231 477.183 467.091 476.626 467.091C476.049 467.091 475.596 467.217 475.268 467.47C474.94 467.723 474.709 467.993 474.576 468.28L473.428 467.87C473.633 467.391 473.906 467.019 474.248 466.752C474.593 466.482 474.969 466.294 475.376 466.188C475.786 466.079 476.189 466.024 476.585 466.024C476.838 466.024 477.129 466.055 477.457 466.117C477.788 466.175 478.108 466.296 478.415 466.481C478.726 466.665 478.984 466.944 479.189 467.316C479.394 467.689 479.497 468.188 479.497 468.813V474H478.287V472.934H478.225C478.143 473.105 478.007 473.288 477.815 473.482C477.624 473.677 477.369 473.843 477.052 473.979C476.734 474.116 476.346 474.185 475.888 474.185ZM476.073 473.098C476.551 473.098 476.954 473.004 477.282 472.816C477.614 472.628 477.863 472.385 478.031 472.088C478.202 471.791 478.287 471.478 478.287 471.15V470.043C478.236 470.104 478.123 470.161 477.949 470.212C477.778 470.26 477.58 470.303 477.354 470.34C477.132 470.374 476.915 470.405 476.703 470.433C476.495 470.456 476.326 470.477 476.196 470.494C475.881 470.535 475.587 470.602 475.314 470.694C475.044 470.783 474.825 470.918 474.658 471.099C474.494 471.277 474.412 471.519 474.412 471.827C474.412 472.247 474.567 472.565 474.878 472.78C475.193 472.992 475.591 473.098 476.073 473.098ZM488.293 466.127L485.382 474H484.152L481.241 466.127H482.553L484.726 472.401H484.808L486.981 466.127H488.293ZM491.102 476.952C490.897 476.952 490.714 476.935 490.554 476.901C490.393 476.87 490.282 476.84 490.221 476.809L490.528 475.743C490.822 475.818 491.082 475.845 491.307 475.825C491.533 475.804 491.733 475.703 491.907 475.522C492.085 475.345 492.247 475.056 492.394 474.656L492.619 474.041L489.708 466.127H491.02L493.193 472.401H493.275L495.449 466.127H496.761L493.419 475.148C493.269 475.555 493.082 475.891 492.86 476.158C492.638 476.428 492.38 476.628 492.086 476.758C491.796 476.887 491.468 476.952 491.102 476.952ZM500.868 474.185C500.369 474.185 499.916 474.091 499.509 473.903C499.103 473.711 498.78 473.436 498.541 473.077C498.302 472.715 498.182 472.278 498.182 471.765C498.182 471.314 498.271 470.949 498.448 470.668C498.626 470.385 498.864 470.163 499.161 470.002C499.458 469.841 499.786 469.722 500.145 469.643C500.507 469.561 500.871 469.496 501.237 469.448C501.715 469.387 502.103 469.341 502.4 469.31C502.701 469.276 502.92 469.219 503.056 469.141C503.197 469.062 503.267 468.926 503.267 468.731V468.69C503.267 468.184 503.128 467.791 502.851 467.511C502.578 467.231 502.163 467.091 501.606 467.091C501.028 467.091 500.576 467.217 500.248 467.47C499.92 467.723 499.689 467.993 499.556 468.28L498.407 467.87C498.612 467.391 498.886 467.019 499.228 466.752C499.573 466.482 499.949 466.294 500.355 466.188C500.765 466.079 501.168 466.024 501.565 466.024C501.818 466.024 502.108 466.055 502.436 466.117C502.768 466.175 503.087 466.296 503.395 466.481C503.706 466.665 503.964 466.944 504.169 467.316C504.374 467.689 504.476 468.188 504.476 468.813V474H503.267V472.934H503.205C503.123 473.105 502.986 473.288 502.795 473.482C502.604 473.677 502.349 473.843 502.031 473.979C501.713 474.116 501.326 474.185 500.868 474.185ZM501.052 473.098C501.531 473.098 501.934 473.004 502.262 472.816C502.593 472.628 502.843 472.385 503.01 472.088C503.181 471.791 503.267 471.478 503.267 471.15V470.043C503.215 470.104 503.103 470.161 502.928 470.212C502.757 470.26 502.559 470.303 502.334 470.34C502.112 470.374 501.895 470.405 501.683 470.433C501.474 470.456 501.305 470.477 501.175 470.494C500.861 470.535 500.567 470.602 500.294 470.694C500.024 470.783 499.805 470.918 499.638 471.099C499.474 471.277 499.392 471.519 499.392 471.827C499.392 472.247 499.547 472.565 499.858 472.78C500.172 472.992 500.57 473.098 501.052 473.098ZM512.819 469.264V474H511.61V463.503H512.819V467.357H512.922C513.106 466.951 513.383 466.628 513.752 466.388C514.125 466.146 514.62 466.024 515.239 466.024C515.775 466.024 516.245 466.132 516.648 466.347C517.051 466.559 517.364 466.886 517.586 467.326C517.812 467.764 517.924 468.321 517.924 468.997V474H516.715V469.079C516.715 468.454 516.552 467.971 516.228 467.629C515.907 467.284 515.461 467.111 514.89 467.111C514.494 467.111 514.138 467.195 513.824 467.362C513.513 467.53 513.267 467.774 513.086 468.095C512.908 468.416 512.819 468.806 512.819 469.264ZM522.887 474.185C522.388 474.185 521.936 474.091 521.529 473.903C521.122 473.711 520.799 473.436 520.56 473.077C520.321 472.715 520.201 472.278 520.201 471.765C520.201 471.314 520.29 470.949 520.468 470.668C520.646 470.385 520.883 470.163 521.18 470.002C521.478 469.841 521.806 469.722 522.165 469.643C522.527 469.561 522.891 469.496 523.256 469.448C523.735 469.387 524.123 469.341 524.42 469.31C524.721 469.276 524.939 469.219 525.076 469.141C525.216 469.062 525.286 468.926 525.286 468.731V468.69C525.286 468.184 525.148 467.791 524.871 467.511C524.598 467.231 524.182 467.091 523.625 467.091C523.048 467.091 522.595 467.217 522.267 467.47C521.939 467.723 521.708 467.993 521.575 468.28L520.427 467.87C520.632 467.391 520.905 467.019 521.247 466.752C521.592 466.482 521.968 466.294 522.375 466.188C522.785 466.079 523.188 466.024 523.584 466.024C523.837 466.024 524.128 466.055 524.456 466.117C524.787 466.175 525.107 466.296 525.414 466.481C525.725 466.665 525.983 466.944 526.188 467.316C526.393 467.689 526.496 468.188 526.496 468.813V474H525.286V472.934H525.225C525.143 473.105 525.006 473.288 524.815 473.482C524.623 473.677 524.369 473.843 524.051 473.979C523.733 474.116 523.345 474.185 522.887 474.185ZM523.072 473.098C523.55 473.098 523.953 473.004 524.281 472.816C524.613 472.628 524.862 472.385 525.03 472.088C525.201 471.791 525.286 471.478 525.286 471.15V470.043C525.235 470.104 525.122 470.161 524.948 470.212C524.777 470.26 524.579 470.303 524.353 470.34C524.131 470.374 523.914 470.405 523.702 470.433C523.494 470.456 523.325 470.477 523.195 470.494C522.88 470.535 522.587 470.602 522.313 470.694C522.043 470.783 521.825 470.918 521.657 471.099C521.493 471.277 521.411 471.519 521.411 471.827C521.411 472.247 521.567 472.565 521.878 472.78C522.192 472.992 522.59 473.098 523.072 473.098ZM534.713 467.89L533.627 468.198C533.558 468.017 533.458 467.841 533.324 467.67C533.194 467.496 533.017 467.352 532.791 467.239C532.566 467.126 532.277 467.07 531.925 467.07C531.443 467.07 531.042 467.181 530.72 467.403C530.403 467.622 530.244 467.9 530.244 468.239C530.244 468.539 530.353 468.777 530.572 468.951C530.791 469.125 531.132 469.271 531.597 469.387L532.766 469.674C533.47 469.845 533.994 470.106 534.339 470.458C534.684 470.807 534.857 471.256 534.857 471.806C534.857 472.257 534.727 472.66 534.467 473.016C534.211 473.371 533.852 473.651 533.391 473.856C532.93 474.062 532.393 474.164 531.781 474.164C530.978 474.164 530.314 473.99 529.788 473.641C529.261 473.293 528.928 472.784 528.788 472.114L529.936 471.827C530.046 472.25 530.252 472.568 530.556 472.78C530.864 472.992 531.265 473.098 531.761 473.098C532.325 473.098 532.772 472.978 533.104 472.739C533.439 472.496 533.606 472.206 533.606 471.868C533.606 471.594 533.511 471.365 533.319 471.181C533.128 470.993 532.834 470.853 532.438 470.761L531.125 470.453C530.404 470.282 529.875 470.017 529.536 469.659C529.202 469.296 529.034 468.844 529.034 468.3C529.034 467.856 529.159 467.463 529.408 467.121C529.661 466.78 530.005 466.511 530.439 466.317C530.876 466.122 531.371 466.024 531.925 466.024C532.704 466.024 533.316 466.195 533.76 466.537C534.208 466.879 534.525 467.33 534.713 467.89ZM543.387 474L540.988 466.127H542.259L543.961 472.155H544.043L545.724 466.127H547.016L548.677 472.134H548.759L550.46 466.127H551.732L549.333 474H548.144L546.421 467.952H546.298L544.576 474H543.387ZM556.694 474.164C555.984 474.164 555.36 473.995 554.824 473.657C554.291 473.318 553.874 472.845 553.573 472.237C553.276 471.629 553.127 470.918 553.127 470.104C553.127 469.284 553.276 468.569 553.573 467.957C553.874 467.345 554.291 466.87 554.824 466.532C555.36 466.194 555.984 466.024 556.694 466.024C557.405 466.024 558.027 466.194 558.56 466.532C559.097 466.87 559.514 467.345 559.811 467.957C560.112 468.569 560.262 469.284 560.262 470.104C560.262 470.918 560.112 471.629 559.811 472.237C559.514 472.845 559.097 473.318 558.56 473.657C558.027 473.995 557.405 474.164 556.694 474.164ZM556.694 473.077C557.234 473.077 557.679 472.939 558.027 472.662C558.376 472.385 558.634 472.021 558.801 471.57C558.969 471.119 559.052 470.631 559.052 470.104C559.052 469.578 558.969 469.088 558.801 468.633C558.634 468.179 558.376 467.812 558.027 467.531C557.679 467.251 557.234 467.111 556.694 467.111C556.155 467.111 555.71 467.251 555.362 467.531C555.013 467.812 554.755 468.179 554.588 468.633C554.42 469.088 554.337 469.578 554.337 470.104C554.337 470.631 554.42 471.119 554.588 471.57C554.755 472.021 555.013 472.385 555.362 472.662C555.71 472.939 556.155 473.077 556.694 473.077ZM562.541 474V466.127H563.71V467.316H563.792C563.936 466.927 564.195 466.611 564.571 466.368C564.947 466.125 565.371 466.004 565.842 466.004C565.931 466.004 566.042 466.006 566.176 466.009C566.309 466.013 566.41 466.018 566.478 466.024V467.255C566.437 467.244 566.343 467.229 566.196 467.208C566.053 467.185 565.9 467.173 565.74 467.173C565.357 467.173 565.015 467.253 564.715 467.414C564.417 467.571 564.182 467.789 564.007 468.07C563.837 468.346 563.751 468.662 563.751 469.018V474H562.541ZM569.473 471.13L569.452 469.633H569.698L573.142 466.127H574.639L570.969 469.838H570.867L569.473 471.13ZM568.345 474V463.503H569.555V474H568.345ZM573.348 474L570.272 470.104L571.133 469.264L574.885 474H573.348ZM579.606 474.164C578.847 474.164 578.193 473.997 577.643 473.662C577.096 473.323 576.674 472.852 576.377 472.247C576.083 471.639 575.936 470.931 575.936 470.125C575.936 469.319 576.083 468.608 576.377 467.993C576.674 467.374 577.087 466.892 577.617 466.547C578.15 466.199 578.772 466.024 579.483 466.024C579.893 466.024 580.298 466.093 580.698 466.229C581.097 466.366 581.461 466.588 581.789 466.896C582.117 467.2 582.379 467.603 582.574 468.105C582.768 468.608 582.866 469.226 582.866 469.961V470.474H576.797V469.428H581.636C581.636 468.984 581.547 468.587 581.369 468.239C581.195 467.89 580.945 467.615 580.621 467.414C580.3 467.212 579.92 467.111 579.483 467.111C579.001 467.111 578.584 467.231 578.232 467.47C577.884 467.706 577.615 468.013 577.427 468.393C577.24 468.772 577.146 469.178 577.146 469.612V470.31C577.146 470.904 577.248 471.408 577.453 471.822C577.662 472.232 577.95 472.544 578.319 472.76C578.688 472.971 579.117 473.077 579.606 473.077C579.924 473.077 580.211 473.033 580.467 472.944C580.727 472.852 580.95 472.715 581.138 472.534C581.326 472.35 581.472 472.121 581.574 471.847L582.743 472.175C582.62 472.572 582.413 472.92 582.123 473.221C581.832 473.518 581.473 473.751 581.046 473.918C580.619 474.082 580.139 474.164 579.606 474.164ZM588.112 474.164C587.456 474.164 586.876 473.998 586.374 473.667C585.872 473.332 585.479 472.86 585.195 472.252C584.912 471.64 584.77 470.918 584.77 470.084C584.77 469.257 584.912 468.539 585.195 467.931C585.479 467.323 585.874 466.853 586.379 466.522C586.885 466.19 587.469 466.024 588.132 466.024C588.645 466.024 589.05 466.11 589.347 466.281C589.648 466.448 589.877 466.64 590.034 466.855C590.195 467.067 590.319 467.241 590.408 467.378H590.511V463.503H591.72V474H590.552V472.79H590.408C590.319 472.934 590.193 473.115 590.029 473.334C589.865 473.549 589.631 473.742 589.327 473.913C589.022 474.08 588.618 474.164 588.112 474.164ZM588.276 473.077C588.761 473.077 589.171 472.951 589.506 472.698C589.841 472.442 590.095 472.088 590.27 471.637C590.444 471.183 590.531 470.658 590.531 470.063C590.531 469.476 590.446 468.961 590.275 468.521C590.104 468.076 589.851 467.731 589.516 467.485C589.181 467.236 588.768 467.111 588.276 467.111C587.763 467.111 587.336 467.243 586.994 467.506C586.656 467.765 586.402 468.119 586.231 468.567C586.063 469.011 585.98 469.51 585.98 470.063C585.98 470.624 586.065 471.133 586.236 471.591C586.41 472.045 586.666 472.408 587.005 472.678C587.346 472.944 587.77 473.077 588.276 473.077ZM602.228 474.164C601.517 474.164 600.893 473.995 600.357 473.657C599.824 473.318 599.407 472.845 599.106 472.237C598.809 471.629 598.66 470.918 598.66 470.104C598.66 469.284 598.809 468.569 599.106 467.957C599.407 467.345 599.824 466.87 600.357 466.532C600.893 466.194 601.517 466.024 602.228 466.024C602.938 466.024 603.56 466.194 604.093 466.532C604.63 466.87 605.047 467.345 605.344 467.957C605.645 468.569 605.795 469.284 605.795 470.104C605.795 470.918 605.645 471.629 605.344 472.237C605.047 472.845 604.63 473.318 604.093 473.657C603.56 473.995 602.938 474.164 602.228 474.164ZM602.228 473.077C602.768 473.077 603.212 472.939 603.56 472.662C603.909 472.385 604.167 472.021 604.334 471.57C604.502 471.119 604.585 470.631 604.585 470.104C604.585 469.578 604.502 469.088 604.334 468.633C604.167 468.179 603.909 467.812 603.56 467.531C603.212 467.251 602.768 467.111 602.228 467.111C601.688 467.111 601.244 467.251 600.895 467.531C600.546 467.812 600.288 468.179 600.121 468.633C599.954 469.088 599.87 469.578 599.87 470.104C599.87 470.631 599.954 471.119 600.121 471.57C600.288 472.021 600.546 472.385 600.895 472.662C601.244 472.939 601.688 473.077 602.228 473.077ZM609.284 469.264V474H608.075V466.127H609.243V467.357H609.346C609.53 466.957 609.811 466.636 610.186 466.394C610.562 466.147 611.048 466.024 611.642 466.024C612.175 466.024 612.642 466.134 613.041 466.353C613.441 466.568 613.752 466.896 613.974 467.337C614.196 467.774 614.307 468.328 614.307 468.997V474H613.098V469.079C613.098 468.461 612.937 467.979 612.616 467.634C612.295 467.285 611.854 467.111 611.294 467.111C610.907 467.111 610.562 467.195 610.258 467.362C609.957 467.53 609.72 467.774 609.546 468.095C609.371 468.416 609.284 468.806 609.284 469.264ZM621.443 474V466.127H622.612V467.357H622.715C622.879 466.937 623.143 466.611 623.509 466.378C623.875 466.142 624.314 466.024 624.826 466.024C625.346 466.024 625.778 466.142 626.123 466.378C626.472 466.611 626.743 466.937 626.938 467.357H627.02C627.222 466.951 627.524 466.628 627.927 466.388C628.331 466.146 628.814 466.024 629.378 466.024C630.082 466.024 630.658 466.245 631.105 466.686C631.553 467.123 631.777 467.805 631.777 468.731V474H630.567V468.731C630.567 468.15 630.408 467.735 630.09 467.485C629.773 467.236 629.398 467.111 628.968 467.111C628.414 467.111 627.985 467.279 627.681 467.613C627.377 467.945 627.225 468.365 627.225 468.874V474H625.995V468.608C625.995 468.16 625.85 467.8 625.559 467.526C625.269 467.25 624.895 467.111 624.437 467.111C624.122 467.111 623.829 467.195 623.555 467.362C623.285 467.53 623.067 467.762 622.899 468.059C622.735 468.353 622.653 468.693 622.653 469.079V474H621.443ZM639.383 470.781V466.127H640.593V474H639.383V472.667H639.301C639.117 473.067 638.83 473.407 638.44 473.687C638.05 473.964 637.558 474.103 636.964 474.103C636.472 474.103 636.034 473.995 635.652 473.78C635.269 473.561 634.968 473.233 634.75 472.795C634.531 472.355 634.422 471.799 634.422 471.13V466.127H635.631V471.048C635.631 471.622 635.792 472.08 636.113 472.421C636.438 472.763 636.851 472.934 637.353 472.934C637.654 472.934 637.96 472.857 638.271 472.703C638.585 472.549 638.848 472.314 639.06 471.996C639.276 471.678 639.383 471.273 639.383 470.781ZM644.451 463.503V474H643.241V463.503H644.451ZM650.524 466.127V467.152H646.444V466.127H650.524ZM647.633 464.241H648.842V471.745C648.842 472.086 648.892 472.343 648.991 472.514C649.094 472.681 649.223 472.794 649.381 472.852C649.541 472.907 649.71 472.934 649.888 472.934C650.021 472.934 650.131 472.927 650.216 472.913C650.301 472.896 650.37 472.883 650.421 472.872L650.667 473.959C650.585 473.99 650.471 474.021 650.324 474.051C650.177 474.085 649.991 474.103 649.765 474.103C649.423 474.103 649.088 474.029 648.76 473.882C648.436 473.735 648.166 473.511 647.95 473.211C647.739 472.91 647.633 472.531 647.633 472.073V464.241ZM652.776 474V466.127H653.986V474H652.776ZM653.391 464.815C653.156 464.815 652.952 464.735 652.781 464.574C652.614 464.413 652.53 464.22 652.53 463.995C652.53 463.769 652.614 463.576 652.781 463.416C652.952 463.255 653.156 463.175 653.391 463.175C653.627 463.175 653.829 463.255 653.996 463.416C654.167 463.576 654.252 463.769 654.252 463.995C654.252 464.22 654.167 464.413 653.996 464.574C653.829 464.735 653.627 464.815 653.391 464.815ZM656.634 476.952V466.127H657.803V467.378H657.947C658.035 467.241 658.158 467.067 658.316 466.855C658.476 466.64 658.705 466.448 659.003 466.281C659.303 466.11 659.71 466.024 660.222 466.024C660.885 466.024 661.47 466.19 661.975 466.522C662.481 466.853 662.876 467.323 663.159 467.931C663.443 468.539 663.585 469.257 663.585 470.084C663.585 470.918 663.443 471.64 663.159 472.252C662.876 472.86 662.483 473.332 661.981 473.667C661.478 473.998 660.899 474.164 660.243 474.164C659.737 474.164 659.332 474.08 659.028 473.913C658.724 473.742 658.49 473.549 658.326 473.334C658.162 473.115 658.035 472.934 657.947 472.79H657.844V476.952H656.634ZM657.824 470.063C657.824 470.658 657.911 471.183 658.085 471.637C658.259 472.088 658.514 472.442 658.849 472.698C659.184 472.951 659.594 473.077 660.079 473.077C660.585 473.077 661.007 472.944 661.345 472.678C661.687 472.408 661.943 472.045 662.114 471.591C662.288 471.133 662.375 470.624 662.375 470.063C662.375 469.51 662.29 469.011 662.119 468.567C661.951 468.119 661.697 467.765 661.355 467.506C661.017 467.243 660.591 467.111 660.079 467.111C659.587 467.111 659.173 467.236 658.838 467.485C658.504 467.731 658.251 468.076 658.08 468.521C657.909 468.961 657.824 469.476 657.824 470.063ZM667.073 463.503V474H665.863V463.503H667.073ZM673.022 474.164C672.264 474.164 671.609 473.997 671.059 473.662C670.512 473.323 670.09 472.852 669.793 472.247C669.499 471.639 669.352 470.931 669.352 470.125C669.352 469.319 669.499 468.608 669.793 467.993C670.09 467.374 670.504 466.892 671.034 466.547C671.567 466.199 672.188 466.024 672.899 466.024C673.309 466.024 673.714 466.093 674.114 466.229C674.514 466.366 674.878 466.588 675.206 466.896C675.534 467.2 675.795 467.603 675.99 468.105C676.185 468.608 676.282 469.226 676.282 469.961V470.474H670.213V469.428H675.052C675.052 468.984 674.963 468.587 674.785 468.239C674.611 467.89 674.362 467.615 674.037 467.414C673.716 467.212 673.337 467.111 672.899 467.111C672.417 467.111 672.001 467.231 671.649 467.47C671.3 467.706 671.032 468.013 670.844 468.393C670.656 468.772 670.562 469.178 670.562 469.612V470.31C670.562 470.904 670.664 471.408 670.869 471.822C671.078 472.232 671.367 472.544 671.736 472.76C672.105 472.971 672.534 473.077 673.022 473.077C673.34 473.077 673.627 473.033 673.883 472.944C674.143 472.852 674.367 472.715 674.555 472.534C674.743 472.35 674.888 472.121 674.991 471.847L676.159 472.175C676.036 472.572 675.829 472.92 675.539 473.221C675.249 473.518 674.89 473.751 674.463 473.918C674.035 474.082 673.555 474.164 673.022 474.164ZM683.642 474H682.31L686.164 463.503H687.476L691.331 474H689.998L686.861 465.163H686.779L683.642 474ZM684.134 469.899H689.506V471.027H684.134V469.899ZM694.67 463.503V474H693.399V463.503H694.67ZM701.998 468.936V470.063H697.406V468.936H701.998ZM704.56 474V466.127H705.729V467.316H705.811C705.954 466.927 706.214 466.611 706.59 466.368C706.966 466.125 707.389 466.004 707.861 466.004C707.95 466.004 708.061 466.006 708.194 466.009C708.327 466.013 708.428 466.018 708.496 466.024V467.255C708.455 467.244 708.361 467.229 708.215 467.208C708.071 467.185 707.919 467.173 707.758 467.173C707.376 467.173 707.034 467.253 706.733 467.414C706.436 467.571 706.2 467.789 706.026 468.07C705.855 468.346 705.77 468.662 705.77 469.018V474H704.56ZM713.425 474.164C712.666 474.164 712.012 473.997 711.462 473.662C710.915 473.323 710.493 472.852 710.196 472.247C709.902 471.639 709.755 470.931 709.755 470.125C709.755 469.319 709.902 468.608 710.196 467.993C710.493 467.374 710.906 466.892 711.436 466.547C711.969 466.199 712.591 466.024 713.302 466.024C713.712 466.024 714.117 466.093 714.516 466.229C714.916 466.366 715.28 466.588 715.608 466.896C715.936 467.2 716.198 467.603 716.392 468.105C716.587 468.608 716.685 469.226 716.685 469.961V470.474H710.616V469.428H715.454C715.454 468.984 715.366 468.587 715.188 468.239C715.014 467.89 714.764 467.615 714.44 467.414C714.118 467.212 713.739 467.111 713.302 467.111C712.82 467.111 712.403 467.231 712.051 467.47C711.702 467.706 711.434 468.013 711.246 468.393C711.058 468.772 710.964 469.178 710.964 469.612V470.31C710.964 470.904 711.067 471.408 711.272 471.822C711.48 472.232 711.769 472.544 712.138 472.76C712.507 472.971 712.936 473.077 713.425 473.077C713.742 473.077 714.029 473.033 714.286 472.944C714.545 472.852 714.769 472.715 714.957 472.534C715.145 472.35 715.29 472.121 715.393 471.847L716.562 472.175C716.439 472.572 716.232 472.92 715.941 473.221C715.651 473.518 715.292 473.751 714.865 473.918C714.438 474.082 713.958 474.164 713.425 474.164ZM720.167 463.503V474H718.958V463.503H720.167ZM725.133 474.185C724.634 474.185 724.181 474.091 723.774 473.903C723.368 473.711 723.045 473.436 722.806 473.077C722.566 472.715 722.447 472.278 722.447 471.765C722.447 471.314 722.536 470.949 722.713 470.668C722.891 470.385 723.129 470.163 723.426 470.002C723.723 469.841 724.051 469.722 724.41 469.643C724.772 469.561 725.136 469.496 725.502 469.448C725.98 469.387 726.368 469.341 726.665 469.31C726.966 469.276 727.185 469.219 727.321 469.141C727.462 469.062 727.532 468.926 727.532 468.731V468.69C727.532 468.184 727.393 467.791 727.116 467.511C726.843 467.231 726.428 467.091 725.871 467.091C725.293 467.091 724.841 467.217 724.513 467.47C724.184 467.723 723.954 467.993 723.821 468.28L722.672 467.87C722.877 467.391 723.151 467.019 723.493 466.752C723.838 466.482 724.214 466.294 724.62 466.188C725.03 466.079 725.433 466.024 725.83 466.024C726.083 466.024 726.373 466.055 726.701 466.117C727.033 466.175 727.352 466.296 727.66 466.481C727.971 466.665 728.229 466.944 728.434 467.316C728.639 467.689 728.741 468.188 728.741 468.813V474H727.532V472.934H727.47C727.388 473.105 727.251 473.288 727.06 473.482C726.869 473.677 726.614 473.843 726.296 473.979C725.978 474.116 725.591 474.185 725.133 474.185ZM725.317 473.098C725.796 473.098 726.199 473.004 726.527 472.816C726.858 472.628 727.108 472.385 727.275 472.088C727.446 471.791 727.532 471.478 727.532 471.15V470.043C727.48 470.104 727.368 470.161 727.193 470.212C727.022 470.26 726.824 470.303 726.599 470.34C726.377 470.374 726.16 470.405 725.948 470.433C725.739 470.456 725.57 470.477 725.44 470.494C725.126 470.535 724.832 470.602 724.559 470.694C724.289 470.783 724.07 470.918 723.903 471.099C723.739 471.277 723.657 471.519 723.657 471.827C723.657 472.247 723.812 472.565 724.123 472.78C724.437 472.992 724.835 473.098 725.317 473.098ZM734.806 466.127V467.152H730.726V466.127H734.806ZM731.915 464.241H733.125V471.745C733.125 472.086 733.174 472.343 733.273 472.514C733.376 472.681 733.506 472.794 733.663 472.852C733.824 472.907 733.993 472.934 734.17 472.934C734.304 472.934 734.413 472.927 734.499 472.913C734.584 472.896 734.652 472.883 734.704 472.872L734.95 473.959C734.868 473.99 734.753 474.021 734.606 474.051C734.459 474.085 734.273 474.103 734.047 474.103C733.706 474.103 733.371 474.029 733.043 473.882C732.718 473.735 732.448 473.511 732.233 473.211C732.021 472.91 731.915 472.531 731.915 472.073V464.241ZM740.275 474.164C739.516 474.164 738.862 473.997 738.312 473.662C737.765 473.323 737.343 472.852 737.046 472.247C736.752 471.639 736.605 470.931 736.605 470.125C736.605 469.319 736.752 468.608 737.046 467.993C737.343 467.374 737.757 466.892 738.286 466.547C738.819 466.199 739.441 466.024 740.152 466.024C740.562 466.024 740.967 466.093 741.367 466.229C741.767 466.366 742.131 466.588 742.459 466.896C742.787 467.2 743.048 467.603 743.243 468.105C743.438 468.608 743.535 469.226 743.535 469.961V470.474H737.466V469.428H742.305C742.305 468.984 742.216 468.587 742.038 468.239C741.864 467.89 741.615 467.615 741.29 467.414C740.969 467.212 740.589 467.111 740.152 467.111C739.67 467.111 739.253 467.231 738.901 467.47C738.553 467.706 738.285 468.013 738.097 468.393C737.909 468.772 737.815 469.178 737.815 469.612V470.31C737.815 470.904 737.917 471.408 738.122 471.822C738.331 472.232 738.619 472.544 738.989 472.76C739.358 472.971 739.786 473.077 740.275 473.077C740.593 473.077 740.88 473.033 741.136 472.944C741.396 472.852 741.62 472.715 741.808 472.534C741.996 472.35 742.141 472.121 742.243 471.847L743.412 472.175C743.289 472.572 743.082 472.92 742.792 473.221C742.501 473.518 742.142 473.751 741.715 473.918C741.288 474.082 740.808 474.164 740.275 474.164ZM748.781 474.164C748.125 474.164 747.546 473.998 747.043 473.667C746.541 473.332 746.148 472.86 745.864 472.252C745.581 471.64 745.439 470.918 745.439 470.084C745.439 469.257 745.581 468.539 745.864 467.931C746.148 467.323 746.543 466.853 747.048 466.522C747.554 466.19 748.139 466.024 748.801 466.024C749.314 466.024 749.719 466.11 750.016 466.281C750.317 466.448 750.546 466.64 750.703 466.855C750.864 467.067 750.988 467.241 751.077 467.378H751.18V463.503H752.389V474H751.221V472.79H751.077C750.988 472.934 750.862 473.115 750.698 473.334C750.534 473.549 750.3 473.742 749.996 473.913C749.692 474.08 749.287 474.164 748.781 474.164ZM748.945 473.077C749.43 473.077 749.84 472.951 750.175 472.698C750.51 472.442 750.765 472.088 750.939 471.637C751.113 471.183 751.2 470.658 751.2 470.063C751.2 469.476 751.115 468.961 750.944 468.521C750.773 468.076 750.52 467.731 750.185 467.485C749.851 467.236 749.437 467.111 748.945 467.111C748.432 467.111 748.005 467.243 747.664 467.506C747.325 467.765 747.071 468.119 746.9 468.567C746.732 469.011 746.649 469.51 746.649 470.063C746.649 470.624 746.734 471.133 746.905 471.591C747.079 472.045 747.336 472.408 747.674 472.678C748.016 472.944 748.439 473.077 748.945 473.077ZM759.698 476.952V466.127H760.867V467.378H761.011C761.099 467.241 761.222 467.067 761.38 466.855C761.54 466.64 761.769 466.448 762.066 466.281C762.367 466.11 762.774 466.024 763.286 466.024C763.949 466.024 764.534 466.19 765.039 466.522C765.545 466.853 765.94 467.323 766.223 467.931C766.507 468.539 766.649 469.257 766.649 470.084C766.649 470.918 766.507 471.64 766.223 472.252C765.94 472.86 765.547 473.332 765.044 473.667C764.542 473.998 763.963 474.164 763.307 474.164C762.801 474.164 762.396 474.08 762.092 473.913C761.788 473.742 761.554 473.549 761.39 473.334C761.226 473.115 761.099 472.934 761.011 472.79H760.908V476.952H759.698ZM760.888 470.063C760.888 470.658 760.975 471.183 761.149 471.637C761.323 472.088 761.578 472.442 761.913 472.698C762.248 472.951 762.658 473.077 763.143 473.077C763.649 473.077 764.071 472.944 764.409 472.678C764.751 472.408 765.007 472.045 765.178 471.591C765.352 471.133 765.439 470.624 765.439 470.063C765.439 469.51 765.354 469.011 765.183 468.567C765.015 468.119 764.761 467.765 764.419 467.506C764.081 467.243 763.655 467.111 763.143 467.111C762.651 467.111 762.237 467.236 761.902 467.485C761.568 467.731 761.315 468.076 761.144 468.521C760.973 468.961 760.888 469.476 760.888 470.063ZM768.927 474V466.127H770.096V467.316H770.178C770.321 466.927 770.581 466.611 770.957 466.368C771.333 466.125 771.756 466.004 772.228 466.004C772.317 466.004 772.428 466.006 772.561 466.009C772.694 466.013 772.795 466.018 772.864 466.024V467.255C772.823 467.244 772.729 467.229 772.582 467.208C772.438 467.185 772.286 467.173 772.125 467.173C771.743 467.173 771.401 467.253 771.1 467.414C770.803 467.571 770.567 467.789 770.393 468.07C770.222 468.346 770.137 468.662 770.137 469.018V474H768.927ZM777.689 474.164C776.979 474.164 776.355 473.995 775.818 473.657C775.285 473.318 774.868 472.845 774.568 472.237C774.27 471.629 774.122 470.918 774.122 470.104C774.122 469.284 774.27 468.569 774.568 467.957C774.868 467.345 775.285 466.87 775.818 466.532C776.355 466.194 776.979 466.024 777.689 466.024C778.4 466.024 779.022 466.194 779.555 466.532C780.092 466.87 780.508 467.345 780.806 467.957C781.106 468.569 781.257 469.284 781.257 470.104C781.257 470.918 781.106 471.629 780.806 472.237C780.508 472.845 780.092 473.318 779.555 473.657C779.022 473.995 778.4 474.164 777.689 474.164ZM777.689 473.077C778.229 473.077 778.673 472.939 779.022 472.662C779.371 472.385 779.628 472.021 779.796 471.57C779.963 471.119 780.047 470.631 780.047 470.104C780.047 469.578 779.963 469.088 779.796 468.633C779.628 468.179 779.371 467.812 779.022 467.531C778.673 467.251 778.229 467.111 777.689 467.111C777.149 467.111 776.705 467.251 776.357 467.531C776.008 467.812 775.75 468.179 775.583 468.633C775.415 469.088 775.331 469.578 775.331 470.104C775.331 470.631 775.415 471.119 775.583 471.57C775.75 472.021 776.008 472.385 776.357 472.662C776.705 472.939 777.149 473.077 777.689 473.077ZM783.536 466.127H784.746V474.574C784.746 475.059 784.662 475.48 784.495 475.835C784.331 476.19 784.081 476.465 783.746 476.66C783.415 476.855 782.996 476.952 782.491 476.952C782.45 476.952 782.409 476.952 782.368 476.952C782.327 476.952 782.286 476.952 782.245 476.952V475.825C782.286 475.825 782.323 475.825 782.357 475.825C782.392 475.825 782.429 475.825 782.47 475.825C782.839 475.825 783.109 475.715 783.28 475.497C783.451 475.281 783.536 474.974 783.536 474.574V466.127ZM784.131 464.815C783.895 464.815 783.692 464.735 783.521 464.574C783.353 464.413 783.27 464.22 783.27 463.995C783.27 463.769 783.353 463.576 783.521 463.416C783.692 463.255 783.895 463.175 784.131 463.175C784.367 463.175 784.568 463.255 784.736 463.416C784.907 463.576 784.992 463.769 784.992 463.995C784.992 464.22 784.907 464.413 784.736 464.574C784.568 464.735 784.367 464.815 784.131 464.815ZM790.695 474.164C789.937 474.164 789.282 473.997 788.732 473.662C788.186 473.323 787.764 472.852 787.466 472.247C787.172 471.639 787.025 470.931 787.025 470.125C787.025 469.319 787.172 468.608 787.466 467.993C787.764 467.374 788.177 466.892 788.707 466.547C789.24 466.199 789.862 466.024 790.572 466.024C790.982 466.024 791.387 466.093 791.787 466.229C792.187 466.366 792.551 466.588 792.879 466.896C793.207 467.2 793.468 467.603 793.663 468.105C793.858 468.608 793.955 469.226 793.955 469.961V470.474H787.887V469.428H792.725C792.725 468.984 792.636 468.587 792.459 468.239C792.284 467.89 792.035 467.615 791.71 467.414C791.389 467.212 791.01 467.111 790.572 467.111C790.091 467.111 789.674 467.231 789.322 467.47C788.973 467.706 788.705 468.013 788.517 468.393C788.329 468.772 788.235 469.178 788.235 469.612V470.31C788.235 470.904 788.338 471.408 788.543 471.822C788.751 472.232 789.04 472.544 789.409 472.76C789.778 472.971 790.207 473.077 790.695 473.077C791.013 473.077 791.3 473.033 791.557 472.944C791.816 472.852 792.04 472.715 792.228 472.534C792.416 472.35 792.561 472.121 792.664 471.847L793.832 472.175C793.709 472.572 793.503 472.92 793.212 473.221C792.922 473.518 792.563 473.751 792.136 473.918C791.709 474.082 791.229 474.164 790.695 474.164ZM799.427 474.164C798.689 474.164 798.053 473.99 797.52 473.641C796.987 473.293 796.577 472.813 796.29 472.201C796.003 471.589 795.859 470.89 795.859 470.104C795.859 469.305 796.006 468.599 796.3 467.988C796.598 467.373 797.011 466.892 797.541 466.547C798.074 466.199 798.696 466.024 799.406 466.024C799.96 466.024 800.459 466.127 800.903 466.332C801.347 466.537 801.711 466.824 801.995 467.193C802.278 467.562 802.454 467.993 802.523 468.485H801.313C801.221 468.126 801.016 467.808 800.698 467.531C800.384 467.251 799.96 467.111 799.427 467.111C798.955 467.111 798.542 467.234 798.186 467.48C797.835 467.723 797.559 468.066 797.361 468.51C797.166 468.951 797.069 469.469 797.069 470.063C797.069 470.672 797.165 471.201 797.356 471.652C797.551 472.104 797.824 472.454 798.176 472.703C798.532 472.953 798.948 473.077 799.427 473.077C799.741 473.077 800.027 473.023 800.283 472.913C800.539 472.804 800.756 472.647 800.934 472.442C801.112 472.237 801.238 471.991 801.313 471.704H802.523C802.454 472.168 802.285 472.587 802.015 472.959C801.749 473.329 801.395 473.622 800.954 473.841C800.517 474.056 800.008 474.164 799.427 474.164ZM808.148 466.127V467.152H804.068V466.127H808.148ZM805.257 464.241H806.467V471.745C806.467 472.086 806.516 472.343 806.616 472.514C806.718 472.681 806.848 472.794 807.005 472.852C807.166 472.907 807.335 472.934 807.513 472.934C807.646 472.934 807.755 472.927 807.841 472.913C807.926 472.896 807.994 472.883 808.046 472.872L808.292 473.959C808.21 473.99 808.095 474.021 807.948 474.051C807.801 474.085 807.615 474.103 807.39 474.103C807.048 474.103 806.713 474.029 806.385 473.882C806.06 473.735 805.79 473.511 805.575 473.211C805.363 472.91 805.257 472.531 805.257 472.073V464.241ZM815.837 467.89L814.75 468.198C814.682 468.017 814.581 467.841 814.447 467.67C814.318 467.496 814.14 467.352 813.914 467.239C813.689 467.126 813.4 467.07 813.048 467.07C812.566 467.07 812.165 467.181 811.844 467.403C811.526 467.622 811.367 467.9 811.367 468.239C811.367 468.539 811.476 468.777 811.695 468.951C811.914 469.125 812.255 469.271 812.72 469.387L813.889 469.674C814.593 469.845 815.117 470.106 815.462 470.458C815.807 470.807 815.98 471.256 815.98 471.806C815.98 472.257 815.85 472.66 815.59 473.016C815.334 473.371 814.975 473.651 814.514 473.856C814.053 474.062 813.516 474.164 812.905 474.164C812.102 474.164 811.437 473.99 810.911 473.641C810.385 473.293 810.051 472.784 809.911 472.114L811.059 471.827C811.169 472.25 811.375 472.568 811.68 472.78C811.987 472.992 812.389 473.098 812.884 473.098C813.448 473.098 813.896 472.978 814.227 472.739C814.562 472.496 814.729 472.206 814.729 471.868C814.729 471.594 814.634 471.365 814.442 471.181C814.251 470.993 813.957 470.853 813.561 470.761L812.249 470.453C811.528 470.282 810.998 470.017 810.66 469.659C810.325 469.296 810.157 468.844 810.157 468.3C810.157 467.856 810.282 467.463 810.531 467.121C810.784 466.78 811.128 466.511 811.562 466.317C811.999 466.122 812.495 466.024 813.048 466.024C813.827 466.024 814.439 466.195 814.883 466.537C815.331 466.879 815.649 467.33 815.837 467.89ZM823.936 463.503V474H822.726V463.503H823.936ZM826.585 474V466.127H827.794V474H826.585ZM827.2 464.815C826.964 464.815 826.761 464.735 826.59 464.574C826.422 464.413 826.339 464.22 826.339 463.995C826.339 463.769 826.422 463.576 826.59 463.416C826.761 463.255 826.964 463.175 827.2 463.175C827.436 463.175 827.637 463.255 827.805 463.416C827.975 463.576 828.061 463.769 828.061 463.995C828.061 464.22 827.975 464.413 827.805 464.574C827.637 464.735 827.436 464.815 827.2 464.815ZM831.571 471.13L831.55 469.633H831.796L835.241 466.127H836.737L833.067 469.838H832.965L831.571 471.13ZM830.443 474V463.503H831.653V474H830.443ZM835.446 474L832.37 470.104L833.231 469.264L836.983 474H835.446ZM841.704 474.164C840.945 474.164 840.291 473.997 839.741 473.662C839.194 473.323 838.772 472.852 838.475 472.247C838.181 471.639 838.034 470.931 838.034 470.125C838.034 469.319 838.181 468.608 838.475 467.993C838.772 467.374 839.186 466.892 839.715 466.547C840.248 466.199 840.87 466.024 841.581 466.024C841.991 466.024 842.396 466.093 842.796 466.229C843.196 466.366 843.559 466.588 843.887 466.896C844.216 467.2 844.477 467.603 844.672 468.105C844.866 468.608 844.964 469.226 844.964 469.961V470.474H838.895V469.428H843.734C843.734 468.984 843.645 468.587 843.467 468.239C843.293 467.89 843.043 467.615 842.719 467.414C842.398 467.212 842.018 467.111 841.581 467.111C841.099 467.111 840.682 467.231 840.33 467.47C839.982 467.706 839.713 468.013 839.526 468.393C839.338 468.772 839.244 469.178 839.244 469.612V470.31C839.244 470.904 839.346 471.408 839.551 471.822C839.76 472.232 840.048 472.544 840.417 472.76C840.786 472.971 841.215 473.077 841.704 473.077C842.022 473.077 842.309 473.033 842.565 472.944C842.825 472.852 843.049 472.715 843.237 472.534C843.424 472.35 843.57 472.121 843.672 471.847L844.841 472.175C844.718 472.572 844.511 472.92 844.221 473.221C843.93 473.518 843.571 473.751 843.144 473.918C842.717 474.082 842.237 474.164 841.704 474.164ZM860.218 463.503V474H858.987L853.267 465.758H853.165V474H851.894V463.503H853.124L858.864 471.765H858.967V463.503H860.218ZM866.229 474.164C865.518 474.164 864.894 473.995 864.358 473.657C863.825 473.318 863.408 472.845 863.107 472.237C862.81 471.629 862.661 470.918 862.661 470.104C862.661 469.284 862.81 468.569 863.107 467.957C863.408 467.345 863.825 466.87 864.358 466.532C864.894 466.194 865.518 466.024 866.229 466.024C866.939 466.024 867.561 466.194 868.094 466.532C868.631 466.87 869.048 467.345 869.345 467.957C869.646 468.569 869.796 469.284 869.796 470.104C869.796 470.918 869.646 471.629 869.345 472.237C869.048 472.845 868.631 473.318 868.094 473.657C867.561 473.995 866.939 474.164 866.229 474.164ZM866.229 473.077C866.769 473.077 867.213 472.939 867.561 472.662C867.91 472.385 868.168 472.021 868.335 471.57C868.503 471.119 868.586 470.631 868.586 470.104C868.586 469.578 868.503 469.088 868.335 468.633C868.168 468.179 867.91 467.812 867.561 467.531C867.213 467.251 866.769 467.111 866.229 467.111C865.689 467.111 865.244 467.251 864.896 467.531C864.547 467.812 864.289 468.179 864.122 468.633C863.955 469.088 863.871 469.578 863.871 470.104C863.871 470.631 863.955 471.119 864.122 471.57C864.289 472.021 864.547 472.385 864.896 472.662C865.244 472.939 865.689 473.077 866.229 473.077ZM875.5 466.127V467.152H871.42V466.127H875.5ZM872.609 464.241H873.818V471.745C873.818 472.086 873.868 472.343 873.967 472.514C874.07 472.681 874.199 472.794 874.357 472.852C874.517 472.907 874.686 472.934 874.864 472.934C874.997 472.934 875.107 472.927 875.192 472.913C875.277 472.896 875.346 472.883 875.397 472.872L875.643 473.959C875.561 473.99 875.447 474.021 875.3 474.051C875.153 474.085 874.966 474.103 874.741 474.103C874.399 474.103 874.064 474.029 873.736 473.882C873.412 473.735 873.142 473.511 872.926 473.211C872.715 472.91 872.609 472.531 872.609 472.073V464.241ZM881.176 466.127V467.152H877.096V466.127H881.176ZM878.285 464.241H879.495V471.745C879.495 472.086 879.544 472.343 879.644 472.514C879.746 472.681 879.876 472.794 880.033 472.852C880.194 472.907 880.363 472.934 880.541 472.934C880.674 472.934 880.783 472.927 880.869 472.913C880.954 472.896 881.022 472.883 881.074 472.872L881.32 473.959C881.238 473.99 881.123 474.021 880.976 474.051C880.829 474.085 880.643 474.103 880.418 474.103C880.076 474.103 879.741 474.029 879.413 473.882C879.088 473.735 878.818 473.511 878.603 473.211C878.391 472.91 878.285 472.531 878.285 472.073V464.241ZM884.208 476.952C884.003 476.952 883.82 476.935 883.659 476.901C883.499 476.87 883.388 476.84 883.326 476.809L883.634 475.743C883.928 475.818 884.187 475.845 884.413 475.825C884.638 475.804 884.838 475.703 885.013 475.522C885.19 475.345 885.353 475.056 885.5 474.656L885.725 474.041L882.814 466.127H884.126L886.299 472.401H886.381L888.554 466.127H889.867L886.525 475.148C886.374 475.555 886.188 475.891 885.966 476.158C885.744 476.428 885.486 476.628 885.192 476.758C884.902 476.887 884.573 476.952 884.208 476.952ZM900.899 468.936V470.063H896.307V468.936H900.899ZM910.27 474.185C909.771 474.185 909.318 474.091 908.912 473.903C908.505 473.711 908.182 473.436 907.943 473.077C907.704 472.715 907.584 472.278 907.584 471.765C907.584 471.314 907.673 470.949 907.851 470.668C908.029 470.385 908.266 470.163 908.563 470.002C908.861 469.841 909.189 469.722 909.547 469.643C909.91 469.561 910.274 469.496 910.639 469.448C911.118 469.387 911.505 469.341 911.803 469.31C912.103 469.276 912.322 469.219 912.459 469.141C912.599 469.062 912.669 468.926 912.669 468.731V468.69C912.669 468.184 912.531 467.791 912.254 467.511C911.98 467.231 911.565 467.091 911.008 467.091C910.431 467.091 909.978 467.217 909.65 467.47C909.322 467.723 909.091 467.993 908.958 468.28L907.81 467.87C908.015 467.391 908.288 467.019 908.63 466.752C908.975 466.482 909.351 466.294 909.758 466.188C910.168 466.079 910.571 466.024 910.967 466.024C911.22 466.024 911.511 466.055 911.839 466.117C912.17 466.175 912.49 466.296 912.797 466.481C913.108 466.665 913.366 466.944 913.571 467.316C913.776 467.689 913.879 468.188 913.879 468.813V474H912.669V472.934H912.607C912.525 473.105 912.389 473.288 912.197 473.482C912.006 473.677 911.751 473.843 911.434 473.979C911.116 474.116 910.728 474.185 910.27 474.185ZM910.455 473.098C910.933 473.098 911.336 473.004 911.664 472.816C911.996 472.628 912.245 472.385 912.413 472.088C912.584 471.791 912.669 471.478 912.669 471.15V470.043C912.618 470.104 912.505 470.161 912.331 470.212C912.16 470.26 911.962 470.303 911.736 470.34C911.514 470.374 911.297 470.405 911.085 470.433C910.877 470.456 910.708 470.477 910.578 470.494C910.263 470.535 909.969 470.602 909.696 470.694C909.426 470.783 909.207 470.918 909.04 471.099C908.876 471.277 908.794 471.519 908.794 471.827C908.794 472.247 908.949 472.565 909.26 472.78C909.575 472.992 909.973 473.098 910.455 473.098ZM926.589 467.89L925.502 468.198C925.434 468.017 925.333 467.841 925.2 467.67C925.07 467.496 924.892 467.352 924.667 467.239C924.441 467.126 924.152 467.07 923.8 467.07C923.319 467.07 922.917 467.181 922.596 467.403C922.278 467.622 922.119 467.9 922.119 468.239C922.119 468.539 922.229 468.777 922.447 468.951C922.666 469.125 923.008 469.271 923.472 469.387L924.641 469.674C925.345 469.845 925.869 470.106 926.215 470.458C926.56 470.807 926.732 471.256 926.732 471.806C926.732 472.257 926.602 472.66 926.343 473.016C926.086 473.371 925.728 473.651 925.266 473.856C924.805 474.062 924.269 474.164 923.657 474.164C922.854 474.164 922.189 473.99 921.663 473.641C921.137 473.293 920.804 472.784 920.664 472.114L921.812 471.827C921.921 472.25 922.128 472.568 922.432 472.78C922.739 472.992 923.141 473.098 923.636 473.098C924.2 473.098 924.648 472.978 924.979 472.739C925.314 472.496 925.482 472.206 925.482 471.868C925.482 471.594 925.386 471.365 925.195 471.181C925.003 470.993 924.709 470.853 924.313 470.761L923.001 470.453C922.28 470.282 921.75 470.017 921.412 469.659C921.077 469.296 920.91 468.844 920.91 468.3C920.91 467.856 921.034 467.463 921.284 467.121C921.537 466.78 921.88 466.511 922.314 466.317C922.751 466.122 923.247 466.024 923.8 466.024C924.58 466.024 925.191 466.195 925.635 466.537C926.083 466.879 926.401 467.33 926.589 467.89ZM928.986 474V466.127H930.155V467.357H930.257C930.421 466.937 930.686 466.611 931.052 466.378C931.417 466.142 931.857 466.024 932.369 466.024C932.889 466.024 933.321 466.142 933.666 466.378C934.014 466.611 934.286 466.937 934.481 467.357H934.563C934.764 466.951 935.067 466.628 935.47 466.388C935.873 466.146 936.357 466.024 936.921 466.024C937.625 466.024 938.2 466.245 938.648 466.686C939.096 467.123 939.32 467.805 939.32 468.731V474H938.11V468.731C938.11 468.15 937.951 467.735 937.633 467.485C937.315 467.236 936.941 467.111 936.511 467.111C935.957 467.111 935.528 467.279 935.224 467.613C934.92 467.945 934.768 468.365 934.768 468.874V474H933.538V468.608C933.538 468.16 933.393 467.8 933.102 467.526C932.812 467.25 932.437 467.111 931.98 467.111C931.665 467.111 931.371 467.195 931.098 467.362C930.828 467.53 930.609 467.762 930.442 468.059C930.278 468.353 930.196 468.693 930.196 469.079V474H928.986ZM944.281 474.185C943.782 474.185 943.329 474.091 942.923 473.903C942.516 473.711 942.193 473.436 941.954 473.077C941.715 472.715 941.595 472.278 941.595 471.765C941.595 471.314 941.684 470.949 941.862 470.668C942.039 470.385 942.277 470.163 942.574 470.002C942.872 469.841 943.2 469.722 943.558 469.643C943.921 469.561 944.284 469.496 944.65 469.448C945.129 469.387 945.516 469.341 945.814 469.31C946.114 469.276 946.333 469.219 946.47 469.141C946.61 469.062 946.68 468.926 946.68 468.731V468.69C946.68 468.184 946.541 467.791 946.265 467.511C945.991 467.231 945.576 467.091 945.019 467.091C944.442 467.091 943.989 467.217 943.661 467.47C943.333 467.723 943.102 467.993 942.969 468.28L941.821 467.87C942.026 467.391 942.299 467.019 942.641 466.752C942.986 466.482 943.362 466.294 943.768 466.188C944.179 466.079 944.582 466.024 944.978 466.024C945.231 466.024 945.521 466.055 945.85 466.117C946.181 466.175 946.5 466.296 946.808 466.481C947.119 466.665 947.377 466.944 947.582 467.316C947.787 467.689 947.89 468.188 947.89 468.813V474H946.68V472.934H946.618C946.536 473.105 946.4 473.288 946.208 473.482C946.017 473.677 945.762 473.843 945.445 473.979C945.127 474.116 944.739 474.185 944.281 474.185ZM944.466 473.098C944.944 473.098 945.347 473.004 945.675 472.816C946.007 472.628 946.256 472.385 946.424 472.088C946.594 471.791 946.68 471.478 946.68 471.15V470.043C946.629 470.104 946.516 470.161 946.342 470.212C946.171 470.26 945.973 470.303 945.747 470.34C945.525 470.374 945.308 470.405 945.096 470.433C944.888 470.456 944.718 470.477 944.589 470.494C944.274 470.535 943.98 470.602 943.707 470.694C943.437 470.783 943.218 470.918 943.051 471.099C942.887 471.277 942.805 471.519 942.805 471.827C942.805 472.247 942.96 472.565 943.271 472.78C943.586 472.992 943.984 473.098 944.466 473.098ZM950.53 474V466.127H951.699V467.316H951.781C951.925 466.927 952.184 466.611 952.56 466.368C952.936 466.125 953.36 466.004 953.831 466.004C953.92 466.004 954.031 466.006 954.165 466.009C954.298 466.013 954.399 466.018 954.467 466.024V467.255C954.426 467.244 954.332 467.229 954.185 467.208C954.041 467.185 953.889 467.173 953.729 467.173C953.346 467.173 953.004 467.253 952.704 467.414C952.406 467.571 952.171 467.789 951.996 468.07C951.826 468.346 951.74 468.662 951.74 469.018V474H950.53ZM960.251 466.127V467.152H956.171V466.127H960.251ZM957.36 464.241H958.57V471.745C958.57 472.086 958.619 472.343 958.719 472.514C958.821 472.681 958.951 472.794 959.108 472.852C959.269 472.907 959.438 472.934 959.616 472.934C959.749 472.934 959.858 472.927 959.944 472.913C960.029 472.896 960.097 472.883 960.149 472.872L960.395 473.959C960.313 473.99 960.198 474.021 960.051 474.051C959.904 474.085 959.718 474.103 959.493 474.103C959.151 474.103 958.816 474.029 958.488 473.882C958.163 473.735 957.893 473.511 957.678 473.211C957.466 472.91 957.36 472.531 957.36 472.073V464.241ZM379.317 489.264V494H378.107V486.127H379.276V487.357H379.378C379.563 486.957 379.843 486.636 380.219 486.394C380.595 486.147 381.08 486.024 381.675 486.024C382.208 486.024 382.674 486.134 383.074 486.353C383.474 486.568 383.785 486.896 384.007 487.337C384.229 487.774 384.34 488.328 384.34 488.997V494H383.13V489.079C383.13 488.461 382.97 487.979 382.648 487.634C382.327 487.285 381.886 487.111 381.326 487.111C380.94 487.111 380.595 487.195 380.291 487.362C379.99 487.53 379.752 487.774 379.578 488.095C379.404 488.416 379.317 488.806 379.317 489.264ZM390.182 494.164C389.471 494.164 388.847 493.995 388.311 493.657C387.778 493.318 387.361 492.845 387.06 492.237C386.763 491.629 386.614 490.918 386.614 490.104C386.614 489.284 386.763 488.569 387.06 487.957C387.361 487.345 387.778 486.87 388.311 486.532C388.847 486.194 389.471 486.024 390.182 486.024C390.893 486.024 391.514 486.194 392.048 486.532C392.584 486.87 393.001 487.345 393.298 487.957C393.599 488.569 393.749 489.284 393.749 490.104C393.749 490.918 393.599 491.629 393.298 492.237C393.001 492.845 392.584 493.318 392.048 493.657C391.514 493.995 390.893 494.164 390.182 494.164ZM390.182 493.077C390.722 493.077 391.166 492.939 391.514 492.662C391.863 492.385 392.121 492.021 392.288 491.57C392.456 491.119 392.54 490.631 392.54 490.104C392.54 489.578 392.456 489.088 392.288 488.633C392.121 488.179 391.863 487.812 391.514 487.531C391.166 487.251 390.722 487.111 390.182 487.111C389.642 487.111 389.198 487.251 388.849 487.531C388.501 487.812 388.243 488.179 388.075 488.633C387.908 489.088 387.824 489.578 387.824 490.104C387.824 490.631 387.908 491.119 388.075 491.57C388.243 492.021 388.501 492.385 388.849 492.662C389.198 492.939 389.642 493.077 390.182 493.077ZM399.453 486.127V487.152H395.373V486.127H399.453ZM396.562 484.241H397.772V491.745C397.772 492.086 397.821 492.343 397.92 492.514C398.023 492.681 398.153 492.794 398.31 492.852C398.47 492.907 398.639 492.934 398.817 492.934C398.95 492.934 399.06 492.927 399.145 492.913C399.231 492.896 399.299 492.883 399.35 492.872L399.596 493.959C399.514 493.99 399.4 494.021 399.253 494.051C399.106 494.085 398.92 494.103 398.694 494.103C398.352 494.103 398.018 494.029 397.69 493.882C397.365 493.735 397.095 493.511 396.88 493.211C396.668 492.91 396.562 492.531 396.562 492.073V484.241ZM404.922 494.164C404.163 494.164 403.509 493.997 402.959 493.662C402.412 493.323 401.99 492.852 401.693 492.247C401.399 491.639 401.252 490.931 401.252 490.125C401.252 489.319 401.399 488.608 401.693 487.993C401.99 487.374 402.403 486.892 402.933 486.547C403.466 486.199 404.088 486.024 404.799 486.024C405.209 486.024 405.614 486.093 406.013 486.229C406.413 486.366 406.777 486.588 407.105 486.896C407.433 487.2 407.695 487.603 407.889 488.105C408.084 488.608 408.182 489.226 408.182 489.961V490.474H402.113V489.428H406.951C406.951 488.984 406.863 488.587 406.685 488.239C406.511 487.89 406.261 487.615 405.937 487.414C405.615 487.212 405.236 487.111 404.799 487.111C404.317 487.111 403.9 487.231 403.548 487.47C403.2 487.706 402.931 488.013 402.743 488.393C402.555 488.772 402.461 489.178 402.461 489.612V490.31C402.461 490.904 402.564 491.408 402.769 491.822C402.977 492.232 403.266 492.544 403.635 492.76C404.004 492.971 404.433 493.077 404.922 493.077C405.24 493.077 405.527 493.033 405.783 492.944C406.043 492.852 406.266 492.715 406.454 492.534C406.642 492.35 406.787 492.121 406.89 491.847L408.059 492.175C407.936 492.572 407.729 492.92 407.438 493.221C407.148 493.518 406.789 493.751 406.362 493.918C405.935 494.082 405.455 494.164 404.922 494.164ZM418.248 494.164C417.49 494.164 416.835 493.997 416.285 493.662C415.738 493.323 415.316 492.852 415.019 492.247C414.725 491.639 414.578 490.931 414.578 490.125C414.578 489.319 414.725 488.608 415.019 487.993C415.316 487.374 415.73 486.892 416.259 486.547C416.793 486.199 417.414 486.024 418.125 486.024C418.535 486.024 418.94 486.093 419.34 486.229C419.74 486.366 420.104 486.588 420.432 486.896C420.76 487.2 421.021 487.603 421.216 488.105C421.411 488.608 421.508 489.226 421.508 489.961V490.474H415.439V489.428H420.278C420.278 488.984 420.189 488.587 420.011 488.239C419.837 487.89 419.588 487.615 419.263 487.414C418.942 487.212 418.563 487.111 418.125 487.111C417.643 487.111 417.227 487.231 416.875 487.47C416.526 487.706 416.258 488.013 416.07 488.393C415.882 488.772 415.788 489.178 415.788 489.612V490.31C415.788 490.904 415.89 491.408 416.095 491.822C416.304 492.232 416.593 492.544 416.962 492.76C417.331 492.971 417.76 493.077 418.248 493.077C418.566 493.077 418.853 493.033 419.109 492.944C419.369 492.852 419.593 492.715 419.781 492.534C419.969 492.35 420.114 492.121 420.216 491.847L421.385 492.175C421.262 492.572 421.055 492.92 420.765 493.221C420.474 493.518 420.116 493.751 419.689 493.918C419.261 494.082 418.781 494.164 418.248 494.164ZM426.754 494.164C426.098 494.164 425.519 493.998 425.017 493.667C424.514 493.332 424.121 492.86 423.838 492.252C423.554 491.64 423.412 490.918 423.412 490.084C423.412 489.257 423.554 488.539 423.838 487.931C424.121 487.323 424.516 486.853 425.022 486.522C425.527 486.19 426.112 486.024 426.775 486.024C427.287 486.024 427.692 486.11 427.989 486.281C428.29 486.448 428.519 486.64 428.676 486.855C428.837 487.067 428.962 487.241 429.05 487.378H429.153V483.503H430.363V494H429.194V492.79H429.05C428.962 492.934 428.835 493.115 428.671 493.334C428.507 493.549 428.273 493.742 427.969 493.913C427.665 494.08 427.26 494.164 426.754 494.164ZM426.918 493.077C427.403 493.077 427.813 492.951 428.148 492.698C428.483 492.442 428.738 492.088 428.912 491.637C429.086 491.183 429.173 490.658 429.173 490.063C429.173 489.476 429.088 488.961 428.917 488.521C428.746 488.076 428.493 487.731 428.159 487.485C427.824 487.236 427.41 487.111 426.918 487.111C426.406 487.111 425.978 487.243 425.637 487.506C425.298 487.765 425.044 488.119 424.873 488.567C424.706 489.011 424.622 489.51 424.622 490.063C424.622 490.624 424.707 491.133 424.878 491.591C425.052 492.045 425.309 492.408 425.647 492.678C425.989 492.944 426.412 493.077 426.918 493.077ZM433.179 494V486.127H434.389V494H433.179ZM433.794 484.815C433.558 484.815 433.355 484.735 433.184 484.574C433.017 484.413 432.933 484.22 432.933 483.995C432.933 483.769 433.017 483.576 433.184 483.416C433.355 483.255 433.558 483.175 433.794 483.175C434.03 483.175 434.232 483.255 434.399 483.416C434.57 483.576 434.655 483.769 434.655 483.995C434.655 484.22 434.57 484.413 434.399 484.574C434.232 484.735 434.03 484.815 433.794 484.815ZM440.461 486.127V487.152H436.381V486.127H440.461ZM437.57 484.241H438.78V491.745C438.78 492.086 438.83 492.343 438.929 492.514C439.031 492.681 439.161 492.794 439.318 492.852C439.479 492.907 439.648 492.934 439.826 492.934C439.959 492.934 440.068 492.927 440.154 492.913C440.239 492.896 440.308 492.883 440.359 492.872L440.605 493.959C440.523 493.99 440.408 494.021 440.261 494.051C440.114 494.085 439.928 494.103 439.703 494.103C439.361 494.103 439.026 494.029 438.698 493.882C438.373 493.735 438.103 493.511 437.888 493.211C437.676 492.91 437.57 492.531 437.57 492.073V484.241ZM445.828 494.164C445.117 494.164 444.493 493.995 443.957 493.657C443.424 493.318 443.007 492.845 442.706 492.237C442.409 491.629 442.26 490.918 442.26 490.104C442.26 489.284 442.409 488.569 442.706 487.957C443.007 487.345 443.424 486.87 443.957 486.532C444.493 486.194 445.117 486.024 445.828 486.024C446.539 486.024 447.16 486.194 447.693 486.532C448.23 486.87 448.647 487.345 448.944 487.957C449.245 488.569 449.395 489.284 449.395 490.104C449.395 490.918 449.245 491.629 448.944 492.237C448.647 492.845 448.23 493.318 447.693 493.657C447.16 493.995 446.539 494.164 445.828 494.164ZM445.828 493.077C446.368 493.077 446.812 492.939 447.16 492.662C447.509 492.385 447.767 492.021 447.934 491.57C448.102 491.119 448.186 490.631 448.186 490.104C448.186 489.578 448.102 489.088 447.934 488.633C447.767 488.179 447.509 487.812 447.16 487.531C446.812 487.251 446.368 487.111 445.828 487.111C445.288 487.111 444.844 487.251 444.495 487.531C444.147 487.812 443.889 488.179 443.721 488.633C443.554 489.088 443.47 489.578 443.47 490.104C443.47 490.631 443.554 491.119 443.721 491.57C443.889 492.021 444.147 492.385 444.495 492.662C444.844 492.939 445.288 493.077 445.828 493.077ZM451.675 494V486.127H452.843V487.316H452.925C453.069 486.927 453.329 486.611 453.704 486.368C454.08 486.125 454.504 486.004 454.976 486.004C455.065 486.004 455.176 486.006 455.309 486.009C455.442 486.013 455.543 486.018 455.611 486.024V487.255C455.57 487.244 455.476 487.229 455.329 487.208C455.186 487.185 455.034 487.173 454.873 487.173C454.49 487.173 454.149 487.253 453.848 487.414C453.551 487.571 453.315 487.789 453.141 488.07C452.97 488.346 452.884 488.662 452.884 489.018V494H451.675ZM458.38 492.565L458.298 493.118C458.24 493.508 458.151 493.925 458.032 494.369C457.916 494.813 457.794 495.232 457.668 495.625C457.541 496.018 457.437 496.33 457.355 496.563H456.433C456.477 496.344 456.535 496.055 456.607 495.697C456.679 495.338 456.75 494.936 456.822 494.492C456.897 494.051 456.959 493.6 457.007 493.139L457.068 492.565H458.38ZM465.711 483.503H467.228L470.796 492.216H470.919L474.486 483.503H476.003V494H474.814V486.024H474.712L471.431 494H470.283L467.003 486.024H466.9V494H465.711V483.503ZM481.138 494.185C480.639 494.185 480.186 494.091 479.78 493.903C479.373 493.711 479.05 493.436 478.811 493.077C478.572 492.715 478.452 492.278 478.452 491.765C478.452 491.314 478.541 490.949 478.719 490.668C478.896 490.385 479.134 490.163 479.431 490.002C479.728 489.841 480.056 489.722 480.415 489.643C480.777 489.561 481.141 489.496 481.507 489.448C481.985 489.387 482.373 489.341 482.67 489.31C482.971 489.276 483.19 489.219 483.327 489.141C483.467 489.062 483.537 488.926 483.537 488.731V488.69C483.537 488.184 483.398 487.791 483.122 487.511C482.848 487.231 482.433 487.091 481.876 487.091C481.299 487.091 480.846 487.217 480.518 487.47C480.19 487.723 479.959 487.993 479.826 488.28L478.678 487.87C478.883 487.391 479.156 487.019 479.498 486.752C479.843 486.482 480.219 486.294 480.625 486.188C481.035 486.079 481.439 486.024 481.835 486.024C482.088 486.024 482.378 486.055 482.706 486.117C483.038 486.175 483.357 486.296 483.665 486.481C483.976 486.665 484.234 486.944 484.439 487.316C484.644 487.689 484.746 488.188 484.746 488.813V494H483.537V492.934H483.475C483.393 493.105 483.257 493.288 483.065 493.482C482.874 493.677 482.619 493.843 482.301 493.979C481.984 494.116 481.596 494.185 481.138 494.185ZM481.322 493.098C481.801 493.098 482.204 493.004 482.532 492.816C482.864 492.628 483.113 492.385 483.28 492.088C483.451 491.791 483.537 491.478 483.537 491.15V490.043C483.485 490.104 483.373 490.161 483.198 490.212C483.028 490.26 482.829 490.303 482.604 490.34C482.382 490.374 482.165 490.405 481.953 490.433C481.744 490.456 481.575 490.477 481.445 490.494C481.131 490.535 480.837 490.602 480.564 490.694C480.294 490.783 480.075 490.918 479.908 491.099C479.744 491.277 479.662 491.519 479.662 491.827C479.662 492.247 479.817 492.565 480.128 492.78C480.443 492.992 480.841 493.098 481.322 493.098ZM487.387 494V486.127H488.556V487.316H488.638C488.781 486.927 489.041 486.611 489.417 486.368C489.793 486.125 490.217 486.004 490.688 486.004C490.777 486.004 490.888 486.006 491.021 486.009C491.155 486.013 491.255 486.018 491.324 486.024V487.255C491.283 487.244 491.189 487.229 491.042 487.208C490.898 487.185 490.746 487.173 490.586 487.173C490.203 487.173 489.861 487.253 489.561 487.414C489.263 487.571 489.027 487.789 488.853 488.07C488.682 488.346 488.597 488.662 488.597 489.018V494H487.387ZM494.318 491.13L494.298 489.633H494.544L497.988 486.127H499.485L495.815 489.838H495.713L494.318 491.13ZM493.191 494V483.503H494.4V494H493.191ZM498.193 494L495.118 490.104L495.979 489.264L499.731 494H498.193ZM504.124 494.164C503.468 494.164 502.888 493.998 502.386 493.667C501.884 493.332 501.491 492.86 501.207 492.252C500.924 491.64 500.782 490.918 500.782 490.084C500.782 489.257 500.924 488.539 501.207 487.931C501.491 487.323 501.885 486.853 502.391 486.522C502.897 486.19 503.481 486.024 504.144 486.024C504.657 486.024 505.062 486.11 505.359 486.281C505.66 486.448 505.889 486.64 506.046 486.855C506.206 487.067 506.331 487.241 506.42 487.378H506.522V483.503H507.732V494H506.563V492.79H506.42C506.331 492.934 506.205 493.115 506.041 493.334C505.877 493.549 505.643 493.742 505.338 493.913C505.034 494.08 504.629 494.164 504.124 494.164ZM504.288 493.077C504.773 493.077 505.183 492.951 505.518 492.698C505.853 492.442 506.107 492.088 506.282 491.637C506.456 491.183 506.543 490.658 506.543 490.063C506.543 489.476 506.458 488.961 506.287 488.521C506.116 488.076 505.863 487.731 505.528 487.485C505.193 487.236 504.78 487.111 504.288 487.111C503.775 487.111 503.348 487.243 503.006 487.506C502.668 487.765 502.413 488.119 502.243 488.567C502.075 489.011 501.991 489.51 501.991 490.063C501.991 490.624 502.077 491.133 502.248 491.591C502.422 492.045 502.678 492.408 503.016 492.678C503.358 492.944 503.782 493.077 504.288 493.077ZM513.747 494.164C513.036 494.164 512.413 493.995 511.876 493.657C511.343 493.318 510.926 492.845 510.625 492.237C510.328 491.629 510.179 490.918 510.179 490.104C510.179 489.284 510.328 488.569 510.625 487.957C510.926 487.345 511.343 486.87 511.876 486.532C512.413 486.194 513.036 486.024 513.747 486.024C514.458 486.024 515.08 486.194 515.613 486.532C516.149 486.87 516.566 487.345 516.863 487.957C517.164 488.569 517.314 489.284 517.314 490.104C517.314 490.918 517.164 491.629 516.863 492.237C516.566 492.845 516.149 493.318 515.613 493.657C515.08 493.995 514.458 494.164 513.747 494.164ZM513.747 493.077C514.287 493.077 514.731 492.939 515.08 492.662C515.428 492.385 515.686 492.021 515.854 491.57C516.021 491.119 516.105 490.631 516.105 490.104C516.105 489.578 516.021 489.088 515.854 488.633C515.686 488.179 515.428 487.812 515.08 487.531C514.731 487.251 514.287 487.111 513.747 487.111C513.207 487.111 512.763 487.251 512.414 487.531C512.066 487.812 511.808 488.179 511.64 488.633C511.473 489.088 511.389 489.578 511.389 490.104C511.389 490.631 511.473 491.119 511.64 491.57C511.808 492.021 512.066 492.385 512.414 492.662C512.763 492.939 513.207 493.077 513.747 493.077ZM521.11 494L518.711 486.127H519.982L521.684 492.155H521.766L523.447 486.127H524.739L526.4 492.134H526.482L528.183 486.127H529.454L527.056 494H525.866L524.144 487.952H524.021L522.299 494H521.11ZM532.696 489.264V494H531.487V486.127H532.655V487.357H532.758C532.942 486.957 533.223 486.636 533.598 486.394C533.974 486.147 534.46 486.024 535.054 486.024C535.587 486.024 536.054 486.134 536.453 486.353C536.853 486.568 537.164 486.896 537.386 487.337C537.608 487.774 537.719 488.328 537.719 488.997V494H536.51V489.079C536.51 488.461 536.349 487.979 536.028 487.634C535.707 487.285 535.266 487.111 534.706 487.111C534.319 487.111 533.974 487.195 533.67 487.362C533.369 487.53 533.132 487.774 532.958 488.095C532.783 488.416 532.696 488.806 532.696 489.264ZM543.664 494.164C542.905 494.164 542.251 493.997 541.701 493.662C541.154 493.323 540.732 492.852 540.435 492.247C540.141 491.639 539.994 490.931 539.994 490.125C539.994 489.319 540.141 488.608 540.435 487.993C540.732 487.374 541.145 486.892 541.675 486.547C542.208 486.199 542.83 486.024 543.541 486.024C543.951 486.024 544.356 486.093 544.756 486.229C545.155 486.366 545.519 486.588 545.847 486.896C546.175 487.2 546.437 487.603 546.632 488.105C546.826 488.608 546.924 489.226 546.924 489.961V490.474H540.855V489.428H545.694C545.694 488.984 545.605 488.587 545.427 488.239C545.253 487.89 545.003 487.615 544.679 487.414C544.358 487.212 543.978 487.111 543.541 487.111C543.059 487.111 542.642 487.231 542.29 487.47C541.942 487.706 541.673 488.013 541.485 488.393C541.298 488.772 541.204 489.178 541.204 489.612V490.31C541.204 490.904 541.306 491.408 541.511 491.822C541.72 492.232 542.008 492.544 542.377 492.76C542.746 492.971 543.175 493.077 543.664 493.077C543.982 493.077 544.269 493.033 544.525 492.944C544.785 492.852 545.008 492.715 545.196 492.534C545.384 492.35 545.53 492.121 545.632 491.847L546.801 492.175C546.678 492.572 546.471 492.92 546.181 493.221C545.89 493.518 545.531 493.751 545.104 493.918C544.677 494.082 544.197 494.164 543.664 494.164ZM549.197 494V486.127H550.366V487.316H550.448C550.591 486.927 550.851 486.611 551.227 486.368C551.603 486.125 552.026 486.004 552.498 486.004C552.587 486.004 552.698 486.006 552.831 486.009C552.964 486.013 553.065 486.018 553.133 486.024V487.255C553.092 487.244 552.998 487.229 552.851 487.208C552.708 487.185 552.556 487.173 552.395 487.173C552.013 487.173 551.671 487.253 551.37 487.414C551.073 487.571 550.837 487.789 550.663 488.07C550.492 488.346 550.407 488.662 550.407 489.018V494H549.197ZM564.003 488.936V490.063H559.411V488.936H564.003ZM573.374 494.185C572.875 494.185 572.423 494.091 572.016 493.903C571.609 493.711 571.286 493.436 571.047 493.077C570.808 492.715 570.688 492.278 570.688 491.765C570.688 491.314 570.777 490.949 570.955 490.668C571.133 490.385 571.37 490.163 571.667 490.002C571.965 489.841 572.293 489.722 572.652 489.643C573.014 489.561 573.378 489.496 573.743 489.448C574.222 489.387 574.61 489.341 574.907 489.31C575.208 489.276 575.426 489.219 575.563 489.141C575.703 489.062 575.773 488.926 575.773 488.731V488.69C575.773 488.184 575.635 487.791 575.358 487.511C575.084 487.231 574.669 487.091 574.112 487.091C573.535 487.091 573.082 487.217 572.754 487.47C572.426 487.723 572.195 487.993 572.062 488.28L570.914 487.87C571.119 487.391 571.392 487.019 571.734 486.752C572.079 486.482 572.455 486.294 572.862 486.188C573.272 486.079 573.675 486.024 574.071 486.024C574.324 486.024 574.615 486.055 574.943 486.117C575.274 486.175 575.594 486.296 575.901 486.481C576.212 486.665 576.47 486.944 576.675 487.316C576.88 487.689 576.983 488.188 576.983 488.813V494H575.773V492.934H575.712C575.63 493.105 575.493 493.288 575.301 493.482C575.11 493.677 574.856 493.843 574.538 493.979C574.22 494.116 573.832 494.185 573.374 494.185ZM573.559 493.098C574.037 493.098 574.44 493.004 574.768 492.816C575.1 492.628 575.349 492.385 575.517 492.088C575.688 491.791 575.773 491.478 575.773 491.15V490.043C575.722 490.104 575.609 490.161 575.435 490.212C575.264 490.26 575.066 490.303 574.84 490.34C574.618 490.374 574.401 490.405 574.189 490.433C573.981 490.456 573.812 490.477 573.682 490.494C573.367 490.535 573.074 490.602 572.8 490.694C572.53 490.783 572.312 490.918 572.144 491.099C571.98 491.277 571.898 491.519 571.898 491.827C571.898 492.247 572.054 492.565 572.364 492.78C572.679 492.992 573.077 493.098 573.559 493.098ZM585.9 494L583.501 486.127H584.772L586.474 492.155H586.556L588.237 486.127H589.529L591.19 492.134H591.272L592.973 486.127H594.244L591.846 494H590.656L588.934 487.952H588.811L587.089 494H585.9ZM599.31 494.164C598.551 494.164 597.897 493.997 597.347 493.662C596.8 493.323 596.378 492.852 596.081 492.247C595.787 491.639 595.64 490.931 595.64 490.125C595.64 489.319 595.787 488.608 596.081 487.993C596.378 487.374 596.791 486.892 597.321 486.547C597.854 486.199 598.476 486.024 599.187 486.024C599.597 486.024 600.002 486.093 600.402 486.229C600.801 486.366 601.165 486.588 601.493 486.896C601.821 487.2 602.083 487.603 602.278 488.105C602.472 488.608 602.57 489.226 602.57 489.961V490.474H596.501V489.428H601.34C601.34 488.984 601.251 488.587 601.073 488.239C600.899 487.89 600.649 487.615 600.325 487.414C600.003 487.212 599.624 487.111 599.187 487.111C598.705 487.111 598.288 487.231 597.936 487.47C597.588 487.706 597.319 488.013 597.131 488.393C596.943 488.772 596.849 489.178 596.849 489.612V490.31C596.849 490.904 596.952 491.408 597.157 491.822C597.365 492.232 597.654 492.544 598.023 492.76C598.392 492.971 598.821 493.077 599.31 493.077C599.628 493.077 599.915 493.033 600.171 492.944C600.431 492.852 600.654 492.715 600.842 492.534C601.03 492.35 601.176 492.121 601.278 491.847L602.447 492.175C602.324 492.572 602.117 492.92 601.826 493.221C601.536 493.518 601.177 493.751 600.75 493.918C600.323 494.082 599.843 494.164 599.31 494.164ZM605.007 494V483.503H606.216V487.378H606.319C606.408 487.241 606.531 487.067 606.688 486.855C606.849 486.64 607.078 486.448 607.375 486.281C607.676 486.11 608.082 486.024 608.595 486.024C609.258 486.024 609.842 486.19 610.348 486.522C610.854 486.853 611.248 487.323 611.532 487.931C611.815 488.539 611.957 489.257 611.957 490.084C611.957 490.918 611.815 491.64 611.532 492.252C611.248 492.86 610.855 493.332 610.353 493.667C609.851 493.998 609.271 494.164 608.615 494.164C608.11 494.164 607.705 494.08 607.401 493.913C607.096 493.742 606.862 493.549 606.698 493.334C606.534 493.115 606.408 492.934 606.319 492.79H606.175V494H605.007ZM606.196 490.063C606.196 490.658 606.283 491.183 606.457 491.637C606.632 492.088 606.886 492.442 607.221 492.698C607.556 492.951 607.966 493.077 608.451 493.077C608.957 493.077 609.379 492.944 609.717 492.678C610.059 492.408 610.315 492.045 610.486 491.591C610.66 491.133 610.748 490.624 610.748 490.063C610.748 489.51 610.662 489.011 610.491 488.567C610.324 488.119 610.069 487.765 609.728 487.506C609.389 487.243 608.964 487.111 608.451 487.111C607.959 487.111 607.546 487.236 607.211 487.485C606.876 487.731 606.623 488.076 606.452 488.521C606.281 488.961 606.196 489.476 606.196 490.063ZM619.817 487.89L618.731 488.198C618.662 488.017 618.562 487.841 618.428 487.67C618.298 487.496 618.121 487.352 617.895 487.239C617.67 487.126 617.381 487.07 617.029 487.07C616.547 487.07 616.146 487.181 615.824 487.403C615.507 487.622 615.348 487.9 615.348 488.239C615.348 488.539 615.457 488.777 615.676 488.951C615.894 489.125 616.236 489.271 616.701 489.387L617.87 489.674C618.574 489.845 619.098 490.106 619.443 490.458C619.788 490.807 619.961 491.256 619.961 491.806C619.961 492.257 619.831 492.66 619.571 493.016C619.315 493.371 618.956 493.651 618.495 493.856C618.034 494.062 617.497 494.164 616.885 494.164C616.082 494.164 615.418 493.99 614.892 493.641C614.365 493.293 614.032 492.784 613.892 492.114L615.04 491.827C615.15 492.25 615.356 492.568 615.66 492.78C615.968 492.992 616.369 493.098 616.865 493.098C617.429 493.098 617.876 492.978 618.208 492.739C618.543 492.496 618.71 492.206 618.71 491.868C618.71 491.594 618.615 491.365 618.423 491.181C618.232 490.993 617.938 490.853 617.542 490.761L616.229 490.453C615.508 490.282 614.979 490.017 614.64 489.659C614.306 489.296 614.138 488.844 614.138 488.3C614.138 487.856 614.263 487.463 614.512 487.121C614.765 486.78 615.109 486.511 615.543 486.317C615.98 486.122 616.475 486.024 617.029 486.024C617.808 486.024 618.42 486.195 618.864 486.537C619.312 486.879 619.629 487.33 619.817 487.89ZM622.215 494V486.127H623.424V494H622.215ZM622.83 484.815C622.594 484.815 622.391 484.735 622.22 484.574C622.052 484.413 621.969 484.22 621.969 483.995C621.969 483.769 622.052 483.576 622.22 483.416C622.391 483.255 622.594 483.175 622.83 483.175C623.066 483.175 623.267 483.255 623.435 483.416C623.606 483.576 623.691 483.769 623.691 483.995C623.691 484.22 623.606 484.413 623.435 484.574C623.267 484.735 623.066 484.815 622.83 484.815ZM629.497 486.127V487.152H625.417V486.127H629.497ZM626.606 484.241H627.816V491.745C627.816 492.086 627.865 492.343 627.964 492.514C628.067 492.681 628.197 492.794 628.354 492.852C628.515 492.907 628.684 492.934 628.861 492.934C628.995 492.934 629.104 492.927 629.189 492.913C629.275 492.896 629.343 492.883 629.394 492.872L629.64 493.959C629.558 493.99 629.444 494.021 629.297 494.051C629.15 494.085 628.964 494.103 628.738 494.103C628.397 494.103 628.062 494.029 627.734 493.882C627.409 493.735 627.139 493.511 626.924 493.211C626.712 492.91 626.606 492.531 626.606 492.073V484.241ZM634.966 494.164C634.207 494.164 633.553 493.997 633.003 493.662C632.456 493.323 632.034 492.852 631.737 492.247C631.443 491.639 631.296 490.931 631.296 490.125C631.296 489.319 631.443 488.608 631.737 487.993C632.034 487.374 632.448 486.892 632.977 486.547C633.51 486.199 634.132 486.024 634.843 486.024C635.253 486.024 635.658 486.093 636.058 486.229C636.457 486.366 636.821 486.588 637.149 486.896C637.477 487.2 637.739 487.603 637.934 488.105C638.128 488.608 638.226 489.226 638.226 489.961V490.474H632.157V489.428H636.996C636.996 488.984 636.907 488.587 636.729 488.239C636.555 487.89 636.305 487.615 635.981 487.414C635.66 487.212 635.28 487.111 634.843 487.111C634.361 487.111 633.944 487.231 633.592 487.47C633.244 487.706 632.975 488.013 632.788 488.393C632.6 488.772 632.506 489.178 632.506 489.612V490.31C632.506 490.904 632.608 491.408 632.813 491.822C633.022 492.232 633.31 492.544 633.679 492.76C634.048 492.971 634.477 493.077 634.966 493.077C635.284 493.077 635.571 493.033 635.827 492.944C636.087 492.852 636.311 492.715 636.498 492.534C636.686 492.35 636.832 492.121 636.934 491.847L638.103 492.175C637.98 492.572 637.773 492.92 637.483 493.221C637.192 493.518 636.833 493.751 636.406 493.918C635.979 494.082 635.499 494.164 634.966 494.164ZM648.415 486.127V487.152H644.335V486.127H648.415ZM645.525 484.241H646.734V491.745C646.734 492.086 646.784 492.343 646.883 492.514C646.985 492.681 647.115 492.794 647.272 492.852C647.433 492.907 647.602 492.934 647.78 492.934C647.913 492.934 648.022 492.927 648.108 492.913C648.193 492.896 648.262 492.883 648.313 492.872L648.559 493.959C648.477 493.99 648.362 494.021 648.216 494.051C648.069 494.085 647.882 494.103 647.657 494.103C647.315 494.103 646.98 494.029 646.652 493.882C646.328 493.735 646.058 493.511 645.842 493.211C645.631 492.91 645.525 492.531 645.525 492.073V484.241ZM653.782 494.164C653.071 494.164 652.448 493.995 651.911 493.657C651.378 493.318 650.961 492.845 650.66 492.237C650.363 491.629 650.214 490.918 650.214 490.104C650.214 489.284 650.363 488.569 650.66 487.957C650.961 487.345 651.378 486.87 651.911 486.532C652.448 486.194 653.071 486.024 653.782 486.024C654.493 486.024 655.115 486.194 655.648 486.532C656.184 486.87 656.601 487.345 656.898 487.957C657.199 488.569 657.349 489.284 657.349 490.104C657.349 490.918 657.199 491.629 656.898 492.237C656.601 492.845 656.184 493.318 655.648 493.657C655.115 493.995 654.493 494.164 653.782 494.164ZM653.782 493.077C654.322 493.077 654.766 492.939 655.115 492.662C655.463 492.385 655.721 492.021 655.889 491.57C656.056 491.119 656.14 490.631 656.14 490.104C656.14 489.578 656.056 489.088 655.889 488.633C655.721 488.179 655.463 487.812 655.115 487.531C654.766 487.251 654.322 487.111 653.782 487.111C653.242 487.111 652.798 487.251 652.449 487.531C652.101 487.812 651.843 488.179 651.675 488.633C651.508 489.088 651.424 489.578 651.424 490.104C651.424 490.631 651.508 491.119 651.675 491.57C651.843 492.021 652.101 492.385 652.449 492.662C652.798 492.939 653.242 493.077 653.782 493.077ZM664.285 483.503H665.803L669.37 492.216H669.493L673.061 483.503H674.578V494H673.389V486.024H673.286L670.006 494H668.858L665.577 486.024H665.475V494H664.285V483.503ZM679.712 494.185C679.213 494.185 678.761 494.091 678.354 493.903C677.947 493.711 677.624 493.436 677.385 493.077C677.146 492.715 677.026 492.278 677.026 491.765C677.026 491.314 677.115 490.949 677.293 490.668C677.471 490.385 677.708 490.163 678.005 490.002C678.303 489.841 678.631 489.722 678.99 489.643C679.352 489.561 679.716 489.496 680.081 489.448C680.56 489.387 680.948 489.341 681.245 489.31C681.546 489.276 681.764 489.219 681.901 489.141C682.041 489.062 682.111 488.926 682.111 488.731V488.69C682.111 488.184 681.973 487.791 681.696 487.511C681.423 487.231 681.007 487.091 680.45 487.091C679.873 487.091 679.42 487.217 679.092 487.47C678.764 487.723 678.533 487.993 678.4 488.28L677.252 487.87C677.457 487.391 677.73 487.019 678.072 486.752C678.417 486.482 678.793 486.294 679.2 486.188C679.61 486.079 680.013 486.024 680.409 486.024C680.662 486.024 680.953 486.055 681.281 486.117C681.612 486.175 681.932 486.296 682.239 486.481C682.55 486.665 682.808 486.944 683.013 487.316C683.218 487.689 683.321 488.188 683.321 488.813V494H682.111V492.934H682.05C681.968 493.105 681.831 493.288 681.64 493.482C681.448 493.677 681.194 493.843 680.876 493.979C680.558 494.116 680.17 494.185 679.712 494.185ZM679.897 493.098C680.375 493.098 680.778 493.004 681.107 492.816C681.438 492.628 681.687 492.385 681.855 492.088C682.026 491.791 682.111 491.478 682.111 491.15V490.043C682.06 490.104 681.947 490.161 681.773 490.212C681.602 490.26 681.404 490.303 681.178 490.34C680.956 490.374 680.739 490.405 680.527 490.433C680.319 490.456 680.15 490.477 680.02 490.494C679.705 490.535 679.412 490.602 679.138 490.694C678.868 490.783 678.65 490.918 678.482 491.099C678.318 491.277 678.236 491.519 678.236 491.827C678.236 492.247 678.392 492.565 678.703 492.78C679.017 492.992 679.415 493.098 679.897 493.098ZM685.962 494V486.127H687.13V487.316H687.212C687.356 486.927 687.616 486.611 687.991 486.368C688.367 486.125 688.791 486.004 689.263 486.004C689.351 486.004 689.463 486.006 689.596 486.009C689.729 486.013 689.83 486.018 689.898 486.024V487.255C689.857 487.244 689.763 487.229 689.616 487.208C689.473 487.185 689.321 487.173 689.16 487.173C688.777 487.173 688.436 487.253 688.135 487.414C687.838 487.571 687.602 487.789 687.428 488.07C687.257 488.346 687.171 488.662 687.171 489.018V494H685.962ZM692.893 491.13L692.872 489.633H693.118L696.563 486.127H698.059L694.389 489.838H694.287L692.893 491.13ZM691.765 494V483.503H692.975V494H691.765ZM696.768 494L693.692 490.104L694.553 489.264L698.305 494H696.768ZM702.698 494.164C702.042 494.164 701.463 493.998 700.96 493.667C700.458 493.332 700.065 492.86 699.782 492.252C699.498 491.64 699.356 490.918 699.356 490.084C699.356 489.257 699.498 488.539 699.782 487.931C700.065 487.323 700.46 486.853 700.966 486.522C701.471 486.19 702.056 486.024 702.719 486.024C703.231 486.024 703.636 486.11 703.933 486.281C704.234 486.448 704.463 486.64 704.62 486.855C704.781 487.067 704.905 487.241 704.994 487.378H705.097V483.503H706.307V494H705.138V492.79H704.994C704.905 492.934 704.779 493.115 704.615 493.334C704.451 493.549 704.217 493.742 703.913 493.913C703.609 494.08 703.204 494.164 702.698 494.164ZM702.862 493.077C703.347 493.077 703.757 492.951 704.092 492.698C704.427 492.442 704.682 492.088 704.856 491.637C705.03 491.183 705.117 490.658 705.117 490.063C705.117 489.476 705.032 488.961 704.861 488.521C704.69 488.076 704.437 487.731 704.102 487.485C703.768 487.236 703.354 487.111 702.862 487.111C702.349 487.111 701.922 487.243 701.581 487.506C701.242 487.765 700.988 488.119 700.817 488.567C700.649 489.011 700.566 489.51 700.566 490.063C700.566 490.624 700.651 491.133 700.822 491.591C700.996 492.045 701.253 492.408 701.591 492.678C701.933 492.944 702.356 493.077 702.862 493.077ZM712.321 494.164C711.611 494.164 710.987 493.995 710.45 493.657C709.917 493.318 709.501 492.845 709.2 492.237C708.903 491.629 708.754 490.918 708.754 490.104C708.754 489.284 708.903 488.569 709.2 487.957C709.501 487.345 709.917 486.87 710.45 486.532C710.987 486.194 711.611 486.024 712.321 486.024C713.032 486.024 713.654 486.194 714.187 486.532C714.724 486.87 715.14 487.345 715.438 487.957C715.738 488.569 715.889 489.284 715.889 490.104C715.889 490.918 715.738 491.629 715.438 492.237C715.14 492.845 714.724 493.318 714.187 493.657C713.654 493.995 713.032 494.164 712.321 494.164ZM712.321 493.077C712.861 493.077 713.305 492.939 713.654 492.662C714.003 492.385 714.261 492.021 714.428 491.57C714.595 491.119 714.679 490.631 714.679 490.104C714.679 489.578 714.595 489.088 714.428 488.633C714.261 488.179 714.003 487.812 713.654 487.531C713.305 487.251 712.861 487.111 712.321 487.111C711.781 487.111 711.337 487.251 710.989 487.531C710.64 487.812 710.382 488.179 710.215 488.633C710.047 489.088 709.964 489.578 709.964 490.104C709.964 490.631 710.047 491.119 710.215 491.57C710.382 492.021 710.64 492.385 710.989 492.662C711.337 492.939 711.781 493.077 712.321 493.077ZM719.684 494L717.285 486.127H718.557L720.258 492.155H720.34L722.022 486.127H723.313L724.974 492.134H725.056L726.758 486.127H728.029L725.63 494H724.441L722.719 487.952H722.596L720.873 494H719.684ZM731.271 489.264V494H730.061V486.127H731.23V487.357H731.332C731.517 486.957 731.797 486.636 732.173 486.394C732.549 486.147 733.034 486.024 733.629 486.024C734.162 486.024 734.628 486.134 735.028 486.353C735.428 486.568 735.739 486.896 735.961 487.337C736.183 487.774 736.294 488.328 736.294 488.997V494H735.084V489.079C735.084 488.461 734.924 487.979 734.602 487.634C734.281 487.285 733.84 487.111 733.28 487.111C732.894 487.111 732.549 487.195 732.245 487.362C731.944 487.53 731.706 487.774 731.532 488.095C731.358 488.416 731.271 488.806 731.271 489.264ZM746.628 494.164C745.89 494.164 745.255 493.99 744.722 493.641C744.188 493.293 743.778 492.813 743.491 492.201C743.204 491.589 743.061 490.89 743.061 490.104C743.061 489.305 743.208 488.599 743.502 487.988C743.799 487.373 744.212 486.892 744.742 486.547C745.275 486.199 745.897 486.024 746.608 486.024C747.161 486.024 747.66 486.127 748.104 486.332C748.549 486.537 748.913 486.824 749.196 487.193C749.48 487.562 749.656 487.993 749.724 488.485H748.515C748.422 488.126 748.217 487.808 747.899 487.531C747.585 487.251 747.161 487.111 746.628 487.111C746.157 487.111 745.743 487.234 745.388 487.48C745.036 487.723 744.761 488.066 744.563 488.51C744.368 488.951 744.27 489.469 744.27 490.063C744.27 490.672 744.366 491.201 744.558 491.652C744.752 492.104 745.026 492.454 745.378 492.703C745.733 492.953 746.15 493.077 746.628 493.077C746.943 493.077 747.228 493.023 747.484 492.913C747.741 492.804 747.958 492.647 748.135 492.442C748.313 492.237 748.439 491.991 748.515 491.704H749.724C749.656 492.168 749.487 492.587 749.217 492.959C748.95 493.329 748.597 493.622 748.156 493.841C747.718 494.056 747.209 494.164 746.628 494.164ZM755.124 494.164C754.413 494.164 753.79 493.995 753.253 493.657C752.72 493.318 752.303 492.845 752.002 492.237C751.705 491.629 751.557 490.918 751.557 490.104C751.557 489.284 751.705 488.569 752.002 487.957C752.303 487.345 752.72 486.87 753.253 486.532C753.79 486.194 754.413 486.024 755.124 486.024C755.835 486.024 756.457 486.194 756.99 486.532C757.526 486.87 757.943 487.345 758.24 487.957C758.541 488.569 758.691 489.284 758.691 490.104C758.691 490.918 758.541 491.629 758.24 492.237C757.943 492.845 757.526 493.318 756.99 493.657C756.457 493.995 755.835 494.164 755.124 494.164ZM755.124 493.077C755.664 493.077 756.108 492.939 756.457 492.662C756.805 492.385 757.063 492.021 757.231 491.57C757.398 491.119 757.482 490.631 757.482 490.104C757.482 489.578 757.398 489.088 757.231 488.633C757.063 488.179 756.805 487.812 756.457 487.531C756.108 487.251 755.664 487.111 755.124 487.111C754.584 487.111 754.14 487.251 753.791 487.531C753.443 487.812 753.185 488.179 753.017 488.633C752.85 489.088 752.766 489.578 752.766 490.104C752.766 490.631 752.85 491.119 753.017 491.57C753.185 492.021 753.443 492.385 753.791 492.662C754.14 492.939 754.584 493.077 755.124 493.077ZM762.181 489.264V494H760.971V486.127H762.14V487.357H762.242C762.427 486.957 762.707 486.636 763.083 486.394C763.459 486.147 763.944 486.024 764.538 486.024C765.072 486.024 765.538 486.134 765.938 486.353C766.338 486.568 766.648 486.896 766.871 487.337C767.093 487.774 767.204 488.328 767.204 488.997V494H765.994V489.079C765.994 488.461 765.834 487.979 765.512 487.634C765.191 487.285 764.75 487.111 764.19 487.111C763.804 487.111 763.459 487.195 763.155 487.362C762.854 487.53 762.616 487.774 762.442 488.095C762.268 488.416 762.181 488.806 762.181 489.264ZM776.003 486.127L773.092 494H771.862L768.95 486.127H770.262L772.436 492.401H772.518L774.691 486.127H776.003ZM781.052 494.164C780.293 494.164 779.639 493.997 779.089 493.662C778.542 493.323 778.12 492.852 777.823 492.247C777.529 491.639 777.382 490.931 777.382 490.125C777.382 489.319 777.529 488.608 777.823 487.993C778.12 487.374 778.533 486.892 779.063 486.547C779.596 486.199 780.218 486.024 780.929 486.024C781.339 486.024 781.744 486.093 782.144 486.229C782.543 486.366 782.907 486.588 783.235 486.896C783.563 487.2 783.825 487.603 784.02 488.105C784.214 488.608 784.312 489.226 784.312 489.961V490.474H778.243V489.428H783.082C783.082 488.984 782.993 488.587 782.815 488.239C782.641 487.89 782.391 487.615 782.067 487.414C781.745 487.212 781.366 487.111 780.929 487.111C780.447 487.111 780.03 487.231 779.678 487.47C779.33 487.706 779.061 488.013 778.873 488.393C778.685 488.772 778.591 489.178 778.591 489.612V490.31C778.591 490.904 778.694 491.408 778.899 491.822C779.107 492.232 779.396 492.544 779.765 492.76C780.134 492.971 780.563 493.077 781.052 493.077C781.37 493.077 781.657 493.033 781.913 492.944C782.173 492.852 782.396 492.715 782.584 492.534C782.772 492.35 782.918 492.121 783.02 491.847L784.189 492.175C784.066 492.572 783.859 492.92 783.569 493.221C783.278 493.518 782.919 493.751 782.492 493.918C782.065 494.082 781.585 494.164 781.052 494.164ZM786.585 494V486.127H787.754V487.316H787.836C787.979 486.927 788.239 486.611 788.615 486.368C788.991 486.125 789.414 486.004 789.886 486.004C789.975 486.004 790.086 486.006 790.219 486.009C790.352 486.013 790.453 486.018 790.521 486.024V487.255C790.48 487.244 790.386 487.229 790.239 487.208C790.096 487.185 789.944 487.173 789.783 487.173C789.401 487.173 789.059 487.253 788.758 487.414C788.461 487.571 788.225 487.789 788.051 488.07C787.88 488.346 787.795 488.662 787.795 489.018V494H786.585ZM796.306 486.127V487.152H792.226V486.127H796.306ZM793.415 484.241H794.624V491.745C794.624 492.086 794.674 492.343 794.773 492.514C794.876 492.681 795.005 492.794 795.163 492.852C795.323 492.907 795.492 492.934 795.67 492.934C795.803 492.934 795.913 492.927 795.998 492.913C796.083 492.896 796.152 492.883 796.203 492.872L796.449 493.959C796.367 493.99 796.253 494.021 796.106 494.051C795.959 494.085 795.773 494.103 795.547 494.103C795.205 494.103 794.87 494.029 794.542 493.882C794.218 493.735 793.948 493.511 793.733 493.211C793.521 492.91 793.415 492.531 793.415 492.073V484.241ZM801.775 494.164C801.016 494.164 800.362 493.997 799.811 493.662C799.265 493.323 798.843 492.852 798.545 492.247C798.252 491.639 798.105 490.931 798.105 490.125C798.105 489.319 798.252 488.608 798.545 487.993C798.843 487.374 799.256 486.892 799.786 486.547C800.319 486.199 800.941 486.024 801.652 486.024C802.062 486.024 802.467 486.093 802.866 486.229C803.266 486.366 803.63 486.588 803.958 486.896C804.286 487.2 804.548 487.603 804.742 488.105C804.937 488.608 805.034 489.226 805.034 489.961V490.474H798.966V489.428H803.804C803.804 488.984 803.715 488.587 803.538 488.239C803.364 487.89 803.114 487.615 802.789 487.414C802.468 487.212 802.089 487.111 801.652 487.111C801.17 487.111 800.753 487.231 800.401 487.47C800.052 487.706 799.784 488.013 799.596 488.393C799.408 488.772 799.314 489.178 799.314 489.612V490.31C799.314 490.904 799.417 491.408 799.622 491.822C799.83 492.232 800.119 492.544 800.488 492.76C800.857 492.971 801.286 493.077 801.775 493.077C802.092 493.077 802.379 493.033 802.636 492.944C802.895 492.852 803.119 492.715 803.307 492.534C803.495 492.35 803.64 492.121 803.743 491.847L804.911 492.175C804.788 492.572 804.582 492.92 804.291 493.221C804.001 493.518 803.642 493.751 803.215 493.918C802.788 494.082 802.308 494.164 801.775 494.164ZM807.308 494V486.127H808.476V487.316H808.558C808.702 486.927 808.961 486.611 809.337 486.368C809.713 486.125 810.137 486.004 810.609 486.004C810.697 486.004 810.808 486.006 810.942 486.009C811.075 486.013 811.176 486.018 811.244 486.024V487.255C811.203 487.244 811.109 487.229 810.962 487.208C810.819 487.185 810.667 487.173 810.506 487.173C810.123 487.173 809.782 487.253 809.481 487.414C809.184 487.571 808.948 487.789 808.774 488.07C808.603 488.346 808.517 488.662 808.517 489.018V494H807.308ZM819.92 494.185C819.421 494.185 818.969 494.091 818.562 493.903C818.155 493.711 817.833 493.436 817.593 493.077C817.354 492.715 817.235 492.278 817.235 491.765C817.235 491.314 817.323 490.949 817.501 490.668C817.679 490.385 817.916 490.163 818.214 490.002C818.511 489.841 818.839 489.722 819.198 489.643C819.56 489.561 819.924 489.496 820.289 489.448C820.768 489.387 821.156 489.341 821.453 489.31C821.754 489.276 821.972 489.219 822.109 489.141C822.249 489.062 822.319 488.926 822.319 488.731V488.69C822.319 488.184 822.181 487.791 821.904 487.511C821.631 487.231 821.215 487.091 820.658 487.091C820.081 487.091 819.628 487.217 819.3 487.47C818.972 487.723 818.741 487.993 818.608 488.28L817.46 487.87C817.665 487.391 817.938 487.019 818.28 486.752C818.625 486.482 819.001 486.294 819.408 486.188C819.818 486.079 820.221 486.024 820.617 486.024C820.87 486.024 821.161 486.055 821.489 486.117C821.82 486.175 822.14 486.296 822.447 486.481C822.758 486.665 823.016 486.944 823.221 487.316C823.426 487.689 823.529 488.188 823.529 488.813V494H822.319V492.934H822.258C822.176 493.105 822.039 493.288 821.848 493.482C821.656 493.677 821.402 493.843 821.084 493.979C820.766 494.116 820.378 494.185 819.92 494.185ZM820.105 493.098C820.583 493.098 820.987 493.004 821.315 492.816C821.646 492.628 821.895 492.385 822.063 492.088C822.234 491.791 822.319 491.478 822.319 491.15V490.043C822.268 490.104 822.155 490.161 821.981 490.212C821.81 490.26 821.612 490.303 821.386 490.34C821.164 490.374 820.947 490.405 820.735 490.433C820.527 490.456 820.358 490.477 820.228 490.494C819.914 490.535 819.62 490.602 819.346 490.694C819.076 490.783 818.858 490.918 818.69 491.099C818.526 491.277 818.444 491.519 818.444 491.827C818.444 492.247 818.6 492.565 818.911 492.78C819.225 492.992 819.623 493.098 820.105 493.098ZM827.379 489.264V494H826.17V486.127H827.338V487.357H827.441C827.625 486.957 827.906 486.636 828.282 486.394C828.657 486.147 829.143 486.024 829.737 486.024C830.27 486.024 830.737 486.134 831.137 486.353C831.536 486.568 831.847 486.896 832.069 487.337C832.291 487.774 832.403 488.328 832.403 488.997V494H831.193V489.079C831.193 488.461 831.032 487.979 830.711 487.634C830.39 487.285 829.949 487.111 829.389 487.111C829.003 487.111 828.657 487.195 828.353 487.362C828.053 487.53 827.815 487.774 827.641 488.095C827.467 488.416 827.379 488.806 827.379 489.264ZM838.019 494.164C837.363 494.164 836.784 493.998 836.281 493.667C835.779 493.332 835.386 492.86 835.102 492.252C834.819 491.64 834.677 490.918 834.677 490.084C834.677 489.257 834.819 488.539 835.102 487.931C835.386 487.323 835.781 486.853 836.286 486.522C836.792 486.19 837.376 486.024 838.039 486.024C838.552 486.024 838.957 486.11 839.254 486.281C839.555 486.448 839.784 486.64 839.941 486.855C840.102 487.067 840.226 487.241 840.315 487.378H840.418V483.503H841.627V494H840.459V492.79H840.315C840.226 492.934 840.1 493.115 839.936 493.334C839.772 493.549 839.538 493.742 839.234 493.913C838.93 494.08 838.525 494.164 838.019 494.164ZM838.183 493.077C838.668 493.077 839.078 492.951 839.413 492.698C839.748 492.442 840.002 492.088 840.177 491.637C840.351 491.183 840.438 490.658 840.438 490.063C840.438 489.476 840.353 488.961 840.182 488.521C840.011 488.076 839.758 487.731 839.423 487.485C839.088 487.236 838.675 487.111 838.183 487.111C837.67 487.111 837.243 487.243 836.901 487.506C836.563 487.765 836.309 488.119 836.138 488.567C835.97 489.011 835.887 489.51 835.887 490.063C835.887 490.624 835.972 491.133 836.143 491.591C836.317 492.045 836.573 492.408 836.912 492.678C837.253 492.944 837.677 493.077 838.183 493.077ZM848.936 494V486.127H850.105V487.357H850.207C850.372 486.937 850.636 486.611 851.002 486.378C851.368 486.142 851.807 486.024 852.319 486.024C852.839 486.024 853.271 486.142 853.616 486.378C853.965 486.611 854.236 486.937 854.431 487.357H854.513C854.715 486.951 855.017 486.628 855.42 486.388C855.824 486.146 856.307 486.024 856.871 486.024C857.575 486.024 858.151 486.245 858.598 486.686C859.046 487.123 859.27 487.805 859.27 488.731V494H858.06V488.731C858.06 488.15 857.901 487.735 857.583 487.485C857.266 487.236 856.891 487.111 856.461 487.111C855.907 487.111 855.478 487.279 855.174 487.613C854.87 487.945 854.718 488.365 854.718 488.874V494H853.488V488.608C853.488 488.16 853.343 487.8 853.052 487.526C852.762 487.25 852.388 487.111 851.93 487.111C851.615 487.111 851.321 487.195 851.048 487.362C850.778 487.53 850.559 487.762 850.392 488.059C850.228 488.353 850.146 488.693 850.146 489.079V494H848.936ZM865.113 494.164C864.402 494.164 863.778 493.995 863.242 493.657C862.709 493.318 862.292 492.845 861.991 492.237C861.694 491.629 861.545 490.918 861.545 490.104C861.545 489.284 861.694 488.569 861.991 487.957C862.292 487.345 862.709 486.87 863.242 486.532C863.778 486.194 864.402 486.024 865.113 486.024C865.824 486.024 866.445 486.194 866.979 486.532C867.515 486.87 867.932 487.345 868.229 487.957C868.53 488.569 868.68 489.284 868.68 490.104C868.68 490.918 868.53 491.629 868.229 492.237C867.932 492.845 867.515 493.318 866.979 493.657C866.445 493.995 865.824 494.164 865.113 494.164ZM865.113 493.077C865.653 493.077 866.097 492.939 866.445 492.662C866.794 492.385 867.052 492.021 867.219 491.57C867.387 491.119 867.471 490.631 867.471 490.104C867.471 489.578 867.387 489.088 867.219 488.633C867.052 488.179 866.794 487.812 866.445 487.531C866.097 487.251 865.653 487.111 865.113 487.111C864.573 487.111 864.129 487.251 863.78 487.531C863.432 487.812 863.174 488.179 863.006 488.633C862.839 489.088 862.755 489.578 862.755 490.104C862.755 490.631 862.839 491.119 863.006 491.57C863.174 492.021 863.432 492.385 863.78 492.662C864.129 492.939 864.573 493.077 865.113 493.077ZM870.96 494V486.127H872.128V487.316H872.21C872.354 486.927 872.614 486.611 872.99 486.368C873.365 486.125 873.789 486.004 874.261 486.004C874.35 486.004 874.461 486.006 874.594 486.009C874.727 486.013 874.828 486.018 874.896 486.024V487.255C874.855 487.244 874.761 487.229 874.614 487.208C874.471 487.185 874.319 487.173 874.158 487.173C873.776 487.173 873.434 487.253 873.133 487.414C872.836 487.571 872.6 487.789 872.426 488.07C872.255 488.346 872.169 488.662 872.169 489.018V494H870.96ZM879.825 494.164C879.066 494.164 878.412 493.997 877.861 493.662C877.315 493.323 876.893 492.852 876.595 492.247C876.302 491.639 876.155 490.931 876.155 490.125C876.155 489.319 876.302 488.608 876.595 487.993C876.893 487.374 877.306 486.892 877.836 486.547C878.369 486.199 878.991 486.024 879.702 486.024C880.112 486.024 880.517 486.093 880.916 486.229C881.316 486.366 881.68 486.588 882.008 486.896C882.336 487.2 882.598 487.603 882.792 488.105C882.987 488.608 883.084 489.226 883.084 489.961V490.474H877.016V489.428H881.854C881.854 488.984 881.765 488.587 881.588 488.239C881.413 487.89 881.164 487.615 880.839 487.414C880.518 487.212 880.139 487.111 879.702 487.111C879.22 487.111 878.803 487.231 878.451 487.47C878.102 487.706 877.834 488.013 877.646 488.393C877.458 488.772 877.364 489.178 877.364 489.612V490.31C877.364 490.904 877.467 491.408 877.672 491.822C877.88 492.232 878.169 492.544 878.538 492.76C878.907 492.971 879.336 493.077 879.825 493.077C880.142 493.077 880.429 493.033 880.686 492.944C880.945 492.852 881.169 492.715 881.357 492.534C881.545 492.35 881.69 492.121 881.793 491.847L882.961 492.175C882.838 492.572 882.632 492.92 882.341 493.221C882.051 493.518 881.692 493.751 881.265 493.918C880.838 494.082 880.358 494.164 879.825 494.164ZM886.239 494.082C885.986 494.082 885.769 493.991 885.588 493.81C885.407 493.629 885.317 493.412 885.317 493.159C885.317 492.907 885.407 492.69 885.588 492.508C885.769 492.327 885.986 492.237 886.239 492.237C886.492 492.237 886.709 492.327 886.89 492.508C887.071 492.69 887.162 492.907 887.162 493.159C887.162 493.327 887.119 493.481 887.034 493.621C886.952 493.761 886.841 493.874 886.701 493.959C886.564 494.041 886.41 494.082 886.239 494.082ZM377.297 523.503H379.783L382.177 528.023H382.279L384.673 523.503H387.159L383.33 530.289V534H381.126V530.289L377.297 523.503ZM389.486 534.149C388.984 534.149 388.536 534.062 388.143 533.887C387.75 533.71 387.439 533.448 387.21 533.103C386.985 532.754 386.872 532.32 386.872 531.801C386.872 531.364 386.952 530.996 387.113 530.699C387.273 530.402 387.492 530.163 387.769 529.981C388.046 529.8 388.36 529.664 388.712 529.571C389.067 529.479 389.44 529.414 389.829 529.377C390.287 529.329 390.656 529.284 390.937 529.243C391.217 529.199 391.42 529.134 391.547 529.049C391.673 528.963 391.736 528.837 391.736 528.669V528.639C391.736 528.314 391.634 528.063 391.429 527.885C391.227 527.707 390.94 527.619 390.568 527.619C390.175 527.619 389.862 527.706 389.63 527.88C389.397 528.051 389.243 528.266 389.168 528.526L387.149 528.362C387.251 527.883 387.453 527.47 387.754 527.121C388.054 526.769 388.442 526.499 388.917 526.312C389.395 526.12 389.949 526.024 390.578 526.024C391.015 526.024 391.434 526.076 391.834 526.178C392.237 526.281 392.594 526.44 392.905 526.655C393.219 526.87 393.467 527.147 393.648 527.485C393.829 527.82 393.92 528.222 393.92 528.69V534H391.849V532.908H391.787C391.661 533.154 391.492 533.371 391.28 533.559C391.068 533.744 390.814 533.889 390.516 533.995C390.219 534.097 389.876 534.149 389.486 534.149ZM390.111 532.642C390.433 532.642 390.716 532.578 390.962 532.452C391.208 532.322 391.401 532.148 391.541 531.929C391.681 531.711 391.752 531.463 391.752 531.186V530.351C391.683 530.395 391.589 530.436 391.47 530.474C391.353 530.508 391.222 530.54 391.075 530.571C390.928 530.598 390.781 530.624 390.634 530.648C390.487 530.668 390.354 530.687 390.234 530.704C389.978 530.742 389.754 530.802 389.563 530.884C389.372 530.966 389.223 531.077 389.117 531.217C389.011 531.353 388.958 531.524 388.958 531.729C388.958 532.027 389.066 532.254 389.281 532.411C389.5 532.565 389.776 532.642 390.111 532.642ZM402.597 528.372L400.598 528.495C400.564 528.324 400.491 528.17 400.378 528.034C400.265 527.894 400.117 527.783 399.932 527.701C399.751 527.615 399.534 527.572 399.281 527.572C398.943 527.572 398.657 527.644 398.425 527.788C398.193 527.928 398.077 528.116 398.077 528.352C398.077 528.539 398.152 528.698 398.302 528.828C398.452 528.958 398.71 529.062 399.076 529.141L400.501 529.428C401.266 529.585 401.837 529.838 402.213 530.187C402.589 530.535 402.777 530.993 402.777 531.56C402.777 532.076 402.625 532.529 402.321 532.918C402.02 533.308 401.606 533.612 401.08 533.831C400.557 534.046 399.954 534.154 399.271 534.154C398.229 534.154 397.398 533.937 396.78 533.503C396.165 533.065 395.804 532.471 395.698 531.719L397.846 531.606C397.911 531.924 398.068 532.167 398.317 532.334C398.567 532.498 398.886 532.58 399.276 532.58C399.659 532.58 399.966 532.507 400.199 532.36C400.434 532.209 400.554 532.016 400.557 531.781C400.554 531.582 400.47 531.42 400.306 531.294C400.142 531.164 399.889 531.065 399.548 530.996L398.184 530.725C397.415 530.571 396.843 530.304 396.467 529.925C396.095 529.546 395.908 529.062 395.908 528.475C395.908 527.969 396.045 527.533 396.318 527.167C396.595 526.802 396.983 526.52 397.482 526.322C397.984 526.124 398.572 526.024 399.245 526.024C400.24 526.024 401.022 526.235 401.593 526.655C402.167 527.075 402.502 527.648 402.597 528.372ZM406.768 529.448V534H404.585V523.503H406.707V527.516H406.799C406.977 527.051 407.264 526.687 407.66 526.424C408.057 526.158 408.554 526.024 409.152 526.024C409.698 526.024 410.175 526.144 410.582 526.383C410.992 526.619 411.31 526.959 411.535 527.403C411.764 527.844 411.877 528.372 411.873 528.987V534H409.69V529.377C409.693 528.891 409.57 528.514 409.321 528.244C409.075 527.974 408.73 527.839 408.285 527.839C407.988 527.839 407.725 527.902 407.496 528.029C407.271 528.155 407.093 528.34 406.963 528.582C406.837 528.821 406.772 529.11 406.768 529.448ZM415.301 534.133C414.963 534.133 414.672 534.014 414.43 533.774C414.191 533.532 414.071 533.241 414.071 532.903C414.071 532.568 414.191 532.281 414.43 532.042C414.672 531.803 414.963 531.683 415.301 531.683C415.629 531.683 415.916 531.803 416.162 532.042C416.408 532.281 416.531 532.568 416.531 532.903C416.531 533.129 416.473 533.335 416.357 533.523C416.244 533.708 416.096 533.856 415.911 533.969C415.727 534.079 415.523 534.133 415.301 534.133ZM415.301 528.618C414.963 528.618 414.672 528.498 414.43 528.259C414.191 528.02 414.071 527.73 414.071 527.388C414.071 527.053 414.191 526.768 414.43 526.532C414.672 526.293 414.963 526.173 415.301 526.173C415.629 526.173 415.916 526.293 416.162 526.532C416.408 526.768 416.531 527.053 416.531 527.388C416.531 527.617 416.473 527.825 416.357 528.013C416.244 528.198 416.096 528.345 415.911 528.454C415.727 528.563 415.523 528.618 415.301 528.618ZM422.028 523.503H423.484L426.395 528.403H426.518L429.43 523.503H430.885L427.092 529.674V534H425.821V529.674L422.028 523.503ZM434.086 534.185C433.587 534.185 433.135 534.091 432.728 533.903C432.321 533.711 431.998 533.436 431.759 533.077C431.52 532.715 431.4 532.278 431.4 531.765C431.4 531.314 431.489 530.949 431.667 530.668C431.845 530.385 432.082 530.163 432.379 530.002C432.677 529.841 433.005 529.722 433.364 529.643C433.726 529.561 434.09 529.496 434.455 529.448C434.934 529.387 435.322 529.341 435.619 529.31C435.92 529.276 436.138 529.219 436.275 529.141C436.415 529.062 436.485 528.926 436.485 528.731V528.69C436.485 528.184 436.347 527.791 436.07 527.511C435.797 527.231 435.381 527.091 434.824 527.091C434.247 527.091 433.794 527.217 433.466 527.47C433.138 527.723 432.907 527.993 432.774 528.28L431.626 527.87C431.831 527.391 432.104 527.019 432.446 526.752C432.791 526.482 433.167 526.294 433.574 526.188C433.984 526.079 434.387 526.024 434.783 526.024C435.036 526.024 435.327 526.055 435.655 526.117C435.986 526.175 436.306 526.296 436.613 526.481C436.924 526.665 437.182 526.944 437.387 527.316C437.592 527.689 437.695 528.188 437.695 528.813V534H436.485V532.934H436.424C436.342 533.105 436.205 533.288 436.014 533.482C435.822 533.677 435.568 533.843 435.25 533.979C434.932 534.116 434.544 534.185 434.086 534.185ZM434.271 533.098C434.749 533.098 435.152 533.004 435.481 532.816C435.812 532.628 436.061 532.385 436.229 532.088C436.4 531.791 436.485 531.478 436.485 531.15V530.043C436.434 530.104 436.321 530.161 436.147 530.212C435.976 530.26 435.778 530.303 435.552 530.34C435.33 530.374 435.113 530.405 434.901 530.433C434.693 530.456 434.524 530.477 434.394 530.494C434.079 530.535 433.786 530.602 433.512 530.694C433.242 530.783 433.024 530.918 432.856 531.099C432.692 531.277 432.61 531.519 432.61 531.827C432.61 532.247 432.766 532.565 433.077 532.78C433.391 532.992 433.789 533.098 434.271 533.098ZM445.912 527.89L444.826 528.198C444.757 528.017 444.657 527.841 444.523 527.67C444.394 527.496 444.216 527.352 443.99 527.239C443.765 527.126 443.476 527.07 443.124 527.07C442.642 527.07 442.241 527.181 441.92 527.403C441.602 527.622 441.443 527.9 441.443 528.239C441.443 528.539 441.552 528.777 441.771 528.951C441.99 529.125 442.331 529.271 442.796 529.387L443.965 529.674C444.669 529.845 445.193 530.106 445.538 530.458C445.883 530.807 446.056 531.256 446.056 531.806C446.056 532.257 445.926 532.66 445.666 533.016C445.41 533.371 445.051 533.651 444.59 533.856C444.129 534.062 443.592 534.164 442.981 534.164C442.178 534.164 441.513 533.99 440.987 533.641C440.46 533.293 440.127 532.784 439.987 532.114L441.135 531.827C441.245 532.25 441.451 532.568 441.756 532.78C442.063 532.992 442.465 533.098 442.96 533.098C443.524 533.098 443.971 532.978 444.303 532.739C444.638 532.496 444.805 532.206 444.805 531.868C444.805 531.594 444.71 531.365 444.518 531.181C444.327 530.993 444.033 530.853 443.637 530.761L442.324 530.453C441.603 530.282 441.074 530.017 440.735 529.659C440.401 529.296 440.233 528.844 440.233 528.3C440.233 527.856 440.358 527.463 440.607 527.121C440.86 526.78 441.204 526.511 441.638 526.317C442.075 526.122 442.57 526.024 443.124 526.024C443.903 526.024 444.515 526.195 444.959 526.537C445.407 526.879 445.724 527.33 445.912 527.89ZM449.519 529.264V534H448.31V523.503H449.519V527.357H449.622C449.807 526.951 450.083 526.628 450.452 526.388C450.825 526.146 451.32 526.024 451.939 526.024C452.475 526.024 452.945 526.132 453.348 526.347C453.752 526.559 454.064 526.886 454.286 527.326C454.512 527.764 454.625 528.321 454.625 528.997V534H453.415V529.079C453.415 528.454 453.253 527.971 452.928 527.629C452.607 527.284 452.161 527.111 451.59 527.111C451.194 527.111 450.839 527.195 450.524 527.362C450.213 527.53 449.967 527.774 449.786 528.095C449.608 528.416 449.519 528.806 449.519 529.264ZM462.973 529.264V534H461.763V523.503H462.973V527.357H463.075C463.26 526.951 463.537 526.628 463.906 526.388C464.278 526.146 464.774 526.024 465.392 526.024C465.929 526.024 466.399 526.132 466.802 526.347C467.205 526.559 467.518 526.886 467.74 527.326C467.965 527.764 468.078 528.321 468.078 528.997V534H466.868V529.079C466.868 528.454 466.706 527.971 466.381 527.629C466.06 527.284 465.614 527.111 465.044 527.111C464.647 527.111 464.292 527.195 463.977 527.362C463.667 527.53 463.421 527.774 463.239 528.095C463.062 528.416 462.973 528.806 462.973 529.264ZM473.041 534.185C472.542 534.185 472.089 534.091 471.683 533.903C471.276 533.711 470.953 533.436 470.714 533.077C470.475 532.715 470.355 532.278 470.355 531.765C470.355 531.314 470.444 530.949 470.622 530.668C470.799 530.385 471.037 530.163 471.334 530.002C471.631 529.841 471.959 529.722 472.318 529.643C472.68 529.561 473.044 529.496 473.41 529.448C473.888 529.387 474.276 529.341 474.573 529.31C474.874 529.276 475.093 529.219 475.23 529.141C475.37 529.062 475.44 528.926 475.44 528.731V528.69C475.44 528.184 475.301 527.791 475.024 527.511C474.751 527.231 474.336 527.091 473.779 527.091C473.201 527.091 472.749 527.217 472.421 527.47C472.093 527.723 471.862 527.993 471.729 528.28L470.581 527.87C470.786 527.391 471.059 527.019 471.401 526.752C471.746 526.482 472.122 526.294 472.528 526.188C472.938 526.079 473.342 526.024 473.738 526.024C473.991 526.024 474.281 526.055 474.609 526.117C474.941 526.175 475.26 526.296 475.568 526.481C475.879 526.665 476.137 526.944 476.342 527.316C476.547 527.689 476.649 528.188 476.649 528.813V534H475.44V532.934H475.378C475.296 533.105 475.159 533.288 474.968 533.482C474.777 533.677 474.522 533.843 474.204 533.979C473.887 534.116 473.499 534.185 473.041 534.185ZM473.225 533.098C473.704 533.098 474.107 533.004 474.435 532.816C474.766 532.628 475.016 532.385 475.183 532.088C475.354 531.791 475.44 531.478 475.44 531.15V530.043C475.388 530.104 475.276 530.161 475.101 530.212C474.931 530.26 474.732 530.303 474.507 530.34C474.285 530.374 474.068 530.405 473.856 530.433C473.647 530.456 473.478 530.477 473.348 530.494C473.034 530.535 472.74 530.602 472.467 530.694C472.197 530.783 471.978 530.918 471.811 531.099C471.647 531.277 471.565 531.519 471.565 531.827C471.565 532.247 471.72 532.565 472.031 532.78C472.345 532.992 472.744 533.098 473.225 533.098ZM484.867 527.89L483.78 528.198C483.712 528.017 483.611 527.841 483.478 527.67C483.348 527.496 483.17 527.352 482.945 527.239C482.719 527.126 482.431 527.07 482.079 527.07C481.597 527.07 481.195 527.181 480.874 527.403C480.556 527.622 480.397 527.9 480.397 528.239C480.397 528.539 480.507 528.777 480.725 528.951C480.944 529.125 481.286 529.271 481.751 529.387L482.919 529.674C483.623 529.845 484.148 530.106 484.493 530.458C484.838 530.807 485.01 531.256 485.01 531.806C485.01 532.257 484.881 532.66 484.621 533.016C484.365 533.371 484.006 533.651 483.545 533.856C483.083 534.062 482.547 534.164 481.935 534.164C481.132 534.164 480.467 533.99 479.941 533.641C479.415 533.293 479.082 532.784 478.942 532.114L480.09 531.827C480.199 532.25 480.406 532.568 480.71 532.78C481.018 532.992 481.419 533.098 481.915 533.098C482.478 533.098 482.926 532.978 483.257 532.739C483.592 532.496 483.76 532.206 483.76 531.868C483.76 531.594 483.664 531.365 483.473 531.181C483.281 530.993 482.988 530.853 482.591 530.761L481.279 530.453C480.558 530.282 480.028 530.017 479.69 529.659C479.355 529.296 479.188 528.844 479.188 528.3C479.188 527.856 479.312 527.463 479.562 527.121C479.815 526.78 480.158 526.511 480.592 526.317C481.03 526.122 481.525 526.024 482.079 526.024C482.858 526.024 483.469 526.195 483.914 526.537C484.361 526.879 484.679 527.33 484.867 527.89ZM493.541 534L491.142 526.127H492.413L494.115 532.155H494.197L495.878 526.127H497.17L498.83 532.134H498.912L500.614 526.127H501.885L499.486 534H498.297L496.575 527.952H496.452L494.73 534H493.541ZM506.848 534.164C506.137 534.164 505.514 533.995 504.977 533.657C504.444 533.318 504.027 532.845 503.726 532.237C503.429 531.629 503.281 530.918 503.281 530.104C503.281 529.284 503.429 528.569 503.726 527.957C504.027 527.345 504.444 526.87 504.977 526.532C505.514 526.194 506.137 526.024 506.848 526.024C507.559 526.024 508.181 526.194 508.714 526.532C509.25 526.87 509.667 527.345 509.964 527.957C510.265 528.569 510.415 529.284 510.415 530.104C510.415 530.918 510.265 531.629 509.964 532.237C509.667 532.845 509.25 533.318 508.714 533.657C508.181 533.995 507.559 534.164 506.848 534.164ZM506.848 533.077C507.388 533.077 507.832 532.939 508.181 532.662C508.529 532.385 508.787 532.021 508.955 531.57C509.122 531.119 509.206 530.631 509.206 530.104C509.206 529.578 509.122 529.088 508.955 528.633C508.787 528.179 508.529 527.812 508.181 527.531C507.832 527.251 507.388 527.111 506.848 527.111C506.308 527.111 505.864 527.251 505.515 527.531C505.167 527.812 504.909 528.179 504.741 528.633C504.574 529.088 504.49 529.578 504.49 530.104C504.49 530.631 504.574 531.119 504.741 531.57C504.909 532.021 505.167 532.385 505.515 532.662C505.864 532.939 506.308 533.077 506.848 533.077ZM512.695 534V526.127H513.864V527.316H513.946C514.089 526.927 514.349 526.611 514.725 526.368C515.101 526.125 515.524 526.004 515.996 526.004C516.085 526.004 516.196 526.006 516.329 526.009C516.462 526.013 516.563 526.018 516.632 526.024V527.255C516.591 527.244 516.497 527.229 516.35 527.208C516.206 527.185 516.054 527.173 515.893 527.173C515.511 527.173 515.169 527.253 514.868 527.414C514.571 527.571 514.335 527.789 514.161 528.07C513.99 528.346 513.905 528.662 513.905 529.018V534H512.695ZM519.626 531.13L519.606 529.633H519.852L523.296 526.127H524.793L521.123 529.838H521.02L519.626 531.13ZM518.498 534V523.503H519.708V534H518.498ZM523.501 534L520.426 530.104L521.287 529.264L525.039 534H523.501ZM529.759 534.164C529.001 534.164 528.346 533.997 527.796 533.662C527.25 533.323 526.828 532.852 526.53 532.247C526.236 531.639 526.089 530.931 526.089 530.125C526.089 529.319 526.236 528.608 526.53 527.993C526.828 527.374 527.241 526.892 527.771 526.547C528.304 526.199 528.926 526.024 529.636 526.024C530.046 526.024 530.451 526.093 530.851 526.229C531.251 526.366 531.615 526.588 531.943 526.896C532.271 527.2 532.532 527.603 532.727 528.105C532.922 528.608 533.019 529.226 533.019 529.961V530.474H526.951V529.428H531.789C531.789 528.984 531.7 528.587 531.523 528.239C531.348 527.89 531.099 527.615 530.774 527.414C530.453 527.212 530.074 527.111 529.636 527.111C529.155 527.111 528.738 527.231 528.386 527.47C528.037 527.706 527.769 528.013 527.581 528.393C527.393 528.772 527.299 529.178 527.299 529.612V530.31C527.299 530.904 527.402 531.408 527.607 531.822C527.815 532.232 528.104 532.544 528.473 532.76C528.842 532.971 529.271 533.077 529.759 533.077C530.077 533.077 530.364 533.033 530.621 532.944C530.88 532.852 531.104 532.715 531.292 532.534C531.48 532.35 531.625 532.121 531.728 531.847L532.896 532.175C532.773 532.572 532.567 532.92 532.276 533.221C531.986 533.518 531.627 533.751 531.2 533.918C530.773 534.082 530.292 534.164 529.759 534.164ZM538.265 534.164C537.609 534.164 537.03 533.998 536.528 533.667C536.025 533.332 535.632 532.86 535.349 532.252C535.065 531.64 534.923 530.918 534.923 530.084C534.923 529.257 535.065 528.539 535.349 527.931C535.632 527.323 536.027 526.853 536.533 526.522C537.039 526.19 537.623 526.024 538.286 526.024C538.798 526.024 539.203 526.11 539.501 526.281C539.801 526.448 540.03 526.64 540.187 526.855C540.348 527.067 540.473 527.241 540.562 527.378H540.664V523.503H541.874V534H540.705V532.79H540.562C540.473 532.934 540.346 533.115 540.182 533.334C540.018 533.549 539.784 533.742 539.48 533.913C539.176 534.08 538.771 534.164 538.265 534.164ZM538.429 533.077C538.915 533.077 539.325 532.951 539.66 532.698C539.994 532.442 540.249 532.088 540.423 531.637C540.598 531.183 540.685 530.658 540.685 530.063C540.685 529.476 540.599 528.961 540.428 528.521C540.258 528.076 540.005 527.731 539.67 527.485C539.335 527.236 538.921 527.111 538.429 527.111C537.917 527.111 537.49 527.243 537.148 527.506C536.81 527.765 536.555 528.119 536.384 528.567C536.217 529.011 536.133 529.51 536.133 530.063C536.133 530.624 536.218 531.133 536.389 531.591C536.564 532.045 536.82 532.408 537.158 532.678C537.5 532.944 537.924 533.077 538.429 533.077ZM552.381 534.164C551.67 534.164 551.047 533.995 550.51 533.657C549.977 533.318 549.56 532.845 549.26 532.237C548.962 531.629 548.814 530.918 548.814 530.104C548.814 529.284 548.962 528.569 549.26 527.957C549.56 527.345 549.977 526.87 550.51 526.532C551.047 526.194 551.67 526.024 552.381 526.024C553.092 526.024 553.714 526.194 554.247 526.532C554.783 526.87 555.2 527.345 555.498 527.957C555.798 528.569 555.949 529.284 555.949 530.104C555.949 530.918 555.798 531.629 555.498 532.237C555.2 532.845 554.783 533.318 554.247 533.657C553.714 533.995 553.092 534.164 552.381 534.164ZM552.381 533.077C552.921 533.077 553.365 532.939 553.714 532.662C554.062 532.385 554.32 532.021 554.488 531.57C554.655 531.119 554.739 530.631 554.739 530.104C554.739 529.578 554.655 529.088 554.488 528.633C554.32 528.179 554.062 527.812 553.714 527.531C553.365 527.251 552.921 527.111 552.381 527.111C551.841 527.111 551.397 527.251 551.049 527.531C550.7 527.812 550.442 528.179 550.275 528.633C550.107 529.088 550.023 529.578 550.023 530.104C550.023 530.631 550.107 531.119 550.275 531.57C550.442 532.021 550.7 532.385 551.049 532.662C551.397 532.939 551.841 533.077 552.381 533.077ZM559.438 529.264V534H558.228V526.127H559.397V527.357H559.499C559.684 526.957 559.964 526.636 560.34 526.394C560.716 526.147 561.201 526.024 561.796 526.024C562.329 526.024 562.795 526.134 563.195 526.353C563.595 526.568 563.906 526.896 564.128 527.337C564.35 527.774 564.461 528.328 564.461 528.997V534H563.251V529.079C563.251 528.461 563.091 527.979 562.77 527.634C562.448 527.285 562.008 527.111 561.447 527.111C561.061 527.111 560.716 527.195 560.412 527.362C560.111 527.53 559.874 527.774 559.699 528.095C559.525 528.416 559.438 528.806 559.438 529.264ZM575.021 526.127V527.152H570.941V526.127H575.021ZM572.13 524.241H573.34V531.745C573.34 532.086 573.389 532.343 573.488 532.514C573.591 532.681 573.721 532.794 573.878 532.852C574.039 532.907 574.208 532.934 574.385 532.934C574.519 532.934 574.628 532.927 574.713 532.913C574.799 532.896 574.867 532.883 574.918 532.872L575.164 533.959C575.082 533.99 574.968 534.021 574.821 534.051C574.674 534.085 574.488 534.103 574.262 534.103C573.921 534.103 573.586 534.029 573.258 533.882C572.933 533.735 572.663 533.511 572.448 533.211C572.236 532.91 572.13 532.531 572.13 532.073V524.241ZM578.652 529.264V534H577.443V523.503H578.652V527.357H578.755C578.939 526.951 579.216 526.628 579.585 526.388C579.958 526.146 580.453 526.024 581.072 526.024C581.608 526.024 582.078 526.132 582.481 526.347C582.884 526.559 583.197 526.886 583.419 527.326C583.645 527.764 583.758 528.321 583.758 528.997V534H582.548V529.079C582.548 528.454 582.386 527.971 582.061 527.629C581.74 527.284 581.294 527.111 580.723 527.111C580.327 527.111 579.971 527.195 579.657 527.362C579.346 527.53 579.1 527.774 578.919 528.095C578.741 528.416 578.652 528.806 578.652 529.264ZM589.704 534.164C588.946 534.164 588.292 533.997 587.741 533.662C587.195 533.323 586.773 532.852 586.475 532.247C586.181 531.639 586.035 530.931 586.035 530.125C586.035 529.319 586.181 528.608 586.475 527.993C586.773 527.374 587.186 526.892 587.716 526.547C588.249 526.199 588.871 526.024 589.581 526.024C589.992 526.024 590.396 526.093 590.796 526.229C591.196 526.366 591.56 526.588 591.888 526.896C592.216 527.2 592.477 527.603 592.672 528.105C592.867 528.608 592.964 529.226 592.964 529.961V530.474H586.896V529.428H591.734C591.734 528.984 591.645 528.587 591.468 528.239C591.293 527.89 591.044 527.615 590.719 527.414C590.398 527.212 590.019 527.111 589.581 527.111C589.1 527.111 588.683 527.231 588.331 527.47C587.982 527.706 587.714 528.013 587.526 528.393C587.338 528.772 587.244 529.178 587.244 529.612V530.31C587.244 530.904 587.347 531.408 587.552 531.822C587.76 532.232 588.049 532.544 588.418 532.76C588.787 532.971 589.216 533.077 589.704 533.077C590.022 533.077 590.309 533.033 590.566 532.944C590.825 532.852 591.049 532.715 591.237 532.534C591.425 532.35 591.57 532.121 591.673 531.847L592.841 532.175C592.718 532.572 592.512 532.92 592.221 533.221C591.931 533.518 591.572 533.751 591.145 533.918C590.718 534.082 590.238 534.164 589.704 534.164ZM605.635 526.127C605.573 525.608 605.324 525.204 604.886 524.917C604.449 524.63 603.913 524.487 603.277 524.487C602.812 524.487 602.406 524.562 602.057 524.712C601.712 524.863 601.442 525.069 601.247 525.333C601.056 525.596 600.96 525.895 600.96 526.229C600.96 526.51 601.027 526.751 601.16 526.952C601.297 527.15 601.471 527.316 601.683 527.449C601.895 527.579 602.117 527.687 602.349 527.772C602.582 527.854 602.795 527.921 602.99 527.972L604.056 528.259C604.329 528.331 604.634 528.43 604.968 528.557C605.307 528.683 605.63 528.856 605.937 529.074C606.248 529.29 606.504 529.566 606.706 529.905C606.908 530.243 607.009 530.658 607.009 531.15C607.009 531.717 606.86 532.23 606.563 532.688C606.269 533.146 605.838 533.51 605.271 533.78C604.707 534.05 604.022 534.185 603.216 534.185C602.464 534.185 601.813 534.063 601.263 533.821C600.716 533.578 600.285 533.24 599.971 532.806C599.66 532.372 599.484 531.868 599.443 531.294H600.755C600.789 531.69 600.923 532.018 601.155 532.278C601.391 532.534 601.688 532.725 602.047 532.852C602.409 532.975 602.799 533.036 603.216 533.036C603.701 533.036 604.136 532.958 604.523 532.801C604.909 532.64 605.215 532.418 605.44 532.134C605.666 531.847 605.778 531.512 605.778 531.13C605.778 530.781 605.681 530.497 605.486 530.279C605.291 530.06 605.035 529.882 604.717 529.746C604.4 529.609 604.056 529.489 603.687 529.387L602.395 529.018C601.575 528.782 600.926 528.445 600.448 528.008C599.969 527.571 599.73 526.998 599.73 526.291C599.73 525.703 599.889 525.191 600.207 524.753C600.528 524.313 600.959 523.971 601.498 523.728C602.042 523.482 602.648 523.359 603.318 523.359C603.995 523.359 604.596 523.48 605.122 523.723C605.648 523.962 606.065 524.29 606.373 524.707C606.684 525.124 606.848 525.597 606.865 526.127H605.635ZM614.329 530.781V526.127H615.539V534H614.329V532.667H614.247C614.063 533.067 613.776 533.407 613.386 533.687C612.996 533.964 612.504 534.103 611.91 534.103C611.418 534.103 610.98 533.995 610.598 533.78C610.215 533.561 609.914 533.233 609.696 532.795C609.477 532.355 609.367 531.799 609.367 531.13V526.127H610.577V531.048C610.577 531.622 610.738 532.08 611.059 532.421C611.384 532.763 611.797 532.934 612.299 532.934C612.6 532.934 612.906 532.857 613.217 532.703C613.531 532.549 613.794 532.314 614.006 531.996C614.221 531.678 614.329 531.273 614.329 530.781ZM618.187 536.952V526.127H619.356V527.378H619.5C619.588 527.241 619.711 527.067 619.869 526.855C620.029 526.64 620.258 526.448 620.555 526.281C620.856 526.11 621.263 526.024 621.775 526.024C622.438 526.024 623.023 526.19 623.528 526.522C624.034 526.853 624.429 527.323 624.712 527.931C624.996 528.539 625.138 529.257 625.138 530.084C625.138 530.918 624.996 531.64 624.712 532.252C624.429 532.86 624.036 533.332 623.533 533.667C623.031 533.998 622.452 534.164 621.796 534.164C621.29 534.164 620.885 534.08 620.581 533.913C620.277 533.742 620.043 533.549 619.879 533.334C619.715 533.115 619.588 532.934 619.5 532.79H619.397V536.952H618.187ZM619.377 530.063C619.377 530.658 619.464 531.183 619.638 531.637C619.812 532.088 620.067 532.442 620.402 532.698C620.737 532.951 621.147 533.077 621.632 533.077C622.138 533.077 622.56 532.944 622.898 532.678C623.24 532.408 623.496 532.045 623.667 531.591C623.841 531.133 623.928 530.624 623.928 530.063C623.928 529.51 623.843 529.011 623.672 528.567C623.504 528.119 623.25 527.765 622.908 527.506C622.57 527.243 622.144 527.111 621.632 527.111C621.14 527.111 620.726 527.236 620.391 527.485C620.057 527.731 619.804 528.076 619.633 528.521C619.462 528.961 619.377 529.476 619.377 530.063ZM630.717 534.164C629.958 534.164 629.304 533.997 628.754 533.662C628.207 533.323 627.785 532.852 627.488 532.247C627.194 531.639 627.047 530.931 627.047 530.125C627.047 529.319 627.194 528.608 627.488 527.993C627.785 527.374 628.199 526.892 628.728 526.547C629.261 526.199 629.883 526.024 630.594 526.024C631.004 526.024 631.409 526.093 631.809 526.229C632.209 526.366 632.572 526.588 632.9 526.896C633.229 527.2 633.49 527.603 633.685 528.105C633.879 528.608 633.977 529.226 633.977 529.961V530.474H627.908V529.428H632.747C632.747 528.984 632.658 528.587 632.48 528.239C632.306 527.89 632.056 527.615 631.732 527.414C631.411 527.212 631.031 527.111 630.594 527.111C630.112 527.111 629.695 527.231 629.343 527.47C628.995 527.706 628.726 528.013 628.539 528.393C628.351 528.772 628.257 529.178 628.257 529.612V530.31C628.257 530.904 628.359 531.408 628.564 531.822C628.773 532.232 629.061 532.544 629.43 532.76C629.799 532.971 630.228 533.077 630.717 533.077C631.035 533.077 631.322 533.033 631.578 532.944C631.838 532.852 632.062 532.715 632.25 532.534C632.437 532.35 632.583 532.121 632.685 531.847L633.854 532.175C633.731 532.572 633.524 532.92 633.234 533.221C632.943 533.518 632.584 533.751 632.157 533.918C631.73 534.082 631.25 534.164 630.717 534.164ZM636.25 534V526.127H637.419V527.316H637.501C637.644 526.927 637.904 526.611 638.28 526.368C638.656 526.125 639.079 526.004 639.551 526.004C639.64 526.004 639.751 526.006 639.884 526.009C640.017 526.013 640.118 526.018 640.187 526.024V527.255C640.145 527.244 640.052 527.229 639.905 527.208C639.761 527.185 639.609 527.173 639.448 527.173C639.066 527.173 638.724 527.253 638.423 527.414C638.126 527.571 637.89 527.789 637.716 528.07C637.545 528.346 637.46 528.662 637.46 529.018V534H636.25ZM642.053 534V526.127H643.222V527.357H643.325C643.489 526.937 643.753 526.611 644.119 526.378C644.485 526.142 644.924 526.024 645.436 526.024C645.956 526.024 646.388 526.142 646.733 526.378C647.082 526.611 647.353 526.937 647.548 527.357H647.63C647.832 526.951 648.134 526.628 648.537 526.388C648.941 526.146 649.424 526.024 649.988 526.024C650.692 526.024 651.268 526.245 651.715 526.686C652.163 527.123 652.387 527.805 652.387 528.731V534H651.177V528.731C651.177 528.15 651.018 527.735 650.7 527.485C650.383 527.236 650.008 527.111 649.578 527.111C649.024 527.111 648.595 527.279 648.291 527.613C647.987 527.945 647.835 528.365 647.835 528.874V534H646.605V528.608C646.605 528.16 646.46 527.8 646.169 527.526C645.879 527.25 645.505 527.111 645.047 527.111C644.732 527.111 644.439 527.195 644.165 527.362C643.895 527.53 643.677 527.762 643.509 528.059C643.345 528.353 643.263 528.693 643.263 529.079V534H642.053ZM658.332 534.164C657.574 534.164 656.919 533.997 656.369 533.662C655.823 533.323 655.401 532.852 655.103 532.247C654.809 531.639 654.662 530.931 654.662 530.125C654.662 529.319 654.809 528.608 655.103 527.993C655.401 527.374 655.814 526.892 656.344 526.547C656.877 526.199 657.499 526.024 658.209 526.024C658.619 526.024 659.024 526.093 659.424 526.229C659.824 526.366 660.188 526.588 660.516 526.896C660.844 527.2 661.105 527.603 661.3 528.105C661.495 528.608 661.592 529.226 661.592 529.961V530.474H655.524V529.428H660.362C660.362 528.984 660.273 528.587 660.096 528.239C659.921 527.89 659.672 527.615 659.347 527.414C659.026 527.212 658.647 527.111 658.209 527.111C657.728 527.111 657.311 527.231 656.959 527.47C656.61 527.706 656.342 528.013 656.154 528.393C655.966 528.772 655.872 529.178 655.872 529.612V530.31C655.872 530.904 655.975 531.408 656.18 531.822C656.388 532.232 656.677 532.544 657.046 532.76C657.415 532.971 657.844 533.077 658.332 533.077C658.65 533.077 658.937 533.033 659.194 532.944C659.453 532.852 659.677 532.715 659.865 532.534C660.053 532.35 660.198 532.121 660.301 531.847L661.469 532.175C661.346 532.572 661.14 532.92 660.849 533.221C660.559 533.518 660.2 533.751 659.773 533.918C659.346 534.082 658.865 534.164 658.332 534.164ZM663.865 534V526.127H665.034V527.357H665.137C665.301 526.937 665.565 526.611 665.931 526.378C666.297 526.142 666.736 526.024 667.248 526.024C667.768 526.024 668.2 526.142 668.545 526.378C668.894 526.611 669.165 526.937 669.36 527.357H669.442C669.644 526.951 669.946 526.628 670.349 526.388C670.753 526.146 671.236 526.024 671.8 526.024C672.504 526.024 673.08 526.245 673.527 526.686C673.975 527.123 674.199 527.805 674.199 528.731V534H672.989V528.731C672.989 528.15 672.83 527.735 672.512 527.485C672.195 527.236 671.821 527.111 671.39 527.111C670.836 527.111 670.408 527.279 670.103 527.613C669.799 527.945 669.647 528.365 669.647 528.874V534H668.417V528.608C668.417 528.16 668.272 527.8 667.981 527.526C667.691 527.25 667.317 527.111 666.859 527.111C666.544 527.111 666.251 527.195 665.977 527.362C665.707 527.53 665.489 527.762 665.321 528.059C665.157 528.353 665.075 528.693 665.075 529.079V534H663.865ZM680.042 534.164C679.331 534.164 678.708 533.995 678.171 533.657C677.638 533.318 677.221 532.845 676.92 532.237C676.623 531.629 676.474 530.918 676.474 530.104C676.474 529.284 676.623 528.569 676.92 527.957C677.221 527.345 677.638 526.87 678.171 526.532C678.708 526.194 679.331 526.024 680.042 526.024C680.753 526.024 681.375 526.194 681.908 526.532C682.444 526.87 682.861 527.345 683.158 527.957C683.459 528.569 683.609 529.284 683.609 530.104C683.609 530.918 683.459 531.629 683.158 532.237C682.861 532.845 682.444 533.318 681.908 533.657C681.375 533.995 680.753 534.164 680.042 534.164ZM680.042 533.077C680.582 533.077 681.026 532.939 681.375 532.662C681.723 532.385 681.981 532.021 682.149 531.57C682.316 531.119 682.4 530.631 682.4 530.104C682.4 529.578 682.316 529.088 682.149 528.633C681.981 528.179 681.723 527.812 681.375 527.531C681.026 527.251 680.582 527.111 680.042 527.111C679.502 527.111 679.058 527.251 678.709 527.531C678.361 527.812 678.103 528.179 677.935 528.633C677.768 529.088 677.684 529.578 677.684 530.104C677.684 530.631 677.768 531.119 677.935 531.57C678.103 532.021 678.361 532.385 678.709 532.662C679.058 532.939 679.502 533.077 680.042 533.077ZM685.889 534V526.127H687.058V527.316H687.14C687.283 526.927 687.543 526.611 687.919 526.368C688.295 526.125 688.718 526.004 689.19 526.004C689.279 526.004 689.39 526.006 689.523 526.009C689.656 526.013 689.757 526.018 689.825 526.024V527.255C689.784 527.244 689.69 527.229 689.544 527.208C689.4 527.185 689.248 527.173 689.087 527.173C688.705 527.173 688.363 527.253 688.062 527.414C687.765 527.571 687.529 527.789 687.355 528.07C687.184 528.346 687.099 528.662 687.099 529.018V534H685.889ZM692.711 536.952C692.506 536.952 692.323 536.935 692.163 536.901C692.002 536.87 691.891 536.84 691.829 536.809L692.137 535.743C692.431 535.818 692.691 535.845 692.916 535.825C693.142 535.804 693.342 535.703 693.516 535.522C693.694 535.345 693.856 535.056 694.003 534.656L694.228 534.041L691.317 526.127H692.629L694.802 532.401H694.884L697.058 526.127H698.37L695.028 535.148C694.878 535.555 694.691 535.891 694.469 536.158C694.247 536.428 693.989 536.628 693.695 536.758C693.405 536.887 693.077 536.952 692.711 536.952ZM700.788 534.082C700.535 534.082 700.318 533.991 700.137 533.81C699.956 533.629 699.865 533.412 699.865 533.159C699.865 532.907 699.956 532.69 700.137 532.508C700.318 532.327 700.535 532.237 700.788 532.237C701.041 532.237 701.258 532.327 701.439 532.508C701.62 532.69 701.71 532.907 701.71 533.159C701.71 533.327 701.668 533.481 701.582 533.621C701.5 533.761 701.389 533.874 701.249 533.959C701.112 534.041 700.959 534.082 700.788 534.082ZM706.631 534.185C706.132 534.185 705.679 534.091 705.273 533.903C704.866 533.711 704.543 533.436 704.304 533.077C704.065 532.715 703.945 532.278 703.945 531.765C703.945 531.314 704.034 530.949 704.212 530.668C704.389 530.385 704.627 530.163 704.924 530.002C705.221 529.841 705.549 529.722 705.908 529.643C706.27 529.561 706.634 529.496 707 529.448C707.478 529.387 707.866 529.341 708.163 529.31C708.464 529.276 708.683 529.219 708.82 529.141C708.96 529.062 709.03 528.926 709.03 528.731V528.69C709.03 528.184 708.891 527.791 708.615 527.511C708.341 527.231 707.926 527.091 707.369 527.091C706.792 527.091 706.339 527.217 706.011 527.47C705.683 527.723 705.452 527.993 705.319 528.28L704.171 527.87C704.376 527.391 704.649 527.019 704.991 526.752C705.336 526.482 705.712 526.294 706.118 526.188C706.528 526.079 706.932 526.024 707.328 526.024C707.581 526.024 707.871 526.055 708.199 526.117C708.531 526.175 708.85 526.296 709.158 526.481C709.469 526.665 709.727 526.944 709.932 527.316C710.137 527.689 710.239 528.188 710.239 528.813V534H709.03V532.934H708.968C708.886 533.105 708.75 533.288 708.558 533.482C708.367 533.677 708.112 533.843 707.794 533.979C707.477 534.116 707.089 534.185 706.631 534.185ZM706.815 533.098C707.294 533.098 707.697 533.004 708.025 532.816C708.357 532.628 708.606 532.385 708.773 532.088C708.944 531.791 709.03 531.478 709.03 531.15V530.043C708.978 530.104 708.866 530.161 708.691 530.212C708.521 530.26 708.322 530.303 708.097 530.34C707.875 530.374 707.658 530.405 707.446 530.433C707.237 530.456 707.068 530.477 706.938 530.494C706.624 530.535 706.33 530.602 706.057 530.694C705.787 530.783 705.568 530.918 705.401 531.099C705.237 531.277 705.155 531.519 705.155 531.827C705.155 532.247 705.31 532.565 705.621 532.78C705.936 532.992 706.334 533.098 706.815 533.098ZM712.88 534V526.127H714.09V534H712.88ZM713.495 524.815C713.26 524.815 713.056 524.735 712.885 524.574C712.718 524.413 712.634 524.22 712.634 523.995C712.634 523.769 712.718 523.576 712.885 523.416C713.056 523.255 713.26 523.175 713.495 523.175C713.731 523.175 713.933 523.255 714.1 523.416C714.271 523.576 714.356 523.769 714.356 523.995C714.356 524.22 714.271 524.413 714.1 524.574C713.933 524.735 713.731 524.815 713.495 524.815ZM721.231 536.952V526.127H722.4V527.378H722.543C722.632 527.241 722.755 527.067 722.912 526.855C723.073 526.64 723.302 526.448 723.599 526.281C723.9 526.11 724.306 526.024 724.819 526.024C725.482 526.024 726.066 526.19 726.572 526.522C727.078 526.853 727.472 527.323 727.756 527.931C728.04 528.539 728.181 529.257 728.181 530.084C728.181 530.918 728.04 531.64 727.756 532.252C727.472 532.86 727.079 533.332 726.577 533.667C726.075 533.998 725.496 534.164 724.84 534.164C724.334 534.164 723.929 534.08 723.625 533.913C723.321 533.742 723.087 533.549 722.923 533.334C722.758 533.115 722.632 532.934 722.543 532.79H722.441V536.952H721.231ZM722.42 530.063C722.42 530.658 722.507 531.183 722.682 531.637C722.856 532.088 723.11 532.442 723.445 532.698C723.78 532.951 724.19 533.077 724.675 533.077C725.181 533.077 725.603 532.944 725.942 532.678C726.283 532.408 726.54 532.045 726.71 531.591C726.885 531.133 726.972 530.624 726.972 530.063C726.972 529.51 726.886 529.011 726.716 528.567C726.548 528.119 726.293 527.765 725.952 527.506C725.613 527.243 725.188 527.111 724.675 527.111C724.183 527.111 723.77 527.236 723.435 527.485C723.1 527.731 722.847 528.076 722.676 528.521C722.506 528.961 722.42 529.476 722.42 530.063ZM730.46 534V526.127H731.628V527.316H731.71C731.854 526.927 732.114 526.611 732.489 526.368C732.865 526.125 733.289 526.004 733.761 526.004C733.849 526.004 733.961 526.006 734.094 526.009C734.227 526.013 734.328 526.018 734.396 526.024V527.255C734.355 527.244 734.261 527.229 734.114 527.208C733.971 527.185 733.819 527.173 733.658 527.173C733.275 527.173 732.934 527.253 732.633 527.414C732.336 527.571 732.1 527.789 731.926 528.07C731.755 528.346 731.669 528.662 731.669 529.018V534H730.46ZM739.222 534.164C738.511 534.164 737.888 533.995 737.351 533.657C736.818 533.318 736.401 532.845 736.1 532.237C735.803 531.629 735.654 530.918 735.654 530.104C735.654 529.284 735.803 528.569 736.1 527.957C736.401 527.345 736.818 526.87 737.351 526.532C737.888 526.194 738.511 526.024 739.222 526.024C739.933 526.024 740.555 526.194 741.088 526.532C741.624 526.87 742.041 527.345 742.338 527.957C742.639 528.569 742.789 529.284 742.789 530.104C742.789 530.918 742.639 531.629 742.338 532.237C742.041 532.845 741.624 533.318 741.088 533.657C740.555 533.995 739.933 534.164 739.222 534.164ZM739.222 533.077C739.762 533.077 740.206 532.939 740.555 532.662C740.903 532.385 741.161 532.021 741.329 531.57C741.496 531.119 741.58 530.631 741.58 530.104C741.58 529.578 741.496 529.088 741.329 528.633C741.161 528.179 740.903 527.812 740.555 527.531C740.206 527.251 739.762 527.111 739.222 527.111C738.682 527.111 738.238 527.251 737.889 527.531C737.541 527.812 737.283 528.179 737.115 528.633C736.948 529.088 736.864 529.578 736.864 530.104C736.864 530.631 736.948 531.119 737.115 531.57C737.283 532.021 737.541 532.385 737.889 532.662C738.238 532.939 738.682 533.077 739.222 533.077ZM745.069 526.127H746.279V534.574C746.279 535.059 746.195 535.48 746.027 535.835C745.863 536.19 745.614 536.465 745.279 536.66C744.948 536.855 744.529 536.952 744.023 536.952C743.982 536.952 743.941 536.952 743.9 536.952C743.859 536.952 743.818 536.952 743.777 536.952V535.825C743.818 535.825 743.856 535.825 743.89 535.825C743.924 535.825 743.962 535.825 744.003 535.825C744.372 535.825 744.642 535.715 744.813 535.497C744.983 535.281 745.069 534.974 745.069 534.574V526.127ZM745.663 524.815C745.428 524.815 745.224 524.735 745.054 524.574C744.886 524.413 744.802 524.22 744.802 523.995C744.802 523.769 744.886 523.576 745.054 523.416C745.224 523.255 745.428 523.175 745.663 523.175C745.899 523.175 746.101 523.255 746.268 523.416C746.439 523.576 746.525 523.769 746.525 523.995C746.525 524.22 746.439 524.413 746.268 524.574C746.101 524.735 745.899 524.815 745.663 524.815ZM752.228 534.164C751.469 534.164 750.815 533.997 750.265 533.662C749.718 533.323 749.296 532.852 748.999 532.247C748.705 531.639 748.558 530.931 748.558 530.125C748.558 529.319 748.705 528.608 748.999 527.993C749.296 527.374 749.71 526.892 750.239 526.547C750.772 526.199 751.394 526.024 752.105 526.024C752.515 526.024 752.92 526.093 753.32 526.229C753.72 526.366 754.084 526.588 754.412 526.896C754.74 527.2 755.001 527.603 755.196 528.105C755.391 528.608 755.488 529.226 755.488 529.961V530.474H749.419V529.428H754.258C754.258 528.984 754.169 528.587 753.991 528.239C753.817 527.89 753.568 527.615 753.243 527.414C752.922 527.212 752.542 527.111 752.105 527.111C751.623 527.111 751.206 527.231 750.854 527.47C750.506 527.706 750.238 528.013 750.05 528.393C749.862 528.772 749.768 529.178 749.768 529.612V530.31C749.768 530.904 749.87 531.408 750.075 531.822C750.284 532.232 750.572 532.544 750.942 532.76C751.311 532.971 751.739 533.077 752.228 533.077C752.546 533.077 752.833 533.033 753.089 532.944C753.349 532.852 753.573 532.715 753.761 532.534C753.949 532.35 754.094 532.121 754.196 531.847L755.365 532.175C755.242 532.572 755.035 532.92 754.745 533.221C754.454 533.518 754.096 533.751 753.668 533.918C753.241 534.082 752.761 534.164 752.228 534.164ZM760.96 534.164C760.221 534.164 759.586 533.99 759.053 533.641C758.52 533.293 758.11 532.813 757.823 532.201C757.536 531.589 757.392 530.89 757.392 530.104C757.392 529.305 757.539 528.599 757.833 527.988C758.13 527.373 758.544 526.892 759.073 526.547C759.606 526.199 760.228 526.024 760.939 526.024C761.493 526.024 761.992 526.127 762.436 526.332C762.88 526.537 763.244 526.824 763.528 527.193C763.811 527.562 763.987 527.993 764.055 528.485H762.846C762.754 528.126 762.549 527.808 762.231 527.531C761.916 527.251 761.493 527.111 760.96 527.111C760.488 527.111 760.075 527.234 759.719 527.48C759.367 527.723 759.092 528.066 758.894 528.51C758.699 528.951 758.602 529.469 758.602 530.063C758.602 530.672 758.697 531.201 758.889 531.652C759.084 532.104 759.357 532.454 759.709 532.703C760.064 532.953 760.481 533.077 760.96 533.077C761.274 533.077 761.559 533.023 761.816 532.913C762.072 532.804 762.289 532.647 762.466 532.442C762.644 532.237 762.771 531.991 762.846 531.704H764.055C763.987 532.168 763.818 532.587 763.548 532.959C763.281 533.329 762.928 533.622 762.487 533.841C762.05 534.056 761.54 534.164 760.96 534.164ZM769.681 526.127V527.152H765.601V526.127H769.681ZM766.79 524.241H768V531.745C768 532.086 768.049 532.343 768.148 532.514C768.251 532.681 768.381 532.794 768.538 532.852C768.698 532.907 768.867 532.934 769.045 532.934C769.178 532.934 769.288 532.927 769.373 532.913C769.459 532.896 769.527 532.883 769.578 532.872L769.824 533.959C769.742 533.99 769.628 534.021 769.481 534.051C769.334 534.085 769.148 534.103 768.922 534.103C768.58 534.103 768.246 534.029 767.918 533.882C767.593 533.735 767.323 533.511 767.108 533.211C766.896 532.91 766.79 532.531 766.79 532.073V524.241ZM778.743 534.185C778.244 534.185 777.791 534.091 777.384 533.903C776.978 533.711 776.655 533.436 776.416 533.077C776.176 532.715 776.057 532.278 776.057 531.765C776.057 531.314 776.146 530.949 776.323 530.668C776.501 530.385 776.739 530.163 777.036 530.002C777.333 529.841 777.661 529.722 778.02 529.643C778.382 529.561 778.746 529.496 779.112 529.448C779.59 529.387 779.978 529.341 780.275 529.31C780.576 529.276 780.795 529.219 780.931 529.141C781.071 529.062 781.142 528.926 781.142 528.731V528.69C781.142 528.184 781.003 527.791 780.726 527.511C780.453 527.231 780.038 527.091 779.481 527.091C778.903 527.091 778.451 527.217 778.122 527.47C777.794 527.723 777.564 527.993 777.431 528.28L776.282 527.87C776.487 527.391 776.761 527.019 777.102 526.752C777.448 526.482 777.823 526.294 778.23 526.188C778.64 526.079 779.043 526.024 779.44 526.024C779.693 526.024 779.983 526.055 780.311 526.117C780.643 526.175 780.962 526.296 781.27 526.481C781.581 526.665 781.839 526.944 782.044 527.316C782.249 527.689 782.351 528.188 782.351 528.813V534H781.142V532.934H781.08C780.998 533.105 780.861 533.288 780.67 533.482C780.479 533.677 780.224 533.843 779.906 533.979C779.588 534.116 779.201 534.185 778.743 534.185ZM778.927 533.098C779.406 533.098 779.809 533.004 780.137 532.816C780.468 532.628 780.718 532.385 780.885 532.088C781.056 531.791 781.142 531.478 781.142 531.15V530.043C781.09 530.104 780.977 530.161 780.803 530.212C780.632 530.26 780.434 530.303 780.209 530.34C779.987 530.374 779.77 530.405 779.558 530.433C779.349 530.456 779.18 530.477 779.05 530.494C778.736 530.535 778.442 530.602 778.169 530.694C777.899 530.783 777.68 530.918 777.513 531.099C777.349 531.277 777.267 531.519 777.267 531.827C777.267 532.247 777.422 532.565 777.733 532.78C778.047 532.992 778.445 533.098 778.927 533.098ZM786.202 529.264V534H784.992V526.127H786.161V527.357H786.263C786.448 526.957 786.728 526.636 787.104 526.394C787.48 526.147 787.965 526.024 788.56 526.024C789.093 526.024 789.559 526.134 789.959 526.353C790.359 526.568 790.67 526.896 790.892 527.337C791.114 527.774 791.225 528.328 791.225 528.997V534H790.015V529.079C790.015 528.461 789.855 527.979 789.533 527.634C789.212 527.285 788.771 527.111 788.211 527.111C787.825 527.111 787.48 527.195 787.176 527.362C786.875 527.53 786.637 527.774 786.463 528.095C786.289 528.416 786.202 528.806 786.202 529.264ZM796.841 534.164C796.185 534.164 795.606 533.998 795.104 533.667C794.601 533.332 794.208 532.86 793.925 532.252C793.641 531.64 793.499 530.918 793.499 530.084C793.499 529.257 793.641 528.539 793.925 527.931C794.208 527.323 794.603 526.853 795.109 526.522C795.614 526.19 796.199 526.024 796.862 526.024C797.374 526.024 797.779 526.11 798.077 526.281C798.377 526.448 798.606 526.64 798.763 526.855C798.924 527.067 799.049 527.241 799.138 527.378H799.24V523.503H800.45V534H799.281V532.79H799.138C799.049 532.934 798.922 533.115 798.758 533.334C798.594 533.549 798.36 533.742 798.056 533.913C797.752 534.08 797.347 534.164 796.841 534.164ZM797.005 533.077C797.49 533.077 797.901 532.951 798.235 532.698C798.57 532.442 798.825 532.088 798.999 531.637C799.173 531.183 799.261 530.658 799.261 530.063C799.261 529.476 799.175 528.961 799.004 528.521C798.833 528.076 798.581 527.731 798.246 527.485C797.911 527.236 797.497 527.111 797.005 527.111C796.493 527.111 796.066 527.243 795.724 527.506C795.386 527.765 795.131 528.119 794.96 528.567C794.793 529.011 794.709 529.51 794.709 530.063C794.709 530.624 794.794 531.133 794.965 531.591C795.14 532.045 795.396 532.408 795.734 532.678C796.076 532.944 796.5 533.077 797.005 533.077ZM811.06 534.164C810.301 534.164 809.647 533.997 809.096 533.662C808.55 533.323 808.128 532.852 807.83 532.247C807.537 531.639 807.39 530.931 807.39 530.125C807.39 529.319 807.537 528.608 807.83 527.993C808.128 527.374 808.541 526.892 809.071 526.547C809.604 526.199 810.226 526.024 810.937 526.024C811.347 526.024 811.752 526.093 812.151 526.229C812.551 526.366 812.915 526.588 813.243 526.896C813.571 527.2 813.833 527.603 814.027 528.105C814.222 528.608 814.32 529.226 814.32 529.961V530.474H808.251V529.428H813.089C813.089 528.984 813.001 528.587 812.823 528.239C812.649 527.89 812.399 527.615 812.074 527.414C811.753 527.212 811.374 527.111 810.937 527.111C810.455 527.111 810.038 527.231 809.686 527.47C809.337 527.706 809.069 528.013 808.881 528.393C808.693 528.772 808.599 529.178 808.599 529.612V530.31C808.599 530.904 808.702 531.408 808.907 531.822C809.115 532.232 809.404 532.544 809.773 532.76C810.142 532.971 810.571 533.077 811.06 533.077C811.377 533.077 811.664 533.033 811.921 532.944C812.18 532.852 812.404 532.715 812.592 532.534C812.78 532.35 812.925 532.121 813.028 531.847L814.196 532.175C814.073 532.572 813.867 532.92 813.576 533.221C813.286 533.518 812.927 533.751 812.5 533.918C812.073 534.082 811.593 534.164 811.06 534.164ZM817.283 526.127L819.17 529.346L821.056 526.127H822.45L819.908 530.063L822.45 534H821.056L819.17 530.945L817.283 534H815.889L818.39 530.063L815.889 526.127H817.283ZM827.483 534.164C826.745 534.164 826.11 533.99 825.577 533.641C825.043 533.293 824.633 532.813 824.346 532.201C824.059 531.589 823.916 530.89 823.916 530.104C823.916 529.305 824.063 528.599 824.357 527.988C824.654 527.373 825.067 526.892 825.597 526.547C826.13 526.199 826.752 526.024 827.463 526.024C828.016 526.024 828.515 526.127 828.959 526.332C829.404 526.537 829.768 526.824 830.051 527.193C830.335 527.562 830.511 527.993 830.579 528.485H829.37C829.277 528.126 829.072 527.808 828.754 527.531C828.44 527.251 828.016 527.111 827.483 527.111C827.012 527.111 826.598 527.234 826.243 527.48C825.891 527.723 825.616 528.066 825.418 528.51C825.223 528.951 825.125 529.469 825.125 530.063C825.125 530.672 825.221 531.201 825.413 531.652C825.607 532.104 825.881 532.454 826.233 532.703C826.588 532.953 827.005 533.077 827.483 533.077C827.798 533.077 828.083 533.023 828.339 532.913C828.596 532.804 828.813 532.647 828.99 532.442C829.168 532.237 829.294 531.991 829.37 531.704H830.579C830.511 532.168 830.342 532.587 830.072 532.959C829.805 533.329 829.452 533.622 829.011 533.841C828.573 534.056 828.064 534.164 827.483 534.164ZM836.081 534.164C835.323 534.164 834.668 533.997 834.118 533.662C833.572 533.323 833.15 532.852 832.852 532.247C832.558 531.639 832.411 530.931 832.411 530.125C832.411 529.319 832.558 528.608 832.852 527.993C833.15 527.374 833.563 526.892 834.093 526.547C834.626 526.199 835.248 526.024 835.958 526.024C836.369 526.024 836.773 526.093 837.173 526.229C837.573 526.366 837.937 526.588 838.265 526.896C838.593 527.2 838.854 527.603 839.049 528.105C839.244 528.608 839.341 529.226 839.341 529.961V530.474H833.273V529.428H838.111C838.111 528.984 838.022 528.587 837.845 528.239C837.67 527.89 837.421 527.615 837.096 527.414C836.775 527.212 836.396 527.111 835.958 527.111C835.477 527.111 835.06 527.231 834.708 527.47C834.359 527.706 834.091 528.013 833.903 528.393C833.715 528.772 833.621 529.178 833.621 529.612V530.31C833.621 530.904 833.724 531.408 833.929 531.822C834.137 532.232 834.426 532.544 834.795 532.76C835.164 532.971 835.593 533.077 836.081 533.077C836.399 533.077 836.686 533.033 836.943 532.944C837.202 532.852 837.426 532.715 837.614 532.534C837.802 532.35 837.947 532.121 838.05 531.847L839.218 532.175C839.095 532.572 838.889 532.92 838.598 533.221C838.308 533.518 837.949 533.751 837.522 533.918C837.095 534.082 836.615 534.164 836.081 534.164ZM842.824 523.503V534H841.615V523.503H842.824ZM851.049 527.89L849.963 528.198C849.895 528.017 849.794 527.841 849.66 527.67C849.531 527.496 849.353 527.352 849.127 527.239C848.902 527.126 848.613 527.07 848.261 527.07C847.779 527.07 847.378 527.181 847.057 527.403C846.739 527.622 846.58 527.9 846.58 528.239C846.58 528.539 846.689 528.777 846.908 528.951C847.127 529.125 847.468 529.271 847.933 529.387L849.102 529.674C849.806 529.845 850.33 530.106 850.675 530.458C851.02 530.807 851.193 531.256 851.193 531.806C851.193 532.257 851.063 532.66 850.803 533.016C850.547 533.371 850.188 533.651 849.727 533.856C849.266 534.062 848.729 534.164 848.118 534.164C847.315 534.164 846.65 533.99 846.124 533.641C845.597 533.293 845.264 532.784 845.124 532.114L846.272 531.827C846.382 532.25 846.588 532.568 846.893 532.78C847.2 532.992 847.602 533.098 848.097 533.098C848.661 533.098 849.109 532.978 849.44 532.739C849.775 532.496 849.942 532.206 849.942 531.868C849.942 531.594 849.847 531.365 849.655 531.181C849.464 530.993 849.17 530.853 848.774 530.761L847.462 530.453C846.741 530.282 846.211 530.017 845.873 529.659C845.538 529.296 845.37 528.844 845.37 528.3C845.37 527.856 845.495 527.463 845.744 527.121C845.997 526.78 846.341 526.511 846.775 526.317C847.212 526.122 847.708 526.024 848.261 526.024C849.04 526.024 849.652 526.195 850.096 526.537C850.544 526.879 850.862 527.33 851.049 527.89ZM857.939 534V526.127H859.149V534H857.939ZM858.555 524.815C858.319 524.815 858.115 524.735 857.945 524.574C857.777 524.413 857.693 524.22 857.693 523.995C857.693 523.769 857.777 523.576 857.945 523.416C858.115 523.255 858.319 523.175 858.555 523.175C858.79 523.175 858.992 523.255 859.159 523.416C859.33 523.576 859.416 523.769 859.416 523.995C859.416 524.22 859.33 524.413 859.159 524.574C858.992 524.735 858.79 524.815 858.555 524.815ZM863.007 529.264V534H861.798V526.127H862.966V527.357H863.069C863.253 526.957 863.534 526.636 863.909 526.394C864.285 526.147 864.771 526.024 865.365 526.024C865.898 526.024 866.365 526.134 866.764 526.353C867.164 526.568 867.475 526.896 867.697 527.337C867.919 527.774 868.03 528.328 868.03 528.997V534H866.821V529.079C866.821 528.461 866.66 527.979 866.339 527.634C866.018 527.285 865.577 527.111 865.017 527.111C864.63 527.111 864.285 527.195 863.981 527.362C863.681 527.53 863.443 527.774 863.269 528.095C863.094 528.416 863.007 528.806 863.007 529.264ZM878.139 534.164C877.483 534.164 876.904 533.998 876.402 533.667C875.899 533.332 875.507 532.86 875.223 532.252C874.939 531.64 874.797 530.918 874.797 530.084C874.797 529.257 874.939 528.539 875.223 527.931C875.507 527.323 875.901 526.853 876.407 526.522C876.913 526.19 877.497 526.024 878.16 526.024C878.672 526.024 879.077 526.11 879.375 526.281C879.675 526.448 879.904 526.64 880.062 526.855C880.222 527.067 880.347 527.241 880.436 527.378H880.538V523.503H881.748V534H880.579V532.79H880.436C880.347 532.934 880.22 533.115 880.056 533.334C879.892 533.549 879.658 533.742 879.354 533.913C879.05 534.08 878.645 534.164 878.139 534.164ZM878.303 533.077C878.789 533.077 879.199 532.951 879.534 532.698C879.868 532.442 880.123 532.088 880.297 531.637C880.472 531.183 880.559 530.658 880.559 530.063C880.559 529.476 880.473 528.961 880.302 528.521C880.132 528.076 879.879 527.731 879.544 527.485C879.209 527.236 878.795 527.111 878.303 527.111C877.791 527.111 877.364 527.243 877.022 527.506C876.684 527.765 876.429 528.119 876.258 528.567C876.091 529.011 876.007 529.51 876.007 530.063C876.007 530.624 876.093 531.133 876.263 531.591C876.438 532.045 876.694 532.408 877.032 532.678C877.374 532.944 877.798 533.077 878.303 533.077ZM887.865 534.164C887.107 534.164 886.452 533.997 885.902 533.662C885.355 533.323 884.933 532.852 884.636 532.247C884.342 531.639 884.195 530.931 884.195 530.125C884.195 529.319 884.342 528.608 884.636 527.993C884.933 527.374 885.347 526.892 885.876 526.547C886.41 526.199 887.031 526.024 887.742 526.024C888.152 526.024 888.557 526.093 888.957 526.229C889.357 526.366 889.721 526.588 890.049 526.896C890.377 527.2 890.638 527.603 890.833 528.105C891.028 528.608 891.125 529.226 891.125 529.961V530.474H885.056V529.428H889.895C889.895 528.984 889.806 528.587 889.628 528.239C889.454 527.89 889.205 527.615 888.88 527.414C888.559 527.212 888.18 527.111 887.742 527.111C887.26 527.111 886.844 527.231 886.492 527.47C886.143 527.706 885.875 528.013 885.687 528.393C885.499 528.772 885.405 529.178 885.405 529.612V530.31C885.405 530.904 885.507 531.408 885.712 531.822C885.921 532.232 886.21 532.544 886.579 532.76C886.948 532.971 887.377 533.077 887.865 533.077C888.183 533.077 888.47 533.033 888.726 532.944C888.986 532.852 889.21 532.715 889.398 532.534C889.586 532.35 889.731 532.121 889.833 531.847L891.002 532.175C890.879 532.572 890.672 532.92 890.382 533.221C890.091 533.518 889.733 533.751 889.306 533.918C888.878 534.082 888.398 534.164 887.865 534.164ZM898.975 527.89L897.888 528.198C897.82 528.017 897.719 527.841 897.586 527.67C897.456 527.496 897.278 527.352 897.053 527.239C896.827 527.126 896.539 527.07 896.187 527.07C895.705 527.07 895.303 527.181 894.982 527.403C894.664 527.622 894.505 527.9 894.505 528.239C894.505 528.539 894.615 528.777 894.833 528.951C895.052 529.125 895.394 529.271 895.859 529.387L897.027 529.674C897.731 529.845 898.256 530.106 898.601 530.458C898.946 530.807 899.119 531.256 899.119 531.806C899.119 532.257 898.989 532.66 898.729 533.016C898.473 533.371 898.114 533.651 897.653 533.856C897.191 534.062 896.655 534.164 896.043 534.164C895.24 534.164 894.575 533.99 894.049 533.641C893.523 533.293 893.19 532.784 893.05 532.114L894.198 531.827C894.307 532.25 894.514 532.568 894.818 532.78C895.126 532.992 895.527 533.098 896.023 533.098C896.586 533.098 897.034 532.978 897.366 532.739C897.7 532.496 897.868 532.206 897.868 531.868C897.868 531.594 897.772 531.365 897.581 531.181C897.389 530.993 897.096 530.853 896.699 530.761L895.387 530.453C894.666 530.282 894.136 530.017 893.798 529.659C893.463 529.296 893.296 528.844 893.296 528.3C893.296 527.856 893.42 527.463 893.67 527.121C893.923 526.78 894.266 526.511 894.7 526.317C895.138 526.122 895.633 526.024 896.187 526.024C896.966 526.024 897.577 526.195 898.022 526.537C898.469 526.879 898.787 527.33 898.975 527.89ZM901.372 534V526.127H902.582V534H901.372ZM901.987 524.815C901.752 524.815 901.548 524.735 901.378 524.574C901.21 524.413 901.126 524.22 901.126 523.995C901.126 523.769 901.21 523.576 901.378 523.416C901.548 523.255 901.752 523.175 901.987 523.175C902.223 523.175 902.425 523.255 902.592 523.416C902.763 523.576 902.849 523.769 902.849 523.995C902.849 524.22 902.763 524.413 902.592 524.574C902.425 524.735 902.223 524.815 901.987 524.815ZM908.409 537.116C907.824 537.116 907.322 537.041 906.902 536.891C906.481 536.744 906.131 536.549 905.851 536.307C905.574 536.067 905.354 535.811 905.19 535.538L906.153 534.861C906.263 535.005 906.401 535.169 906.568 535.353C906.736 535.541 906.965 535.703 907.255 535.84C907.549 535.98 907.934 536.05 908.409 536.05C909.044 536.05 909.569 535.896 909.982 535.589C910.396 535.281 910.602 534.8 910.602 534.144V532.544H910.5C910.411 532.688 910.285 532.866 910.121 533.077C909.96 533.286 909.728 533.472 909.423 533.636C909.123 533.797 908.716 533.877 908.204 533.877C907.568 533.877 906.997 533.727 906.492 533.426C905.989 533.125 905.591 532.688 905.297 532.114C905.007 531.54 904.862 530.843 904.862 530.022C904.862 529.216 905.003 528.514 905.287 527.916C905.571 527.314 905.965 526.85 906.471 526.522C906.977 526.19 907.561 526.024 908.224 526.024C908.737 526.024 909.143 526.11 909.444 526.281C909.748 526.448 909.98 526.64 910.141 526.855C910.305 527.067 910.432 527.241 910.52 527.378H910.643V526.127H911.812V534.226C911.812 534.902 911.658 535.452 911.351 535.876C911.047 536.303 910.637 536.616 910.121 536.814C909.608 537.016 909.037 537.116 908.409 537.116ZM908.368 532.79C908.853 532.79 909.263 532.679 909.598 532.457C909.933 532.235 910.187 531.916 910.361 531.499C910.536 531.082 910.623 530.583 910.623 530.002C910.623 529.435 910.537 528.934 910.367 528.5C910.196 528.066 909.943 527.726 909.608 527.48C909.273 527.234 908.86 527.111 908.368 527.111C907.855 527.111 907.428 527.241 907.086 527.501C906.748 527.76 906.493 528.109 906.322 528.546C906.155 528.984 906.071 529.469 906.071 530.002C906.071 530.549 906.157 531.032 906.328 531.453C906.502 531.869 906.758 532.197 907.096 532.437C907.438 532.672 907.862 532.79 908.368 532.79ZM915.669 529.264V534H914.459V526.127H915.628V527.357H915.73C915.915 526.957 916.195 526.636 916.571 526.394C916.947 526.147 917.432 526.024 918.027 526.024C918.56 526.024 919.026 526.134 919.426 526.353C919.826 526.568 920.137 526.896 920.359 527.337C920.581 527.774 920.692 528.328 920.692 528.997V534H919.482V529.079C919.482 528.461 919.322 527.979 919.001 527.634C918.679 527.285 918.239 527.111 917.678 527.111C917.292 527.111 916.947 527.195 916.643 527.362C916.342 527.53 916.105 527.774 915.93 528.095C915.756 528.416 915.669 528.806 915.669 529.264ZM381.408 554.164C380.649 554.164 379.995 553.997 379.445 553.662C378.898 553.323 378.476 552.852 378.179 552.247C377.885 551.639 377.738 550.931 377.738 550.125C377.738 549.319 377.885 548.608 378.179 547.993C378.476 547.374 378.89 546.892 379.419 546.547C379.952 546.199 380.574 546.024 381.285 546.024C381.695 546.024 382.1 546.093 382.5 546.229C382.9 546.366 383.264 546.588 383.592 546.896C383.92 547.2 384.181 547.603 384.376 548.105C384.571 548.608 384.668 549.226 384.668 549.961V550.474H378.599V549.428H383.438C383.438 548.984 383.349 548.587 383.171 548.239C382.997 547.89 382.748 547.615 382.423 547.414C382.102 547.212 381.722 547.111 381.285 547.111C380.803 547.111 380.386 547.231 380.034 547.47C379.686 547.706 379.418 548.013 379.23 548.393C379.042 548.772 378.948 549.178 378.948 549.612V550.31C378.948 550.904 379.05 551.408 379.255 551.822C379.464 552.232 379.752 552.544 380.122 552.76C380.491 552.971 380.919 553.077 381.408 553.077C381.726 553.077 382.013 553.033 382.269 552.944C382.529 552.852 382.753 552.715 382.941 552.534C383.129 552.35 383.274 552.121 383.376 551.847L384.545 552.175C384.422 552.572 384.215 552.92 383.925 553.221C383.634 553.518 383.276 553.751 382.848 553.918C382.421 554.082 381.941 554.164 381.408 554.164ZM388.151 549.264V554H386.941V546.127H388.11V547.357H388.212C388.397 546.957 388.677 546.636 389.053 546.394C389.429 546.147 389.914 546.024 390.509 546.024C391.042 546.024 391.508 546.134 391.908 546.353C392.308 546.568 392.619 546.896 392.841 547.337C393.063 547.774 393.174 548.328 393.174 548.997V554H391.964V549.079C391.964 548.461 391.804 547.979 391.482 547.634C391.161 547.285 390.72 547.111 390.16 547.111C389.774 547.111 389.429 547.195 389.125 547.362C388.824 547.53 388.586 547.774 388.412 548.095C388.238 548.416 388.151 548.806 388.151 549.264ZM398.995 557.116C398.411 557.116 397.909 557.041 397.488 556.891C397.068 556.744 396.718 556.549 396.438 556.307C396.161 556.067 395.94 555.811 395.776 555.538L396.74 554.861C396.849 555.005 396.988 555.169 397.155 555.353C397.323 555.541 397.552 555.703 397.842 555.84C398.136 555.98 398.52 556.05 398.995 556.05C399.631 556.05 400.155 555.896 400.569 555.589C400.982 555.281 401.189 554.8 401.189 554.144V552.544H401.087C400.998 552.688 400.871 552.866 400.707 553.077C400.547 553.286 400.314 553.472 400.01 553.636C399.709 553.797 399.303 553.877 398.79 553.877C398.155 553.877 397.584 553.727 397.078 553.426C396.576 553.125 396.178 552.688 395.884 552.114C395.594 551.54 395.448 550.843 395.448 550.022C395.448 549.216 395.59 548.514 395.874 547.916C396.157 547.314 396.552 546.85 397.058 546.522C397.564 546.19 398.148 546.024 398.811 546.024C399.323 546.024 399.73 546.11 400.031 546.281C400.335 546.448 400.567 546.64 400.728 546.855C400.892 547.067 401.018 547.241 401.107 547.378H401.23V546.127H402.399V554.226C402.399 554.902 402.245 555.452 401.937 555.876C401.633 556.303 401.223 556.616 400.707 556.814C400.195 557.016 399.624 557.116 398.995 557.116ZM398.954 552.79C399.44 552.79 399.85 552.679 400.184 552.457C400.519 552.235 400.774 551.916 400.948 551.499C401.122 551.082 401.21 550.583 401.21 550.002C401.21 549.435 401.124 548.934 400.953 548.5C400.782 548.066 400.53 547.726 400.195 547.48C399.86 547.234 399.446 547.111 398.954 547.111C398.442 547.111 398.015 547.241 397.673 547.501C397.335 547.76 397.08 548.109 396.909 548.546C396.742 548.984 396.658 549.469 396.658 550.002C396.658 550.549 396.743 551.032 396.914 551.453C397.089 551.869 397.345 552.197 397.683 552.437C398.025 552.672 398.449 552.79 398.954 552.79ZM405.046 554V546.127H406.256V554H405.046ZM405.661 544.815C405.425 544.815 405.222 544.735 405.051 544.574C404.884 544.413 404.8 544.22 404.8 543.995C404.8 543.769 404.884 543.576 405.051 543.416C405.222 543.255 405.425 543.175 405.661 543.175C405.897 543.175 406.098 543.255 406.266 543.416C406.437 543.576 406.522 543.769 406.522 543.995C406.522 544.22 406.437 544.413 406.266 544.574C406.098 544.735 405.897 544.815 405.661 544.815ZM410.114 549.264V554H408.904V546.127H410.073V547.357H410.175C410.36 546.957 410.64 546.636 411.016 546.394C411.392 546.147 411.877 546.024 412.472 546.024C413.005 546.024 413.471 546.134 413.871 546.353C414.271 546.568 414.582 546.896 414.804 547.337C415.026 547.774 415.137 548.328 415.137 548.997V554H413.927V549.079C413.927 548.461 413.767 547.979 413.446 547.634C413.124 547.285 412.684 547.111 412.123 547.111C411.737 547.111 411.392 547.195 411.088 547.362C410.787 547.53 410.55 547.774 410.375 548.095C410.201 548.416 410.114 548.806 410.114 549.264ZM421.081 554.164C420.323 554.164 419.668 553.997 419.118 553.662C418.572 553.323 418.15 552.852 417.852 552.247C417.558 551.639 417.411 550.931 417.411 550.125C417.411 549.319 417.558 548.608 417.852 547.993C418.15 547.374 418.563 546.892 419.093 546.547C419.626 546.199 420.248 546.024 420.958 546.024C421.368 546.024 421.773 546.093 422.173 546.229C422.573 546.366 422.937 546.588 423.265 546.896C423.593 547.2 423.854 547.603 424.049 548.105C424.244 548.608 424.341 549.226 424.341 549.961V550.474H418.273V549.428H423.111C423.111 548.984 423.022 548.587 422.845 548.239C422.67 547.89 422.421 547.615 422.096 547.414C421.775 547.212 421.396 547.111 420.958 547.111C420.477 547.111 420.06 547.231 419.708 547.47C419.359 547.706 419.091 548.013 418.903 548.393C418.715 548.772 418.621 549.178 418.621 549.612V550.31C418.621 550.904 418.724 551.408 418.929 551.822C419.137 552.232 419.426 552.544 419.795 552.76C420.164 552.971 420.593 553.077 421.081 553.077C421.399 553.077 421.686 553.033 421.943 552.944C422.202 552.852 422.426 552.715 422.614 552.534C422.802 552.35 422.947 552.121 423.05 551.847L424.218 552.175C424.095 552.572 423.889 552.92 423.598 553.221C423.308 553.518 422.949 553.751 422.522 553.918C422.095 554.082 421.615 554.164 421.081 554.164ZM429.915 554.164C429.157 554.164 428.502 553.997 427.952 553.662C427.406 553.323 426.984 552.852 426.686 552.247C426.392 551.639 426.245 550.931 426.245 550.125C426.245 549.319 426.392 548.608 426.686 547.993C426.984 547.374 427.397 546.892 427.927 546.547C428.46 546.199 429.082 546.024 429.792 546.024C430.202 546.024 430.607 546.093 431.007 546.229C431.407 546.366 431.771 546.588 432.099 546.896C432.427 547.2 432.688 547.603 432.883 548.105C433.078 548.608 433.175 549.226 433.175 549.961V550.474H427.107V549.428H431.945C431.945 548.984 431.856 548.587 431.679 548.239C431.504 547.89 431.255 547.615 430.93 547.414C430.609 547.212 430.23 547.111 429.792 547.111C429.311 547.111 428.894 547.231 428.542 547.47C428.193 547.706 427.925 548.013 427.737 548.393C427.549 548.772 427.455 549.178 427.455 549.612V550.31C427.455 550.904 427.558 551.408 427.763 551.822C427.971 552.232 428.26 552.544 428.629 552.76C428.998 552.971 429.427 553.077 429.915 553.077C430.233 553.077 430.52 553.033 430.777 552.944C431.036 552.852 431.26 552.715 431.448 552.534C431.636 552.35 431.781 552.121 431.884 551.847L433.052 552.175C432.929 552.572 432.723 552.92 432.432 553.221C432.142 553.518 431.783 553.751 431.356 553.918C430.929 554.082 430.448 554.164 429.915 554.164ZM435.448 554V546.127H436.617V547.316H436.699C436.843 546.927 437.102 546.611 437.478 546.368C437.854 546.125 438.278 546.004 438.749 546.004C438.838 546.004 438.949 546.006 439.083 546.009C439.216 546.013 439.317 546.018 439.385 546.024V547.255C439.344 547.244 439.25 547.229 439.103 547.208C438.96 547.185 438.807 547.173 438.647 547.173C438.264 547.173 437.922 547.253 437.622 547.414C437.324 547.571 437.089 547.789 436.914 548.07C436.744 548.346 436.658 548.662 436.658 549.018V554H435.448ZM441.252 554V546.127H442.462V554H441.252ZM441.867 544.815C441.631 544.815 441.428 544.735 441.257 544.574C441.09 544.413 441.006 544.22 441.006 543.995C441.006 543.769 441.09 543.576 441.257 543.416C441.428 543.255 441.631 543.175 441.867 543.175C442.103 543.175 442.304 543.255 442.472 543.416C442.643 543.576 442.728 543.769 442.728 543.995C442.728 544.22 442.643 544.413 442.472 544.574C442.304 544.735 442.103 544.815 441.867 544.815ZM446.32 549.264V554H445.11V546.127H446.279V547.357H446.381C446.566 546.957 446.846 546.636 447.222 546.394C447.598 546.147 448.083 546.024 448.678 546.024C449.211 546.024 449.677 546.134 450.077 546.353C450.477 546.568 450.788 546.896 451.01 547.337C451.232 547.774 451.343 548.328 451.343 548.997V554H450.133V549.079C450.133 548.461 449.973 547.979 449.651 547.634C449.33 547.285 448.889 547.111 448.329 547.111C447.943 547.111 447.598 547.195 447.294 547.362C446.993 547.53 446.755 547.774 446.581 548.095C446.407 548.416 446.32 548.806 446.32 549.264ZM457.164 557.116C456.58 557.116 456.078 557.041 455.657 556.891C455.237 556.744 454.887 556.549 454.607 556.307C454.33 556.067 454.109 555.811 453.945 555.538L454.909 554.861C455.018 555.005 455.157 555.169 455.324 555.353C455.492 555.541 455.721 555.703 456.011 555.84C456.305 555.98 456.689 556.05 457.164 556.05C457.8 556.05 458.324 555.896 458.738 555.589C459.151 555.281 459.358 554.8 459.358 554.144V552.544H459.256C459.167 552.688 459.04 552.866 458.876 553.077C458.716 553.286 458.483 553.472 458.179 553.636C457.878 553.797 457.472 553.877 456.959 553.877C456.324 553.877 455.753 553.727 455.247 553.426C454.745 553.125 454.347 552.688 454.053 552.114C453.763 551.54 453.617 550.843 453.617 550.022C453.617 549.216 453.759 548.514 454.043 547.916C454.326 547.314 454.721 546.85 455.227 546.522C455.733 546.19 456.317 546.024 456.98 546.024C457.492 546.024 457.899 546.11 458.2 546.281C458.504 546.448 458.736 546.64 458.897 546.855C459.061 547.067 459.187 547.241 459.276 547.378H459.399V546.127H460.568V554.226C460.568 554.902 460.414 555.452 460.106 555.876C459.802 556.303 459.392 556.616 458.876 556.814C458.364 557.016 457.793 557.116 457.164 557.116ZM457.123 552.79C457.609 552.79 458.019 552.679 458.353 552.457C458.688 552.235 458.943 551.916 459.117 551.499C459.291 551.082 459.379 550.583 459.379 550.002C459.379 549.435 459.293 548.934 459.122 548.5C458.951 548.066 458.699 547.726 458.364 547.48C458.029 547.234 457.615 547.111 457.123 547.111C456.611 547.111 456.184 547.241 455.842 547.501C455.504 547.76 455.249 548.109 455.078 548.546C454.911 548.984 454.827 549.469 454.827 550.002C454.827 550.549 454.912 551.032 455.083 551.453C455.258 551.869 455.514 552.197 455.852 552.437C456.194 552.672 456.618 552.79 457.123 552.79ZM464.097 554.082C463.844 554.082 463.627 553.991 463.446 553.81C463.265 553.629 463.174 553.412 463.174 553.159C463.174 552.907 463.265 552.69 463.446 552.508C463.627 552.327 463.844 552.237 464.097 552.237C464.35 552.237 464.567 552.327 464.748 552.508C464.929 552.69 465.019 552.907 465.019 553.159C465.019 553.327 464.977 553.481 464.891 553.621C464.809 553.761 464.698 553.874 464.558 553.959C464.421 554.041 464.268 554.082 464.097 554.082ZM377.912 594V583.503H380.132V588.131H380.27L384.048 583.503H386.708L382.812 588.203L386.754 594H384.099L381.224 589.684L380.132 591.017V594H377.912ZM390.501 594.149C389.999 594.149 389.551 594.062 389.158 593.887C388.765 593.71 388.454 593.448 388.225 593.103C388 592.754 387.887 592.32 387.887 591.801C387.887 591.364 387.967 590.996 388.128 590.699C388.288 590.402 388.507 590.163 388.784 589.981C389.061 589.8 389.375 589.664 389.727 589.571C390.082 589.479 390.455 589.414 390.844 589.377C391.302 589.329 391.671 589.284 391.951 589.243C392.232 589.199 392.435 589.134 392.561 589.049C392.688 588.963 392.751 588.837 392.751 588.669V588.639C392.751 588.314 392.649 588.063 392.444 587.885C392.242 587.707 391.955 587.619 391.582 587.619C391.189 587.619 390.877 587.706 390.644 587.88C390.412 588.051 390.258 588.266 390.183 588.526L388.164 588.362C388.266 587.883 388.468 587.47 388.768 587.121C389.069 586.769 389.457 586.499 389.932 586.312C390.41 586.12 390.964 586.024 391.593 586.024C392.03 586.024 392.449 586.076 392.848 586.178C393.252 586.281 393.609 586.44 393.92 586.655C394.234 586.87 394.482 587.147 394.663 587.485C394.844 587.82 394.935 588.222 394.935 588.69V594H392.864V592.908H392.802C392.676 593.154 392.507 593.371 392.295 593.559C392.083 593.744 391.828 593.889 391.531 593.995C391.234 594.097 390.89 594.149 390.501 594.149ZM391.126 592.642C391.447 592.642 391.731 592.578 391.977 592.452C392.223 592.322 392.416 592.148 392.556 591.929C392.696 591.711 392.766 591.463 392.766 591.186V590.351C392.698 590.395 392.604 590.436 392.485 590.474C392.368 590.508 392.237 590.54 392.09 590.571C391.943 590.598 391.796 590.624 391.649 590.648C391.502 590.668 391.369 590.687 391.249 590.704C390.993 590.742 390.769 590.802 390.578 590.884C390.386 590.966 390.238 591.077 390.132 591.217C390.026 591.353 389.973 591.524 389.973 591.729C389.973 592.027 390.081 592.254 390.296 592.411C390.515 592.565 390.791 592.642 391.126 592.642ZM397.062 594V586.127H399.179V587.501H399.261C399.404 587.012 399.645 586.643 399.983 586.394C400.322 586.141 400.711 586.014 401.152 586.014C401.261 586.014 401.379 586.021 401.506 586.035C401.632 586.048 401.743 586.067 401.839 586.091V588.029C401.736 587.998 401.594 587.971 401.413 587.947C401.232 587.923 401.066 587.911 400.916 587.911C400.595 587.911 400.308 587.981 400.055 588.121C399.806 588.258 399.607 588.449 399.46 588.695C399.317 588.941 399.245 589.225 399.245 589.546V594H397.062ZM407.983 586.127V587.767H403.242V586.127H407.983ZM404.318 584.241H406.502V591.581C406.502 591.782 406.532 591.939 406.594 592.052C406.655 592.162 406.741 592.238 406.85 592.283C406.963 592.327 407.093 592.35 407.24 592.35C407.342 592.35 407.445 592.341 407.547 592.324C407.65 592.303 407.728 592.288 407.783 592.278L408.127 593.903C408.017 593.937 407.863 593.976 407.665 594.021C407.467 594.068 407.226 594.097 406.943 594.108C406.416 594.128 405.955 594.058 405.559 593.897C405.166 593.737 404.86 593.487 404.641 593.149C404.422 592.811 404.315 592.384 404.318 591.868V584.241ZM409.838 594V586.127H412.022V594H409.838ZM410.935 585.112C410.611 585.112 410.332 585.004 410.1 584.789C409.871 584.57 409.756 584.309 409.756 584.005C409.756 583.704 409.871 583.446 410.1 583.231C410.332 583.012 410.611 582.903 410.935 582.903C411.26 582.903 411.537 583.012 411.766 583.231C411.998 583.446 412.114 583.704 412.114 584.005C412.114 584.309 411.998 584.57 411.766 584.789C411.537 585.004 411.26 585.112 410.935 585.112ZM416.183 591.734L416.188 589.115H416.506L419.027 586.127H421.534L418.146 590.084H417.628L416.183 591.734ZM414.204 594V583.503H416.388V594H414.204ZM419.125 594L416.808 590.571L418.264 589.028L421.682 594H419.125ZM424.314 594.133C423.976 594.133 423.686 594.014 423.443 593.774C423.204 593.532 423.084 593.241 423.084 592.903C423.084 592.568 423.204 592.281 423.443 592.042C423.686 591.803 423.976 591.683 424.314 591.683C424.642 591.683 424.929 591.803 425.175 592.042C425.422 592.281 425.545 592.568 425.545 592.903C425.545 593.129 425.486 593.335 425.37 593.523C425.257 593.708 425.109 593.856 424.924 593.969C424.74 594.079 424.536 594.133 424.314 594.133ZM424.314 588.618C423.976 588.618 423.686 588.498 423.443 588.259C423.204 588.02 423.084 587.73 423.084 587.388C423.084 587.053 423.204 586.768 423.443 586.532C423.686 586.293 423.976 586.173 424.314 586.173C424.642 586.173 424.929 586.293 425.175 586.532C425.422 586.768 425.545 587.053 425.545 587.388C425.545 587.617 425.486 587.825 425.37 588.013C425.257 588.198 425.109 588.345 424.924 588.454C424.74 588.563 424.536 588.618 424.314 588.618ZM431.944 594V583.503H433.215V588.71H433.338L438.053 583.503H439.714L435.306 588.239L439.714 594H438.177L434.527 589.12L433.215 590.597V594H431.944ZM443.945 594.185C443.446 594.185 442.994 594.091 442.587 593.903C442.18 593.711 441.857 593.436 441.618 593.077C441.379 592.715 441.259 592.278 441.259 591.765C441.259 591.314 441.348 590.949 441.526 590.668C441.704 590.385 441.941 590.163 442.238 590.002C442.536 589.841 442.864 589.722 443.223 589.643C443.585 589.561 443.949 589.496 444.314 589.448C444.793 589.387 445.181 589.341 445.478 589.31C445.779 589.276 445.997 589.219 446.134 589.141C446.274 589.062 446.344 588.926 446.344 588.731V588.69C446.344 588.184 446.206 587.791 445.929 587.511C445.656 587.231 445.24 587.091 444.683 587.091C444.106 587.091 443.653 587.217 443.325 587.47C442.997 587.723 442.766 587.993 442.633 588.28L441.485 587.87C441.69 587.391 441.963 587.019 442.305 586.752C442.65 586.482 443.026 586.294 443.433 586.188C443.843 586.079 444.246 586.024 444.642 586.024C444.895 586.024 445.186 586.055 445.514 586.117C445.845 586.175 446.165 586.296 446.472 586.481C446.783 586.665 447.041 586.944 447.246 587.316C447.451 587.689 447.554 588.188 447.554 588.813V594H446.344V592.934H446.283C446.201 593.105 446.064 593.288 445.873 593.482C445.681 593.677 445.427 593.843 445.109 593.979C444.791 594.116 444.403 594.185 443.945 594.185ZM444.13 593.098C444.608 593.098 445.011 593.004 445.34 592.816C445.671 592.628 445.92 592.385 446.088 592.088C446.259 591.791 446.344 591.478 446.344 591.15V590.043C446.293 590.104 446.18 590.161 446.006 590.212C445.835 590.26 445.637 590.303 445.411 590.34C445.189 590.374 444.972 590.405 444.76 590.433C444.552 590.456 444.383 590.477 444.253 590.494C443.939 590.535 443.645 590.602 443.371 590.694C443.101 590.783 442.883 590.918 442.715 591.099C442.551 591.277 442.469 591.519 442.469 591.827C442.469 592.247 442.625 592.565 442.936 592.78C443.25 592.992 443.648 593.098 444.13 593.098ZM450.195 594V586.127H451.363V587.316H451.445C451.589 586.927 451.849 586.611 452.224 586.368C452.6 586.125 453.024 586.004 453.496 586.004C453.584 586.004 453.696 586.006 453.829 586.009C453.962 586.013 454.063 586.018 454.131 586.024V587.255C454.09 587.244 453.996 587.229 453.849 587.208C453.706 587.185 453.554 587.173 453.393 587.173C453.01 587.173 452.669 587.253 452.368 587.414C452.071 587.571 451.835 587.789 451.661 588.07C451.49 588.346 451.404 588.662 451.404 589.018V594H450.195ZM459.915 586.127V587.152H455.835V586.127H459.915ZM457.025 584.241H458.234V591.745C458.234 592.086 458.284 592.343 458.383 592.514C458.485 592.681 458.615 592.794 458.772 592.852C458.933 592.907 459.102 592.934 459.28 592.934C459.413 592.934 459.522 592.927 459.608 592.913C459.693 592.896 459.762 592.883 459.813 592.872L460.059 593.959C459.977 593.99 459.862 594.021 459.716 594.051C459.569 594.085 459.382 594.103 459.157 594.103C458.815 594.103 458.48 594.029 458.152 593.882C457.828 593.735 457.558 593.511 457.342 593.211C457.13 592.91 457.025 592.531 457.025 592.073V584.241ZM462.168 594V586.127H463.378V594H462.168ZM462.783 584.815C462.547 584.815 462.344 584.735 462.173 584.574C462.006 584.413 461.922 584.22 461.922 583.995C461.922 583.769 462.006 583.576 462.173 583.416C462.344 583.255 462.547 583.175 462.783 583.175C463.019 583.175 463.221 583.255 463.388 583.416C463.559 583.576 463.644 583.769 463.644 583.995C463.644 584.22 463.559 584.413 463.388 584.574C463.221 584.735 463.019 584.815 462.783 584.815ZM467.154 591.13L467.133 589.633H467.379L470.824 586.127H472.321L468.651 589.838H468.548L467.154 591.13ZM466.026 594V583.503H467.236V594H466.026ZM471.029 594L467.954 590.104L468.815 589.264L472.567 594H471.029ZM480.013 589.264V594H478.803V583.503H480.013V587.357H480.115C480.3 586.951 480.577 586.628 480.946 586.388C481.318 586.146 481.814 586.024 482.432 586.024C482.969 586.024 483.438 586.132 483.842 586.347C484.245 586.559 484.557 586.886 484.78 587.326C485.005 587.764 485.118 588.321 485.118 588.997V594H483.908V589.079C483.908 588.454 483.746 587.971 483.421 587.629C483.1 587.284 482.654 587.111 482.083 587.111C481.687 587.111 481.332 587.195 481.017 587.362C480.706 587.53 480.46 587.774 480.279 588.095C480.102 588.416 480.013 588.806 480.013 589.264ZM490.081 594.185C489.582 594.185 489.129 594.091 488.722 593.903C488.316 593.711 487.993 593.436 487.754 593.077C487.514 592.715 487.395 592.278 487.395 591.765C487.395 591.314 487.484 590.949 487.661 590.668C487.839 590.385 488.077 590.163 488.374 590.002C488.671 589.841 488.999 589.722 489.358 589.643C489.72 589.561 490.084 589.496 490.45 589.448C490.928 589.387 491.316 589.341 491.613 589.31C491.914 589.276 492.133 589.219 492.269 589.141C492.409 589.062 492.48 588.926 492.48 588.731V588.69C492.48 588.184 492.341 587.791 492.064 587.511C491.791 587.231 491.376 587.091 490.819 587.091C490.241 587.091 489.789 587.217 489.46 587.47C489.132 587.723 488.902 587.993 488.769 588.28L487.62 587.87C487.825 587.391 488.099 587.019 488.44 586.752C488.786 586.482 489.161 586.294 489.568 586.188C489.978 586.079 490.381 586.024 490.778 586.024C491.031 586.024 491.321 586.055 491.649 586.117C491.981 586.175 492.3 586.296 492.608 586.481C492.919 586.665 493.177 586.944 493.382 587.316C493.587 587.689 493.689 588.188 493.689 588.813V594H492.48V592.934H492.418C492.336 593.105 492.199 593.288 492.008 593.482C491.817 593.677 491.562 593.843 491.244 593.979C490.926 594.116 490.539 594.185 490.081 594.185ZM490.265 593.098C490.744 593.098 491.147 593.004 491.475 592.816C491.806 592.628 492.056 592.385 492.223 592.088C492.394 591.791 492.48 591.478 492.48 591.15V590.043C492.428 590.104 492.315 590.161 492.141 590.212C491.97 590.26 491.772 590.303 491.547 590.34C491.325 590.374 491.108 590.405 490.896 590.433C490.687 590.456 490.518 590.477 490.388 590.494C490.074 590.535 489.78 590.602 489.507 590.694C489.237 590.783 489.018 590.918 488.851 591.099C488.687 591.277 488.605 591.519 488.605 591.827C488.605 592.247 488.76 592.565 489.071 592.78C489.385 592.992 489.783 593.098 490.265 593.098ZM501.907 587.89L500.82 588.198C500.752 588.017 500.651 587.841 500.518 587.67C500.388 587.496 500.21 587.352 499.985 587.239C499.759 587.126 499.47 587.07 499.118 587.07C498.637 587.07 498.235 587.181 497.914 587.403C497.596 587.622 497.437 587.9 497.437 588.239C497.437 588.539 497.547 588.777 497.765 588.951C497.984 589.125 498.326 589.271 498.79 589.387L499.959 589.674C500.663 589.845 501.187 590.106 501.533 590.458C501.878 590.807 502.05 591.256 502.05 591.806C502.05 592.257 501.92 592.66 501.661 593.016C501.404 593.371 501.046 593.651 500.584 593.856C500.123 594.062 499.587 594.164 498.975 594.164C498.172 594.164 497.507 593.99 496.981 593.641C496.455 593.293 496.122 592.784 495.982 592.114L497.13 591.827C497.239 592.25 497.446 592.568 497.75 592.78C498.057 592.992 498.459 593.098 498.954 593.098C499.518 593.098 499.966 592.978 500.297 592.739C500.632 592.496 500.8 592.206 500.8 591.868C500.8 591.594 500.704 591.365 500.513 591.181C500.321 590.993 500.027 590.853 499.631 590.761L498.319 590.453C497.598 590.282 497.068 590.017 496.73 589.659C496.395 589.296 496.228 588.844 496.228 588.3C496.228 587.856 496.352 587.463 496.602 587.121C496.855 586.78 497.198 586.511 497.632 586.317C498.069 586.122 498.565 586.024 499.118 586.024C499.898 586.024 500.509 586.195 500.953 586.537C501.401 586.879 501.719 587.33 501.907 587.89ZM511.77 594.164C511.114 594.164 510.534 593.998 510.032 593.667C509.53 593.332 509.137 592.86 508.853 592.252C508.569 591.64 508.428 590.918 508.428 590.084C508.428 589.257 508.569 588.539 508.853 587.931C509.137 587.323 509.531 586.853 510.037 586.522C510.543 586.19 511.127 586.024 511.79 586.024C512.303 586.024 512.708 586.11 513.005 586.281C513.306 586.448 513.535 586.64 513.692 586.855C513.852 587.067 513.977 587.241 514.066 587.378H514.168V583.503H515.378V594H514.209V592.79H514.066C513.977 592.934 513.851 593.115 513.687 593.334C513.523 593.549 513.289 593.742 512.984 593.913C512.68 594.08 512.275 594.164 511.77 594.164ZM511.934 593.077C512.419 593.077 512.829 592.951 513.164 592.698C513.499 592.442 513.753 592.088 513.928 591.637C514.102 591.183 514.189 590.658 514.189 590.063C514.189 589.476 514.104 588.961 513.933 588.521C513.762 588.076 513.509 587.731 513.174 587.485C512.839 587.236 512.426 587.111 511.934 587.111C511.421 587.111 510.994 587.243 510.652 587.506C510.314 587.765 510.059 588.119 509.888 588.567C509.721 589.011 509.637 589.51 509.637 590.063C509.637 590.624 509.723 591.133 509.894 591.591C510.068 592.045 510.324 592.408 510.662 592.678C511.004 592.944 511.428 593.077 511.934 593.077ZM521.495 594.164C520.737 594.164 520.082 593.997 519.532 593.662C518.986 593.323 518.564 592.852 518.266 592.247C517.972 591.639 517.825 590.931 517.825 590.125C517.825 589.319 517.972 588.608 518.266 587.993C518.564 587.374 518.977 586.892 519.507 586.547C520.04 586.199 520.662 586.024 521.372 586.024C521.782 586.024 522.187 586.093 522.587 586.229C522.987 586.366 523.351 586.588 523.679 586.896C524.007 587.2 524.268 587.603 524.463 588.105C524.658 588.608 524.755 589.226 524.755 589.961V590.474H518.687V589.428H523.525C523.525 588.984 523.436 588.587 523.259 588.239C523.084 587.89 522.835 587.615 522.51 587.414C522.189 587.212 521.81 587.111 521.372 587.111C520.891 587.111 520.474 587.231 520.122 587.47C519.773 587.706 519.505 588.013 519.317 588.393C519.129 588.772 519.035 589.178 519.035 589.612V590.31C519.035 590.904 519.138 591.408 519.343 591.822C519.551 592.232 519.84 592.544 520.209 592.76C520.578 592.971 521.007 593.077 521.495 593.077C521.813 593.077 522.1 593.033 522.357 592.944C522.616 592.852 522.84 592.715 523.028 592.534C523.216 592.35 523.361 592.121 523.464 591.847L524.632 592.175C524.509 592.572 524.303 592.92 524.012 593.221C523.722 593.518 523.363 593.751 522.936 593.918C522.509 594.082 522.029 594.164 521.495 594.164ZM532.605 587.89L531.519 588.198C531.45 588.017 531.349 587.841 531.216 587.67C531.086 587.496 530.909 587.352 530.683 587.239C530.458 587.126 530.169 587.07 529.817 587.07C529.335 587.07 528.934 587.181 528.612 587.403C528.295 587.622 528.136 587.9 528.136 588.239C528.136 588.539 528.245 588.777 528.464 588.951C528.682 589.125 529.024 589.271 529.489 589.387L530.657 589.674C531.361 589.845 531.886 590.106 532.231 590.458C532.576 590.807 532.749 591.256 532.749 591.806C532.749 592.257 532.619 592.66 532.359 593.016C532.103 593.371 531.744 593.651 531.283 593.856C530.822 594.062 530.285 594.164 529.673 594.164C528.87 594.164 528.206 593.99 527.679 593.641C527.153 593.293 526.82 592.784 526.68 592.114L527.828 591.827C527.937 592.25 528.144 592.568 528.448 592.78C528.756 592.992 529.157 593.098 529.653 593.098C530.217 593.098 530.664 592.978 530.996 592.739C531.331 592.496 531.498 592.206 531.498 591.868C531.498 591.594 531.402 591.365 531.211 591.181C531.02 590.993 530.726 590.853 530.329 590.761L529.017 590.453C528.296 590.282 527.767 590.017 527.428 589.659C527.093 589.296 526.926 588.844 526.926 588.3C526.926 587.856 527.051 587.463 527.3 587.121C527.553 586.78 527.896 586.511 528.33 586.317C528.768 586.122 529.263 586.024 529.817 586.024C530.596 586.024 531.208 586.195 531.652 586.537C532.1 586.879 532.417 587.33 532.605 587.89ZM535.003 594V586.127H536.212V594H535.003ZM535.618 584.815C535.382 584.815 535.179 584.735 535.008 584.574C534.84 584.413 534.757 584.22 534.757 583.995C534.757 583.769 534.84 583.576 535.008 583.416C535.179 583.255 535.382 583.175 535.618 583.175C535.854 583.175 536.055 583.255 536.223 583.416C536.393 583.576 536.479 583.769 536.479 583.995C536.479 584.22 536.393 584.413 536.223 584.574C536.055 584.735 535.854 584.815 535.618 584.815ZM542.039 597.116C541.454 597.116 540.952 597.041 540.532 596.891C540.112 596.744 539.761 596.549 539.481 596.307C539.204 596.067 538.984 595.811 538.82 595.538L539.784 594.861C539.893 595.005 540.031 595.169 540.199 595.353C540.366 595.541 540.595 595.703 540.886 595.84C541.179 595.98 541.564 596.05 542.039 596.05C542.674 596.05 543.199 595.896 543.612 595.589C544.026 595.281 544.233 594.8 544.233 594.144V592.544H544.13C544.041 592.688 543.915 592.866 543.751 593.077C543.59 593.286 543.358 593.472 543.054 593.636C542.753 593.797 542.346 593.877 541.834 593.877C541.198 593.877 540.628 593.727 540.122 593.426C539.619 593.125 539.221 592.688 538.928 592.114C538.637 591.54 538.492 590.843 538.492 590.022C538.492 589.216 538.634 588.514 538.917 587.916C539.201 587.314 539.596 586.85 540.101 586.522C540.607 586.19 541.191 586.024 541.854 586.024C542.367 586.024 542.773 586.11 543.074 586.281C543.378 586.448 543.611 586.64 543.771 586.855C543.935 587.067 544.062 587.241 544.151 587.378H544.274V586.127H545.442V594.226C545.442 594.902 545.288 595.452 544.981 595.876C544.677 596.303 544.267 596.616 543.751 596.814C543.238 597.016 542.668 597.116 542.039 597.116ZM541.998 592.79C542.483 592.79 542.893 592.679 543.228 592.457C543.563 592.235 543.817 591.916 543.992 591.499C544.166 591.082 544.253 590.583 544.253 590.002C544.253 589.435 544.168 588.934 543.997 588.5C543.826 588.066 543.573 587.726 543.238 587.48C542.903 587.234 542.49 587.111 541.998 587.111C541.485 587.111 541.058 587.241 540.716 587.501C540.378 587.76 540.124 588.109 539.953 588.546C539.785 588.984 539.702 589.469 539.702 590.002C539.702 590.549 539.787 591.032 539.958 591.453C540.132 591.869 540.388 592.197 540.727 592.437C541.068 592.672 541.492 592.79 541.998 592.79ZM549.299 589.264V594H548.09V586.127H549.258V587.357H549.361C549.545 586.957 549.825 586.636 550.201 586.394C550.577 586.147 551.062 586.024 551.657 586.024C552.19 586.024 552.657 586.134 553.056 586.353C553.456 586.568 553.767 586.896 553.989 587.337C554.211 587.774 554.322 588.328 554.322 588.997V594H553.113V589.079C553.113 588.461 552.952 587.979 552.631 587.634C552.31 587.285 551.869 587.111 551.308 587.111C550.922 587.111 550.577 587.195 550.273 587.362C549.972 587.53 549.735 587.774 549.561 588.095C549.386 588.416 549.299 588.806 549.299 589.264ZM560.267 594.164C559.508 594.164 558.854 593.997 558.304 593.662C557.757 593.323 557.335 592.852 557.038 592.247C556.744 591.639 556.597 590.931 556.597 590.125C556.597 589.319 556.744 588.608 557.038 587.993C557.335 587.374 557.748 586.892 558.278 586.547C558.811 586.199 559.433 586.024 560.144 586.024C560.554 586.024 560.959 586.093 561.358 586.229C561.758 586.366 562.122 586.588 562.45 586.896C562.778 587.2 563.04 587.603 563.234 588.105C563.429 588.608 563.527 589.226 563.527 589.961V590.474H557.458V589.428H562.296C562.296 588.984 562.208 588.587 562.03 588.239C561.856 587.89 561.606 587.615 561.282 587.414C560.96 587.212 560.581 587.111 560.144 587.111C559.662 587.111 559.245 587.231 558.893 587.47C558.545 587.706 558.276 588.013 558.088 588.393C557.9 588.772 557.806 589.178 557.806 589.612V590.31C557.806 590.904 557.909 591.408 558.114 591.822C558.322 592.232 558.611 592.544 558.98 592.76C559.349 592.971 559.778 593.077 560.267 593.077C560.585 593.077 560.872 593.033 561.128 592.944C561.388 592.852 561.611 592.715 561.799 592.534C561.987 592.35 562.132 592.121 562.235 591.847L563.404 592.175C563.281 592.572 563.074 592.92 562.783 593.221C562.493 593.518 562.134 593.751 561.707 593.918C561.28 594.082 560.8 594.164 560.267 594.164ZM568.773 594.164C568.117 594.164 567.537 593.998 567.035 593.667C566.533 593.332 566.14 592.86 565.856 592.252C565.573 591.64 565.431 590.918 565.431 590.084C565.431 589.257 565.573 588.539 565.856 587.931C566.14 587.323 566.534 586.853 567.04 586.522C567.546 586.19 568.13 586.024 568.793 586.024C569.306 586.024 569.711 586.11 570.008 586.281C570.309 586.448 570.538 586.64 570.695 586.855C570.855 587.067 570.98 587.241 571.069 587.378H571.171V583.503H572.381V594H571.212V592.79H571.069C570.98 592.934 570.854 593.115 570.69 593.334C570.526 593.549 570.292 593.742 569.987 593.913C569.683 594.08 569.278 594.164 568.773 594.164ZM568.937 593.077C569.422 593.077 569.832 592.951 570.167 592.698C570.502 592.442 570.756 592.088 570.931 591.637C571.105 591.183 571.192 590.658 571.192 590.063C571.192 589.476 571.107 588.961 570.936 588.521C570.765 588.076 570.512 587.731 570.177 587.485C569.842 587.236 569.429 587.111 568.937 587.111C568.424 587.111 567.997 587.243 567.655 587.506C567.317 587.765 567.062 588.119 566.892 588.567C566.724 589.011 566.64 589.51 566.64 590.063C566.64 590.624 566.726 591.133 566.897 591.591C567.071 592.045 567.327 592.408 567.666 592.678C568.007 592.944 568.431 593.077 568.937 593.077ZM582.007 594.185C581.508 594.185 581.055 594.091 580.649 593.903C580.242 593.711 579.919 593.436 579.68 593.077C579.441 592.715 579.321 592.278 579.321 591.765C579.321 591.314 579.41 590.949 579.588 590.668C579.765 590.385 580.003 590.163 580.3 590.002C580.597 589.841 580.925 589.722 581.284 589.643C581.646 589.561 582.01 589.496 582.376 589.448C582.854 589.387 583.242 589.341 583.539 589.31C583.84 589.276 584.059 589.219 584.196 589.141C584.336 589.062 584.406 588.926 584.406 588.731V588.69C584.406 588.184 584.267 587.791 583.991 587.511C583.717 587.231 583.302 587.091 582.745 587.091C582.168 587.091 581.715 587.217 581.387 587.47C581.059 587.723 580.828 587.993 580.695 588.28L579.547 587.87C579.752 587.391 580.025 587.019 580.367 586.752C580.712 586.482 581.088 586.294 581.494 586.188C581.904 586.079 582.308 586.024 582.704 586.024C582.957 586.024 583.247 586.055 583.575 586.117C583.907 586.175 584.226 586.296 584.534 586.481C584.845 586.665 585.103 586.944 585.308 587.316C585.513 587.689 585.615 588.188 585.615 588.813V594H584.406V592.934H584.344C584.262 593.105 584.126 593.288 583.934 593.482C583.743 593.677 583.488 593.843 583.17 593.979C582.853 594.116 582.465 594.185 582.007 594.185ZM582.191 593.098C582.67 593.098 583.073 593.004 583.401 592.816C583.733 592.628 583.982 592.385 584.149 592.088C584.32 591.791 584.406 591.478 584.406 591.15V590.043C584.354 590.104 584.242 590.161 584.067 590.212C583.897 590.26 583.698 590.303 583.473 590.34C583.251 590.374 583.034 590.405 582.822 590.433C582.613 590.456 582.444 590.477 582.314 590.494C582 590.535 581.706 590.602 581.433 590.694C581.163 590.783 580.944 590.918 580.777 591.099C580.613 591.277 580.531 591.519 580.531 591.827C580.531 592.247 580.686 592.565 580.997 592.78C581.312 592.992 581.71 593.098 582.191 593.098ZM596.255 586.127V587.152H592.011V586.127H596.255ZM593.282 594V585.04C593.282 584.589 593.388 584.213 593.6 583.913C593.812 583.612 594.087 583.386 594.425 583.236C594.763 583.086 595.12 583.011 595.496 583.011C595.793 583.011 596.036 583.035 596.224 583.082C596.412 583.13 596.552 583.175 596.644 583.216L596.296 584.261C596.234 584.241 596.149 584.215 596.039 584.184C595.934 584.154 595.793 584.138 595.619 584.138C595.219 584.138 594.931 584.239 594.753 584.441C594.579 584.642 594.492 584.938 594.492 585.327V594H593.282ZM601.257 594.164C600.547 594.164 599.923 593.995 599.386 593.657C598.853 593.318 598.436 592.845 598.136 592.237C597.838 591.629 597.69 590.918 597.69 590.104C597.69 589.284 597.838 588.569 598.136 587.957C598.436 587.345 598.853 586.87 599.386 586.532C599.923 586.194 600.547 586.024 601.257 586.024C601.968 586.024 602.59 586.194 603.123 586.532C603.66 586.87 604.076 587.345 604.374 587.957C604.674 588.569 604.825 589.284 604.825 590.104C604.825 590.918 604.674 591.629 604.374 592.237C604.076 592.845 603.66 593.318 603.123 593.657C602.59 593.995 601.968 594.164 601.257 594.164ZM601.257 593.077C601.797 593.077 602.241 592.939 602.59 592.662C602.939 592.385 603.197 592.021 603.364 591.57C603.531 591.119 603.615 590.631 603.615 590.104C603.615 589.578 603.531 589.088 603.364 588.633C603.197 588.179 602.939 587.812 602.59 587.531C602.241 587.251 601.797 587.111 601.257 587.111C600.717 587.111 600.273 587.251 599.925 587.531C599.576 587.812 599.318 588.179 599.151 588.633C598.983 589.088 598.9 589.578 598.9 590.104C598.9 590.631 598.983 591.119 599.151 591.57C599.318 592.021 599.576 592.385 599.925 592.662C600.273 592.939 600.717 593.077 601.257 593.077ZM607.104 594V586.127H608.273V587.316H608.355C608.498 586.927 608.758 586.611 609.134 586.368C609.51 586.125 609.934 586.004 610.405 586.004C610.494 586.004 610.605 586.006 610.738 586.009C610.872 586.013 610.972 586.018 611.041 586.024V587.255C611 587.244 610.906 587.229 610.759 587.208C610.615 587.185 610.463 587.173 610.303 587.173C609.92 587.173 609.578 587.253 609.278 587.414C608.98 587.571 608.745 587.789 608.57 588.07C608.399 588.346 608.314 588.662 608.314 589.018V594H607.104ZM619.717 594.185C619.218 594.185 618.765 594.091 618.359 593.903C617.952 593.711 617.629 593.436 617.39 593.077C617.151 592.715 617.031 592.278 617.031 591.765C617.031 591.314 617.12 590.949 617.298 590.668C617.475 590.385 617.713 590.163 618.01 590.002C618.308 589.841 618.636 589.722 618.994 589.643C619.357 589.561 619.72 589.496 620.086 589.448C620.565 589.387 620.952 589.341 621.25 589.31C621.55 589.276 621.769 589.219 621.906 589.141C622.046 589.062 622.116 588.926 622.116 588.731V588.69C622.116 588.184 621.977 587.791 621.701 587.511C621.427 587.231 621.012 587.091 620.455 587.091C619.878 587.091 619.425 587.217 619.097 587.47C618.769 587.723 618.538 587.993 618.405 588.28L617.257 587.87C617.462 587.391 617.735 587.019 618.077 586.752C618.422 586.482 618.798 586.294 619.205 586.188C619.615 586.079 620.018 586.024 620.414 586.024C620.667 586.024 620.957 586.055 621.286 586.117C621.617 586.175 621.936 586.296 622.244 586.481C622.555 586.665 622.813 586.944 623.018 587.316C623.223 587.689 623.326 588.188 623.326 588.813V594H622.116V592.934H622.054C621.972 593.105 621.836 593.288 621.644 593.482C621.453 593.677 621.198 593.843 620.881 593.979C620.563 594.116 620.175 594.185 619.717 594.185ZM619.902 593.098C620.38 593.098 620.783 593.004 621.111 592.816C621.443 592.628 621.692 592.385 621.86 592.088C622.03 591.791 622.116 591.478 622.116 591.15V590.043C622.065 590.104 621.952 590.161 621.778 590.212C621.607 590.26 621.409 590.303 621.183 590.34C620.961 590.374 620.744 590.405 620.532 590.433C620.324 590.456 620.154 590.477 620.025 590.494C619.71 590.535 619.416 590.602 619.143 590.694C618.873 590.783 618.654 590.918 618.487 591.099C618.323 591.277 618.241 591.519 618.241 591.827C618.241 592.247 618.396 592.565 618.707 592.78C619.022 592.992 619.42 593.098 619.902 593.098ZM631.669 583.503V594H630.459V583.503H631.669ZM637.516 594.164C636.805 594.164 636.181 593.995 635.645 593.657C635.112 593.318 634.695 592.845 634.394 592.237C634.097 591.629 633.948 590.918 633.948 590.104C633.948 589.284 634.097 588.569 634.394 587.957C634.695 587.345 635.112 586.87 635.645 586.532C636.181 586.194 636.805 586.024 637.516 586.024C638.226 586.024 638.848 586.194 639.381 586.532C639.918 586.87 640.335 587.345 640.632 587.957C640.933 588.569 641.083 589.284 641.083 590.104C641.083 590.918 640.933 591.629 640.632 592.237C640.335 592.845 639.918 593.318 639.381 593.657C638.848 593.995 638.226 594.164 637.516 594.164ZM637.516 593.077C638.056 593.077 638.5 592.939 638.848 592.662C639.197 592.385 639.455 592.021 639.622 591.57C639.79 591.119 639.873 590.631 639.873 590.104C639.873 589.578 639.79 589.088 639.622 588.633C639.455 588.179 639.197 587.812 638.848 587.531C638.5 587.251 638.056 587.111 637.516 587.111C636.976 587.111 636.531 587.251 636.183 587.531C635.834 587.812 635.576 588.179 635.409 588.633C635.242 589.088 635.158 589.578 635.158 590.104C635.158 590.631 635.242 591.119 635.409 591.57C635.576 592.021 635.834 592.385 636.183 592.662C636.531 592.939 636.976 593.077 637.516 593.077ZM646.787 586.127V587.152H642.707V586.127H646.787ZM643.896 584.241H645.105V591.745C645.105 592.086 645.155 592.343 645.254 592.514C645.356 592.681 645.486 592.794 645.644 592.852C645.804 592.907 645.973 592.934 646.151 592.934C646.284 592.934 646.394 592.927 646.479 592.913C646.564 592.896 646.633 592.883 646.684 592.872L646.93 593.959C646.848 593.99 646.734 594.021 646.587 594.051C646.44 594.085 646.253 594.103 646.028 594.103C645.686 594.103 645.351 594.029 645.023 593.882C644.699 593.735 644.429 593.511 644.213 593.211C644.002 592.91 643.896 592.531 643.896 592.073V584.241ZM656.73 594.164C656.019 594.164 655.396 593.995 654.859 593.657C654.326 593.318 653.909 592.845 653.609 592.237C653.311 591.629 653.163 590.918 653.163 590.104C653.163 589.284 653.311 588.569 653.609 587.957C653.909 587.345 654.326 586.87 654.859 586.532C655.396 586.194 656.019 586.024 656.73 586.024C657.441 586.024 658.063 586.194 658.596 586.532C659.132 586.87 659.549 587.345 659.847 587.957C660.147 588.569 660.298 589.284 660.298 590.104C660.298 590.918 660.147 591.629 659.847 592.237C659.549 592.845 659.132 593.318 658.596 593.657C658.063 593.995 657.441 594.164 656.73 594.164ZM656.73 593.077C657.27 593.077 657.714 592.939 658.063 592.662C658.411 592.385 658.669 592.021 658.837 591.57C659.004 591.119 659.088 590.631 659.088 590.104C659.088 589.578 659.004 589.088 658.837 588.633C658.669 588.179 658.411 587.812 658.063 587.531C657.714 587.251 657.27 587.111 656.73 587.111C656.19 587.111 655.746 587.251 655.397 587.531C655.049 587.812 654.791 588.179 654.623 588.633C654.456 589.088 654.372 589.578 654.372 590.104C654.372 590.631 654.456 591.119 654.623 591.57C654.791 592.021 655.049 592.385 655.397 592.662C655.746 592.939 656.19 593.077 656.73 593.077ZM666.083 586.127V587.152H661.839V586.127H666.083ZM663.11 594V585.04C663.11 584.589 663.216 584.213 663.428 583.913C663.64 583.612 663.915 583.386 664.253 583.236C664.592 583.086 664.949 583.011 665.324 583.011C665.622 583.011 665.864 583.035 666.052 583.082C666.24 583.13 666.38 583.175 666.473 583.216L666.124 584.261C666.063 584.241 665.977 584.215 665.868 584.184C665.762 584.154 665.622 584.138 665.448 584.138C665.048 584.138 664.759 584.239 664.581 584.441C664.407 584.642 664.32 584.938 664.32 585.327V594H663.11ZM675.902 594.164C675.192 594.164 674.568 593.995 674.031 593.657C673.498 593.318 673.082 592.845 672.781 592.237C672.484 591.629 672.335 590.918 672.335 590.104C672.335 589.284 672.484 588.569 672.781 587.957C673.082 587.345 673.498 586.87 674.031 586.532C674.568 586.194 675.192 586.024 675.902 586.024C676.613 586.024 677.235 586.194 677.768 586.532C678.305 586.87 678.721 587.345 679.019 587.957C679.319 588.569 679.47 589.284 679.47 590.104C679.47 590.918 679.319 591.629 679.019 592.237C678.721 592.845 678.305 593.318 677.768 593.657C677.235 593.995 676.613 594.164 675.902 594.164ZM675.902 593.077C676.442 593.077 676.886 592.939 677.235 592.662C677.584 592.385 677.842 592.021 678.009 591.57C678.176 591.119 678.26 590.631 678.26 590.104C678.26 589.578 678.176 589.088 678.009 588.633C677.842 588.179 677.584 587.812 677.235 587.531C676.886 587.251 676.442 587.111 675.902 587.111C675.362 587.111 674.918 587.251 674.57 587.531C674.221 587.812 673.963 588.179 673.796 588.633C673.628 589.088 673.545 589.578 673.545 590.104C673.545 590.631 673.628 591.119 673.796 591.57C673.963 592.021 674.221 592.385 674.57 592.662C674.918 592.939 675.362 593.077 675.902 593.077ZM681.749 596.952V586.127H682.918V587.378H683.062C683.15 587.241 683.273 587.067 683.431 586.855C683.591 586.64 683.82 586.448 684.117 586.281C684.418 586.11 684.825 586.024 685.337 586.024C686 586.024 686.585 586.19 687.09 586.522C687.596 586.853 687.991 587.323 688.274 587.931C688.558 588.539 688.7 589.257 688.7 590.084C688.7 590.918 688.558 591.64 688.274 592.252C687.991 592.86 687.598 593.332 687.095 593.667C686.593 593.998 686.014 594.164 685.358 594.164C684.852 594.164 684.447 594.08 684.143 593.913C683.839 593.742 683.605 593.549 683.441 593.334C683.277 593.115 683.15 592.934 683.062 592.79H682.959V596.952H681.749ZM682.939 590.063C682.939 590.658 683.026 591.183 683.2 591.637C683.374 592.088 683.629 592.442 683.964 592.698C684.299 592.951 684.709 593.077 685.194 593.077C685.7 593.077 686.122 592.944 686.46 592.678C686.802 592.408 687.058 592.045 687.229 591.591C687.403 591.133 687.49 590.624 687.49 590.063C687.49 589.51 687.405 589.011 687.234 588.567C687.066 588.119 686.812 587.765 686.47 587.506C686.132 587.243 685.706 587.111 685.194 587.111C684.702 587.111 684.288 587.236 683.953 587.485C683.619 587.731 683.366 588.076 683.195 588.521C683.024 588.961 682.939 589.476 682.939 590.063ZM694.279 594.164C693.52 594.164 692.866 593.997 692.316 593.662C691.769 593.323 691.347 592.852 691.05 592.247C690.756 591.639 690.609 590.931 690.609 590.125C690.609 589.319 690.756 588.608 691.05 587.993C691.347 587.374 691.761 586.892 692.29 586.547C692.823 586.199 693.445 586.024 694.156 586.024C694.566 586.024 694.971 586.093 695.371 586.229C695.771 586.366 696.134 586.588 696.462 586.896C696.791 587.2 697.052 587.603 697.247 588.105C697.441 588.608 697.539 589.226 697.539 589.961V590.474H691.47V589.428H696.309C696.309 588.984 696.22 588.587 696.042 588.239C695.868 587.89 695.618 587.615 695.294 587.414C694.973 587.212 694.593 587.111 694.156 587.111C693.674 587.111 693.257 587.231 692.905 587.47C692.557 587.706 692.288 588.013 692.101 588.393C691.913 588.772 691.819 589.178 691.819 589.612V590.31C691.819 590.904 691.921 591.408 692.126 591.822C692.335 592.232 692.623 592.544 692.992 592.76C693.361 592.971 693.79 593.077 694.279 593.077C694.597 593.077 694.884 593.033 695.14 592.944C695.4 592.852 695.624 592.715 695.812 592.534C695.999 592.35 696.145 592.121 696.247 591.847L697.416 592.175C697.293 592.572 697.086 592.92 696.796 593.221C696.505 593.518 696.146 593.751 695.719 593.918C695.292 594.082 694.812 594.164 694.279 594.164ZM701.022 589.264V594H699.812V586.127H700.981V587.357H701.083C701.268 586.957 701.548 586.636 701.924 586.394C702.3 586.147 702.785 586.024 703.379 586.024C703.913 586.024 704.379 586.134 704.779 586.353C705.179 586.568 705.49 586.896 705.712 587.337C705.934 587.774 706.045 588.328 706.045 588.997V594H704.835V589.079C704.835 588.461 704.675 587.979 704.353 587.634C704.032 587.285 703.591 587.111 703.031 587.111C702.645 587.111 702.3 587.195 701.996 587.362C701.695 587.53 701.457 587.774 701.283 588.095C701.109 588.416 701.022 588.806 701.022 589.264ZM718.758 587.89L717.671 588.198C717.603 588.017 717.502 587.841 717.368 587.67C717.239 587.496 717.061 587.352 716.835 587.239C716.61 587.126 716.321 587.07 715.969 587.07C715.487 587.07 715.086 587.181 714.765 587.403C714.447 587.622 714.288 587.9 714.288 588.239C714.288 588.539 714.397 588.777 714.616 588.951C714.835 589.125 715.176 589.271 715.641 589.387L716.81 589.674C717.514 589.845 718.038 590.106 718.383 590.458C718.728 590.807 718.901 591.256 718.901 591.806C718.901 592.257 718.771 592.66 718.511 593.016C718.255 593.371 717.896 593.651 717.435 593.856C716.974 594.062 716.437 594.164 715.826 594.164C715.023 594.164 714.358 593.99 713.832 593.641C713.306 593.293 712.972 592.784 712.832 592.114L713.98 591.827C714.09 592.25 714.296 592.568 714.601 592.78C714.908 592.992 715.31 593.098 715.805 593.098C716.369 593.098 716.817 592.978 717.148 592.739C717.483 592.496 717.65 592.206 717.65 591.868C717.65 591.594 717.555 591.365 717.363 591.181C717.172 590.993 716.878 590.853 716.482 590.761L715.17 590.453C714.449 590.282 713.919 590.017 713.581 589.659C713.246 589.296 713.078 588.844 713.078 588.3C713.078 587.856 713.203 587.463 713.452 587.121C713.705 586.78 714.049 586.511 714.483 586.317C714.92 586.122 715.416 586.024 715.969 586.024C716.748 586.024 717.36 586.195 717.804 586.537C718.252 586.879 718.57 587.33 718.758 587.89ZM724.353 594.164C723.643 594.164 723.019 593.995 722.482 593.657C721.949 593.318 721.533 592.845 721.232 592.237C720.935 591.629 720.786 590.918 720.786 590.104C720.786 589.284 720.935 588.569 721.232 587.957C721.533 587.345 721.949 586.87 722.482 586.532C723.019 586.194 723.643 586.024 724.353 586.024C725.064 586.024 725.686 586.194 726.219 586.532C726.756 586.87 727.172 587.345 727.47 587.957C727.77 588.569 727.921 589.284 727.921 590.104C727.921 590.918 727.77 591.629 727.47 592.237C727.172 592.845 726.756 593.318 726.219 593.657C725.686 593.995 725.064 594.164 724.353 594.164ZM724.353 593.077C724.893 593.077 725.337 592.939 725.686 592.662C726.035 592.385 726.293 592.021 726.46 591.57C726.627 591.119 726.711 590.631 726.711 590.104C726.711 589.578 726.627 589.088 726.46 588.633C726.293 588.179 726.035 587.812 725.686 587.531C725.337 587.251 724.893 587.111 724.353 587.111C723.813 587.111 723.369 587.251 723.021 587.531C722.672 587.812 722.414 588.179 722.247 588.633C722.079 589.088 721.996 589.578 721.996 590.104C721.996 590.631 722.079 591.119 722.247 591.57C722.414 592.021 722.672 592.385 723.021 592.662C723.369 592.939 723.813 593.077 724.353 593.077ZM735.162 590.781V586.127H736.372V594H735.162V592.667H735.08C734.895 593.067 734.608 593.407 734.219 593.687C733.829 593.964 733.337 594.103 732.743 594.103C732.251 594.103 731.813 593.995 731.431 593.78C731.048 593.561 730.747 593.233 730.528 592.795C730.31 592.355 730.2 591.799 730.2 591.13V586.127H731.41V591.048C731.41 591.622 731.571 592.08 731.892 592.421C732.216 592.763 732.63 592.934 733.132 592.934C733.433 592.934 733.739 592.857 734.05 592.703C734.364 592.549 734.627 592.314 734.839 591.996C735.054 591.678 735.162 591.273 735.162 590.781ZM739.02 594V586.127H740.189V587.316H740.271C740.414 586.927 740.674 586.611 741.05 586.368C741.426 586.125 741.85 586.004 742.321 586.004C742.41 586.004 742.521 586.006 742.654 586.009C742.788 586.013 742.888 586.018 742.957 586.024V587.255C742.916 587.244 742.822 587.229 742.675 587.208C742.531 587.185 742.379 587.173 742.219 587.173C741.836 587.173 741.494 587.253 741.194 587.414C740.896 587.571 740.66 587.789 740.486 588.07C740.315 588.346 740.23 588.662 740.23 589.018V594H739.02ZM747.782 594.164C747.044 594.164 746.409 593.99 745.876 593.641C745.343 593.293 744.933 592.813 744.646 592.201C744.358 591.589 744.215 590.89 744.215 590.104C744.215 589.305 744.362 588.599 744.656 587.988C744.953 587.373 745.367 586.892 745.896 586.547C746.429 586.199 747.051 586.024 747.762 586.024C748.315 586.024 748.814 586.127 749.259 586.332C749.703 586.537 750.067 586.824 750.35 587.193C750.634 587.562 750.81 587.993 750.878 588.485H749.669C749.576 588.126 749.371 587.808 749.054 587.531C748.739 587.251 748.315 587.111 747.782 587.111C747.311 587.111 746.897 587.234 746.542 587.48C746.19 587.723 745.915 588.066 745.717 588.51C745.522 588.951 745.425 589.469 745.425 590.063C745.425 590.672 745.52 591.201 745.712 591.652C745.906 592.104 746.18 592.454 746.532 592.703C746.887 592.953 747.304 593.077 747.782 593.077C748.097 593.077 748.382 593.023 748.638 592.913C748.895 592.804 749.112 592.647 749.289 592.442C749.467 592.237 749.593 591.991 749.669 591.704H750.878C750.81 592.168 750.641 592.587 750.371 592.959C750.104 593.329 749.751 593.622 749.31 593.841C748.872 594.056 748.363 594.164 747.782 594.164ZM756.381 594.164C755.622 594.164 754.968 593.997 754.418 593.662C753.871 593.323 753.449 592.852 753.151 592.247C752.858 591.639 752.711 590.931 752.711 590.125C752.711 589.319 752.858 588.608 753.151 587.993C753.449 587.374 753.862 586.892 754.392 586.547C754.925 586.199 755.547 586.024 756.258 586.024C756.668 586.024 757.073 586.093 757.472 586.229C757.872 586.366 758.236 586.588 758.564 586.896C758.892 587.2 759.154 587.603 759.348 588.105C759.543 588.608 759.641 589.226 759.641 589.961V590.474H753.572V589.428H758.41C758.41 588.984 758.322 588.587 758.144 588.239C757.97 587.89 757.72 587.615 757.396 587.414C757.074 587.212 756.695 587.111 756.258 587.111C755.776 587.111 755.359 587.231 755.007 587.47C754.658 587.706 754.39 588.013 754.202 588.393C754.014 588.772 753.92 589.178 753.92 589.612V590.31C753.92 590.904 754.023 591.408 754.228 591.822C754.436 592.232 754.725 592.544 755.094 592.76C755.463 592.971 755.892 593.077 756.381 593.077C756.698 593.077 756.985 593.033 757.242 592.944C757.501 592.852 757.725 592.715 757.913 592.534C758.101 592.35 758.246 592.121 758.349 591.847L759.518 592.175C759.395 592.572 759.188 592.92 758.897 593.221C758.607 593.518 758.248 593.751 757.821 593.918C757.394 594.082 756.914 594.164 756.381 594.164ZM766.406 596.952V586.127H767.575V587.378H767.718C767.807 587.241 767.93 587.067 768.087 586.855C768.248 586.64 768.477 586.448 768.774 586.281C769.075 586.11 769.482 586.024 769.994 586.024C770.657 586.024 771.241 586.19 771.747 586.522C772.253 586.853 772.648 587.323 772.931 587.931C773.215 588.539 773.357 589.257 773.357 590.084C773.357 590.918 773.215 591.64 772.931 592.252C772.648 592.86 772.255 593.332 771.752 593.667C771.25 593.998 770.671 594.164 770.015 594.164C769.509 594.164 769.104 594.08 768.8 593.913C768.496 593.742 768.262 593.549 768.098 593.334C767.934 593.115 767.807 592.934 767.718 592.79H767.616V596.952H766.406ZM767.595 590.063C767.595 590.658 767.683 591.183 767.857 591.637C768.031 592.088 768.286 592.442 768.621 592.698C768.955 592.951 769.365 593.077 769.851 593.077C770.356 593.077 770.778 592.944 771.117 592.678C771.458 592.408 771.715 592.045 771.886 591.591C772.06 591.133 772.147 590.624 772.147 590.063C772.147 589.51 772.062 589.011 771.891 588.567C771.723 588.119 771.469 587.765 771.127 587.506C770.789 587.243 770.363 587.111 769.851 587.111C769.359 587.111 768.945 587.236 768.61 587.485C768.275 587.731 768.023 588.076 767.852 588.521C767.681 588.961 767.595 589.476 767.595 590.063ZM775.635 594V586.127H776.804V587.316H776.886C777.029 586.927 777.289 586.611 777.665 586.368C778.04 586.125 778.464 586.004 778.936 586.004C779.025 586.004 779.136 586.006 779.269 586.009C779.402 586.013 779.503 586.018 779.571 586.024V587.255C779.53 587.244 779.436 587.229 779.289 587.208C779.146 587.185 778.994 587.173 778.833 587.173C778.451 587.173 778.109 587.253 777.808 587.414C777.511 587.571 777.275 587.789 777.101 588.07C776.93 588.346 776.845 588.662 776.845 589.018V594H775.635ZM784.397 594.164C783.686 594.164 783.063 593.995 782.526 593.657C781.993 593.318 781.576 592.845 781.276 592.237C780.978 591.629 780.83 590.918 780.83 590.104C780.83 589.284 780.978 588.569 781.276 587.957C781.576 587.345 781.993 586.87 782.526 586.532C783.063 586.194 783.686 586.024 784.397 586.024C785.108 586.024 785.73 586.194 786.263 586.532C786.799 586.87 787.216 587.345 787.513 587.957C787.814 588.569 787.965 589.284 787.965 590.104C787.965 590.918 787.814 591.629 787.513 592.237C787.216 592.845 786.799 593.318 786.263 593.657C785.73 593.995 785.108 594.164 784.397 594.164ZM784.397 593.077C784.937 593.077 785.381 592.939 785.73 592.662C786.078 592.385 786.336 592.021 786.504 591.57C786.671 591.119 786.755 590.631 786.755 590.104C786.755 589.578 786.671 589.088 786.504 588.633C786.336 588.179 786.078 587.812 785.73 587.531C785.381 587.251 784.937 587.111 784.397 587.111C783.857 587.111 783.413 587.251 783.064 587.531C782.716 587.812 782.458 588.179 782.29 588.633C782.123 589.088 782.039 589.578 782.039 590.104C782.039 590.631 782.123 591.119 782.29 591.57C782.458 592.021 782.716 592.385 783.064 592.662C783.413 592.939 783.857 593.077 784.397 593.077ZM790.244 586.127H791.454V594.574C791.454 595.059 791.37 595.48 791.203 595.835C791.039 596.19 790.789 596.465 790.454 596.66C790.123 596.855 789.704 596.952 789.198 596.952C789.157 596.952 789.116 596.952 789.075 596.952C789.034 596.952 788.993 596.952 788.952 596.952V595.825C788.993 595.825 789.031 595.825 789.065 595.825C789.099 595.825 789.137 595.825 789.178 595.825C789.547 595.825 789.817 595.715 789.988 595.497C790.159 595.281 790.244 594.974 790.244 594.574V586.127ZM790.839 584.815C790.603 584.815 790.4 584.735 790.229 584.574C790.061 584.413 789.978 584.22 789.978 583.995C789.978 583.769 790.061 583.576 790.229 583.416C790.4 583.255 790.603 583.175 790.839 583.175C791.074 583.175 791.276 583.255 791.443 583.416C791.614 583.576 791.7 583.769 791.7 583.995C791.7 584.22 791.614 584.413 791.443 584.574C791.276 584.735 791.074 584.815 790.839 584.815ZM797.403 594.164C796.645 594.164 795.99 593.997 795.44 593.662C794.893 593.323 794.471 592.852 794.174 592.247C793.88 591.639 793.733 590.931 793.733 590.125C793.733 589.319 793.88 588.608 794.174 587.993C794.471 587.374 794.885 586.892 795.414 586.547C795.948 586.199 796.569 586.024 797.28 586.024C797.69 586.024 798.095 586.093 798.495 586.229C798.895 586.366 799.259 586.588 799.587 586.896C799.915 587.2 800.176 587.603 800.371 588.105C800.566 588.608 800.663 589.226 800.663 589.961V590.474H794.594V589.428H799.433C799.433 588.984 799.344 588.587 799.166 588.239C798.992 587.89 798.743 587.615 798.418 587.414C798.097 587.212 797.718 587.111 797.28 587.111C796.798 587.111 796.382 587.231 796.03 587.47C795.681 587.706 795.413 588.013 795.225 588.393C795.037 588.772 794.943 589.178 794.943 589.612V590.31C794.943 590.904 795.045 591.408 795.25 591.822C795.459 592.232 795.748 592.544 796.117 592.76C796.486 592.971 796.915 593.077 797.403 593.077C797.721 593.077 798.008 593.033 798.264 592.944C798.524 592.852 798.748 592.715 798.936 592.534C799.124 592.35 799.269 592.121 799.372 591.847L800.54 592.175C800.417 592.572 800.21 592.92 799.92 593.221C799.629 593.518 799.271 593.751 798.844 593.918C798.416 594.082 797.936 594.164 797.403 594.164ZM806.135 594.164C805.397 594.164 804.761 593.99 804.228 593.641C803.695 593.293 803.285 592.813 802.998 592.201C802.711 591.589 802.567 590.89 802.567 590.104C802.567 589.305 802.714 588.599 803.008 587.988C803.305 587.373 803.719 586.892 804.248 586.547C804.782 586.199 805.403 586.024 806.114 586.024C806.668 586.024 807.167 586.127 807.611 586.332C808.055 586.537 808.419 586.824 808.703 587.193C808.986 587.562 809.162 587.993 809.231 588.485H808.021C807.929 588.126 807.724 587.808 807.406 587.531C807.092 587.251 806.668 587.111 806.135 587.111C805.663 587.111 805.25 587.234 804.894 587.48C804.542 587.723 804.267 588.066 804.069 588.51C803.874 588.951 803.777 589.469 803.777 590.063C803.777 590.672 803.873 591.201 804.064 591.652C804.259 592.104 804.532 592.454 804.884 592.703C805.239 592.953 805.656 593.077 806.135 593.077C806.449 593.077 806.734 593.023 806.991 592.913C807.247 592.804 807.464 592.647 807.642 592.442C807.819 592.237 807.946 591.991 808.021 591.704H809.231C809.162 592.168 808.993 592.587 808.723 592.959C808.457 593.329 808.103 593.622 807.662 593.841C807.225 594.056 806.716 594.164 806.135 594.164ZM814.856 586.127V587.152H810.776V586.127H814.856ZM811.965 584.241H813.175V591.745C813.175 592.086 813.224 592.343 813.323 592.514C813.426 592.681 813.556 592.794 813.713 592.852C813.873 592.907 814.043 592.934 814.22 592.934C814.354 592.934 814.463 592.927 814.548 592.913C814.634 592.896 814.702 592.883 814.753 592.872L814.999 593.959C814.917 593.99 814.803 594.021 814.656 594.051C814.509 594.085 814.323 594.103 814.097 594.103C813.756 594.103 813.421 594.029 813.093 593.882C812.768 593.735 812.498 593.511 812.283 593.211C812.071 592.91 811.965 592.531 811.965 592.073V584.241ZM822.544 587.89L821.458 588.198C821.389 588.017 821.289 587.841 821.155 587.67C821.025 587.496 820.848 587.352 820.622 587.239C820.397 587.126 820.108 587.07 819.756 587.07C819.274 587.07 818.873 587.181 818.551 587.403C818.234 587.622 818.075 587.9 818.075 588.239C818.075 588.539 818.184 588.777 818.403 588.951C818.621 589.125 818.963 589.271 819.428 589.387L820.597 589.674C821.3 589.845 821.825 590.106 822.17 590.458C822.515 590.807 822.688 591.256 822.688 591.806C822.688 592.257 822.558 592.66 822.298 593.016C822.042 593.371 821.683 593.651 821.222 593.856C820.761 594.062 820.224 594.164 819.612 594.164C818.809 594.164 818.145 593.99 817.619 593.641C817.092 593.293 816.759 592.784 816.619 592.114L817.767 591.827C817.877 592.25 818.083 592.568 818.387 592.78C818.695 592.992 819.096 593.098 819.592 593.098C820.156 593.098 820.603 592.978 820.935 592.739C821.27 592.496 821.437 592.206 821.437 591.868C821.437 591.594 821.341 591.365 821.15 591.181C820.959 590.993 820.665 590.853 820.269 590.761L818.956 590.453C818.235 590.282 817.706 590.017 817.367 589.659C817.033 589.296 816.865 588.844 816.865 588.3C816.865 587.856 816.99 587.463 817.239 587.121C817.492 586.78 817.836 586.511 818.27 586.317C818.707 586.122 819.202 586.024 819.756 586.024C820.535 586.024 821.147 586.195 821.591 586.537C822.039 586.879 822.356 587.33 822.544 587.89ZM829.434 594V586.127H830.644V594H829.434ZM830.049 584.815C829.814 584.815 829.61 584.735 829.439 584.574C829.272 584.413 829.188 584.22 829.188 583.995C829.188 583.769 829.272 583.576 829.439 583.416C829.61 583.255 829.814 583.175 830.049 583.175C830.285 583.175 830.487 583.255 830.654 583.416C830.825 583.576 830.91 583.769 830.91 583.995C830.91 584.22 830.825 584.413 830.654 584.574C830.487 584.735 830.285 584.815 830.049 584.815ZM834.502 589.264V594H833.293V586.127H834.461V587.357H834.564C834.748 586.957 835.028 586.636 835.404 586.394C835.78 586.147 836.265 586.024 836.86 586.024C837.393 586.024 837.859 586.134 838.259 586.353C838.659 586.568 838.97 586.896 839.192 587.337C839.414 587.774 839.525 588.328 839.525 588.997V594H838.316V589.079C838.316 588.461 838.155 587.979 837.834 587.634C837.513 587.285 837.072 587.111 836.511 587.111C836.125 587.111 835.78 587.195 835.476 587.362C835.175 587.53 834.938 587.774 834.764 588.095C834.589 588.416 834.502 588.806 834.502 589.264ZM845.367 594.164C844.629 594.164 843.993 593.99 843.46 593.641C842.927 593.293 842.517 592.813 842.23 592.201C841.943 591.589 841.8 590.89 841.8 590.104C841.8 589.305 841.947 588.599 842.241 587.988C842.538 587.373 842.951 586.892 843.481 586.547C844.014 586.199 844.636 586.024 845.347 586.024C845.9 586.024 846.399 586.127 846.843 586.332C847.288 586.537 847.652 586.824 847.935 587.193C848.219 587.562 848.395 587.993 848.463 588.485H847.253C847.161 588.126 846.956 587.808 846.638 587.531C846.324 587.251 845.9 587.111 845.367 587.111C844.896 587.111 844.482 587.234 844.127 587.48C843.775 587.723 843.5 588.066 843.302 588.51C843.107 588.951 843.009 589.469 843.009 590.063C843.009 590.672 843.105 591.201 843.296 591.652C843.491 592.104 843.765 592.454 844.117 592.703C844.472 592.953 844.889 593.077 845.367 593.077C845.682 593.077 845.967 593.023 846.223 592.913C846.479 592.804 846.696 592.647 846.874 592.442C847.052 592.237 847.178 591.991 847.253 591.704H848.463C848.395 592.168 848.226 592.587 847.956 592.959C847.689 593.329 847.335 593.622 846.895 593.841C846.457 594.056 845.948 594.164 845.367 594.164ZM851.874 583.503V594H850.664V583.503H851.874ZM859.484 590.781V586.127H860.694V594H859.484V592.667H859.402C859.218 593.067 858.931 593.407 858.541 593.687C858.152 593.964 857.66 594.103 857.065 594.103C856.573 594.103 856.136 593.995 855.753 593.78C855.37 593.561 855.069 593.233 854.851 592.795C854.632 592.355 854.523 591.799 854.523 591.13V586.127H855.732V591.048C855.732 591.622 855.893 592.08 856.214 592.421C856.539 592.763 856.952 592.934 857.455 592.934C857.755 592.934 858.061 592.857 858.372 592.703C858.686 592.549 858.95 592.314 859.161 591.996C859.377 591.678 859.484 591.273 859.484 590.781ZM866.315 594.164C865.659 594.164 865.08 593.998 864.578 593.667C864.076 593.332 863.683 592.86 863.399 592.252C863.115 591.64 862.974 590.918 862.974 590.084C862.974 589.257 863.115 588.539 863.399 587.931C863.683 587.323 864.077 586.853 864.583 586.522C865.089 586.19 865.673 586.024 866.336 586.024C866.849 586.024 867.253 586.11 867.551 586.281C867.851 586.448 868.08 586.64 868.238 586.855C868.398 587.067 868.523 587.241 868.612 587.378H868.714V583.503H869.924V594H868.755V592.79H868.612C868.523 592.934 868.396 593.115 868.232 593.334C868.068 593.549 867.834 593.742 867.53 593.913C867.226 594.08 866.821 594.164 866.315 594.164ZM866.479 593.077C866.965 593.077 867.375 592.951 867.71 592.698C868.044 592.442 868.299 592.088 868.473 591.637C868.648 591.183 868.735 590.658 868.735 590.063C868.735 589.476 868.649 588.961 868.478 588.521C868.308 588.076 868.055 587.731 867.72 587.485C867.385 587.236 866.972 587.111 866.479 587.111C865.967 587.111 865.54 587.243 865.198 587.506C864.86 587.765 864.605 588.119 864.434 588.567C864.267 589.011 864.183 589.51 864.183 590.063C864.183 590.624 864.269 591.133 864.439 591.591C864.614 592.045 864.87 592.408 865.208 592.678C865.55 592.944 865.974 593.077 866.479 593.077ZM872.74 594V586.127H873.95V594H872.74ZM873.355 584.815C873.12 584.815 872.916 584.735 872.745 584.574C872.578 584.413 872.494 584.22 872.494 583.995C872.494 583.769 872.578 583.576 872.745 583.416C872.916 583.255 873.12 583.175 873.355 583.175C873.591 583.175 873.793 583.255 873.96 583.416C874.131 583.576 874.217 583.769 874.217 583.995C874.217 584.22 874.131 584.413 873.96 584.574C873.793 584.735 873.591 584.815 873.355 584.815ZM877.808 589.264V594H876.599V586.127H877.767V587.357H877.87C878.054 586.957 878.334 586.636 878.71 586.394C879.086 586.147 879.571 586.024 880.166 586.024C880.699 586.024 881.166 586.134 881.565 586.353C881.965 586.568 882.276 586.896 882.498 587.337C882.72 587.774 882.831 588.328 882.831 588.997V594H881.622V589.079C881.622 588.461 881.461 587.979 881.14 587.634C880.819 587.285 880.378 587.111 879.818 587.111C879.431 587.111 879.086 587.195 878.782 587.362C878.481 587.53 878.244 587.774 878.07 588.095C877.895 588.416 877.808 588.806 877.808 589.264ZM888.653 597.116C888.068 597.116 887.566 597.041 887.146 596.891C886.726 596.744 886.375 596.549 886.095 596.307C885.818 596.067 885.598 595.811 885.434 595.538L886.397 594.861C886.507 595.005 886.645 595.169 886.813 595.353C886.98 595.541 887.209 595.703 887.499 595.84C887.793 595.98 888.178 596.05 888.653 596.05C889.288 596.05 889.813 595.896 890.226 595.589C890.64 595.281 890.847 594.8 890.847 594.144V592.544H890.744C890.655 592.688 890.529 592.866 890.365 593.077C890.204 593.286 889.972 593.472 889.668 593.636C889.367 593.797 888.96 593.877 888.448 593.877C887.812 593.877 887.241 593.727 886.736 593.426C886.233 593.125 885.835 592.688 885.541 592.114C885.251 591.54 885.106 590.843 885.106 590.022C885.106 589.216 885.248 588.514 885.531 587.916C885.815 587.314 886.21 586.85 886.715 586.522C887.221 586.19 887.805 586.024 888.468 586.024C888.981 586.024 889.387 586.11 889.688 586.281C889.992 586.448 890.225 586.64 890.385 586.855C890.549 587.067 890.676 587.241 890.765 587.378H890.888V586.127H892.056V594.226C892.056 594.902 891.902 595.452 891.595 595.876C891.291 596.303 890.881 596.616 890.365 596.814C889.852 597.016 889.282 597.116 888.653 597.116ZM888.612 592.79C889.097 592.79 889.507 592.679 889.842 592.457C890.177 592.235 890.431 591.916 890.606 591.499C890.78 591.082 890.867 590.583 890.867 590.002C890.867 589.435 890.782 588.934 890.611 588.5C890.44 588.066 890.187 587.726 889.852 587.48C889.517 587.234 889.104 587.111 888.612 587.111C888.099 587.111 887.672 587.241 887.33 587.501C886.992 587.76 886.737 588.109 886.567 588.546C886.399 588.984 886.315 589.469 886.315 590.002C886.315 590.549 886.401 591.032 886.572 591.453C886.746 591.869 887.002 592.197 887.341 592.437C887.682 592.672 888.106 592.79 888.612 592.79ZM902.6 594H899.36V583.503H902.743C903.761 583.503 904.633 583.713 905.357 584.133C906.082 584.55 906.637 585.15 907.023 585.932C907.409 586.711 907.602 587.644 907.602 588.731C907.602 589.824 907.407 590.766 907.018 591.555C906.628 592.341 906.061 592.946 905.316 593.37C904.571 593.79 903.666 594 902.6 594ZM900.631 592.872H902.517C903.385 592.872 904.105 592.705 904.675 592.37C905.246 592.035 905.671 591.558 905.952 590.94C906.232 590.321 906.372 589.585 906.372 588.731C906.372 587.883 906.234 587.154 905.957 586.542C905.68 585.927 905.267 585.456 904.716 585.127C904.166 584.796 903.481 584.63 902.661 584.63H900.631V592.872ZM913.304 594.164C912.546 594.164 911.891 593.997 911.341 593.662C910.794 593.323 910.372 592.852 910.075 592.247C909.781 591.639 909.634 590.931 909.634 590.125C909.634 589.319 909.781 588.608 910.075 587.993C910.372 587.374 910.786 586.892 911.316 586.547C911.849 586.199 912.471 586.024 913.181 586.024C913.591 586.024 913.996 586.093 914.396 586.229C914.796 586.366 915.16 586.588 915.488 586.896C915.816 587.2 916.077 587.603 916.272 588.105C916.467 588.608 916.564 589.226 916.564 589.961V590.474H910.495V589.428H915.334C915.334 588.984 915.245 588.587 915.068 588.239C914.893 587.89 914.644 587.615 914.319 587.414C913.998 587.212 913.619 587.111 913.181 587.111C912.699 587.111 912.283 587.231 911.931 587.47C911.582 587.706 911.314 588.013 911.126 588.393C910.938 588.772 910.844 589.178 910.844 589.612V590.31C910.844 590.904 910.947 591.408 911.152 591.822C911.36 592.232 911.649 592.544 912.018 592.76C912.387 592.971 912.816 593.077 913.304 593.077C913.622 593.077 913.909 593.033 914.165 592.944C914.425 592.852 914.649 592.715 914.837 592.534C915.025 592.35 915.17 592.121 915.273 591.847L916.441 592.175C916.318 592.572 916.111 592.92 915.821 593.221C915.531 593.518 915.172 593.751 914.745 593.918C914.317 594.082 913.837 594.164 913.304 594.164ZM925.036 586.127L922.124 594H920.894L917.983 586.127H919.295L921.468 592.401H921.55L923.723 586.127H925.036ZM927.065 594V586.127H928.275V594H927.065ZM927.68 584.815C927.445 584.815 927.241 584.735 927.07 584.574C926.903 584.413 926.819 584.22 926.819 583.995C926.819 583.769 926.903 583.576 927.07 583.416C927.241 583.255 927.445 583.175 927.68 583.175C927.916 583.175 928.118 583.255 928.285 583.416C928.456 583.576 928.541 583.769 928.541 583.995C928.541 584.22 928.456 584.413 928.285 584.574C928.118 584.735 927.916 584.815 927.68 584.815ZM932.051 591.13L932.031 589.633H932.277L935.721 586.127H937.218L933.548 589.838H933.445L932.051 591.13ZM930.923 594V583.503H932.133V594H930.923ZM935.926 594L932.851 590.104L933.712 589.264L937.464 594H935.926ZM941.525 594.185C941.026 594.185 940.573 594.091 940.166 593.903C939.76 593.711 939.437 593.436 939.197 593.077C938.958 592.715 938.839 592.278 938.839 591.765C938.839 591.314 938.928 590.949 939.105 590.668C939.283 590.385 939.52 590.163 939.818 590.002C940.115 589.841 940.443 589.722 940.802 589.643C941.164 589.561 941.528 589.496 941.894 589.448C942.372 589.387 942.76 589.341 943.057 589.31C943.358 589.276 943.577 589.219 943.713 589.141C943.853 589.062 943.923 588.926 943.923 588.731V588.69C943.923 588.184 943.785 587.791 943.508 587.511C943.235 587.231 942.82 587.091 942.263 587.091C941.685 587.091 941.232 587.217 940.904 587.47C940.576 587.723 940.346 587.993 940.212 588.28L939.064 587.87C939.269 587.391 939.543 587.019 939.884 586.752C940.229 586.482 940.605 586.294 941.012 586.188C941.422 586.079 941.825 586.024 942.222 586.024C942.474 586.024 942.765 586.055 943.093 586.117C943.424 586.175 943.744 586.296 944.051 586.481C944.362 586.665 944.62 586.944 944.825 587.316C945.03 587.689 945.133 588.188 945.133 588.813V594H943.923V592.934H943.862C943.78 593.105 943.643 593.288 943.452 593.482C943.26 593.677 943.006 593.843 942.688 593.979C942.37 594.116 941.982 594.185 941.525 594.185ZM941.709 593.098C942.187 593.098 942.591 593.004 942.919 592.816C943.25 592.628 943.5 592.385 943.667 592.088C943.838 591.791 943.923 591.478 943.923 591.15V590.043C943.872 590.104 943.759 590.161 943.585 590.212C943.414 590.26 943.216 590.303 942.99 590.34C942.768 590.374 942.551 590.405 942.34 590.433C942.131 590.456 941.962 590.477 941.832 590.494C941.518 590.535 941.224 590.602 940.95 590.694C940.681 590.783 940.462 590.918 940.294 591.099C940.13 591.277 940.048 591.519 940.048 591.827C940.048 592.247 940.204 592.565 940.515 592.78C940.829 592.992 941.227 593.098 941.709 593.098ZM954.583 594.185C954.084 594.185 953.632 594.091 953.225 593.903C952.818 593.711 952.495 593.436 952.256 593.077C952.017 592.715 951.897 592.278 951.897 591.765C951.897 591.314 951.986 590.949 952.164 590.668C952.342 590.385 952.579 590.163 952.876 590.002C953.174 589.841 953.502 589.722 953.861 589.643C954.223 589.561 954.587 589.496 954.952 589.448C955.431 589.387 955.819 589.341 956.116 589.31C956.417 589.276 956.635 589.219 956.772 589.141C956.912 589.062 956.982 588.926 956.982 588.731V588.69C956.982 588.184 956.844 587.791 956.567 587.511C956.294 587.231 955.878 587.091 955.321 587.091C954.744 587.091 954.291 587.217 953.963 587.47C953.635 587.723 953.404 587.993 953.271 588.28L952.123 587.87C952.328 587.391 952.601 587.019 952.943 586.752C953.288 586.482 953.664 586.294 954.071 586.188C954.481 586.079 954.884 586.024 955.28 586.024C955.533 586.024 955.824 586.055 956.152 586.117C956.483 586.175 956.803 586.296 957.11 586.481C957.421 586.665 957.679 586.944 957.884 587.316C958.089 587.689 958.192 588.188 958.192 588.813V594H956.982V592.934H956.921C956.839 593.105 956.702 593.288 956.51 593.482C956.319 593.677 956.065 593.843 955.747 593.979C955.429 594.116 955.041 594.185 954.583 594.185ZM954.768 593.098C955.246 593.098 955.649 593.004 955.977 592.816C956.309 592.628 956.558 592.385 956.726 592.088C956.897 591.791 956.982 591.478 956.982 591.15V590.043C956.931 590.104 956.818 590.161 956.644 590.212C956.473 590.26 956.275 590.303 956.049 590.34C955.827 590.374 955.61 590.405 955.398 590.433C955.19 590.456 955.021 590.477 954.891 590.494C954.576 590.535 954.283 590.602 954.009 590.694C953.739 590.783 953.521 590.918 953.353 591.099C953.189 591.277 953.107 591.519 953.107 591.827C953.107 592.247 953.263 592.565 953.573 592.78C953.888 592.992 954.286 593.098 954.768 593.098ZM962.042 589.264V594H960.833V586.127H962.001V587.357H962.104C962.288 586.957 962.568 586.636 962.944 586.394C963.32 586.147 963.805 586.024 964.4 586.024C964.933 586.024 965.4 586.134 965.799 586.353C966.199 586.568 966.51 586.896 966.732 587.337C966.954 587.774 967.065 588.328 967.065 588.997V594H965.856V589.079C965.856 588.461 965.695 587.979 965.374 587.634C965.053 587.285 964.612 587.111 964.052 587.111C963.665 587.111 963.32 587.195 963.016 587.362C962.715 587.53 962.478 587.774 962.304 588.095C962.129 588.416 962.042 588.806 962.042 589.264ZM972.682 594.164C972.026 594.164 971.446 593.998 970.944 593.667C970.442 593.332 970.049 592.86 969.765 592.252C969.482 591.64 969.34 590.918 969.34 590.084C969.34 589.257 969.482 588.539 969.765 587.931C970.049 587.323 970.444 586.853 970.949 586.522C971.455 586.19 972.039 586.024 972.702 586.024C973.215 586.024 973.62 586.11 973.917 586.281C974.218 586.448 974.447 586.64 974.604 586.855C974.764 587.067 974.889 587.241 974.978 587.378H975.081V583.503H976.29V594H975.122V592.79H974.978C974.889 592.934 974.763 593.115 974.599 593.334C974.435 593.549 974.201 593.742 973.896 593.913C973.592 594.08 973.187 594.164 972.682 594.164ZM972.846 593.077C973.331 593.077 973.741 592.951 974.076 592.698C974.411 592.442 974.665 592.088 974.84 591.637C975.014 591.183 975.101 590.658 975.101 590.063C975.101 589.476 975.016 588.961 974.845 588.521C974.674 588.076 974.421 587.731 974.086 587.485C973.751 587.236 973.338 587.111 972.846 587.111C972.333 587.111 971.906 587.243 971.564 587.506C971.226 587.765 970.971 588.119 970.801 588.567C970.633 589.011 970.549 589.51 970.549 590.063C970.549 590.624 970.635 591.133 970.806 591.591C970.98 592.045 971.236 592.408 971.575 592.678C971.916 592.944 972.34 593.077 972.846 593.077ZM386.718 606.783H385.447C385.372 606.417 385.24 606.096 385.052 605.819C384.868 605.543 384.642 605.31 384.376 605.122C384.113 604.931 383.821 604.787 383.499 604.692C383.178 604.596 382.843 604.548 382.495 604.548C381.859 604.548 381.283 604.709 380.767 605.03C380.255 605.351 379.846 605.825 379.542 606.45C379.242 607.075 379.091 607.842 379.091 608.751C379.091 609.66 379.242 610.427 379.542 611.053C379.846 611.678 380.255 612.151 380.767 612.473C381.283 612.794 381.859 612.954 382.495 612.954C382.843 612.954 383.178 612.907 383.499 612.811C383.821 612.715 384.113 612.573 384.376 612.385C384.642 612.194 384.868 611.96 385.052 611.683C385.24 611.403 385.372 611.082 385.447 610.72H386.718C386.623 611.256 386.448 611.736 386.195 612.16C385.943 612.584 385.628 612.944 385.252 613.241C384.876 613.535 384.454 613.759 383.986 613.913C383.522 614.067 383.024 614.144 382.495 614.144C381.599 614.144 380.803 613.925 380.106 613.487C379.409 613.05 378.861 612.428 378.461 611.622C378.061 610.815 377.861 609.858 377.861 608.751C377.861 607.644 378.061 606.687 378.461 605.881C378.861 605.075 379.409 604.453 380.106 604.015C380.803 603.578 381.599 603.359 382.495 603.359C383.024 603.359 383.522 603.436 383.986 603.59C384.454 603.744 384.876 603.969 385.252 604.266C385.628 604.56 385.943 604.919 386.195 605.343C386.448 605.763 386.623 606.243 386.718 606.783ZM391.358 614.185C390.859 614.185 390.406 614.091 390 613.903C389.593 613.711 389.27 613.436 389.031 613.077C388.792 612.715 388.672 612.278 388.672 611.765C388.672 611.314 388.761 610.949 388.939 610.668C389.117 610.385 389.354 610.163 389.651 610.002C389.949 609.841 390.277 609.722 390.635 609.643C390.998 609.561 391.362 609.496 391.727 609.448C392.206 609.387 392.593 609.341 392.891 609.31C393.191 609.276 393.41 609.219 393.547 609.141C393.687 609.062 393.757 608.926 393.757 608.731V608.69C393.757 608.184 393.619 607.791 393.342 607.511C393.068 607.231 392.653 607.091 392.096 607.091C391.519 607.091 391.066 607.217 390.738 607.47C390.41 607.723 390.179 607.993 390.046 608.28L388.898 607.87C389.103 607.391 389.376 607.019 389.718 606.752C390.063 606.482 390.439 606.294 390.846 606.188C391.256 606.079 391.659 606.024 392.055 606.024C392.308 606.024 392.599 606.055 392.927 606.117C393.258 606.175 393.578 606.296 393.885 606.481C394.196 606.665 394.454 606.944 394.659 607.316C394.864 607.689 394.967 608.188 394.967 608.813V614H393.757V612.934H393.695C393.613 613.105 393.477 613.288 393.285 613.482C393.094 613.677 392.839 613.843 392.522 613.979C392.204 614.116 391.816 614.185 391.358 614.185ZM391.543 613.098C392.021 613.098 392.424 613.004 392.752 612.816C393.084 612.628 393.333 612.385 393.501 612.088C393.672 611.791 393.757 611.478 393.757 611.15V610.043C393.706 610.104 393.593 610.161 393.419 610.212C393.248 610.26 393.05 610.303 392.824 610.34C392.602 610.374 392.385 610.405 392.173 610.433C391.965 610.456 391.796 610.477 391.666 610.494C391.351 610.535 391.057 610.602 390.784 610.694C390.514 610.783 390.295 610.918 390.128 611.099C389.964 611.277 389.882 611.519 389.882 611.827C389.882 612.247 390.037 612.565 390.348 612.78C390.663 612.992 391.061 613.098 391.543 613.098ZM397.608 616.952V606.127H398.776V607.378H398.92C399.009 607.241 399.132 607.067 399.289 606.855C399.449 606.64 399.678 606.448 399.976 606.281C400.276 606.11 400.683 606.024 401.195 606.024C401.858 606.024 402.443 606.19 402.948 606.522C403.454 606.853 403.849 607.323 404.132 607.931C404.416 608.539 404.558 609.257 404.558 610.084C404.558 610.918 404.416 611.64 404.132 612.252C403.849 612.86 403.456 613.332 402.954 613.667C402.451 613.998 401.872 614.164 401.216 614.164C400.71 614.164 400.305 614.08 400.001 613.913C399.697 613.742 399.463 613.549 399.299 613.334C399.135 613.115 399.009 612.934 398.92 612.79H398.817V616.952H397.608ZM398.797 610.063C398.797 610.658 398.884 611.183 399.058 611.637C399.232 612.088 399.487 612.442 399.822 612.698C400.157 612.951 400.567 613.077 401.052 613.077C401.558 613.077 401.98 612.944 402.318 612.678C402.66 612.408 402.916 612.045 403.087 611.591C403.261 611.133 403.348 610.624 403.348 610.063C403.348 609.51 403.263 609.011 403.092 608.567C402.925 608.119 402.67 607.765 402.328 607.506C401.99 607.243 401.565 607.111 401.052 607.111C400.56 607.111 400.146 607.236 399.812 607.485C399.477 607.731 399.224 608.076 399.053 608.521C398.882 608.961 398.797 609.476 398.797 610.063ZM407.718 614.082C407.465 614.082 407.248 613.991 407.067 613.81C406.886 613.629 406.795 613.412 406.795 613.159C406.795 612.907 406.886 612.69 407.067 612.508C407.248 612.327 407.465 612.237 407.718 612.237C407.971 612.237 408.188 612.327 408.369 612.508C408.55 612.69 408.64 612.907 408.64 613.159C408.64 613.327 408.598 613.481 408.512 613.621C408.43 613.761 408.319 613.874 408.179 613.959C408.042 614.041 407.889 614.082 407.718 614.082ZM416.821 607.89L415.734 608.198C415.666 608.017 415.565 607.841 415.432 607.67C415.302 607.496 415.124 607.352 414.899 607.239C414.673 607.126 414.384 607.07 414.032 607.07C413.551 607.07 413.149 607.181 412.828 607.403C412.51 607.622 412.351 607.9 412.351 608.239C412.351 608.539 412.461 608.777 412.679 608.951C412.898 609.125 413.24 609.271 413.704 609.387L414.873 609.674C415.577 609.845 416.102 610.106 416.447 610.458C416.792 610.807 416.964 611.256 416.964 611.806C416.964 612.257 416.835 612.66 416.575 613.016C416.319 613.371 415.96 613.651 415.498 613.856C415.037 614.062 414.501 614.164 413.889 614.164C413.086 614.164 412.421 613.99 411.895 613.641C411.369 613.293 411.036 612.784 410.896 612.114L412.044 611.827C412.153 612.25 412.36 612.568 412.664 612.78C412.971 612.992 413.373 613.098 413.868 613.098C414.432 613.098 414.88 612.978 415.211 612.739C415.546 612.496 415.714 612.206 415.714 611.868C415.714 611.594 415.618 611.365 415.427 611.181C415.235 610.993 414.941 610.853 414.545 610.761L413.233 610.453C412.512 610.282 411.982 610.017 411.644 609.659C411.309 609.296 411.142 608.844 411.142 608.3C411.142 607.856 411.266 607.463 411.516 607.121C411.769 606.78 412.112 606.511 412.546 606.317C412.983 606.122 413.479 606.024 414.032 606.024C414.812 606.024 415.423 606.195 415.867 606.537C416.315 606.879 416.633 607.33 416.821 607.89ZM422.417 614.164C421.706 614.164 421.082 613.995 420.546 613.657C420.013 613.318 419.596 612.845 419.295 612.237C418.998 611.629 418.849 610.918 418.849 610.104C418.849 609.284 418.998 608.569 419.295 607.957C419.596 607.345 420.013 606.87 420.546 606.532C421.082 606.194 421.706 606.024 422.417 606.024C423.127 606.024 423.749 606.194 424.282 606.532C424.819 606.87 425.236 607.345 425.533 607.957C425.834 608.569 425.984 609.284 425.984 610.104C425.984 610.918 425.834 611.629 425.533 612.237C425.236 612.845 424.819 613.318 424.282 613.657C423.749 613.995 423.127 614.164 422.417 614.164ZM422.417 613.077C422.957 613.077 423.401 612.939 423.749 612.662C424.098 612.385 424.356 612.021 424.523 611.57C424.691 611.119 424.774 610.631 424.774 610.104C424.774 609.578 424.691 609.088 424.523 608.633C424.356 608.179 424.098 607.812 423.749 607.531C423.401 607.251 422.957 607.111 422.417 607.111C421.877 607.111 421.433 607.251 421.084 607.531C420.735 607.812 420.477 608.179 420.31 608.633C420.143 609.088 420.059 609.578 420.059 610.104C420.059 610.631 420.143 611.119 420.31 611.57C420.477 612.021 420.735 612.385 421.084 612.662C421.433 612.939 421.877 613.077 422.417 613.077Z" fill="#B8C4C6"/>
+<rect x="377.086" y="215.271" width="150.497" height="29.4339" rx="14.7169" fill="#2F353A"/>
+<path d="M389.451 225.572C389.683 225.509 389.923 225.477 390.163 225.477H396.478C396.725 225.477 396.963 225.51 397.19 225.572C397.04 225.272 396.809 225.02 396.524 224.844C396.239 224.668 395.911 224.575 395.576 224.575H391.065C390.73 224.575 390.402 224.668 390.117 224.844C389.832 225.02 389.601 225.272 389.451 225.572ZM387.457 229.988C387.457 229.509 387.647 229.05 387.985 228.712C388.324 228.374 388.783 228.184 389.261 228.184H397.38C397.859 228.184 398.318 228.374 398.656 228.712C398.994 229.05 399.185 229.509 399.185 229.988V233.596C399.185 234.075 398.994 234.534 398.656 234.872C398.318 235.211 397.859 235.401 397.38 235.401H389.261C388.783 235.401 388.324 235.211 387.985 234.872C387.647 234.534 387.457 234.075 387.457 233.596V229.988ZM389.261 227.282C389.015 227.282 388.777 227.315 388.549 227.376C388.699 227.076 388.93 226.824 389.215 226.648C389.5 226.472 389.828 226.379 390.163 226.379H396.478C396.813 226.379 397.142 226.473 397.426 226.649C397.711 226.825 397.942 227.076 398.092 227.376C397.86 227.313 397.621 227.281 397.38 227.282H389.261Z" fill="#B3BCC5"/>
+<path d="M408.767 234.488V225.303H412.041C412.753 225.303 413.343 225.425 413.813 225.67C414.285 225.916 414.638 226.255 414.871 226.688C415.104 227.119 415.221 227.617 415.221 228.182C415.221 228.744 415.103 229.239 414.866 229.666C414.633 230.091 414.28 230.421 413.808 230.658C413.339 230.894 412.748 231.012 412.036 231.012H409.556V229.819H411.911C412.359 229.819 412.724 229.755 413.005 229.626C413.289 229.498 413.497 229.311 413.629 229.065C413.76 228.82 413.826 228.526 413.826 228.182C413.826 227.835 413.759 227.535 413.624 227.28C413.493 227.026 413.285 226.832 413.001 226.697C412.72 226.56 412.35 226.491 411.893 226.491H410.153V234.488H408.767ZM413.301 230.344L415.571 234.488H413.992L411.767 230.344H413.301ZM419.682 234.627C419.003 234.627 418.419 234.482 417.929 234.192C417.441 233.899 417.064 233.488 416.798 232.958C416.535 232.426 416.404 231.803 416.404 231.088C416.404 230.383 416.535 229.761 416.798 229.222C417.064 228.684 417.435 228.264 417.911 227.962C418.389 227.66 418.948 227.509 419.588 227.509C419.977 227.509 420.353 227.573 420.718 227.702C421.083 227.831 421.41 228.032 421.7 228.308C421.99 228.583 422.219 228.94 422.387 229.379C422.554 229.816 422.638 230.347 422.638 230.972V231.447H417.162V230.442H421.324C421.324 230.09 421.252 229.777 421.108 229.505C420.965 229.23 420.763 229.013 420.503 228.855C420.246 228.696 419.944 228.617 419.597 228.617C419.22 228.617 418.891 228.71 418.61 228.895C418.332 229.077 418.117 229.317 417.964 229.613C417.815 229.906 417.74 230.224 417.74 230.568V231.353C417.74 231.813 417.821 232.205 417.982 232.528C418.147 232.851 418.376 233.097 418.669 233.268C418.962 233.435 419.304 233.519 419.696 233.519C419.95 233.519 420.182 233.483 420.391 233.411C420.6 233.337 420.781 233.226 420.933 233.08C421.086 232.933 421.203 232.752 421.283 232.537L422.553 232.766C422.451 233.139 422.269 233.467 422.005 233.748C421.745 234.026 421.418 234.243 421.023 234.398C420.631 234.551 420.184 234.627 419.682 234.627ZM425.467 225.303V234.488H424.126V225.303H425.467ZM429.275 234.64C428.839 234.64 428.444 234.56 428.091 234.398C427.739 234.234 427.459 233.996 427.253 233.685C427.049 233.374 426.948 232.993 426.948 232.541C426.948 232.153 427.023 231.833 427.172 231.582C427.322 231.33 427.523 231.132 427.778 230.985C428.032 230.839 428.316 230.728 428.63 230.653C428.944 230.578 429.264 230.522 429.589 230.483C430.002 230.435 430.337 230.396 430.594 230.366C430.851 230.333 431.038 230.281 431.155 230.209C431.271 230.137 431.33 230.021 431.33 229.859V229.828C431.33 229.436 431.219 229.133 430.998 228.917C430.779 228.702 430.454 228.595 430.02 228.595C429.569 228.595 429.213 228.695 428.953 228.895C428.695 229.092 428.518 229.312 428.419 229.554L427.159 229.267C427.308 228.849 427.526 228.511 427.813 228.254C428.103 227.994 428.437 227.805 428.814 227.689C429.19 227.569 429.586 227.509 430.002 227.509C430.277 227.509 430.569 227.542 430.877 227.608C431.188 227.671 431.478 227.787 431.747 227.958C432.019 228.128 432.242 228.372 432.415 228.689C432.588 229.003 432.675 229.411 432.675 229.913V234.488H431.365V233.546H431.312C431.225 233.719 431.095 233.89 430.921 234.057C430.748 234.225 430.525 234.364 430.253 234.474C429.981 234.585 429.655 234.64 429.275 234.64ZM429.567 233.564C429.938 233.564 430.255 233.491 430.518 233.344C430.784 233.198 430.986 233.006 431.123 232.77C431.264 232.531 431.334 232.275 431.334 232.003V231.115C431.286 231.163 431.194 231.208 431.056 231.25C430.921 231.289 430.767 231.323 430.594 231.353C430.421 231.38 430.252 231.405 430.087 231.429C429.923 231.45 429.785 231.468 429.675 231.483C429.415 231.516 429.177 231.571 428.962 231.649C428.749 231.727 428.579 231.839 428.45 231.985C428.325 232.129 428.262 232.32 428.262 232.559C428.262 232.891 428.384 233.142 428.63 233.313C428.875 233.48 429.187 233.564 429.567 233.564ZM437.677 227.599V228.675H433.914V227.599H437.677ZM434.923 225.948H436.264V232.465C436.264 232.725 436.303 232.921 436.381 233.053C436.459 233.181 436.559 233.269 436.681 233.317C436.807 233.362 436.943 233.384 437.089 233.384C437.197 233.384 437.291 233.377 437.372 233.362C437.453 233.347 437.515 233.335 437.56 233.326L437.803 234.434C437.725 234.464 437.614 234.494 437.471 234.524C437.327 234.557 437.148 234.575 436.932 234.577C436.58 234.583 436.251 234.521 435.946 234.389C435.641 234.258 435.394 234.054 435.206 233.779C435.017 233.504 434.923 233.159 434.923 232.743V225.948ZM442.055 234.627C441.377 234.627 440.792 234.482 440.302 234.192C439.814 233.899 439.438 233.488 439.172 232.958C438.908 232.426 438.777 231.803 438.777 231.088C438.777 230.383 438.908 229.761 439.172 229.222C439.438 228.684 439.808 228.264 440.284 227.962C440.762 227.66 441.321 227.509 441.961 227.509C442.35 227.509 442.727 227.573 443.091 227.702C443.456 227.831 443.784 228.032 444.074 228.308C444.364 228.583 444.592 228.94 444.76 229.379C444.927 229.816 445.011 230.347 445.011 230.972V231.447H439.535V230.442H443.697C443.697 230.09 443.625 229.777 443.482 229.505C443.338 229.23 443.136 229.013 442.876 228.855C442.619 228.696 442.317 228.617 441.97 228.617C441.593 228.617 441.265 228.71 440.983 228.895C440.705 229.077 440.49 229.317 440.338 229.613C440.188 229.906 440.113 230.224 440.113 230.568V231.353C440.113 231.813 440.194 232.205 440.356 232.528C440.52 232.851 440.749 233.097 441.042 233.268C441.335 233.435 441.677 233.519 442.069 233.519C442.323 233.519 442.555 233.483 442.764 233.411C442.973 233.337 443.154 233.226 443.307 233.08C443.459 232.933 443.576 232.752 443.657 232.537L444.926 232.766C444.824 233.139 444.642 233.467 444.379 233.748C444.118 234.026 443.791 234.243 443.396 234.398C443.005 234.551 442.558 234.627 442.055 234.627ZM449.078 234.622C448.522 234.622 448.025 234.48 447.589 234.196C447.155 233.909 446.814 233.501 446.566 232.972C446.321 232.44 446.198 231.801 446.198 231.057C446.198 230.312 446.322 229.675 446.571 229.146C446.822 228.617 447.166 228.212 447.602 227.931C448.039 227.65 448.534 227.509 449.087 227.509C449.514 227.509 449.858 227.581 450.118 227.724C450.381 227.865 450.585 228.029 450.728 228.218C450.875 228.406 450.988 228.572 451.069 228.716H451.15V225.303H452.491V234.488H451.181V233.416H451.069C450.988 233.562 450.872 233.73 450.719 233.918C450.57 234.107 450.363 234.271 450.1 234.412C449.837 234.552 449.496 234.622 449.078 234.622ZM449.374 233.479C449.759 233.479 450.085 233.377 450.351 233.174C450.621 232.967 450.824 232.682 450.961 232.317C451.102 231.952 451.172 231.528 451.172 231.043C451.172 230.565 451.103 230.146 450.966 229.788C450.828 229.429 450.626 229.149 450.36 228.949C450.094 228.749 449.765 228.648 449.374 228.648C448.97 228.648 448.634 228.753 448.365 228.962C448.095 229.172 447.892 229.457 447.755 229.819C447.62 230.181 447.553 230.589 447.553 231.043C447.553 231.504 447.622 231.918 447.759 232.286C447.897 232.653 448.1 232.945 448.369 233.16C448.641 233.373 448.976 233.479 449.374 233.479ZM457.747 234.488V227.599H459.034V228.72H459.119C459.263 228.34 459.498 228.044 459.824 227.832C460.15 227.617 460.54 227.509 460.994 227.509C461.455 227.509 461.84 227.617 462.151 227.832C462.465 228.047 462.697 228.343 462.846 228.72H462.918C463.083 228.352 463.344 228.059 463.703 227.841C464.062 227.62 464.489 227.509 464.986 227.509C465.611 227.509 466.121 227.705 466.515 228.097C466.913 228.488 467.112 229.079 467.112 229.868V234.488H465.771V229.994C465.771 229.527 465.644 229.19 465.389 228.98C465.135 228.771 464.832 228.666 464.479 228.666C464.042 228.666 463.703 228.801 463.461 229.07C463.219 229.336 463.098 229.678 463.098 230.097V234.488H461.761V229.909C461.761 229.535 461.645 229.234 461.411 229.007C461.178 228.78 460.875 228.666 460.501 228.666C460.247 228.666 460.012 228.734 459.797 228.868C459.584 229 459.413 229.184 459.281 229.42C459.152 229.656 459.088 229.93 459.088 230.241V234.488H457.747ZM471.878 234.627C471.199 234.627 470.615 234.482 470.124 234.192C469.637 233.899 469.26 233.488 468.994 232.958C468.731 232.426 468.6 231.803 468.6 231.088C468.6 230.383 468.731 229.761 468.994 229.222C469.26 228.684 469.631 228.264 470.107 227.962C470.585 227.66 471.144 227.509 471.784 227.509C472.173 227.509 472.549 227.573 472.914 227.702C473.279 227.831 473.606 228.032 473.896 228.308C474.186 228.583 474.415 228.94 474.582 229.379C474.75 229.816 474.834 230.347 474.834 230.972V231.447H469.358V230.442H473.52C473.52 230.09 473.448 229.777 473.304 229.505C473.161 229.23 472.959 229.013 472.699 228.855C472.442 228.696 472.14 228.617 471.793 228.617C471.416 228.617 471.087 228.71 470.806 228.895C470.528 229.077 470.313 229.317 470.16 229.613C470.011 229.906 469.936 230.224 469.936 230.568V231.353C469.936 231.813 470.017 232.205 470.178 232.528C470.343 232.851 470.571 233.097 470.864 233.268C471.157 233.435 471.5 233.519 471.892 233.519C472.146 233.519 472.377 233.483 472.587 233.411C472.796 233.337 472.977 233.226 473.129 233.08C473.282 232.933 473.398 232.752 473.479 232.537L474.748 232.766C474.647 233.139 474.464 233.467 474.201 233.748C473.941 234.026 473.614 234.243 473.219 234.398C472.827 234.551 472.38 234.627 471.878 234.627ZM476.322 234.488V227.599H477.609V228.72H477.694C477.837 228.34 478.072 228.044 478.398 227.832C478.724 227.617 479.114 227.509 479.569 227.509C480.029 227.509 480.415 227.617 480.726 227.832C481.04 228.047 481.271 228.343 481.421 228.72H481.493C481.657 228.352 481.919 228.059 482.278 227.841C482.636 227.62 483.064 227.509 483.56 227.509C484.185 227.509 484.695 227.705 485.09 228.097C485.487 228.488 485.686 229.079 485.686 229.868V234.488H484.345V229.994C484.345 229.527 484.218 229.19 483.964 228.98C483.71 228.771 483.406 228.666 483.053 228.666C482.617 228.666 482.278 228.801 482.035 229.07C481.793 229.336 481.672 229.678 481.672 230.097V234.488H480.336V229.909C480.336 229.535 480.219 229.234 479.986 229.007C479.753 228.78 479.449 228.666 479.075 228.666C478.821 228.666 478.586 228.734 478.371 228.868C478.159 229 477.987 229.184 477.855 229.42C477.727 229.656 477.663 229.93 477.663 230.241V234.488H476.322ZM490.385 234.627C489.739 234.627 489.176 234.479 488.694 234.183C488.213 233.887 487.839 233.473 487.573 232.94C487.307 232.408 487.174 231.786 487.174 231.075C487.174 230.36 487.307 229.735 487.573 229.2C487.839 228.665 488.213 228.249 488.694 227.953C489.176 227.657 489.739 227.509 490.385 227.509C491.031 227.509 491.595 227.657 492.076 227.953C492.557 228.249 492.931 228.665 493.197 229.2C493.463 229.735 493.596 230.36 493.596 231.075C493.596 231.786 493.463 232.408 493.197 232.94C492.931 233.473 492.557 233.887 492.076 234.183C491.595 234.479 491.031 234.627 490.385 234.627ZM490.39 233.501C490.808 233.501 491.155 233.39 491.43 233.169C491.705 232.948 491.909 232.653 492.04 232.286C492.175 231.918 492.242 231.513 492.242 231.07C492.242 230.631 492.175 230.227 492.04 229.859C491.909 229.489 491.705 229.191 491.43 228.967C491.155 228.743 490.808 228.63 490.39 228.63C489.968 228.63 489.618 228.743 489.34 228.967C489.065 229.191 488.86 229.489 488.726 229.859C488.594 230.227 488.528 230.631 488.528 231.07C488.528 231.513 488.594 231.918 488.726 232.286C488.86 232.653 489.065 232.948 489.34 233.169C489.618 233.39 489.968 233.501 490.39 233.501ZM495.093 234.488V227.599H496.389V228.693H496.461C496.587 228.322 496.808 228.031 497.125 227.819C497.445 227.603 497.807 227.496 498.21 227.496C498.294 227.496 498.393 227.499 498.506 227.505C498.623 227.511 498.714 227.518 498.78 227.527V228.81C498.726 228.795 498.63 228.778 498.493 228.761C498.355 228.74 498.218 228.729 498.08 228.729C497.763 228.729 497.481 228.796 497.233 228.931C496.987 229.062 496.793 229.246 496.65 229.483C496.506 229.716 496.434 229.982 496.434 230.281V234.488H495.093ZM499.94 234.488V227.599H501.281V234.488H499.94ZM500.618 226.536C500.384 226.536 500.184 226.458 500.017 226.303C499.852 226.144 499.77 225.956 499.77 225.738C499.77 225.516 499.852 225.328 500.017 225.173C500.184 225.014 500.384 224.935 500.618 224.935C500.851 224.935 501.05 225.014 501.214 225.173C501.382 225.328 501.465 225.516 501.465 225.738C501.465 225.956 501.382 226.144 501.214 226.303C501.05 226.458 500.851 226.536 500.618 226.536ZM506.055 234.627C505.376 234.627 504.791 234.482 504.301 234.192C503.814 233.899 503.437 233.488 503.171 232.958C502.908 232.426 502.776 231.803 502.776 231.088C502.776 230.383 502.908 229.761 503.171 229.222C503.437 228.684 503.808 228.264 504.283 227.962C504.761 227.66 505.32 227.509 505.96 227.509C506.349 227.509 506.726 227.573 507.091 227.702C507.455 227.831 507.783 228.032 508.073 228.308C508.363 228.583 508.592 228.94 508.759 229.379C508.926 229.816 509.01 230.347 509.01 230.972V231.447H503.534V230.442H507.696C507.696 230.09 507.624 229.777 507.481 229.505C507.337 229.23 507.135 229.013 506.875 228.855C506.618 228.696 506.316 228.617 505.969 228.617C505.593 228.617 505.264 228.71 504.983 228.895C504.705 229.077 504.489 229.317 504.337 229.613C504.187 229.906 504.113 230.224 504.113 230.568V231.353C504.113 231.813 504.193 232.205 504.355 232.528C504.519 232.851 504.748 233.097 505.041 233.268C505.334 233.435 505.676 233.519 506.068 233.519C506.322 233.519 506.554 233.483 506.763 233.411C506.972 233.337 507.153 233.226 507.306 233.08C507.458 232.933 507.575 232.752 507.656 232.537L508.925 232.766C508.823 233.139 508.641 233.467 508.378 233.748C508.118 234.026 507.79 234.243 507.396 234.398C507.004 234.551 506.557 234.627 506.055 234.627ZM515.66 229.281L514.445 229.496C514.394 229.341 514.313 229.193 514.203 229.052C514.095 228.912 513.948 228.796 513.763 228.707C513.578 228.617 513.346 228.572 513.068 228.572C512.688 228.572 512.371 228.657 512.117 228.828C511.863 228.995 511.736 229.212 511.736 229.478C511.736 229.708 511.821 229.894 511.991 230.034C512.162 230.175 512.437 230.29 512.817 230.38L513.911 230.631C514.545 230.777 515.017 231.003 515.328 231.308C515.639 231.613 515.795 232.009 515.795 232.496C515.795 232.909 515.675 233.277 515.436 233.6C515.2 233.92 514.869 234.171 514.445 234.353C514.023 234.536 513.534 234.627 512.978 234.627C512.207 234.627 511.577 234.462 511.09 234.133C510.603 233.802 510.304 233.331 510.193 232.721L511.489 232.523C511.57 232.861 511.736 233.117 511.987 233.29C512.238 233.461 512.566 233.546 512.969 233.546C513.409 233.546 513.76 233.455 514.023 233.272C514.286 233.087 514.418 232.861 514.418 232.595C514.418 232.38 514.337 232.199 514.176 232.052C514.017 231.906 513.774 231.795 513.445 231.721L512.279 231.465C511.636 231.318 511.16 231.085 510.852 230.765C510.547 230.445 510.395 230.04 510.395 229.55C510.395 229.143 510.508 228.787 510.736 228.482C510.963 228.177 511.277 227.94 511.678 227.769C512.078 227.596 512.537 227.509 513.054 227.509C513.799 227.509 514.385 227.671 514.813 227.994C515.24 228.314 515.523 228.743 515.66 229.281Z" fill="#B3BCC5"/>
+<rect x="377.086" y="215.271" width="150.497" height="29.4339" rx="14.7169" fill="#2F353A"/>
+<path d="M389.451 225.572C389.683 225.509 389.923 225.477 390.163 225.477H396.478C396.725 225.477 396.963 225.51 397.19 225.572C397.04 225.272 396.809 225.02 396.524 224.844C396.239 224.668 395.911 224.575 395.576 224.575H391.065C390.73 224.575 390.402 224.668 390.117 224.844C389.832 225.02 389.601 225.272 389.451 225.572ZM387.457 229.988C387.457 229.509 387.647 229.05 387.985 228.712C388.324 228.374 388.783 228.184 389.261 228.184H397.38C397.859 228.184 398.318 228.374 398.656 228.712C398.994 229.05 399.185 229.509 399.185 229.988V233.596C399.185 234.075 398.994 234.534 398.656 234.872C398.318 235.211 397.859 235.401 397.38 235.401H389.261C388.783 235.401 388.324 235.211 387.985 234.872C387.647 234.534 387.457 234.075 387.457 233.596V229.988ZM389.261 227.282C389.015 227.282 388.777 227.315 388.549 227.376C388.699 227.076 388.93 226.824 389.215 226.648C389.5 226.472 389.828 226.379 390.163 226.379H396.478C396.813 226.379 397.142 226.473 397.426 226.649C397.711 226.825 397.942 227.076 398.092 227.376C397.86 227.313 397.621 227.281 397.38 227.282H389.261Z" fill="#B3BCC5"/>
+<path d="M408.767 234.488V225.303H412.041C412.753 225.303 413.343 225.425 413.813 225.67C414.285 225.916 414.638 226.255 414.871 226.688C415.104 227.119 415.221 227.617 415.221 228.182C415.221 228.744 415.103 229.239 414.866 229.666C414.633 230.091 414.28 230.421 413.808 230.658C413.339 230.894 412.748 231.012 412.036 231.012H409.556V229.819H411.911C412.359 229.819 412.724 229.755 413.005 229.626C413.289 229.498 413.497 229.311 413.629 229.065C413.76 228.82 413.826 228.526 413.826 228.182C413.826 227.835 413.759 227.535 413.624 227.28C413.493 227.026 413.285 226.832 413.001 226.697C412.72 226.56 412.35 226.491 411.893 226.491H410.153V234.488H408.767ZM413.301 230.344L415.571 234.488H413.992L411.767 230.344H413.301ZM419.682 234.627C419.003 234.627 418.419 234.482 417.929 234.192C417.441 233.899 417.064 233.488 416.798 232.958C416.535 232.426 416.404 231.803 416.404 231.088C416.404 230.383 416.535 229.761 416.798 229.222C417.064 228.684 417.435 228.264 417.911 227.962C418.389 227.66 418.948 227.509 419.588 227.509C419.977 227.509 420.353 227.573 420.718 227.702C421.083 227.831 421.41 228.032 421.7 228.308C421.99 228.583 422.219 228.94 422.387 229.379C422.554 229.816 422.638 230.347 422.638 230.972V231.447H417.162V230.442H421.324C421.324 230.09 421.252 229.777 421.108 229.505C420.965 229.23 420.763 229.013 420.503 228.855C420.246 228.696 419.944 228.617 419.597 228.617C419.22 228.617 418.891 228.71 418.61 228.895C418.332 229.077 418.117 229.317 417.964 229.613C417.815 229.906 417.74 230.224 417.74 230.568V231.353C417.74 231.813 417.821 232.205 417.982 232.528C418.147 232.851 418.376 233.097 418.669 233.268C418.962 233.435 419.304 233.519 419.696 233.519C419.95 233.519 420.182 233.483 420.391 233.411C420.6 233.337 420.781 233.226 420.933 233.08C421.086 232.933 421.203 232.752 421.283 232.537L422.553 232.766C422.451 233.139 422.269 233.467 422.005 233.748C421.745 234.026 421.418 234.243 421.023 234.398C420.631 234.551 420.184 234.627 419.682 234.627ZM425.467 225.303V234.488H424.126V225.303H425.467ZM429.275 234.64C428.839 234.64 428.444 234.56 428.091 234.398C427.739 234.234 427.459 233.996 427.253 233.685C427.049 233.374 426.948 232.993 426.948 232.541C426.948 232.153 427.023 231.833 427.172 231.582C427.322 231.33 427.523 231.132 427.778 230.985C428.032 230.839 428.316 230.728 428.63 230.653C428.944 230.578 429.264 230.522 429.589 230.483C430.002 230.435 430.337 230.396 430.594 230.366C430.851 230.333 431.038 230.281 431.155 230.209C431.271 230.137 431.33 230.021 431.33 229.859V229.828C431.33 229.436 431.219 229.133 430.998 228.917C430.779 228.702 430.454 228.595 430.02 228.595C429.569 228.595 429.213 228.695 428.953 228.895C428.695 229.092 428.518 229.312 428.419 229.554L427.159 229.267C427.308 228.849 427.526 228.511 427.813 228.254C428.103 227.994 428.437 227.805 428.814 227.689C429.19 227.569 429.586 227.509 430.002 227.509C430.277 227.509 430.569 227.542 430.877 227.608C431.188 227.671 431.478 227.787 431.747 227.958C432.019 228.128 432.242 228.372 432.415 228.689C432.588 229.003 432.675 229.411 432.675 229.913V234.488H431.365V233.546H431.312C431.225 233.719 431.095 233.89 430.921 234.057C430.748 234.225 430.525 234.364 430.253 234.474C429.981 234.585 429.655 234.64 429.275 234.64ZM429.567 233.564C429.938 233.564 430.255 233.491 430.518 233.344C430.784 233.198 430.986 233.006 431.123 232.77C431.264 232.531 431.334 232.275 431.334 232.003V231.115C431.286 231.163 431.194 231.208 431.056 231.25C430.921 231.289 430.767 231.323 430.594 231.353C430.421 231.38 430.252 231.405 430.087 231.429C429.923 231.45 429.785 231.468 429.675 231.483C429.415 231.516 429.177 231.571 428.962 231.649C428.749 231.727 428.579 231.839 428.45 231.985C428.325 232.129 428.262 232.32 428.262 232.559C428.262 232.891 428.384 233.142 428.63 233.313C428.875 233.48 429.187 233.564 429.567 233.564ZM437.677 227.599V228.675H433.914V227.599H437.677ZM434.923 225.948H436.264V232.465C436.264 232.725 436.303 232.921 436.381 233.053C436.459 233.181 436.559 233.269 436.681 233.317C436.807 233.362 436.943 233.384 437.089 233.384C437.197 233.384 437.291 233.377 437.372 233.362C437.453 233.347 437.515 233.335 437.56 233.326L437.803 234.434C437.725 234.464 437.614 234.494 437.471 234.524C437.327 234.557 437.148 234.575 436.932 234.577C436.58 234.583 436.251 234.521 435.946 234.389C435.641 234.258 435.394 234.054 435.206 233.779C435.017 233.504 434.923 233.159 434.923 232.743V225.948ZM442.055 234.627C441.377 234.627 440.792 234.482 440.302 234.192C439.814 233.899 439.438 233.488 439.172 232.958C438.908 232.426 438.777 231.803 438.777 231.088C438.777 230.383 438.908 229.761 439.172 229.222C439.438 228.684 439.808 228.264 440.284 227.962C440.762 227.66 441.321 227.509 441.961 227.509C442.35 227.509 442.727 227.573 443.091 227.702C443.456 227.831 443.784 228.032 444.074 228.308C444.364 228.583 444.592 228.94 444.76 229.379C444.927 229.816 445.011 230.347 445.011 230.972V231.447H439.535V230.442H443.697C443.697 230.09 443.625 229.777 443.482 229.505C443.338 229.23 443.136 229.013 442.876 228.855C442.619 228.696 442.317 228.617 441.97 228.617C441.593 228.617 441.265 228.71 440.983 228.895C440.705 229.077 440.49 229.317 440.338 229.613C440.188 229.906 440.113 230.224 440.113 230.568V231.353C440.113 231.813 440.194 232.205 440.356 232.528C440.52 232.851 440.749 233.097 441.042 233.268C441.335 233.435 441.677 233.519 442.069 233.519C442.323 233.519 442.555 233.483 442.764 233.411C442.973 233.337 443.154 233.226 443.307 233.08C443.459 232.933 443.576 232.752 443.657 232.537L444.926 232.766C444.824 233.139 444.642 233.467 444.379 233.748C444.118 234.026 443.791 234.243 443.396 234.398C443.005 234.551 442.558 234.627 442.055 234.627ZM449.078 234.622C448.522 234.622 448.025 234.48 447.589 234.196C447.155 233.909 446.814 233.501 446.566 232.972C446.321 232.44 446.198 231.801 446.198 231.057C446.198 230.312 446.322 229.675 446.571 229.146C446.822 228.617 447.166 228.212 447.602 227.931C448.039 227.65 448.534 227.509 449.087 227.509C449.514 227.509 449.858 227.581 450.118 227.724C450.381 227.865 450.585 228.029 450.728 228.218C450.875 228.406 450.988 228.572 451.069 228.716H451.15V225.303H452.491V234.488H451.181V233.416H451.069C450.988 233.562 450.872 233.73 450.719 233.918C450.57 234.107 450.363 234.271 450.1 234.412C449.837 234.552 449.496 234.622 449.078 234.622ZM449.374 233.479C449.759 233.479 450.085 233.377 450.351 233.174C450.621 232.967 450.824 232.682 450.961 232.317C451.102 231.952 451.172 231.528 451.172 231.043C451.172 230.565 451.103 230.146 450.966 229.788C450.828 229.429 450.626 229.149 450.36 228.949C450.094 228.749 449.765 228.648 449.374 228.648C448.97 228.648 448.634 228.753 448.365 228.962C448.095 229.172 447.892 229.457 447.755 229.819C447.62 230.181 447.553 230.589 447.553 231.043C447.553 231.504 447.622 231.918 447.759 232.286C447.897 232.653 448.1 232.945 448.369 233.16C448.641 233.373 448.976 233.479 449.374 233.479ZM457.747 234.488V227.599H459.034V228.72H459.119C459.263 228.34 459.498 228.044 459.824 227.832C460.15 227.617 460.54 227.509 460.994 227.509C461.455 227.509 461.84 227.617 462.151 227.832C462.465 228.047 462.697 228.343 462.846 228.72H462.918C463.083 228.352 463.344 228.059 463.703 227.841C464.062 227.62 464.489 227.509 464.986 227.509C465.611 227.509 466.121 227.705 466.515 228.097C466.913 228.488 467.112 229.079 467.112 229.868V234.488H465.771V229.994C465.771 229.527 465.644 229.19 465.389 228.98C465.135 228.771 464.832 228.666 464.479 228.666C464.042 228.666 463.703 228.801 463.461 229.07C463.219 229.336 463.098 229.678 463.098 230.097V234.488H461.761V229.909C461.761 229.535 461.645 229.234 461.411 229.007C461.178 228.78 460.875 228.666 460.501 228.666C460.247 228.666 460.012 228.734 459.797 228.868C459.584 229 459.413 229.184 459.281 229.42C459.152 229.656 459.088 229.93 459.088 230.241V234.488H457.747ZM471.878 234.627C471.199 234.627 470.615 234.482 470.124 234.192C469.637 233.899 469.26 233.488 468.994 232.958C468.731 232.426 468.6 231.803 468.6 231.088C468.6 230.383 468.731 229.761 468.994 229.222C469.26 228.684 469.631 228.264 470.107 227.962C470.585 227.66 471.144 227.509 471.784 227.509C472.173 227.509 472.549 227.573 472.914 227.702C473.279 227.831 473.606 228.032 473.896 228.308C474.186 228.583 474.415 228.94 474.582 229.379C474.75 229.816 474.834 230.347 474.834 230.972V231.447H469.358V230.442H473.52C473.52 230.09 473.448 229.777 473.304 229.505C473.161 229.23 472.959 229.013 472.699 228.855C472.442 228.696 472.14 228.617 471.793 228.617C471.416 228.617 471.087 228.71 470.806 228.895C470.528 229.077 470.313 229.317 470.16 229.613C470.011 229.906 469.936 230.224 469.936 230.568V231.353C469.936 231.813 470.017 232.205 470.178 232.528C470.343 232.851 470.571 233.097 470.864 233.268C471.157 233.435 471.5 233.519 471.892 233.519C472.146 233.519 472.377 233.483 472.587 233.411C472.796 233.337 472.977 233.226 473.129 233.08C473.282 232.933 473.398 232.752 473.479 232.537L474.748 232.766C474.647 233.139 474.464 233.467 474.201 233.748C473.941 234.026 473.614 234.243 473.219 234.398C472.827 234.551 472.38 234.627 471.878 234.627ZM476.322 234.488V227.599H477.609V228.72H477.694C477.837 228.34 478.072 228.044 478.398 227.832C478.724 227.617 479.114 227.509 479.569 227.509C480.029 227.509 480.415 227.617 480.726 227.832C481.04 228.047 481.271 228.343 481.421 228.72H481.493C481.657 228.352 481.919 228.059 482.278 227.841C482.636 227.62 483.064 227.509 483.56 227.509C484.185 227.509 484.695 227.705 485.09 228.097C485.487 228.488 485.686 229.079 485.686 229.868V234.488H484.345V229.994C484.345 229.527 484.218 229.19 483.964 228.98C483.71 228.771 483.406 228.666 483.053 228.666C482.617 228.666 482.278 228.801 482.035 229.07C481.793 229.336 481.672 229.678 481.672 230.097V234.488H480.336V229.909C480.336 229.535 480.219 229.234 479.986 229.007C479.753 228.78 479.449 228.666 479.075 228.666C478.821 228.666 478.586 228.734 478.371 228.868C478.159 229 477.987 229.184 477.855 229.42C477.727 229.656 477.663 229.93 477.663 230.241V234.488H476.322ZM490.385 234.627C489.739 234.627 489.176 234.479 488.694 234.183C488.213 233.887 487.839 233.473 487.573 232.94C487.307 232.408 487.174 231.786 487.174 231.075C487.174 230.36 487.307 229.735 487.573 229.2C487.839 228.665 488.213 228.249 488.694 227.953C489.176 227.657 489.739 227.509 490.385 227.509C491.031 227.509 491.595 227.657 492.076 227.953C492.557 228.249 492.931 228.665 493.197 229.2C493.463 229.735 493.596 230.36 493.596 231.075C493.596 231.786 493.463 232.408 493.197 232.94C492.931 233.473 492.557 233.887 492.076 234.183C491.595 234.479 491.031 234.627 490.385 234.627ZM490.39 233.501C490.808 233.501 491.155 233.39 491.43 233.169C491.705 232.948 491.909 232.653 492.04 232.286C492.175 231.918 492.242 231.513 492.242 231.07C492.242 230.631 492.175 230.227 492.04 229.859C491.909 229.489 491.705 229.191 491.43 228.967C491.155 228.743 490.808 228.63 490.39 228.63C489.968 228.63 489.618 228.743 489.34 228.967C489.065 229.191 488.86 229.489 488.726 229.859C488.594 230.227 488.528 230.631 488.528 231.07C488.528 231.513 488.594 231.918 488.726 232.286C488.86 232.653 489.065 232.948 489.34 233.169C489.618 233.39 489.968 233.501 490.39 233.501ZM495.093 234.488V227.599H496.389V228.693H496.461C496.587 228.322 496.808 228.031 497.125 227.819C497.445 227.603 497.807 227.496 498.21 227.496C498.294 227.496 498.393 227.499 498.506 227.505C498.623 227.511 498.714 227.518 498.78 227.527V228.81C498.726 228.795 498.63 228.778 498.493 228.761C498.355 228.74 498.218 228.729 498.08 228.729C497.763 228.729 497.481 228.796 497.233 228.931C496.987 229.062 496.793 229.246 496.65 229.483C496.506 229.716 496.434 229.982 496.434 230.281V234.488H495.093ZM499.94 234.488V227.599H501.281V234.488H499.94ZM500.618 226.536C500.384 226.536 500.184 226.458 500.017 226.303C499.852 226.144 499.77 225.956 499.77 225.738C499.77 225.516 499.852 225.328 500.017 225.173C500.184 225.014 500.384 224.935 500.618 224.935C500.851 224.935 501.05 225.014 501.214 225.173C501.382 225.328 501.465 225.516 501.465 225.738C501.465 225.956 501.382 226.144 501.214 226.303C501.05 226.458 500.851 226.536 500.618 226.536ZM506.055 234.627C505.376 234.627 504.791 234.482 504.301 234.192C503.814 233.899 503.437 233.488 503.171 232.958C502.908 232.426 502.776 231.803 502.776 231.088C502.776 230.383 502.908 229.761 503.171 229.222C503.437 228.684 503.808 228.264 504.283 227.962C504.761 227.66 505.32 227.509 505.96 227.509C506.349 227.509 506.726 227.573 507.091 227.702C507.455 227.831 507.783 228.032 508.073 228.308C508.363 228.583 508.592 228.94 508.759 229.379C508.926 229.816 509.01 230.347 509.01 230.972V231.447H503.534V230.442H507.696C507.696 230.09 507.624 229.777 507.481 229.505C507.337 229.23 507.135 229.013 506.875 228.855C506.618 228.696 506.316 228.617 505.969 228.617C505.593 228.617 505.264 228.71 504.983 228.895C504.705 229.077 504.489 229.317 504.337 229.613C504.187 229.906 504.113 230.224 504.113 230.568V231.353C504.113 231.813 504.193 232.205 504.355 232.528C504.519 232.851 504.748 233.097 505.041 233.268C505.334 233.435 505.676 233.519 506.068 233.519C506.322 233.519 506.554 233.483 506.763 233.411C506.972 233.337 507.153 233.226 507.306 233.08C507.458 232.933 507.575 232.752 507.656 232.537L508.925 232.766C508.823 233.139 508.641 233.467 508.378 233.748C508.118 234.026 507.79 234.243 507.396 234.398C507.004 234.551 506.557 234.627 506.055 234.627ZM515.66 229.281L514.445 229.496C514.394 229.341 514.313 229.193 514.203 229.052C514.095 228.912 513.948 228.796 513.763 228.707C513.578 228.617 513.346 228.572 513.068 228.572C512.688 228.572 512.371 228.657 512.117 228.828C511.863 228.995 511.736 229.212 511.736 229.478C511.736 229.708 511.821 229.894 511.991 230.034C512.162 230.175 512.437 230.29 512.817 230.38L513.911 230.631C514.545 230.777 515.017 231.003 515.328 231.308C515.639 231.613 515.795 232.009 515.795 232.496C515.795 232.909 515.675 233.277 515.436 233.6C515.2 233.92 514.869 234.171 514.445 234.353C514.023 234.536 513.534 234.627 512.978 234.627C512.207 234.627 511.577 234.462 511.09 234.133C510.603 233.802 510.304 233.331 510.193 232.721L511.489 232.523C511.57 232.861 511.736 233.117 511.987 233.29C512.238 233.461 512.566 233.546 512.969 233.546C513.409 233.546 513.76 233.455 514.023 233.272C514.286 233.087 514.418 232.861 514.418 232.595C514.418 232.38 514.337 232.199 514.176 232.052C514.017 231.906 513.774 231.795 513.445 231.721L512.279 231.465C511.636 231.318 511.16 231.085 510.852 230.765C510.547 230.445 510.395 230.04 510.395 229.55C510.395 229.143 510.508 228.787 510.736 228.482C510.963 228.177 511.277 227.94 511.678 227.769C512.078 227.596 512.537 227.509 513.054 227.509C513.799 227.509 514.385 227.671 514.813 227.994C515.24 228.314 515.523 228.743 515.66 229.281Z" fill="#B3BCC5"/>
+<path d="M377.801 393.3V391.766H386.941V393.3H383.256V403.576H381.48V393.3H377.801ZM390.194 403.772C389.633 403.772 389.126 403.668 388.672 403.46C388.218 403.249 387.859 402.943 387.594 402.544C387.332 402.144 387.202 401.654 387.202 401.073C387.202 400.573 387.298 400.162 387.49 399.839C387.682 399.516 387.942 399.261 388.268 399.072C388.595 398.884 388.96 398.742 389.364 398.645C389.768 398.549 390.179 398.476 390.598 398.426C391.128 398.365 391.559 398.315 391.89 398.276C392.22 398.234 392.461 398.167 392.61 398.075C392.76 397.982 392.835 397.832 392.835 397.625V397.584C392.835 397.081 392.693 396.691 392.409 396.414C392.128 396.137 391.709 395.999 391.152 395.999C390.571 395.999 390.114 396.127 389.779 396.385C389.449 396.639 389.22 396.921 389.093 397.233L387.473 396.864C387.665 396.325 387.945 395.891 388.314 395.56C388.687 395.226 389.116 394.984 389.6 394.834C390.085 394.68 390.594 394.603 391.128 394.603C391.482 394.603 391.857 394.646 392.253 394.73C392.653 394.811 393.026 394.961 393.372 395.18C393.721 395.399 394.008 395.712 394.231 396.12C394.454 396.523 394.565 397.048 394.565 397.694V403.576H392.881V402.365H392.812C392.701 402.588 392.534 402.807 392.311 403.022C392.088 403.237 391.801 403.416 391.451 403.558C391.102 403.701 390.683 403.772 390.194 403.772ZM390.569 402.388C391.046 402.388 391.453 402.294 391.792 402.105C392.134 401.917 392.393 401.671 392.57 401.367C392.751 401.06 392.841 400.731 392.841 400.381V399.239C392.78 399.301 392.66 399.359 392.484 399.412C392.311 399.462 392.113 399.507 391.89 399.545C391.667 399.58 391.449 399.612 391.238 399.643C391.027 399.67 390.85 399.693 390.708 399.712C390.373 399.755 390.067 399.826 389.791 399.926C389.518 400.026 389.299 400.17 389.133 400.358C388.972 400.543 388.891 400.789 388.891 401.096C388.891 401.523 389.049 401.846 389.364 402.065C389.679 402.28 390.081 402.388 390.569 402.388ZM398.586 391.766V403.576H396.862V391.766H398.586ZM402.491 400.571L402.48 398.467H402.779L406.308 394.719H408.373L404.348 398.986H404.077L402.491 400.571ZM400.905 403.576V391.766H402.63V403.576H400.905ZM406.499 403.576L403.327 399.366L404.515 398.161L408.615 403.576H406.499ZM409.944 403.576V394.719H411.668V403.576H409.944ZM410.815 393.352C410.515 393.352 410.257 393.252 410.042 393.052C409.831 392.848 409.725 392.606 409.725 392.325C409.725 392.041 409.831 391.799 410.042 391.599C410.257 391.395 410.515 391.293 410.815 391.293C411.115 391.293 411.37 391.395 411.582 391.599C411.797 391.799 411.905 392.041 411.905 392.325C411.905 392.606 411.797 392.848 411.582 393.052C411.37 393.252 411.115 393.352 410.815 393.352ZM415.712 398.317V403.576H413.988V394.719H415.643V396.16H415.752C415.956 395.691 416.275 395.314 416.71 395.03C417.148 394.745 417.699 394.603 418.364 394.603C418.968 394.603 419.497 394.73 419.95 394.984C420.404 395.234 420.756 395.607 421.005 396.102C421.255 396.598 421.38 397.212 421.38 397.942V403.576H419.656V398.15C419.656 397.508 419.489 397.006 419.154 396.645C418.82 396.279 418.361 396.097 417.776 396.097C417.377 396.097 417.021 396.183 416.71 396.356C416.402 396.529 416.158 396.783 415.977 397.117C415.8 397.448 415.712 397.848 415.712 398.317ZM427.406 407.082C426.703 407.082 426.097 406.989 425.59 406.805C425.086 406.62 424.675 406.376 424.356 406.073C424.037 405.769 423.798 405.436 423.641 405.075L425.123 404.464C425.226 404.633 425.365 404.812 425.538 405C425.715 405.192 425.953 405.356 426.253 405.49C426.557 405.625 426.947 405.692 427.423 405.692C428.077 405.692 428.617 405.532 429.044 405.213C429.471 404.898 429.684 404.395 429.684 403.703V401.961H429.574C429.471 402.149 429.321 402.359 429.125 402.59C428.932 402.82 428.667 403.02 428.329 403.189C427.99 403.358 427.55 403.443 427.008 403.443C426.309 403.443 425.678 403.28 425.117 402.953C424.559 402.622 424.117 402.136 423.791 401.494C423.468 400.848 423.306 400.054 423.306 399.113C423.306 398.171 423.466 397.363 423.785 396.691C424.108 396.018 424.55 395.503 425.111 395.145C425.672 394.784 426.309 394.603 427.02 394.603C427.57 394.603 428.014 394.695 428.352 394.88C428.69 395.061 428.953 395.272 429.142 395.514C429.334 395.756 429.482 395.97 429.586 396.154H429.713V394.719H431.402V403.772C431.402 404.533 431.225 405.158 430.872 405.646C430.518 406.134 430.039 406.495 429.436 406.73C428.836 406.964 428.16 407.082 427.406 407.082ZM427.389 402.013C427.885 402.013 428.304 401.898 428.646 401.667C428.992 401.433 429.253 401.098 429.43 400.664C429.611 400.225 429.701 399.701 429.701 399.089C429.701 398.494 429.613 397.969 429.436 397.515C429.259 397.062 429 396.708 428.657 396.454C428.315 396.197 427.892 396.068 427.389 396.068C426.87 396.068 426.437 396.202 426.091 396.472C425.745 396.737 425.484 397.098 425.307 397.556C425.134 398.013 425.048 398.524 425.048 399.089C425.048 399.67 425.136 400.179 425.313 400.618C425.49 401.056 425.751 401.398 426.097 401.644C426.447 401.89 426.878 402.013 427.389 402.013ZM442.146 394.719V396.102H437.308V394.719H442.146ZM438.606 392.597H440.33V400.975C440.33 401.31 440.38 401.561 440.48 401.73C440.58 401.896 440.709 402.009 440.866 402.071C441.028 402.128 441.203 402.157 441.391 402.157C441.529 402.157 441.651 402.148 441.754 402.128C441.858 402.109 441.939 402.094 441.997 402.082L442.308 403.506C442.208 403.545 442.066 403.583 441.881 403.622C441.697 403.664 441.466 403.687 441.189 403.691C440.736 403.699 440.313 403.618 439.921 403.449C439.529 403.28 439.211 403.018 438.969 402.665C438.727 402.311 438.606 401.867 438.606 401.333V392.597ZM447.689 403.754C446.859 403.754 446.134 403.564 445.515 403.184C444.897 402.803 444.416 402.271 444.074 401.586C443.732 400.902 443.561 400.102 443.561 399.187C443.561 398.269 443.732 397.465 444.074 396.777C444.416 396.089 444.897 395.555 445.515 395.174C446.134 394.794 446.859 394.603 447.689 394.603C448.52 394.603 449.244 394.794 449.863 395.174C450.482 395.555 450.963 396.089 451.305 396.777C451.647 397.465 451.818 398.269 451.818 399.187C451.818 400.102 451.647 400.902 451.305 401.586C450.963 402.271 450.482 402.803 449.863 403.184C449.244 403.564 448.52 403.754 447.689 403.754ZM447.695 402.307C448.233 402.307 448.679 402.165 449.033 401.88C449.387 401.596 449.648 401.217 449.817 400.744C449.99 400.272 450.077 399.751 450.077 399.182C450.077 398.617 449.99 398.098 449.817 397.625C449.648 397.148 449.387 396.766 449.033 396.477C448.679 396.189 448.233 396.045 447.695 396.045C447.153 396.045 446.703 396.189 446.346 396.477C445.992 396.766 445.729 397.148 445.556 397.625C445.387 398.098 445.302 398.617 445.302 399.182C445.302 399.751 445.387 400.272 445.556 400.744C445.729 401.217 445.992 401.596 446.346 401.88C446.703 402.165 447.153 402.307 447.695 402.307ZM461.771 403.754C460.914 403.754 460.175 403.56 459.557 403.172C458.941 402.78 458.469 402.24 458.138 401.552C457.807 400.864 457.642 400.075 457.642 399.187C457.642 398.288 457.811 397.494 458.15 396.806C458.488 396.114 458.965 395.574 459.58 395.186C460.195 394.797 460.919 394.603 461.754 394.603C462.426 394.603 463.026 394.728 463.553 394.978C464.079 395.224 464.504 395.57 464.827 396.016C465.154 396.462 465.348 396.983 465.409 397.579H463.731C463.639 397.163 463.428 396.806 463.097 396.506C462.77 396.206 462.332 396.056 461.782 396.056C461.302 396.056 460.881 396.183 460.52 396.437C460.162 396.687 459.883 397.044 459.683 397.509C459.484 397.971 459.384 398.517 459.384 399.147C459.384 399.793 459.482 400.35 459.678 400.819C459.874 401.288 460.15 401.652 460.508 401.909C460.869 402.167 461.294 402.296 461.782 402.296C462.109 402.296 462.405 402.236 462.67 402.117C462.939 401.994 463.164 401.819 463.345 401.592C463.53 401.365 463.658 401.092 463.731 400.773H465.409C465.348 401.346 465.161 401.857 464.85 402.307C464.539 402.757 464.122 403.111 463.599 403.368C463.08 403.626 462.47 403.754 461.771 403.754ZM470.984 403.754C470.154 403.754 469.429 403.564 468.81 403.184C468.191 402.803 467.711 402.271 467.369 401.586C467.026 400.902 466.855 400.102 466.855 399.187C466.855 398.269 467.026 397.465 467.369 396.777C467.711 396.089 468.191 395.555 468.81 395.174C469.429 394.794 470.154 394.603 470.984 394.603C471.814 394.603 472.539 394.794 473.158 395.174C473.777 395.555 474.257 396.089 474.6 396.777C474.942 397.465 475.113 398.269 475.113 399.187C475.113 400.102 474.942 400.902 474.6 401.586C474.257 402.271 473.777 402.803 473.158 403.184C472.539 403.564 471.814 403.754 470.984 403.754ZM470.99 402.307C471.528 402.307 471.974 402.165 472.328 401.88C472.681 401.596 472.943 401.217 473.112 400.744C473.285 400.272 473.371 399.751 473.371 399.182C473.371 398.617 473.285 398.098 473.112 397.625C472.943 397.148 472.681 396.766 472.328 396.477C471.974 396.189 471.528 396.045 470.99 396.045C470.448 396.045 469.998 396.189 469.64 396.477C469.287 396.766 469.023 397.148 468.85 397.625C468.681 398.098 468.597 398.617 468.597 399.182C468.597 399.751 468.681 400.272 468.85 400.744C469.023 401.217 469.287 401.596 469.64 401.88C469.998 402.165 470.448 402.307 470.99 402.307ZM478.761 391.766V403.576H477.037V391.766H478.761ZM482.805 391.766V403.576H481.081V391.766H482.805ZM488.942 403.754C488.069 403.754 487.318 403.568 486.687 403.195C486.061 402.818 485.576 402.29 485.234 401.609C484.896 400.925 484.727 400.124 484.727 399.205C484.727 398.298 484.896 397.498 485.234 396.806C485.576 396.114 486.053 395.574 486.664 395.186C487.279 394.797 487.998 394.603 488.821 394.603C489.321 394.603 489.805 394.686 490.274 394.851C490.743 395.016 491.164 395.276 491.537 395.63C491.91 395.983 492.204 396.443 492.419 397.008C492.634 397.569 492.742 398.251 492.742 399.055V399.666H485.701V398.374H491.052C491.052 397.921 490.96 397.519 490.776 397.169C490.591 396.816 490.332 396.537 489.997 396.333C489.667 396.129 489.278 396.028 488.832 396.028C488.348 396.028 487.925 396.147 487.564 396.385C487.206 396.62 486.929 396.927 486.733 397.308C486.541 397.684 486.445 398.094 486.445 398.536V399.545C486.445 400.137 486.549 400.641 486.757 401.056C486.968 401.471 487.262 401.788 487.639 402.007C488.015 402.223 488.456 402.33 488.959 402.33C489.286 402.33 489.584 402.284 489.853 402.192C490.122 402.096 490.355 401.953 490.551 401.765C490.747 401.577 490.897 401.344 491.001 401.067L492.632 401.361C492.502 401.842 492.267 402.263 491.929 402.624C491.594 402.982 491.174 403.26 490.666 403.46C490.163 403.656 489.588 403.754 488.942 403.754ZM498.386 403.754C497.529 403.754 496.79 403.56 496.172 403.172C495.556 402.78 495.084 402.24 494.753 401.552C494.422 400.864 494.257 400.075 494.257 399.187C494.257 398.288 494.426 397.494 494.765 396.806C495.103 396.114 495.58 395.574 496.195 395.186C496.81 394.797 497.534 394.603 498.369 394.603C499.041 394.603 499.641 394.728 500.168 394.978C500.694 395.224 501.119 395.57 501.442 396.016C501.769 396.462 501.963 396.983 502.024 397.579H500.346C500.254 397.163 500.043 396.806 499.712 396.506C499.385 396.206 498.947 396.056 498.397 396.056C497.917 396.056 497.496 396.183 497.135 396.437C496.777 396.687 496.498 397.044 496.298 397.509C496.099 397.971 495.999 398.517 495.999 399.147C495.999 399.793 496.097 400.35 496.293 400.819C496.489 401.288 496.765 401.652 497.123 401.909C497.484 402.167 497.909 402.296 498.397 402.296C498.724 402.296 499.02 402.236 499.285 402.117C499.554 401.994 499.779 401.819 499.96 401.592C500.145 401.365 500.273 401.092 500.346 400.773H502.024C501.963 401.346 501.776 401.857 501.465 402.307C501.154 402.757 500.737 403.111 500.214 403.368C499.695 403.626 499.085 403.754 498.386 403.754ZM508.003 394.719V396.102H503.165V394.719H508.003ZM504.462 392.597H506.186V400.975C506.186 401.31 506.236 401.561 506.336 401.73C506.436 401.896 506.565 402.009 506.723 402.071C506.884 402.128 507.059 402.157 507.247 402.157C507.386 402.157 507.507 402.148 507.611 402.128C507.714 402.109 507.795 402.094 507.853 402.082L508.164 403.506C508.064 403.545 507.922 403.583 507.737 403.622C507.553 403.664 507.322 403.687 507.045 403.691C506.592 403.699 506.169 403.618 505.777 403.449C505.385 403.28 505.068 403.018 504.825 402.665C504.583 402.311 504.462 401.867 504.462 401.333V392.597ZM509.91 403.576V394.719H511.634V403.576H509.91ZM510.781 393.352C510.481 393.352 510.223 393.252 510.008 393.052C509.797 392.848 509.691 392.606 509.691 392.325C509.691 392.041 509.797 391.799 510.008 391.599C510.223 391.395 510.481 391.293 510.781 391.293C511.08 391.293 511.336 391.395 511.548 391.599C511.763 391.799 511.87 392.041 511.87 392.325C511.87 392.606 511.763 392.848 511.548 393.052C511.336 393.252 511.08 393.352 510.781 393.352ZM517.684 403.754C516.854 403.754 516.129 403.564 515.511 403.184C514.892 402.803 514.411 402.271 514.069 401.586C513.727 400.902 513.556 400.102 513.556 399.187C513.556 398.269 513.727 397.465 514.069 396.777C514.411 396.089 514.892 395.555 515.511 395.174C516.129 394.794 516.854 394.603 517.684 394.603C518.515 394.603 519.239 394.794 519.858 395.174C520.477 395.555 520.958 396.089 521.3 396.777C521.642 397.465 521.813 398.269 521.813 399.187C521.813 400.102 521.642 400.902 521.3 401.586C520.958 402.271 520.477 402.803 519.858 403.184C519.239 403.564 518.515 403.754 517.684 403.754ZM517.69 402.307C518.228 402.307 518.674 402.165 519.028 401.88C519.382 401.596 519.643 401.217 519.812 400.744C519.985 400.272 520.072 399.751 520.072 399.182C520.072 398.617 519.985 398.098 519.812 397.625C519.643 397.148 519.382 396.766 519.028 396.477C518.674 396.189 518.228 396.045 517.69 396.045C517.148 396.045 516.698 396.189 516.341 396.477C515.987 396.766 515.724 397.148 515.551 397.625C515.382 398.098 515.297 398.617 515.297 399.182C515.297 399.751 515.382 400.272 515.551 400.744C515.724 401.217 515.987 401.596 516.341 401.88C516.698 402.165 517.148 402.307 517.69 402.307ZM525.462 398.317V403.576H523.738V394.719H525.393V396.16H525.502C525.706 395.691 526.025 395.314 526.459 395.03C526.898 394.745 527.449 394.603 528.114 394.603C528.718 394.603 529.246 394.73 529.7 394.984C530.154 395.234 530.505 395.607 530.755 396.102C531.005 396.598 531.13 397.212 531.13 397.942V403.576H529.406V398.15C529.406 397.508 529.239 397.006 528.904 396.645C528.57 396.279 528.11 396.097 527.526 396.097C527.126 396.097 526.771 396.183 526.459 396.356C526.152 396.529 525.908 396.783 525.727 397.117C525.55 397.448 525.462 397.848 525.462 398.317ZM534.578 403.685C534.263 403.685 533.992 403.574 533.765 403.351C533.539 403.124 533.425 402.851 533.425 402.532C533.425 402.217 533.539 401.948 533.765 401.725C533.992 401.498 534.263 401.384 534.578 401.384C534.894 401.384 535.165 401.498 535.392 401.725C535.618 401.948 535.732 402.217 535.732 402.532C535.732 402.743 535.678 402.938 535.57 403.114C535.466 403.287 535.328 403.426 535.155 403.53C534.982 403.633 534.79 403.685 534.578 403.685ZM534.578 397.238C534.263 397.238 533.992 397.125 533.765 396.898C533.539 396.671 533.425 396.4 533.425 396.085C533.425 395.77 533.539 395.501 533.765 395.278C533.992 395.051 534.263 394.938 534.578 394.938C534.894 394.938 535.165 395.051 535.392 395.278C535.618 395.501 535.732 395.77 535.732 396.085C535.732 396.297 535.678 396.491 535.57 396.668C535.466 396.841 535.328 396.979 535.155 397.083C534.982 397.187 534.79 397.238 534.578 397.238Z" fill="#A1A1AA"/>
+<path d="M542.344 403.576V391.766H546.773C547.68 391.766 548.441 391.935 549.056 392.274C549.675 392.612 550.142 393.077 550.458 393.669C550.777 394.257 550.936 394.926 550.936 395.676C550.936 396.433 550.777 397.106 550.458 397.694C550.139 398.282 549.668 398.745 549.045 399.084C548.422 399.418 547.655 399.585 546.744 399.585H543.809V397.827H546.456C546.986 397.827 547.421 397.734 547.759 397.55C548.097 397.365 548.347 397.112 548.509 396.789C548.674 396.466 548.756 396.095 548.756 395.676C548.756 395.257 548.674 394.888 548.509 394.569C548.347 394.25 548.095 394.002 547.753 393.825C547.415 393.644 546.979 393.554 546.444 393.554H544.484V403.576H542.344ZM556.496 403.749C555.608 403.749 554.841 403.564 554.196 403.195C553.554 402.822 553.06 402.296 552.714 401.615C552.368 400.931 552.195 400.125 552.195 399.199C552.195 398.288 552.368 397.488 552.714 396.8C553.063 396.108 553.552 395.57 554.178 395.186C554.805 394.797 555.541 394.603 556.387 394.603C556.933 394.603 557.448 394.692 557.932 394.868C558.42 395.041 558.851 395.311 559.224 395.676C559.601 396.041 559.897 396.506 560.112 397.071C560.327 397.632 560.435 398.301 560.435 399.078V399.718H553.175V398.311H558.434C558.43 397.911 558.344 397.556 558.174 397.244C558.005 396.929 557.769 396.681 557.465 396.5C557.165 396.32 556.815 396.229 556.416 396.229C555.989 396.229 555.614 396.333 555.291 396.541C554.968 396.744 554.717 397.014 554.536 397.348C554.359 397.679 554.269 398.042 554.265 398.438V399.666C554.265 400.181 554.359 400.623 554.547 400.992C554.736 401.358 554.999 401.638 555.337 401.834C555.676 402.026 556.072 402.123 556.525 402.123C556.829 402.123 557.104 402.08 557.35 401.996C557.596 401.907 557.809 401.778 557.99 401.609C558.171 401.44 558.307 401.231 558.399 400.981L560.348 401.2C560.225 401.715 559.991 402.165 559.645 402.549C559.303 402.93 558.864 403.226 558.33 403.437C557.796 403.645 557.185 403.749 556.496 403.749ZM566.064 403.749C565.199 403.749 564.45 403.558 563.815 403.178C563.181 402.797 562.689 402.265 562.339 401.581C561.993 400.896 561.82 400.097 561.82 399.182C561.82 398.267 561.993 397.465 562.339 396.777C562.689 396.089 563.181 395.555 563.815 395.174C564.45 394.794 565.199 394.603 566.064 394.603C566.929 394.603 567.679 394.794 568.313 395.174C568.947 395.555 569.438 396.089 569.784 396.777C570.133 397.465 570.308 398.267 570.308 399.182C570.308 400.097 570.133 400.896 569.784 401.581C569.438 402.265 568.947 402.797 568.313 403.178C567.679 403.558 566.929 403.749 566.064 403.749ZM566.076 402.076C566.545 402.076 566.937 401.948 567.252 401.69C567.567 401.429 567.802 401.079 567.956 400.641C568.113 400.202 568.192 399.714 568.192 399.176C568.192 398.634 568.113 398.144 567.956 397.706C567.802 397.263 567.567 396.912 567.252 396.65C566.937 396.389 566.545 396.258 566.076 396.258C565.595 396.258 565.195 396.389 564.876 396.65C564.561 396.912 564.325 397.263 564.167 397.706C564.013 398.144 563.936 398.634 563.936 399.176C563.936 399.714 564.013 400.202 564.167 400.641C564.325 401.079 564.561 401.429 564.876 401.69C565.195 401.948 565.595 402.076 566.076 402.076ZM572.08 406.897V394.719H574.133V396.183H574.254C574.362 395.968 574.513 395.739 574.709 395.497C574.906 395.251 575.171 395.041 575.505 394.868C575.84 394.692 576.266 394.603 576.785 394.603C577.47 394.603 578.087 394.778 578.636 395.128C579.19 395.474 579.628 395.987 579.951 396.668C580.278 397.344 580.441 398.175 580.441 399.159C580.441 400.131 580.282 400.958 579.963 401.638C579.644 402.319 579.209 402.838 578.659 403.195C578.11 403.553 577.487 403.731 576.791 403.731C576.284 403.731 575.863 403.647 575.528 403.478C575.194 403.309 574.925 403.105 574.721 402.866C574.521 402.624 574.365 402.396 574.254 402.18H574.167V406.897H572.08ZM574.127 399.147C574.127 399.72 574.208 400.222 574.369 400.652C574.535 401.083 574.771 401.419 575.079 401.661C575.39 401.9 575.767 402.019 576.209 402.019C576.67 402.019 577.056 401.896 577.368 401.65C577.679 401.4 577.914 401.06 578.071 400.629C578.233 400.195 578.313 399.701 578.313 399.147C578.313 398.597 578.235 398.109 578.077 397.682C577.919 397.256 577.685 396.921 577.374 396.679C577.062 396.437 576.674 396.316 576.209 396.316C575.763 396.316 575.384 396.433 575.073 396.668C574.761 396.902 574.525 397.231 574.364 397.654C574.206 398.076 574.127 398.574 574.127 399.147ZM584.316 391.766V403.576H582.229V391.766H584.316ZM590.384 403.749C589.496 403.749 588.729 403.564 588.083 403.195C587.441 402.822 586.947 402.296 586.601 401.615C586.255 400.931 586.082 400.125 586.082 399.199C586.082 398.288 586.255 397.488 586.601 396.8C586.951 396.108 587.439 395.57 588.066 395.186C588.692 394.797 589.429 394.603 590.274 394.603C590.82 394.603 591.335 394.692 591.82 394.868C592.308 395.041 592.739 395.311 593.111 395.676C593.488 396.041 593.784 396.506 593.999 397.071C594.215 397.632 594.322 398.301 594.322 399.078V399.718H587.062V398.311H592.321C592.318 397.911 592.231 397.556 592.062 397.244C591.893 396.929 591.656 396.681 591.353 396.5C591.053 396.32 590.703 396.229 590.303 396.229C589.876 396.229 589.502 396.333 589.179 396.541C588.856 396.744 588.604 397.014 588.423 397.348C588.247 397.679 588.156 398.042 588.152 398.438V399.666C588.152 400.181 588.247 400.623 588.435 400.992C588.623 401.358 588.887 401.638 589.225 401.834C589.563 402.026 589.959 402.123 590.413 402.123C590.716 402.123 590.991 402.08 591.237 401.996C591.483 401.907 591.697 401.778 591.877 401.609C592.058 401.44 592.195 401.231 592.287 400.981L594.236 401.2C594.113 401.715 593.878 402.165 593.532 402.549C593.19 402.93 592.752 403.226 592.218 403.437C591.683 403.645 591.072 403.749 590.384 403.749ZM602.348 391.766V403.576H600.208V391.766H602.348ZM610.503 400.796L610.497 398.276H610.831L614.014 394.719H616.454L612.538 399.078H612.106L610.503 400.796ZM608.6 403.576V391.766H610.687V403.576H608.6ZM614.159 403.576L611.275 399.545L612.682 398.075L616.655 403.576H614.159ZM619.932 398.386V403.576H617.845V394.719H619.84V396.224H619.944C620.148 395.728 620.472 395.334 620.918 395.041C621.368 394.749 621.924 394.603 622.585 394.603C623.196 394.603 623.728 394.734 624.182 394.995C624.64 395.257 624.993 395.635 625.243 396.131C625.497 396.627 625.622 397.229 625.618 397.936V403.576H623.53V398.259C623.53 397.667 623.377 397.204 623.069 396.869C622.765 396.535 622.344 396.368 621.806 396.368C621.441 396.368 621.116 396.448 620.832 396.61C620.551 396.768 620.33 396.996 620.169 397.296C620.011 397.596 619.932 397.959 619.932 398.386ZM631.603 403.749C630.738 403.749 629.989 403.558 629.354 403.178C628.72 402.797 628.228 402.265 627.878 401.581C627.532 400.896 627.359 400.097 627.359 399.182C627.359 398.267 627.532 397.465 627.878 396.777C628.228 396.089 628.72 395.555 629.354 395.174C629.989 394.794 630.738 394.603 631.603 394.603C632.468 394.603 633.218 394.794 633.852 395.174C634.487 395.555 634.977 396.089 635.323 396.777C635.672 397.465 635.847 398.267 635.847 399.182C635.847 400.097 635.672 400.896 635.323 401.581C634.977 402.265 634.487 402.797 633.852 403.178C633.218 403.558 632.468 403.749 631.603 403.749ZM631.615 402.076C632.084 402.076 632.476 401.948 632.791 401.69C633.106 401.429 633.341 401.079 633.495 400.641C633.652 400.202 633.731 399.714 633.731 399.176C633.731 398.634 633.652 398.144 633.495 397.706C633.341 397.263 633.106 396.912 632.791 396.65C632.476 396.389 632.084 396.258 631.615 396.258C631.134 396.258 630.735 396.389 630.415 396.65C630.1 396.912 629.864 397.263 629.706 397.706C629.552 398.144 629.476 398.634 629.476 399.176C629.476 399.714 629.552 400.202 629.706 400.641C629.864 401.079 630.1 401.429 630.415 401.69C630.735 401.948 631.134 402.076 631.615 402.076ZM639.193 403.576L636.691 394.719H638.819L640.375 400.946H640.456L642.048 394.719H644.152L645.744 400.912H645.83L647.364 394.719H649.498L646.989 403.576H644.816L643.155 397.59H643.034L641.373 403.576H639.193Z" fill="white"/>
+<path d="M385.508 633.281C385.428 632.998 385.258 632.748 385.022 632.57C384.787 632.392 384.5 632.296 384.206 632.296H382.401C381.782 632.296 381.259 632.713 381.099 633.281M385.508 633.281C385.541 633.398 385.559 633.522 385.559 633.65C385.559 633.769 385.511 633.884 385.427 633.969C385.342 634.053 385.227 634.101 385.108 634.101H381.499C381.38 634.101 381.265 634.053 381.18 633.969C381.096 633.884 381.048 633.769 381.048 633.65C381.048 633.522 381.066 633.398 381.099 633.281M385.508 633.281C385.897 633.311 386.283 633.348 386.667 633.392C387.329 633.469 387.814 634.04 387.814 634.706V642.671C387.814 643.03 387.672 643.374 387.418 643.628C387.164 643.881 386.82 644.024 386.461 644.024H380.146C379.787 644.024 379.443 643.881 379.189 643.628C378.936 643.374 378.793 643.03 378.793 642.671V634.706C378.793 634.04 379.278 633.469 379.94 633.392C380.325 633.348 380.712 633.311 381.099 633.281" stroke="#B8C4C6" stroke-width="1.35317" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M416.509 638.503C416.363 638.24 416.134 638.034 415.859 637.916C415.583 637.798 415.276 637.775 414.986 637.85C414.696 637.925 414.439 638.095 414.256 638.332C414.072 638.569 413.973 638.86 413.973 639.16C413.973 639.46 414.072 639.751 414.256 639.988C414.439 640.225 414.696 640.395 414.986 640.47C415.276 640.545 415.583 640.522 415.859 640.404C416.134 640.285 416.363 640.079 416.509 639.817M416.509 638.503C416.617 638.697 416.679 638.921 416.679 639.16C416.679 639.399 416.617 639.623 416.509 639.817M416.509 638.503L422.262 635.307M416.509 639.817L422.262 643.013M422.262 635.307C422.346 635.465 422.461 635.606 422.601 635.72C422.74 635.834 422.9 635.919 423.073 635.97C423.245 636.021 423.426 636.037 423.605 636.017C423.784 635.997 423.957 635.942 424.114 635.855C424.271 635.768 424.409 635.65 424.521 635.508C424.632 635.367 424.714 635.205 424.761 635.031C424.809 634.858 424.822 634.677 424.799 634.498C424.776 634.32 424.717 634.148 424.627 633.993C424.449 633.686 424.158 633.462 423.816 633.367C423.475 633.273 423.11 633.317 422.8 633.489C422.49 633.661 422.26 633.948 422.159 634.288C422.059 634.628 422.095 634.994 422.262 635.307ZM422.262 643.013C422.175 643.168 422.121 643.339 422.1 643.516C422.08 643.693 422.095 643.871 422.143 644.042C422.192 644.213 422.274 644.373 422.385 644.512C422.495 644.651 422.632 644.767 422.788 644.854C422.943 644.94 423.114 644.995 423.291 645.015C423.467 645.035 423.646 645.021 423.817 644.972C423.988 644.923 424.147 644.841 424.287 644.731C424.426 644.62 424.542 644.483 424.628 644.328C424.803 644.014 424.845 643.644 424.747 643.299C424.648 642.953 424.416 642.662 424.102 642.487C423.789 642.313 423.418 642.27 423.073 642.369C422.728 642.468 422.436 642.699 422.262 643.013Z" stroke="#B8C4C6" stroke-width="1.35317" stroke-linecap="round" stroke-linejoin="round"/>
+<rect x="22.2695" y="19.4858" width="16.702" height="16.702" rx="8.35102" fill="white" fill-opacity="0.1"/>
+<rect x="50.1055" y="19.4858" width="16.702" height="16.702" rx="8.35102" fill="white" fill-opacity="0.1"/>
+<rect x="77.9414" y="19.4858" width="16.702" height="16.702" rx="8.35102" fill="white" fill-opacity="0.1"/>
+<line x1="3" y1="55.3041" x2="1364" y2="55.3041" stroke="#262A30" stroke-width="1.39184"/>
+<path d="M74.0455 82.7727L69.358 100.188H67.4616L72.1491 82.7727H74.0455ZM85.7376 98.2202C84.6817 98.2202 83.7726 97.9811 83.0103 97.5028C82.2527 97.0199 81.6703 96.3546 81.2631 95.5071C80.8559 94.6596 80.6523 93.6889 80.6523 92.5952C80.6523 91.4872 80.8607 90.5095 81.2773 89.6619C81.694 88.8097 82.2811 88.1444 83.0387 87.6662C83.7963 87.188 84.6888 86.9489 85.7163 86.9489C86.5449 86.9489 87.2835 87.1027 87.9322 87.4105C88.5808 87.7135 89.104 88.1397 89.5018 88.6889C89.9042 89.2382 90.1433 89.8797 90.2191 90.6136H88.1523C88.0387 90.1023 87.7783 89.6619 87.3711 89.2926C86.9686 88.9233 86.4289 88.7386 85.7518 88.7386C85.1599 88.7386 84.6415 88.8949 84.1964 89.2074C83.756 89.5152 83.4128 89.9555 83.1665 90.5284C82.9203 91.0966 82.7972 91.7689 82.7972 92.5455C82.7972 93.3409 82.918 94.0275 83.1594 94.6051C83.4009 95.1828 83.7418 95.6302 84.1822 95.9474C84.6272 96.2647 85.1504 96.4233 85.7518 96.4233C86.1542 96.4233 86.5188 96.3499 86.8455 96.2031C87.177 96.0516 87.454 95.8362 87.6765 95.5568C87.9038 95.2775 88.0624 94.9413 88.1523 94.5483H90.2191C90.1433 95.2538 89.9137 95.8835 89.5302 96.4375C89.1467 96.9915 88.6329 97.4271 87.989 97.7443C87.3498 98.0616 86.5993 98.2202 85.7376 98.2202ZM94.6136 91.5227V98H92.4901V83.4545H94.5852V88.8665H94.7202C94.9759 88.2794 95.3665 87.813 95.892 87.4673C96.4176 87.1217 97.1042 86.9489 97.9517 86.9489C98.6998 86.9489 99.3532 87.1027 99.9119 87.4105C100.475 87.7183 100.911 88.1776 101.219 88.7884C101.531 89.3944 101.688 90.152 101.688 91.0611V98H99.5639V91.3168C99.5639 90.5166 99.358 89.8963 98.946 89.456C98.5341 89.0109 97.9612 88.7884 97.2273 88.7884C96.7254 88.7884 96.2756 88.8949 95.8778 89.108C95.4848 89.321 95.1747 89.6335 94.9474 90.0455C94.7249 90.4527 94.6136 90.9451 94.6136 91.5227ZM107.696 98.2415C107.005 98.2415 106.38 98.1136 105.821 97.858C105.262 97.5975 104.82 97.2211 104.493 96.7287C104.171 96.2363 104.01 95.6326 104.01 94.9176C104.01 94.3021 104.128 93.7955 104.365 93.3977C104.602 93 104.921 92.6851 105.324 92.4531C105.726 92.2211 106.176 92.0459 106.673 91.9276C107.17 91.8092 107.677 91.7192 108.193 91.6577C108.847 91.5819 109.377 91.5204 109.784 91.473C110.191 91.4209 110.487 91.3381 110.672 91.2244C110.857 91.1108 110.949 90.9261 110.949 90.6705V90.6207C110.949 90.0005 110.774 89.5199 110.423 89.179C110.078 88.8381 109.562 88.6676 108.875 88.6676C108.16 88.6676 107.597 88.8262 107.185 89.1435C106.777 89.456 106.496 89.804 106.339 90.1875L104.344 89.733C104.58 89.0701 104.926 88.535 105.381 88.1278C105.84 87.7159 106.368 87.4176 106.964 87.233C107.561 87.0436 108.188 86.9489 108.847 86.9489C109.282 86.9489 109.744 87.0009 110.232 87.1051C110.724 87.2045 111.183 87.3892 111.609 87.6591C112.04 87.929 112.393 88.3149 112.668 88.8168C112.942 89.3139 113.08 89.9602 113.08 90.7557V98H111.006V96.5085H110.92C110.783 96.7831 110.577 97.053 110.303 97.3182C110.028 97.5833 109.675 97.8035 109.244 97.9787C108.813 98.1539 108.297 98.2415 107.696 98.2415ZM108.158 96.5369C108.745 96.5369 109.247 96.4209 109.663 96.1889C110.085 95.9569 110.404 95.6539 110.622 95.2798C110.845 94.901 110.956 94.4962 110.956 94.0653V92.6591C110.88 92.7348 110.733 92.8059 110.516 92.8722C110.303 92.9337 110.059 92.9882 109.784 93.0355C109.509 93.0781 109.242 93.1184 108.982 93.1562C108.721 93.1894 108.503 93.2178 108.328 93.2415C107.916 93.2936 107.54 93.3812 107.199 93.5043C106.863 93.6274 106.593 93.8049 106.389 94.0369C106.19 94.2642 106.091 94.5672 106.091 94.946C106.091 95.4716 106.285 95.8693 106.673 96.1392C107.062 96.4044 107.556 96.5369 108.158 96.5369ZM121 87.0909V88.7955H115.042V87.0909H121ZM116.64 84.4773H118.763V94.7969C118.763 95.2088 118.825 95.5189 118.948 95.7273C119.071 95.9309 119.23 96.0705 119.424 96.1463C119.623 96.2173 119.838 96.2528 120.07 96.2528C120.24 96.2528 120.39 96.241 120.517 96.2173C120.645 96.1937 120.745 96.1747 120.816 96.1605L121.199 97.9148C121.076 97.9621 120.901 98.0095 120.674 98.0568C120.446 98.1089 120.162 98.1373 119.821 98.142C119.263 98.1515 118.742 98.0521 118.259 97.8438C117.776 97.6354 117.385 97.3134 117.087 96.8778C116.789 96.4422 116.64 95.8954 116.64 95.2372V84.4773Z" fill="#979797"/>
+<defs>
+<linearGradient id="paint0_linear_380_370" x1="489.017" y1="-493.074" x2="933.823" y2="709.983" gradientUnits="userSpaceOnUse">
+<stop stop-color="#333943"/>
+<stop offset="1" stop-color="#0F1114"/>
+</linearGradient>
+<linearGradient id="paint1_linear_380_370" x1="978.794" y1="307.287" x2="936.395" y2="307.287" gradientUnits="userSpaceOnUse">
+<stop stop-color="#171B1F"/>
+<stop offset="1" stop-color="#1F2428" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint2_linear_380_370" x1="762.744" y1="670.298" x2="768.028" y2="776.787" gradientUnits="userSpaceOnUse">
+<stop stop-color="white" stop-opacity="0.1"/>
+<stop offset="1" stop-color="white" stop-opacity="0"/>
+</linearGradient>
+<clipPath id="clip0_380_370">
+<rect width="601.712" height="81.1905" fill="white" transform="translate(377.086 266.692)"/>
+</clipPath>
+<clipPath id="clip1_380_370">
+<rect width="21.65" height="21.65" fill="white" transform="translate(32.9258 435.387)"/>
+</clipPath>
+<clipPath id="clip2_380_370">
+<rect x="377.086" y="705.12" width="608.929" height="64.9524" rx="21.6508" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/apps/web/public/logo.png b/apps/web/public/logo.png
deleted file mode 100644
index 3fad437e..00000000
--- a/apps/web/public/logo.png
+++ /dev/null
Binary files differ
diff --git a/apps/web/public/logo.svg b/apps/web/public/logo.svg
new file mode 100644
index 00000000..6081634d
--- /dev/null
+++ b/apps/web/public/logo.svg
@@ -0,0 +1,4 @@
+<svg width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path d="M19.0357 8C20.5531 8 21 9.27461 21 10.8438V16.3281H23.5536V14.2212C23.5536 13.1976 23.9468 12.216 24.6467 11.4922L25.0529 11.0721C24.9729 10.8772 24.9286 10.6627 24.9286 10.4375C24.9286 9.54004 25.6321 8.8125 26.5 8.8125C27.3679 8.8125 28.0714 9.54004 28.0714 10.4375C28.0714 11.335 27.3679 12.0625 26.5 12.0625C26.2822 12.0625 26.0748 12.0167 25.8863 11.9339L25.4801 12.354C25.0012 12.8492 24.7321 13.5209 24.7321 14.2212V16.3281H28.9714C29.2045 15.7326 29.7691 15.3125 30.4286 15.3125C31.2964 15.3125 32 16.04 32 16.9375C32 17.835 31.2964 18.5625 30.4286 18.5625C29.7691 18.5625 29.2045 18.1424 28.9714 17.5469H21V21.2031H25.0428C25.2759 20.6076 25.8405 20.1875 26.5 20.1875C27.3679 20.1875 28.0714 20.915 28.0714 21.8125C28.0714 22.71 27.3679 23.4375 26.5 23.4375C25.8405 23.4375 25.2759 23.0174 25.0428 22.4219H21V26.0781H24.4125C25.4023 26.0781 26.3516 26.4847 27.0515 27.2085L29.0292 29.2536C29.2177 29.1708 29.4251 29.125 29.6429 29.125C30.5107 29.125 31.2143 29.8525 31.2143 30.75C31.2143 31.6475 30.5107 32.375 29.6429 32.375C28.775 32.375 28.0714 31.6475 28.0714 30.75C28.0714 30.5248 28.1157 30.3103 28.1958 30.1154L26.2181 28.0703C25.7392 27.5751 25.0897 27.2969 24.4125 27.2969H21V31.1562C21 32.7254 20.5531 34 19.0357 34C17.6165 34 16.4478 32.8879 16.3004 31.4559C16.0451 31.527 15.775 31.5625 15.5 31.5625C13.7665 31.5625 12.3571 30.1051 12.3571 28.3125C12.3571 27.9367 12.421 27.5711 12.5339 27.2359C11.0509 26.657 10 25.1742 10 23.4375C10 21.8176 10.9183 20.416 12.2491 19.766C11.8219 19.2125 11.5714 18.5117 11.5714 17.75C11.5714 16.191 12.6321 14.891 14.0464 14.5711C13.9679 14.2918 13.9286 13.9922 13.9286 13.6875C13.9286 12.1691 14.9402 10.8895 16.3004 10.534C16.4478 9.11211 17.6165 8 19.0357 8Z"
+ fill="#fff"/>
+</svg> \ No newline at end of file
diff --git a/apps/web/public/note.svg b/apps/web/public/note.svg
deleted file mode 100644
index ffb4c795..00000000
--- a/apps/web/public/note.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#6F6F6F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-text w-10 h-10">
- <path d="M17 6.1H3"></path>
- <path d="M21 12.1H3">
- </path><path d="M15.1 18H3"></path>
-</svg>
diff --git a/apps/web/public/og-image.png b/apps/web/public/og-image.png
index 1050ff19..c5a61b17 100644
--- a/apps/web/public/og-image.png
+++ b/apps/web/public/og-image.png
Binary files differ
diff --git a/apps/web/public/site.webmanifest b/apps/web/public/site.webmanifest
index 8d302080..c903e516 100644
--- a/apps/web/public/site.webmanifest
+++ b/apps/web/public/site.webmanifest
@@ -1,14 +1,14 @@
{
- "name": "Supermemory - Your second brain",
- "short_name": "Save your memories forever, build your own second brain.",
+ "name": "Supermemory - your second brain.",
+ "short_name": "Supermemory",
"icons": [
{
- "src": "/android-chrome-192x192.png",
+ "src": "/icons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
- "src": "/android-chrome-512x512.png",
+ "src": "/icons/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
diff --git a/apps/web/public/twitter.svg b/apps/web/public/twitter.svg
deleted file mode 100644
index 0819971e..00000000
--- a/apps/web/public/twitter.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg viewBox="0 0 256 209" width="256" height="209" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M256 25.45c-9.42 4.177-19.542 7-30.166 8.27 10.845-6.5 19.172-16.793 23.093-29.057a105.183 105.183 0 0 1-33.351 12.745C205.995 7.201 192.346.822 177.239.822c-29.006 0-52.523 23.516-52.523 52.52 0 4.117.465 8.125 1.36 11.97-43.65-2.191-82.35-23.1-108.255-54.876-4.52 7.757-7.11 16.78-7.11 26.404 0 18.222 9.273 34.297 23.365 43.716a52.312 52.312 0 0 1-23.79-6.57c-.003.22-.003.44-.003.661 0 25.447 18.104 46.675 42.13 51.5a52.592 52.592 0 0 1-23.718.9c6.683 20.866 26.08 36.05 49.062 36.475-17.975 14.086-40.622 22.483-65.228 22.483-4.24 0-8.42-.249-12.529-.734 23.243 14.902 50.85 23.597 80.51 23.597 96.607 0 149.434-80.031 149.434-149.435 0-2.278-.05-4.543-.152-6.795A106.748 106.748 0 0 0 256 25.45" fill="#55acee"/></svg> \ No newline at end of file
diff --git a/apps/web/public/web.svg b/apps/web/public/web.svg
deleted file mode 100644
index c59f016d..00000000
--- a/apps/web/public/web.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
- <path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418" />
-</svg>
diff --git a/apps/web/src/actions/db.ts b/apps/web/src/actions/db.ts
deleted file mode 100644
index 59eb8976..00000000
--- a/apps/web/src/actions/db.ts
+++ /dev/null
@@ -1,676 +0,0 @@
-"use server";
-import { cookies, headers } from "next/headers";
-import { db } from "@/server/db";
-import {
- contentToSpace,
- sessions,
- storedContent,
- users,
- space,
- StoredContent,
-} from "@/server/db/schema";
-import { SearchResult } from "@/contexts/MemoryContext";
-import {
- like,
- eq,
- and,
- sql,
- exists,
- asc,
- notExists,
- inArray,
- notInArray,
-} from "drizzle-orm";
-import { union } from "drizzle-orm/sqlite-core";
-import { env } from "@/env";
-
-// @todo: (future) pagination not yet needed
-export async function searchMemoriesAndSpaces(
- query: string,
- opts?: {
- filter?: { memories?: boolean; spaces?: boolean };
- range?: { offset: number; limit: number };
- memoriesRelativeToSpace?: {
- fromSpaces?: number[];
- notInSpaces?: number[];
- };
- },
-): Promise<SearchResult[]> {
- const user = await getUser();
-
- if (!user) {
- return [];
- }
-
- const defaultWhere = and(
- eq(storedContent.user, user.id),
- like(storedContent.title, `%${query}%`),
- );
- const extraWheres = [];
-
- if (opts?.memoriesRelativeToSpace) {
- if (opts.memoriesRelativeToSpace.fromSpaces) {
- extraWheres.push(
- exists(
- db
- .select()
- .from(contentToSpace)
- .where(
- and(
- eq(contentToSpace.contentId, storedContent.id),
- inArray(
- contentToSpace.spaceId,
- opts.memoriesRelativeToSpace.fromSpaces,
- ),
- ),
- ),
- ),
- );
- }
- if (opts.memoriesRelativeToSpace.notInSpaces) {
- extraWheres.push(
- notExists(
- db
- .select()
- .from(contentToSpace)
- .where(
- and(
- eq(contentToSpace.contentId, storedContent.id),
- inArray(
- contentToSpace.spaceId,
- opts.memoriesRelativeToSpace.notInSpaces,
- ),
- ),
- ),
- ),
- );
- }
- }
-
- try {
- let searchMemoriesQuery = db
- .select({
- type: sql<string>`'memory'`,
- space: sql`NULL`,
- memory: storedContent as any,
- })
- .from(storedContent)
- .where(
- extraWheres.length == 2
- ? and(and(...extraWheres), defaultWhere)
- : extraWheres.length == 1
- ? and(...extraWheres, defaultWhere)
- : defaultWhere,
- )
- .orderBy(asc(storedContent.savedAt));
-
- let searchSpacesQuery = db
- .select({
- type: sql<string>`'space'`,
- space: space as any,
- memory: sql`NULL`,
- })
- .from(space)
- .where(and(eq(space.user, user.id), like(space.name, `%${query}%`)))
- .orderBy(asc(space.name));
-
- let queries = [];
-
- console.log("adding");
-
- [undefined, true].includes(opts?.filter?.memories) &&
- queries.push(searchMemoriesQuery);
- [undefined, true].includes(opts?.filter?.spaces) &&
- queries.push(searchSpacesQuery);
-
- if (opts?.range) {
- queries = queries.map((q) =>
- q.offset(opts.range!.offset).limit(opts.range!.limit),
- );
- } else {
- queries = queries.map((q) => q.all());
- }
-
- const data = await Promise.all(queries);
-
- console.log("resp", data);
-
- return data.reduce((acc, i) => [...acc, ...i]) as SearchResult[];
- } catch {
- return [];
- }
-}
-
-export async function getMemoriesFromUrl(urls: string[]) {
- const user = await getUser();
-
- if (!user) {
- return [];
- }
-
- return urls.length > 0
- ? await db
- .select()
- .from(storedContent)
- .where(
- and(
- inArray(storedContent.url, urls),
- eq(storedContent.user, user.id),
- ),
- )
- .all()
- : [];
-}
-
-async function getUser() {
- const token =
- cookies().get("next-auth.session-token")?.value ??
- cookies().get("__Secure-authjs.session-token")?.value ??
- cookies().get("authjs.session-token")?.value ??
- headers().get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return null;
- }
-
- const session = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!session || session.length === 0) {
- return null;
- }
-
- const [userData] = await db
- .select()
- .from(users)
- .where(eq(users.id, session[0].userId))
- .limit(1);
-
- if (!userData) {
- return null;
- }
-
- return userData;
-}
-
-export async function getSpace(id: number) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- return (
- await db
- .select()
- .from(space)
- .where(and(eq(space.id, id), eq(space.user, user.id)))
- )[0];
-}
-
-export async function addSpace(name: string, memories: number[]) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- const [addedSpace] = await db
- .insert(space)
- .values({
- name: name,
- user: user.id,
- })
- .returning();
-
- const addedMemories =
- memories.length > 0
- ? await db
- .insert(contentToSpace)
- .values(
- memories.map((m) => ({
- contentId: m,
- spaceId: addedSpace.id,
- })),
- )
- .returning()
- : [];
-
- return {
- space: addedSpace,
- addedMemories,
- };
-}
-
-export async function fetchContent(id: number) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- const fetchedMemory = await db
- .select()
- .from(storedContent)
- .where(and(eq(storedContent.id, id), eq(storedContent.user, user.id)));
-
- const memory = fetchedMemory.length > 0 ? fetchedMemory[0] : null;
-
- const spaces = memory
- ? await db
- .select()
- .from(contentToSpace)
- .where(eq(contentToSpace.contentId, memory.id))
- : [];
-
- return {
- memory,
- spaces: spaces.map((s) => s.spaceId),
- };
-}
-
-export async function fetchContentForSpace(
- spaceId: number,
- range?: {
- offset: number;
- limit: number;
- },
-) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- const query = db
- .select()
- .from(storedContent)
- .where(
- exists(
- db
- .select()
- .from(contentToSpace)
- .where(
- and(
- and(
- eq(contentToSpace.spaceId, spaceId),
- eq(contentToSpace.contentId, storedContent.id),
- ),
- exists(
- db
- .select()
- .from(space)
- .where(
- and(
- eq(space.user, user.id),
- eq(space.id, contentToSpace.spaceId),
- ),
- ),
- ),
- ),
- ),
- ),
- )
- .orderBy(asc(storedContent.savedAt));
-
- return range
- ? await query.limit(range.limit).offset(range.offset)
- : await query.all();
-}
-
-export async function fetchFreeMemories(range?: {
- offset: number;
- limit: number;
-}) {
- const user = await getUser();
-
- if (!user) {
- return [];
- }
-
- try {
- const query = db
- .select()
- .from(storedContent)
- .where(
- and(
- notExists(
- db
- .select()
- .from(contentToSpace)
- .where(eq(contentToSpace.contentId, storedContent.id)),
- ),
- eq(storedContent.user, user.id),
- ),
- )
- .orderBy(asc(storedContent.savedAt));
-
- return range
- ? await query.limit(range.limit).offset(range.offset)
- : await query.all();
- } catch {
- return [];
- }
-}
-
-export async function updateSpaceTitle(id: number, title: string) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- return (
- await db
- .update(space)
- .set({ name: title })
- .where(and(eq(space.id, id), eq(space.user, user.id)))
- .returning()
- )[0];
-}
-
-export async function addMemory(
- content: typeof storedContent.$inferInsert,
- spaces: number[],
-) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- if (!content.content || content.content.trim() === "") {
- const resp = await fetch(
- `https://cf-ai-backend.dhravya.workers.dev/getPageContent?url=${content.url}`,
- {
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- },
- );
-
- const data = await resp.text();
-
- console.log(data);
-
- content.content = data;
- }
-
- if (!content.content || content.content == "") {
- return null;
- }
-
- let [addedMemory] = await db
- .insert(storedContent)
- .values({
- user: user.id,
- ...content,
- })
- .returning();
-
- const addedToSpaces =
- spaces.length > 0
- ? await db
- .insert(contentToSpace)
- .values(
- spaces.map((s) => ({
- contentId: addedMemory.id,
- spaceId: s,
- })),
- )
- .returning()
- : [];
-
- if (content.type === "note") {
- addedMemory = (
- await db
- .update(storedContent)
- .set({
- url: addedMemory.url + addedMemory.id,
- })
- .where(eq(storedContent.id, addedMemory.id))
- .returning()
- )[0];
- }
-
- console.log("adding with:", `${addedMemory.url}-${user.email}`);
- // Add to vectorDB
- const res = (await Promise.race([
- fetch("https://cf-ai-backend.dhravya.workers.dev/add", {
- method: "POST",
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- body: JSON.stringify({
- pageContent: addedMemory.content,
- title: addedMemory.title,
- url: addedMemory.url,
- user: user.email,
- }),
- }),
- new Promise((_, reject) =>
- setTimeout(() => reject(new Error("Request timed out")), 40000),
- ),
- ])) as Response;
-
- return {
- memory: addedMemory,
- addedToSpaces,
- };
-}
-
-export async function addContentInSpaces(id: number, contents: number[]) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- const data =
- contents.length > 0
- ? await db
- .insert(contentToSpace)
- .values(
- contents.map((i) => ({
- spaceId: id,
- contentId: i,
- })),
- )
- .returning()
- : [];
-
- return data;
-}
-
-export async function updateMemory(
- id: number,
- {
- title,
- content,
- spaces,
- removedFromSpaces: removeSpaces,
- }: {
- title?: string;
- content?: string;
- spaces?: number[];
- removedFromSpaces?: number[];
- },
-) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- let updatedMemory: StoredContent | null = null;
-
- if (title && content) {
- const [prev] = await db
- .select()
- .from(storedContent)
- .where(and(eq(storedContent.user, user.id), eq(storedContent.id, id)));
-
- if (!prev) {
- return null;
- }
-
- const newContent = {
- ...(title ? { title } : {}),
- ...(content ? { content } : {}),
- };
-
- const updated = {
- ...newContent,
- ...prev,
- };
-
- console.log("adding with:", `${updated.url}-${user.email}`);
- // Add to vectorDB
- const res = (await Promise.race([
- fetch("https://cf-ai-backend.dhravya.workers.dev/edit", {
- method: "POST",
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- body: JSON.stringify({
- pageContent: updated.content,
- title: updated.title,
- url: updated.url,
- user: user.email,
- uniqueUrl: updated.url,
- }),
- }),
- new Promise((_, reject) =>
- setTimeout(() => reject(new Error("Request timed out")), 40000),
- ),
- ])) as Response;
-
- [updatedMemory] = await db
- .update(storedContent)
- .set(newContent)
- .where(and(eq(storedContent.id, id), eq(storedContent.user, user.id)))
- .returning();
-
- console.log(updatedMemory, newContent);
- }
-
- if (!updatedMemory) {
- [updatedMemory] = await db
- .select()
- .from(storedContent)
- .where(and(eq(storedContent.id, id), eq(storedContent.user, user.id)));
- }
-
- const removedFromSpaces = removeSpaces
- ? removeSpaces.length > 0
- ? await db
- .delete(contentToSpace)
- .where(
- and(
- inArray(contentToSpace.spaceId, removeSpaces),
- eq(contentToSpace.contentId, id),
- ),
- )
- .returning()
- : []
- : spaces
- ? spaces.length > 0
- ? await db
- .delete(contentToSpace)
- .where(
- and(
- notInArray(contentToSpace.spaceId, spaces),
- eq(contentToSpace.contentId, id),
- ),
- )
- .returning()
- : await db
- .delete(contentToSpace)
- .where(eq(contentToSpace.contentId, id))
- : [];
-
- const addedToSpaces =
- spaces && spaces.length > 0
- ? await db
- .insert(contentToSpace)
- .values(
- spaces.map((s) => ({
- contentId: id,
- spaceId: s,
- })),
- )
- .onConflictDoNothing()
- .returning()
- : [];
-
- const resultedSpaces =
- (
- await db
- .select()
- .from(contentToSpace)
- .where(eq(contentToSpace.contentId, id))
- .all()
- ).map((i) => i.spaceId) ?? [];
-
- return {
- memory: updatedMemory,
- addedToSpaces,
- removedFromSpaces,
- resultedSpaces,
- };
-}
-
-export async function deleteSpace(id: number) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- await db.delete(contentToSpace).where(eq(contentToSpace.spaceId, id));
-
- const [deleted] = await db
- .delete(space)
- .where(and(eq(space.user, user.id), eq(space.id, id)))
- .returning();
-
- return deleted;
-}
-
-export async function deleteMemory(id: number) {
- const user = await getUser();
-
- if (!user) {
- return null;
- }
-
- await db.delete(contentToSpace).where(eq(contentToSpace.contentId, id));
-
- const [deleted] = await db
- .delete(storedContent)
- .where(and(eq(storedContent.user, user.id), eq(storedContent.id, id)))
- .returning();
-
- if (deleted) {
- console.log("adding with:", `${deleted.url}-${user.email}`);
- const res = (await Promise.race([
- fetch(`https://cf-ai-backend.dhravya.workers.dev/delete`, {
- method: "DELETE",
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- body: JSON.stringify({
- websiteUrl: deleted.url,
- user: user.email,
- }),
- }),
- new Promise((_, reject) =>
- setTimeout(() => reject(new Error("Request timed out")), 40000),
- ),
- ])) as Response;
- }
-
- return deleted;
-}
diff --git a/apps/web/src/app/MessagePoster.tsx b/apps/web/src/app/MessagePoster.tsx
deleted file mode 100644
index 1abad1be..00000000
--- a/apps/web/src/app/MessagePoster.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-"use client";
-
-import { useEffect } from "react";
-
-function MessagePoster({ jwt }: { jwt: string }) {
- useEffect(() => {
- if (typeof window === "undefined") return;
- window.postMessage({ jwt }, "*");
- }, [jwt]);
-
- return (
- <button
- className="p-2"
- onClick={() => {
- if (typeof window === "undefined") return;
- window.postMessage({ jwt }, "*");
- }}
- >
- Extension Auth
- </button>
- );
-}
-
-export default MessagePoster;
diff --git a/apps/web/src/app/api/[...nextauth]/route.ts b/apps/web/src/app/api/[...nextauth]/route.ts
deleted file mode 100644
index db7d1fb8..00000000
--- a/apps/web/src/app/api/[...nextauth]/route.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { GET, POST } from "@/server/auth";
-export const runtime = "edge";
diff --git a/apps/web/src/app/api/addTweetsToDb/route.ts b/apps/web/src/app/api/addTweetsToDb/route.ts
deleted file mode 100644
index 7fe2edba..00000000
--- a/apps/web/src/app/api/addTweetsToDb/route.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, storedContent, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-
-export const runtime = "edge";
-
-interface TweetData {
- tweetText: string;
- postUrl: string;
- authorName: string;
- handle: string;
- time: string;
- saveToUser: string;
-}
-
-export async function POST(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, TOKEN not found." }),
- { status: 404 },
- );
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const session = { session: sessionData[0], user: user[0] };
-
- const data = (await req.json()) as TweetData[];
-
- for (const tweet of data) {
- const { id } = (
- await db
- .insert(storedContent)
- .values({
- content: tweet.tweetText,
- title: "Twitter Bookmark",
- description: "",
- url: tweet.postUrl,
- baseUrl: "https://twitter.com",
- image: "https://supermemory.dhr.wtf/twitter.svg",
- savedAt: new Date(),
- user: session.user.id,
- type: "twitter-bookmark",
- })
- .returning({ id: storedContent.id })
- )[0];
-
- if (!id) {
- return NextResponse.json(
- {
- message: "Error",
- error:
- "Something went wrong when inserting the tweet to storedContent",
- },
- { status: 500 },
- );
- }
- }
-
- return NextResponse.json({ message: "OK", data: "Success" }, { status: 200 });
-}
diff --git a/apps/web/src/app/api/ask/route.ts b/apps/web/src/app/api/ask/route.ts
deleted file mode 100644
index 17b24b3e..00000000
--- a/apps/web/src/app/api/ask/route.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-
-export const runtime = "edge";
-
-export async function POST(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (process.env.RATELIMITER) {
- const { success } = await process.env.RATELIMITER.limit({ key: token });
-
- if (!success) {
- return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
- status: 429,
- });
- }
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const body = (await req.json()) as {
- query: string;
- };
-
- const resp = await fetch(`https://cf-ai-backend.dhravya.workers.dev/ask`, {
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- method: "POST",
- body: JSON.stringify({
- query: body.query,
- }),
- });
-
- if (resp.status !== 200 || !resp.ok) {
- const errorData = await resp.json();
- return new Response(
- JSON.stringify({ message: "Error in CF function", error: errorData }),
- { status: resp.status },
- );
- }
-
- // Stream the response back to the client
- const { readable, writable } = new TransformStream();
- resp && resp.body!.pipeTo(writable);
-
- return new Response(readable, { status: 200 });
-}
diff --git a/apps/web/src/app/api/chat/route.ts b/apps/web/src/app/api/chat/route.ts
deleted file mode 100644
index c815070b..00000000
--- a/apps/web/src/app/api/chat/route.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-import { ChatHistory } from "../../../../types/memory";
-
-export const runtime = "edge";
-
-export async function POST(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (process.env.RATELIMITER) {
- const { success } = await process.env.RATELIMITER.limit({ key: token });
-
- if (!success) {
- return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
- status: 429,
- });
- }
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const session = { session: sessionData[0], user: user[0] };
-
- const query = new URL(req.url).searchParams.get("q");
- const spaces = new URL(req.url).searchParams.get("spaces");
-
- const sourcesOnly =
- new URL(req.url).searchParams.get("sourcesOnly") ?? "false";
-
- const chatHistory = (await req.json()) as {
- chatHistory: ChatHistory[];
- };
-
- console.log("CHathistory", chatHistory);
-
- if (!query) {
- return new Response(JSON.stringify({ message: "Invalid query" }), {
- status: 400,
- });
- }
-
- try {
- const resp = await fetch(
- `https://cf-ai-backend.dhravya.workers.dev/chat?q=${query}&user=${session.user.email ?? session.user.name}&sourcesOnly=${sourcesOnly}&spaces=${spaces}`,
- {
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- method: "POST",
- body: JSON.stringify({
- chatHistory: chatHistory.chatHistory ?? [],
- }),
- },
- );
-
- console.log("sourcesOnly", sourcesOnly);
-
- if (sourcesOnly == "true") {
- const data = await resp.json();
- console.log("data", data);
- return new Response(JSON.stringify(data), { status: 200 });
- }
-
- if (resp.status !== 200 || !resp.ok) {
- const errorData = await resp.json();
- console.log(errorData);
- return new Response(
- JSON.stringify({ message: "Error in CF function", error: errorData }),
- { status: resp.status },
- );
- }
-
- // Stream the response back to the client
- const { readable, writable } = new TransformStream();
- resp && resp.body!.pipeTo(writable);
-
- return new Response(readable, { status: 200 });
- } catch {}
-}
diff --git a/apps/web/src/app/api/getCount/route.ts b/apps/web/src/app/api/getCount/route.ts
deleted file mode 100644
index 9fe54f78..00000000
--- a/apps/web/src/app/api/getCount/route.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import { db } from "@/server/db";
-import { and, eq, ne, sql } from "drizzle-orm";
-import { sessions, storedContent, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-
-export const runtime = "edge";
-
-export async function GET(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const session = { session: sessionData[0], user: user[0] };
-
- const tweetsCount = await db
- .select({
- count: sql<number>`count(*)`.mapWith(Number),
- })
- .from(storedContent)
- .where(
- and(
- eq(storedContent.user, session.user.id),
- eq(storedContent.type, "twitter-bookmark"),
- ),
- );
-
- const pageCount = await db
- .select({
- count: sql<number>`count(*)`.mapWith(Number),
- })
- .from(storedContent)
- .where(
- and(
- eq(storedContent.user, session.user.id),
- ne(storedContent.type, "twitter-bookmark"),
- ),
- );
-
- return NextResponse.json({
- tweetsCount: tweetsCount[0].count,
- tweetsLimit: 1000,
- pageCount: pageCount[0].count,
- pageLimit: 100,
- user: session.user.email,
- });
-}
diff --git a/apps/web/src/app/api/me/route.ts b/apps/web/src/app/api/me/route.ts
deleted file mode 100644
index 6d269872..00000000
--- a/apps/web/src/app/api/me/route.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-
-export const runtime = "edge";
-
-export async function GET(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- const session = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!session || session.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, session[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- return new Response(
- JSON.stringify({
- message: "OK",
- data: { session: session[0], user: user[0] },
- }),
- { status: 200 },
- );
-}
diff --git a/apps/web/src/app/api/query/route.ts b/apps/web/src/app/api/query/route.ts
deleted file mode 100644
index 5806841e..00000000
--- a/apps/web/src/app/api/query/route.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-
-export const runtime = "edge";
-
-export async function GET(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (process.env.RATELIMITER) {
- const { success } = await process.env.RATELIMITER.limit({ key: token });
-
- if (!success) {
- return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
- status: 429,
- });
- }
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const session = { session: sessionData[0], user: user[0] };
-
- const query = new URL(req.url).searchParams.get("q");
- const sourcesOnly =
- new URL(req.url).searchParams.get("sourcesOnly") ?? "false";
-
- if (!query) {
- return new Response(JSON.stringify({ message: "Invalid query" }), {
- status: 400,
- });
- }
-
- const resp = await fetch(
- `https://cf-ai-backend.dhravya.workers.dev/query?q=${query}&user=${session.user.email ?? session.user.name}&sourcesOnly=${sourcesOnly}`,
- {
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- },
- );
-
- console.log(resp.status);
-
- if (resp.status !== 200 || !resp.ok) {
- const errorData = await resp.json();
- console.log(errorData);
- return new Response(
- JSON.stringify({ message: "Error in CF function", error: errorData }),
- { status: resp.status },
- );
- }
-
- // Stream the response back to the client
- const { readable, writable } = new TransformStream();
- resp && resp.body!.pipeTo(writable);
-
- return new Response(readable, { status: 200 });
-}
diff --git a/apps/web/src/app/api/spaces/route.ts b/apps/web/src/app/api/spaces/route.ts
deleted file mode 100644
index d2685e9f..00000000
--- a/apps/web/src/app/api/spaces/route.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { db } from "@/server/db";
-import { sessions, space, users } from "@/server/db/schema";
-import { eq } from "drizzle-orm";
-import { NextRequest, NextResponse } from "next/server";
-
-export const runtime = "edge";
-
-export async function GET(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- if (process.env.RATELIMITER) {
- const { success } = await process.env.RATELIMITER.limit({ key: token });
-
- if (!success) {
- return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
- status: 429,
- });
- }
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const userData = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!userData || userData.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const user = userData[0];
-
- const spaces = await db
- .select()
- .from(space)
- .where(eq(space.user, user.id))
- .all();
-
- return NextResponse.json(
- {
- message: "OK",
- data: spaces,
- },
- { status: 200 },
- );
-}
diff --git a/apps/web/src/app/api/store/route.ts b/apps/web/src/app/api/store/route.ts
deleted file mode 100644
index 457eae2e..00000000
--- a/apps/web/src/app/api/store/route.ts
+++ /dev/null
@@ -1,165 +0,0 @@
-import { db } from "@/server/db";
-import { and, eq, sql, inArray } from "drizzle-orm";
-import {
- contentToSpace,
- sessions,
- storedContent,
- users,
- space,
-} from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-import { getMetaData } from "@/server/helpers";
-
-export const runtime = "edge";
-
-export async function POST(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- if (process.env.RATELIMITER) {
- const { success } = await process.env.RATELIMITER.limit({ key: token });
-
- if (!success) {
- return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
- status: 429,
- });
- }
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const user = await db
- .select()
- .from(users)
- .where(eq(users.id, sessionData[0].userId))
- .limit(1);
-
- if (!user || user.length === 0) {
- return NextResponse.json(
- { message: "Invalid Key, session not found." },
- { status: 404 },
- );
- }
-
- const session = { session: sessionData[0], user: user[0] };
-
- const data = (await req.json()) as {
- pageContent: string;
- url: string;
- spaces?: string[];
- };
-
- const metadata = await getMetaData(data.url);
- let storeToSpaces = data.spaces;
-
- if (!storeToSpaces) {
- storeToSpaces = [];
- }
-
- const count = await db
- .select({
- count: sql<number>`count(*)`.mapWith(Number),
- })
- .from(storedContent)
- .where(
- and(
- eq(storedContent.user, session.user.id),
- eq(storedContent.type, "page"),
- ),
- );
-
- if (count[0].count > 100) {
- return NextResponse.json(
- { message: "Error", error: "Limit exceeded" },
- { status: 499 },
- );
- }
-
- const { id } = (
- await db
- .insert(storedContent)
- .values({
- content: data.pageContent,
- title: metadata.title,
- description: metadata.description,
- url: data.url,
- baseUrl: metadata.baseUrl,
- image: metadata.image,
- savedAt: new Date(),
- user: session.user.id,
- })
- .returning({ id: storedContent.id })
- )[0];
-
- if (!id) {
- return NextResponse.json(
- { message: "Error", error: "Error in CF function" },
- { status: 500 },
- );
- }
-
- if (storeToSpaces.length > 0) {
- const spaceData = await db
- .select()
- .from(space)
- .where(
- and(
- inArray(space.name, storeToSpaces ?? []),
- eq(space.user, session.user.id),
- ),
- )
- .all();
-
- await Promise.all([
- spaceData.forEach(async (space) => {
- await db
- .insert(contentToSpace)
- .values({ contentId: id, spaceId: space.id });
- }),
- ]);
- }
-
- const res = (await Promise.race([
- fetch("https://cf-ai-backend.dhravya.workers.dev/add", {
- method: "POST",
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- body: JSON.stringify({ ...data, user: session.user.email }),
- }),
- new Promise((_, reject) =>
- setTimeout(() => reject(new Error("Request timed out")), 40000),
- ),
- ])) as Response;
-
- if (res.status !== 200) {
- console.log(res.status, res.statusText);
- return NextResponse.json(
- { message: "Error", error: "Error in CF function" },
- { status: 500 },
- );
- }
-
- return NextResponse.json({ message: "OK", data: "Success" }, { status: 200 });
-}
diff --git a/apps/web/src/app/api/vectorizeTweets/route.ts b/apps/web/src/app/api/vectorizeTweets/route.ts
deleted file mode 100644
index 63aa38f0..00000000
--- a/apps/web/src/app/api/vectorizeTweets/route.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { db } from "@/server/db";
-import { eq } from "drizzle-orm";
-import { sessions, storedContent, users } from "@/server/db/schema";
-import { type NextRequest, NextResponse } from "next/server";
-import { env } from "@/env";
-
-export const runtime = "edge";
-
-interface TweetData {
- tweetText: string;
- postUrl: string;
- authorName: string;
- handle: string;
- time: string;
- saveToUser: string;
-}
-
-export async function POST(req: NextRequest) {
- const token =
- req.cookies.get("next-auth.session-token")?.value ??
- req.cookies.get("__Secure-authjs.session-token")?.value ??
- req.cookies.get("authjs.session-token")?.value ??
- req.headers.get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const sessionData = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!sessionData || sessionData.length === 0) {
- return new Response(
- JSON.stringify({ message: "Invalid Key, session not found." }),
- { status: 404 },
- );
- }
-
- const body = (await req.json()) as TweetData[];
-
- console.log(body);
-
- const resp = await fetch(
- `https://cf-ai-backend.dhravya.workers.dev/batchUploadTweets`,
- {
- headers: {
- "X-Custom-Auth-Key": env.BACKEND_SECURITY_KEY,
- },
- method: "POST",
- body: JSON.stringify(body),
- },
- );
-
- return new Response(await resp.text(), {
- status: resp.status,
- headers: resp.headers,
- });
-}
diff --git a/apps/web/src/app/content.tsx b/apps/web/src/app/content.tsx
deleted file mode 100644
index 5a68d902..00000000
--- a/apps/web/src/app/content.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-"use client";
-import SessionProviderWrapper from "@/components/dev/SessionProviderWrapper";
-import Main from "@/components/Main";
-import Sidebar from "@/components/Sidebar/index";
-import { useState } from "react";
-
-export default function Content({ jwt }: { jwt: string }) {
- const [selectedItem, setSelectedItem] = useState<string | null>(null);
-
- return (
- <SessionProviderWrapper>
- <div className="flex w-screen">
- <Sidebar jwt={jwt} selectChange={setSelectedItem} />
- <Main sidebarOpen={selectedItem !== null} />
- </div>
- </SessionProviderWrapper>
- );
-}
diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css
deleted file mode 100644
index bed9278b..00000000
--- a/apps/web/src/app/globals.css
+++ /dev/null
@@ -1,140 +0,0 @@
-@import "@radix-ui/colors/gray";
-@import "@radix-ui/colors/gray-dark";
-
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-:root {
- --foreground-rgb: 0, 0, 0;
- --background-start-rgb: 214, 219, 220;
- --background-end-rgb: 255, 255, 255;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --foreground-rgb: 255, 255, 255;
- --background-start-rgb: 0, 0, 0;
- --background-end-rgb: 0, 0, 0;
- }
-}
-
-body {
- @apply text-rgray-11 max-h-screen overflow-y-hidden bg-white;
- /* color: rgb(var(--foreground-rgb));
- background: linear-gradient(
- to bottom,
- transparent,
- rgb(var(--background-end-rgb))
- )
- rgb(var(--background-start-rgb)); */
-}
-
-[vaul-drawer-wrapper] {
- @apply bg-rgray-2;
-}
-
-@layer utilities {
- .text-balance {
- text-wrap: balance;
- }
-}
-
-.sidebar {
- height: 100vh;
- height: 100dvh;
- max-height: 100vh;
- max-height: 100dvh;
-}
-
-.DrawerContent {
- padding-top: 5vh;
- padding-top: 5dvh;
-}
-
-.main-hidden {
- padding-bottom: 20vh;
- padding-bottom: 15dvh;
-}
-
-.bottom-padding {
- bottom: 20vh;
- bottom: 20dvh;
-}
-
-@media (min-width: 768px) {
- .bottom-padding {
- bottom: 0;
- }
-}
-
-.chat-answer code {
- @apply bg-rgray-3 border-rgray-5 text-rgray-11 text-wrap rounded-md border p-1 text-sm;
-}
-
-.novel-editor pre {
- @apply bg-rgray-3 border-rgray-5 text-rgray-11 my-5 rounded-md border p-4 text-sm;
-}
-
-.chat-answer h1 {
- @apply text-rgray-11 my-5 text-xl font-medium;
-}
-
-.chat-answer a {
- @apply underline underline-offset-1 opacity-90 hover:opacity-100;
-}
-
-.chat-answer img {
- @apply my-5 rounded-md font-medium;
-}
-
-.tippy-box {
- @apply bg-rgray-3 text-rgray-11 border-rgray-5 rounded-md border py-0;
-}
-
-.tippy-content #slash-command {
- @apply text-rgray-11 border-none bg-transparent;
-}
-
-#slash-command button {
- @apply text-rgray-11 py-2;
-}
-
-#slash-command button div:first-child {
- @apply text-rgray-11 bg-rgray-4 border-rgray-5;
-}
-
-#slash-command button.novel-bg-stone-100 {
- @apply bg-rgray-1;
-}
-
-.novel-editor [data-type="taskList"] > li {
- @apply my-0;
-}
-
-.novel-editor input[type="checkbox"] {
- @apply accent-rgray-4 rounded-md;
-
- background: var(--gray-4) !important;
- border: 1px solid var(--gray-10) !important;
-}
-
-.novel-editor .is-empty::before {
- content: "Press '/' for commands" !important;
-}
-
-.novel-editor h1 {
- @apply text-2xl;
-}
-
-.novel-editor h2 {
- @apply text-xl;
-}
-
-.novel-editor h3 {
- @apply text-lg;
-}
-
-.novel-editor .drag-handle {
- @apply hidden;
-}
diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx
deleted file mode 100644
index e96df271..00000000
--- a/apps/web/src/app/layout.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import type { Metadata } from "next";
-import { Roboto, Inter } from "next/font/google";
-import "./globals.css";
-
-const inter = Inter({ weight: ["300", "400", "500"], subsets: ["latin"] });
-
-export const metadata: Metadata = {
- title: "Supermemory - Your second brain",
- description: "Save your memories forever, build your own second brain.",
- openGraph: {
- images: [
- {
- url: "https://supermemory.dhr.wtf/og-image.png",
- width: 1200,
- height: 630,
- },
- ],
- siteName: "Supermemory",
- title: "Supermemory - Your second brain",
- description: "Save your memories forever, build your own second brain.",
- },
- twitter: {
- card: "summary_large_image",
- site: "https://supermemory.dhr.wtf",
- creator: "@dhravyashah",
- description: "Save your memories forever, build your own second brain.",
- images: [
- {
- url: "https://supermemory.dhr.wtf/og-image.png",
- width: 1200,
- height: 630,
- },
- ],
- },
-};
-
-export default function RootLayout({
- children,
-}: Readonly<{
- children: React.ReactNode;
-}>) {
- return (
- <html lang="en" className="dark">
- <head>
- <meta
- name="og:image"
- content="https://supermemory.dhr.wtf/og-image.png"
- />
- <script
- async
- src="https://u.dhr.wtf/script.js"
- data-website-id="731dfc2e-b1c0-4696-a7b3-efd27b19dfdf"
- ></script>
- </head>
- <body className={inter.className}>
- <div
- vaul-drawer-wrapper=""
- className="min-w-screen overflow-x-hidden text-black"
- >
- {children}
- </div>
- </body>
- </html>
- );
-}
diff --git a/apps/web/src/app/not-found.tsx b/apps/web/src/app/not-found.tsx
deleted file mode 100644
index 3409889a..00000000
--- a/apps/web/src/app/not-found.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-export const runtime = "edge";
-
-export default function NotFound() {
- return (
- <>
- <title>404: This page could not be found.</title>
- <div style={styles.error}>
- <div>
- <style
- dangerouslySetInnerHTML={{
- __html: `body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}`,
- }}
- />
- <h1 className="next-error-h1" style={styles.h1}>
- 404
- </h1>
- <div style={styles.desc}>
- <h2 style={styles.h2}>This page could not be found.</h2>
- </div>
- </div>
- </div>
- </>
- );
-}
-
-const styles = {
- error: {
- fontFamily:
- 'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',
- height: "100vh",
- textAlign: "center",
- display: "flex",
- flexDirection: "column",
- alignItems: "center",
- justifyContent: "center",
- },
-
- desc: {
- display: "inline-block",
- },
-
- h1: {
- display: "inline-block",
- margin: "0 20px 0 0",
- padding: "0 23px 0 0",
- fontSize: 24,
- fontWeight: 500,
- verticalAlign: "top",
- lineHeight: "49px",
- },
-
- h2: {
- fontSize: 14,
- fontWeight: 400,
- lineHeight: "49px",
- margin: 0,
- },
-} as const;
diff --git a/apps/web/src/app/page.tsx b/apps/web/src/app/page.tsx
deleted file mode 100644
index 05cd1ab8..00000000
--- a/apps/web/src/app/page.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import { db } from "@/server/db";
-import {
- ChachedSpaceContent,
- sessions,
- space,
- storedContent,
- users,
-} from "@/server/db/schema";
-import { and, eq, inArray, not } from "drizzle-orm";
-import { cookies, headers } from "next/headers";
-import { redirect } from "next/navigation";
-import { fetchContentForSpace, fetchFreeMemories } from "@/actions/db";
-import { MemoryProvider } from "@/contexts/MemoryContext";
-import Content from "./content";
-import Main from "@/components/Main";
-import { TailwindIndicator } from "@/components/dev/tailwindindicator";
-
-export const runtime = "edge";
-
-export default async function Home() {
- const token =
- cookies().get("next-auth.session-token")?.value ??
- cookies().get("__Secure-authjs.session-token")?.value ??
- cookies().get("authjs.session-token")?.value ??
- headers().get("Authorization")?.replace("Bearer ", "");
-
- if (!token) {
- return redirect("/api/auth/signin");
- }
-
- const session = await db
- .select()
- .from(sessions)
- .where(eq(sessions.sessionToken, token!));
-
- if (!session || session.length === 0) {
- return redirect("/api/auth/signin");
- }
-
- const [userData] = await db
- .select()
- .from(users)
- .where(eq(users.id, session[0].userId))
- .limit(1);
-
- if (!userData) {
- return redirect("/api/auth/signin");
- }
-
- console.log(storedContent.user.name);
-
- const collectedSpaces = await db
- .select()
- .from(space)
- .where(eq(space.user, userData.id))
- .all();
-
- console.log(collectedSpaces);
-
- // Fetch only first 3 content of each spaces
- let contents: ChachedSpaceContent[] = [];
-
- await Promise.all([
- collectedSpaces.forEach(async (space) => {
- console.log("fetching ");
- const data = (
- (await fetchContentForSpace(space.id, {
- offset: 0,
- limit: 3,
- })) ?? []
- ).map((data) => ({
- ...data,
- space: space.id,
- }));
- contents = [...contents, ...data];
- }),
- ]);
-
- console.log("contents", contents);
-
- // freeMemories
- const freeMemories = await fetchFreeMemories();
- console.log("free", freeMemories);
-
- return (
- <MemoryProvider
- user={userData}
- spaces={collectedSpaces}
- freeMemories={freeMemories}
- cachedMemories={contents}
- >
- <Content jwt={token} />
- <TailwindIndicator />
- {/* <MessagePoster jwt={token} /> */}
- </MemoryProvider>
- );
-}
diff --git a/apps/web/src/app/privacy/page.tsx b/apps/web/src/app/privacy/page.tsx
deleted file mode 100644
index 5e40cbe9..00000000
--- a/apps/web/src/app/privacy/page.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from "react";
-import Markdown from "react-markdown";
-import { policy } from "./privacy";
-
-export const runtime = "edge";
-
-function Page() {
- return (
- <div>
- <Markdown>{policy}</Markdown>
- </div>
- );
-}
-
-export default Page;
diff --git a/apps/web/src/app/privacy/privacy.ts b/apps/web/src/app/privacy/privacy.ts
deleted file mode 100644
index 2034f191..00000000
--- a/apps/web/src/app/privacy/privacy.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-export const policy = `
-# Privacy Policy for AnyContext
-
-## Introduction
-
-This Privacy Policy provides detailed information on the handling, storage, and protection of your personal information by AnyContext, a browser extension developed and owned by Dhravya Shah in 2024. The extension is designed to enhance your browsing experience by providing contextual information based on the content of the web pages you visit. This policy outlines the types of data collected by AnyContext, how it is used, and the measures we take to protect your privacy.
-
-## Information Collection
-
-AnyContext collects the following types of information:
-
-1. **Web Browsing Data**: The extension has the capability to see all websites that users visit. However, AnyContext only stores data when the user actively clicks on the extension button while browsing. The browser history is not recorded, ensuring that your browsing activities remain private.
-
-2. **Current Page Data**: Upon activation (click) by the user, AnyContext stores data from the current HTML page. This data is used to provide relevant contextual information based on the content of the page you are viewing.
-
-3. **Personal Information**: When you interact with AnyContext, we may collect personal information including but not limited to your email address, session data, name, and profile picture. This information is collected to improve your user experience and to provide personalized services.
-
-## Data Storage and Security
-
-All collected data is securely stored in a SQLite database hosted on Cloudflare D1. We employ industry-standard security measures to protect your information from unauthorized access, alteration, disclosure, or destruction. Despite our efforts, no method of transmission over the Internet or method of electronic storage is 100% secure. Therefore, while we strive to use commercially acceptable means to protect your personal information, we cannot guarantee its absolute security.
-
-## Use of Information
-
-AnyContext uses the collected information for the following purposes:
-
-- To provide and improve the functionality of the extension.
-- To offer personalized user experiences.
-- To communicate with users regarding updates, support, and promotional offers, if consented.
-- To ensure the security of our services and to detect, prevent, or address technical issues.
-
-## Sharing of Information
-
-AnyContext does not sell, trade, or rent users' personal identification information to others. We may share generic aggregated demographic information not linked to any personal identification information regarding visitors and users with our business partners, trusted affiliates, and advertisers for the purposes outlined above.
-
-## Your Privacy Rights
-
-You have the right to access, update, or delete your personal information that we hold. If you wish to exercise these rights, please contact us at the details provided below.
-
-## Changes to This Privacy Policy
-
-AnyContext reserves the right to update this privacy policy at any time. When we do, we will post a notification on our website and update the date at the top of this page. We encourage users to frequently check this page for any changes to stay informed about how we are protecting the personal information we collect. Your continued use of the service after the posting of changes to this policy will be deemed your acceptance of those changes.
-
-## Contact Us
-
-If you have any questions about this Privacy Policy, the practices of this site, or your dealings with this site, please contact us at:
-
-
-This document was last updated on March 2, 2024.`;
diff --git a/apps/web/src/assets/Bin.tsx b/apps/web/src/assets/Bin.tsx
deleted file mode 100644
index d0793cef..00000000
--- a/apps/web/src/assets/Bin.tsx
+++ /dev/null
@@ -1,104 +0,0 @@
-import { cn } from "@/lib/utils";
-import { useEffect, useRef } from "react";
-
-export const Bin: React.FC<React.HTMLAttributes<HTMLDivElement> & {}> = ({
- className,
- ...props
-}) => {
- const icon = useRef<HTMLDivElement>(null);
-
- useEffect(() => {
- let timeout: ReturnType<typeof setTimeout> | undefined;
-
- const observer = new MutationObserver(function (mutations) {
- mutations.forEach(function (mutation) {
- if (
- mutation.type === "attributes" &&
- mutation.attributeName === "data-open" &&
- (mutation.oldValue === "false" || mutation.oldValue === null) &&
- icon.current?.dataset["open"] === "true"
- ) {
- if (timeout) clearTimeout(timeout);
- timeout = setTimeout(() => {
- icon.current!.dataset["open"] = "false";
- }, 2000);
- }
- });
- });
-
- observer.observe(icon.current!, {
- attributes: true, //configure it to listen to attribute changes
- });
-
- return () => {
- observer.disconnect();
- };
- }, []);
-
- return (
- <div
- ref={icon}
- data-open="false"
- className={cn(
- "relative z-[100] flex w-full origin-bottom flex-col items-center justify-center transition-transform delay-500 duration-500 data-[open='true']:-translate-y-2 data-[open='true']:scale-150 data-[open='true']:delay-0 [&[data-open='true']>[data-lid]]:rotate-[150deg] [&[data-open='true']>[data-lid]]:delay-0",
- className,
- )}
- {...props}
- >
- <svg
- data-lid
- className="w-full origin-[90%_80%] transition-transform delay-500 duration-500 ease-in-out"
- viewBox="0 0 24 7"
- fill="none"
- strokeWidth={1}
- xmlns="http://www.w3.org/2000/svg"
- >
- <path
- d="M3 6H21"
- stroke="currentColor"
- strokeWidth={1}
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- <path
- d="M8 6V4C8 3 9 2 10 2H14C15 2 16 3 16 4V6"
- stroke="currentColor"
- strokeWidth={1}
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- </svg>
-
- <svg
- className="-mt-[1px] w-full"
- viewBox="0 0 24 19"
- fill="none"
- strokeWidth={1}
- data-trash-bin
- xmlns="http://www.w3.org/2000/svg"
- >
- <path
- d="M19 1V15C19 16 18 17 17 17H7C6 17 5 16 5 15V1"
- stroke="currentColor"
- strokeWidth={1}
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- <path
- d="M10 6V12"
- stroke="currentColor"
- strokeWidth={1}
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- <path
- d="M14 6V12"
- stroke="currentColor"
- strokeWidth={1}
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- </svg>
- </div>
- );
-};
diff --git a/apps/web/src/assets/Memories.tsx b/apps/web/src/assets/Memories.tsx
deleted file mode 100644
index cafcd54f..00000000
--- a/apps/web/src/assets/Memories.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-export const MemoryIcon: React.FC<React.SVGAttributes<SVGElement>> = (
- props,
-) => (
- <svg
- viewBox="0 0 89 53"
- fill="none"
- xmlns="http://www.w3.org/2000/svg"
- {...props}
- >
- <rect
- x="0.40697"
- y="8.52821"
- width="43.0286"
- height="43.0286"
- rx="5.5"
- transform="rotate(-12 0.40697 8.52821)"
- fill="white"
- stroke="black"
- />
- <rect
- x="20.8257"
- y="9.19775"
- width="43"
- height="43"
- rx="5.5"
- fill="white"
- stroke="black"
- />
- <rect
- x="47.6965"
- y="-0.612372"
- width="43.0286"
- height="43.0286"
- rx="5.5"
- transform="rotate(15 47.6965 -0.612372)"
- fill="white"
- stroke="black"
- />
- </svg>
-);
-
-export const SpaceIcon: React.FC<React.SVGAttributes<SVGElement>> = (props) => (
- <svg
- viewBox="0 0 34 30"
- fill="none"
- xmlns="http://www.w3.org/2000/svg"
- {...props}
- >
- <rect
- x="1.39502"
- y="5.2229"
- width="24"
- height="24"
- rx="5.5"
- fill="var(--gray-5)"
- stroke="var(--gray-10)"
- />
- <rect
- x="11.2231"
- y="-0.157702"
- width="24"
- height="24"
- rx="5.5"
- transform="rotate(20 11.2231 -0.157702)"
- fill="var(--gray-5)"
- stroke="var(--gray-10)"
- />
- </svg>
-);
diff --git a/apps/web/src/assets/MemoryWithImages.tsx b/apps/web/src/assets/MemoryWithImages.tsx
deleted file mode 100644
index 6f7ba90a..00000000
--- a/apps/web/src/assets/MemoryWithImages.tsx
+++ /dev/null
@@ -1,531 +0,0 @@
-import { svgId } from "@/lib/utils";
-
-export const MemoryWithImage: React.FC<
- { image: string; id: string } & React.SVGAttributes<SVGElement>
-> = ({ image, id: _id, ...props }) => {
- const id = "space-1-" + _id;
-
- return (
- <svg
- viewBox="0 0 137 137"
- fill="none"
- xmlns="http://www.w3.org/2000/svg"
- xmlnsXlink="http://www.w3.org/1999/xlink"
- {...props}
- >
- <g filter={`url(#${svgId(id, "filter0_d_83_72")})`}>
- <rect
- x="33"
- y="33"
- width="72.207"
- height="72.207"
- rx="10"
- fill="white"
- />
- </g>
- <rect
- x="47.0637"
- y="46.9976"
- width="45"
- height="45"
- fill={`url(#${svgId(id, "pattern0")})`}
- />
- <defs>
- <filter
- id={svgId(id, "filter0_d_83_72")}
- x="21"
- y="21"
- width="96.207"
- height="96.207"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_83_72"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_83_72"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_83_72"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern0")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image0_83_72")}`}
- transform="scale(0.00520833)"
- />
- </pattern>
- <image
- id={svgId(id, "image0_83_72")}
- width="192"
- height="192"
- xlinkHref={image}
- />
- </defs>
- </svg>
- );
-};
-
-export const MemoryWithImages2: React.FC<
- { images: string[]; id: string } & React.SVGAttributes<SVGElement>
-> = ({ images, id: _id, ...props }) => {
- const id = "space-2-" + _id;
-
- return (
- <svg
- viewBox="0 0 137 137"
- fill="none"
- xmlns="http://www.w3.org/2000/svg"
- xmlnsXlink="http://www.w3.org/1999/xlink"
- {...props}
- >
- <g clipPath={`url(#${svgId(id, "clip0_80_62")})`}>
- <g filter={`url(#${svgId(id, "filter0_d_80_62")})`}>
- <rect
- x="7"
- y="51.5427"
- width="72.207"
- height="72.207"
- rx="10"
- transform="rotate(-24.1922 7 51.5427)"
- fill="#F4F3F2"
- />
- </g>
- <rect
- x="26.2664"
- y="58.9253"
- width="45"
- height="45"
- transform="rotate(-24.2 26.2664 58.9253)"
- fill={`url(#${svgId(id, "pattern0")})`}
- />
- <g filter={`url(#${svgId(id, "filter1_d_80_62")})`}>
- <rect
- x="59.9409"
- y="42.2124"
- width="72.207"
- height="72.207"
- rx="10"
- transform="rotate(10.2301 59.9409 42.2124)"
- fill="#ffffff"
- />
- </g>
- <rect
- x="71.2952"
- y="58.4851"
- width="45"
- height="45"
- transform="rotate(10.23 71.2952 58.4851)"
- fill={`url(#${svgId(id, "pattern1")})`}
- />
- </g>
- <defs>
- <filter
- id={svgId(id, "filter0_d_80_62")}
- x="-1.78271"
- y="13.1697"
- width="113.021"
- height="113.021"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_80_62"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_80_62"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_80_62"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern0")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image0_80_62")}`}
- transform="scale(0.0111111)"
- />
- </pattern>
- <filter
- id={svgId(id, "filter1_d_80_62")}
- x="36.7322"
- y="31.8276"
- width="104.652"
- height="104.653"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_80_62"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_80_62"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_80_62"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern1")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image1_80_62")}`}
- transform="scale(0.00520833)"
- />
- </pattern>
- <clipPath id={svgId(id, "clip0_80_62")}>
- <rect width="137" height="137" fill="white" />
- </clipPath>
- <image
- id={svgId(id, "image0_80_62")}
- width="90"
- height="90"
- xlinkHref={images[0]}
- />
- <image
- id={svgId(id, "image1_80_62")}
- width="192"
- height="192"
- xlinkHref={images[1]}
- />
- </defs>
- </svg>
- );
-};
-
-export const MemoryWithImages3: React.FC<
- { images: string[]; id: string } & React.SVGAttributes<SVGElement>
-> = ({ images, id: _id, ...props }) => {
- const id = "space-3-" + _id;
-
- return (
- <svg
- viewBox="0 0 137 137"
- fill="none"
- xmlns="http://www.w3.org/2000/svg"
- xmlnsXlink="http://www.w3.org/1999/xlink"
- {...props}
- >
- <g clipPath={`url(#${svgId(id, "clip0_79_36")})`}>
- <g filter={`url(#${svgId(id, "filter0_d_79_36")})`}>
- <rect
- x="53.5242"
- y="12"
- width="72.207"
- height="72.207"
- rx="10"
- transform="rotate(14.9009 53.5242 12)"
- fill="white"
- className="shadow-md"
- />
- </g>
- <rect
- x="63.3663"
- y="27.3052"
- width="45"
- height="45"
- transform="rotate(14.9 63.3663 27.3052)"
- fill={`url(#${svgId(id, "pattern0")})`}
- />
- <g filter={`url(#${svgId(id, "filter1_d_79_36")})`}>
- <rect
- x="7"
- y="51.5427"
- width="72.207"
- height="72.207"
- rx="10"
- transform="rotate(-24.1922 7 51.5427)"
- fill="#F4F3F2"
- className="shadow-md"
- />
- </g>
- <rect
- x="26.2664"
- y="58.9253"
- width="45"
- height="45"
- transform="rotate(-24.2 26.2664 58.9253)"
- fill={`url(#${svgId(id, "pattern1")})`}
- />
- <g filter={`url(#${svgId(id, "filter2_d_79_36")})`}>
- <rect
- x="59.9409"
- y="42.2124"
- width="72.207"
- height="72.207"
- rx="10"
- transform="rotate(10.2301 59.9409 42.2124)"
- fill="#E7E5E4"
- className="shadow-md"
- />
- </g>
- <rect
- x="71.2952"
- y="58.4851"
- width="45"
- height="45"
- transform="rotate(10.23 71.2952 58.4851)"
- fill={`url(#${svgId(id, "pattern2")})`}
- />
- </g>
- <defs>
- <filter
- id={svgId(id, "filter0_d_79_36")}
- x="25.189"
- y="2.23267"
- width="107.881"
- height="107.881"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_79_36"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_79_36"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_79_36"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern0")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image0_79_36")}`}
- transform="scale(0.0111111)"
- />
- </pattern>
- <filter
- id={svgId(id, "filter1_d_79_36")}
- x="-1.78271"
- y="13.1697"
- width="113.021"
- height="113.021"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_79_36"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_79_36"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_79_36"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern1")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image1_79_36")}`}
- transform="scale(0.0111111)"
- />
- </pattern>
- <filter
- id={svgId(id, "filter2_d_79_36")}
- x="36.7322"
- y="31.8276"
- width="104.652"
- height="104.653"
- filterUnits="userSpaceOnUse"
- colorInterpolationFilters="sRGB"
- >
- <feFlood floodOpacity="0" result="BackgroundImageFix" />
- <feColorMatrix
- in="SourceAlpha"
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
- result="hardAlpha"
- />
- <feMorphology
- radius="2"
- operator="dilate"
- in="SourceAlpha"
- result="effect1_dropShadow_79_36"
- />
- <feOffset />
- <feGaussianBlur stdDeviation="5" />
- <feComposite in2="hardAlpha" operator="out" />
- <feColorMatrix
- type="matrix"
- values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
- />
- <feBlend
- mode="normal"
- in2="BackgroundImageFix"
- result="effect1_dropShadow_79_36"
- />
- <feBlend
- mode="normal"
- in="SourceGraphic"
- in2="effect1_dropShadow_79_36"
- result="shape"
- />
- </filter>
- <pattern
- id={svgId(id, "pattern2")}
- patternContentUnits="objectBoundingBox"
- width="1"
- height="1"
- >
- <use
- xlinkHref={`#${svgId(id, "image2_79_36")}`}
- transform="scale(0.00520833)"
- />
- </pattern>
- <clipPath id={svgId(id, "clip0_79_36")}>
- <rect width="137" height="137" fill="white" />
- </clipPath>
- <image
- id={svgId(id, "image0_79_36")}
- width="90"
- height="90"
- xlinkHref={images[0]}
- />
- <image
- id={svgId(id, "image1_79_36")}
- width="90"
- height="90"
- xlinkHref={images[1]}
- />
- <image
- id={svgId(id, "image2_79_36")}
- width="192"
- height="192"
- xlinkHref={images[2]}
- />
- </defs>
- </svg>
- );
-};
diff --git a/apps/web/src/assets/Note.tsx b/apps/web/src/assets/Note.tsx
deleted file mode 100644
index e69de29b..00000000
--- a/apps/web/src/assets/Note.tsx
+++ /dev/null
diff --git a/apps/web/src/components/ChatMessage.tsx b/apps/web/src/components/ChatMessage.tsx
deleted file mode 100644
index 58ef9870..00000000
--- a/apps/web/src/components/ChatMessage.tsx
+++ /dev/null
@@ -1,128 +0,0 @@
-import React, { useEffect } from "react";
-import { motion } from "framer-motion";
-import { ArrowUpRight, Globe, Text } from "lucide-react";
-import { convertRemToPixels } from "@/lib/utils";
-import { SpaceIcon } from "@/assets/Memories";
-import Markdown from "react-markdown";
-import { ChatHistory } from "../../types/memory";
-
-export function ChatAnswer({
- children: message,
- sources,
- loading = false,
-}: {
- children: string;
- sources?: ChatHistory["answer"]["sources"];
- loading?: boolean;
-}) {
- return (
- <div className="flex h-max w-full flex-col items-start gap-5">
- {loading ? (
- <MessageSkeleton />
- ) : (
- <div className="chat-answer h-full w-full text-lg text-white/60">
- <Markdown>{message}</Markdown>
- </div>
- )}
- {!loading && sources && sources?.length > 0 && (
- <>
- <h1 className="animate-fade-in text-rgray-12 text-md flex items-center justify-center gap-2 opacity-0 [animation-duration:1s]">
- <SpaceIcon className="h-6 w-6 -translate-y-[2px]" />
- Related Memories
- </h1>
- <div className="animate-fade-in -mt-3 flex items-center justify-start gap-1 opacity-0 [animation-duration:1s]">
- {sources?.map((source) =>
- source.isNote ? (
- <button className="bg-rgray-3 flex items-center justify-center gap-2 rounded-full py-1 pl-2 pr-3 text-sm">
- <Text className="h-4 w-4" />
- {source.source}
- </button>
- ) : (
- <a
- className="bg-rgray-3 flex items-center justify-center gap-2 rounded-full py-1 pl-2 pr-3 text-sm"
- key={source.source}
- href={source.source}
- target="_blank"
- >
- <Globe className="h-4 w-4" />
- {cleanUrl(source.source)}
- </a>
- ),
- )}
- </div>
- </>
- )}
- </div>
- );
-}
-
-export function ChatQuestion({ children }: { children: string }) {
- return (
- <div
- className={`text-rgray-12 h-max w-full text-left ${children.length > 200 ? "text-xl" : "text-2xl"}`}
- >
- {children}
- </div>
- );
-}
-
-export function ChatMessage({
- children,
- isLast = false,
- index,
-}: {
- children: React.ReactNode | React.ReactNode[];
- isLast?: boolean;
- index: number;
-}) {
- const messageRef = React.useRef<HTMLDivElement>(null);
-
- useEffect(() => {
- if (!isLast) return;
- messageRef.current?.parentElement?.scrollTo({
- top: messageRef.current?.offsetTop,
- behavior: "smooth",
- });
- }, []);
-
- return (
- <motion.div
- initial={{ opacity: 0, y: 20 }}
- animate={{ opacity: 1, y: 0 }}
- transition={{
- type: "tween",
- duration: 0.5,
- }}
- ref={messageRef}
- className={`${index === 0 ? "pt-16" : "pt-28"} flex h-max w-full resize-y flex-col items-start justify-start gap-5 transition-[height] ${isLast ? "min-h-screen pb-[40vh]" : "h-max"}`}
- >
- {children}
- </motion.div>
- );
-}
-
-function MessageSkeleton() {
- return (
- <div className="animate-fade-in flex w-full flex-col items-start gap-3 opacity-0 [animation-delay:0.5s] [animation-duration:1s]">
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- <div className="bg-rgray-5 h-6 w-[70%] animate-pulse rounded-md text-lg"></div>
- </div>
- );
-}
-
-function cleanUrl(url: string) {
- if (url.startsWith("https://")) {
- url = url.slice(8);
- } else if (url.startsWith("http://")) {
- url = url.slice(7);
- }
-
- if (url.endsWith("/")) {
- url = url.slice(0, -1);
- }
-
- return url;
-}
diff --git a/apps/web/src/components/Main-2.tsx b/apps/web/src/components/Main-2.tsx
deleted file mode 100644
index 1b602712..00000000
--- a/apps/web/src/components/Main-2.tsx
+++ /dev/null
@@ -1,709 +0,0 @@
-"use client";
-import { MemoryDrawer } from "./MemoryDrawer";
-import useViewport from "@/hooks/useViewport";
-import { AnimatePresence } from "framer-motion";
-import { cn } from "@/lib/utils";
-
-import { Editor } from "novel";
-import { useAutoAnimate } from "@formkit/auto-animate/react";
-import {
- MemoryWithImage,
- MemoryWithImages3,
- MemoryWithImages2,
-} from "@/assets/MemoryWithImages";
-import { Input, InputWithIcon } from "./ui/input";
-import {
- ArrowUpRight,
- Edit3,
- Loader,
- Minus,
- MoreHorizontal,
- Plus,
- Search,
- Sparkles,
- Text,
- Trash2,
-} from "lucide-react";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "./ui/dropdown-menu";
-import { useEffect, useMemo, useRef, useState } from "react";
-import { Variant, useAnimate, motion } from "framer-motion";
-import { SearchResult, useMemory } from "@/contexts/MemoryContext";
-import { SpaceIcon } from "@/assets/Memories";
-import { Dialog, DialogContent } from "./ui/dialog";
-import useTouchHold from "@/hooks/useTouchHold";
-import { DialogTrigger } from "@radix-ui/react-dialog";
-import {
- AddExistingMemoryToSpace,
- AddMemoryPage,
- NoteAddPage,
- SpaceAddPage,
-} from "./Sidebar/AddMemoryDialog";
-import { ExpandedSpace } from "./Sidebar/ExpandedSpace";
-import { StoredContent, StoredSpace } from "@/server/db/schema";
-import { useDebounce } from "@/hooks/useDebounce";
-import { NoteEdit } from "./Sidebar/EditNoteDialog";
-import DeleteConfirmation from "./Sidebar/DeleteConfirmation";
-
-import { ProfileDrawer } from "./ProfileDrawer";
-
-function supportsDVH() {
- try {
- return CSS.supports("height: 100dvh");
- } catch {
- return false;
- }
-}
-
-function pseudoRandomizeColorWithName(name: string) {
- const colorsAvailable = [
- "99e9f2",
- "a5d8ff",
- "d0bfff",
- "eebefa",
- "fcc2d7",
- "b2f2bb",
- "96f2d7",
- "ffec99",
- "ffd8a8",
- "ffc9c9",
- ];
-
- const colorIndex =
- name
- .split("")
- .map((char) => char.charCodeAt(0))
- .reduce((acc, charCode) => acc + charCode, 0) % colorsAvailable.length;
-
- return colorsAvailable[colorIndex];
-}
-
-export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) {
- const { width } = useViewport();
-
- const [parent, enableAnimations] = useAutoAnimate();
- const { spaces, deleteSpace, freeMemories, search } = useMemory();
-
- const [isDropdownOpen, setIsDropdownOpen] = useState(false);
- const [addMemoryState, setAddMemoryState] = useState<
- "page" | "note" | "space" | "existing-memory" | null
- >(null);
-
- const [expandedSpace, setExpandedSpace] = useState<number | null>(null);
-
- const [searchQuery, setSearcyQuery] = useState("");
- const [searchLoading, setSearchLoading] = useState(false);
- const query = useDebounce(searchQuery, 500);
-
- const [searchResults, setSearchResults] = useState<SearchResult[]>([]);
-
- useEffect(() => {
- const q = query.trim();
- if (q.length < 1) {
- setSearchResults([]);
- return;
- }
-
- setSearchLoading(true);
-
- (async () => {
- setSearchResults(await search(q));
- setSearchLoading(false);
- })();
- }, [query]);
-
- // useEffect(() => {
- // if (!isOpen) {
- // setExpandedSpace(null);
- // }
- // }, [isOpen]);
-
- if (expandedSpace) {
- return (
- <ExpandedSpace
- spaceId={expandedSpace}
- back={() => setExpandedSpace(null)}
- // close={() => setExpandedSpace(null)}
- />
- );
- }
-
- return (
- <>
- <AnimatePresence mode="wait">
- <main
- data-sidebar-open={sidebarOpen}
- className={cn(
- "sidebar relative flex w-full flex-col items-end gap-5 overflow-auto bg-[#FFF] px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:gap-10 md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]",
- )}
- >
- <div className="mt-16 w-full">
- <div className="flex justify-between gap-4">
- <h1 className="w-full text-3xl font-medium tracking-tight">
- Your Memories
- </h1>
- <div className="flex w-full">
- <AddMemoryModal type={addMemoryState}>
- <DropdownMenu
- open={isDropdownOpen}
- onOpenChange={setIsDropdownOpen}
- >
- <DropdownMenuTrigger asChild>
- <button className="focus-visible:ring-rgray-7 ml-auto flex items-center justify-center rounded-md px-3 py-2 transition hover:bg-stone-200 focus-visible:bg-white focus-visible:outline-none focus-visible:ring-2">
- <Plus className="mr-2 h-5 w-5" />
- Add
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent
- onCloseAutoFocus={(e) => e.preventDefault()}
- >
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("page");
- }}
- >
- <Sparkles className="mr-2 h-4 w-4" />
- Page to Memory
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("note");
- }}
- >
- <Text className="mr-2 h-4 w-4" />
- Note
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("space");
- }}
- >
- <SpaceIcon className="mr-2 h-4 w-4" />
- Space
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </AddMemoryModal>
- </div>
- </div>
- <InputWithIcon
- placeholder="Search"
- icon={
- searchLoading ? (
- <Loader className="h-5 w-5 animate-spin opacity-50" />
- ) : (
- <Search className="h-5 w-5 opacity-50" />
- )
- }
- className="mt-4 w-full text-black"
- value={searchQuery}
- onChange={(e) => setSearcyQuery(e.target.value)}
- />
- </div>
- <div
- ref={parent}
- className="grid w-full grid-flow-row grid-cols-3 gap-4 px-2 py-5"
- >
- {typeof window !== "undefined" ? (
- query.trim().length > 0 ? (
- <>
- {searchResults.map(({ type, space, memory }, i) => (
- <>
- {type === "memory" && (
- <MemoryItem
- {...memory!}
- key={i}
- onDelete={() => {
- setSearchResults((prev) =>
- prev.filter((i) => i.memory?.id !== memory.id),
- );
- }}
- />
- )}
- {type === "space" && (
- <SpaceItem
- {...space!}
- key={i}
- onDelete={() => {
- setSearchResults((prev) =>
- prev.filter((i) => i.space?.id !== space.id),
- );
- deleteSpace(space.id);
- }}
- />
- )}
- </>
- ))}
- </>
- ) : (
- <>
- {spaces.map((space) => (
- <SpaceItem
- onDelete={() => deleteSpace(space.id)}
- key={space.id}
- onClick={() => setExpandedSpace(space.id)}
- {...space}
- />
- ))}
- {freeMemories.map((m) => (
- <MemoryItem {...m} key={m.id} />
- ))}
- </>
- )
- ) : (
- <>
- {Array.from({
- length: spaces.length + freeMemories.length,
- }).map((_, i) => (
- <div className="h-32 w-full animate-pulse rounded-2xl bg-stone-300/50"></div>
- ))}
- </>
- )}
- </div>
- <div className="absolute right-10 top-10 z-[100] block md:hidden">
- {width <= 768 && <ProfileDrawer />}
- </div>
- </main>
- {width <= 768 && <MemoryDrawer />}
- </AnimatePresence>
- </>
- );
-}
-
-export function MemoryItem(
- props: StoredContent & {
- onDelete?: () => void;
- removeFromSpace?: () => Promise<void>;
- },
-) {
- const { id, title, image, type, url, onDelete, removeFromSpace } = props;
-
- const { deleteMemory } = useMemory();
-
- const name = title
- ? title.length > 20
- ? title.slice(0, 20) + "..."
- : title
- : "Untitled Memory";
-
- const [isDialogOpen, setIsDialogOpen] = useState(false);
-
- const [moreDropdownOpen, setMoreDropdownOpen] = useState(false);
-
- const touchEventProps = useTouchHold({
- onHold() {
- setMoreDropdownOpen(true);
- },
- });
- return (
- <Dialog
- open={type === "note" ? isDialogOpen : false}
- onOpenChange={setIsDialogOpen}
- >
- <DialogTrigger asChild>
- <button
- onClick={() => (type === "page" ? window.open(url) : null)}
- data-space-text
- className="relative flex h-min select-none flex-col items-center justify-center gap-2 text-center font-normal focus-visible:outline-none"
- >
- <div
- {...touchEventProps}
- className="has-[[data-space-text]:focus-visible]:ring-rgray-7 [&:has-[[data-space-text]:focus-visible]>[data-more-button]]:opacity-100 flex h-32 w-full items-center justify-center rounded-2xl border-2 border-black/20 p-2 pb-4 shadow-sm ring-transparent transition duration-150 ease-out hover:scale-105 has-[[data-space-text]:focus-visible]:outline-none has-[[data-space-text]:focus-visible]:ring-2 md:has-[[data-state='true']]:bg-transparent [&:hover>[data-more-button]]:opacity-100"
- style={{
- backgroundColor: `#${pseudoRandomizeColorWithName(name)}`,
- }}
- >
- {type === "page" ? (
- <PageMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- removeFromSpace={removeFromSpace}
- onDelete={() => {
- deleteMemory(id);
- onDelete?.();
- }}
- url={url}
- />
- ) : type === "note" ? (
- <NoteMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- removeFromSpace={removeFromSpace}
- onEdit={() => setIsDialogOpen(true)}
- onDelete={() => {
- deleteMemory(id);
- onDelete?.();
- }}
- />
- ) : null}
-
- <div className="flex h-24 w-24 items-center justify-center">
- {type === "page" ? (
- <img
- className="h-16 w-16"
- id={id.toString()}
- src={image!}
- onError={(e) => {
- (e.target as HTMLImageElement).src =
- "/icons/white_without_bg.png";
- }}
- />
- ) : type === "note" ? (
- <Text
- onClick={() => setIsDialogOpen(true)}
- className="h-16 w-16"
- />
- ) : (
- <></>
- )}
- </div>
- </div>
- {name}
- </button>
- </DialogTrigger>
- <DialogContent className="w-max max-w-[auto]">
- <NoteEdit
- onDelete={onDelete}
- closeDialog={() => setIsDialogOpen(false)}
- memory={props}
- />
- </DialogContent>
- </Dialog>
- );
-}
-
-export function SpaceItem({
- name,
- id,
- onDelete,
- onClick,
-}: StoredSpace & { onDelete: () => void; onClick?: () => void }) {
- const { cachedMemories } = useMemory();
-
- const [itemRef, animateItem] = useAnimate();
- const { width } = useViewport();
-
- const [moreDropdownOpen, setMoreDropdownOpen] = useState(false);
-
- const touchEventProps = useTouchHold({
- onHold() {
- setMoreDropdownOpen(true);
- },
- });
-
- const spaceMemories = useMemo(() => {
- return cachedMemories.filter((m) => m.space === id);
- }, [cachedMemories]);
-
- const _name = name.length > 20 ? name.slice(0, 20) + "..." : name;
-
- return (
- <button
- onClick={onClick}
- data-space-text
- className="relative flex h-min select-none flex-col items-center justify-center gap-2 text-center font-normal focus-visible:outline-none"
- >
- <motion.div
- ref={itemRef}
- {...touchEventProps}
- className="has-[[data-space-text]:focus-visible]:ring-rgray-7 [&:has-[[data-space-text]:focus-visible]>[data-more-button]]:opacity-100 flex h-32 w-full items-center justify-center rounded-2xl border-2 border-black/20 p-2 pb-4 shadow-sm ring-transparent transition duration-150 ease-out hover:scale-105 has-[[data-space-text]:focus-visible]:outline-none has-[[data-space-text]:focus-visible]:ring-2 md:has-[[data-state='true']]:bg-transparent [&:hover>[data-more-button]]:opacity-100"
- style={{
- backgroundColor: `#${pseudoRandomizeColorWithName(name)}`,
- }}
- >
- <SpaceMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- onEdit={onClick}
- onDelete={onDelete}
- />
- {spaceMemories.length > 2 ? (
- <MemoryWithImages3
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- images={
- spaceMemories
- .map((c) => (c.type === "note" ? "/note.svg" : c.image))
- .reverse() as string[]
- }
- />
- ) : spaceMemories.length > 1 ? (
- <MemoryWithImages2
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- images={
- spaceMemories
- .map((c) => (c.type === "note" ? "/note.svg" : c.image))
- .reverse() as string[]
- }
- />
- ) : spaceMemories.length === 1 ? (
- <MemoryWithImage
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- image={
- spaceMemories[0].type === "note"
- ? "/note.svg"
- : spaceMemories[0].image!
- }
- />
- ) : (
- <div
- onClick={onClick}
- className="flex items-center justify-center gap-2"
- >
- <svg
- xmlns="http://www.w3.org/2000/svg"
- fill="none"
- viewBox="0 0 24 24"
- strokeWidth="1.5"
- stroke="currentColor"
- className="h-8 w-8"
- >
- <path
- strokeLinecap="round"
- strokeLinejoin="round"
- d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
- />
- </svg>
- <span className="text-stone-800/80">Empty Space</span>
- </div>
- )}
- </motion.div>
-
- {_name}
- </button>
- );
-}
-
-export function SpaceMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- onEdit,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- onEdit?: () => void;
- setIsOpen?: (open: boolean) => void;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition hover:bg-white focus-visible:bg-white focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="h-5 w-5 text-black" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={onEdit}>
- <Edit3 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Edit
- </DropdownMenuItem>
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function PageMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- url,
- removeFromSpace,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- url: string;
- setIsOpen?: (open: boolean) => void;
- removeFromSpace?: () => Promise<void>;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition hover:bg-white focus-visible:bg-white focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="h-5 w-5 text-black" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={() => window.open(url)}>
- <ArrowUpRight
- className="mr-2 h-4 w-4 scale-125"
- strokeWidth={1.5}
- />
- Open
- </DropdownMenuItem>
- {removeFromSpace && (
- <DropdownMenuItem onClick={removeFromSpace}>
- <Minus className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Remove from space
- </DropdownMenuItem>
- )}
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function NoteMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- onEdit,
- removeFromSpace,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- onEdit?: () => void;
- setIsOpen?: (open: boolean) => void;
- removeFromSpace?: () => Promise<void>;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition hover:bg-white focus-visible:bg-white focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="h-5 w-5 text-black" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={onEdit}>
- <Edit3 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Edit
- </DropdownMenuItem>
- {removeFromSpace && (
- <DropdownMenuItem onClick={removeFromSpace}>
- <Minus className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Remove from space
- </DropdownMenuItem>
- )}
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function AddMemoryModal({
- type,
- children,
- defaultSpaces,
- onAdd,
- data,
-}: {
- type: "page" | "note" | "space" | "existing-memory" | null;
- children?: React.ReactNode | React.ReactNode[];
- defaultSpaces?: number[];
- data?: {
- space?: {
- title: string;
- id: number;
- };
- fromSpaces?: number[];
- notInSpaces?: number[];
- };
- onAdd?: (data?: StoredSpace | StoredContent | StoredContent[]) => void;
-}) {
- const [isDialogOpen, setIsDialogOpen] = useState(false);
-
- return (
- <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
- {children}
- <DialogContent
- onOpenAutoFocus={(e) => {
- e.preventDefault();
- const novel = document.querySelector('[contenteditable="true"]') as
- | HTMLDivElement
- | undefined;
- if (novel) {
- novel.autofocus = false;
- novel.onfocus = () => {
- (
- document.querySelector("[data-modal-autofocus]") as
- | HTMLInputElement
- | undefined
- )?.focus();
- novel.onfocus = null;
- };
- }
- (
- document.querySelector("[data-modal-autofocus]") as
- | HTMLInputElement
- | undefined
- )?.focus();
- }}
- className="w-max max-w-[auto]"
- >
- {type === "page" ? (
- <AddMemoryPage
- onAdd={onAdd}
- defaultSpaces={defaultSpaces}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "note" ? (
- <NoteAddPage
- onAdd={onAdd}
- defaultSpaces={defaultSpaces}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "space" ? (
- <SpaceAddPage
- onAdd={onAdd}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "existing-memory" ? (
- <AddExistingMemoryToSpace
- onAdd={onAdd}
- fromSpaces={data?.fromSpaces}
- notInSpaces={data?.notInSpaces}
- space={data!.space!}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : (
- <></>
- )}
- </DialogContent>
- </Dialog>
- );
-}
diff --git a/apps/web/src/components/Main.tsx b/apps/web/src/components/Main.tsx
deleted file mode 100644
index 8ac52569..00000000
--- a/apps/web/src/components/Main.tsx
+++ /dev/null
@@ -1,533 +0,0 @@
-"use client";
-import { useCallback, useEffect, useRef, useState } from "react";
-import { FilterSpaces } from "./Sidebar/FilterCombobox";
-import { Textarea2 } from "./ui/textarea";
-import { ArrowRight, ArrowUp } from "lucide-react";
-import { MemoryDrawer } from "./MemoryDrawer";
-import useViewport from "@/hooks/useViewport";
-import { AnimatePresence, motion } from "framer-motion";
-import { cn, countLines, getIdsFromSource } from "@/lib/utils";
-import { ChatHistory } from "../../types/memory";
-import { ChatAnswer, ChatMessage, ChatQuestion } from "./ChatMessage";
-import { useRouter, useSearchParams } from "next/navigation";
-import { useMemory } from "@/contexts/MemoryContext";
-
-import Image from "next/image";
-import { getMemoriesFromUrl } from "@/actions/db";
-import { ProfileDrawer } from "./ProfileDrawer";
-
-function supportsDVH() {
- try {
- return CSS.supports("height: 100dvh");
- } catch {
- return false;
- }
-}
-
-export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) {
- const searchParams = useSearchParams();
-
- const [hide, setHide] = useState(false);
- const [layout, setLayout] = useState<"chat" | "initial">("initial");
- const [value, setValue] = useState("");
- const { width } = useViewport();
- const [isAiLoading, setIsAiLoading] = useState(false);
-
- const { spaces } = useMemory();
-
- // Variable to keep track of the chat history in this session
- const [chatHistory, setChatHistory] = useState<ChatHistory[]>([]);
-
- const [toBeParsed, setToBeParsed] = useState("");
-
- const textArea = useRef<HTMLDivElement>(null);
- const main = useRef<HTMLDivElement>(null);
-
- const [selectedSpaces, setSelectedSpaces] = useState<number[]>([]);
-
- const [isStreaming, setIsStreaming] = useState(false);
-
- useEffect(() => {
- const search = searchParams.get("q");
- if (search && search.trim().length > 0) {
- setValue(search);
- onSend();
- //router.push("/");
- }
- }, []);
-
- useEffect(() => {
- // function onResize() {
- // if (!main.current || !window.visualViewport) return;
- // if (
- // window.visualViewport.height < window.innerHeight + 20 &&
- // window.visualViewport.height > window.innerHeight - 20
- // ) {
- // setHide(false);
- // window.scrollTo(0, 0);
- // } else {
- // setHide(true);
- // window.scrollTo(0, document.body.scrollHeight);
- // }
- // }
- // window.visualViewport?.addEventListener("resize", onResize);
- // return () => {
- // window.visualViewport?.removeEventListener("resize", onResize);
- // };
- }, []);
-
- useEffect(() => {
- // Define a function to try parsing the accumulated data
- const tryParseAccumulatedData = () => {
- // Attempt to parse the "toBeParsed" state as JSON
- try {
- // Split the accumulated data by the known delimiter "\n\n"
- const parts = toBeParsed.split("\n\n");
- let remainingData = "";
-
- // Process each part to extract JSON objects
- parts.forEach((part, index) => {
- try {
- const parsedPart = JSON.parse(part.replace("data: ", "")); // Try to parse the part as JSON
-
- // If the part is the last one and couldn't be parsed, keep it to accumulate more data
- if (index === parts.length - 1 && !parsedPart) {
- remainingData = part;
- } else if (parsedPart && parsedPart.response) {
- // Append to chat history in this way:
- // If the last message was from the model, append to that message
- // Otherwise, Start a new message from the model and append to that
- if (chatHistory.length > 0) {
- setChatHistory((prev: ChatHistory[]) => {
- const lastMessage = prev[prev.length - 1];
- const newParts = [
- ...lastMessage.answer.parts,
- { text: parsedPart.response },
- ];
- return [
- ...prev.slice(0, prev.length - 1),
- {
- ...lastMessage,
- answer: {
- parts: newParts,
- sources: lastMessage.answer.sources,
- },
- },
- ];
- });
- } else {
- }
- }
- } catch (error) {
- // If parsing fails and it's not the last part, it's a malformed JSON
- if (index !== parts.length - 1) {
- console.error("Malformed JSON part: ", part);
- } else {
- // If it's the last part, it may be incomplete, so keep it
- remainingData = part;
- }
- }
- });
-
- // Update the toBeParsed state to only contain the unparsed remainder
- if (remainingData !== toBeParsed) {
- setToBeParsed(remainingData);
- }
- } catch (error) {
- console.error("Error parsing accumulated data: ", error);
- }
- };
-
- // Call the parsing function if there's data to be parsed
- if (toBeParsed) {
- tryParseAccumulatedData();
- }
- }, [toBeParsed]);
-
- const modifyChatHistory = useCallback((old: ChatHistory[]) => {
- const final: { role: "user" | "model"; parts: { text: string }[] }[] = [];
- old.forEach((chat) => {
- final.push({
- role: "user",
- parts: [{ text: chat.question }],
- });
- final.push({
- role: "model",
- parts: chat.answer.parts.map((part) => ({ text: part.text })),
- });
- });
-
- return final;
- }, []);
-
- const getSearchResults = async () => {
- setIsAiLoading(true);
-
- const _value = value.trim();
- setValue("");
-
- setChatHistory((prev) => [
- ...prev,
- {
- question: _value,
- answer: {
- parts: [],
- sources: [],
- },
- },
- ]);
-
- const sourcesResponse = await fetch(
- `/api/chat?sourcesOnly=true&q=${_value}`,
- {
- method: "POST",
- body: JSON.stringify({
- chatHistory: modifyChatHistory(chatHistory),
- }),
- },
- );
-
- console.log("sources", sourcesResponse);
-
- const sourcesInJson =
- getIdsFromSource(
- (
- (await sourcesResponse.json()) as {
- ids: string[];
- }
- ).ids,
- ) ?? [];
-
- const notesInSources = sourcesInJson.filter((urls) =>
- urls.startsWith("https://notes.supermemory.dhr.wtf/"),
- );
- const nonNotes = sourcesInJson.filter((i) => !notesInSources.includes(i));
-
- const fetchedTitles = await getMemoriesFromUrl(notesInSources);
-
- const sources = [
- ...nonNotes.map((n) => ({ isNote: false, source: n ?? "<unnamed>" })),
- ...fetchedTitles.map((n) => ({
- isNote: true,
- source: n.title ?? "<unnamed>",
- })),
- ];
-
- setIsAiLoading(false);
- setChatHistory((prev) => {
- const lastMessage = prev[prev.length - 1];
- return [
- ...prev.slice(0, prev.length - 1),
- {
- ...lastMessage,
- answer: {
- parts: lastMessage.answer.parts,
- sources,
- },
- },
- ];
- });
-
- const actualSelectedSpaces = selectedSpaces.map(
- (space) => spaces.find((s) => s.id === space)?.name ?? "",
- );
-
- const response = await fetch(
- `/api/chat?q=${_value}&spaces=${actualSelectedSpaces.join(",")}`,
- {
- method: "POST",
- body: JSON.stringify({
- chatHistory: modifyChatHistory(chatHistory),
- }),
- },
- );
-
- if (response.status !== 200) {
- setIsAiLoading(false);
- return;
- }
-
- setIsStreaming(true);
-
- if (response.body) {
- let reader = response.body?.getReader();
- let decoder = new TextDecoder("utf-8");
- let result = "";
-
- // @ts-ignore
- reader.read().then(function processText({ done, value }) {
- if (done) {
- setIsAiLoading(false);
- setToBeParsed("");
-
- return;
- }
- setToBeParsed((prev) => prev + decoder.decode(value));
-
- return reader?.read().then(processText);
- });
- }
- };
-
- const onSend = () => {
- if (value.trim().length < 1) return;
- setLayout("chat");
- getSearchResults();
- };
-
- function onValueChange(e: React.ChangeEvent<HTMLTextAreaElement>) {
- const value = e.target.value;
- setValue(value);
- const lines = countLines(e.target);
- e.target.rows = Math.min(5, lines);
- }
-
- return (
- <>
- <AnimatePresence mode="wait">
- {layout === "chat" ? (
- <Chat
- key="chat"
- isLoading={isAiLoading}
- chatHistory={chatHistory}
- sidebarOpen={sidebarOpen}
- askQuestion={onSend}
- setValue={setValue}
- value={value}
- selectedSpaces={selectedSpaces}
- setSelectedSpaces={setSelectedSpaces}
- />
- ) : (
- <main
- key="intial"
- data-sidebar-open={sidebarOpen}
- ref={main}
- className={cn(
- "sidebar relative flex w-full flex-col items-end justify-center gap-5 px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:gap-10 md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]",
- hide ? "" : "main-hidden",
- )}
- >
- <Image
- className="absolute right-10 top-10 hidden rounded-md md:block"
- src="/icons/logo_bw_without_bg.png"
- alt="Smort logo"
- width={50}
- height={50}
- />
- <div className="absolute right-10 top-10 block md:hidden">
- {width <= 768 && <ProfileDrawer hide={hide} />}
- </div>
- <h1 className="text-rgray-11 mt-auto w-full text-center text-3xl font-bold tracking-tight md:mt-0">
- Ask your second brain
- </h1>
-
- <FilterSpaces
- name={"Filter"}
- onClose={() => {
- textArea.current?.querySelector("textarea")?.focus();
- }}
- side="top"
- align="start"
- className="mr-auto bg-[#252525] md:hidden"
- selectedSpaces={selectedSpaces}
- setSelectedSpaces={setSelectedSpaces}
- />
- <Textarea2
- ref={textArea}
- className="bg-rgray-2 h-auto w-full flex-row items-start justify-center overflow-auto px-3 md:hidden md:items-center md:justify-center"
- textAreaProps={{
- placeholder: "Ask your SuperMemory...",
- className:
- "overflow-auto h-auto p-3 md:resize-none text-lg w-auto resize-y text-rgray-11 w-full",
- value,
- rows: 1,
- autoFocus: true,
- onChange: onValueChange,
- onKeyDown: (e) => {
- if (e.key === "Enter" && !e.shiftKey) {
- e.preventDefault();
- onSend();
- }
- },
- }}
- >
- <div className="text-rgray-11/70 ml-auto mt-auto flex h-full w-min items-center justify-center pb-3 pr-2 md:hidden">
- <FilterSpaces
- name={"Filter"}
- onClose={() => {
- textArea.current?.querySelector("textarea")?.focus();
- }}
- className="hidden md:flex"
- selectedSpaces={selectedSpaces}
- setSelectedSpaces={setSelectedSpaces}
- />
- <button
- onClick={onSend}
- disabled={value.trim().length < 1}
- className="text-rgray-11/70 bg-rgray-3 focus-visible:ring-rgray-8 hover:bg-rgray-4 mt-auto flex items-center justify-center rounded-full p-2 ring-2 ring-transparent transition-[filter] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50"
- >
- <ArrowUp className="h-5 w-5" />
- </button>
- </div>
- </Textarea2>
-
- <Textarea2
- ref={textArea}
- exit={{
- opacity: 0,
- y: 50,
- }}
- transition={{
- type: "tween",
- duration: 0.2,
- }}
- textAreaProps={{
- placeholder: "Ask your second brain...",
- className:
- "h-auto overflow-auto md:h-full md:resize-none text-lg py-0 px-2 pt-2 md:py-0 md:p-5 resize-y text-rgray-11 w-full min-h-[1em]",
- value,
- autoFocus: true,
- onChange: (e) => setValue(e.target.value),
- onKeyDown: (e) => {
- if (e.key === "Enter" && !e.shiftKey) {
- e.preventDefault();
- onSend();
- }
- },
- }}
- className="hidden md:flex"
- >
- <div className="text-rgray-11/70 flex h-full w-fit items-center justify-center pl-0 md:w-full md:p-2">
- <FilterSpaces
- name={"Filter"}
- onClose={() => {
- textArea.current?.querySelector("textarea")?.focus();
- }}
- className="hidden md:flex"
- selectedSpaces={selectedSpaces}
- setSelectedSpaces={setSelectedSpaces}
- />
- <button
- onClick={onSend}
- disabled={value.trim().length < 1}
- className="text-rgray-11/70 bg-rgray-3 focus-visible:ring-rgray-8 hover:bg-rgray-4 mt-auto flex items-center justify-center rounded-full p-2 ring-2 ring-transparent focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:ml-auto md:mt-0"
- >
- <ArrowRight className="h-5 w-5" />
- </button>
- </div>
- </Textarea2>
- </main>
- )}
- {width <= 768 && <MemoryDrawer hide={hide} />}
- </AnimatePresence>
- </>
- );
-}
-
-export function Chat({
- sidebarOpen,
- chatHistory,
- isLoading = false,
- askQuestion,
- setValue,
- value,
- selectedSpaces,
- setSelectedSpaces,
-}: {
- sidebarOpen: boolean;
- isLoading?: boolean;
- chatHistory: ChatHistory[];
- askQuestion: () => void;
- setValue: (value: string) => void;
- value: string;
- selectedSpaces: number[];
- setSelectedSpaces: React.Dispatch<React.SetStateAction<number[]>>;
-}) {
- const textArea = useRef<HTMLDivElement>(null);
-
- function onValueChange(e: React.ChangeEvent<HTMLTextAreaElement>) {
- const value = e.target.value;
- setValue(value);
- const lines = countLines(e.target);
- e.target.rows = Math.min(5, lines);
- }
-
- const { width } = useViewport();
-
- return (
- <main
- data-sidebar-open={sidebarOpen}
- className={cn(
- "sidebar relative flex w-full flex-col items-end gap-5 px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:gap-10 md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]",
- )}
- >
- <div className="absolute right-10 top-10 z-[100] block md:hidden">
- {width <= 768 && <ProfileDrawer />}
- </div>
- <div className="scrollbar-none h-[70vh] w-full overflow-y-auto px-2 md:h-screen md:px-5">
- {chatHistory.map((msg, i) => (
- <ChatMessage index={i} key={i} isLast={i === chatHistory.length - 1}>
- <ChatQuestion>{msg.question}</ChatQuestion>
- <ChatAnswer
- loading={i === chatHistory.length - 1 ? isLoading : false}
- sources={msg.answer.sources}
- >
- {msg.answer.parts
- .map((part) => part.text)
- .join("")
- .replace("</s>", "")}
- </ChatAnswer>
- </ChatMessage>
- ))}
- </div>
- <div className="from-rgray-2 via-rgray-2 to-rgray-2/0 absolute bottom-0 left-0 w-full bg-gradient-to-t" />
- <div
- data-sidebar-open={sidebarOpen}
- className="absolute flex w-full items-center justify-center"
- >
- <div className="animate-from-top bottom-padding fixed left-1/2 mt-auto flex w-[90%] -translate-x-1/2 flex-col items-center justify-center gap-2 md:bottom-10 md:left-[auto] md:w-[50%] md:translate-x-0">
- <FilterSpaces
- name={"Filter"}
- onClose={() => {
- textArea.current?.querySelector("textarea")?.focus();
- }}
- side="top"
- align="start"
- className="mr-auto bg-[#252525]"
- selectedSpaces={selectedSpaces}
- setSelectedSpaces={setSelectedSpaces}
- />
- <Textarea2
- ref={textArea}
- className="bg-rgray-2 h-auto w-full flex-row items-start justify-center overflow-auto px-3 md:items-center md:justify-center"
- textAreaProps={{
- placeholder: "Ask your SuperMemory...",
- className:
- "overflow-auto h-auto p-3 md:resize-none text-lg w-auto resize-y text-rgray-11 w-full",
- value,
- rows: 1,
- autoFocus: true,
- onChange: onValueChange,
- onKeyDown: (e) => {
- if (e.key === "Enter" && !e.shiftKey) {
- e.preventDefault();
- askQuestion();
- }
- },
- }}
- >
- <div className="text-rgray-11/70 ml-auto mt-auto flex h-full w-min items-center justify-center pb-3 pr-2">
- <button
- onClick={askQuestion}
- disabled={value.trim().length < 1}
- className="text-rgray-11/70 bg-rgray-3 focus-visible:ring-rgray-8 hover:bg-rgray-4 mt-auto flex items-center justify-center rounded-full p-2 ring-2 ring-transparent transition-[filter] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50"
- >
- <ArrowUp className="h-5 w-5" />
- </button>
- </div>
- </Textarea2>
- </div>
- </div>
- </main>
- );
-}
diff --git a/apps/web/src/components/MemoryDrawer.tsx b/apps/web/src/components/MemoryDrawer.tsx
deleted file mode 100644
index 14283281..00000000
--- a/apps/web/src/components/MemoryDrawer.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import { useRef, useState } from "react";
-import { Drawer, DrawerContent, DrawerOverlay } from "./ui/drawer";
-import { MemoryIcon } from "@/assets/Memories";
-import { cn } from "@/lib/utils";
-import { MemoriesBar } from "./Sidebar/MemoriesBar";
-
-export interface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {
- hide?: boolean;
-}
-
-export function MemoryDrawer({ className, hide = false, ...props }: Props) {
- const [activeSnapPoint, setActiveSnapPoint] = useState<
- number | null | string
- >(0.1);
-
- return (
- <Drawer
- snapPoints={[0.1, 0.9]}
- activeSnapPoint={activeSnapPoint}
- shouldScaleBackground={false}
- setActiveSnapPoint={setActiveSnapPoint}
- open={true}
- dismissible={false}
- modal={false}
- >
- <DrawerContent
- overlay={false}
- data-expanded={activeSnapPoint === 0.9}
- className={cn(
- "border-rgray-6 DrawerContent data-[expanded=true]:bg-rgray-3 h-full w-screen border transition-[background] focus-visible:outline-none",
- hide ? "hidden" : "",
- )}
- handle={false}
- >
- <button
- onClick={() =>
- setActiveSnapPoint((prev) => (prev === 0.9 ? 0.1 : 0.9))
- }
- className="bg-rgray-4 border-rgray-6 text-rgray-11 absolute left-1/2 top-0 flex w-fit -translate-x-1/2 -translate-y-1/2 items-center justify-center gap-2 rounded-md border px-3 py-2"
- >
- <MemoryIcon className="h-7 w-7" />
- Memories
- </button>
- <div className="h-full w-full overflow-y-auto">
- <MemoriesBar isOpen={true} />
- </div>
- </DrawerContent>
- <DrawerOverlay className="relative bg-transparent" />
- </Drawer>
- );
-}
diff --git a/apps/web/src/components/ProfileDrawer.tsx b/apps/web/src/components/ProfileDrawer.tsx
deleted file mode 100644
index bdb32e03..00000000
--- a/apps/web/src/components/ProfileDrawer.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { useRef, useState } from "react";
-import {
- Drawer,
- DrawerContent,
- DrawerOverlay,
- DrawerTrigger,
-} from "./ui/drawer";
-import { cn } from "@/lib/utils";
-import { SettingsTab } from "./Sidebar/SettingsTab";
-import { useSession } from "next-auth/react";
-
-export interface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {
- hide?: boolean;
-}
-
-export function ProfileDrawer({ className, hide = false, ...props }: Props) {
- const { data: session } = useSession();
-
- return (
- <Drawer snapPoints={[0.9]} shouldScaleBackground={false}>
- <DrawerTrigger>
- <img
- src={session?.user?.image ?? "/icons/white_without_bg.png"}
- className="h-10 w-10 rounded-full"
- />
- </DrawerTrigger>
- <DrawerContent
- overlay={false}
- className={cn(
- "border-rgray-6 DrawerContent data-[expanded=true]:bg-rgray-3 z-[101] h-full w-screen border bg-white transition-[background] focus-visible:outline-none",
- hide ? "hidden" : "",
- )}
- >
- <div className="h-[85vh] w-full overflow-y-auto">
- <SettingsTab open={true} />
- </div>
- </DrawerContent>
- </Drawer>
- );
-}
diff --git a/apps/web/src/components/SearchResults.tsx b/apps/web/src/components/SearchResults.tsx
deleted file mode 100644
index d348814e..00000000
--- a/apps/web/src/components/SearchResults.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-"use client";
-
-import React from "react";
-import { Card, CardContent } from "./ui/card";
-import Markdown from "react-markdown";
-import remarkGfm from "remark-gfm";
-
-function SearchResults({
- aiResponse,
- sources,
-}: {
- aiResponse: string;
- sources: string[];
-}) {
- return (
- <div
- style={{
- backgroundImage: `linear-gradient(to right, #E5D9F2, #CDC1FF)`,
- }}
- className="mx-auto mt-4 w-full max-w-2xl space-y-6 rounded-xl border px-4 py-6"
- >
- <div className="text-start">
- <div className="text-xl text-black">
- <Markdown remarkPlugins={[remarkGfm]}>
- {aiResponse.replace("</s>", "")}
- </Markdown>
- </div>
- </div>
- <div className="grid gap-6">
- {sources.map((value, index) => (
- <Card key={index}>
- <CardContent className="space-y-2">{value}</CardContent>
- </Card>
- ))}
- </div>
- </div>
- );
-}
-
-export default SearchResults;
diff --git a/apps/web/src/components/Sidebar/AddMemoryDialog.tsx b/apps/web/src/components/Sidebar/AddMemoryDialog.tsx
deleted file mode 100644
index 64147b1e..00000000
--- a/apps/web/src/components/Sidebar/AddMemoryDialog.tsx
+++ /dev/null
@@ -1,480 +0,0 @@
-import { Editor } from "novel";
-import {
- DialogClose,
- DialogDescription,
- DialogFooter,
- DialogHeader,
- DialogTitle,
-} from "../ui/dialog";
-import { Input } from "../ui/input";
-import { Label } from "../ui/label";
-import { Markdown } from "tiptap-markdown";
-import { useEffect, useRef, useState } from "react";
-import { FilterMemories, FilterSpaces } from "./FilterCombobox";
-import { useMemory } from "@/contexts/MemoryContext";
-import { Loader, Plus, X } from "lucide-react";
-import { StoredContent, StoredSpace } from "@/server/db/schema";
-import { cleanUrl } from "@/lib/utils";
-import { motion } from "framer-motion";
-import { getMetaData } from "@/server/helpers";
-
-export function AddMemoryPage({
- closeDialog,
- defaultSpaces,
- onAdd,
-}: {
- closeDialog: () => void;
- defaultSpaces?: number[];
- onAdd?: (addedData: StoredContent) => void;
-}) {
- const { addMemory } = useMemory();
-
- const [loading, setLoading] = useState(false);
- const [url, setUrl] = useState("");
- const [selectedSpacesId, setSelectedSpacesId] = useState<number[]>(
- defaultSpaces ?? [],
- );
-
- return (
- <div className="w-[80vw] max-w-[80vw] md:w-[40vw]">
- <DialogHeader>
- <DialogTitle>Add a web page to memory</DialogTitle>
- <DialogDescription>
- This will fetch the content of the web page and add it to the memory
- </DialogDescription>
- </DialogHeader>
- <Label className="mt-5 block">URL</Label>
- <Input
- placeholder="Enter the URL of the page"
- type="url"
- data-modal-autofocus
- className="mt-2 w-full disabled:cursor-not-allowed disabled:opacity-70"
- value={url}
- onChange={(e) => setUrl(e.target.value)}
- disabled={loading}
- />
- <DialogFooter>
- <FilterSpaces
- selectedSpaces={selectedSpacesId}
- setSelectedSpaces={setSelectedSpacesId}
- className="mr-auto bg-white/5 hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-70"
- name={"Spaces"}
- disabled={loading}
- />
- <button
- type={"submit"}
- disabled={loading}
- onClick={async () => {
- setLoading(true);
- const metadata = await getMetaData(url);
- const data = await addMemory(
- {
- title: metadata.title,
- description: metadata.description,
- content: "",
- type: "page",
- url: url,
- image: metadata.image,
- savedAt: new Date(),
- },
- selectedSpacesId,
- );
- if (data) onAdd?.(data.memory);
- closeDialog();
- }}
- className="bg-rgray-4 focus-visible:ring-rgray-7 relative rounded-md px-4 py-2 ring-transparent transition hover:bg-slate-100 focus-visible:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <motion.div
- initial={{ x: "-50%", y: "-100%" }}
- animate={loading && { y: "-50%", x: "-50%", opacity: 1 }}
- className="absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-[-100%] opacity-0"
- >
- <Loader className="text-rgray-11 h-5 w-5 animate-spin" />
- </motion.div>
- <motion.div
- initial={{ y: "0%" }}
- animate={loading && { opacity: 0, y: "30%" }}
- >
- Add
- </motion.div>
- </button>
- <DialogClose
- disabled={loading}
- className="focus-visible:ring-rgray-7 rounded-md px-3 py-2 ring-transparent transition hover:bg-white focus-visible:bg-[#F4F3F2] focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- Cancel
- </DialogClose>
- </DialogFooter>
- </div>
- );
-}
-
-export function NoteAddPage({
- closeDialog,
- defaultSpaces,
- onAdd,
-}: {
- closeDialog: () => void;
- defaultSpaces?: number[];
- onAdd?: (addedData: StoredContent) => void;
-}) {
- const { addMemory } = useMemory();
-
- const [selectedSpacesId, setSelectedSpacesId] = useState<number[]>(
- defaultSpaces ?? [],
- );
-
- const inputRef = useRef<HTMLInputElement>(null);
- const [name, setName] = useState("");
- const [content, setContent] = useState("");
- const [loading, setLoading] = useState(false);
-
- function check(): boolean {
- const data = {
- name: name.trim(),
- content,
- };
- if (!data.name || data.name.length < 1) {
- if (!inputRef.current) {
- alert("Please enter a name for the note");
- return false;
- }
- inputRef.current.value = "";
- inputRef.current.placeholder = "Please enter a title for the note";
- inputRef.current.dataset["error"] = "true";
- setTimeout(() => {
- inputRef.current!.placeholder = "Title of the note";
- inputRef.current!.dataset["error"] = "false";
- }, 500);
- inputRef.current.focus();
- return false;
- }
- return true;
- }
-
- return (
- <div className="w-[80vw] md:w-auto">
- <Input
- ref={inputRef}
- data-error="false"
- className="w-full border-none p-0 text-xl ring-0 placeholder:transition placeholder:duration-500 focus-visible:ring-0 data-[error=true]:placeholder:text-red-400"
- placeholder="Title of the note"
- data-modal-autofocus
- value={name}
- disabled={loading}
- onChange={(e) => setName(e.target.value)}
- />
- <Editor
- disableLocalStorage
- defaultValue={""}
- onUpdate={(editor) => {
- if (!editor) return;
- setContent(editor.storage.markdown.getMarkdown());
- }}
- extensions={[Markdown]}
- className="novel-editor border-rgray-7 dark mt-5 max-h-[60vh] min-h-[40vh] w-full overflow-y-auto rounded-lg border bg-white md:w-[50vw] [&>div>div]:p-5"
- />
- <DialogFooter>
- <FilterSpaces
- selectedSpaces={selectedSpacesId}
- setSelectedSpaces={setSelectedSpacesId}
- className="hover:bg-rgray-5 mr-auto bg-white/5"
- name={"Spaces"}
- />
- <button
- onClick={() => {
- if (check()) {
- setLoading(true);
- addMemory(
- {
- content,
- title: name,
- type: "note",
- url: `https://notes.supermemory.dhr.wtf/`,
- image: "",
- savedAt: new Date(),
- },
- selectedSpacesId,
- ).then((data) => {
- if (data?.memory) onAdd?.(data.memory);
- closeDialog();
- });
- }
- }}
- disabled={loading}
- className="hover:bg-rgray-5 focus-visible:bg-rgray-5 focus-visible:ring-rgray-7 relative rounded-md bg-[#F4F3F2] px-4 py-2 ring-transparent transition focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <motion.div
- initial={{ x: "-50%", y: "-100%" }}
- animate={loading && { y: "-50%", x: "-50%", opacity: 1 }}
- className="absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-[-100%] opacity-0"
- >
- <Loader className="text-rgray-11 h-5 w-5 animate-spin" />
- </motion.div>
- <motion.div
- initial={{ y: "0%" }}
- animate={loading && { opacity: 0, y: "30%" }}
- >
- Add
- </motion.div>
- </button>
- <DialogClose
- type={undefined}
- disabled={loading}
- className="hover:bg-rgray-4 focus-visible:bg-rgray-4 focus-visible:ring-rgray-7 rounded-md px-3 py-2 ring-transparent transition focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- Cancel
- </DialogClose>
- </DialogFooter>
- </div>
- );
-}
-
-export function SpaceAddPage({
- closeDialog,
- onAdd,
-}: {
- closeDialog: () => void;
- onAdd?: (addedData: StoredSpace) => void;
-}) {
- const { addSpace } = useMemory();
-
- const inputRef = useRef<HTMLInputElement>(null);
- const [name, setName] = useState("");
-
- const [loading, setLoading] = useState(false);
-
- const [selected, setSelected] = useState<StoredContent[]>([]);
-
- function check(): boolean {
- const data = {
- name: name.trim(),
- };
- if (!data.name || data.name.length < 1) {
- if (!inputRef.current) {
- alert("Please enter a name for the note");
- return false;
- }
- inputRef.current.value = "";
- inputRef.current.placeholder = "Please enter a title for the space";
- inputRef.current.dataset["error"] = "true";
- setTimeout(() => {
- inputRef.current!.placeholder = "Enter the name of the space";
- inputRef.current!.dataset["error"] = "false";
- }, 500);
- inputRef.current.focus();
- return false;
- }
- return true;
- }
-
- return (
- <div className="w-[80vw] md:w-[40vw]">
- <DialogHeader>
- <DialogTitle>Add a space</DialogTitle>
- </DialogHeader>
- <Label className="mt-5 block">Name</Label>
- <Input
- ref={inputRef}
- placeholder="Enter the name of the space"
- type="url"
- data-modal-autofocus
- value={name}
- disabled={loading}
- onChange={(e) => setName(e.target.value)}
- className="mt-2 w-full placeholder:transition placeholder:duration-500 data-[error=true]:placeholder:text-red-400 focus-visible:data-[error=true]:ring-red-500/10"
- />
- {selected.length > 0 && (
- <>
- <Label className="mt-5 block">Add Memories</Label>
- <div className="flex min-h-5 flex-col items-center justify-center py-2">
- {selected.map((i) => (
- <MemorySelectedItem
- key={i.id}
- onRemove={() =>
- setSelected((prev) => prev.filter((p) => p.id !== i.id))
- }
- {...i}
- />
- ))}
- </div>
- </>
- )}
- <DialogFooter>
- <FilterMemories
- selected={selected}
- setSelected={setSelected}
- disabled={loading}
- className="mr-auto bg-white/5 hover:hover:bg-slate-100 focus-visible:hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <Plus className="h-5 w-5" />
- Memory
- </FilterMemories>
- <button
- type={undefined}
- onClick={() => {
- if (check()) {
- setLoading(true);
- addSpace(
- name,
- selected.map((s) => s.id),
- ).then((data) => {
- if (data) onAdd?.(data.space);
- closeDialog();
- });
- }
- }}
- disabled={loading}
- className="bg-rgray-4 focus-visible:ring-rgray-7 relative rounded-md px-4 py-2 ring-transparent transition hover:hover:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:hover:bg-slate-100 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <motion.div
- initial={{ x: "-50%", y: "-100%" }}
- animate={loading && { y: "-50%", x: "-50%", opacity: 1 }}
- className="absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-[-100%] opacity-0"
- >
- <Loader className="text-rgray-11 h-5 w-5 animate-spin" />
- </motion.div>
- <motion.div
- initial={{ y: "0%" }}
- animate={loading && { opacity: 0, y: "30%" }}
- >
- Add
- </motion.div>
- </button>
- <DialogClose
- disabled={loading}
- className="focus-visible:ring-rgray-7 rounded-md px-3 py-2 ring-transparent transition hover:bg-white focus-visible:bg-[#F4F3F2] focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- Cancel
- </DialogClose>
- </DialogFooter>
- </div>
- );
-}
-
-export function MemorySelectedItem({
- id,
- title,
- url,
- type,
- image,
- onRemove,
-}: StoredContent & { onRemove: () => void }) {
- return (
- <div className="hover:bg-rgray-4 focus-within-bg-rgray-4 flex w-full items-center justify-start gap-2 rounded-md p-2 px-3 text-sm [&:hover_[data-icon]]:block [&:hover_img]:hidden">
- <button
- onClick={onRemove}
- className="ring-rgray-7 ring-offset-rgray-3 m-0 h-5 w-5 rounded-sm p-0 ring-offset-2 focus-visible:outline-none focus-visible:ring-2 [&:focus-visible>[data-icon]]:block [&:focus-visible>img]:hidden"
- >
- <img
- src={
- type === "note"
- ? "/note.svg"
- : image ?? "/icons/logo_without_bg.png"
- }
- className="h-5 w-5"
- />
- <X data-icon className="hidden h-5 w-5 scale-90" />
- </button>
- <span>{title}</span>
- <span className="ml-auto block opacity-50">
- {type === "note" ? "Note" : cleanUrl(url)}
- </span>
- </div>
- );
-}
-
-export function AddExistingMemoryToSpace({
- space,
- closeDialog,
- fromSpaces,
- notInSpaces,
- onAdd,
-}: {
- space: { title: string; id: number };
- closeDialog: () => void;
- fromSpaces?: number[];
- notInSpaces?: number[];
- onAdd?: () => void;
-}) {
- const { addMemoriesToSpace } = useMemory();
-
- const [loading, setLoading] = useState(false);
-
- const [selected, setSelected] = useState<StoredContent[]>([]);
-
- return (
- <div className="w-[80vw] md:w-[40vw]">
- <DialogHeader>
- <DialogTitle>Add an existing memory to {space.title}</DialogTitle>
- <DialogDescription>
- Pick the memories you want to add to this space
- </DialogDescription>
- </DialogHeader>
- {selected.length > 0 && (
- <>
- <Label className="mt-5 block">Add Memories</Label>
- <div className="flex min-h-5 flex-col items-center justify-center py-2">
- {selected.map((i) => (
- <MemorySelectedItem
- key={i.id}
- onRemove={() =>
- setSelected((prev) => prev.filter((p) => p.id !== i.id))
- }
- {...i}
- />
- ))}
- </div>
- </>
- )}
- <DialogFooter>
- <FilterMemories
- selected={selected}
- setSelected={setSelected}
- disabled={loading}
- fromSpaces={fromSpaces}
- notInSpaces={notInSpaces}
- className="hover:bg-rgray-4 focus-visible:bg-rgray-4 mr-auto bg-white/5 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <Plus className="h-5 w-5" />
- Memory
- </FilterMemories>
- <button
- type={undefined}
- onClick={() => {
- setLoading(true);
- addMemoriesToSpace(
- space.id,
- selected.map((i) => i.id),
- ).then(() => {
- onAdd?.();
- closeDialog();
- });
- }}
- disabled={loading}
- className="bg-rgray-4 hover:bg-rgray-5 focus-visible:bg-rgray-5 focus-visible:ring-rgray-7 relative rounded-md px-4 py-2 ring-transparent transition focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <motion.div
- initial={{ x: "-50%", y: "-100%" }}
- animate={loading && { y: "-50%", x: "-50%", opacity: 1 }}
- className="absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-[-100%] opacity-0"
- >
- <Loader className="text-rgray-11 h-5 w-5 animate-spin" />
- </motion.div>
- <motion.div
- initial={{ y: "0%" }}
- animate={loading && { opacity: 0, y: "30%" }}
- >
- Add
- </motion.div>
- </button>
- <DialogClose
- disabled={loading}
- className="focus-visible:ring-rgray-7 rounded-md px-3 py-2 ring-transparent transition hover:bg-white focus-visible:bg-[#F4F3F2] focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- Cancel
- </DialogClose>
- </DialogFooter>
- </div>
- );
-}
diff --git a/apps/web/src/components/Sidebar/DeleteConfirmation.tsx b/apps/web/src/components/Sidebar/DeleteConfirmation.tsx
deleted file mode 100644
index 7955df0d..00000000
--- a/apps/web/src/components/Sidebar/DeleteConfirmation.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import {
- Dialog,
- DialogContent,
- DialogTrigger,
- DialogTitle,
- DialogDescription,
- DialogClose,
- DialogFooter,
-} from "../ui/dialog";
-
-export default function DeleteConfirmation({
- onDelete,
- trigger = true,
- children,
-}: {
- trigger?: boolean;
- onDelete?: () => void;
- children: React.ReactNode;
-}) {
- return (
- <Dialog>
- {trigger ? (
- <DialogTrigger asChild>{children}</DialogTrigger>
- ) : (
- <>{children}</>
- )}
- <DialogContent>
- <DialogTitle className="text-xl">Are you sure?</DialogTitle>
- <DialogDescription className="text-md">
- You will not be able to recover this it.
- </DialogDescription>
- <DialogFooter>
- <DialogClose
- type={undefined}
- onClick={onDelete}
- className="ml-auto flex items-center justify-center rounded-md bg-red-100/10 px-3 py-2 text-red-400 transition hover:bg-red-100/5 focus-visible:bg-red-100/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-100/30"
- >
- Delete
- </DialogClose>
- <DialogClose className="focus-visible:bg-rgray-4 focus-visible:ring-rgray-7 hover:bg-rgray-4 ml-auto flex items-center justify-center rounded-md px-3 py-2 transition focus-visible:outline-none focus-visible:ring-2">
- Cancel
- </DialogClose>
- </DialogFooter>
- </DialogContent>
- </Dialog>
- );
-}
diff --git a/apps/web/src/components/Sidebar/EditNoteDialog.tsx b/apps/web/src/components/Sidebar/EditNoteDialog.tsx
deleted file mode 100644
index c0ad716d..00000000
--- a/apps/web/src/components/Sidebar/EditNoteDialog.tsx
+++ /dev/null
@@ -1,155 +0,0 @@
-import { Editor } from "novel";
-import { DialogClose, DialogFooter } from "../ui/dialog";
-import { Input } from "../ui/input";
-import { Markdown } from "tiptap-markdown";
-import { useEffect, useRef, useState } from "react";
-import { FilterSpaces } from "./FilterCombobox";
-import { useMemory } from "@/contexts/MemoryContext";
-import { Loader, Plus, Trash, X } from "lucide-react";
-import { motion } from "framer-motion";
-import { StoredContent } from "@/server/db/schema";
-import { fetchContent } from "@/actions/db";
-import { isArraysEqual } from "@/lib/utils";
-import DeleteConfirmation from "./DeleteConfirmation";
-
-export function NoteEdit({
- memory,
- closeDialog,
- onDelete,
-}: {
- memory: StoredContent;
- closeDialog: () => any;
- onDelete?: () => void;
-}) {
- const { updateMemory, deleteMemory } = useMemory();
-
- const [initialSpaces, setInitialSpaces] = useState<number[]>([]);
- const [selectedSpacesId, setSelectedSpacesId] = useState<number[]>([]);
-
- const inputRef = useRef<HTMLInputElement>(null);
- const [name, setName] = useState(memory.title ?? "");
- const [content, setContent] = useState(memory.content);
- const [loading, setLoading] = useState(false);
-
- function check(): boolean {
- const data = {
- name: name.trim(),
- content,
- };
- if (!data.name || data.name.length < 1) {
- if (!inputRef.current) {
- alert("Please enter a name for the note");
- return false;
- }
- inputRef.current.value = "";
- inputRef.current.placeholder = "Please enter a title for the note";
- inputRef.current.dataset["error"] = "true";
- setTimeout(() => {
- inputRef.current!.placeholder = "Title of the note";
- inputRef.current!.dataset["error"] = "false";
- }, 500);
- inputRef.current.focus();
- return false;
- }
- return true;
- }
-
- useEffect(() => {
- fetchContent(memory.id).then((data) => {
- if (data?.spaces) {
- setInitialSpaces(data.spaces);
- setSelectedSpacesId(data.spaces);
- }
- });
- }, []);
-
- return (
- <div>
- <Input
- ref={inputRef}
- data-error="false"
- className="w-full border-none p-0 text-xl ring-0 placeholder:transition placeholder:duration-500 focus-visible:ring-0 data-[error=true]:placeholder:text-red-400"
- placeholder="Title of the note"
- value={name}
- disabled={loading}
- onChange={(e) => setName(e.target.value)}
- />
- <Editor
- disableLocalStorage
- defaultValue={memory.content}
- onUpdate={(editor) => {
- if (!editor) return;
- setContent(editor.storage.markdown.getMarkdown());
- }}
- extensions={[Markdown]}
- className="novel-editor border-rgray-7 dark mt-5 max-h-[60vh] min-h-[40vh] w-[50vw] overflow-y-auto rounded-lg border bg-white [&>div>div]:p-5"
- />
- <DialogFooter>
- <FilterSpaces
- selectedSpaces={selectedSpacesId}
- setSelectedSpaces={setSelectedSpacesId}
- className="mr-auto bg-white hover:bg-slate-100"
- name={"Spaces"}
- />
- <DeleteConfirmation
- onDelete={() => {
- deleteMemory(memory.id);
- onDelete?.();
- }}
- >
- <button
- type={undefined}
- disabled={loading}
- className="rounded-md px-3 py-2 ring-transparent transition hover:bg-red-100 hover:text-red-400 focus-visible:bg-red-100 focus-visible:text-red-400 focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <Trash className="h-5 w-5" />
- </button>
- </DeleteConfirmation>
- <button
- onClick={() => {
- if (check()) {
- setLoading(true);
- console.log({
- title: name === memory.title ? undefined : name,
- content: content === memory.content ? undefined : content,
- spaces: isArraysEqual(initialSpaces, selectedSpacesId)
- ? undefined
- : selectedSpacesId,
- });
- updateMemory(memory.id, {
- title: name === memory.title ? undefined : name,
- content: content === memory.content ? undefined : content,
- spaces: isArraysEqual(initialSpaces, selectedSpacesId)
- ? undefined
- : selectedSpacesId,
- }).then(closeDialog);
- }
- }}
- disabled={loading}
- className="focus-visible:ring-rgray-7 relative rounded-md bg-white px-4 py-2 ring-transparent transition hover:bg-slate-100 focus-visible:bg-slate-100 focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <motion.div
- initial={{ x: "-50%", y: "-100%" }}
- animate={loading && { y: "-50%", x: "-50%", opacity: 1 }}
- className="absolute left-1/2 top-1/2 -translate-x-1/2 translate-y-[-100%] opacity-0"
- >
- <Loader className="h-5 w-5 animate-spin" />
- </motion.div>
- <motion.div
- initial={{ y: "0%" }}
- animate={loading && { opacity: 0, y: "30%" }}
- >
- Save
- </motion.div>
- </button>
- <DialogClose
- type={undefined}
- disabled={loading}
- className="focus-visible:bg-rgray-4 focus-visible:ring-rgray-7 rounded-md px-3 py-2 ring-transparent transition hover:bg-white focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- Cancel
- </DialogClose>
- </DialogFooter>
- </div>
- );
-}
diff --git a/apps/web/src/components/Sidebar/ExpandedSpace.tsx b/apps/web/src/components/Sidebar/ExpandedSpace.tsx
deleted file mode 100644
index 55d3f3f8..00000000
--- a/apps/web/src/components/Sidebar/ExpandedSpace.tsx
+++ /dev/null
@@ -1,287 +0,0 @@
-import { fetchContentForSpace, getSpace } from "@/actions/db";
-import { useMemory } from "@/contexts/MemoryContext";
-import { StoredContent, StoredSpace } from "@/server/db/schema";
-import {
- Edit3,
- Loader,
- Plus,
- Search,
- Sparkles,
- StickyNote,
- Text,
- Undo2,
-} from "lucide-react";
-import { useEffect, useRef, useState } from "react";
-import { Input, InputWithIcon } from "../ui/input";
-import { useDebounce } from "@/hooks/useDebounce";
-import { useAutoAnimate } from "@formkit/auto-animate/react";
-import { AddMemoryModal, MemoryItem } from "./MemoriesBar";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "../ui/dropdown-menu";
-import { DialogTrigger } from "../ui/dialog";
-
-export function ExpandedSpace({
- spaceId,
- back,
-}: {
- spaceId: number;
- back: () => void;
-}) {
- const { updateMemory, updateSpace, search } = useMemory();
-
- const [parent, enableAnimations] = useAutoAnimate();
-
- const inputRef = useRef<HTMLInputElement>(null);
-
- const [contentForSpace, setContentForSpace] = useState<StoredContent[]>([]);
-
- const [lastUpdatedTitle, setLastUpdatedTitle] = useState<string | null>(null);
-
- const [title, setTitle] = useState<string>("");
- const debouncedTitle = useDebounce(title, 500);
-
- const [loading, setLoading] = useState(true);
-
- const [saveLoading, setSaveLoading] = useState(false);
-
- const [searchQuery, setSearcyQuery] = useState("");
- const [searchLoading, setSearchLoading] = useState(false);
- const query = useDebounce(searchQuery, 500);
-
- const [searchResults, setSearchResults] = useState<StoredContent[]>([]);
-
- const [addMemoryState, setAddMemoryState] = useState<
- "page" | "note" | "existing-memory" | "space" | null
- >(null);
- const [isDropdownOpen, setIsDropdownOpen] = useState(false);
-
- useEffect(() => {
- (async () => {
- const title = (await getSpace(spaceId))?.name ?? "";
- setTitle(title);
- setLastUpdatedTitle(title);
- setContentForSpace((await fetchContentForSpace(spaceId)) ?? []);
- setLoading(false);
- })();
- }, []);
-
- useEffect(() => {
- if (
- debouncedTitle.trim().length < 1 ||
- debouncedTitle.trim() === lastUpdatedTitle?.trim()
- )
- return;
- (async () => {
- setSaveLoading(true);
- await updateSpace(spaceId, debouncedTitle.trim());
- setLastUpdatedTitle(debouncedTitle);
- setSaveLoading(false);
- })();
- }, [debouncedTitle]);
-
- useEffect(() => {
- const q = query.trim();
- if (q.length < 1) {
- setSearchResults([]);
- return;
- }
-
- setSearchLoading(true);
-
- (async () => {
- setSearchResults(
- (
- await search(q, {
- filter: { spaces: false },
- memoriesRelativeToSpace: {
- fromSpaces: [spaceId],
- },
- })
- ).map((i) => i.memory!),
- );
- setSearchLoading(false);
- })();
- }, [query]);
-
- if (loading) {
- return (
- <div className="flex h-full w-full items-center justify-center">
- <Loader className="h-5 w-5 animate-spin" />
- </div>
- );
- }
-
- return (
- <div className="text-rgray-11 flex w-full flex-col items-start py-8 text-left">
- <div className="flex w-full items-center justify-start gap-2 px-8">
- <button
- onClick={back}
- className="focus-visible:ring-offset-rgray-3 focus-visible:ring-rgray-7 rounded-sm transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
- >
- <Undo2 className="h-5 w-5" />
- </button>
- <Input
- ref={inputRef}
- data-error="false"
- className="w-full border-none p-0 text-xl ring-0 placeholder:text-white/30 placeholder:transition placeholder:duration-500 focus-visible:ring-0 data-[error=true]:placeholder:text-red-400"
- placeholder="Title of the space"
- data-modal-autofocus
- value={title}
- onChange={(e) => setTitle(e.target.value)}
- />
- <button
- onClick={() => {
- inputRef.current?.focus();
- inputRef.current?.animate(
- {
- opacity: [1, 0.2, 1],
- },
- {
- duration: 100,
- },
- );
- }}
- className="focus-visible:ring-offset-rgray-3 focus-visible:ring-rgray-7 rounded-sm transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"
- >
- {saveLoading ? (
- <Loader className="h-5 w-5 animate-spin opacity-70" />
- ) : (
- <Edit3 className="h-5 w-5 opacity-70" />
- )}
- </button>
- </div>
- <div className="w-full px-8">
- <InputWithIcon
- placeholder="Search"
- icon={
- searchLoading ? (
- <Loader className="text-rgray-11 h-5 w-5 animate-spin opacity-50" />
- ) : (
- <Search className="text-rgray-11 h-5 w-5 opacity-50" />
- )
- }
- className="bg-rgray-4 mt-2 w-full"
- value={searchQuery}
- onChange={(e) => setSearcyQuery(e.target.value)}
- />
- </div>
- <div className="mt-2 w-full px-8">
- <AddMemoryModal
- onAdd={(data) => {
- if (!data) {
- setLoading(true);
- (async () => {
- const title = (await getSpace(spaceId))?.name ?? "";
- setTitle(title);
- setLastUpdatedTitle(title);
- setContentForSpace((await fetchContentForSpace(spaceId)) ?? []);
- setLoading(false);
- })();
- } else if (Object.hasOwn(data, "url")) {
- const _data = data as StoredContent;
- setContentForSpace((prev) => [...prev, _data]);
- }
- }}
- data={{ space: { title, id: spaceId }, notInSpaces: [spaceId] }}
- defaultSpaces={[spaceId]}
- type={addMemoryState}
- >
- <DropdownMenu open={isDropdownOpen} onOpenChange={setIsDropdownOpen}>
- <DropdownMenuTrigger asChild>
- <button className="focus-visible:bg-rgray-4 focus-visible:ring-rgray-7 hover:bg-rgray-4 ml-auto flex items-center justify-center rounded-md px-3 py-2 transition focus-visible:outline-none focus-visible:ring-2">
- <Plus className="mr-2 h-5 w-5" />
- Add
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent onCloseAutoFocus={(e) => e.preventDefault()}>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("existing-memory");
- }}
- >
- <Sparkles className="mr-2 h-4 w-4" />
- Existing Memory
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("page");
- }}
- >
- <StickyNote className="mr-2 h-4 w-4" />
- Page
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("note");
- }}
- >
- <Text className="mr-2 h-4 w-4" />
- Note
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </AddMemoryModal>
- </div>
- <div
- ref={parent}
- className="grid w-full grid-flow-row grid-cols-3 gap-1 px-2 py-5"
- >
- {query.trim().length > 0 ? (
- <>
- {searchResults.map((memory, i) => (
- <MemoryItem
- removeFromSpace={async () => {
- await updateMemory(memory.id, {
- removedFromSpaces: [spaceId],
- });
- setContentForSpace((prev) =>
- prev.filter((s) => s.id !== memory.id),
- );
- setSearchResults((prev) =>
- prev.filter((i) => i.id !== memory.id),
- );
- }}
- {...memory!}
- key={i}
- onDelete={() => {
- setContentForSpace((prev) =>
- prev.filter((s) => s.id !== memory.id),
- );
- setSearchResults((prev) =>
- prev.filter((i) => i.id !== memory.id),
- );
- }}
- />
- ))}
- </>
- ) : (
- contentForSpace.map((m) => (
- <MemoryItem
- key={m.id}
- {...m}
- onDelete={() =>
- setContentForSpace((prev) => prev.filter((s) => s.id !== m.id))
- }
- removeFromSpace={async () => {
- await updateMemory(m.id, {
- removedFromSpaces: [spaceId],
- });
- setContentForSpace((prev) => prev.filter((s) => s.id !== m.id));
- }}
- />
- ))
- )}
- </div>
- </div>
- );
-}
diff --git a/apps/web/src/components/Sidebar/FilterCombobox.tsx b/apps/web/src/components/Sidebar/FilterCombobox.tsx
deleted file mode 100644
index 634a09e3..00000000
--- a/apps/web/src/components/Sidebar/FilterCombobox.tsx
+++ /dev/null
@@ -1,303 +0,0 @@
-"use client";
-
-import * as React from "react";
-import { Check, ChevronsUpDown } from "lucide-react";
-
-import { cn } from "@/lib/utils";
-import { Button } from "@/components/ui/button";
-import {
- Command,
- CommandEmpty,
- CommandGroup,
- CommandInput,
- CommandItem,
- CommandList,
-} from "@/components/ui/command";
-import {
- Popover,
- PopoverContent,
- PopoverTrigger,
-} from "@/components/ui/popover";
-import { SpaceIcon } from "@/assets/Memories";
-import { AnimatePresence, LayoutGroup, motion } from "framer-motion";
-import { SearchResult, useMemory } from "@/contexts/MemoryContext";
-import { useDebounce } from "@/hooks/useDebounce";
-import { StoredContent } from "@/server/db/schema";
-
-export interface FilterSpacesProps
- extends React.ButtonHTMLAttributes<HTMLButtonElement> {
- side?: "top" | "bottom";
- align?: "end" | "start" | "center";
- onClose?: () => void;
- selectedSpaces: number[];
- setSelectedSpaces: (
- spaces: number[] | ((prev: number[]) => number[]),
- ) => void;
- name: string;
-}
-
-export function FilterSpaces({
- className,
- side = "bottom",
- align = "center",
- onClose,
- selectedSpaces,
- setSelectedSpaces,
- name,
- ...props
-}: FilterSpacesProps) {
- const { spaces } = useMemory();
- const [open, setOpen] = React.useState(false);
-
- const sortedSpaces = spaces.sort(({ id: a }, { id: b }) =>
- selectedSpaces.includes(a) && !selectedSpaces.includes(b)
- ? -1
- : selectedSpaces.includes(b) && !selectedSpaces.includes(a)
- ? 1
- : 0,
- );
-
- React.useEffect(() => {
- if (!open) {
- onClose?.();
- }
- }, [open]);
-
- return (
- <Popover open={open} onOpenChange={setOpen}>
- <PopoverTrigger asChild>
- <button
- type={undefined}
- data-state-on={open}
- className={cn(
- "focus-visible:ring-rgray-8 hover:bg-rgray-3 relative flex items-center justify-center gap-1 rounded-md px-3 py-1.5 ring-2 ring-transparent focus-visible:outline-none",
- className,
- )}
- {...props}
- >
- <SpaceIcon className="mr-1 h-5 w-5" />
- {name}
- <ChevronsUpDown className="h-4 w-4" />
- <div
- data-state-on={selectedSpaces.length > 0}
- className="on:flex text-rgray-11 border-rgray-6 bg-rgray-2 absolute left-0 top-0 hidden aspect-[1] h-4 w-4 -translate-x-1/3 -translate-y-1/3 items-center justify-center rounded-full border text-center text-[9px]"
- >
- {selectedSpaces.length}
- </div>
- </button>
- </PopoverTrigger>
- <PopoverContent
- align={align}
- side={side}
- className="w-[200px] p-0"
- onCloseAutoFocus={(e) => e.preventDefault()}
- >
- <Command
- filter={(val, search) =>
- spaces
- .find((s) => s.id.toString() === val)
- ?.name.toLowerCase()
- .includes(search.toLowerCase().trim())
- ? 1
- : 0
- }
- >
- <CommandInput placeholder="Filter spaces..." />
- <CommandList asChild>
- <motion.div layoutScroll>
- <CommandEmpty>Nothing found</CommandEmpty>
- <CommandGroup>
- {sortedSpaces.map((space) => (
- <CommandItem
- key={space.id}
- value={space.id.toString()}
- onSelect={(val) => {
- setSelectedSpaces((prev: number[]) =>
- prev.includes(parseInt(val))
- ? prev.filter((v) => v !== parseInt(val))
- : [...prev, parseInt(val)],
- );
- }}
- asChild
- >
- <motion.div
- initial={{ opacity: 0 }}
- animate={{ opacity: 1, transition: { delay: 0.05 } }}
- transition={{ duration: 0.15 }}
- layout
- layoutId={`space-combobox-${space.id}`}
- className="text-rgray-11"
- >
- <SpaceIcon className="mr-2 h-4 w-4" />
- {space.name.length > 10
- ? space.name.slice(0, 10) + "..."
- : space.name}
- {selectedSpaces.includes(space.id)}
- <Check
- data-state-on={selectedSpaces.includes(space.id)}
- className={cn(
- "on:opacity-100 ml-auto h-4 w-4 opacity-0",
- )}
- />
- </motion.div>
- </CommandItem>
- ))}
- </CommandGroup>
- </motion.div>
- </CommandList>
- </Command>
- </PopoverContent>
- </Popover>
- );
-}
-
-export type FilterMemoriesProps = {
- side?: "top" | "bottom";
- align?: "end" | "start" | "center";
- onClose?: () => void;
- selected: StoredContent[];
- setSelected: React.Dispatch<React.SetStateAction<StoredContent[]>>;
- fromSpaces?: number[];
- notInSpaces?: number[];
-} & React.ButtonHTMLAttributes<HTMLButtonElement>;
-
-export function FilterMemories({
- className,
- side = "bottom",
- align = "center",
- onClose,
- selected,
- setSelected,
- fromSpaces,
- notInSpaces,
- ...props
-}: FilterMemoriesProps) {
- const { search } = useMemory();
-
- const [open, setOpen] = React.useState(false);
- const [searchQuery, setSearchQuery] = React.useState("");
- const query = useDebounce(searchQuery, 500);
-
- const [searchResults, setSearchResults] = React.useState<SearchResult[]>([]);
- const [isSearching, setIsSearching] = React.useState(false);
-
- const results = React.useMemo(() => {
- return searchResults.map((r) => r.memory);
- }, [searchResults]);
-
- console.log("memoized", results);
-
- React.useEffect(() => {
- const q = query.trim();
- if (q.length > 0) {
- setIsSearching(true);
- (async () => {
- const results = await search(q, {
- filter: {
- memories: true,
- spaces: false,
- },
- memoriesRelativeToSpace: {
- fromSpaces,
- notInSpaces,
- },
- });
- setSearchResults(results);
- setIsSearching(false);
- })();
- } else {
- setSearchResults([]);
- }
- }, [query]);
-
- React.useEffect(() => {
- if (!open) {
- onClose?.();
- }
- }, [open]);
-
- console.log(searchResults);
- return (
- <AnimatePresence mode="popLayout">
- <LayoutGroup>
- <Popover open={open} onOpenChange={setOpen}>
- <PopoverTrigger asChild>
- <button
- type={undefined}
- data-state-on={open}
- className={cn(
- "text-rgray-11/70 on:bg-rgray-3 focus-visible:ring-rgray-8 hover:bg-rgray-3 relative flex items-center justify-center gap-1 rounded-md px-3 py-1.5 ring-2 ring-transparent focus-visible:outline-none",
- className,
- )}
- {...props}
- >
- {props.children}
- </button>
- </PopoverTrigger>
- <PopoverContent
- onCloseAutoFocus={(e) => e.preventDefault()}
- align={align}
- side={side}
- className="w-[200px] p-0"
- >
- <Command shouldFilter={false}>
- <CommandInput
- isSearching={isSearching}
- value={searchQuery}
- onValueChange={setSearchQuery}
- placeholder="Filter memories..."
- />
- <CommandList>
- <CommandGroup>
- <CommandEmpty className="text-rgray-11 py-5 text-center text-sm">
- {isSearching
- ? "Searching..."
- : query.trim().length > 0
- ? "Nothing Found"
- : "Search something"}
- </CommandEmpty>
- {results.map((m) => (
- <CommandItem
- key={m.id}
- value={m.id.toString()}
- onSelect={(val) => {
- setSelected((prev) =>
- prev.find((p) => p.id === parseInt(val))
- ? prev.filter((v) => v.id !== parseInt(val))
- : [...prev, m],
- );
- }}
- asChild
- >
- <div className="text-rgray-11">
- <img
- src={
- m.type === "note"
- ? "/note.svg"
- : m.image ?? "/icons/logo_without_bg.png"
- }
- className="mr-2 h-4 w-4"
- />
- {m.title && m.title?.length > 14
- ? m.title?.slice(0, 14) + "..."
- : m.title}
- <Check
- data-state-on={
- selected.find((i) => i.id === m.id) !== undefined
- }
- className={cn(
- "on:opacity-100 ml-auto h-4 w-4 opacity-0",
- )}
- />
- </div>
- </CommandItem>
- ))}
- </CommandGroup>
- </CommandList>
- </Command>
- </PopoverContent>
- </Popover>
- </LayoutGroup>
- </AnimatePresence>
- );
-}
diff --git a/apps/web/src/components/Sidebar/MemoriesBar.tsx b/apps/web/src/components/Sidebar/MemoriesBar.tsx
deleted file mode 100644
index a81d00c0..00000000
--- a/apps/web/src/components/Sidebar/MemoriesBar.tsx
+++ /dev/null
@@ -1,709 +0,0 @@
-import { Editor } from "novel";
-import { useAutoAnimate } from "@formkit/auto-animate/react";
-import {
- MemoryWithImage,
- MemoryWithImages3,
- MemoryWithImages2,
-} from "@/assets/MemoryWithImages";
-import { Input, InputWithIcon } from "../ui/input";
-import {
- ArrowUpRight,
- Edit3,
- Loader,
- Minus,
- MoreHorizontal,
- Plus,
- Search,
- Sparkles,
- Text,
- Trash2,
-} from "lucide-react";
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "../ui/dropdown-menu";
-import { useEffect, useMemo, useRef, useState } from "react";
-import { Variant, useAnimate, motion } from "framer-motion";
-import { SearchResult, useMemory } from "@/contexts/MemoryContext";
-import { SpaceIcon } from "@/assets/Memories";
-import { Dialog, DialogContent } from "../ui/dialog";
-import useViewport from "@/hooks/useViewport";
-import useTouchHold from "@/hooks/useTouchHold";
-import { DialogTrigger } from "@radix-ui/react-dialog";
-import {
- AddExistingMemoryToSpace,
- AddMemoryPage,
- NoteAddPage,
- SpaceAddPage,
-} from "./AddMemoryDialog";
-import { ExpandedSpace } from "./ExpandedSpace";
-import { StoredContent, StoredSpace } from "@/server/db/schema";
-import { useDebounce } from "@/hooks/useDebounce";
-import { NoteEdit } from "./EditNoteDialog";
-import DeleteConfirmation from "./DeleteConfirmation";
-
-export function MemoriesBar({ isOpen }: { isOpen: boolean }) {
- const [parent, enableAnimations] = useAutoAnimate();
- const { spaces, deleteSpace, freeMemories, search } = useMemory();
-
- const [isDropdownOpen, setIsDropdownOpen] = useState(false);
- const [addMemoryState, setAddMemoryState] = useState<
- "page" | "note" | "space" | "existing-memory" | null
- >(null);
-
- const [expandedSpace, setExpandedSpace] = useState<number | null>(null);
-
- const [searchQuery, setSearcyQuery] = useState("");
- const [searchLoading, setSearchLoading] = useState(false);
- const query = useDebounce(searchQuery, 500);
-
- const [searchResults, setSearchResults] = useState<SearchResult[]>([]);
-
- useEffect(() => {
- const q = query.trim();
- if (q.length < 1) {
- setSearchResults([]);
- return;
- }
-
- setSearchLoading(true);
-
- (async () => {
- setSearchResults(await search(q));
- setSearchLoading(false);
- })();
- }, [query]);
-
- useEffect(() => {
- if (!isOpen) {
- setExpandedSpace(null);
- }
- }, [isOpen]);
-
- if (expandedSpace) {
- return (
- <ExpandedSpace
- spaceId={expandedSpace}
- back={() => setExpandedSpace(null)}
- // close={() => setExpandedSpace(null)}
- />
- );
- }
-
- return (
- <div className="text-rgray-11 flex w-full flex-col items-start py-8 text-left">
- <div className="w-full px-8">
- <h1 className="w-full text-2xl">Your Memories</h1>
- <InputWithIcon
- placeholder="Search"
- icon={
- searchLoading ? (
- <Loader className="text-rgray-11 h-5 w-5 animate-spin opacity-50" />
- ) : (
- <Search className="text-rgray-11 h-5 w-5 opacity-50" />
- )
- }
- className="bg-rgray-4 mt-2 w-full"
- value={searchQuery}
- onChange={(e) => setSearcyQuery(e.target.value)}
- />
- </div>
- <div className="mt-2 flex w-full px-8">
- <AddMemoryModal type={addMemoryState}>
- <DropdownMenu open={isDropdownOpen} onOpenChange={setIsDropdownOpen}>
- <DropdownMenuTrigger asChild>
- <button className="focus-visible:bg-rgray-4 focus-visible:ring-rgray-7 hover:bg-rgray-4 ml-auto flex items-center justify-center rounded-md px-3 py-2 transition focus-visible:outline-none focus-visible:ring-2">
- <Plus className="mr-2 h-5 w-5" />
- Add
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent onCloseAutoFocus={(e) => e.preventDefault()}>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("page");
- }}
- >
- <Sparkles className="mr-2 h-4 w-4" />
- Page to Memory
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("note");
- }}
- >
- <Text className="mr-2 h-4 w-4" />
- Note
- </DropdownMenuItem>
- </DialogTrigger>
- <DialogTrigger className="block w-full">
- <DropdownMenuItem
- onClick={() => {
- setAddMemoryState("space");
- }}
- >
- <SpaceIcon className="mr-2 h-4 w-4" />
- Space
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </AddMemoryModal>
- </div>
- <div
- ref={parent}
- className="grid w-full grid-flow-row grid-cols-3 gap-1 px-2 py-5"
- >
- {query.trim().length > 0 ? (
- <>
- {searchResults.map(({ type, space, memory }, i) => (
- <>
- {type === "memory" && (
- <MemoryItem
- {...memory!}
- key={i}
- onDelete={() => {
- setSearchResults((prev) =>
- prev.filter((i) => i.memory?.id !== memory.id),
- );
- }}
- />
- )}
- {type === "space" && (
- <SpaceItem
- {...space!}
- key={i}
- onDelete={() => {
- setSearchResults((prev) =>
- prev.filter((i) => i.space?.id !== space.id),
- );
- deleteSpace(space.id);
- }}
- />
- )}
- </>
- ))}
- </>
- ) : (
- <>
- {spaces.map((space) => (
- <SpaceItem
- onDelete={() => deleteSpace(space.id)}
- key={space.id}
- onClick={() => setExpandedSpace(space.id)}
- {...space}
- />
- ))}
- {freeMemories.map((m) => (
- <MemoryItem {...m} key={m.id} />
- ))}
- </>
- )}
- </div>
- </div>
- );
-}
-
-const SpaceExitVariant: Variant = {
- opacity: 0,
- scale: 0,
- borderRadius: "50%",
- background: "var(--gray-1)",
- transition: {
- duration: 0.2,
- },
-};
-
-export function MemoryItem(
- props: StoredContent & {
- onDelete?: () => void;
- removeFromSpace?: () => Promise<void>;
- },
-) {
- const { id, title, image, type, url, onDelete, removeFromSpace } = props;
-
- const { deleteMemory } = useMemory();
-
- const name = title
- ? title.length > 10
- ? title.slice(0, 10) + "..."
- : title
- : "<no title>";
-
- const [isDialogOpen, setIsDialogOpen] = useState(false);
-
- const [moreDropdownOpen, setMoreDropdownOpen] = useState(false);
-
- const touchEventProps = useTouchHold({
- onHold() {
- setMoreDropdownOpen(true);
- },
- });
- return (
- <Dialog
- open={type === "note" ? isDialogOpen : false}
- onOpenChange={setIsDialogOpen}
- >
- <div
- {...touchEventProps}
- className="hover:bg-rgray-2 has-[[data-state='true']]:bg-rgray-2 has-[[data-space-text]:focus-visible]:bg-rgray-2 has-[[data-space-text]:focus-visible]:ring-rgray-7 [&:has-[[data-space-text]:focus-visible]>[data-more-button]]:opacity-100 relative flex cursor-pointer select-none flex-col-reverse items-center justify-center rounded-md p-2 pb-4 text-center font-normal ring-transparent transition has-[[data-space-text]:focus-visible]:outline-none has-[[data-space-text]:focus-visible]:ring-2 md:has-[[data-state='true']]:bg-transparent [&:hover>[data-more-button]]:opacity-100"
- >
- {type === "note" ? (
- <DialogTrigger asChild>
- <button data-space-text className="focus-visible:outline-none">
- {name}
- </button>
- </DialogTrigger>
- ) : (
- <button
- onClick={() => window.open(url)}
- data-space-text
- className="focus-visible:outline-none"
- >
- {name}
- </button>
- )}
-
- {type === "page" ? (
- <PageMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- removeFromSpace={removeFromSpace}
- onDelete={() => {
- deleteMemory(id);
- onDelete?.();
- }}
- url={url}
- />
- ) : type === "note" ? (
- <NoteMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- removeFromSpace={removeFromSpace}
- onEdit={() => setIsDialogOpen(true)}
- onDelete={() => {
- deleteMemory(id);
- onDelete?.();
- }}
- />
- ) : null}
-
- <div className="flex h-24 w-24 items-center justify-center">
- {type === "page" ? (
- <img
- onClick={() => window.open(url)}
- className="h-16 w-16"
- id={id.toString()}
- src={image!}
- onError={(e) => {
- (e.target as HTMLImageElement).src =
- "/icons/white_without_bg.png";
- }}
- />
- ) : type === "note" ? (
- <Text onClick={() => setIsDialogOpen(true)} className="h-16 w-16" />
- ) : (
- <></>
- )}
- </div>
- </div>
- <DialogContent className="w-max max-w-[auto]">
- <NoteEdit
- onDelete={onDelete}
- closeDialog={() => setIsDialogOpen(false)}
- memory={props}
- />
- </DialogContent>
- </Dialog>
- );
-}
-
-export function SpaceItem({
- name,
- id,
- onDelete,
- onClick,
-}: StoredSpace & { onDelete: () => void; onClick?: () => void }) {
- const { cachedMemories } = useMemory();
-
- const [itemRef, animateItem] = useAnimate();
- const { width } = useViewport();
-
- const [moreDropdownOpen, setMoreDropdownOpen] = useState(false);
-
- const touchEventProps = useTouchHold({
- onHold() {
- setMoreDropdownOpen(true);
- },
- });
-
- const spaceMemories = useMemo(() => {
- return cachedMemories.filter((m) => m.space === id);
- }, [cachedMemories]);
-
- const _name = name.length > 10 ? name.slice(0, 10) + "..." : name;
-
- return (
- <motion.div
- ref={itemRef}
- {...touchEventProps}
- className="hover:bg-rgray-2 has-[[data-state='true']]:bg-rgray-2 has-[[data-space-text]:focus-visible]:bg-rgray-2 has-[[data-space-text]:focus-visible]:ring-rgray-7 [&:has-[[data-space-text]:focus-visible]>[data-more-button]]:opacity-100 relative flex select-none flex-col-reverse items-center justify-center rounded-md p-2 pb-4 text-center font-normal ring-transparent transition has-[[data-space-text]:focus-visible]:outline-none has-[[data-space-text]:focus-visible]:ring-2 md:has-[[data-state='true']]:bg-transparent [&:hover>[data-more-button]]:opacity-100"
- >
- <button
- onClick={onClick}
- data-space-text
- className="focus-visible:outline-none"
- >
- {_name}
- </button>
- <SpaceMoreButton
- isOpen={moreDropdownOpen}
- setIsOpen={setMoreDropdownOpen}
- onEdit={onClick}
- onDelete={() => {
- onDelete();
- return;
- if (!itemRef.current || width < 768) {
- onDelete();
- return;
- }
- // const trash = document.querySelector("#trash")! as HTMLDivElement;
- // const trashBin = document.querySelector("#trash-button")!;
- // const trashRect = trashBin.getBoundingClientRect();
- // const scopeRect = itemRef.current.getBoundingClientRect();
- // const el = document.createElement("div");
- // el.style.position = "fixed";
- // el.style.top = "0";
- // el.style.left = "0";
- // el.style.width = "15px";
- // el.style.height = "15px";
- // el.style.backgroundColor = "var(--gray-7)";
- // el.style.zIndex = "60";
- // el.style.borderRadius = "50%";
- // el.style.transform = "scale(5)";
- // el.style.opacity = "0";
- // trash.dataset["open"] = "true";
- // const initial = {
- // x: scopeRect.left + scopeRect.width / 2,
- // y: scopeRect.top + scopeRect.height / 2,
- // };
- // const delta = {
- // x:
- // trashRect.left +
- // trashRect.width / 2 -
- // scopeRect.left +
- // scopeRect.width / 2,
- // y:
- // trashRect.top +
- // trashRect.height / 4 -
- // scopeRect.top +
- // scopeRect.height / 2,
- // };
- // const end = {
- // x: trashRect.left + trashRect.width / 2,
- // y: trashRect.top + trashRect.height / 4,
- // };
- // el.style.offsetPath = `path('M ${initial.x} ${initial.y} Q ${delta.x * 0.01} ${delta.y * 0.01} ${end.x} ${end.y}`;
- // animateItem(itemRef.current, SpaceExitVariant, {
- // duration: 0.2,
- // }).then(() => {
- // itemRef.current.style.scale = "0";
- // onDelete();
- // });
- // document.body.appendChild(el);
- // el.animate(
- // {
- // transform: ["scale(5)", "scale(1)"],
- // opacity: [0, 0.3, 1],
- // },
- // {
- // duration: 200,
- // easing: "cubic-bezier(0.64, 0.57, 0.67, 1.53)",
- // fill: "forwards",
- // },
- // );
- // el.animate(
- // {
- // offsetDistance: ["0%", "100%"],
- // },
- // {
- // duration: 2000,
- // easing: "cubic-bezier(0.64, 0.57, 0.67, 1.53)",
- // fill: "forwards",
- // delay: 200,
- // },
- // ).onfinish = () => {
- // el.animate(
- // { transform: "scale(0)", opacity: 0 },
- // { duration: 200, fill: "forwards" },
- // ).onfinish = () => {
- // el.remove();
- // };
- // };
- }}
- />
- {spaceMemories.length > 2 ? (
- <MemoryWithImages3
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- images={
- spaceMemories
- .map((c) => (c.type === "note" ? "/note.svg" : c.image))
- .reverse() as string[]
- }
- />
- ) : spaceMemories.length > 1 ? (
- <MemoryWithImages2
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- images={
- spaceMemories
- .map((c) => (c.type === "note" ? "/note.svg" : c.image))
- .reverse() as string[]
- }
- />
- ) : spaceMemories.length === 1 ? (
- <MemoryWithImage
- onClick={onClick}
- className="h-24 w-24"
- id={id.toString()}
- image={
- spaceMemories[0].type === "note"
- ? "/note.svg"
- : spaceMemories[0].image!
- }
- />
- ) : (
- <div
- onClick={onClick}
- className="bg-rgray-4 shadow- h-24 w-24 scale-50 rounded-full opacity-30"
- ></div>
- )}
- </motion.div>
- );
-}
-
-export function SpaceMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- onEdit,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- onEdit?: () => void;
- setIsOpen?: (open: boolean) => void;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="hover:bg-rgray-3 focus-visible:bg-rgray-3 focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="text-rgray-11 h-5 w-5" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={onEdit}>
- <Edit3 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Edit
- </DropdownMenuItem>
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function PageMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- url,
- removeFromSpace,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- url: string;
- setIsOpen?: (open: boolean) => void;
- removeFromSpace?: () => Promise<void>;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="hover:bg-rgray-3 focus-visible:bg-rgray-3 focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="text-rgray-11 h-5 w-5" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={() => window.open(url)}>
- <ArrowUpRight
- className="mr-2 h-4 w-4 scale-125"
- strokeWidth={1.5}
- />
- Open
- </DropdownMenuItem>
- {removeFromSpace && (
- <DropdownMenuItem onClick={removeFromSpace}>
- <Minus className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Remove from space
- </DropdownMenuItem>
- )}
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function NoteMoreButton({
- onDelete,
- isOpen,
- setIsOpen,
- onEdit,
- removeFromSpace,
-}: {
- onDelete?: () => void;
- isOpen?: boolean;
- onEdit?: () => void;
- setIsOpen?: (open: boolean) => void;
- removeFromSpace?: () => Promise<void>;
-}) {
- return (
- <DeleteConfirmation onDelete={onDelete} trigger={false}>
- <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
- <DropdownMenuTrigger asChild>
- <button
- data-more-button
- className="hover:bg-rgray-3 focus-visible:bg-rgray-3 focus-visible:ring-rgray-7 absolute right-2 top-2 scale-0 rounded-md p-1 opacity-0 ring-transparent transition focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 md:block md:scale-100 md:bg-transparent"
- >
- <MoreHorizontal className="text-rgray-11 h-5 w-5" />
- </button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="start">
- <DropdownMenuItem onClick={onEdit}>
- <Edit3 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Edit
- </DropdownMenuItem>
- {removeFromSpace && (
- <DropdownMenuItem onClick={removeFromSpace}>
- <Minus className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Remove from space
- </DropdownMenuItem>
- )}
- <DialogTrigger asChild>
- <DropdownMenuItem className="focus:bg-red-100 focus:text-red-400">
- <Trash2 className="mr-2 h-4 w-4" strokeWidth={1.5} />
- Delete
- </DropdownMenuItem>
- </DialogTrigger>
- </DropdownMenuContent>
- </DropdownMenu>
- </DeleteConfirmation>
- );
-}
-
-export function AddMemoryModal({
- type,
- children,
- defaultSpaces,
- onAdd,
- data,
-}: {
- type: "page" | "note" | "space" | "existing-memory" | null;
- children?: React.ReactNode | React.ReactNode[];
- defaultSpaces?: number[];
- data?: {
- space?: {
- title: string;
- id: number;
- };
- fromSpaces?: number[];
- notInSpaces?: number[];
- };
- onAdd?: (data?: StoredSpace | StoredContent | StoredContent[]) => void;
-}) {
- const [isDialogOpen, setIsDialogOpen] = useState(false);
-
- return (
- <Dialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
- {children}
- <DialogContent
- onOpenAutoFocus={(e) => {
- e.preventDefault();
- const novel = document.querySelector('[contenteditable="true"]') as
- | HTMLDivElement
- | undefined;
- if (novel) {
- novel.autofocus = false;
- novel.onfocus = () => {
- (
- document.querySelector("[data-modal-autofocus]") as
- | HTMLInputElement
- | undefined
- )?.focus();
- novel.onfocus = null;
- };
- }
- (
- document.querySelector("[data-modal-autofocus]") as
- | HTMLInputElement
- | undefined
- )?.focus();
- }}
- className="w-max max-w-[auto]"
- >
- {type === "page" ? (
- <AddMemoryPage
- onAdd={onAdd}
- defaultSpaces={defaultSpaces}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "note" ? (
- <NoteAddPage
- onAdd={onAdd}
- defaultSpaces={defaultSpaces}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "space" ? (
- <SpaceAddPage
- onAdd={onAdd}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : type === "existing-memory" ? (
- <AddExistingMemoryToSpace
- onAdd={onAdd}
- fromSpaces={data?.fromSpaces}
- notInSpaces={data?.notInSpaces}
- space={data!.space!}
- closeDialog={() => setIsDialogOpen(false)}
- />
- ) : (
- <></>
- )}
- </DialogContent>
- </Dialog>
- );
-}
diff --git a/apps/web/src/components/Sidebar/SettingsTab.tsx b/apps/web/src/components/Sidebar/SettingsTab.tsx
deleted file mode 100644
index 31b8380d..00000000
--- a/apps/web/src/components/Sidebar/SettingsTab.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Box, LogOut } from "lucide-react";
-import { signOut, useSession } from "next-auth/react";
-import { useEffect, useState } from "react";
-
-export function SettingsTab({ open }: { open: boolean }) {
- const { data: session } = useSession();
-
- const [tweetStat, setTweetStat] = useState<[number, number] | null>();
- const [memoryStat, setMemoryStat] = useState<[number, number] | null>();
-
- const [loading, setLoading] = useState(true);
-
- useEffect(() => {
- fetch("/api/getCount").then(async (resp) => {
- const data = (await resp.json()) as any;
- setTweetStat([data.tweetsCount, data.tweetsLimit]);
- setMemoryStat([data.pageCount, data.pageLimit]);
- setLoading(false);
- });
- }, [open]);
-
- return (
- <div className="flex h-full w-full flex-col items-start py-3 text-left font-normal text-black md:py-8">
- <div className="w-full px-6">
- <h1 className="w-full text-2xl font-medium">Settings</h1>
- <div className="mt-5 grid w-full grid-cols-3 gap-1">
- <img
- className="rounded-full"
- src={session?.user?.image ?? "/icons/white_without_bg.png"}
- onError={(e) => {
- (e.target as HTMLImageElement).src =
- "/icons/white_without_bg.png";
- }}
- />
- <div className="col-span-2 flex flex-col items-start justify-center">
- <h1 className="text-xl font-medium">{session?.user?.name}</h1>
- <span>{session?.user?.email}</span>
- <button
- onClick={() => signOut()}
- className="bg-rgray-4 hover:bg-rgray-5 focus-visible:bg-rgray-5 focus-visible:ring-rgray-7 relative mt-auto flex items-center justify-center gap-2 rounded-md px-4 py-2 text-white ring-transparent transition focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-70"
- >
- <LogOut className="h-4 w-4" />
- Logout
- </button>
- </div>
- </div>
- </div>
- <div className="border-rgray-5 mt-auto w-full px-8 pt-8">
- <h1 className="flex w-full items-center gap-2 text-xl">
- <Box className="h-6 w-6" />
- Storage
- </h1>
- {loading ? (
- <div className="my-5 flex w-full flex-col items-center justify-center gap-5">
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- <div className="bg-rgray-5 h-6 w-full animate-pulse rounded-md text-lg"></div>
- </div>
- ) : (
- <>
- <div className="my-5">
- <h2 className="text-md flex w-full items-center justify-between">
- Memories
- <div className="bg-rgray-4 flex rounded-md px-2 py-2 text-xs text-white/70">
- {memoryStat?.join("/")}
- </div>
- </h2>
- <div className="mt-2 h-5 w-full overflow-hidden rounded-full bg-stone-400">
- <div
- style={{
- width: `${((memoryStat?.[0] ?? 0) / (memoryStat?.[1] ?? 100)) * 100}%`,
- minWidth: memoryStat?.[0] ?? 0 > 0 ? "5%" : "0%",
- }}
- className="bg-rgray-5 h-full rounded-full"
- />
- </div>
- </div>
- <div className="my-5">
- <h2 className="text-md flex w-full items-center justify-between">
- Tweets
- <div className="bg-rgray-4 flex rounded-md px-2 py-2 text-xs text-white/70">
- {tweetStat?.join("/")}
- </div>
- </h2>
- <div className="mt-2 h-5 w-full overflow-hidden rounded-full bg-stone-400">
- <div
- style={{
- width: `${((tweetStat?.[0] ?? 0) / (tweetStat?.[1] ?? 100)) * 100}%`,
- minWidth: tweetStat?.[0] ?? 0 > 0 ? "5%" : "0%",
- }}
- className="h-full rounded-full bg-white"
- />
- </div>
- </div>
- </>
- )}
- </div>
- </div>
- );
-}
diff --git a/apps/web/src/components/Sidebar/index.tsx b/apps/web/src/components/Sidebar/index.tsx
deleted file mode 100644
index ae757afe..00000000
--- a/apps/web/src/components/Sidebar/index.tsx
+++ /dev/null
@@ -1,172 +0,0 @@
-"use client";
-import { MemoryIcon } from "../../assets/Memories";
-import React, { useEffect, useState } from "react";
-import { AnimatePresence, motion } from "framer-motion";
-import { signOut, useSession } from "next-auth/react";
-import MessagePoster from "@/app/MessagePoster";
-import Link from "next/link";
-import { SettingsTab } from "./SettingsTab";
-import { Avatar, AvatarImage } from "@radix-ui/react-avatar";
-import { AvatarFallback } from "../ui/avatar";
-
-export type MenuItem = {
- icon: React.ReactNode | React.ReactNode[];
- label: string;
- content?: React.ReactNode;
- labelDisplay?: React.ReactNode;
-};
-
-export default function Sidebar({
- selectChange,
- jwt,
-}: {
- selectChange?: (selectedItem: string | null) => void;
- jwt: string;
-}) {
- const { data: session } = useSession();
-
- const [selectedItem, setSelectedItem] = useState<string | null>(null);
-
- const menuItemsTop: Array<MenuItem> = [];
-
- const menuItemsBottom: Array<MenuItem> = [
- {
- label: "Settings",
- content: <SettingsTab open={selectedItem !== null} />,
- icon: <></>,
- },
- ];
-
- const menuItems = [...menuItemsTop, ...menuItemsBottom];
-
- const Subbar = menuItems.find((i) => i.label === selectedItem)?.content ?? (
- <></>
- );
-
- useEffect(() => {
- void selectChange?.(selectedItem);
- }, [selectedItem]);
-
- return (
- <div className="relative hidden h-screen max-h-screen w-max flex-col items-center text-sm font-light md:flex">
- <div
- className={`relative z-[50] flex h-full w-full flex-col items-center justify-center border-r bg-stone-100 px-2 py-5 `}
- >
- <Link
- data-state-on={selectedItem === "Memories"}
- href="/"
- onClick={() => setSelectedItem(null)}
- className="focus-visible:ring-rgray-7 relative z-[100] flex w-full flex-col items-center justify-center rounded-md px-3 py-3 opacity-80 ring-2 ring-transparent transition hover:bg-stone-300 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none"
- >
- <MemoryIcon className="h-12 w-12" />
- <span className="text-black">Memories</span>
- </Link>
-
- <div className="mt-auto" />
-
- <MenuItem
- item={{
- label: "Settings",
- icon: (
- <svg
- xmlns="http://www.w3.org/2000/svg"
- fill="white"
- viewBox="0 0 24 24"
- strokeWidth={0.5}
- stroke="black"
- className="h-10 w-10"
- >
- <path
- strokeLinecap="round"
- strokeLinejoin="round"
- d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"
- />
- <path
- strokeLinecap="round"
- strokeLinejoin="round"
- d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
- />
- </svg>
- ),
- content: <SettingsTab open={selectedItem !== null} />,
- }}
- selectedItem={selectedItem}
- setSelectedItem={setSelectedItem}
- />
- {/* <MessagePoster jwt={jwt} /> */}
- <div className="mt-4 flex cursor-pointer flex-col items-center justify-center gap-2 rounded-b-md border-t border-stone-600 px-2 py-3 pt-4 text-black hover:bg-stone-300 hover:opacity-100">
- <Avatar>
- <AvatarImage
- className="h-10 w-10 rounded-full"
- src={session?.user?.image!}
- alt="Profile picture"
- />
- <AvatarFallback>
- {session?.user?.name?.split(" ").map((n) => n[0])}{" "}
- </AvatarFallback>
- </Avatar>
- <span>{session?.user?.name?.split(" ")[0]}</span>
- </div>
- </div>
- <AnimatePresence>
- {selectedItem && <SubSidebar>{Subbar}</SubSidebar>}
- </AnimatePresence>
- </div>
- );
-}
-
-const MenuItem = ({
- item: { icon, label, labelDisplay },
- selectedItem,
- setSelectedItem,
- ...props
-}: {
- item: MenuItem;
- selectedItem: string | null;
- setSelectedItem: React.Dispatch<React.SetStateAction<string | null>>;
-}) => {
- const handleClick = () =>
- setSelectedItem((prev) => (prev === label ? null : label));
-
- return (
- <button
- data-state-on={selectedItem === label}
- onClick={handleClick}
- className="on:opacity-100 on:bg-stone-300 focus-visible:ring-rgray-7 relative z-[100] flex w-full flex-col items-center justify-center rounded-md px-3 py-3 text-black opacity-80 ring-2 ring-transparent transition hover:bg-stone-300 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-none"
- {...props}
- >
- {icon}
- <span className="">{labelDisplay ?? label}</span>
- </button>
- );
-};
-
-export function SubSidebar({ children }: { children?: React.ReactNode }) {
- return (
- <motion.div
- initial={{ opacity: 0, x: "-100%" }}
- animate={{ opacity: 1, x: 0 }}
- exit={{
- opacity: 0,
- x: "-100%",
- transition: { delay: 0.2 },
- }}
- transition={{
- duration: 0.2,
- }}
- className="absolute left-[100%] top-0 z-[10] hidden h-screen w-[30vw] items-start justify-center overflow-x-hidden border-r bg-stone-100 font-light md:flex"
- >
- <motion.div
- initial={{ opacity: 0 }}
- animate={{ opacity: 1 }}
- exit={{ opacity: 0, transition: { delay: 0 } }}
- transition={{
- delay: 0.2,
- }}
- className="z-[10] flex h-full w-full min-w-full flex-col items-center opacity-0"
- >
- <AnimatePresence>{children}</AnimatePresence>
- </motion.div>
- </motion.div>
- );
-}
diff --git a/apps/web/src/components/WordMark.tsx b/apps/web/src/components/WordMark.tsx
deleted file mode 100644
index eb55647c..00000000
--- a/apps/web/src/components/WordMark.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { cn } from "@/lib/utils";
-import React from "react";
-
-function WordMark({ className }: { className?: string }) {
- return (
- <span className={cn(`text-xl font-bold tracking-tight ${className}`)}>
- smort.
- </span>
- );
-}
-
-export default WordMark;
diff --git a/apps/web/src/components/dev/SessionProviderWrapper.tsx b/apps/web/src/components/dev/SessionProviderWrapper.tsx
deleted file mode 100644
index 71f77886..00000000
--- a/apps/web/src/components/dev/SessionProviderWrapper.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { SessionProvider } from "next-auth/react";
-import React from "react";
-
-function SessionProviderWrapper({ children }: { children: React.ReactNode }) {
- if (typeof window === "undefined") {
- return <>{children}</>;
- } else {
- return <SessionProvider>{children}</SessionProvider>;
- }
-}
-
-export default SessionProviderWrapper;
diff --git a/apps/web/src/components/dev/tailwindindicator.tsx b/apps/web/src/components/dev/tailwindindicator.tsx
deleted file mode 100644
index fd70276d..00000000
--- a/apps/web/src/components/dev/tailwindindicator.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-export function TailwindIndicator() {
- if (process.env.NODE_ENV === "production") return null;
-
- return (
- <div>
- <div className="fixed bottom-1 left-1 z-[999] flex size-6 items-center justify-center rounded-full border-2 bg-white p-3 font-mono text-xs text-black">
- <div className="block sm:hidden">xs</div>
- <div className="hidden sm:block md:hidden">sm</div>
- <div className="hidden md:block lg:hidden">md</div>
- <div className="hidden lg:block xl:hidden">lg</div>
- <div className="hidden xl:block 2xl:hidden">xl</div>
- <div className="hidden 2xl:block">2xl</div>
- </div>
- </div>
- );
-}
diff --git a/apps/web/src/components/ui/avatar.tsx b/apps/web/src/components/ui/avatar.tsx
deleted file mode 100644
index b36abf28..00000000
--- a/apps/web/src/components/ui/avatar.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as AvatarPrimitive from "@radix-ui/react-avatar";
-
-import { cn } from "@/lib/utils";
-
-const Avatar = React.forwardRef<
- React.ElementRef<typeof AvatarPrimitive.Root>,
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>
->(({ className, ...props }, ref) => (
- <AvatarPrimitive.Root
- ref={ref}
- className={cn(
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
- className,
- )}
- {...props}
- />
-));
-Avatar.displayName = AvatarPrimitive.Root.displayName;
-
-const AvatarImage = React.forwardRef<
- React.ElementRef<typeof AvatarPrimitive.Image>,
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>
->(({ className, ...props }, ref) => (
- <AvatarPrimitive.Image
- ref={ref}
- className={cn("aspect-square h-full w-full", className)}
- {...props}
- />
-));
-AvatarImage.displayName = AvatarPrimitive.Image.displayName;
-
-const AvatarFallback = React.forwardRef<
- React.ElementRef<typeof AvatarPrimitive.Fallback>,
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>
->(({ className, ...props }, ref) => (
- <AvatarPrimitive.Fallback
- ref={ref}
- className={cn(
- "flex h-full w-full items-center justify-center rounded-full bg-gray-100",
- className,
- )}
- {...props}
- />
-));
-AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
-
-export { Avatar, AvatarImage, AvatarFallback };
diff --git a/apps/web/src/components/ui/badge.tsx b/apps/web/src/components/ui/badge.tsx
deleted file mode 100644
index fa390bec..00000000
--- a/apps/web/src/components/ui/badge.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from "react";
-import { cva, type VariantProps } from "class-variance-authority";
-
-import { cn } from "@/lib/utils";
-
-const badgeVariants = cva(
- "inline-flex items-center rounded-full border border-gray-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2",
- {
- variants: {
- variant: {
- default:
- "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
- secondary:
- "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
- destructive:
- "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
- outline: "text-foreground",
- },
- },
- defaultVariants: {
- variant: "default",
- },
- },
-);
-
-export interface BadgeProps
- extends React.HTMLAttributes<HTMLDivElement>,
- VariantProps<typeof badgeVariants> {}
-
-function Badge({ className, variant, ...props }: BadgeProps) {
- return (
- <div className={cn(badgeVariants({ variant }), className)} {...props} />
- );
-}
-
-export { Badge, badgeVariants };
diff --git a/apps/web/src/components/ui/button.tsx b/apps/web/src/components/ui/button.tsx
deleted file mode 100644
index 24fa903e..00000000
--- a/apps/web/src/components/ui/button.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import * as React from "react";
-import { Slot } from "@radix-ui/react-slot";
-import { cva, type VariantProps } from "class-variance-authority";
-
-import { cn } from "@/lib/utils";
-
-const buttonVariants = cva(
- "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300",
- {
- variants: {
- variant: {
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
- destructive:
- "bg-destructive text-destructive-foreground hover:bg-destructive/90",
- outline:
- "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
- secondary:
- "bg-secondary text-secondary-foreground hover:bg-secondary/80",
- ghost: "hover:bg-accent hover:text-accent-foreground",
- link: "text-primary underline-offset-4 hover:underline",
- },
- size: {
- default: "h-10 px-4 py-2",
- sm: "h-9 rounded-md px-3",
- lg: "h-11 rounded-md px-8",
- icon: "h-10 w-10",
- },
- },
- defaultVariants: {
- variant: "default",
- size: "default",
- },
- },
-);
-
-export interface ButtonProps
- extends React.ButtonHTMLAttributes<HTMLButtonElement>,
- VariantProps<typeof buttonVariants> {
- asChild?: boolean;
-}
-
-const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
- ({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : "button";
- return (
- <button
- className={cn(buttonVariants({ variant, size, className }))}
- ref={ref}
- {...props}
- />
- );
- },
-);
-Button.displayName = "Button";
-
-export { Button, buttonVariants };
diff --git a/apps/web/src/components/ui/card.tsx b/apps/web/src/components/ui/card.tsx
deleted file mode 100644
index e98d500c..00000000
--- a/apps/web/src/components/ui/card.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import * as React from "react";
-
-import { cn } from "@/lib/utils";
-
-const Card = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes<HTMLDivElement>
->(({ className, ...props }, ref) => (
- <div
- ref={ref}
- className={cn(
- "rounded-lg border border-gray-200 bg-white text-gray-950 shadow-sm dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50",
- className,
- )}
- {...props}
- />
-));
-Card.displayName = "Card";
-
-const CardHeader = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes<HTMLDivElement>
->(({ className, ...props }, ref) => (
- <div
- ref={ref}
- className={cn("flex flex-col space-y-1.5 p-6", className)}
- {...props}
- />
-));
-CardHeader.displayName = "CardHeader";
-
-const CardTitle = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes<HTMLHeadingElement>
->(({ className, ...props }, ref) => (
- <h3
- ref={ref}
- className={cn(
- "text-2xl font-semibold leading-none tracking-tight",
- className,
- )}
- {...props}
- />
-));
-CardTitle.displayName = "CardTitle";
-
-const CardDescription = React.forwardRef<
- HTMLParagraphElement,
- React.HTMLAttributes<HTMLParagraphElement>
->(({ className, ...props }, ref) => (
- <p
- ref={ref}
- className={cn("text-sm text-gray-500 dark:text-gray-400", className)}
- {...props}
- />
-));
-CardDescription.displayName = "CardDescription";
-
-const CardContent = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes<HTMLDivElement>
->(({ className, ...props }, ref) => (
- <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
-));
-CardContent.displayName = "CardContent";
-
-const CardFooter = React.forwardRef<
- HTMLDivElement,
- React.HTMLAttributes<HTMLDivElement>
->(({ className, ...props }, ref) => (
- <div
- ref={ref}
- className={cn("flex items-center p-6 pt-0", className)}
- {...props}
- />
-));
-CardFooter.displayName = "CardFooter";
-
-export {
- Card,
- CardHeader,
- CardFooter,
- CardTitle,
- CardDescription,
- CardContent,
-};
diff --git a/apps/web/src/components/ui/command.tsx b/apps/web/src/components/ui/command.tsx
deleted file mode 100644
index afc2cf46..00000000
--- a/apps/web/src/components/ui/command.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-"use client";
-
-import * as React from "react";
-import { type DialogProps } from "@radix-ui/react-dialog";
-import { Command as CommandPrimitive } from "cmdk";
-import { Loader, Search } from "lucide-react";
-
-import { cn } from "@/lib/utils";
-import { Dialog, DialogContent } from "@/components/ui/dialog";
-
-const Command = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive>
->(({ className, ...props }, ref) => (
- <CommandPrimitive
- ref={ref}
- className={cn(
- "bg-rgray-3 text-rgray-11 flex h-full w-full flex-col overflow-hidden rounded-md focus-visible:outline-none [&>[cmdk-list-sizer]]:max-h-[250px] [&>[cmdk-list-sizer]]:overflow-y-scroll",
- className,
- )}
- {...props}
- />
-));
-Command.displayName = CommandPrimitive.displayName;
-
-interface CommandDialogProps extends DialogProps {}
-
-const CommandDialog = ({ children, ...props }: CommandDialogProps) => {
- return (
- <Dialog {...props}>
- <DialogContent className="overflow-hidden p-0 shadow-lg">
- <Command className="[&_[cmdk-group-heading]]:text-rgray-11 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
- {children}
- </Command>
- </DialogContent>
- </Dialog>
- );
-};
-
-const CommandInput = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.Input>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {
- isSearching?: boolean;
- }
->(({ className, isSearching = false, ...props }, ref) => (
- <div
- className="border-rgray-6 flex items-center border-b px-3"
- cmdk-input-wrapper=""
- >
- {isSearching ? (
- <Loader className="shrink-9 mr-2 h-4 w-4 animate-spin opacity-50" />
- ) : (
- <Search className="mr-2 h-4 w-4 shrink-0 opacity-50" />
- )}
- <CommandPrimitive.Input
- ref={ref}
- className={cn(
- "placeholder:text-rgray-11/50 flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50",
- className,
- )}
- {...props}
- />
- </div>
-));
-
-CommandInput.displayName = CommandPrimitive.Input.displayName;
-
-const CommandList = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.List>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>
->(({ className, ...props }, ref) => (
- <CommandPrimitive.List
- ref={ref}
- className={cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)}
- {...props}
- />
-));
-
-CommandList.displayName = CommandPrimitive.List.displayName;
-
-const CommandEmpty = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.Empty>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>
->((props, ref) => (
- <CommandPrimitive.Empty
- ref={ref}
- className="py-6 text-center text-sm"
- {...props}
- />
-));
-
-CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
-
-const CommandGroup = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.Group>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>
->(({ className, ...props }, ref) => (
- <CommandPrimitive.Group
- ref={ref}
- className={cn(
- "text-rgray-12 [&_[cmdk-group-heading]]:text-rgray-11 overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
- className,
- )}
- {...props}
- />
-));
-
-CommandGroup.displayName = CommandPrimitive.Group.displayName;
-
-const CommandSeparator = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.Separator>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>
->(({ className, ...props }, ref) => (
- <CommandPrimitive.Separator
- ref={ref}
- className={cn("bg-rgray-3 -mx-1 h-px", className)}
- {...props}
- />
-));
-CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
-
-const CommandItem = React.forwardRef<
- React.ElementRef<typeof CommandPrimitive.Item>,
- React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>
->(({ className, ...props }, ref) => (
- <CommandPrimitive.Item
- ref={ref}
- className={cn(
- "aria-selected:bg-rgray-5 aria-selected:text-rgray-12 relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm opacity-70 outline-none data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50",
- className,
- )}
- {...props}
- />
-));
-
-CommandItem.displayName = CommandPrimitive.Item.displayName;
-
-const CommandShortcut = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLSpanElement>) => {
- return (
- <span
- className={cn("text-gray-11 ml-auto text-xs tracking-widest", className)}
- {...props}
- />
- );
-};
-CommandShortcut.displayName = "CommandShortcut";
-
-export {
- Command,
- CommandDialog,
- CommandInput,
- CommandList,
- CommandEmpty,
- CommandGroup,
- CommandItem,
- CommandShortcut,
- CommandSeparator,
-};
diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx
deleted file mode 100644
index 0da54769..00000000
--- a/apps/web/src/components/ui/dialog.tsx
+++ /dev/null
@@ -1,119 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as DialogPrimitive from "@radix-ui/react-dialog";
-import { X } from "lucide-react";
-
-import { cn } from "@/lib/utils";
-
-const Dialog = DialogPrimitive.Root;
-
-const DialogTrigger = DialogPrimitive.Trigger;
-
-const DialogPortal = DialogPrimitive.Portal;
-
-const DialogClose = DialogPrimitive.Close;
-
-const DialogOverlay = React.forwardRef<
- React.ElementRef<typeof DialogPrimitive.Overlay>,
- React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
->(({ className, ...props }, ref) => (
- <DialogPrimitive.Overlay
- ref={ref}
- className={cn(
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",
- className,
- )}
- {...props}
- />
-));
-DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
-
-const DialogContent = React.forwardRef<
- React.ElementRef<typeof DialogPrimitive.Content>,
- React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>
->(({ className, children, ...props }, ref) => (
- <DialogPortal>
- <DialogOverlay />
- <DialogPrimitive.Content
- ref={ref}
- className={cn(
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] border-rgray-6 fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] rounded-lg border bg-[#F4F3F2] p-6 text-black shadow-lg duration-200",
- className,
- )}
- {...props}
- >
- {children}
- <DialogPrimitive.Close className="ring-offset-rgray-2 focus:ring-rgray-7 absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:text-black">
- <X className="h-4 w-4" />
- <span className="sr-only">Close</span>
- </DialogPrimitive.Close>
- </DialogPrimitive.Content>
- </DialogPortal>
-));
-DialogContent.displayName = DialogPrimitive.Content.displayName;
-
-const DialogHeader = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLDivElement>) => (
- <div
- className={cn("flex flex-col space-y-1.5 text-left", className)}
- {...props}
- />
-);
-DialogHeader.displayName = "DialogHeader";
-
-const DialogFooter = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLDivElement>) => (
- <div
- className={cn(
- "mt-5 flex flex-row sm:flex-row sm:justify-end sm:space-x-2",
- className,
- )}
- {...props}
- />
-);
-DialogFooter.displayName = "DialogFooter";
-
-const DialogTitle = React.forwardRef<
- React.ElementRef<typeof DialogPrimitive.Title>,
- React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
->(({ className, ...props }, ref) => (
- <DialogPrimitive.Title
- ref={ref}
- className={cn(
- "mb-1 text-xl font-medium leading-none tracking-tight",
- className,
- )}
- {...props}
- />
-));
-DialogTitle.displayName = DialogPrimitive.Title.displayName;
-
-const DialogDescription = React.forwardRef<
- React.ElementRef<typeof DialogPrimitive.Description>,
- React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
->(({ className, ...props }, ref) => (
- <DialogPrimitive.Description
- ref={ref}
- className={cn("text-sm text-slate-800", className)}
- {...props}
- />
-));
-DialogDescription.displayName = DialogPrimitive.Description.displayName;
-
-export {
- Dialog,
- DialogPortal,
- DialogOverlay,
- DialogClose,
- DialogTrigger,
- DialogContent,
- DialogHeader,
- DialogFooter,
- DialogTitle,
- DialogDescription,
-};
diff --git a/apps/web/src/components/ui/drawer.tsx b/apps/web/src/components/ui/drawer.tsx
deleted file mode 100644
index 8ba01253..00000000
--- a/apps/web/src/components/ui/drawer.tsx
+++ /dev/null
@@ -1,124 +0,0 @@
-"use client";
-
-import * as React from "react";
-import { Drawer as DrawerPrimitive } from "vaul";
-
-import { cn } from "@/lib/utils";
-
-const Drawer = ({
- shouldScaleBackground = true,
- ...props
-}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (
- <DrawerPrimitive.Root
- shouldScaleBackground={shouldScaleBackground}
- {...props}
- />
-);
-Drawer.displayName = "Drawer";
-
-const DrawerTrigger = DrawerPrimitive.Trigger;
-
-const DrawerPortal = DrawerPrimitive.Portal;
-
-const DrawerClose = DrawerPrimitive.Close;
-
-const DrawerOverlay = React.forwardRef<
- React.ElementRef<typeof DrawerPrimitive.Overlay>,
- React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>
->(({ className, ...props }, ref) => (
- <DrawerPrimitive.Overlay
- ref={ref}
- data-drawer-overlay
- className={cn("fixed inset-0 z-50 bg-black/80", className)}
- {...props}
- />
-));
-DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
-
-const DrawerContent = React.forwardRef<
- React.ElementRef<typeof DrawerPrimitive.Content>,
- React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> & {
- overlay?: boolean;
- handle?: boolean;
- }
->(({ className, children, overlay = true, handle = true, ...props }, ref) => (
- <DrawerPortal>
- {overlay && <DrawerOverlay />}
- <DrawerPrimitive.Content
- ref={ref}
- className={cn(
- "border-rgray-6 bg-rgray-2 fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border",
- className,
- )}
- {...props}
- >
- {handle && (
- <div className="bg-rgray-4 mx-auto mb-1 h-2 w-[100px] rounded-full " />
- )}
- {children}
- </DrawerPrimitive.Content>
- </DrawerPortal>
-));
-DrawerContent.displayName = "DrawerContent";
-
-const DrawerHeader = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLDivElement>) => (
- <div
- className={cn("grid gap-1.5 p-4 text-center sm:text-left", className)}
- {...props}
- />
-);
-DrawerHeader.displayName = "DrawerHeader";
-
-const DrawerFooter = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLDivElement>) => (
- <div
- className={cn("mt-auto flex flex-col gap-2 p-4", className)}
- {...props}
- />
-);
-DrawerFooter.displayName = "DrawerFooter";
-
-const DrawerTitle = React.forwardRef<
- React.ElementRef<typeof DrawerPrimitive.Title>,
- React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>
->(({ className, ...props }, ref) => (
- <DrawerPrimitive.Title
- ref={ref}
- className={cn(
- "text-rgray-12 text-xl font-medium leading-none tracking-tight",
- className,
- )}
- {...props}
- />
-));
-DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
-
-const DrawerDescription = React.forwardRef<
- React.ElementRef<typeof DrawerPrimitive.Description>,
- React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>
->(({ className, ...props }, ref) => (
- <DrawerPrimitive.Description
- ref={ref}
- className={cn("text-rgray-11 text-md", className)}
- {...props}
- />
-));
-DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
-
-export {
- Drawer,
- DrawerPortal,
- DrawerOverlay,
- DrawerTrigger,
- DrawerClose,
- DrawerContent,
- DrawerHeader,
- DrawerFooter,
- DrawerTitle,
- DrawerDescription,
-};
diff --git a/apps/web/src/components/ui/dropdown-menu.tsx b/apps/web/src/components/ui/dropdown-menu.tsx
deleted file mode 100644
index fbe2d99c..00000000
--- a/apps/web/src/components/ui/dropdown-menu.tsx
+++ /dev/null
@@ -1,200 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
-import { Check, ChevronRight, Circle } from "lucide-react";
-
-import { cn } from "@/lib/utils";
-
-const DropdownMenu = DropdownMenuPrimitive.Root;
-
-const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
-
-const DropdownMenuGroup = DropdownMenuPrimitive.Group;
-
-const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
-
-const DropdownMenuSub = DropdownMenuPrimitive.Sub;
-
-const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
-
-const DropdownMenuSubTrigger = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
- inset?: boolean;
- }
->(({ className, inset, children, ...props }, ref) => (
- <DropdownMenuPrimitive.SubTrigger
- ref={ref}
- className={cn(
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-gray-100 data-[state=open]:bg-gray-100 dark:focus:bg-gray-800 dark:data-[state=open]:bg-gray-800",
- inset && "pl-8",
- className,
- )}
- {...props}
- >
- {children}
- <ChevronRight className="ml-auto h-4 w-4" />
- </DropdownMenuPrimitive.SubTrigger>
-));
-DropdownMenuSubTrigger.displayName =
- DropdownMenuPrimitive.SubTrigger.displayName;
-
-const DropdownMenuSubContent = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
->(({ className, ...props }, ref) => (
- <DropdownMenuPrimitive.SubContent
- ref={ref}
- className={cn(
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-200 bg-white p-1 text-gray-950 shadow-lg",
- className,
- )}
- {...props}
- />
-));
-DropdownMenuSubContent.displayName =
- DropdownMenuPrimitive.SubContent.displayName;
-
-const DropdownMenuContent = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.Content>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
->(({ className, sideOffset = 4, ...props }, ref) => (
- <DropdownMenuPrimitive.Portal>
- <DropdownMenuPrimitive.Content
- ref={ref}
- sideOffset={sideOffset}
- className={cn(
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 border-rgray-6 z-50 min-w-[9rem] overflow-hidden rounded-md border bg-white p-1 text-black shadow-md",
- className,
- )}
- {...props}
- />
- </DropdownMenuPrimitive.Portal>
-));
-DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
-
-const DropdownMenuItem = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.Item>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
- <DropdownMenuPrimitive.Item
- ref={ref}
- className={cn(
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-stone-200 focus:text-slate-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 ",
- inset && "pl-8",
- className,
- )}
- {...props}
- />
-));
-DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
-
-const DropdownMenuCheckboxItem = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
->(({ className, children, checked, ...props }, ref) => (
- <DropdownMenuPrimitive.CheckboxItem
- ref={ref}
- className={cn(
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50",
- className,
- )}
- checked={checked}
- {...props}
- >
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
- <DropdownMenuPrimitive.ItemIndicator>
- <Check className="h-4 w-4" />
- </DropdownMenuPrimitive.ItemIndicator>
- </span>
- {children}
- </DropdownMenuPrimitive.CheckboxItem>
-));
-DropdownMenuCheckboxItem.displayName =
- DropdownMenuPrimitive.CheckboxItem.displayName;
-
-const DropdownMenuRadioItem = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
->(({ className, children, ...props }, ref) => (
- <DropdownMenuPrimitive.RadioItem
- ref={ref}
- className={cn(
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50",
- className,
- )}
- {...props}
- >
- <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
- <DropdownMenuPrimitive.ItemIndicator>
- <Circle className="h-2 w-2 fill-current" />
- </DropdownMenuPrimitive.ItemIndicator>
- </span>
- {children}
- </DropdownMenuPrimitive.RadioItem>
-));
-DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
-
-const DropdownMenuLabel = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.Label>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
- inset?: boolean;
- }
->(({ className, inset, ...props }, ref) => (
- <DropdownMenuPrimitive.Label
- ref={ref}
- className={cn(
- "px-2 py-1.5 text-sm font-semibold",
- inset && "pl-8",
- className,
- )}
- {...props}
- />
-));
-DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
-
-const DropdownMenuSeparator = React.forwardRef<
- React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
- React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
->(({ className, ...props }, ref) => (
- <DropdownMenuPrimitive.Separator
- ref={ref}
- className={cn("-mx-1 my-1 h-px bg-gray-100", className)}
- {...props}
- />
-));
-DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
-
-const DropdownMenuShortcut = ({
- className,
- ...props
-}: React.HTMLAttributes<HTMLSpanElement>) => {
- return (
- <span
- className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
- {...props}
- />
- );
-};
-DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
-
-export {
- DropdownMenu,
- DropdownMenuTrigger,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuCheckboxItem,
- DropdownMenuRadioItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
- DropdownMenuShortcut,
- DropdownMenuGroup,
- DropdownMenuPortal,
- DropdownMenuSub,
- DropdownMenuSubContent,
- DropdownMenuSubTrigger,
- DropdownMenuRadioGroup,
-};
diff --git a/apps/web/src/components/ui/input.tsx b/apps/web/src/components/ui/input.tsx
deleted file mode 100644
index 9d925512..00000000
--- a/apps/web/src/components/ui/input.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import * as React from "react";
-
-import { cn } from "@/lib/utils";
-
-export interface InputProps
- extends React.InputHTMLAttributes<HTMLInputElement> {}
-
-const Input = React.forwardRef<HTMLInputElement, InputProps>(
- ({ className, type, ...props }, ref) => {
- return (
- <input
- type={type}
- className={cn(
- "border-rgray-6 focus-visible:ring-rgray-7 flex h-10 w-full rounded-md border bg-transparent px-3 py-2 text-sm font-normal transition file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-black/50 focus-visible:outline-none focus-visible:ring-2 disabled:cursor-not-allowed disabled:opacity-50 ",
- className,
- )}
- ref={ref}
- {...props}
- />
- );
- },
-);
-
-export interface InputWithIconProps
- extends React.InputHTMLAttributes<HTMLInputElement> {
- icon: React.ReactNode;
-}
-
-const InputWithIcon = React.forwardRef<HTMLInputElement, InputWithIconProps>(
- ({ className, type, icon, ...props }, ref) => {
- return (
- <div
- className={cn(
- "border-rgray-1/70 text-rgray-11 focus-within:ring-rgray-7 flex h-10 w-full items-center justify-center gap-2 rounded-md border bg-transparent px-3 py-2 text-sm font-normal transition focus-within:outline-none focus-within:ring-2 ", // TODO: change to black
- className,
- )}
- >
- {icon}
- <input
- type={type}
- className={
- "w-full bg-transparent font-normal file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-black/50 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50"
- }
- ref={ref}
- {...props}
- />
- </div>
- );
- },
-);
-InputWithIcon.displayName = "Input";
-
-export { Input, InputWithIcon };
diff --git a/apps/web/src/components/ui/label.tsx b/apps/web/src/components/ui/label.tsx
deleted file mode 100644
index 84f8b0c7..00000000
--- a/apps/web/src/components/ui/label.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as LabelPrimitive from "@radix-ui/react-label";
-import { cva, type VariantProps } from "class-variance-authority";
-
-import { cn } from "@/lib/utils";
-
-const labelVariants = cva(
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
-);
-
-const Label = React.forwardRef<
- React.ElementRef<typeof LabelPrimitive.Root>,
- React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
- VariantProps<typeof labelVariants>
->(({ className, ...props }, ref) => (
- <LabelPrimitive.Root
- ref={ref}
- className={cn(labelVariants(), className)}
- {...props}
- />
-));
-Label.displayName = LabelPrimitive.Root.displayName;
-
-export { Label };
diff --git a/apps/web/src/components/ui/popover.tsx b/apps/web/src/components/ui/popover.tsx
deleted file mode 100644
index cabe76a9..00000000
--- a/apps/web/src/components/ui/popover.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-"use client";
-
-import * as React from "react";
-import * as PopoverPrimitive from "@radix-ui/react-popover";
-
-import { cn } from "@/lib/utils";
-
-const Popover = PopoverPrimitive.Root;
-
-const PopoverTrigger = PopoverPrimitive.Trigger;
-
-const PopoverContent = React.forwardRef<
- React.ElementRef<typeof PopoverPrimitive.Content>,
- React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> & {
- animate?: boolean;
- }
->(
- (
- { className, align = "center", animate = true, sideOffset = 4, ...props },
- ref,
- ) => (
- <PopoverPrimitive.Portal>
- <PopoverPrimitive.Content
- ref={ref}
- align={align}
- sideOffset={sideOffset}
- className={cn(
- "border-rgray-6 bg-rgray-3 text-rgray-11 z-50 w-72 rounded-md border p-4 shadow-md outline-none",
- animate &&
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
- className,
- )}
- {...props}
- />
- </PopoverPrimitive.Portal>
- ),
-);
-PopoverContent.displayName = PopoverPrimitive.Content.displayName;
-
-export { Popover, PopoverTrigger, PopoverContent };
diff --git a/apps/web/src/components/ui/textarea.tsx b/apps/web/src/components/ui/textarea.tsx
deleted file mode 100644
index 3b2c9ddd..00000000
--- a/apps/web/src/components/ui/textarea.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import * as React from "react";
-
-import { cn } from "@/lib/utils";
-import { HTMLMotionProps, motion } from "framer-motion";
-
-export interface TextareaProps
- extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
-
-const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
- ({ className, ...props }, ref) => {
- return (
- <textarea
- className={cn(
- "border-rgray-6 text-rgray-11 placeholder:text-rgray-11/70 focus-within:ring-rgray-7 flex min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-sm font-normal transition focus-within:outline-none focus-within:ring-2 disabled:cursor-not-allowed disabled:opacity-50",
- className,
- )}
- ref={ref}
- {...props}
- />
- );
- },
-);
-Textarea.displayName = "Textarea";
-
-export interface Textarea2Props extends HTMLMotionProps<"div"> {
- textAreaProps?: TextareaProps;
- children: React.ReactNode | React.ReactNode[];
-}
-
-const Textarea2 = React.forwardRef<HTMLDivElement, Textarea2Props>(
- ({ className, children, textAreaProps: _textAreaProps, ...props }, ref) => {
- const { className: textAreaClassName, ...textAreaProps } =
- _textAreaProps || {};
- return (
- <motion.div
- ref={ref}
- className={cn(
- "border-rgray-6 text-rgray-11 has-[textarea:focus-visible]:ring-rgray-7 flex h-auto min-h-[80px] w-full flex-col items-start justify-center rounded-md border bg-transparent px-3 py-2 text-sm transition has-[textarea:focus-visible]:ring-2",
- className,
- )}
- {...props}
- >
- <textarea
- className={cn(
- "text-rgray-11 h-full w-full resize-none bg-transparent placeholder:text-white/50 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
- textAreaClassName,
- )}
- {...textAreaProps}
- />
- {children}
- </motion.div>
- );
- },
-);
-Textarea2.displayName = "Textarea2";
-
-export { Textarea, Textarea2 };
diff --git a/apps/web/src/contexts/MemoryContext.tsx b/apps/web/src/contexts/MemoryContext.tsx
deleted file mode 100644
index 09412465..00000000
--- a/apps/web/src/contexts/MemoryContext.tsx
+++ /dev/null
@@ -1,241 +0,0 @@
-"use client";
-import React, { useCallback } from "react";
-import {
- ChachedSpaceContent,
- StoredContent,
- storedContent,
- StoredSpace,
-} from "@/server/db/schema";
-import {
- addMemory,
- searchMemoriesAndSpaces,
- addSpace,
- fetchContentForSpace,
- deleteSpace,
- deleteMemory,
- fetchFreeMemories,
- updateMemory,
- updateSpaceTitle,
- addContentInSpaces,
-} from "@/actions/db";
-import { User } from "next-auth";
-
-export type SearchResult = {
- type: "memory" | "space";
- space: StoredSpace;
- memory: StoredContent;
-};
-
-// temperory (will change)
-export const MemoryContext = React.createContext<{
- spaces: StoredSpace[];
- freeMemories: StoredContent[];
- addSpace: typeof addSpace;
- addMemory: typeof addMemory;
- cachedMemories: ChachedSpaceContent[];
- search: typeof searchMemoriesAndSpaces;
- deleteSpace: typeof deleteSpace;
- deleteMemory: typeof deleteMemory;
- updateMemory: typeof updateMemory;
- updateSpace: typeof updateSpaceTitle;
- addMemoriesToSpace: typeof addContentInSpaces;
-}>({
- spaces: [],
- freeMemories: [],
- addMemory: (() => {}) as unknown as typeof addMemory,
- addSpace: (async () => {}) as unknown as typeof addSpace,
- cachedMemories: [],
- search: async () => [],
- deleteMemory: (() => {}) as unknown as typeof deleteMemory,
- deleteSpace: (() => {}) as unknown as typeof deleteSpace,
- updateMemory: (() => {}) as unknown as typeof updateMemory,
- updateSpace: (() => {}) as unknown as typeof updateSpaceTitle,
- addMemoriesToSpace: (() => {}) as unknown as typeof addContentInSpaces,
-});
-
-export const MemoryProvider: React.FC<
- {
- spaces: StoredSpace[];
- freeMemories: StoredContent[];
- cachedMemories: ChachedSpaceContent[];
- user: User;
- } & React.PropsWithChildren
-> = ({
- children,
- user,
- spaces: initalSpaces,
- freeMemories: initialFreeMemories,
- cachedMemories: initialCachedMemories,
-}) => {
- const [spaces, setSpaces] = React.useState<StoredSpace[]>(initalSpaces);
- const [freeMemories, setFreeMemories] =
- React.useState<StoredContent[]>(initialFreeMemories);
-
- const [cachedMemories, setCachedMemories] = React.useState<
- ChachedSpaceContent[]
- >(initialCachedMemories);
-
- const _deleteSpace: typeof deleteSpace = async (...params) => {
- const deleted = (await deleteSpace(...params))!;
-
- setSpaces((prev) => prev.filter((i) => i.id !== deleted.id));
- setCachedMemories((prev) => prev.filter((i) => i.space !== deleted.id));
-
- setFreeMemories(await fetchFreeMemories());
-
- return deleted;
- };
-
- const _deleteMemory: typeof deleteMemory = async (...params) => {
- const deleted = (await deleteMemory(...params))!;
-
- setCachedMemories((prev) => prev.filter((i) => i.id !== deleted.id));
- setFreeMemories(await fetchFreeMemories());
-
- return deleted;
- };
-
- // const fetchMemories = useCallback(async (query: string) => {
- // const response = await fetch(`/api/memories?${query}`);
- // }, []);
-
- const _addSpace: typeof addSpace = async (...params) => {
- const { space: addedSpace, addedMemories } = (await addSpace(...params))!;
-
- setSpaces((prev) => [...prev, addedSpace]);
- const cachedMemories = (
- (await fetchContentForSpace(addedSpace.id, {
- offset: 0,
- limit: 3,
- })) ?? []
- ).map((m) => ({ ...m, space: addedSpace.id }));
-
- setCachedMemories((prev) => [...prev, ...cachedMemories]);
-
- setFreeMemories(await fetchFreeMemories());
-
- return {
- space: addedSpace,
- addedMemories,
- };
- };
-
- const _addMemory: typeof addMemory = async (...params) => {
- const { memory: addedMemory, addedToSpaces } = (await addMemory(
- ...params,
- ))!;
-
- addedToSpaces.length > 0
- ? setCachedMemories((prev) => [
- ...prev,
- ...addedToSpaces.map((s) => ({
- ...addedMemory,
- space: s.spaceId,
- })),
- ])
- : setFreeMemories((prev) => [...prev, addedMemory]);
-
- return {
- memory: addedMemory,
- addedToSpaces,
- };
- };
-
- const _updateMemory: typeof updateMemory = async (id, _data) => {
- const data = await updateMemory(id, _data);
-
- let contents: ChachedSpaceContent[] = [];
-
- await Promise.all([
- spaces.forEach(async (space) => {
- console.log("fetching ");
- const data = (
- (await fetchContentForSpace(space.id, {
- offset: 0,
- limit: 3,
- })) ?? []
- ).map((data) => ({
- ...data,
- space: space.id,
- }));
- contents = [...contents, ...data];
- }),
- ]);
-
- const freeMemories = await fetchFreeMemories();
-
- setCachedMemories(contents);
- setFreeMemories(freeMemories);
-
- return data;
- };
-
- const _updateSpace: typeof updateSpaceTitle = async (...params) => {
- const updatedSpace = await updateSpaceTitle(...params);
-
- if (updatedSpace) {
- setSpaces((prev) =>
- prev.map((i) => (i.id === updatedSpace.id ? updatedSpace : i)),
- );
- }
-
- return updatedSpace;
- };
-
- const addMemoriesToSpace: typeof addContentInSpaces = async (...params) => {
- const data = await addContentInSpaces(...params);
-
- let contents: ChachedSpaceContent[] = [];
-
- await Promise.all([
- spaces.forEach(async (space) => {
- console.log("fetching ");
- const data = (
- (await fetchContentForSpace(space.id, {
- offset: 0,
- limit: 3,
- })) ?? []
- ).map((data) => ({
- ...data,
- space: space.id,
- }));
- contents = [...contents, ...data];
- }),
- ]);
-
- const freeMemories = await fetchFreeMemories();
-
- setCachedMemories(contents);
- setFreeMemories(freeMemories);
-
- return data;
- };
-
- return (
- <MemoryContext.Provider
- value={{
- updateSpace: _updateSpace,
- search: searchMemoriesAndSpaces,
- spaces,
- addSpace: _addSpace,
- deleteSpace: _deleteSpace,
- freeMemories,
- cachedMemories,
- deleteMemory: _deleteMemory,
- addMemory: _addMemory,
- updateMemory: _updateMemory,
- addMemoriesToSpace,
- }}
- >
- {children}
- </MemoryContext.Provider>
- );
-};
-
-export const useMemory = () => {
- const context = React.useContext(MemoryContext);
- if (context === undefined) {
- throw new Error("useMemory must be used within a MemoryProvider");
- }
- return context;
-};
diff --git a/apps/web/src/env.js b/apps/web/src/env.js
deleted file mode 100644
index 2495d75b..00000000
--- a/apps/web/src/env.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import { createEnv } from "@t3-oss/env-nextjs";
-import { z } from "zod";
-
-export const env = createEnv({
- /**
- * Specify your server-side environment variables schema here. This way you can ensure the app
- * isn't built with invalid env vars.
- */
- server: {
- NODE_ENV: z
- .enum(["development", "test", "production"])
- .default("development"),
- NEXTAUTH_SECRET:
- process.env.NODE_ENV === "production" ? z.string() : z.string(),
- NEXTAUTH_URL: z.preprocess(
- // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL
- // Since NextAuth.js automatically uses the VERCEL_URL if present.
- (str) => process.env.VERCEL_URL ?? str,
- // VERCEL_URL doesn't include `https` so it cant be validated as a URL
- process.env.VERCEL ? z.string() : z.string().url(),
- ),
- GOOGLE_CLIENT_ID: z.string(),
- GOOGLE_CLIENT_SECRET: z.string(),
- BACKEND_SECURITY_KEY: z.string(),
- },
-
- /**
- * Specify your client-side environment variables schema here. This way you can ensure the app
- * isn't built with invalid env vars. To expose them to the client, prefix them with
- * `NEXT_PUBLIC_`.
- */
- client: {
- // NEXT_PUBLIC_CLIENTVAR: z.string(),
- },
-
- /**
- * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g.
- * middlewares) or client-side so we need to destruct manually.
- */
- runtimeEnv: {
- DATABASE_URL: process.env.DATABASE_URL,
- NODE_ENV: process.env.NODE_ENV,
- NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
- NEXTAUTH_URL: process.env.NEXTAUTH_URL,
- GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID,
- GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET,
- BACKEND_SECURITY_KEY: process.env.BACKEND_SECURITY_KEY,
- },
- /**
- * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially
- * useful for Docker builds.
- */
- skipValidation: !!process.env.SKIP_ENV_VALIDATION,
- /**
- * Makes it so that empty strings are treated as undefined. `SOME_VAR: z.string()` and
- * `SOME_VAR=''` will throw an error.
- */
- emptyStringAsUndefined: true,
-});
diff --git a/apps/web/src/hooks/useDebounce.ts b/apps/web/src/hooks/useDebounce.ts
deleted file mode 100644
index d133b1ae..00000000
--- a/apps/web/src/hooks/useDebounce.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useEffect, useState } from "react";
-
-/**
- * Use this hook when you need to debounce a value.
- * @param value
- * @param delay in milliseconds
- */
-export const useDebounce = <T>(value: T, delay: number) => {
- // State and setters for debounced value
- const [debouncedValue, setDebouncedValue] = useState<T>(value);
-
- useEffect(() => {
- // Update debounced value after delay
- const handler = setTimeout(() => {
- setDebouncedValue(value);
- }, delay);
-
- // Cancel the timeout if value changes (also on delay change or unmount)
- // This is how we prevent debounced value from updating if the value is changed
- // within the delay period. Timeout gets cleared and restarted.
- return () => {
- clearTimeout(handler);
- };
- }, [value, delay]);
-
- return debouncedValue;
-};
diff --git a/apps/web/src/hooks/useTouchHold.ts b/apps/web/src/hooks/useTouchHold.ts
deleted file mode 100644
index 52e56491..00000000
--- a/apps/web/src/hooks/useTouchHold.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useState } from "react";
-
-// holdDuration (in ms)
-const useTouchHold = ({
- onHold,
- holdDuration = 500,
-}: {
- holdDuration?: number;
- onHold: () => Promise<void> | void;
-}) => {
- const [touchTimeout, setTouchTimeout] = useState<ReturnType<
- typeof setTimeout
- > | null>(null);
-
- return {
- onTouchStart: () => {
- setTouchTimeout(setTimeout(onHold, holdDuration));
- },
- onTouchEnd: () => {
- if (touchTimeout) {
- clearTimeout(touchTimeout);
- }
- },
- };
-};
-
-export default useTouchHold;
diff --git a/apps/web/src/hooks/useViewport.ts b/apps/web/src/hooks/useViewport.ts
deleted file mode 100644
index 7ba90861..00000000
--- a/apps/web/src/hooks/useViewport.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { useState, useEffect } from "react";
-
-function getViewport() {
- try {
- const { innerWidth: width, innerHeight: height } = window ?? {
- innerWidth: 0,
- innerHeight: 0,
- };
- return {
- width,
- height,
- };
- } catch {
- return {
- width: 0,
- height: 0,
- };
- }
-}
-
-export default function useViewport() {
- const [viewport, setViewport] = useState(getViewport());
-
- useEffect(() => {
- function handleResize() {
- setViewport(getViewport());
- }
-
- window.addEventListener("resize", handleResize);
- return () => window.removeEventListener("resize", handleResize);
- }, []);
-
- return viewport;
-}
diff --git a/apps/web/src/lib/icons.tsx b/apps/web/src/lib/icons.tsx
deleted file mode 100644
index 51a4714e..00000000
--- a/apps/web/src/lib/icons.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import * as React from "react";
-import type { SVGProps } from "react";
-const Chrome = (props: SVGProps<SVGSVGElement>) => (
- <svg
- xmlns="http://www.w3.org/2000/svg"
- preserveAspectRatio="xMidYMid"
- viewBox="0 0 190.5 190.5"
- width="1em"
- height="1em"
- {...props}
- >
- <path
- fill="#fff"
- d="M95.252 142.873c26.304 0 47.627-21.324 47.627-47.628s-21.323-47.628-47.627-47.628-47.627 21.324-47.627 47.628 21.323 47.628 47.627 47.628z"
- />
- <path
- fill="#229342"
- d="m54.005 119.07-41.24-71.43a95.227 95.227 0 0 0-.003 95.25 95.234 95.234 0 0 0 82.496 47.61l41.24-71.43v-.011a47.613 47.613 0 0 1-17.428 17.443 47.62 47.62 0 0 1-47.632.007 47.62 47.62 0 0 1-17.433-17.437z"
- />
- <path
- fill="#fbc116"
- d="m136.495 119.067-41.239 71.43a95.229 95.229 0 0 0 82.489-47.622A95.24 95.24 0 0 0 190.5 95.248a95.237 95.237 0 0 0-12.772-47.623H95.249l-.01.007a47.62 47.62 0 0 1 23.819 6.372 47.618 47.618 0 0 1 17.439 17.431 47.62 47.62 0 0 1-.001 47.633z"
- />
- <path
- fill="#1a73e8"
- d="M95.252 132.961c20.824 0 37.705-16.881 37.705-37.706S116.076 57.55 95.252 57.55 57.547 74.431 57.547 95.255s16.881 37.706 37.705 37.706z"
- />
- <path
- fill="#e33b2e"
- d="M95.252 47.628h82.479A95.237 95.237 0 0 0 142.87 12.76 95.23 95.23 0 0 0 95.245 0a95.222 95.222 0 0 0-47.623 12.767 95.23 95.23 0 0 0-34.856 34.872l41.24 71.43.011.006a47.62 47.62 0 0 1-.015-47.633 47.61 47.61 0 0 1 41.252-23.815z"
- />
- </svg>
-);
-export default Chrome;
diff --git a/apps/web/src/lib/searchParams.ts b/apps/web/src/lib/searchParams.ts
deleted file mode 100644
index aae3f4c7..00000000
--- a/apps/web/src/lib/searchParams.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import {
- createSearchParamsCache,
- parseAsInteger,
- parseAsString,
-} from "nuqs/server";
-// Note: import from 'nuqs/server' to avoid the "use client" directive
-
-export const searchParamsCache = createSearchParamsCache({
- // List your search param keys and associated parsers here:
- q: parseAsString.withDefault(""),
- maxResults: parseAsInteger.withDefault(10),
-});
diff --git a/apps/web/src/lib/utils.ts b/apps/web/src/lib/utils.ts
deleted file mode 100644
index 81fa8549..00000000
--- a/apps/web/src/lib/utils.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-"use client";
-import { type ClassValue, clsx } from "clsx";
-import { twMerge } from "tailwind-merge";
-
-export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs));
-}
-
-// removes http(s?):// and / from the url
-export function cleanUrl(url: string) {
- if (url.endsWith("/")) {
- url = url.slice(0, -1);
- }
- return url.startsWith("https://")
- ? url.slice(8)
- : url.startsWith("http://")
- ? url.slice(7)
- : url;
-}
-
-export function getIdsFromSource(sourceIds: string[]) {
- console.log(sourceIds);
- return sourceIds.map((id) => {
- const parts = id.split("-");
- if (parts.length > 1) {
- return parts.slice(0, -1).join("-");
- } else {
- return id;
- }
- });
-}
-
-export function generateId() {
- return Math.random().toString(36).slice(2, 9);
-}
-
-export function svgId(prefix: string, id: string) {
- return `${prefix}-${id}`;
-}
-
-export function countLines(textarea: HTMLTextAreaElement): number {
- let _buffer: HTMLTextAreaElement | null = null;
-
- if (_buffer == null) {
- _buffer = document.createElement("textarea");
- _buffer.style.border = "none";
- _buffer.style.height = "0";
- _buffer.style.overflow = "hidden";
- _buffer.style.padding = "0";
- _buffer.style.position = "absolute";
- _buffer.style.left = "0";
- _buffer.style.top = "0";
- _buffer.style.zIndex = "-1";
- document.body.appendChild(_buffer);
- }
-
- const cs = window.getComputedStyle(textarea);
- const pl = parseInt(cs.paddingLeft as string);
- const pr = parseInt(cs.paddingRight as string);
- let lh = parseInt(cs.lineHeight as string);
-
- // [cs.lineHeight] may return 'normal', which means line height = font size.
- if (isNaN(lh)) lh = parseInt(cs.fontSize as string);
-
- // Copy content width.
- if (_buffer) {
- _buffer.style.width = textarea.clientWidth - pl - pr + "px";
-
- // Copy text properties.
- _buffer.style.font = cs.font as string;
- _buffer.style.letterSpacing = cs.letterSpacing as string;
- _buffer.style.whiteSpace = cs.whiteSpace as string;
- _buffer.style.wordBreak = cs.wordBreak as string;
- _buffer.style.wordSpacing = cs.wordSpacing as string;
- _buffer.style.wordWrap = cs.wordWrap as string;
-
- // Copy value.
- _buffer.value = textarea.value;
-
- const result = Math.floor(_buffer.scrollHeight / lh);
- return result > 0 ? result : 1;
- }
-
- return 0;
-}
-
-export function convertRemToPixels(rem: number) {
- return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
-}
-
-export function isArraysEqual(a: any[], b: any[]) {
- if (a === b) return true;
- if (a == null || b == null) return false;
- if (a.length !== b.length) return false;
-
- let isEqual = true;
-
- a.forEach((i) => {
- if (!isEqual) return;
- isEqual = b.includes(i);
- });
-
- if (!isEqual) return isEqual;
-
- b.forEach((i) => {
- if (!isEqual) return;
- isEqual = a.includes(i);
- });
-
- return isEqual;
-}
diff --git a/apps/web/src/server/db/test.ts b/apps/web/src/server/db/test.ts
deleted file mode 100644
index 37969e5e..00000000
--- a/apps/web/src/server/db/test.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { db } from ".";
-import { space, user } from "./schema";
-
-const user = await db.select(user).all();
-
-await db.insert(space).values([{}]);
diff --git a/apps/web/src/server/helpers.ts b/apps/web/src/server/helpers.ts
deleted file mode 100644
index 9a9a9607..00000000
--- a/apps/web/src/server/helpers.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-"use server";
-import * as cheerio from "cheerio";
-
-export async function getMetaData(url: string) {
- const response = await fetch(url);
- const html = await response.text();
-
- const $ = cheerio.load(html);
-
- // Extract the base URL
- const baseUrl = new URL(url).origin;
-
- // Extract title
- const title = $("title").text().trim();
-
- const description = $("meta[name=description]").attr("content") ?? "";
-
- const _favicon =
- $("link[rel=icon]").attr("href") ?? "https://supermemory.dhr.wtf/web.svg";
-
- let favicon =
- _favicon.trim().length > 0
- ? _favicon.trim()
- : "https://supermemory.dhr.wtf/web.svg";
- if (favicon.startsWith("/")) {
- favicon = baseUrl + favicon;
- } else if (favicon.startsWith("./")) {
- favicon = baseUrl + favicon.slice(1);
- }
-
- // Prepare the metadata object
- const metadata = {
- title,
- description,
- image: favicon,
- baseUrl,
- };
- return metadata;
-}
diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts
index 5d61bd62..cf1434cf 100644
--- a/apps/web/tailwind.config.ts
+++ b/apps/web/tailwind.config.ts
@@ -1,99 +1 @@
-import type { Config } from "tailwindcss";
-import plugin from "tailwindcss/plugin";
-
-const config: Config = {
- content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"],
- theme: {
- extend: {
- keyframes: {
- "scale-in": {
- "0%": {
- transform: "scale(0)",
- transformOrigin: "var(--radix-popover-content-transform-origin)",
- },
- "100%": {
- transform: "scale(1)",
- transformOrigin: "var(--radix-popover-content-transform-origin)",
- },
- },
- "scale-out": {
- "0%": {
- transform: "scale(1)",
- transformOrigin: "var(--radix-popover-content-transform-origin)",
- },
- "100%": {
- transform: "scale(0)",
- transformOrigin: "var(--radix-popover-content-transform-origin)",
- },
- },
- "fade-in": {
- "0%": {
- opacity: "0",
- },
- "100%": {
- opacity: "1",
- },
- },
- "from-top": {
- "0%": {
- transform: "translateY(-50px)",
- opacity: "0",
- },
- "100%": {
- transform: "translateY(0)",
- opacity: "1",
- },
- },
- "input-error": {
- "0%": {
- color: "var(--gray-11)",
- },
- "50%": {
- color: "red",
- },
- "100%": {
- color: "var(--gray-11)",
- },
- },
- },
- animation: {
- "scale-in": "scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1)",
- "scale-out": "scale-out 0.2s cubic-bezier(0.16, 1, 0.3, 1)",
- "fade-in": "fade-in 0.2s 0.5s forwards cubic-bezier(0.16, 1, 0.3, 1)",
- "from-top": "from-top 0.2s ease-in-out",
- "input-error": "input-error 5s",
- },
- backgroundImage: {
- "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
- "gradient-conic":
- "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
- },
- colors: {
- rgray: {
- 1: "var(--gray-1)",
- 2: "var(--gray-2)",
- 3: "var(--gray-3)",
- 4: "var(--gray-4)",
- 5: "var(--gray-5)",
- 6: "var(--gray-6)",
- 7: "var(--gray-7)",
- 8: "var(--gray-8)",
- 9: "var(--gray-9)",
- 10: "var(--gray-10)",
- 11: "var(--gray-11)",
- 12: "var(--gray-12)",
- },
- },
- },
- },
- safelist: ["pb-[20vh]", "pb-5", "h-[2em]", "max-h-[2em]", "p-0"],
- darkMode: "class",
- plugins: [
- require("tailwindcss-animate"),
- plugin(function ({ addVariant }) {
- addVariant("on", "&[data-state-on='true']");
- }),
- require("tailwind-scrollbar"),
- ],
-};
-export default config;
+module.exports = require("@repo/tailwind-config/tailwind.config");
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
index 7b285893..e5590d6b 100644
--- a/apps/web/tsconfig.json
+++ b/apps/web/tsconfig.json
@@ -1,26 +1,19 @@
{
+ "extends": "@repo/typescript-config/nextjs.json",
"compilerOptions": {
- "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": {
- "@/*": ["./src/*"]
- }
+ ]
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
+ "include": [
+ "cf-env.d.ts",
+ "env.d.ts",
+ "next.config.mjs",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": ["node_modules/"]
}
diff --git a/apps/web/types/memory.tsx b/apps/web/types/memory.tsx
deleted file mode 100644
index 80ed5755..00000000
--- a/apps/web/types/memory.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { db } from "@/server/db";
-import { StoredContent } from "@/server/db/schema";
-
-export type CollectedSpaces = {
- id: number;
- title: string;
- content: StoredContent[];
-};
-
-export type ChatHistory = {
- question: string;
- answer: {
- parts: { text: string }[];
- sources: { isNote: boolean; source: string }[];
- };
-};
diff --git a/apps/web/wrangler.toml b/apps/web/wrangler.toml
index 88e58512..e651069e 100644
--- a/apps/web/wrangler.toml
+++ b/apps/web/wrangler.toml
@@ -1,19 +1,24 @@
-name = "web"
+name = "cloudflare-saas-starter"
compatibility_date = "2024-03-29"
-compatibility_flags = ["nodejs_compat"]
+compatibility_flags = [ "nodejs_compat" ]
+pages_build_output_dir = ".vercel/output/static"
+
+[placement]
+mode = "smart"
+
+[[r2_buckets]]
+binding = "STORAGE"
+bucket_name = "dev-r2-anycontext"
[[d1_databases]]
binding = "DATABASE"
database_name = "dev-d1-anycontext"
database_id = "fc562605-157a-4f60-b439-2a24ffed5b4c"
-[[unsafe.bindings]]
-name = "RATELIMITER"
-type = "ratelimit"
-namespace_id = "1001"
+# [[unsafe.bindings]]
+# name = "RATELIMITER"
+# type = "ratelimit"
+# namespace_id = "1001"
-# 25 requests per 10 seconds
-simple = { limit = 25, period = 10 }
-
-[placement]
-mode = "smart" \ No newline at end of file
+# # 25 requests per 10 seconds
+# simple = { limit = 25, period = 10 } \ No newline at end of file