[
  {
    "path": ".eslintignore",
    "content": "**/*.js\n/*.ts\ndist/\nnode_modules/\npackages/kitchen-sink\n*.old.ts"
  },
  {
    "path": ".eslintrc.cjs",
    "content": "const { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: [\n    require.resolve('@vercel/style-guide/eslint/node'),\n    require.resolve('@vercel/style-guide/eslint/typescript'),\n  ],\n  parserOptions: {\n    project,\n  },\n  settings: {\n    'import/resolver': {\n      typescript: {\n        project,\n      },\n    },\n  },\n  overrides: [\n    {\n      files: ['*.ts'],\n      rules: {\n        '@typescript-eslint/no-unsafe-argument': 'off',\n        '@typescript-eslint/no-explicit-any': 'off',\n        '@typescript-eslint/no-unsafe-assignment': 'off',\n        '@typescript-eslint/no-unsafe-call': 'off',\n        '@typescript-eslint/no-unsafe-member-access': 'off',\n        '@typescript-eslint/no-shadow': 'off',\n        '@typescript-eslint/no-unsafe-return': 'off',\n        '@typescript-eslint/no-non-null-assertion': 'off',\n        '@typescript-eslint/no-loop-func': 'off',\n        'eslint-comments/disable-enable-pair': 'off',\n        'import/no-cycle': 'off',\n        'import/no-default-export': 'off',\n        'no-nested-ternary': 'off',\n        'no-param-reassign': 'off',\n        'tsdoc/syntax': 'off',\n        'import/no-extraneous-dependencies': 'off',\n        'eslint-comments/require-description': 'off',\n        'import/no-relative-packages': 'off',\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or\n  advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at aiden.bai05@gmail.com. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": ".github/COMMIT_CONVENTION.md",
    "content": "## Git Commit Message Convention\n\n> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular).\n\n#### TL;DR:\n\nMessages must be matched by the following regex:\n\n```js\n/^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\\(.+\\))?: .{1,72}/;\n```\n\n### Full Message Format\n\nA commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:\n\n```\n<type>(<scope>): <subject>\n<BLANK LINE>\n<body>\n<BLANK LINE>\n<footer>\n```\n\nThe **header** is mandatory and the **scope** of the header is optional.\n\n### Revert\n\nIf the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.\n\n### Type\n\nIf the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.\n\nOther prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.\n\n### Scope\n\nThe scope could be anything specifying the place of the commit change.\n\n### Subject\n\nThe subject contains a succinct description of the change:\n\n- use the imperative, present tense: \"change\" not \"changed\" nor \"changes\"\n- don't capitalize the first letter\n- no dot (.) at the end\n\n### Body\n\nJust as in the **subject**, use the imperative, present tense: \"change\" not \"changed\" nor \"changes\".\nThe body should include the motivation for the change and contrast this with previous behavior.\n\n### Footer\n\nThe footer should contain any information about **Breaking Changes** and is also the place to\nreference GitHub issues that this commit **Closes**.\n\n**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# ✨ Contributing Guide\n\nFirst of all, thank you for taking the time to contribute! 🎉\n\nThe following is a set of guidelines for contributing to Million.js. These are just guidelines, not rules, so use your best judgment and feel free to propose changes to this document in a pull request.\n\nBefore contributing, we encourage you to read our [Code of Conduct](https://github.com/aidenybai/million/blob/main/.github/CODE_OF_CONDUCT.md).\n\n## Table of Contents\n\n- [Reporting Bugs](#reporting-bugs)\n  - [How Do I Submit A Good Bug Report?](#good-bug-report)\n- [Suggesting Enhancements/Features](#suggesting-enhancements-and-features)\n  - [How Do I Submit A Good Feature Request?](#good-feature-request)\n- [Understanding the Project](#understanding-the-project)\n  - [Prerequisite](#prerequisite)\n  - [Project Structure](#project-structure)\n- [Contributing to the Project](#contributing-to-the-project)\n  - [Cloning the Repository (repo)](#cloning-the-repo)\n  - [Making your Changes](#making-your-changes)\n  - [Opening a Pull Request(PR)](#opening-a-pull-request)\n- [Creating A Development Playground](#creating-a-dev-playground)\n\n## <span id=\"reporting-bugs\">💣 Reporting Bugs</span>\n\nThis section guides you through submitting a bug report. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.\n\nBefore creating a new issue, **[Perform a cursory search](https://github.com/aidenybai/million/issues)** to see if the report exists. If it does, go through the discussion thread and leave a comment instead of opening a new one.\n\nIf you find a **Closed** issue that is the same as what you are experiencing, open a new issue and include a link to the original case in the body of your new one.\n\nIf you cannot find an open or closed issue addressing the problem, [open a new issue](https://github.com/aidenybai/million/issues).\n\nBe sure to include a **clear title and description**, as much **relevant information** as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring.\n\n### <span id=\"good-bug-report\"> How Do I Submit A Good Bug Report?</span>\n\nA good Bug Report should include the following:\n\n- A clear and descriptive title for the bug report\n- The exact steps to reproduce the bug\n- The behavior you observed after following the steps\n- The behavior you expected to see instead\n- What might be causing the issue (if you have any idea)\n- Screenshots or animated GIFs of the issue (if applicable)\n- If you use the keyboard while following the steps, use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://gitlab.gnome.org/Archive/byzanz) on Linux.\n\n[🔝 Back to top](#table-of-content)\n\n## <span id=\"suggesting-enhancements-and-features\">🛠 Suggesting Enhancements/Features</span>\n\nWe track Enhancements and Feature Requests as GitHub issues.\n\nBefore submitting an enhancement/feature request, **[perform a cursory search](https://github.com/aidenybai/million/issues)** to see if the request exists. If it does, go through the conversation thread to see if there is additional information and contribute to the conversation instead of opening a new one.\n\nIf you find a **Closed** issue, go through the conversation thread to see if the feature has already been implemented or rejected. If not, you can open a new issue.\n\n### <span id=\"good-feature-request\">How Do I Submit A Good Feature Request?</span>\n\nA good Feature Request should include the following:\n\n- A clear and descriptive title of the request\n- A detailed description of the request, including:\n  - The problem you are trying to solve\n  - How you are currently working around the lack of this feature\n  - Any possible drawbacks of the feature\n  - How the feature can be implemented\n- An explanation of why this enhancement would be helpful to the project and the community\n- Any links to resources or other projects that might help in implementing the feature\n\n[🔝 Back to top](#table-of-content)\n\n## <span id=\"understanding-the-project\">✨ Understanding the Project</span>\n\nBefore contributing to the project, you need to understand the project structure and how it works. This section guides you through the project structure and how to run the project locally.\n\n### <span id=\"prerequisite\">Prerequisite</span>\n\nThis project uses [pnpm](https://pnpm.io/) as its package manager. If you already have [Node.js](https://nodejs.org/en) installed, this is how you can install pnpm globally:\n\n```bash\nnpm i -g pnpm\n```\n\nIf you do not have Node.js installed, run the command:\n\n```bash\nnpm install -g @pnpm/exe\n```\n\n> Note: For node 20.x upwards, some users have reported issues with pnpm. Check the [pnpm documentation](https://pnpm.io/installation#compatibility) for more information, including other ways to install pnpm.\n\n### <span id=\"project-structure\">Project Structure</span>\n\nThe project uses a [monorepo](https://monorepo.tools/) structure and is divided into three main folders:\n\n1. `packages` - This folder contains all the packages used within the Million.js library\n2. `test` - This folder contains all the tests written for the Million.js library\n3. `website` - This folder contains the code for the website [Million.js](https://million.dev/)\n\n#### 1. `packages` folder\n\nThe `packages` folder contains all the code related to the Million.js package, built using Typescript. The source code is divided into six main folders:\n\n- `compiler` - This folder contains all the code related to the Million.js React compilers\n- `jsx-runtime` - This folder contains the code related to the runtime code for jsx.\n- `million` - This folder contains the code for the core Million.js package. The implementation of the optimized array rendering `<For/>`, `block()`, and virtual DOM for React are in here.\n- `react` and `react-server` - This folder contains the Million.js support package for React\n- `types` - This folder contains all the shared types between packages\n\nTo run the project locally, run the following commands:\n\n```bash\npnpm install\npnpm run dev\n```\n\n#### 2. `test` folder\n\nThis folder contains the code for the tests for the implementation of core Million.js features like the \"map-array\" with `<For/>`, `block()`, and so on. The test uses the [Vitest](https://vitest.dev/).\n\nTo run the test locally:\n\n```bash\npnpm install\npnpm run test\n```\n\n#### 3. `website` folder\n\nThis folder contains the code for the Million.js website built with [Nextra](https://nextra.site/), a framework that allows you to create static websites with [Next.js](https://nextjs.org/) and [MDX](https://mdxjs.com/).\n\nThe source code is divided into four main folders:\n\n- `pages` - This folder contains all the website pages.\n- `components` - This folder contains all the website components.\n- `styles` - This folder contains all the styles of the website\n- `public` - This folder contains all the website's static files.\n\n> Note: To contribute to the website, you need to have a basic understanding of [Next.js](https://nextjs.org/docs) and [MDX.](https://mdxjs.com/)\n\nThen, you'll need to install the dependencies and run the development server following the commands below:\n\n```bash\npnpm install\ncd website  # Takes you to the website mono-repo\npnpm run dev\n```\n\n[🔝 Back to top](#table-of-content)\n\n## <span id=\"contributing-to-the-project\">📝 Contributing to the Project</span>\n\nIf you want to do more than report an issue or suggest an enhancement, you can contribute to the project by:\n\n- cloning the repository (repo)\n- making your changes\n- opening a pull request\n\n### <span id=\"cloning-the-repo\">Cloning the Repository (repo)</span>\n\n#### 1. Fork the repo\n\nClick the fork button at the top right of the page to create a copy of this repo in your account, or go to the [Million.js fork page](https://github.com/aidenybai/million/fork).\n\nAfter successfully forking the repo, you will be directed to your repo copy.\n\n#### 2. Clone the forked repo\n\nOn your forked repo, click the green button that says `Code`. It will open a dropdown menu. Copy the link in the input with the label `HTTPS` or `GitHub CLI` depending on your preferred cloning mode.\n\nFor HTTPS, open up your terminal and run the following command:\n\n```bash\ngit clone <your-clone-link>\n# or\ngit clone https://github.com/<your-username>/million.git\n```\n\nReplace `<your-username>` with your GitHub username.\n\nYou can also clone the repo using the GitHub CLI. To do this, run the following command:\n\n```bash\ngh repo clone <your-username>/million\n```\n\n#### 3. Set up the project\n\nTo set up the project, navigate into the project directory and open up the project in your preferred code editor.\n\n```bash\ncd million\ncode . # Opens up the project in VSCode\n```\n\nInstall the dependencies using pnpm. You need to have [pnpm](https://pnpm.io/) installed; see the [prerequisite](#prerequisite) section.\n\n```bash\npnpm install\n```\n\n### <span id=\"making-your-changes\">Making your Changes</span>\n\n#### 1. Create a new branch\n\nCreate a new branch from the `main` branch. Your branch name should be descriptive of the changes you are making. E.g., `docs-updating-the-readme-file`. Some ideas to get you started:\n\n- For Feature Updates: `feat-<brief 2-4 words-Description>-<ISSUE_NO>`\n- For Bug Fixes: `fix-<brief 2-4 words-Description>-<ISSUE_NO>`\n- For Documentation: `docs-<brief 2-4 words-Description>-<ISSUE_NO>`\n\nTo create a new branch, use the following command:\n\n```bash\ngit checkout -b <your-branch-name>\n```\n\n#### 2. Run the project\n\nThe project is a mono repo containing the codes for the **website**, the **core Million.js package**, the **playground**, and the **tests**.\n\nIf you want to run the website locally, you need to `cd` into the website folder before running the development server:\n\n```bash\ncd website # Takes you to the website mono-repo\npnpm run dev\n```\n\n#### 3. Make your changes\n\nYou are to make only one contribution per pull request. It makes it easier to review and merge. If you have multiple bug fixes or features, create separate pull requests for each.\n\n#### 4. Commit your changes\n\nYour commit message should give a concise idea of the issue you are solving. It should follow the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) specification, as this helps us generate the project changelog automatically. A traditional structure of commit looks like so:\n\n```bash\n<type>(optional scope): <description>\n```\n\nTo commit your changes, run the following command:\n\n```bash\ngit add .\ngit commit -m \"<your_commit_message>\"\n```\n\nEg:\n\n```bash\ngit commit -m \"feat: add support for Next.js\"\n```\n\n#### 5. Clean up your code and push changes\n\nAfter committing your changes, run the following command before pushing your local commits to the remote repository and ensure that all tests pass and there are no linting errors.\n\n```bash\npnpm cleanup\npnpm lint\npnpm test\n```\n\nOnce all tests and linting pass, push your local commits to your remote repository.\n\n```bash\ngit push origin your-branch-name\n```\n\n### <span id=\"opening-a-pull-request\">Opening a Pull Request(PR)</span>\n\n#### 1. Create a new [Pull Request (PR)](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)\n\nGo to the [Million.js repository](https://github.com/aidenybai/million/tree/main) and click the `compare & pull request` button or go to the [Pull Request page](https://github.com/aidenybai/million/pulls) and click on the `New pull request` button. It will take you to the `Open a pull request` page.\n\n> Note: Make sure your PR points to the `main` branch, not any other one.\n\n#### 2. Wait for review\n\n🎉 Congratulations! You've made your pull request! A maintainer will review and merge your code or request changes. If changes are requested, make them and push them to your branch. Your pull request will automatically track the changes on your branch and update.\n\n[🔝 Back to top](#table-of-content)\n\n## <span id=\"creating-a-dev-playground\">🎮 Creating A Development Playground</span>\n\nIf you are contributing to the Million.js package, you might want to test your changes in a controlled environment before applying them to the official Million.js package. This section guides you through creating a development playground for testing your changes.\n\n### <span id=\"setting-up-a-development-environment\">Setting Up A Development Environment</span>\n\nTo test your changes to the Million.js project on your computer, you must set up a development environment within an existing React project that uses Million.js as a dependency.\n\n> Note: If you don't have an existing React project, you can create a new one using [Create React App](https://create-react-app.dev/) or [Next.js](https://nextjs.org/). Then install Million.js as a dependency using `npm install million`, `pnpm install million`, or `yarn add million`. If you already have the Million.js project cloned on your computer, you could also import it from your local file system as will be shown below.\n\nHere's how to do it:\n\n**1. Prepare Your Project**: Open the React or Next.js project you want to use as a playground for testing Million.js changes.\n\n**2. Update Import Paths**: In your project's code, find the places where you import or want to Million.js components or functions. The imports might look something like this:\n\n```jsx\nimport { block } from 'million/react';\n```\n\n**3. Switch to Absolute Paths**: Instead of using relative import paths (like 'million/react'), you'll change them to or use absolute paths that directly point to your local Million.js codebase on your computer. For example:\n\n```jsx\nimport { block } from '/home/your-username/path-to-your-local-million/react';\n```\n\nReplace `/home/your-username/path-to-your-local-million/react` with the actual path to your Million.js codebase.\n\nBy doing this, you're effectively telling your project to use the local version of Million.js on your computer rather than the published version from npm. This way, you can test your changes in a controlled environment before applying them to the official Million.js package.\n\n**4. Run Your Project**: Run your project and test your changes. If you make any changes to the Million.js codebase, you'll need to restart your project to see the changes.\n\n[🔝 Back to top](#table-of-content)\n\n## <span id=\"license\">📄 License</span>\n\nMillion.js is [MIT licensed](https://github.com/aidenybai/million/blob/main/LICENSE).\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "github: [aidenybai]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: \"\\U0001F41B Bug Report\"\ndescription: Report an issue or possible bug\nlabels: []\nassignees: []\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        ##  Quick Checklist\n        Thank you for taking the time to file a bug report! Please fill out this form as completely as possible.\n\n        ✅ I am using the **latest version of Million.js** and all plugins.\n        ✅ I am using a version of Node that supports ESM (`v14.18.0+`, or `v16.12.0+`)\n  - type: input\n    id: million-version\n    attributes:\n      label: What version of `million` are you using?\n      placeholder: 0.0.0\n    validations:\n      required: true\n  - type: input\n    id: ssr-adapter\n    attributes:\n      label: Are you using an SSR adapter? If so, which one?\n      placeholder: None, or Netlify, Vercel, Cloudflare, etc.\n    validations:\n      required: true\n  - type: input\n    id: package-manager\n    attributes:\n      label: What package manager are you using?\n      placeholder: npm, yarn, pnpm\n    validations:\n      required: true\n  - type: input\n    id: os\n    attributes:\n      label: What operating system are you using?\n      placeholder: Mac, Windows, Linux\n    validations:\n      required: true\n  - type: input\n    id: browser\n    attributes:\n      label: What browser are you using?\n      placeholder: Chrome, Firefox, Safari\n    validations:\n      required: true\n  - type: textarea\n    id: bug-description\n    attributes:\n      label: Describe the Bug\n      description: A clear and concise description of what the bug is.\n    validations:\n      required: true\n  - type: textarea\n    id: bug-expectation\n    attributes:\n      label: What's the expected result?\n      description: Describe what you expect to happen.\n    validations:\n      required: true\n  - type: input\n    id: bug-reproduction\n    attributes:\n      label: Link to Minimal Reproducible Example\n      description: '**A minimal reproduction is required** so that others can help debug your issue. If a report is vague (e.g. just a generic error message) and has no reproduction, it may be auto-closed.'\n      placeholder: 'https://stackblitz.com/abcd1234'\n    validations:\n      required: true\n  - type: checkboxes\n    id: will-pr\n    attributes:\n      label: Participation\n      options:\n        - label:  I am willing to submit a pull request for this issue.\n          required: false"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation.yml",
    "content": "description: Report a typo or missing area of documentation\nlabels:\n  - \"area: documentation\"\nname: 📝 Documentation\ntitle: \"📝 Documentation: <short description of the request>\"\nbody:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!\n      label: Bug Report Checklist\n      options:\n        - label: I have pulled the latest `main` branch of the repository.\n          required: true\n        - label: \"I have searched for [related issues](https://github.com/aidenybai/million/issues) and found none that matched my issue.\"\n          required: true\n    type: checkboxes\n  - attributes:\n      description: What would you like to report?\n      label: Overview\n    type: textarea\n    validations:\n      required: true\n  - attributes:\n      description: Any additional info you'd like to provide.\n      label: Additional Info\n    type: textarea\ndescription: Report a typo or missing area of documentation\nlabels:\n  - \"area: documentation\"\nname: 📝 Documentation\ntitle: \"📝 Documentation: <short description of the request>\"\n\n\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: \"🚀 Feature Request\"\ndescription: Suggest a Feature or an Improvement\nlabels: [\"pending triage\"]\nbody:\n  - type: markdown\n    attributes:\n      value: Thank you for taking the time to fill out this feature request!\n  - type: textarea\n    id: feature-description\n    attributes:\n      label: Describe the feature\n      description: A clear and concise description of what you think would be a helpful addition, including the possible use cases and alternatives you have considered. If you have a working prototype or module that implements it, please include a link.\n      placeholder: Feature description\n    validations:\n      required: true\n  - type: checkboxes\n    id: additional-info\n    attributes:\n      label: Additional information\n      description: Additional information that helps us decide how to proceed.\n      options:\n        - label: Would you be willing to help implement this feature?"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/tooling.yml",
    "content": "description: Report a bug or request an enhancement in repository tooling\nlabels:\n  - 'area: tooling'\nname: 🛠 Tooling\ntitle: '🛠 Tooling: <short description of the change>'\nbody:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!\n      label: Bug Report Checklist\n      options:\n        - label: I have tried restarting my IDE and the issue persists.\n          required: true\n        - label: I have pulled the latest `main` branch of the repository.\n          required: true\n        - label: 'I have searched for [related issues](https://github.com/aidenybai/million/issues) and found none that matched my issue.'\n          required: true\n    type: checkboxes\n  - attributes:\n      description: What did you expect to be able to do?\n      label: Overview\n    type: textarea\n    validations:\n      required: true\n  - attributes:\n      description: Any additional info you'd like to provide.\n      label: Additional Info\n    type: textarea\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "**Please describe the changes this PR makes and why it should be merged:**\n\n**Status**\n\n- [ ] Code changes have been tested against prettier, or there are no code changes\n- [ ] I know how to update typings and have done so, or typings don't need updating\n\n**Semantic versioning classification:**\n\n- [ ] This PR changes the codebase\n  - [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)\n  - [ ] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)\n- [ ] This PR **only** includes non-code changes, like changes to documentation, README, etc.\n"
  },
  {
    "path": ".github/labeler.yml",
    "content": "name: Auto Labeling\n\non:\n  issues:\n    types: [opened, labeled, unlabeled]\n  pull_request:\n    types: [opened, labeled, unlabeled]\n\njobs:\n  label:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Label issues and pull requests\n        uses: actions/labeler@v4\n        with:\n          repo-token: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/auto-response.yml",
    "content": "name: Automated Responses\n\non:\n  issues:\n    types: [opened]\n  pull_request_target:\n    types: [opened]\n\njobs:\n  respond:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Comment on new issue\n      if: github.event_name == 'issues'\n      uses: actions/github-script@v6\n      with:\n        github-token: ${{ secrets.GITHUB_TOKEN }}\n        script: |\n          github.rest.issues.createComment({\n            issue_number: context.issue.number,\n            owner: context.repo.owner,\n            repo: context.repo.repo,\n            body: 'Thanks for opening this issue! A maintainer will review it soon.',\n          })\n          \n    - name: Comment on new pull request\n      if: github.event_name == 'pull_request_target'\n      uses: actions/github-script@v6\n      with:\n        github-token: ${{ secrets.GITHUB_TOKEN }}\n        script: |\n          github.rest.pulls.createReview({\n            pull_number: context.issue.number,\n            owner: context.repo.owner,\n            repo: context.repo.repo,\n            body: 'Thanks for opening this pull request! A maintainer will review it soon.',\n            event: 'COMMENT',\n          })\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version: [19.x]\n    steps:\n      - uses: actions/checkout@v2\n\n      - uses: pnpm/action-setup@v2.0.1\n        with:\n          version: 8.1.1\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v1\n        with:\n          node-version: ${{ matrix.node-version }}\n      - run: pnpm i\n      - run: pnpm lint\n      - run: pnpm test\n      - name: Coveralls Parallel\n        uses: coverallsapp/github-action@master\n        with:\n          github-token: ${{ secrets.github_token }}\n          flag-name: run-${{ matrix.test_number }}\n          parallel: true\n\n  finish:\n    needs: build\n    runs-on: ubuntu-latest\n    steps:\n      - name: Coveralls Finished\n        uses: coverallsapp/github-action@master\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          parallel-finished: true\n"
  },
  {
    "path": ".github/workflows/issue-needs-repro.yml",
    "content": "name: Close Issues (needs repro)\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n\njobs:\n  close-issues:\n    runs-on: ubuntu-latest\n    steps:\n      - name: needs repro\n        uses: actions-cool/issues-helper@v3\n        with:\n          actions: 'close-issues'\n          token: ${{ secrets.GITHUB_TOKEN }}\n          labels: 'needs repro'\n          inactive-day: 3\n"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish Package to npmjs\non:\n  release:\n    types: [published]\n  workflow_dispatch:\njobs:\n  build:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      id-token: write\n    steps:\n      - uses: actions/checkout@v3\n      - uses: pnpm/action-setup@v2.0.1\n        with:\n          version: 8.1.1\n      # Setup .npmrc file to publish to npm\n      - uses: actions/setup-node@v3\n        with:\n          node-version: '18.x'\n          registry-url: 'https://registry.npmjs.org'\n      - run: pnpm i\n      - run: pnpm test\n      - run: pnpm lint\n      - run: pnpm build\n      - run: npm i -g npm\n      - run: npm publish --provenance --access public\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "dist\nnode_modules\npackage-lock.json\nyarn-error.log\nyarn.lock\ndev\ncoverage\n.DS_Store\n.pnpm-debug.log\n*.tgz\n.next\n.turbo\n.eslintcache\n.vscode"
  },
  {
    "path": ".prettierignore",
    "content": "node_modules\ndist\nwebsite/pages/docs/compiler.mdx\nwebsite/pages/docs/install.mdx\nwebsite/pages/docs/quickstart.mdx\nwebsite/pages/docs/rules.mdx\nwebsite/pages/docs/automatic.mdx\nwebsite/pages/blog/*.mdx"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021-present Aiden Bai\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "> I'm working on something new (still free + open source!)\n> \n> React Grab allows you to select an element and copy its context (like HTML, React component, and file source)\n>\n> Check it out: [**react-grab.com**](https://react-grab.com)\n\n<a href=\"https://million.dev\">\n  <img src=\"https://raw.githubusercontent.com/aidenybai/million/main/.github/assets/banner.png\" alt=\"Million.js Banner\" />\n</a>\n\n<div align=\"center\">\n  <a href=\"https://img.shields.io/github/actions/workflow/status/aidenybai/million/ci.yml?branch=main\" target=\"_blank\"><img src=\"https://img.shields.io/github/actions/workflow/status/aidenybai/million/ci.yml?branch=main&style=flat&colorA=000000&colorB=000000\" alt=\"CI\" /></a>\n  <a href=\"https://www.npmjs.com/package/million\" target=\"_blank\"><img src=\"https://img.shields.io/npm/v/million?style=flat&colorA=000000&colorB=000000\" alt=\"NPM Version\" /></a>\n    <a href=\"https://www.npmjs.com/package/million\" target=\"_blank\"><img src=\"https://img.shields.io/npm/dt/million.svg?style=flat&colorA=000000&colorB=000000\" alt=\"NPM Downloads\" /></a>\n  <a href=\"https://discord.gg/X9yFbcV2rF\" target=\"_blank\"><img src=\"https://img.shields.io/discord/938129049539186758?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=ffffff\" /></a>\n\n<table>\n    <tbody>\n      <tr>\n        <td>\n          <a href=\"https://million.dev/docs/introduction\">📚 Read the docs</a>\n        </td>\n        <td>\n          <a href=\"https://www.youtube.com/watch?v=VkezQMb1DHw\">🎦 Watch video</a>\n        </td>\n        <td>\n          <a href=\"https://million.dev/chat\">💬 Join our Discord</a>\n        </td>\n        <td>\n          <a href=\"https://twitter.com/milliondotjs\">🌐 Follow on Twitter</a>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n\n## What is Million.js?\n\nMillion.js is an extremely fast and lightweight optimizing compiler that make [components](https://react.dev) up to [_**70% faster**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n> Oh man... Another [`/virtual dom|javascript/gi`](https://regexr.com/6mr5f) framework? I'm fine with [React](https://reactjs.org) already, why do I need this?\n\nMillion.js works with React and makes reconciliation faster. By using a fine-tuned, optimized virtual DOM, Million.js reduces the overhead of diffing ([_try it out here_](https://demo.million.dev))\n\n**TL;DR:** Imagine [React](https://react.dev) components running at the speed of raw JavaScript.\n\n### [**👉 Setup Million.js in seconds! →**](https://million.dev/)\n\n## Installation\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n```bash\nnpx million@latest\n```\n\nOnce your down, just run your project and information should show up in your command line!\n\n> Having issues installing? [**→ View the installation guide**](https://million.dev/docs/install)\n\n## Why Million.js?\n\nTo understand why to use Million.js, we need to understand how React updates interfaces. When an application's state or props change, React undergoes an update in two parts: rendering and reconciliation.\n\nTo show this, let's say this is our `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nIn this `App`, when I click on the button, the `count` state will update and the `<p>` tag will update to reflect the new value. Let's break this down.\n\n### Rendering\n\nThe first step is rendering. Rendering is the process of generating a snapshot of the current component. You can imagine it as simply \"calling\" the `App` function and storing the output in a variable. This is what the `App` snapshot would look like:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliation\n\nIn order to update the interface to reflect the new state, React needs to compare the previous snapshot to the new snapshot (_called \"diffing\"_). React's reconciler will go to each element in the previous snapshot and compare it to the new snapshot. If the element is the same, it will skip it. If the element is different, it will update it.\n\n- The `<div>` tag is the same, so it doesn't need to be updated. ✅\n  - The `<p>` tag is the same, so it doesn't needs to be updated. ✅\n    - The text inside the `<p>` tag is different, so it needs to be updated. ⚠ ️\n  - The `<button>` tag is the same, so it doesn't need to be updated. ✅\n    - The `onClick` prop is the same, so it doesn't need to be updated. ✅\n    - The text inside the `<button>` tag is the same, so it doesn't need to be updated. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nFrom here, we can see that the `<p>` tag needs to be updated. React will then update the `<p>` DOM node to reflect the new value.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### How Million.js makes this faster\n\nReact is slow.\n\nThe issue with React's reconciliation it becomes **exponentially slower** the more JSX elements you have. With this simple `App`, it only needs to diff a few elements. In a real world React app, you can easily have hundreds of elements, slowing down interface updates.\n\nMillion.js solves this by **skipping the diffing step entirely** and directly updating the DOM node.\n\nHere is a conceptual example of how Million.js reconciler works:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generated by compiler\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nNotice how when the `count` is updated, Million.js will directly update the DOM node. Million.js turns React reconciliation from `O(n)` (linear time) to `O(1)` (constant time).\n\n> How fast is it? [**→ View the benchmarks**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Resources & Contributing Back\n\nLooking for the docs? Check the [documentation](https://million.dev) or the [Contributing Guide](https://github.com/aidenybai/million/blob/main/.github/CONTRIBUTING.md) out. We also recommend reading [_Virtual DOM: Back in Block_](https://million.dev/blog/virtual-dom) to learn more about Million.js's internals.\n\nWant to talk to the community? Hop in our [Discord](https://discord.gg/X9yFbcV2rF) and share your ideas and what you've build with Million.js.\n\nFind a bug? Head over to our [issue tracker](https://github.com/aidenybai/million/issues) and we'll do our best to help. We love pull requests, too!\n\nWe expect all Million.js contributors to abide by the terms of our [Code of Conduct](https://github.com/aidenybai/million/blob/main/.github/CODE_OF_CONDUCT.md).\n\n[**→ Start contributing on GitHub**](https://github.com/aidenybai/million/blob/main/.github/CONTRIBUTING.md)\n\n![Alt](https://repobeats.axiom.co/api/embed/74a4b271e2a24c2cb08c897cfc1dfe155e0e1c1e.svg 'Repobeats analytics image')\n\n## Codebase\n\nThis repo is a \"mono-repo\" with modules. Million.js ships as one NPM package, but has first class modules for more complex, but important extensions. Each module has its own folder in the `/packages` directory.\n\nYou can also track our progress through our [Roadmap](https://github.com/users/aidenybai/projects/5/views/1?layout=roadmap).\n\n| Module                                                                                                                                                            | Description                                         |\n| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |\n| [`million`](https://github.com/aidenybai/million/tree/main/packages/million)                                                                                      | The main Virtual DOM with all of Million.js's core. |\n| [`react`](https://github.com/aidenybai/million/tree/main/packages/react) / [`react-server`](https://github.com/aidenybai/million/tree/main/packages/react-server) | React compatibility for Million.js.                 |\n| [`compiler`](https://github.com/aidenybai/million/tree/main/packages/compiler)                                                                                    | The compiler for Million.js in React.               |\n| [`jsx-runtime`](https://github.com/aidenybai/million/tree/main/packages/jsx-runtime)                                                                              | A simple JSX runtime for Million.js core.           |\n| [`types`](https://github.com/aidenybai/million/tree/main/packages/types)                                                                                          | Shared types between packages                       |\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/aidenybai\">\n    <img src=\"https://raw.githubusercontent.com/aidenybai/aidenybai/master/sponsors.svg\" />\n  </a>\n  <a href=\"https://vercel.com?utm_source=millionjs&utm_campaign=oss\"><img height=\"30\" src=\"https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg\" /></a>\n</p>\n\n## Acknowledgments\n\nMillion.js takes heavy inspiration from the following projects:\n\n- [`blockdom`](https://github.com/ged-odoo/blockdom) ([Géry Debongnie](https://github.com/ged-odoo))\n  Thank you to Géry pioneering the concept of \"blocks\" in the virtual DOM. Many parts of the Million.js codebase either directly or indirectly derive from his work.\n- [`voby`](https://github.com/vobyjs/voby) ([Fabio Spampinato](https://github.com/fabiospampinato))\n  The Million.js \"template\" concept is derived from Voby's `template()` API.\n- [Hack the Wave](https://hackthewave.com) ([Melinda Chang](https://github.com/melindachang)) for their homepage.\n- [`react`](https://react.dev) and [`turbo`](https://turbo.build) for their documentation. Many parts of the current Million.js documentation are grokked and modified from theirs.\n- [`ivi`](https://github.com/localvoid/ivi), [Preact](https://github.com/preactjs/preact), [and more](https://krausest.github.io/js-framework-benchmark/2021/table_chrome_96.0.4664.45.html)\n\n## License\n\nMillion.js is [MIT-licensed](LICENSE) open-source software by [Aiden Bai](https://aiden.mov) and [contributors](https://github.com/aidenybai/million/graphs/contributors):\n\n<a href=\"https://github.com/aidenybai/million/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=aidenybai/million\" />\n</a>\n"
  },
  {
    "path": "build.config.ts",
    "content": "import { defineBuildConfig } from 'unbuild';\nimport banner from 'rollup-plugin-banner2';\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport replace from '@rollup/plugin-replace';\n\nconst version = JSON.parse(\n  readFileSync(join(__dirname, 'package.json'), 'utf-8'),\n).version;\n\nexport default defineBuildConfig({\n  entries: [\n    './packages/million',\n    './packages/experimental',\n    './packages/jsx-runtime',\n    './packages/compiler',\n    './packages/react',\n    './packages/react-server',\n    './packages/types',\n    './packages/cli',\n  ],\n  declaration: true,\n  clean: true,\n  failOnWarn: false,\n  rollup: {\n    emitCJS: true,\n    inlineDependencies: true,\n  },\n  hooks: {\n    'rollup:options'(_ctx, options) {\n      if (Array.isArray(options?.plugins)) {\n        options.plugins.push(banner(() => `'use client';\\n`) as any);\n        options.plugins.push(\n          replace({\n            preventAssignment: true,\n            'process.env.VERSION': JSON.stringify(version),\n          }),\n        );\n      }\n    },\n  },\n  externals: ['react', 'react-dom', 'million', 'vite', 'esbuild', 'rollup'],\n});\n"
  },
  {
    "path": "cli.js",
    "content": "#!/usr/bin/env node\n\nconst { spawn } = require('child_process');\n\ntry {\n  spawn('npx', ['@million/install@latest'], {\n    stdio: ['inherit', 'inherit', 'ignore'],\n    shell: true,\n  });\n} catch (_) {}\n"
  },
  {
    "path": "compiler.d.ts",
    "content": "import unplugin from './dist/packages/compiler';\nexport * from './dist/packages/compiler';\nexport default unplugin;\n"
  },
  {
    "path": "jsx-runtime.d.ts",
    "content": "export * from './dist/packages/jsx-runtime';\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"million\",\n  \"version\": \"3.1.10\",\n  \"description\": \"Make React Faster. Automatically.\",\n  \"keywords\": [\n    \"million\",\n    \"virtualdom\",\n    \"vdom\",\n    \"library\",\n    \"web\",\n    \"ui\",\n    \"browser\"\n  ],\n  \"homepage\": \"https://million.dev\",\n  \"bugs\": {\n    \"url\": \"https://github.com/aidenybai/million/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/aidenybai/million.git\"\n  },\n  \"funding\": \"https://github.com/sponsors/aidenybai\",\n  \"license\": \"MIT\",\n  \"author\": {\n    \"name\": \"Aiden Bai\",\n    \"email\": \"hello@aidenybai.com\",\n    \"url\": \"https://aidenybai.com\"\n  },\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/packages/million.d.mts\",\n        \"default\": \"./dist/packages/million.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/million.d.ts\",\n        \"default\": \"./dist/packages/million.cjs\"\n      }\n    },\n    \"./jsx-runtime\": {\n      \"import\": {\n        \"types\": \"./dist/packages/jsx-runtime.d.mts\",\n        \"default\": \"./dist/packages/jsx-runtime.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/jsx-runtime.d.ts\",\n        \"default\": \"./dist/packages/jsx-runtime.cjs\"\n      }\n    },\n    \"./compiler\": {\n      \"import\": {\n        \"types\": \"./dist/packages/compiler.d.mts\",\n        \"default\": \"./dist/packages/compiler.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/compiler.d.ts\",\n        \"default\": \"./dist/packages/compiler.cjs\"\n      }\n    },\n    \"./experimental\": {\n      \"import\": {\n        \"types\": \"./dist/packages/experimental.d.mts\",\n        \"default\": \"./dist/packages/experimental.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/experimental.d.ts\",\n        \"default\": \"./dist/packages/experimental.cjs\"\n      }\n    },\n    \"./react\": {\n      \"import\": {\n        \"types\": \"./dist/packages/react.d.mts\",\n        \"default\": \"./dist/packages/react.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/react.d.ts\",\n        \"default\": \"./dist/packages/react.cjs\"\n      }\n    },\n    \"./react-server\": {\n      \"import\": {\n        \"types\": \"./dist/packages/react-server.d.mts\",\n        \"default\": \"./dist/packages/react-server.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/react-server.d.ts\",\n        \"default\": \"./dist/packages/react-server.cjs\"\n      }\n    },\n    \"./types\": {\n      \"import\": {\n        \"types\": \"./dist/packages/types.d.mts\",\n        \"default\": \"./dist/packages/types.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/packages/types.d.ts\",\n        \"default\": \"./dist/packages/types.cjs\"\n      }\n    },\n    \"./*\": \"./*\"\n  },\n  \"main\": \"dist/packages/million.mjs\",\n  \"jsdelivr\": \"dist/packages/million.mjs\",\n  \"unpkg\": \"dist/packages/million.mjs\",\n  \"module\": \"dist/packages/million.mjs\",\n  \"types\": \"dist/packages/million.d.ts\",\n  \"bin\": \"./cli.js\",\n  \"files\": [\n    \"dist/**/*\",\n    \"packages/cli/dist/index.js\",\n    \"react.d.ts\",\n    \"jsx-runtime.d.ts\",\n    \"compiler.d.ts\",\n    \"react-server.d.ts\",\n    \"types.d.ts\",\n    \"cli.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"unbuild\",\n    \"bump\": \"pnpm build && pnpm test && pnpm lint && bumpp\",\n    \"cleanup\": \"prettier --write ./**/*.{ts,tsx}\",\n    \"lint\": \"eslint ./packages --ext .ts --cache\",\n    \"lint:fix\": \"pnpm lint --fix\",\n    \"test\": \"vitest run --coverage\",\n    \"test:dev\": \"vitest watch\"\n  },\n  \"prettier\": \"@vercel/style-guide/prettier\",\n  \"dependencies\": {\n    \"@babel/core\": \"^7.23.7\",\n    \"@babel/types\": \"^7.23.6\",\n    \"@rollup/pluginutils\": \"^5.1.0\",\n    \"kleur\": \"^4.1.5\",\n    \"undici\": \"^6.3.0\",\n    \"unplugin\": \"^1.6.0\"\n  },\n  \"devDependencies\": {\n    \"@rollup/plugin-replace\": \"^5.0.5\",\n    \"@types/babel__core\": \"^7.20.5\",\n    \"@types/node\": \"^18.19.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.62.0\",\n    \"@typescript-eslint/parser\": \"^5.62.0\",\n    \"@vercel/style-guide\": \"^5.1.0\",\n    \"@vitejs/plugin-react\": \"^4.2.1\",\n    \"@vitest/coverage-v8\": \"^1.1.1\",\n    \"babel-plugin-tester\": \"^11.0.4\",\n    \"bumpp\": \"^9.2.1\",\n    \"c8\": \"^7.14.0\",\n    \"esbuild\": \"^0.14.54\",\n    \"eslint\": \"^8.56.0\",\n    \"eslint-config-prettier\": \"^8.10.0\",\n    \"jsdom\": \"^21.1.2\",\n    \"prettier\": \"^3.1.1\",\n    \"rollup\": \"^4.9.2\",\n    \"rollup-plugin-banner2\": \"^1.2.2\",\n    \"source-map\": \"^0.7.4\",\n    \"tslib\": \"^2.6.2\",\n    \"typescript\": \"^5.3.3\",\n    \"unbuild\": \"2.0.0\",\n    \"vite\": \"^5.0.12\",\n    \"vite-tsconfig-paths\": \"^4.2.3\",\n    \"vitest\": \"1.0.1\"\n  },\n  \"packageManager\": \"pnpm@9.1.4\"\n}\n"
  },
  {
    "path": "packages/cli/build.mjs",
    "content": "import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { build } from 'esbuild';\nimport { replace } from 'esbuild-plugin-replace';\n\nconst __dirname = fileURLToPath(new URL('.', import.meta.url));\n\nconst version = JSON.parse(\n  readFileSync(join(__dirname, '../../package.json'), 'utf-8')\n).version;\n\nbuild({\n  entryPoints: ['src/index.ts'],\n  // bundle: true,\n  platform: 'node',\n  outfile: 'dist/index.js',\n  format: 'cjs',\n  plugins: [\n    replace({\n      'process.env.VERSION': JSON.stringify(version),\n    }),\n  ],\n});\n"
  },
  {
    "path": "packages/cli/package.json",
    "content": "{\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"million\": \"./dist/index.js\"\n  },\n  \"scripts\": {\n    \"prepare\": \"node build.mjs\",\n    \"link\": \"yarn unlink --global && chmod +x dist/index.js && yarn link\",\n    \"dev\": \"node ./dist/index.js\",\n    \"prepublishOnly\": \"pnpm run build\",\n    \"clean\": \"rm -r dist node_modules\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^18.14.1\",\n    \"esbuild\": \"^0.14.54\",\n    \"esbuild-plugin-replace\": \"^1.4.0\",\n    \"prettier\": \"^2.8.4\",\n    \"typescript\": \"^5.1.6\"\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/index.ts",
    "content": "#! /usr/bin/env node\n\nimport { install } from '@million/install';\n\nvoid install('Million', process.env.VERSION);\n"
  },
  {
    "path": "packages/cli/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es2016\",\n    \"lib\": [],\n    \"module\": \"commonjs\",\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"noEmit\": true,\n    \"noUncheckedIndexedAccess\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true\n  }\n}\n"
  },
  {
    "path": "packages/compiler/README.md",
    "content": "# `million/compiler`\n\n> Note: this page is a stub\n\nWelcome to the Million.js compiler! Here is a [great primer](https://million.dev/blog/behind-the-block) on how the compiler works.\n"
  },
  {
    "path": "packages/compiler/auto.ts",
    "content": "import type * as babel from '@babel/core';\nimport * as t from '@babel/types';\nimport { REACT_IMPORTS, TRACKED_IMPORTS } from './constants';\nimport type { StateContext } from './types';\nimport {\n  isComponentishName,\n  isPathValid,\n  isStatementTopLevel,\n} from './utils/checks';\nimport { generateUniqueName } from './utils/generate-unique-name';\nimport { getDescriptiveName } from './utils/get-descriptive-name';\nimport { getImportIdentifier } from './utils/get-import-specifier';\nimport { getRootStatementPath } from './utils/get-root-statement-path';\nimport { getValidImportDefinition } from './utils/get-valid-import-definition';\nimport { isGuaranteedLiteral } from './utils/is-guaranteed-literal';\nimport { isJSXComponentElement } from './utils/is-jsx-component-element';\nimport { logImprovement } from './utils/log';\nimport { isUseClient } from './utils/is-use-client';\nimport { registerImportDefinition } from './utils/register-import-definition';\nimport { unwrapNode } from './utils/unwrap-node';\nimport { unwrapPath } from './utils/unwrap-path';\nimport { shouldBeIgnored } from './utils/ast';\n\ninterface JSXStateContext {\n  bailout: boolean;\n\n  elements: number;\n  attributes: number;\n  components: number;\n  text: number;\n  returns: number;\n}\n\nfunction measureExpression(\n  state: JSXStateContext,\n  expr: babel.NodePath<t.Expression>,\n  portal: boolean,\n): void {\n  const unwrappedJSX = unwrapPath(expr, t.isJSXElement);\n  if (unwrappedJSX) {\n    measureJSXExpressions(state, unwrappedJSX);\n    return;\n  }\n  const unwrappedFragment = unwrapPath(expr, t.isJSXFragment);\n  if (unwrappedFragment) {\n    measureJSXExpressions(state, unwrappedFragment);\n    return;\n  }\n  if (isGuaranteedLiteral(expr.node)) {\n    return;\n  }\n  if (portal) {\n    state.components++;\n  } else {\n    state.attributes++;\n  }\n}\n\nfunction measureJSXSpreadChild(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXSpreadChild>,\n): void {\n  measureExpression(state, path.get('expression'), false);\n}\n\nfunction measureJSXExpressionContainer(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXExpressionContainer>,\n  portal: boolean,\n): void {\n  const expr = path.get('expression');\n  if (isPathValid(expr, t.isExpression)) {\n    measureExpression(state, expr, portal);\n  }\n}\n\nfunction measureJSXAttribute(\n  state: JSXStateContext,\n  attr: babel.NodePath<t.JSXAttribute>,\n): void {\n  const value = attr.get('value');\n  if (isPathValid(value, t.isJSXElement)) {\n    measureJSXExpressions(state, value);\n  } else if (isPathValid(value, t.isJSXFragment)) {\n    measureJSXExpressions(state, value);\n  } else if (isPathValid(value, t.isJSXExpressionContainer)) {\n    measureJSXExpressionContainer(state, value, false);\n  }\n}\n\nfunction measureJSXSpreadAttribute(\n  state: JSXStateContext,\n  attr: babel.NodePath<t.JSXSpreadAttribute>,\n): void {\n  measureExpression(state, attr.get('argument'), false);\n}\n\nfunction measureJSXAttributes(\n  state: JSXStateContext,\n  attrs: babel.NodePath<t.JSXAttribute | t.JSXSpreadAttribute>[],\n): void {\n  // TODO handle specific attributes\n  for (let i = 0, len = attrs.length; i < len; i++) {\n    const attr = attrs[i];\n\n    if (isPathValid(attr, t.isJSXAttribute)) {\n      measureJSXAttribute(state, attr);\n    } else if (isPathValid(attr, t.isJSXSpreadAttribute)) {\n      measureJSXSpreadAttribute(state, attr);\n    }\n  }\n}\n\nfunction measureJSXElement(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXElement>,\n): boolean {\n  const openingElement = path.get('openingElement');\n  /**\n   * If this is a component element, move the JSX expression\n   * to the expression array.\n   */\n  if (isJSXComponentElement(path)) {\n    state.components++;\n    return true;\n  }\n  /**\n   * Otherwise, continue extracting in attributes\n   */\n  state.elements++;\n  measureJSXAttributes(state, openingElement.get('attributes'));\n  return false;\n}\n\nfunction measureJSXExpressions(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXElement | t.JSXFragment>,\n): void {\n  if (isPathValid(path, t.isJSXElement) && measureJSXElement(state, path)) {\n    return;\n  }\n  const children = path.get('children');\n  for (let i = 0, len = children.length; i < len; i++) {\n    const child = children[i];\n\n    if (isPathValid(child, t.isJSXElement)) {\n      measureJSXExpressions(state, child);\n    } else if (isPathValid(child, t.isJSXFragment)) {\n      measureJSXExpressions(state, child);\n    } else if (isPathValid(child, t.isJSXSpreadChild)) {\n      measureJSXSpreadChild(state, child);\n    } else if (isPathValid(child, t.isJSXExpressionContainer)) {\n      measureJSXExpressionContainer(state, child, true);\n    } else if (isPathValid(child, t.isJSXText)) {\n      if (child.node.value.trim() !== '') state.text++;\n    }\n  }\n}\n\nfunction shouldTransform(\n  ctx: StateContext,\n  name: string,\n  path: babel.NodePath,\n): boolean {\n  const state: JSXStateContext = {\n    bailout: false,\n    elements: 0,\n    components: 0,\n    attributes: 0,\n    text: 0,\n    returns: 0,\n  };\n\n  path.traverse({\n    JSXElement(innerPath) {\n      measureJSXExpressions(state, innerPath);\n      innerPath.skip();\n    },\n    JSXFragment(innerPath) {\n      measureJSXExpressions(state, innerPath);\n      innerPath.skip();\n    },\n    ReturnStatement(innerPath) {\n      if (innerPath.scope.uid !== path.scope.uid) return;\n      state.returns++;\n      if (state.returns > 1) {\n        state.bailout = true;\n        innerPath.stop();\n      }\n    },\n  });\n\n  if (state.bailout) return false;\n\n  const good = state.elements + state.attributes + state.text;\n  if (good < 5) return false;\n  const bad = state.components;\n  const improvement = (good - bad) / (good + bad);\n\n  if (isNaN(improvement) || !isFinite(improvement)) return false;\n\n  const threshold =\n    typeof ctx.options.auto === 'object' && ctx.options.auto.threshold\n      ? ctx.options.auto.threshold\n      : 0.1;\n\n  if (improvement <= threshold) return false;\n  if (ctx.options.log === true || ctx.options.log === 'info') {\n    logImprovement(\n      name,\n      improvement,\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n      ctx.options.telemetry,\n    );\n  }\n\n  return true;\n}\n\nfunction transformFunctionDeclaration(\n  ctx: StateContext,\n  program: babel.NodePath<t.Program>,\n  path: babel.NodePath<t.FunctionDeclaration>,\n): void {\n  if (isStatementTopLevel(path)) {\n    if (shouldBeIgnored(path)) {\n      return;\n    }\n    const decl = path.node;\n    // Check if declaration is FunctionDeclaration\n    if (\n      // Check if the declaration has an identifier, and then check\n      decl.id &&\n      // if the name is component-ish\n      isComponentishName(decl.id.name) &&\n      // Might be component-like, but the only valid components\n      // have zero or one parameter\n      decl.params.length < 2 &&\n      // For RSC, only transform if it's a client component\n      (ctx.options.rsc\n        ? ctx.topLevelRSC || isUseClient(decl.body.directives)\n        : true) &&\n      // Check if the function should be transformed\n      shouldTransform(ctx, decl.id.name, path)\n    ) {\n      const newPath = program.unshiftContainer(\n        'body',\n        t.variableDeclaration('const', [\n          t.variableDeclarator(\n            decl.id,\n            t.callExpression(\n              getImportIdentifier(\n                ctx,\n                path,\n                TRACKED_IMPORTS.block[ctx.serverMode],\n              ),\n              [\n                t.functionExpression(\n                  decl.id,\n                  decl.params,\n                  decl.body,\n                  decl.generator,\n                  decl.async,\n                ),\n              ],\n            ),\n          ),\n        ]),\n      )[0];\n      program.scope.registerDeclaration(newPath);\n      newPath.skip();\n      if (path.parentPath.isExportNamedDeclaration()) {\n        path.parentPath.replaceWith(\n          t.exportNamedDeclaration(undefined, [\n            t.exportSpecifier(decl.id, decl.id),\n          ]),\n        );\n      } else if (path.parentPath.isExportDefaultDeclaration()) {\n        path.replaceWith(decl.id);\n      } else {\n        path.remove();\n      }\n    }\n  }\n}\n\nfunction isValidFunction(\n  node: t.Node,\n): node is t.ArrowFunctionExpression | t.FunctionExpression {\n  return t.isArrowFunctionExpression(node) || t.isFunctionExpression(node);\n}\n\nfunction transformVariableDeclarator(\n  ctx: StateContext,\n  program: babel.NodePath<t.Program>,\n  path: babel.NodePath<t.VariableDeclarator>,\n): void {\n  if (\n    path.parentPath.isVariableDeclaration() &&\n    !isStatementTopLevel(path.parentPath)\n  ) {\n    return;\n  }\n  if (shouldBeIgnored(path)) {\n    return;\n  }\n  const identifier = path.node.id;\n  if (!t.isIdentifier(identifier)) {\n    return;\n  }\n  const init = path.get('init');\n  if (isComponentishName(identifier.name) && init.node) {\n    const trueFuncExpr = unwrapNode(init.node, isValidFunction);\n    // Check for valid FunctionExpression or ArrowFunctionExpression\n    if (\n      trueFuncExpr &&\n      // Must not be async or generator\n      !(trueFuncExpr.async || trueFuncExpr.generator) &&\n      // Might be component-like, but the only valid components\n      t.isIdentifier(identifier) &&\n      isComponentishName(identifier.name) &&\n      // have zero or one parameter\n      trueFuncExpr.params.length < 2 &&\n      // For RSC, only transform if it's a client component\n      (ctx.options.rsc\n        ? ctx.topLevelRSC ||\n          (t.isBlockStatement(trueFuncExpr.body) &&\n            isUseClient(trueFuncExpr.body.directives))\n        : true) &&\n      // Check if the function should be transformed\n      shouldTransform(ctx, identifier.name, path)\n    ) {\n      path.node.init = t.callExpression(\n        getImportIdentifier(ctx, path, TRACKED_IMPORTS.block[ctx.serverMode]),\n        [trueFuncExpr],\n      );\n    }\n  }\n}\n\nfunction transformCallExpression(\n  ctx: StateContext,\n  path: babel.NodePath<t.CallExpression>,\n): void {\n  if (shouldBeIgnored(path)) {\n    return;\n  }\n  const definition = getValidImportDefinition(ctx, path.get('callee'));\n  if (definition === REACT_IMPORTS.memo[ctx.serverMode]) {\n    const args = path.get('arguments');\n    const arg = args[0];\n\n    const trueFuncExpr = unwrapPath(arg, isValidFunction);\n    if (trueFuncExpr) {\n      const descriptiveName = getDescriptiveName(trueFuncExpr, 'Anonymous');\n      if (\n        // For RSC, only transform if it's a client component\n        (ctx.options.rsc\n          ? ctx.topLevelRSC ||\n            (t.isBlockStatement(trueFuncExpr.node.body) &&\n              isUseClient(trueFuncExpr.node.body.directives))\n          : true) &&\n        shouldTransform(ctx, descriptiveName, path)\n      ) {\n        const root = getRootStatementPath(trueFuncExpr);\n        const uid = generateUniqueName(trueFuncExpr, descriptiveName);\n        root.scope.registerDeclaration(\n          root.insertBefore(\n            t.variableDeclaration('const', [\n              t.variableDeclarator(\n                uid,\n                t.callExpression(\n                  getImportIdentifier(\n                    ctx,\n                    path,\n                    TRACKED_IMPORTS.block[ctx.serverMode],\n                  ),\n                  [trueFuncExpr.node],\n                ),\n              ),\n            ]),\n          )[0],\n        );\n\n        trueFuncExpr.replaceWith(uid);\n      }\n    }\n  }\n}\n\nexport function transformAuto(\n  ctx: StateContext,\n  program: babel.NodePath<t.Program>,\n): void {\n  // First, identify the HOCs\n  program.traverse({\n    ImportDeclaration(path) {\n      const mod = path.node.source.value;\n      for (const importName in REACT_IMPORTS) {\n        const definition = REACT_IMPORTS[importName][ctx.serverMode];\n        if (definition.source === mod) {\n          registerImportDefinition(ctx, path, definition);\n        }\n      }\n    },\n  });\n  program.traverse({\n    FunctionDeclaration(path) {\n      transformFunctionDeclaration(ctx, program, path);\n    },\n    VariableDeclarator(path) {\n      transformVariableDeclarator(ctx, program, path);\n    },\n    CallExpression(path) {\n      transformCallExpression(ctx, path);\n    },\n  });\n}\n"
  },
  {
    "path": "packages/compiler/babel.ts",
    "content": "import type { PluginObj, PluginPass } from '@babel/core';\nimport { transformAuto } from './auto';\nimport { transformBlock } from './block';\nimport type { TrackedImports } from './constants';\nimport { INVERSE_IMPORTS, TRACKED_IMPORTS } from './constants';\nimport type { CompilerOptions, StateContext } from './types';\nimport { isUseClient } from './utils/is-use-client';\nimport { registerImportDefinition } from './utils/register-import-definition';\n\ninterface PluginState extends PluginPass {\n  state: StateContext;\n  opts: CompilerOptions;\n}\n\nexport function babel(): PluginObj<PluginState> {\n  return {\n    name: 'million',\n    pre(): void {\n      this.state = {\n        options: this.opts,\n        definitions: {\n          identifiers: new Map(),\n          namespaces: new Map(),\n        },\n        imports: new Map(),\n        topLevelRSC: false,\n        serverMode: this.opts.server ? 'server' : 'client',\n      };\n    },\n    visitor: {\n      Program(programPath, ctx) {\n        if (ctx.state.options.rsc) {\n          ctx.state.topLevelRSC = isUseClient(programPath.node.directives);\n        }\n        if (ctx.state.options.auto) {\n          transformAuto(ctx.state, programPath);\n        }\n        programPath.traverse({\n          ImportDeclaration(path) {\n            if (\n              INVERSE_IMPORTS[ctx.state.serverMode].source ===\n              path.node.source.value\n            ) {\n              path.node.source.value =\n                INVERSE_IMPORTS[ctx.state.serverMode].target;\n            }\n            const mod = path.node.source.value;\n            for (const importName in TRACKED_IMPORTS) {\n              const definition =\n                TRACKED_IMPORTS[importName as keyof TrackedImports][\n                  ctx.state.serverMode\n                ];\n              if (definition.source === mod) {\n                registerImportDefinition(ctx.state, path, definition);\n              }\n            }\n          },\n        });\n      },\n      CallExpression(path, ctx) {\n        transformBlock(ctx.state, path);\n      },\n    },\n  };\n}\n"
  },
  {
    "path": "packages/compiler/block.ts",
    "content": "import * as t from '@babel/types';\nimport {\n  HIDDEN_IMPORTS,\n  JSX_SKIP_ANNOTATION,\n  SKIP_ANNOTATION,\n  SVG_ELEMENTS,\n  TRACKED_IMPORTS,\n} from './constants';\nimport type { StateContext } from './types';\nimport { findComment, shouldBeIgnored } from './utils/ast';\nimport { isComponent, isComponentishName, isPathValid } from './utils/checks';\nimport { generateUniqueName } from './utils/generate-unique-name';\nimport { getDescriptiveName } from './utils/get-descriptive-name';\nimport { getImportIdentifier } from './utils/get-import-specifier';\nimport { getRootStatementPath } from './utils/get-root-statement-path';\nimport { getValidImportDefinition } from './utils/get-valid-import-definition';\nimport { isGuaranteedLiteral } from './utils/is-guaranteed-literal';\nimport { isJSXComponentElement } from './utils/is-jsx-component-element';\nimport { unwrapPath } from './utils/unwrap-path';\n\ninterface JSXStateContext {\n  ctx: StateContext;\n  // The source of array values\n  source: t.Identifier;\n  // The expressions from the JSX moved into an array\n  exprs: t.JSXAttribute[];\n  keys: t.Expression[];\n}\n\nfunction pushExpression(state: JSXStateContext, expr: t.Expression): string {\n  const key = `v${state.exprs.length}`;\n  state.exprs.push(\n    t.jsxAttribute(\n      t.jsxIdentifier(key),\n      t.jsxExpressionContainer(t.cloneNode(expr)),\n    ),\n  );\n  return key;\n}\n\nfunction pushExpressionAndReplace(\n  state: JSXStateContext,\n  target: babel.NodePath<t.Expression>,\n  top: boolean,\n  portal: boolean,\n): void {\n  if (isGuaranteedLiteral(target.node)) {\n    return;\n  }\n  const key = pushExpression(state, target.node);\n  const expr = t.memberExpression(state.source, t.identifier(key));\n  target.replaceWith(top ? expr : t.jsxExpressionContainer(expr));\n  if (portal) {\n    state.keys.push(t.stringLiteral(key));\n  }\n}\n\nfunction extractJSXExpressionsFromExpression(\n  state: JSXStateContext,\n  expr: babel.NodePath<t.Expression>,\n  portal: boolean,\n): void {\n  const unwrappedJSX = unwrapPath(expr, t.isJSXElement);\n  if (unwrappedJSX) {\n    extractJSXExpressions(state, unwrappedJSX, true);\n    return;\n  }\n  const unwrappedFragment = unwrapPath(expr, t.isJSXFragment);\n  if (unwrappedFragment) {\n    extractJSXExpressions(state, unwrappedFragment, true);\n    return;\n  }\n  // TODO Skip if the value is static\n  pushExpressionAndReplace(state, expr, true, portal);\n}\n\nfunction extractJSXExpressionsFromJSXSpreadChild(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXSpreadChild>,\n): void {\n  extractJSXExpressionsFromExpression(state, path.get('expression'), false);\n}\n\nfunction extractJSXExpressionsFromJSXExpressionContainer(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXExpressionContainer>,\n  portal: boolean,\n): void {\n  const expr = path.get('expression');\n  if (isPathValid(expr, t.isExpression)) {\n    extractJSXExpressionsFromExpression(state, expr, portal);\n  }\n}\n\nfunction extractJSXExpressionsFromJSXAttribute(\n  state: JSXStateContext,\n  attr: babel.NodePath<t.JSXAttribute>,\n): void {\n  const value = attr.get('value');\n  if (isPathValid(value, t.isJSXElement)) {\n    extractJSXExpressions(state, value, false);\n  } else if (isPathValid(value, t.isJSXFragment)) {\n    extractJSXExpressions(state, value, false);\n  } else if (isPathValid(value, t.isJSXExpressionContainer)) {\n    extractJSXExpressionsFromJSXExpressionContainer(state, value, false);\n  }\n}\n\nfunction extractJSXExpressionsFromJSXSpreadAttribute(\n  state: JSXStateContext,\n  attr: babel.NodePath<t.JSXSpreadAttribute>,\n): void {\n  extractJSXExpressionsFromExpression(state, attr.get('argument'), false);\n}\n\nfunction extractJSXExpressionsFromJSXAttributes(\n  state: JSXStateContext,\n  attrs: babel.NodePath<t.JSXAttribute | t.JSXSpreadAttribute>[],\n): void {\n  // TODO handle specific attributes\n  for (let i = 0, len = attrs.length; i < len; i++) {\n    const attr = attrs[i];\n\n    if (isPathValid(attr, t.isJSXAttribute)) {\n      extractJSXExpressionsFromJSXAttribute(state, attr);\n    } else if (isPathValid(attr, t.isJSXSpreadAttribute)) {\n      extractJSXExpressionsFromJSXSpreadAttribute(state, attr);\n    }\n  }\n}\n\nfunction isJSXSVGElement(path: babel.NodePath<t.JSXElement>): boolean {\n  const openingElement = path.get('openingElement');\n  const name = openingElement.get('name');\n  /**\n   * Only valid component elements are member expressions and identifiers\n   * starting with component-ish name\n   */\n  if (isPathValid(name, t.isJSXIdentifier)) {\n    if (SVG_ELEMENTS.includes(name.node.name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isJSXForElement(\n  ctx: StateContext,\n  path: babel.NodePath<t.JSXElement>,\n): boolean {\n  const openingElement = path.get('openingElement');\n  const name = openingElement.get('name');\n  /**\n   * Only valid component elements are member expressions and identifiers\n   * starting with component-ish name\n   */\n  if (\n    isPathValid(name, t.isJSXIdentifier) ||\n    isPathValid(name, t.isJSXMemberExpression)\n  ) {\n    return (\n      getValidImportDefinition(ctx, name) ===\n      TRACKED_IMPORTS.For[ctx.serverMode]\n    );\n  }\n  return false;\n}\n\nfunction transformJSXForElement(\n  ctx: StateContext,\n  path: babel.NodePath<t.JSXElement>,\n): void {\n  if (isJSXForElement(ctx, path)) {\n    path.node.openingElement.attributes.push(\n      t.jsxAttribute(t.jsxIdentifier('scoped')),\n    );\n  }\n}\n\nfunction extractJSXExpressionsFromJSXElement(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXElement>,\n  top: boolean,\n): boolean {\n  const openingElement = path.get('openingElement');\n  /**\n   * If this is a component element, move the JSX expression\n   * to the expression array.\n   */\n  if (isJSXComponentElement(path)) {\n    transformJSXForElement(state.ctx, path);\n    pushExpressionAndReplace(state, path, top, true);\n    return true;\n  }\n  /**\n   * Otherwise, continue extracting in attributes\n   */\n  extractJSXExpressionsFromJSXAttributes(\n    state,\n    openingElement.get('attributes'),\n  );\n  return false;\n}\n\nfunction extractJSXChildren(\n  state: JSXStateContext,\n  children: babel.NodePath<t.JSXElement['children'][0]>[],\n): t.JSXElement['children'] {\n  const newChildren: t.JSXElement['children'] = [];\n  for (let i = 0, len = children.length; i < len; i++) {\n    const child = children[i];\n\n    if (isPathValid(child, t.isJSXElement)) {\n      extractJSXExpressions(state, child, false);\n    } else if (isPathValid(child, t.isJSXFragment)) {\n      Array.prototype.push.apply(\n        newChildren,\n        extractJSXChildren(state, child.get('children')),\n      );\n    } else if (isPathValid(child, t.isJSXSpreadChild)) {\n      extractJSXExpressionsFromJSXSpreadChild(state, child);\n    } else if (isPathValid(child, t.isJSXExpressionContainer)) {\n      extractJSXExpressionsFromJSXExpressionContainer(state, child, true);\n    }\n\n    if (child && !isPathValid(child, t.isJSXFragment)) {\n      newChildren.push(child.node);\n    }\n  }\n  return newChildren;\n}\n\nfunction extractJSXExpressions(\n  state: JSXStateContext,\n  path: babel.NodePath<t.JSXElement | t.JSXFragment>,\n  top: boolean,\n): void {\n  /**\n   * Check if JSX should be skipped for children extraction\n   * We only do this since Component elements\n   * cannot be in the compiledBlock JSX\n   */\n  if (\n    isPathValid(path, t.isJSXElement) &&\n    extractJSXExpressionsFromJSXElement(state, path, top)\n  ) {\n    return;\n  }\n  if (isPathValid(path, t.isJSXFragment)) {\n    path.replaceWith(\n      t.jsxElement(\n        t.jsxOpeningElement(t.jsxIdentifier('slot'), []),\n        t.jsxClosingElement(t.jsxIdentifier('slot')),\n        path.node.children,\n      ),\n    );\n  }\n  path.node.children = extractJSXChildren(state, path.get('children'));\n}\n\nfunction transformJSX(\n  ctx: StateContext,\n  path: babel.NodePath<t.JSXElement | t.JSXFragment>,\n): void {\n  /**\n   * For top-level JSX, we skip at elements that are constructed from components\n   */\n  // if (isPathValid(path, t.isJSXElement) && isJSXComponentElement(path)) {\n  if (findComment(path.node, JSX_SKIP_ANNOTATION)) {\n    path.skip();\n    return;\n  }\n  const state: JSXStateContext = {\n    ctx,\n    source: path.scope.generateUidIdentifier('props'),\n    exprs: [],\n    keys: [],\n  };\n\n  /**\n   * Begin extracting expressions/portals\n   */\n  extractJSXExpressions(\n    state,\n    path,\n    !(\n      isPathValid(path.parentPath, t.isJSXElement) ||\n      isPathValid(path.parentPath, t.isJSXFragment) ||\n      isPathValid(path.parentPath, t.isJSXAttribute)\n    ),\n  );\n\n  /**\n   * Get the nearest descriptive name\n   */\n  const descriptiveName = getDescriptiveName(path, 'Anonymous');\n  /**\n   * Generate a new name based on the descriptive name\n   */\n  const id = generateUniqueName(\n    path,\n    isComponentishName(descriptiveName)\n      ? descriptiveName\n      : `JSX_${descriptiveName}`,\n  );\n\n  if (ctx.options.hmr) {\n    state.exprs.push(\n      t.jsxAttribute(\n        t.jsxIdentifier('_hmr'),\n        t.stringLiteral(String(Date.now())),\n      ),\n    );\n  }\n  /**\n   * The following are arguments for the new render function\n   */\n  const args: t.Identifier[] = [];\n\n  /**\n   * If there are any extracted expressions, declare the argument\n   */\n  if (state.exprs.length) {\n    args.push(state.source);\n  } else {\n    path.scope.removeBinding(state.source.name);\n  }\n\n  /**\n   * The new \"render\" function\n   */\n  const newComponent = t.arrowFunctionExpression(args, path.node);\n\n  /**\n   * Following are the `compiledBlock` options\n   */\n  const options = [\n    // TODO add dev mode\n    t.objectProperty(t.identifier('name'), t.stringLiteral(id.name)),\n  ];\n\n  /**\n   * If there are any portals, declare them in the options\n   */\n  if (state.keys.length) {\n    options.push(\n      t.objectProperty(t.identifier('portals'), t.arrayExpression(state.keys)),\n    );\n  }\n  if (isPathValid(path, t.isJSXElement) && isJSXSVGElement(path)) {\n    options.push(t.objectProperty(t.identifier('svg'), t.booleanLiteral(true)));\n  }\n\n  /**\n   * Generate the new compiledBlock\n   */\n  const generatedBlock = t.variableDeclaration('const', [\n    t.variableDeclarator(\n      id,\n      t.callExpression(\n        getImportIdentifier(\n          ctx,\n          path,\n          HIDDEN_IMPORTS.compiledBlock[ctx.serverMode],\n        ),\n        [newComponent, t.objectExpression(options)],\n      ),\n    ),\n  ]);\n\n  const rootPath = getRootStatementPath(path);\n  rootPath.scope.registerDeclaration(rootPath.insertBefore(generatedBlock)[0]);\n\n  path.replaceWith(\n    t.addComment(\n      t.jsxElement(\n        t.jsxOpeningElement(t.jsxIdentifier(id.name), state.exprs, true),\n        t.jsxClosingElement(t.jsxIdentifier(id.name)),\n        [],\n        true,\n      ),\n      'leading',\n      JSX_SKIP_ANNOTATION,\n    ),\n  );\n}\n\nexport function transformBlock(\n  ctx: StateContext,\n  path: babel.NodePath<t.CallExpression>,\n): void {\n  if (shouldBeIgnored(path)) {\n    return;\n  }\n  const definition = getValidImportDefinition(ctx, path.get('callee'));\n  // Check first if the call is a valid `block` call\n  if (TRACKED_IMPORTS.block[ctx.serverMode] !== definition) {\n    return;\n  }\n  // Check if we should skip because the compiler\n  // can also output a `block` call. Without this,\n  // compiler will suffer a recursion.\n  if (findComment(path.node, SKIP_ANNOTATION)) {\n    return;\n  }\n  const args = path.get('arguments');\n  // Make sure that we have at least one argument,\n  // and that argument is a component.\n  if (args.length <= 0) {\n    return;\n  }\n  const identifier = unwrapPath(args[0]!, t.isIdentifier);\n  // Handle identifiers differently\n  if (identifier) {\n    return;\n  }\n  const component = unwrapPath(args[0]!, isComponent);\n  if (!component) {\n    return;\n  }\n  // Transform all top-level JSX (aka the JSX owned by the component)\n  component.traverse({\n    JSXElement(childPath) {\n      const functionParent = childPath.getFunctionParent();\n      if (functionParent === component) {\n        transformJSX(ctx, childPath);\n      }\n    },\n    JSXFragment(childPath) {\n      const functionParent = childPath.getFunctionParent();\n      if (functionParent === component) {\n        transformJSX(ctx, childPath);\n      }\n    },\n  });\n\n  // TODO this isn't a good check\n  // if (isPathValid(component, t.isArrowFunctionExpression) && t.isExpression(component.node.body)) {\n  //   const root = getRootStatementPath(component);\n  //   const descriptiveName = getDescriptiveName(component, 'Anonymous');\n  //   const uniqueName = generateUniqueName(\n  //     component,\n  //     isComponentishName(descriptiveName)\n  //       ? descriptiveName\n  //       : `JSX_${descriptiveName}`,\n  //   );\n  //   root.insertBefore([\n  //     t.variableDeclaration('const', [\n  //       t.variableDeclarator(uniqueName, component.node),\n  //     ]),\n  //     t.expressionStatement(\n  //       t.assignmentExpression(\n  //         '=',\n  //         t.memberExpression(\n  //           uniqueName,\n  //           t.identifier('_c'),\n  //         ),\n  //         t.booleanLiteral(true),\n  //       ),\n  //     ),\n  //   ]);\n  //   path.replaceWith(uniqueName);\n  // } else {\n  path.replaceWith(component);\n  // }\n}\n"
  },
  {
    "path": "packages/compiler/constants.ts",
    "content": "import type { ImportDefinition } from './types';\n\nexport const RENDER_SCOPE = 'slot';\nexport const SKIP_ANNOTATION = '@million skip';\nexport const IGNORE_ANNOTATION = 'million-ignore';\nexport const JSX_SKIP_ANNOTATION = '@million jsx-skip';\nexport const SVG_ELEMENTS = [\n  'circle',\n  'ellipse',\n  'foreignObject',\n  'image',\n  'line',\n  'path',\n  'polygon',\n  'polyline',\n  'rect',\n  'text',\n  'textPath',\n  'tspan',\n  'svg',\n  'g',\n];\nexport const NO_PX_PROPERTIES = [\n  'animationIterationCount',\n  'boxFlex',\n  'boxFlexGroup',\n  'boxOrdinalGroup',\n  'columnCount',\n  'fillOpacity',\n  'flex',\n  'flexGrow',\n  'flexPositive',\n  'flexShrink',\n  'flexNegative',\n  'flexOrder',\n  'fontWeight',\n  'lineClamp',\n  'lineHeight',\n  'opacity',\n  'order',\n  'orphans',\n  'stopOpacity',\n  'strokeDashoffset',\n  'strokeOpacity',\n  'strokeWidth',\n  'tabSize',\n  'widows',\n  'zIndex',\n  'zoom',\n  // SVG-related properties\n  'fillOpacity',\n  'floodOpacity',\n  'stopOpacity',\n  'strokeDasharray',\n  'strokeDashoffset',\n  'strokeMiterlimit',\n  'strokeOpacity',\n  'strokeWidth',\n];\n\nexport interface TrackedImports {\n  block: {\n    client: ImportDefinition;\n    server: ImportDefinition;\n  };\n  For: {\n    client: ImportDefinition;\n    server: ImportDefinition;\n  };\n}\n\nexport const INVERSE_IMPORTS = {\n  client: {\n    source: 'million/react-server',\n    target: 'million/react',\n  },\n  server: {\n    source: 'million/react',\n    target: 'million/react-server',\n  },\n};\n\nexport const TRACKED_IMPORTS: TrackedImports = {\n  block: {\n    client: {\n      kind: 'named',\n      name: 'block',\n      source: 'million/react',\n    },\n    server: {\n      kind: 'named',\n      name: 'block',\n      source: 'million/react-server',\n    },\n  },\n  For: {\n    client: {\n      kind: 'named',\n      name: 'For',\n      source: 'million/react',\n    },\n    server: {\n      kind: 'named',\n      name: 'For',\n      source: 'million/react-server',\n    },\n  },\n};\n\nexport interface HiddenImports {\n  compiledBlock: {\n    client: ImportDefinition;\n    server: ImportDefinition;\n  };\n}\n\nexport const HIDDEN_IMPORTS: HiddenImports = {\n  compiledBlock: {\n    client: {\n      kind: 'named',\n      name: 'compiledBlock',\n      source: 'million/react',\n    },\n    server: {\n      kind: 'named',\n      name: 'compiledBlock',\n      source: 'million/react-server',\n    },\n  },\n};\n\ninterface ReactImports {\n  memo: {\n    client: ImportDefinition;\n    server: ImportDefinition;\n  };\n}\n\nexport const REACT_IMPORTS: ReactImports = {\n  memo: {\n    client: {\n      kind: 'named',\n      name: 'memo',\n      source: 'react',\n    },\n    server: {\n      kind: 'named',\n      name: 'memo',\n      source: 'react',\n    },\n  },\n};\n"
  },
  {
    "path": "packages/compiler/experimental/optimize.ts",
    "content": "import * as t from '@babel/types';\n// import { addNamed } from '@babel/helper-module-imports';\nimport type { NodePath } from '@babel/core';\nimport { EventFlag } from '../../million/constants';\nimport type { Info } from '../babel';\nimport { addImport } from '../utils/is-use-client';\nimport { getUniqueId } from '../utils/id';\nimport { hoistElements, renderToString, renderToTemplate } from './render';\nimport { createDirtyChecker, createEdit } from './utils';\nimport type { IrEdit, IrEditBase } from './types';\n\nexport const optimize = (\n  callExpressionPath: NodePath<t.CallExpression>,\n  info: Info,\n  holes: string[],\n  jsx: t.JSXElement,\n): {\n  blockFactory: t.ArrowFunctionExpression;\n  variables: t.VariableDeclaration;\n} => {\n  const edits: IrEdit[] = [];\n  const template = renderToTemplate(jsx, edits, [], holes);\n\n  const paths: number[][] = [];\n  let maxPathLength = 0;\n  for (let i = 0, j = edits.length; i < j; ++i) {\n    const path = edits[i]?.path || [];\n    if (path.length > maxPathLength) maxPathLength = path.length;\n    paths.push(path);\n  }\n\n  const { declarators, accessedIds } = hoistElements(\n    paths,\n    callExpressionPath,\n    'million',\n  );\n\n  const editsArray = t.arrayExpression(\n    edits.map((edit) => {\n      const editsProperties: t.ObjectExpression[] = [];\n      const initsProperties: t.ObjectExpression[] = [];\n\n      for (let i = 0, j = edit.edits.length; i < j; ++i) {\n        const { type, name, hole, listener, value, index } = edit.edits[\n          i\n        ] as IrEditBase;\n\n        editsProperties.push(\n          createEdit({\n            type,\n            name,\n            hole,\n            index,\n            listener,\n            value,\n            patch: value,\n            block: value,\n          }),\n        );\n      }\n\n      for (let i = 0, j = edit.inits.length; i < j; ++i) {\n        const { type, name, hole, listener, value, index } = edit.inits[i]!;\n\n        if (type.value === EventFlag) {\n          initsProperties.push(\n            createEdit({\n              type,\n              name,\n              hole,\n              index,\n              listener,\n              value,\n              patch: value,\n              block: value,\n            }),\n          );\n        } else {\n          initsProperties.push(\n            createEdit({\n              type,\n              hole: t.nullLiteral(),\n              index,\n              listener: t.nullLiteral(),\n              value,\n              patch: t.nullLiteral(),\n              block: t.nullLiteral(),\n            }),\n          );\n        }\n      }\n\n      return t.objectExpression([\n        t.objectProperty(t.identifier('p'), t.arrayExpression()),\n        t.objectProperty(t.identifier('e'), t.arrayExpression(editsProperties)),\n        t.objectProperty(\n          t.identifier('i'),\n          initsProperties.length\n            ? t.arrayExpression(initsProperties)\n            : t.arrayExpression(),\n        ),\n      ]);\n    }),\n  );\n\n  const stringToDOM = addImport(\n    callExpressionPath,\n    'stringToDOM',\n    'million',\n    info,\n  );\n\n  const domVariable = getUniqueId(callExpressionPath, 'd');\n  const editsVariable = getUniqueId(callExpressionPath, 'e');\n  const shouldUpdateVariable = getUniqueId(callExpressionPath, 'su');\n  const getElementsVariable = getUniqueId(callExpressionPath, 'ge');\n\n  const variables = t.variableDeclaration('const', [\n    t.variableDeclarator(\n      domVariable,\n      t.callExpression(stringToDOM, [\n        t.templateLiteral(\n          [\n            t.templateElement({\n              raw: renderToString(template),\n            }),\n          ],\n          [],\n        ),\n      ]),\n    ),\n    t.variableDeclarator(editsVariable, editsArray),\n    t.variableDeclarator(shouldUpdateVariable, createDirtyChecker(holes)),\n    t.variableDeclarator(\n      getElementsVariable,\n      declarators.length\n        ? t.arrowFunctionExpression(\n            [t.identifier('root')],\n            t.blockStatement([\n              t.variableDeclaration('const', declarators),\n              t.returnStatement(t.arrayExpression(accessedIds)),\n            ]),\n          )\n        : t.nullLiteral(),\n    ),\n  ]);\n  const BlockClass = addNamed(callExpressionPath, 'Block', 'million', {\n    nameHint: 'Block$',\n  });\n\n  const blockFactory = t.arrowFunctionExpression(\n    [t.identifier('props'), t.identifier('key'), t.identifier('shouldUpdate')],\n    t.blockStatement([\n      t.returnStatement(\n        t.newExpression(BlockClass, [\n          domVariable,\n          editsVariable,\n          t.identifier('props'),\n          t.logicalExpression(\n            '??',\n            t.identifier('key'),\n            t.memberExpression(t.identifier('props'), t.identifier('key')),\n          ),\n          t.logicalExpression(\n            '??',\n            t.identifier('shouldUpdate'),\n            shouldUpdateVariable,\n          ),\n          getElementsVariable,\n        ]),\n      ),\n    ]),\n  );\n\n  return {\n    blockFactory,\n    variables,\n  };\n};\n"
  },
  {
    "path": "packages/compiler/experimental/render.ts",
    "content": "import * as t from '@babel/types';\n// import { addNamed } from '@babel/helper-module-imports';\nimport type { NodePath } from '@babel/core';\nimport {\n  X_CHAR,\n  EventFlag,\n  StyleAttributeFlag,\n  SvgAttributeFlag,\n  AttributeFlag,\n  ChildFlag,\n} from '../../million/constants';\nimport type { IrEdit, IrPrunedNode, IrTreeNode } from './types';\n\nexport const renderToString = (node: t.JSXElement): string => {\n  const type = node.openingElement.name as t.JSXIdentifier;\n  const attributes = node.openingElement.attributes;\n\n  let html = `<${type.name}`;\n\n  for (let i = 0, j = attributes.length; i < j; i++) {\n    const attribute = attributes[i];\n    if (\n      !t.isJSXSpreadAttribute(attribute) &&\n      attribute?.value &&\n      t.isJSXIdentifier(attribute.name) &&\n      'value' in attribute.value\n    ) {\n      const { name } = attribute.name;\n      const { value } = attribute.value;\n      html += ` ${name}${value ? `=\"${value}\"` : ''}`;\n    }\n  }\n\n  if (node.selfClosing) {\n    html += ` />`;\n    return html;\n  }\n  html += '>';\n  if (node.children.length) {\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const child = node.children[i];\n      if (t.isJSXText(child)) {\n        html += child.value.trim();\n      } else if (t.isJSXElement(child)) {\n        html += renderToString(child);\n      } else if (t.isJSXExpressionContainer(child)) {\n        if (t.isStringLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t.isNumericLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t.isJSXElement(child.expression)) {\n          html += renderToString(child.expression);\n        }\n      }\n    }\n  }\n  html += `</${type.name}>`;\n  return html;\n};\n\nexport const renderToTemplate = (\n  node: t.JSXElement,\n  edits: IrEdit[],\n  path: number[] = [],\n  holes: string[] = [],\n): t.JSXElement => {\n  const attributesLength = node.openingElement.attributes.length;\n  const current: IrEdit = {\n    path, // The location of the edit in in the virtual node tree\n    edits: [], // Occur on mount + patch\n    inits: [], // Occur before mount\n  };\n  if (attributesLength) {\n    const newAttributes: (t.JSXAttribute | t.JSXSpreadAttribute)[] = [];\n    for (let i = 0; i < attributesLength; ++i) {\n      const attribute = node.openingElement.attributes[i];\n      if (\n        t.isJSXAttribute(attribute) &&\n        t.isJSXIdentifier(attribute.name) &&\n        attribute.value\n      ) {\n        const name = attribute.name.name;\n        if (name === 'key' || name === 'ref' || name === 'children') {\n          continue;\n        }\n        if (name === 'className') attribute.name.name = 'class';\n        if (name === 'htmlFor') attribute.name.name = 'for';\n        if (name.startsWith('on')) {\n          // We assume that the value is a function, so it must always be an expression;\n          if (!t.isJSXExpressionContainer(attribute.value)) continue;\n          const { expression } = attribute.value;\n          if (\n            !t.isIdentifier(expression) &&\n            !t.isArrowFunctionExpression(expression)\n          ) {\n            continue;\n          }\n          const isDynamicListener =\n            t.isIdentifier(expression) && holes.includes(expression.name);\n\n          const event = name.toLowerCase().slice(2);\n          if (isDynamicListener) {\n            current.edits.push({\n              type: t.numericLiteral(EventFlag),\n              name: t.stringLiteral(event),\n              hole: t.stringLiteral(expression.name),\n            });\n          } else {\n            current.inits.push({\n              type: t.numericLiteral(EventFlag),\n              listener: expression,\n              name: t.stringLiteral(event),\n            });\n          }\n\n          continue;\n        }\n        if (name === 'style') {\n          if (!t.isJSXExpressionContainer(attribute.value)) continue;\n          const { expression } = attribute.value;\n          if (!t.isObjectExpression(expression)) continue;\n          let style = '';\n          for (let i = 0, j = expression.properties.length; i < j; ++i) {\n            const property = expression.properties[i];\n            if (\n              !t.isObjectProperty(property) ||\n              !t.isIdentifier(property.key) ||\n              (!t.isStringLiteral(property.value) &&\n                !t.isNumericLiteral(property.value))\n            )\n              continue;\n            if (!t.isIdentifier(property.key)) continue;\n            const value = property.value.extra?.raw || '';\n            style += `${property.key.name}:${String(value)};`;\n          }\n          attribute.value = t.stringLiteral(style);\n          continue;\n        }\n        if (t.isJSXExpressionContainer(attribute.value)) {\n          if (\n            t.isStringLiteral(attribute.value.expression) ||\n            t.isNumericLiteral(attribute.value.expression)\n          ) {\n            newAttributes.push(\n              t.jsxAttribute(\n                attribute.name,\n                t.stringLiteral(String(attribute.value.expression.value)),\n              ),\n            );\n            continue;\n          }\n          const { expression } = attribute.value as { expression: any };\n          current.edits.push({\n            type: t.numericLiteral(\n              name === 'style'\n                ? StyleAttributeFlag\n                : name.charCodeAt(0) === X_CHAR\n                  ? SvgAttributeFlag\n                  : AttributeFlag,\n            ),\n            hole: t.stringLiteral(expression.name),\n            name: t.stringLiteral(name),\n          });\n          continue;\n        }\n      }\n      if (\n        attribute &&\n        'value' in attribute &&\n        attribute.value &&\n        t.isJSXAttribute(attribute)\n      ) {\n        newAttributes.push(attribute);\n      }\n    }\n    node.openingElement.attributes = newAttributes;\n  }\n\n  const newChildren: (\n    | t.JSXElement\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXFragment\n  )[] = [];\n  let canMergeString = false;\n  for (let i = 0, j = node.children.length || 0, k = 0; i < j; ++i) {\n    const child = node.children[i];\n\n    if (\n      t.isJSXExpressionContainer(child) &&\n      t.isIdentifier(child.expression) &&\n      holes.includes(child.expression.name)\n    ) {\n      current.edits.push({\n        type: t.numericLiteral(ChildFlag),\n        hole: t.stringLiteral(child.expression.name),\n        index: t.numericLiteral(i),\n        name: undefined,\n        listener: undefined,\n        value: undefined,\n      });\n      continue;\n    }\n\n    if (\n      t.isJSXText(child) &&\n      (typeof child.value === 'string' ||\n        typeof child.value === 'number' ||\n        typeof child.value === 'bigint')\n    ) {\n      const value = String(child.value);\n      if (value.trim() === '') continue;\n      if (canMergeString) {\n        current.inits.push({\n          type: t.numericLiteral(ChildFlag),\n          value: t.stringLiteral(value),\n          index: t.numericLiteral(i),\n        });\n        continue;\n      }\n      canMergeString = true;\n      newChildren.push(t.jsxText(value));\n      k++;\n      continue;\n    }\n\n    canMergeString = false;\n\n    if (t.isJSXElement(child)) {\n      newChildren.push(renderToTemplate(child, edits, path.concat(k++), holes));\n    }\n  }\n  node.children = newChildren;\n\n  if (current.inits.length || current.edits.length) {\n    edits.push(current);\n  }\n\n  return node;\n};\n\n/**\n *  Direct credit to Alexis H. Munsayac (https://github.com/LXSMNSYC)\n *  for the original implementation of this algorithm.\n */\nexport const hoistElements = (\n  paths: number[][],\n  path: NodePath<t.CallExpression>,\n  sourceName: string,\n): {\n  declarators: t.VariableDeclarator[];\n  accessedIds: t.Identifier[];\n} => {\n  const createTreeNode = (): IrTreeNode => ({\n    children: [],\n    path: undefined,\n  });\n\n  const createPrunedNode = (\n    index: number,\n    parent?: IrPrunedNode,\n  ): IrPrunedNode => ({\n    index,\n    parent,\n    path: undefined,\n    child: undefined,\n    next: undefined,\n    prev: undefined,\n  });\n\n  const tree = createTreeNode();\n  for (let i = 0, j = paths.length; i < j; i++) {\n    const path = paths[i]!;\n\n    let prev = tree;\n    for (let k = 0, l = path.length; k < l; k++) {\n      const index = path[k]!;\n      prev.children[index] ||= createTreeNode();\n      prev = prev.children[index]!;\n      if (k === l - 1) {\n        prev.path ||= [];\n        prev.path.push(i);\n      }\n    }\n  }\n\n  const prune = (node: IrTreeNode, parent: IrPrunedNode): void => {\n    let prev = parent;\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const treeNode = node.children[i];\n      const current = createPrunedNode(i, parent);\n      if (prev === parent) {\n        prev.child = current;\n      } else {\n        current.prev = prev;\n        prev.next = current;\n      }\n      prev = current;\n\n      if (treeNode) {\n        prev.path = treeNode.path;\n        prune(treeNode, current);\n      }\n    }\n  };\n\n  const root = createPrunedNode(0);\n  prune(tree, root);\n\n  const getId = (): t.Identifier => path.scope.generateUidIdentifier('el$');\n  const firstChild = addNamed(path, 'firstChild$', sourceName);\n  const nextSibling = addNamed(path, 'nextSibling$', sourceName);\n\n  const declarators: t.VariableDeclarator[] = [];\n  const accessedIds: t.Identifier[] = Array(paths.length).fill(\n    t.identifier('root'),\n  );\n\n  const traverse = (\n    node: IrPrunedNode,\n    prev: t.Identifier | t.CallExpression,\n    isParent?: boolean,\n  ): void => {\n    if (isParent) {\n      prev = t.callExpression(\n        t.memberExpression(firstChild, t.identifier('call')),\n        [prev],\n      );\n      for (let i = 0, j = node.index; i < j; i++) {\n        prev = t.callExpression(\n          t.memberExpression(nextSibling, t.identifier('call')),\n          [prev],\n        );\n      }\n    } else {\n      for (let i = 0, j = node.index - (node.prev?.index ?? 0); i < j; i++) {\n        prev = t.callExpression(\n          t.memberExpression(nextSibling, t.identifier('call')),\n          [prev],\n        );\n      }\n    }\n\n    if (node.child && node.next) {\n      const id = getId();\n      declarators.push(t.variableDeclarator(id, prev));\n      prev = id;\n      if (node.path !== undefined) {\n        for (let i = 0, j = node.path.length; i < j; ++i) {\n          accessedIds[node.path[i]!] = id;\n        }\n      }\n    } else if (node.path !== undefined) {\n      const id = getId();\n      declarators.push(t.variableDeclarator(id, prev));\n      for (let i = 0, j = node.path.length; i < j; ++i) {\n        accessedIds[node.path[i]!] = id;\n      }\n      prev = id;\n    }\n    if (node.next) {\n      traverse(node.next, prev, false);\n    }\n    if (node.child) {\n      traverse(node.child, prev, true);\n    }\n  };\n\n  if (root.child) {\n    traverse(root.child, t.identifier('root'), true);\n  }\n\n  return {\n    declarators,\n    accessedIds,\n  };\n};\n"
  },
  {
    "path": "packages/compiler/experimental/types.ts",
    "content": "import type {\n  ArrowFunctionExpression,\n  StringLiteral,\n  NumericLiteral,\n  Identifier,\n} from '@babel/types';\n\nexport interface IrEditBase {\n  type: NumericLiteral;\n  name?: StringLiteral;\n  value?: StringLiteral;\n  hole?: StringLiteral;\n  index?: NumericLiteral;\n  listener?: ArrowFunctionExpression | Identifier;\n}\n\nexport interface IrEditAttribute extends IrEditBase {\n  type: NumericLiteral;\n  hole: StringLiteral;\n  name: StringLiteral;\n}\n\nexport interface IrEditStyleAttribute extends IrEditBase {\n  type: NumericLiteral;\n  hole: StringLiteral;\n  name: StringLiteral;\n}\n\nexport interface IrEditSvgAttribute extends IrEditBase {\n  type: NumericLiteral;\n  hole: StringLiteral;\n  name: StringLiteral;\n}\n\nexport interface IrEditChild extends IrEditBase {\n  type: NumericLiteral;\n  hole: StringLiteral;\n  index: NumericLiteral;\n}\n\nexport interface IrEditBlock extends IrEditBase {\n  type: NumericLiteral;\n  index: NumericLiteral;\n}\n\nexport interface IrEditEvent extends IrEditBase {\n  type: NumericLiteral;\n  hole: StringLiteral;\n  name: StringLiteral;\n}\n\nexport interface IrInitEvent extends IrEditBase {\n  type: NumericLiteral;\n  name: StringLiteral;\n  listener: ArrowFunctionExpression | Identifier;\n}\n\nexport interface IrInitChild extends IrEditBase {\n  type: NumericLiteral;\n  value: StringLiteral;\n  index: NumericLiteral;\n}\n\nexport interface IrEdit {\n  path: number[];\n  edits: (\n    | IrEditAttribute\n    | IrEditStyleAttribute\n    | IrEditSvgAttribute\n    | IrEditChild\n    | IrEditBlock\n    | IrEditEvent\n  )[];\n  inits: (IrInitEvent | IrInitChild)[];\n}\n\nexport interface IrTreeNode {\n  children: IrTreeNode[];\n  path?: number[];\n}\n\nexport interface IrPrunedNode {\n  index: number;\n  parent?: IrPrunedNode;\n  path?: number[];\n  child?: IrPrunedNode;\n  next?: IrPrunedNode;\n  prev?: IrPrunedNode;\n}\n"
  },
  {
    "path": "packages/compiler/experimental/utils.ts",
    "content": "import * as t from '@babel/types';\n\nexport const createEdit = ({\n  type,\n  name,\n  value,\n  hole,\n  index,\n  listener,\n  patch,\n  block,\n}: {\n  type: t.NumericLiteral;\n  name?: t.StringLiteral;\n  value?: t.Expression;\n  hole?: t.Expression;\n  index?: t.NumericLiteral;\n  listener?: t.Expression;\n  patch?: t.Expression;\n  block?: t.Expression;\n}) => {\n  return t.objectExpression([\n    t.objectProperty(t.identifier('t'), type),\n    t.objectProperty(t.identifier('n'), name ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('v'), value ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('h'), hole ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('i'), index ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('l'), listener ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('p'), patch ?? t.nullLiteral()),\n    t.objectProperty(t.identifier('b'), block ?? t.nullLiteral()),\n  ]);\n};\n\nexport const chainOrLogic = (\n  ...binaryExpressions: t.BinaryExpression[]\n): t.LogicalExpression | t.BinaryExpression | t.BooleanLiteral => {\n  if (binaryExpressions.length === 0) return t.booleanLiteral(true);\n  if (binaryExpressions.length === 1) return binaryExpressions[0]!;\n\n  const [first, ...rest] = binaryExpressions;\n\n  return t.logicalExpression('||', first!, chainOrLogic(...rest));\n};\n\nexport const createDirtyChecker = (holes: string[]) => {\n  const oldProps = t.identifier('a');\n  const newProps = t.identifier('b');\n  if (holes.length === 0) return null;\n  return t.arrowFunctionExpression(\n    [oldProps, newProps],\n    chainOrLogic(\n      ...holes.map((hole) => {\n        const id = t.identifier(hole);\n        return t.binaryExpression(\n          '!==',\n          t.optionalMemberExpression(oldProps, id, false, true),\n          t.optionalMemberExpression(newProps, id, false, true),\n        );\n      }),\n    ),\n  );\n};\n"
  },
  {
    "path": "packages/compiler/for.old.ts",
    "content": "/**\n * THIS FILE IS DEPRECATED\n *\n * The file is no longer being used due to a broader\n * compilation process that covers this. This is only\n * preserved for future references.\n */\nimport * as t from '@babel/types';\nimport type { NodePath } from '@babel/core';\nimport {\n  dedupeJSXAttributes,\n  trimJSXChildren,\n  isAttributeUnsupported,\n  isComponent,\n} from './utils/jsx';\nimport { deopt, catchError } from './utils/log';\nimport { findChild } from './utils/ast';\nimport type { Info } from './babel';\nimport { transformBlock } from './block';\nimport { getUniqueId } from './utils/id';\n\nexport const transformFor = (\n  jsxElementPath: NodePath<t.JSXElement>,\n  info: Info,\n) => {\n  if (!info.imports.source) return;\n\n  const jsxElement = jsxElementPath.node;\n  const jsxId = jsxElement.openingElement.name;\n  if (\n    !t.isJSXIdentifier(jsxId) ||\n    !info.imports.For ||\n    !info.imports.aliases.For?.has(jsxId.name)\n  ) {\n    return;\n  }\n\n  const expression = validateForExpression(jsxElementPath, info);\n\n  if (hoistFor(jsxElementPath)) return;\n\n  const callbackComponentId = getUniqueId(jsxElementPath, 'ForCallback');\n  const blockComponentId = getUniqueId(jsxElementPath, 'ForBody');\n\n  const idNames = new Set<string>();\n\n  for (let i = 0, j = expression.params.length; i < j; ++i) {\n    const id = expression.params[i]!;\n    if (t.isIdentifier(id)) {\n      idNames.add(id.name);\n      continue;\n    }\n    if (!t.isObjectPattern(id)) continue;\n\n    for (let k = 0, l = id.properties.length; k < l; ++k) {\n      const prop = id.properties[k]!;\n      if (!t.isObjectProperty(prop)) continue;\n\n      if (t.isIdentifier(prop.key)) {\n        idNames.add(prop.key.name);\n      } else if (t.isStringLiteral(prop.key)) {\n        idNames.add(prop.key.value);\n      }\n    }\n  }\n\n  let bailout = false;\n  jsxElementPath.traverse({\n    JSXElement(path) {\n      const jsxId = path.node.openingElement.name;\n      if (t.isJSXIdentifier(jsxId) && isComponent(jsxId.name)) {\n        path.stop();\n        bailout = true;\n      }\n    },\n    JSXAttribute(path) {\n      const jsxId = path.node.name;\n      if (!t.isJSXIdentifier(jsxId)) return;\n\n      if (jsxId.name === 'ref' || isAttributeUnsupported(path.node)) {\n        path.stop();\n        bailout = true;\n      }\n    },\n    JSXSpreadAttribute(path) {\n      path.stop();\n      bailout = true;\n    },\n    JSXSpreadChild(path) {\n      path.stop();\n      bailout = true;\n    },\n    Identifier(path: NodePath<t.Identifier>) {\n      if (info.programPath.scope.hasBinding(path.node.name)) return;\n      const targetPath = path.parentPath;\n\n      if (targetPath.isMemberExpression()) {\n        if (!targetPath.node.computed && targetPath.node.object !== path.node)\n          return;\n\n        if (targetPath.parentPath.isCallExpression()) {\n          if (targetPath.parentPath.node.callee !== targetPath.node) return;\n        }\n      }\n\n      if (targetPath.isObjectProperty() && !targetPath.node.computed) {\n        if (targetPath.node.key !== path.node) return;\n      }\n\n      if (\n        targetPath.isObjectMethod() ||\n        targetPath.isJSXAttribute() ||\n        targetPath.isJSXOpeningElement() ||\n        targetPath.isJSXClosingElement()\n      ) {\n        return;\n      }\n\n      if (\n        targetPath.isFunctionExpression() ||\n        targetPath.isArrowFunctionExpression()\n      ) {\n        if (targetPath.node.params.some((param) => param === path.node)) {\n          return;\n        }\n      }\n\n      if (!path.scope.hasBinding(path.node.name)) return;\n\n      idNames.add(path.node.name);\n    },\n  });\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  if (bailout) {\n    jsxElementPath.stop();\n    return;\n  }\n\n  const ids = [...idNames].map((id) => t.identifier(id));\n  const body = t.cloneNode(expression.body);\n\n  // We do a similar extraction process as in the call expression visitor\n  const originalComponent = t.variableDeclaration('const', [\n    t.variableDeclarator(\n      callbackComponentId,\n      t.arrowFunctionExpression(\n        [\n          t.objectPattern(\n            ids.map((id) => t.objectProperty(id, id, false, true)),\n          ),\n        ],\n        t.isBlockStatement(body)\n          ? body\n          : t.blockStatement([t.returnStatement(body)]),\n      ),\n    ),\n  ]);\n\n  const blockComponent = t.variableDeclaration('const', [\n    t.variableDeclarator(\n      blockComponentId,\n      t.callExpression(t.identifier(info.imports.block!), [\n        callbackComponentId,\n      ]),\n    ),\n  ]);\n\n  const [originalComponentPath] = info.programPath.pushContainer(\n    'body',\n    originalComponent,\n  );\n  info.programPath.scope.registerDeclaration(originalComponentPath);\n\n  const [blockComponentPath] = info.programPath.pushContainer(\n    'body',\n    blockComponent,\n  );\n  info.programPath.scope.registerDeclaration(blockComponentPath);\n\n  expression.body = t.callExpression(blockComponentId, [\n    t.objectExpression(ids.map((id) => t.objectProperty(id, id))),\n  ]);\n\n  const callExpressionPath = findChild<t.CallExpression>(\n    jsxElementPath,\n    'CallExpression',\n  );\n\n  if (!callExpressionPath || !callExpressionPath.isCallExpression()) return;\n  catchError(() => {\n    transformBlock(callExpressionPath, info);\n  }, info.options.log);\n};\n\nexport const validateForExpression = (\n  jsxElementPath: NodePath<t.JSXElement>,\n  info: Info,\n): t.ArrowFunctionExpression => {\n  const jsxElement = jsxElementPath.node;\n  const VALIDATION_MESSAGE = 'Invalid For usage: https://million.dev/docs/for';\n\n  trimJSXChildren(jsxElement);\n\n  if (jsxElement.children.length !== 1) {\n    throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n  }\n\n  const child = jsxElement.children[0];\n\n  if (!t.isJSXExpressionContainer(child)) {\n    throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n  }\n\n  const expression = child.expression;\n  if (!t.isArrowFunctionExpression(expression)) {\n    throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n  }\n\n  if (t.isBlockStatement(expression.body)) {\n    const blockStatementPath = jsxElementPath.get(\n      'children.0.expression.body',\n    )[0]!;\n\n    const returnStatementPath = findChild<t.ReturnStatement>(\n      blockStatementPath,\n      'ReturnStatement',\n    );\n\n    if (returnStatementPath === null) {\n      throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n    }\n\n    const argument = returnStatementPath.node.argument;\n\n    if (!t.isJSXElement(argument) && !t.isJSXFragment(argument)) {\n      throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n    }\n  } else if (\n    !t.isJSXElement(expression.body) &&\n    !t.isJSXFragment(expression.body)\n  ) {\n    throw deopt(VALIDATION_MESSAGE, info.filename, jsxElementPath);\n  }\n\n  return expression;\n};\n\nexport const hoistFor = (jsxElementPath: NodePath<t.JSXElement>) => {\n  const jsxElement = jsxElementPath.node;\n  const jsxElementParent = jsxElementPath.parent;\n\n  if (t.isJSXElement(jsxElementParent)) {\n    const type = jsxElementParent.openingElement.name;\n\n    trimJSXChildren(jsxElementParent);\n    if (\n      t.isJSXIdentifier(type) &&\n      type.name.toLowerCase() === type.name &&\n      jsxElementParent.children.length === 1\n    ) {\n      if (\n        !jsxElement.openingElement.attributes.some(\n          (attr) => t.isJSXAttribute(attr) && attr.name.name === 'as',\n        )\n      ) {\n        const jsxElementClone = t.cloneNode(jsxElement);\n\n        jsxElementClone.openingElement.attributes = dedupeJSXAttributes([\n          ...jsxElementClone.openingElement.attributes,\n          ...jsxElementParent.openingElement.attributes,\n          t.jsxAttribute(t.jsxIdentifier('as'), t.stringLiteral(type.name)),\n        ]);\n\n        jsxElementPath.parent = jsxElementClone;\n\n        return true;\n      }\n    }\n  }\n};\n"
  },
  {
    "path": "packages/compiler/index.ts",
    "content": "import { existsSync } from 'node:fs';\nimport { babel } from './babel';\nimport type { Options } from './plugin';\nimport { unplugin } from './plugin';\n\nexport const vite = unplugin.vite;\nexport const webpack = unplugin.webpack;\nexport const rollup = unplugin.rollup;\nexport const rspack = unplugin.rspack;\nexport const esbuild = unplugin.esbuild;\nexport const next = (\n  nextConfig: {\n    appDir?: boolean;\n    basePath?: string;\n    webpack?: (config: Record<string, any>, options: any) => any;\n  } = {},\n  overrideOptions: Options = {},\n): any => {\n  const millionConfig: Options = {\n    mode: 'react',\n    ...overrideOptions,\n  };\n  return {\n    ...nextConfig,\n    webpack(\n      config: Record<string, any>,\n      webpackOptions: {\n        dir: string;\n        isServer: boolean;\n      },\n    ) {\n      if (millionConfig.rsc === undefined) {\n        millionConfig.rsc =\n          nextConfig.appDir ??\n          existsSync(`${webpackOptions.dir}${nextConfig.basePath || ''}/app`);\n      }\n\n      config.plugins.unshift(\n        webpack({\n          server: webpackOptions.isServer,\n          log: webpackOptions.isServer,\n          ...millionConfig,\n        }),\n      );\n\n      if (typeof nextConfig.webpack === 'function') {\n        return nextConfig.webpack(config, webpackOptions);\n      }\n      return config;\n    },\n  };\n};\nexport { babel };\n\nexport default {\n  vite,\n  webpack,\n  rollup,\n  rspack,\n  esbuild,\n  next,\n  unplugin,\n  babel,\n};\n"
  },
  {
    "path": "packages/compiler/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\",\n  \"devDependencies\": {\n    \"@rollup/pluginutils\": \"^5.0.5\",\n    \"@types/babel-types\": \"^7.0.15\",\n    \"@types/babel__core\": \"^7.20.5\",\n    \"@types/babel__generator\": \"^7.6.8\",\n    \"@types/babel__helper-module-imports\": \"^7.18.3\",\n    \"@types/which-pm-runs\": \"^1.0.2\"\n  },\n  \"dependencies\": {\n    \"ci-info\": \"^4.0.0\",\n    \"is-docker\": \"^3.0.0\",\n    \"which-pm-runs\": \"^1.1.0\"\n  }\n}"
  },
  {
    "path": "packages/compiler/plugin.ts",
    "content": "import type { BabelFileResult, ParserOptions } from '@babel/core';\nimport { transformAsync } from '@babel/core';\nimport type { FilterPattern } from '@rollup/pluginutils';\nimport { createFilter } from '@rollup/pluginutils';\nimport type { VitePlugin } from 'unplugin';\nimport { createUnplugin } from 'unplugin';\nimport { MillionTelemetry } from '../telemetry';\nimport { babel } from './babel';\nimport { displayIntro } from './utils/log';\n// import { babel } from './babel';\nimport type { CompilerOptions } from './types';\n\nconst DEFAULT_INCLUDE = '**/*.{jsx,tsx}';\nconst DEFAULT_EXCLUDE = 'node_modules/**/*.{jsx,tsx,ts,js,mjs,cjs}';\n\ninterface CompilerOutput {\n  code: BabelFileResult['code'];\n  map: BabelFileResult['map'];\n}\n\nlet ssr = false;\n\nasync function compile(\n  id: string,\n  code: string,\n  options: Options,\n  telemetryInstance: MillionTelemetry,\n  isServer?: boolean,\n): Promise<CompilerOutput> {\n  if (isServer) {\n    // for frameworks like remix, even for client, we need to return react-server\n    ssr = true;\n  }\n\n  displayIntro(options);\n\n  const plugins: ParserOptions['plugins'] = [\n    'jsx',\n    // import { example } from 'example' with { example: true };\n    'importAttributes',\n    // () => throw example\n    'throwExpressions',\n    // You know what this is\n    'decorators',\n    // const { #example: example } = this;\n    'destructuringPrivate',\n    // using example = myExample()\n    'explicitResourceManagement',\n  ];\n\n  if (/\\.[mc]?tsx?$/i.test(id)) {\n    plugins.push('typescript');\n  }\n\n  const result = await transformAsync(code, {\n    plugins: [\n      [\n        babel,\n        {\n          telemetry: telemetryInstance,\n          log: options.log,\n          server: ssr,\n          hmr: options.hmr,\n          auto: options.auto,\n          rsc: options.rsc,\n        },\n      ],\n    ],\n    // plugins: [[babel, options]],\n    parserOpts: { plugins },\n    filename: id,\n    ast: false,\n    sourceFileName: id,\n    sourceMaps: true,\n    configFile: false,\n    babelrc: false,\n  });\n  if (!result) {\n    throw new Error('invariant');\n  }\n  return { code: result.code || '', map: result.map };\n}\n\nexport interface Options extends Omit<CompilerOptions, 'telemetry'> {\n  filter?: {\n    include?: FilterPattern;\n    exclude?: FilterPattern;\n  };\n  /**\n   * @default 'react'\n   */\n  mode?: 'react' | 'vdom';\n  /**\n   * Million.js collects anonymous telemetry data about general usage. Participation is optional, and you may opt-out at any time.\n   * For more information, please see https://million.dev/telemetry.\n   * @default true\n   */\n  telemetry?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/default-param-last\nexport const unplugin = createUnplugin((options: Options = {}, meta) => {\n  if (!options.log) {\n    options.log = true;\n  }\n\n  const filter = createFilter(\n    options.filter?.include || DEFAULT_INCLUDE,\n    options.filter?.exclude || DEFAULT_EXCLUDE,\n  );\n\n  // Backwards compatibility for `mode: 'react-server'`:\n  // Converts `mode: 'react-server'` to `mode: 'react'` and `server: true`\n  if (options.mode?.endsWith('-server')) {\n    options.server = true;\n    options.mode = 'react';\n  }\n\n  // Notice for `mode: 'preact'`, `mode: 'preact-server'`:\n  // Throws an error if `mode: 'preact'` or `mode: 'preact-server'` is used\n  if (options.mode?.startsWith('preact')) {\n    throw new Error(\n      'Preact is no longer maintained. Downgrade to a lower version (<= 2.x.x) for support',\n    );\n  }\n\n  const telemetryInstance = new MillionTelemetry(options.telemetry);\n\n  void telemetryInstance.record({\n    event: 'compile',\n    payload: {\n      framework: meta.framework,\n      mode: options.mode,\n      server: options.server,\n      hmr: options.hmr,\n      rsc: options.rsc,\n      log: options.log,\n      auto: options.auto,\n      // optimize: options.optimize,\n    },\n  });\n\n  return {\n    enforce: 'pre',\n    name: 'million',\n    transformInclude(id: string): boolean {\n      return filter(id);\n    },\n    async transform(code: string, id: string) {\n      try {\n        const result = await compile(\n          id,\n          code,\n          options,\n          telemetryInstance,\n          options.server,\n        );\n        return {\n          code: result.code || '',\n          map: result.map,\n        };\n      } catch (err) {\n        // eslint-disable-next-line no-console\n        console.error(err);\n        return { code: '' };\n      }\n    },\n    vite: {\n      configResolved(config) {\n        // run our plugin before the following plugins:\n        repushPlugin(config.plugins as VitePlugin[], 'million', [\n          // https://github.com/withastro/astro/blob/main/packages/astro/src/vite-plugin-jsx/index.ts#L173\n          'astro:jsx',\n          // https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react\n          'vite:react-babel',\n          'vite:react-jsx',\n          // https://github.com/preactjs/preset-vite/blob/main/src/index.ts\n          'vite:preact-jsx',\n          // https://github.com/vitejs/vite-plugin-react-swc/blob/main/src/index.ts\n          'vite:react-swc',\n        ]);\n\n        options.hmr = config.env.DEV;\n      },\n      async transform(code, id, opts) {\n        try {\n          if (filter(id)) {\n            const result = await compile(\n              id,\n              code,\n              options,\n              telemetryInstance,\n              opts?.ssr,\n            );\n            return {\n              code: result.code || '',\n              map: result.map,\n            };\n          }\n          return null;\n        } catch (_err) {\n          return null;\n        }\n      },\n    },\n  };\n});\n\n// From: https://github.com/bluwy/whyframe/blob/master/packages/jsx/src/index.js#L27-L37\nexport const repushPlugin = (\n  plugins: VitePlugin[],\n  pluginName: string,\n  pluginNames: string[],\n): void => {\n  const namesSet = new Set(pluginNames);\n\n  let baseIndex = -1;\n  let targetIndex = -1;\n  let targetPlugin: VitePlugin;\n  for (let i = 0, len = plugins.length; i < len; i += 1) {\n    const current = plugins[i]!;\n    if (namesSet.has(current.name) && baseIndex === -1) {\n      baseIndex = i;\n    }\n    if (current.name === pluginName) {\n      targetIndex = i;\n      targetPlugin = current;\n    }\n  }\n  if (baseIndex !== -1 && targetIndex !== -1 && baseIndex < targetIndex) {\n    plugins.splice(targetIndex, 1);\n    plugins.splice(baseIndex, 0, targetPlugin!);\n  }\n};\n"
  },
  {
    "path": "packages/compiler/types.ts",
    "content": "import type * as t from '@babel/types';\nimport type { MillionTelemetry } from 'packages/telemetry';\n\nexport interface NamedImportDefinition {\n  name: string;\n  source: string;\n  kind: 'named';\n}\n\nexport interface DefaultImportDefinition {\n  source: string;\n  kind: 'default';\n}\n\nexport type ImportDefinition = NamedImportDefinition | DefaultImportDefinition;\n\nexport interface CompilerOptions {\n  hmr?: boolean;\n  server?: boolean;\n  auto?:\n    | boolean\n    | {\n        threshold?: number;\n        // @deprecated\n        skip?: (string | RegExp)[];\n        rsc?: boolean;\n      };\n  /**\n   * @default true\n   */\n  log?: boolean | 'info';\n  /**\n   * @default false\n   */\n  rsc?: boolean;\n\n  telemetry: MillionTelemetry;\n}\n\nexport interface StateContext {\n  options: CompilerOptions;\n  definitions: {\n    identifiers: Map<t.Identifier, ImportDefinition>;\n    namespaces: Map<t.Identifier, ImportDefinition[]>;\n  };\n  imports: Map<string, t.Identifier>;\n  topLevelRSC: boolean;\n  serverMode: 'server' | 'client';\n}\n"
  },
  {
    "path": "packages/compiler/utils/ast.ts",
    "content": "import type { NodePath } from '@babel/core';\nimport type * as t from '@babel/types';\nimport { IGNORE_ANNOTATION } from '../constants';\n\nexport const findComment = (node: t.Node, comment: string) => {\n  const comments = node.leadingComments;\n  if (!comments) return null;\n  for (let i = 0, j = comments.length; i < j; ++i) {\n    if (comments[i]?.value.trim() === comment) {\n      return comments[i];\n    }\n  }\n};\n\nexport const shouldBeIgnored = (path: NodePath) => {\n  for (const comment of path.node.leadingComments ?? []) {\n    if (comment.value.includes(IGNORE_ANNOTATION)) {\n      return true;\n    }\n  }\n  if (path.parentPath) {\n    return shouldBeIgnored(path.parentPath);\n  }\n  return false;\n};\n"
  },
  {
    "path": "packages/compiler/utils/checks.ts",
    "content": "import type * as t from '@babel/types';\n\ntype TypeFilter<V extends t.Node> = (node: t.Node) => node is V;\n\nexport function isPathValid<V extends t.Node>(\n  path: unknown,\n  key: TypeFilter<V>,\n): path is babel.NodePath<V> {\n  return key((path as babel.NodePath).node);\n}\n\nexport type NestedExpression =\n  | t.ParenthesizedExpression\n  | t.TypeCastExpression\n  | t.TSAsExpression\n  | t.TSSatisfiesExpression\n  | t.TSNonNullExpression\n  | t.TSInstantiationExpression\n  | t.TSTypeAssertion;\n\nexport function isNestedExpression(node: t.Node): node is NestedExpression {\n  switch (node.type) {\n    case 'ParenthesizedExpression':\n    case 'TypeCastExpression':\n    case 'TSAsExpression':\n    case 'TSSatisfiesExpression':\n    case 'TSNonNullExpression':\n    case 'TSTypeAssertion':\n    case 'TSInstantiationExpression':\n      return true;\n    default:\n      return false;\n  }\n}\n\nexport type ComponentNode =\n  | t.ArrowFunctionExpression\n  | t.FunctionExpression\n  | t.FunctionDeclaration;\n\nexport function isComponent(node: t.Node): node is ComponentNode {\n  switch (node.type) {\n    case 'ArrowFunctionExpression':\n    case 'FunctionExpression':\n    case 'FunctionDeclaration':\n      return true;\n    default:\n      return false;\n  }\n}\n\nexport function isComponentishName(name: string): boolean {\n  return name[0] >= 'A' && name[0] <= 'Z';\n}\n\nexport function isStatementTopLevel(\n  path: babel.NodePath<t.Statement>,\n): boolean {\n  let blockParent = path.scope.getBlockParent();\n  const programParent = path.scope.getProgramParent();\n  // a FunctionDeclaration binding refers to itself as the block parent\n  if (blockParent.path === path) {\n    blockParent = blockParent.parent;\n  }\n\n  return programParent === blockParent;\n}\n"
  },
  {
    "path": "packages/compiler/utils/generate-unique-name.ts",
    "content": "import type * as babel from '@babel/core';\nimport * as t from '@babel/types';\n\nexport function generateUniqueName(\n  path: babel.NodePath,\n  name: string,\n): t.Identifier {\n  let uid;\n  let i = 1;\n  do {\n    uid = `${name}_${i}`;\n    i++;\n  } while (\n    path.scope.hasLabel(uid) ||\n    path.scope.hasBinding(uid) ||\n    path.scope.hasGlobal(uid) ||\n    path.scope.hasReference(uid)\n  );\n\n  const program = path.scope.getProgramParent();\n  program.references[uid] = true;\n  program.uids[uid] = true;\n\n  return t.identifier(uid);\n}\n"
  },
  {
    "path": "packages/compiler/utils/get-descriptive-name.ts",
    "content": "import type { NodePath } from '@babel/core';\n\nexport function getDescriptiveName(\n  path: NodePath,\n  defaultName: string,\n): string {\n  let current: babel.NodePath | null = path;\n  while (current) {\n    switch (current.node.type) {\n      case 'FunctionDeclaration':\n      case 'FunctionExpression': {\n        if (current.node.id) {\n          return current.node.id.name;\n        }\n        break;\n      }\n      case 'VariableDeclarator': {\n        if (current.node.id.type === 'Identifier') {\n          return current.node.id.name;\n        }\n        break;\n      }\n      case 'ClassPrivateMethod':\n      case 'ClassMethod':\n      case 'ObjectMethod': {\n        switch (current.node.key.type) {\n          case 'Identifier':\n            return current.node.key.name;\n          case 'PrivateName':\n            return current.node.key.id.name;\n          default:\n            break;\n        }\n        break;\n      }\n      default:\n        break;\n    }\n    current = current.parentPath;\n  }\n  return defaultName;\n}\n"
  },
  {
    "path": "packages/compiler/utils/get-import-specifier.ts",
    "content": "import type * as babel from '@babel/core';\nimport * as t from '@babel/types';\nimport type { ImportDefinition, StateContext } from '../types';\n\nexport function getImportIdentifier(\n  state: StateContext,\n  path: babel.NodePath,\n  registration: ImportDefinition,\n): t.Identifier {\n  const name = registration.kind === 'named' ? registration.name : 'default';\n  const target = `${registration.source}[${name}]`;\n  const current = state.imports.get(target);\n  if (current) {\n    return current;\n  }\n  const programParent = path.scope.getProgramParent();\n  const uid = programParent.generateUidIdentifier(\n    registration.kind === 'named' ? registration.name : 'default',\n  );\n  const newPath = (\n    programParent.path as babel.NodePath<t.Program>\n  ).unshiftContainer(\n    'body',\n    t.importDeclaration(\n      [\n        registration.kind === 'named'\n          ? t.importSpecifier(uid, t.identifier(registration.name))\n          : t.importDefaultSpecifier(uid),\n      ],\n      t.stringLiteral(registration.source),\n    ),\n  )[0];\n  programParent.registerDeclaration(newPath);\n  state.imports.set(target, uid);\n  return uid;\n}\n"
  },
  {
    "path": "packages/compiler/utils/get-root-statement-path.ts",
    "content": "import type * as babel from '@babel/core';\nimport * as t from '@babel/types';\n\nexport function getRootStatementPath(path: babel.NodePath): babel.NodePath {\n  let current = path.parentPath;\n  while (current) {\n    const next = current.parentPath;\n    if (next && t.isProgram(next.node)) {\n      return current;\n    }\n    current = next;\n  }\n  return path;\n}\n"
  },
  {
    "path": "packages/compiler/utils/get-valid-import-definition.ts",
    "content": "import * as t from '@babel/types';\nimport type { ImportDefinition, StateContext } from '../types';\nimport { unwrapNode } from './unwrap-node';\n\nfunction isValidIdentifier(\n  node: t.Node,\n): node is t.Identifier | t.JSXIdentifier {\n  return t.isIdentifier(node) || t.isJSXIdentifier(node);\n}\n\nfunction getValidImportDefinitionFromIdentifier(\n  ctx: StateContext,\n  path: babel.NodePath,\n): ImportDefinition | undefined {\n  const id = unwrapNode(path.node, isValidIdentifier);\n  if (id) {\n    const binding = path.scope.getBindingIdentifier(id.name) as\n      | t.Identifier\n      | undefined;\n    // babel kinda fcked up\n    if (binding) {\n      return ctx.definitions.identifiers.get(binding);\n    }\n    return undefined;\n  }\n  return undefined;\n}\n\nfunction getValidImportDefinitionFromMemberExpression(\n  ctx: StateContext,\n  path: babel.NodePath,\n): ImportDefinition | undefined {\n  const member = unwrapNode(path.node, t.isMemberExpression);\n  if (!(member && !member.computed && t.isIdentifier(member.property))) {\n    return undefined;\n  }\n  const object = unwrapNode(member.object, t.isIdentifier);\n  if (!object) {\n    return undefined;\n  }\n  const binding = path.scope.getBindingIdentifier(object.name) as\n    | t.Identifier\n    | undefined;\n  if (!binding) {\n    return undefined;\n  }\n  const defs = ctx.definitions.namespaces.get(binding);\n  if (!defs) {\n    return undefined;\n  }\n  const propName = member.property.name;\n  for (let i = 0, len = defs.length; i < len; i++) {\n    const def = defs[i]!;\n    if (def.kind === 'named' && def.name === propName) {\n      return def;\n    }\n    if (def.kind === 'default' && propName === 'default') {\n      return def;\n    }\n  }\n  return undefined;\n}\n\nfunction getValidImportDefinitionFromJSXMemberExpression(\n  ctx: StateContext,\n  path: babel.NodePath,\n): ImportDefinition | undefined {\n  if (!path.isJSXMemberExpression()) {\n    return undefined;\n  }\n  const object = unwrapNode(path.node.object, t.isJSXIdentifier);\n  if (!object) {\n    return undefined;\n  }\n  const binding = path.scope.getBindingIdentifier(object.name) as\n    | t.Identifier\n    | undefined;\n  if (!binding) {\n    return undefined;\n  }\n  const defs = ctx.definitions.namespaces.get(binding);\n  if (!defs) {\n    return undefined;\n  }\n  const propName = path.node.property.name;\n  for (let i = 0, len = defs.length; i < len; i++) {\n    const def = defs[i]!;\n    if (def.kind === 'named' && def.name === propName) {\n      return def;\n    }\n    if (def.kind === 'default' && propName === 'default') {\n      return def;\n    }\n  }\n  return undefined;\n}\n\nexport function getValidImportDefinition(\n  ctx: StateContext,\n  path: babel.NodePath,\n): ImportDefinition | undefined {\n  return (\n    getValidImportDefinitionFromIdentifier(ctx, path) ||\n    getValidImportDefinitionFromMemberExpression(ctx, path) ||\n    getValidImportDefinitionFromJSXMemberExpression(ctx, path)\n  );\n}\n"
  },
  {
    "path": "packages/compiler/utils/is-guaranteed-literal.ts",
    "content": "import * as t from '@babel/types';\n\nexport function isGuaranteedLiteral(node: t.Expression): node is t.Literal {\n  switch (node.type) {\n    case 'ParenthesizedExpression':\n    case 'TypeCastExpression':\n    case 'TSAsExpression':\n    case 'TSSatisfiesExpression':\n    case 'TSNonNullExpression':\n    case 'TSTypeAssertion':\n    case 'TSInstantiationExpression':\n      return isGuaranteedLiteral(node.expression);\n    case 'StringLiteral':\n    case 'NumericLiteral':\n    case 'BooleanLiteral':\n    case 'NullLiteral':\n    case 'BigIntLiteral':\n    case 'RegExpLiteral':\n      return true;\n    case 'TemplateLiteral':\n      for (let i = 0, len = node.expressions.length; i < len; i++) {\n        const expr = node.expressions[i];\n        if (t.isExpression(expr) && !isGuaranteedLiteral(expr)) {\n          return false;\n        }\n      }\n      return true;\n    case 'UnaryExpression':\n      if (node.operator === 'throw' || node.operator === 'delete') {\n        return false;\n      }\n      return isGuaranteedLiteral(node.argument);\n    case 'ConditionalExpression':\n      return (\n        isGuaranteedLiteral(node.test) &&\n        isGuaranteedLiteral(node.consequent) &&\n        isGuaranteedLiteral(node.alternate)\n      );\n    case 'BinaryExpression':\n      if (\n        node.operator === 'in' ||\n        node.operator === 'instanceof' ||\n        node.operator === '|>'\n      ) {\n        return false;\n      }\n      return (\n        t.isExpression(node.left) &&\n        isGuaranteedLiteral(node.left) &&\n        t.isExpression(node.right) &&\n        isGuaranteedLiteral(node.right)\n      );\n    case 'LogicalExpression':\n      return isGuaranteedLiteral(node.left) && isGuaranteedLiteral(node.right);\n    default:\n      return false;\n  }\n}\n"
  },
  {
    "path": "packages/compiler/utils/is-jsx-component-element.ts",
    "content": "import type * as babel from '@babel/core';\nimport * as t from '@babel/types';\nimport { isPathValid } from './checks';\nimport { isAttributeUnsupported } from './jsx';\n\nexport function isJSXComponentElement(\n  path: babel.NodePath<t.JSXElement>,\n): boolean {\n  const openingElement = path.get('openingElement');\n  const name = openingElement.get('name');\n  /**\n   * Only valid component elements are member expressions and identifiers\n   * starting with component-ish name\n   */\n  if (isPathValid(name, t.isJSXMemberExpression)) {\n    return true;\n  }\n  if (isPathValid(name, t.isJSXIdentifier)) {\n    if (/^[A-Z_]/.test(name.node.name)) {\n      return true;\n    }\n  }\n  const attributes = openingElement.get('attributes');\n  for (let i = 0, len = attributes.length; i < len; i++) {\n    const attr = attributes[i];\n    if (isPathValid(attr, t.isJSXAttribute)) {\n      if (isAttributeUnsupported(attr.node) || attr.node.name.name === 'ref') {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n"
  },
  {
    "path": "packages/compiler/utils/is-use-client.ts",
    "content": "import type * as t from '@babel/types';\n\nexport const isUseClient = (directives: t.Directive[]): boolean => {\n  const directivesLength = directives.length;\n  if (!directivesLength) return false; // we assume it's server component only\n  for (let i = 0; i < directivesLength; ++i) {\n    const directive = directives[i];\n    if (directive?.value.value === 'use client') return true;\n  }\n  return false;\n};\n"
  },
  {
    "path": "packages/compiler/utils/jsx.ts",
    "content": "import * as t from '@babel/types';\nimport { RENDER_SCOPE } from '../constants';\n\nexport const trimJSXChildren = (jsx: t.JSXElement | t.JSXFragment) => {\n  for (let i = jsx.children.length - 1; i >= 0; i--) {\n    const child = jsx.children[i]!;\n\n    const isEmptyText = t.isJSXText(child) && child.value.trim() === '';\n    const isEmptyExpression =\n      t.isJSXExpressionContainer(child) &&\n      t.isJSXEmptyExpression(child.expression);\n    const isEmptyFragment =\n      t.isJSXFragment(child) && child.children.length === 0;\n\n    if (isEmptyText || isEmptyExpression || isEmptyFragment) {\n      jsx.children.splice(i, 1);\n    }\n  }\n};\n\nexport const dedupeJSXAttributes = (\n  attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[],\n) => {\n  const seen = new Set<string>();\n  for (let i = attributes.length - 1; i >= 0; i--) {\n    const attr = attributes[i]!;\n    if (\n      t.isJSXAttribute(attr) &&\n      t.isJSXIdentifier(attr.name) &&\n      seen.has(attr.name.name)\n    ) {\n      attributes.splice(i, 1);\n    }\n\n    if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {\n      seen.add(attr.name.name);\n    }\n  }\n  return attributes;\n};\n\nexport const isAttributeUnsupported = (attribute: t.JSXAttribute) => {\n  const UNSUPPORTED = ['tw', 'css'];\n  const attributeName = attribute.name.name;\n  return (\n    typeof attributeName === 'string' && UNSUPPORTED.includes(attributeName)\n  );\n};\n\nexport const isComponent = (name: string) => {\n  return (\n    name[0] &&\n    // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n    name[0] === name[0].toUpperCase() &&\n    !name.startsWith('_') &&\n    !name.startsWith('use')\n  );\n};\n\nexport const isJSXFragment = (\n  node: t.Node | null | undefined,\n): node is t.JSXFragment | t.JSXElement => {\n  if (!t.isJSXElement(node)) return t.isJSXFragment(node);\n\n  const type = node.openingElement.name;\n  return (\n    (t.isJSXMemberExpression(type) && type.property.name === 'Fragment') ||\n    (t.isJSXIdentifier(type) && type.name === 'Fragment')\n  );\n};\n\nexport const isSensitiveJSXElement = (jsx: t.JSXElement) => {\n  // elements that break when the children are not in a specific format\n  const SENSITIVE_ELEMENTS = ['select'];\n\n  const type = jsx.openingElement.name;\n\n  return t.isJSXIdentifier(type) && SENSITIVE_ELEMENTS.includes(type.name);\n};\n\nexport const isStaticAttributeValue = (node: t.Node) => {\n  if (\n    t.isTaggedTemplateExpression(node) &&\n    t.isIdentifier(node.tag) &&\n    node.quasi.expressions.length === 0 &&\n    node.tag.name === 'css'\n  ) {\n    return true;\n  }\n  return t.isLiteral(node) && !t.isTemplateLiteral(node);\n};\n\n/**\n * Turns top-level JSX fragments into a render scope. This is because\n * the runtime API does not currently handle fragments. We will deal with\n * nested fragments later.\n *\n * ```js\n * function Component() {\n *  return <>\n *   <div />\n *  </>;   * }\n *\n * // becomes\n *\n * function Component() {\n *  return <slot>\n *    <div />\n *  </slot>;\n * }\n * ```\n */\nexport const handleTopLevelFragment = (returnStatement: t.ReturnStatement) => {\n  const jsx = returnStatement.argument as t.JSXElement | t.JSXFragment;\n  trimJSXChildren(jsx);\n\n  if (jsx.children.length !== 1) {\n    const renderScopeId = t.jsxIdentifier(RENDER_SCOPE);\n    returnStatement.argument = t.jsxElement(\n      t.jsxOpeningElement(renderScopeId, []),\n      t.jsxClosingElement(renderScopeId),\n      jsx.children,\n    );\n    return;\n  }\n\n  const child = jsx.children[0];\n  if (t.isJSXElement(child)) {\n    returnStatement.argument = child;\n  }\n\n  if (t.isJSXExpressionContainer(child)) {\n    if (t.isJSXEmptyExpression(child.expression)) {\n      returnStatement.argument = t.nullLiteral();\n    } else {\n      returnStatement.argument = child.expression;\n    }\n  }\n\n  if (isJSXFragment(child)) {\n    handleTopLevelFragment(child, returnStatement);\n  }\n};\n"
  },
  {
    "path": "packages/compiler/utils/log.ts",
    "content": "import * as t from '@babel/types';\nimport {\n  bold,\n  cyan,\n  dim,\n  green,\n  magenta,\n  underline,\n  yellow,\n} from 'kleur/colors';\nimport type { NodePath } from '@babel/core';\nimport type { MillionTelemetry } from 'packages/telemetry';\nimport type { Options } from '../options';\n\n/**\n * deopt (deoptimize) will turn a block into a regular function call.\n */\nexport const deopt = (\n  message: string | null,\n  filename: string,\n  callSitePath: NodePath,\n  targetPath: NodePath = callSitePath,\n): Error => {\n  const { parent, node } = callSitePath;\n  // This will attempt to reset the variable to the first argument from\n  // const foo = block(Component) --> const foo = Component\n  if (\n    t.isVariableDeclarator(parent) &&\n    'arguments' in node &&\n    (t.isExpression(node.arguments[0]) || t.isIdentifier(node.arguments[0]))\n  ) {\n    parent.init = node.arguments[0];\n  }\n  if (message === null) return new Error('');\n  return createErrorMessage(targetPath, message, filename);\n};\n\nexport const warn = (\n  message: string,\n  file: string,\n  path: NodePath,\n  log?: boolean | string | null,\n): void => {\n  if (log === false) return;\n  const err = createErrorMessage(path, message, file);\n  // eslint-disable-next-line no-console\n  console.warn(\n    err.message,\n    '\\n',\n    dim(\n      `Check out the Rules of Blocks: ${cyan(\n        'https://million.dev/docs/rules',\n      )}. Enable the \"mute\" option to disable this message.`,\n    ),\n    '\\n',\n  );\n};\n\nexport const createErrorMessage = (\n  path: NodePath,\n  message: string,\n  filename: string,\n): Error => {\n  return path.buildCodeFrameError(\n    `\\n${magenta('⚠')}${message} ${dim(filename)}`,\n  );\n};\n\nlet hasIntroRan = false;\n\nexport const displayIntro = (options: Options): void => {\n  if (hasIntroRan) return;\n  hasIntroRan = true;\n\n  const experiments: string[] = [];\n\n  if (typeof options.auto === 'object' && options.auto.rsc) {\n    experiments.push('auto-rsc');\n  }\n  if (options.optimize) {\n    experiments.push('optimize');\n  }\n\n  let message = `\\n  ${bold(\n    magenta(`⚡ Million.js ${process.env.VERSION || ''}`),\n  )}\n  - Tip:     use ${dim('// million-ignore')} for errors\n  - Hotline: ${cyan('https://million.dev/hotline')}\\n`;\n\n  if (experiments.length) {\n    message += `\\n  - Experiments (use at your own risk):\n      · ${experiments.join('\\n      · ')}\n  `;\n  }\n\n  // eslint-disable-next-line no-console\n  console.log(`${message}\\n`);\n};\n\nexport const catchError = (\n  fn: () => void,\n  log: boolean | string | undefined | null,\n): void => {\n  try {\n    fn();\n  } catch (err: unknown) {\n    if (err instanceof Error && err.message && log !== false) {\n      // eslint-disable-next-line no-console\n      console.warn(err.message, '\\n');\n    }\n  }\n};\n\nexport const logImprovement = (\n  component: string,\n  improvement: number,\n  telemetry: MillionTelemetry,\n): void => {\n  void telemetry.record({\n    event: 'improvement',\n    payload: { component, improvement },\n  });\n\n  const improvementFormatted = isFinite(improvement)\n    ? (improvement * 100).toFixed(0)\n    : '∞';\n\n  // eslint-disable-next-line no-console\n  console.log(\n    `${magenta(' ⚡ ')}${yellow(`<${component}>`)} now renders ${green(\n      underline(`~${improvementFormatted}%`),\n    )} faster`,\n  );\n};\n\nexport const logIgnore = (component: string): void => {\n  // eslint-disable-next-line no-console\n  console.log(dim(` ○ ${yellow(`<${component}>`)} was ignored`));\n};\n"
  },
  {
    "path": "packages/compiler/utils/object.ts",
    "content": "import * as t from '@babel/types';\n\nexport const dedupeObjectProperties = (properties: t.ObjectProperty[]) => {\n  const seen = new Set<string>();\n  for (let i = properties.length - 1; i >= 0; i--) {\n    if (!properties[i]) {\n      properties.splice(i, 1);\n      continue;\n    }\n    const prop = properties[i]!;\n    if (\n      t.isObjectProperty(prop) &&\n      t.isIdentifier(prop.key) &&\n      seen.has(prop.key.name)\n    ) {\n      properties.splice(i, 1);\n    }\n    if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {\n      seen.add(prop.key.name);\n    }\n  }\n  return properties;\n};\n"
  },
  {
    "path": "packages/compiler/utils/register-import-definition.ts",
    "content": "import * as t from '@babel/types';\nimport type { ImportDefinition, StateContext } from '../types';\n\nfunction getImportSpecifierName(specifier: t.ImportSpecifier): string {\n  if (t.isIdentifier(specifier.imported)) {\n    return specifier.imported.name;\n  }\n  return specifier.imported.value;\n}\n\nexport function registerImportDefinition(\n  ctx: StateContext,\n  path: babel.NodePath<t.ImportDeclaration>,\n  definition: ImportDefinition,\n): void {\n  if (path.node.importKind === 'typeof' || path.node.importKind === 'type') {\n    return;\n  }\n  for (let i = 0, len = path.node.specifiers.length; i < len; i++) {\n    const specifier = path.node.specifiers[i]!;\n    if (t.isImportDefaultSpecifier(specifier)) {\n      if (definition.kind === 'default') {\n        ctx.definitions.identifiers.set(specifier.local, definition);\n      }\n    } else if (t.isImportNamespaceSpecifier(specifier)) {\n      let current = ctx.definitions.namespaces.get(specifier.local);\n      if (!current) {\n        current = [];\n      }\n      current.push(definition);\n      ctx.definitions.namespaces.set(specifier.local, current);\n    } else if (\n      !(specifier.importKind === 'typeof' || specifier.importKind === 'type')\n    ) {\n      const key = getImportSpecifierName(specifier);\n      if (\n        (definition.kind === 'named' && key === definition.name) ||\n        (definition.kind === 'default' && key === 'default')\n      ) {\n        ctx.definitions.identifiers.set(specifier.local, definition);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/compiler/utils/unwrap-node.ts",
    "content": "import type * as t from '@babel/types';\nimport { isNestedExpression } from './checks';\n\ntype TypeCheck<K> = K extends ((node: t.Node) => node is infer U extends t.Node)\n  ? U\n  : never;\n\ntype TypeFilter = (node: t.Node) => boolean;\n\nexport function unwrapNode<K extends TypeFilter>(\n  node: t.Node,\n  key: K,\n): TypeCheck<K> | undefined {\n  if (key(node)) {\n    return node as TypeCheck<K>;\n  }\n  if (isNestedExpression(node)) {\n    return unwrapNode(node.expression, key);\n  }\n  return undefined;\n}\n"
  },
  {
    "path": "packages/compiler/utils/unwrap-path.ts",
    "content": "import type * as t from '@babel/types';\nimport { isNestedExpression, isPathValid } from './checks';\n\ntype TypeFilter<V extends t.Node> = (node: t.Node) => node is V;\n\nexport function unwrapPath<V extends t.Node>(\n  path: unknown,\n  key: TypeFilter<V>,\n): babel.NodePath<V> | undefined {\n  if (isPathValid(path, key)) {\n    return path;\n  }\n  if (isPathValid(path, isNestedExpression)) {\n    return unwrapPath(path.get('expression'), key);\n  }\n  return undefined;\n}\n"
  },
  {
    "path": "packages/compiler/vdom/index.ts",
    "content": "export { visitor } from './visitor';\n"
  },
  {
    "path": "packages/compiler/vdom/visitor.ts",
    "content": "/**\n * PLEASE DO NOT USE THIS IN PRODUCTION. This is technically a proof-of-concept\n * and is _highly_ experimental. Currently, it is mainly used for optimizing the\n * JS Framework Benchmark implementation\n */\n\n// import { addNamed } from '@babel/helper-module-imports';\nimport * as t from '@babel/types';\nimport type { NodePath } from '@babel/core';\nimport {\n  hoistElements,\n  renderToString,\n  renderToTemplate,\n} from '../experimental/render';\nimport { chainOrLogic } from '../experimental/utils';\nimport type { IrEdit, IrEditBase } from '../experimental/types';\nimport type { Options } from '../options';\n\nexport const visitor =\n  (options: Options = {}) =>\n  (path: NodePath<t.CallExpression>) => {\n    if (!options.optimize) return;\n    // TODO: allow aliasing (block as newBlock)\n    if (t.isIdentifier(path.node.callee, { name: 'block' })) {\n      const blockFunction = path.scope.getBinding(path.node.callee.name);\n      if (!blockFunction) return;\n      const importSource = blockFunction.path.parent;\n\n      if (\n        !t.isVariableDeclarator(path.parentPath.node) ||\n        !t.isImportDeclaration(importSource) ||\n        !importSource.source.value.includes('million')\n      ) {\n        return;\n      }\n\n      // eslint-disable-next-line prefer-const\n      let [fn, _unwrap, shouldUpdate] = path.node.arguments;\n      if (!fn) return;\n      const [props] = (fn as t.ArrowFunctionExpression).params as (\n        | t.ObjectPattern\n        | t.Identifier\n      )[];\n\n      if (t.isArrowFunctionExpression(fn) && t.isJSXElement(fn.body)) {\n        const edits: IrEdit[] = [];\n\n        const holes = t.isObjectPattern(props)\n          ? Object.keys(props.properties).map((key) => {\n              return props.properties[key].key.name;\n            })\n          : [];\n\n        const template = renderToTemplate(fn.body, edits, [], holes);\n\n        const paths: number[][] = [];\n        let maxPathLength = 0;\n        for (let i = 0, j = edits.length; i < j; ++i) {\n          const path = edits[i]?.path || [];\n          if (path.length > maxPathLength) maxPathLength = path.length;\n          paths.push(path);\n        }\n\n        const { declarators, accessedIds } = hoistElements(\n          paths,\n          path,\n          importSource.source.value,\n        );\n\n        const editsArray = t.arrayExpression(\n          edits.map((edit) => {\n            const editsProperties: t.ObjectExpression[] = [];\n            const initsProperties: t.ObjectExpression[] = [];\n\n            for (let i = 0, j = edit.edits.length; i < j; ++i) {\n              const { type, name, hole, listener, value, index } = edit.edits[\n                i\n              ] as IrEditBase;\n\n              editsProperties.push(\n                t.objectExpression([\n                  t.objectProperty(t.identifier('t'), type),\n                  t.objectProperty(t.identifier('n'), name ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('v'), value ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('h'), hole ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('i'), index ?? t.nullLiteral()),\n                  t.objectProperty(\n                    t.identifier('l'),\n                    listener ?? t.nullLiteral(),\n                  ),\n                  t.objectProperty(t.identifier('p'), value ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('b'), value ?? t.nullLiteral()),\n                ]),\n              );\n            }\n\n            for (let i = 0, j = edit.inits.length; i < j; ++i) {\n              const { type, name, hole, listener, value, index } = edit.inits[\n                i\n              ] as IrEditBase;\n\n              initsProperties.push(\n                t.objectExpression([\n                  t.objectProperty(t.identifier('t'), type),\n                  t.objectProperty(t.identifier('n'), name ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('v'), value ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('h'), hole ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('i'), index ?? t.nullLiteral()),\n                  t.objectProperty(\n                    t.identifier('l'),\n                    listener ?? t.nullLiteral(),\n                  ),\n                  t.objectProperty(t.identifier('p'), value ?? t.nullLiteral()),\n                  t.objectProperty(t.identifier('b'), value ?? t.nullLiteral()),\n                ]),\n              );\n            }\n\n            return t.objectExpression([\n              t.objectProperty(t.identifier('p'), t.nullLiteral()),\n              t.objectProperty(\n                t.identifier('e'),\n                t.arrayExpression(editsProperties),\n              ),\n              t.objectProperty(\n                t.identifier('i'),\n                initsProperties.length\n                  ? t.arrayExpression(initsProperties)\n                  : t.nullLiteral(),\n              ),\n            ]);\n          }),\n        );\n\n        const stringToDOM = addNamed(\n          path,\n          'stringToDOM',\n          importSource.source.value,\n          {\n            nameHint: 'stringToDOM$',\n          },\n        );\n\n        const shouldUpdateExists =\n          (t.isIdentifier(shouldUpdate) && shouldUpdate.name !== 'undefined') ||\n          t.isArrowFunctionExpression(shouldUpdate);\n\n        if (!shouldUpdateExists && props && !t.isIdentifier(props)) {\n          const { properties } = props;\n          shouldUpdate = t.arrowFunctionExpression(\n            [t.identifier('oldProps'), t.identifier('newProps')],\n            chainOrLogic(\n              ...properties\n                .filter((property) => t.isObjectProperty(property))\n                .map((property) => {\n                  const key = (property as t.ObjectProperty)\n                    .key as t.Identifier;\n                  return t.binaryExpression(\n                    '!==',\n                    t.optionalMemberExpression(\n                      t.identifier('oldProps'),\n                      key,\n                      false,\n                      true,\n                    ),\n                    t.optionalMemberExpression(\n                      t.identifier('newProps'),\n                      key,\n                      false,\n                      true,\n                    ),\n                  );\n                }),\n            ),\n          );\n        }\n\n        const domVariable = path.scope.generateUidIdentifier('dom$');\n        const editsVariable = path.scope.generateUidIdentifier('edits$');\n        const shouldUpdateVariable =\n          path.scope.generateUidIdentifier('shouldUpdate$');\n        const getElementsVariable =\n          path.scope.generateUidIdentifier('getElements$');\n\n        const variables = t.variableDeclaration('const', [\n          t.variableDeclarator(\n            domVariable,\n            t.callExpression(stringToDOM, [\n              t.templateLiteral(\n                [\n                  t.templateElement({\n                    raw: renderToString(template),\n                  }),\n                ],\n                [],\n              ),\n            ]),\n          ),\n          t.variableDeclarator(editsVariable, editsArray),\n          t.variableDeclarator(\n            shouldUpdateVariable,\n            shouldUpdateExists\n              ? t.nullLiteral()\n              : (shouldUpdate as t.Identifier | t.ArrowFunctionExpression),\n          ),\n          t.variableDeclarator(\n            getElementsVariable,\n            declarators.length\n              ? t.arrowFunctionExpression(\n                  [t.identifier('root')],\n                  t.blockStatement([\n                    t.variableDeclaration('const', declarators),\n                    t.returnStatement(t.arrayExpression(accessedIds)),\n                  ]),\n                )\n              : t.nullLiteral(),\n          ),\n        ]);\n        const BlockClass = addNamed(path, 'Block', importSource.source.value, {\n          nameHint: 'Block$',\n        });\n\n        const blockFactory = t.arrowFunctionExpression(\n          [\n            t.identifier('props'),\n            t.identifier('key'),\n            t.identifier('shouldUpdate'),\n          ],\n          t.blockStatement([\n            t.returnStatement(\n              t.newExpression(BlockClass, [\n                domVariable,\n                editsVariable,\n                t.identifier('props'),\n                t.logicalExpression(\n                  '??',\n                  t.identifier('key'),\n                  t.memberExpression(\n                    t.identifier('props'),\n                    t.identifier('key'),\n                  ),\n                ),\n                t.logicalExpression(\n                  '??',\n                  t.identifier('shouldUpdate'),\n                  shouldUpdateVariable,\n                ),\n                getElementsVariable,\n              ]),\n            ),\n          ]),\n        );\n\n        path.parentPath.parentPath?.insertBefore(variables);\n        path.replaceWith(t.returnStatement(blockFactory));\n      }\n    }\n  };\n"
  },
  {
    "path": "packages/experimental/README.md",
    "content": "# `million/experimental`\n"
  },
  {
    "path": "packages/experimental/index.ts",
    "content": "// eslint-disable-next-line camelcase\nexport const experimental_options = {\n  noSlot: false,\n};\n"
  },
  {
    "path": "packages/experimental/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.0.28\",\n    \"@types/react-dom\": \"^18.2.6\"\n  }\n}\n"
  },
  {
    "path": "packages/jsx-runtime/README.md",
    "content": "# `million/jsx-runtime`\n"
  },
  {
    "path": "packages/jsx-runtime/index.ts",
    "content": "import type { MillionProps } from '../types';\nimport type { VNode } from '../million';\n\nexport const h = (\n  type: string,\n  props: MillionProps | null = {},\n  ...children: VNode[]\n): VNode => {\n  if (props === null) props = {};\n  props.children = children;\n  return {\n    type,\n    props,\n  };\n};\nexport { h as createElement, h as jsx, h as jsxs };\n"
  },
  {
    "path": "packages/jsx-runtime/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\"\n}\n"
  },
  {
    "path": "packages/kitchen-sink/README.md",
    "content": "# Million.js Kitchen Sink 🧑‍🍳\n\nHey! We're actively recruiting cooks 🧑‍🍳 to help assemble a list of examples of Million + your favorite React library. [View it live at sink.million.dev](https://sink.million.dev)\n\n## Getting Started\n\nTo get started with the Million.js Kitchen Sink, follow these steps:\n\n1. Clone the Million.js repository:\n\n```bash\ngit clone https://github.com/aidenybai/million.git\ncd million\n```\n\n2. Install project dependencies using pnpm (pnpm is a package manager similar to npm and yarn, used for the Million.js project):\n\n```bash\npnpm install\n```\n\n3. Navigate to the Kitchen Sink directory:\n\n```bash\ncd packages/kitchen-sink\n```\n\n## Running the Kitchen Sink\n\nYou can run the Kitchen Sink application to explore the various scenarios and examples:\n\n```bash\npnpm dev\n```\n\nThis command will start the development server and open the Kitchen Sink application in your default web browser.\n\n## Examples\n\nThe Kitchen Sink showcases Million.js used in a variety of real-life scenarios, utilizing different technologies. Some of the examples you'll find include:\n\n- **Jotai Counter**: A simple counter built with React and that uses Jotai for managing state.\n- **Tanstack Query**: A simple application that uses the Tanstack data fetching library and showcases Million.js' usage.\n- ...\n\nEach example comes with its own code and resources, demonstrating how Million.js can be integrated into different projects and workflows.\n\n## Adding a New Example\n\nJust create a new file in `packages/kitchen-sink/src/examples` with the name of your example (e.g. `super-epic.tsx`). Make sure you `export default` a React component.\n\n## Contributing\n\nWe welcome contributions to the Million.js Kitchen Sink! If you have an interesting example, improvement, or bug fix, here's how you can contribute:\n\n1. Fork the Million.js repository.\n2. Create a new branch for your contribution.\n3. Make your changes and commit them.\n4. Push your changes to your forked repository.\n5. Create a pull request targeting the original Million.js repository.\n\nPlease make sure to follow our contribution guidelines and code of conduct when submitting your contribution.\n\n## Community and Support\n\nIf you have questions, need help, or want to discuss anything related to Million.js or the Kitchen Sink, you can:\n\n- Join our [Discord community](https://million.dev/chat).\n- Check out the [Million.js documentation](https://million.dev/docs) for more information and resources.\n\n## License\n\nThe Million.js Kitchen Sink is open-source software licensed under the [MIT License](https://github.com/aidenybai/million/blob/feat/kitchen-sink/LICENSE).\n"
  },
  {
    "path": "packages/kitchen-sink/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <link rel=\"preconnect\" href=\"https://rsms.me/\" />\n    <link rel=\"stylesheet\" href=\"https://rsms.me/inter/inter.css\" />\n    <link\n      rel=\"stylesheet\"\n      href=\"https://cdn.jsdelivr.net/npm/tiny.css@0.10/dist/tiny.css\"\n    />\n    <title>Million Kitchen Sink</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script src=\"./src/main.tsx\" type=\"module\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/kitchen-sink/package.json",
    "content": "{\n  \"type\": \"module\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"vite build\",\n    \"serve\": \"vite preview\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.2.20\",\n    \"@types/react-dom\": \"^18.2.7\",\n    \"@vitejs/plugin-react\": \"^4.0.0\",\n    \"vite\": \"4.4.9\",\n    \"vite-plugin-inspect\": \"^0.7.37\"\n  },\n  \"dependencies\": {\n    \"@emoji-mart/data\": \"^1.1.2\",\n    \"@emoji-mart/react\": \"^1.1.1\",\n    \"@hello-pangea/dnd\": \"^16.3.0\",\n    \"@reduxjs/toolkit\": \"^1.9.6\",\n    \"@tanstack/react-query\": \"^4.32.6\",\n    \"@tanstack/react-virtual\": \"3.0.0-beta.54\",\n    \"@types/react-redux\": \"^7.1.27\",\n    \"@types/uuid\": \"9.0.0\",\n    \"axios\": \"^1.4.0\",\n    \"emoji-mart\": \"^5.5.2\",\n    \"emoji-picker-react\": \"^4.5.2\",\n    \"jotai\": \"^2.3.1\",\n    \"marked\": \"^9.1.2\",\n    \"react\": \"^18.2.0\",\n    \"react-calendar\": \"^4.6.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-error-boundary\": \"^4.0.11\",\n    \"react-icons\": \"^4.11.0\",\n    \"react-qr-code\": \"^2.0.12\",\n    \"react-redux\": \"^8.1.3\",\n    \"react-router-dom\": \"^6.15.0\",\n    \"react-shorten-url\": \"^1.0.5\",\n    \"semantic-ui-css\": \"^2.5.0\",\n    \"semantic-ui-react\": \"^2.1.4\",\n    \"styled-components\": \"^6.0.7\",\n    \"swr\": \"^2.2.1\",\n    \"use-sound\": \"^4.0.1\",\n    \"uuid\": \"9.0.0\",\n    \"valtio\": \"^1.11.2\",\n    \"wouter\": \"^2.11.0\",\n    \"zustand\": \"^4.4.1\"\n  }\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/age-calculator.css",
    "content": ".age-calculator h2 {\n  font-size: 1.2rem;\n}\n.age-calculator .input-wrapper {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n  align-items: flex-end;\n  gap: 10px;\n}\n.age-calculator button {\n  margin-block: 20px;\n}\n.age-calculator .form-input-group {\n  display: flex;\n  flex-direction: column;\n  gap: 5px;\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/bmi-calculator.css",
    "content": ".bmi-calculator {\n  max-width: 900px;\n}\n.bmi-calculator h2 {\n  text-align: center;\n}\n.bmi-calculator .bmi-calculator_wrapper {\n  max-width: 500px;\n  display: grid;\n  grid-template-columns: repeat(2, 1fr);\n  margin-inline: auto;\n  gap: 10px 20px;\n}\n@media screen and (max-width: 500px) {\n  .bmi-calculator .bmi-calculator_wrapper {\n    grid-template-columns: 1fr;\n  }\n}\n.bmi-calculator .form-input-group {\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-end;\n  gap: 5px;\n}\n.bmi-calculator input,\n.bmi-calculator select {\n  height: 40px;\n  color: currentColor;\n}\n.bmi-calculator select {\n  background-color: var(--background);\n  border: none;\n  border-radius: 5px;\n  padding: 8px;\n}\n.bmi-calculator button {\n  height: 40px;\n  color: black;\n  background-color: orange;\n  margin-top: 10px;\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/carousel.css",
    "content": "/* Required styling for carousel */\n.carousel {\n  display: flex;\n  overflow: hidden;\n  gap: 10px;\n}\n\n.carousel-inner {\n  display: flex;\n  width: 100%;\n  aspect-ratio: 3/2;\n  transition: transform 0.3s ease-in-out;\n}\n.carousel img {\n  width: 100%;\n  aspect-ratio: 3/2;\n  transition: transform 0.3s ease-in-out;\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/create-event-calender.css",
    "content": "/* calendar styles */\n.create-event-calender {\n  /* text-align: center; */\n}\n\n.create-event-calender .create-event-calender_wrapper {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n  align-items: flex-start;\n  margin-top: 2rem;\n}\n\n.create-event-calender .calendar-container {\n  flex: 1;\n  max-width: 500px;\n  margin-right: 2rem;\n}\n\n.create-event-calender .event-container {\n  flex: 1;\n  max-width: 500px;\n}\n\n@media screen and (max-width: 768px) {\n  .create-event-calender .create-event-calender_wrapper {\n    flex-direction: column;\n  }\n\n  .create-event-calender .calendar-container,\n  .create-event-calender .event-container {\n    max-width: 100%;\n    margin-right: 0;\n    margin-bottom: 2rem;\n    justify-content: center;\n  }\n}\n\n.create-event-calender .react-calendar {\n  width: 100%;\n  max-width: 500px;\n  background-color: white;\n  border: 1px solid #151515;\n  font-family: Arial, Helvetica, sans-serif;\n  line-height: 1.125em;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n  border-radius: 8px;\n  padding: 10px;\n  transition: background-color 0.2s;\n}\n\n.create-event-calender .react-calendar--doubleView {\n  width: 100%;\n}\n\n.create-event-calender\n  .react-calendar--doubleView\n  .react-calendar__viewContainer {\n  display: flex;\n  margin: -0.5em;\n}\n\n.create-event-calender\n  .react-calendar--doubleView\n  .react-calendar__viewContainer\n  > * {\n  width: 50%;\n  margin: 0.5em;\n}\n\n.create-event-calender .react-calendar,\n.create-event-calender .react-calendar *,\n.create-event-calender .react-calendar *:before,\n.create-event-calender .react-calendar *:after {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n}\n\n.create-event-calender .react-calendar button {\n  margin: 0;\n  border: 0;\n  outline: none;\n  color: #151515;\n}\n\n.create-event-calender .react-calendar button:enabled:hover {\n  cursor: pointer;\n}\n\n.create-event-calender .react-calendar__navigation {\n  display: flex;\n  height: 44px;\n  margin-bottom: 1em;\n}\n\n.create-event-calender .react-calendar__navigation button {\n  min-width: 44px;\n  background: none;\n}\n\n.create-event-calender .react-calendar__navigation button:disabled {\n  background-color: black;\n}\n\n.create-event-calender .react-calendar__navigation button:enabled:hover,\n.create-event-calender .react-calendar__navigation button:enabled:focus {\n  background-color: black;\n}\n\n.create-event-calender .react-calendar__month-view__weekdays {\n  text-align: center;\n  text-transform: uppercase;\n  font-weight: bold;\n  font-size: 0.8rem;\n  color: black;\n}\n\n.create-event-calender .react-calendar__month-view__weekdays__weekday {\n  padding: 0.5em;\n}\n\n.create-event-calender\n  .react-calendar__month-view__weekNumbers\n  .react-calendar__tile {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 0.75em;\n  font-weight: bold;\n}\n\n.create-event-calender .react-calendar__month-view__days__day--weekend {\n  color: black;\n}\n\n.create-event-calender\n  .react-calendar__month-view__days__day--neighboringMonth {\n  color: black;\n}\n\n.create-event-calender .react-calendar__year-view .react-calendar__tile,\n.create-event-calender .react-calendar__decade-view .react-calendar__tile,\n.create-event-calender .react-calendar__century-view .react-calendar__tile {\n  padding: 2em 0.5em;\n}\n\n.create-event-calender .react-calendar__tile {\n  max-width: 100%;\n  padding: 10px 6.6667px;\n  background: none;\n  text-align: center;\n  line-height: 16px;\n}\n\n.create-event-calender .react-calendar__tile:disabled {\n  background-color: black;\n}\n\n.create-event-calender .react-calendar__tile:enabled:hover,\n.create-event-calender .react-calendar__tile:enabled:focus {\n  background-color: black;\n}\n\n.create-event-calender .react-calendar__tile--now {\n  background: black;\n  color: white !important;\n}\n\n.create-event-calender .react-calendar__tile--now:enabled:hover,\n.create-event-calender .react-calendar__tile--now:enabled:focus {\n  background: black;\n}\n\n.create-event-calender .react-calendar__tile--hasActive {\n  background: black;\n}\n\n.create-event-calender .react-calendar__tile--hasActive:enabled:hover,\n.create-event-calender .react-calendar__tile--hasActive:enabled:focus {\n  background: black;\n}\n\n.create-event-calender .react-calendar__tile--active {\n  background: black;\n  color: black;\n}\n\n.create-event-calender .react-calendar__tile--active:enabled:hover,\n.create-event-calender .react-calendar__tile--active:enabled:focus {\n  background: black;\n}\n\n.create-event-calender\n  .react-calendar--selectRange\n  .react-calendar__tile--hover {\n  background-color: black;\n}\n\n.create-event-calender .event-form {\n  margin-bottom: 20px;\n}\n\n.create-event-calender .event-form h2 {\n  margin-bottom: 10px;\n}\n\n.create-event-calender .event-form p {\n  font-size: 1.2rem;\n}\n\n.create-event-calender .event-form input {\n  padding: 8px;\n  font-size: 1rem;\n  margin-right: 10px;\n}\n\n.create-event-calender .create-btn {\n  padding: 8px 6px;\n  margin-top: 5px;\n  background-color: white;\n  color: black;\n  border: 0.5px solid black;\n  border-radius: 4px;\n  font-size: 1rem;\n  cursor: pointer;\n  transition: background-color 0.2s;\n}\n\n.create-event-calender .create-btn:hover {\n  background-color: black;\n  color: whitesmoke;\n  border: 0.5px solid white;\n}\n\n.create-event-calender .event-list {\n  margin-top: 20px;\n}\n\n.create-event-calender .event-cards {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: center;\n}\n\n.create-event-calender .event-card {\n  width: 300px;\n  background-color: whitesmoke;\n  border-radius: 8px;\n  margin: 10px;\n  padding: 10px;\n  cursor: pointer;\n  transition: transform 0.2s, box-shadow 0.2s;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.create-event-calender .event-card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.create-event-calender .event-card-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 10px;\n}\n\n.create-event-calender .event-date {\n  font-size: 1rem;\n  color: black;\n}\n\n.create-event-calender .event-actions {\n  display: flex;\n}\n\n.create-event-calender .update-btn,\n.create-event-calender .delete-btn {\n  padding: 8px 12px;\n  margin-left: 5px;\n  background-color: white;\n  color: black;\n  border: 0.5px solid black;\n  border-radius: 4px;\n  font-size: 0.9rem;\n  cursor: pointer;\n  transition: background-color 0.2s;\n}\n\n.create-event-calender .update-btn:hover,\n.create-event-calender .delete-btn:hover {\n  background-color: black;\n  color: aliceblue;\n  border: 0.5px solid white;\n}\n\n.create-event-calender .event-card-body {\n  padding-bottom: 10px;\n}\n\n.create-event-calender .event-title {\n  font-size: 1.5rem;\n  color: blueviolet;\n}\n\n.create-event-calender .selected {\n  background-color: #ff4081 !important;\n  color: black;\n}\n\n.create-event-calender .event-marked {\n  background-color: #ff4081;\n  color: white;\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/dice-roller.css",
    "content": "/* Dice roller styles */\n@keyframes shakeDice {\n  0% {\n    transform: translateX(0);\n  }\n\n  10% {\n    transform: translateX(-5px);\n  }\n\n  20% {\n    transform: translateX(5px);\n  }\n\n  30% {\n    transform: translateX(-5px);\n  }\n\n  40% {\n    transform: translateX(5px);\n  }\n\n  50% {\n    transform: translateX(-5px);\n  }\n\n  60% {\n    transform: translateX(5px);\n  }\n\n  70% {\n    transform: translateX(-5px);\n  }\n\n  80% {\n    transform: translateX(5px);\n  }\n\n  90% {\n    transform: translateX(-5px);\n  }\n\n  100% {\n    transform: translateX(0);\n  }\n}\n\n.dice-roller.roll-animation {\n  animation: shakeDice 0.5s ease-in-out;\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/examples/style.css",
    "content": "/* Music player styles */\n.body {\n  box-sizing: border-box;\n  background: linear-gradient(\n    90deg,\n    rgba(2, 0, 36, 1) 0%,\n    rgba(20, 107, 128, 1) 51%,\n    rgba(0, 212, 255, 1) 100%\n  );\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.music-card {\n  min-height: 90vh;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.component {\n  background: linear-gradient(\n    90deg,\n    rgba(2, 0, 36, 1) 0%,\n    rgba(105, 20, 128, 1)\n  );\n  width: 50%;\n  color: #fff;\n  margin: 1.4em 0;\n  max-width: 600px;\n  padding: 1em 2em;\n  border: 0.1px solid black;\n  border-radius: 10px;\n}\n\n.musicCover {\n  max-width: 100%;\n  border-radius: 10%;\n}\n\n.playButton {\n  background: none;\n  border: none;\n  align-items: center;\n  justify-content: center;\n}\n\n.subTitle {\n  margin-top: -1em;\n  color: #d3c5c5;\n}\n\n.time {\n  margin: 0 auto;\n  width: 80%;\n  display: flex;\n  justify-content: space-between;\n  color: #828282;\n  font-size: smaller;\n}\n\n.timeline {\n  width: 80%;\n  background-color: #27ae60;\n}\n\ninput[type='range'] {\n  background-color: #27ae60;\n}\n\n@media (max-width: 900px) {\n  .component {\n    width: 50%;\n  }\n}\n\n/*  */\n\n/* QR code styles */\n.qr-code-wrapper {\n  display: inline-flex;\n  background: white;\n  margin-top: 2rem;\n  padding: 1rem;\n}\n\n.news-card {\n  display: flex;\n  flex-direction: column;\n  background-color: #fff;\n  border-radius: 8px;\n  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);\n  overflow: hidden;\n  margin-bottom: 20px;\n  transition: transform 0.2s ease-in-out;\n\n  &:hover {\n    transform: scale(1.04);\n  }\n\n  &:focus {\n    transform: scale(1.04);\n  }\n\n  .news-container {\n    justify-content: center;\n    align-items: center;\n  }\n\n  .image-container {\n    display: flex;\n    justify-content: center;\n    height: 300px;\n    width: 100%;\n\n    &:hover {\n      opacity: 0.8;\n    }\n\n    img {\n      width: 1000px;\n    }\n  }\n\n  .content {\n    padding: 0 16px;\n\n    .title {\n      font-size: 1.25rem;\n      font-weight: 800;\n      margin-bottom: 8px;\n      color: black;\n    }\n\n    .description {\n      font-size: 1rem;\n      color: #333;\n      margin-bottom: 12px;\n    }\n\n    .source {\n      font-size: 0.875rem;\n      color: #777;\n      margin-bottom: 4px;\n    }\n\n    .published-at {\n      font-size: 0.875rem;\n      color: #777;\n      margin-bottom: 12px;\n    }\n\n    .read-more {\n      font-size: 1rem;\n      text-decoration: none;\n      color: #007bff;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n}\n\n/**********  PASSWORD GENERATOR  **********/\n.password_generator {\n  width: 80%;\n  margin: 2em auto;\n}\n\n.password_generator_top_section {\n  display: flex;\n  gap: 1.5em;\n}\n\n.password_generator_output_container {\n  display: flex;\n  border-radius: 10px;\n  background: #353535;\n  border: 1px solid #dddddd;\n  align-items: center;\n  padding-right: 20px;\n  flex: 5;\n}\n\n.password_generator_output_container input {\n  padding: 14px;\n  width: 100%;\n  outline: none;\n  line-height: 30px;\n  caret-color: #1c1c1c;\n  background-color: transparent;\n  font-size: 16px;\n  border-radius: 10px;\n  transition: all 0.3s ease-in;\n  color: #fff;\n  font-weight: 600;\n  font-size: 1.5rem;\n}\n\n.password_generator_output_container .right-icon {\n  font-size: 25px;\n  cursor: pointer;\n  border: none;\n}\n\n.password_generator_refresh_password {\n  flex: 0.5;\n}\n\n.password_generator_tooltip-container {\n  position: relative;\n}\n\n.password_generator_tooltip-text {\n  background-color: #333;\n  color: #fff;\n  text-align: center;\n  border-radius: 4px;\n  padding: 6px;\n  position: absolute;\n  z-index: 1;\n  bottom: 50%;\n  left: 90%;\n  font-size: 12px;\n  opacity: 0;\n  transition: all 200ms ease-in-out;\n}\n\n.password_generator_tooltip-text.visible {\n  opacity: 1;\n}\n\n.password_generator_customizable_options__length {\n  display: flex;\n  align-items: center;\n}\n\n.password_generator_customizable_options__checkbox {\n  position: relative;\n  /* border: 1px solid themed(\"primary\"); */\n  border-radius: 4px;\n  background: none;\n  cursor: pointer;\n  line-height: 0;\n  margin: 0 0.6em 0 0;\n  outline: 0;\n  padding: 0 !important;\n  vertical-align: text-top;\n  height: 18px;\n  width: 18px;\n  opacity: 0.5;\n  transition: all 200ms ease-in-out;\n\n  &:hover {\n    opacity: 1;\n  }\n\n  &:checked {\n    /* background-color: themed(\"primary\"); */\n    opacity: 1;\n    border: none;\n  }\n}\n\n/*  */\n\n.container {\n  width: 50vw;\n  display: flex;\n  flex-wrap: wrap;\n  margin: auto;\n  margin-top: 50px;\n  border: 10px solid white;\n}\n\n.button-container {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 20px;\n  padding-top: 50px;\n}\n\n.sketch-button {\n  font-size: 1.4rem;\n  border-radius: 10px;\n  background: linear-gradient(green, royalblue);\n}\n\n.color-container {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 10px;\n}\n\n.game-container {\n  padding: 20px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  gap: 25px;\n\n  .restart {\n    background-color: #007bff;\n    padding: 20px;\n    font-size: 1.4rem;\n  }\n\n  .box1 {\n    display: flex;\n    justify-content: space-between;\n    gap: 20px;\n\n    & button {\n      padding: 20px;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      font-size: 1.4em;\n      border-radius: 10px;\n      background-color: royalblue;\n    }\n\n    button:active {\n      transition: 1s;\n      transform: scale(0.8);\n      background-color: royalblue;\n    }\n  }\n\n  .box2 {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 20px;\n    font-size: 1.8em;\n    text-align: center;\n    align-items: center;\n\n    & .box {\n      display: flex;\n      flex-direction: column;\n      text-align: center;\n      align-items: center;\n      border: 2px solid black;\n      padding: 10px;\n    }\n  }\n\n  .output1 {\n    font-size: 1.1rem;\n    margin: auto;\n    text-align: center;\n    margin-top: 20px;\n  }\n\n  .output {\n    font-size: 1.4rem;\n    margin: auto;\n    text-align: center;\n    font-weight: 700;\n  }\n}\n\n.type-health-bar {\n  position: relative;\n  width: 60%;\n  height: 12px;\n  left: 50%;\n  transform: translateX(-50%);\n  border-radius: 4px;\n  background-color: #ddd;\n}\n\n.type-health {\n  margin-top: 20px;\n  height: inherit;\n  border-radius: inherit;\n  position: relative;\n  background-color: #27ae60;\n}\n\n.type-mono {\n  font-family: 'Courier New', Courier, monospace;\n}\n\n.type-green {\n  display: inline;\n  background-color: #92f77e;\n}\n\n.type-red {\n  display: inline;\n  background-color: #f7887e;\n}\n\n.type-gray {\n  display: inline;\n  color: gray;\n}\n\n.type-none {\n  display: inline;\n}\n\n.card-game-container {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  text-align: center;\n}\n\n.card-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 100px);\n  gap: 10px;\n  margin-top: 20px;\n}\n\n.card {\n  width: 100px;\n  height: 100px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 24px;\n  font-weight: bold;\n  border: 2px solid #000;\n  cursor: pointer;\n  background-color: #353535;\n  border: 1px solid #3333331b;\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);\n  color: #000000;\n  border-radius: 5px;\n  transition: transform 0.3s ease-in-out;\n}\n\n.card.flipped {\n  background-color: #f0f0f0;\n  transform: rotateY(180deg);\n}\n\n.card.flipped .card-content {\n  transform: rotateY(-180deg);\n}\n\n.card.matched {\n  background-color: #7eff80;\n  cursor: not-allowed;\n}\n\n.play-again-button {\n  margin-top: 20px;\n  padding: 10px 20px;\n  font-size: 16px;\n  background-color: #4caf50;\n  color: #fff;\n  border: none;\n  cursor: pointer;\n  transition: background-color 0.3s ease-in-out;\n}\n\n.play-again-button:hover {\n  background-color: #45a049;\n}\n\n/*Snake Game CSS*/\n.snakeGame--main {\n  height: 500px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  position: relative;\n  /* border: 1px solid red; */\n}\n.snakeGame--keys {\n  width: 500px;\n  height: 150px;\n  border: 1px solid white;\n  font-family: monospace;\n  border-radius: 10px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n}\n.snakeGame--keys2 {\n  display: flex;\n  flex-direction: row;\n  width: 65%;\n  justify-content: space-between;\n  align-items: center;\n}\n.snakeGame {\n  width: 500px;\n  aspect-ratio: 1;\n  /* height: 500px; */\n  border: 10px solid white;\n  position: relative;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-direction: column;\n  font-family: monospace;\n  border-radius: 10px;\n}\n\n.snakeGame--button {\n  font-family: inherit;\n  font-size: 1.5rem;\n  border-radius: 10px;\n  color: black;\n  width: 150px;\n  height: 50px;\n  border: none;\n  background-color: #e73d9f;\n  font-weight: 600;\n  z-index: 4;\n  cursor: pointer;\n}\n\n.snakeGame--text {\n  color: #eb2d2d;\n  z-index: 4;\n  opacity: 0.5;\n}\n\n.snakeGame--arrow-msg {\n  font-size: 1rem;\n  margin: 10px;\n}\n\n.snakeGame--game-over {\n  font-size: 3rem;\n}\n\n.snakeGame--count {\n  position: absolute;\n  font-size: 2rem;\n  bottom: 0px;\n  color: #eb2d2d;\n  opacity: 0.5;\n}\n@media (max-width: 768px) {\n  .snakeGame--main {\n    flex-direction: column;\n    height: auto;\n    width: 100%;\n  }\n  .snakeGame {\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/css/style.css",
    "content": "* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\n:root {\n  font-family: 'Inter', sans-serif;\n}\n\n@supports (font-variation-settings: normal) {\n  :root {\n    font-family: 'Inter var', sans-serif;\n  }\n}\n\n.spinner {\n  width: 2rem;\n  height: 2rem;\n  border: 0.25rem solid #56c7ff;\n  border-bottom: 0.25rem solid rgba(0, 0, 0, 0);\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n  z-index: 9999;\n}\n\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\nbutton:disabled {\n  opacity: 0.2 !important;\n  cursor: not-allowed !important;\n}\n\n.kitchen_sink-layout {\n  margin-top: 1.5em;\n  display: flex;\n  height: 100vh;\n  max-width: 100vw;\n  overflow: hidden;\n}\n\n.kitchen_sink-layout-icon {\n  outline: none;\n  border: none;\n  cursor: pointer;\n  position: relative;\n}\n\n.kitchen_sink-content {\n  width: 100%;\n  overflow-x: scroll;\n  -ms-overflow-style: none;\n  scrollbar-width: none;\n}\n.kitchen_sink-content::-webkit-scrollbar {\n  display: none;\n}\n\n.kitchen_sink-content_container {\n  width: 95%;\n  margin: 0 auto;\n  max-width: 1300px;\n  height: 100vh;\n  overflow-y: scroll;\n  -ms-overflow-style: none;\n  scrollbar-width: none;\n}\n\n.kitchen_sink-content_container::-webkit-scrollbar {\n  display: none;\n}\n.kitchen_sink-sidebar {\n  border: 1px solid #353535;\n  height: 100vh;\n  box-shadow: 0px 4px 25px rgb(#000, 0.25);\n  overflow-y: scroll;\n  transition: all 200ms ease-in-out;\n  -ms-overflow-style: none;\n  scrollbar-width: none;\n  background: #252525;\n}\n\n.kitchen_sink-sidebar::-webkit-scrollbar {\n  display: none;\n}\n\n.kitchen_sink-sidebar_container {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  justify-content: stretch;\n  gap: 1em;\n  overflow-y: scroll;\n}\n\n.kitchen_sink-sidebar_close {\n  width: 0px;\n  overflow: hidden;\n  transition: all 200ms ease-in;\n}\n\n.kitchen_sink-sidebar_open {\n  padding: 1em;\n  width: 320px;\n  min-width: 270px;\n}\n\n@media screen and (max-width: 768px) {\n  .kitchen_sink-sidebar {\n    position: fixed;\n    z-index: 99999999;\n    top: 0;\n    left: 0;\n  }\n}\n\n\npre {\n  white-space: pre-wrap;\n  /* css-3 */\n  white-space: -moz-pre-wrap;\n  /* Mozilla, since 1999 */\n  white-space: -pre-wrap;\n  /* Opera 4-6 */\n  white-space: -o-pre-wrap;\n  /* Opera 7 */\n  word-wrap: break-word;\n  /* Internet Explorer 5.5+ */\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/age-calculator.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\nimport '../css/examples/age-calculator.css';\n\nconst AgeCalculator = block(() => {\n  const Today = new Date();\n  const currentYear = Today.getFullYear();\n  const currentMonth = Today.getMonth();\n  const currentDay = Today.getDate();\n\n  const [birthYear, setBirthYear] = useState('');\n  const [birthMonth, setBirthMonth] = useState('');\n  const [birthDay, setBirthDay] = useState('');\n\n  const [calculatedYear, setCalculatedYear] = useState(0);\n  const [calculatedMonth, setCalculatedMonth] = useState(0);\n  const [calculatedDay, setCalculatedDay] = useState(0);\n\n  function handleSubmit(e: React.FormEvent<HTMLFormElement>) {\n    e.preventDefault();\n\n    let years = currentYear - Number(birthYear);\n    let months = currentMonth + 1 - Number(birthMonth);\n    let days = currentDay - Number(birthDay);\n\n    if (days < 0) {\n      months -= 1;\n      const daysInPrevMonth = new Date(currentYear, currentMonth, 0).getDate();\n      days += daysInPrevMonth;\n    }\n\n    if (months < 0) {\n      years -= 1;\n      months += 12;\n    }\n\n    if (years < 0) {\n      years = 0;\n      months = 0;\n      days = 0;\n    }\n\n    setCalculatedYear(years);\n    setCalculatedMonth(months);\n    setCalculatedDay(days);\n  }\n\n  return (\n    <main className=\"age-calculator\">\n      <section>\n        <h2>Enter you date of birth</h2>\n        <form onSubmit={handleSubmit} className=\"calculator-form\">\n          <div className=\"input-wrapper\">\n            <span className=\"form-input-group\">\n              <label htmlFor=\"day\">Birth Day</label>\n              <input\n                type=\"number\"\n                name=\"day\"\n                id=\"day\"\n                placeholder=\"DD\"\n                value={birthDay}\n                onChange={(e) => setBirthDay(e.target.value)}\n                maxLength={2}\n                min={1}\n                pattern=\"(0?[1-9]|[12][0-9]|3[01])\"\n              />\n            </span>\n\n            <span className=\"form-input-group\">\n              <label htmlFor=\"month\">Birth Month</label>\n              <input\n                type=\"number\"\n                name=\"month\"\n                id=\"month\"\n                placeholder=\"MM\"\n                value={birthMonth}\n                onChange={(e) => setBirthMonth(e.target.value)}\n                maxLength={2}\n                min={1}\n                pattern=\"(1[0-2]|0?[1-9])\"\n              />\n            </span>\n\n            <span className=\"form-input-group\">\n              <label htmlFor=\"year\">Birth Year</label>\n              <input\n                type=\"number\"\n                name=\"year\"\n                id=\"year\"\n                placeholder=\"YYYY\"\n                value={birthYear}\n                onChange={(e) => setBirthYear(e.target.value)}\n                maxLength={4}\n              />\n            </span>\n          </div>\n\n          <button type=\"submit\">Calculate</button>\n        </form>\n      </section>\n\n      <section>\n        <h2>Your Age</h2>\n        <p>\n          You are {calculatedYear} {calculatedYear > 1 ? 'years' : 'year'},{' '}\n          {calculatedMonth} {calculatedMonth > 1 ? 'months' : 'month'} and{' '}\n          {calculatedDay} {calculatedDay > 1 ? 'days' : 'day'} old.\n        </p>\n      </section>\n    </main>\n  );\n});\n\nexport default AgeCalculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/bmi-calculator.jsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\nimport '../css/examples/bmi-calculator.css';\n\nconst BmiCalculator = block(function BmiComponent() {\n  const [age, setAge] = useState('');\n  const [gender, setGender] = useState('male');\n  const [heightFeet, setHeightFeet] = useState('');\n  const [heightInches, setHeightInches] = useState('');\n  const [weight, setWeight] = useState('');\n  const [bmi, setBmi] = useState(null);\n  const [bmiCategory, setBmiCategory] = useState('');\n  const [errorMessage, setErrorMessage] = useState('');\n\n  const calculateBmi = () => {\n    if (\n      age === '' ||\n      heightFeet === '' ||\n      heightInches === '' ||\n      weight === ''\n    ) {\n      setErrorMessage('Please fill in all fields.');\n      return;\n    } else {\n      setErrorMessage('');\n    }\n\n    const heightInCentimeters =\n      parseInt(heightFeet, 10) * 30.48 + parseInt(heightInches, 10) * 2.54;\n    const heightInMeters = heightInCentimeters / 100;\n    const calculatedBmi = weight / (heightInMeters * heightInMeters);\n    const finalBmi = parseFloat(calculatedBmi.toFixed(2));\n    setBmi(finalBmi);\n\n    if (finalBmi < 18.5) {\n      setBmiCategory('Underweight');\n    } else if (finalBmi >= 18.5 && finalBmi < 24.9) {\n      setBmiCategory('Normal');\n    } else if (finalBmi >= 25 && finalBmi < 29.9) {\n      setBmiCategory('Overweight');\n    } else {\n      setBmiCategory('Obese');\n    }\n  };\n\n  return (\n    <main className=\"bmi-calculator\">\n      <h2>BMI Calculator</h2>\n      <div className=\"bmi-calculator_wrapper\">\n        <div className=\"form-input-group\">\n          <label>Age*:</label>\n          <input\n            type=\"number\"\n            placeholder=\"Enter your age\"\n            min={1}\n            value={age}\n            onChange={(e) => setAge(e.target.value)}\n          />\n        </div>\n\n        <div className=\"form-input-group\">\n          <label>Gender*:</label>\n          <select value={gender} onChange={(e) => setGender(e.target.value)}>\n            <option value=\"male\">Male</option>\n            <option value=\"female\">Female</option>\n          </select>\n        </div>\n\n        <div className=\"form-input-group\">\n          <label>Height (enter feet)*:</label>\n          <input\n            type=\"number\"\n            placeholder=\"Enter your height in feet\"\n            value={heightFeet}\n            onChange={(e) => setHeightFeet(e.target.value)}\n            min={1}\n          />\n        </div>\n\n        <div className=\"form-input-group\">\n          <label>Height (enter inches)*:</label>\n          <input\n            type=\"number\"\n            placeholder=\"Enter your height in inch\"\n            value={heightInches}\n            onChange={(e) => setHeightInches(e.target.value)}\n            min={1}\n          />\n        </div>\n\n        <div className=\"form-input-group\">\n          <label>Weight (in kg)*:</label>\n          <input\n            type=\"number\"\n            placeholder=\"Enter you weight\"\n            value={weight}\n            onChange={(e) => setWeight(e.target.value)}\n            min={1}\n          />\n        </div>\n        <div className=\"form-input-group\">\n          <button type=\"button\" onClick={calculateBmi}>\n            Calculate BMI\n          </button>\n        </div>\n      </div>\n\n      {errorMessage && (\n        <p style={{ color: 'tomato', textAlign: 'center' }}>{errorMessage}</p>\n      )}\n\n      {bmi !== null && (\n        <div\n          style={{\n            border: '2px solid gold',\n            marginTop: '30px',\n            padding: '20px',\n            textAlign: 'center',\n          }}\n        >\n          <p>\n            Your BMI: <b>{bmi}</b>\n          </p>\n          <p>\n            Category: <b>{bmiCategory}</b>\n          </p>\n        </div>\n      )}\n    </main>\n  );\n});\n\nexport default BmiCalculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/book-recommendation.jsx",
    "content": "import { block, For } from 'million/react';\nimport { useEffect } from 'react';\nimport { useState } from 'react';\nimport axios from 'axios';\n\nconst apiKey = 'AIzaSyBcyDly48QaqUGg-QGB0znsGWWA_TC038Q';\n\nconst BookRecommendation = block(() => {\n  const [subject, setSubject] = useState('JavaScript');\n  const [books, setBooks] = useState([]);\n  const [loading, setLoading] = useState(true);\n\n  useEffect(() => {\n    const abortController = new AbortController();\n\n    async function getBooks() {\n      try {\n        const response = await axios.get(\n          `https://www.googleapis.com/books/v1/volumes?q=subject:${subject}&key=${apiKey}`,\n        );\n\n        setBooks(response.data.items || []);\n        setLoading(false);\n      } catch (error) {\n        console.error('Error fetching data:', error);\n        setLoading(false);\n      }\n    }\n\n    getBooks();\n\n    return () => {\n      abortController.abort();\n    };\n  }, [subject]);\n\n  if (loading) {\n    return <div>Loading...</div>;\n  }\n\n  return (\n    <main>\n      <h2\n        style={{\n          fontSize: '3rem',\n          textTransform: 'capitalize',\n          marginBottom: '1rem',\n        }}\n      >\n        Reading makes the world huge\n      </h2>\n\n      <section\n        style={{\n          background: '#ffffff',\n          color: '#2A2C2E',\n          padding: '1.2rem',\n          display: 'grid',\n          gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))',\n          gap: '1.2rem',\n        }}\n      >\n        <div\n          style={{\n            background: '#2A2C2E',\n            color: '#ffff',\n            flexBasis: '50%',\n            position: 'relative',\n            padding: '1.2rem',\n            borderRadius: '1rem',\n            overflow: 'hidden',\n          }}\n        >\n          <h3 style={{ textTransform: 'uppercase' }}>Find Something to read</h3>\n          <p style={{ marginBlock: '.5rem 1rem' }}>\n            Fancy something unusual and unpredictable? Funny or exciting? No\n            problem. Check out the collections we have prepared for you.\n          </p>\n          <button\n            type=\"button\"\n            style={{\n              outline: 'none',\n              borderRadius: '.8rem',\n              padding: '1rem 2rem',\n              border: '1px solid #F4CE47',\n              color: '#F4CE47',\n              textTransform: 'capitalize',\n            }}\n          >\n            browse now\n          </button>\n          <svg\n            width=\"200\"\n            height=\"240\"\n            viewBox=\"0 0 259 299\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            style={{ position: 'absolute', right: 0 }}\n          >\n            <path\n              d=\"M11.9995 305.5L97.745 219.754M97.745 219.754C75.3507 197.36 61.4995 166.422 61.4995 132.25C61.4995 63.9043 116.904 8.49951 185.25 8.49951C253.595 8.49951 309 63.9043 309 132.25C309 200.595 253.595 256 185.25 256C151.077 256 120.139 242.148 97.745 219.754Z\"\n              stroke=\"black\"\n              strokeOpacity=\"0.38\"\n              strokeWidth=\"16\"\n              strokeLinecap=\"square\"\n              strokeLinejoin=\"round\"\n            />\n          </svg>\n        </div>\n        <div>\n          <img\n            src=\"https://i.ibb.co/s5GS61g/book-of-the-day.png\"\n            alt=\"book image\"\n          />\n        </div>\n      </section>\n\n      <Subject selectedSubject={subject} onSelectSubject={setSubject} />\n\n      <section\n        style={{ background: '#2A2C2E', color: '#ffffff ', padding: '1.2rem' }}\n      >\n        <h3 style={{ textTransform: 'uppercase', marginBottom: '1.2rem' }}>\n          Bestsellers\n        </h3>\n        <div\n          style={{\n            display: 'grid',\n            gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))',\n            gap: '1.2rem',\n          }}\n        >\n          <For each={books}>\n            {(book, index) => <Book\n              key={index}\n              author={\n                book?.volumeInfo.authors && book?.volumeInfo.authors.join(', ')\n              }\n              image={book?.volumeInfo?.imageLinks?.thumbnail}\n              title={book?.volumeInfo.title}\n              url={book?.volumeInfo.previewLink}\n            />}\n          </For>\n        </div>\n      </section>\n    </main>\n  );\n});\n\nconst Book = ({ author, image, title, url }) => {\n  return (\n    <article\n      style={{\n        background: '#ffffff',\n        color: '#2A2C2E',\n        borderRadius: '1rem',\n        padding: '1rem',\n      }}\n    >\n      <img\n        src={image || 'https://i.ibb.co/KNZGG1G/img.png'}\n        alt={title}\n        style={{\n          display: 'block',\n          width: '100%',\n          borderRadius: '1rem',\n          height: 'auto',\n          marginBottom: '1rem',\n        }}\n      />\n\n      <h5 style={{ marginBlock: 0, fontWeight: 400 }}>\n        {author || 'Murakami'}\n      </h5>\n      <h4 style={{ marginBlock: 0 }}>{title || 'After Dark'}</h4>\n\n      <a\n        href={url}\n        style={{\n          textDecoration: 'none',\n          border: '1px solid #2A2C2E',\n          borderRadius: '1rem',\n          color: '#2A2C2E',\n          padding: '.4rem 1rem',\n          marginTop: '1rem',\n          display: 'inline-block',\n        }}\n      >\n        See more\n      </a>\n    </article>\n  );\n};\n\nconst Subject = block(({ selectedSubject, onSelectSubject }) => {\n  const SUBJECTS = [\n    'Science Fiction',\n    'Fantasy',\n    'Mystery',\n    'Romance',\n    'Thriller',\n    'Horror',\n    'Historical Fiction',\n    'Non-Fiction',\n    'Biography',\n    'Self-Help',\n    'Travel',\n    'Cooking',\n    'Science',\n    'Poetry',\n    'Young Adult',\n    'Children',\n    'Drama',\n    'Graphic Novel',\n    'Satire',\n    'Dystopian',\n  ];\n\n  return (\n    <section\n      style={{\n        width: '100%',\n        display: 'flex',\n        flexWrap: 'nowrap',\n        gap: '10px',\n        overflow: 'auto',\n        background: 'yellow',\n        padding: '3rem 1.2rem',\n      }}\n    >\n      {SUBJECTS.map((subject) => (\n        <button\n          key={subject}\n          onClick={() => onSelectSubject(subject)}\n          style={{\n            display: 'inline-block',\n            cursor: 'pointer',\n            outline: ' none',\n            borderRadius: '1rem',\n            padding: '.5rem 1rem',\n            border: '1px solid #2A2C2E',\n            background: selectedSubject === subject ? '#2A2C2E' : 'transparent',\n            color: selectedSubject === subject ? '#fff' : '#2a2c2e',\n          }}\n        >\n          {subject}\n        </button>\n      ))}\n    </section>\n  );\n});\n\nexport default BookRecommendation;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/calculator.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\n\ntype ICalculator = {\n  value: number;\n  newValue: number | null;\n  operator: string;\n};\n\ntype IControls = {\n  value: number;\n  setValue: Function;\n  newValue: number | null;\n  setNewValue: Function;\n  operator: string;\n  setOperator: Function;\n};\n\nfunction Calculator() {\n  const [value, setValue] = useState<number>(0);\n  const [newValue, setNewValue] = useState<number | null>(null);\n  const [operator, setOperator] = useState<string>('');\n\n  return (\n    <>\n      <Screen value={value} newValue={newValue} operator={operator} />\n      <Controls\n        value={value}\n        setValue={setValue}\n        newValue={newValue}\n        setNewValue={setNewValue}\n        operator={operator}\n        setOperator={setOperator}\n      />\n    </>\n  );\n}\n\nconst Screen = block(({ value, newValue, operator }: ICalculator) => {\n  return (\n    <div\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        backgroundColor: '#eee',\n        marginBottom: '20px',\n        padding: '5px 10px 5px 10px',\n        borderRadius: '7px',\n      }}\n    >\n      <p\n        style={{\n          color: '#333',\n          fontSize: '40px',\n          fontFamily: 'Roboto, sans-serif',\n          fontWeight: 500,\n          textAlign: 'right',\n        }}\n      >\n        {value}\n      </p>\n      <p\n        style={{\n          fontSize: 18,\n          color: '#aaa',\n          fontFamily: 'Roboto, sans-serif',\n          fontWeight: 500,\n          textAlign: 'right',\n        }}\n      >\n        {value} {operator} {newValue}\n      </p>\n    </div>\n  );\n});\n\nfunction Controls({\n  value,\n  setValue,\n  newValue,\n  setNewValue,\n  operator,\n  setOperator,\n}: IControls) {\n  const onNumberClick = (number: number) => {\n    if (!operator) {\n      setValue(value * 10 + number);\n    } else {\n      setNewValue((newValue || 0) * 10 + number); // Use 0 as initial value if newValue is null\n    }\n  };\n\n  const onCalculate = (type: string) => {\n    if (operator) {\n      // Perform the previous calculation before setting the new operator\n      let result = calculateResult(value, newValue, operator);\n      setValue(result);\n      setNewValue(null);\n    }\n    setOperator(type);\n  };\n\n  const onEqualClick = () => {\n    if (operator) {\n      let result = calculateResult(value, newValue, operator);\n      setValue(result);\n      setNewValue(null);\n      setOperator('');\n    }\n  };\n\n  const calculateResult = (\n    firstNumber: number,\n    secondNumber: number | null,\n    oper: string,\n  ) => {\n    if (secondNumber === null) {\n      return firstNumber;\n    }\n    switch (oper) {\n      case 'add':\n        return firstNumber + secondNumber;\n      case 'subtract':\n        return firstNumber - secondNumber;\n      case 'multiply':\n        return firstNumber * secondNumber;\n      case 'divide':\n        return firstNumber / secondNumber;\n      default:\n        return firstNumber;\n    }\n  };\n\n  const onReset = () => {\n    setValue(0);\n    setNewValue(null);\n    setOperator('');\n  };\n\n  const onPercentage = () => {\n    setValue(value / 100);\n  };\n\n  const onNegative = () => {\n    setValue(value * -1);\n  };\n\n  const onDelete = () => {\n    if (!operator) {\n      setValue(Math.floor(value / 10));\n    } else {\n      newValue !== null && setNewValue(Math.floor(newValue / 10));\n    }\n  };\n\n  // Map the buttons to their respective actions\n  const buttonMap = [\n    { text: 'AC', action: () => onReset() },\n    { text: 'DEL', action: () => onDelete() },\n    { text: '%', action: () => onPercentage() },\n    {\n      text: '/',\n      action: () => onCalculate('divide'),\n      style: {\n        background: 'rgb(255, 149, 42)',\n        fontWeight: 500,\n        fontSize: '1.5em',\n      },\n    },\n    {\n      text: '7',\n      action: () => onNumberClick(7),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '8',\n      action: () => onNumberClick(8),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '9',\n      action: () => onNumberClick(9),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: 'x',\n      action: () => onCalculate('multiply'),\n      style: {\n        background: 'rgb(255, 149, 42)',\n        fontWeight: 500,\n        fontSize: '1.5em',\n      },\n    },\n    {\n      text: '4',\n      action: () => onNumberClick(4),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '5',\n      action: () => onNumberClick(5),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '6',\n      action: () => onNumberClick(6),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '-',\n      action: () => onCalculate('subtract'),\n      style: {\n        background: 'rgb(255, 149, 42)',\n        fontWeight: 500,\n        fontSize: '2em',\n      },\n    },\n    {\n      text: '1',\n      action: () => onNumberClick(1),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '2',\n      action: () => onNumberClick(2),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '3',\n      action: () => onNumberClick(3),\n      style: { fontSize: '1.5em' },\n    },\n    {\n      text: '+',\n      action: () => onCalculate('add'),\n      style: {\n        background: 'rgb(255, 149, 42)',\n        fontWeight: 500,\n        fontSize: '1.75em',\n      },\n    },\n    {\n      text: '0',\n      action: () => onNumberClick(0),\n      style: {\n        gridColumn: 'span 2',\n        fontSize: '1.5em',\n      },\n    },\n    {\n      text: '+/-',\n      action: () => onNegative(),\n      style: {\n        fontSize: '1.5em',\n      },\n    },\n    {\n      text: '=',\n      action: () => onEqualClick(),\n      style: {\n        background: 'rgb(255, 149, 42)',\n        fontWeight: 500,\n        fontSize: '1.75em',\n      },\n    },\n  ];\n\n  return (\n    <div\n      style={{\n        display: 'grid',\n        gridTemplateRows: 'repeat(5, 1fr)',\n        gridTemplateColumns: 'repeat(4, 1fr)',\n        gap: '10px',\n      }}\n    >\n      {buttonMap.map((button: any, index: number) => (\n        <button key={index} onClick={button.action} style={button.style}>\n          {button.text as string}\n        </button>\n      ))}\n    </div>\n  );\n}\n\nexport default Calculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/carousel.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { block } from 'million/react';\nimport '../css/examples/carousel.css';\n\nconst Carousel = block(() => {\n  const [images, setImages] = useState<any[]>([]);\n  const [currentIndex, setCurrentIndex] = useState(0);\n\n  const fetchImages = async () => {\n    try {\n      const response = await fetch(\n        'https://picsum.photos/v2/list?page=21&limit=8',\n      );\n      const data = await response.json();\n      setImages(data);\n    } catch (error) {\n      console.error('Error fetching images:', error);\n    }\n  };\n\n  useEffect(() => {\n    fetchImages();\n  }, []);\n\n  //* Next / Previous events\n  const nextSlide = () => {\n    setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length);\n  };\n\n  const prevSlide = () => {\n    setCurrentIndex(\n      (prevIndex) => (prevIndex - 1 + images.length) % images.length,\n    );\n  };\n\n  return (\n    <div>\n      <div className=\"carousel\">\n        <div\n          className=\"carousel-inner\"\n          style={{ transform: `translateX(-${currentIndex * 100}%)` }}\n        >\n          {images.map((image) => (\n            <img key={image.id} src={image.download_url} alt={image.author} />\n          ))}\n        </div>\n      </div>\n      <div style={{ marginTop: '10px' }}>\n        <button onClick={prevSlide}>Previous</button>\n        <button style={{ marginLeft: 10 }} onClick={nextSlide}>\n          Next\n        </button>\n      </div>\n    </div>\n  );\n});\n\nexport default Carousel;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/context.tsx",
    "content": "import { useState, createContext, useContext } from 'react';\nimport { block } from 'million/react';\n// import { experimental_options } from 'million/experimental'\n\n// experimental_options.noSlot = true\nconst ThemeContext = createContext('light');\n\nconst Context = block(({ onClick }) => {\n  const theme = useContext(ThemeContext);\n\n  return (\n    <button\n      style={{\n        color: theme === 'light' ? 'black' : 'white',\n        backgroundColor: theme === 'light' ? 'white' : 'black',\n      }}\n      onClick={onClick}\n    >\n      {theme}\n    </button>\n  );\n});\n\nconst App = block(() => {\n  const [theme, setTheme] = useState('light');\n\n  return (\n    <div>\n      <ThemeContext.Provider value={theme}>\n        <Context\n          onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}\n        />\n      </ThemeContext.Provider>\n    </div>\n  );\n});\n\nexport default App;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/countdown-timer.jsx",
    "content": "import React, { useState, useEffect } from 'react';\nimport { block } from 'million/react';\nimport StartSVG from '../../assets/play.svg';\nimport StopSVG from '../../assets/stop.svg';\nimport FlagSVG from '../../assets/flag.svg';\nimport ResetSVG from '../../assets/close.svg';\n\nconst CountDownTimer = block(function TimerComponent() {\n  const [hours, setHours] = useState(0);\n  const [minutes, setMinutes] = useState(0);\n  const [seconds, setSeconds] = useState(0);\n  const [milliseconds, setMilliseconds] = useState(0);\n  const [isRunning, setIsRunning] = useState(false);\n  const [recordedTimes, setRecordedTimes] = useState([]);\n\n  const startTimer = () => {\n    setIsRunning(true);\n  };\n\n  const stopTimer = () => {\n    setIsRunning(false);\n  };\n\n  const recordTime = () => {\n    const currentTime = `${hours.toString().padStart(2, '0')}h ${minutes\n      .toString()\n      .padStart(2, '0')}m ${seconds.toString().padStart(2, '0')}s ${milliseconds\n      .toString()\n      .padStart(2, '0')}ms`;\n    setRecordedTimes([...recordedTimes, currentTime]);\n  };\n\n  const handleHourChange = (e) => {\n    const value = parseInt(e.target.value);\n    if (!isNaN(value) && value >= 0) {\n      setHours(value);\n    }\n  };\n\n  const handleMinuteChange = (e) => {\n    const value = parseInt(e.target.value);\n    if (!isNaN(value) && value >= 0 && value < 60) {\n      setMinutes(value);\n    }\n  };\n\n  const resetTimer = () => {\n    setHours(0);\n    setMinutes(0);\n    setSeconds(0);\n    setMilliseconds(0);\n  };\n\n  const clearFlagData = () => {\n    setRecordedTimes([]);\n  };\n\n  useEffect(() => {\n    let interval;\n    if (isRunning) {\n      interval = setInterval(() => {\n        if (\n          hours === 0 &&\n          minutes === 0 &&\n          seconds === 0 &&\n          milliseconds === 0\n        ) {\n          clearInterval(interval);\n          setIsRunning(false);\n        } else {\n          if (milliseconds > 0) {\n            setMilliseconds(milliseconds - 1);\n          } else {\n            if (seconds > 0) {\n              setSeconds(seconds - 1);\n              setMilliseconds(99);\n            } else {\n              if (minutes > 0) {\n                setMinutes(minutes - 1);\n                setSeconds(59);\n                setMilliseconds(99);\n              } else {\n                if (hours > 0) {\n                  setHours(hours - 1);\n                  setMinutes(59);\n                  setSeconds(59);\n                  setMilliseconds(99);\n                }\n              }\n            }\n          }\n        }\n      }, 10);\n    }\n    return () => clearInterval(interval);\n  }, [isRunning, hours, minutes, seconds, milliseconds]);\n\n  return (\n    <main>\n      <h2 style={{ fontSize: '2.8rem', textAlign: 'center' }}>\n        {`${hours.toString().padStart(2, '0')}:${minutes\n          .toString()\n          .padStart(2, '0')}:${seconds\n          .toString()\n          .padStart(2, '0')}:${milliseconds.toString().padStart(2, '0')}`}\n      </h2>\n\n      <section\n        style={{\n          display: 'flex',\n          flexDirection: 'row',\n          justifyContent: 'center',\n          alignItems: 'center',\n          gap: '10px',\n          flexWrap: 'wrap',\n        }}\n      >\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'flex-start',\n          }}\n        >\n          <label htmlFor=\"hourInput\">Hours</label>\n          <input\n            id=\"hourInput\"\n            type=\"number\"\n            value={hours}\n            onChange={handleHourChange}\n          />\n        </div>\n\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'flex-start',\n          }}\n        >\n          <label htmlFor=\"minuteInput\">Minutes</label>\n          <input\n            id=\"minuteInput\"\n            type=\"number\"\n            value={minutes}\n            onChange={handleMinuteChange}\n          />\n        </div>\n      </section>\n\n      <section\n        style={{\n          display: 'flex',\n          flexDirection: 'row',\n          justifyContent: 'center',\n          alignItems: 'center',\n          gap: '20px',\n          marginBlock: '30px',\n        }}\n      >\n        <button\n          onClick={startTimer}\n          style={{\n            backgroundColor: '#FF0054',\n            borderRadius: '100px',\n            border: '0px',\n          }}\n        >\n          <img src={StartSVG} alt=\"play\" />\n        </button>\n        <button\n          onClick={stopTimer}\n          style={{\n            backgroundColor: '#FF0054',\n            borderRadius: '100px',\n            border: '0px',\n          }}\n        >\n          <img src={StopSVG} alt=\"stop\" />\n        </button>\n        <button\n          onClick={recordTime}\n          style={{\n            backgroundColor: '#FF0054',\n            borderRadius: '100px',\n            border: '0px',\n          }}\n        >\n          <img src={FlagSVG} alt=\"flag\" />\n        </button>\n        <button\n          onClick={resetTimer}\n          style={{\n            backgroundColor: '#FF0054',\n            borderRadius: '100px',\n            border: '0px',\n          }}\n        >\n          <img src={ResetSVG} alt=\"reset\" />\n        </button>\n      </section>\n\n      <section\n        style={{\n          display: 'flex',\n          flexDirection: 'column',\n          justifyContent: 'center',\n          alignItems: 'center',\n          gap: '20px',\n          // marginTop: '30px',\n        }}\n      >\n        <ul>\n          {recordedTimes.map((time, index) => (\n            <li key={index}>{time}</li>\n          ))}\n        </ul>\n\n        {recordedTimes.length > 0 && (\n          <button\n            onClick={clearFlagData}\n            style={{\n              backgroundColor: '#00c2cb',\n              width: '120px',\n              color: 'black',\n            }}\n          >\n            Clear\n          </button>\n        )}\n      </section>\n    </main>\n  );\n});\n\nexport default CountDownTimer;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/counter.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\n\nconst Counter = /* @optimize */ block(() => {\n  const [count, setCount] = useState(0);\n\n  return <button onClick={() => setCount(count + 1)}>{count}</button>;\n});\n\nexport default Counter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/create-event-calender.jsx",
    "content": "import { useState, useRef } from 'react';\nimport Calendar from 'react-calendar';\nimport 'react-calendar/dist/Calendar.css';\nimport { block } from 'million/react';\nimport '../css/examples/create-event-calender.css';\n\nconst EventCalender = block(() => {\n  const [selectedDate, setSelectedDate] = useState(null);\n  const [events, setEvents] = useState([]);\n  const inputRef = useRef(null);\n\n  const Date_Click_Fun = (date) => {\n    setSelectedDate(date);\n  };\n\n  const Create_Event_Fun = () => {\n    if (selectedDate && inputRef) {\n      const newEvent = {\n        id: new Date().getTime(),\n        date: selectedDate,\n        title: inputRef.current.value,\n      };\n      setEvents([...events, newEvent]);\n      setSelectedDate(null);\n      inputRef.current.value = '';\n      setSelectedDate(newEvent.date);\n    }\n  };\n\n  const Update_Event_Fun = (eventId, newName) => {\n    const updated_Events = events.map((event) => {\n      if (event.id === eventId) {\n        return {\n          ...event,\n          title: newName,\n        };\n      }\n      return event;\n    });\n    setEvents(updated_Events);\n  };\n\n  const Delete_Event_Fun = (eventId) => {\n    const updated_Events = events.filter((event) => event.id !== eventId);\n    setEvents(updated_Events);\n  };\n\n  return (\n    <div className=\"create-event-calender\">\n      <h1>Create an Event Calendar Application</h1>\n      <div className=\"create-event-calender_wrapper\">\n        <div className=\"calendar-container\">\n          <Calendar\n            value={selectedDate}\n            onClickDay={Date_Click_Fun}\n            tileClassName={({ date }) =>\n              selectedDate &&\n              date.toDateString() === selectedDate.toDateString()\n                ? 'selected'\n                : events.some(\n                    (event) =>\n                      event.date.toDateString() === date.toDateString(),\n                  )\n                ? 'event-marked'\n                : ''\n            }\n          />{' '}\n        </div>\n        <div className=\"event-container\">\n          {' '}\n          {selectedDate && (\n            <div className=\"event-form\">\n              <h2> Create Event </h2>{' '}\n              <p> Selected Date: {selectedDate.toDateString()} </p>{' '}\n              <input type=\"textarea\" placeholder=\"Event Name\" ref={inputRef} />\n              <button className=\"create-btn\" onClick={Create_Event_Fun}>\n                Click Here to Add Event{' '}\n              </button>{' '}\n            </div>\n          )}\n          {events.length > 0 && selectedDate && (\n            <div className=\"event-list\">\n              <h2> My Created Event List </h2>{' '}\n              <div className=\"event-cards\">\n                {' '}\n                {events.map((event) =>\n                  event.date.toDateString() === selectedDate.toDateString() ? (\n                    <div key={event.id} className=\"event-card\">\n                      <div className=\"event-card-header\">\n                        <span className=\"event-date\">\n                          {' '}\n                          {event.date.toDateString()}{' '}\n                        </span>{' '}\n                        <div className=\"event-actions\">\n                          <button\n                            className=\"update-btn\"\n                            onClick={() =>\n                              Update_Event_Fun(\n                                event.id,\n                                prompt('ENTER NEW TITLE'),\n                              )\n                            }\n                          >\n                            Update Event{' '}\n                          </button>{' '}\n                          <button\n                            className=\"delete-btn\"\n                            onClick={() => Delete_Event_Fun(event.id)}\n                          >\n                            Delete Event{' '}\n                          </button>{' '}\n                        </div>{' '}\n                      </div>{' '}\n                      <div className=\"event-card-body\">\n                        <p className=\"event-title\"> {event.title} </p>{' '}\n                      </div>{' '}\n                    </div>\n                  ) : null,\n                )}{' '}\n              </div>{' '}\n            </div>\n          )}{' '}\n        </div>\n      </div>\n    </div>\n  );\n});\n\nexport default EventCalender;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/crypto-tracker.jsx",
    "content": "import { useEffect, useState } from 'react';\nimport { block } from 'million/react';\n\nconst Coin = block(\n  ({ image, name, price, volume, symbol, priceChange, marketcap }) => {\n    return (\n      <div\n        className=\"coin-container\"\n        style={{ display: 'flex', justifyContent: 'center' }}\n      >\n        <div\n          className=\"coin-row\"\n          style={{\n            display: 'flex',\n            flexDirection: 'row',\n            alignItems: 'center',\n            justifyContent: 'start',\n            height: '80px',\n            borderBottom: '1px solid #d7d7d7',\n            width: '1000px',\n          }}\n        >\n          <div\n            className=\"coin\"\n            style={{\n              display: 'flex',\n              alignItems: 'center',\n              paddingRight: '24px',\n              minWidth: '300px',\n            }}\n          >\n            <img src={image} style={{height:\"70px\"}} alt=\"crypto\" />\n            <h3 style={{marginLeft:\"70px\"}}>{name}</h3>\n          </div>\n            <p className=\"coin-symbol\" style={{ textTransform: 'uppercase' }}>\n              {symbol}\n            </p>\n          <div\n            className=\"coin-data\"\n            style={{\n              display: 'flex',\n              textAlign: 'center',\n              justifyContent: 'space-between',\n              width: '100%',\n            }}\n          >\n            <p className=\"coin-price\" style={{ width: '110px' }}>\n              ${price}\n            </p>\n            <p className=\"coin-volume\" style={{ width: '155px' }}>\n              ${volume.toLocaleString()}\n            </p>\n            {priceChange < 0 ? (\n              <p className=\"coin-percent red\" style={{width:\"100px\",color:\"red\"}}>{priceChange.toFixed(2)}%</p>\n            ) : (\n              <p className=\"coin-percent green\" style={{width:\"100px\",color:\"green\"}}>{priceChange.toFixed(2)}%</p>\n            )}\n            <p className=\"coin-marketcap\" style={{width:\"230px\"}}>\n              MKT Cap: ${marketcap.toLocaleString()}\n            </p>\n          </div>\n        </div>\n      </div>\n    );\n  },\n);\n\nfunction CryptoTracker() {\n  const [coins, setCoins] = useState([]);\n  const [search, setSearch] = useState('');\n\n  useEffect(() => {\n    fetch(\n      'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&sparkline=false',\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setCoins(data);\n        console.log(data);\n      })\n      .catch((err) => console.log(err));\n  }, []);\n\n  const handleChange = (e) => {\n    setSearch(e.target.value);\n  };\n\n  const filteredCoins = coins.filter((coin) =>\n    coin.name.toLowerCase().includes(search.toLowerCase()),\n  );\n\n  return (\n    <div\n      className=\"coin-app\"\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        marginTop: '72px',\n        color: 'white',\n      }}\n    >\n      <div\n        className=\"coin-search\"\n        style={{\n          marginBottom: '72px',\n          display: 'flex',\n          flexDirection: 'column',\n          justifyContent: 'center',\n        }}\n      >\n        <h1\n          className=\"coin-text\"\n          style={{ marginBottom: '39px', textAlign: 'center' }}\n        >\n          Search a currency\n        </h1>\n        <form>\n          <input\n            type=\"text\"\n            className=\"coin-input\"\n            placeholder=\"Search . . .\"\n            onChange={handleChange}\n            style={{\n              paddingLeft: '16px',\n              width: '500px',\n              height: '40px',\n              borderRadius: '2.5px',\n              border: 'none',\n              backgroundColor: '#f7f7ff',\n              color: '#cc444b',\n              fontWeight: '700',\n              marginBottom: '20px',\n            }}\n          />\n        </form>\n      </div>\n      {filteredCoins.map((coin) => {\n        return (\n          <Coin\n            key={coin.id}\n            name={coin.name}\n            image={coin.image}\n            symbol={coin.symbol}\n            marketcap={coin.market_cap}\n            price={coin.current_price}\n            priceChange={coin.price_change_percentage_24h}\n            volume={coin.total_volume}\n          />\n        );\n      })}\n    </div>\n  );\n}\n\nexport default CryptoTracker;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/currency-convertor.tsx",
    "content": "import { block } from 'million/react';\nimport { useState, useEffect } from 'react';\nimport axios from 'axios';\ninterface RatesData {\n  [currency: string]: number;\n}\ninterface CurrencyInputProps {\n  amount: number;\n  currency: string;\n  currencies?: string[];\n  onAmountChange?: (amount: number) => void;\n  onCurrencyChange?: (currency: string) => void;\n  title: string;\n}\nfunction CurrencyConvertor() {\n  const [amount1, setAmount1] = useState<number>(1);\n  const [amount2, setAmount2] = useState<number>(1);\n  const [currency1, setCurrency1] = useState<string>('USD');\n  const [currency2, setCurrency2] = useState<string>('EUR');\n  const [rates, setRates] = useState<RatesData>({});\n\n  useEffect(() => {\n    axios\n      .get(\n        'https://api.freecurrencyapi.com/v1/latest?apikey=fca_live_KIOdLCl5FwF3DTpBG88AhKxYroTciaNco2x1arQY',\n      )\n      .then((response) => {\n        setRates(response.data.data);\n      });\n  }, []);\n\n  useEffect(() => {\n    if (rates && typeof rates === 'object' && Object.keys(rates).length > 0) {\n      handleAmount1Change(1);\n    }\n  }, [rates]);\n\n  function format(number: number): string {\n    return number.toFixed(4);\n  }\n\n  function handleAmount1Change(amount1: number) {\n    setAmount2(\n      parseFloat(format((amount1 * rates[currency2]) / rates[currency1])),\n    );\n    setAmount1(amount1);\n  }\n\n  function handleCurrency1Change(currency1: string) {\n    setAmount2(\n      parseFloat(format((amount1 * rates[currency2]) / rates[currency1])),\n    );\n    setCurrency1(currency1);\n  }\n\n  function handleAmount2Change(amount2: number) {\n    setAmount1(\n      parseFloat(format((amount2 * rates[currency1]) / rates[currency2])),\n    );\n    setAmount2(amount2);\n  }\n\n  function handleCurrency2Change(currency2: string) {\n    setAmount1(\n      parseFloat(format((amount2 * rates[currency1]) / rates[currency2])),\n    );\n    setCurrency2(currency2);\n  }\n\n  return (\n    <div\n      style={{\n        textAlign: 'center',\n      }}\n    >\n      <h2 style={{ marginBottom: '10px' }}>Currency Converter</h2>\n\n      <CurrencyInput\n        title=\"1\"\n        onAmountChange={handleAmount1Change}\n        onCurrencyChange={handleCurrency1Change}\n        currencies={Object.keys(rates)}\n        amount={amount1}\n        currency={currency1}\n      />\n\n      <CurrencyInput\n        title=\"2\"\n        onAmountChange={handleAmount2Change}\n        onCurrencyChange={handleCurrency2Change}\n        currencies={Object.keys(rates)}\n        amount={amount2}\n        currency={currency2}\n      />\n    </div>\n  );\n}\n\nexport default CurrencyConvertor;\n\nconst CurrencyInput = block((props: CurrencyInputProps) => {\n  return (\n    <div>\n      <p>\n        Currency {props?.title}: {props.currency}\n      </p>\n      <input\n        style={{\n          borderRadius: '10px',\n          padding: '10px 10px',\n          margin: '5px 5px',\n          outline: 'none',\n          height: '40px',\n          color: 'currentcolor',\n          backgroundColor: ' var(--background)',\n          border: 'none',\n        }}\n        type=\"number\"\n        value={props.amount}\n        onChange={(ev) => props.onAmountChange?.(parseFloat(ev.target.value))}\n      />\n      <select\n        style={{\n          borderRadius: '10px',\n          padding: '10px 10px',\n          margin: '5px 5px',\n          outline: 'none',\n          height: '40px',\n          color: 'currentcolor',\n          backgroundColor: ' var(--background)',\n          minWidth: '50px',\n          border: 'none',\n        }}\n        value={props.currency}\n        onChange={(ev) => props.onCurrencyChange?.(ev.target.value)}\n      >\n        {props.currencies?.map((currency) => (\n          <option\n            style={{\n              borderRadius: '100px',\n              fontSize: '16px',\n            }}\n            key={currency}\n            value={currency}\n          >\n            {currency}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/data-converter.tsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\n\ninterface DataConverterState {\n  inputUnit: DataUnit;\n  outputUnit: DataUnit;\n  value: number;\n  convertedValue: number;\n}\n\nenum DataUnit {\n  Byte = 'Byte',\n  Kilobyte = 'KB',\n  Megabyte = 'MB',\n  Gigabyte = 'GB',\n  Terabyte = 'TB',\n  Petabyte = 'PB',\n}\n\nconst DataConverter: React.FC = block(() => {\n  const [state, setState] = useState<DataConverterState>({\n    inputUnit: DataUnit.Byte,\n    outputUnit: DataUnit.Kilobyte,\n    value: 0,\n    convertedValue: 0,\n  });\n\n  const convertData = () => {\n    const convertedValue = convert(\n      state.inputUnit,\n      state.outputUnit,\n      state.value,\n    );\n    setState({ ...state, convertedValue });\n  };\n\n  const handleInputUnitChange = (\n    event: React.ChangeEvent<HTMLSelectElement>,\n  ) => {\n    setState({ ...state, inputUnit: event.target.value as DataUnit });\n  };\n\n  const handleOutputUnitChange = (\n    event: React.ChangeEvent<HTMLSelectElement>,\n  ) => {\n    setState({ ...state, outputUnit: event.target.value as DataUnit });\n  };\n\n  const handleValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setState({ ...state, value: Number(event.target.value) });\n  };\n\n  return (\n    <main\n      style={{\n        textAlign: 'center',\n      }}\n      className=\"Data Converter\"\n    >\n      <h2>Data Converter</h2>\n      <div>\n        <input\n          style={{\n            borderRadius: '10px',\n            padding: '10px 10px',\n            margin: '5px 5px',\n            height: '40px',\n          }}\n          type=\"number\"\n          value={state.value}\n          onChange={handleValueChange}\n          min={0}\n        />\n        <select\n          style={{\n            borderRadius: '10px',\n            padding: '10px 10px',\n            margin: '5px 5px',\n            outline: 'none',\n            color: 'currentcolor',\n            backgroundColor: ' var(--background)',\n            border: 'none',\n            height: '40px',\n          }}\n          value={state.inputUnit}\n          onChange={handleInputUnitChange}\n        >\n          <option value={DataUnit.Byte}>Byte B</option>\n          <option value={DataUnit.Kilobyte}>Kilobyte KB</option>\n          <option value={DataUnit.Megabyte}>Megabyte MB</option>\n          <option value={DataUnit.Gigabyte}>Gigabyte GB</option>\n          <option value={DataUnit.Terabyte}>Terabyte TB</option>\n          <option value={DataUnit.Petabyte}>Petabyte PB</option>\n        </select>\n      </div>\n      <div>\n        <input\n          style={{\n            borderRadius: '10px',\n            padding: '10px 10px',\n            margin: '5px 5px',\n            height: '40px',\n            cursor: 'not-allowed',\n          }}\n          type=\"number\"\n          value={state.convertedValue}\n          disabled\n        />\n        <select\n          style={{\n            borderRadius: '10px',\n            padding: '10px 10px',\n            margin: '5px 5px',\n            outline: 'none',\n            height: '40px',\n            color: 'currentcolor',\n            backgroundColor: ' var(--background)',\n            border: 'none',\n          }}\n          value={state.outputUnit}\n          onChange={handleOutputUnitChange}\n        >\n          <option value={DataUnit.Byte}>Byte B</option>\n          <option value={DataUnit.Kilobyte}>Kilobyte KB</option>\n          <option value={DataUnit.Megabyte}>Megabyte MB</option>\n          <option value={DataUnit.Gigabyte}>Gigabyte GB</option>\n          <option value={DataUnit.Terabyte}>Terabyte TB</option>\n          <option value={DataUnit.Petabyte}>Petabyte PB</option>\n        </select>\n      </div>\n      <button\n        style={{\n          marginTop: '10px',\n          padding: '10px 15px',\n          color: '#fff',\n          backgroundColor: '#007bff',\n          borderColor: '#007bff',\n          borderRadius: '0.25rem',\n          transition:\n            'color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out',\n        }}\n        onClick={convertData}\n      >\n        Convert\n      </button>\n    </main>\n  );\n});\n\nconst convert = (\n  inputUnit: DataUnit,\n  outputUnit: DataUnit,\n  value: number,\n): number => {\n  const conversionFactor = {\n    [DataUnit.Byte]: 1,\n    [DataUnit.Kilobyte]: 1024,\n    [DataUnit.Megabyte]: 1048576,\n    [DataUnit.Gigabyte]: 1073741824,\n    [DataUnit.Terabyte]: 1099511627776,\n    [DataUnit.Petabyte]: 1125899906842624,\n  };\n\n  const inputUnitFactor = conversionFactor[inputUnit];\n  const outputUnitFactor = conversionFactor[outputUnit];\n\n  return (value * inputUnitFactor) / outputUnitFactor;\n};\n\nexport default DataConverter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/dice-roller.tsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\nimport '../css/examples/dice-roller.css';\n\nconst DiceRoller: React.FC = block(() => {\n  const [result, setResult] = useState<number | null>(null);\n  const [rolling, setRolling] = useState<boolean>(false);\n\n  const rollDice = () => {\n    if (!rolling) {\n      setRolling(true);\n\n      const min = 1;\n      const max = 6;\n      const randomResult = Math.floor(Math.random() * (max - min + 1)) + min;\n\n      setTimeout(() => {\n        setResult(randomResult);\n        setRolling(false);\n      }, 1000); // Adjust the timeout duration if needed\n    }\n  };\n\n  return (\n    <div className={`dice-roller ${rolling ? 'roll-animation' : ''}`}>\n      <h1>Virtual Dice Roller</h1>\n      <button onClick={rollDice}>Roll Dice</button>\n      {result !== null && <p>Result: {result}</p>}\n    </div>\n  );\n});\n\nexport default DiceRoller;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/digital-personal-journal.jsx",
    "content": "import React, { useState, useRef } from 'react';\nimport { block } from 'million/react';\n\nconst JournalComponent = ({ entry, onDelete }) => (\n  <div>\n    <h3 style={{ color: '#FF5E5B', margin: '0', fontSize: '1.4rem' }}>\n      {entry.id}. {entry.title}\n    </h3>\n    <p style={{ marginBottom: '15px' }}>{entry.text}</p>\n    {entry.media && (\n      <div>\n        {entry.media.type.startsWith('image') && (\n          <img\n            src={entry.media.url}\n            alt=\"Multimedia Entry\"\n            style={{ width: '50%', marginBottom: '15px' }}\n          />\n        )}\n        {entry.media.type.startsWith('video') && (\n          <video controls style={{ width: '30%' }}>\n            <source src={entry.media.url} type={entry.media.type} />\n            Your browser does not support the video tag\n          </video>\n        )}\n      </div>\n    )}\n    <div>\n      <button\n        onClick={() => onDelete(entry.id)}\n        style={{ marginBottom: '15px' }}\n      >\n        Delete\n      </button>\n      <span\n        style={{\n          display: 'block',\n          width: '100%',\n          height: '2px',\n          backgroundColor: '#FFA987',\n          marginTop: '10px',\n          marginBottom: '10px',\n        }}\n      ></span>\n    </div>\n  </div>\n);\n\nconst DigitalPersonalJournal = block(function Journal() {\n  const [entries, setEntries] = useState([]);\n  const [title, setTitle] = useState('');\n  const [text, setText] = useState('');\n  const [mediaFile, setMediaFile] = useState(null);\n  const [nextId, setNextId] = useState(1);\n  const fileInputRef = useRef(null);\n\n  const handleAddEntry = () => {\n    if (title || text || mediaFile) {\n      const newEntry = {\n        id: nextId,\n        title,\n        text,\n        media: mediaFile\n          ? { url: URL.createObjectURL(mediaFile), type: mediaFile.type }\n          : null,\n      };\n      setEntries([...entries, newEntry]);\n      setNextId(nextId + 1);\n      setTitle('');\n      setText('');\n      setMediaFile(null);\n\n      if (fileInputRef.current) {\n        fileInputRef.current.value = '';\n      }\n    }\n  };\n\n  const handleDeleteEntry = (id) => {\n    const updatedEntries = entries.filter((entry) => entry.id !== id);\n    setEntries(updatedEntries);\n  };\n\n  return (\n    <main>\n      <h2 style={{ marginBottom: '15px' }}>My Digital Personal Journal</h2>\n      <div>\n        <input\n          type=\"text\"\n          placeholder=\"Title of your Journal\"\n          value={title}\n          onChange={(e) => setTitle(e.target.value)}\n          style={{\n            display: 'block',\n            marginBottom: '15px',\n            width: '100%',\n            maxWidth: '500px',\n          }}\n        />\n\n        <textarea\n          cols=\"30\"\n          rows=\"10\"\n          placeholder=\"Write your Journal here\"\n          value={text}\n          onChange={(e) => setText(e.target.value)}\n          style={{\n            display: 'block',\n            marginBottom: '15px',\n            width: '100%',\n            maxWidth: '500px',\n            color: 'currentcolor',\n            backgroundColor: ' var(--background)',\n            border: 'none',\n            borderRadius: '4px',\n            padding: '10px',\n            fontSize: 'inherit',\n          }}\n        ></textarea>\n        <input\n          type=\"file\"\n          accept=\".png, .jpg, .jpeg, .mp4, .mp3, .gif\"\n          onChange={(e) => setMediaFile(e.target.files[0])}\n          style={{\n            display: 'block',\n            marginBottom: '15px',\n            width: '100%',\n            maxWidth: '250px',\n          }}\n          ref={fileInputRef}\n        />\n        <button\n          onClick={handleAddEntry}\n          style={{\n            display: 'block',\n            marginBottom: '15px',\n            backgroundColor: 'orange',\n            color: 'black',\n          }}\n        >\n          Add Journal\n        </button>\n        <span style={{ display: 'block', marginBottom: '15px' }}>\n          Total Entries: {entries.length}\n        </span>\n        <span\n          style={{\n            display: 'block',\n            width: '100%',\n            height: '2px',\n            backgroundColor: '#FFED66',\n            marginTop: '20px',\n            marginBottom: '2px',\n          }}\n        ></span>\n        <span\n          style={{\n            display: 'block',\n            width: '100%',\n            height: '2px',\n            backgroundColor: '#FFED66',\n            marginBottom: '20px',\n          }}\n        ></span>\n      </div>\n\n      <div>\n        {entries.map((entry) => (\n          <JournalComponent\n            key={entry.id}\n            entry={entry}\n            onDelete={handleDeleteEntry}\n          />\n        ))}\n      </div>\n    </main>\n  );\n});\n\nexport default DigitalPersonalJournal;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/discount-calculator.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\n\ninterface Results {\n  discountPrice: number;\n  finalPrice: number;\n}\n\nconst DiscountCalculator = block(() => {\n  const [originalPrice, setOriginalPrice] = useState<number | string>('');\n  const [discountRate, setDiscountRate] = useState<number | string>('');\n  const [results, setResults] = useState<Results | null>(null);\n\n  const calculateDiscount = () => {\n    const p = parseFloat(originalPrice as string);\n    const r = parseFloat(discountRate as string) / 100;\n\n    if (isNaN(p) || isNaN(r) || p <= 0 || r <= 0) {\n      alert('Please enter valid numbers.');\n      return;\n    }\n\n    const discountPrice = p * r;\n    const finalPrice = p - discountPrice;\n\n    setResults({\n      discountPrice,\n      finalPrice,\n    });\n  };\n\n  return (\n    <div className=\"Discount Calculator\">\n      <h2>Discount Calculator</h2>\n      <div style={{ display: 'block', marginBottom: '10px' }}>\n        <label>Original Price ($): </label>\n        <input\n          type=\"number\"\n          value={originalPrice}\n          onChange={(e) => setOriginalPrice(e.target.value)}\n          style={{ display: 'block' }}\n        />\n      </div>\n      <div style={{ display: 'block', marginBottom: '20px' }}>\n        <label>Discount (% off): </label>\n        <input\n          type=\"number\"\n          value={discountRate}\n          onChange={(e) => setDiscountRate(e.target.value)}\n          style={{ display: 'block' }}\n        />\n      </div>\n      <button onClick={calculateDiscount}>Calculate</button>\n\n      {results && (\n        <div className=\"results\" style={{ marginTop: '20px' }}>\n          <h2>Results:</h2>\n          <div>Final Price : ${results.finalPrice.toFixed(2)}</div>\n          <div>You Save : ${results.discountPrice.toFixed(2)}</div>\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default DiscountCalculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/emoji-picker.tsx",
    "content": "import { block } from 'million/react';\nimport { useState } from 'react';\nimport EmojiPicker from 'emoji-picker-react';\nimport { BsEmojiSmile } from 'react-icons/bs';\ninterface AppProps {}\n\nconst Emoji: React.FC<AppProps> = () => {\n  const [text, setText] = useState<string>('');\n  const [showPicker, setShowPicker] = useState<boolean>(false);\n  const addEmoji = (e: { unified: string }) => {\n    const sym = e.unified.split('_');\n    const codeArray: number[] = [];\n    sym.forEach((el) => codeArray.push(parseInt('0x' + el, 16)));\n    let emoji = String.fromCodePoint(...codeArray);\n    setText((prevText) => prevText + emoji);\n  };\n\n  return (\n    <div>\n      <h3\n        style={{\n          margin: 'auto',\n        }}\n      >\n        Add Emoji Picker\n      </h3>\n      <div>\n        <input\n          style={{\n            fontSize: '1.3rem',\n            padding: '5px 10px',\n            margin: '5px 15px',\n            marginLeft: '0',\n          }}\n          value={text}\n          onChange={(e) => setText(e.target.value)}\n        />\n        <button onClick={() => setShowPicker((val) => !val)}>\n          <BsEmojiSmile />\n        </button>\n        {showPicker && <EmojiPicker onEmojiClick={addEmoji} />}\n      </div>\n    </div>\n  );\n};\n\nconst EmojiBlock = block(() => {\n  return (\n    <div>\n      <Emoji />\n    </div>\n  );\n});\n\nexport default EmojiBlock;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/etch-a-sketch.tsx",
    "content": "import React, { useState, useEffect, useRef, ChangeEvent } from 'react';\nimport { block } from 'million/react';\n\ninterface GridElement {\n  id: number;\n  color: string;\n}\nconst EtchASketch: React.FC = block(() => {\n  const [n, setN] = useState<number>(16);\n  const [gridElements, setGridElements] = useState<GridElement[]>([]);\n  const [currentColor, setCurrentColor] = useState<string | null>(null);\n  const containerRef = useRef<HTMLDivElement | null>(null);\n\n  useEffect(() => {\n    grid();\n  }, [n]);\n\n  const colors: string[] = [\n    'red',\n    'blue',\n    'green',\n    'pink',\n    'yellow',\n    'royalblue',\n    'purple',\n  ];\n\n  const grid = () => {\n    const newGridElements: GridElement[] = [];\n\n    for (let i = 1; i <= n * n; i++) {\n      newGridElements.push({\n        id: i,\n        color: 'black',\n      });\n    }\n\n    setGridElements(newGridElements);\n  };\n\n  const newGrid = () => {\n    const dimension: string | null = prompt('Enter the dimension');\n    if (dimension === '' || dimension === null) return;\n\n    clearGrid();\n    setN(Number(dimension));\n    grid();\n  };\n\n  const clearGrid = () => {\n    setGridElements([]);\n    grid();\n  };\n\n  const handleCellMouseOver = (id: number) => {\n    setGridElements((prevElements) => {\n      const updatedElements: GridElement[] = [...prevElements];\n      updatedElements[id - 1].color =\n        currentColor !== null\n          ? currentColor\n          : colors[Math.floor(Math.random() * 7)];\n      return updatedElements;\n    });\n  };\n\n  const handleColorChange = (e: ChangeEvent<HTMLInputElement>) => {\n    setCurrentColor(e.target.value);\n  };\n\n  return (\n    <div>\n      <div className=\"button-container\">\n        <button className=\"sketch-button\" onClick={newGrid}>\n          New Grid\n        </button>\n        <button className=\"sketch-button\" onClick={clearGrid}>\n          Reset\n        </button>\n        <button className=\"sketch-button\" onClick={() => setCurrentColor(null)}>\n          Random Color\n        </button>\n        <div className=\"color-container\">\n          <label>Choose Color</label>\n          <input\n            type=\"color\"\n            value={currentColor || ''}\n            onChange={handleColorChange}\n          />\n          {currentColor !== null ? (\n            <div\n              style={{\n                backgroundColor: `${currentColor}`,\n                border: '2px solid black',\n                height: '30px',\n                width: '30px',\n                borderRadius: '5px',\n              }}\n            ></div>\n          ) : (\n            ''\n          )}\n        </div>\n      </div>\n      <div className=\"container\" ref={containerRef}>\n        {gridElements.map((element) => (\n          <div\n            key={element.id}\n            style={{\n              width: `calc(50vw/${n})`,\n              height: `calc(50vw/${n})`,\n              backgroundColor: element.color,\n            }}\n            onMouseOver={() => handleCellMouseOver(element.id)}\n          ></div>\n        ))}\n      </div>\n    </div>\n  );\n});\n\nexport default EtchASketch;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/expense-tracker.tsx",
    "content": "import { useState, useRef, useEffect } from 'react';\nimport { block, For } from 'million/react';\n\ntype Transaction = {\n  id?: string;\n  title: string;\n  amount: number;\n  isExpense: boolean;\n};\n\ntype Wallet = {\n  incomes: number;\n  expenses: number;\n  balance: number;\n};\n\nconst ExpenseTracker = block(() => {\n  const [transactions, setTransactions] = useState<Transaction[]>([\n    { id: genUUID(), title: 'Ka-ching', amount: 6000, isExpense: false },\n    { id: genUUID(), title: '3% Milk', amount: 20, isExpense: true },\n    { id: genUUID(), title: 'Fat-free Hummus', amount: 60, isExpense: true },\n    { id: genUUID(), title: 'Dog food', amount: 20, isExpense: true },\n    { id: genUUID(), title: 'Cat food', amount: 20, isExpense: true },\n    { id: genUUID(), title: 'Human food', amount: 80, isExpense: true },\n  ]);\n  const [wallet, setWallet] = useState<Wallet>({\n    incomes: 0,\n    expenses: 0,\n    balance: 0,\n  });\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  function calculateExpenses() {\n    let allExpenses = transactions\n      .filter((item) => item.isExpense === true)\n      .reduce((accumulator, currentValue) => {\n        return (accumulator += Number(currentValue.amount));\n      }, 0);\n    let allIncomes = transactions\n      .filter((item) => item.isExpense === false)\n      .reduce((accumulator, currentValue) => {\n        return (accumulator += Number(currentValue.amount));\n      }, 0);\n    setWallet({\n      expenses: allExpenses,\n      balance: allIncomes - allExpenses,\n      incomes: allIncomes,\n    });\n  }\n  useEffect(() => {\n    calculateExpenses();\n  }, []);\n\n  function genUUID() {\n    return self.crypto.randomUUID();\n  }\n\n  useEffect(() => {\n    calculateExpenses();\n  }, [transactions]);\n\n  const handleOnSubmit: React.FormEventHandler<HTMLFormElement> = (event) => {\n    event.preventDefault();\n    const formData = new FormData(event.currentTarget);\n    let formEntry: Transaction | {} = { id: genUUID() };\n    for (let [key, value] of formData.entries()) {\n      if (key === 'isExpense') {\n        let type = value === 'expense' ? true : false;\n        formEntry = { ...formEntry, [key]: type };\n      } else {\n        formEntry = { ...formEntry, [key]: value };\n      }\n    }\n    setTransactions(transactions.concat(formEntry));\n    inputRef.current?.focus();\n  };\n\n  return (\n    <section>\n      <h1 style={{ textAlign: 'center' }}> Expense Tracker</h1>\n      <div\n        style={{\n          display: 'flex',\n          placeContent: 'space-between',\n        }}\n      >\n        <p>\n          Income: <span style={{ color: 'green' }}>${wallet.incomes}</span>\n        </p>\n        <p>\n          Expenses: <span style={{ color: 'red' }}>${wallet.expenses}</span>\n        </p>\n      </div>\n      <h2 style={{ textAlign: 'right' }}>\n        Balance :<span style={{ color: 'forestgreen' }}>${wallet.balance}</span>\n      </h2>\n      <div>\n        <InputForm handleOnSubmit={handleOnSubmit} inputRef={inputRef} />\n      </div>\n      <h3>History</h3>\n      <div>\n        <ul\n          style={{\n            listStyle: 'none',\n            margin: 0,\n            padding: 0,\n          }}\n        >\n          <For each={transactions}>\n            {({ id, title, amount, isExpense }) => (\n              <ExpenseItem\n                key={id}\n                id={id}\n                title={title}\n                amount={amount}\n                isExpense={isExpense}\n              />\n            )}\n          </For>\n        </ul>\n      </div>\n    </section>\n  );\n});\n\ntype InputFormProps = {\n  handleOnSubmit: React.FormEventHandler;\n  inputRef: React.ForwardedRef<HTMLInputElement>;\n};\n\nconst InputForm = ({ handleOnSubmit, inputRef }: InputFormProps) => {\n  return (\n    <div>\n      <h3>Add a new entry</h3>\n      <form onSubmit={handleOnSubmit}>\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            gap: '0.5rem',\n          }}\n        >\n          <label htmlFor=\"expenseName\">Title</label>\n          <input\n            type=\"text\"\n            name=\"title\"\n            id=\"expenseName\"\n            placeholder=\"Enter an expense\"\n            ref={inputRef}\n          />\n        </div>\n        <div\n          style={{\n            display: 'flex',\n            flexDirection: 'column',\n            gap: '0.5rem',\n          }}\n        >\n          <label htmlFor=\"expenseAmount\">Amount</label>\n          <input\n            type=\"number\"\n            name=\"amount\"\n            id=\"expenseAmount\"\n            placeholder=\"0.0\"\n          />\n        </div>\n        <div\n          style={{\n            display: 'flex',\n            gap: '1rem',\n            marginTop: '1rem',\n          }}\n        >\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'row',\n              gap: '0.5rem',\n            }}\n          >\n            <input\n              type=\"radio\"\n              name=\"isExpense\"\n              value=\"expense\"\n              id=\"expense\"\n              defaultChecked\n            />\n            <label htmlFor=\"expense\">Expense</label>\n          </div>\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'row',\n              gap: '0.5rem',\n            }}\n          >\n            <input type=\"radio\" name=\"isExpense\" id=\"income\" value=\"income\" />\n            <label htmlFor=\"income\">Income</label>\n          </div>\n        </div>\n        <button style={{ marginTop: '1rem', paddingInline: '1.5rem' }}>\n          Add\n        </button>\n      </form>\n    </div>\n  );\n};\n\nconst ExpenseItem = block(({ title, amount, isExpense }: Transaction) => {\n  return (\n    <li>\n      {title} {`${isExpense ? '-' : '+'}`}{' '}\n      <span style={isExpense ? { color: 'red' } : { color: 'green' }}>\n        ${amount}\n      </span>\n    </li>\n  );\n});\n\nexport default ExpenseTracker;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/file-upload-preview.jsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\n\nconst FileUpload = block(({ file }) => {\n  return (\n    <div className=\"preview\">\n      <img src={file} alt=\"file-uploaded\" />\n    </div>\n  );\n});\n\nconst FileUploadPreview = () => {\n  const [file, setFile] = useState();\n  function getFile(event) {\n    setFile(URL.createObjectURL(event.target.files[0]));\n  }\n  return (\n    <div>\n      <div>\n        <input type=\"file\" onChange={getFile}></input>\n      </div>\n      <div style={{ height: 200, width: 200, padding: 10 }}>\n        {file && <FileUpload file={file} />}\n      </div>\n    </div>\n  );\n};\n\nexport default FileUploadPreview;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/form.tsx",
    "content": "import { block } from 'million/react';\n\nconst Form = block(() => {\n  const onSubmit = (event: any) => {\n    event.preventDefault();\n    alert('submitted');\n  };\n\n  return (\n    <div>\n      <form onSubmit={onSubmit}>\n        <button type=\"submit\">Submit</button>\n      </form>\n    </div>\n  );\n});\n\nexport default Form;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/github-user-search.jsx",
    "content": "import React, { useState } from 'react';\nimport { useEffect } from 'react';\nimport axios from 'axios';\nimport { block } from 'million/react';\n\nconst GithubUserSearch = block(() => {\n  const [userData, setUserData] = useState(null);\n  const [user, setUser] = useState('');\n  const [error, setError] = useState(null);\n\n  const getUserDetails = (user) => {\n    const apiURL = 'https://api.github.com/users/' + user;\n    axios\n      .get(apiURL)\n      .then((response) => {\n        console.log(response.data);\n        setUserData(response.data);\n        setError(null);\n      })\n      .catch((err) => {\n        console.log(err);\n        setError('User not found');\n        setUserData(null); // Use null for userData on error\n      });\n  };\n\n  const userNameHandler = (e) => {\n    setUser(e.target.value);\n  };\n\n  const search = () => {\n    getUserDetails(user);\n  };\n\n  return (\n    <div className=\"container\">\n      <div className=\"kl\">\n        <div className=\"input-container\">\n          <input\n            type=\"text\"\n            className=\"input-field\"\n            onChange={userNameHandler}\n            value={user}\n            placeholder=\"Enter a GitHub username\"\n          />\n          <button className=\"search-button\" onClick={search}>\n            Search\n          </button>\n        </div>\n        {error && <p className=\"error-message\">{error}</p>}\n        {userData && (\n          <div className=\"user-details\">\n            <h2 className=\"username\">UserName: {userData.login}</h2>\n            <h2 className=\"name\">Name: {userData.name}</h2>\n            <h2 className=\"bio\">{userData.bio}</h2>\n            <h2 className=\"location\">Location: {userData.location}</h2>\n            <h3>Following: {userData.following}</h3>\n            <h3>Followers: {userData.followers}</h3>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n});\n\nexport default GithubUserSearch;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/guestbook.tsx",
    "content": "import React, { useState } from 'react';\nimport { For } from 'million/react';\nimport { block } from 'million/react';\n\ninterface Comment {\n  id: number;\n  text: string;\n}\n\nconst Guestbook = block(() => {\n  const [comments, setComments] = useState<Comment[]>([]);\n  const [newComment, setNewComment] = useState('');\n\n  const handleCommentChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    setNewComment(event.target.value);\n  };\n\n  const handleSubmit = (event: React.FormEvent) => {\n    event.preventDefault();\n    if (newComment.trim() === '') return;\n\n    const newId = comments.length + 1;\n    const comment: Comment = {\n      id: newId,\n      text: newComment,\n    };\n\n    setComments([...comments, comment]);\n    setNewComment('');\n  };\n\n  const deleteComment = (id: number) => {\n    const updatedComments = comments.filter(\n      (comment: any) => comment.id !== id,\n    );\n    setComments(updatedComments);\n  };\n\n  return (\n    <div>\n      <h1>Guestbook</h1>\n      <form onSubmit={handleSubmit}>\n        <input\n          type=\"text\"\n          placeholder=\"Leave a comment...\"\n          value={newComment}\n          onChange={handleCommentChange}\n        />\n        <button type=\"submit\">Submit</button>\n      </form>\n      <ul>\n        <For each={comments}>\n          {(comment: Comment) => (\n            <li key={comment.id}>\n              {comment.text}\n              <button onClick={() => deleteComment(comment.id)}>Delete</button>\n            </li>\n          )}\n        </For>\n      </ul>\n    </div>\n  );\n});\n\nexport default Guestbook;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/hangman-game.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport { block } from 'million/react';\nimport styled from 'styled-components';\n\nconst words = [\n  { 'A large, flightless bird': 'ostrich' },\n  { 'A nocturnal flying mammal': 'bat' },\n  { 'A cold-blooded reptile often kept as a pet': 'snake' },\n  { 'A four-legged, domesticated animal that barks': 'dog' },\n  { 'A small, colorful insect that flies and collects nectar': 'butterfly' },\n  { 'A large, long-necked animal native to Africa': 'giraffe' },\n  { 'A popular citrus fruit': 'orange' },\n  { 'A large, ferocious feline': 'tiger' },\n  { 'A frozen dessert often served in a cone': 'ice cream' },\n  { 'A yellow, crescent-shaped fruit': 'banana' },\n  { 'A small, burrowing rodent': 'mole' },\n  {\n    'A mythical creature with the body of a lion and the head of an eagle':\n      'griffin',\n  },\n  {\n    'A cold and creamy dairy product often used as a topping': 'whipped cream',\n  },\n  { 'A small, green vegetable often used in salads': 'cucumber' },\n  { 'A fast-running bird with long legs': 'ostrich' },\n  { \"A round, red fruit often associated with Valentine's Day\": 'strawberry' },\n  { 'A domesticated animal known for producing milk': 'cow' },\n  { 'A venomous arachnid with eight legs': 'spider' },\n  { 'A large, slow-moving mammal known for its long trunk': 'elephant' },\n  { 'A popular seafood delicacy often served with butter': 'lobster' },\n  { 'A fast, graceful mammal known for its long neck': 'gazelle' },\n  { 'A hot, caffeinated beverage often served in the morning': 'coffee' },\n  { 'A tropical fruit with a tough, spiky outer shell': 'pineapple' },\n  { 'A sweet, sticky substance made by bees': 'honey' },\n  { 'A large, striped big cat known for its roar': 'lion' },\n  { 'A green vegetable used in salads and sandwiches': 'lettuce' },\n  { 'A small, furry animal that hops': 'rabbit' },\n  { 'A delicious, circular baked good often topped with icing': 'doughnut' },\n  { 'A sour, yellow fruit often used in pies': 'lemon' },\n  { 'A fast-swimming marine mammal with sharp teeth': 'dolphin' },\n  { 'A small, red fruit often used in jams and jellies': 'strawberry' },\n  { 'A cold, frozen dessert often served in a cup or cone': 'ice cream' },\n  { 'A large, powerful bird of prey': 'eagle' },\n  { 'A popular Italian pasta dish with tomato sauce': 'spaghetti' },\n  { 'A long, thin pasta often used in Asian cuisine': 'noodle' },\n  { 'A tiny, red fruit often used in salsa': 'tomato' },\n  { 'A large, leafy green vegetable often used in salads': 'spinach' },\n  { 'A small, furry rodent often kept as a pet': 'hamster' },\n  { 'A sweet, sticky substance used to sweeten food and drinks': 'sugar' },\n  { 'A popular breakfast food made from ground grains': 'cereal' },\n  { 'A small, green vegetable often used in stir-fry': 'pea' },\n  { 'A tropical fruit with a tough outer shell and sweet flesh': 'coconut' },\n  { 'A round, orange fruit often associated with Halloween': 'pumpkin' },\n  { 'A cold, fizzy beverage often served in cans or bottles': 'soda' },\n  { 'A warm, comforting beverage often made from tea leaves': 'chai' },\n  { 'A small, round fruit often used in pies and cobblers': 'cherry' },\n  { 'A sweet, brown substance often used as a topping for pancakes': 'syrup' },\n  { 'A delicious, creamy dairy product often used in desserts': 'cream' },\n];\n\nconst tryAgainIcon = (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"1em\"\n    height=\"1em\"\n    preserveAspectRatio=\"xMidYMid meet\"\n    viewBox=\"0 0 16 16\"\n  >\n    <path\n      fill=\"currentColor\"\n      fillRule=\"evenodd\"\n      d=\"M12.75 8a4.5 4.5 0 0 1-8.61 1.834l-1.391.565A6.001 6.001 0 0 0 14.25 8A6 6 0 0 0 3.5 4.334V2.5H2v4l.75.75h3.5v-1.5H4.352A4.5 4.5 0 0 1 12.75 8z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n\n/****************************************************************\n              ***************************************\n                       Drawing Component\n              ***************************************\n*****************************************************************/\n\ninterface Drawing {\n  numberOfGuesses: number;\n}\n\nconst Drawing = block(({ numberOfGuesses }: Drawing) => {\n  const Head = styled.div`\n    width: 50px;\n    height: 50px;\n    border-radius: 100%;\n    border: 10px solid black;\n    position: absolute;\n    top: 40px;\n    right: -29px;\n\n    @media (min-width: 768px) {\n      top: 50px;\n    }\n  `;\n\n  const Body = styled.div`\n    width: 10px;\n    height: 80px;\n    background: black;\n    position: absolute;\n    top: 90px;\n    right: 0;\n\n    @media (min-width: 768px) {\n      height: 100px;\n      top: 119px;\n    }\n  `;\n\n  const RightArm = styled.div`\n    width: 70px;\n    height: 10px;\n    background: black;\n    position: absolute;\n    top: 110px;\n    right: -70px;\n    rotate: -30deg;\n    transform-origin: left bottom;\n\n    @media (min-width: 768px) {\n      width: 100px;\n      top: 130px;\n      right: -100px;\n    }\n  `;\n\n  const LeftArm = styled.div`\n    width: 70px;\n    height: 10px;\n    background: black;\n    position: absolute;\n    top: 110px;\n    right: 10px;\n    rotate: 30deg;\n    transform-origin: right bottom;\n\n    @media (min-width: 768px) {\n      width: 100px;\n      top: 130px;\n    }\n  `;\n\n  const RightLeg = styled.div`\n    width: 80px;\n    height: 10px;\n    background: black;\n    position: absolute;\n    top: 160px;\n    right: -70px;\n    rotate: 60deg;\n    transform-origin: left bottom;\n\n    @media (min-width: 768px) {\n      width: 100px;\n      top: 209px;\n      right: -90px;\n    }\n  `;\n\n  const LeftLeg = styled.div`\n    width: 80px;\n    height: 10px;\n    background: black;\n    position: absolute;\n    top: 160px;\n    right: 0;\n    rotate: -60deg;\n    transform-origin: right bottom;\n\n    @media (min-width: 768px) {\n      width: 100px;\n      top: 209px;\n    }\n  `;\n\n  const Element1 = styled.div`\n    height: 10px;\n    width: 120px;\n    background: black;\n\n    @media (min-width: 768px) {\n      height: 10px;\n      width: 200px;\n    }\n  `;\n\n  const Element2 = styled.div`\n    margin-left: 60px;\n    height: 300px;\n    width: 10px;\n    background: black;\n\n    @media (min-width: 768px) {\n      margin-left: 100px;\n      height: 320px;\n      width: 10px;\n    }\n  `;\n\n  const Element3 = styled.div`\n    margin-left: 60px;\n    height: 10px;\n    width: 150px;\n    background: black;\n\n    @media (min-width: 768px) {\n      margin-left: 100px;\n      height: 10px;\n      width: 200px;\n    }\n  `;\n\n  const Element4 = styled.div`\n    position: absolute;\n    top: 0;\n    right: 0;\n    height: 40px;\n    width: 10px;\n    background: black;\n\n    @media (min-width: 768px) {\n      height: 50px;\n    }\n  `;\n\n  const BodyParts = [Head, Body, RightArm, LeftArm, RightLeg, LeftLeg];\n  const Gallows = [Element4, Element3, Element2, Element1];\n\n  return (\n    <div style={{ position: 'relative' }}>\n      {BodyParts.slice(0, numberOfGuesses).map((Component, id) => (\n        <Component key={id} />\n      ))}\n      {Gallows.map((Component, id) => (\n        <Component key={id} />\n      ))}\n    </div>\n  );\n});\n\n/****************************************************************\n              ***************************************\n                       Keyboard Component\n              ***************************************\n*****************************************************************/\n\ninterface Keyboard {\n  correctLetters: string[];\n  incorrectLetters: string[];\n  addGuessedLetter: (letter: string) => void;\n  disabled?: boolean;\n}\n\nconst Keyboard = block(\n  ({\n    correctLetters,\n    incorrectLetters,\n    addGuessedLetter,\n    disabled = false,\n  }: Keyboard) => {\n    const KeyContainer = styled.div`\n      align-self: stretch;\n    `;\n\n    const KeyboardGrid = styled.div`\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));\n      gap: 0.5rem;\n      width: 100%;\n    `;\n\n    interface Key {\n      active: boolean;\n      inActive: boolean;\n    }\n\n    const Key = styled.button<Key>`\n      aspect-ratio: 1/1;\n      width: 100%;\n      border: 3px solid black;\n      border-radius: 1rem;\n      font-size: 2rem;\n      font-family: unset;\n      font-family: monospace;\n      text-transform: uppercase;\n      font-weight: bold;\n      background: ${({ active }) => (active ? '#16A085' : 'none')};\n      color: ${({ active }) => (active ? 'white' : 'black')};\n      opacity: ${({ inActive }) => (inActive ? '.3' : '1')};\n      cursor: pointer;\n\n      &:hover:not(:disabled),\n      &:focus:not(:disabled) {\n        background-color: #f4d03f;\n      }\n\n      &:disabled {\n        cursor: not-allowed;\n      }\n\n      @media (min-width: 768px) {\n        font-size: 2.3rem;\n      }\n    `;\n    const KEYS = [\n      'a',\n      'b',\n      'c',\n      'd',\n      'e',\n      'f',\n      'g',\n      'h',\n      'i',\n      'j',\n      'k',\n      'l',\n      'm',\n      'n',\n      'o',\n      'p',\n      'q',\n      'r',\n      's',\n      't',\n      'u',\n      'v',\n      'w',\n      'x',\n      'y',\n      'z',\n    ];\n\n    useEffect(() => {\n      const handleKeyPress = (event: KeyboardEvent) => {\n        const key = event.key.toLowerCase();\n        if (\n          !disabled &&\n          KEYS.includes(key) &&\n          !correctLetters.includes(key) &&\n          !incorrectLetters.includes(key)\n        ) {\n          addGuessedLetter(key);\n        }\n      };\n\n      window.addEventListener('keydown', handleKeyPress);\n\n      return () => {\n        window.removeEventListener('keydown', handleKeyPress);\n      };\n\n      // eslint-disable-next-line\n    }, [correctLetters, incorrectLetters, addGuessedLetter, disabled]);\n\n    return (\n      <KeyContainer>\n        <KeyboardGrid>\n          {KEYS.map((key) => {\n            const active = correctLetters.includes(key);\n            const inActive = incorrectLetters.includes(key);\n\n            return (\n              <Key\n                key={key}\n                active={active}\n                inActive={inActive}\n                disabled={active || inActive || disabled}\n                onClick={() => addGuessedLetter(key)}\n              >\n                {key}\n              </Key>\n            );\n          })}\n        </KeyboardGrid>\n      </KeyContainer>\n    );\n  },\n);\n\n/****************************************************************\n              ***************************************\n                       Word Component\n              ***************************************\n*****************************************************************/\n\ninterface WordProps {\n  guessedLetters: string[];\n  wordToGuess: string;\n  reveal?: boolean;\n}\n\nconst Word = block(\n  ({ guessedLetters, wordToGuess, reveal = false }: WordProps) => {\n    const WordContainer = styled.div`\n      padding: 0.5rem;\n      display: flex;\n      gap: 1rem;\n      max-width: 100vw;\n      font-size: 3rem;\n      font-weight: bold;\n      text-transform: uppercase;\n      font-family: monospace;\n      overflow-x: auto !important;\n\n      @media (min-width: 768px) {\n        font-size: 5rem;\n      }\n    `;\n\n    const Border = styled.span`\n      border-bottom: 0.5rem solid black;\n    `;\n\n    interface Letter {\n      guessedLetters: string[];\n      letter: string;\n      reveal?: boolean;\n    }\n\n    const Letter = styled.span<Letter>`\n      visibility: ${({ guessedLetters, letter, reveal }) =>\n        guessedLetters.includes(letter) || reveal ? 'visible' : 'hidden'};\n      color: ${({ guessedLetters, letter, reveal }) =>\n        !guessedLetters.includes(letter) && reveal ? '#d30000' : 'black'};\n    `;\n    return (\n      <WordContainer>\n        {wordToGuess.split('').map((letter, id) => (\n          <Border key={id}>\n            <Letter\n              guessedLetters={guessedLetters}\n              letter={letter}\n              reveal={reveal}\n            >\n              {letter}\n            </Letter>\n          </Border>\n        ))}\n      </WordContainer>\n    );\n  },\n);\n\n/****************************************************************\n              ***************************************\n                       Main Component\n              ***************************************\n*****************************************************************/\n\nexport default function App() {\n  const getRandomWord = (arr: {}[]) => {\n    const obj = arr[Math.floor(Math.random() * arr.length)];\n    return obj;\n  };\n\n  const BigContainer = styled.div`\n    width: 100%;\n    height: 100%;\n    background: linear-gradient(to bottom right, #f0f6fc, #e1f1fe);\n  `;\n\n  const Container = styled.div`\n    margin: 0 0.5rem;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: space-between;\n    gap: 2rem;\n    min-height: 100vh;\n    max-width: 800px;\n\n    font-family:\n      Inter,\n      -apple-system,\n      BlinkMacSystemFont,\n      Segoe UI,\n      Roboto,\n      Oxygen,\n      Ubuntu,\n      Cantarell,\n      Fira Sans,\n      Droid Sans,\n      Helvetica Neue,\n      sans-serif;\n    position: relative;\n    padding-bottom: 10px;\n\n    @media (min-width: 768px) {\n      margin: 0 auto;\n    }\n  `;\n\n  const Title = styled.h1`\n    padding: 15px;\n  `;\n\n  const EndGame = styled.div`\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 1rem;\n    text-align: center;\n    font-size: 1.3rem;\n    font-weight: bold;\n    color: black;\n    @media (min-width: 768px) {\n      font-size: 2rem;\n    }\n  `;\n\n  const TryAgainButton = styled.button`\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 0.3rem;\n    border: 3px solid black;\n    border-radius: 1rem;\n    font-size: 2.5rem;\n    background: none;\n    color: black;\n    cursor: pointer;\n\n    &:hover,\n    &:focus {\n      background: #16a085;\n    }\n\n    @media (min-width: 768px) {\n      font-size: 2.3rem;\n    }\n  `;\n  const WinnerSpan = styled.span`\n    color: green;\n  `;\n  const LoserSpan = styled.span`\n    color: red;\n  `;\n  const [wordToGuess, setWordToGuess] = useState('');\n  const [hintToGuess, setHintToGuess] = useState('');\n  const [guessedLetters, setGuessedLetters] = useState<string[]>([]);\n\n  const incorrectLetters = guessedLetters.filter(\n    (letter) => !wordToGuess.includes(letter),\n  );\n\n  const isLoser = incorrectLetters.length >= 6;\n  const isWinner = wordToGuess\n    .split('')\n    .every((letter) => guessedLetters.includes(letter));\n\n  const addGuessedLetter = (letter: string) => {\n    if (!guessedLetters.includes(letter)) {\n      setGuessedLetters((currentLetters) => [...currentLetters, letter]);\n    }\n  };\n\n  const restartGame = () => {\n    const obj = getRandomWord(words) as Object;\n    const word = Object.values(obj)[0] as string;\n    const question = Object.keys(obj)[0];\n    setHintToGuess(question);\n    setWordToGuess(word);\n    setGuessedLetters([]);\n  };\n  useEffect(() => {\n    restartGame();\n    // eslint-disable-next-line\n  }, []);\n  return (\n    <BigContainer>\n      <Container>\n        <Title>Hangman</Title>\n\n        {!(isWinner || isLoser) ? (\n          <Drawing numberOfGuesses={incorrectLetters.length} />\n        ) : (\n          <EndGame>\n            {isWinner && <WinnerSpan> 'You are winner!'</WinnerSpan>}\n            {isLoser && <LoserSpan>'Nice try...'</LoserSpan>}\n          </EndGame>\n        )}\n        {!(isWinner || isLoser) && (\n          <p\n            style={{\n              marginBottom: '-20px',\n              fontSize: '20px',\n            }}\n          >\n            <span style={{ fontWeight: 'bold' }}>Question: {hintToGuess} </span>\n          </p>\n        )}\n        <Word\n          reveal={isLoser}\n          wordToGuess={wordToGuess}\n          guessedLetters={guessedLetters}\n        />\n\n        {(isWinner || isLoser) && (\n          <TryAgainButton onClick={restartGame}>{tryAgainIcon}</TryAgainButton>\n        )}\n\n        <Keyboard\n          disabled={isWinner || isLoser}\n          correctLetters={guessedLetters.filter((letter) =>\n            wordToGuess.includes(letter),\n          )}\n          incorrectLetters={incorrectLetters}\n          addGuessedLetter={addGuessedLetter}\n        />\n      </Container>\n    </BigContainer>\n  );\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/interactive-card-game.tsx",
    "content": "import React, { useState, useEffect } from 'react';\nimport { block } from 'million/react';\ninterface Card {\n  id: number;\n  isFlipped: boolean;\n  isMatched: boolean;\n  onClick: () => void;\n}\nconst generateDeck = (): Card[] => {\n  const cards: Card[] = [];\n  for (let i = 1; i <= 8; i++) {\n    cards.push({\n      id: i,\n      isFlipped: false,\n      isMatched: false,\n      onClick: () => null,\n    });\n    cards.push({\n      id: i,\n      isFlipped: false,\n      isMatched: false,\n      onClick: () => null,\n    });\n  }\n  return cards.sort(() => Math.random() - 0.5);\n};\n\nconst Card = block(({ id, isFlipped, isMatched, onClick }) => {\n  return (\n    <div\n      className={`card ${isFlipped ? 'flipped' : ''} ${\n        isMatched ? 'matched' : ''\n      }`}\n      onClick={onClick}\n    >\n      <div className=\"card-content\">{isFlipped || isMatched ? id : '?'}</div>\n    </div>\n  );\n});\n\nconst CardGame: React.FC = () => {\n  const [cards, setCards] = useState<Card[]>(generateDeck());\n  const [selectedCards, setSelectedCards] = useState<number[]>([]);\n  const [isWon, setIsWon] = useState(false);\n  const [moves, setMoves] = useState(0);\n  const [timer, setTimer] = useState(0);\n  const [isTimerRunning, setIsTimerRunning] = useState(false);\n  const [score, setScore] = useState(0);\n  const [multiplier, setMultiplier] = useState(1);\n  useEffect(() => {\n    if (isTimerRunning) {\n      const interval = setInterval(() => {\n        setTimer((prevTimer) => prevTimer + 1);\n      }, 1000);\n      return () => clearInterval(interval);\n    }\n  }, [isTimerRunning]);\n\n  const startTimer = () => {\n    setIsTimerRunning(true);\n  };\n\n  const stopTimer = () => {\n    setIsTimerRunning(false);\n  };\n\n  useEffect(() => {\n    if (selectedCards.length === 2) {\n      setMoves((prevMoves) => prevMoves + 1);\n      setTimeout(() => {\n        checkForMatch();\n      }, 1000);\n    }\n  }, [selectedCards]);\n\n  const calculateScore = () => {\n    // Bonus for consecutive matches\n    const consecutiveMatchesBonus = multiplier >= 1 ? 100 * multiplier : 0;\n\n    // Total score calculation\n    const calculatedScore = score + consecutiveMatchesBonus;\n    setScore(calculatedScore); // Update the total score\n  };\n\n  const handleCardClick = (cardIndex: number) => {\n    if (selectedCards.length < 2 && !cards[cardIndex].isFlipped) {\n      const newCards = [...cards];\n      newCards[cardIndex].isFlipped = true;\n      setSelectedCards([...selectedCards, cardIndex]);\n      setCards(newCards); // Update score on every card click\n    }\n  };\n\n  const checkForMatch = () => {\n    const [card1, card2] = selectedCards;\n    const newCards = [...cards];\n    if (cards[card1].id === cards[card2].id) {\n      newCards[card1].isMatched = true;\n      newCards[card2].isMatched = true;\n      // Double the multiplier on a successful match\n      setMultiplier((prevMultiplier) => prevMultiplier * 2);\n      calculateScore();\n      checkWin(newCards);\n    } else {\n      newCards[card1].isFlipped = false;\n      newCards[card2].isFlipped = false;\n      // Reset the multiplier on a failed match\n      setMultiplier(1);\n      const penalty = 10;\n      setScore((prevScore) => Math.max(0, prevScore - penalty));\n    }\n    setCards(newCards);\n    setSelectedCards([]);\n  };\n\n  const checkWin = (currentCards: Card[]) => {\n    const isGameWon = currentCards.every((card) => card.isMatched);\n    if (isGameWon) {\n      setIsWon(true);\n      stopTimer();\n      calculateScore();\n    }\n  };\n\n  const resetGame = () => {\n    setCards(generateDeck());\n    setSelectedCards([]);\n    setIsWon(false);\n    setMultiplier(1);\n    setScore(0);\n    setMoves(0);\n    setTimer(0);\n  };\n\n  return (\n    <div className=\"card-game-container\">\n      <h1>{isWon ? 'You Win!' : 'Memory Card Game'}</h1>\n      <div>\n        <div>Moves: {moves}</div>\n        <div>Time: {timer} seconds</div>\n        <div>Score: {score}</div> {/* Display the score */}\n        {multiplier > 1 && <div>Multiplier: {multiplier}x</div>}\n      </div>\n      <div className=\"card-grid\">\n        {cards.map((card, index) => (\n          <Card\n            key={index}\n            id={card.id}\n            isFlipped={card.isFlipped}\n            isMatched={card.isMatched}\n            onClick={() => {\n              handleCardClick(index);\n              if (!isTimerRunning) startTimer();\n            }}\n          />\n        ))}\n      </div>\n      {isWon && (\n        <div>\n          <button className=\"play-again-button\" onClick={resetGame}>\n            Play Again\n          </button>\n        </div>\n      )}\n    </div>\n  );\n};\n\nconst App: React.FC = () => {\n  return (\n    <div className=\"App\">\n      <CardGame />\n    </div>\n  );\n};\n\nexport default App;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/investment-calculator.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\n\ninterface Results {\n  totalInvestment: number;\n  totalPayment: number;\n  totalInterest: number;\n}\n\nconst InvestmentCalculator = block(() => {\n  const [investmentAmount, setInvestmentAmount] = useState<number | string>('');\n  const [interestRate, setInterestRate] = useState<number | string>('');\n  const [numberOfYears, setNumberOfYears] = useState<number | string>('');\n  const [results, setResults] = useState<Results | null>(null);\n\n  const calculateInterest = () => {\n    const p = parseFloat(investmentAmount as string);\n    const r = parseFloat(interestRate as string);\n    const n = parseInt(numberOfYears as string, 10);\n\n    if (isNaN(p) || isNaN(r) || isNaN(n) || p <= 0 || r <= 0 || n <= 0) {\n      alert('Please enter valid numbers.');\n      return;\n    }\n\n    const totalInterest = (p * r * n) / 100;\n    const totalPayment = totalInterest + p;\n    const totalInvestment = p;\n\n    setResults({\n      totalInvestment,\n      totalPayment,\n      totalInterest,\n    });\n  };\n\n  return (\n    <div className=\"InvestmentCalculator\">\n      <h1>Investment Calculator</h1>\n      <div>\n        <label>Total Investment ($): </label>\n        <input\n          type=\"number\"\n          value={investmentAmount}\n          onChange={(e) => setInvestmentAmount(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <div>\n        <label>Interest Rate (Annual %): </label>\n        <input\n          type=\"number\"\n          value={interestRate}\n          onChange={(e) => setInterestRate(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <div>\n        <label>Duration (Years): </label>\n        <input\n          type=\"number\"\n          value={numberOfYears}\n          onChange={(e) => setNumberOfYears(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <button onClick={calculateInterest}>Calculate</button>\n\n      {results && (\n        <div className=\"results\">\n          <h2>Results:</h2>\n          <div>End Balance: ${results.totalPayment.toFixed(2)}</div>\n          <div>Total Investment : ${results.totalInvestment.toFixed(2)}</div>\n          <div>Total Interest: ${results.totalInterest.toFixed(2)}</div>\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default InvestmentCalculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/jotai-counter.tsx",
    "content": "import { atom, useAtom } from 'jotai';\nimport { block } from 'million/react';\n\nconst countAtom = atom<number>(0);\n\nconst Counter = block(() => {\n  const [count, setCounter] = useAtom(countAtom);\n\n  return (\n    <button onClick={() => setCounter((prev) => prev + 1)}>{count}</button>\n  );\n});\n\nexport default Counter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/list.tsx",
    "content": "import { block, For } from 'million/react';\n\nconst List = block(() => {\n  const items = { id: 'test' };\n  return (\n    <ul>\n      <For each={[1, 2, 3, 4, 5]}>\n        {(item) => (\n          <li key={item} {...items}>\n            Item {item}\n          </li>\n        )}\n      </For>\n    </ul>\n  );\n});\n\nexport default List;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/location-app.tsx",
    "content": "import { block } from 'million/react';\nimport { useState, useEffect } from 'react';\n\nconst LocationComponent = block(() => {\n  const [latitude, setLatitude] = useState<number | null>(null);\n  const [longitude, setLongitude] = useState<number | null>(null);\n  const [error, setError] = useState<string | null>(null);\n\n  useEffect(() => {\n    if ('geolocation' in navigator) {\n      navigator.geolocation.getCurrentPosition(\n        (position) => {\n          const { latitude, longitude } = position.coords;\n          setLatitude(latitude);\n          setLongitude(longitude);\n        },\n        () => {\n          setError('Error getting user location');\n        },\n      );\n    } else {\n      setError('Geolocation is not available in this browser.');\n    }\n  }, []);\n\n  return (\n    <div>\n      <h1>User Location</h1>\n      {latitude !== null && longitude !== null ? (\n        <div>\n          <p>Latitude: {latitude}</p>\n          <p>Longitude: {longitude}</p>\n        </div>\n      ) : (\n        <p>{error || 'Loading...'}</p>\n      )}\n    </div>\n  );\n});\n\nexport default LocationComponent;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/markdown-editor.tsx",
    "content": "import { useRef, useEffect } from 'react';\nimport { marked } from 'marked';\nimport { block } from 'million/react';\n\nconst MarkdownEditor = block(() => {\n  const markdownRef = useRef<HTMLTextAreaElement>(null);\n  const markdownPreviewRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (markdownRef.current && markdownPreviewRef.current) {\n      markdownPreviewRef.current.innerHTML = marked(markdownRef.current.value);\n    }\n  }, []);\n\n  const handleInputChange = () => {\n    if (markdownRef.current && markdownPreviewRef.current) {\n      markdownPreviewRef.current.innerHTML = marked(markdownRef.current.value);\n    }\n  };\n\n  return (\n    <div className=\"markdown-block\">\n      <div className=\"markdown-editor-container\">\n        <textarea\n          className=\"markdown-input\"\n          ref={markdownRef}\n          onInput={handleInputChange}\n          defaultValue=\"## Hello, Markdown!\"\n        />\n      </div>\n      <div className=\"markdown-preview\" ref={markdownPreviewRef}></div>\n    </div>\n  );\n});\n\nexport default MarkdownEditor;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/million-quiz.jsx",
    "content": "import React, { useEffect, useReducer } from 'react';\nimport { block } from 'million/react';\nimport styled from 'styled-components';\n\nconst SECS_PER_QUESTION = 30;\n\nconst QuestionList = {\n  questions: [\n    {\n      question: 'What is a block in Million.js?',\n      options: [\n        'A type of HTML element',\n        'A Higher Order Component',\n        'A data structure',\n        'A virtual DOM element',\n      ],\n      correctOption: 1,\n      points: 10,\n    },\n    {\n      question: 'How do you use the <For /> component in Million.js?',\n      options: [\n        'To create a table',\n        'To render a list of blocks efficiently',\n        'To handle form input',\n        'To create animations',\n      ],\n      correctOption: 1,\n      points: 10,\n    },\n    {\n      question: 'When should you use block() in Million.js?',\n      options: [\n        'To optimize rendering speed',\n        'To create React components',\n        'To add styles to elements',\n        'To handle user input',\n      ],\n      correctOption: 0,\n      points: 10,\n    },\n    {\n      question: 'What is the purpose of the <Table /> component in Million.js?',\n      options: [\n        'To display a grid of data',\n        'To create forms',\n        'To handle API requests',\n        'To add animations to a webpage',\n      ],\n      correctOption: 0,\n      points: 10,\n    },\n    {\n      question:\n        'How can you render a list of blocks efficiently in Million.js?',\n      options: [\n        'By using Array.map()',\n        'By using <For /> component',\n        'By using for loops',\n        'By using forEach() method',\n      ],\n      correctOption: 1,\n      points: 10,\n    },\n    {\n      question:\n        'What is the recommended way to loop over an array in Million.js?',\n      options: [\n        'Using for loops',\n        'Using forEach() method',\n        'Using Array.map()',\n        'Using while loops',\n      ],\n      correctOption: 2,\n      points: 10,\n    },\n    {\n      question:\n        'What is the purpose of the lotsOfElements variable in the documentation?',\n      options: [\n        'To add random elements to a webpage',\n        'To demonstrate rendering performance',\n        'To handle user input',\n        'To create animations',\n      ],\n      correctOption: 1,\n      points: 10,\n    },\n    {\n      question:\n        'What is the primary benefit of using Million.js for rendering large lists?',\n      options: [\n        'Faster rendering speed',\n        'Simpler code',\n        'Better support for UI libraries',\n        'Easier debugging',\n      ],\n      correctOption: 0,\n      points: 10,\n    },\n    {\n      question:\n        'When should you avoid using UI component libraries with Million.js?',\n      options: [\n        'Always use UI component libraries',\n        'Only use UI component libraries',\n        'When you want to add animations',\n        'When you want to optimize rendering',\n      ],\n      correctOption: 3,\n      points: 10,\n    },\n    {\n      question: 'What is progressive degradation in Million.js?',\n      options: [\n        'Using the library progressively',\n        'Optimizing performance over time',\n        'Using features based on what is supported',\n        'Enhancing performance with custom components',\n      ],\n      correctOption: 2,\n      points: 10,\n    },\n  ],\n};\n\nconst MillionQuiz = () => {\n  function reducer(state, action) {\n    switch (action.type) {\n      case 'dataReceived':\n        return {\n          ...state,\n          questions: action.payload,\n          status: 'ready',\n        };\n      case 'dataFailed':\n        return {\n          ...state,\n          status: 'failed',\n        };\n      case 'start':\n        return {\n          ...state,\n          status: 'active',\n          secondsRemaining: state.questions.length * SECS_PER_QUESTION,\n        };\n      case 'newAnswer':\n        const question = state.questions.at(state.index);\n        return {\n          ...state,\n          answer: action.payload,\n          points:\n            action.payload === question.correctOption\n              ? state.points + question.points\n              : state.points,\n        };\n      case 'nextQuestion':\n        return {\n          ...state,\n          index: state.index + 1,\n          answer: null,\n        };\n      case 'finish':\n        return {\n          ...state,\n          status: 'finished',\n          highScore:\n            state.points > state.highScore ? state.points : state.highScore,\n        };\n      case 'restart':\n        return {\n          ...initialState,\n          questions: state.questions,\n          status: 'ready',\n        };\n      case 'tick':\n        return {\n          ...state,\n          secondsRemaining: state.secondsRemaining - 1,\n          status: state.secondsRemaining === 0 ? 'finished' : state.status,\n        };\n      default:\n        throw new Error('Action gone wrong');\n    }\n  }\n  const initialState = {\n    questions: QuestionList.questions,\n    status: 'ready',\n    index: 0,\n    answer: null,\n    points: 0,\n    highScore: 0,\n    secondsRemaining: null,\n  };\n  const [\n    { questions, status, index, answer, points, highScore, secondsRemaining },\n    dispatch,\n  ] = useReducer(reducer, initialState);\n  const numQuestions = questions.length;\n  const maxPossibleValue = questions.reduce(\n    (prev, curr) => prev + curr.points,\n    0,\n  );\n\n  return (\n    <div className=\"app\">\n      <Header />\n      <Main className=\"main\">\n        {status === 'loading' && <Loader />}\n        {status === 'failed' && <Error />}\n        {status === 'ready' && (\n          <StartScreen numQuestions={numQuestions} dispatch={dispatch} />\n        )}\n        {status === 'active' && (\n          <>\n            <Progress\n              index={index}\n              numQuestion={numQuestions}\n              points={points}\n              maxPossibleValue={maxPossibleValue}\n              answer={answer}\n            />\n            <Question\n              question={questions[index]}\n              dispatch={dispatch}\n              answer={answer}\n            />\n            <Footer>\n              <Timer dispatch={dispatch} secondsRemaining={secondsRemaining} />\n              <NextButton\n                dispatch={dispatch}\n                answer={answer}\n                numQuestion={numQuestions}\n                points={points}\n                index={index}\n              />\n            </Footer>\n          </>\n        )}\n        {status === 'finished' && (\n          <FinishScreen\n            points={points}\n            maxPossiblepoint={maxPossibleValue}\n            highScore={highScore}\n            dispatch={dispatch}\n          />\n        )}\n      </Main>\n    </div>\n  );\n}\n\nconst Error = block(function Error() {\n  return (\n    <p className=\"error\">\n      <span>💥</span> There was an error fecthing questions.\n    </p>\n  );\n});\n\nconst FinishScreen = block(function FinishScreen({\n  points,\n  maxPossiblepoint,\n  highScore,\n  dispatch,\n}) {\n  const percentage = (points / maxPossiblepoint) * 100;\n  let emoji;\n  if (percentage === 100) emoji = '🎖️';\n  else emoji = '👏';\n  return (\n    <>\n      <p className=\"result\">\n        <spam>{emoji}</spam>Your Score<strong>{points}</strong> out of{' '}\n        {maxPossiblepoint} &nbsp; ({Math.ceil(percentage)}%);\n      </p>\n      <h3>( Highest Score is {highScore} points )</h3>\n      <button\n        className=\"btn btn-ui\"\n        onClick={() => dispatch({ type: 'restart' })}\n      >\n        Restart Quiz\n      </button>\n    </>\n  );\n});\n\nconst Footer = block(function Footer({ children }) {\n  return <footer>{children}</footer>;\n});\n\nconst Header = block(function Header() {\n  return (\n    <header className=\"app-header\">\n      <h1>The Million.js Quiz</h1>\n    </header>\n  );\n});\n\nconst Loader = block(function Loader() {\n  return (\n    <div className=\"loader-container\">\n      <div className=\"loader\"></div>\n      <p>Loading questions...</p>\n    </div>\n  );\n});\n\nconst Main = block(function Main({ children }) {\n  return <main classname=\"main\">{children}</main>;\n});\n\nconst NextButton = block(function NextButton({\n  dispatch,\n  answer,\n  numQuestion,\n  index,\n}) {\n  console.log(numQuestion, index);\n  if (answer === null) return null;\n  else if (numQuestion - 1 > index) {\n    return (\n      <button\n        className=\"btn btn-ui\"\n        onClick={() => dispatch({ type: 'nextQuestion' })}\n      >\n        Next\n      </button>\n    );\n  } else {\n    return (\n      <button\n        className=\"btn btn-ui\"\n        onClick={() => dispatch({ type: 'finish' })}\n      >\n        Finish\n      </button>\n    );\n  }\n});\n\nconst Opt = block(function Opt({ question, dispatch, answer }) {\n  const hasAnswered = answer !== null;\n  const Button = styled.button`\n    width: 100%;\n    text-align: left;\n    margin-bottom: 5px;\n  `;\n\n  const CorrectButton = styled(Button)`\n    background-color: #1098ad;\n    border: 2px solid #1098ad;\n    color: #f1f3f5;\n    cursor: not-allowed;\n  `;\n\n  const WrongButton = styled(Button)`\n    background-color: #ffa94d;\n    border: 2px solid #ffa94d;\n    color: #74509a;\n    cursor: not-allowed;\n  `;\n  return (\n    <div className=\"options\">\n      {question.options.map((option, index) => (\n        <div\n          key={option}\n          onClick={() => dispatch({ type: 'newAnswer', payload: index })}\n        >\n          {hasAnswered ? (\n            index === question.correctOption ? (\n              <CorrectButton>{option}</CorrectButton>\n            ) : (\n              <WrongButton>{option}</WrongButton>\n            )\n          ) : (\n            <Button>{option}</Button>\n          )}\n        </div>\n      ))}\n    </div>\n  );\n});\n\nconst Progress = block(function Progress({\n  index,\n  numQuestion,\n  points,\n  maxPossibleValue,\n  answer,\n}) {\n  return (\n    <header className=\"progress\">\n      <progress max={numQuestion} value={index + Number(answer != null)} />\n      <p>\n        Question&nbsp;<strong>{index + 1}</strong>/{numQuestion}\n      </p>\n      <p>\n        <strong>\n          {points}/{maxPossibleValue}\n        </strong>\n      </p>\n    </header>\n  );\n});\n\nconst Question = block(function Question({ question, dispatch, answer }) {\n  return (\n    <div>\n      <h4>{question.question}</h4>\n      <Opt question={question} dispatch={dispatch} answer={answer} />\n    </div>\n  );\n});\n\nconst StartScreen = block(function StartScreen({ numQuestions, dispatch }) {\n  return (\n    <div className=\"start\">\n      <h2>Welcome to the Million.js Quiz</h2>\n      <h3>{numQuestions} questions to test your Million.js mastery</h3>\n      <button\n        className=\"btn btn-ui\"\n        onClick={() => dispatch({ type: 'start' })}\n      >\n        Let's Start\n      </button>\n    </div>\n  );\n});\n\nconst Timer = block(function Timer({ dispatch, secondsRemaining }) {\n  const mins = Math.floor(secondsRemaining / 60);\n  const sec = secondsRemaining % 60;\n\n  useEffect(() => {\n    const id = setInterval(() => {\n      dispatch({ type: 'tick' });\n    }, 1000);\n    return () => clearInterval(id);\n  }, [dispatch]);\n\n  return (\n    <div className=\"timer\">\n      {mins < 10 ? '0' : ''}\n      {mins}:{sec < 10 ? '0' : ''}\n      {sec}\n    </div>\n  );\n});\n\nexport default MillionQuiz;"
  },
  {
    "path": "packages/kitchen-sink/src/examples/morse-code-translator.jsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\n\nconst morseCode = {\n  A: '.-',\n  B: '-...',\n  C: '-.-.',\n  D: '-..',\n  E: '.',\n  F: '..-.',\n  G: '--.',\n  H: '....',\n  I: '..',\n  J: '.---',\n  K: '-.-',\n  L: '.-..',\n  M: '--',\n  N: '-.',\n  O: '---',\n  P: '.--.',\n  Q: '--.-',\n  R: '.-.',\n  S: '...',\n  T: '-',\n  U: '..-',\n  V: '...-',\n  W: '.--',\n  X: '-..-',\n  Y: '-.--',\n  Z: '--..',\n  1: '.----',\n  2: '..---',\n  3: '...--',\n  4: '....-',\n  5: '.....',\n  6: '-....',\n  7: '--...',\n  8: '---..',\n  9: '----.',\n  0: '-----',\n};\n\nconst morseCodeGuideAlphabets = {\n  A: '.-',\n  B: '-...',\n  C: '-.-.',\n  D: '-..',\n  E: '.',\n  F: '..-.',\n  G: '--.',\n  H: '....',\n  I: '..',\n  J: '.---',\n  K: '-.-',\n  L: '.-..',\n  M: '--',\n  N: '-.',\n  O: '---',\n  P: '.--.',\n  Q: '--.-',\n  R: '.-.',\n  S: '...',\n  T: '-',\n  U: '..-',\n  V: '...-',\n  W: '.--',\n  X: '-..-',\n  Y: '-.--',\n  Z: '--..',\n};\n\nconst morseCodeGuideNumerical = {\n  1: '.----',\n  2: '..---',\n  3: '...--',\n  4: '....-',\n  5: '.....',\n  6: '-....',\n  7: '--...',\n  8: '---..',\n  9: '----.',\n  0: '-----',\n};\n\nconst MorseCodeTranslator = block(() => {\n  const [inputText, setInputText] = useState('');\n  const [translatedText, setTranslatedText] = useState('');\n  const [showMorseGuide, setShowMorseGuide] = useState(false);\n\n  const translateToMorse = () => {\n    let text = inputText.toUpperCase();\n    let morseResult = '';\n    for (let i = 0; i < text.length; i++) {\n      const char = text[i];\n      if (char === ' ') {\n        morseResult += ' ';\n      } else if (morseCode[char]) {\n        morseResult += morseCode[char] + ' ';\n      }\n    }\n    setTranslatedText(morseResult.trim());\n  };\n\n  const translateToText = () => {\n    const morseArray = inputText.trim().split(' ');\n    let textResult = '';\n    for (let i = 0; i < morseArray.length; i++) {\n      const morse = morseArray[i];\n      if (morse === '') {\n        textResult += ' ';\n      } else {\n        for (const key in morseCode) {\n          if (morseCode[key] === morse) {\n            textResult += key;\n          }\n        }\n      }\n    }\n    setTranslatedText(textResult);\n  };\n  return (\n    <div>\n      <h1 style={{ textAlign: 'center' }}>Morse Code Translator</h1>\n      <div\n        style={{\n          border: '2px solid salmon',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n          borderRadius: '20px',\n          padding: '20px',\n          color: '#DDFFD9',\n          fontSize: '22px',\n        }}\n      >\n        <p style={{ fontSize: '28px' }}>\n          {translatedText ? (\n            translatedText\n          ) : (\n            <span style={{ color: 'dimgray' }}>Translated Data</span>\n          )}\n        </p>\n      </div>\n      <div\n        style={{\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n        }}\n      >\n        <textarea\n          style={{\n            marginTop: '20px',\n            width: '280px',\n            height: '60px',\n            border: 'none',\n            backgroundColor: '#353535',\n            padding: '0.55rem',\n            color: '#f7f7f7',\n            borderRadius: '0.25rem',\n          }}\n          rows=\"6\"\n          placeholder=\"Enter Text or Morse Code\"\n          value={inputText}\n          onChange={(e) => setInputText(e.target.value)}\n        ></textarea>\n      </div>\n\n      <div\n        style={{\n          marginTop: '20px',\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n        }}\n      >\n        <div style={{ display: 'flex', gap: '20px' }}>\n          <button onClick={translateToMorse}>Translate to Morse</button>\n          <button onClick={translateToText}>Translate to Text</button>\n          <button onClick={() => setShowMorseGuide(!showMorseGuide)}>\n            {showMorseGuide ? 'Hide Morse Guide' : 'Show Morse Guide'}\n          </button>\n        </div>\n      </div>\n\n      {showMorseGuide && (\n        <div>\n          <h2 style={{ textAlign: 'center' }}>\n            Morse Code Guide for Alphabets!\n          </h2>\n          <div\n            style={{\n              display: 'flex',\n              justifyContent: 'center',\n              alignItems: 'center',\n              flexWrap: 'wrap',\n            }}\n          >\n            {Object.keys(morseCodeGuideAlphabets).map((key) => (\n              <div key={key} style={{ margin: '10px', textAlign: 'center' }}>\n                {key}: {morseCodeGuideAlphabets[key]}\n              </div>\n            ))}\n          </div>\n\n          <div>\n            <h2 style={{ textAlign: 'center' }}>\n              Morse Code Guide for Numerical!\n            </h2>\n            <div\n              style={{\n                display: 'flex',\n                justifyContent: 'center',\n                alignItems: 'center',\n                flexWrap: 'wrap',\n              }}\n            >\n              {Object.keys(morseCodeGuideNumerical).map((key) => (\n                <div key={key} style={{ margin: '10px', textAlign: 'center' }}>\n                  {key}: {morseCodeGuideNumerical[key]}\n                </div>\n              ))}\n            </div>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default MorseCodeTranslator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/mortgage-calculator.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\n\ninterface Results {\n  monthlyPayment: number;\n  totalPayment: number;\n  totalInterest: number;\n}\n\nconst MortgageCalculator = block(() => {\n  const [principal, setPrincipal] = useState<number | string>('');\n  const [rate, setRate] = useState<number | string>('');\n  const [years, setYears] = useState<number | string>('');\n  const [results, setResults] = useState<Results | null>(null);\n\n  const calculateMortgage = () => {\n    const p = parseFloat(principal as string);\n    const r = parseFloat(rate as string) / 12 / 100;\n    const n = parseInt(years as string, 10) * 12;\n\n    if (isNaN(p) || isNaN(r) || isNaN(n) || p <= 0 || r <= 0 || n <= 0) {\n      alert('Please enter valid numbers.');\n      return;\n    }\n\n    const monthlyPayment =\n      (p * (r * Math.pow(1 + r, n))) / (Math.pow(1 + r, n) - 1);\n    const totalPayment = monthlyPayment * n;\n    const totalInterest = totalPayment - p;\n\n    setResults({\n      monthlyPayment,\n      totalPayment,\n      totalInterest,\n    });\n  };\n\n  return (\n    <div className=\"MortgageCalculator\">\n      <h1>Mortgage Calculator</h1>\n      <div>\n        <label>Principal Amount ($): </label>\n        <input\n          type=\"number\"\n          value={principal}\n          onChange={(e) => setPrincipal(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <div>\n        <label>Rate (Annual %): </label>\n        <input\n          type=\"number\"\n          value={rate}\n          onChange={(e) => setRate(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <div>\n        <label>Term (Years): </label>\n        <input\n          type=\"number\"\n          value={years}\n          onChange={(e) => setYears(e.target.value)}\n          style={{ display: 'block', marginBottom: '15px' }}\n        />\n      </div>\n      <button onClick={calculateMortgage}>Calculate</button>\n\n      {results && (\n        <div className=\"results\">\n          <h2>Results:</h2>\n          <div>Monthly Payment: ${results.monthlyPayment.toFixed(2)}</div>\n          <div>Total Payment: ${results.totalPayment.toFixed(2)}</div>\n          <div>Total Interest: ${results.totalInterest.toFixed(2)}</div>\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default MortgageCalculator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/movie-finder.tsx",
    "content": "import React from 'react';\nimport { block } from 'million/react';\n\ninterface MovieProps {\n  title: string;\n  release_date: string;\n  Rated: string;\n  overview: string;\n}\n\nconst MovieFinder = block(() => {\n  const [query, setQuery] = React.useState<string>('');\n  const [isLoading, setLoading] = React.useState<boolean>(false);\n  const [movie, setMovie] = React.useState<MovieProps | null>(null);\n\n  const fetchMovies = async () => {\n    try {\n      setLoading(true);\n      const res = await fetch(\n        `https://api.themoviedb.org/3/search/movie?query=${query}&api_key=7375b3162ed1bb2f24bb965386019997`,\n      );\n      const data = await res.json();\n      setMovie(data.results[0]);\n    } catch (error: any) {\n      return error;\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  return (\n    <div>\n      <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n        <input\n          value={query}\n          placeholder=\"Name a movie & I'll do the rest \"\n          style={{ width: '40%', padding: '10px' }}\n          onChange={(e) => setQuery(e.target.value)}\n        />\n        <button onClick={fetchMovies} disabled={isLoading === true}>\n          Search\n        </button>\n      </div>\n      <div style={{ paddingTop: '15px' }}>\n        {movie && (\n          <>\n            <h3>Title: {movie.title}</h3>\n            <p>Released: {movie.release_date} </p>\n            <p>Plot: {movie.overview} </p>\n          </>\n        )}\n      </div>\n    </div>\n  );\n});\n\nexport default MovieFinder;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/multi-children.jsx",
    "content": "import { block } from 'million/react';\n\nconst Wrapper = block(({ children }) => {\n  return <div className=\"wrapper\">{children}</div>;\n});\n\nconst MultiChildren = block(() => {\n  return (\n    <Wrapper>\n      <div className=\"child\">First Child</div>\n      <div className=\"child\">Second Child</div>\n    </Wrapper>\n  );\n});\n\nexport default MultiChildren;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/music-player.jsx",
    "content": "import React, { useEffect, useState } from 'react';\nimport useSound from 'use-sound';\nimport Seyi from '../../assets/seyi.mp3';\nimport { AiFillPlayCircle, AiFillPauseCircle } from 'react-icons/ai';\nimport { BiSkipNext, BiSkipPrevious } from 'react-icons/bi';\nimport { IconContext } from 'react-icons';\nimport { block } from 'million/react';\n\nconst albumArt =\n  'https://i0.wp.com/justnaija.com/uploads/2022/11/Seyi-Vibez-Bank-Of-America-artwork.png?ulb=false&ssl=1&resize=320,350';\n\nconst MusicPlayer = block(() => {\n  return (\n    <div className=\"body\">\n      <div className=\"App\">\n        <div className=\"music-card\">\n          <Player />\n        </div>\n      </div>\n    </div>\n  );\n});\n\nconst Player = block(() => {\n  const [isPlaying, setIsPlaying] = useState(false);\n\n  const [play, { pause, duration, sound }] = useSound(Seyi);\n\n  const playingButton = () => {\n    if (isPlaying) {\n      pause();\n      setIsPlaying(false);\n    } else {\n      play();\n      setIsPlaying(true);\n    }\n  };\n\n  return (\n    <div className=\"component\">\n      <h2>Playing Now</h2>\n      <img className=\"musicCover\" src={albumArt} />\n      <div>\n        <h3 className=\"title\">Man Of The Year</h3>\n        <p className=\"subTitle\">Seyi Vibez</p>\n      </div>\n      <AudioTimeline duration={duration} sound={sound} isPlaying={isPlaying} />\n      <div>\n        <button className=\"playButton\">\n          <IconContext.Provider value={{ size: '3em', color: '#27AE60' }}>\n            <BiSkipPrevious />\n          </IconContext.Provider>\n        </button>\n        {!isPlaying ? (\n          <button className=\"playButton\" onClick={playingButton}>\n            <IconContext.Provider value={{ size: '3em', color: '#27AE60' }}>\n              <AiFillPlayCircle />\n            </IconContext.Provider>\n          </button>\n        ) : (\n          <button className=\"playButton\" onClick={playingButton}>\n            <IconContext.Provider value={{ size: '3em', color: '#27AE60' }}>\n              <AiFillPauseCircle />\n            </IconContext.Provider>\n          </button>\n        )}\n        <button className=\"playButton\">\n          <IconContext.Provider value={{ size: '3em', color: '#27AE60' }}>\n            <BiSkipNext />\n          </IconContext.Provider>\n        </button>\n      </div>\n    </div>\n  );\n});\n\nconst AudioTimeline = block(({ duration, sound, isPlaying }) => {\n  const [currTime, setCurrTime] = useState({\n    min: '',\n    sec: '',\n  });\n\n  const [time, setTime] = useState({\n    min: '',\n    sec: '',\n  });\n\n  const [seconds, setSeconds] = useState(); // current position of the audio in seconds\n\n  useEffect(() => {\n    const sec = duration / 1000;\n    const min = Math.floor(sec / 60);\n    const secRemain = Math.floor(sec % 60);\n\n    setTime({\n      min: min,\n      sec: secRemain,\n    });\n  }, [isPlaying]);\n\n  useEffect(() => {\n    const interval = setInterval(() => {\n      if (sound) {\n        setSeconds(sound.seek([])); // set the seconds state with the current state.\n        const min = Math.floor(sound.seek([]) / 60);\n        const sec = Math.floor(sound.seek([]) % 60);\n\n        setCurrTime({\n          min,\n          sec,\n        });\n      }\n    }, 1000);\n    return () => clearInterval(interval);\n  }, [sound]);\n  return (\n    <div>\n      <div className=\"time\">\n        <p>\n          {currTime.min}:{currTime.sec}\n        </p>\n        <p>\n          {time.min}:{time.sec}\n        </p>\n      </div>\n      <input\n        type=\"range\"\n        min=\"0\"\n        max={duration / 1000}\n        value={seconds}\n        className=\"timeline\"\n        onChange={(e) => {\n          sound.seek([e.target.value]);\n        }}\n      />\n    </div>\n  );\n});\n\nexport default MusicPlayer;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/news-aggregator.tsx",
    "content": "import React, { useEffect, useState } from 'react';\nimport { block } from 'million/react';\n\ninterface Source {\n  name: string;\n  url: string;\n}\ninterface Article {\n  description: string;\n  url: string;\n  content: string;\n  image: string;\n  source: Source;\n  publishedAt: string;\n}\ninterface NewsCardProps {\n  title: string;\n  description: string;\n  imageUrl: string;\n  sourceName: string;\n  publishedAt: string;\n  url: string;\n}\nconst apikey = 'a963a8b8b7f31c79f5002d77fcb592be';\nconst category = 'general';\nconst url =\n  'https://gnews.io/api/v4/top-headlines?category=' +\n  category +\n  '&lang=en&country=us&max=10&apikey=' +\n  apikey;\nconst defaultImageUrl =\n  'https://euaa.europa.eu/sites/default/files/styles/width_600px/public/default_images/news-default-big.png?itok=NNXAZZTc';\nconst NewsCard = ({\n  title,\n  description,\n  imageUrl,\n  sourceName,\n  publishedAt,\n  url,\n}: NewsCardProps) => {\n  return (\n    <div className=\"news-card\">\n      <a href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n        <div className=\"image-container\">\n          <img src={imageUrl} alt={title} />\n        </div>\n      </a>\n      <div className=\"content\">\n        <h3 className=\"title\">{title}</h3>\n        <p className=\"description\">{description}</p>\n        <p className=\"source\">{sourceName}</p>\n        <p className=\"published-at\">{publishedAt}</p>\n        <a\n          className=\"read-more\"\n          href={url}\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          Read more\n        </a>\n      </div>\n    </div>\n  );\n};\n\nconst NewsAggregator: React.FC = block(() => {\n  const [articles, setArticles] = useState([]);\n  const [isLoading, setIsLoading] = useState(true);\n  useEffect(() => {\n    fetch(url)\n      .then((response) => response.json())\n      .then((data) => {\n        setArticles(data.articles);\n        setIsLoading(false);\n      })\n      .catch((error) => {\n        console.error('Error fetching news:', error);\n        setIsLoading(false);\n      });\n  }, []);\n\n  return (\n    <div>\n      <h2>News Aggregator</h2>\n      {isLoading && <div>Loading...</div>}\n      {!isLoading && (\n        <div className=\"news-container\">\n          {articles.map((article: Article) => (\n            <NewsCard\n              title={article.description}\n              description={article.content}\n              imageUrl={\n                article.image !== null ? article.image : defaultImageUrl\n              }\n              sourceName={article.source.name}\n              publishedAt={article.publishedAt}\n              url={article.url}\n            />\n          ))}\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default NewsAggregator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/number-guessing.tsx",
    "content": "import React, { useState, FormEvent } from 'react';\nimport { block } from 'million/react';\n\ninterface NumberGuessingGameProps {}\n\nconst NumberGuessingGame: React.FC<NumberGuessingGameProps> = block(() => {\n  const [systemNumber] = useState(() => Math.floor(Math.random() * 10000) + 1);\n  const [userNumber, setUserNumber] = useState<number>(0);\n  const [attempts, setAttempts] = useState<number>(0);\n  const [message, setMessage] = useState<string>(\n    'Guess the number between 1 and 10000!',\n  );\n\n  const handleGuess = (e: FormEvent) => {\n    e.preventDefault();\n    if (userNumber === systemNumber) {\n      setMessage(`Congratulations, you win in ${attempts} moves!`);\n    } else {\n      setAttempts(attempts + 1);\n      setMessage(\n        userNumber > systemNumber\n          ? 'Please decrease your value'\n          : 'Please increase your value',\n      );\n    }\n  };\n\n  return (\n    <div>\n      <h1>Number Guessing Game</h1>\n      <p>{message}</p>\n      <p>Moves taken: {attempts}</p>\n      <form onSubmit={handleGuess}>\n        <input\n          type=\"number\"\n          value={userNumber}\n          onChange={(e) => setUserNumber(parseInt(e.target.value))}\n        />\n        <button type=\"submit\">Guess</button>\n      </form>\n      <h3>\n        Fun Fact : This game will take max 14 moves to win . Find out how :)\n      </h3>\n    </div>\n  );\n});\n\nexport default NumberGuessingGame;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/password-generator.tsx",
    "content": "import { useState, useEffect, useRef } from 'react';\nimport { block } from 'million/react';\nimport { BsClipboardCheck } from 'react-icons/bs';\nimport { FiRefreshCcw } from 'react-icons/fi';\n\nconst PasswordGenerator = block(() => {\n  const {\n    copyPasswordToClipboard,\n    password,\n    passwordInputRef,\n    setPassword,\n    generatePassword,\n  } = useGeneratePassword();\n  return (\n    <div className=\"password_generator\">\n      <h1>Password Generator</h1>\n\n      <p>\n        Create strong and secure passwords to keep your account safe online.\n      </p>\n\n      <div className=\"password_generator_top_section\">\n        {/* Password Generator Output */}\n        <div className=\"password_generator_output_container\">\n          <input\n            ref={passwordInputRef}\n            type=\"text\"\n            readOnly\n            value={password.value}\n          />\n\n          <Tooltip text=\"Copy to Clipboard\" show={password.isCopied}>\n            <button\n              type=\"button\"\n              className=\"right-icon\"\n              onClick={copyPasswordToClipboard}\n            >\n              <BsClipboardCheck />\n            </button>\n          </Tooltip>\n        </div>\n\n        <button\n          type=\"button\"\n          className=\"password_generator_refresh_password\"\n          onClick={generatePassword}\n        >\n          <FiRefreshCcw />\n        </button>\n      </div>\n\n      {/* Options */}\n\n      <div className=\"password_generator_customizable_options\">\n        <div className=\"password_generator_customizable_options__length\">\n          <label>Length: {password.length}</label>\n          <input\n            type=\"range\"\n            min=\"3\"\n            max=\"100\"\n            value={password.length}\n            className=\"timeline\"\n            onChange={(e) => {\n              setPassword({\n                ...password,\n                length: parseInt(e.target.value),\n              });\n            }}\n          />\n        </div>\n\n        <div className=\"password_generator_customizable_options__others\">\n          <div className=\"password_generator_customizable_options__password_type\">\n            <label>Password Type: </label>\n            <select\n              value={password.password_type}\n              onChange={(e) =>\n                setPassword({\n                  ...password,\n                  password_type: e.target.value as IPasswordType,\n                })\n              }\n            >\n              <option value={'password'}>Password</option>\n              <option value={'pin'}>PIN</option>\n            </select>\n          </div>\n\n          <div className=\"password_generator_customizable_options__password_type\">\n            <input\n              id=\"number_checkbox\"\n              name=\"number_checkbox\"\n              disabled={password.password_type === 'pin'}\n              type=\"checkbox\"\n              checked={password.numbers!}\n              onChange={() =>\n                setPassword({ ...password, numbers: !password.numbers })\n              }\n              className=\"password_generator_customizable_options__checkbox\"\n            />\n            <label htmlFor=\"number_checkbox\">Number</label>\n          </div>\n\n          <div className=\"password_generator_customizable_options__password_type\">\n            <input\n              id=\"symbol_checkbox\"\n              name=\"symbol_checkbox\"\n              type=\"checkbox\"\n              disabled={password.password_type === 'pin'}\n              onChange={() =>\n                setPassword({ ...password, symbols: !password.symbols })\n              }\n              className=\"password_generator_customizable_options__checkbox\"\n            />\n            <label htmlFor=\"symbol_checkbox\">Symbols</label>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n});\n\nexport default PasswordGenerator;\n\nconst Tooltip = ({ text, children, show }: IToolTipProps) => {\n  return (\n    <div className=\"password_generator_tooltip-container\">\n      <div>{children}</div>\n      <p className={`password_generator_tooltip-text ${show ? 'visible' : ''}`}>\n        {text}\n      </p>\n    </div>\n  );\n};\n\ntype IPasswordType = 'password' | 'pin';\n\ninterface IPasswordState {\n  value: string;\n  password_type: IPasswordType;\n  length: number;\n  isCopied: boolean;\n  numbers?: boolean;\n  symbols?: boolean;\n}\n\ninterface IToolTipProps {\n  children: JSX.Element;\n  text: string;\n  show: boolean;\n}\n\nconst useGeneratePassword = () => {\n  const passwordInputRef = useRef<HTMLInputElement | null>(null);\n\n  const [password, setPassword] = useState<IPasswordState>({\n    value: '',\n    password_type: 'password',\n    length: 3,\n    isCopied: false,\n    numbers: false,\n    symbols: false,\n  });\n\n  const copyPasswordToClipboard = () => {\n    if (passwordInputRef.current) {\n      passwordInputRef.current.select();\n      document.execCommand('copy');\n\n      // Deselect the text\n      window.getSelection()?.removeAllRanges();\n\n      setPassword({ ...password, isCopied: true });\n\n      setTimeout(() => {\n        setPassword({ ...password, isCopied: false });\n      }, 3000);\n    }\n  };\n\n  const generatePassword = () => {\n    const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';\n    const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    const numberChars = '0123456789';\n    const symbolChars = '!@#$%^&*()_+{}[]|:;\"<>,.?/~';\n\n    let charset = '';\n\n    if (password.password_type === 'password') {\n      charset += lowercaseChars + uppercaseChars;\n\n      if (password.numbers) {\n        charset += numberChars;\n      }\n\n      if (password.symbols) {\n        charset += symbolChars;\n      }\n    }\n\n    if (password.password_type === 'pin') {\n      charset += numberChars;\n    }\n\n    let generatedValue = '';\n\n    for (let i = 0; i < password.length; i++) {\n      const randomIndex = Math.floor(Math.random() * charset.length);\n      generatedValue += charset[randomIndex];\n    }\n\n    setPassword({ ...password, value: generatedValue });\n  };\n\n  useEffect(() => {\n    generatePassword();\n  }, [\n    password.length,\n    password.numbers,\n    password.password_type,\n    password.symbols,\n  ]);\n\n  return {\n    passwordInputRef,\n    password,\n    setPassword,\n    copyPasswordToClipboard,\n    generatePassword,\n  };\n};\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/pomodoro-timer.jsx",
    "content": "import React from 'react';\nimport { block } from 'million/react';\n\nconst PomodoroTimer = block(() => {\n  const [minutes, setMinutes] = React.useState(25);\n  const [seconds, setSeconds] = React.useState(0);\n  const [isRunning, setIsRunning] = React.useState(false);\n\n  React.useEffect(() => {\n    let interval = null;\n    if (isRunning) {\n      interval = setInterval(() => {\n        if (seconds > 0) {\n          setSeconds(seconds - 1);\n        }\n        if (seconds === 0) {\n          if (minutes === 0) {\n            clearInterval(interval);\n          } else {\n            setMinutes(minutes - 1);\n            setSeconds(59);\n          }\n        }\n      }, 1000);\n    } else if (!isRunning && seconds !== 0) {\n      clearInterval(interval);\n    }\n    return () => clearInterval(interval);\n  });\n\n  const startTimer = () => {\n    setIsRunning(true);\n  };\n\n  const stopTimer = () => {\n    setIsRunning(false);\n  };\n\n  const resetTimer = () => {\n    setMinutes(25);\n    setSeconds(0);\n    setIsRunning(false);\n  };\n\n  return (\n    <div>\n      <h1>Pomodoro Timer</h1>\n      <div>\n        {minutes}:{seconds < 10 ? `0${seconds}` : seconds}\n      </div>\n      <button onClick={startTimer}>Start</button>\n      <button onClick={stopTimer}>Stop</button>\n      <button onClick={resetTimer}>Reset</button>\n    </div>\n  );\n});\n\nexport default PomodoroTimer;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/qr-code-generator.tsx",
    "content": "import { block } from 'million/react';\nimport { useState, useRef } from 'react';\nimport QRCode from 'react-qr-code';\n\nconst QRCodeGenerator = block(() => {\n  const [data, setData] = useState<string | null>(null);\n  const inputRef = useRef<HTMLInputElement>(null);\n  return (\n    <div>\n      <h1>QR Code Generator</h1>\n      <div>\n        <input\n          placeholder=\"Enter text or URL\"\n          style={{ width: '40%' }}\n          ref={inputRef}\n          type=\"text\"\n        />\n        <button\n          style={{ marginLeft: 10 }}\n          onClick={() => {\n            if (inputRef.current) {\n              setData(inputRef.current.value);\n            }\n          }}\n        >\n          Generate\n        </button>\n      </div>\n      {data && (\n        <div className=\"qr-code-wrapper\">\n          <QRCode value={data} />\n        </div>\n      )}\n    </div>\n  );\n});\n\nexport default QRCodeGenerator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/quote-generator.tsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\n\nconst QuoteGenerator: React.FC = block(() => {\n  const [quote, setQuote] = useState<string>('');\n\n  const fetchNewQuote = () => {\n    fetch('https://api.quotable.io/random')\n      .then((response) => response.json())\n      .then((data) => {\n        if (data.content) {\n          setQuote(data.content);\n        }\n      })\n      .catch((error) => console.error('Error fetching quotes:', error));\n  };\n\n  return (\n    <div>\n      <h1>Inspirational Quote Generator</h1>\n      <button onClick={fetchNewQuote}>Get New Quote</button>\n      <p>{quote}</p>\n    </div>\n  );\n});\n\nexport default QuoteGenerator;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/react-router-dom.tsx",
    "content": "import { Routes, Route, Outlet, Link } from 'react-router-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { block } from 'million/react';\n\nconst Layout = block(() => {\n  return (\n    <div>\n      {/* A \"layout route\" is a good place to put markup you want to\n          share across all the pages on your site, like navigation. */}\n      <nav>\n        <ul>\n          <li>\n            <Link to=\"/\">Home</Link>\n          </li>\n          <li>\n            <Link to=\"/about\">About</Link>\n          </li>\n          <li>\n            <Link to=\"/dashboard\">Dashboard</Link>\n          </li>\n          <li>\n            <Link to=\"/nothing-here\">Nothing Here</Link>\n          </li>\n        </ul>\n      </nav>\n\n      <hr />\n\n      {/* An <Outlet> renders whatever child route is currently active,\n          so you can think about this <Outlet> as a placeholder for\n          the child routes we defined above. */}\n      <Outlet />\n    </div>\n  );\n});\n\nconst Home = block(() => {\n  return (\n    <div>\n      <h2>Home</h2>\n    </div>\n  );\n});\n\nconst About = block(() => {\n  return (\n    <div>\n      <h2>About</h2>\n    </div>\n  );\n});\n\nconst Dashboard = block(() => {\n  return (\n    <div>\n      <h2>Dashboard</h2>\n    </div>\n  );\n});\n\nconst NoMatch = block(() => {\n  return (\n    <div>\n      <h2>Nothing to see here!</h2>\n      <p>\n        <Link to=\"/\">Go to the home page</Link>\n      </p>\n    </div>\n  );\n});\n\nconst Router = block(() => {\n  return (\n    <BrowserRouter>\n      <div>\n        <h1>Basic Example</h1>\n\n        <p>\n          This example demonstrates some of the core features of React Router\n          including nested <code>&lt;Route&gt;</code>s,{' '}\n          <code>&lt;Outlet&gt;</code>s, <code>&lt;Link&gt;</code>s, and using a\n          \"*\" route (aka \"splat route\") to render a \"not found\" page when\n          someone visits an unrecognized URL.\n        </p>\n\n        {/* Routes nest inside one another. Nested route paths build upon\n            parent route paths, and nested route elements render inside\n            parent route elements. See the note about <Outlet> below. */}\n        <Routes>\n          <Route path=\"/\" element={<Layout />}>\n            <Route index element={<Home />} />\n            <Route path=\"about\" element={<About />} />\n            <Route path=\"dashboard\" element={<Dashboard />} />\n\n            {/* Using path=\"*\"\" means \"match anything\", so this route\n                acts like a catch-all for URLs that we don't have explicit\n                routes for. */}\n            <Route path=\"*\" element={<NoMatch />} />\n          </Route>\n        </Routes>\n      </div>\n    </BrowserRouter>\n  );\n});\n\nexport default Router;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/recipe-finder.jsx",
    "content": "import React, { useState } from 'react';\nimport axios from 'axios';\nimport { block } from 'million/react';\n\nconst RecipeFinder = block(() => {\n  const [searchedQuery, setSearchedQuery] = useState('');\n  const [recipes, setRecipes] = useState([]);\n  const [cart, setCart] = useState([]);\n  const [loading, setLoading] = useState(false);\n  const [error, setError] = useState(null);\n  const [recipieInstructions, setRecipeInstructions] = useState([]);\n  const [ingredientsInstructions, setIngredientsInstructions] = useState([]);\n  const [recipieInstructionsId, setRecipeInstructionsId] = useState('');\n  const API_KEY = '5a881b78656146509b31903824370ebb';\n\n  const getRecipes = async () => {\n    setLoading(true);\n    setError(null);\n\n    try {\n      const response = await axios.get(\n        `https://api.spoonacular.com/recipes/complexSearch?apiKey=${API_KEY}&query=${searchedQuery}`,\n      );\n      setRecipes(response.data.results);\n    } catch (error) {\n      setError('An error occurred while fetching recipes.');\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const showIns = async (recipe) => {\n    setLoading(true);\n    setError(null);\n\n    try {\n      await getRecipeInfo(recipe.id);\n      await getIngredientsInfo(recipe.id);\n      setRecipeInstructionsId(recipe.id);\n    } catch (error) {\n      setError('An error occurred while fetching instructions.');\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const getRecipeInfo = async (id) => {\n    setLoading(true);\n    setError(null);\n\n    try {\n      const response = await axios.get(\n        `https://api.spoonacular.com/recipes/${id}/analyzedInstructions?apiKey=${API_KEY}`,\n      );\n      // console.log(response);\n      setRecipeInstructions(response.data[0].steps);\n    } catch (error) {\n      setError('An error occurred while fetching instructions.');\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const getIngredientsInfo = async (id) => {\n    setLoading(true);\n    setError(null);\n\n    try {\n      const response = await axios.get(\n        `https://api.spoonacular.com/recipes/${id}/information?apiKey=${API_KEY}&includeNutrition=false`,\n      );\n      console.log(response.data.extendedIngredients);\n      setRecipeInstructionsId(response.data.id);\n      setIngredientsInstructions(response.data.extendedIngredients);\n    } catch (error) {\n      setError('An error occurred while fetching instructions.');\n    } finally {\n      setLoading(false);\n    }\n  };\n  const removeFromCart = (recipeId) => {\n    const updatedCart = cart.filter((item) => item.id !== recipeId);\n    setCart(updatedCart);\n  };\n  const addToCart = (recipe) => {\n    setCart([...cart, recipe]);\n  };\n\n  return (\n    <div>\n      <h1\n        style={{\n          width: '100%',\n          textAlign: 'center',\n          fontSize: '3rem',\n        }}\n      >\n        Recipe Finder\n      </h1>\n      <div\n        style={{\n          display: 'flex',\n          textAlign: 'center',\n        }}\n      >\n        <div\n          style={{\n            flexBasis: '65%',\n            backgroundColor: 'black',\n            borderRadius: '1.5rem',\n          }}\n        >\n          <form\n            style={{\n              marginTop: '1rem',\n            }}\n            onSubmit={(e) => {\n              e.preventDefault();\n              getRecipes();\n            }}\n          >\n            <input\n              style={{\n                width: '70%',\n                borderRadius: '3rem',\n                padding: '5px 17px',\n                fontSize: '1.3rem',\n                margin: '10px 5px',\n              }}\n              type=\"text\"\n              placeholder=\"Enter a recipe keyword...\"\n              value={searchedQuery}\n              onChange={(e) => setSearchedQuery(e.target.value)}\n            />\n            <button\n              style={{\n                borderRadius: '0.5rem',\n                padding: '5px 17px',\n                fontSize: '1.3rem',\n                margin: '10px 5px',\n              }}\n              type=\"submit\"\n            >\n              Search\n            </button>\n          </form>\n          {loading && (\n            <p\n              style={{\n                fontSize: '3rem',\n              }}\n            >\n              Loading...\n            </p>\n          )}\n          {error && <p>{error}</p>}\n\n          <div\n            style={{\n              textAlign: 'left',\n              justifyContent: 'left',\n              display: 'flex',\n              flexDirection: 'column',\n            }}\n          >\n            {recipes &&\n              recipes.map((recipe) => (\n                <div\n                  key={recipe.id}\n                  style={{\n                    color: 'black',\n                    // textAlign:\"center\",\n                    border: '1px solid blue',\n                    margin: '1rem 1rem',\n                    padding: '1.5rem',\n                    backgroundColor: 'white',\n                    borderRadius: '1rem',\n                  }}\n                >\n                  <div>\n                    <div\n                      style={{\n                        textAlign: 'center',\n                        margin: 'auto',\n                      }}\n                    >\n                      <img\n                        style={{\n                          margin: '0',\n                          borderRadius: '1rem',\n                          height: '15rem',\n                          maxWidth: '48%',\n                        }}\n                        src={recipe.image}\n                        alt={recipe.title}\n                      />\n                    </div>\n                    <h1\n                      style={{\n                        margin: '0',\n                        textAlign: 'center',\n                      }}\n                    >\n                      {recipe.title}\n                    </h1>\n\n                    <div\n                      style={{\n                        width: '100%',\n                      }}\n                    >\n                      <div\n                        style={{\n                          padding: '0.5rem',\n                          backgroundColor: 'silver',\n                          margin: '1px 10px',\n                          borderRadius: '0.6rem',\n                          height: 'auto',\n                          maxHeight: '20rem',\n                          overflowY: 'scroll',\n                        }}\n                      >\n                        {recipieInstructions.length > 0 &&\n                        ingredientsInstructions.length > 0 &&\n                        recipieInstructionsId === recipe.id ? (\n                          <div>\n                            <div>\n                              <h2>Ingredients</h2>\n\n                              <ol>\n                                {ingredientsInstructions &&\n                                  ingredientsInstructions.map((it, index) => (\n                                    <li key={index}>{it.original}.</li>\n                                  ))}\n                              </ol>\n                            </div>\n                            <h2>Method of Preparations</h2>\n                            {recipieInstructions.map((item, index) => (\n                              <span key={index}>{item.step} </span>\n                            ))}\n                          </div>\n                        ) : (\n                          <div\n                            style={{\n                              display: 'flex',\n                              alignItems: 'center',\n                              justifyContent: 'center',\n                              height: '100%',\n                            }}\n                          >\n                            <button onClick={() => showIns(recipe)}>\n                              Show Instruction\n                            </button>\n                          </div>\n                        )}\n                      </div>\n                    </div>\n                  </div>\n                  <div\n                    style={{\n                      marginTop: '1rem',\n                      textAlign: 'center',\n                      width: '100%',\n                    }}\n                  >\n                    {cart.some((cartitem) => cartitem.id === recipe.id) ? (\n                      <p>Item already in cart</p>\n                    ) : (\n                      <button\n                        style={{\n                          width: '100%',\n                          borderRadius: '5rem',\n                        }}\n                        onClick={() => addToCart(recipe)}\n                      >\n                        Add to Cart\n                      </button>\n                    )}\n                  </div>\n                </div>\n              ))}\n          </div>\n        </div>\n\n        <div\n          style={{\n            width: '35%',\n            color: 'black',\n            marginLeft: '1rem',\n            backgroundColor: '#252525',\n            borderRadius: '1.5rem',\n            paddingX: '1rem',\n          }}\n        >\n          <Cart\n            cartItems={cart}\n            removeFromCart={removeFromCart}\n            recipieInstructions={recipieInstructions}\n            recipieInstructionsId={recipieInstructionsId}\n            getRecipeInfo={showIns}\n            ingredientsInstructions={ingredientsInstructions}\n          />\n        </div>\n      </div>\n    </div>\n  );\n});\n\nconst Cart = block(\n  ({\n    cartItems,\n    removeFromCart,\n    recipieInstructions,\n    recipieInstructionsId,\n    getRecipeInfo,\n    ingredientsInstructions,\n  }) => {\n    return (\n      <div>\n        <h1\n          style={{\n            color: 'white',\n          }}\n        >\n          Cart\n        </h1>\n        <p\n          style={{\n            color: 'white',\n          }}\n        >\n          No. of items in CART: {cartItems.length}\n        </p>\n        <div\n          style={{\n            padding: '1rem',\n          }}\n        >\n          {cartItems &&\n            cartItems.map((recipe) => (\n              <div\n                style={{\n                  backgroundColor: 'white',\n                  borderRadius: '1rem',\n                  margin: '1rem 0',\n                }}\n                key={recipe.id}\n              >\n                <h4\n                  style={{\n                    margin: '0',\n                    padding: '10px',\n                  }}\n                >\n                  {recipe.title}\n                </h4>\n\n                <img\n                  style={{\n                    margin: '0',\n                    borderRadius: '1rem',\n                    height: '12rem',\n                    maxWidth: '85%',\n                  }}\n                  src={recipe.image}\n                  alt={recipe.title}\n                />\n                <div\n                  style={{\n                    width: '80%',\n                    padding: '0.5rem',\n                    backgroundColor: 'silver',\n                    margin: 'auto',\n                    borderRadius: '0.6rem',\n                    height: 'auto',\n                    maxHeight: '15rem',\n                    overflowY: 'scroll',\n                    textAlign: 'left',\n                  }}\n                >\n                  {recipieInstructions.length > 0 &&\n                  ingredientsInstructions.length > 0 &&\n                  recipieInstructionsId === recipe.id ? (\n                    <div>\n                      <div>\n                        <h2>Ingredients</h2>\n\n                        <ol>\n                          {ingredientsInstructions &&\n                            ingredientsInstructions.map((it, index) => (\n                              <li key={index}>{it.original}.</li>\n                            ))}\n                        </ol>\n                      </div>\n                      <h2>Method of Preparations</h2>\n                      {recipieInstructions.map((item, index) => (\n                        <span key={index}>{item.step} </span>\n                      ))}\n                    </div>\n                  ) : (\n                    <div\n                      style={{\n                        margin: 'auto',\n                        padding: '1rem',\n                      }}\n                    >\n                      <button\n                        style={{\n                          width: '100%',\n                          borderRadius: '1rem',\n                        }}\n                        onClick={() => getRecipeInfo(recipe)}\n                      >\n                        Show Instructions\n                      </button>\n                    </div>\n                  )}\n                </div>\n                <button\n                  style={{\n                    margin: '1rem 0',\n                    width: '80%',\n                    borderRadius: '5rem',\n                  }}\n                  onClick={() => removeFromCart(recipe.id)}\n                >\n                  Remove from Cart\n                </button>\n              </div>\n            ))}\n        </div>\n      </div>\n    );\n  },\n);\n\nexport default RecipeFinder;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/redux-todo.tsx",
    "content": "import React, { useState } from 'react';\nimport { configureStore, createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { useSelector, useDispatch, Provider } from 'react-redux';\nimport { block } from 'million/react';\n\nconst initialState = {\n  count: 0,\n  todos: [] as Todo[],\n};\n\ninterface Todo {\n  id: number;\n  text: string;\n}\n\nconst todoSlice = createSlice({\n  name: 'todo',\n  initialState,\n  reducers: {\n    addTodo: (state, action: PayloadAction<string>) => {\n      const todo: Todo = {\n        id: Math.random() * 100,\n        text: action.payload,\n      };\n      state.todos.push(todo);\n      state.count += 1;\n    },\n    removeTodo: (state, action: PayloadAction<number>) => {\n      state.todos = state.todos.filter((todo) => todo.id !== action.payload);\n      state.count -= 1;\n    },\n  },\n});\n\nconst store = configureStore({\n  reducer: {\n    todo: todoSlice.reducer,\n  },\n});\n\ntype TodoItemProps = {\n  text: string;\n  id: number;\n  onCheck: (id: number) => void;\n};\n\nconst TodoItem = block(({ text, id, onCheck }: TodoItemProps) => {\n  const deleteTodo = () => {\n    onCheck(id);\n  };\n\n  return (\n    <div className=\"todo\" onClick={deleteTodo}>\n      <input type=\"checkbox\" />\n      <label>{text}</label>\n    </div>\n  );\n});\n\nconst MainTodoApp = block(() => {\n  return (\n    <Provider store={store}>\n      <TodoApp />\n    </Provider>\n  );\n});\n\nconst TodoApp = () => {\n  const [input, setInput] = useState('');\n\n  const count = useSelector(\n    (state: { todo: typeof initialState }) => state.todo.count,\n  );\n  const todos = useSelector(\n    (state: { todo: typeof initialState }) => state.todo.todos,\n  );\n  const dispatch = useDispatch();\n\n  const handleAddTodo = (event: React.FormEvent) => {\n    event.preventDefault();\n    if (input.length >= 1) {\n      dispatch(todoSlice.actions.addTodo(input));\n      setInput('');\n    }\n  };\n\n  const handleTodoDone = (id: number) => {\n    dispatch(todoSlice.actions.removeTodo(id));\n  };\n\n  return (\n    <div className=\"App\">\n      <form className=\"App-form\" onSubmit={handleAddTodo}>\n        <input\n          type=\"text\"\n          value={input}\n          onChange={(event) => setInput(event.target.value)}\n        />\n        <button type=\"submit\">+</button>\n      </form>\n      <div className=\"Todos\">\n        {count > 0 &&\n          todos.map((todo) => (\n            <TodoItem\n              key={todo.id}\n              text={todo.text}\n              id={todo.id}\n              onCheck={handleTodoDone}\n            />\n          ))}\n        {count === 0 && <p>No todos</p>}\n      </div>\n    </div>\n  );\n};\n\nexport default MainTodoApp;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/repro.tsx",
    "content": "import { block } from 'million/react';\n\nconst AUTO_ARCHIVE_OPTIONS = [\n  3 * 86400, // 3 days\n  7 * 86400, // 7 days\n  14 * 86400, // 2 weeks\n  28 * 86400, // 4 weeks\n  90 * 86400, // 3 months\n  365 * 864000, // 1 year\n];\n\nconst ArchiveAllPrefGroup = block(() => {\n  const onChange = () => {};\n  return (\n    <div className=\"prefs-group\">\n      <div className=\"label-wrapper\">\n        <label>\n          <div>\n            <div>\n              Auto archive\n              <select onChange={onChange}>\n                <option value=\"all\">all</option>\n                <option value=\"unread\">unread</option>\n              </select>\n              threads older than\n            </div>\n            <select onChange={onChange}>\n              {AUTO_ARCHIVE_OPTIONS.map((seconds) => (\n                <option key={seconds} value={String(seconds)}>\n                  {String(seconds * 1000)}\n                </option>\n              ))}\n            </select>\n          </div>\n        </label>\n      </div>\n    </div>\n  );\n});\n\nexport default ArchiveAllPrefGroup;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/rock-paper-scissors.tsx",
    "content": "import React, { useState } from 'react';\nimport { block } from 'million/react';\n\nconst Game: React.FC = block(() => {\n  const [playerScore, setPlayerScore] = useState<number>(0);\n  const [computerScore, setComputerScore] = useState<number>(0);\n  const [result, setResult] = useState<string>('');\n  const [gameOver, setGameOver] = useState<boolean>(false);\n\n  const getComputerChoice = (): string => {\n    const cOptions: string[] = ['Rock', 'Paper', 'Scissors'];\n    return cOptions[Math.floor(Math.random() * 3)];\n  };\n\n  const restart = () => {\n    setPlayerScore(0);\n    setComputerScore(0);\n    setResult('');\n    setGameOver(false);\n  };\n\n  const playRound = (playerSelection: string) => {\n    const computerSelection: string = getComputerChoice();\n\n    let newPlayerScore: number = playerScore;\n    let newComputerScore: number = computerScore;\n    let newResult: string = '';\n\n    if (playerSelection === computerSelection) {\n      newResult = \"It's a tie!\";\n    } else if (\n      (playerSelection === 'Rock' && computerSelection === 'Scissors') ||\n      (playerSelection === 'Paper' && computerSelection === 'Rock') ||\n      (playerSelection === 'Scissors' && computerSelection === 'Paper')\n    ) {\n      newResult = `You win! ${playerSelection} beats ${computerSelection}`;\n      newPlayerScore++;\n    } else {\n      newResult = `You lose! ${computerSelection} beats ${playerSelection}`;\n      newComputerScore++;\n    }\n\n    if (newPlayerScore === 5) {\n      setGameOver(true);\n      newResult = 'Player wins the match!';\n    } else if (newComputerScore === 5) {\n      setGameOver(true);\n      newResult = 'Computer wins the match!';\n    }\n\n    setPlayerScore(newPlayerScore);\n    setComputerScore(newComputerScore);\n    setResult(newResult);\n  };\n\n  return (\n    <div className=\"game-container\">\n      <button className=\"restart\" onClick={restart}>\n        Restart\n      </button>\n      <div className=\"box1\">\n        <button onClick={() => playRound('Rock')} disabled={gameOver}>\n          Rock\n        </button>\n        <button onClick={() => playRound('Paper')} disabled={gameOver}>\n          Paper\n        </button>\n        <button onClick={() => playRound('Scissors')} disabled={gameOver}>\n          Scissors\n        </button>\n      </div>\n      <div className=\"output\">{result}</div>\n      <div className=\"box2\">\n        <div className=\"box\">\n          <div>Player's Score</div>\n          <div id=\"score1\">{playerScore}</div>\n        </div>\n        <div className=\"box\">\n          <div>Computer's Score</div>\n          <div id=\"score2\">{computerScore}</div>\n        </div>\n      </div>\n      <div className=\"output1\"></div>\n      <div id=\"boxy\"></div>\n    </div>\n  );\n});\n\nexport default Game;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/snake-game.jsx",
    "content": "import { block } from 'million/react';\nimport { useEffect, useRef, useState } from 'react';\n\nconst Snake = block(({ snake }) => {\n  return (\n    <div>\n      {snake.map((box) => (\n        <div\n          style={{\n            width: '15px',\n            height: '15px',\n            backgroundColor: '#e7da3d',\n            margin: '5px',\n            position: 'absolute',\n            left: `${box.x}%`,\n            top: `${box.y}%`,\n            zIndex: 1,\n          }}\n        />\n      ))}\n    </div>\n  );\n});\n\nconst Food = block(({ position }) => {\n  return (\n    <div\n      style={{\n        width: '15px',\n        height: '15px',\n        backgroundColor: '#3dd1e7',\n        margin: '3px',\n        position: 'absolute',\n        left: `${position.x}%`,\n        top: `${position.y}%`,\n        zIndex: 0,\n      }}\n    />\n  );\n});\n\nconst randomFoodPosition = () => {\n  const pos = { x: 0, y: 0 };\n  let x = Math.floor(Math.random() * 96);\n  let y = Math.floor(Math.random() * 96);\n  pos.x = x - (x % 4);\n  pos.y = y - (y % 4);\n  return pos;\n};\n\nconst initialSnake = {\n  snake: [\n    { x: 0, y: 0 },\n    { x: 4, y: 0 },\n    { x: 8, y: 0 },\n  ],\n  direction: 'ArrowRight',\n  speed: 100,\n};\n\nconst SnakeGame = block(() => {\n  const [snake, setSnake] = useState(initialSnake.snake);\n  const [lastDirection, setLastDirection] = useState(initialSnake.direction);\n  const [foodPosition, setFoodPosition] = useState(randomFoodPosition);\n  const [isStarted, setIsStarted] = useState(false);\n  const [gameOver, setGameOver] = useState(false);\n  const playgroundRef = useRef();\n\n  useEffect(() => {\n    if (!isStarted) return;\n\n    if (\n      snake[snake.length - 1].x === 100 ||\n      snake[snake.length - 1].x === 0 ||\n      snake[snake.length - 1].y === 100 ||\n      snake[snake.length - 1].y === -4\n    ) {\n      setGameOver(true);\n      return;\n    }\n\n    const interval = setInterval(move, initialSnake.speed);\n    return () => clearInterval(interval);\n  });\n\n  const move = () => {\n    const tmpSnake = [...snake];\n    let x = tmpSnake[tmpSnake.length - 1].x,\n      y = tmpSnake[tmpSnake.length - 1].y;\n    switch (lastDirection) {\n      case 'ArrowUp':\n        y -= 4;\n        break;\n      case 'ArrowRight':\n        x += 4;\n        break;\n      case 'ArrowDown':\n        y += 4;\n        break;\n      case 'ArrowLeft':\n        x -= 4;\n        break;\n      default:\n        break;\n    }\n\n    tmpSnake.push({\n      x,\n      y,\n    });\n    if (x !== foodPosition.x || y !== foodPosition.y) tmpSnake.shift();\n    else setFoodPosition(randomFoodPosition());\n    setSnake(tmpSnake);\n  };\n\n  return (\n    <div className=\"snakeGame--main\">\n      <div\n        className=\"snakeGame\"\n        onKeyDown={(e) => setLastDirection(e.key)}\n        ref={playgroundRef}\n        tabIndex={0}\n      >\n        {isStarted && (\n          <div className=\"snakeGame--count\"> score: {snake.length - 3}</div>\n        )}\n\n        {!isStarted && (\n          <>\n            <button\n              className=\"snakeGame--button\"\n              onClick={() => {\n                setIsStarted(true);\n                playgroundRef.current.focus();\n              }}\n              type=\"submit\"\n            >\n              Start\n            </button>\n            <div className=\"snakeGame--arrow-msg snakeGame--text\">\n              Press Start to play!\n            </div>\n          </>\n        )}\n        {gameOver && (\n          <>\n            <div className=\"snakeGame--game-over snakeGame--text\">\n              Game Over!\n            </div>\n            <button\n              onClick={() => {\n                setIsStarted(true);\n                setGameOver(false);\n                setSnake(initialSnake.snake);\n                setLastDirection(initialSnake.direction);\n                playgroundRef.current.focus();\n              }}\n              type=\"submit\"\n            >\n              Restart\n            </button>\n          </>\n        )}\n        <Snake snake={snake} lastDirection={lastDirection} />\n        {!gameOver && (\n          <>\n            <Food position={foodPosition} />\n          </>\n        )}\n      </div>\n      <div className=\"snakeGame--keys snakeGame--text\">\n        <button\n          className=\"snakeGame--button\"\n          onclick={() => {\n            setLastDirection((pre) => {\n              if (pre != 'ArrowDown') return 'ArrowUp';\n              else return pre;\n            });\n          }}\n        >\n          UP\n        </button>\n        <div className=\"snakeGame--keys2\">\n          <button\n            className=\"snakeGame--button\"\n            onclick={() => {\n              setLastDirection((pre) => {\n                if (pre != 'ArrowRight') return 'ArrowLeft';\n                else return pre;\n              });\n            }}\n          >\n            LEFT\n          </button>\n          <button\n            className=\"snakeGame--button\"\n            onclick={() => {\n              setLastDirection((pre) => {\n                if (pre != 'ArrowLeft') return 'ArrowRight';\n                else return pre;\n              });\n            }}\n          >\n            RIGHT\n          </button>\n        </div>\n        <button\n          className=\"snakeGame--button\"\n          onclick={() => {\n            setLastDirection((pre) => {\n              if (pre != 'ArrowUp') return 'ArrowDown';\n              else return pre;\n            });\n          }}\n        >\n          DOWN\n        </button>\n      </div>\n    </div>\n  );\n});\n\nexport default SnakeGame;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/style.tsx",
    "content": "import { block } from 'million/react';\nimport { useState } from 'react';\n\nconst getRandomColor = () => {\n  return `#${Math.floor(Math.random() * 16777215).toString(16)}`;\n};\n\nconst getRandomFontWeight = () => {\n  return Math.floor(Math.random() * 900) + 100;\n};\n\nconst getRandomFontSize = () => {\n  return Math.floor(Math.random() * 50) + 10;\n};\n\nconst Style = block(() => {\n  const [color, setColor] = useState(() => getRandomColor());\n  const [fontWeight, setFontWeight] = useState(() => getRandomFontWeight());\n  const [fontSize, setFontSize] = useState(() => getRandomFontSize());\n\n  return (\n    <div>\n      <button onClick={() => setColor(getRandomColor())}>Random Color</button>\n      <button onClick={() => setFontWeight(getRandomFontWeight())}>\n        Random Font Weight\n      </button>\n      <button onClick={() => setFontSize(getRandomFontSize())}>\n        Random Font Size\n      </button>\n      <button\n        onClick={() => {\n          setColor(getRandomColor());\n          setFontWeight(getRandomFontWeight());\n          setFontSize(getRandomFontSize());\n        }}\n      >\n        Randomize Everything\n      </button>\n      <div style={{ color, fontWeight, fontSize }}>Hello World</div>\n    </div>\n  );\n});\n\nexport default Style;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/styled-counter.tsx",
    "content": "import { useState } from 'react';\nimport { block } from 'million/react';\nimport styled from 'styled-components';\n\nconst Button = styled.button`\n  display: inline-block;\n  color: #bf4f74;\n  font-size: 1em;\n  margin: 1em;\n  padding: 0.25em 1em;\n  border: 2px solid #bf4f74;\n  border-radius: 3px;\n  display: block;\n`;\n\nconst Counter = block(() => {\n  const [count, setCount] = useState(0);\n\n  return <Button onClick={() => setCount(count + 1)}>{count}</Button>;\n});\n\nexport default Counter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/svg.tsx",
    "content": "import { block } from 'million/react';\n\nconst Svg = block(() => {\n  return (\n    <div>\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n        strokeWidth={1.5}\n        stroke=\"currentColor\"\n        className=\"w-6 h-6\"\n      >\n        <path\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          d=\"M4.5 12.75l6 6 9-13.5\"\n        />\n      </svg>\n    </div>\n  );\n});\n\nexport default Svg;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/swr.tsx",
    "content": "import useSWR from 'swr';\nimport { block } from 'million/react';\n\nconst fetcher = (url: string) => fetch(url).then((res) => res.json());\n\nconst Swr = block(() => {\n  const { data, error, isLoading } = useSWR(\n    'https://api.github.com/repos/vercel/swr',\n    fetcher,\n  );\n\n  if (error) return 'An error has occurred.';\n  if (isLoading) return 'Loading...';\n  return (\n    <div>\n      <h1>{data.name}</h1>\n      <p>{data.description}</p>\n      <strong>👁 {data.subscribers_count}</strong>{' '}\n      <strong>✨ {data.stargazers_count}</strong>{' '}\n      <strong>🍴 {data.forks_count}</strong>\n    </div>\n  );\n});\n\nexport default Swr;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/tanstack-query.tsx",
    "content": "import {\n  QueryClient,\n  QueryClientProvider,\n  useQuery,\n} from '@tanstack/react-query';\nimport axios from 'axios';\nimport { block } from 'million/react';\n\nconst queryClient = new QueryClient();\n\nfunction TanstackQuery() {\n  return (\n    <QueryClientProvider client={queryClient}>\n      <Example />\n    </QueryClientProvider>\n  );\n}\n\nconst Example = block(() => {\n  const { isLoading, error, data, isFetching } = useQuery({\n    queryKey: ['repoData'],\n    queryFn: () =>\n      axios\n        .get('https://api.github.com/repos/tannerlinsley/react-query')\n        .then((res) => res.data),\n  });\n\n  if (isLoading) return 'Loading...';\n\n  if (error) return `An error has occurred: ${(error as Error).message}`;\n\n  return (\n    <div>\n      <h1>{data.name}</h1>\n      <p>{data.description}</p>\n      <strong>👀 {data.subscribers_count}</strong>{' '}\n      <strong>✨ {data.stargazers_count}</strong>{' '}\n      <strong>🍴 {data.forks_count}</strong>\n      <div>{isFetching ? 'Updating...' : ''}</div>\n    </div>\n  );\n});\n\nexport default TanstackQuery;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/tanstack-virtual.tsx",
    "content": "import { useRef } from 'react';\nimport { For } from 'million/react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nconst TanstackVirtual = () => {\n  const parentRef = useRef();\n\n  const rowVirtualizer = useVirtualizer({\n    count: 10000,\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    getScrollElement: () => parentRef.current!,\n    estimateSize: () => 35,\n  });\n\n  return (\n    <>\n      {/* @ts-expect-error ref */}\n      <div ref={parentRef} style={{ height: `400px`, overflow: 'auto' }}>\n        <For\n          each={rowVirtualizer.getVirtualItems()}\n          style={{\n            height: `${rowVirtualizer.getTotalSize()}px`,\n            width: '100%',\n            position: 'relative',\n          }}\n          as=\"div\"\n        >\n          {(virtualItem) => (\n            <div\n              key={virtualItem.key}\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                fontSize: '20px',\n                height: `${virtualItem.size}px`,\n                transform: `translateY(${virtualItem.start}px)`,\n              }}\n            >\n              Row {virtualItem.index}\n            </div>\n          )}\n        </For>\n      </div>\n    </>\n  );\n};\n\nexport default TanstackVirtual;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/task-tracker.tsx",
    "content": "import { useState, useEffect } from 'react';\nimport { v4 as uuid4 } from 'uuid';\nimport {\n  DragDropContext,\n  Droppable,\n  Draggable,\n  OnDragEndResponder,\n} from '@hello-pangea/dnd';\nimport { block, For } from 'million/react';\n\ntype itemType = {\n  itemName: string;\n  uniqueId: string;\n};\n\ntype ListItem = {\n  title: string;\n  items: itemType[];\n};\n\ntype ListData = {\n  TODO: ListItem;\n  IN_PROGRESS: ListItem;\n  COMPLETED: ListItem;\n};\n\ntype editItemFuncType = (\n  section: string,\n  uId: string,\n  itemName: string,\n) => void;\ntype addItemFuncType = (section: string, itemName: string) => void;\ntype deleteItemFuncType = (section: string, uId: string) => void;\n\ntype ListDisplayProps = {\n  data: ListItem;\n  objKey: string;\n  addItem: addItemFuncType;\n  editItem: editItemFuncType;\n  deleteItem: deleteItemFuncType;\n};\n\ntype ListItemPropType = {\n  itemData: itemType;\n  editItem: editItemFuncType;\n  objKey: string;\n  deleteItem: deleteItemFuncType;\n  index: number;\n};\n\nconst PlusIcon = ({ size, color }: { size: string; color: string }) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      fill={color}\n      className=\"bi bi-plus-circle-fill\"\n      viewBox=\"0 0 16 16\"\n    >\n      <path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.5 4.5a.5.5 0 0 0-1 0v3h-3a.5.5 0 0 0 0 1h3v3a.5.5 0 0 0 1 0v-3h3a.5.5 0 0 0 0-1h-3v-3z\" />\n    </svg>\n  );\n};\n\nconst TickIcon = ({ size, color }: { size: string; color: string }) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      fill={color}\n      className=\"bi bi-check\"\n      viewBox=\"0 0 16 16\"\n    >\n      <path d=\"M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z\" />\n    </svg>\n  );\n};\n\nconst CancleIcon = ({ size, color }: { size: string; color: string }) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      fill={color}\n      className=\"bi bi-x\"\n      viewBox=\"0 0 16 16\"\n    >\n      <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\" />\n    </svg>\n  );\n};\n\nconst PenIcon = ({ size, color }: { size: string; color: string }) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      fill={color}\n      className=\"bi bi-pencil-fill\"\n      viewBox=\"0 0 16 16\"\n    >\n      <path d=\"M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z\" />\n    </svg>\n  );\n};\n\nconst TrashIcon = ({ size, color }: { size: string; color: string }) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={size}\n      height={size}\n      fill={color}\n      className=\"bi bi-trash-fill\"\n      viewBox=\"0 0 16 16\"\n    >\n      <path d=\"M2.5 1a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1H3v9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4h.5a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H10a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1H2.5zm3 4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 .5-.5zM8 5a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-1 0v-7A.5.5 0 0 1 8 5zm3 .5v7a.5.5 0 0 1-1 0v-7a.5.5 0 0 1 1 0z\" />\n    </svg>\n  );\n};\n\nfunction getSectionTitleColor(sectionType: string) {\n  if (sectionType === 'TODO') return '#ff0000';\n  if (sectionType === 'IN_PROGRESS') return '#fff000';\n  if (sectionType === 'COMPLETED') return '#00ff40';\n}\n\nconst ListItemBlock = block(function ({\n  itemData,\n  editItem,\n  objKey,\n  deleteItem,\n  index,\n}: ListItemPropType) {\n  const [isEditingItem, setIsEditingItem] = useState<boolean>(false);\n  const [item, setItem] = useState<itemType>(itemData);\n  function itemOnInputHandler(value: string) {\n    setItem({ ...item, itemName: value });\n  }\n  function addItemHandler() {\n    if (!item.itemName.trim()) return;\n    editItem(objKey, item.uniqueId, item.itemName);\n    setIsEditingItem(false);\n  }\n  function deleteItemHandler() {\n    deleteItem(objKey, item.uniqueId);\n  }\n  return (\n    <Draggable draggableId={item.uniqueId} index={index}>\n      {(provided) => (\n        <div\n          {...provided.draggableProps}\n          {...provided.dragHandleProps}\n          ref={provided.innerRef}\n        >\n          <div\n            style={{\n              marginTop: '0.8rem',\n            }}\n          >\n            <div\n              style={{\n                display: 'flex',\n                background: 'white',\n                borderRadius: '0.35rem',\n                color: 'black',\n                padding: '0.2rem 0.5rem',\n              }}\n            >\n              {isEditingItem ? (\n                <textarea\n                  style={{\n                    flex: 1,\n                    border: '3px solid #2a9df5',\n                    font: 'inherit',\n                  }}\n                  value={item.itemName}\n                  onChange={(e) => itemOnInputHandler(e.target.value)}\n                />\n              ) : (\n                <div\n                  style={{\n                    flex: 1,\n                    wordWrap: 'break-word',\n                    overflowWrap: 'break-word',\n                    overflow: 'hidden',\n                  }}\n                >\n                  {item.itemName}\n                </div>\n              )}\n              {isEditingItem ? (\n                <></>\n              ) : (\n                <>\n                  <span\n                    style={{ cursor: 'pointer', margin: 'auto 0.2rem' }}\n                    onClick={() => setIsEditingItem(true)}\n                  >\n                    <PenIcon color=\"gray\" size=\"16\" />\n                  </span>\n                  <span\n                    style={{ cursor: 'pointer' }}\n                    onClick={deleteItemHandler}\n                  >\n                    <TrashIcon size=\"16\" color=\"red\" />\n                  </span>\n                </>\n              )}\n            </div>\n            {isEditingItem ? (\n              <div style={{ display: 'flex', flexDirection: 'row-reverse' }}>\n                <span style={{ cursor: 'pointer' }} onClick={addItemHandler}>\n                  <TickIcon color=\"green\" size=\"25\" />\n                </span>\n              </div>\n            ) : (\n              <></>\n            )}\n          </div>\n        </div>\n      )}\n    </Draggable>\n  );\n});\n\nconst ListDisplayBlock = block(function ListDisplay({\n  data,\n  objKey,\n  addItem,\n  editItem,\n  deleteItem,\n}: ListDisplayProps) {\n  const [isAddingItem, setIsAddingItem] = useState<boolean>(false);\n  const [newItemValue, setNewItemValue] = useState<string>('');\n  function inputChangeHandler(value: string) {\n    setNewItemValue(value);\n  }\n  function addItemHandler() {\n    if (!newItemValue.trim()) return;\n    addItem(objKey, newItemValue);\n    setNewItemValue('');\n    setIsAddingItem(false);\n  }\n  function cancleAddItemHandler() {\n    setNewItemValue('');\n    setIsAddingItem(false);\n  }\n  function keyDownHandler(key: string) {\n    if (key === 'Enter') {\n      addItemHandler();\n    }\n  }\n  return (\n    <div\n      style={{\n        margin: '0.5rem 0.8rem',\n        flex: 1,\n        overflow: 'hidden',\n        borderRadius: '0.4rem',\n        padding: '0.5rem 0.5rem',\n        display: 'flex',\n        flexDirection: 'column',\n        background: 'black',\n      }}\n    >\n      <strong style={{ color: getSectionTitleColor(objKey) }}>\n        {data.title}\n      </strong>\n      <Droppable droppableId={objKey}>\n        {(provided) => (\n          <div {...provided.droppableProps} ref={provided.innerRef}>\n            {data.items.map((item, index) => {\n              return (\n                <ListItemBlock\n                  index={index}\n                  objKey={objKey}\n                  key={item.uniqueId}\n                  itemData={item}\n                  editItem={editItem}\n                  deleteItem={deleteItem}\n                />\n              );\n            })}\n            {provided.placeholder}\n          </div>\n        )}\n      </Droppable>\n      {isAddingItem ? (\n        <>\n          <input\n            value={newItemValue}\n            onKeyDown={(e) => keyDownHandler(e.key)}\n            onChange={(e) => inputChangeHandler(e.target.value)}\n            style={{\n              border: '3px solid #2a9df5',\n              background: 'white',\n              borderRadius: '0.35rem',\n              color: 'black',\n              padding: '0.5rem 0.5rem',\n              marginTop: '0.8rem',\n            }}\n          />\n          <div style={{ display: 'flex', flexDirection: 'row-reverse' }}>\n            <span style={{ cursor: 'pointer' }} onClick={cancleAddItemHandler}>\n              <CancleIcon color=\"red\" size=\"25\" />\n            </span>\n            <span style={{ cursor: 'pointer' }} onClick={addItemHandler}>\n              <TickIcon color=\"green\" size=\"25\" />\n            </span>\n          </div>\n        </>\n      ) : (\n        <></>\n      )}\n      <div style={{ textAlign: 'center', marginTop: '15px' }}>\n        <span\n          style={{ cursor: 'pointer' }}\n          onClick={() => setIsAddingItem(true)}\n        >\n          <PlusIcon color=\"white\" size=\"25\" />\n        </span>\n      </div>\n    </div>\n  );\n});\n\nconst TaskTrackerBlock = block(function TaskTracker() {\n  const [listData, setListData] = useState<ListData>({\n    TODO: {\n      title: 'To-Do',\n      items: [],\n    },\n    IN_PROGRESS: {\n      title: 'In Progress',\n      items: [],\n    },\n    COMPLETED: {\n      title: 'Completed',\n      items: [],\n    },\n  });\n\n  const screenWidthBreakpoint = 800;\n  function addItem(section: string, itemName: string) {\n    setListData((data) => {\n      const obj = { ...data };\n      obj[section as keyof ListData].items = [\n        ...obj[section as keyof ListData].items,\n        { itemName, uniqueId: uuid4() },\n      ];\n      return obj;\n    });\n  }\n  function editItem(section: string, uId: string, newItemName: string) {\n    setListData((data) => {\n      const obj = { ...data };\n      const selectedSection = obj[section as keyof ListData];\n      selectedSection.items = selectedSection.items.map((item) => {\n        if (item.uniqueId === uId) return { ...item, itemName: newItemName };\n        return item;\n      });\n      return obj;\n    });\n  }\n  function deleteItem(section: string, uId: string) {\n    setListData((data) => {\n      const obj = { ...data };\n      const selectedSection = obj[section as keyof ListData];\n      selectedSection.items = selectedSection.items.filter((item) => {\n        return item.uniqueId !== uId;\n      });\n      return obj;\n    });\n  }\n  const onDragEndHandler: OnDragEndResponder = (result) => {\n    if (!result.destination) return;\n    const { source, destination } = result;\n    setListData((data) => {\n      const state = { ...data };\n      const isSameList = source.droppableId === destination.droppableId;\n      const sourceList = state[source.droppableId as keyof ListData].items;\n      const [reorderedItem] = sourceList.splice(source.index, 1);\n      const destinationList = isSameList\n        ? sourceList\n        : state[destination.droppableId as keyof ListData].items;\n      destinationList.splice(destination.index, 0, reorderedItem);\n      return { ...state };\n    });\n  };\n  const [isMobile, setIsMobile] = useState(\n    window.innerWidth < screenWidthBreakpoint,\n  );\n  useEffect(() => {\n    const handleResize = () => {\n      setIsMobile(window.innerWidth < screenWidthBreakpoint);\n    };\n\n    window.addEventListener('resize', handleResize);\n\n    return () => {\n      window.removeEventListener('resize', handleResize);\n    };\n  }, []);\n  return (\n    <div\n      style={{ display: 'flex', flexDirection: isMobile ? 'column' : 'row' }}\n    >\n      <DragDropContext onDragEnd={onDragEndHandler}>\n        <For each={Object.keys(listData)}>\n          {(objKey, index) => {\n            return (\n              <ListDisplayBlock\n                addItem={addItem}\n                key={index}\n                data={listData[objKey as keyof ListData]}\n                objKey={objKey}\n                editItem={editItem}\n                deleteItem={deleteItem}\n              />\n            );\n          }}\n        </For>\n      </DragDropContext>\n    </div>\n  );\n});\n\nexport default TaskTrackerBlock;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/tic-tac-toe.jsx",
    "content": "import React from 'react';\nimport { block } from 'million/react';\n\nfunction Square({ onClick, value }) {\n  return (\n    <button\n      className=\"square\"\n      style={{\n        border: '1px solid #999',\n        float: 'left',\n        fontSize: '40px',\n        height: '80px',\n        marginRight: '-1px',\n        marginTop: '-1px',\n        padding: '0',\n        textAlign: 'center',\n        width: '80px',\n      }}\n      onClick={onClick}\n    >\n      {value}\n    </button>\n  );\n}\n\nconst Board = block(() => {\n  const [squares, setSquares] = React.useState(Array(9).fill(null));\n  const [isX, setIsX] = React.useState(true);\n\n  const handleClick = (i) => {\n    if (calculateWinner(squares) || squares[i]) {\n      return;\n    }\n\n    squares[i] = isX ? 'X' : 'O';\n    setSquares(squares);\n    setIsX(!isX);\n  };\n\n  const winner = calculateWinner(squares);\n  let status;\n  if (winner == 'D') {\n    status = 'Draw!!';\n  } else if (winner) {\n    status = `Winner: ${winner}`;\n  } else {\n    status = 'Next player: ' + (isX ? 'X' : 'O');\n  }\n\n  const handleRestart = () => {\n    setIsX(true);\n    setSquares(Array(9).fill(null));\n  };\n\n  const renderSquare = (i) => {\n    return <Square value={squares[i]} onClick={() => handleClick(i)} />;\n  };\n\n  return (\n    <div\n      className=\"board\"\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        gap: '6px',\n      }}\n    >\n      <div\n        className=\"board-row\"\n        style={{\n          display: 'flex',\n          gap: '6px',\n        }}\n      >\n        {renderSquare(0)}\n        {renderSquare(1)}\n        {renderSquare(2)}\n      </div>\n      <div\n        className=\"board-row\"\n        style={{\n          display: 'flex',\n          gap: '6px',\n        }}\n      >\n        {renderSquare(3)}\n        {renderSquare(4)}\n        {renderSquare(5)}\n      </div>\n      <div\n        className=\"board-row\"\n        style={{\n          display: 'flex',\n          gap: '6px',\n        }}\n      >\n        {renderSquare(6)}\n        {renderSquare(7)}\n        {renderSquare(8)}\n      </div>\n      <div className=\"status\">{status}</div>\n      <button\n        className=\"restart\"\n        style={{\n          width: '30%',\n          padding: '10px 15px',\n          color: '#fff',\n          backgroundColor: '#007bff',\n          borderColor: '#007bff',\n          borderRadius: '0.25rem',\n          transition:\n            'color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out',\n        }}\n        onClick={handleRestart}\n      >\n        Restart Game!\n      </button>\n    </div>\n  );\n});\n\nfunction calculateWinner(squares) {\n  const winningPatterns = [\n    [0, 4, 8],\n    [3, 4, 5],\n    [0, 3, 6],\n    [2, 4, 6],\n    [1, 4, 7],\n    [2, 5, 8],\n    [6, 7, 8],\n    [0, 1, 2],\n  ];\n\n  for (let i = 0; i < winningPatterns.length; i++) {\n    const [a, b, c] = winningPatterns[i];\n    if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {\n      return squares[a];\n    }\n  }\n  let c = 0;\n  for (let i = 0; i < 9; i++) {\n    if (squares[i]) {\n      c++;\n    }\n  }\n  if (c == 9) {\n    return 'D';\n  }\n  return null;\n}\n\nexport const TicTacToe = () => {\n  return (\n    <div>\n      <Board />\n    </div>\n  );\n};\n\nexport default TicTacToe;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/todolist.tsx",
    "content": "import { useState } from 'react';\nimport { block, For } from 'million/react';\n\nconst TodoList = () => {\n  const [tasks, setTasks] = useState<Object[]>([]);\n  const [taskInput, setTaskInput] = useState<string>('');\n  const [taskIdCounter, setTaskIdCounter] = useState<number>(0);\n\n  const addTask = () => {\n    if (taskInput.trim() === '') return;\n    setTasks([\n      ...tasks,\n      { id: taskIdCounter, text: taskInput, completed: false },\n    ]);\n    setTaskInput('');\n    setTaskIdCounter(taskIdCounter + 1);\n  };\n\n  return (\n    <div>\n      <h1>Todo List</h1>\n      <form onSubmit={(event) => event.preventDefault()}>\n        <input\n          type=\"text\"\n          placeholder=\"Add a task\"\n          style={{ width: '40%' }}\n          value={taskInput}\n          onChange={(e) => setTaskInput(e.target.value)}\n        />\n        <button\n          style={{ marginLeft: 10, padding: '10px 20px 10px 20px' }}\n          onClick={addTask}\n        >\n          Add\n        </button>\n      </form>\n      <List tasks={tasks} setTasks={setTasks} />\n    </div>\n  );\n};\n\n//* <For /> for iterating over the list & block() for optimizing\nconst List = block(({ tasks, setTasks }: { tasks: any[]; setTasks: any }) => {\n  const toggleTaskCompletion = (index: number) => {\n    setTasks(\n      tasks.map((task) =>\n        task.id === index ? { ...task, completed: !task.completed } : task,\n      ),\n    );\n  };\n\n  const removeTask = (index: number) => {\n    const updatedTasks = tasks.filter((task) => task.id !== index);\n    setTasks(updatedTasks);\n  };\n\n  return (\n    <ul>\n      <For each={tasks}>\n        {(task) => (\n          <li\n            key={task.id}\n            style={{\n              margin: '15px 0 15px 0',\n              justifyContent: 'center',\n            }}\n          >\n            <span\n              style={{\n                fontSize: '1.25em',\n                textDecoration: task.completed ? 'line-through' : 'none',\n              }}\n            >\n              {task.text}\n            </span>\n            <input\n              type=\"checkbox\"\n              checked={task.completed}\n              style={{ width: '20px', height: '20px', marginLeft: 10 }}\n              onChange={() => toggleTaskCompletion(task.id)}\n            />\n            <button\n              style={{ marginLeft: 10, padding: '7px 15px 7px 15px' }}\n              onClick={() => removeTask(task.id)}\n            >\n              Remove\n            </button>\n          </li>\n        )}\n      </For>\n    </ul>\n  );\n});\n\nexport default TodoList;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/type-race.jsx",
    "content": "import { useState, useEffect } from 'react';\nimport { block, For } from 'million/react';\n\nconst getWPM = (charCount, time) => (12000 * charCount) / time;\nconst endgameMsg = (wpm) => {\n  if (wpm == 0) {\n    return 'is your keyboard broken? 😭';\n  } else if (wpm <= 20) {\n    return 'a bit too slow... 😢';\n  } else if (wpm <= 40) {\n    return 'keep trying! 💪';\n  } else if (wpm <= 60) {\n    return 'nice! 🤩';\n  } else if (wpm <= 80) {\n    return 'amazing! 🔥';\n  } else if (wpm <= 100) {\n    return \"you're insane! 😱\";\n  } else {\n    return 'are you even human?! 😱';\n  }\n};\n\nasync function getSentence() {\n  const response = await fetch(\n    `https://api.quotable.io/quotes/random?minLength=30&maxLength=60`,\n  );\n  return response.json();\n}\n\nconst StcBlock = block(function Sentence({ text, time }) {\n  return (\n    <div>\n      <span className=\"type-mono\">{text}</span>{' '}\n      <i>{`(${Number(time / 1000).toFixed(2)} seconds)`}</i>\n    </div>\n  );\n});\n\nfunction HealthBar({ status, time, score, currentStc, stopGame }) {\n  const [health, setHealth] = useState(1);\n\n  useEffect(() => {\n    if (status == 2) {\n      setHealth(\n        (h) =>\n          h -\n          (0.0004 * (120 - 0.04 * (score < 50 ? 50 - score : 0) ** 2)) /\n            currentStc.length,\n      );\n      if (health <= 0) {\n        stopGame();\n      }\n    }\n  }, [time]);\n\n  useEffect(() => {\n    if (status == 2) {\n      setHealth((h) => (h > 0.75 ? 1 : h + 0.25));\n    }\n  }, [score]);\n\n  useEffect(() => setHealth(1), [status]);\n\n  return (\n    <div className=\"type-health-bar\" hidden={status == 0}>\n      <div className=\"type-health\" style={{ width: `${health * 100}%` }}></div>\n    </div>\n  );\n}\n\nconst TextBlock = block(({ text, className }) => (\n  <div className={className}>{text}</div>\n));\n\n\nfunction TypingArea({\n  currentStc,\n  nextStc,\n  status,\n  onSentenceCompleted,\n}) {\n  const [displayedText, setDisplayedText] = useState([\n    { text: 'Test your typing skills!', className: 'type-none' },\n  ]);\n\n  useEffect(() => {\n    if (status == 1) {\n      setDisplayedText([{ text: currentStc, className: 'type-gray' }]);\n    } else if (status == 2) {\n      setDisplayedText([{ text: currentStc, className: 'type-none' }]);\n    }\n  }, [currentStc]);\n\n  useEffect(() => {\n    if (status == 0) {\n      setDisplayedText([\n        { text: 'Test your typing skills!', className: 'type-none' },\n      ]);\n    } else if (status == 1) {\n      setDisplayedText([{ text: 'Loading...', className: 'type-gray' }]);\n    } else if (status == 2) {\n      setDisplayedText([{ text: currentStc, className: 'type-none' }]);\n    }\n  }, [status]);\n\n  function handleChange(e) {\n    const inputText = e.target.value;\n    if (status != 2) {\n      e.target.value = '';\n      return null;\n    }\n    let newDisplayedText = [];\n    const inputLen = inputText.length;\n    if (currentStc == inputText) {\n      setDisplayedText([nextStc]);\n      onSentenceCompleted();\n      e.target.value = '';\n    } else if (currentStc.length >= inputLen) {\n      for (let i = 0; i < inputLen; i++) {\n        const char = currentStc[i];\n        newDisplayedText.push({\n          text: char,\n          className: char == inputText[i] ? 'type-green' : 'type-red',\n        });\n      }\n      newDisplayedText.push({\n        text: currentStc.substring(inputLen),\n        className: 'type-none',\n      });\n      setDisplayedText(newDisplayedText);\n    }\n  }\n\n  return (\n    <div>\n      <h2 className=\"type-mono\">\n        <For each={displayedText}>\n          {({ text, className }) => (\n            <TextBlock text={text} className={className} />\n          )}\n        </For>\n      </h2>\n      <input\n        type=\"text\"\n        placeholder=\"Start typing here...\"\n        style={{ width: '90%' }}\n        onChange={(e) => handleChange(e)}\n        hidden={status == 0}\n      />\n    </div>\n  );\n}\n\nconst StcLogsArea = ({ stcLogs }) => {\n  return (\n    <div>\n      <For each={stcLogs}>\n        {({ text, time }) => <StcBlock text={text} time={time} />}\n      </For>\n    </div>\n  );\n};\n\nconst TypeRace = () => {\n  const [currentStc, setCurrentStc] = useState('');\n  const [nextStc, setNextStc] = useState('');\n  const [subtitle, setSubtitle] = useState('');\n  const [status, setStatus] = useState(0);\n  const [time, setTime] = useState(0);\n  const [intervalId, setIntervalId] = useState();\n  const [timeLap, setTimeLap] = useState(0);\n  const [stcLogs, setStcLogs] = useState([]);\n  const [totalChar, setTotalChar] = useState(0);\n\n  const score = stcLogs.length;\n\n  function playGame() {\n    setTime(0);\n    setStcLogs([]);\n    setTimeLap(0);\n    setTotalChar(0);\n\n    setStatus(1);\n    getSentence().then((data) => setCurrentStc(data[0].content));\n    getSentence().then((data) => setNextStc(data[0].content));\n\n    setSubtitle('Get ready...');\n    setTimeout(() => setSubtitle('3...'), 1000);\n    setTimeout(() => setSubtitle('2...'), 2000);\n    setTimeout(() => setSubtitle('1...'), 3000);\n    setTimeout(() => {\n      setSubtitle('TYPE!');\n      setStatus(2);\n      const id = setInterval(() => setTime((t) => t + 10), 10);\n      setIntervalId(id);\n    }, 4000);\n  }\n\n  function onSentenceCompleted() {\n    setTotalChar(totalChar + currentStc.length);\n    pushStcLog({\n      text: currentStc,\n      time: time - timeLap,\n    });\n    setTimeLap(time);\n    setSubtitle(`Score: ${score + 1}`);\n    setCurrentStc(nextStc);\n    getSentence().then((data) => setNextStc(data[0].content));\n  }\n\n  function pushStcLog(log) {\n    const newStcLogs = [log, ...stcLogs.slice()];\n    setStcLogs(newStcLogs);\n  }\n\n  function stopGame() {\n    clearInterval(intervalId);\n    setStatus(0);\n    const wpm = getWPM(totalChar, time);\n    setSubtitle(`Your speed was ${wpm.toFixed()} wpm, ${endgameMsg(wpm)}`);\n  }\n\n  return (\n    <div>\n      <center>\n        <h2>Type Race</h2>\n        <h4>{subtitle}</h4>\n        <button hidden={status != 0} onClick={playGame}>\n          Play\n        </button>\n      </center>\n      <HealthBar\n        status={status}\n        time={time}\n        score={score}\n        currentStc={currentStc}\n        stopGame={stopGame}\n      />\n      <TypingArea\n        currentStc={currentStc}\n        nextStc={nextStc}\n        status={status}\n        onSentenceCompleted={onSentenceCompleted}\n      />\n      <hr />\n      <StcLogsArea stcLogs={stcLogs} />\n    </div>\n  );\n};\n\nexport default TypeRace;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/valtio-counter.tsx",
    "content": "import { proxy, useSnapshot } from 'valtio';\nimport { block } from 'million/react';\n\nconst state = proxy({ count: 0 });\n\nconst Counter = block(() => {\n  const snap = useSnapshot(state);\n  return <button onClick={() => ++state.count}>{snap.count}</button>;\n});\n\nexport default Counter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/virtual-whiteboard.tsx",
    "content": "import React, { useRef, useEffect, useState } from 'react';\n\nconst VirtualBoard: React.FC = () => {\n  // Enum responsible for defining modes\n  enum Mode {\n    Draw = 'draw',\n    Text = 'text',\n    Line = 'line',\n    Erase = 'erase',\n    Clear = 'clear',\n  }\n\n  type CoordinateType = Array<{\n    points: { x: number; y: number }[];\n    color: string;\n  }>;\n\n  const [coordinates, setCoordinates] = useState<\n    Array<{ points: { x: number; y: number }[]; color: string }>\n  >([]);\n\n  // Maintains the current lines state with x, y coordinates\n  const [currentLine, setCurrentLine] = useState<{ x: number; y: number }[]>(\n    [],\n  );\n  const [isDrawing, setIsDrawing] = useState(false); // New state to track drawing mode\n  const [mode, setMode] = useState<Mode | null>(Mode.Draw);\n  const [color, setColor] = useState<string>('#000000');\n  // Responsible for controlling position and visibility of the text input field\n  const [textInput, setTextInput] = useState<{\n    x: number;\n    y: number;\n    show: boolean;\n  }>({ x: 0, y: 0, show: false });\n  // Manages the users text input\n  const [inputText, setInputText] = useState<string>('');\n  const [textElements, setTextElements] = useState<\n    Array<{ x: number; y: number; text: string }>\n  >([]);\n\n  // Sets state for the start point of a line\n  const [startPoint, setStartPoint] = useState<{ x: number; y: number } | null>(\n    null,\n  );\n  const [mousePosition, setMousePosition] = useState<{\n    x: number;\n    y: number;\n  } | null>(null);\n  const [showEraserPreview, setShowEraserPreview] = useState(false);\n  const [undoStack, setUndoStack] = useState<CoordinateType[]>([]);\n  const [redoStack, setRedoStack] = useState<CoordinateType[]>([]);\n\n  const isChrome = /Chrome/.test(navigator.userAgent);\n  const isFirefox = /Firefox/.test(navigator.userAgent);\n\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const textInputRef = useRef<HTMLInputElement>(null);\n\n  const handleChange = () => {\n    setUndoStack([...undoStack, coordinates]);\n    setRedoStack([]);\n  };\n\n  const handleUndo = () => {\n    if (undoStack.length > 0) {\n      const newUndoStack = [...undoStack];\n      const lastState = newUndoStack.pop();\n\n      const newRedoStack = [...redoStack, coordinates];\n\n      setCoordinates(lastState || []);\n      setUndoStack(newUndoStack);\n      setRedoStack(newRedoStack);\n    }\n  };\n\n  const handleRedo = () => {\n    if (redoStack.length > 0) {\n      const newRedoStack = [...redoStack];\n      const nextState = newRedoStack.pop();\n\n      const newUndoStack = [...undoStack, coordinates];\n\n      setCoordinates(nextState || []);\n      setUndoStack(newUndoStack);\n      setRedoStack(newRedoStack);\n    }\n  };\n\n  const handleModeChange = (newMode: Mode) => {\n    setMode(newMode);\n  };\n\n  const handleClear = () => {\n    setCoordinates([]);\n    setTextElements([]);\n  };\n\n  const handleColorChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    setColor(e.target.value);\n  };\n\n  const handleMouseDown = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode === 'line') {\n      const rect = e.currentTarget.getBoundingClientRect();\n      const x = e.clientX - rect.left;\n      const y = e.clientY - rect.top;\n\n      if (!startPoint) {\n        setStartPoint({ x, y });\n        setIsDrawing(true);\n      } else {\n        setCoordinates([\n          ...coordinates,\n          { points: [startPoint, { x, y }], color },\n        ]);\n\n        setStartPoint(null); // Reset the starting point immediately\n        setIsDrawing(false); // Stop drawing the preview line\n      }\n    } else {\n      setIsDrawing(true);\n    }\n    setCurrentLine([]);\n  };\n\n  const handleMouseUp = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    const newLine = { points: currentLine, color: color };\n    const newCoordinates = [...coordinates, newLine];\n    if (mode !== 'line') {\n      setIsDrawing(false);\n      setCoordinates(newCoordinates);\n      setCurrentLine([]);\n      handleChange();\n    }\n  };\n\n  const handleMouseMove = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode === 'line' && startPoint) {\n      const rect = e.currentTarget.getBoundingClientRect();\n      const x = e.clientX - rect.left;\n      const y = e.clientY - rect.top;\n      setCurrentLine([{ x, y }]);\n    }\n  };\n\n  const mouseMoveHandler = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode === 'draw') {\n      handleDraw(e);\n    }\n    if (mode === 'erase') {\n      handleErase(e);\n      handleEraserPreview(e);\n    }\n    if (mode === 'line') {\n      handleMouseMove(e);\n    }\n  };\n\n  const handleEraserPreview = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    const rect = e.currentTarget.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    setMousePosition({ x, y });\n  };\n\n  const handleText = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode === 'erase') {\n      setMode(null);\n      return;\n    }\n    if (mode !== 'text') return; // Only add text when the mode is 'text'\n\n    const rect = e.currentTarget.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    const canvas = e.currentTarget;\n    const ctx = canvas.getContext('2d');\n\n    setTextInput({ x, y, show: true });\n  };\n\n  const handleAddTextToCanvas = () => {\n    setTextElements([\n      ...textElements,\n      { x: textInput.x, y: textInput.y, text: inputText },\n    ]);\n    setTextInput({ ...textInput, show: false });\n    setInputText(''); // Clear the input text\n  };\n\n  const generatePointsAlongLine = (\n    start: { x: number; y: number },\n    end: { x: number; y: number },\n    numPoints: number,\n  ) => {\n    const points = [];\n    for (let i = 0; i <= numPoints; i++) {\n      const t = i / numPoints;\n      const x = start.x + t * (end.x - start.x);\n      const y = start.y + t * (end.y - start.y);\n      points.push({ x, y });\n    }\n    return points;\n  };\n\n  const handleErase = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode !== 'erase') return;\n    setShowEraserPreview(true);\n\n    const distance = (x1: number, y1: number, x2: number, y2: number) =>\n      Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n\n    const rect = e.currentTarget.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n\n    const newCoordinates = coordinates\n      .map((lineData) => {\n        let closestPoint = null;\n        let closestDistance = Infinity;\n        let closestIndex = -1;\n\n        lineData.points.forEach((point, index) => {\n          const d = distance(x, y, point.x, point.y);\n          if (d < closestDistance) {\n            closestDistance = d;\n            closestPoint = point;\n            closestIndex = index;\n          }\n        });\n\n        if (closestDistance < 20) {\n          // Sets eraser size\n          const firstHalf = lineData.points.slice(0, closestIndex);\n          const secondHalf = lineData.points.slice(closestIndex + 1);\n          return [\n            { points: firstHalf, color: lineData.color },\n            { points: secondHalf, color: lineData.color },\n          ];\n        }\n\n        return [lineData];\n      })\n      .flat()\n      .filter((lineData) => lineData.points.length > 0); // Remove empty lines\n\n    setCoordinates(newCoordinates);\n  };\n\n  useEffect(() => {\n    if (textInput.show && textInputRef.current) {\n      textInputRef.current.focus();\n    }\n  }, [textInput.show]);\n  const handleDraw = (e: React.MouseEvent<HTMLCanvasElement>) => {\n    if (mode !== 'draw' || !isDrawing) return; // Only draw when isDrawing is true\n\n    const rect = e.currentTarget.getBoundingClientRect();\n    const x = e.clientX - rect.left;\n    const y = e.clientY - rect.top;\n    setCurrentLine([...currentLine, { x, y }]);\n  };\n\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (!canvas) return;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) return;\n\n    // Set the color here\n    ctx.strokeStyle = color;\n    // Clear the canvas\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n    // Draw the lines from the coordinates state\n    coordinates.forEach((lineData) => {\n      ctx.strokeStyle = lineData.color;\n      ctx.beginPath();\n      lineData.points.forEach((point, i) => {\n        if (i === 0) {\n          ctx.moveTo(point.x, point.y);\n        } else {\n          ctx.lineTo(point.x, point.y);\n        }\n      });\n      ctx.stroke();\n      ctx.closePath();\n    });\n\n    // Draw text elements\n    textElements.forEach((textElement) => {\n      ctx.fillStyle = color;\n      ctx.font = '20px sans-serif';\n      ctx.fillText(textElement.text, textElement.x, textElement.y);\n    });\n\n    // Draw the current line\n    ctx.strokeStyle = color;\n    ctx.beginPath();\n    currentLine.forEach((point, i) => {\n      if (i === 0) {\n        ctx.moveTo(point.x, point.y);\n      } else {\n        ctx.lineTo(point.x, point.y);\n      }\n    });\n    ctx.stroke();\n    ctx.closePath();\n\n    // Draw the start point for line mode\n    if (startPoint && mode === 'line') {\n      ctx.fillStyle = 'black';\n      ctx.fillRect(startPoint.x - 2, startPoint.y - 2, 4, 4);\n    }\n\n    // Draw the preview line for line mode\n    if (isDrawing && startPoint && mode === 'line') {\n      ctx.beginPath();\n      ctx.moveTo(startPoint.x, startPoint.y);\n      ctx.lineTo(\n        currentLine[0]?.x || startPoint.x,\n        currentLine[0]?.y || startPoint.y,\n      );\n      ctx.stroke();\n      ctx.closePath();\n    }\n    // Draw eraser preview if mode is 'erase'\n    if (mode === 'erase' && mousePosition && showEraserPreview) {\n      ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; // semi-transparent black\n      ctx.beginPath();\n      ctx.arc(\n        mousePosition.x,\n        mousePosition.y,\n        20 /* radius */,\n        0,\n        Math.PI * 2,\n      );\n      ctx.fill();\n    }\n  }, [\n    coordinates,\n    textElements,\n    currentLine,\n    mode,\n    startPoint,\n    isDrawing,\n    color,\n    mousePosition,\n    showEraserPreview,\n  ]);\n  useEffect(() => {\n    const onClickOutsideCanvas = (e: MouseEvent) => {\n      const canvas = canvasRef.current;\n      if (canvas && !canvas.contains(e.target as Node)) {\n        setShowEraserPreview(false);\n      }\n    };\n\n    document.addEventListener('click', onClickOutsideCanvas);\n\n    return () => {\n      document.removeEventListener('click', onClickOutsideCanvas);\n    };\n  }, []);\n\n  return (\n    <>\n      <div className=\"toolBar\" style={{ marginBottom: '10px' }}>\n        <input\n          type=\"color\"\n          value={color}\n          style={{\n            padding: isChrome ? '0' : isFirefox ? '2px' : undefined,\n            width: isChrome ? '50px' : isFirefox ? '50px' : undefined,\n            height: isChrome ? '33px' : isFirefox ? '30px' : undefined,\n          }}\n          onChange={handleColorChange}\n        />\n        <button onClick={() => handleModeChange(Mode.Draw)}> Draw </button>\n        <button onClick={() => handleModeChange(Mode.Text)}> Text </button>\n        <button onClick={() => handleModeChange(Mode.Line)}> Line </button>\n        <button onClick={() => handleModeChange(Mode.Erase)}> Erase </button>\n        <button onClick={handleClear}> Clear </button>\n\n        <button onClick={handleUndo}>Undo</button>\n        <button onClick={handleRedo}>Redo</button>\n      </div>\n      <div className=\"canvas\" style={{ position: 'relative' }}>\n        <canvas\n          ref={canvasRef}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n          onMouseMove={mouseMoveHandler}\n          onClick={handleText}\n          width={800}\n          height={600}\n          style={{\n            border: '2px solid black',\n            cursor: mode === 'draw' ? 'crosshair' : 'default',\n          }}\n        />\n        <div className=\"textInputFunctionality\">\n          {textInput.show && (\n            <input\n              type=\"text\"\n              ref={textInputRef}\n              style={{\n                position: 'absolute',\n                left: `${textInput.x}px`,\n                top: `${textInput.y}px`,\n                cursor: 'text',\n              }}\n              value={inputText}\n              onChange={(e) => setInputText(e.target.value)}\n              onBlur={handleAddTextToCanvas}\n              onKeyDown={(e) => {\n                if (e.key === 'Enter') {\n                  handleAddTextToCanvas();\n                  e.preventDefault(); // Prevents the default action of a newline\n                }\n              }}\n              autoFocus\n            />\n          )}\n        </div>\n      </div>\n    </>\n  );\n};\n\nexport default VirtualBoard;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/weather-app.tsx",
    "content": "import styled from 'styled-components';\nimport { useState } from 'react';\nimport React from 'react';\nimport { block } from 'million/react';\n\nconst Condition = styled.span`\n  margin: 20px auto;\n  text-transform: capitalize;\n  font-size: 14px;\n  & span {\n    font-size: 28px;\n  }\n`;\n\nconst SearchBox = styled.form`\n  display: flex;\n  flex-direction: row;\n  justify-content: space-evenly;\n  margin: 20px;\n  border: black solid 1px;\n  border-radius: 2px;\n\n  & input {\n    padding: 10px;\n    font-size: 14px;\n    border: none;\n    outline: none;\n    font-family: Montserrat;\n    font-weight: bold;\n  }\n  & button {\n    background-color: blue;\n    font-size: 14px;\n    padding: 0 10px;\n    color: white;\n    border: none;\n    outline: none;\n    cursor: pointer;\n    font-family: Montserrat;\n    font-weight: bold;\n  }\n`;\nconst ChooseCityLabel = styled.span`\n  color: white;\n  margin: 10px auto;\n  font-size: 18px;\n  font-weight: bold;\n`;\nconst WelcomeWeatherLogo = styled.img`\n  width: 140px;\n  height: 140px;\n  margin: 40px auto;\n`;\n\ntype Weather = {\n  city: string;\n  weatherDesc: string | undefined;\n  temp: any;\n};\n\nconst WeatherComponent = block(({ city, weatherDesc, temp }: Weather) => {\n  return (\n    <div>\n      <Condition>\n        <span>\n          {typeof temp === 'number' ? (\n            <Condition>\n              <span>{`${Math.floor(temp - 273)}°C`}</span>\n            </Condition>\n          ) : (\n            <h1>NOT DEFINED</h1>\n          )}\n        </span>\n        {`  |  ${weatherDesc}`}\n      </Condition>\n      <h3 style={{ textAlign: 'center' }}>{city.toUpperCase()}</h3>\n    </div>\n  );\n});\n\nexport default function Weather() {\n  const [city, updatecity] = useState<string | null>(null);\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    updatecity(event.target.value);\n  };\n  const [weather, updateWeather] = useState();\n  const [temp, updatetemp] = useState();\n  const [weatherDesc, updateWeatherDesc] = useState();\n  const fetchWeather = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    const response = await fetch(\n      `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=fe4feefa8543e06d4f3c66d92c61b69c`,\n    );\n    const data = await response.json();\n    updateWeather(data.weather[0].main);\n    updateWeatherDesc(data.weather[0].description);\n    updatetemp(data.main.temp);\n  };\n  return (\n    <div\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        width: '380px',\n        padding: '20px 10px',\n        margin: 'auto',\n        borderRadius: '4px',\n        background: '#252525',\n        fontFamily: 'Montserrat',\n        color: 'white',\n      }}\n    >\n      <span\n        style={{\n          color: 'white',\n          margin: '20px auto',\n          fontSize: '18px',\n          fontWeight: 'bold',\n        }}\n      >\n        Weather App\n      </span>\n      {city && weather ? (\n        <>\n          <WeatherComponent city={city} weatherDesc={weatherDesc} temp={temp} />\n        </>\n      ) : (\n        <>\n          <WelcomeWeatherLogo\n            src={\n              'https://ayushkul.github.io/react-weather-app/icons/perfect-day.svg'\n            }\n          />\n          <ChooseCityLabel>Find Weather of your city</ChooseCityLabel>\n          <SearchBox\n            onSubmit={async (e) => {\n              e.preventDefault();\n              await fetchWeather(e);\n            }}\n          >\n            <input onChange={handleChange} placeholder=\"City\" />\n            <button type={'submit'}>Search</button>\n          </SearchBox>\n        </>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/wouter.tsx",
    "content": "import { Link, Route } from 'wouter';\nimport { block } from 'million/react';\n\nconst Wouter = block(() => (\n  <div>\n    <Link href=\"/users/1\">\n      <a className=\"link\">Profile</a>\n    </Link>\n    &nbsp;\n    <Link href=\"/about\">About</Link>&nbsp;\n    <Link href=\"/inbox\">Inbox</Link>\n    <Route path=\"/about\">\n      <h1>About Us</h1>\n    </Route>\n    <Route path=\"/users/:name\">\n      {(params) => <div>Hello, {params.name}!</div>}\n    </Route>\n    <Route path=\"/inbox\" component={InboxPage} />\n  </div>\n));\n\nconst InboxPage = block(() => <h1>Inbox</h1>);\n\nexport default Wouter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/examples/zustand-counter.tsx",
    "content": "import { create } from 'zustand';\nimport { block } from 'million/react';\n\nconst useStore = create<{\n  count: number;\n  inc: () => void;\n}>((set) => ({\n  count: 0,\n  inc: () => set((state) => ({ count: state.count + 1 })),\n}));\n\nconst Counter = block(() => {\n  const { count, inc } = useStore();\n  return <button onClick={inc}>{count}</button>;\n});\n\nexport default Counter;\n"
  },
  {
    "path": "packages/kitchen-sink/src/main.tsx",
    "content": "import {\n  useState,\n  type ComponentType,\n  lazy,\n  Suspense,\n  LazyExoticComponent,\n  useEffect,\n} from 'react';\nimport './css/style.css';\nimport './css/examples/style.css';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { RxHamburgerMenu } from 'react-icons/rx';\nimport { AiOutlineClose } from 'react-icons/ai';\nimport { createRoot } from 'react-dom/client';\n\ntype Module = { default: ComponentType<any> };\n\n(async () => {\n  const modules = await Promise.all(\n    Object.entries(import.meta.glob('./examples/*.{tsx,jsx}')).map(\n      async ([key, mod]) =>\n        [\n          key\n            .replace('./examples/', '')\n            .replace('.tsx', '')\n            .replace('.jsx', ''),\n          mod as () => Promise<Module>,\n        ] as const,\n    ),\n  );\n  const loadedModules: LazyExoticComponent<ComponentType<any>>[] = [];\n\n  function App() {\n    const [selected, setSelected] = useState<number>(() => {\n      const index = +window.location.pathname.split('/')[1] ?? -1;\n\n      loadedModules[index] = lazy(() => modules[index]![1]());\n      return index;\n    });\n\n    const [sidebarOpened, setSidebarOpened] = useState(false);\n\n    const [isMobile, setIsMobile] = useState(true);\n\n    const [screen, setScreen] = useState<number | null>(null);\n\n    // Setting the Screen Size State whenever the screen is resized\n    useEffect(() => {\n      const handleResize = () => setScreen(window.innerWidth);\n      window.addEventListener('resize', handleResize);\n      handleResize();\n      return () => window.removeEventListener('resize', handleResize);\n    }, []);\n\n    // Toggling the isMobile State whenever the screensize changes\n    useEffect(() => {\n      if (screen! <= 768) {\n        setIsMobile(true);\n        setSidebarOpened(false);\n      } else {\n        setIsMobile(false);\n        setSidebarOpened(true);\n      }\n    }, [screen]);\n\n    const hasSelected = selected >= 0;\n\n    const Mod = hasSelected ? loadedModules[selected]! : null;\n\n    return (\n      <div>\n        {isMobile && (\n          <button\n            className=\"kitchen_sink-layout-icon\"\n            onClick={() => setSidebarOpened(true)}\n          >\n            <RxHamburgerMenu />\n          </button>\n        )}\n        <h1>Million.js Kitchen Sink</h1>\n        <p>\n          Hey! We're actively recruiting cooks 🧑‍🍳 to help assemble a list of\n          examples of Million + your favorite React library. Go to{' '}\n          <a href=\"https://million.dev/kitchen-sink\">\n            million.dev/kitchen-sink\n          </a>{' '}\n          for details.\n        </p>\n\n        <div className=\"kitchen_sink-layout\">\n          <div\n            className={`kitchen_sink-sidebar ${\n              sidebarOpened\n                ? 'kitchen_sink-sidebar_open'\n                : 'kitchen_sink-sidebar_close'\n            }`}\n          >\n            <div className=\"kitchen_sink-sidebar_container\">\n              {isMobile && (\n                <button\n                  className=\"kitchen_sink-layout-icon\"\n                  onClick={() => setSidebarOpened(false)}\n                >\n                  <AiOutlineClose />\n                </button>\n              )}\n              {modules.map(([key], index) => {\n                return (\n                  <button\n                    onClick={async () => {\n                      isMobile && setSidebarOpened(false);\n                      setSelected(index);\n                      window.history.pushState(undefined, '', '/' + index);\n                      loadedModules[index] = lazy(() => modules[index]![1]());\n                    }}\n                    key={key}\n                    disabled={hasSelected && selected === index}\n                  >\n                    {key\n                      .replace('./examples/', '')\n                      .replace('.tsx', '')\n                      .replace('.jsx', '')}\n                  </button>\n                );\n              })}{' '}\n            </div>\n          </div>\n          <div className=\"kitchen_sink-content\">\n            <div className=\"kitchen_sink-content_container\">\n              <details open={hasSelected}>\n                <summary>\n                  Currently Selected:{' '}\n                  <strong>\n                    {hasSelected ? modules[selected]![0] : 'None'}\n                  </strong>\n                </summary>\n                <div style={{ padding: '1rem' }}>\n                  <ErrorBoundary\n                    fallbackRender={({ error }) => (\n                      <div\n                        style={{\n                          color: '#ff8080',\n                          background: '#290000',\n                          padding: '1rem',\n                          borderRadius: '1rem',\n                        }}\n                      >\n                        <h2>💥 {error.message}</h2>\n                        <pre>{error.stack}</pre>\n                      </div>\n                    )}\n                  >\n                    {hasSelected && Mod && (\n                      <Suspense\n                        fallback={\n                          <div\n                            style={{\n                              opacity: 0.5,\n                            }}\n                          >\n                            <p className=\"spinner\"></p>\n                            Loading module...\n                          </div>\n                        }\n                      >\n                        <Mod />\n                      </Suspense>\n                    )}\n                  </ErrorBoundary>\n                </div>\n              </details>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  createRoot(document.getElementById('root')!).render(<App />);\n})();\n"
  },
  {
    "path": "packages/kitchen-sink/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/kitchen-sink/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\n    \"module\": \"ESNext\",\n    \"skipLibCheck\": true,\n\n    /* Bundler mode */\n    \"moduleResolution\": \"bundler\",\n    \"allowImportingTsExtensions\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\",\n\n    /* Linting */\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"noFallthroughCasesInSwitch\": true,\n\n    \"paths\": {\n      \"million/react\": [\"../react\"],\n      \"million/experimental\": [\"../experimental\"],\n      \"million/react-server\": [\"../react-server\"]\n    }\n  },\n  \"include\": [\"src\", \"node_modules/@types\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "packages/kitchen-sink/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"skipLibCheck\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"bundler\",\n    \"allowSyntheticDefaultImports\": true\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/kitchen-sink/vite.config.ts",
    "content": "import react from '@vitejs/plugin-react';\nimport path from 'path';\nimport { defineConfig } from 'vite';\n// @ts-ignore\nimport Inspect from 'vite-plugin-inspect';\nimport million from '../compiler';\n\nimport data from '../../package.json';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  // @ts-ignore\n  plugins: [million.vite({ mute: 'info', auto: true }), react(), Inspect()],\n  resolve: {\n    alias: {\n      'million/react': path.resolve(__dirname, '../react'),\n      'million/experimental': path.resolve(__dirname, '../experimental'),\n      'million/react-server': path.resolve(__dirname, '../react-server'),\n    },\n  },\n  define: {\n    'process.env.VERSION': JSON.stringify(data.version),\n  },\n});\n"
  },
  {
    "path": "packages/million/README.md",
    "content": "# `million`\n"
  },
  {
    "path": "packages/million/alias.ts",
    "content": "/**\n * From `getAttributeAlias.js` in React-DOM\n * https://github.com/facebook/react/blob/b09e102ff1e2aaaf5eb6585b04609ac7ff54a5c8/packages/react-dom-bindings/src/shared/getAttributeAlias.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nconst aliases = new Map([\n  ['acceptCharset', 'accept-charset'],\n  ['htmlFor', 'for'],\n  ['httpEquiv', 'http-equiv'],\n  // HTML and SVG attributes, but the SVG attribute is case sensitive.],\n  ['crossOrigin', 'crossorigin'],\n  // This is a list of all SVG attributes that need special casing.\n  // Regular attributes that just accept strings.],\n  ['accentHeight', 'accent-height'],\n  ['alignmentBaseline', 'alignment-baseline'],\n  ['arabicForm', 'arabic-form'],\n  ['baselineShift', 'baseline-shift'],\n  ['capHeight', 'cap-height'],\n  ['clipPath', 'clip-path'],\n  ['clipRule', 'clip-rule'],\n  ['colorInterpolation', 'color-interpolation'],\n  ['colorInterpolationFilters', 'color-interpolation-filters'],\n  ['colorProfile', 'color-profile'],\n  ['colorRendering', 'color-rendering'],\n  ['dominantBaseline', 'dominant-baseline'],\n  ['enableBackground', 'enable-background'],\n  ['fillOpacity', 'fill-opacity'],\n  ['fillRule', 'fill-rule'],\n  ['floodColor', 'flood-color'],\n  ['floodOpacity', 'flood-opacity'],\n  ['fontFamily', 'font-family'],\n  ['fontSize', 'font-size'],\n  ['fontSizeAdjust', 'font-size-adjust'],\n  ['fontStretch', 'font-stretch'],\n  ['fontStyle', 'font-style'],\n  ['fontVariant', 'font-variant'],\n  ['fontWeight', 'font-weight'],\n  ['glyphName', 'glyph-name'],\n  ['glyphOrientationHorizontal', 'glyph-orientation-horizontal'],\n  ['glyphOrientationVertical', 'glyph-orientation-vertical'],\n  ['horizAdvX', 'horiz-adv-x'],\n  ['horizOriginX', 'horiz-origin-x'],\n  ['imageRendering', 'image-rendering'],\n  ['letterSpacing', 'letter-spacing'],\n  ['lightingColor', 'lighting-color'],\n  ['markerEnd', 'marker-end'],\n  ['markerMid', 'marker-mid'],\n  ['markerStart', 'marker-start'],\n  ['overlinePosition', 'overline-position'],\n  ['overlineThickness', 'overline-thickness'],\n  ['paintOrder', 'paint-order'],\n  ['panose-1', 'panose-1'],\n  ['pointerEvents', 'pointer-events'],\n  ['renderingIntent', 'rendering-intent'],\n  ['shapeRendering', 'shape-rendering'],\n  ['stopColor', 'stop-color'],\n  ['stopOpacity', 'stop-opacity'],\n  ['strikethroughPosition', 'strikethrough-position'],\n  ['strikethroughThickness', 'strikethrough-thickness'],\n  ['strokeDasharray', 'stroke-dasharray'],\n  ['strokeDashoffset', 'stroke-dashoffset'],\n  ['strokeLinecap', 'stroke-linecap'],\n  ['strokeLinejoin', 'stroke-linejoin'],\n  ['strokeMiterlimit', 'stroke-miterlimit'],\n  ['strokeOpacity', 'stroke-opacity'],\n  ['strokeWidth', 'stroke-width'],\n  ['textAnchor', 'text-anchor'],\n  ['textDecoration', 'text-decoration'],\n  ['textRendering', 'text-rendering'],\n  ['transformOrigin', 'transform-origin'],\n  ['underlinePosition', 'underline-position'],\n  ['underlineThickness', 'underline-thickness'],\n  ['unicodeBidi', 'unicode-bidi'],\n  ['unicodeRange', 'unicode-range'],\n  ['unitsPerEm', 'units-per-em'],\n  ['vAlphabetic', 'v-alphabetic'],\n  ['vHanging', 'v-hanging'],\n  ['vIdeographic', 'v-ideographic'],\n  ['vMathematical', 'v-mathematical'],\n  ['vectorEffect', 'vector-effect'],\n  ['vertAdvY', 'vert-adv-y'],\n  ['vertOriginX', 'vert-origin-x'],\n  ['vertOriginY', 'vert-origin-y'],\n  ['wordSpacing', 'word-spacing'],\n  ['writingMode', 'writing-mode'],\n  ['xmlnsXlink', 'xmlns:xlink'],\n  ['xHeight', 'x-height'],\n]);\n\nexport default function getAttributeAlias(name: string): string {\n  return aliases.get(name) || name;\n}\n"
  },
  {
    "path": "packages/million/array.ts",
    "content": "/* eslint-disable @typescript-eslint/unbound-method */\nimport { setTextContent$ } from './dom';\nimport { AbstractBlock } from './types';\nimport { mount$, patch$, move$, remove$ } from './block';\nimport { Map$, MapSet$ } from './constants';\n\nexport const mapArray = (children: AbstractBlock[]) => {\n  return new ArrayBlock(children);\n};\n\nexport class ArrayBlock extends AbstractBlock {\n  b: AbstractBlock[];\n  constructor(children: AbstractBlock[]) {\n    super();\n    this.b = children;\n  }\n  v() {\n    /**/\n  }\n  p(fragment: ArrayBlock) {\n    const oldChildren: (AbstractBlock | null)[] = this.b;\n    const newChildren = fragment.b;\n    const oldChildrenLength = oldChildren.length;\n    const newChildrenLength = newChildren.length;\n    const parent = this.t()!;\n    if (this === fragment) return parent;\n    if (newChildrenLength === 0 && oldChildrenLength === 0) return parent;\n\n    this.b = newChildren;\n\n    if (newChildrenLength === 0) {\n      arrayRemove$.call(this);\n      return parent;\n    }\n    if (oldChildrenLength === 0) {\n      arrayMount$.call(fragment, parent);\n      return parent;\n    }\n\n    let oldHead = 0;\n    let newHead = 0;\n    let oldTail = oldChildrenLength - 1;\n    let newTail = newChildrenLength - 1;\n\n    let oldHeadChild = oldChildren[0];\n    let newHeadChild = newChildren[0]!;\n    let oldTailChild = oldChildren[oldTail];\n    let newTailChild = newChildren[newTail]!;\n\n    let oldKeyMap: Map<string, number> | undefined;\n\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (!oldHeadChild) {\n        oldHeadChild = oldChildren[++oldHead];\n        continue;\n      }\n      if (!oldTailChild) {\n        oldTailChild = oldChildren[--oldTail];\n        continue;\n      }\n\n      const oldHeadKey = oldHeadChild.k!;\n      const newHeadKey = newHeadChild.k!;\n      if (oldHeadKey === newHeadKey) {\n        patch$.call(oldHeadChild, newHeadChild);\n        newChildren[newHead] = oldHeadChild;\n        oldHeadChild = oldChildren[++oldHead];\n        newHeadChild = newChildren[++newHead]!;\n        continue;\n      }\n\n      const oldTailKey = oldTailChild.k!;\n      const newTailKey = newTailChild.k!;\n      if (oldTailKey === newTailKey) {\n        patch$.call(oldTailChild, newTailChild);\n        newChildren[newTail] = oldTailChild;\n        oldTailChild = oldChildren[--oldTail];\n        newTailChild = newChildren[--newTail]!;\n        continue;\n      }\n\n      if (oldHeadKey === newTailKey) {\n        patch$.call(oldHeadChild, newTailChild);\n        newChildren[newTail] = oldHeadChild;\n        const nextChild = newChildren[newTail + 1];\n        move$.call(oldHeadChild, nextChild, nextChild?.l || null);\n        oldHeadChild = oldChildren[++oldHead];\n        newTailChild = newChildren[--newTail]!;\n        continue;\n      }\n\n      if (oldTailKey === newHeadKey) {\n        patch$.call(oldTailChild, newHeadChild);\n        newChildren[newHead] = oldTailChild;\n        const nextChild = oldChildren[oldHead];\n        move$.call(oldTailChild, nextChild, nextChild?.l || null);\n        oldTailChild = oldChildren[--oldTail];\n        newHeadChild = newChildren[++newHead]!;\n        continue;\n      }\n\n      if (!oldKeyMap) {\n        oldKeyMap = new Map$<string, number>();\n        for (let i = oldHead; i <= oldTail; i++) {\n          MapSet$.call(oldKeyMap, oldChildren[i]!.k!, i);\n        }\n      }\n      const oldIndex = oldKeyMap.get(newHeadKey);\n      if (oldIndex === undefined) {\n        mount$.call(newHeadChild, parent, oldHeadChild.l || null);\n      } else {\n        const oldChild = oldChildren[oldIndex]!;\n        move$.call(oldChild, oldHeadChild, null);\n        patch$.call(oldChild, newHeadChild);\n        newChildren[newHead] = oldChild;\n        oldChildren[oldIndex] = null;\n      }\n      newHeadChild = newChildren[++newHead]!;\n    }\n\n    if (oldHead <= oldTail || newHead <= newTail) {\n      if (oldHead > oldTail) {\n        const nextChild = newChildren[newTail + 1];\n        for (let i = newHead; i <= newTail; ++i) {\n          mount$.call(newChildren[i], parent, nextChild ? nextChild.l : null);\n        }\n      } else {\n        for (let i = oldHead; i <= oldTail; ++i) {\n          remove$.call(oldChildren[i]);\n        }\n      }\n    }\n    return parent;\n  }\n  m(parent: HTMLElement, refNode: Node | null = null): HTMLElement {\n    if (this._t) return this._t;\n    for (let i = 0, j = this.b.length; i < j; ++i) {\n      const block = this.b[i]!;\n      mount$.call(block, parent, refNode);\n    }\n    this._t = parent;\n    return parent;\n  }\n  x() {\n    const parent = this.t();\n    if (parent) {\n      setTextContent$.call(parent, '');\n    } else {\n      for (let i = 0, j = this.b.length; i < j; ++i) {\n        remove$.call(this.b[i]!);\n      }\n    }\n    this.b = [];\n  }\n  u(): boolean {\n    return true;\n  }\n  s() {\n    return this.b.map((block) => block.s()).join('');\n  }\n  t(): HTMLElement | null | undefined {\n    if (!this._t) this._t = this.b[0]!.t();\n    return this._t;\n  }\n}\n\nconst array$ = ArrayBlock.prototype;\n\nexport const arrayMount$ = array$.m;\nexport const arrayPatch$ = array$.p;\nexport const arrayRemove$ = array$.x;\n"
  },
  {
    "path": "packages/million/block.ts",
    "content": "/* eslint-disable no-bitwise */\n/* eslint-disable @typescript-eslint/unbound-method */\nimport type { MillionProps } from '../types';\nimport {\n  cloneNode$,\n  createEventListener,\n  insertBefore$,\n  insertText,\n  remove$ as removeElement$,\n  setAttribute,\n  setText,\n  setStyleAttribute,\n  setSvgAttribute,\n  childAt,\n  replaceChild$,\n  stringToDOM,\n  removeComments,\n} from './dom';\nimport { renderToTemplate } from './template';\nimport { AbstractBlock } from './types';\nimport { arrayMount$, arrayPatch$ } from './array';\nimport {\n  TEXT_NODE_CACHE,\n  AttributeFlag,\n  ChildFlag,\n  EventFlag,\n  StyleAttributeFlag,\n  EVENT_PATCH,\n} from './constants';\nimport type { ArrayBlock } from './array';\nimport type { EditChild, VElement, Hole, VNode, Edit } from './types';\n\nconst HOLE_PROXY = new Proxy(\n  {},\n  {\n    // A universal getter will return a Hole instance if props[any] is accessed\n    // Allows code to identify holes in virtual nodes (\"digs\" them out)\n    get(_, key: string): Hole {\n      return { $: key };\n    },\n  },\n);\n\nexport const block = (\n  fn: (props?: MillionProps) => VElement,\n  unwrap?: (vnode: VElement) => VNode,\n  shouldUpdate?: (oldProps: MillionProps, newProps: MillionProps) => boolean,\n  svg?: boolean,\n) => {\n  const vnode = fn(HOLE_PROXY);\n  const edits: Edit[] = [];\n\n  // Turns vnode into a string of HTML and creates an array of \"edits\"\n  // Edits are instructions for how to update the DOM given some props\n  const root = stringToDOM(\n    renderToTemplate(unwrap ? unwrap(vnode) : vnode, edits),\n    svg,\n  );\n  removeComments(root);\n\n  return <T extends MillionProps>(\n    props?: T | null,\n    key?: string,\n    shouldUpdateCurrentBlock?: (\n      oldProps: MillionProps,\n      newProps: MillionProps,\n    ) => boolean,\n  ) => {\n    return new Block(\n      root,\n      edits,\n      props,\n      key ?? props?.key ?? null,\n      shouldUpdateCurrentBlock ?? shouldUpdate ?? null,\n      null,\n    );\n  };\n};\n\nexport const mount = (\n  block: AbstractBlock,\n  parent?: HTMLElement,\n  hydrateNode?: HTMLElement,\n): HTMLElement => {\n  if ('b' in block && parent) {\n    return arrayMount$.call(block, parent, null);\n  }\n  return mount$.call(block, parent, null, hydrateNode);\n};\n\nexport const patch = (\n  oldBlock: AbstractBlock,\n  newBlock: AbstractBlock,\n): HTMLElement => {\n  if ('b' in oldBlock || 'b' in newBlock) {\n    arrayPatch$.call(oldBlock, newBlock as ArrayBlock);\n  }\n\n  if (!oldBlock.l) mount$.call(oldBlock, undefined, null, null);\n  if ((oldBlock.k && oldBlock.k === newBlock.k) || oldBlock.r === newBlock.r) {\n    return patch$.call(oldBlock, newBlock);\n  }\n  const el = mount$.call(newBlock, oldBlock.t()!, oldBlock.l, null);\n  remove$.call(oldBlock);\n  oldBlock.k = newBlock.k!;\n  return el;\n};\n\nexport class Block extends AbstractBlock {\n  declare r: HTMLElement;\n  declare e: Edit[];\n\n  constructor(\n    root: HTMLElement,\n    edits: Edit[],\n    props?: MillionProps | null,\n    key?: string | null,\n    shouldUpdate?:\n      | ((oldProps: MillionProps, newProps: MillionProps) => boolean)\n      | null,\n    getElements?: ((root: HTMLElement) => HTMLElement[]) | null,\n  ) {\n    super();\n    this.r = root;\n    this.d = props;\n    this.e = edits;\n    this.k = key;\n    this.c = Array(edits.length);\n    if (shouldUpdate) {\n      this._u = shouldUpdate;\n    } else {\n      this._u = null;\n    }\n    if (getElements) {\n      this.g = getElements;\n    } else {\n      this.g = null;\n    }\n  }\n  m(\n    parent?: HTMLElement,\n    refNode: Node | null = null,\n    hydrateNode?: HTMLElement | null,\n  ): HTMLElement {\n    if (this.l) return this.l;\n    // cloneNode(true) uses less memory than recursively creating new nodes\n    const root = hydrateNode ?? (cloneNode$.call(this.r, true) as HTMLElement);\n    const elements = this.g?.(root);\n    if (elements) this.c = elements;\n\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i]!;\n      const el =\n        elements?.[i] ?? getCurrentElement(current.p!, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k]!;\n        const value = this.d![edit.h];\n\n        if (edit.t & ChildFlag) {\n          if (value instanceof AbstractBlock) {\n            const child = childAt(el, edit.i!);\n            if (hydrateNode) {\n              value.m(el, child, child);\n            } else {\n              value.m(el, child);\n            }\n            continue;\n          }\n          if (!el[TEXT_NODE_CACHE]) el[TEXT_NODE_CACHE] = new Array(l);\n\n          if (value && typeof value === 'object' && 'foreign' in value) {\n            if (hydrateNode) {\n              const child = childAt(el, edit.i!);\n              value.reset(child);\n            }\n\n            const targetEl = value.current;\n            el[TEXT_NODE_CACHE][k] = targetEl;\n            if (!hydrateNode) {\n              insertBefore$.call(el, targetEl, childAt(el, edit.i!));\n            }\n            continue;\n          }\n          if (hydrateNode) {\n            el[TEXT_NODE_CACHE][k] = childAt(el, edit.i!);\n            continue;\n          }\n          // insertText() on mount, setText() on patch\n          el[TEXT_NODE_CACHE][k] = insertText(\n            el,\n            // eslint-disable-next-line eqeqeq\n            value == null || value === false ? '' : String(value),\n            edit.i!,\n          );\n        } else if (edit.t & EventFlag) {\n          const patch = createEventListener(el, edit.n!, value);\n          el[EVENT_PATCH + edit.n!] = patch;\n        } else if (edit.t & AttributeFlag) {\n          setAttribute(el, edit.n!, value);\n        } else if (edit.t & StyleAttributeFlag) {\n          if (typeof value === 'string' || typeof value === 'number') {\n            setStyleAttribute(el, edit.n!, value);\n          } else {\n            for (const style in value) {\n              setStyleAttribute(el, style, value[style]);\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n!, value);\n        }\n      }\n\n      const initsLength = current.i?.length;\n      if (!initsLength) continue;\n      for (let k = 0; k < initsLength; ++k) {\n        const init = current.i![k]!;\n\n        if (init.t & ChildFlag) {\n          // Handles case for positioning text nodes. When text nodes are\n          // put into a template, they can be merged. For example,\n          // [\"hello\", \"world\"] becomes \"helloworld\" in the DOM.\n          // Inserts text nodes into the DOM at the correct position.\n          if (init.v && !hydrateNode) insertText(el, init.v, init.i);\n        } else if (init.t & EventFlag) {\n          createEventListener(el, init.n!, init.l!);\n        } else {\n          const child = childAt(el, init.i!);\n          if (hydrateNode) {\n            init.b!.m(el, child, child);\n          } else {\n            init.b!.m(el, child);\n          }\n        }\n      }\n    }\n\n    if (parent && !hydrateNode) {\n      insertBefore$.call(parent, root, refNode);\n    }\n    this.l = root;\n\n    return root;\n  }\n  p(newBlock: AbstractBlock): HTMLElement {\n    const root = this.l!;\n    if (!newBlock.d) return root;\n    const props = this.d!;\n    // If props are the same, no need to patch\n    if (!shouldUpdate$.call(this, props, newBlock.d)) return root;\n    this.d = newBlock.d;\n\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i]!;\n      const el: HTMLElement =\n        this.c![i] ?? getCurrentElement(current.p!, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k]!;\n        const oldValue = props[edit.h];\n        const newValue = newBlock.d[edit.h];\n\n        if (newValue === oldValue) continue;\n\n        if (edit.t & EventFlag) {\n          el[EVENT_PATCH + edit.n!]!(newValue);\n          continue;\n        }\n        if (edit.t & ChildFlag) {\n          if (oldValue instanceof AbstractBlock) {\n            // Remember! If we find a block inside a child, we need to locate\n            // the corresponding block in the new props and patch it.\n            const firstEdit = newBlock.e?.[i]?.e[k] as EditChild;\n            const newChildBlock = newBlock.d[firstEdit.h];\n            oldValue.p(newChildBlock);\n            continue;\n          }\n          if (\n            newValue &&\n            typeof newValue === 'object' &&\n            'foreign' in newValue\n          ) {\n            const targetEl = el[TEXT_NODE_CACHE][k];\n            if (newValue.unstable && oldValue !== newValue) {\n              const newTargetEl = newValue.current;\n              el[TEXT_NODE_CACHE][k] = newTargetEl;\n              replaceChild$.call(el, newTargetEl, targetEl);\n            } else {\n              newValue.current = targetEl;\n            }\n\n            continue;\n          }\n          setText(\n            el[TEXT_NODE_CACHE][k],\n            // eslint-disable-next-line eqeqeq\n            newValue == null || newValue === false ? '' : String(newValue),\n          );\n        } else if (edit.t & AttributeFlag) {\n          setAttribute(el, edit.n!, newValue);\n        } else if (edit.t & StyleAttributeFlag) {\n          if (typeof newValue === 'string' || typeof newValue === 'number') {\n            setStyleAttribute(el, edit.n!, newValue);\n          } else {\n            for (const style in newValue) {\n              if (newValue[style] !== oldValue[style]) {\n                setStyleAttribute(el, style, newValue[style]);\n              }\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n!, newValue);\n        }\n      }\n    }\n\n    return root;\n  }\n  v(block: AbstractBlock | null = null, refNode: Node | null = null): void {\n    insertBefore$.call(this.t(), this.l!, block ? block.l! : refNode);\n  }\n  x(): void {\n    removeElement$.call(this.l);\n    this.l = null;\n  }\n  u(_oldProps: MillionProps, _newProps: MillionProps): boolean {\n    if (!this._u) return true;\n    return this._u(_oldProps, _newProps);\n  }\n  s(): string {\n    return String(this.l?.outerHTML);\n  }\n  t(): HTMLElement | null | undefined {\n    if (!this._t) this._t = this.l?.parentElement;\n    return this._t;\n  }\n}\n\nconst getCurrentElement = (\n  path: number[],\n  root: HTMLElement,\n  cache?: HTMLElement[],\n  key?: number,\n): HTMLElement => {\n  const pathLength = path.length;\n  if (!pathLength) return root;\n  const isCacheAndKeyExists = cache && key !== undefined;\n  if (isCacheAndKeyExists && cache[key]) {\n    return cache[key]!;\n  }\n  // path is an array of indices to traverse the DOM tree\n  // For example, [0, 1, 2] becomes:\n  // root.firstChild.firstChild.nextSibling.firstChild.nextSibling.nextSibling\n  // We use path because we don't have the actual DOM nodes until mount()\n  for (let i = 0; i < pathLength; ++i) {\n    const siblings = path[i]!;\n    root = childAt(root, siblings);\n  }\n  if (isCacheAndKeyExists) cache[key] = root;\n  return root;\n};\n\nexport const withKey = (value: any, key: string): any => {\n  value.key = key;\n  return value;\n};\n\nconst block$ = Block.prototype;\n\nexport const mount$ = block$.m;\nexport const patch$ = block$.p;\nexport const move$ = block$.v;\nexport const remove$ = block$.x;\nexport const shouldUpdate$ = block$.u;\n"
  },
  {
    "path": "packages/million/constants.ts",
    "content": "/* eslint-disable @typescript-eslint/unbound-method */\nexport const Object$ = Object;\nexport const Map$ = Map;\nexport const Set$ = Set;\n\nexport const SetHas$ = Set$.prototype.has;\nexport const SetAdd$ = Set$.prototype.add;\n\nexport const MapHas$ = Map$.prototype.has;\nexport const MapGet$ = Map$.prototype.get;\nexport const MapSet$ = Map$.prototype.set;\n\nexport const ChildFlag = 1;\nexport const AttributeFlag = 2;\nexport const EventFlag = 4;\nexport const StyleAttributeFlag = 8;\nexport const SvgAttributeFlag = 16;\nexport const BlockFlag = 32;\n\nexport const TEXT_NODE_CACHE = '__t';\nexport const EVENT_PATCH = '__p';\nexport const EVENTS_REGISTRY = '__e';\nexport const IS_NON_DIMENSIONAL =\n  /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nexport const XLINK_NS = 'http://www.w3.org/1999/xlink';\nexport const XML_NS = 'http://www.w3.org/2000/xmlns/';\nexport const X_CHAR = 120;\n// prettier-ignore\nexport const NON_PROPS = new Set$(['href', 'list', 'form', 'tabIndex', 'download']);\n// prettier-ignore\nexport const VOID_ELEMENTS = new Set$([\"area\", \"base\", \"basefont\", \"bgsound\", \"br\", \"col\", \"command\", \"embed\", \"frame\", \"hr\", \"image\", \"img\", \"input\", \"isindex\", \"keygen\", \"link\", \"menuitem\", \"meta\", \"nextid\", \"param\", \"source\", \"track\", \"wbr\"]);\n"
  },
  {
    "path": "packages/million/dom.ts",
    "content": "/* eslint-disable @typescript-eslint/unbound-method */\n\nimport {\n  EVENTS_REGISTRY,\n  IS_NON_DIMENSIONAL,\n  NON_PROPS,\n  Object$,\n  Set$,\n  SetAdd$,\n  SetHas$,\n  XLINK_NS,\n  XML_NS,\n} from './constants';\n\nif (typeof window === 'undefined') {\n  throw new Error(\n    'See http://million.dev/docs/install to install the compiler.',\n  );\n}\n\nexport const document$ = document;\nexport const template$ = document$.createElement('template');\n\n// Taken from ivi (https://github.com/localvoid/ivi/blob/43cdf6f747dc782883ca73bdb5b4e21fa9c27655/packages/ivi/src/client/core.ts#L29C1-L29C1)\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2016-2023 Boris Kaul <localvoid@gmail.com>.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nexport const HTM_TEMPLATE = /**@__PURE__*/ document$.createElement('template');\nexport const HTM_TEMPLATE_CONTENT = HTM_TEMPLATE.content;\nconst _SVG_TEMPLATE = /**@__PURE__*/ document$.createElement('template');\nexport const SVG_TEMPLATE = /**@__PURE__*/ document$.createElementNS(\n  'http://www.w3.org/2000/svg',\n  'svg',\n);\n/**@__PURE__*/ _SVG_TEMPLATE.content.appendChild(SVG_TEMPLATE);\n\n// Caching prototypes for performance\nexport const node$ = Node.prototype;\nexport const element$ = Element.prototype;\nexport const characterData$ = CharacterData.prototype;\nexport const getOwnPropertyDescriptor$ = Object$.getOwnPropertyDescriptor;\nexport const insertBefore$ = node$.insertBefore;\nexport const cloneNode$ = node$.cloneNode;\nexport const replaceChild$ = node$.replaceChild;\nexport const replaceWith$ = element$.replaceWith;\nexport const removeChild$ = node$.removeChild;\nexport const remove$ = element$.remove;\nexport const addEventListener$ = node$.addEventListener;\nexport const removeEventListener$ = node$.removeEventListener;\nexport const removeAttribute$ = element$.removeAttribute;\nexport const setAttribute$ = element$.setAttribute;\nexport const setAttributeNS$ = element$.setAttributeNS;\nexport const setTextContent$ = getOwnPropertyDescriptor$(node$, 'textContent')!\n  .set!;\nexport const firstChild$ = getOwnPropertyDescriptor$(node$, 'firstChild')!.get!;\nexport const nextSibling$ = getOwnPropertyDescriptor$(node$, 'nextSibling')!\n  .get!;\nexport const characterDataSet$ = getOwnPropertyDescriptor$(\n  characterData$,\n  'data',\n)!.set!;\n\nexport const stringToDOM = (content: string, svg?: boolean) => {\n  const template = svg ? SVG_TEMPLATE : HTM_TEMPLATE;\n  template.innerHTML = content;\n  const dom = svg ? SVG_TEMPLATE : HTM_TEMPLATE_CONTENT;\n  return dom.firstChild as HTMLElement;\n};\n\ndocument$[EVENTS_REGISTRY] = new Set$();\n\nexport const createEventListener = (\n  el: HTMLElement,\n  name: string,\n  value?: EventListener,\n) => {\n  let event = name.toLowerCase();\n  let capture = false;\n  if (event.endsWith('capture')) {\n    event = event.slice(0, -7);\n    capture = true;\n  }\n\n  const key = `$$${event}`;\n  if (!SetHas$.call(document$[EVENTS_REGISTRY], event)) {\n    // createEventListener uses a synthetic event handler to capture events\n    // https://betterprogramming.pub/whats-the-difference-between-synthetic-react-events-and-javascript-events-ba7dbc742294\n    addEventListener$.call(\n      document$,\n      event,\n      (nativeEvent: Event) => {\n        let el = nativeEvent.target as Node | null;\n        // Bubble up the DOM tree to find all event listeners\n        while (el) {\n          const handler = el[key];\n          if (handler) {\n            Object$.defineProperty(nativeEvent, 'currentTarget', {\n              configurable: true,\n              get() {\n                return el;\n              },\n            });\n            handler(nativeEvent);\n          }\n          el = el.parentNode;\n        }\n      },\n      { capture },\n    );\n    SetAdd$.call(document$[EVENTS_REGISTRY], event);\n  }\n  const patch = (newValue?: EventListener | null) => {\n    if (!newValue) {\n      el[key] = null;\n    } else if (!('key' in newValue && newValue.key === el[key]?.key)) {\n      el[key] = newValue;\n    }\n  };\n  patch(value);\n  return patch;\n};\n\n// https://www.measurethat.net/Benchmarks/Show/15652/0/childnodes-vs-children-vs-firstchildnextsibling-vs-firs\nexport const childAt = (el: HTMLElement, index: number) => {\n  let child = firstChild$.call(el);\n  if (index) {\n    for (let j = 0; j < index; ++j) {\n      if (!child) break;\n      child = nextSibling$.call(child);\n    }\n  }\n  return child;\n};\n\nconst visitedNodes = new WeakSet<Node>();\n\n// React removes the comment in hydration but since we're hijacking the hydration, we should do it manually\nexport const removeComments = (el: Node) => {\n  if (visitedNodes.has(el)) {\n    return;\n  }\n  if (el.nodeType === 8) {\n    el.parentNode?.removeChild(el);\n  }\n  let child: ChildNode | null = firstChild$.call(el);\n  while (child) {\n    removeComments(child);\n    child = child.nextSibling;\n  }\n  visitedNodes.add(el);\n};\n\nexport const insertText = (\n  el: HTMLElement,\n  value: string,\n  index: number,\n): Text => {\n  const node = document$.createTextNode(value);\n  const child = childAt(el, index);\n  insertBefore$.call(el, node, child);\n  return node;\n};\n\nexport const setText = (el: Text, value: string) => {\n  characterDataSet$.call(el, value);\n};\n\nexport const setStyleAttribute = (\n  el: HTMLElement,\n  name: string,\n  value?: string | boolean | number | null,\n) => {\n  if (typeof value !== 'number' || IS_NON_DIMENSIONAL.test(name)) {\n    el.style[name] = value;\n  } else if (typeof value === 'string') {\n    el.style.cssText = value;\n  } else if (name.startsWith('-')) {\n    el.style.setProperty(name, String(value));\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  } else if (value === undefined || value === null) {\n    el.style[name] = '';\n  } else {\n    el.style[name] = `${String(value)}px`;\n  }\n};\n\nexport const setSvgAttribute = (\n  el: HTMLElement,\n  name: string,\n  value?: string | boolean | null,\n) => {\n  name = name.replace(/xlink(?:H|:h)/, 'h').replace(/sName$/, 's');\n  if (name.startsWith('xmlns')) {\n    setAttributeNS$.call(el, XML_NS, name, String(value));\n  } else if (name.startsWith('xlink')) {\n    setAttributeNS$.call(el, XLINK_NS, 'href', String(value));\n  }\n};\n\nexport const setAttribute = (\n  el: HTMLElement,\n  name: string,\n  value?: string | boolean | null,\n): void => {\n  const isValueNully = value === undefined || value === null;\n  value = isValueNully ? '' : value;\n  if (\n    name in el &&\n    el[name] !== undefined &&\n    el[name] !== null &&\n    !(el instanceof SVGElement) &&\n    SetHas$.call(NON_PROPS, name)\n  ) {\n    try {\n      el[name] = value;\n    } catch (_err) {\n      /**/\n    }\n  } else if (\n    !isValueNully &&\n    value !== '' &&\n    (value !== false || name.includes('-'))\n  ) {\n    setAttribute$.call(el, name, String(value));\n  } else {\n    removeAttribute$.call(el, name);\n  }\n\n  const isInput = el instanceof HTMLInputElement;\n  const isSelect = el instanceof HTMLSelectElement;\n  const isTextArea = el instanceof HTMLTextAreaElement;\n\n  if (name === 'value' && (isInput || isSelect || isTextArea)) {\n    setAttribute$.call(el, name, String(value));\n    el.value = value as string;\n  }\n};\n"
  },
  {
    "path": "packages/million/index.ts",
    "content": "export { mount, patch, block, Block, withKey } from './block';\nexport { mapArray, ArrayBlock } from './array';\nexport { renderToTemplate } from './template';\nexport { AbstractBlock } from './types';\nexport type { VNode, VElement } from './types';\nexport { firstChild$, nextSibling$, stringToDOM } from './dom';\n"
  },
  {
    "path": "packages/million/package.json",
    "content": "{\n  \"type\": \"module\",\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\"\n}\n"
  },
  {
    "path": "packages/million/template.ts",
    "content": "import getAttributeAlias from './alias';\nimport {\n  X_CHAR,\n  VOID_ELEMENTS,\n  EventFlag,\n  StyleAttributeFlag,\n  SvgAttributeFlag,\n  AttributeFlag,\n  ChildFlag,\n  BlockFlag,\n  SetHas$,\n} from './constants';\nimport { AbstractBlock } from './types';\nimport type { Edit, VNode } from './types';\n\nexport const renderToTemplate = (\n  vnode: VNode,\n  edits: Edit[] = [],\n  path: number[] = [],\n): string => {\n  if (typeof vnode === 'string') return vnode;\n  if (\n    typeof vnode === 'number' ||\n    typeof vnode === 'bigint' ||\n    vnode === true\n  ) {\n    return String(vnode);\n  }\n  if (vnode === null || vnode === undefined || vnode === false) return '';\n  // TODO: refactor this so there is not an extra wrapper element\n  if (typeof vnode === 'object' && '$' in vnode) {\n    edits.push({\n      p: path,\n      e: [\n        {\n          /* type */ t: ChildFlag,\n          /* name */ n: null,\n          /* value */ v: null,\n          /* hole */ h: vnode.$ as string,\n          /* index */ i: 0,\n          /* listener */ l: null,\n          /* patch */ p: null,\n          /* block */ b: null,\n        },\n      ],\n      i: [],\n    });\n\n    return '<slot/>';\n  }\n\n  let props = '';\n  let children = '';\n  const current: Edit = {\n    p: path, // The location of the edit in in the virtual node tree\n    e: [], // Occur on mount + patch\n    i: [], // Occur before mount\n  };\n\n  for (let name in vnode.props) {\n    const value = vnode.props[name];\n    if (name === 'key' || name === 'ref' || name === 'children') {\n      continue;\n    }\n\n    const alias = getAttributeAlias(name);\n    if (alias) name = alias;\n\n    if (name === 'className') name = 'class';\n\n    if (name.startsWith('on')) {\n      const isValueHole = '$' in value;\n      // Make edits monomorphic\n      if (isValueHole) {\n        current.e.push({\n          /* type */ t: EventFlag,\n          /* name */ n: name.slice(2),\n          /* value */ v: null,\n          /* hole */ h: value.$,\n          /* index */ i: null,\n          /* listener */ l: null,\n          /* patch */ p: null,\n          /* block */ b: null,\n        });\n      } else {\n        current.i!.push({\n          /* type */ t: EventFlag,\n          /* name */ n: name.slice(2),\n          /* value */ v: null,\n          /* hole */ h: null,\n          /* index */ i: null,\n          /* listener */ l: value,\n          /* patch */ p: null,\n          /* block */ b: null,\n        });\n      }\n\n      continue;\n    }\n\n    if (value) {\n      if (typeof value === 'object' && '$' in value) {\n        if (name === 'style') {\n          current.e.push({\n            /* type */ t: StyleAttributeFlag,\n            /* name */ n: name,\n            /* value */ v: null,\n            /* hole */ h: value.$,\n            /* index */ i: null,\n            /* listener */ l: null,\n            /* patch */ p: null,\n            /* block */ b: null,\n          });\n        } else if (name.charCodeAt(0) === X_CHAR) {\n          current.e.push({\n            /* type */ t: SvgAttributeFlag,\n            /* name */ n: name,\n            /* value */ v: null,\n            /* hole */ h: value.$,\n            /* index */ i: null,\n            /* listener */ l: null,\n            /* patch */ p: null,\n            /* block */ b: null,\n          });\n        } else {\n          current.e.push({\n            /* type */ t: AttributeFlag,\n            /* name */ n: name,\n            /* value */ v: null,\n            /* hole */ h: value.$,\n            /* index */ i: null,\n            /* listener */ l: null,\n            /* patch */ p: null,\n            /* block */ b: null,\n          });\n        }\n\n        continue;\n      }\n      if (name === 'style' && typeof value === 'object') {\n        let style = '';\n        for (const key in value) {\n          if (typeof value[key] === 'object') {\n            current.e.push({\n              /* type */ t: StyleAttributeFlag,\n              /* name */ n: key,\n              /* value */ v: null,\n              /* hole */ h: value[key].$,\n              /* index */ i: null,\n              /* listener */ l: null,\n              /* patch */ p: null,\n              /* block */ b: null,\n            });\n            continue;\n          }\n\n          let kebabKey = '';\n          for (let i = 0, j = key.length; i < j; ++i) {\n            const char = key.charCodeAt(i);\n            if (char < 97) {\n              // If letter is uppercase\n              kebabKey += `-${String.fromCharCode(char + 32)}`;\n            } else {\n              kebabKey += key[i];\n            }\n          }\n          style += `${kebabKey}:${String(value[key])};`;\n        }\n        props += ` style=\"${style}\"`;\n        continue;\n      }\n      props += ` ${name}=\"${String(value)}\"`;\n    }\n  }\n\n  if (SetHas$.call(VOID_ELEMENTS, vnode.type)) {\n    if (current.e.length) edits.push(current);\n    return `<${vnode.type}${props} />`;\n  }\n\n  // 👎: 'foo' + Block + 'bar' => 'foobaz'.\n  //                                      ↕️ Block edit here\n  // 👍: 'foo' + Block + 'bar'   => 'foo', 'bar'\n  let canMergeString = false;\n  for (let i = 0, j = vnode.props.children?.length || 0, k = 0; i < j; ++i) {\n    const child = vnode.props.children?.[i];\n    if (child === null || child === undefined || child === false) continue;\n\n    if (typeof child === 'object' && '$' in child) {\n      current.e.push({\n        /* type */ t: ChildFlag,\n        /* name */ n: null,\n        /* value */ v: null,\n        /* hole */ h: child.$,\n        /* index */ i,\n        /* listener */ l: null,\n        /* patch */ p: null,\n        /* block */ b: null,\n      });\n      continue;\n    }\n\n    if (child instanceof AbstractBlock) {\n      current.i!.push({\n        /* type */ t: BlockFlag,\n        /* name */ n: null,\n        /* value */ v: null,\n        /* hole */ h: null,\n        /* index */ i,\n        /* listener */ l: null,\n        /* patch */ p: null,\n        /* block */ b: child,\n      });\n\n      continue;\n    }\n\n    if (\n      typeof child === 'string' ||\n      typeof child === 'number' ||\n      typeof child === 'bigint'\n    ) {\n      const value =\n        typeof child === 'number' || typeof child === 'bigint'\n          ? String(child)\n          : child;\n      if (canMergeString) {\n        current.i!.push({\n          /* type */ t: ChildFlag,\n          /* name */ n: null,\n          /* value */ v: value,\n          /* hole */ h: null,\n          /* index */ i,\n          /* listener */ l: null,\n          /* patch */ p: null,\n          /* block */ b: null,\n        });\n        continue;\n      }\n      canMergeString = true;\n      children += value;\n      k++;\n      continue;\n    }\n\n    canMergeString = false;\n    const newPath = path.slice();\n    newPath.push(k++);\n    children += renderToTemplate(child, edits, newPath);\n  }\n\n  if (current.i!.length || current.e.length) edits.push(current);\n\n  return `<${vnode.type}${props}>${children}</${vnode.type}>`;\n};\n"
  },
  {
    "path": "packages/million/types.ts",
    "content": "import type { MillionProps } from '../types';\n\ndeclare const enum Flags {\n  Child = 1,\n  Attribute = 2,\n  Event = 4,\n  StyleAttribute = 8,\n  SvgAttribute = 16,\n  Block = 32,\n}\n\nexport type VNode =\n  | VElement\n  | string\n  | number\n  | bigint\n  | boolean\n  | undefined\n  | null;\n\nexport interface VElement {\n  type: string;\n  props: MillionProps & { children?: (VNode | Hole)[] };\n  // Note: VElement is not supposed to accept number, however,\n  // to preserve type compatibility with React, we accept a number, but that gets converted to a string\n  // whenever it gets converted to a block\n  key?: string | number;\n}\n\nexport interface Hole {\n  $: string;\n}\n\nexport abstract class AbstractBlock {\n  /* root */ r?: HTMLElement;\n  /* edits */ e?: Edit[];\n  /* el */ l?: HTMLElement | null;\n  /* getElements */ g?: ((root: HTMLElement) => HTMLElement[]) | null;\n  /* _shouldUpdate */ _u?:\n    | ((oldProps: MillionProps, newProps: MillionProps) => boolean)\n    | null;\n  /* _parent */ _t?: HTMLElement | null;\n  /* props */ d?: MillionProps | null;\n  /* key */ k?: string | null;\n  /* cache */ c?: HTMLElement[];\n  /* patch */ abstract p(block: AbstractBlock): HTMLElement;\n  /* mount */ abstract m(\n    parent?: HTMLElement,\n    refNode?: Node | null,\n    hydrateNode?: Node | null,\n  ): HTMLElement;\n  /* move */ abstract v(\n    block: AbstractBlock | null,\n    refNode: Node | null,\n  ): void;\n  /* remove */ abstract x(): void;\n  /* shouldUpdate */ abstract u(\n    oldProps: MillionProps,\n    newProps: MillionProps,\n  ): boolean;\n  /* toString */ abstract s(): string;\n  /* parent */ abstract t(): HTMLElement | null | undefined;\n}\n\nexport interface EditAttribute {\n  /* type */ t: Flags.Attribute;\n  /* name */ n: string;\n  /* value */ v: null;\n  /* hole */ h: string;\n  /* index */ i: null;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface EditStyleAttribute {\n  /* type */ t: Flags.StyleAttribute;\n  /* name */ n: string;\n  /* value */ v: null;\n  /* hole */ h: string;\n  /* index */ i: null;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface EditSvgAttribute {\n  /* type */ t: Flags.SvgAttribute;\n  /* name */ n: string;\n  /* value */ v: null;\n  /* hole */ h: string;\n  /* index */ i: null;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface EditChild {\n  /* type */ t: Flags.Child;\n  /* name */ n: null;\n  /* value */ v: null;\n  /* hole */ h: string;\n  /* index */ i: number;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface EditEvent {\n  /* type */ t: Flags.Event;\n  /* name */ n: string;\n  /* value */ v: null;\n  /* hole */ h: string;\n  /* index */ i: null;\n  /* listener */ l: null;\n  /* patch */ p: ((listener: EventListener) => void) | null;\n  /* block */ b: null;\n}\n\nexport interface InitEvent {\n  /* type */ t: Flags.Event;\n  /* name */ n: string;\n  /* value */ v: null;\n  /* hole */ h: null;\n  /* index */ i: null;\n  /* listener */ l: EventListener;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface InitChild {\n  /* type */ t: Flags.Child;\n  /* name */ n: null;\n  /* value */ v: string;\n  /* hole */ h: null;\n  /* index */ i: number;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: null;\n}\n\nexport interface InitBlock {\n  /* type */ t: Flags.Block;\n  /* name */ n: null;\n  /* value */ v: null;\n  /* hole */ h: null;\n  /* index */ i: number;\n  /* listener */ l: null;\n  /* patch */ p: null;\n  /* block */ b: AbstractBlock;\n}\n\nexport interface Edit {\n  /* path */ p: number[] | null;\n  /* edits */ e: (\n    | EditAttribute\n    | EditStyleAttribute\n    | EditSvgAttribute\n    | EditChild\n    | EditEvent\n  )[];\n  /* inits */ i: (InitChild | InitEvent | InitBlock)[] | null;\n}\n"
  },
  {
    "path": "packages/react/README.md",
    "content": "# `million/react`\n"
  },
  {
    "path": "packages/react/block.ts",
    "content": "import { createElement, Fragment, useCallback, useMemo, useRef } from 'react';\nimport type { ComponentType, Ref } from 'react';\nimport {\n  block as createBlock,\n  mount$,\n  patch as patchBlock,\n  remove$ as removeBlock,\n} from '../million/block';\nimport { MapHas$, MapSet$ } from '../million/constants';\nimport type { MillionPortal, MillionProps, Options } from '../types';\n// eslint-disable-next-line camelcase\nimport { experimental_options } from '../experimental';\nimport { cloneNode$ } from '../million/dom';\nimport { Effect, REGISTRY, RENDER_SCOPE, SVG_RENDER_SCOPE } from './constants';\nimport { processProps, unwrap } from './utils';\nimport { useContainer, useNearestParent } from './its-fine';\n\nexport const block = <P extends MillionProps>(\n  fn: ComponentType<P> | null,\n  options: Options<P> | null | undefined = {},\n) => {\n  // eslint-disable-next-line camelcase\n  const noSlot = options?.experimental_noSlot ?? experimental_options.noSlot;\n  let blockTarget: ReturnType<typeof createBlock> | null = options?.block;\n  const defaultType = options?.svg ? SVG_RENDER_SCOPE : RENDER_SCOPE;\n\n  if (fn) {\n    blockTarget = createBlock(\n      fn as any,\n      unwrap as any,\n      options?.shouldUpdate as Parameters<typeof createBlock>[2],\n      options?.svg,\n    );\n  }\n\n  const MillionBlock = <P extends MillionProps>(\n    props: P,\n    forwardedRef: Ref<any>,\n  ) => {\n    const container = useContainer<HTMLElement>(); // usable when there's no parent other than the root element\n    const parentRef = useNearestParent<HTMLElement>();\n    const hmrTimestamp = props._hmr;\n    const ref = useRef<HTMLElement | null>(null);\n    const patch = useRef<((props: P) => void) | null>(null);\n    const portalRef = useRef<MillionPortal[]>([]);\n\n    props = processProps(props, forwardedRef, portalRef.current);\n    patch.current?.(props);\n\n    const effect = useCallback(() => {\n      if (!ref.current && !noSlot) return;\n      const currentBlock = blockTarget!(props, props.key);\n      if (hmrTimestamp && ref.current?.textContent) {\n        ref.current.textContent = '';\n      }\n      if (noSlot) {\n        ref.current = (parentRef.current?.el ?? container.current?.el)!;\n        // the parentRef depth is only bigger than container depth when we're in a portal, where the portal el is closer than the jsx parent\n        if (\n          props.scoped ||\n          (parentRef.current &&\n            container.current &&\n            parentRef.current.depth > container.current.depth)\n        ) {\n          // in portals, parentRef is not the proper parent\n          ref.current = container.current!.el!;\n        }\n        if (ref.current.childNodes.length) {\n          // eslint-disable-next-line no-console\n          console.error(\n            new Error(`\\`experimental_options.noSlot\\` does not support having siblings at the moment.\nThe block element should be the only child of the \\`${\n              (cloneNode$.call(ref.current) as HTMLElement).outerHTML\n            }\\` element.\nTo avoid this error, \\`experimental_options.noSlot\\` should be false`),\n          );\n        }\n      }\n      if (patch.current === null || hmrTimestamp) {\n        mount$.call(currentBlock, ref.current!, null);\n        patch.current = (props: P) => {\n          patchBlock(\n            currentBlock,\n            blockTarget!(\n              props,\n              props.key,\n              options?.shouldUpdate as Parameters<typeof createBlock>[2],\n            ),\n          );\n        };\n        // mount?.(true)\n      }\n      return () => {\n        removeBlock.call(currentBlock);\n      };\n    }, []);\n\n    const marker = useMemo(() => {\n      if (noSlot) {\n        return null;\n      }\n      return createElement(options?.as ?? defaultType, { ref });\n    }, []);\n\n    const childrenSize = portalRef.current.length;\n    const children = new Array(childrenSize);\n    for (let i = 0; i < childrenSize; ++i) {\n      children[i] = portalRef.current[i]?.portal;\n    }\n\n    const vnode = createElement(\n      Fragment,\n      {},\n      marker,\n      createElement(Effect, {\n        effect,\n        deps: hmrTimestamp ? [hmrTimestamp] : [],\n      }),\n      children,\n    );\n\n    return vnode;\n  };\n\n  if (!MapHas$.call(REGISTRY, MillionBlock)) {\n    MapSet$.call(REGISTRY, MillionBlock, block);\n  }\n\n  // TODO add dev guard\n  if (options?.name) {\n    if (fn) {\n      fn.displayName = `Million(Render(${options.name}))`;\n    }\n    MillionBlock.displayName = `Million(Block(${options.name}))`;\n  }\n\n  return MillionBlock<P>;\n};\n"
  },
  {
    "path": "packages/react/compiled-block.ts",
    "content": "// The following code are for the compield `block` components\nimport type { ReactPortal, ComponentType, JSX } from 'react';\nimport { createElement, useState, useContext, Fragment } from 'react';\nimport type { MillionPortal, MillionProps, Options } from '../types';\nimport { block } from './block';\nimport { renderReactScope, scopedContext } from './utils';\n\nfunction isEqual(a: unknown, b: unknown): boolean {\n  // Faster than Object.is\n  // eslint-disable-next-line no-self-compare\n  return a === b || (a !== a && b !== b);\n}\n\nfunction shouldCompiledBlockUpdate(\n  prev: MillionProps,\n  next: MillionProps,\n): boolean {\n  for (const key in prev) {\n    if (!isEqual(prev[key], next[key])) {\n      return true;\n    }\n  }\n  return false;\n}\n\ninterface CompiledBlockOptions\n  extends Omit<Options<MillionProps>, 'shouldUpdate'> {\n  portals?: string[];\n}\n\nexport function compiledBlock(\n  render: (props: MillionProps) => JSX.Element,\n  { portals, ...options }: CompiledBlockOptions,\n): ComponentType<MillionProps> {\n  const blockName = `CompiledBlock(Inner(${options.name}))`;\n  const RenderBlock = block<MillionProps>((props) => render(props), {\n    ...options,\n    scoped: undefined,\n    name: blockName,\n    shouldUpdate: shouldCompiledBlockUpdate,\n  });\n\n  const portalCount = portals?.length || 0;\n\n  const Component: ComponentType<MillionProps> =\n    portals && portalCount > 0\n      ? (props: MillionProps) => {\n          const scoped = useContext(scopedContext);\n          const [current] = useState<MillionPortal[]>(() => []);\n\n          const derived = { ...props, scoped };\n\n          for (let i = 0; i < portalCount; i++) {\n            const index = portals[i]!;\n            const scope = renderReactScope(\n              derived[index] as JSX.Element,\n              false,\n              current,\n              i,\n            );\n            derived[index] = scope;\n          }\n\n          const targets: ReactPortal[] = [];\n\n          for (let i = 0, len = current.length; i < len; i++) {\n            targets[i] = current[i]!.portal;\n          }\n\n          return createElement(\n            Fragment,\n            null,\n            createElement(RenderBlock, derived),\n            targets,\n          );\n        }\n      : (props: MillionProps) => createElement(RenderBlock, props);\n\n  // TODO dev mode\n  if (options.name) {\n    Component.displayName = `Million(CompiledBlock(Outer(${options.name})))`;\n  }\n\n  return Component;\n}\n"
  },
  {
    "path": "packages/react/constants.ts",
    "content": "import { useEffect } from 'react';\nimport type { ComponentType, DependencyList } from 'react';\n\nexport const RENDER_SCOPE = 'slot';\nexport const SVG_RENDER_SCOPE = 'g';\nexport const REACT_ROOT = '__react_root';\n\nexport const Effect = ({\n  effect,\n  deps,\n}: {\n  effect: () => void;\n  deps?: DependencyList;\n}): null => {\n  useEffect(effect, deps || []);\n  return null;\n};\n\nexport const REGISTRY = new Map<ComponentType, any>();\n"
  },
  {
    "path": "packages/react/for.ts",
    "content": "import {\n  Fragment,\n  createElement,\n  memo,\n  useEffect,\n  useRef,\n  useState,\n} from 'react';\nimport type { MutableRefObject } from 'react';\nimport { arrayMount$, arrayPatch$ } from '../million/array';\nimport { mapArray, block as createBlock } from '../million';\nimport { MapSet$, MapHas$, MapGet$ } from '../million/constants';\nimport type { Block } from '../million';\nimport type {\n  ArrayCache,\n  MillionArrayProps,\n  MillionPortal,\n  MillionProps,\n} from '../types';\nimport { renderReactScope } from './utils';\nimport { RENDER_SCOPE, REGISTRY, SVG_RENDER_SCOPE } from './constants';\n\nconst MillionArray = <T>({\n  each,\n  children,\n  memo,\n  svg,\n  as,\n  ...rest\n}: MillionArrayProps<T>): ReturnType<typeof createElement> => {\n  const ref = useRef<HTMLElement>(null);\n  const [portals] = useState<{ current: MillionPortal[] }>(() => ({\n    current: Array(each.length),\n  }));\n  const fragmentRef = useRef<ReturnType<typeof mapArray> | null>(null);\n  const cache = useRef<ArrayCache<T>>({\n    each: null,\n    children: null,\n    mounted: false,\n  });\n  const [, setMountPortals] = useState(false);\n\n  if (fragmentRef.current && (each !== cache.current.each || !memo)) {\n    // queueMicrotask$(() => {\n    const newChildren = createChildren<T>(each, children, cache, portals, memo);\n    arrayPatch$.call(fragmentRef.current, mapArray(newChildren));\n    // });\n  }\n\n  const defaultType = svg ? SVG_RENDER_SCOPE : RENDER_SCOPE;\n  const MillionFor = createElement(\n    Fragment,\n    null,\n    createElement(as ?? defaultType, { ...rest, ref }),\n    ...portals.current.map((p) => p.portal),\n  );\n  // console.log(portals.current, ref.current)\n\n  useEffect(() => {\n    if (!ref.current || fragmentRef.current) return;\n\n    // queueMicrotask$(() => {\n    if (cache.current.mounted) return;\n\n    const newChildren = createChildren<T>(each, children, cache, portals, memo);\n    fragmentRef.current = mapArray(newChildren);\n    if (!MapHas$.call(REGISTRY, MillionFor)) {\n      MapSet$.call(REGISTRY, MillionFor, fragmentRef.current);\n    }\n    arrayMount$.call(fragmentRef.current, ref.current);\n    cache.current.mounted = true;\n    setMountPortals(true);\n    // });\n  }, [ref.current]);\n\n  return MillionFor;\n};\n\n// Using fix below to add type support to MillionArray\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-542793243\nconst typedMemo: <T>(\n  component: T,\n  equal?: (oldProps: MillionProps, newProps: MillionProps) => boolean,\n) => T = memo;\n\nexport const For = typedMemo(MillionArray);\n\nconst createChildren = <T>(\n  each: T[],\n  getComponent: (value: T, i: number) => JSX.Element,\n  cache: MutableRefObject<ArrayCache<T>>,\n  portals: { current: MillionPortal[] },\n  memo?: boolean,\n): Block[] => {\n  const children = Array(each.length);\n  const currentCache = cache.current as any;\n  for (let i = 0, l = each.length; i < l; ++i) {\n    if (memo && currentCache.each && currentCache.each[i] === each[i]) {\n      children[i] = currentCache.children?.[i];\n      continue;\n    }\n    const vnode = getComponent(each[i]!, i);\n\n    if (MapHas$.call(REGISTRY, vnode.type)) {\n      if (!currentCache.block) {\n        currentCache.block = MapGet$.call(REGISTRY, vnode.type)!;\n      }\n      children[i] = currentCache.block!(vnode.props, portals, i);\n      continue;\n    }\n\n    if (typeof vnode.type === 'function' && '_c' in vnode.type) {\n      const puppetComponent = vnode.type(vnode.props);\n      if (MapHas$.call(REGISTRY, puppetComponent.type)) {\n        const puppetBlock = MapGet$.call(REGISTRY, puppetComponent.type)!;\n        if (typeof puppetBlock === 'function') {\n          children[i] = puppetBlock(puppetComponent.props);\n          continue;\n        }\n      }\n    }\n\n    const block = createBlock((props?: MillionProps) => props?.scope);\n    const currentBlock = (\n      props: MillionProps,\n      portals: { current: MillionPortal[] },\n      index: number,\n    ): ReturnType<typeof block> => {\n      return block(\n        {\n          scope: renderReactScope(\n            createElement(vnode.type, props),\n            false,\n            portals.current,\n            index,\n          ),\n        },\n        vnode.key ? String(vnode.key) : undefined,\n      );\n    };\n\n    MapSet$.call(REGISTRY, vnode.type, currentBlock);\n    currentCache.block = currentBlock as any;\n    children[i] = currentBlock(vnode.props, portals, i);\n  }\n  currentCache.each = each;\n  currentCache.children = children;\n  return children;\n};\n"
  },
  {
    "path": "packages/react/index.ts",
    "content": "import { block as internalBlock, patch, mount } from '../million';\n\nexport { block } from './block';\nexport { For } from './for';\nexport { renderReactScope, unwrap } from './utils';\nexport { REGISTRY } from './constants';\nexport const INTERNALS = {\n  block: internalBlock,\n  patch,\n  mount,\n};\n\nexport { removeComments } from '../million/dom';\n\nexport { compiledBlock } from './compiled-block';\n\nif (typeof window !== 'undefined') {\n  (window as any).__MILLION_DATA__ = {\n    version: process.env.VERSION,\n  };\n}\n"
  },
  {
    "path": "packages/react/its-fine.tsx",
    "content": "// MIT License\n\n// Copyright (c) 2022 Poimandres\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport {\n  useRef,\n  useState,\n  useEffect,\n  useLayoutEffect as uLE,\n} from 'react';\nimport type ReactReconciler from 'react-reconciler';\n\n// avoid hydration errors in server\nconst useLayoutEffect = typeof window === 'undefined' ? useEffect : uLE;\n\n/**\n * Represents a react-internal Fiber node.\n */\nexport type Fiber = ReactReconciler.Fiber;\n\n/**\n * Represents a {@link Fiber} node selector for traversal.\n */\nexport type FiberSelector = (node: Fiber) => boolean | void;\n\n/**\n * Traverses up or down a {@link Fiber}, return `true` to stop and select a node.\n */\nexport function traverse(\n  /** Input {@link Fiber} to traverse. */\n  fiber: Fiber,\n  /** A {@link Fiber} node selector, returns the first match when `true` is passed. */\n  selector: FiberSelector,\n  /** Whether to ascend and walk up the tree. Will walk down if `false`. Default is `false`. */\n  ascending: boolean,\n): Fiber | undefined {\n  if (!fiber || selector(fiber)) return fiber;\n\n  let child = ascending ? fiber.return : fiber.child;\n  while (child) {\n    const match = traverse(child, selector, ascending);\n    if (match) return match;\n\n    child = ascending ? null : child.sibling;\n  }\n}\n\n/**\n * Returns the current react-internal {@link Fiber}. This is an implementation detail of [react-reconciler](https://github.com/facebook/react/tree/main/packages/react-reconciler).\n */\nexport function useFiber(): Fiber {\n  const fiber = useRef<Fiber>();\n\n  useState(() => {\n    const bind = Function.prototype.bind;\n    Function.prototype.bind = function (self, maybeFiber) {\n      if (self === null && typeof maybeFiber?.type === 'function') {\n        fiber.current = maybeFiber;\n        Function.prototype.bind = bind;\n      }\n      return bind.apply(this, arguments as any);\n    };\n  });\n\n  return fiber.current!;\n}\n\n/**\n * Returns the nearest react-reconciler parent instance or the node created from {@link ReactReconciler.HostConfig.createInstance}.\n *\n * In react-dom, this would be a DOM element; in react-three-fiber this would be an instance descriptor.\n */\nexport function useNearestParent<\n  T extends any,\n  B extends { el: T; depth: number } = { el: T; depth: number },\n>(\n  /** An optional element type to filter to. */\n  type?: keyof JSX.IntrinsicElements,\n): React.MutableRefObject<B | undefined> {\n  const fiber = useFiber();\n  const parentRef = useRef<B>({ el: null as any, depth: 0 } as B);\n\n  useLayoutEffect(() => {\n    parentRef.current.el = traverse(\n      fiber,\n      (node) => {\n        parentRef.current.depth++;\n\n        return (\n          typeof node.type === 'string' &&\n          (type === undefined || node.type === type)\n        );\n      },\n      true,\n    )?.stateNode;\n  }, [fiber]);\n\n  return parentRef;\n}\n\n/**\n * Returns the current react-reconciler container info passed to {@link ReactReconciler.Reconciler.createContainer}.\n *\n * In react-dom, a container will point to the root DOM element; in react-three-fiber, it will point to the root Zustand store.\n */\nexport function useContainer<\n  T extends any,\n  B extends { el: T; depth: number } = { el: T; depth: number },\n>(): React.MutableRefObject<B | undefined> {\n  const fiber = useFiber();\n  const rootRef = useRef<B>({ el: null as any, depth: 0 } as B);\n\n  useLayoutEffect(() => {\n    rootRef.current.el = traverse(\n      fiber,\n      (node) => {\n        rootRef.current.depth++;\n        return node.stateNode?.containerInfo != null;\n      },\n      true,\n    )?.stateNode.containerInfo;\n  }, [fiber]);\n\n  return rootRef;\n}\n\nexport function useNearestParentFiber(\n  /** An optional element type to filter to. */\n  type?: keyof JSX.IntrinsicElements,\n): Fiber {\n  const fiber = useFiber();\n  const parentRef = useRef<Fiber>();\n\n  useState(() => {\n    parentRef.current = traverse(\n      fiber,\n      (node) =>\n        typeof node.type === 'string' &&\n        (type === undefined || node.type === type),\n      true,\n    );\n  });\n\n  return parentRef.current!;\n}\n"
  },
  {
    "path": "packages/react/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.0.28\",\n    \"@types/react-dom\": \"^18.0.11\"\n  }\n}\n"
  },
  {
    "path": "packages/react/utils.ts",
    "content": "import { Fragment, createContext, createElement, isValidElement } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { ComponentProps, ReactNode, Ref } from 'react';\nimport type { VNode } from '../million';\nimport type { MillionPortal } from '../types';\nimport { REGISTRY, RENDER_SCOPE } from './constants';\n\nexport const scopedContext = createContext<boolean>(false);\n\n// TODO: access perf impact of this\nexport const processProps = (\n  props: ComponentProps<any>,\n  ref: Ref<any>,\n  portals: MillionPortal[],\n): ComponentProps<any> => {\n  const processedProps: ComponentProps<any> = { ref };\n\n  let currentIndex = 0;\n\n  for (const key in props) {\n    const value = props[key];\n    if (\n      isValidElement(value) ||\n      (Array.isArray(value) && value.length && isValidElement(value[0]))\n    ) {\n      processedProps[key] = renderReactScope(\n        value,\n        false,\n        portals,\n        currentIndex++,\n      );\n\n      continue;\n    }\n    processedProps[key] = props[key];\n  }\n\n  return processedProps;\n};\n\nconst wrap = (vnode: ReactNode, key?: string): ReactNode => {\n  return createElement(\n    RENDER_SCOPE,\n    { suppressHydrationWarning: true, id: key },\n    vnode,\n  );\n};\n\nexport const renderReactScope = (\n  vnode: ReactNode,\n  unstable: boolean,\n  portals: MillionPortal[] | undefined,\n  currentIndex: number,\n  key?: string,\n) => {\n  const el = portals?.[currentIndex]?.current;\n\n  const isBlock =\n    isValidElement(vnode) &&\n    typeof vnode.type === 'function' &&\n    '_c' in vnode.type;\n  const isCallable = isBlock && (vnode.type as any)._c;\n\n  if (typeof window === 'undefined') {\n    if (isBlock) {\n      if (isCallable) {\n        return vnode;\n      }\n      return wrap(wrap(vnode), key);\n    }\n    return wrap(vnode, key);\n  }\n\n  if (isCallable) {\n    const puppetComponent = (vnode.type as any)(vnode.props);\n    if (REGISTRY.has(puppetComponent.type)) {\n      const puppetBlock = REGISTRY.get(puppetComponent.type)!;\n      if (typeof puppetBlock === 'function') {\n        return puppetBlock(puppetComponent.props);\n      }\n    }\n  }\n\n  const current =\n    el ??\n    (key ? document.getElementById(key) : null) ??\n    document.createElement(RENDER_SCOPE);\n  const reactPortal = createPortal(\n    createElement(Fragment, { children: vnode }),\n    current,\n    key,\n  );\n\n  const millionPortal = {\n    foreign: true as const,\n    current,\n    portal: reactPortal,\n    reset: (child: Node) => {\n      child.childNodes.forEach((cn) => child.removeChild(cn));\n    },\n    unstable,\n  };\n  if (portals) {\n    portals[currentIndex] = millionPortal;\n  }\n\n  return millionPortal;\n};\n\nexport const unwrap = (vnode: JSX.Element | null): VNode => {\n  if (typeof vnode !== 'object' || vnode === null || !('type' in vnode)) {\n    if (typeof vnode === 'number') {\n      return String(vnode);\n    }\n    return vnode;\n  }\n\n  let type = vnode.type;\n  if (typeof type === 'function') {\n    return unwrap(type(vnode.props ?? {}));\n  }\n  if (typeof type === 'object' && '$' in type) return type;\n\n  const props = { ...vnode.props };\n  // emotion support\n  if ('css' in props && '__EMOTION_TYPE_PLEASE_DO_NOT_USE__' in props) {\n    props.style = props.css.styles;\n    type = props.__EMOTION_TYPE_PLEASE_DO_NOT_USE__;\n    delete props.__EMOTION_TYPE_PLEASE_DO_NOT_USE__;\n    delete props.css;\n  }\n  const children = vnode.props?.children;\n  if (children !== undefined && children !== null) {\n    props.children = flatten(vnode.props.children).map((child) =>\n      unwrap(child),\n    );\n  }\n\n  return {\n    type, // lets pretend no function go through\n    props,\n  };\n};\n\nexport const flatten = (rawChildren?: JSX.Element | null): JSX.Element[] => {\n  if (rawChildren === undefined || rawChildren === null) return [];\n  if (\n    typeof rawChildren === 'object' &&\n    'type' in rawChildren &&\n    rawChildren.type === Fragment\n  ) {\n    return flatten(rawChildren.props.children);\n  }\n  if (\n    !Array.isArray(rawChildren) ||\n    (typeof rawChildren === 'object' && '$' in rawChildren)\n  ) {\n    return [rawChildren];\n  }\n  const flattenedChildren = rawChildren.flat(Infinity);\n  const children: JSX.Element[] = [];\n  for (let i = 0, l = flattenedChildren.length; i < l; ++i) {\n    children.push(...flatten(flattenedChildren[i]));\n  }\n  return children;\n};\n"
  },
  {
    "path": "packages/react-server/README.md",
    "content": "# `million/react-server`\n"
  },
  {
    "path": "packages/react-server/index.ts",
    "content": "import type {\n  ComponentType,\n  ForwardedRef,\n  JSX,\n  PropsWithChildren,\n  ReactElement,\n  ReactNode,\n  ReactPortal,\n} from 'react';\nimport {\n  Fragment,\n  createElement,\n  forwardRef,\n  memo,\n  useCallback,\n  useEffect,\n  useLayoutEffect as uLE,\n  useRef,\n  useState,\n} from 'react';\nimport parse from 'html-react-parser';\nimport { RENDER_SCOPE, SVG_RENDER_SCOPE } from '../react/constants';\nimport type {\n  MillionArrayProps,\n  MillionPortal,\n  MillionProps,\n  Options,\n} from '../types';\nimport { renderReactScope } from '../react/utils';\n// eslint-disable-next-line camelcase\nimport { experimental_options } from '../experimental';\nimport { useContainer, useNearestParent } from '../react/its-fine';\nimport { useSSRSafeId } from './utils';\n\nconst useLayoutEffect = typeof window === 'undefined' ? useEffect : uLE;\nlet globalInfo;\n\nexport const block = <P extends MillionProps>(\n  Component: ComponentType<P>,\n  options: Options<P> = {},\n): ComponentType<P> => {\n  // eslint-disable-next-line camelcase\n  const noSlot = options.experimental_noSlot ?? experimental_options.noSlot;\n  let blockFactory = globalInfo ? globalInfo.block(Component, options) : null;\n\n  const rscBoundary = options.rsc\n    ? createRSCBoundary(Component, noSlot, options.svg)\n    : null;\n\n  function MillionBlockLoader(props?: P) {\n    const container = useContainer<HTMLElement>(); // usable when there's no parent other than the root element\n    const parentRef = useNearestParent<HTMLElement>();\n    const id = useSSRSafeId();\n    const initializedRef = useRef(false);\n    const ref = useRef<HTMLElement | null>(null);\n    const patch = useRef<((props: P) => void) | null>(null);\n\n    const effect = useCallback(() => {\n      const init = (): void => {\n        if (!ref.current && !noSlot) return;\n\n        if (noSlot) {\n          ref.current = (parentRef.current?.el ?? container.current?.el)!;\n          // the parentRef depth is only bigger than container depth when we're in a portal, where the portal el is closer than the jsx parent\n          if (\n            props?.scoped ||\n            (parentRef.current &&\n              container.current &&\n              parentRef.current.depth > container.current.depth)\n          ) {\n            // in portals, parentRef is not the proper parent\n            ref.current = container.current!.el;\n          }\n          if (ref.current.childNodes.length) {\n            // eslint-disable-next-line no-console\n            console.error(\n              new Error(`\\`experimental_options.noSlot\\` does not support having siblings at the moment.\n  The block element should be the only child of the \\`${\n    (ref.current.cloneNode() as HTMLElement).outerHTML\n  }\\` element.\n  To avoid this error, \\`experimental_options.noSlot\\` should be false`),\n            );\n          }\n        }\n        const el = ref.current!;\n\n        globalInfo.removeComments(el);\n\n        const currentBlock = blockFactory(props, props?.key);\n\n        globalInfo.mount(currentBlock, el, el.firstChild);\n        patch.current = (newProps: P) => {\n          globalInfo.patch(currentBlock, blockFactory(newProps, newProps.key));\n        };\n      };\n\n      if (blockFactory && globalInfo) {\n        init();\n      } else if (!initializedRef.current) {\n        initializedRef.current = true;\n        importSource(() => {\n          if (!initializedRef.current) {\n            return;\n          }\n          blockFactory = globalInfo.block(\n            Component,\n            globalInfo.unwrap,\n            options.shouldUpdate,\n            options.svg,\n          );\n\n          init();\n        });\n      }\n\n      return () => {\n        // initializedRef.current = false\n        blockFactory = null;\n      };\n    }, []);\n\n    patch.current?.(props!);\n\n    const vnode = createElement(\n      Fragment,\n      null,\n      createElement(Effect, { effect }),\n      rscBoundary\n        ? createElement(rscBoundary, { ...props, ref } as any)\n        : createSSRBoundary<P>(\n            Component as any,\n            props!,\n            ref,\n            noSlot,\n            id,\n            options.svg,\n          ),\n    );\n    return vnode;\n  }\n\n  // TODO add dev guard\n  if (options.name) {\n    Component.displayName = `Render(Million(${options.name}))`;\n    MillionBlockLoader.displayName = `Block(Million(${options.name}))`;\n  }\n\n  return MillionBlockLoader;\n};\n\nexport function For<T>({ each, children, ssr, svg }: MillionArrayProps<T>) {\n  const [ready, setReady] = useState(Boolean(globalInfo));\n\n  useEffect(() => {\n    if (!globalInfo) {\n      importSource(() => {\n        setReady(true);\n      });\n    }\n  }, []);\n\n  if (!ready || !globalInfo) {\n    if (ssr === false) return null;\n    return createElement(\n      svg ? SVG_RENDER_SCOPE : RENDER_SCOPE,\n      { suppressHydrationWarning: true },\n      ...each.map(children),\n    );\n  }\n\n  return createElement(globalInfo.For, {\n    each,\n    children,\n    ssr,\n    svg,\n  });\n}\n\nfunction Effect({ effect }: { effect: () => void }) {\n  useEffect(effect, []);\n  return null;\n}\n\nexport const importSource = (callback: () => void) => {\n  void import('../react')\n    .then(({ unwrap, INTERNALS, For, compiledBlock, removeComments }) => {\n      globalInfo = {\n        unwrap,\n        For,\n        compiledBlock,\n        removeComments,\n        ...INTERNALS,\n      };\n\n      callback();\n    })\n    .catch((e) => {\n      throw new Error(`Failed to load Million.js: ${e}`);\n    });\n};\n\nif (typeof window !== 'undefined') {\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  importSource(() => {});\n}\nconst ssrElementsMap = new Map<string, ReactElement>();\nexport const createSSRBoundary = <P extends MillionProps>(\n  Component: ComponentType<P>,\n  props: P,\n  ref: ForwardedRef<unknown>,\n  noSlot: boolean,\n  id: string,\n  svg = false,\n) => {\n  const isServer = typeof window === 'undefined';\n  if (noSlot) {\n    return createElement(\n      Fragment,\n      null,\n      createHydrationBoundary(id, 'start', isServer),\n\n      createElement(Suspend, {\n        children: createElement<P>(Component, props),\n        id,\n      }),\n      createHydrationBoundary(id, 'end', isServer),\n    );\n  }\n  const ssrProps = isServer\n    ? {\n        children: createElement<P>(Component, props),\n      }\n    : {\n        dangerouslySetInnerHTML: {\n          __html: document.getElementById(id)?.innerHTML || \"\",\n        },\n      };\n  if (ssrElementsMap.has(id)) {\n    return ssrElementsMap.get(id)!;\n  }\n\n  const el = createElement(svg ? SVG_RENDER_SCOPE : RENDER_SCOPE, {\n    suppressHydrationWarning: true,\n    ref,\n    id,\n    ...ssrProps,\n  });\n  ssrElementsMap.set(id, el);\n  return el;\n};\n\nconst thrown = new Map();\n\nfunction Suspend({\n  children,\n  id,\n}: PropsWithChildren<{ id: string }>): ReactNode {\n  if (typeof window === 'undefined') {\n    return children;\n  }\n\n  let html = '';\n  const startTemplate = document.getElementById(`start-${id}`);\n  const endTemplate = document.getElementById(`end-${id}`);\n  if (!thrown.has(id) && startTemplate && endTemplate) {\n    let el = startTemplate.nextElementSibling;\n    while (el && el !== endTemplate) {\n      html += el.outerHTML;\n      el = el.nextElementSibling;\n    }\n    startTemplate.remove();\n    endTemplate.remove();\n    thrown.set(id, parse(html));\n    // eslint-disable-next-line @typescript-eslint/no-throw-literal\n    throw Promise.resolve();\n  }\n  // we can return null to avoid parsing but this would cause a flashing\n  return thrown.get(id);\n}\n\nconst createHydrationBoundary = (\n  id: string,\n  phase: 'start' | 'end',\n  isSSR: boolean,\n) => {\n  // TODO: Better to use html commnts which are not allowed in React\n  return isSSR ? createElement('template', { id: `${phase}-${id}` }) : null;\n};\n\nexport const createRSCBoundary = <P extends MillionProps>(\n  Component: ComponentType<P>,\n  noSlot: boolean,\n  svg = false,\n) => {\n  return memo(\n    forwardRef((props: P, ref) => {\n      const id = useSSRSafeId();\n      return createSSRBoundary(Component, props, ref, noSlot, id, svg);\n    }),\n    () => true,\n  );\n};\n\nfunction isEqual(a: unknown, b: unknown): boolean {\n  // Faster than Object.is\n  // eslint-disable-next-line no-self-compare\n  return a === b || (a !== a && b !== b);\n}\n\nfunction shouldCompiledBlockUpdate(\n  prev: MillionProps,\n  next: MillionProps,\n): boolean {\n  for (const key in prev) {\n    if (!isEqual(prev[key], next[key])) {\n      return true;\n    }\n  }\n  return false;\n}\n\ninterface CompiledBlockOptions\n  extends Omit<Options<MillionProps>, 'shouldUpdate'> {\n  portals?: string[];\n}\n\n// TODO Fix SSR\nexport function compiledBlock(\n  render: (props: MillionProps) => JSX.Element,\n  { portals, ...options }: CompiledBlockOptions,\n): ComponentType<MillionProps> {\n  const RenderBlock = block<MillionProps>((props) => render(props), {\n    ...options,\n    name: `CompiledBlock(Inner(${options.name}))`,\n    shouldUpdate: shouldCompiledBlockUpdate,\n  });\n\n  const portalCount = portals?.length || 0;\n\n  const Component: ComponentType<MillionProps> =\n    portals && portalCount > 0\n      ? (props: MillionProps) => {\n          const id = useSSRSafeId();\n          const [current] = useState<MillionPortal[]>(() => []);\n          const [firstRender, setFirstRender] = useState(true);\n\n          const derived = { ...props };\n\n          for (let i = 0; i < portalCount; i++) {\n            const index = portals[i]!;\n            derived[index] = renderReactScope(\n              derived[index] as JSX.Element,\n              false,\n              current,\n              i,\n              `${id}:${index}`,\n            );\n          }\n          const targets: ReactPortal[] = [];\n\n          useLayoutEffect(() => {\n            // showing targets for the first render causes hydration error!\n            setFirstRender(false);\n          }, []);\n          for (let i = 0, len = current.length; i < len; i++) {\n            targets[i] = current[i]!.portal;\n          }\n\n          return createElement(\n            Fragment,\n            {},\n            createElement(RenderBlock, derived),\n            !firstRender ? targets : undefined,\n          );\n        }\n      : (props: MillionProps) => createElement(RenderBlock, props);\n\n  // TODO dev mode\n  if (options.name) {\n    Component.displayName = `Million(CompiledBlock(Outer(${options.name})))`;\n  }\n\n  return Component;\n}\n"
  },
  {
    "path": "packages/react-server/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.0.28\",\n    \"@types/react-dom\": \"^18.2.6\",\n    \"html-react-parser\": \"^5.1.6\"\n  }\n}\n"
  },
  {
    "path": "packages/react-server/utils.ts",
    "content": "/* eslint-disable */\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport type { ReactNode } from 'react';\nimport React, { useContext, useRef, useState } from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n  prefix: string;\n  current: number;\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nexport const defaultContext: SSRContextValue = {\n  prefix: String(Math.round(Math.random() * 10000000000)),\n  current: 0,\n};\n\nconst SSRContext = React.createContext<SSRContextValue>(defaultContext);\nconst IsSSRContext = React.createContext(false);\n\nexport interface SSRProviderProps {\n  /** Your application here. */\n  children: ReactNode;\n}\n\n// // This is only used in React < 18.\n// function LegacySSRProvider(props: SSRProviderProps): JSX.Element {\n//   let cur = useContext(SSRContext);\n//   let counter = useCounter(cur === defaultContext);\n//   let [isSSR, setIsSSR] = useState(true);\n//   let value: SSRContextValue = useMemo(() => ({\n//     // If this is the first SSRProvider, start with an empty string prefix, otherwise\n//     // append and increment the counter.\n//     prefix: cur === defaultContext ? '' : `${cur.prefix}-${counter}`,\n//     current: 0\n//   }), [cur, counter]);\n\n//   // If on the client, and the component was initially server rendered,\n//   // then schedule a layout effect to update the component after hydration.\n//   if (typeof document !== 'undefined') {\n//     // This if statement technically breaks the rules of hooks, but is safe\n//     // because the condition never changes after mounting.\n//     // eslint-disable-next-line react-hooks/rules-of-hooks\n//     useLayoutEffect(() => {\n//       setIsSSR(false);\n//     }, []);\n//   }\n\n//   return (\n//     <SSRContext.Provider value={value}>\n//       <IsSSRContext.Provider value={isSSR}>\n//         {props.children}\n//       </IsSSRContext.Provider>\n//     </SSRContext.Provider>\n//   );\n// }\n\nconst warnedAboutSSRProvider = false;\n\n// /**\n//  * When using SSR with React Aria in React 16 or 17, applications must be wrapped in an SSRProvider.\n//  * This ensures that auto generated ids are consistent between the client and server.\n//  */\n// export function SSRProvider(props: SSRProviderProps): JSX.Element {\n//   if (typeof React['useId'] === 'function') {\n//     if (process.env.NODE_ENV !== 'test' && !warnedAboutSSRProvider) {\n//       console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n//       warnedAboutSSRProvider = true;\n//     }\n//     return <>{props.children}</>;\n//   }\n//   return <LegacySSRProvider {...props} />;\n// }\n\nconst canUseDOM = Boolean(\n  typeof window !== 'undefined' &&\n    window.document &&\n    window.document.createElement,\n);\n\nconst componentIds = new WeakMap();\n\nfunction useCounter(isDisabled = false) {\n  const ctx = useContext(SSRContext);\n  const ref = useRef<number | null>(null);\n  // eslint-disable-next-line rulesdir/pure-render\n  if (ref.current === null && !isDisabled) {\n    // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n    // This means our id counter will be incremented twice instead of once. This is a problem because on the\n    // server, components are only rendered once and so ids generated on the server won't match the client.\n    // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n    // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n    // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n    // To ensure that we only increment the global counter once, we store the starting id for this component in\n    // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n    // Since React runs the second render immediately after the first, this is safe.\n    // @ts-expect-error\n    const currentOwner =\n      React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n        ?.ReactCurrentOwner?.current;\n    if (currentOwner) {\n      const prevComponentValue = componentIds.get(currentOwner);\n      if (prevComponentValue == null) {\n        // On the first render, and first call to useId, store the id and state in our weak map.\n        componentIds.set(currentOwner, {\n          id: ctx.current,\n          state: currentOwner.memoizedState,\n        });\n      } else if (currentOwner.memoizedState !== prevComponentValue.state) {\n        // On the second render, the memoizedState gets reset by React.\n        // Reset the counter, and remove from the weak map so we don't\n        // do this for subsequent useId calls.\n        ctx.current = prevComponentValue.id;\n        componentIds.delete(currentOwner);\n      }\n    }\n\n    // eslint-disable-next-line rulesdir/pure-render\n    ref.current = ++ctx.current;\n  }\n\n  // eslint-disable-next-line rulesdir/pure-render\n  return ref.current;\n}\n\nfunction useLegacySSRSafeId(defaultId?: string): string {\n  const ctx = useContext(SSRContext);\n\n  // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n  // provide a warning to hint to the developer to add one.\n  if (ctx === defaultContext && !canUseDOM) {\n    console.warn(\n      'When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.',\n    );\n  }\n\n  const counter = useCounter(Boolean(defaultId));\n  const prefix =\n    ctx === defaultContext && process.env.NODE_ENV === 'test'\n      ? 'million'\n      : `million${ctx.prefix}`;\n  return defaultId || `${prefix}-${counter}`;\n}\n\nfunction useModernSSRSafeId(defaultId?: string): string {\n  // @ts-expect-error\n  const id = React.useId();\n  const [didSSR] = useState(useIsSSR());\n  const prefix =\n    didSSR || process.env.NODE_ENV === 'test'\n      ? 'million'\n      : `million${defaultContext.prefix}`;\n  return defaultId || `${prefix}-${id}`;\n}\n\n// Use React.useId in React 18 if available, otherwise fall back to our old implementation.\n/** @private */\nexport const useSSRSafeId =\n  typeof React.useId === 'function' ? useModernSSRSafeId : useLegacySSRSafeId;\n\nfunction getSnapshot() {\n  return false;\n}\n\nfunction getServerSnapshot() {\n  return true;\n}\n\nfunction subscribe(onStoreChange: () => void): () => void {\n  // noop\n  return () => {};\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n  // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n  if (typeof React.useSyncExternalStore === 'function') {\n    return React.useSyncExternalStore(\n      subscribe,\n      getSnapshot,\n      getServerSnapshot,\n    );\n  }\n\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return useContext(IsSSRContext);\n}\n"
  },
  {
    "path": "packages/telemetry/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Fred K. Schott\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n\"\"\"\nThis license applies to parts of the `packages/create-astro` and `packages/astro` subdirectories originating from the https://github.com/sveltejs/kit repository:\n\nCopyright (c) 2020 [these people](https://github.com/sveltejs/kit/graphs/contributors)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"\"\"\n\n\n\"\"\"\nThis license applies to parts of the `packages/create-astro` and `packages/astro` subdirectories originating from the https://github.com/vitejs/vite repository:\n\nMIT License\n\nCopyright (c) 2019-present, Yuxi (Evan) You and Vite contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\"\"\""
  },
  {
    "path": "packages/telemetry/README.md",
    "content": "# Million Telemetry\n\nThis package contains the telemetry service for the compiler. It is responsible for collecting and sending telemetry data to the server.\n\nMost of the content is taken directly from [Astro's Telemetry service](https://github.com/withastro/astro/tree/1efd51fb4779bfc2f460a5c24fd902d2d39971ad/packages/telemetry).\n"
  },
  {
    "path": "packages/telemetry/config.ts",
    "content": "import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\n\nexport interface ConfigOptions {\n  name: string;\n}\n\n// Adapted from https://github.com/sindresorhus/env-paths\nconst getConfigDir = (name: string): string => {\n  const homedir = os.homedir();\n  const macos = (): string =>\n    path.join(homedir, 'Library', 'Preferences', name);\n  const win = (): string => {\n    const { APPDATA = path.join(homedir, 'AppData', 'Roaming') } = process.env;\n    return path.join(APPDATA, name, 'Config');\n  };\n  const linux = (): string => {\n    const { XDG_CONFIG_HOME = path.join(homedir, '.config') } = process.env;\n    return path.join(XDG_CONFIG_HOME, name);\n  };\n  switch (process.platform) {\n    case 'darwin':\n      return macos();\n    case 'win32':\n      return win();\n    default:\n      return linux();\n  }\n};\n\nexport class GlobalConfig {\n  private dir: string;\n  private file: string;\n\n  constructor(private project: ConfigOptions) {\n    this.dir = getConfigDir(this.project.name);\n    this.file = path.join(this.dir, 'config.json');\n  }\n\n  private _store?: Record<string, any>;\n  private get store(): Record<string, any> {\n    if (this._store) return this._store;\n    this.ensureDir();\n    if (fs.existsSync(this.file)) {\n      this._store = JSON.parse(fs.readFileSync(this.file).toString());\n    } else {\n      const store = {};\n      this._store = store;\n      this.write();\n    }\n    return this._store!;\n  }\n  private set store(value: Record<string, any>) {\n    this._store = value;\n    this.write();\n  }\n  private ensureDir(): void {\n    fs.mkdirSync(this.dir, { recursive: true });\n  }\n  write(): void {\n    fs.writeFileSync(this.file, JSON.stringify(this.store, null, '\\t'));\n  }\n  clear(): void {\n    this.store = {};\n    fs.rmSync(this.file, { recursive: true });\n  }\n  delete(key: string): boolean {\n    this.store[key] = undefined;\n    this.write();\n    return true;\n  }\n  get(key: string): any {\n    return this.store[key];\n  }\n  has(key: string): boolean {\n    return typeof this.get(key) !== 'undefined';\n  }\n  set(key: string, value: any): void {\n    this.store[key] = value;\n    this.write();\n  }\n}\n"
  },
  {
    "path": "packages/telemetry/index.ts",
    "content": "import { randomBytes } from 'node:crypto';\nimport { cyan } from 'kleur/colors';\nimport { isCI } from './utils/is-ci';\nimport { GlobalConfig } from './config';\nimport { post } from './post';\nimport { getProjectInfo, type ProjectInfo } from './project-info';\nimport { getSystemInfo, type SystemInfo } from './system-info';\n\nexport interface TelemetryEvent {\n  event: string;\n  payload: Record<string, any>;\n}\n\nexport class MillionTelemetry {\n  private _anonymousSessionId: string | undefined;\n  private _anonymousProjectInfo: ProjectInfo | undefined;\n  private config = new GlobalConfig({ name: 'million' });\n  private isCI = isCI;\n  private alreadyShowedImprovement = false;\n\n  constructor(private TELEMETRY_DISABLED = false) {\n    this.TELEMETRY_DISABLED = TELEMETRY_DISABLED;\n  }\n\n  private getConfigWithFallback<T>(key: string, getValue: () => T): T {\n    const currentValue = this.config.get(key);\n    if (currentValue !== undefined) {\n      return currentValue;\n    }\n    const newValue = getValue();\n    this.config.set(key, newValue);\n    return newValue;\n  }\n\n  private get enabled(): boolean {\n    return this.getConfigWithFallback('telemetry_enabled', () => true);\n  }\n\n  private get anonymousId(): string {\n    return this.getConfigWithFallback('telemetry_anonymousId', () =>\n      randomBytes(16).toString('hex'),\n    );\n  }\n\n  get anonymousSessionId(): string {\n    this._anonymousSessionId =\n      this._anonymousSessionId || randomBytes(16).toString('hex');\n    return this._anonymousSessionId;\n  }\n\n  private get anonymousProjectInfo(): ProjectInfo {\n    this._anonymousProjectInfo =\n      this._anonymousProjectInfo || getProjectInfo(this.isCI);\n    return this._anonymousProjectInfo;\n  }\n\n  private get isDisabled(): boolean {\n    if (this.TELEMETRY_DISABLED) {\n      return true;\n    }\n    return !this.enabled;\n  }\n\n  setEnabled(value: boolean): void {\n    this.config.set('telemetry_enabled', value);\n  }\n\n  clear(): void {\n    this.config.clear();\n  }\n\n  showWrapped(): void {\n    if (this.alreadyShowedImprovement) return;\n    this.alreadyShowedImprovement = true;\n\n    setTimeout(() => {\n      // eslint-disable-next-line no-console\n      console.log(\n        ` 🎁 Million Wrapped: ${cyan(\n          `https://million.dev/wrapped/${this.anonymousSessionId}`,\n        )}`,\n      );\n    }, 3000);\n  }\n\n  record({ event, payload }: TelemetryEvent): Promise<void> {\n    if (this.isDisabled) {\n      return Promise.resolve();\n    }\n\n    const meta: { system: SystemInfo; project: ProjectInfo } = {\n      system: getSystemInfo(),\n      project: this.anonymousProjectInfo,\n    };\n\n    // if (event === 'improvement') {\n    //   this.showWrapped();\n    // }\n\n    return post({\n      event,\n      anonymousId: meta.system.isCI\n        ? this.anonymousId\n        : `CI.${meta.system.ciName || 'UNKNOWN'}`,\n      anonymousSessionId: this.anonymousSessionId,\n      payload,\n      meta,\n    });\n  }\n}\n"
  },
  {
    "path": "packages/telemetry/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\"\n}\n"
  },
  {
    "path": "packages/telemetry/post.ts",
    "content": "/* eslint-disable */\nimport { fetch } from 'undici';\n\nif (\n  !('markResourceTiming' in performance) ||\n  typeof performance['markResourceTiming'] !== 'function'\n) {\n  performance['markResourceTiming'] = () => {};\n}\n\nconst MILLION_TELEMETRY_ENDPOINT =\n  'https://telemetry.million.dev/api/v1/record';\n\nexport const post = async (body: Record<string, any>): Promise<any> => {\n  try {\n    const response = await fetch(MILLION_TELEMETRY_ENDPOINT, {\n      method: 'POST',\n      body: JSON.stringify({ body }),\n      headers: { 'content-type': 'application/json' },\n    });\n    return response;\n  } catch (error) {\n    //\n  }\n};\n"
  },
  {
    "path": "packages/telemetry/project-info.ts",
    "content": "import { execSync } from 'node:child_process';\nimport type { BinaryLike } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport { detectPackageManager } from './utils/detect-package-manager';\n\nexport interface ProjectInfo {\n  anonymousProjectId: string | undefined;\n  isGit: boolean;\n  packageManager: string | undefined;\n  packageManagerVersion: string | undefined;\n}\n\nconst createAnonymousValue = (payload: BinaryLike): string => {\n  if (payload === '') {\n    return payload;\n  }\n  const hash = createHash('sha256');\n  hash.update(payload);\n  return hash.digest('hex');\n};\n\nconst getProjectIdFromGit = (): string | null => {\n  try {\n    const originBuffer = execSync(`git rev-list --max-parents=0 HEAD`, {\n      timeout: 500,\n      stdio: ['ignore', 'pipe', 'ignore'],\n    });\n    return String(originBuffer).trim();\n  } catch (_) {\n    return null;\n  }\n};\n\nconst getProjectId = (\n  isCI: boolean,\n): Pick<ProjectInfo, 'anonymousProjectId' | 'isGit'> => {\n  const projectIdFromGit = getProjectIdFromGit();\n  if (projectIdFromGit) {\n    return {\n      isGit: true,\n      anonymousProjectId: createAnonymousValue(projectIdFromGit),\n    };\n  }\n  // If we're running in CI, the current working directory is not unique.\n  // If the cwd is a single level deep (ex: '/app'), it's probably not unique.\n  const cwd = process.cwd();\n  const isCwdGeneric = (cwd.match(/[/|\\\\]/g) || []).length === 1;\n  if (isCI || isCwdGeneric) {\n    return {\n      isGit: false,\n      anonymousProjectId: undefined,\n    };\n  }\n  return {\n    isGit: false,\n    anonymousProjectId: createAnonymousValue(cwd),\n  };\n};\n\nexport const getProjectInfo = (isCI: boolean): ProjectInfo => {\n  const projectId = getProjectId(isCI);\n  const packageManager = detectPackageManager();\n  return {\n    ...projectId,\n    packageManager: packageManager?.name,\n    packageManagerVersion: packageManager?.version,\n  };\n};\n"
  },
  {
    "path": "packages/telemetry/system-info.ts",
    "content": "import os from 'node:os';\nimport { getCI, isCI } from './utils/is-ci';\nimport { isWSL } from './utils/is-wsl';\nimport { isDocker } from './utils/is-docker';\n\nexport interface SystemInfo {\n  systemPlatform: NodeJS.Platform;\n  systemRelease: string;\n  systemArchitecture: string;\n  nodeVersion: string;\n  cpuCount: number;\n  cpuModel: string | null;\n  cpuSpeed: number | null;\n  memoryInMb: number;\n  isDocker: boolean;\n  isWSL: boolean;\n  isCI: boolean;\n  ciName: string | null;\n}\n\nlet meta: SystemInfo | undefined;\n\nexport const getSystemInfo = (): SystemInfo => {\n  if (meta) {\n    return meta;\n  }\n\n  const cpus = os.cpus();\n\n  meta = {\n    // Version information\n    nodeVersion: process.version.replace(/^v?/, ''),\n    // Software information\n    systemPlatform: os.platform(),\n    systemRelease: os.release(),\n    systemArchitecture: os.arch(),\n    // Machine information\n    cpuCount: cpus.length,\n    cpuModel: cpus.length ? cpus[0]!.model : null,\n    cpuSpeed: cpus.length ? cpus[0]!.speed : null,\n    memoryInMb: Math.trunc(os.totalmem() / Math.pow(1024, 2)),\n    // Environment information\n    isDocker: isDocker(),\n    isWSL: isWSL(),\n    isCI,\n    ciName: getCI(),\n  };\n\n  return meta;\n};\n"
  },
  {
    "path": "packages/telemetry/utils/detect-package-manager.ts",
    "content": "interface PackageManager {\n  name: string;\n  version: string;\n}\n\nconst pmFromUserAgent = (userAgent: string): PackageManager | undefined => {\n  const pmSpec = userAgent.split(' ')[0];\n  if (!pmSpec) return undefined;\n  const separatorPos = pmSpec.lastIndexOf('/');\n  const name = pmSpec.substring(0, separatorPos);\n  return {\n    name: name === 'npminstall' ? 'cnpm' : name,\n    version: pmSpec.substring(separatorPos + 1),\n  };\n};\n\nexport const detectPackageManager = (): PackageManager | undefined => {\n  if (!process.env.npm_config_user_agent) {\n    return undefined;\n  }\n  return pmFromUserAgent(process.env.npm_config_user_agent);\n};\n"
  },
  {
    "path": "packages/telemetry/utils/is-ci.ts",
    "content": "const env = process.env;\n\ninterface Info {\n  name: string | null;\n  isPR?: boolean | null;\n}\n\nconst info: Info = {\n  name: null,\n  isPR: null,\n};\n\nconst init = (vendors): void => {\n  for (const vendor of vendors) {\n    const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env];\n    const isCI = envs.every((obj) => checkEnv(obj));\n\n    info[vendor.constant] = isCI;\n\n    if (!isCI) {\n      return;\n    }\n\n    info.name = vendor.name;\n\n    switch (typeof vendor.pr) {\n      case 'string':\n        info.isPR = Boolean(env[vendor.pr]);\n        break;\n      case 'object':\n        if ('env' in vendor.pr && vendor.pr.env) {\n          info.isPR =\n            vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne;\n        } else if ('any' in vendor.pr) {\n          info.isPR = vendor.pr.any?.some((key) => Boolean(env[key]));\n        } else {\n          info.isPR = checkEnv(vendor.pr);\n        }\n        break;\n      default:\n        info.isPR = null;\n    }\n  }\n};\n\nexport const getCI = (): string | null => info.name;\n\nexport const isCI = Boolean(\n  env.CI !== 'false' && // Bypass all checks if CI env is explicitly set to 'false'\n    (env.BUILD_ID || // Jenkins, Cloudbees\n      env.BUILD_NUMBER || // Jenkins, TeamCity\n      env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari\n      env.CI_APP_ID || // Appflow\n      env.CI_BUILD_ID || // Appflow\n      env.CI_BUILD_NUMBER || // Appflow\n      env.CI_NAME || // Codeship and others\n      env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI\n      env.RUN_ID || // TaskCluster, dsari\n      info.name ||\n      false),\n);\n\nconst checkEnv = (obj): boolean => {\n  if (typeof obj === 'string') return Boolean(env[obj]);\n\n  if ('env' in obj) {\n    return Boolean(env[obj.env] && env[obj.env]?.includes(obj.includes));\n  }\n  if ('any' in obj) {\n    return obj.any.some((k) => Boolean(env[k]));\n  }\n  return Object.keys(obj).every((k) => env[k] === obj[k]);\n};\n\nexport const VENDORS = [\n  {\n    name: 'Agola CI',\n    constant: 'AGOLA',\n    env: 'AGOLA_GIT_REF',\n    pr: 'AGOLA_PULL_REQUEST_ID',\n  },\n  {\n    name: 'Appcircle',\n    constant: 'APPCIRCLE',\n    env: 'AC_APPCIRCLE',\n  },\n  {\n    name: 'AppVeyor',\n    constant: 'APPVEYOR',\n    env: 'APPVEYOR',\n    pr: 'APPVEYOR_PULL_REQUEST_NUMBER',\n  },\n  {\n    name: 'AWS CodeBuild',\n    constant: 'CODEBUILD',\n    env: 'CODEBUILD_BUILD_ARN',\n  },\n  {\n    name: 'Azure Pipelines',\n    constant: 'AZURE_PIPELINES',\n    env: 'TF_BUILD',\n    pr: {\n      BUILD_REASON: 'PullRequest',\n    },\n  },\n  {\n    name: 'Bamboo',\n    constant: 'BAMBOO',\n    env: 'bamboo_planKey',\n  },\n  {\n    name: 'Bitbucket Pipelines',\n    constant: 'BITBUCKET',\n    env: 'BITBUCKET_COMMIT',\n    pr: 'BITBUCKET_PR_ID',\n  },\n  {\n    name: 'Bitrise',\n    constant: 'BITRISE',\n    env: 'BITRISE_IO',\n    pr: 'BITRISE_PULL_REQUEST',\n  },\n  {\n    name: 'Buddy',\n    constant: 'BUDDY',\n    env: 'BUDDY_WORKSPACE_ID',\n    pr: 'BUDDY_EXECUTION_PULL_REQUEST_ID',\n  },\n  {\n    name: 'Buildkite',\n    constant: 'BUILDKITE',\n    env: 'BUILDKITE',\n    pr: {\n      env: 'BUILDKITE_PULL_REQUEST',\n      ne: 'false',\n    },\n  },\n  {\n    name: 'CircleCI',\n    constant: 'CIRCLE',\n    env: 'CIRCLECI',\n    pr: 'CIRCLE_PULL_REQUEST',\n  },\n  {\n    name: 'Cirrus CI',\n    constant: 'CIRRUS',\n    env: 'CIRRUS_CI',\n    pr: 'CIRRUS_PR',\n  },\n  {\n    name: 'Codefresh',\n    constant: 'CODEFRESH',\n    env: 'CF_BUILD_ID',\n    pr: {\n      any: ['CF_PULL_REQUEST_NUMBER', 'CF_PULL_REQUEST_ID'],\n    },\n  },\n  {\n    name: 'Codemagic',\n    constant: 'CODEMAGIC',\n    env: 'CM_BUILD_ID',\n    pr: 'CM_PULL_REQUEST',\n  },\n  {\n    name: 'Codeship',\n    constant: 'CODESHIP',\n    env: {\n      CI_NAME: 'codeship',\n    },\n  },\n  {\n    name: 'Drone',\n    constant: 'DRONE',\n    env: 'DRONE',\n    pr: {\n      DRONE_BUILD_EVENT: 'pull_request',\n    },\n  },\n  {\n    name: 'dsari',\n    constant: 'DSARI',\n    env: 'DSARI',\n  },\n  {\n    name: 'Earthly',\n    constant: 'EARTHLY',\n    env: 'EARTHLY_CI',\n  },\n  {\n    name: 'Expo Application Services',\n    constant: 'EAS',\n    env: 'EAS_BUILD',\n  },\n  {\n    name: 'Gerrit',\n    constant: 'GERRIT',\n    env: 'GERRIT_PROJECT',\n  },\n  {\n    name: 'Gitea Actions',\n    constant: 'GITEA_ACTIONS',\n    env: 'GITEA_ACTIONS',\n  },\n  {\n    name: 'GitHub Actions',\n    constant: 'GITHUB_ACTIONS',\n    env: 'GITHUB_ACTIONS',\n    pr: {\n      GITHUB_EVENT_NAME: 'pull_request',\n    },\n  },\n  {\n    name: 'GitLab CI',\n    constant: 'GITLAB',\n    env: 'GITLAB_CI',\n    pr: 'CI_MERGE_REQUEST_ID',\n  },\n  {\n    name: 'GoCD',\n    constant: 'GOCD',\n    env: 'GO_PIPELINE_LABEL',\n  },\n  {\n    name: 'Google Cloud Build',\n    constant: 'GOOGLE_CLOUD_BUILD',\n    env: 'BUILDER_OUTPUT',\n  },\n  {\n    name: 'Harness CI',\n    constant: 'HARNESS',\n    env: 'HARNESS_BUILD_ID',\n  },\n  {\n    name: 'Heroku',\n    constant: 'HEROKU',\n    env: {\n      env: 'NODE',\n      includes: '/app/.heroku/node/bin/node',\n    },\n  },\n  {\n    name: 'Hudson',\n    constant: 'HUDSON',\n    env: 'HUDSON_URL',\n  },\n  {\n    name: 'Jenkins',\n    constant: 'JENKINS',\n    env: ['JENKINS_URL', 'BUILD_ID'],\n    pr: {\n      any: ['ghprbPullId', 'CHANGE_ID'],\n    },\n  },\n  {\n    name: 'LayerCI',\n    constant: 'LAYERCI',\n    env: 'LAYERCI',\n    pr: 'LAYERCI_PULL_REQUEST',\n  },\n  {\n    name: 'Magnum CI',\n    constant: 'MAGNUM',\n    env: 'MAGNUM',\n  },\n  {\n    name: 'Netlify CI',\n    constant: 'NETLIFY',\n    env: 'NETLIFY',\n    pr: {\n      env: 'PULL_REQUEST',\n      ne: 'false',\n    },\n  },\n  {\n    name: 'Nevercode',\n    constant: 'NEVERCODE',\n    env: 'NEVERCODE',\n    pr: {\n      env: 'NEVERCODE_PULL_REQUEST',\n      ne: 'false',\n    },\n  },\n  {\n    name: 'Prow',\n    constant: 'PROW',\n    env: 'PROW_JOB_ID',\n  },\n  {\n    name: 'ReleaseHub',\n    constant: 'RELEASEHUB',\n    env: 'RELEASE_BUILD_ID',\n  },\n  {\n    name: 'Render',\n    constant: 'RENDER',\n    env: 'RENDER',\n    pr: {\n      IS_PULL_REQUEST: 'true',\n    },\n  },\n  {\n    name: 'Sail CI',\n    constant: 'SAIL',\n    env: 'SAILCI',\n    pr: 'SAIL_PULL_REQUEST_NUMBER',\n  },\n  {\n    name: 'Screwdriver',\n    constant: 'SCREWDRIVER',\n    env: 'SCREWDRIVER',\n    pr: {\n      env: 'SD_PULL_REQUEST',\n      ne: 'false',\n    },\n  },\n  {\n    name: 'Semaphore',\n    constant: 'SEMAPHORE',\n    env: 'SEMAPHORE',\n    pr: 'PULL_REQUEST_NUMBER',\n  },\n  {\n    name: 'Sourcehut',\n    constant: 'SOURCEHUT',\n    env: {\n      CI_NAME: 'sourcehut',\n    },\n  },\n  {\n    name: 'Strider CD',\n    constant: 'STRIDER',\n    env: 'STRIDER',\n  },\n  {\n    name: 'TaskCluster',\n    constant: 'TASKCLUSTER',\n    env: ['TASK_ID', 'RUN_ID'],\n  },\n  {\n    name: 'TeamCity',\n    constant: 'TEAMCITY',\n    env: 'TEAMCITY_VERSION',\n  },\n  {\n    name: 'Travis CI',\n    constant: 'TRAVIS',\n    env: 'TRAVIS',\n    pr: {\n      env: 'TRAVIS_PULL_REQUEST',\n      ne: 'false',\n    },\n  },\n  {\n    name: 'Vela',\n    constant: 'VELA',\n    env: 'VELA',\n    pr: {\n      VELA_PULL_REQUEST: '1',\n    },\n  },\n  {\n    name: 'Vercel',\n    constant: 'VERCEL',\n    env: {\n      any: ['NOW_BUILDER', 'VERCEL'],\n    },\n    pr: 'VERCEL_GIT_PULL_REQUEST_ID',\n  },\n  {\n    name: 'Visual Studio App Center',\n    constant: 'APPCENTER',\n    env: 'APPCENTER_BUILD_ID',\n  },\n  {\n    name: 'Woodpecker',\n    constant: 'WOODPECKER',\n    env: {\n      CI: 'woodpecker',\n    },\n    pr: {\n      CI_BUILD_EVENT: 'pull_request',\n    },\n  },\n  {\n    name: 'Xcode Cloud',\n    constant: 'XCODE_CLOUD',\n    env: 'CI_XCODE_PROJECT',\n    pr: 'CI_PULL_REQUEST_NUMBER',\n  },\n  {\n    name: 'Xcode Server',\n    constant: 'XCODE_SERVER',\n    env: 'XCS',\n  },\n];\n\ninit(VENDORS);\n"
  },
  {
    "path": "packages/telemetry/utils/is-docker.ts",
    "content": "import fs from 'node:fs';\n\nlet isDockerCached: boolean | undefined;\n\nconst hasDockerEnv = (): boolean => {\n  try {\n    fs.statSync('/.dockerenv');\n    return true;\n  } catch {\n    return false;\n  }\n};\n\nconst hasDockerCGroup = (): boolean => {\n  try {\n    return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n  } catch {\n    return false;\n  }\n};\n\nexport const isDocker = (): boolean => {\n  if (isDockerCached === undefined) {\n    isDockerCached = hasDockerEnv() || hasDockerCGroup();\n  }\n\n  return isDockerCached;\n};\n"
  },
  {
    "path": "packages/telemetry/utils/is-inside-container.ts",
    "content": "import fs from 'node:fs';\nimport { isDocker } from './is-docker';\n\nlet cachedResult: boolean | undefined;\n\nconst hasContainerEnv = (): boolean => {\n  try {\n    fs.statSync('/run/.containerenv');\n    return true;\n  } catch {\n    return false;\n  }\n};\n\nexport const isInsideContainer = (): boolean => {\n  if (cachedResult === undefined) {\n    cachedResult = hasContainerEnv() || isDocker();\n  }\n\n  return cachedResult;\n};\n"
  },
  {
    "path": "packages/telemetry/utils/is-wsl.ts",
    "content": "import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport { isInsideContainer } from './is-inside-container';\n\nexport const isWSL = (): boolean => {\n  if (process.platform !== 'linux') {\n    return false;\n  }\n\n  if (os.release().toLowerCase().includes('microsoft')) {\n    if (isInsideContainer()) {\n      return false;\n    }\n\n    return true;\n  }\n\n  try {\n    return fs\n      .readFileSync('/proc/version', 'utf8')\n      .toLowerCase()\n      .includes('microsoft')\n      ? !isInsideContainer()\n      : false;\n  } catch {\n    return false;\n  }\n};\n"
  },
  {
    "path": "packages/types/README.md",
    "content": "# `million/types`\n"
  },
  {
    "path": "packages/types/index.ts",
    "content": "import type { ReactPortal } from 'react';\nimport type { block as createBlock } from '../million';\n\nexport type MillionProps = Record<string, any>;\n\nexport interface Options<T extends MillionProps> {\n  scoped?: true;\n  name?: string;\n  shouldUpdate?: (oldProps: T, newProps: T) => boolean;\n  block?: any;\n  ssr?: boolean;\n  svg?: boolean;\n  as?: string;\n  rsc?: boolean;\n  compiled?: boolean;\n  experimental_noSlot?: boolean;\n}\n\nexport interface MillionArrayProps<T> {\n  each: T[];\n  children: (value: T, i: number) => JSX.Element;\n  memo?: true;\n  ssr?: boolean;\n  svg?: boolean;\n  as?: string;\n  html?: string;\n  rsc?: boolean;\n  [key: string]: any;\n}\n\nexport interface ArrayCache<T> {\n  each: T[] | null;\n  children: T[] | null;\n  mounted: boolean;\n  block?: ReturnType<typeof createBlock>;\n}\n\nexport interface MillionPortal {\n  foreign: true;\n  current: HTMLElement;\n  portal: ReactPortal;\n  unstable?: boolean;\n}\n"
  },
  {
    "path": "packages/types/package.json",
    "content": "{\n  \"private\": true,\n  \"main\": \"./index.ts\",\n  \"module\": \"./index.ts\",\n  \"dependencies\": {\n    \"react\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.0.28\"\n  }\n}\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\n  - 'packages/*'\n  - 'website'\n  - 'playground'\n"
  },
  {
    "path": "react-server.d.ts",
    "content": "export * from './dist/packages/react-server';\n"
  },
  {
    "path": "react.d.ts",
    "content": "export * from './dist/packages/react';\n"
  },
  {
    "path": "test/alias.test.ts",
    "content": "import { describe, it } from 'vitest';\nimport type { VElement } from '../packages/million';\nimport { block as createBlock } from '../packages/million';\nimport type { MillionProps } from '../packages/types';\n\nconst fn = (props?: MillionProps): VElement => {\n  return {\n    type: 'div',\n    props: {\n      children: [\n        {\n          type: 'svg',\n          props: {\n            className: props?.bar,\n            strokeWidth: 1,\n            children: [\n              {\n                type: 'path',\n                props: {\n                  d: 'M9 12l2 2 4-4',\n                  strikethroughThickness: props.thickness,\n                },\n              },\n            ],\n          },\n        },\n      ],\n    },\n  };\n};\n\ndescribe.concurrent('block', () => {\n  it('should resolve alias', ({ expect }) => {\n    const block = createBlock(fn);\n    const main = block({ bar: 'bar', thickness: 2 });\n    main.m();\n    expect(main.l?.outerHTML).toEqual(\n      '<div><svg stroke-width=\"1\" class=\"bar\"><path d=\"M9 12l2 2 4-4\" strikethrough-thickness=\"2\"></path></svg></div>',\n    );\n  });\n});\n"
  },
  {
    "path": "test/block.test.ts",
    "content": "import { describe, it } from 'vitest';\nimport { block as createBlock } from '../packages/million';\nimport type { MillionProps } from '../packages/types';\nimport type { VElement } from '../packages/million';\n\nconst fn = (props?: MillionProps): VElement => {\n  return {\n    type: 'div',\n    props: {\n      children: [\n        {\n          type: 'h1',\n          props: {\n            children: ['Hello'],\n          },\n        },\n        ' World',\n        {\n          type: 'p',\n          props: {\n            title: 'baz',\n            className: props?.bar,\n            style: {\n              margin: props?.zoo,\n            },\n            children: [props?.foo],\n          },\n        },\n      ],\n    },\n  };\n};\n\ndescribe.concurrent('block', () => {\n  it('should create reusable block', ({ expect }) => {\n    const block = createBlock(fn);\n    expect(block).toBeDefined();\n    expect(block({ foo: 'foo', bar: 'bar', zoo: 1 })).toBeDefined();\n  });\n  it('should mount block', ({ expect }) => {\n    const block = createBlock(fn);\n    const main = block({ foo: 'foo', bar: 'bar', zoo: 1 });\n    main.m();\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\">foo</p></div>',\n    );\n  });\n  it('should patch block', ({ expect }) => {\n    const block = createBlock(fn);\n    const main = block({ foo: 'foo', bar: 'bar', zoo: 1 });\n    main.m();\n    main.p(block({ foo: 'bar', bar: 'foo', zoo: 1 }));\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"foo\">bar</p></div>',\n    );\n    main.p(block({ foo: 'bar', bar: 'bar', zoo: 1 }));\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\">bar</p></div>',\n    );\n  });\n  it('should patch nested blocks', ({ expect }) => {\n    const block = createBlock(fn);\n    const subBlock = createBlock(fn);\n    const main = block({\n      foo: subBlock({ foo: '1', bar: '2', zoo: 1 }),\n      bar: 'bar',\n      zoo: 1,\n    });\n    main.m();\n    main.p(\n      block({\n        foo: subBlock({ foo: '2', bar: '1', zoo: 1 }),\n        bar: 'bar',\n        zoo: 1,\n      }),\n    );\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\"><div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"1\">2</p></div></p></div>',\n    );\n  });\n  it('should remove block', ({ expect }) => {\n    const block = createBlock(fn);\n    const main = block({ foo: 'foo', bar: 'bar', zoo: 1 });\n    main.m();\n    main.x();\n    expect(main.l).toBeNull();\n  });\n  it('should ignore null, undefined, false', ({ expect }) => {\n    const block = createBlock(fn);\n    const main = block({ foo: null, bar: 'bar', zoo: 1 });\n    main.m();\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\"></p></div>',\n    );\n    main.p(block({ foo: undefined, bar: 'bar', zoo: 1 }));\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\"></p></div>',\n    );\n    main.p(block({ foo: false, bar: 'bar', zoo: '1px' }));\n    expect(main.l?.outerHTML).toEqual(\n      '<div><h1>Hello</h1> World<p title=\"baz\" style=\"margin: 1px;\" class=\"bar\"></p></div>',\n    );\n  });\n  it('should clear input inside block if the value is empty', ({ expect }) => {\n    const block = createBlock((props?: MillionProps) => {\n      return {\n        type: 'div',\n        props: {\n          children: [\n            {\n              type: 'input',\n              props: {\n                value: props?.foo,\n              },\n            },\n          ],\n        },\n      };\n    });\n\n    const main = block({ foo: 'foo' });\n\n    main.m();\n    expect(main.l?.outerHTML).toEqual('<div><input value=\"foo\"></div>');\n\n    main.p(block({ foo: '' }));\n\n    expect(main.l?.outerHTML).toEqual('<div><input value=\"\"></div>');\n  });\n});\n"
  },
  {
    "path": "test/map-array.test.ts",
    "content": "import { describe, it } from 'vitest';\nimport { block as createBlock, mapArray } from '../packages/million';\nimport type { MillionProps } from '../packages/types';\nimport type { VElement } from '../packages/million';\n\nconst fn = (props?: MillionProps): VElement => {\n  return {\n    type: 'div',\n    props: {\n      children: [\n        {\n          type: 'h1',\n          props: {\n            children: ['Hello'],\n          },\n        },\n        ' World',\n        {\n          type: 'p',\n          props: {\n            title: 'baz',\n            className: props?.bar,\n            children: [props?.foo],\n          },\n        },\n      ],\n    },\n  };\n};\n\ndescribe.concurrent('block', () => {\n  it('should mount block', ({ expect }) => {\n    const parent = document.createElement('div');\n    const block = createBlock(fn);\n    const arr = mapArray([block({ foo: 'foo', bar: 'bar' })]);\n    arr.m(parent);\n    expect(arr.t()).toEqual(parent);\n  });\n  it('should patch block', ({ expect }) => {\n    const parent = document.createElement('div');\n    const block = createBlock(fn);\n    const arr = mapArray([block({ foo: 'foo', bar: 'bar' })]);\n    arr.m(parent);\n    arr.p(mapArray([block({ foo: 'bar', bar: 'foo' })]));\n    expect(arr.t()?.outerHTML).toEqual(\n      '<div><div><h1>Hello</h1> World<p title=\"baz\" class=\"foo\">bar</p></div></div>',\n    );\n    arr.p(\n      mapArray([\n        block({ foo: 'bar', bar: 'foo' }),\n        block({ foo: 'bar', bar: 'foo' }),\n      ]),\n    );\n    expect(arr.t()?.outerHTML).toEqual(\n      '<div><div><h1>Hello</h1> World<p title=\"baz\" class=\"foo\">bar</p></div><div><h1>Hello</h1> World<p title=\"baz\" class=\"foo\">bar</p></div></div>',\n    );\n    arr.p(mapArray([]));\n    expect(arr.t()?.outerHTML).toEqual('<div></div>');\n  });\n  it('should remove fragment', ({ expect }) => {\n    const parent = document.createElement('div');\n    const block = createBlock(fn);\n    const arr = mapArray([block({ foo: 'foo', bar: 'bar' })]);\n    arr.m(parent);\n    arr.x();\n    expect(arr.b).toEqual([]);\n  });\n});\n"
  },
  {
    "path": "test/prettier.js",
    "content": "let Block__callback$ = /*@__SKIP__*/ block(\n  ({ i }) => {\n    return <div>{i}</div>;\n  },\n  {\n    shouldUpdate: (a, b) => a?.i !== b?.i,\n  }\n);\nconst callback$ = ({ i }) => {\n  return <Block__callback$ i={i} />;\n};\ncallback$._c = true;\nconst _temp = callback$;\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"extends\": \"@vercel/style-guide/typescript\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"dom\", \"esnext\"],\n    \"outDir\": \"dist\",\n    \"moduleResolution\": \"node\",\n    \"module\": \"esnext\",\n    \"target\": \"esnext\",\n    \"noImplicitAny\": false,\n    \"paths\": {\n      // Make sure the root d.ts isn't picked up by TS locally\n      \"react\": [\"node_modules/react\"]\n    },\n    \"types\": [\"vitest/globals\"]\n  },\n  \"include\": [\"./**/*.ts\", \"./**/*.tsx\"],\n  \"exclude\": [\"node_modules\", \"dist\", \"*.d.ts\", \"website\"]\n}\n"
  },
  {
    "path": "types.d.ts",
    "content": "export * from './dist/packages/types';\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    environment: 'jsdom',\n    coverage: {\n      reporter: ['lcov'],\n    },\n  },\n});\n"
  },
  {
    "path": "website/.eslintignore",
    "content": "components\npages/api\npackages/kitchen-sink"
  },
  {
    "path": "website/.eslintrc.js",
    "content": "const { resolve } = require('path');\n\nconst project = resolve(__dirname, 'tsconfig.json');\n\nmodule.exports = {\n  root: true,\n  extends: ['../.eslintrc.js'],\n  parserOptions: {\n    project,\n  },\n};\n"
  },
  {
    "path": "website/.gitignore",
    "content": ".next\nnode_modules\n.env\n.env.example\n\n# next-video\nvideos/*\n!videos/*.json\n!videos/*.js\n!videos/*.ts\npublic/_next-video\n"
  },
  {
    "path": "website/components/ad.tsx",
    "content": "import React, { useEffect } from 'react';\nimport { useRouter } from 'next/router';\n\nexport const CarbonAds = () => {\n  const router = useRouter();\n\n  useEffect(() => {\n    const isCarbonExist = document.querySelector('#carbonads');\n\n    if (isCarbonExist) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-explicit-any\n      (window as any)._carbonads.refresh();\n      return;\n    }\n\n    const script = document.createElement('script');\n    script.src =\n      '//cdn.carbonads.com/carbon.js?serve=CEAI427W&placement=millionjsorg';\n    script.id = '_carbonads_js';\n    script.async = true;\n\n    document.querySelectorAll('#carbon-container')[0].appendChild(script);\n  }, [router.asPath]);\n\n  return <div id=\"carbon-container\" className=\"flex justify-center my-2\"></div>;\n};\n"
  },
  {
    "path": "website/components/automatic-mode-warning.tsx",
    "content": "import { Callout } from 'nextra-theme-docs';\n\nexport function AutomaticModeWarning() {\n  return (\n    <div suppressHydrationWarning>\n      {typeof window !== 'undefined' &&\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n      (window.localStorage as any).mode === '0' ? (\n        <Callout type=\"warning\">\n          It looks like you're currently using Automatic mode. This means your\n          code will be automatically optimized. You still may proceed, but note\n          that it teaches the manual API.\n        </Callout>\n      ) : null}\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/back-in-block/block-vdom.tsx",
    "content": "import { motion } from 'framer-motion';\nimport { Slideshow, motionAnimationProps } from './slideshow';\n\nexport const frames = [\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 115L54 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 116L182 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 185L145 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M68.5449 21.4336H67.4609C67.4258 21.6914 67.3652 21.9316 67.2793 22.1543C67.1934 22.373 67.0781 22.5625 66.9336 22.7227C66.7891 22.8867 66.6113 23.0137 66.4004 23.1035C66.1934 23.1934 65.9473 23.2383 65.6621 23.2383C65.4004 23.2383 65.1719 23.1973 64.9766 23.1152C64.7812 23.0293 64.6113 22.9121 64.4668 22.7637C64.3223 22.6191 64.2031 22.4512 64.1094 22.2598C64.0156 22.0684 63.9395 21.8633 63.8809 21.6445C63.8223 21.4297 63.7793 21.2109 63.752 20.9883C63.7285 20.7617 63.7168 20.543 63.7168 20.332V19.1309C63.7168 18.9199 63.7285 18.7031 63.752 18.4805C63.7793 18.2539 63.8223 18.0332 63.8809 17.8184C63.9395 17.6035 64.0156 17.4004 64.1094 17.209C64.207 17.0176 64.3281 16.8496 64.4727 16.7051C64.6133 16.5605 64.7812 16.4473 64.9766 16.3652C65.1758 16.2793 65.4043 16.2363 65.6621 16.2363C65.9473 16.2363 66.1934 16.2852 66.4004 16.3828C66.6113 16.4766 66.7891 16.6074 66.9336 16.7754C67.0781 16.9434 67.1934 17.1387 67.2793 17.3613C67.3652 17.584 67.4258 17.8242 67.4609 18.082H68.5449C68.498 17.6758 68.4004 17.3047 68.252 16.9688C68.1074 16.6328 67.9141 16.3438 67.6719 16.1016C67.4297 15.8633 67.1406 15.6797 66.8047 15.5508C66.4688 15.418 66.0879 15.3516 65.6621 15.3516C65.3066 15.3516 64.9863 15.4023 64.7012 15.5039C64.416 15.6016 64.1621 15.7383 63.9395 15.9141C63.7129 16.0898 63.5176 16.2988 63.3535 16.541C63.1934 16.7793 63.0605 17.0391 62.9551 17.3203C62.8457 17.6016 62.7637 17.8965 62.709 18.2051C62.6582 18.5137 62.6309 18.8262 62.627 19.1426V20.332C62.6309 20.6484 62.6582 20.9609 62.709 21.2695C62.7637 21.5781 62.8457 21.873 62.9551 22.1543C63.0605 22.4355 63.1934 22.6953 63.3535 22.9336C63.5176 23.1719 63.7129 23.3789 63.9395 23.5547C64.1621 23.7305 64.416 23.8691 64.7012 23.9707C64.9902 24.0684 65.3105 24.1172 65.6621 24.1172C66.0723 24.1172 66.4434 24.0527 66.7754 23.9238C67.1113 23.791 67.4023 23.6055 67.6484 23.3672C67.8906 23.1328 68.0879 22.8516 68.2402 22.5234C68.3926 22.1914 68.4941 21.8281 68.5449 21.4336ZM74.4043 24H75.3887V17.6602H74.2988V22.207C74.2402 22.3438 74.166 22.4707 74.0762 22.5879C73.9902 22.7012 73.8887 22.7988 73.7715 22.8809C73.6309 22.9824 73.4648 23.0625 73.2734 23.1211C73.082 23.1758 72.8652 23.2031 72.623 23.2031C72.416 23.2031 72.2324 23.1758 72.0723 23.1211C71.916 23.0664 71.7832 22.9707 71.6738 22.834C71.5645 22.7012 71.4824 22.5215 71.4277 22.2949C71.373 22.0684 71.3457 21.7832 71.3457 21.4395V17.6602H70.2617V21.4277C70.2617 21.9004 70.3125 22.3066 70.4141 22.6465C70.5195 22.9824 70.668 23.2598 70.8594 23.4785C71.0508 23.6973 71.2812 23.8594 71.5508 23.9648C71.8203 24.0664 72.1211 24.1172 72.4531 24.1172C72.8672 24.1172 73.2324 24.0312 73.5488 23.8594C73.8652 23.6836 74.1289 23.4395 74.3398 23.127L74.4043 24ZM81.5879 17.543C81.127 17.543 80.7148 17.6445 80.3516 17.8477C79.9922 18.0469 79.6836 18.3203 79.4258 18.668L79.4199 18.5098L79.373 17.6602H78.3418V24H79.4316V19.9336C79.502 19.7383 79.5898 19.5625 79.6953 19.4062C79.8047 19.2461 79.9316 19.1113 80.0762 19.002C80.2363 18.877 80.4238 18.7832 80.6387 18.7207C80.8535 18.6543 81.0938 18.6211 81.3594 18.6211C81.5664 18.6211 81.7637 18.6328 81.9512 18.6562C82.1426 18.6758 82.3438 18.709 82.5547 18.7559L82.7012 17.6953C82.5918 17.6484 82.4277 17.6113 82.209 17.584C81.9941 17.5566 81.7871 17.543 81.5879 17.543ZM88.7949 17.543C88.334 17.543 87.9219 17.6445 87.5586 17.8477C87.1992 18.0469 86.8906 18.3203 86.6328 18.668L86.627 18.5098L86.5801 17.6602H85.5488V24H86.6387V19.9336C86.709 19.7383 86.7969 19.5625 86.9023 19.4062C87.0117 19.2461 87.1387 19.1113 87.2832 19.002C87.4434 18.877 87.6309 18.7832 87.8457 18.7207C88.0605 18.6543 88.3008 18.6211 88.5664 18.6211C88.7734 18.6211 88.9707 18.6328 89.1582 18.6562C89.3496 18.6758 89.5508 18.709 89.7617 18.7559L89.9082 17.6953C89.7988 17.6484 89.6348 17.6113 89.416 17.584C89.2012 17.5566 88.9941 17.543 88.7949 17.543ZM94.6484 24.1172C95.2656 24.1172 95.7832 23.9941 96.2012 23.748C96.623 23.498 96.9395 23.2129 97.1504 22.8926L96.4883 22.377C96.2891 22.6348 96.0391 22.8418 95.7383 22.998C95.4375 23.1543 95.0938 23.2324 94.707 23.2324C94.4141 23.2324 94.1465 23.1777 93.9043 23.0684C93.6621 22.959 93.4551 22.8086 93.2832 22.6172C93.1152 22.4375 92.9824 22.2305 92.8848 21.9961C92.791 21.7617 92.7305 21.4902 92.7031 21.1816V21.1406H97.2324V20.6543C97.2324 20.2129 97.1758 19.8027 97.0625 19.4238C96.9531 19.0449 96.7852 18.7148 96.5586 18.4336C96.332 18.1562 96.0469 17.9395 95.7031 17.7832C95.3633 17.623 94.9648 17.543 94.5078 17.543C94.1445 17.543 93.7891 17.6172 93.4414 17.7656C93.0977 17.9141 92.791 18.127 92.5215 18.4043C92.248 18.6855 92.0293 19.0293 91.8652 19.4355C91.7012 19.8379 91.6191 20.2949 91.6191 20.8066V21.0527C91.6191 21.4941 91.6934 21.9023 91.8418 22.2773C91.9902 22.6523 92.1973 22.9766 92.4629 23.25C92.7285 23.5234 93.0469 23.7363 93.418 23.8887C93.793 24.041 94.2031 24.1172 94.6484 24.1172ZM94.5078 18.4336C94.7852 18.4336 95.0234 18.4844 95.2227 18.5859C95.4258 18.6875 95.5938 18.8203 95.7266 18.9844C95.8594 19.1484 95.9629 19.3438 96.0371 19.5703C96.1113 19.793 96.1484 20.002 96.1484 20.1973V20.25H92.7383C92.7812 19.957 92.8555 19.6992 92.9609 19.4766C93.0703 19.25 93.2031 19.0586 93.3594 18.9023C93.5156 18.75 93.6914 18.6348 93.8867 18.5566C94.082 18.4746 94.2891 18.4336 94.5078 18.4336ZM99.0547 24H100.139V19.4531C100.213 19.3164 100.299 19.1914 100.396 19.0781C100.498 18.9648 100.607 18.8652 100.725 18.7793C100.869 18.6816 101.027 18.6055 101.199 18.5508C101.371 18.4922 101.557 18.4629 101.756 18.4629C101.986 18.4629 102.189 18.4902 102.365 18.5449C102.545 18.5996 102.697 18.6875 102.822 18.8086C102.943 18.9297 103.035 19.0879 103.098 19.2832C103.16 19.4785 103.191 19.7168 103.191 19.998V24H104.275V19.9746C104.275 19.5527 104.223 19.1895 104.117 18.8848C104.016 18.5762 103.869 18.3223 103.678 18.123C103.486 17.9238 103.254 17.7773 102.98 17.6836C102.711 17.5898 102.41 17.543 102.078 17.543C101.832 17.5469 101.598 17.584 101.375 17.6543C101.156 17.7207 100.953 17.8164 100.766 17.9414C100.641 18.0234 100.521 18.1211 100.408 18.2344C100.299 18.3438 100.197 18.4648 100.104 18.5977L100.027 17.6602H99.0547V24ZM108.828 16.125H107.738V17.6602H106.074V18.498H107.738V21.9434C107.738 22.334 107.789 22.668 107.891 22.9453C107.996 23.2188 108.139 23.4414 108.318 23.6133C108.498 23.7891 108.709 23.918 108.951 24C109.197 24.0781 109.461 24.1172 109.742 24.1172C109.91 24.1172 110.078 24.1094 110.246 24.0938C110.418 24.0781 110.58 24.0547 110.732 24.0234C110.885 23.9961 111.025 23.9629 111.154 23.9238C111.283 23.8809 111.393 23.832 111.482 23.7773L111.33 23.0098C111.264 23.0254 111.178 23.0449 111.072 23.0684C110.971 23.0879 110.861 23.1074 110.744 23.127C110.623 23.1465 110.5 23.1641 110.375 23.1797C110.25 23.1914 110.129 23.1973 110.012 23.1973C109.852 23.1973 109.699 23.1777 109.555 23.1387C109.414 23.0996 109.289 23.0312 109.18 22.9336C109.07 22.8398 108.984 22.7129 108.922 22.5527C108.859 22.3926 108.828 22.1895 108.828 21.9434V18.498H111.242V17.6602H108.828V16.125ZM126.049 20.9004V20.7773C126.049 20.4453 126.021 20.1309 125.967 19.834C125.912 19.5332 125.832 19.2598 125.727 19.0137C125.625 18.7949 125.508 18.5977 125.375 18.4219C125.242 18.2422 125.092 18.0898 124.924 17.9648C124.736 17.832 124.527 17.7285 124.297 17.6543C124.066 17.5801 123.814 17.543 123.541 17.543C123.322 17.543 123.119 17.5645 122.932 17.6074C122.744 17.6504 122.572 17.7129 122.416 17.7949C122.291 17.8613 122.174 17.9414 122.064 18.0352C121.955 18.125 121.855 18.2266 121.766 18.3398V15H120.682V24H121.678L121.73 23.2793C121.801 23.3691 121.875 23.4512 121.953 23.5254C122.031 23.5996 122.113 23.668 122.199 23.7305C122.379 23.8555 122.58 23.9512 122.803 24.0176C123.029 24.084 123.279 24.1172 123.553 24.1172C123.791 24.1172 124.012 24.0879 124.215 24.0293C124.422 23.9707 124.611 23.8887 124.783 23.7832C125.021 23.6309 125.225 23.4395 125.393 23.209C125.564 22.9746 125.703 22.7109 125.809 22.418C125.887 22.1953 125.945 21.957 125.984 21.7031C126.027 21.4453 126.049 21.1777 126.049 20.9004ZM124.965 20.7773V20.9004C124.965 21.0879 124.953 21.2715 124.93 21.4512C124.906 21.6309 124.869 21.7988 124.818 21.9551C124.756 22.1621 124.672 22.3496 124.566 22.5176C124.461 22.6855 124.33 22.8242 124.174 22.9336C124.057 23.0195 123.924 23.0859 123.775 23.1328C123.627 23.1758 123.463 23.1973 123.283 23.1973C123.096 23.1973 122.924 23.1738 122.768 23.127C122.611 23.0762 122.471 23.0059 122.346 22.916C122.221 22.8262 122.109 22.7227 122.012 22.6055C121.918 22.4844 121.836 22.3535 121.766 22.2129V19.4414C121.832 19.3008 121.912 19.1719 122.006 19.0547C122.104 18.9336 122.215 18.8281 122.34 18.7383C122.461 18.6523 122.6 18.5859 122.756 18.5391C122.912 18.4883 123.084 18.4629 123.271 18.4629C123.443 18.4629 123.6 18.4824 123.74 18.5215C123.881 18.5605 124.008 18.6152 124.121 18.6855C124.285 18.7832 124.424 18.918 124.537 19.0898C124.65 19.2617 124.742 19.4512 124.812 19.6582C124.863 19.8262 124.9 20.0059 124.924 20.1973C124.951 20.3848 124.965 20.5781 124.965 20.7773ZM128.053 15V15.9434H130.209V23.0625H128.053V24H133.361V23.0625H131.293V15H128.053ZM134.785 20.7715V20.9004C134.785 21.3574 134.852 21.7812 134.984 22.1719C135.117 22.5625 135.309 22.9023 135.559 23.1914C135.805 23.4805 136.105 23.707 136.461 23.8711C136.82 24.0352 137.225 24.1172 137.674 24.1172C138.119 24.1172 138.52 24.0352 138.875 23.8711C139.23 23.707 139.533 23.4805 139.783 23.1914C140.029 22.9023 140.219 22.5625 140.352 22.1719C140.484 21.7812 140.551 21.3574 140.551 20.9004V20.7715C140.551 20.3145 140.484 19.8906 140.352 19.5C140.219 19.1055 140.029 18.7637 139.783 18.4746C139.533 18.1855 139.229 17.959 138.869 17.7949C138.514 17.627 138.111 17.543 137.662 17.543C137.217 17.543 136.816 17.627 136.461 17.7949C136.105 17.959 135.805 18.1855 135.559 18.4746C135.309 18.7637 135.117 19.1055 134.984 19.5C134.852 19.8906 134.785 20.3145 134.785 20.7715ZM135.869 20.9004V20.7715C135.869 20.4629 135.906 20.168 135.98 19.8867C136.055 19.6016 136.168 19.3516 136.32 19.1367C136.469 18.9219 136.654 18.752 136.877 18.627C137.1 18.498 137.361 18.4336 137.662 18.4336C137.963 18.4336 138.225 18.498 138.447 18.627C138.674 18.752 138.863 18.9219 139.016 19.1367C139.164 19.3516 139.275 19.6016 139.35 19.8867C139.428 20.168 139.467 20.4629 139.467 20.7715V20.9004C139.467 21.2129 139.43 21.5117 139.355 21.7969C139.281 22.0781 139.17 22.3262 139.021 22.541C138.869 22.7559 138.68 22.9258 138.453 23.0508C138.23 23.1758 137.971 23.2383 137.674 23.2383C137.373 23.2383 137.109 23.1758 136.883 23.0508C136.656 22.9258 136.469 22.7559 136.32 22.541C136.168 22.3262 136.055 22.0781 135.98 21.7969C135.906 21.5117 135.869 21.2129 135.869 20.9004ZM144.998 23.2383C144.658 23.2383 144.373 23.1719 144.143 23.0391C143.916 22.9023 143.734 22.7246 143.598 22.5059C143.457 22.291 143.355 22.0488 143.293 21.7793C143.234 21.5059 143.205 21.2305 143.205 20.9531V20.707C143.205 20.4336 143.234 20.1621 143.293 19.8926C143.355 19.623 143.457 19.3789 143.598 19.1602C143.738 18.9453 143.922 18.7715 144.148 18.6387C144.379 18.502 144.662 18.4336 144.998 18.4336C145.217 18.4336 145.42 18.4707 145.607 18.5449C145.799 18.6191 145.963 18.7207 146.1 18.8496C146.236 18.9785 146.344 19.1289 146.422 19.3008C146.504 19.4688 146.547 19.6484 146.551 19.8398H147.576C147.576 19.5195 147.512 19.2188 147.383 18.9375C147.254 18.6562 147.076 18.4121 146.85 18.2051C146.619 18.002 146.346 17.8418 146.029 17.7246C145.717 17.6035 145.373 17.543 144.998 17.543C144.518 17.543 144.098 17.6289 143.738 17.8008C143.379 17.9727 143.08 18.2031 142.842 18.4922C142.6 18.7852 142.418 19.123 142.297 19.5059C142.176 19.8887 142.115 20.2891 142.115 20.707V20.9531C142.115 21.375 142.176 21.7773 142.297 22.1602C142.418 22.5391 142.6 22.873 142.842 23.1621C143.08 23.4551 143.379 23.6875 143.738 23.8594C144.098 24.0312 144.518 24.1172 144.998 24.1172C145.334 24.1172 145.656 24.0605 145.965 23.9473C146.273 23.8301 146.547 23.6738 146.785 23.4785C147.023 23.2871 147.213 23.0645 147.354 22.8105C147.498 22.5527 147.572 22.2832 147.576 22.002H146.551C146.547 22.1777 146.5 22.3418 146.41 22.4941C146.324 22.6426 146.209 22.7715 146.064 22.8809C145.92 22.9941 145.754 23.082 145.566 23.1445C145.383 23.207 145.193 23.2383 144.998 23.2383ZM151.402 21.041L153.729 24H155.105L152.146 20.3027L154.713 17.6602H153.395L151.314 19.7461L150.605 20.5078V15H149.516V24H150.605V21.8086L151.402 21.041Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M62 25.1719H155.686V25.7578H62V25.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M307.363 21V12.4688H306.268L306.25 18.832L302.939 12.4688H301.838V21H302.934L302.951 14.625L306.262 21H307.363ZM312.027 21.1172C312.645 21.1172 313.162 20.9941 313.58 20.748C314.002 20.498 314.318 20.2129 314.529 19.8926L313.867 19.377C313.668 19.6348 313.418 19.8418 313.117 19.998C312.816 20.1543 312.473 20.2324 312.086 20.2324C311.793 20.2324 311.525 20.1777 311.283 20.0684C311.041 19.959 310.834 19.8086 310.662 19.6172C310.494 19.4375 310.361 19.2305 310.264 18.9961C310.17 18.7617 310.109 18.4902 310.082 18.1816V18.1406H314.611V17.6543C314.611 17.2129 314.555 16.8027 314.441 16.4238C314.332 16.0449 314.164 15.7148 313.938 15.4336C313.711 15.1562 313.426 14.9395 313.082 14.7832C312.742 14.623 312.344 14.543 311.887 14.543C311.523 14.543 311.168 14.6172 310.82 14.7656C310.477 14.9141 310.17 15.127 309.9 15.4043C309.627 15.6855 309.408 16.0293 309.244 16.4355C309.08 16.8379 308.998 17.2949 308.998 17.8066V18.0527C308.998 18.4941 309.072 18.9023 309.221 19.2773C309.369 19.6523 309.576 19.9766 309.842 20.25C310.107 20.5234 310.426 20.7363 310.797 20.8887C311.172 21.041 311.582 21.1172 312.027 21.1172ZM311.887 15.4336C312.164 15.4336 312.402 15.4844 312.602 15.5859C312.805 15.6875 312.973 15.8203 313.105 15.9844C313.238 16.1484 313.342 16.3438 313.416 16.5703C313.49 16.793 313.527 17.002 313.527 17.1973V17.25H310.117C310.16 16.957 310.234 16.6992 310.34 16.4766C310.449 16.25 310.582 16.0586 310.738 15.9023C310.895 15.75 311.07 15.6348 311.266 15.5566C311.461 15.4746 311.668 15.4336 311.887 15.4336ZM317.043 21H317.898L318.877 17.1152L319.035 16.1309L319.199 17.1152L320.189 21H321.045L322.393 14.6602H321.432L320.729 18.7031L320.57 19.6992L320.4 18.7031L319.393 14.6602H318.695L317.682 18.7031L317.523 19.6113L317.395 18.7031L316.656 14.6602H315.695L317.043 21ZM336.221 17.9004V17.7773C336.221 17.4453 336.193 17.1309 336.139 16.834C336.084 16.5332 336.004 16.2598 335.898 16.0137C335.797 15.7949 335.68 15.5977 335.547 15.4219C335.414 15.2422 335.264 15.0898 335.096 14.9648C334.908 14.832 334.699 14.7285 334.469 14.6543C334.238 14.5801 333.986 14.543 333.713 14.543C333.494 14.543 333.291 14.5645 333.104 14.6074C332.916 14.6504 332.744 14.7129 332.588 14.7949C332.463 14.8613 332.346 14.9414 332.236 15.0352C332.127 15.125 332.027 15.2266 331.938 15.3398V12H330.854V21H331.85L331.902 20.2793C331.973 20.3691 332.047 20.4512 332.125 20.5254C332.203 20.5996 332.285 20.668 332.371 20.7305C332.551 20.8555 332.752 20.9512 332.975 21.0176C333.201 21.084 333.451 21.1172 333.725 21.1172C333.963 21.1172 334.184 21.0879 334.387 21.0293C334.594 20.9707 334.783 20.8887 334.955 20.7832C335.193 20.6309 335.396 20.4395 335.564 20.209C335.736 19.9746 335.875 19.7109 335.98 19.418C336.059 19.1953 336.117 18.957 336.156 18.7031C336.199 18.4453 336.221 18.1777 336.221 17.9004ZM335.137 17.7773V17.9004C335.137 18.0879 335.125 18.2715 335.102 18.4512C335.078 18.6309 335.041 18.7988 334.99 18.9551C334.928 19.1621 334.844 19.3496 334.738 19.5176C334.633 19.6855 334.502 19.8242 334.346 19.9336C334.229 20.0195 334.096 20.0859 333.947 20.1328C333.799 20.1758 333.635 20.1973 333.455 20.1973C333.268 20.1973 333.096 20.1738 332.939 20.127C332.783 20.0762 332.643 20.0059 332.518 19.916C332.393 19.8262 332.281 19.7227 332.184 19.6055C332.09 19.4844 332.008 19.3535 331.938 19.2129V16.4414C332.004 16.3008 332.084 16.1719 332.178 16.0547C332.275 15.9336 332.387 15.8281 332.512 15.7383C332.633 15.6523 332.771 15.5859 332.928 15.5391C333.084 15.4883 333.256 15.4629 333.443 15.4629C333.615 15.4629 333.771 15.4824 333.912 15.5215C334.053 15.5605 334.18 15.6152 334.293 15.6855C334.457 15.7832 334.596 15.918 334.709 16.0898C334.822 16.2617 334.914 16.4512 334.984 16.6582C335.035 16.8262 335.072 17.0059 335.096 17.1973C335.123 17.3848 335.137 17.5781 335.137 17.7773ZM338.225 12V12.9434H340.381V20.0625H338.225V21H343.533V20.0625H341.465V12H338.225ZM344.957 17.7715V17.9004C344.957 18.3574 345.023 18.7812 345.156 19.1719C345.289 19.5625 345.48 19.9023 345.73 20.1914C345.977 20.4805 346.277 20.707 346.633 20.8711C346.992 21.0352 347.396 21.1172 347.846 21.1172C348.291 21.1172 348.691 21.0352 349.047 20.8711C349.402 20.707 349.705 20.4805 349.955 20.1914C350.201 19.9023 350.391 19.5625 350.523 19.1719C350.656 18.7812 350.723 18.3574 350.723 17.9004V17.7715C350.723 17.3145 350.656 16.8906 350.523 16.5C350.391 16.1055 350.201 15.7637 349.955 15.4746C349.705 15.1855 349.4 14.959 349.041 14.7949C348.686 14.627 348.283 14.543 347.834 14.543C347.389 14.543 346.988 14.627 346.633 14.7949C346.277 14.959 345.977 15.1855 345.73 15.4746C345.48 15.7637 345.289 16.1055 345.156 16.5C345.023 16.8906 344.957 17.3145 344.957 17.7715ZM346.041 17.9004V17.7715C346.041 17.4629 346.078 17.168 346.152 16.8867C346.227 16.6016 346.34 16.3516 346.492 16.1367C346.641 15.9219 346.826 15.752 347.049 15.627C347.271 15.498 347.533 15.4336 347.834 15.4336C348.135 15.4336 348.396 15.498 348.619 15.627C348.846 15.752 349.035 15.9219 349.188 16.1367C349.336 16.3516 349.447 16.6016 349.521 16.8867C349.6 17.168 349.639 17.4629 349.639 17.7715V17.9004C349.639 18.2129 349.602 18.5117 349.527 18.7969C349.453 19.0781 349.342 19.3262 349.193 19.541C349.041 19.7559 348.852 19.9258 348.625 20.0508C348.402 20.1758 348.143 20.2383 347.846 20.2383C347.545 20.2383 347.281 20.1758 347.055 20.0508C346.828 19.9258 346.641 19.7559 346.492 19.541C346.34 19.3262 346.227 19.0781 346.152 18.7969C346.078 18.5117 346.041 18.2129 346.041 17.9004ZM355.17 20.2383C354.83 20.2383 354.545 20.1719 354.314 20.0391C354.088 19.9023 353.906 19.7246 353.77 19.5059C353.629 19.291 353.527 19.0488 353.465 18.7793C353.406 18.5059 353.377 18.2305 353.377 17.9531V17.707C353.377 17.4336 353.406 17.1621 353.465 16.8926C353.527 16.623 353.629 16.3789 353.77 16.1602C353.91 15.9453 354.094 15.7715 354.32 15.6387C354.551 15.502 354.834 15.4336 355.17 15.4336C355.389 15.4336 355.592 15.4707 355.779 15.5449C355.971 15.6191 356.135 15.7207 356.271 15.8496C356.408 15.9785 356.516 16.1289 356.594 16.3008C356.676 16.4688 356.719 16.6484 356.723 16.8398H357.748C357.748 16.5195 357.684 16.2188 357.555 15.9375C357.426 15.6562 357.248 15.4121 357.021 15.2051C356.791 15.002 356.518 14.8418 356.201 14.7246C355.889 14.6035 355.545 14.543 355.17 14.543C354.689 14.543 354.27 14.6289 353.91 14.8008C353.551 14.9727 353.252 15.2031 353.014 15.4922C352.771 15.7852 352.59 16.123 352.469 16.5059C352.348 16.8887 352.287 17.2891 352.287 17.707V17.9531C352.287 18.375 352.348 18.7773 352.469 19.1602C352.59 19.5391 352.771 19.873 353.014 20.1621C353.252 20.4551 353.551 20.6875 353.91 20.8594C354.27 21.0312 354.689 21.1172 355.17 21.1172C355.506 21.1172 355.828 21.0605 356.137 20.9473C356.445 20.8301 356.719 20.6738 356.957 20.4785C357.195 20.2871 357.385 20.0645 357.525 19.8105C357.67 19.5527 357.744 19.2832 357.748 19.002H356.723C356.719 19.1777 356.672 19.3418 356.582 19.4941C356.496 19.6426 356.381 19.7715 356.236 19.8809C356.092 19.9941 355.926 20.082 355.738 20.1445C355.555 20.207 355.365 20.2383 355.17 20.2383ZM361.574 18.041L363.9 21H365.277L362.318 17.3027L364.885 14.6602H363.566L361.486 16.7461L360.777 17.5078V12H359.688V21H360.777V18.8086L361.574 18.041Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M301 22.1719H365.857V22.7578H301V22.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M57.4287 264V249.07H57.2749L50.7739 251.418V253.9L54.5474 252.546V264H57.4287Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M147.208 264V261.713H140.655L143.465 258.74C143.95 258.241 144.391 257.766 144.788 257.314C145.184 256.856 145.526 256.409 145.813 255.971C146.093 255.534 146.309 255.093 146.459 254.648C146.616 254.197 146.695 253.726 146.695 253.233C146.695 252.584 146.592 251.993 146.387 251.459C146.182 250.919 145.885 250.458 145.495 250.075C145.099 249.692 144.606 249.395 144.019 249.183C143.438 248.971 142.768 248.865 142.009 248.865C141.216 248.865 140.491 248.995 139.835 249.255C139.186 249.508 138.632 249.856 138.174 250.301C137.709 250.745 137.35 251.265 137.097 251.859C136.844 252.447 136.718 253.073 136.718 253.736H139.579C139.579 253.333 139.63 252.974 139.732 252.659C139.835 252.345 139.985 252.082 140.184 251.87C140.375 251.665 140.614 251.511 140.901 251.408C141.195 251.299 141.534 251.244 141.917 251.244C142.21 251.244 142.477 251.292 142.716 251.388C142.962 251.483 143.174 251.62 143.352 251.798C143.523 251.982 143.656 252.205 143.752 252.464C143.848 252.724 143.896 253.021 143.896 253.356C143.896 253.582 143.858 253.814 143.783 254.054C143.714 254.293 143.602 254.549 143.444 254.823C143.28 255.103 143.068 255.411 142.809 255.746C142.549 256.081 142.231 256.453 141.855 256.863L137.025 262.052V264H147.208Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 115L249 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 116L377 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 185L340 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M248.317 255.284V257.499H249.865C250.255 257.499 250.604 257.543 250.911 257.632C251.226 257.721 251.496 257.858 251.721 258.042C251.94 258.227 252.107 258.463 252.224 258.75C252.34 259.037 252.398 259.382 252.398 259.786C252.398 260.107 252.347 260.397 252.244 260.657C252.148 260.917 252.005 261.136 251.813 261.313C251.615 261.512 251.369 261.662 251.075 261.765C250.781 261.867 250.45 261.918 250.081 261.918C249.752 261.918 249.452 261.871 249.178 261.775C248.905 261.672 248.669 261.532 248.471 261.354C248.266 261.184 248.108 260.979 247.999 260.739C247.89 260.493 247.835 260.227 247.835 259.939H244.984C244.984 260.664 245.125 261.293 245.405 261.826C245.692 262.359 246.071 262.8 246.543 263.149C247.015 263.504 247.551 263.771 248.153 263.949C248.761 264.12 249.383 264.205 250.019 264.205C250.757 264.205 251.444 264.109 252.08 263.918C252.723 263.72 253.276 263.433 253.741 263.057C254.206 262.688 254.572 262.229 254.838 261.683C255.105 261.136 255.238 260.514 255.238 259.816C255.238 259.42 255.19 259.044 255.095 258.688C254.999 258.333 254.852 258.005 254.654 257.704C254.456 257.41 254.203 257.147 253.895 256.915C253.594 256.682 253.235 256.491 252.818 256.34C253.174 256.169 253.488 255.968 253.762 255.735C254.035 255.496 254.264 255.236 254.449 254.956C254.633 254.676 254.773 254.382 254.869 254.074C254.965 253.76 255.013 253.442 255.013 253.121C255.013 252.423 254.89 251.812 254.644 251.285C254.404 250.752 254.066 250.304 253.628 249.942C253.191 249.586 252.665 249.32 252.049 249.142C251.434 248.958 250.757 248.865 250.019 248.865C249.335 248.865 248.696 248.964 248.102 249.163C247.514 249.361 247.001 249.638 246.563 249.993C246.126 250.355 245.781 250.786 245.528 251.285C245.282 251.784 245.159 252.338 245.159 252.946H248.009C248.009 252.673 248.064 252.427 248.173 252.208C248.283 251.989 248.433 251.801 248.625 251.644C248.809 251.494 249.024 251.377 249.271 251.295C249.523 251.213 249.793 251.172 250.081 251.172C250.429 251.172 250.733 251.22 250.993 251.316C251.26 251.412 251.479 251.545 251.649 251.716C251.82 251.894 251.947 252.105 252.029 252.352C252.118 252.591 252.162 252.857 252.162 253.151C252.162 253.452 252.118 253.732 252.029 253.992C251.947 254.245 251.82 254.46 251.649 254.638C251.465 254.843 251.222 255.004 250.921 255.12C250.627 255.229 250.275 255.284 249.865 255.284H248.317Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M340.772 258.453V249.07H337.88L331.605 258.976L331.718 260.76H337.921V264H340.772V260.76H342.505V258.453H340.772ZM334.404 258.453L337.645 253.397L337.921 252.905V258.453H334.404Z\"\n      fill=\"black\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"26.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M63.7754 73.7871L63.8779 73.2256C63.6761 73.2191 63.5085 73.1637 63.375 73.0596C63.2448 72.9554 63.1406 72.8219 63.0625 72.6592C62.9811 72.4997 62.9242 72.319 62.8916 72.1172C62.859 71.9186 62.8428 71.7184 62.8428 71.5166V70.6914C62.8395 70.304 62.7484 69.9639 62.5693 69.6709C62.3903 69.3747 62.112 69.1517 61.7344 69.002C62.112 68.849 62.3903 68.626 62.5693 68.333C62.7516 68.0368 62.8428 67.6934 62.8428 67.3027V66.4727C62.8428 66.2741 62.8525 66.0739 62.8721 65.8721C62.8916 65.6702 62.9372 65.488 63.0088 65.3252C63.0771 65.1657 63.1797 65.0339 63.3164 64.9297C63.4564 64.8255 63.6436 64.7702 63.8779 64.7637L63.7754 64.2021C63.4466 64.2119 63.1667 64.2835 62.9355 64.417C62.7044 64.5472 62.5173 64.7165 62.374 64.9248C62.221 65.1429 62.1087 65.3903 62.0371 65.667C61.9688 65.9404 61.9346 66.209 61.9346 66.4727V67.3027C61.9346 67.7747 61.8223 68.1165 61.5977 68.3281C61.3763 68.5365 61.0361 68.6406 60.5771 68.6406V69.3486C61.0361 69.3519 61.3763 69.4593 61.5977 69.6709C61.8223 69.8825 61.9346 70.2227 61.9346 70.6914V71.5166C61.9346 71.777 61.972 72.0391 62.0469 72.3027C62.1217 72.5697 62.2324 72.8105 62.3789 73.0254C62.5319 73.25 62.724 73.4307 62.9551 73.5674C63.1862 73.7041 63.4596 73.7773 63.7754 73.7871ZM71.8613 72H72.7646V68.2109C72.8265 68.097 72.8981 67.9928 72.9795 67.8984C73.0641 67.804 73.1553 67.721 73.2529 67.6494C73.3734 67.568 73.5052 67.5046 73.6484 67.459C73.7917 67.4102 73.9463 67.3857 74.1123 67.3857C74.3044 67.3857 74.4736 67.4085 74.6201 67.4541C74.7699 67.4997 74.8968 67.5729 75.001 67.6738C75.1019 67.7747 75.1784 67.9066 75.2305 68.0693C75.2826 68.2321 75.3086 68.4307 75.3086 68.665V72H76.2119V68.6455C76.2119 68.2939 76.168 67.9912 76.0801 67.7373C75.9954 67.4801 75.8734 67.2686 75.7139 67.1025C75.5544 66.9365 75.3607 66.8145 75.1328 66.7363C74.9082 66.6582 74.6576 66.6191 74.3809 66.6191C74.1758 66.6224 73.9805 66.6533 73.7949 66.7119C73.6126 66.7673 73.4434 66.847 73.2871 66.9512C73.1829 67.0195 73.0837 67.1009 72.9893 67.1953C72.8981 67.2865 72.8135 67.3874 72.7354 67.498L72.6719 66.7168H71.8613V72ZM77.6133 69.3096V69.417C77.6133 69.7979 77.6686 70.151 77.7793 70.4766C77.89 70.8021 78.0495 71.0853 78.2578 71.3262C78.4629 71.5671 78.7135 71.7559 79.0098 71.8926C79.3092 72.0293 79.6462 72.0977 80.0205 72.0977C80.3916 72.0977 80.7253 72.0293 81.0215 71.8926C81.3177 71.7559 81.57 71.5671 81.7783 71.3262C81.9834 71.0853 82.1413 70.8021 82.252 70.4766C82.3626 70.151 82.418 69.7979 82.418 69.417V69.3096C82.418 68.9287 82.3626 68.5755 82.252 68.25C82.1413 67.9212 81.9834 67.6364 81.7783 67.3955C81.57 67.1546 81.3161 66.9658 81.0166 66.8291C80.7204 66.6891 80.3851 66.6191 80.0107 66.6191C79.6396 66.6191 79.306 66.6891 79.0098 66.8291C78.7135 66.9658 78.4629 67.1546 78.2578 67.3955C78.0495 67.6364 77.89 67.9212 77.7793 68.25C77.6686 68.5755 77.6133 68.9287 77.6133 69.3096ZM78.5166 69.417V69.3096C78.5166 69.0524 78.5475 68.8066 78.6094 68.5723C78.6712 68.3346 78.7656 68.1263 78.8926 67.9473C79.0163 67.7682 79.1709 67.6266 79.3564 67.5225C79.542 67.415 79.7601 67.3613 80.0107 67.3613C80.2614 67.3613 80.4795 67.415 80.665 67.5225C80.8538 67.6266 81.0117 67.7682 81.1387 67.9473C81.2624 68.1263 81.3551 68.3346 81.417 68.5723C81.4821 68.8066 81.5146 69.0524 81.5146 69.3096V69.417C81.5146 69.6774 81.4837 69.9264 81.4219 70.1641C81.36 70.3984 81.2673 70.6051 81.1436 70.7842C81.0166 70.9632 80.8587 71.1048 80.6699 71.209C80.4844 71.3132 80.2679 71.3652 80.0205 71.3652C79.7699 71.3652 79.5501 71.3132 79.3613 71.209C79.1725 71.1048 79.0163 70.9632 78.8926 70.7842C78.7656 70.6051 78.6712 70.3984 78.6094 70.1641C78.5475 69.9264 78.5166 69.6774 78.5166 69.417ZM83.7021 69.3145V69.417C83.7021 69.7946 83.7526 70.1478 83.8535 70.4766C83.9544 70.8021 84.096 71.0853 84.2783 71.3262C84.4606 71.5671 84.6803 71.7559 84.9375 71.8926C85.1979 72.0293 85.4876 72.0977 85.8066 72.0977C86.1322 72.0977 86.417 72.0423 86.6611 71.9316C86.9053 71.821 87.1152 71.6582 87.291 71.4434L87.3301 72H88.1602V64.5H87.2568V67.2393C87.0843 67.0374 86.8792 66.8844 86.6416 66.7803C86.4072 66.6729 86.1322 66.6191 85.8164 66.6191C85.4941 66.6191 85.2028 66.6859 84.9424 66.8193C84.682 66.9528 84.4606 67.1383 84.2783 67.376C84.0928 67.6136 83.9495 67.8984 83.8486 68.2305C83.751 68.5592 83.7021 68.9206 83.7021 69.3145ZM84.6055 69.417V69.3145C84.6055 69.0573 84.6331 68.8132 84.6885 68.582C84.7438 68.3477 84.8301 68.141 84.9473 67.9619C85.0612 67.7861 85.2077 67.6462 85.3867 67.542C85.569 67.4378 85.7871 67.3857 86.041 67.3857C86.3372 67.3857 86.5846 67.4557 86.7832 67.5957C86.9818 67.7324 87.1396 67.9082 87.2568 68.123V70.5742C87.1396 70.8053 86.9818 70.9893 86.7832 71.126C86.5846 71.2627 86.334 71.3311 86.0312 71.3311C85.7806 71.3311 85.5658 71.2806 85.3867 71.1797C85.2077 71.0755 85.0612 70.9355 84.9473 70.7598C84.8301 70.584 84.7438 70.3805 84.6885 70.1494C84.6331 69.9183 84.6055 69.6742 84.6055 69.417ZM92.2129 72.0977C92.7272 72.0977 93.1585 71.9951 93.5068 71.79C93.8584 71.5817 94.1221 71.3441 94.2979 71.0771L93.7461 70.6475C93.5801 70.8623 93.3717 71.0348 93.1211 71.165C92.8704 71.2952 92.584 71.3604 92.2617 71.3604C92.0176 71.3604 91.7946 71.3148 91.5928 71.2236C91.391 71.1325 91.2184 71.0072 91.0752 70.8477C90.9352 70.6979 90.8245 70.5254 90.7432 70.3301C90.665 70.1348 90.6146 69.9085 90.5918 69.6514V69.6172H94.3662V69.2119C94.3662 68.8441 94.319 68.5023 94.2246 68.1865C94.1335 67.8708 93.9935 67.5957 93.8047 67.3613C93.6159 67.1302 93.3783 66.9495 93.0918 66.8193C92.8086 66.6859 92.4766 66.6191 92.0957 66.6191C91.793 66.6191 91.4967 66.681 91.207 66.8047C90.9206 66.9284 90.665 67.1058 90.4404 67.3369C90.2126 67.5713 90.0303 67.8577 89.8936 68.1963C89.7568 68.5316 89.6885 68.9124 89.6885 69.3389V69.5439C89.6885 69.9118 89.7503 70.252 89.874 70.5645C89.9977 70.877 90.1702 71.1471 90.3916 71.375C90.613 71.6029 90.8783 71.7803 91.1875 71.9072C91.5 72.0342 91.8418 72.0977 92.2129 72.0977ZM92.0957 67.3613C92.3268 67.3613 92.5254 67.4036 92.6914 67.4883C92.8607 67.5729 93.0007 67.6836 93.1113 67.8203C93.222 67.957 93.3083 68.1198 93.3701 68.3086C93.432 68.4941 93.4629 68.6683 93.4629 68.8311V68.875H90.6211C90.6569 68.6309 90.7188 68.416 90.8066 68.2305C90.8978 68.0417 91.0085 67.8822 91.1387 67.752C91.2689 67.625 91.4154 67.529 91.5781 67.4639C91.7409 67.3955 91.9134 67.3613 92.0957 67.3613ZM98.8145 72V64.8906H98.7412L96.0508 65.9258V66.751L97.9111 66.043V72H98.8145ZM103.707 71.4141C103.707 71.6029 103.766 71.764 103.883 71.8975C104.003 72.0277 104.181 72.0928 104.415 72.0928C104.646 72.0928 104.824 72.0277 104.947 71.8975C105.071 71.7673 105.133 71.6061 105.133 71.4141C105.133 71.2188 105.071 71.0544 104.947 70.9209C104.827 70.7842 104.649 70.7158 104.415 70.7158C104.177 70.7158 104 70.7842 103.883 70.9209C103.766 71.0576 103.707 71.222 103.707 71.4141ZM103.707 67.1367C103.707 67.3255 103.766 67.4867 103.883 67.6201C104.003 67.7503 104.181 67.8154 104.415 67.8154C104.646 67.8154 104.824 67.7503 104.947 67.6201C105.071 67.4899 105.133 67.3288 105.133 67.1367C105.133 66.9414 105.071 66.777 104.947 66.6436C104.827 66.5068 104.649 66.4385 104.415 66.4385C104.177 66.4385 104 66.5068 103.883 66.6436C103.766 66.7803 103.707 66.9447 103.707 67.1367ZM116.832 72V64.8906H116.759L114.068 65.9258V66.751L115.929 66.043V72H116.832ZM122.198 71.79V70.9307H121.217V71.8047C121.217 72.0814 121.184 72.3483 121.119 72.6055C121.054 72.8626 120.943 73.1051 120.787 73.333L121.349 73.6406C121.609 73.4095 121.816 73.1247 121.969 72.7861C122.122 72.4476 122.198 72.1156 122.198 71.79ZM131.92 72H132.823V68.2109C132.885 68.097 132.957 67.9928 133.038 67.8984C133.123 67.804 133.214 67.721 133.312 67.6494C133.432 67.568 133.564 67.5046 133.707 67.459C133.85 67.4102 134.005 67.3857 134.171 67.3857C134.363 67.3857 134.532 67.4085 134.679 67.4541C134.828 67.4997 134.955 67.5729 135.06 67.6738C135.16 67.7747 135.237 67.9066 135.289 68.0693C135.341 68.2321 135.367 68.4307 135.367 68.665V72H136.271V68.6455C136.271 68.2939 136.227 67.9912 136.139 67.7373C136.054 67.4801 135.932 67.2686 135.772 67.1025C135.613 66.9365 135.419 66.8145 135.191 66.7363C134.967 66.6582 134.716 66.6191 134.439 66.6191C134.234 66.6224 134.039 66.6533 133.854 66.7119C133.671 66.7673 133.502 66.847 133.346 66.9512C133.242 67.0195 133.142 67.1009 133.048 67.1953C132.957 67.2865 132.872 67.3874 132.794 67.498L132.73 66.7168H131.92V72ZM137.672 69.3096V69.417C137.672 69.7979 137.727 70.151 137.838 70.4766C137.949 70.8021 138.108 71.0853 138.316 71.3262C138.521 71.5671 138.772 71.7559 139.068 71.8926C139.368 72.0293 139.705 72.0977 140.079 72.0977C140.45 72.0977 140.784 72.0293 141.08 71.8926C141.376 71.7559 141.629 71.5671 141.837 71.3262C142.042 71.0853 142.2 70.8021 142.311 70.4766C142.421 70.151 142.477 69.7979 142.477 69.417V69.3096C142.477 68.9287 142.421 68.5755 142.311 68.25C142.2 67.9212 142.042 67.6364 141.837 67.3955C141.629 67.1546 141.375 66.9658 141.075 66.8291C140.779 66.6891 140.444 66.6191 140.069 66.6191C139.698 66.6191 139.365 66.6891 139.068 66.8291C138.772 66.9658 138.521 67.1546 138.316 67.3955C138.108 67.6364 137.949 67.9212 137.838 68.25C137.727 68.5755 137.672 68.9287 137.672 69.3096ZM138.575 69.417V69.3096C138.575 69.0524 138.606 68.8066 138.668 68.5723C138.73 68.3346 138.824 68.1263 138.951 67.9473C139.075 67.7682 139.229 67.6266 139.415 67.5225C139.601 67.415 139.819 67.3613 140.069 67.3613C140.32 67.3613 140.538 67.415 140.724 67.5225C140.912 67.6266 141.07 67.7682 141.197 67.9473C141.321 68.1263 141.414 68.3346 141.476 68.5723C141.541 68.8066 141.573 69.0524 141.573 69.3096V69.417C141.573 69.6774 141.542 69.9264 141.48 70.1641C141.419 70.3984 141.326 70.6051 141.202 70.7842C141.075 70.9632 140.917 71.1048 140.729 71.209C140.543 71.3132 140.326 71.3652 140.079 71.3652C139.828 71.3652 139.609 71.3132 139.42 71.209C139.231 71.1048 139.075 70.9632 138.951 70.7842C138.824 70.6051 138.73 70.3984 138.668 70.1641C138.606 69.9264 138.575 69.6774 138.575 69.417ZM143.761 69.3145V69.417C143.761 69.7946 143.811 70.1478 143.912 70.4766C144.013 70.8021 144.155 71.0853 144.337 71.3262C144.519 71.5671 144.739 71.7559 144.996 71.8926C145.257 72.0293 145.546 72.0977 145.865 72.0977C146.191 72.0977 146.476 72.0423 146.72 71.9316C146.964 71.821 147.174 71.6582 147.35 71.4434L147.389 72H148.219V64.5H147.315V67.2393C147.143 67.0374 146.938 66.8844 146.7 66.7803C146.466 66.6729 146.191 66.6191 145.875 66.6191C145.553 66.6191 145.261 66.6859 145.001 66.8193C144.741 66.9528 144.519 67.1383 144.337 67.376C144.151 67.6136 144.008 67.8984 143.907 68.2305C143.81 68.5592 143.761 68.9206 143.761 69.3145ZM144.664 69.417V69.3145C144.664 69.0573 144.692 68.8132 144.747 68.582C144.802 68.3477 144.889 68.141 145.006 67.9619C145.12 67.7861 145.266 67.6462 145.445 67.542C145.628 67.4378 145.846 67.3857 146.1 67.3857C146.396 67.3857 146.643 67.4557 146.842 67.5957C147.04 67.7324 147.198 67.9082 147.315 68.123V70.5742C147.198 70.8053 147.04 70.9893 146.842 71.126C146.643 71.2627 146.393 71.3311 146.09 71.3311C145.839 71.3311 145.624 71.2806 145.445 71.1797C145.266 71.0755 145.12 70.9355 145.006 70.7598C144.889 70.584 144.802 70.3805 144.747 70.1494C144.692 69.9183 144.664 69.6742 144.664 69.417ZM152.271 72.0977C152.786 72.0977 153.217 71.9951 153.565 71.79C153.917 71.5817 154.181 71.3441 154.356 71.0771L153.805 70.6475C153.639 70.8623 153.43 71.0348 153.18 71.165C152.929 71.2952 152.643 71.3604 152.32 71.3604C152.076 71.3604 151.853 71.3148 151.651 71.2236C151.45 71.1325 151.277 71.0072 151.134 70.8477C150.994 70.6979 150.883 70.5254 150.802 70.3301C150.724 70.1348 150.673 69.9085 150.65 69.6514V69.6172H154.425V69.2119C154.425 68.8441 154.378 68.5023 154.283 68.1865C154.192 67.8708 154.052 67.5957 153.863 67.3613C153.674 67.1302 153.437 66.9495 153.15 66.8193C152.867 66.6859 152.535 66.6191 152.154 66.6191C151.852 66.6191 151.555 66.681 151.266 66.8047C150.979 66.9284 150.724 67.1058 150.499 67.3369C150.271 67.5713 150.089 67.8577 149.952 68.1963C149.815 68.5316 149.747 68.9124 149.747 69.3389V69.5439C149.747 69.9118 149.809 70.252 149.933 70.5645C150.056 70.877 150.229 71.1471 150.45 71.375C150.672 71.6029 150.937 71.7803 151.246 71.9072C151.559 72.0342 151.9 72.0977 152.271 72.0977ZM152.154 67.3613C152.385 67.3613 152.584 67.4036 152.75 67.4883C152.919 67.5729 153.059 67.6836 153.17 67.8203C153.281 67.957 153.367 68.1198 153.429 68.3086C153.491 68.4941 153.521 68.6683 153.521 68.8311V68.875H150.68C150.715 68.6309 150.777 68.416 150.865 68.2305C150.956 68.0417 151.067 67.8822 151.197 67.752C151.327 67.625 151.474 67.529 151.637 67.4639C151.799 67.3955 151.972 67.3613 152.154 67.3613ZM160.304 72V71.2627H156.734L158.644 69.1924C158.823 68.9971 158.992 68.8018 159.151 68.6064C159.314 68.4079 159.457 68.2077 159.581 68.0059C159.701 67.804 159.798 67.6006 159.869 67.3955C159.941 67.1872 159.977 66.9772 159.977 66.7656C159.977 66.4824 159.926 66.2204 159.825 65.9795C159.728 65.7386 159.586 65.5303 159.4 65.3545C159.215 65.1787 158.987 65.042 158.717 64.9443C158.45 64.8434 158.149 64.793 157.813 64.793C157.449 64.793 157.123 64.8516 156.837 64.9688C156.554 65.0859 156.314 65.2438 156.119 65.4424C155.921 65.641 155.769 65.8737 155.665 66.1406C155.561 66.4043 155.509 66.6859 155.509 66.9854H156.417C156.417 66.764 156.445 66.5638 156.5 66.3848C156.559 66.2057 156.646 66.0527 156.764 65.9258C156.878 65.8021 157.021 65.7061 157.193 65.6377C157.369 65.5693 157.576 65.5352 157.813 65.5352C158.009 65.5352 158.183 65.5693 158.336 65.6377C158.492 65.7028 158.626 65.7923 158.736 65.9062C158.844 66.0202 158.925 66.1553 158.98 66.3115C159.039 66.4645 159.068 66.6289 159.068 66.8047C159.068 66.9479 159.05 67.0879 159.015 67.2246C158.979 67.3581 158.919 67.4997 158.834 67.6494C158.749 67.8024 158.637 67.9684 158.497 68.1475C158.357 68.3265 158.183 68.5316 157.975 68.7627L155.646 71.3506V72H160.304ZM163.766 71.4141C163.766 71.6029 163.824 71.764 163.941 71.8975C164.062 72.0277 164.239 72.0928 164.474 72.0928C164.705 72.0928 164.882 72.0277 165.006 71.8975C165.13 71.7673 165.191 71.6061 165.191 71.4141C165.191 71.2188 165.13 71.0544 165.006 70.9209C164.885 70.7842 164.708 70.7158 164.474 70.7158C164.236 70.7158 164.059 70.7842 163.941 70.9209C163.824 71.0576 163.766 71.222 163.766 71.4141ZM163.766 67.1367C163.766 67.3255 163.824 67.4867 163.941 67.6201C164.062 67.7503 164.239 67.8154 164.474 67.8154C164.705 67.8154 164.882 67.7503 165.006 67.6201C165.13 67.4899 165.191 67.3288 165.191 67.1367C165.191 66.9414 165.13 66.777 165.006 66.6436C164.885 66.5068 164.708 66.4385 164.474 66.4385C164.236 66.4385 164.059 66.5068 163.941 66.6436C163.824 66.7803 163.766 66.9447 163.766 67.1367ZM178.321 72V71.2627H174.752L176.661 69.1924C176.84 68.9971 177.009 68.8018 177.169 68.6064C177.332 68.4079 177.475 68.2077 177.599 68.0059C177.719 67.804 177.815 67.6006 177.887 67.3955C177.958 67.1872 177.994 66.9772 177.994 66.7656C177.994 66.4824 177.944 66.2204 177.843 65.9795C177.745 65.7386 177.604 65.5303 177.418 65.3545C177.232 65.1787 177.005 65.042 176.734 64.9443C176.467 64.8434 176.166 64.793 175.831 64.793C175.466 64.793 175.141 64.8516 174.854 64.9688C174.571 65.0859 174.332 65.2438 174.137 65.4424C173.938 65.641 173.787 65.8737 173.683 66.1406C173.578 66.4043 173.526 66.6859 173.526 66.9854H174.435C174.435 66.764 174.462 66.5638 174.518 66.3848C174.576 66.2057 174.664 66.0527 174.781 65.9258C174.895 65.8021 175.038 65.7061 175.211 65.6377C175.387 65.5693 175.593 65.5352 175.831 65.5352C176.026 65.5352 176.201 65.5693 176.354 65.6377C176.51 65.7028 176.643 65.7923 176.754 65.9062C176.861 66.0202 176.943 66.1553 176.998 66.3115C177.057 66.4645 177.086 66.6289 177.086 66.8047C177.086 66.9479 177.068 67.0879 177.032 67.2246C176.996 67.3581 176.936 67.4997 176.852 67.6494C176.767 67.8024 176.655 67.9684 176.515 68.1475C176.375 68.3265 176.201 68.5316 175.992 68.7627L173.663 71.3506V72H178.321ZM186.7 73.2256L186.803 73.7871C187.122 73.7806 187.397 73.7074 187.628 73.5674C187.859 73.4274 188.051 73.2484 188.204 73.0303C188.354 72.8122 188.465 72.5697 188.536 72.3027C188.608 72.0391 188.644 71.777 188.644 71.5166V70.6914C188.644 70.4635 188.67 70.2666 188.722 70.1006C188.774 69.9346 188.854 69.7962 188.961 69.6855C189.072 69.5716 189.213 69.4886 189.386 69.4365C189.562 69.3812 189.767 69.3519 190.001 69.3486V68.6406C189.734 68.6406 189.505 68.6064 189.312 68.5381C189.124 68.4665 188.976 68.3542 188.868 68.2012C188.793 68.0938 188.736 67.9668 188.697 67.8203C188.661 67.6706 188.644 67.498 188.644 67.3027V66.4727C188.644 66.1992 188.606 65.9225 188.531 65.6426C188.46 65.3626 188.341 65.1104 188.175 64.8857C188.028 64.6872 187.841 64.526 187.613 64.4023C187.389 64.2786 187.118 64.2119 186.803 64.2021L186.705 64.7637C186.939 64.7702 187.125 64.8255 187.262 64.9297C187.398 65.0339 187.503 65.1657 187.574 65.3252C187.643 65.488 187.687 65.6702 187.706 65.8721C187.729 66.0739 187.74 66.2741 187.74 66.4727V67.3027C187.74 67.5566 187.778 67.7926 187.853 68.0107C187.927 68.2256 188.043 68.4144 188.199 68.5771C188.281 68.665 188.375 68.7448 188.482 68.8164C188.593 68.888 188.714 68.9499 188.844 69.002C188.717 69.054 188.6 69.1143 188.492 69.1826C188.388 69.251 188.294 69.3275 188.209 69.4121C188.049 69.5716 187.931 69.7604 187.853 69.9785C187.778 70.1966 187.74 70.4342 187.74 70.6914V71.5166C187.74 71.7184 187.722 71.9186 187.687 72.1172C187.654 72.319 187.599 72.4997 187.521 72.6592C187.439 72.8219 187.332 72.9554 187.198 73.0596C187.065 73.1637 186.899 73.2191 186.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M55.3473 229.369C55.5514 229.73 56.009 229.857 56.3695 229.653L62.2435 226.327C62.6039 226.123 62.7307 225.665 62.5266 225.305C62.3226 224.945 61.8649 224.818 61.5045 225.022L56.2832 227.978L53.3272 222.757C53.1231 222.396 52.6655 222.269 52.305 222.473C51.9446 222.677 51.8178 223.135 52.0219 223.496L55.3473 229.369ZM96.2772 80.7998L55.2772 228.8L56.7228 229.2L97.7228 81.2002L96.2772 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M142.45 231.538C142.747 231.827 143.222 231.82 143.511 231.524L148.221 226.688C148.51 226.392 148.503 225.917 148.207 225.628C147.91 225.339 147.435 225.345 147.146 225.642L142.96 229.94L138.662 225.753C138.365 225.464 137.89 225.471 137.601 225.767C137.312 226.064 137.318 226.539 137.615 226.828L142.45 231.538ZM140.25 81.0099L142.224 231.01L143.724 230.99L141.75 80.9901L140.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"223.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M255.775 73.7871L255.878 73.2256C255.676 73.2191 255.508 73.1637 255.375 73.0596C255.245 72.9554 255.141 72.8219 255.062 72.6592C254.981 72.4997 254.924 72.319 254.892 72.1172C254.859 71.9186 254.843 71.7184 254.843 71.5166V70.6914C254.84 70.304 254.748 69.9639 254.569 69.6709C254.39 69.3747 254.112 69.1517 253.734 69.002C254.112 68.849 254.39 68.626 254.569 68.333C254.752 68.0368 254.843 67.6934 254.843 67.3027V66.4727C254.843 66.2741 254.853 66.0739 254.872 65.8721C254.892 65.6702 254.937 65.488 255.009 65.3252C255.077 65.1657 255.18 65.0339 255.316 64.9297C255.456 64.8255 255.644 64.7702 255.878 64.7637L255.775 64.2021C255.447 64.2119 255.167 64.2835 254.936 64.417C254.704 64.5472 254.517 64.7165 254.374 64.9248C254.221 65.1429 254.109 65.3903 254.037 65.667C253.969 65.9404 253.935 66.209 253.935 66.4727V67.3027C253.935 67.7747 253.822 68.1165 253.598 68.3281C253.376 68.5365 253.036 68.6406 252.577 68.6406V69.3486C253.036 69.3519 253.376 69.4593 253.598 69.6709C253.822 69.8825 253.935 70.2227 253.935 70.6914V71.5166C253.935 71.777 253.972 72.0391 254.047 72.3027C254.122 72.5697 254.232 72.8105 254.379 73.0254C254.532 73.25 254.724 73.4307 254.955 73.5674C255.186 73.7041 255.46 73.7773 255.775 73.7871ZM263.861 72H264.765V68.2109C264.826 68.097 264.898 67.9928 264.979 67.8984C265.064 67.804 265.155 67.721 265.253 67.6494C265.373 67.568 265.505 67.5046 265.648 67.459C265.792 67.4102 265.946 67.3857 266.112 67.3857C266.304 67.3857 266.474 67.4085 266.62 67.4541C266.77 67.4997 266.897 67.5729 267.001 67.6738C267.102 67.7747 267.178 67.9066 267.23 68.0693C267.283 68.2321 267.309 68.4307 267.309 68.665V72H268.212V68.6455C268.212 68.2939 268.168 67.9912 268.08 67.7373C267.995 67.4801 267.873 67.2686 267.714 67.1025C267.554 66.9365 267.361 66.8145 267.133 66.7363C266.908 66.6582 266.658 66.6191 266.381 66.6191C266.176 66.6224 265.98 66.6533 265.795 66.7119C265.613 66.7673 265.443 66.847 265.287 66.9512C265.183 67.0195 265.084 67.1009 264.989 67.1953C264.898 67.2865 264.813 67.3874 264.735 67.498L264.672 66.7168H263.861V72ZM269.613 69.3096V69.417C269.613 69.7979 269.669 70.151 269.779 70.4766C269.89 70.8021 270.049 71.0853 270.258 71.3262C270.463 71.5671 270.714 71.7559 271.01 71.8926C271.309 72.0293 271.646 72.0977 272.021 72.0977C272.392 72.0977 272.725 72.0293 273.021 71.8926C273.318 71.7559 273.57 71.5671 273.778 71.3262C273.983 71.0853 274.141 70.8021 274.252 70.4766C274.363 70.151 274.418 69.7979 274.418 69.417V69.3096C274.418 68.9287 274.363 68.5755 274.252 68.25C274.141 67.9212 273.983 67.6364 273.778 67.3955C273.57 67.1546 273.316 66.9658 273.017 66.8291C272.72 66.6891 272.385 66.6191 272.011 66.6191C271.64 66.6191 271.306 66.6891 271.01 66.8291C270.714 66.9658 270.463 67.1546 270.258 67.3955C270.049 67.6364 269.89 67.9212 269.779 68.25C269.669 68.5755 269.613 68.9287 269.613 69.3096ZM270.517 69.417V69.3096C270.517 69.0524 270.548 68.8066 270.609 68.5723C270.671 68.3346 270.766 68.1263 270.893 67.9473C271.016 67.7682 271.171 67.6266 271.356 67.5225C271.542 67.415 271.76 67.3613 272.011 67.3613C272.261 67.3613 272.479 67.415 272.665 67.5225C272.854 67.6266 273.012 67.7682 273.139 67.9473C273.262 68.1263 273.355 68.3346 273.417 68.5723C273.482 68.8066 273.515 69.0524 273.515 69.3096V69.417C273.515 69.6774 273.484 69.9264 273.422 70.1641C273.36 70.3984 273.267 70.6051 273.144 70.7842C273.017 70.9632 272.859 71.1048 272.67 71.209C272.484 71.3132 272.268 71.3652 272.021 71.3652C271.77 71.3652 271.55 71.3132 271.361 71.209C271.173 71.1048 271.016 70.9632 270.893 70.7842C270.766 70.6051 270.671 70.3984 270.609 70.1641C270.548 69.9264 270.517 69.6774 270.517 69.417ZM275.702 69.3145V69.417C275.702 69.7946 275.753 70.1478 275.854 70.4766C275.954 70.8021 276.096 71.0853 276.278 71.3262C276.461 71.5671 276.68 71.7559 276.938 71.8926C277.198 72.0293 277.488 72.0977 277.807 72.0977C278.132 72.0977 278.417 72.0423 278.661 71.9316C278.905 71.821 279.115 71.6582 279.291 71.4434L279.33 72H280.16V64.5H279.257V67.2393C279.084 67.0374 278.879 66.8844 278.642 66.7803C278.407 66.6729 278.132 66.6191 277.816 66.6191C277.494 66.6191 277.203 66.6859 276.942 66.8193C276.682 66.9528 276.461 67.1383 276.278 67.376C276.093 67.6136 275.95 67.8984 275.849 68.2305C275.751 68.5592 275.702 68.9206 275.702 69.3145ZM276.605 69.417V69.3145C276.605 69.0573 276.633 68.8132 276.688 68.582C276.744 68.3477 276.83 68.141 276.947 67.9619C277.061 67.7861 277.208 67.6462 277.387 67.542C277.569 67.4378 277.787 67.3857 278.041 67.3857C278.337 67.3857 278.585 67.4557 278.783 67.5957C278.982 67.7324 279.14 67.9082 279.257 68.123V70.5742C279.14 70.8053 278.982 70.9893 278.783 71.126C278.585 71.2627 278.334 71.3311 278.031 71.3311C277.781 71.3311 277.566 71.2806 277.387 71.1797C277.208 71.0755 277.061 70.9355 276.947 70.7598C276.83 70.584 276.744 70.3805 276.688 70.1494C276.633 69.9183 276.605 69.6742 276.605 69.417ZM284.213 72.0977C284.727 72.0977 285.159 71.9951 285.507 71.79C285.858 71.5817 286.122 71.3441 286.298 71.0771L285.746 70.6475C285.58 70.8623 285.372 71.0348 285.121 71.165C284.87 71.2952 284.584 71.3604 284.262 71.3604C284.018 71.3604 283.795 71.3148 283.593 71.2236C283.391 71.1325 283.218 71.0072 283.075 70.8477C282.935 70.6979 282.825 70.5254 282.743 70.3301C282.665 70.1348 282.615 69.9085 282.592 69.6514V69.6172H286.366V69.2119C286.366 68.8441 286.319 68.5023 286.225 68.1865C286.133 67.8708 285.993 67.5957 285.805 67.3613C285.616 67.1302 285.378 66.9495 285.092 66.8193C284.809 66.6859 284.477 66.6191 284.096 66.6191C283.793 66.6191 283.497 66.681 283.207 66.8047C282.921 66.9284 282.665 67.1058 282.44 67.3369C282.213 67.5713 282.03 67.8577 281.894 68.1963C281.757 68.5316 281.688 68.9124 281.688 69.3389V69.5439C281.688 69.9118 281.75 70.252 281.874 70.5645C281.998 70.877 282.17 71.1471 282.392 71.375C282.613 71.6029 282.878 71.7803 283.188 71.9072C283.5 72.0342 283.842 72.0977 284.213 72.0977ZM284.096 67.3613C284.327 67.3613 284.525 67.4036 284.691 67.4883C284.861 67.5729 285.001 67.6836 285.111 67.8203C285.222 67.957 285.308 68.1198 285.37 68.3086C285.432 68.4941 285.463 68.6683 285.463 68.8311V68.875H282.621C282.657 68.6309 282.719 68.416 282.807 68.2305C282.898 68.0417 283.008 67.8822 283.139 67.752C283.269 67.625 283.415 67.529 283.578 67.4639C283.741 67.3955 283.913 67.3613 284.096 67.3613ZM290.814 72V64.8906H290.741L288.051 65.9258V66.751L289.911 66.043V72H290.814ZM295.707 71.4141C295.707 71.6029 295.766 71.764 295.883 71.8975C296.003 72.0277 296.181 72.0928 296.415 72.0928C296.646 72.0928 296.824 72.0277 296.947 71.8975C297.071 71.7673 297.133 71.6061 297.133 71.4141C297.133 71.2188 297.071 71.0544 296.947 70.9209C296.827 70.7842 296.649 70.7158 296.415 70.7158C296.177 70.7158 296 70.7842 295.883 70.9209C295.766 71.0576 295.707 71.222 295.707 71.4141ZM295.707 67.1367C295.707 67.3255 295.766 67.4867 295.883 67.6201C296.003 67.7503 296.181 67.8154 296.415 67.8154C296.646 67.8154 296.824 67.7503 296.947 67.6201C297.071 67.4899 297.133 67.3288 297.133 67.1367C297.133 66.9414 297.071 66.777 296.947 66.6436C296.827 66.5068 296.649 66.4385 296.415 66.4385C296.177 66.4385 296 66.5068 295.883 66.6436C295.766 66.7803 295.707 66.9447 295.707 67.1367ZM306.957 68.0107V68.7432H307.602C307.826 68.7432 308.031 68.7692 308.217 68.8213C308.406 68.8734 308.567 68.9531 308.7 69.0605C308.83 69.168 308.931 69.3031 309.003 69.4658C309.078 69.6253 309.115 69.8158 309.115 70.0371C309.115 70.2617 309.083 70.457 309.018 70.623C308.956 70.7858 308.866 70.9225 308.749 71.0332C308.632 71.1439 308.49 71.2269 308.324 71.2822C308.158 71.3343 307.973 71.3604 307.768 71.3604C307.562 71.3604 307.375 71.3311 307.206 71.2725C307.04 71.2139 306.898 71.1309 306.781 71.0234C306.664 70.916 306.573 70.7858 306.508 70.6328C306.446 70.4798 306.415 70.3105 306.415 70.125H305.512C305.512 70.4375 305.57 70.7158 305.688 70.96C305.808 71.2041 305.969 71.4108 306.171 71.5801C306.373 71.7493 306.61 71.8779 306.884 71.9658C307.16 72.0537 307.455 72.0977 307.768 72.0977C308.087 72.0977 308.383 72.0521 308.656 71.9609C308.933 71.8665 309.172 71.7298 309.374 71.5508C309.576 71.375 309.734 71.1585 309.848 70.9014C309.962 70.6442 310.019 70.3496 310.019 70.0176C310.019 69.8548 309.999 69.6904 309.96 69.5244C309.924 69.3584 309.861 69.2005 309.77 69.0508C309.675 68.901 309.55 68.766 309.394 68.6455C309.241 68.5251 309.049 68.4274 308.817 68.3525C309.009 68.2712 309.174 68.1702 309.311 68.0498C309.451 67.9261 309.564 67.7943 309.652 67.6543C309.74 67.5176 309.805 67.376 309.848 67.2295C309.89 67.083 309.911 66.9414 309.911 66.8047C309.911 66.4759 309.859 66.1862 309.755 65.9355C309.651 65.6849 309.504 65.4749 309.315 65.3057C309.127 65.1364 308.9 65.0094 308.637 64.9248C308.373 64.8369 308.082 64.793 307.763 64.793C307.434 64.793 307.134 64.8451 306.864 64.9492C306.597 65.0501 306.368 65.1885 306.176 65.3643C305.984 65.5433 305.834 65.7533 305.727 65.9941C305.622 66.2318 305.57 66.4857 305.57 66.7559H306.479C306.479 66.5703 306.509 66.4027 306.571 66.2529C306.633 66.1032 306.721 65.9746 306.835 65.8672C306.946 65.7598 307.079 65.6784 307.235 65.623C307.395 65.5645 307.571 65.5352 307.763 65.5352C307.961 65.5352 308.137 65.5612 308.29 65.6133C308.446 65.6621 308.576 65.737 308.681 65.8379C308.788 65.9421 308.869 66.0739 308.925 66.2334C308.98 66.3896 309.008 66.5736 309.008 66.7852C309.008 66.9642 308.977 67.1286 308.915 67.2783C308.853 67.4281 308.764 67.5566 308.646 67.6641C308.526 67.7715 308.378 67.8561 308.202 67.918C308.03 67.9798 307.829 68.0107 307.602 68.0107H306.957ZM314.198 71.79V70.9307H313.217V71.8047C313.217 72.0814 313.184 72.3483 313.119 72.6055C313.054 72.8626 312.943 73.1051 312.787 73.333L313.349 73.6406C313.609 73.4095 313.816 73.1247 313.969 72.7861C314.122 72.4476 314.198 72.1156 314.198 71.79ZM323.92 72H324.823V68.2109C324.885 68.097 324.957 67.9928 325.038 67.8984C325.123 67.804 325.214 67.721 325.312 67.6494C325.432 67.568 325.564 67.5046 325.707 67.459C325.85 67.4102 326.005 67.3857 326.171 67.3857C326.363 67.3857 326.532 67.4085 326.679 67.4541C326.828 67.4997 326.955 67.5729 327.06 67.6738C327.16 67.7747 327.237 67.9066 327.289 68.0693C327.341 68.2321 327.367 68.4307 327.367 68.665V72H328.271V68.6455C328.271 68.2939 328.227 67.9912 328.139 67.7373C328.054 67.4801 327.932 67.2686 327.772 67.1025C327.613 66.9365 327.419 66.8145 327.191 66.7363C326.967 66.6582 326.716 66.6191 326.439 66.6191C326.234 66.6224 326.039 66.6533 325.854 66.7119C325.671 66.7673 325.502 66.847 325.346 66.9512C325.242 67.0195 325.142 67.1009 325.048 67.1953C324.957 67.2865 324.872 67.3874 324.794 67.498L324.73 66.7168H323.92V72ZM329.672 69.3096V69.417C329.672 69.7979 329.727 70.151 329.838 70.4766C329.949 70.8021 330.108 71.0853 330.316 71.3262C330.521 71.5671 330.772 71.7559 331.068 71.8926C331.368 72.0293 331.705 72.0977 332.079 72.0977C332.45 72.0977 332.784 72.0293 333.08 71.8926C333.376 71.7559 333.629 71.5671 333.837 71.3262C334.042 71.0853 334.2 70.8021 334.311 70.4766C334.421 70.151 334.477 69.7979 334.477 69.417V69.3096C334.477 68.9287 334.421 68.5755 334.311 68.25C334.2 67.9212 334.042 67.6364 333.837 67.3955C333.629 67.1546 333.375 66.9658 333.075 66.8291C332.779 66.6891 332.444 66.6191 332.069 66.6191C331.698 66.6191 331.365 66.6891 331.068 66.8291C330.772 66.9658 330.521 67.1546 330.316 67.3955C330.108 67.6364 329.949 67.9212 329.838 68.25C329.727 68.5755 329.672 68.9287 329.672 69.3096ZM330.575 69.417V69.3096C330.575 69.0524 330.606 68.8066 330.668 68.5723C330.73 68.3346 330.824 68.1263 330.951 67.9473C331.075 67.7682 331.229 67.6266 331.415 67.5225C331.601 67.415 331.819 67.3613 332.069 67.3613C332.32 67.3613 332.538 67.415 332.724 67.5225C332.912 67.6266 333.07 67.7682 333.197 67.9473C333.321 68.1263 333.414 68.3346 333.476 68.5723C333.541 68.8066 333.573 69.0524 333.573 69.3096V69.417C333.573 69.6774 333.542 69.9264 333.48 70.1641C333.419 70.3984 333.326 70.6051 333.202 70.7842C333.075 70.9632 332.917 71.1048 332.729 71.209C332.543 71.3132 332.326 71.3652 332.079 71.3652C331.828 71.3652 331.609 71.3132 331.42 71.209C331.231 71.1048 331.075 70.9632 330.951 70.7842C330.824 70.6051 330.73 70.3984 330.668 70.1641C330.606 69.9264 330.575 69.6774 330.575 69.417ZM335.761 69.3145V69.417C335.761 69.7946 335.811 70.1478 335.912 70.4766C336.013 70.8021 336.155 71.0853 336.337 71.3262C336.519 71.5671 336.739 71.7559 336.996 71.8926C337.257 72.0293 337.546 72.0977 337.865 72.0977C338.191 72.0977 338.476 72.0423 338.72 71.9316C338.964 71.821 339.174 71.6582 339.35 71.4434L339.389 72H340.219V64.5H339.315V67.2393C339.143 67.0374 338.938 66.8844 338.7 66.7803C338.466 66.6729 338.191 66.6191 337.875 66.6191C337.553 66.6191 337.261 66.6859 337.001 66.8193C336.741 66.9528 336.519 67.1383 336.337 67.376C336.151 67.6136 336.008 67.8984 335.907 68.2305C335.81 68.5592 335.761 68.9206 335.761 69.3145ZM336.664 69.417V69.3145C336.664 69.0573 336.692 68.8132 336.747 68.582C336.802 68.3477 336.889 68.141 337.006 67.9619C337.12 67.7861 337.266 67.6462 337.445 67.542C337.628 67.4378 337.846 67.3857 338.1 67.3857C338.396 67.3857 338.643 67.4557 338.842 67.5957C339.04 67.7324 339.198 67.9082 339.315 68.123V70.5742C339.198 70.8053 339.04 70.9893 338.842 71.126C338.643 71.2627 338.393 71.3311 338.09 71.3311C337.839 71.3311 337.624 71.2806 337.445 71.1797C337.266 71.0755 337.12 70.9355 337.006 70.7598C336.889 70.584 336.802 70.3805 336.747 70.1494C336.692 69.9183 336.664 69.6742 336.664 69.417ZM344.271 72.0977C344.786 72.0977 345.217 71.9951 345.565 71.79C345.917 71.5817 346.181 71.3441 346.356 71.0771L345.805 70.6475C345.639 70.8623 345.43 71.0348 345.18 71.165C344.929 71.2952 344.643 71.3604 344.32 71.3604C344.076 71.3604 343.853 71.3148 343.651 71.2236C343.45 71.1325 343.277 71.0072 343.134 70.8477C342.994 70.6979 342.883 70.5254 342.802 70.3301C342.724 70.1348 342.673 69.9085 342.65 69.6514V69.6172H346.425V69.2119C346.425 68.8441 346.378 68.5023 346.283 68.1865C346.192 67.8708 346.052 67.5957 345.863 67.3613C345.674 67.1302 345.437 66.9495 345.15 66.8193C344.867 66.6859 344.535 66.6191 344.154 66.6191C343.852 66.6191 343.555 66.681 343.266 66.8047C342.979 66.9284 342.724 67.1058 342.499 67.3369C342.271 67.5713 342.089 67.8577 341.952 68.1963C341.815 68.5316 341.747 68.9124 341.747 69.3389V69.5439C341.747 69.9118 341.809 70.252 341.933 70.5645C342.056 70.877 342.229 71.1471 342.45 71.375C342.672 71.6029 342.937 71.7803 343.246 71.9072C343.559 72.0342 343.9 72.0977 344.271 72.0977ZM344.154 67.3613C344.385 67.3613 344.584 67.4036 344.75 67.4883C344.919 67.5729 345.059 67.6836 345.17 67.8203C345.281 67.957 345.367 68.1198 345.429 68.3086C345.491 68.4941 345.521 68.6683 345.521 68.8311V68.875H342.68C342.715 68.6309 342.777 68.416 342.865 68.2305C342.956 68.0417 343.067 67.8822 343.197 67.752C343.327 67.625 343.474 67.529 343.637 67.4639C343.799 67.3955 343.972 67.3613 344.154 67.3613ZM352.304 72V71.2627H348.734L350.644 69.1924C350.823 68.9971 350.992 68.8018 351.151 68.6064C351.314 68.4079 351.457 68.2077 351.581 68.0059C351.701 67.804 351.798 67.6006 351.869 67.3955C351.941 67.1872 351.977 66.9772 351.977 66.7656C351.977 66.4824 351.926 66.2204 351.825 65.9795C351.728 65.7386 351.586 65.5303 351.4 65.3545C351.215 65.1787 350.987 65.042 350.717 64.9443C350.45 64.8434 350.149 64.793 349.813 64.793C349.449 64.793 349.123 64.8516 348.837 64.9688C348.554 65.0859 348.314 65.2438 348.119 65.4424C347.921 65.641 347.769 65.8737 347.665 66.1406C347.561 66.4043 347.509 66.6859 347.509 66.9854H348.417C348.417 66.764 348.445 66.5638 348.5 66.3848C348.559 66.2057 348.646 66.0527 348.764 65.9258C348.878 65.8021 349.021 65.7061 349.193 65.6377C349.369 65.5693 349.576 65.5352 349.813 65.5352C350.009 65.5352 350.183 65.5693 350.336 65.6377C350.492 65.7028 350.626 65.7923 350.736 65.9062C350.844 66.0202 350.925 66.1553 350.98 66.3115C351.039 66.4645 351.068 66.6289 351.068 66.8047C351.068 66.9479 351.05 67.0879 351.015 67.2246C350.979 67.3581 350.919 67.4997 350.834 67.6494C350.749 67.8024 350.637 67.9684 350.497 68.1475C350.357 68.3265 350.183 68.5316 349.975 68.7627L347.646 71.3506V72H352.304ZM355.766 71.4141C355.766 71.6029 355.824 71.764 355.941 71.8975C356.062 72.0277 356.239 72.0928 356.474 72.0928C356.705 72.0928 356.882 72.0277 357.006 71.8975C357.13 71.7673 357.191 71.6061 357.191 71.4141C357.191 71.2188 357.13 71.0544 357.006 70.9209C356.885 70.7842 356.708 70.7158 356.474 70.7158C356.236 70.7158 356.059 70.7842 355.941 70.9209C355.824 71.0576 355.766 71.222 355.766 71.4141ZM355.766 67.1367C355.766 67.3255 355.824 67.4867 355.941 67.6201C356.062 67.7503 356.239 67.8154 356.474 67.8154C356.705 67.8154 356.882 67.7503 357.006 67.6201C357.13 67.4899 357.191 67.3288 357.191 67.1367C357.191 66.9414 357.13 66.777 357.006 66.6436C356.885 66.5068 356.708 66.4385 356.474 66.4385C356.236 66.4385 356.059 66.5068 355.941 66.6436C355.824 66.7803 355.766 66.9447 355.766 67.1367ZM369.623 69.6123V64.8906H368.661L365.478 69.8174V70.3496H368.72V72H369.623V70.3496H370.614V69.6123H369.623ZM366.479 69.6123L368.573 66.3652L368.72 66.0918V69.6123H366.479ZM378.7 73.2256L378.803 73.7871C379.122 73.7806 379.397 73.7074 379.628 73.5674C379.859 73.4274 380.051 73.2484 380.204 73.0303C380.354 72.8122 380.465 72.5697 380.536 72.3027C380.608 72.0391 380.644 71.777 380.644 71.5166V70.6914C380.644 70.4635 380.67 70.2666 380.722 70.1006C380.774 69.9346 380.854 69.7962 380.961 69.6855C381.072 69.5716 381.213 69.4886 381.386 69.4365C381.562 69.3812 381.767 69.3519 382.001 69.3486V68.6406C381.734 68.6406 381.505 68.6064 381.312 68.5381C381.124 68.4665 380.976 68.3542 380.868 68.2012C380.793 68.0938 380.736 67.9668 380.697 67.8203C380.661 67.6706 380.644 67.498 380.644 67.3027V66.4727C380.644 66.1992 380.606 65.9225 380.531 65.6426C380.46 65.3626 380.341 65.1104 380.175 64.8857C380.028 64.6872 379.841 64.526 379.613 64.4023C379.389 64.2786 379.118 64.2119 378.803 64.2021L378.705 64.7637C378.939 64.7702 379.125 64.8255 379.262 64.9297C379.398 65.0339 379.503 65.1657 379.574 65.3252C379.643 65.488 379.687 65.6702 379.706 65.8721C379.729 66.0739 379.74 66.2741 379.74 66.4727V67.3027C379.74 67.5566 379.778 67.7926 379.853 68.0107C379.927 68.2256 380.043 68.4144 380.199 68.5771C380.281 68.665 380.375 68.7448 380.482 68.8164C380.593 68.888 380.714 68.9499 380.844 69.002C380.717 69.054 380.6 69.1143 380.492 69.1826C380.388 69.251 380.294 69.3275 380.209 69.4121C380.049 69.5716 379.931 69.7604 379.853 69.9785C379.778 70.1966 379.74 70.4342 379.74 70.6914V71.5166C379.74 71.7184 379.722 71.9186 379.687 72.1172C379.654 72.319 379.599 72.4997 379.521 72.6592C379.439 72.8219 379.332 72.9554 379.198 73.0596C379.065 73.1637 378.899 73.2191 378.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M252.347 229.369C252.551 229.73 253.009 229.857 253.369 229.653L259.243 226.327C259.604 226.123 259.731 225.665 259.527 225.305C259.323 224.945 258.865 224.818 258.504 225.022L253.283 227.978L250.327 222.757C250.123 222.396 249.665 222.269 249.305 222.473C248.945 222.677 248.818 223.135 249.022 223.496L252.347 229.369ZM293.277 80.7998L252.277 228.8L253.723 229.2L294.723 81.2002L293.277 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M339.45 231.538C339.747 231.827 340.222 231.82 340.511 231.524L345.221 226.688C345.51 226.392 345.503 225.917 345.207 225.628C344.91 225.339 344.435 225.345 344.146 225.642L339.96 229.94L335.662 225.753C335.365 225.464 334.89 225.471 334.601 225.767C334.312 226.064 334.318 226.539 334.615 226.828L339.45 231.538ZM337.25 81.0099L339.224 231.01L340.724 230.99L338.75 80.9901L337.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 115L54 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 116L182 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 185L145 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M68.5449 21.4336H67.4609C67.4258 21.6914 67.3652 21.9316 67.2793 22.1543C67.1934 22.373 67.0781 22.5625 66.9336 22.7227C66.7891 22.8867 66.6113 23.0137 66.4004 23.1035C66.1934 23.1934 65.9473 23.2383 65.6621 23.2383C65.4004 23.2383 65.1719 23.1973 64.9766 23.1152C64.7812 23.0293 64.6113 22.9121 64.4668 22.7637C64.3223 22.6191 64.2031 22.4512 64.1094 22.2598C64.0156 22.0684 63.9395 21.8633 63.8809 21.6445C63.8223 21.4297 63.7793 21.2109 63.752 20.9883C63.7285 20.7617 63.7168 20.543 63.7168 20.332V19.1309C63.7168 18.9199 63.7285 18.7031 63.752 18.4805C63.7793 18.2539 63.8223 18.0332 63.8809 17.8184C63.9395 17.6035 64.0156 17.4004 64.1094 17.209C64.207 17.0176 64.3281 16.8496 64.4727 16.7051C64.6133 16.5605 64.7812 16.4473 64.9766 16.3652C65.1758 16.2793 65.4043 16.2363 65.6621 16.2363C65.9473 16.2363 66.1934 16.2852 66.4004 16.3828C66.6113 16.4766 66.7891 16.6074 66.9336 16.7754C67.0781 16.9434 67.1934 17.1387 67.2793 17.3613C67.3652 17.584 67.4258 17.8242 67.4609 18.082H68.5449C68.498 17.6758 68.4004 17.3047 68.252 16.9688C68.1074 16.6328 67.9141 16.3438 67.6719 16.1016C67.4297 15.8633 67.1406 15.6797 66.8047 15.5508C66.4688 15.418 66.0879 15.3516 65.6621 15.3516C65.3066 15.3516 64.9863 15.4023 64.7012 15.5039C64.416 15.6016 64.1621 15.7383 63.9395 15.9141C63.7129 16.0898 63.5176 16.2988 63.3535 16.541C63.1934 16.7793 63.0605 17.0391 62.9551 17.3203C62.8457 17.6016 62.7637 17.8965 62.709 18.2051C62.6582 18.5137 62.6309 18.8262 62.627 19.1426V20.332C62.6309 20.6484 62.6582 20.9609 62.709 21.2695C62.7637 21.5781 62.8457 21.873 62.9551 22.1543C63.0605 22.4355 63.1934 22.6953 63.3535 22.9336C63.5176 23.1719 63.7129 23.3789 63.9395 23.5547C64.1621 23.7305 64.416 23.8691 64.7012 23.9707C64.9902 24.0684 65.3105 24.1172 65.6621 24.1172C66.0723 24.1172 66.4434 24.0527 66.7754 23.9238C67.1113 23.791 67.4023 23.6055 67.6484 23.3672C67.8906 23.1328 68.0879 22.8516 68.2402 22.5234C68.3926 22.1914 68.4941 21.8281 68.5449 21.4336ZM74.4043 24H75.3887V17.6602H74.2988V22.207C74.2402 22.3438 74.166 22.4707 74.0762 22.5879C73.9902 22.7012 73.8887 22.7988 73.7715 22.8809C73.6309 22.9824 73.4648 23.0625 73.2734 23.1211C73.082 23.1758 72.8652 23.2031 72.623 23.2031C72.416 23.2031 72.2324 23.1758 72.0723 23.1211C71.916 23.0664 71.7832 22.9707 71.6738 22.834C71.5645 22.7012 71.4824 22.5215 71.4277 22.2949C71.373 22.0684 71.3457 21.7832 71.3457 21.4395V17.6602H70.2617V21.4277C70.2617 21.9004 70.3125 22.3066 70.4141 22.6465C70.5195 22.9824 70.668 23.2598 70.8594 23.4785C71.0508 23.6973 71.2812 23.8594 71.5508 23.9648C71.8203 24.0664 72.1211 24.1172 72.4531 24.1172C72.8672 24.1172 73.2324 24.0312 73.5488 23.8594C73.8652 23.6836 74.1289 23.4395 74.3398 23.127L74.4043 24ZM81.5879 17.543C81.127 17.543 80.7148 17.6445 80.3516 17.8477C79.9922 18.0469 79.6836 18.3203 79.4258 18.668L79.4199 18.5098L79.373 17.6602H78.3418V24H79.4316V19.9336C79.502 19.7383 79.5898 19.5625 79.6953 19.4062C79.8047 19.2461 79.9316 19.1113 80.0762 19.002C80.2363 18.877 80.4238 18.7832 80.6387 18.7207C80.8535 18.6543 81.0938 18.6211 81.3594 18.6211C81.5664 18.6211 81.7637 18.6328 81.9512 18.6562C82.1426 18.6758 82.3438 18.709 82.5547 18.7559L82.7012 17.6953C82.5918 17.6484 82.4277 17.6113 82.209 17.584C81.9941 17.5566 81.7871 17.543 81.5879 17.543ZM88.7949 17.543C88.334 17.543 87.9219 17.6445 87.5586 17.8477C87.1992 18.0469 86.8906 18.3203 86.6328 18.668L86.627 18.5098L86.5801 17.6602H85.5488V24H86.6387V19.9336C86.709 19.7383 86.7969 19.5625 86.9023 19.4062C87.0117 19.2461 87.1387 19.1113 87.2832 19.002C87.4434 18.877 87.6309 18.7832 87.8457 18.7207C88.0605 18.6543 88.3008 18.6211 88.5664 18.6211C88.7734 18.6211 88.9707 18.6328 89.1582 18.6562C89.3496 18.6758 89.5508 18.709 89.7617 18.7559L89.9082 17.6953C89.7988 17.6484 89.6348 17.6113 89.416 17.584C89.2012 17.5566 88.9941 17.543 88.7949 17.543ZM94.6484 24.1172C95.2656 24.1172 95.7832 23.9941 96.2012 23.748C96.623 23.498 96.9395 23.2129 97.1504 22.8926L96.4883 22.377C96.2891 22.6348 96.0391 22.8418 95.7383 22.998C95.4375 23.1543 95.0938 23.2324 94.707 23.2324C94.4141 23.2324 94.1465 23.1777 93.9043 23.0684C93.6621 22.959 93.4551 22.8086 93.2832 22.6172C93.1152 22.4375 92.9824 22.2305 92.8848 21.9961C92.791 21.7617 92.7305 21.4902 92.7031 21.1816V21.1406H97.2324V20.6543C97.2324 20.2129 97.1758 19.8027 97.0625 19.4238C96.9531 19.0449 96.7852 18.7148 96.5586 18.4336C96.332 18.1562 96.0469 17.9395 95.7031 17.7832C95.3633 17.623 94.9648 17.543 94.5078 17.543C94.1445 17.543 93.7891 17.6172 93.4414 17.7656C93.0977 17.9141 92.791 18.127 92.5215 18.4043C92.248 18.6855 92.0293 19.0293 91.8652 19.4355C91.7012 19.8379 91.6191 20.2949 91.6191 20.8066V21.0527C91.6191 21.4941 91.6934 21.9023 91.8418 22.2773C91.9902 22.6523 92.1973 22.9766 92.4629 23.25C92.7285 23.5234 93.0469 23.7363 93.418 23.8887C93.793 24.041 94.2031 24.1172 94.6484 24.1172ZM94.5078 18.4336C94.7852 18.4336 95.0234 18.4844 95.2227 18.5859C95.4258 18.6875 95.5938 18.8203 95.7266 18.9844C95.8594 19.1484 95.9629 19.3438 96.0371 19.5703C96.1113 19.793 96.1484 20.002 96.1484 20.1973V20.25H92.7383C92.7812 19.957 92.8555 19.6992 92.9609 19.4766C93.0703 19.25 93.2031 19.0586 93.3594 18.9023C93.5156 18.75 93.6914 18.6348 93.8867 18.5566C94.082 18.4746 94.2891 18.4336 94.5078 18.4336ZM99.0547 24H100.139V19.4531C100.213 19.3164 100.299 19.1914 100.396 19.0781C100.498 18.9648 100.607 18.8652 100.725 18.7793C100.869 18.6816 101.027 18.6055 101.199 18.5508C101.371 18.4922 101.557 18.4629 101.756 18.4629C101.986 18.4629 102.189 18.4902 102.365 18.5449C102.545 18.5996 102.697 18.6875 102.822 18.8086C102.943 18.9297 103.035 19.0879 103.098 19.2832C103.16 19.4785 103.191 19.7168 103.191 19.998V24H104.275V19.9746C104.275 19.5527 104.223 19.1895 104.117 18.8848C104.016 18.5762 103.869 18.3223 103.678 18.123C103.486 17.9238 103.254 17.7773 102.98 17.6836C102.711 17.5898 102.41 17.543 102.078 17.543C101.832 17.5469 101.598 17.584 101.375 17.6543C101.156 17.7207 100.953 17.8164 100.766 17.9414C100.641 18.0234 100.521 18.1211 100.408 18.2344C100.299 18.3438 100.197 18.4648 100.104 18.5977L100.027 17.6602H99.0547V24ZM108.828 16.125H107.738V17.6602H106.074V18.498H107.738V21.9434C107.738 22.334 107.789 22.668 107.891 22.9453C107.996 23.2188 108.139 23.4414 108.318 23.6133C108.498 23.7891 108.709 23.918 108.951 24C109.197 24.0781 109.461 24.1172 109.742 24.1172C109.91 24.1172 110.078 24.1094 110.246 24.0938C110.418 24.0781 110.58 24.0547 110.732 24.0234C110.885 23.9961 111.025 23.9629 111.154 23.9238C111.283 23.8809 111.393 23.832 111.482 23.7773L111.33 23.0098C111.264 23.0254 111.178 23.0449 111.072 23.0684C110.971 23.0879 110.861 23.1074 110.744 23.127C110.623 23.1465 110.5 23.1641 110.375 23.1797C110.25 23.1914 110.129 23.1973 110.012 23.1973C109.852 23.1973 109.699 23.1777 109.555 23.1387C109.414 23.0996 109.289 23.0312 109.18 22.9336C109.07 22.8398 108.984 22.7129 108.922 22.5527C108.859 22.3926 108.828 22.1895 108.828 21.9434V18.498H111.242V17.6602H108.828V16.125ZM126.049 20.9004V20.7773C126.049 20.4453 126.021 20.1309 125.967 19.834C125.912 19.5332 125.832 19.2598 125.727 19.0137C125.625 18.7949 125.508 18.5977 125.375 18.4219C125.242 18.2422 125.092 18.0898 124.924 17.9648C124.736 17.832 124.527 17.7285 124.297 17.6543C124.066 17.5801 123.814 17.543 123.541 17.543C123.322 17.543 123.119 17.5645 122.932 17.6074C122.744 17.6504 122.572 17.7129 122.416 17.7949C122.291 17.8613 122.174 17.9414 122.064 18.0352C121.955 18.125 121.855 18.2266 121.766 18.3398V15H120.682V24H121.678L121.73 23.2793C121.801 23.3691 121.875 23.4512 121.953 23.5254C122.031 23.5996 122.113 23.668 122.199 23.7305C122.379 23.8555 122.58 23.9512 122.803 24.0176C123.029 24.084 123.279 24.1172 123.553 24.1172C123.791 24.1172 124.012 24.0879 124.215 24.0293C124.422 23.9707 124.611 23.8887 124.783 23.7832C125.021 23.6309 125.225 23.4395 125.393 23.209C125.564 22.9746 125.703 22.7109 125.809 22.418C125.887 22.1953 125.945 21.957 125.984 21.7031C126.027 21.4453 126.049 21.1777 126.049 20.9004ZM124.965 20.7773V20.9004C124.965 21.0879 124.953 21.2715 124.93 21.4512C124.906 21.6309 124.869 21.7988 124.818 21.9551C124.756 22.1621 124.672 22.3496 124.566 22.5176C124.461 22.6855 124.33 22.8242 124.174 22.9336C124.057 23.0195 123.924 23.0859 123.775 23.1328C123.627 23.1758 123.463 23.1973 123.283 23.1973C123.096 23.1973 122.924 23.1738 122.768 23.127C122.611 23.0762 122.471 23.0059 122.346 22.916C122.221 22.8262 122.109 22.7227 122.012 22.6055C121.918 22.4844 121.836 22.3535 121.766 22.2129V19.4414C121.832 19.3008 121.912 19.1719 122.006 19.0547C122.104 18.9336 122.215 18.8281 122.34 18.7383C122.461 18.6523 122.6 18.5859 122.756 18.5391C122.912 18.4883 123.084 18.4629 123.271 18.4629C123.443 18.4629 123.6 18.4824 123.74 18.5215C123.881 18.5605 124.008 18.6152 124.121 18.6855C124.285 18.7832 124.424 18.918 124.537 19.0898C124.65 19.2617 124.742 19.4512 124.812 19.6582C124.863 19.8262 124.9 20.0059 124.924 20.1973C124.951 20.3848 124.965 20.5781 124.965 20.7773ZM128.053 15V15.9434H130.209V23.0625H128.053V24H133.361V23.0625H131.293V15H128.053ZM134.785 20.7715V20.9004C134.785 21.3574 134.852 21.7812 134.984 22.1719C135.117 22.5625 135.309 22.9023 135.559 23.1914C135.805 23.4805 136.105 23.707 136.461 23.8711C136.82 24.0352 137.225 24.1172 137.674 24.1172C138.119 24.1172 138.52 24.0352 138.875 23.8711C139.23 23.707 139.533 23.4805 139.783 23.1914C140.029 22.9023 140.219 22.5625 140.352 22.1719C140.484 21.7812 140.551 21.3574 140.551 20.9004V20.7715C140.551 20.3145 140.484 19.8906 140.352 19.5C140.219 19.1055 140.029 18.7637 139.783 18.4746C139.533 18.1855 139.229 17.959 138.869 17.7949C138.514 17.627 138.111 17.543 137.662 17.543C137.217 17.543 136.816 17.627 136.461 17.7949C136.105 17.959 135.805 18.1855 135.559 18.4746C135.309 18.7637 135.117 19.1055 134.984 19.5C134.852 19.8906 134.785 20.3145 134.785 20.7715ZM135.869 20.9004V20.7715C135.869 20.4629 135.906 20.168 135.98 19.8867C136.055 19.6016 136.168 19.3516 136.32 19.1367C136.469 18.9219 136.654 18.752 136.877 18.627C137.1 18.498 137.361 18.4336 137.662 18.4336C137.963 18.4336 138.225 18.498 138.447 18.627C138.674 18.752 138.863 18.9219 139.016 19.1367C139.164 19.3516 139.275 19.6016 139.35 19.8867C139.428 20.168 139.467 20.4629 139.467 20.7715V20.9004C139.467 21.2129 139.43 21.5117 139.355 21.7969C139.281 22.0781 139.17 22.3262 139.021 22.541C138.869 22.7559 138.68 22.9258 138.453 23.0508C138.23 23.1758 137.971 23.2383 137.674 23.2383C137.373 23.2383 137.109 23.1758 136.883 23.0508C136.656 22.9258 136.469 22.7559 136.32 22.541C136.168 22.3262 136.055 22.0781 135.98 21.7969C135.906 21.5117 135.869 21.2129 135.869 20.9004ZM144.998 23.2383C144.658 23.2383 144.373 23.1719 144.143 23.0391C143.916 22.9023 143.734 22.7246 143.598 22.5059C143.457 22.291 143.355 22.0488 143.293 21.7793C143.234 21.5059 143.205 21.2305 143.205 20.9531V20.707C143.205 20.4336 143.234 20.1621 143.293 19.8926C143.355 19.623 143.457 19.3789 143.598 19.1602C143.738 18.9453 143.922 18.7715 144.148 18.6387C144.379 18.502 144.662 18.4336 144.998 18.4336C145.217 18.4336 145.42 18.4707 145.607 18.5449C145.799 18.6191 145.963 18.7207 146.1 18.8496C146.236 18.9785 146.344 19.1289 146.422 19.3008C146.504 19.4688 146.547 19.6484 146.551 19.8398H147.576C147.576 19.5195 147.512 19.2188 147.383 18.9375C147.254 18.6562 147.076 18.4121 146.85 18.2051C146.619 18.002 146.346 17.8418 146.029 17.7246C145.717 17.6035 145.373 17.543 144.998 17.543C144.518 17.543 144.098 17.6289 143.738 17.8008C143.379 17.9727 143.08 18.2031 142.842 18.4922C142.6 18.7852 142.418 19.123 142.297 19.5059C142.176 19.8887 142.115 20.2891 142.115 20.707V20.9531C142.115 21.375 142.176 21.7773 142.297 22.1602C142.418 22.5391 142.6 22.873 142.842 23.1621C143.08 23.4551 143.379 23.6875 143.738 23.8594C144.098 24.0312 144.518 24.1172 144.998 24.1172C145.334 24.1172 145.656 24.0605 145.965 23.9473C146.273 23.8301 146.547 23.6738 146.785 23.4785C147.023 23.2871 147.213 23.0645 147.354 22.8105C147.498 22.5527 147.572 22.2832 147.576 22.002H146.551C146.547 22.1777 146.5 22.3418 146.41 22.4941C146.324 22.6426 146.209 22.7715 146.064 22.8809C145.92 22.9941 145.754 23.082 145.566 23.1445C145.383 23.207 145.193 23.2383 144.998 23.2383ZM151.402 21.041L153.729 24H155.105L152.146 20.3027L154.713 17.6602H153.395L151.314 19.7461L150.605 20.5078V15H149.516V24H150.605V21.8086L151.402 21.041Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M62 25.1719H155.686V25.7578H62V25.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M307.363 21V12.4688H306.268L306.25 18.832L302.939 12.4688H301.838V21H302.934L302.951 14.625L306.262 21H307.363ZM312.027 21.1172C312.645 21.1172 313.162 20.9941 313.58 20.748C314.002 20.498 314.318 20.2129 314.529 19.8926L313.867 19.377C313.668 19.6348 313.418 19.8418 313.117 19.998C312.816 20.1543 312.473 20.2324 312.086 20.2324C311.793 20.2324 311.525 20.1777 311.283 20.0684C311.041 19.959 310.834 19.8086 310.662 19.6172C310.494 19.4375 310.361 19.2305 310.264 18.9961C310.17 18.7617 310.109 18.4902 310.082 18.1816V18.1406H314.611V17.6543C314.611 17.2129 314.555 16.8027 314.441 16.4238C314.332 16.0449 314.164 15.7148 313.938 15.4336C313.711 15.1562 313.426 14.9395 313.082 14.7832C312.742 14.623 312.344 14.543 311.887 14.543C311.523 14.543 311.168 14.6172 310.82 14.7656C310.477 14.9141 310.17 15.127 309.9 15.4043C309.627 15.6855 309.408 16.0293 309.244 16.4355C309.08 16.8379 308.998 17.2949 308.998 17.8066V18.0527C308.998 18.4941 309.072 18.9023 309.221 19.2773C309.369 19.6523 309.576 19.9766 309.842 20.25C310.107 20.5234 310.426 20.7363 310.797 20.8887C311.172 21.041 311.582 21.1172 312.027 21.1172ZM311.887 15.4336C312.164 15.4336 312.402 15.4844 312.602 15.5859C312.805 15.6875 312.973 15.8203 313.105 15.9844C313.238 16.1484 313.342 16.3438 313.416 16.5703C313.49 16.793 313.527 17.002 313.527 17.1973V17.25H310.117C310.16 16.957 310.234 16.6992 310.34 16.4766C310.449 16.25 310.582 16.0586 310.738 15.9023C310.895 15.75 311.07 15.6348 311.266 15.5566C311.461 15.4746 311.668 15.4336 311.887 15.4336ZM317.043 21H317.898L318.877 17.1152L319.035 16.1309L319.199 17.1152L320.189 21H321.045L322.393 14.6602H321.432L320.729 18.7031L320.57 19.6992L320.4 18.7031L319.393 14.6602H318.695L317.682 18.7031L317.523 19.6113L317.395 18.7031L316.656 14.6602H315.695L317.043 21ZM336.221 17.9004V17.7773C336.221 17.4453 336.193 17.1309 336.139 16.834C336.084 16.5332 336.004 16.2598 335.898 16.0137C335.797 15.7949 335.68 15.5977 335.547 15.4219C335.414 15.2422 335.264 15.0898 335.096 14.9648C334.908 14.832 334.699 14.7285 334.469 14.6543C334.238 14.5801 333.986 14.543 333.713 14.543C333.494 14.543 333.291 14.5645 333.104 14.6074C332.916 14.6504 332.744 14.7129 332.588 14.7949C332.463 14.8613 332.346 14.9414 332.236 15.0352C332.127 15.125 332.027 15.2266 331.938 15.3398V12H330.854V21H331.85L331.902 20.2793C331.973 20.3691 332.047 20.4512 332.125 20.5254C332.203 20.5996 332.285 20.668 332.371 20.7305C332.551 20.8555 332.752 20.9512 332.975 21.0176C333.201 21.084 333.451 21.1172 333.725 21.1172C333.963 21.1172 334.184 21.0879 334.387 21.0293C334.594 20.9707 334.783 20.8887 334.955 20.7832C335.193 20.6309 335.396 20.4395 335.564 20.209C335.736 19.9746 335.875 19.7109 335.98 19.418C336.059 19.1953 336.117 18.957 336.156 18.7031C336.199 18.4453 336.221 18.1777 336.221 17.9004ZM335.137 17.7773V17.9004C335.137 18.0879 335.125 18.2715 335.102 18.4512C335.078 18.6309 335.041 18.7988 334.99 18.9551C334.928 19.1621 334.844 19.3496 334.738 19.5176C334.633 19.6855 334.502 19.8242 334.346 19.9336C334.229 20.0195 334.096 20.0859 333.947 20.1328C333.799 20.1758 333.635 20.1973 333.455 20.1973C333.268 20.1973 333.096 20.1738 332.939 20.127C332.783 20.0762 332.643 20.0059 332.518 19.916C332.393 19.8262 332.281 19.7227 332.184 19.6055C332.09 19.4844 332.008 19.3535 331.938 19.2129V16.4414C332.004 16.3008 332.084 16.1719 332.178 16.0547C332.275 15.9336 332.387 15.8281 332.512 15.7383C332.633 15.6523 332.771 15.5859 332.928 15.5391C333.084 15.4883 333.256 15.4629 333.443 15.4629C333.615 15.4629 333.771 15.4824 333.912 15.5215C334.053 15.5605 334.18 15.6152 334.293 15.6855C334.457 15.7832 334.596 15.918 334.709 16.0898C334.822 16.2617 334.914 16.4512 334.984 16.6582C335.035 16.8262 335.072 17.0059 335.096 17.1973C335.123 17.3848 335.137 17.5781 335.137 17.7773ZM338.225 12V12.9434H340.381V20.0625H338.225V21H343.533V20.0625H341.465V12H338.225ZM344.957 17.7715V17.9004C344.957 18.3574 345.023 18.7812 345.156 19.1719C345.289 19.5625 345.48 19.9023 345.73 20.1914C345.977 20.4805 346.277 20.707 346.633 20.8711C346.992 21.0352 347.396 21.1172 347.846 21.1172C348.291 21.1172 348.691 21.0352 349.047 20.8711C349.402 20.707 349.705 20.4805 349.955 20.1914C350.201 19.9023 350.391 19.5625 350.523 19.1719C350.656 18.7812 350.723 18.3574 350.723 17.9004V17.7715C350.723 17.3145 350.656 16.8906 350.523 16.5C350.391 16.1055 350.201 15.7637 349.955 15.4746C349.705 15.1855 349.4 14.959 349.041 14.7949C348.686 14.627 348.283 14.543 347.834 14.543C347.389 14.543 346.988 14.627 346.633 14.7949C346.277 14.959 345.977 15.1855 345.73 15.4746C345.48 15.7637 345.289 16.1055 345.156 16.5C345.023 16.8906 344.957 17.3145 344.957 17.7715ZM346.041 17.9004V17.7715C346.041 17.4629 346.078 17.168 346.152 16.8867C346.227 16.6016 346.34 16.3516 346.492 16.1367C346.641 15.9219 346.826 15.752 347.049 15.627C347.271 15.498 347.533 15.4336 347.834 15.4336C348.135 15.4336 348.396 15.498 348.619 15.627C348.846 15.752 349.035 15.9219 349.188 16.1367C349.336 16.3516 349.447 16.6016 349.521 16.8867C349.6 17.168 349.639 17.4629 349.639 17.7715V17.9004C349.639 18.2129 349.602 18.5117 349.527 18.7969C349.453 19.0781 349.342 19.3262 349.193 19.541C349.041 19.7559 348.852 19.9258 348.625 20.0508C348.402 20.1758 348.143 20.2383 347.846 20.2383C347.545 20.2383 347.281 20.1758 347.055 20.0508C346.828 19.9258 346.641 19.7559 346.492 19.541C346.34 19.3262 346.227 19.0781 346.152 18.7969C346.078 18.5117 346.041 18.2129 346.041 17.9004ZM355.17 20.2383C354.83 20.2383 354.545 20.1719 354.314 20.0391C354.088 19.9023 353.906 19.7246 353.77 19.5059C353.629 19.291 353.527 19.0488 353.465 18.7793C353.406 18.5059 353.377 18.2305 353.377 17.9531V17.707C353.377 17.4336 353.406 17.1621 353.465 16.8926C353.527 16.623 353.629 16.3789 353.77 16.1602C353.91 15.9453 354.094 15.7715 354.32 15.6387C354.551 15.502 354.834 15.4336 355.17 15.4336C355.389 15.4336 355.592 15.4707 355.779 15.5449C355.971 15.6191 356.135 15.7207 356.271 15.8496C356.408 15.9785 356.516 16.1289 356.594 16.3008C356.676 16.4688 356.719 16.6484 356.723 16.8398H357.748C357.748 16.5195 357.684 16.2188 357.555 15.9375C357.426 15.6562 357.248 15.4121 357.021 15.2051C356.791 15.002 356.518 14.8418 356.201 14.7246C355.889 14.6035 355.545 14.543 355.17 14.543C354.689 14.543 354.27 14.6289 353.91 14.8008C353.551 14.9727 353.252 15.2031 353.014 15.4922C352.771 15.7852 352.59 16.123 352.469 16.5059C352.348 16.8887 352.287 17.2891 352.287 17.707V17.9531C352.287 18.375 352.348 18.7773 352.469 19.1602C352.59 19.5391 352.771 19.873 353.014 20.1621C353.252 20.4551 353.551 20.6875 353.91 20.8594C354.27 21.0312 354.689 21.1172 355.17 21.1172C355.506 21.1172 355.828 21.0605 356.137 20.9473C356.445 20.8301 356.719 20.6738 356.957 20.4785C357.195 20.2871 357.385 20.0645 357.525 19.8105C357.67 19.5527 357.744 19.2832 357.748 19.002H356.723C356.719 19.1777 356.672 19.3418 356.582 19.4941C356.496 19.6426 356.381 19.7715 356.236 19.8809C356.092 19.9941 355.926 20.082 355.738 20.1445C355.555 20.207 355.365 20.2383 355.17 20.2383ZM361.574 18.041L363.9 21H365.277L362.318 17.3027L364.885 14.6602H363.566L361.486 16.7461L360.777 17.5078V12H359.688V21H360.777V18.8086L361.574 18.041Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M301 22.1719H365.857V22.7578H301V22.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M57.4287 264V249.07H57.2749L50.7739 251.418V253.9L54.5474 252.546V264H57.4287Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M147.208 264V261.713H140.655L143.465 258.74C143.95 258.241 144.391 257.766 144.788 257.314C145.184 256.856 145.526 256.409 145.813 255.971C146.093 255.534 146.309 255.093 146.459 254.648C146.616 254.197 146.695 253.726 146.695 253.233C146.695 252.584 146.592 251.993 146.387 251.459C146.182 250.919 145.885 250.458 145.495 250.075C145.099 249.692 144.606 249.395 144.019 249.183C143.438 248.971 142.768 248.865 142.009 248.865C141.216 248.865 140.491 248.995 139.835 249.255C139.186 249.508 138.632 249.856 138.174 250.301C137.709 250.745 137.35 251.265 137.097 251.859C136.844 252.447 136.718 253.073 136.718 253.736H139.579C139.579 253.333 139.63 252.974 139.732 252.659C139.835 252.345 139.985 252.082 140.184 251.87C140.375 251.665 140.614 251.511 140.901 251.408C141.195 251.299 141.534 251.244 141.917 251.244C142.21 251.244 142.477 251.292 142.716 251.388C142.962 251.483 143.174 251.62 143.352 251.798C143.523 251.982 143.656 252.205 143.752 252.464C143.848 252.724 143.896 253.021 143.896 253.356C143.896 253.582 143.858 253.814 143.783 254.054C143.714 254.293 143.602 254.549 143.444 254.823C143.28 255.103 143.068 255.411 142.809 255.746C142.549 256.081 142.231 256.453 141.855 256.863L137.025 262.052V264H147.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M270.5 32C270.5 35.1143 268.765 37.9776 265.873 40.0809C262.982 42.1839 258.962 43.5 254.5 43.5C250.038 43.5 246.018 42.1839 243.127 40.0809C240.235 37.9776 238.5 35.1143 238.5 32C238.5 28.8857 240.235 26.0224 243.127 23.9191C246.018 21.8161 250.038 20.5 254.5 20.5C258.962 20.5 262.982 21.8161 265.873 23.9191C268.765 26.0224 270.5 28.8857 270.5 32Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"514.5\"\n      cy=\"73.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M515.052 76.7045V70.9363H514.993L512.481 71.8435V72.8022L513.939 72.2793V76.7045H515.052Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"552.5\"\n      cy=\"73.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M551.463 73.3371V74.1928H552.062C552.212 74.1928 552.347 74.21 552.466 74.2443C552.587 74.2786 552.692 74.3315 552.779 74.4028C552.863 74.4741 552.928 74.5652 552.973 74.6761C553.018 74.7871 553.04 74.9204 553.04 75.0763C553.04 75.2004 553.02 75.3127 552.981 75.413C552.944 75.5134 552.888 75.5979 552.814 75.6666C552.738 75.7432 552.643 75.8013 552.529 75.8409C552.415 75.8805 552.287 75.9003 552.145 75.9003C552.018 75.9003 551.902 75.8818 551.796 75.8448C551.691 75.8052 551.599 75.7511 551.523 75.6824C551.444 75.6164 551.383 75.5372 551.341 75.4447C551.298 75.3496 551.277 75.2466 551.277 75.1357H550.176C550.176 75.4157 550.23 75.6586 550.338 75.8647C550.449 76.0707 550.596 76.241 550.778 76.3757C550.96 76.5131 551.168 76.6161 551.4 76.6847C551.635 76.7508 551.875 76.7838 552.121 76.7838C552.406 76.7838 552.672 76.7468 552.917 76.6729C553.166 76.5963 553.38 76.4853 553.559 76.3401C553.739 76.1974 553.88 76.0205 553.983 75.8092C554.086 75.5979 554.138 75.3576 554.138 75.0882C554.138 74.935 554.119 74.7897 554.082 74.6524C554.045 74.515 553.988 74.3882 553.912 74.272C553.835 74.1585 553.737 74.0568 553.619 73.967C553.502 73.8772 553.364 73.8032 553.203 73.7451C553.34 73.6791 553.461 73.6012 553.567 73.5114C553.673 73.4189 553.761 73.3186 553.832 73.2103C553.904 73.102 553.958 72.9884 553.995 72.8696C554.032 72.7481 554.05 72.6253 554.05 72.5011C554.05 72.2317 554.003 71.9954 553.908 71.792C553.815 71.586 553.685 71.413 553.516 71.273C553.347 71.1357 553.143 71.0327 552.905 70.964C552.668 70.8927 552.406 70.857 552.121 70.857C551.857 70.857 551.61 70.8953 551.38 70.9719C551.153 71.0485 550.955 71.1555 550.786 71.2928C550.617 71.4328 550.483 71.5992 550.386 71.792C550.291 71.9848 550.243 72.1987 550.243 72.4338H551.345C551.345 72.3281 551.366 72.2331 551.408 72.1485C551.45 72.064 551.508 71.9914 551.582 71.9307C551.654 71.8725 551.737 71.8276 551.832 71.796C551.93 71.7643 552.034 71.7484 552.145 71.7484C552.279 71.7484 552.397 71.7669 552.497 71.8039C552.6 71.8409 552.685 71.8924 552.751 71.9584C552.817 72.0271 552.866 72.1089 552.898 72.204C552.932 72.2965 552.949 72.3995 552.949 72.513C552.949 72.6292 552.932 72.7375 552.898 72.8379C552.866 72.9356 552.817 73.0188 552.751 73.0875C552.68 73.1667 552.586 73.2288 552.47 73.2737C552.356 73.3159 552.22 73.3371 552.062 73.3371H551.463Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M476.362 71.2317H475.257L475.253 75.0548C475.25 75.2423 475.23 75.4074 475.193 75.55C475.156 75.6926 475.101 75.8115 475.027 75.9066C474.958 75.999 474.871 76.069 474.765 76.1165C474.662 76.1614 474.543 76.1839 474.409 76.1839C474.285 76.1839 474.175 76.1628 474.08 76.1205C473.985 76.0756 473.904 76.0096 473.838 75.9224C473.767 75.8273 473.713 75.7072 473.676 75.5619C473.641 75.4166 473.623 75.2476 473.62 75.0548L473.616 71.2317H472.503L472.499 75.0548C472.499 75.377 472.544 75.6649 472.634 75.9184C472.726 76.1694 472.856 76.3806 473.022 76.5523C473.189 76.724 473.388 76.8547 473.62 76.9445C473.855 77.0343 474.118 77.0792 474.409 77.0792C474.718 77.0792 474.992 77.0343 475.233 76.9445C475.476 76.8547 475.682 76.7227 475.851 76.5484C476.017 76.3767 476.144 76.1654 476.231 75.9145C476.321 75.6636 476.366 75.377 476.366 75.0548L476.362 71.2317ZM477.447 78.6481H478.549V76.6276C478.599 76.6831 478.652 76.7332 478.707 76.7781C478.763 76.823 478.821 76.864 478.882 76.901C478.985 76.9591 479.095 77.0026 479.214 77.0317C479.336 77.0634 479.468 77.0792 479.61 77.0792C479.88 77.0792 480.119 77.0238 480.328 76.9128C480.536 76.8019 480.712 76.6487 480.854 76.4533C480.994 76.2605 481.1 76.0307 481.171 75.7639C481.245 75.4972 481.282 75.208 481.282 74.8963V74.8131C481.282 74.4883 481.245 74.1924 481.171 73.9257C481.1 73.6563 480.993 73.4252 480.851 73.2324C480.708 73.0422 480.532 72.8956 480.324 72.7926C480.115 72.687 479.875 72.6342 479.603 72.6342C479.471 72.6342 479.346 72.6487 479.23 72.6777C479.117 72.7042 479.012 72.7425 478.917 72.7926C478.838 72.8349 478.764 72.8851 478.695 72.9432C478.627 72.9986 478.563 73.062 478.505 73.1333L478.466 72.7134H477.447V78.6481ZM480.181 74.8131V74.8963C480.181 75.0733 480.165 75.241 480.133 75.3995C480.102 75.5553 480.052 75.6926 479.983 75.8115C479.914 75.9303 479.824 76.0241 479.714 76.0928C479.605 76.1614 479.473 76.1958 479.317 76.1958C479.22 76.1958 479.131 76.1865 479.052 76.168C478.973 76.1469 478.903 76.1179 478.842 76.0809C478.779 76.0413 478.722 75.9937 478.672 75.9383C478.624 75.8828 478.583 75.8207 478.549 75.7521V73.9613C478.586 73.8874 478.629 73.8227 478.679 73.7672C478.732 73.7118 478.793 73.6655 478.862 73.6286C478.922 73.5969 478.99 73.5731 479.064 73.5573C479.138 73.5388 479.22 73.5295 479.309 73.5295C479.465 73.5295 479.597 73.5625 479.706 73.6286C479.817 73.6946 479.908 73.7844 479.979 73.898C480.048 74.0142 480.098 74.1515 480.129 74.31C480.164 74.4658 480.181 74.6335 480.181 74.8131ZM482.19 74.825V74.9082C482.19 75.2199 482.228 75.5091 482.304 75.7758C482.381 76.0399 482.492 76.2684 482.637 76.4612C482.78 76.654 482.954 76.8059 483.16 76.9168C483.369 77.0251 483.604 77.0792 483.865 77.0792C484.106 77.0792 484.317 77.033 484.499 76.9406C484.682 76.8481 484.84 76.7187 484.975 76.5523L485.03 77H486.025V70.9148H484.919V73.0977C484.787 72.9498 484.635 72.8362 484.464 72.757C484.295 72.6751 484.098 72.6342 483.873 72.6342C483.607 72.6342 483.369 72.687 483.16 72.7926C482.954 72.8983 482.779 73.0475 482.633 73.2403C482.488 73.4331 482.377 73.6642 482.301 73.9336C482.227 74.203 482.19 74.5001 482.19 74.825ZM483.291 74.9082V74.825C483.291 74.6454 483.307 74.4777 483.338 74.3219C483.37 74.1634 483.42 74.0247 483.489 73.9059C483.558 73.7897 483.646 73.6986 483.754 73.6325C483.865 73.5639 483.999 73.5295 484.155 73.5295C484.342 73.5295 484.498 73.5705 484.622 73.6523C484.746 73.7316 484.845 73.8438 484.919 73.9891V75.7243C484.845 75.8669 484.745 75.9792 484.618 76.0611C484.494 76.1429 484.337 76.1839 484.147 76.1839C483.991 76.1839 483.859 76.1509 483.751 76.0848C483.642 76.0188 483.554 75.9277 483.485 75.8115C483.416 75.6979 483.366 75.5645 483.335 75.4113C483.305 75.2555 483.291 75.0878 483.291 74.9082ZM489.856 77H490.973V76.9327C490.917 76.8244 490.875 76.6949 490.846 76.5444C490.817 76.3939 490.802 76.2037 490.802 75.9739V74.1357C490.802 73.8874 490.756 73.6695 490.664 73.482C490.571 73.2918 490.443 73.1347 490.279 73.0105C490.116 72.8864 489.922 72.7926 489.697 72.7292C489.475 72.6659 489.235 72.6342 488.976 72.6342C488.688 72.6342 488.432 72.6711 488.207 72.7451C487.986 72.8164 487.798 72.9141 487.645 73.0383C487.489 73.1624 487.37 73.3063 487.288 73.4701C487.209 73.6338 487.169 73.8068 487.169 73.9891H488.271C488.271 73.9125 488.281 73.8425 488.303 73.7791C488.326 73.7157 488.362 73.6616 488.41 73.6167C488.462 73.5665 488.531 73.5282 488.616 73.5018C488.7 73.4727 488.8 73.4582 488.917 73.4582C489.049 73.4582 489.164 73.4754 489.261 73.5097C489.362 73.5414 489.445 73.5876 489.511 73.6484C489.574 73.7065 489.622 73.7765 489.653 73.8583C489.685 73.9376 489.701 74.0274 489.701 74.1277V74.3813H489.087C488.77 74.3813 488.489 74.4103 488.243 74.4685C488 74.5239 487.795 74.6058 487.629 74.7141C487.444 74.8329 487.306 74.9848 487.213 75.1697C487.121 75.3519 487.074 75.5619 487.074 75.7996C487.074 75.9845 487.111 76.1562 487.185 76.3146C487.259 76.4704 487.362 76.6051 487.494 76.7187C487.626 76.8323 487.784 76.9208 487.966 76.9842C488.151 77.0475 488.353 77.0792 488.572 77.0792C488.707 77.0792 488.832 77.066 488.948 77.0396C489.065 77.0158 489.171 76.9815 489.269 76.9366C489.364 76.8944 489.451 76.8442 489.531 76.7861C489.61 76.728 489.68 76.6659 489.741 76.5999C489.754 76.6765 489.77 76.7491 489.788 76.8178C489.807 76.8864 489.829 76.9472 489.856 77ZM488.806 76.2275C488.703 76.2275 488.612 76.2156 488.532 76.1918C488.456 76.1654 488.391 76.1311 488.338 76.0888C488.285 76.0439 488.244 75.9898 488.215 75.9264C488.189 75.8603 488.176 75.789 488.176 75.7124C488.176 75.6147 488.194 75.5249 488.231 75.443C488.268 75.3585 488.325 75.2859 488.402 75.2251C488.478 75.167 488.577 75.1221 488.699 75.0904C488.82 75.0561 488.967 75.0389 489.138 75.0389H489.701V75.7758C489.669 75.8313 489.626 75.8868 489.57 75.9422C489.515 75.995 489.449 76.0426 489.372 76.0848C489.296 76.1271 489.21 76.1614 489.115 76.1878C489.02 76.2143 488.917 76.2275 488.806 76.2275ZM494.071 71.6635H492.969V72.7134H491.991V73.5256H492.969V75.4747C492.969 75.7573 493.006 76.0003 493.08 76.2037C493.154 76.4044 493.26 76.5695 493.397 76.6989C493.532 76.831 493.694 76.9287 493.885 76.9921C494.077 77.0528 494.291 77.0832 494.526 77.0832C494.648 77.0832 494.771 77.0766 494.895 77.0634C495.022 77.0528 495.143 77.037 495.259 77.0158C495.376 76.9947 495.485 76.9683 495.588 76.9366C495.691 76.9023 495.781 76.8627 495.858 76.8178L495.751 76.0611C495.7 76.0743 495.64 76.0875 495.568 76.1007C495.5 76.1139 495.426 76.1258 495.347 76.1363C495.265 76.1495 495.179 76.1601 495.089 76.168C495.002 76.176 494.916 76.1799 494.831 76.1799C494.715 76.1799 494.61 76.1667 494.515 76.1403C494.422 76.1139 494.343 76.069 494.277 76.0056C494.211 75.9449 494.159 75.863 494.122 75.76C494.088 75.6543 494.071 75.5236 494.071 75.3678V73.5256H495.671V72.7134H494.071V71.6635ZM499.003 77.0792C499.418 77.0792 499.777 76.9987 500.081 76.8376C500.385 76.6765 500.606 76.4969 500.746 76.2988L500.196 75.7045C500.069 75.8683 499.904 75.9911 499.7 76.073C499.497 76.1548 499.287 76.1958 499.071 76.1958C498.917 76.1958 498.776 76.172 498.647 76.1245C498.517 76.0769 498.402 76.0096 498.302 75.9224C498.204 75.8379 498.126 75.7441 498.068 75.6411C498.01 75.5355 497.963 75.3968 497.926 75.2251V75.2133H500.834V74.7458C500.834 74.4315 500.79 74.1449 500.703 73.8861C500.616 73.6246 500.489 73.4014 500.322 73.2165C500.153 73.0317 499.947 72.889 499.704 72.7887C499.464 72.6857 499.189 72.6342 498.88 72.6342C498.582 72.6342 498.306 72.6883 498.052 72.7966C497.799 72.9049 497.58 73.0568 497.395 73.2522C497.21 73.4476 497.066 73.6814 496.963 73.9534C496.86 74.2228 496.808 74.5213 496.808 74.8488V75.0072C496.808 75.2951 496.86 75.5659 496.963 75.8194C497.069 76.0703 497.218 76.2882 497.411 76.4731C497.603 76.6606 497.834 76.8085 498.104 76.9168C498.373 77.0251 498.673 77.0792 499.003 77.0792ZM498.872 73.5256C499.012 73.5256 499.135 73.548 499.241 73.5929C499.349 73.6352 499.44 73.6933 499.514 73.7672C499.588 73.8438 499.646 73.9336 499.689 74.0366C499.731 74.1396 499.752 74.2492 499.752 74.3654V74.4526H497.945C497.972 74.3126 498.011 74.1858 498.064 74.0723C498.117 73.9587 498.183 73.861 498.262 73.7791C498.339 73.6972 498.429 73.6352 498.532 73.5929C498.635 73.548 498.748 73.5256 498.872 73.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M530.579 71.6635H529.478V72.7134H528.499V73.5256H529.478V75.4747C529.478 75.7573 529.515 76.0003 529.589 76.2037C529.663 76.4044 529.768 76.5695 529.906 76.6989C530.04 76.831 530.203 76.9287 530.393 76.9921C530.586 77.0528 530.8 77.0832 531.035 77.0832C531.156 77.0832 531.279 77.0766 531.403 77.0634C531.53 77.0528 531.651 77.037 531.768 77.0158C531.884 76.9947 531.993 76.9683 532.096 76.9366C532.199 76.9023 532.289 76.8627 532.366 76.8178L532.259 76.0611C532.209 76.0743 532.148 76.0875 532.077 76.1007C532.008 76.1139 531.934 76.1258 531.855 76.1363C531.773 76.1495 531.687 76.1601 531.597 76.168C531.51 76.176 531.424 76.1799 531.34 76.1799C531.224 76.1799 531.118 76.1667 531.023 76.1403C530.93 76.1139 530.851 76.069 530.785 76.0056C530.719 75.9449 530.668 75.863 530.631 75.76C530.596 75.6543 530.579 75.5236 530.579 75.3678V73.5256H532.18V72.7134H530.579V71.6635ZM533.281 74.8171V74.9003C533.281 75.2146 533.326 75.5051 533.416 75.7719C533.505 76.036 533.638 76.2658 533.812 76.4612C533.984 76.6566 534.195 76.8098 534.446 76.9208C534.699 77.0291 534.987 77.0832 535.309 77.0832C535.629 77.0832 535.914 77.0291 536.165 76.9208C536.416 76.8098 536.627 76.6566 536.799 76.4612C536.971 76.2658 537.101 76.036 537.191 75.7719C537.281 75.5051 537.326 75.2146 537.326 74.9003V74.8171C537.326 74.5054 537.281 74.2175 537.191 73.9534C537.101 73.6867 536.971 73.4556 536.799 73.2601C536.625 73.0647 536.412 72.9115 536.161 72.8006C535.91 72.6896 535.624 72.6342 535.301 72.6342C534.979 72.6342 534.693 72.6896 534.442 72.8006C534.194 72.9115 533.984 73.0647 533.812 73.2601C533.638 73.4556 533.505 73.6867 533.416 73.9534C533.326 74.2175 533.281 74.5054 533.281 74.8171ZM534.382 74.9003V74.8171C534.382 74.6428 534.4 74.4777 534.434 74.3219C534.468 74.166 534.522 74.0287 534.596 73.9098C534.67 73.791 534.765 73.6972 534.882 73.6286C534.998 73.5599 535.138 73.5256 535.301 73.5256C535.468 73.5256 535.609 73.5599 535.725 73.6286C535.842 73.6972 535.937 73.791 536.011 73.9098C536.082 74.0287 536.135 74.166 536.169 74.3219C536.203 74.4777 536.221 74.6428 536.221 74.8171V74.9003C536.221 75.0799 536.203 75.2489 536.169 75.4074C536.135 75.5632 536.082 75.6992 536.011 75.8154C535.937 75.9343 535.842 76.0281 535.725 76.0967C535.609 76.1654 535.471 76.1997 535.309 76.1997C535.143 76.1997 535 76.1654 534.882 76.0967C534.765 76.0281 534.67 75.9343 534.596 75.8154C534.522 75.6992 534.468 75.5632 534.434 75.4074C534.4 75.2489 534.382 75.0799 534.382 74.9003Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 115L249 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 116L377 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 185L340 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M248.317 255.284V257.499H249.865C250.255 257.499 250.604 257.543 250.911 257.632C251.226 257.721 251.496 257.858 251.721 258.042C251.94 258.227 252.107 258.463 252.224 258.75C252.34 259.037 252.398 259.382 252.398 259.786C252.398 260.107 252.347 260.397 252.244 260.657C252.148 260.917 252.005 261.136 251.813 261.313C251.615 261.512 251.369 261.662 251.075 261.765C250.781 261.867 250.45 261.918 250.081 261.918C249.752 261.918 249.452 261.871 249.178 261.775C248.905 261.672 248.669 261.532 248.471 261.354C248.266 261.184 248.108 260.979 247.999 260.739C247.89 260.493 247.835 260.227 247.835 259.939H244.984C244.984 260.664 245.125 261.293 245.405 261.826C245.692 262.359 246.071 262.8 246.543 263.149C247.015 263.504 247.551 263.771 248.153 263.949C248.761 264.12 249.383 264.205 250.019 264.205C250.757 264.205 251.444 264.109 252.08 263.918C252.723 263.72 253.276 263.433 253.741 263.057C254.206 262.688 254.572 262.229 254.838 261.683C255.105 261.136 255.238 260.514 255.238 259.816C255.238 259.42 255.19 259.044 255.095 258.688C254.999 258.333 254.852 258.005 254.654 257.704C254.456 257.41 254.203 257.147 253.895 256.915C253.594 256.682 253.235 256.491 252.818 256.34C253.174 256.169 253.488 255.968 253.762 255.735C254.035 255.496 254.264 255.236 254.449 254.956C254.633 254.676 254.773 254.382 254.869 254.074C254.965 253.76 255.013 253.442 255.013 253.121C255.013 252.423 254.89 251.812 254.644 251.285C254.404 250.752 254.066 250.304 253.628 249.942C253.191 249.586 252.665 249.32 252.049 249.142C251.434 248.958 250.757 248.865 250.019 248.865C249.335 248.865 248.696 248.964 248.102 249.163C247.514 249.361 247.001 249.638 246.563 249.993C246.126 250.355 245.781 250.786 245.528 251.285C245.282 251.784 245.159 252.338 245.159 252.946H248.009C248.009 252.673 248.064 252.427 248.173 252.208C248.283 251.989 248.433 251.801 248.625 251.644C248.809 251.494 249.024 251.377 249.271 251.295C249.523 251.213 249.793 251.172 250.081 251.172C250.429 251.172 250.733 251.22 250.993 251.316C251.26 251.412 251.479 251.545 251.649 251.716C251.82 251.894 251.947 252.105 252.029 252.352C252.118 252.591 252.162 252.857 252.162 253.151C252.162 253.452 252.118 253.732 252.029 253.992C251.947 254.245 251.82 254.46 251.649 254.638C251.465 254.843 251.222 255.004 250.921 255.12C250.627 255.229 250.275 255.284 249.865 255.284H248.317Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M340.772 258.453V249.07H337.88L331.605 258.976L331.718 260.76H337.921V264H340.772V260.76H342.505V258.453H340.772ZM334.404 258.453L337.645 253.397L337.921 252.905V258.453H334.404Z\"\n      fill=\"black\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"26.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M63.7754 73.7871L63.8779 73.2256C63.6761 73.2191 63.5085 73.1637 63.375 73.0596C63.2448 72.9554 63.1406 72.8219 63.0625 72.6592C62.9811 72.4997 62.9242 72.319 62.8916 72.1172C62.859 71.9186 62.8428 71.7184 62.8428 71.5166V70.6914C62.8395 70.304 62.7484 69.9639 62.5693 69.6709C62.3903 69.3747 62.112 69.1517 61.7344 69.002C62.112 68.849 62.3903 68.626 62.5693 68.333C62.7516 68.0368 62.8428 67.6934 62.8428 67.3027V66.4727C62.8428 66.2741 62.8525 66.0739 62.8721 65.8721C62.8916 65.6702 62.9372 65.488 63.0088 65.3252C63.0771 65.1657 63.1797 65.0339 63.3164 64.9297C63.4564 64.8255 63.6436 64.7702 63.8779 64.7637L63.7754 64.2021C63.4466 64.2119 63.1667 64.2835 62.9355 64.417C62.7044 64.5472 62.5173 64.7165 62.374 64.9248C62.221 65.1429 62.1087 65.3903 62.0371 65.667C61.9688 65.9404 61.9346 66.209 61.9346 66.4727V67.3027C61.9346 67.7747 61.8223 68.1165 61.5977 68.3281C61.3763 68.5365 61.0361 68.6406 60.5771 68.6406V69.3486C61.0361 69.3519 61.3763 69.4593 61.5977 69.6709C61.8223 69.8825 61.9346 70.2227 61.9346 70.6914V71.5166C61.9346 71.777 61.972 72.0391 62.0469 72.3027C62.1217 72.5697 62.2324 72.8105 62.3789 73.0254C62.5319 73.25 62.724 73.4307 62.9551 73.5674C63.1862 73.7041 63.4596 73.7773 63.7754 73.7871ZM71.8613 72H72.7646V68.2109C72.8265 68.097 72.8981 67.9928 72.9795 67.8984C73.0641 67.804 73.1553 67.721 73.2529 67.6494C73.3734 67.568 73.5052 67.5046 73.6484 67.459C73.7917 67.4102 73.9463 67.3857 74.1123 67.3857C74.3044 67.3857 74.4736 67.4085 74.6201 67.4541C74.7699 67.4997 74.8968 67.5729 75.001 67.6738C75.1019 67.7747 75.1784 67.9066 75.2305 68.0693C75.2826 68.2321 75.3086 68.4307 75.3086 68.665V72H76.2119V68.6455C76.2119 68.2939 76.168 67.9912 76.0801 67.7373C75.9954 67.4801 75.8734 67.2686 75.7139 67.1025C75.5544 66.9365 75.3607 66.8145 75.1328 66.7363C74.9082 66.6582 74.6576 66.6191 74.3809 66.6191C74.1758 66.6224 73.9805 66.6533 73.7949 66.7119C73.6126 66.7673 73.4434 66.847 73.2871 66.9512C73.1829 67.0195 73.0837 67.1009 72.9893 67.1953C72.8981 67.2865 72.8135 67.3874 72.7354 67.498L72.6719 66.7168H71.8613V72ZM77.6133 69.3096V69.417C77.6133 69.7979 77.6686 70.151 77.7793 70.4766C77.89 70.8021 78.0495 71.0853 78.2578 71.3262C78.4629 71.5671 78.7135 71.7559 79.0098 71.8926C79.3092 72.0293 79.6462 72.0977 80.0205 72.0977C80.3916 72.0977 80.7253 72.0293 81.0215 71.8926C81.3177 71.7559 81.57 71.5671 81.7783 71.3262C81.9834 71.0853 82.1413 70.8021 82.252 70.4766C82.3626 70.151 82.418 69.7979 82.418 69.417V69.3096C82.418 68.9287 82.3626 68.5755 82.252 68.25C82.1413 67.9212 81.9834 67.6364 81.7783 67.3955C81.57 67.1546 81.3161 66.9658 81.0166 66.8291C80.7204 66.6891 80.3851 66.6191 80.0107 66.6191C79.6396 66.6191 79.306 66.6891 79.0098 66.8291C78.7135 66.9658 78.4629 67.1546 78.2578 67.3955C78.0495 67.6364 77.89 67.9212 77.7793 68.25C77.6686 68.5755 77.6133 68.9287 77.6133 69.3096ZM78.5166 69.417V69.3096C78.5166 69.0524 78.5475 68.8066 78.6094 68.5723C78.6712 68.3346 78.7656 68.1263 78.8926 67.9473C79.0163 67.7682 79.1709 67.6266 79.3564 67.5225C79.542 67.415 79.7601 67.3613 80.0107 67.3613C80.2614 67.3613 80.4795 67.415 80.665 67.5225C80.8538 67.6266 81.0117 67.7682 81.1387 67.9473C81.2624 68.1263 81.3551 68.3346 81.417 68.5723C81.4821 68.8066 81.5146 69.0524 81.5146 69.3096V69.417C81.5146 69.6774 81.4837 69.9264 81.4219 70.1641C81.36 70.3984 81.2673 70.6051 81.1436 70.7842C81.0166 70.9632 80.8587 71.1048 80.6699 71.209C80.4844 71.3132 80.2679 71.3652 80.0205 71.3652C79.7699 71.3652 79.5501 71.3132 79.3613 71.209C79.1725 71.1048 79.0163 70.9632 78.8926 70.7842C78.7656 70.6051 78.6712 70.3984 78.6094 70.1641C78.5475 69.9264 78.5166 69.6774 78.5166 69.417ZM83.7021 69.3145V69.417C83.7021 69.7946 83.7526 70.1478 83.8535 70.4766C83.9544 70.8021 84.096 71.0853 84.2783 71.3262C84.4606 71.5671 84.6803 71.7559 84.9375 71.8926C85.1979 72.0293 85.4876 72.0977 85.8066 72.0977C86.1322 72.0977 86.417 72.0423 86.6611 71.9316C86.9053 71.821 87.1152 71.6582 87.291 71.4434L87.3301 72H88.1602V64.5H87.2568V67.2393C87.0843 67.0374 86.8792 66.8844 86.6416 66.7803C86.4072 66.6729 86.1322 66.6191 85.8164 66.6191C85.4941 66.6191 85.2028 66.6859 84.9424 66.8193C84.682 66.9528 84.4606 67.1383 84.2783 67.376C84.0928 67.6136 83.9495 67.8984 83.8486 68.2305C83.751 68.5592 83.7021 68.9206 83.7021 69.3145ZM84.6055 69.417V69.3145C84.6055 69.0573 84.6331 68.8132 84.6885 68.582C84.7438 68.3477 84.8301 68.141 84.9473 67.9619C85.0612 67.7861 85.2077 67.6462 85.3867 67.542C85.569 67.4378 85.7871 67.3857 86.041 67.3857C86.3372 67.3857 86.5846 67.4557 86.7832 67.5957C86.9818 67.7324 87.1396 67.9082 87.2568 68.123V70.5742C87.1396 70.8053 86.9818 70.9893 86.7832 71.126C86.5846 71.2627 86.334 71.3311 86.0312 71.3311C85.7806 71.3311 85.5658 71.2806 85.3867 71.1797C85.2077 71.0755 85.0612 70.9355 84.9473 70.7598C84.8301 70.584 84.7438 70.3805 84.6885 70.1494C84.6331 69.9183 84.6055 69.6742 84.6055 69.417ZM92.2129 72.0977C92.7272 72.0977 93.1585 71.9951 93.5068 71.79C93.8584 71.5817 94.1221 71.3441 94.2979 71.0771L93.7461 70.6475C93.5801 70.8623 93.3717 71.0348 93.1211 71.165C92.8704 71.2952 92.584 71.3604 92.2617 71.3604C92.0176 71.3604 91.7946 71.3148 91.5928 71.2236C91.391 71.1325 91.2184 71.0072 91.0752 70.8477C90.9352 70.6979 90.8245 70.5254 90.7432 70.3301C90.665 70.1348 90.6146 69.9085 90.5918 69.6514V69.6172H94.3662V69.2119C94.3662 68.8441 94.319 68.5023 94.2246 68.1865C94.1335 67.8708 93.9935 67.5957 93.8047 67.3613C93.6159 67.1302 93.3783 66.9495 93.0918 66.8193C92.8086 66.6859 92.4766 66.6191 92.0957 66.6191C91.793 66.6191 91.4967 66.681 91.207 66.8047C90.9206 66.9284 90.665 67.1058 90.4404 67.3369C90.2126 67.5713 90.0303 67.8577 89.8936 68.1963C89.7568 68.5316 89.6885 68.9124 89.6885 69.3389V69.5439C89.6885 69.9118 89.7503 70.252 89.874 70.5645C89.9977 70.877 90.1702 71.1471 90.3916 71.375C90.613 71.6029 90.8783 71.7803 91.1875 71.9072C91.5 72.0342 91.8418 72.0977 92.2129 72.0977ZM92.0957 67.3613C92.3268 67.3613 92.5254 67.4036 92.6914 67.4883C92.8607 67.5729 93.0007 67.6836 93.1113 67.8203C93.222 67.957 93.3083 68.1198 93.3701 68.3086C93.432 68.4941 93.4629 68.6683 93.4629 68.8311V68.875H90.6211C90.6569 68.6309 90.7188 68.416 90.8066 68.2305C90.8978 68.0417 91.0085 67.8822 91.1387 67.752C91.2689 67.625 91.4154 67.529 91.5781 67.4639C91.7409 67.3955 91.9134 67.3613 92.0957 67.3613ZM98.8145 72V64.8906H98.7412L96.0508 65.9258V66.751L97.9111 66.043V72H98.8145ZM103.707 71.4141C103.707 71.6029 103.766 71.764 103.883 71.8975C104.003 72.0277 104.181 72.0928 104.415 72.0928C104.646 72.0928 104.824 72.0277 104.947 71.8975C105.071 71.7673 105.133 71.6061 105.133 71.4141C105.133 71.2188 105.071 71.0544 104.947 70.9209C104.827 70.7842 104.649 70.7158 104.415 70.7158C104.177 70.7158 104 70.7842 103.883 70.9209C103.766 71.0576 103.707 71.222 103.707 71.4141ZM103.707 67.1367C103.707 67.3255 103.766 67.4867 103.883 67.6201C104.003 67.7503 104.181 67.8154 104.415 67.8154C104.646 67.8154 104.824 67.7503 104.947 67.6201C105.071 67.4899 105.133 67.3288 105.133 67.1367C105.133 66.9414 105.071 66.777 104.947 66.6436C104.827 66.5068 104.649 66.4385 104.415 66.4385C104.177 66.4385 104 66.5068 103.883 66.6436C103.766 66.7803 103.707 66.9447 103.707 67.1367ZM116.832 72V64.8906H116.759L114.068 65.9258V66.751L115.929 66.043V72H116.832ZM122.198 71.79V70.9307H121.217V71.8047C121.217 72.0814 121.184 72.3483 121.119 72.6055C121.054 72.8626 120.943 73.1051 120.787 73.333L121.349 73.6406C121.609 73.4095 121.816 73.1247 121.969 72.7861C122.122 72.4476 122.198 72.1156 122.198 71.79ZM131.92 72H132.823V68.2109C132.885 68.097 132.957 67.9928 133.038 67.8984C133.123 67.804 133.214 67.721 133.312 67.6494C133.432 67.568 133.564 67.5046 133.707 67.459C133.85 67.4102 134.005 67.3857 134.171 67.3857C134.363 67.3857 134.532 67.4085 134.679 67.4541C134.828 67.4997 134.955 67.5729 135.06 67.6738C135.16 67.7747 135.237 67.9066 135.289 68.0693C135.341 68.2321 135.367 68.4307 135.367 68.665V72H136.271V68.6455C136.271 68.2939 136.227 67.9912 136.139 67.7373C136.054 67.4801 135.932 67.2686 135.772 67.1025C135.613 66.9365 135.419 66.8145 135.191 66.7363C134.967 66.6582 134.716 66.6191 134.439 66.6191C134.234 66.6224 134.039 66.6533 133.854 66.7119C133.671 66.7673 133.502 66.847 133.346 66.9512C133.242 67.0195 133.142 67.1009 133.048 67.1953C132.957 67.2865 132.872 67.3874 132.794 67.498L132.73 66.7168H131.92V72ZM137.672 69.3096V69.417C137.672 69.7979 137.727 70.151 137.838 70.4766C137.949 70.8021 138.108 71.0853 138.316 71.3262C138.521 71.5671 138.772 71.7559 139.068 71.8926C139.368 72.0293 139.705 72.0977 140.079 72.0977C140.45 72.0977 140.784 72.0293 141.08 71.8926C141.376 71.7559 141.629 71.5671 141.837 71.3262C142.042 71.0853 142.2 70.8021 142.311 70.4766C142.421 70.151 142.477 69.7979 142.477 69.417V69.3096C142.477 68.9287 142.421 68.5755 142.311 68.25C142.2 67.9212 142.042 67.6364 141.837 67.3955C141.629 67.1546 141.375 66.9658 141.075 66.8291C140.779 66.6891 140.444 66.6191 140.069 66.6191C139.698 66.6191 139.365 66.6891 139.068 66.8291C138.772 66.9658 138.521 67.1546 138.316 67.3955C138.108 67.6364 137.949 67.9212 137.838 68.25C137.727 68.5755 137.672 68.9287 137.672 69.3096ZM138.575 69.417V69.3096C138.575 69.0524 138.606 68.8066 138.668 68.5723C138.73 68.3346 138.824 68.1263 138.951 67.9473C139.075 67.7682 139.229 67.6266 139.415 67.5225C139.601 67.415 139.819 67.3613 140.069 67.3613C140.32 67.3613 140.538 67.415 140.724 67.5225C140.912 67.6266 141.07 67.7682 141.197 67.9473C141.321 68.1263 141.414 68.3346 141.476 68.5723C141.541 68.8066 141.573 69.0524 141.573 69.3096V69.417C141.573 69.6774 141.542 69.9264 141.48 70.1641C141.419 70.3984 141.326 70.6051 141.202 70.7842C141.075 70.9632 140.917 71.1048 140.729 71.209C140.543 71.3132 140.326 71.3652 140.079 71.3652C139.828 71.3652 139.609 71.3132 139.42 71.209C139.231 71.1048 139.075 70.9632 138.951 70.7842C138.824 70.6051 138.73 70.3984 138.668 70.1641C138.606 69.9264 138.575 69.6774 138.575 69.417ZM143.761 69.3145V69.417C143.761 69.7946 143.811 70.1478 143.912 70.4766C144.013 70.8021 144.155 71.0853 144.337 71.3262C144.519 71.5671 144.739 71.7559 144.996 71.8926C145.257 72.0293 145.546 72.0977 145.865 72.0977C146.191 72.0977 146.476 72.0423 146.72 71.9316C146.964 71.821 147.174 71.6582 147.35 71.4434L147.389 72H148.219V64.5H147.315V67.2393C147.143 67.0374 146.938 66.8844 146.7 66.7803C146.466 66.6729 146.191 66.6191 145.875 66.6191C145.553 66.6191 145.261 66.6859 145.001 66.8193C144.741 66.9528 144.519 67.1383 144.337 67.376C144.151 67.6136 144.008 67.8984 143.907 68.2305C143.81 68.5592 143.761 68.9206 143.761 69.3145ZM144.664 69.417V69.3145C144.664 69.0573 144.692 68.8132 144.747 68.582C144.802 68.3477 144.889 68.141 145.006 67.9619C145.12 67.7861 145.266 67.6462 145.445 67.542C145.628 67.4378 145.846 67.3857 146.1 67.3857C146.396 67.3857 146.643 67.4557 146.842 67.5957C147.04 67.7324 147.198 67.9082 147.315 68.123V70.5742C147.198 70.8053 147.04 70.9893 146.842 71.126C146.643 71.2627 146.393 71.3311 146.09 71.3311C145.839 71.3311 145.624 71.2806 145.445 71.1797C145.266 71.0755 145.12 70.9355 145.006 70.7598C144.889 70.584 144.802 70.3805 144.747 70.1494C144.692 69.9183 144.664 69.6742 144.664 69.417ZM152.271 72.0977C152.786 72.0977 153.217 71.9951 153.565 71.79C153.917 71.5817 154.181 71.3441 154.356 71.0771L153.805 70.6475C153.639 70.8623 153.43 71.0348 153.18 71.165C152.929 71.2952 152.643 71.3604 152.32 71.3604C152.076 71.3604 151.853 71.3148 151.651 71.2236C151.45 71.1325 151.277 71.0072 151.134 70.8477C150.994 70.6979 150.883 70.5254 150.802 70.3301C150.724 70.1348 150.673 69.9085 150.65 69.6514V69.6172H154.425V69.2119C154.425 68.8441 154.378 68.5023 154.283 68.1865C154.192 67.8708 154.052 67.5957 153.863 67.3613C153.674 67.1302 153.437 66.9495 153.15 66.8193C152.867 66.6859 152.535 66.6191 152.154 66.6191C151.852 66.6191 151.555 66.681 151.266 66.8047C150.979 66.9284 150.724 67.1058 150.499 67.3369C150.271 67.5713 150.089 67.8577 149.952 68.1963C149.815 68.5316 149.747 68.9124 149.747 69.3389V69.5439C149.747 69.9118 149.809 70.252 149.933 70.5645C150.056 70.877 150.229 71.1471 150.45 71.375C150.672 71.6029 150.937 71.7803 151.246 71.9072C151.559 72.0342 151.9 72.0977 152.271 72.0977ZM152.154 67.3613C152.385 67.3613 152.584 67.4036 152.75 67.4883C152.919 67.5729 153.059 67.6836 153.17 67.8203C153.281 67.957 153.367 68.1198 153.429 68.3086C153.491 68.4941 153.521 68.6683 153.521 68.8311V68.875H150.68C150.715 68.6309 150.777 68.416 150.865 68.2305C150.956 68.0417 151.067 67.8822 151.197 67.752C151.327 67.625 151.474 67.529 151.637 67.4639C151.799 67.3955 151.972 67.3613 152.154 67.3613ZM160.304 72V71.2627H156.734L158.644 69.1924C158.823 68.9971 158.992 68.8018 159.151 68.6064C159.314 68.4079 159.457 68.2077 159.581 68.0059C159.701 67.804 159.798 67.6006 159.869 67.3955C159.941 67.1872 159.977 66.9772 159.977 66.7656C159.977 66.4824 159.926 66.2204 159.825 65.9795C159.728 65.7386 159.586 65.5303 159.4 65.3545C159.215 65.1787 158.987 65.042 158.717 64.9443C158.45 64.8434 158.149 64.793 157.813 64.793C157.449 64.793 157.123 64.8516 156.837 64.9688C156.554 65.0859 156.314 65.2438 156.119 65.4424C155.921 65.641 155.769 65.8737 155.665 66.1406C155.561 66.4043 155.509 66.6859 155.509 66.9854H156.417C156.417 66.764 156.445 66.5638 156.5 66.3848C156.559 66.2057 156.646 66.0527 156.764 65.9258C156.878 65.8021 157.021 65.7061 157.193 65.6377C157.369 65.5693 157.576 65.5352 157.813 65.5352C158.009 65.5352 158.183 65.5693 158.336 65.6377C158.492 65.7028 158.626 65.7923 158.736 65.9062C158.844 66.0202 158.925 66.1553 158.98 66.3115C159.039 66.4645 159.068 66.6289 159.068 66.8047C159.068 66.9479 159.05 67.0879 159.015 67.2246C158.979 67.3581 158.919 67.4997 158.834 67.6494C158.749 67.8024 158.637 67.9684 158.497 68.1475C158.357 68.3265 158.183 68.5316 157.975 68.7627L155.646 71.3506V72H160.304ZM163.766 71.4141C163.766 71.6029 163.824 71.764 163.941 71.8975C164.062 72.0277 164.239 72.0928 164.474 72.0928C164.705 72.0928 164.882 72.0277 165.006 71.8975C165.13 71.7673 165.191 71.6061 165.191 71.4141C165.191 71.2188 165.13 71.0544 165.006 70.9209C164.885 70.7842 164.708 70.7158 164.474 70.7158C164.236 70.7158 164.059 70.7842 163.941 70.9209C163.824 71.0576 163.766 71.222 163.766 71.4141ZM163.766 67.1367C163.766 67.3255 163.824 67.4867 163.941 67.6201C164.062 67.7503 164.239 67.8154 164.474 67.8154C164.705 67.8154 164.882 67.7503 165.006 67.6201C165.13 67.4899 165.191 67.3288 165.191 67.1367C165.191 66.9414 165.13 66.777 165.006 66.6436C164.885 66.5068 164.708 66.4385 164.474 66.4385C164.236 66.4385 164.059 66.5068 163.941 66.6436C163.824 66.7803 163.766 66.9447 163.766 67.1367ZM178.321 72V71.2627H174.752L176.661 69.1924C176.84 68.9971 177.009 68.8018 177.169 68.6064C177.332 68.4079 177.475 68.2077 177.599 68.0059C177.719 67.804 177.815 67.6006 177.887 67.3955C177.958 67.1872 177.994 66.9772 177.994 66.7656C177.994 66.4824 177.944 66.2204 177.843 65.9795C177.745 65.7386 177.604 65.5303 177.418 65.3545C177.232 65.1787 177.005 65.042 176.734 64.9443C176.467 64.8434 176.166 64.793 175.831 64.793C175.466 64.793 175.141 64.8516 174.854 64.9688C174.571 65.0859 174.332 65.2438 174.137 65.4424C173.938 65.641 173.787 65.8737 173.683 66.1406C173.578 66.4043 173.526 66.6859 173.526 66.9854H174.435C174.435 66.764 174.462 66.5638 174.518 66.3848C174.576 66.2057 174.664 66.0527 174.781 65.9258C174.895 65.8021 175.038 65.7061 175.211 65.6377C175.387 65.5693 175.593 65.5352 175.831 65.5352C176.026 65.5352 176.201 65.5693 176.354 65.6377C176.51 65.7028 176.643 65.7923 176.754 65.9062C176.861 66.0202 176.943 66.1553 176.998 66.3115C177.057 66.4645 177.086 66.6289 177.086 66.8047C177.086 66.9479 177.068 67.0879 177.032 67.2246C176.996 67.3581 176.936 67.4997 176.852 67.6494C176.767 67.8024 176.655 67.9684 176.515 68.1475C176.375 68.3265 176.201 68.5316 175.992 68.7627L173.663 71.3506V72H178.321ZM186.7 73.2256L186.803 73.7871C187.122 73.7806 187.397 73.7074 187.628 73.5674C187.859 73.4274 188.051 73.2484 188.204 73.0303C188.354 72.8122 188.465 72.5697 188.536 72.3027C188.608 72.0391 188.644 71.777 188.644 71.5166V70.6914C188.644 70.4635 188.67 70.2666 188.722 70.1006C188.774 69.9346 188.854 69.7962 188.961 69.6855C189.072 69.5716 189.213 69.4886 189.386 69.4365C189.562 69.3812 189.767 69.3519 190.001 69.3486V68.6406C189.734 68.6406 189.505 68.6064 189.312 68.5381C189.124 68.4665 188.976 68.3542 188.868 68.2012C188.793 68.0938 188.736 67.9668 188.697 67.8203C188.661 67.6706 188.644 67.498 188.644 67.3027V66.4727C188.644 66.1992 188.606 65.9225 188.531 65.6426C188.46 65.3626 188.341 65.1104 188.175 64.8857C188.028 64.6872 187.841 64.526 187.613 64.4023C187.389 64.2786 187.118 64.2119 186.803 64.2021L186.705 64.7637C186.939 64.7702 187.125 64.8255 187.262 64.9297C187.398 65.0339 187.503 65.1657 187.574 65.3252C187.643 65.488 187.687 65.6702 187.706 65.8721C187.729 66.0739 187.74 66.2741 187.74 66.4727V67.3027C187.74 67.5566 187.778 67.7926 187.853 68.0107C187.927 68.2256 188.043 68.4144 188.199 68.5771C188.281 68.665 188.375 68.7448 188.482 68.8164C188.593 68.888 188.714 68.9499 188.844 69.002C188.717 69.054 188.6 69.1143 188.492 69.1826C188.388 69.251 188.294 69.3275 188.209 69.4121C188.049 69.5716 187.931 69.7604 187.853 69.9785C187.778 70.1966 187.74 70.4342 187.74 70.6914V71.5166C187.74 71.7184 187.722 71.9186 187.687 72.1172C187.654 72.319 187.599 72.4997 187.521 72.6592C187.439 72.8219 187.332 72.9554 187.198 73.0596C187.065 73.1637 186.899 73.2191 186.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M459.127 73.411C459.354 73.0645 459.257 72.5997 458.911 72.3727L453.265 68.6735C452.918 68.4465 452.454 68.5433 452.227 68.8898C452 69.2363 452.096 69.7012 452.443 69.9282L457.462 73.2163L454.173 78.2351C453.946 78.5816 454.043 79.0465 454.39 79.2735C454.736 79.5005 455.201 79.4036 455.428 79.0571L459.127 73.411ZM269 34.5C268.887 35.2414 268.887 35.2414 268.888 35.2416C268.889 35.2417 268.89 35.2419 268.892 35.2421C268.895 35.2427 268.9 35.2434 268.907 35.2445C268.921 35.2465 268.941 35.2496 268.968 35.2537C269.021 35.2619 269.101 35.2742 269.207 35.2904C269.419 35.3229 269.734 35.3713 270.146 35.435C270.97 35.5624 272.183 35.7508 273.739 35.9948C276.851 36.4829 281.334 37.1936 286.817 38.084C297.783 39.8648 312.748 42.3641 328.742 45.2381C360.763 50.9918 396.817 58.2315 413.244 64.2048L413.756 62.7952C397.183 56.7685 360.987 49.5081 329.008 43.7618C313.002 40.8858 298.029 38.3851 287.058 36.6034C281.572 35.7125 277.086 35.0014 273.972 34.5129C272.414 34.2687 271.2 34.0801 270.375 33.9526C269.962 33.8888 269.647 33.8403 269.435 33.8078C269.329 33.7915 269.248 33.7792 269.194 33.7709C269.167 33.7668 269.147 33.7637 269.134 33.7617C269.127 33.7606 269.122 33.7598 269.118 33.7593C269.117 33.7591 269.115 33.7589 269.114 33.7587C269.113 33.7586 269.113 33.7585 269 34.5ZM413.244 64.2048C429.786 70.2201 441.091 72.6112 448.284 73.4944C451.88 73.9361 454.449 74.0009 456.131 73.9528C456.972 73.9288 457.591 73.8766 458.005 73.8291C458.212 73.8054 458.369 73.7829 458.476 73.7657C458.53 73.7571 458.571 73.7498 458.6 73.7444C458.615 73.7417 458.627 73.7395 458.636 73.7377C458.64 73.7369 458.644 73.7362 458.646 73.7356C458.648 73.7353 458.649 73.735 458.65 73.7348C458.651 73.7347 458.651 73.7345 458.652 73.7345C458.652 73.7344 458.653 73.7342 458.5 73C458.347 72.2658 458.348 72.2657 458.348 72.2656C458.348 72.2656 458.348 72.2655 458.349 72.2654C458.349 72.2654 458.349 72.2653 458.349 72.2653C458.349 72.2653 458.348 72.2655 458.347 72.2658C458.344 72.2664 458.338 72.2675 458.329 72.2692C458.311 72.2725 458.281 72.2778 458.238 72.2846C458.154 72.2982 458.02 72.3176 457.835 72.3388C457.464 72.3813 456.888 72.4306 456.088 72.4534C454.488 72.4991 451.995 72.4389 448.466 72.0056C441.409 71.1389 430.214 68.7799 413.756 62.7952L413.244 64.2048Z\"\n      fill=\"url(#paint0_linear_5_162)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M55.3473 229.369C55.5514 229.73 56.009 229.857 56.3695 229.653L62.2435 226.327C62.6039 226.123 62.7307 225.665 62.5266 225.305C62.3226 224.945 61.8649 224.818 61.5045 225.022L56.2832 227.978L53.3272 222.757C53.1231 222.396 52.6655 222.269 52.305 222.473C51.9446 222.677 51.8178 223.135 52.0219 223.496L55.3473 229.369ZM96.2772 80.7998L55.2772 228.8L56.7228 229.2L97.7228 81.2002L96.2772 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M142.45 231.538C142.747 231.827 143.222 231.82 143.511 231.524L148.221 226.688C148.51 226.392 148.503 225.917 148.207 225.628C147.91 225.339 147.435 225.345 147.146 225.642L142.96 229.94L138.662 225.753C138.365 225.464 137.89 225.471 137.601 225.767C137.312 226.064 137.318 226.539 137.615 226.828L142.45 231.538ZM140.25 81.0099L142.224 231.01L143.724 230.99L141.75 80.9901L140.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"223.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M255.775 73.7871L255.878 73.2256C255.676 73.2191 255.508 73.1637 255.375 73.0596C255.245 72.9554 255.141 72.8219 255.062 72.6592C254.981 72.4997 254.924 72.319 254.892 72.1172C254.859 71.9186 254.843 71.7184 254.843 71.5166V70.6914C254.84 70.304 254.748 69.9639 254.569 69.6709C254.39 69.3747 254.112 69.1517 253.734 69.002C254.112 68.849 254.39 68.626 254.569 68.333C254.752 68.0368 254.843 67.6934 254.843 67.3027V66.4727C254.843 66.2741 254.853 66.0739 254.872 65.8721C254.892 65.6702 254.937 65.488 255.009 65.3252C255.077 65.1657 255.18 65.0339 255.316 64.9297C255.456 64.8255 255.644 64.7702 255.878 64.7637L255.775 64.2021C255.447 64.2119 255.167 64.2835 254.936 64.417C254.704 64.5472 254.517 64.7165 254.374 64.9248C254.221 65.1429 254.109 65.3903 254.037 65.667C253.969 65.9404 253.935 66.209 253.935 66.4727V67.3027C253.935 67.7747 253.822 68.1165 253.598 68.3281C253.376 68.5365 253.036 68.6406 252.577 68.6406V69.3486C253.036 69.3519 253.376 69.4593 253.598 69.6709C253.822 69.8825 253.935 70.2227 253.935 70.6914V71.5166C253.935 71.777 253.972 72.0391 254.047 72.3027C254.122 72.5697 254.232 72.8105 254.379 73.0254C254.532 73.25 254.724 73.4307 254.955 73.5674C255.186 73.7041 255.46 73.7773 255.775 73.7871ZM263.861 72H264.765V68.2109C264.826 68.097 264.898 67.9928 264.979 67.8984C265.064 67.804 265.155 67.721 265.253 67.6494C265.373 67.568 265.505 67.5046 265.648 67.459C265.792 67.4102 265.946 67.3857 266.112 67.3857C266.304 67.3857 266.474 67.4085 266.62 67.4541C266.77 67.4997 266.897 67.5729 267.001 67.6738C267.102 67.7747 267.178 67.9066 267.23 68.0693C267.283 68.2321 267.309 68.4307 267.309 68.665V72H268.212V68.6455C268.212 68.2939 268.168 67.9912 268.08 67.7373C267.995 67.4801 267.873 67.2686 267.714 67.1025C267.554 66.9365 267.361 66.8145 267.133 66.7363C266.908 66.6582 266.658 66.6191 266.381 66.6191C266.176 66.6224 265.98 66.6533 265.795 66.7119C265.613 66.7673 265.443 66.847 265.287 66.9512C265.183 67.0195 265.084 67.1009 264.989 67.1953C264.898 67.2865 264.813 67.3874 264.735 67.498L264.672 66.7168H263.861V72ZM269.613 69.3096V69.417C269.613 69.7979 269.669 70.151 269.779 70.4766C269.89 70.8021 270.049 71.0853 270.258 71.3262C270.463 71.5671 270.714 71.7559 271.01 71.8926C271.309 72.0293 271.646 72.0977 272.021 72.0977C272.392 72.0977 272.725 72.0293 273.021 71.8926C273.318 71.7559 273.57 71.5671 273.778 71.3262C273.983 71.0853 274.141 70.8021 274.252 70.4766C274.363 70.151 274.418 69.7979 274.418 69.417V69.3096C274.418 68.9287 274.363 68.5755 274.252 68.25C274.141 67.9212 273.983 67.6364 273.778 67.3955C273.57 67.1546 273.316 66.9658 273.017 66.8291C272.72 66.6891 272.385 66.6191 272.011 66.6191C271.64 66.6191 271.306 66.6891 271.01 66.8291C270.714 66.9658 270.463 67.1546 270.258 67.3955C270.049 67.6364 269.89 67.9212 269.779 68.25C269.669 68.5755 269.613 68.9287 269.613 69.3096ZM270.517 69.417V69.3096C270.517 69.0524 270.548 68.8066 270.609 68.5723C270.671 68.3346 270.766 68.1263 270.893 67.9473C271.016 67.7682 271.171 67.6266 271.356 67.5225C271.542 67.415 271.76 67.3613 272.011 67.3613C272.261 67.3613 272.479 67.415 272.665 67.5225C272.854 67.6266 273.012 67.7682 273.139 67.9473C273.262 68.1263 273.355 68.3346 273.417 68.5723C273.482 68.8066 273.515 69.0524 273.515 69.3096V69.417C273.515 69.6774 273.484 69.9264 273.422 70.1641C273.36 70.3984 273.267 70.6051 273.144 70.7842C273.017 70.9632 272.859 71.1048 272.67 71.209C272.484 71.3132 272.268 71.3652 272.021 71.3652C271.77 71.3652 271.55 71.3132 271.361 71.209C271.173 71.1048 271.016 70.9632 270.893 70.7842C270.766 70.6051 270.671 70.3984 270.609 70.1641C270.548 69.9264 270.517 69.6774 270.517 69.417ZM275.702 69.3145V69.417C275.702 69.7946 275.753 70.1478 275.854 70.4766C275.954 70.8021 276.096 71.0853 276.278 71.3262C276.461 71.5671 276.68 71.7559 276.938 71.8926C277.198 72.0293 277.488 72.0977 277.807 72.0977C278.132 72.0977 278.417 72.0423 278.661 71.9316C278.905 71.821 279.115 71.6582 279.291 71.4434L279.33 72H280.16V64.5H279.257V67.2393C279.084 67.0374 278.879 66.8844 278.642 66.7803C278.407 66.6729 278.132 66.6191 277.816 66.6191C277.494 66.6191 277.203 66.6859 276.942 66.8193C276.682 66.9528 276.461 67.1383 276.278 67.376C276.093 67.6136 275.95 67.8984 275.849 68.2305C275.751 68.5592 275.702 68.9206 275.702 69.3145ZM276.605 69.417V69.3145C276.605 69.0573 276.633 68.8132 276.688 68.582C276.744 68.3477 276.83 68.141 276.947 67.9619C277.061 67.7861 277.208 67.6462 277.387 67.542C277.569 67.4378 277.787 67.3857 278.041 67.3857C278.337 67.3857 278.585 67.4557 278.783 67.5957C278.982 67.7324 279.14 67.9082 279.257 68.123V70.5742C279.14 70.8053 278.982 70.9893 278.783 71.126C278.585 71.2627 278.334 71.3311 278.031 71.3311C277.781 71.3311 277.566 71.2806 277.387 71.1797C277.208 71.0755 277.061 70.9355 276.947 70.7598C276.83 70.584 276.744 70.3805 276.688 70.1494C276.633 69.9183 276.605 69.6742 276.605 69.417ZM284.213 72.0977C284.727 72.0977 285.159 71.9951 285.507 71.79C285.858 71.5817 286.122 71.3441 286.298 71.0771L285.746 70.6475C285.58 70.8623 285.372 71.0348 285.121 71.165C284.87 71.2952 284.584 71.3604 284.262 71.3604C284.018 71.3604 283.795 71.3148 283.593 71.2236C283.391 71.1325 283.218 71.0072 283.075 70.8477C282.935 70.6979 282.825 70.5254 282.743 70.3301C282.665 70.1348 282.615 69.9085 282.592 69.6514V69.6172H286.366V69.2119C286.366 68.8441 286.319 68.5023 286.225 68.1865C286.133 67.8708 285.993 67.5957 285.805 67.3613C285.616 67.1302 285.378 66.9495 285.092 66.8193C284.809 66.6859 284.477 66.6191 284.096 66.6191C283.793 66.6191 283.497 66.681 283.207 66.8047C282.921 66.9284 282.665 67.1058 282.44 67.3369C282.213 67.5713 282.03 67.8577 281.894 68.1963C281.757 68.5316 281.688 68.9124 281.688 69.3389V69.5439C281.688 69.9118 281.75 70.252 281.874 70.5645C281.998 70.877 282.17 71.1471 282.392 71.375C282.613 71.6029 282.878 71.7803 283.188 71.9072C283.5 72.0342 283.842 72.0977 284.213 72.0977ZM284.096 67.3613C284.327 67.3613 284.525 67.4036 284.691 67.4883C284.861 67.5729 285.001 67.6836 285.111 67.8203C285.222 67.957 285.308 68.1198 285.37 68.3086C285.432 68.4941 285.463 68.6683 285.463 68.8311V68.875H282.621C282.657 68.6309 282.719 68.416 282.807 68.2305C282.898 68.0417 283.008 67.8822 283.139 67.752C283.269 67.625 283.415 67.529 283.578 67.4639C283.741 67.3955 283.913 67.3613 284.096 67.3613ZM290.814 72V64.8906H290.741L288.051 65.9258V66.751L289.911 66.043V72H290.814ZM295.707 71.4141C295.707 71.6029 295.766 71.764 295.883 71.8975C296.003 72.0277 296.181 72.0928 296.415 72.0928C296.646 72.0928 296.824 72.0277 296.947 71.8975C297.071 71.7673 297.133 71.6061 297.133 71.4141C297.133 71.2188 297.071 71.0544 296.947 70.9209C296.827 70.7842 296.649 70.7158 296.415 70.7158C296.177 70.7158 296 70.7842 295.883 70.9209C295.766 71.0576 295.707 71.222 295.707 71.4141ZM295.707 67.1367C295.707 67.3255 295.766 67.4867 295.883 67.6201C296.003 67.7503 296.181 67.8154 296.415 67.8154C296.646 67.8154 296.824 67.7503 296.947 67.6201C297.071 67.4899 297.133 67.3288 297.133 67.1367C297.133 66.9414 297.071 66.777 296.947 66.6436C296.827 66.5068 296.649 66.4385 296.415 66.4385C296.177 66.4385 296 66.5068 295.883 66.6436C295.766 66.7803 295.707 66.9447 295.707 67.1367ZM306.957 68.0107V68.7432H307.602C307.826 68.7432 308.031 68.7692 308.217 68.8213C308.406 68.8734 308.567 68.9531 308.7 69.0605C308.83 69.168 308.931 69.3031 309.003 69.4658C309.078 69.6253 309.115 69.8158 309.115 70.0371C309.115 70.2617 309.083 70.457 309.018 70.623C308.956 70.7858 308.866 70.9225 308.749 71.0332C308.632 71.1439 308.49 71.2269 308.324 71.2822C308.158 71.3343 307.973 71.3604 307.768 71.3604C307.562 71.3604 307.375 71.3311 307.206 71.2725C307.04 71.2139 306.898 71.1309 306.781 71.0234C306.664 70.916 306.573 70.7858 306.508 70.6328C306.446 70.4798 306.415 70.3105 306.415 70.125H305.512C305.512 70.4375 305.57 70.7158 305.688 70.96C305.808 71.2041 305.969 71.4108 306.171 71.5801C306.373 71.7493 306.61 71.8779 306.884 71.9658C307.16 72.0537 307.455 72.0977 307.768 72.0977C308.087 72.0977 308.383 72.0521 308.656 71.9609C308.933 71.8665 309.172 71.7298 309.374 71.5508C309.576 71.375 309.734 71.1585 309.848 70.9014C309.962 70.6442 310.019 70.3496 310.019 70.0176C310.019 69.8548 309.999 69.6904 309.96 69.5244C309.924 69.3584 309.861 69.2005 309.77 69.0508C309.675 68.901 309.55 68.766 309.394 68.6455C309.241 68.5251 309.049 68.4274 308.817 68.3525C309.009 68.2712 309.174 68.1702 309.311 68.0498C309.451 67.9261 309.564 67.7943 309.652 67.6543C309.74 67.5176 309.805 67.376 309.848 67.2295C309.89 67.083 309.911 66.9414 309.911 66.8047C309.911 66.4759 309.859 66.1862 309.755 65.9355C309.651 65.6849 309.504 65.4749 309.315 65.3057C309.127 65.1364 308.9 65.0094 308.637 64.9248C308.373 64.8369 308.082 64.793 307.763 64.793C307.434 64.793 307.134 64.8451 306.864 64.9492C306.597 65.0501 306.368 65.1885 306.176 65.3643C305.984 65.5433 305.834 65.7533 305.727 65.9941C305.622 66.2318 305.57 66.4857 305.57 66.7559H306.479C306.479 66.5703 306.509 66.4027 306.571 66.2529C306.633 66.1032 306.721 65.9746 306.835 65.8672C306.946 65.7598 307.079 65.6784 307.235 65.623C307.395 65.5645 307.571 65.5352 307.763 65.5352C307.961 65.5352 308.137 65.5612 308.29 65.6133C308.446 65.6621 308.576 65.737 308.681 65.8379C308.788 65.9421 308.869 66.0739 308.925 66.2334C308.98 66.3896 309.008 66.5736 309.008 66.7852C309.008 66.9642 308.977 67.1286 308.915 67.2783C308.853 67.4281 308.764 67.5566 308.646 67.6641C308.526 67.7715 308.378 67.8561 308.202 67.918C308.03 67.9798 307.829 68.0107 307.602 68.0107H306.957ZM314.198 71.79V70.9307H313.217V71.8047C313.217 72.0814 313.184 72.3483 313.119 72.6055C313.054 72.8626 312.943 73.1051 312.787 73.333L313.349 73.6406C313.609 73.4095 313.816 73.1247 313.969 72.7861C314.122 72.4476 314.198 72.1156 314.198 71.79ZM323.92 72H324.823V68.2109C324.885 68.097 324.957 67.9928 325.038 67.8984C325.123 67.804 325.214 67.721 325.312 67.6494C325.432 67.568 325.564 67.5046 325.707 67.459C325.85 67.4102 326.005 67.3857 326.171 67.3857C326.363 67.3857 326.532 67.4085 326.679 67.4541C326.828 67.4997 326.955 67.5729 327.06 67.6738C327.16 67.7747 327.237 67.9066 327.289 68.0693C327.341 68.2321 327.367 68.4307 327.367 68.665V72H328.271V68.6455C328.271 68.2939 328.227 67.9912 328.139 67.7373C328.054 67.4801 327.932 67.2686 327.772 67.1025C327.613 66.9365 327.419 66.8145 327.191 66.7363C326.967 66.6582 326.716 66.6191 326.439 66.6191C326.234 66.6224 326.039 66.6533 325.854 66.7119C325.671 66.7673 325.502 66.847 325.346 66.9512C325.242 67.0195 325.142 67.1009 325.048 67.1953C324.957 67.2865 324.872 67.3874 324.794 67.498L324.73 66.7168H323.92V72ZM329.672 69.3096V69.417C329.672 69.7979 329.727 70.151 329.838 70.4766C329.949 70.8021 330.108 71.0853 330.316 71.3262C330.521 71.5671 330.772 71.7559 331.068 71.8926C331.368 72.0293 331.705 72.0977 332.079 72.0977C332.45 72.0977 332.784 72.0293 333.08 71.8926C333.376 71.7559 333.629 71.5671 333.837 71.3262C334.042 71.0853 334.2 70.8021 334.311 70.4766C334.421 70.151 334.477 69.7979 334.477 69.417V69.3096C334.477 68.9287 334.421 68.5755 334.311 68.25C334.2 67.9212 334.042 67.6364 333.837 67.3955C333.629 67.1546 333.375 66.9658 333.075 66.8291C332.779 66.6891 332.444 66.6191 332.069 66.6191C331.698 66.6191 331.365 66.6891 331.068 66.8291C330.772 66.9658 330.521 67.1546 330.316 67.3955C330.108 67.6364 329.949 67.9212 329.838 68.25C329.727 68.5755 329.672 68.9287 329.672 69.3096ZM330.575 69.417V69.3096C330.575 69.0524 330.606 68.8066 330.668 68.5723C330.73 68.3346 330.824 68.1263 330.951 67.9473C331.075 67.7682 331.229 67.6266 331.415 67.5225C331.601 67.415 331.819 67.3613 332.069 67.3613C332.32 67.3613 332.538 67.415 332.724 67.5225C332.912 67.6266 333.07 67.7682 333.197 67.9473C333.321 68.1263 333.414 68.3346 333.476 68.5723C333.541 68.8066 333.573 69.0524 333.573 69.3096V69.417C333.573 69.6774 333.542 69.9264 333.48 70.1641C333.419 70.3984 333.326 70.6051 333.202 70.7842C333.075 70.9632 332.917 71.1048 332.729 71.209C332.543 71.3132 332.326 71.3652 332.079 71.3652C331.828 71.3652 331.609 71.3132 331.42 71.209C331.231 71.1048 331.075 70.9632 330.951 70.7842C330.824 70.6051 330.73 70.3984 330.668 70.1641C330.606 69.9264 330.575 69.6774 330.575 69.417ZM335.761 69.3145V69.417C335.761 69.7946 335.811 70.1478 335.912 70.4766C336.013 70.8021 336.155 71.0853 336.337 71.3262C336.519 71.5671 336.739 71.7559 336.996 71.8926C337.257 72.0293 337.546 72.0977 337.865 72.0977C338.191 72.0977 338.476 72.0423 338.72 71.9316C338.964 71.821 339.174 71.6582 339.35 71.4434L339.389 72H340.219V64.5H339.315V67.2393C339.143 67.0374 338.938 66.8844 338.7 66.7803C338.466 66.6729 338.191 66.6191 337.875 66.6191C337.553 66.6191 337.261 66.6859 337.001 66.8193C336.741 66.9528 336.519 67.1383 336.337 67.376C336.151 67.6136 336.008 67.8984 335.907 68.2305C335.81 68.5592 335.761 68.9206 335.761 69.3145ZM336.664 69.417V69.3145C336.664 69.0573 336.692 68.8132 336.747 68.582C336.802 68.3477 336.889 68.141 337.006 67.9619C337.12 67.7861 337.266 67.6462 337.445 67.542C337.628 67.4378 337.846 67.3857 338.1 67.3857C338.396 67.3857 338.643 67.4557 338.842 67.5957C339.04 67.7324 339.198 67.9082 339.315 68.123V70.5742C339.198 70.8053 339.04 70.9893 338.842 71.126C338.643 71.2627 338.393 71.3311 338.09 71.3311C337.839 71.3311 337.624 71.2806 337.445 71.1797C337.266 71.0755 337.12 70.9355 337.006 70.7598C336.889 70.584 336.802 70.3805 336.747 70.1494C336.692 69.9183 336.664 69.6742 336.664 69.417ZM344.271 72.0977C344.786 72.0977 345.217 71.9951 345.565 71.79C345.917 71.5817 346.181 71.3441 346.356 71.0771L345.805 70.6475C345.639 70.8623 345.43 71.0348 345.18 71.165C344.929 71.2952 344.643 71.3604 344.32 71.3604C344.076 71.3604 343.853 71.3148 343.651 71.2236C343.45 71.1325 343.277 71.0072 343.134 70.8477C342.994 70.6979 342.883 70.5254 342.802 70.3301C342.724 70.1348 342.673 69.9085 342.65 69.6514V69.6172H346.425V69.2119C346.425 68.8441 346.378 68.5023 346.283 68.1865C346.192 67.8708 346.052 67.5957 345.863 67.3613C345.674 67.1302 345.437 66.9495 345.15 66.8193C344.867 66.6859 344.535 66.6191 344.154 66.6191C343.852 66.6191 343.555 66.681 343.266 66.8047C342.979 66.9284 342.724 67.1058 342.499 67.3369C342.271 67.5713 342.089 67.8577 341.952 68.1963C341.815 68.5316 341.747 68.9124 341.747 69.3389V69.5439C341.747 69.9118 341.809 70.252 341.933 70.5645C342.056 70.877 342.229 71.1471 342.45 71.375C342.672 71.6029 342.937 71.7803 343.246 71.9072C343.559 72.0342 343.9 72.0977 344.271 72.0977ZM344.154 67.3613C344.385 67.3613 344.584 67.4036 344.75 67.4883C344.919 67.5729 345.059 67.6836 345.17 67.8203C345.281 67.957 345.367 68.1198 345.429 68.3086C345.491 68.4941 345.521 68.6683 345.521 68.8311V68.875H342.68C342.715 68.6309 342.777 68.416 342.865 68.2305C342.956 68.0417 343.067 67.8822 343.197 67.752C343.327 67.625 343.474 67.529 343.637 67.4639C343.799 67.3955 343.972 67.3613 344.154 67.3613ZM352.304 72V71.2627H348.734L350.644 69.1924C350.823 68.9971 350.992 68.8018 351.151 68.6064C351.314 68.4079 351.457 68.2077 351.581 68.0059C351.701 67.804 351.798 67.6006 351.869 67.3955C351.941 67.1872 351.977 66.9772 351.977 66.7656C351.977 66.4824 351.926 66.2204 351.825 65.9795C351.728 65.7386 351.586 65.5303 351.4 65.3545C351.215 65.1787 350.987 65.042 350.717 64.9443C350.45 64.8434 350.149 64.793 349.813 64.793C349.449 64.793 349.123 64.8516 348.837 64.9688C348.554 65.0859 348.314 65.2438 348.119 65.4424C347.921 65.641 347.769 65.8737 347.665 66.1406C347.561 66.4043 347.509 66.6859 347.509 66.9854H348.417C348.417 66.764 348.445 66.5638 348.5 66.3848C348.559 66.2057 348.646 66.0527 348.764 65.9258C348.878 65.8021 349.021 65.7061 349.193 65.6377C349.369 65.5693 349.576 65.5352 349.813 65.5352C350.009 65.5352 350.183 65.5693 350.336 65.6377C350.492 65.7028 350.626 65.7923 350.736 65.9062C350.844 66.0202 350.925 66.1553 350.98 66.3115C351.039 66.4645 351.068 66.6289 351.068 66.8047C351.068 66.9479 351.05 67.0879 351.015 67.2246C350.979 67.3581 350.919 67.4997 350.834 67.6494C350.749 67.8024 350.637 67.9684 350.497 68.1475C350.357 68.3265 350.183 68.5316 349.975 68.7627L347.646 71.3506V72H352.304ZM355.766 71.4141C355.766 71.6029 355.824 71.764 355.941 71.8975C356.062 72.0277 356.239 72.0928 356.474 72.0928C356.705 72.0928 356.882 72.0277 357.006 71.8975C357.13 71.7673 357.191 71.6061 357.191 71.4141C357.191 71.2188 357.13 71.0544 357.006 70.9209C356.885 70.7842 356.708 70.7158 356.474 70.7158C356.236 70.7158 356.059 70.7842 355.941 70.9209C355.824 71.0576 355.766 71.222 355.766 71.4141ZM355.766 67.1367C355.766 67.3255 355.824 67.4867 355.941 67.6201C356.062 67.7503 356.239 67.8154 356.474 67.8154C356.705 67.8154 356.882 67.7503 357.006 67.6201C357.13 67.4899 357.191 67.3288 357.191 67.1367C357.191 66.9414 357.13 66.777 357.006 66.6436C356.885 66.5068 356.708 66.4385 356.474 66.4385C356.236 66.4385 356.059 66.5068 355.941 66.6436C355.824 66.7803 355.766 66.9447 355.766 67.1367ZM369.623 69.6123V64.8906H368.661L365.478 69.8174V70.3496H368.72V72H369.623V70.3496H370.614V69.6123H369.623ZM366.479 69.6123L368.573 66.3652L368.72 66.0918V69.6123H366.479ZM378.7 73.2256L378.803 73.7871C379.122 73.7806 379.397 73.7074 379.628 73.5674C379.859 73.4274 380.051 73.2484 380.204 73.0303C380.354 72.8122 380.465 72.5697 380.536 72.3027C380.608 72.0391 380.644 71.777 380.644 71.5166V70.6914C380.644 70.4635 380.67 70.2666 380.722 70.1006C380.774 69.9346 380.854 69.7962 380.961 69.6855C381.072 69.5716 381.213 69.4886 381.386 69.4365C381.562 69.3812 381.767 69.3519 382.001 69.3486V68.6406C381.734 68.6406 381.505 68.6064 381.312 68.5381C381.124 68.4665 380.976 68.3542 380.868 68.2012C380.793 68.0938 380.736 67.9668 380.697 67.8203C380.661 67.6706 380.644 67.498 380.644 67.3027V66.4727C380.644 66.1992 380.606 65.9225 380.531 65.6426C380.46 65.3626 380.341 65.1104 380.175 64.8857C380.028 64.6872 379.841 64.526 379.613 64.4023C379.389 64.2786 379.118 64.2119 378.803 64.2021L378.705 64.7637C378.939 64.7702 379.125 64.8255 379.262 64.9297C379.398 65.0339 379.503 65.1657 379.574 65.3252C379.643 65.488 379.687 65.6702 379.706 65.8721C379.729 66.0739 379.74 66.2741 379.74 66.4727V67.3027C379.74 67.5566 379.778 67.7926 379.853 68.0107C379.927 68.2256 380.043 68.4144 380.199 68.5771C380.281 68.665 380.375 68.7448 380.482 68.8164C380.593 68.888 380.714 68.9499 380.844 69.002C380.717 69.054 380.6 69.1143 380.492 69.1826C380.388 69.251 380.294 69.3275 380.209 69.4121C380.049 69.5716 379.931 69.7604 379.853 69.9785C379.778 70.1966 379.74 70.4342 379.74 70.6914V71.5166C379.74 71.7184 379.722 71.9186 379.687 72.1172C379.654 72.319 379.599 72.4997 379.521 72.6592C379.439 72.8219 379.332 72.9554 379.198 73.0596C379.065 73.1637 378.899 73.2191 378.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M252.347 229.369C252.551 229.73 253.009 229.857 253.369 229.653L259.243 226.327C259.604 226.123 259.731 225.665 259.527 225.305C259.323 224.945 258.865 224.818 258.504 225.022L253.283 227.978L250.327 222.757C250.123 222.396 249.665 222.269 249.305 222.473C248.945 222.677 248.818 223.135 249.022 223.496L252.347 229.369ZM293.277 80.7998L252.277 228.8L253.723 229.2L294.723 81.2002L293.277 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M339.45 231.538C339.747 231.827 340.222 231.82 340.511 231.524L345.221 226.688C345.51 226.392 345.503 225.917 345.207 225.628C344.91 225.339 344.435 225.345 344.146 225.642L339.96 229.94L335.662 225.753C335.365 225.464 334.89 225.471 334.601 225.767C334.312 226.064 334.318 226.539 334.615 226.828L339.45 231.538ZM337.25 81.0099L339.224 231.01L340.724 230.99L338.75 80.9901L337.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M91.6873 62.1817C91.3108 62.009 91.1456 61.5638 91.3183 61.1873L94.1323 55.0519C94.305 54.6754 94.7502 54.5101 95.1267 54.6828C95.5032 54.8555 95.6684 55.3007 95.4957 55.6772L92.9944 61.1309L98.4481 63.6323C98.8246 63.805 98.9899 64.2502 98.8172 64.6267C98.6445 65.0032 98.1993 65.1684 97.8228 64.9957L91.6873 62.1817ZM299.212 61.7372C299.081 62.1301 298.656 62.3425 298.263 62.2115L291.859 60.077C291.466 59.946 291.254 59.5212 291.385 59.1283C291.516 58.7353 291.941 58.523 292.334 58.6539L298.026 60.5513L299.923 54.8592C300.054 54.4663 300.479 54.2539 300.872 54.3849C301.265 54.5159 301.477 54.9406 301.346 55.3336L299.212 61.7372ZM92 61.5C91.739 60.7969 91.7394 60.7967 91.7399 60.7965C91.7404 60.7964 91.7411 60.7961 91.742 60.7958C91.7437 60.7952 91.7461 60.7942 91.7493 60.7931C91.7557 60.7907 91.765 60.7873 91.7772 60.7828C91.8018 60.7738 91.8381 60.7606 91.886 60.7432C91.9819 60.7084 92.1245 60.6572 92.3132 60.5906C92.6904 60.4574 93.2517 60.2627 93.9916 60.0153C95.4713 59.5204 97.6653 58.8146 100.53 57.9682C106.258 56.2755 114.668 54.0205 125.408 51.766C146.888 47.2572 177.69 42.75 215 42.75L215 44.25C177.81 44.25 147.112 48.7428 125.717 53.234C115.019 55.4795 106.648 57.7245 100.955 59.4068C98.1081 60.2479 95.931 60.9483 94.4674 61.4378C93.7356 61.6826 93.1821 61.8746 92.8126 62.0051C92.6278 62.0703 92.489 62.1202 92.3968 62.1535C92.3507 62.1702 92.3163 62.1828 92.2936 62.1911C92.2823 62.1953 92.2739 62.1984 92.2684 62.2004C92.2657 62.2014 92.2637 62.2021 92.2625 62.2026C92.2619 62.2028 92.2615 62.2029 92.2612 62.2031C92.261 62.2031 92.261 62.2031 92 61.5ZM215 42.75C252.301 42.75 273.278 47.2548 284.96 51.8011C290.804 54.0756 294.331 56.3644 296.412 58.1134C297.453 58.9879 298.131 59.7267 298.555 60.2596C298.767 60.526 298.915 60.7406 299.013 60.8945C299.062 60.9714 299.099 61.0332 299.124 61.0786C299.137 61.1013 299.147 61.1199 299.155 61.1343C299.159 61.1415 299.162 61.1476 299.165 61.1527C299.166 61.1552 299.167 61.1574 299.168 61.1594C299.169 61.1604 299.169 61.1617 299.17 61.1622C299.17 61.1634 299.171 61.1646 298.5 61.5C297.829 61.8354 297.83 61.8364 297.83 61.8374C297.83 61.8376 297.831 61.8385 297.831 61.8389C297.831 61.8398 297.832 61.8404 297.832 61.8408C297.832 61.8415 297.832 61.8411 297.831 61.8396C297.83 61.8367 297.826 61.8295 297.819 61.8182C297.807 61.7955 297.783 61.7561 297.748 61.7012C297.678 61.5915 297.561 61.4193 297.381 61.1935C297.022 60.7421 296.414 60.0746 295.447 59.2616C293.512 57.6356 290.134 55.4244 284.415 53.1989C272.972 48.7452 252.199 44.25 215 44.25L215 42.75Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.49 31.1775V28.625H175.722V35H176.49V31.7378C176.545 31.6493 176.608 31.569 176.677 31.4971C176.749 31.4224 176.826 31.3573 176.909 31.302C177.014 31.2301 177.129 31.1747 177.254 31.136C177.378 31.0972 177.51 31.0779 177.648 31.0779C177.817 31.0751 177.966 31.0986 178.096 31.1484C178.226 31.1955 178.334 31.2674 178.42 31.3643C178.5 31.4528 178.561 31.5649 178.603 31.7004C178.644 31.8333 178.665 31.9882 178.665 32.1653V35H179.433V32.1736C179.433 31.872 179.395 31.6119 179.321 31.3933C179.249 31.172 179.145 30.9893 179.009 30.8455C178.874 30.7016 178.709 30.5964 178.515 30.53C178.324 30.4609 178.111 30.4263 177.876 30.4263C177.696 30.429 177.526 30.4553 177.366 30.5051C177.208 30.5549 177.063 30.6283 176.93 30.7251C176.847 30.7832 176.768 30.851 176.693 30.9285C176.619 31.0032 176.551 31.0862 176.49 31.1775ZM183.778 35H184.579V34.9336C184.529 34.8091 184.491 34.6638 184.463 34.4978C184.435 34.329 184.421 34.1699 184.421 34.0205V31.9329C184.421 31.6811 184.376 31.4611 184.284 31.2729C184.193 31.0848 184.069 30.9271 183.911 30.7998C183.75 30.6753 183.561 30.5826 183.342 30.5217C183.124 30.4581 182.887 30.4263 182.633 30.4263C182.353 30.4263 182.103 30.465 181.881 30.5425C181.663 30.62 181.477 30.7209 181.325 30.8455C181.17 30.9727 181.051 31.1152 180.968 31.2729C180.888 31.4307 180.847 31.5911 180.844 31.7544H181.616C181.616 31.6603 181.638 31.5704 181.682 31.4846C181.729 31.3961 181.794 31.32 181.877 31.2563C181.96 31.1927 182.061 31.1415 182.18 31.1028C182.302 31.064 182.439 31.0447 182.591 31.0447C182.754 31.0447 182.901 31.0654 183.031 31.1069C183.164 31.1484 183.276 31.2065 183.367 31.2812C183.458 31.3587 183.529 31.4514 183.579 31.5593C183.629 31.6672 183.654 31.789 183.654 31.9246V32.2773H182.815C182.503 32.2773 182.219 32.3078 181.964 32.3687C181.713 32.4295 181.497 32.5208 181.317 32.6426C181.137 32.7671 180.997 32.922 180.898 33.1074C180.801 33.2928 180.752 33.5086 180.752 33.7549C180.752 33.943 180.788 34.1187 180.86 34.282C180.935 34.4425 181.04 34.5808 181.176 34.697C181.309 34.816 181.47 34.9101 181.661 34.9792C181.855 35.0484 182.071 35.083 182.309 35.083C182.455 35.083 182.594 35.0678 182.724 35.0374C182.854 35.0069 182.977 34.9654 183.093 34.9128C183.207 34.8603 183.31 34.7994 183.405 34.7302C183.501 34.6611 183.589 34.5877 183.666 34.5103C183.674 34.6043 183.687 34.6956 183.703 34.7842C183.723 34.87 183.748 34.9419 183.778 35ZM182.421 34.4148C182.271 34.4148 182.14 34.3954 182.027 34.3567C181.913 34.318 181.819 34.264 181.744 34.1948C181.67 34.1284 181.613 34.0482 181.574 33.9541C181.538 33.86 181.52 33.7576 181.52 33.647C181.52 33.5308 181.541 33.427 181.583 33.3357C181.627 33.2444 181.69 33.1655 181.773 33.0991C181.89 33.005 182.046 32.9359 182.242 32.8916C182.442 32.8446 182.674 32.821 182.94 32.821H183.654V33.73C183.609 33.8185 183.548 33.9043 183.471 33.9873C183.393 34.0675 183.302 34.1395 183.197 34.2031C183.089 34.2668 182.97 34.318 182.84 34.3567C182.71 34.3954 182.57 34.4148 182.421 34.4148ZM188.916 33.8088C188.916 33.8808 188.902 33.9486 188.875 34.0122C188.847 34.0758 188.807 34.134 188.754 34.1865C188.669 34.2723 188.55 34.3401 188.397 34.3899C188.245 34.4369 188.067 34.4604 187.862 34.4604C187.732 34.4604 187.601 34.4466 187.468 34.4189C187.335 34.3913 187.215 34.3442 187.107 34.2778C186.996 34.2114 186.903 34.1243 186.829 34.0164C186.757 33.9084 186.715 33.7756 186.704 33.6179H185.936C185.936 33.8088 185.979 33.9928 186.065 34.1699C186.153 34.347 186.281 34.502 186.447 34.6348C186.61 34.7703 186.811 34.8796 187.049 34.9626C187.287 35.0429 187.558 35.083 187.862 35.083C188.128 35.083 188.373 35.0512 188.597 34.9875C188.821 34.9239 189.013 34.834 189.174 34.7178C189.334 34.6016 189.459 34.4618 189.547 34.2986C189.638 34.1353 189.684 33.9541 189.684 33.7549C189.684 33.5695 189.644 33.4062 189.564 33.2651C189.486 33.124 189.373 32.9995 189.223 32.8916C189.074 32.7865 188.89 32.6965 188.671 32.6218C188.453 32.5444 188.205 32.4766 187.928 32.4185C187.718 32.377 187.544 32.3341 187.406 32.2898C187.27 32.2455 187.162 32.1957 187.082 32.1404C186.999 32.085 186.941 32.0228 186.907 31.9536C186.874 31.8844 186.858 31.8056 186.858 31.717C186.858 31.6313 186.878 31.5483 186.92 31.468C186.961 31.3878 187.024 31.3172 187.107 31.2563C187.187 31.1955 187.288 31.1471 187.41 31.1111C187.534 31.0751 187.678 31.0571 187.841 31.0571C187.999 31.0571 188.14 31.0793 188.265 31.1235C188.392 31.1678 188.5 31.2259 188.588 31.2979C188.677 31.3698 188.746 31.4528 188.796 31.5469C188.846 31.6382 188.871 31.7323 188.871 31.8291H189.638C189.638 31.6326 189.596 31.45 189.51 31.2812C189.427 31.1097 189.308 30.9603 189.153 30.833C188.998 30.7057 188.81 30.6061 188.588 30.5342C188.367 30.4622 188.118 30.4263 187.841 30.4263C187.584 30.4263 187.347 30.4609 187.132 30.53C186.919 30.5992 186.735 30.6933 186.58 30.8123C186.425 30.9312 186.304 31.071 186.219 31.2314C186.133 31.3892 186.09 31.5593 186.09 31.7419C186.09 31.9273 186.131 32.0906 186.214 32.2317C186.297 32.37 186.415 32.4904 186.567 32.5928C186.717 32.6979 186.896 32.7878 187.107 32.8625C187.32 32.9373 187.555 33.0009 187.812 33.0535C188.023 33.095 188.198 33.142 188.339 33.1946C188.48 33.2444 188.594 33.2997 188.68 33.3606C188.765 33.4215 188.826 33.4893 188.862 33.564C188.898 33.6359 188.916 33.7175 188.916 33.8088ZM198.055 34.4604C197.815 34.4604 197.613 34.4134 197.449 34.3193C197.289 34.2225 197.16 34.0966 197.063 33.9417C196.964 33.7895 196.892 33.6179 196.848 33.427C196.806 33.2333 196.785 33.0382 196.785 32.8418V32.6675C196.785 32.4738 196.806 32.2815 196.848 32.0906C196.892 31.8997 196.964 31.7267 197.063 31.5718C197.163 31.4196 197.293 31.2965 197.454 31.2024C197.617 31.1056 197.817 31.0571 198.055 31.0571C198.21 31.0571 198.354 31.0834 198.487 31.136C198.623 31.1886 198.739 31.2605 198.836 31.3518C198.933 31.4431 199.009 31.5496 199.064 31.6714C199.122 31.7904 199.153 31.9176 199.155 32.0532H199.882C199.882 31.8263 199.836 31.6133 199.745 31.4141C199.653 31.2148 199.527 31.0419 199.367 30.8953C199.204 30.7514 199.01 30.6379 198.786 30.5549C198.565 30.4692 198.321 30.4263 198.055 30.4263C197.715 30.4263 197.418 30.4871 197.163 30.6089C196.909 30.7306 196.697 30.8939 196.528 31.0986C196.357 31.3062 196.228 31.5455 196.142 31.8167C196.056 32.0878 196.013 32.3714 196.013 32.6675V32.8418C196.013 33.1406 196.056 33.4256 196.142 33.6968C196.228 33.9652 196.357 34.2017 196.528 34.4065C196.697 34.614 196.909 34.7786 197.163 34.9004C197.418 35.0221 197.715 35.083 198.055 35.083C198.293 35.083 198.522 35.0429 198.74 34.9626C198.959 34.8796 199.153 34.769 199.321 34.6306C199.49 34.495 199.624 34.3373 199.724 34.1575C199.826 33.9749 199.879 33.7839 199.882 33.5847H199.155C199.153 33.7092 199.119 33.8254 199.056 33.9333C198.995 34.0385 198.913 34.1298 198.811 34.2073C198.708 34.2875 198.591 34.3498 198.458 34.394C198.328 34.4383 198.194 34.4604 198.055 34.4604ZM202.015 31.1775V28.625H201.247V35H202.015V31.7378C202.07 31.6493 202.132 31.569 202.202 31.4971C202.274 31.4224 202.351 31.3573 202.434 31.302C202.539 31.2301 202.654 31.1747 202.779 31.136C202.903 31.0972 203.035 31.0779 203.173 31.0779C203.342 31.0751 203.491 31.0986 203.621 31.1484C203.751 31.1955 203.859 31.2674 203.945 31.3643C204.025 31.4528 204.086 31.5649 204.127 31.7004C204.169 31.8333 204.19 31.9882 204.19 32.1653V35H204.958V32.1736C204.958 31.872 204.92 31.6119 204.845 31.3933C204.774 31.172 204.67 30.9893 204.534 30.8455C204.399 30.7016 204.234 30.5964 204.04 30.53C203.849 30.4609 203.636 30.4263 203.401 30.4263C203.221 30.429 203.051 30.4553 202.891 30.5051C202.733 30.5549 202.588 30.6283 202.455 30.7251C202.372 30.7832 202.293 30.851 202.218 30.9285C202.144 31.0032 202.076 31.0862 202.015 31.1775ZM209.303 35H210.104V34.9336C210.054 34.8091 210.015 34.6638 209.988 34.4978C209.96 34.329 209.946 34.1699 209.946 34.0205V31.9329C209.946 31.6811 209.901 31.4611 209.809 31.2729C209.718 31.0848 209.594 30.9271 209.436 30.7998C209.275 30.6753 209.086 30.5826 208.867 30.5217C208.649 30.4581 208.412 30.4263 208.157 30.4263C207.878 30.4263 207.628 30.465 207.406 30.5425C207.188 30.62 207.002 30.7209 206.85 30.8455C206.695 30.9727 206.576 31.1152 206.493 31.2729C206.413 31.4307 206.371 31.5911 206.369 31.7544H207.141C207.141 31.6603 207.163 31.5704 207.207 31.4846C207.254 31.3961 207.319 31.32 207.402 31.2563C207.485 31.1927 207.586 31.1415 207.705 31.1028C207.827 31.064 207.964 31.0447 208.116 31.0447C208.279 31.0447 208.426 31.0654 208.556 31.1069C208.689 31.1484 208.801 31.2065 208.892 31.2812C208.983 31.3587 209.054 31.4514 209.104 31.5593C209.154 31.6672 209.178 31.789 209.178 31.9246V32.2773H208.34C208.027 32.2773 207.744 32.3078 207.489 32.3687C207.237 32.4295 207.022 32.5208 206.842 32.6426C206.662 32.7671 206.522 32.922 206.423 33.1074C206.326 33.2928 206.277 33.5086 206.277 33.7549C206.277 33.943 206.313 34.1187 206.385 34.282C206.46 34.4425 206.565 34.5808 206.701 34.697C206.833 34.816 206.995 34.9101 207.186 34.9792C207.38 35.0484 207.596 35.083 207.834 35.083C207.98 35.083 208.119 35.0678 208.249 35.0374C208.379 35.0069 208.502 34.9654 208.618 34.9128C208.732 34.8603 208.835 34.7994 208.929 34.7302C209.026 34.6611 209.113 34.5877 209.191 34.5103C209.199 34.6043 209.212 34.6956 209.228 34.7842C209.248 34.87 209.273 34.9419 209.303 35ZM207.946 34.4148C207.796 34.4148 207.665 34.3954 207.552 34.3567C207.438 34.318 207.344 34.264 207.269 34.1948C207.195 34.1284 207.138 34.0482 207.099 33.9541C207.063 33.86 207.045 33.7576 207.045 33.647C207.045 33.5308 207.066 33.427 207.107 33.3357C207.152 33.2444 207.215 33.1655 207.298 33.0991C207.415 33.005 207.571 32.9359 207.767 32.8916C207.967 32.8446 208.199 32.821 208.465 32.821H209.178V33.73C209.134 33.8185 209.073 33.9043 208.996 33.9873C208.918 34.0675 208.827 34.1395 208.722 34.2031C208.614 34.2668 208.495 34.318 208.365 34.3567C208.235 34.3954 208.095 34.4148 207.946 34.4148ZM211.457 35H212.225V31.7793C212.277 31.6825 212.338 31.5939 212.407 31.5137C212.479 31.4334 212.557 31.3629 212.64 31.302C212.742 31.2328 212.854 31.1789 212.976 31.1401C213.098 31.0986 213.229 31.0779 213.37 31.0779C213.534 31.0779 213.677 31.0972 213.802 31.136C213.929 31.1747 214.037 31.237 214.126 31.3228C214.212 31.4085 214.277 31.5206 214.321 31.6589C214.365 31.7973 214.387 31.9661 214.387 32.1653V35H215.155V32.1487C215.155 31.8499 215.118 31.5925 215.043 31.3767C214.971 31.1581 214.867 30.9783 214.732 30.8372C214.596 30.696 214.431 30.5923 214.238 30.5259C214.047 30.4595 213.834 30.4263 213.599 30.4263C213.424 30.429 213.258 30.4553 213.101 30.5051C212.946 30.5522 212.802 30.62 212.669 30.7085C212.58 30.7666 212.496 30.8358 212.416 30.916C212.338 30.9935 212.266 31.0793 212.2 31.1733L212.146 30.5093H211.457V35ZM216.421 32.7173V32.8044C216.421 33.1254 216.462 33.4256 216.545 33.7051C216.628 33.9818 216.747 34.2225 216.902 34.4272C217.055 34.632 217.241 34.7925 217.463 34.9087C217.684 35.0249 217.932 35.083 218.206 35.083C218.369 35.083 218.521 35.065 218.662 35.0291C218.803 34.9958 218.932 34.9474 219.048 34.8838C219.123 34.8423 219.192 34.7939 219.256 34.7385C219.322 34.6832 219.384 34.6223 219.442 34.5559V34.9419C219.442 35.1356 219.415 35.3071 219.359 35.4565C219.304 35.606 219.225 35.7305 219.123 35.8301C219.018 35.9325 218.892 36.0099 218.745 36.0625C218.598 36.1151 218.434 36.1414 218.251 36.1414C218.149 36.1414 218.046 36.1303 217.944 36.1082C217.842 36.0888 217.739 36.0556 217.637 36.0085C217.535 35.9615 217.434 35.8979 217.334 35.8176C217.234 35.7402 217.138 35.6447 217.043 35.5312L216.645 35.9919C216.747 36.1386 216.869 36.2617 217.01 36.3613C217.154 36.4609 217.304 36.5398 217.458 36.5979C217.611 36.6588 217.761 36.7017 217.911 36.7266C218.06 36.7542 218.193 36.7681 218.309 36.7681C218.592 36.7681 218.849 36.7266 219.081 36.6436C219.314 36.5605 219.514 36.4388 219.683 36.2783C219.849 36.1178 219.978 35.9228 220.069 35.6931C220.163 35.4635 220.21 35.2006 220.21 34.9045V30.5093H219.513L219.476 30.999C219.423 30.9326 219.366 30.8717 219.305 30.8164C219.247 30.7611 219.185 30.7126 219.119 30.6711C218.997 30.5909 218.86 30.53 218.708 30.4885C218.558 30.447 218.394 30.4263 218.214 30.4263C217.934 30.4263 217.684 30.483 217.463 30.5964C217.241 30.7099 217.053 30.8676 216.898 31.0696C216.743 31.2716 216.624 31.5137 216.541 31.7959C216.461 32.0754 216.421 32.3825 216.421 32.7173ZM217.189 32.8044V32.7173C217.189 32.4987 217.211 32.2912 217.255 32.0947C217.302 31.8955 217.375 31.7198 217.475 31.5676C217.572 31.4182 217.696 31.2992 217.849 31.2107C218.004 31.1222 218.189 31.0779 218.405 31.0779C218.532 31.0779 218.648 31.0945 218.753 31.1277C218.859 31.1581 218.954 31.201 219.04 31.2563C219.126 31.3145 219.202 31.3822 219.268 31.4597C219.334 31.5372 219.393 31.623 219.442 31.717V33.7756C219.393 33.8725 219.334 33.961 219.268 34.0413C219.202 34.1215 219.127 34.1907 219.044 34.2488C218.958 34.3069 218.861 34.3525 218.753 34.3857C218.648 34.4162 218.529 34.4314 218.396 34.4314C218.183 34.4314 218.001 34.3885 217.849 34.3027C217.696 34.2142 217.572 34.0952 217.475 33.9458C217.375 33.7964 217.302 33.6235 217.255 33.427C217.211 33.2306 217.189 33.023 217.189 32.8044ZM223.651 35.083C224.088 35.083 224.455 34.9958 224.751 34.8215C225.05 34.6444 225.274 34.4425 225.423 34.2156L224.954 33.8503C224.813 34.033 224.636 34.1796 224.423 34.2903C224.21 34.401 223.966 34.4563 223.692 34.4563C223.485 34.4563 223.295 34.4176 223.124 34.3401C222.952 34.2626 222.806 34.1561 222.684 34.0205C222.565 33.8932 222.471 33.7466 222.402 33.5806C222.335 33.4146 222.292 33.2222 222.273 33.0037V32.9746H225.481V32.6301C225.481 32.3175 225.441 32.0269 225.361 31.7585C225.283 31.4902 225.164 31.2563 225.004 31.0571C224.843 30.8607 224.641 30.7071 224.398 30.5964C224.157 30.483 223.875 30.4263 223.551 30.4263C223.294 30.4263 223.042 30.4788 222.796 30.584C222.552 30.6891 222.335 30.8399 222.144 31.0364C221.951 31.2356 221.796 31.4791 221.679 31.7668C221.563 32.0518 221.505 32.3756 221.505 32.738V32.9124C221.505 33.225 221.558 33.5142 221.663 33.7798C221.768 34.0454 221.915 34.2751 222.103 34.4688C222.291 34.6624 222.516 34.8132 222.779 34.9211C223.045 35.0291 223.335 35.083 223.651 35.083ZM223.551 31.0571C223.748 31.0571 223.917 31.0931 224.058 31.165C224.201 31.237 224.32 31.3311 224.415 31.4473C224.509 31.5635 224.582 31.7018 224.635 31.8623C224.687 32.02 224.713 32.1681 224.713 32.3064V32.3438H222.298C222.328 32.1362 222.381 31.9536 222.456 31.7959C222.533 31.6354 222.627 31.4998 222.738 31.3892C222.848 31.2812 222.973 31.1996 223.111 31.1443C223.25 31.0862 223.396 31.0571 223.551 31.0571ZM226.627 32.7173V32.8044C226.627 33.1254 226.67 33.4256 226.755 33.7051C226.841 33.9818 226.962 34.2225 227.116 34.4272C227.271 34.632 227.458 34.7925 227.677 34.9087C227.898 35.0249 228.144 35.083 228.416 35.083C228.692 35.083 228.934 35.036 229.142 34.9419C229.349 34.8478 229.528 34.7095 229.677 34.5269L229.71 35H230.416V28.625H229.648V30.9534C229.502 30.7818 229.327 30.6518 229.125 30.5632C228.926 30.4719 228.692 30.4263 228.424 30.4263C228.15 30.4263 227.902 30.483 227.681 30.5964C227.46 30.7099 227.271 30.8676 227.116 31.0696C226.959 31.2716 226.837 31.5137 226.751 31.7959C226.668 32.0754 226.627 32.3825 226.627 32.7173ZM227.395 32.8044V32.7173C227.395 32.4987 227.418 32.2912 227.465 32.0947C227.512 31.8955 227.585 31.7198 227.685 31.5676C227.782 31.4182 227.906 31.2992 228.059 31.2107C228.214 31.1222 228.399 31.0779 228.615 31.0779C228.867 31.0779 229.077 31.1374 229.246 31.2563C229.414 31.3726 229.549 31.522 229.648 31.7046V33.7881C229.549 33.9845 229.414 34.1409 229.246 34.2571C229.077 34.3733 228.864 34.4314 228.606 34.4314C228.393 34.4314 228.211 34.3885 228.059 34.3027C227.906 34.2142 227.782 34.0952 227.685 33.9458C227.585 33.7964 227.512 33.6235 227.465 33.427C227.418 33.2306 227.395 33.023 227.395 32.8044ZM233.276 33.2983H234.043C234.043 33.1904 234.046 33.095 234.052 33.012C234.057 32.9262 234.071 32.8459 234.093 32.7712C234.115 32.6965 234.149 32.6232 234.193 32.5513C234.24 32.4793 234.305 32.4032 234.388 32.323C234.518 32.2068 234.649 32.0809 234.782 31.9453C234.918 31.8097 235.04 31.6631 235.147 31.5054C235.255 31.3504 235.344 31.1858 235.413 31.0115C235.482 30.8344 235.517 30.6462 235.517 30.447C235.517 30.198 235.477 29.9766 235.396 29.783C235.316 29.5893 235.2 29.4246 235.048 29.2891C234.896 29.1535 234.709 29.0511 234.488 28.9819C234.269 28.91 234.02 28.874 233.74 28.874C233.489 28.874 233.253 28.9086 233.035 28.9778C232.819 29.0442 232.632 29.141 232.475 29.2683C232.314 29.3984 232.187 29.5561 232.093 29.7415C231.999 29.9268 231.95 30.1357 231.948 30.3682H232.715C232.715 30.2243 232.744 30.1012 232.802 29.9988C232.861 29.8936 232.938 29.8065 233.035 29.7373C233.129 29.6709 233.237 29.6225 233.359 29.592C233.483 29.5588 233.61 29.5422 233.74 29.5422C233.909 29.5422 234.059 29.5644 234.189 29.6086C234.319 29.6529 234.427 29.7179 234.512 29.8037C234.59 29.8812 234.648 29.9766 234.687 30.0901C234.728 30.2008 234.749 30.328 234.749 30.4719C234.749 30.6103 234.723 30.7417 234.67 30.8662C234.618 30.9907 234.551 31.1083 234.471 31.219C234.388 31.3324 234.297 31.4403 234.197 31.5427C234.1 31.6451 234.005 31.7447 233.911 31.8416C233.772 31.9688 233.662 32.0795 233.579 32.1736C233.496 32.2649 233.432 32.3604 233.388 32.46C233.343 32.5623 233.314 32.6785 233.301 32.8086C233.287 32.9359 233.278 33.0991 233.276 33.2983ZM233.188 34.5974C233.188 34.7247 233.227 34.8312 233.305 34.917C233.385 35.0028 233.504 35.0457 233.662 35.0457C233.819 35.0457 233.938 35.0028 234.019 34.917C234.102 34.8312 234.143 34.7247 234.143 34.5974C234.143 34.4646 234.102 34.3539 234.019 34.2654C233.938 34.1768 233.819 34.1326 233.662 34.1326C233.504 34.1326 233.385 34.1768 233.305 34.2654C233.227 34.3539 233.188 34.4646 233.188 34.5974Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M242.797 32.543V32.6343C242.797 33.0272 242.826 33.3952 242.884 33.7383C242.945 34.0814 243.026 34.3982 243.129 34.6887C243.231 34.982 243.35 35.249 243.486 35.4897C243.624 35.7305 243.769 35.9421 243.921 36.1248C244.074 36.3101 244.23 36.4679 244.39 36.5979C244.554 36.7279 244.711 36.8276 244.864 36.8967L245.088 36.2742C244.98 36.1912 244.87 36.0874 244.76 35.9629C244.649 35.8384 244.544 35.6917 244.444 35.5229C244.35 35.368 244.262 35.1868 244.179 34.9792C244.098 34.7717 244.028 34.5462 243.967 34.3027C243.923 34.1284 243.881 33.8946 243.843 33.6013C243.807 33.308 243.789 32.9884 243.789 32.6426V32.5347C243.789 32.1833 243.808 31.8582 243.847 31.5593C243.885 31.2605 243.937 30.988 244 30.7417C244.072 30.4871 244.155 30.252 244.249 30.0361C244.346 29.8203 244.45 29.6335 244.561 29.4758C244.646 29.3541 244.733 29.2462 244.822 29.1521C244.911 29.058 244.999 28.9778 245.088 28.9114L244.864 28.2805C244.711 28.3497 244.554 28.4493 244.39 28.5793C244.23 28.7066 244.074 28.863 243.921 29.0483C243.769 29.2337 243.624 29.4468 243.486 29.6875C243.35 29.9282 243.231 30.1938 243.129 30.4844C243.026 30.7777 242.945 31.0972 242.884 31.4431C242.826 31.7862 242.797 32.1528 242.797 32.543ZM249.076 31.7419L247.885 28.957H246.607L248.479 32.8584L248.483 35H249.645L249.649 32.9082L251.55 28.957H250.267L249.076 31.7419ZM254.339 35.083C254.773 35.083 255.15 34.9986 255.468 34.8298C255.786 34.6611 256.018 34.4729 256.165 34.2654L255.588 33.6428C255.455 33.8144 255.282 33.943 255.069 34.0288C254.856 34.1146 254.636 34.1575 254.409 34.1575C254.249 34.1575 254.101 34.1326 253.965 34.0828C253.83 34.033 253.709 33.9624 253.604 33.8711C253.502 33.7826 253.42 33.6843 253.359 33.5764C253.299 33.4657 253.249 33.3205 253.21 33.1406V33.1282H256.256V32.6384C256.256 32.3092 256.211 32.009 256.119 31.7378C256.028 31.4639 255.895 31.2301 255.721 31.0364C255.544 30.8427 255.328 30.6933 255.073 30.5881C254.822 30.4802 254.534 30.4263 254.21 30.4263C253.898 30.4263 253.608 30.483 253.343 30.5964C253.077 30.7099 252.847 30.869 252.654 31.0737C252.46 31.2785 252.309 31.5234 252.201 31.8083C252.094 32.0906 252.04 32.4032 252.04 32.7463V32.9124C252.04 33.2139 252.094 33.4976 252.201 33.7632C252.312 34.026 252.468 34.2543 252.67 34.448C252.872 34.6444 253.115 34.7994 253.397 34.9128C253.679 35.0263 253.993 35.083 254.339 35.083ZM254.202 31.3601C254.349 31.3601 254.477 31.3836 254.588 31.4307C254.701 31.4749 254.797 31.5358 254.874 31.6133C254.952 31.6935 255.013 31.7876 255.057 31.8955C255.101 32.0034 255.123 32.1182 255.123 32.24V32.3313H253.231C253.258 32.1847 253.3 32.0518 253.355 31.9329C253.411 31.8139 253.48 31.7115 253.563 31.6257C253.643 31.54 253.737 31.4749 253.845 31.4307C253.953 31.3836 254.072 31.3601 254.202 31.3601ZM260.162 33.7673C260.162 33.8365 260.144 33.9001 260.108 33.9583C260.075 34.0164 260.024 34.0675 259.954 34.1118C259.882 34.1561 259.79 34.1921 259.676 34.2197C259.566 34.2446 259.436 34.2571 259.286 34.2571C259.162 34.2571 259.04 34.2446 258.921 34.2197C258.805 34.1948 258.701 34.1547 258.61 34.0994C258.518 34.0468 258.444 33.9776 258.385 33.8918C258.327 33.8033 258.294 33.6982 258.286 33.5764H257.186C257.186 33.759 257.23 33.9417 257.319 34.1243C257.41 34.3041 257.543 34.4646 257.717 34.6057C257.892 34.7496 258.107 34.8658 258.365 34.9543C258.625 35.0429 258.924 35.0872 259.261 35.0872C259.568 35.0872 259.846 35.054 260.095 34.9875C260.344 34.9184 260.558 34.8229 260.735 34.7012C260.909 34.5794 261.043 34.4355 261.137 34.2695C261.234 34.1007 261.282 33.9167 261.282 33.7175C261.282 33.5017 261.234 33.3163 261.137 33.1614C261.043 33.0037 260.912 32.8695 260.743 32.7588C260.574 32.6509 260.374 32.5623 260.141 32.4932C259.909 32.424 259.657 32.3673 259.386 32.323C259.198 32.2953 259.043 32.2635 258.921 32.2275C258.799 32.1888 258.704 32.1459 258.635 32.0989C258.563 32.0546 258.513 32.0048 258.485 31.9495C258.457 31.8914 258.444 31.8291 258.444 31.7627C258.444 31.6963 258.459 31.634 258.489 31.5759C258.522 31.5151 258.569 31.4625 258.63 31.4182C258.697 31.3684 258.783 31.3297 258.888 31.302C258.993 31.2743 259.116 31.2605 259.257 31.2605C259.423 31.2605 259.564 31.2812 259.68 31.3228C259.799 31.3643 259.893 31.4196 259.963 31.4888C260.012 31.5413 260.05 31.6008 260.075 31.6672C260.1 31.7309 260.112 31.8 260.112 31.8748H261.266C261.266 31.6672 261.22 31.4749 261.129 31.2979C261.038 31.1208 260.906 30.9672 260.735 30.8372C260.56 30.7099 260.349 30.6103 260.1 30.5383C259.851 30.4636 259.57 30.4263 259.257 30.4263C258.958 30.4263 258.69 30.4636 258.452 30.5383C258.214 30.613 258.012 30.714 257.846 30.8413C257.68 30.9686 257.553 31.1166 257.464 31.2854C257.376 31.4542 257.331 31.6313 257.331 31.8167C257.331 32.0076 257.374 32.1764 257.46 32.323C257.549 32.4696 257.67 32.5983 257.825 32.709C257.98 32.8224 258.166 32.9193 258.381 32.9995C258.6 33.077 258.841 33.142 259.104 33.1946C259.311 33.2333 259.483 33.2721 259.618 33.3108C259.754 33.3495 259.863 33.391 259.946 33.4353C260.026 33.4823 260.082 33.5321 260.112 33.5847C260.145 33.6373 260.162 33.6982 260.162 33.7673ZM265.441 32.6343V32.543C265.441 32.1639 265.411 31.8056 265.35 31.468C265.289 31.1277 265.206 30.8109 265.101 30.5176C264.996 30.2243 264.873 29.9573 264.731 29.7166C264.593 29.4731 264.445 29.2559 264.287 29.0649C264.13 28.8768 263.968 28.7163 263.802 28.5835C263.636 28.4507 263.474 28.3497 263.316 28.2805L263.096 28.8989C263.179 28.9626 263.262 29.04 263.345 29.1313C263.431 29.2199 263.514 29.3209 263.594 29.4343C263.713 29.6059 263.825 29.8092 263.93 30.0444C264.038 30.2796 264.13 30.5452 264.204 30.8413C264.262 31.0793 264.308 31.3394 264.341 31.6216C264.377 31.9038 264.395 32.2082 264.395 32.5347V32.6426C264.395 32.9774 264.377 33.2887 264.341 33.5764C264.308 33.8642 264.262 34.127 264.204 34.365C264.135 34.6251 264.055 34.8603 263.964 35.0706C263.875 35.2808 263.777 35.469 263.669 35.635C263.578 35.7761 263.484 35.8993 263.387 36.0044C263.29 36.1123 263.193 36.2022 263.096 36.2742L263.316 36.8967C263.474 36.8276 263.636 36.7266 263.802 36.5938C263.968 36.4609 264.13 36.2991 264.287 36.1082C264.445 35.92 264.593 35.7042 264.731 35.4607C264.873 35.22 264.996 34.953 265.101 34.6597C265.206 34.3664 265.289 34.0509 265.35 33.7134C265.411 33.373 265.441 33.0133 265.441 32.6343Z\"\n      fill=\"#10D310\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_5_162\"\n        x1=\"331.788\"\n        y1=\"-84.0949\"\n        x2=\"426.293\"\n        y2=\"-89.87\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 115L54 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 116L182 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 185L145 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M68.5449 21.4336H67.4609C67.4258 21.6914 67.3652 21.9316 67.2793 22.1543C67.1934 22.373 67.0781 22.5625 66.9336 22.7227C66.7891 22.8867 66.6113 23.0137 66.4004 23.1035C66.1934 23.1934 65.9473 23.2383 65.6621 23.2383C65.4004 23.2383 65.1719 23.1973 64.9766 23.1152C64.7812 23.0293 64.6113 22.9121 64.4668 22.7637C64.3223 22.6191 64.2031 22.4512 64.1094 22.2598C64.0156 22.0684 63.9395 21.8633 63.8809 21.6445C63.8223 21.4297 63.7793 21.2109 63.752 20.9883C63.7285 20.7617 63.7168 20.543 63.7168 20.332V19.1309C63.7168 18.9199 63.7285 18.7031 63.752 18.4805C63.7793 18.2539 63.8223 18.0332 63.8809 17.8184C63.9395 17.6035 64.0156 17.4004 64.1094 17.209C64.207 17.0176 64.3281 16.8496 64.4727 16.7051C64.6133 16.5605 64.7812 16.4473 64.9766 16.3652C65.1758 16.2793 65.4043 16.2363 65.6621 16.2363C65.9473 16.2363 66.1934 16.2852 66.4004 16.3828C66.6113 16.4766 66.7891 16.6074 66.9336 16.7754C67.0781 16.9434 67.1934 17.1387 67.2793 17.3613C67.3652 17.584 67.4258 17.8242 67.4609 18.082H68.5449C68.498 17.6758 68.4004 17.3047 68.252 16.9688C68.1074 16.6328 67.9141 16.3438 67.6719 16.1016C67.4297 15.8633 67.1406 15.6797 66.8047 15.5508C66.4688 15.418 66.0879 15.3516 65.6621 15.3516C65.3066 15.3516 64.9863 15.4023 64.7012 15.5039C64.416 15.6016 64.1621 15.7383 63.9395 15.9141C63.7129 16.0898 63.5176 16.2988 63.3535 16.541C63.1934 16.7793 63.0605 17.0391 62.9551 17.3203C62.8457 17.6016 62.7637 17.8965 62.709 18.2051C62.6582 18.5137 62.6309 18.8262 62.627 19.1426V20.332C62.6309 20.6484 62.6582 20.9609 62.709 21.2695C62.7637 21.5781 62.8457 21.873 62.9551 22.1543C63.0605 22.4355 63.1934 22.6953 63.3535 22.9336C63.5176 23.1719 63.7129 23.3789 63.9395 23.5547C64.1621 23.7305 64.416 23.8691 64.7012 23.9707C64.9902 24.0684 65.3105 24.1172 65.6621 24.1172C66.0723 24.1172 66.4434 24.0527 66.7754 23.9238C67.1113 23.791 67.4023 23.6055 67.6484 23.3672C67.8906 23.1328 68.0879 22.8516 68.2402 22.5234C68.3926 22.1914 68.4941 21.8281 68.5449 21.4336ZM74.4043 24H75.3887V17.6602H74.2988V22.207C74.2402 22.3438 74.166 22.4707 74.0762 22.5879C73.9902 22.7012 73.8887 22.7988 73.7715 22.8809C73.6309 22.9824 73.4648 23.0625 73.2734 23.1211C73.082 23.1758 72.8652 23.2031 72.623 23.2031C72.416 23.2031 72.2324 23.1758 72.0723 23.1211C71.916 23.0664 71.7832 22.9707 71.6738 22.834C71.5645 22.7012 71.4824 22.5215 71.4277 22.2949C71.373 22.0684 71.3457 21.7832 71.3457 21.4395V17.6602H70.2617V21.4277C70.2617 21.9004 70.3125 22.3066 70.4141 22.6465C70.5195 22.9824 70.668 23.2598 70.8594 23.4785C71.0508 23.6973 71.2812 23.8594 71.5508 23.9648C71.8203 24.0664 72.1211 24.1172 72.4531 24.1172C72.8672 24.1172 73.2324 24.0312 73.5488 23.8594C73.8652 23.6836 74.1289 23.4395 74.3398 23.127L74.4043 24ZM81.5879 17.543C81.127 17.543 80.7148 17.6445 80.3516 17.8477C79.9922 18.0469 79.6836 18.3203 79.4258 18.668L79.4199 18.5098L79.373 17.6602H78.3418V24H79.4316V19.9336C79.502 19.7383 79.5898 19.5625 79.6953 19.4062C79.8047 19.2461 79.9316 19.1113 80.0762 19.002C80.2363 18.877 80.4238 18.7832 80.6387 18.7207C80.8535 18.6543 81.0938 18.6211 81.3594 18.6211C81.5664 18.6211 81.7637 18.6328 81.9512 18.6562C82.1426 18.6758 82.3438 18.709 82.5547 18.7559L82.7012 17.6953C82.5918 17.6484 82.4277 17.6113 82.209 17.584C81.9941 17.5566 81.7871 17.543 81.5879 17.543ZM88.7949 17.543C88.334 17.543 87.9219 17.6445 87.5586 17.8477C87.1992 18.0469 86.8906 18.3203 86.6328 18.668L86.627 18.5098L86.5801 17.6602H85.5488V24H86.6387V19.9336C86.709 19.7383 86.7969 19.5625 86.9023 19.4062C87.0117 19.2461 87.1387 19.1113 87.2832 19.002C87.4434 18.877 87.6309 18.7832 87.8457 18.7207C88.0605 18.6543 88.3008 18.6211 88.5664 18.6211C88.7734 18.6211 88.9707 18.6328 89.1582 18.6562C89.3496 18.6758 89.5508 18.709 89.7617 18.7559L89.9082 17.6953C89.7988 17.6484 89.6348 17.6113 89.416 17.584C89.2012 17.5566 88.9941 17.543 88.7949 17.543ZM94.6484 24.1172C95.2656 24.1172 95.7832 23.9941 96.2012 23.748C96.623 23.498 96.9395 23.2129 97.1504 22.8926L96.4883 22.377C96.2891 22.6348 96.0391 22.8418 95.7383 22.998C95.4375 23.1543 95.0938 23.2324 94.707 23.2324C94.4141 23.2324 94.1465 23.1777 93.9043 23.0684C93.6621 22.959 93.4551 22.8086 93.2832 22.6172C93.1152 22.4375 92.9824 22.2305 92.8848 21.9961C92.791 21.7617 92.7305 21.4902 92.7031 21.1816V21.1406H97.2324V20.6543C97.2324 20.2129 97.1758 19.8027 97.0625 19.4238C96.9531 19.0449 96.7852 18.7148 96.5586 18.4336C96.332 18.1562 96.0469 17.9395 95.7031 17.7832C95.3633 17.623 94.9648 17.543 94.5078 17.543C94.1445 17.543 93.7891 17.6172 93.4414 17.7656C93.0977 17.9141 92.791 18.127 92.5215 18.4043C92.248 18.6855 92.0293 19.0293 91.8652 19.4355C91.7012 19.8379 91.6191 20.2949 91.6191 20.8066V21.0527C91.6191 21.4941 91.6934 21.9023 91.8418 22.2773C91.9902 22.6523 92.1973 22.9766 92.4629 23.25C92.7285 23.5234 93.0469 23.7363 93.418 23.8887C93.793 24.041 94.2031 24.1172 94.6484 24.1172ZM94.5078 18.4336C94.7852 18.4336 95.0234 18.4844 95.2227 18.5859C95.4258 18.6875 95.5938 18.8203 95.7266 18.9844C95.8594 19.1484 95.9629 19.3438 96.0371 19.5703C96.1113 19.793 96.1484 20.002 96.1484 20.1973V20.25H92.7383C92.7812 19.957 92.8555 19.6992 92.9609 19.4766C93.0703 19.25 93.2031 19.0586 93.3594 18.9023C93.5156 18.75 93.6914 18.6348 93.8867 18.5566C94.082 18.4746 94.2891 18.4336 94.5078 18.4336ZM99.0547 24H100.139V19.4531C100.213 19.3164 100.299 19.1914 100.396 19.0781C100.498 18.9648 100.607 18.8652 100.725 18.7793C100.869 18.6816 101.027 18.6055 101.199 18.5508C101.371 18.4922 101.557 18.4629 101.756 18.4629C101.986 18.4629 102.189 18.4902 102.365 18.5449C102.545 18.5996 102.697 18.6875 102.822 18.8086C102.943 18.9297 103.035 19.0879 103.098 19.2832C103.16 19.4785 103.191 19.7168 103.191 19.998V24H104.275V19.9746C104.275 19.5527 104.223 19.1895 104.117 18.8848C104.016 18.5762 103.869 18.3223 103.678 18.123C103.486 17.9238 103.254 17.7773 102.98 17.6836C102.711 17.5898 102.41 17.543 102.078 17.543C101.832 17.5469 101.598 17.584 101.375 17.6543C101.156 17.7207 100.953 17.8164 100.766 17.9414C100.641 18.0234 100.521 18.1211 100.408 18.2344C100.299 18.3438 100.197 18.4648 100.104 18.5977L100.027 17.6602H99.0547V24ZM108.828 16.125H107.738V17.6602H106.074V18.498H107.738V21.9434C107.738 22.334 107.789 22.668 107.891 22.9453C107.996 23.2188 108.139 23.4414 108.318 23.6133C108.498 23.7891 108.709 23.918 108.951 24C109.197 24.0781 109.461 24.1172 109.742 24.1172C109.91 24.1172 110.078 24.1094 110.246 24.0938C110.418 24.0781 110.58 24.0547 110.732 24.0234C110.885 23.9961 111.025 23.9629 111.154 23.9238C111.283 23.8809 111.393 23.832 111.482 23.7773L111.33 23.0098C111.264 23.0254 111.178 23.0449 111.072 23.0684C110.971 23.0879 110.861 23.1074 110.744 23.127C110.623 23.1465 110.5 23.1641 110.375 23.1797C110.25 23.1914 110.129 23.1973 110.012 23.1973C109.852 23.1973 109.699 23.1777 109.555 23.1387C109.414 23.0996 109.289 23.0312 109.18 22.9336C109.07 22.8398 108.984 22.7129 108.922 22.5527C108.859 22.3926 108.828 22.1895 108.828 21.9434V18.498H111.242V17.6602H108.828V16.125ZM126.049 20.9004V20.7773C126.049 20.4453 126.021 20.1309 125.967 19.834C125.912 19.5332 125.832 19.2598 125.727 19.0137C125.625 18.7949 125.508 18.5977 125.375 18.4219C125.242 18.2422 125.092 18.0898 124.924 17.9648C124.736 17.832 124.527 17.7285 124.297 17.6543C124.066 17.5801 123.814 17.543 123.541 17.543C123.322 17.543 123.119 17.5645 122.932 17.6074C122.744 17.6504 122.572 17.7129 122.416 17.7949C122.291 17.8613 122.174 17.9414 122.064 18.0352C121.955 18.125 121.855 18.2266 121.766 18.3398V15H120.682V24H121.678L121.73 23.2793C121.801 23.3691 121.875 23.4512 121.953 23.5254C122.031 23.5996 122.113 23.668 122.199 23.7305C122.379 23.8555 122.58 23.9512 122.803 24.0176C123.029 24.084 123.279 24.1172 123.553 24.1172C123.791 24.1172 124.012 24.0879 124.215 24.0293C124.422 23.9707 124.611 23.8887 124.783 23.7832C125.021 23.6309 125.225 23.4395 125.393 23.209C125.564 22.9746 125.703 22.7109 125.809 22.418C125.887 22.1953 125.945 21.957 125.984 21.7031C126.027 21.4453 126.049 21.1777 126.049 20.9004ZM124.965 20.7773V20.9004C124.965 21.0879 124.953 21.2715 124.93 21.4512C124.906 21.6309 124.869 21.7988 124.818 21.9551C124.756 22.1621 124.672 22.3496 124.566 22.5176C124.461 22.6855 124.33 22.8242 124.174 22.9336C124.057 23.0195 123.924 23.0859 123.775 23.1328C123.627 23.1758 123.463 23.1973 123.283 23.1973C123.096 23.1973 122.924 23.1738 122.768 23.127C122.611 23.0762 122.471 23.0059 122.346 22.916C122.221 22.8262 122.109 22.7227 122.012 22.6055C121.918 22.4844 121.836 22.3535 121.766 22.2129V19.4414C121.832 19.3008 121.912 19.1719 122.006 19.0547C122.104 18.9336 122.215 18.8281 122.34 18.7383C122.461 18.6523 122.6 18.5859 122.756 18.5391C122.912 18.4883 123.084 18.4629 123.271 18.4629C123.443 18.4629 123.6 18.4824 123.74 18.5215C123.881 18.5605 124.008 18.6152 124.121 18.6855C124.285 18.7832 124.424 18.918 124.537 19.0898C124.65 19.2617 124.742 19.4512 124.812 19.6582C124.863 19.8262 124.9 20.0059 124.924 20.1973C124.951 20.3848 124.965 20.5781 124.965 20.7773ZM128.053 15V15.9434H130.209V23.0625H128.053V24H133.361V23.0625H131.293V15H128.053ZM134.785 20.7715V20.9004C134.785 21.3574 134.852 21.7812 134.984 22.1719C135.117 22.5625 135.309 22.9023 135.559 23.1914C135.805 23.4805 136.105 23.707 136.461 23.8711C136.82 24.0352 137.225 24.1172 137.674 24.1172C138.119 24.1172 138.52 24.0352 138.875 23.8711C139.23 23.707 139.533 23.4805 139.783 23.1914C140.029 22.9023 140.219 22.5625 140.352 22.1719C140.484 21.7812 140.551 21.3574 140.551 20.9004V20.7715C140.551 20.3145 140.484 19.8906 140.352 19.5C140.219 19.1055 140.029 18.7637 139.783 18.4746C139.533 18.1855 139.229 17.959 138.869 17.7949C138.514 17.627 138.111 17.543 137.662 17.543C137.217 17.543 136.816 17.627 136.461 17.7949C136.105 17.959 135.805 18.1855 135.559 18.4746C135.309 18.7637 135.117 19.1055 134.984 19.5C134.852 19.8906 134.785 20.3145 134.785 20.7715ZM135.869 20.9004V20.7715C135.869 20.4629 135.906 20.168 135.98 19.8867C136.055 19.6016 136.168 19.3516 136.32 19.1367C136.469 18.9219 136.654 18.752 136.877 18.627C137.1 18.498 137.361 18.4336 137.662 18.4336C137.963 18.4336 138.225 18.498 138.447 18.627C138.674 18.752 138.863 18.9219 139.016 19.1367C139.164 19.3516 139.275 19.6016 139.35 19.8867C139.428 20.168 139.467 20.4629 139.467 20.7715V20.9004C139.467 21.2129 139.43 21.5117 139.355 21.7969C139.281 22.0781 139.17 22.3262 139.021 22.541C138.869 22.7559 138.68 22.9258 138.453 23.0508C138.23 23.1758 137.971 23.2383 137.674 23.2383C137.373 23.2383 137.109 23.1758 136.883 23.0508C136.656 22.9258 136.469 22.7559 136.32 22.541C136.168 22.3262 136.055 22.0781 135.98 21.7969C135.906 21.5117 135.869 21.2129 135.869 20.9004ZM144.998 23.2383C144.658 23.2383 144.373 23.1719 144.143 23.0391C143.916 22.9023 143.734 22.7246 143.598 22.5059C143.457 22.291 143.355 22.0488 143.293 21.7793C143.234 21.5059 143.205 21.2305 143.205 20.9531V20.707C143.205 20.4336 143.234 20.1621 143.293 19.8926C143.355 19.623 143.457 19.3789 143.598 19.1602C143.738 18.9453 143.922 18.7715 144.148 18.6387C144.379 18.502 144.662 18.4336 144.998 18.4336C145.217 18.4336 145.42 18.4707 145.607 18.5449C145.799 18.6191 145.963 18.7207 146.1 18.8496C146.236 18.9785 146.344 19.1289 146.422 19.3008C146.504 19.4688 146.547 19.6484 146.551 19.8398H147.576C147.576 19.5195 147.512 19.2188 147.383 18.9375C147.254 18.6562 147.076 18.4121 146.85 18.2051C146.619 18.002 146.346 17.8418 146.029 17.7246C145.717 17.6035 145.373 17.543 144.998 17.543C144.518 17.543 144.098 17.6289 143.738 17.8008C143.379 17.9727 143.08 18.2031 142.842 18.4922C142.6 18.7852 142.418 19.123 142.297 19.5059C142.176 19.8887 142.115 20.2891 142.115 20.707V20.9531C142.115 21.375 142.176 21.7773 142.297 22.1602C142.418 22.5391 142.6 22.873 142.842 23.1621C143.08 23.4551 143.379 23.6875 143.738 23.8594C144.098 24.0312 144.518 24.1172 144.998 24.1172C145.334 24.1172 145.656 24.0605 145.965 23.9473C146.273 23.8301 146.547 23.6738 146.785 23.4785C147.023 23.2871 147.213 23.0645 147.354 22.8105C147.498 22.5527 147.572 22.2832 147.576 22.002H146.551C146.547 22.1777 146.5 22.3418 146.41 22.4941C146.324 22.6426 146.209 22.7715 146.064 22.8809C145.92 22.9941 145.754 23.082 145.566 23.1445C145.383 23.207 145.193 23.2383 144.998 23.2383ZM151.402 21.041L153.729 24H155.105L152.146 20.3027L154.713 17.6602H153.395L151.314 19.7461L150.605 20.5078V15H149.516V24H150.605V21.8086L151.402 21.041Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M62 25.1719H155.686V25.7578H62V25.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M307.363 21V12.4688H306.268L306.25 18.832L302.939 12.4688H301.838V21H302.934L302.951 14.625L306.262 21H307.363ZM312.027 21.1172C312.645 21.1172 313.162 20.9941 313.58 20.748C314.002 20.498 314.318 20.2129 314.529 19.8926L313.867 19.377C313.668 19.6348 313.418 19.8418 313.117 19.998C312.816 20.1543 312.473 20.2324 312.086 20.2324C311.793 20.2324 311.525 20.1777 311.283 20.0684C311.041 19.959 310.834 19.8086 310.662 19.6172C310.494 19.4375 310.361 19.2305 310.264 18.9961C310.17 18.7617 310.109 18.4902 310.082 18.1816V18.1406H314.611V17.6543C314.611 17.2129 314.555 16.8027 314.441 16.4238C314.332 16.0449 314.164 15.7148 313.938 15.4336C313.711 15.1562 313.426 14.9395 313.082 14.7832C312.742 14.623 312.344 14.543 311.887 14.543C311.523 14.543 311.168 14.6172 310.82 14.7656C310.477 14.9141 310.17 15.127 309.9 15.4043C309.627 15.6855 309.408 16.0293 309.244 16.4355C309.08 16.8379 308.998 17.2949 308.998 17.8066V18.0527C308.998 18.4941 309.072 18.9023 309.221 19.2773C309.369 19.6523 309.576 19.9766 309.842 20.25C310.107 20.5234 310.426 20.7363 310.797 20.8887C311.172 21.041 311.582 21.1172 312.027 21.1172ZM311.887 15.4336C312.164 15.4336 312.402 15.4844 312.602 15.5859C312.805 15.6875 312.973 15.8203 313.105 15.9844C313.238 16.1484 313.342 16.3438 313.416 16.5703C313.49 16.793 313.527 17.002 313.527 17.1973V17.25H310.117C310.16 16.957 310.234 16.6992 310.34 16.4766C310.449 16.25 310.582 16.0586 310.738 15.9023C310.895 15.75 311.07 15.6348 311.266 15.5566C311.461 15.4746 311.668 15.4336 311.887 15.4336ZM317.043 21H317.898L318.877 17.1152L319.035 16.1309L319.199 17.1152L320.189 21H321.045L322.393 14.6602H321.432L320.729 18.7031L320.57 19.6992L320.4 18.7031L319.393 14.6602H318.695L317.682 18.7031L317.523 19.6113L317.395 18.7031L316.656 14.6602H315.695L317.043 21ZM336.221 17.9004V17.7773C336.221 17.4453 336.193 17.1309 336.139 16.834C336.084 16.5332 336.004 16.2598 335.898 16.0137C335.797 15.7949 335.68 15.5977 335.547 15.4219C335.414 15.2422 335.264 15.0898 335.096 14.9648C334.908 14.832 334.699 14.7285 334.469 14.6543C334.238 14.5801 333.986 14.543 333.713 14.543C333.494 14.543 333.291 14.5645 333.104 14.6074C332.916 14.6504 332.744 14.7129 332.588 14.7949C332.463 14.8613 332.346 14.9414 332.236 15.0352C332.127 15.125 332.027 15.2266 331.938 15.3398V12H330.854V21H331.85L331.902 20.2793C331.973 20.3691 332.047 20.4512 332.125 20.5254C332.203 20.5996 332.285 20.668 332.371 20.7305C332.551 20.8555 332.752 20.9512 332.975 21.0176C333.201 21.084 333.451 21.1172 333.725 21.1172C333.963 21.1172 334.184 21.0879 334.387 21.0293C334.594 20.9707 334.783 20.8887 334.955 20.7832C335.193 20.6309 335.396 20.4395 335.564 20.209C335.736 19.9746 335.875 19.7109 335.98 19.418C336.059 19.1953 336.117 18.957 336.156 18.7031C336.199 18.4453 336.221 18.1777 336.221 17.9004ZM335.137 17.7773V17.9004C335.137 18.0879 335.125 18.2715 335.102 18.4512C335.078 18.6309 335.041 18.7988 334.99 18.9551C334.928 19.1621 334.844 19.3496 334.738 19.5176C334.633 19.6855 334.502 19.8242 334.346 19.9336C334.229 20.0195 334.096 20.0859 333.947 20.1328C333.799 20.1758 333.635 20.1973 333.455 20.1973C333.268 20.1973 333.096 20.1738 332.939 20.127C332.783 20.0762 332.643 20.0059 332.518 19.916C332.393 19.8262 332.281 19.7227 332.184 19.6055C332.09 19.4844 332.008 19.3535 331.938 19.2129V16.4414C332.004 16.3008 332.084 16.1719 332.178 16.0547C332.275 15.9336 332.387 15.8281 332.512 15.7383C332.633 15.6523 332.771 15.5859 332.928 15.5391C333.084 15.4883 333.256 15.4629 333.443 15.4629C333.615 15.4629 333.771 15.4824 333.912 15.5215C334.053 15.5605 334.18 15.6152 334.293 15.6855C334.457 15.7832 334.596 15.918 334.709 16.0898C334.822 16.2617 334.914 16.4512 334.984 16.6582C335.035 16.8262 335.072 17.0059 335.096 17.1973C335.123 17.3848 335.137 17.5781 335.137 17.7773ZM338.225 12V12.9434H340.381V20.0625H338.225V21H343.533V20.0625H341.465V12H338.225ZM344.957 17.7715V17.9004C344.957 18.3574 345.023 18.7812 345.156 19.1719C345.289 19.5625 345.48 19.9023 345.73 20.1914C345.977 20.4805 346.277 20.707 346.633 20.8711C346.992 21.0352 347.396 21.1172 347.846 21.1172C348.291 21.1172 348.691 21.0352 349.047 20.8711C349.402 20.707 349.705 20.4805 349.955 20.1914C350.201 19.9023 350.391 19.5625 350.523 19.1719C350.656 18.7812 350.723 18.3574 350.723 17.9004V17.7715C350.723 17.3145 350.656 16.8906 350.523 16.5C350.391 16.1055 350.201 15.7637 349.955 15.4746C349.705 15.1855 349.4 14.959 349.041 14.7949C348.686 14.627 348.283 14.543 347.834 14.543C347.389 14.543 346.988 14.627 346.633 14.7949C346.277 14.959 345.977 15.1855 345.73 15.4746C345.48 15.7637 345.289 16.1055 345.156 16.5C345.023 16.8906 344.957 17.3145 344.957 17.7715ZM346.041 17.9004V17.7715C346.041 17.4629 346.078 17.168 346.152 16.8867C346.227 16.6016 346.34 16.3516 346.492 16.1367C346.641 15.9219 346.826 15.752 347.049 15.627C347.271 15.498 347.533 15.4336 347.834 15.4336C348.135 15.4336 348.396 15.498 348.619 15.627C348.846 15.752 349.035 15.9219 349.188 16.1367C349.336 16.3516 349.447 16.6016 349.521 16.8867C349.6 17.168 349.639 17.4629 349.639 17.7715V17.9004C349.639 18.2129 349.602 18.5117 349.527 18.7969C349.453 19.0781 349.342 19.3262 349.193 19.541C349.041 19.7559 348.852 19.9258 348.625 20.0508C348.402 20.1758 348.143 20.2383 347.846 20.2383C347.545 20.2383 347.281 20.1758 347.055 20.0508C346.828 19.9258 346.641 19.7559 346.492 19.541C346.34 19.3262 346.227 19.0781 346.152 18.7969C346.078 18.5117 346.041 18.2129 346.041 17.9004ZM355.17 20.2383C354.83 20.2383 354.545 20.1719 354.314 20.0391C354.088 19.9023 353.906 19.7246 353.77 19.5059C353.629 19.291 353.527 19.0488 353.465 18.7793C353.406 18.5059 353.377 18.2305 353.377 17.9531V17.707C353.377 17.4336 353.406 17.1621 353.465 16.8926C353.527 16.623 353.629 16.3789 353.77 16.1602C353.91 15.9453 354.094 15.7715 354.32 15.6387C354.551 15.502 354.834 15.4336 355.17 15.4336C355.389 15.4336 355.592 15.4707 355.779 15.5449C355.971 15.6191 356.135 15.7207 356.271 15.8496C356.408 15.9785 356.516 16.1289 356.594 16.3008C356.676 16.4688 356.719 16.6484 356.723 16.8398H357.748C357.748 16.5195 357.684 16.2188 357.555 15.9375C357.426 15.6562 357.248 15.4121 357.021 15.2051C356.791 15.002 356.518 14.8418 356.201 14.7246C355.889 14.6035 355.545 14.543 355.17 14.543C354.689 14.543 354.27 14.6289 353.91 14.8008C353.551 14.9727 353.252 15.2031 353.014 15.4922C352.771 15.7852 352.59 16.123 352.469 16.5059C352.348 16.8887 352.287 17.2891 352.287 17.707V17.9531C352.287 18.375 352.348 18.7773 352.469 19.1602C352.59 19.5391 352.771 19.873 353.014 20.1621C353.252 20.4551 353.551 20.6875 353.91 20.8594C354.27 21.0312 354.689 21.1172 355.17 21.1172C355.506 21.1172 355.828 21.0605 356.137 20.9473C356.445 20.8301 356.719 20.6738 356.957 20.4785C357.195 20.2871 357.385 20.0645 357.525 19.8105C357.67 19.5527 357.744 19.2832 357.748 19.002H356.723C356.719 19.1777 356.672 19.3418 356.582 19.4941C356.496 19.6426 356.381 19.7715 356.236 19.8809C356.092 19.9941 355.926 20.082 355.738 20.1445C355.555 20.207 355.365 20.2383 355.17 20.2383ZM361.574 18.041L363.9 21H365.277L362.318 17.3027L364.885 14.6602H363.566L361.486 16.7461L360.777 17.5078V12H359.688V21H360.777V18.8086L361.574 18.041Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M301 22.1719H365.857V22.7578H301V22.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M57.4287 264V249.07H57.2749L50.7739 251.418V253.9L54.5474 252.546V264H57.4287Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M147.208 264V261.713H140.655L143.465 258.74C143.95 258.241 144.391 257.766 144.788 257.314C145.184 256.856 145.526 256.409 145.813 255.971C146.093 255.534 146.309 255.093 146.459 254.648C146.616 254.197 146.695 253.726 146.695 253.233C146.695 252.584 146.592 251.993 146.387 251.459C146.182 250.919 145.885 250.458 145.495 250.075C145.099 249.692 144.606 249.395 144.019 249.183C143.438 248.971 142.768 248.865 142.009 248.865C141.216 248.865 140.491 248.995 139.835 249.255C139.186 249.508 138.632 249.856 138.174 250.301C137.709 250.745 137.35 251.265 137.097 251.859C136.844 252.447 136.718 253.073 136.718 253.736H139.579C139.579 253.333 139.63 252.974 139.732 252.659C139.835 252.345 139.985 252.082 140.184 251.87C140.375 251.665 140.614 251.511 140.901 251.408C141.195 251.299 141.534 251.244 141.917 251.244C142.21 251.244 142.477 251.292 142.716 251.388C142.962 251.483 143.174 251.62 143.352 251.798C143.523 251.982 143.656 252.205 143.752 252.464C143.848 252.724 143.896 253.021 143.896 253.356C143.896 253.582 143.858 253.814 143.783 254.054C143.714 254.293 143.602 254.549 143.444 254.823C143.28 255.103 143.068 255.411 142.809 255.746C142.549 256.081 142.231 256.453 141.855 256.863L137.025 262.052V264H147.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293.5 31C293.5 34.1143 291.765 36.9776 288.873 39.0809C285.982 41.1839 281.962 42.5 277.5 42.5C273.038 42.5 269.018 41.1839 266.127 39.0809C263.235 36.9776 261.5 34.1143 261.5 31C261.5 27.8857 263.235 25.0224 266.127 22.9191C269.018 20.8161 273.038 19.5 277.5 19.5C281.962 19.5 285.982 20.8161 288.873 22.9191C291.765 25.0224 293.5 27.8857 293.5 31Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"514.5\"\n      cy=\"73.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M515.052 76.7045V70.9363H514.993L512.481 71.8435V72.8022L513.939 72.2793V76.7045H515.052Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"552.5\"\n      cy=\"73.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M551.463 73.3371V74.1928H552.062C552.212 74.1928 552.347 74.21 552.466 74.2443C552.587 74.2786 552.692 74.3315 552.779 74.4028C552.863 74.4741 552.928 74.5652 552.973 74.6761C553.018 74.7871 553.04 74.9204 553.04 75.0763C553.04 75.2004 553.02 75.3127 552.981 75.413C552.944 75.5134 552.888 75.5979 552.814 75.6666C552.738 75.7432 552.643 75.8013 552.529 75.8409C552.415 75.8805 552.287 75.9003 552.145 75.9003C552.018 75.9003 551.902 75.8818 551.796 75.8448C551.691 75.8052 551.599 75.7511 551.523 75.6824C551.444 75.6164 551.383 75.5372 551.341 75.4447C551.298 75.3496 551.277 75.2466 551.277 75.1357H550.176C550.176 75.4157 550.23 75.6586 550.338 75.8647C550.449 76.0707 550.596 76.241 550.778 76.3757C550.96 76.5131 551.168 76.6161 551.4 76.6847C551.635 76.7508 551.875 76.7838 552.121 76.7838C552.406 76.7838 552.672 76.7468 552.917 76.6729C553.166 76.5963 553.38 76.4853 553.559 76.3401C553.739 76.1974 553.88 76.0205 553.983 75.8092C554.086 75.5979 554.138 75.3576 554.138 75.0882C554.138 74.935 554.119 74.7897 554.082 74.6524C554.045 74.515 553.988 74.3882 553.912 74.272C553.835 74.1585 553.737 74.0568 553.619 73.967C553.502 73.8772 553.364 73.8032 553.203 73.7451C553.34 73.6791 553.461 73.6012 553.567 73.5114C553.673 73.4189 553.761 73.3186 553.832 73.2103C553.904 73.102 553.958 72.9884 553.995 72.8696C554.032 72.7481 554.05 72.6253 554.05 72.5011C554.05 72.2317 554.003 71.9954 553.908 71.792C553.815 71.586 553.685 71.413 553.516 71.273C553.347 71.1357 553.143 71.0327 552.905 70.964C552.668 70.8927 552.406 70.857 552.121 70.857C551.857 70.857 551.61 70.8953 551.38 70.9719C551.153 71.0485 550.955 71.1555 550.786 71.2928C550.617 71.4328 550.483 71.5992 550.386 71.792C550.291 71.9848 550.243 72.1987 550.243 72.4338H551.345C551.345 72.3281 551.366 72.2331 551.408 72.1485C551.45 72.064 551.508 71.9914 551.582 71.9307C551.654 71.8725 551.737 71.8276 551.832 71.796C551.93 71.7643 552.034 71.7484 552.145 71.7484C552.279 71.7484 552.397 71.7669 552.497 71.8039C552.6 71.8409 552.685 71.8924 552.751 71.9584C552.817 72.0271 552.866 72.1089 552.898 72.204C552.932 72.2965 552.949 72.3995 552.949 72.513C552.949 72.6292 552.932 72.7375 552.898 72.8379C552.866 72.9356 552.817 73.0188 552.751 73.0875C552.68 73.1667 552.586 73.2288 552.47 73.2737C552.356 73.3159 552.22 73.3371 552.062 73.3371H551.463Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M476.362 71.2317H475.257L475.253 75.0548C475.25 75.2423 475.23 75.4074 475.193 75.55C475.156 75.6926 475.101 75.8115 475.027 75.9066C474.958 75.999 474.871 76.069 474.765 76.1165C474.662 76.1614 474.543 76.1839 474.409 76.1839C474.285 76.1839 474.175 76.1628 474.08 76.1205C473.985 76.0756 473.904 76.0096 473.838 75.9224C473.767 75.8273 473.713 75.7072 473.676 75.5619C473.641 75.4166 473.623 75.2476 473.62 75.0548L473.616 71.2317H472.503L472.499 75.0548C472.499 75.377 472.544 75.6649 472.634 75.9184C472.726 76.1694 472.856 76.3806 473.022 76.5523C473.189 76.724 473.388 76.8547 473.62 76.9445C473.855 77.0343 474.118 77.0792 474.409 77.0792C474.718 77.0792 474.992 77.0343 475.233 76.9445C475.476 76.8547 475.682 76.7227 475.851 76.5484C476.017 76.3767 476.144 76.1654 476.231 75.9145C476.321 75.6636 476.366 75.377 476.366 75.0548L476.362 71.2317ZM477.447 78.6481H478.549V76.6276C478.599 76.6831 478.652 76.7332 478.707 76.7781C478.763 76.823 478.821 76.864 478.882 76.901C478.985 76.9591 479.095 77.0026 479.214 77.0317C479.336 77.0634 479.468 77.0792 479.61 77.0792C479.88 77.0792 480.119 77.0238 480.328 76.9128C480.536 76.8019 480.712 76.6487 480.854 76.4533C480.994 76.2605 481.1 76.0307 481.171 75.7639C481.245 75.4972 481.282 75.208 481.282 74.8963V74.8131C481.282 74.4883 481.245 74.1924 481.171 73.9257C481.1 73.6563 480.993 73.4252 480.851 73.2324C480.708 73.0422 480.532 72.8956 480.324 72.7926C480.115 72.687 479.875 72.6342 479.603 72.6342C479.471 72.6342 479.346 72.6487 479.23 72.6777C479.117 72.7042 479.012 72.7425 478.917 72.7926C478.838 72.8349 478.764 72.8851 478.695 72.9432C478.627 72.9986 478.563 73.062 478.505 73.1333L478.466 72.7134H477.447V78.6481ZM480.181 74.8131V74.8963C480.181 75.0733 480.165 75.241 480.133 75.3995C480.102 75.5553 480.052 75.6926 479.983 75.8115C479.914 75.9303 479.824 76.0241 479.714 76.0928C479.605 76.1614 479.473 76.1958 479.317 76.1958C479.22 76.1958 479.131 76.1865 479.052 76.168C478.973 76.1469 478.903 76.1179 478.842 76.0809C478.779 76.0413 478.722 75.9937 478.672 75.9383C478.624 75.8828 478.583 75.8207 478.549 75.7521V73.9613C478.586 73.8874 478.629 73.8227 478.679 73.7672C478.732 73.7118 478.793 73.6655 478.862 73.6286C478.922 73.5969 478.99 73.5731 479.064 73.5573C479.138 73.5388 479.22 73.5295 479.309 73.5295C479.465 73.5295 479.597 73.5625 479.706 73.6286C479.817 73.6946 479.908 73.7844 479.979 73.898C480.048 74.0142 480.098 74.1515 480.129 74.31C480.164 74.4658 480.181 74.6335 480.181 74.8131ZM482.19 74.825V74.9082C482.19 75.2199 482.228 75.5091 482.304 75.7758C482.381 76.0399 482.492 76.2684 482.637 76.4612C482.78 76.654 482.954 76.8059 483.16 76.9168C483.369 77.0251 483.604 77.0792 483.865 77.0792C484.106 77.0792 484.317 77.033 484.499 76.9406C484.682 76.8481 484.84 76.7187 484.975 76.5523L485.03 77H486.025V70.9148H484.919V73.0977C484.787 72.9498 484.635 72.8362 484.464 72.757C484.295 72.6751 484.098 72.6342 483.873 72.6342C483.607 72.6342 483.369 72.687 483.16 72.7926C482.954 72.8983 482.779 73.0475 482.633 73.2403C482.488 73.4331 482.377 73.6642 482.301 73.9336C482.227 74.203 482.19 74.5001 482.19 74.825ZM483.291 74.9082V74.825C483.291 74.6454 483.307 74.4777 483.338 74.3219C483.37 74.1634 483.42 74.0247 483.489 73.9059C483.558 73.7897 483.646 73.6986 483.754 73.6325C483.865 73.5639 483.999 73.5295 484.155 73.5295C484.342 73.5295 484.498 73.5705 484.622 73.6523C484.746 73.7316 484.845 73.8438 484.919 73.9891V75.7243C484.845 75.8669 484.745 75.9792 484.618 76.0611C484.494 76.1429 484.337 76.1839 484.147 76.1839C483.991 76.1839 483.859 76.1509 483.751 76.0848C483.642 76.0188 483.554 75.9277 483.485 75.8115C483.416 75.6979 483.366 75.5645 483.335 75.4113C483.305 75.2555 483.291 75.0878 483.291 74.9082ZM489.856 77H490.973V76.9327C490.917 76.8244 490.875 76.6949 490.846 76.5444C490.817 76.3939 490.802 76.2037 490.802 75.9739V74.1357C490.802 73.8874 490.756 73.6695 490.664 73.482C490.571 73.2918 490.443 73.1347 490.279 73.0105C490.116 72.8864 489.922 72.7926 489.697 72.7292C489.475 72.6659 489.235 72.6342 488.976 72.6342C488.688 72.6342 488.432 72.6711 488.207 72.7451C487.986 72.8164 487.798 72.9141 487.645 73.0383C487.489 73.1624 487.37 73.3063 487.288 73.4701C487.209 73.6338 487.169 73.8068 487.169 73.9891H488.271C488.271 73.9125 488.281 73.8425 488.303 73.7791C488.326 73.7157 488.362 73.6616 488.41 73.6167C488.462 73.5665 488.531 73.5282 488.616 73.5018C488.7 73.4727 488.8 73.4582 488.917 73.4582C489.049 73.4582 489.164 73.4754 489.261 73.5097C489.362 73.5414 489.445 73.5876 489.511 73.6484C489.574 73.7065 489.622 73.7765 489.653 73.8583C489.685 73.9376 489.701 74.0274 489.701 74.1277V74.3813H489.087C488.77 74.3813 488.489 74.4103 488.243 74.4685C488 74.5239 487.795 74.6058 487.629 74.7141C487.444 74.8329 487.306 74.9848 487.213 75.1697C487.121 75.3519 487.074 75.5619 487.074 75.7996C487.074 75.9845 487.111 76.1562 487.185 76.3146C487.259 76.4704 487.362 76.6051 487.494 76.7187C487.626 76.8323 487.784 76.9208 487.966 76.9842C488.151 77.0475 488.353 77.0792 488.572 77.0792C488.707 77.0792 488.832 77.066 488.948 77.0396C489.065 77.0158 489.171 76.9815 489.269 76.9366C489.364 76.8944 489.451 76.8442 489.531 76.7861C489.61 76.728 489.68 76.6659 489.741 76.5999C489.754 76.6765 489.77 76.7491 489.788 76.8178C489.807 76.8864 489.829 76.9472 489.856 77ZM488.806 76.2275C488.703 76.2275 488.612 76.2156 488.532 76.1918C488.456 76.1654 488.391 76.1311 488.338 76.0888C488.285 76.0439 488.244 75.9898 488.215 75.9264C488.189 75.8603 488.176 75.789 488.176 75.7124C488.176 75.6147 488.194 75.5249 488.231 75.443C488.268 75.3585 488.325 75.2859 488.402 75.2251C488.478 75.167 488.577 75.1221 488.699 75.0904C488.82 75.0561 488.967 75.0389 489.138 75.0389H489.701V75.7758C489.669 75.8313 489.626 75.8868 489.57 75.9422C489.515 75.995 489.449 76.0426 489.372 76.0848C489.296 76.1271 489.21 76.1614 489.115 76.1878C489.02 76.2143 488.917 76.2275 488.806 76.2275ZM494.071 71.6635H492.969V72.7134H491.991V73.5256H492.969V75.4747C492.969 75.7573 493.006 76.0003 493.08 76.2037C493.154 76.4044 493.26 76.5695 493.397 76.6989C493.532 76.831 493.694 76.9287 493.885 76.9921C494.077 77.0528 494.291 77.0832 494.526 77.0832C494.648 77.0832 494.771 77.0766 494.895 77.0634C495.022 77.0528 495.143 77.037 495.259 77.0158C495.376 76.9947 495.485 76.9683 495.588 76.9366C495.691 76.9023 495.781 76.8627 495.858 76.8178L495.751 76.0611C495.7 76.0743 495.64 76.0875 495.568 76.1007C495.5 76.1139 495.426 76.1258 495.347 76.1363C495.265 76.1495 495.179 76.1601 495.089 76.168C495.002 76.176 494.916 76.1799 494.831 76.1799C494.715 76.1799 494.61 76.1667 494.515 76.1403C494.422 76.1139 494.343 76.069 494.277 76.0056C494.211 75.9449 494.159 75.863 494.122 75.76C494.088 75.6543 494.071 75.5236 494.071 75.3678V73.5256H495.671V72.7134H494.071V71.6635ZM499.003 77.0792C499.418 77.0792 499.777 76.9987 500.081 76.8376C500.385 76.6765 500.606 76.4969 500.746 76.2988L500.196 75.7045C500.069 75.8683 499.904 75.9911 499.7 76.073C499.497 76.1548 499.287 76.1958 499.071 76.1958C498.917 76.1958 498.776 76.172 498.647 76.1245C498.517 76.0769 498.402 76.0096 498.302 75.9224C498.204 75.8379 498.126 75.7441 498.068 75.6411C498.01 75.5355 497.963 75.3968 497.926 75.2251V75.2133H500.834V74.7458C500.834 74.4315 500.79 74.1449 500.703 73.8861C500.616 73.6246 500.489 73.4014 500.322 73.2165C500.153 73.0317 499.947 72.889 499.704 72.7887C499.464 72.6857 499.189 72.6342 498.88 72.6342C498.582 72.6342 498.306 72.6883 498.052 72.7966C497.799 72.9049 497.58 73.0568 497.395 73.2522C497.21 73.4476 497.066 73.6814 496.963 73.9534C496.86 74.2228 496.808 74.5213 496.808 74.8488V75.0072C496.808 75.2951 496.86 75.5659 496.963 75.8194C497.069 76.0703 497.218 76.2882 497.411 76.4731C497.603 76.6606 497.834 76.8085 498.104 76.9168C498.373 77.0251 498.673 77.0792 499.003 77.0792ZM498.872 73.5256C499.012 73.5256 499.135 73.548 499.241 73.5929C499.349 73.6352 499.44 73.6933 499.514 73.7672C499.588 73.8438 499.646 73.9336 499.689 74.0366C499.731 74.1396 499.752 74.2492 499.752 74.3654V74.4526H497.945C497.972 74.3126 498.011 74.1858 498.064 74.0723C498.117 73.9587 498.183 73.861 498.262 73.7791C498.339 73.6972 498.429 73.6352 498.532 73.5929C498.635 73.548 498.748 73.5256 498.872 73.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M530.579 71.6635H529.478V72.7134H528.499V73.5256H529.478V75.4747C529.478 75.7573 529.515 76.0003 529.589 76.2037C529.663 76.4044 529.768 76.5695 529.906 76.6989C530.04 76.831 530.203 76.9287 530.393 76.9921C530.586 77.0528 530.8 77.0832 531.035 77.0832C531.156 77.0832 531.279 77.0766 531.403 77.0634C531.53 77.0528 531.651 77.037 531.768 77.0158C531.884 76.9947 531.993 76.9683 532.096 76.9366C532.199 76.9023 532.289 76.8627 532.366 76.8178L532.259 76.0611C532.209 76.0743 532.148 76.0875 532.077 76.1007C532.008 76.1139 531.934 76.1258 531.855 76.1363C531.773 76.1495 531.687 76.1601 531.597 76.168C531.51 76.176 531.424 76.1799 531.34 76.1799C531.224 76.1799 531.118 76.1667 531.023 76.1403C530.93 76.1139 530.851 76.069 530.785 76.0056C530.719 75.9449 530.668 75.863 530.631 75.76C530.596 75.6543 530.579 75.5236 530.579 75.3678V73.5256H532.18V72.7134H530.579V71.6635ZM533.281 74.8171V74.9003C533.281 75.2146 533.326 75.5051 533.416 75.7719C533.505 76.036 533.638 76.2658 533.812 76.4612C533.984 76.6566 534.195 76.8098 534.446 76.9208C534.699 77.0291 534.987 77.0832 535.309 77.0832C535.629 77.0832 535.914 77.0291 536.165 76.9208C536.416 76.8098 536.627 76.6566 536.799 76.4612C536.971 76.2658 537.101 76.036 537.191 75.7719C537.281 75.5051 537.326 75.2146 537.326 74.9003V74.8171C537.326 74.5054 537.281 74.2175 537.191 73.9534C537.101 73.6867 536.971 73.4556 536.799 73.2601C536.625 73.0647 536.412 72.9115 536.161 72.8006C535.91 72.6896 535.624 72.6342 535.301 72.6342C534.979 72.6342 534.693 72.6896 534.442 72.8006C534.194 72.9115 533.984 73.0647 533.812 73.2601C533.638 73.4556 533.505 73.6867 533.416 73.9534C533.326 74.2175 533.281 74.5054 533.281 74.8171ZM534.382 74.9003V74.8171C534.382 74.6428 534.4 74.4777 534.434 74.3219C534.468 74.166 534.522 74.0287 534.596 73.9098C534.67 73.791 534.765 73.6972 534.882 73.6286C534.998 73.5599 535.138 73.5256 535.301 73.5256C535.468 73.5256 535.609 73.5599 535.725 73.6286C535.842 73.6972 535.937 73.791 536.011 73.9098C536.082 74.0287 536.135 74.166 536.169 74.3219C536.203 74.4777 536.221 74.6428 536.221 74.8171V74.9003C536.221 75.0799 536.203 75.2489 536.169 75.4074C536.135 75.5632 536.082 75.6992 536.011 75.8154C535.937 75.9343 535.842 76.0281 535.725 76.0967C535.609 76.1654 535.471 76.1997 535.309 76.1997C535.143 76.1997 535 76.1654 534.882 76.0967C534.765 76.0281 534.67 75.9343 534.596 75.8154C534.522 75.6992 534.468 75.5632 534.434 75.4074C534.4 75.2489 534.382 75.0799 534.382 74.9003Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"514.5\"\n      cy=\"101.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"552.5\"\n      cy=\"101.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M553.571 102.561V98.9363H552.454L550.029 102.763L550.073 103.453H552.47V104.705H553.571V103.453H554.241V102.561H553.571ZM551.111 102.561L552.363 100.608L552.47 100.418V102.561H551.111Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M476.362 99.2317H475.257L475.253 103.055C475.25 103.242 475.23 103.407 475.193 103.55C475.156 103.693 475.101 103.811 475.027 103.907C474.958 103.999 474.871 104.069 474.765 104.117C474.662 104.161 474.543 104.184 474.409 104.184C474.285 104.184 474.175 104.163 474.08 104.12C473.985 104.076 473.904 104.01 473.838 103.922C473.767 103.827 473.713 103.707 473.676 103.562C473.641 103.417 473.623 103.248 473.62 103.055L473.616 99.2317H472.503L472.499 103.055C472.499 103.377 472.544 103.665 472.634 103.918C472.726 104.169 472.856 104.381 473.022 104.552C473.189 104.724 473.388 104.855 473.62 104.945C473.855 105.034 474.118 105.079 474.409 105.079C474.718 105.079 474.992 105.034 475.233 104.945C475.476 104.855 475.682 104.723 475.851 104.548C476.017 104.377 476.144 104.165 476.231 103.914C476.321 103.664 476.366 103.377 476.366 103.055L476.362 99.2317ZM477.447 106.648H478.549V104.628C478.599 104.683 478.652 104.733 478.707 104.778C478.763 104.823 478.821 104.864 478.882 104.901C478.985 104.959 479.095 105.003 479.214 105.032C479.336 105.063 479.468 105.079 479.61 105.079C479.88 105.079 480.119 105.024 480.328 104.913C480.536 104.802 480.712 104.649 480.854 104.453C480.994 104.26 481.1 104.031 481.171 103.764C481.245 103.497 481.282 103.208 481.282 102.896V102.813C481.282 102.488 481.245 102.192 481.171 101.926C481.1 101.656 480.993 101.425 480.851 101.232C480.708 101.042 480.532 100.896 480.324 100.793C480.115 100.687 479.875 100.634 479.603 100.634C479.471 100.634 479.346 100.649 479.23 100.678C479.117 100.704 479.012 100.742 478.917 100.793C478.838 100.835 478.764 100.885 478.695 100.943C478.627 100.999 478.563 101.062 478.505 101.133L478.466 100.713H477.447V106.648ZM480.181 102.813V102.896C480.181 103.073 480.165 103.241 480.133 103.399C480.102 103.555 480.052 103.693 479.983 103.811C479.914 103.93 479.824 104.024 479.714 104.093C479.605 104.161 479.473 104.196 479.317 104.196C479.22 104.196 479.131 104.187 479.052 104.168C478.973 104.147 478.903 104.118 478.842 104.081C478.779 104.041 478.722 103.994 478.672 103.938C478.624 103.883 478.583 103.821 478.549 103.752V101.961C478.586 101.887 478.629 101.823 478.679 101.767C478.732 101.712 478.793 101.666 478.862 101.629C478.922 101.597 478.99 101.573 479.064 101.557C479.138 101.539 479.22 101.53 479.309 101.53C479.465 101.53 479.597 101.563 479.706 101.629C479.817 101.695 479.908 101.784 479.979 101.898C480.048 102.014 480.098 102.152 480.129 102.31C480.164 102.466 480.181 102.634 480.181 102.813ZM482.19 102.825V102.908C482.19 103.22 482.228 103.509 482.304 103.776C482.381 104.04 482.492 104.268 482.637 104.461C482.78 104.654 482.954 104.806 483.16 104.917C483.369 105.025 483.604 105.079 483.865 105.079C484.106 105.079 484.317 105.033 484.499 104.941C484.682 104.848 484.84 104.719 484.975 104.552L485.03 105H486.025V98.9148H484.919V101.098C484.787 100.95 484.635 100.836 484.464 100.757C484.295 100.675 484.098 100.634 483.873 100.634C483.607 100.634 483.369 100.687 483.16 100.793C482.954 100.898 482.779 101.048 482.633 101.24C482.488 101.433 482.377 101.664 482.301 101.934C482.227 102.203 482.19 102.5 482.19 102.825ZM483.291 102.908V102.825C483.291 102.645 483.307 102.478 483.338 102.322C483.37 102.163 483.42 102.025 483.489 101.906C483.558 101.79 483.646 101.699 483.754 101.633C483.865 101.564 483.999 101.53 484.155 101.53C484.342 101.53 484.498 101.57 484.622 101.652C484.746 101.732 484.845 101.844 484.919 101.989V103.724C484.845 103.867 484.745 103.979 484.618 104.061C484.494 104.143 484.337 104.184 484.147 104.184C483.991 104.184 483.859 104.151 483.751 104.085C483.642 104.019 483.554 103.928 483.485 103.811C483.416 103.698 483.366 103.565 483.335 103.411C483.305 103.256 483.291 103.088 483.291 102.908ZM489.856 105H490.973V104.933C490.917 104.824 490.875 104.695 490.846 104.544C490.817 104.394 490.802 104.204 490.802 103.974V102.136C490.802 101.887 490.756 101.67 490.664 101.482C490.571 101.292 490.443 101.135 490.279 101.011C490.116 100.886 489.922 100.793 489.697 100.729C489.475 100.666 489.235 100.634 488.976 100.634C488.688 100.634 488.432 100.671 488.207 100.745C487.986 100.816 487.798 100.914 487.645 101.038C487.489 101.162 487.37 101.306 487.288 101.47C487.209 101.634 487.169 101.807 487.169 101.989H488.271C488.271 101.912 488.281 101.842 488.303 101.779C488.326 101.716 488.362 101.662 488.41 101.617C488.462 101.566 488.531 101.528 488.616 101.502C488.7 101.473 488.8 101.458 488.917 101.458C489.049 101.458 489.164 101.475 489.261 101.51C489.362 101.541 489.445 101.588 489.511 101.648C489.574 101.706 489.622 101.776 489.653 101.858C489.685 101.938 489.701 102.027 489.701 102.128V102.381H489.087C488.77 102.381 488.489 102.41 488.243 102.468C488 102.524 487.795 102.606 487.629 102.714C487.444 102.833 487.306 102.985 487.213 103.17C487.121 103.352 487.074 103.562 487.074 103.8C487.074 103.984 487.111 104.156 487.185 104.315C487.259 104.47 487.362 104.605 487.494 104.719C487.626 104.832 487.784 104.921 487.966 104.984C488.151 105.048 488.353 105.079 488.572 105.079C488.707 105.079 488.832 105.066 488.948 105.04C489.065 105.016 489.171 104.982 489.269 104.937C489.364 104.894 489.451 104.844 489.531 104.786C489.61 104.728 489.68 104.666 489.741 104.6C489.754 104.676 489.77 104.749 489.788 104.818C489.807 104.886 489.829 104.947 489.856 105ZM488.806 104.227C488.703 104.227 488.612 104.216 488.532 104.192C488.456 104.165 488.391 104.131 488.338 104.089C488.285 104.044 488.244 103.99 488.215 103.926C488.189 103.86 488.176 103.789 488.176 103.712C488.176 103.615 488.194 103.525 488.231 103.443C488.268 103.359 488.325 103.286 488.402 103.225C488.478 103.167 488.577 103.122 488.699 103.09C488.82 103.056 488.967 103.039 489.138 103.039H489.701V103.776C489.669 103.831 489.626 103.887 489.57 103.942C489.515 103.995 489.449 104.043 489.372 104.085C489.296 104.127 489.21 104.161 489.115 104.188C489.02 104.214 488.917 104.227 488.806 104.227ZM494.071 99.6635H492.969V100.713H491.991V101.526H492.969V103.475C492.969 103.757 493.006 104 493.08 104.204C493.154 104.404 493.26 104.569 493.397 104.699C493.532 104.831 493.694 104.929 493.885 104.992C494.077 105.053 494.291 105.083 494.526 105.083C494.648 105.083 494.771 105.077 494.895 105.063C495.022 105.053 495.143 105.037 495.259 105.016C495.376 104.995 495.485 104.968 495.588 104.937C495.691 104.902 495.781 104.863 495.858 104.818L495.751 104.061C495.7 104.074 495.64 104.087 495.568 104.101C495.5 104.114 495.426 104.126 495.347 104.136C495.265 104.15 495.179 104.16 495.089 104.168C495.002 104.176 494.916 104.18 494.831 104.18C494.715 104.18 494.61 104.167 494.515 104.14C494.422 104.114 494.343 104.069 494.277 104.006C494.211 103.945 494.159 103.863 494.122 103.76C494.088 103.654 494.071 103.524 494.071 103.368V101.526H495.671V100.713H494.071V99.6635ZM499.003 105.079C499.418 105.079 499.777 104.999 500.081 104.838C500.385 104.676 500.606 104.497 500.746 104.299L500.196 103.705C500.069 103.868 499.904 103.991 499.7 104.073C499.497 104.155 499.287 104.196 499.071 104.196C498.917 104.196 498.776 104.172 498.647 104.124C498.517 104.077 498.402 104.01 498.302 103.922C498.204 103.838 498.126 103.744 498.068 103.641C498.01 103.535 497.963 103.397 497.926 103.225V103.213H500.834V102.746C500.834 102.431 500.79 102.145 500.703 101.886C500.616 101.625 500.489 101.401 500.322 101.217C500.153 101.032 499.947 100.889 499.704 100.789C499.464 100.686 499.189 100.634 498.88 100.634C498.582 100.634 498.306 100.688 498.052 100.797C497.799 100.905 497.58 101.057 497.395 101.252C497.21 101.448 497.066 101.681 496.963 101.953C496.86 102.223 496.808 102.521 496.808 102.849V103.007C496.808 103.295 496.86 103.566 496.963 103.819C497.069 104.07 497.218 104.288 497.411 104.473C497.603 104.661 497.834 104.809 498.104 104.917C498.373 105.025 498.673 105.079 499.003 105.079ZM498.872 101.526C499.012 101.526 499.135 101.548 499.241 101.593C499.349 101.635 499.44 101.693 499.514 101.767C499.588 101.844 499.646 101.934 499.689 102.037C499.731 102.14 499.752 102.249 499.752 102.365V102.453H497.945C497.972 102.313 498.011 102.186 498.064 102.072C498.117 101.959 498.183 101.861 498.262 101.779C498.339 101.697 498.429 101.635 498.532 101.593C498.635 101.548 498.748 101.526 498.872 101.526Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M530.579 99.6635H529.478V100.713H528.499V101.526H529.478V103.475C529.478 103.757 529.515 104 529.589 104.204C529.663 104.404 529.768 104.569 529.906 104.699C530.04 104.831 530.203 104.929 530.393 104.992C530.586 105.053 530.8 105.083 531.035 105.083C531.156 105.083 531.279 105.077 531.403 105.063C531.53 105.053 531.651 105.037 531.768 105.016C531.884 104.995 531.993 104.968 532.096 104.937C532.199 104.902 532.289 104.863 532.366 104.818L532.259 104.061C532.209 104.074 532.148 104.087 532.077 104.101C532.008 104.114 531.934 104.126 531.855 104.136C531.773 104.15 531.687 104.16 531.597 104.168C531.51 104.176 531.424 104.18 531.34 104.18C531.224 104.18 531.118 104.167 531.023 104.14C530.93 104.114 530.851 104.069 530.785 104.006C530.719 103.945 530.668 103.863 530.631 103.76C530.596 103.654 530.579 103.524 530.579 103.368V101.526H532.18V100.713H530.579V99.6635ZM533.281 102.817V102.9C533.281 103.215 533.326 103.505 533.416 103.772C533.505 104.036 533.638 104.266 533.812 104.461C533.984 104.657 534.195 104.81 534.446 104.921C534.699 105.029 534.987 105.083 535.309 105.083C535.629 105.083 535.914 105.029 536.165 104.921C536.416 104.81 536.627 104.657 536.799 104.461C536.971 104.266 537.101 104.036 537.191 103.772C537.281 103.505 537.326 103.215 537.326 102.9V102.817C537.326 102.505 537.281 102.218 537.191 101.953C537.101 101.687 536.971 101.456 536.799 101.26C536.625 101.065 536.412 100.911 536.161 100.801C535.91 100.69 535.624 100.634 535.301 100.634C534.979 100.634 534.693 100.69 534.442 100.801C534.194 100.911 533.984 101.065 533.812 101.26C533.638 101.456 533.505 101.687 533.416 101.953C533.326 102.218 533.281 102.505 533.281 102.817ZM534.382 102.9V102.817C534.382 102.643 534.4 102.478 534.434 102.322C534.468 102.166 534.522 102.029 534.596 101.91C534.67 101.791 534.765 101.697 534.882 101.629C534.998 101.56 535.138 101.526 535.301 101.526C535.468 101.526 535.609 101.56 535.725 101.629C535.842 101.697 535.937 101.791 536.011 101.91C536.082 102.029 536.135 102.166 536.169 102.322C536.203 102.478 536.221 102.643 536.221 102.817V102.9C536.221 103.08 536.203 103.249 536.169 103.407C536.135 103.563 536.082 103.699 536.011 103.815C535.937 103.934 535.842 104.028 535.725 104.097C535.609 104.165 535.471 104.2 535.309 104.2C535.143 104.2 535 104.165 534.882 104.097C534.765 104.028 534.67 103.934 534.596 103.815C534.522 103.699 534.468 103.563 534.434 103.407C534.4 103.249 534.382 103.08 534.382 102.9Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"114.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"184.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"256.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 115L249 260.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 116L377 186\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M516.33 104V103.117H513.799L514.884 101.968C515.072 101.775 515.242 101.591 515.395 101.417C515.548 101.24 515.68 101.067 515.791 100.898C515.9 100.729 515.983 100.559 516.041 100.387C516.102 100.213 516.132 100.03 516.132 99.8402C516.132 99.5893 516.092 99.3608 516.013 99.1548C515.934 98.9461 515.819 98.7679 515.669 98.62C515.515 98.4721 515.325 98.3572 515.098 98.2753C514.874 98.1934 514.615 98.1525 514.322 98.1525C514.015 98.1525 513.735 98.2027 513.482 98.303C513.231 98.4007 513.017 98.5354 512.84 98.7071C512.66 98.8788 512.522 99.0795 512.424 99.3093C512.326 99.5364 512.277 99.7781 512.277 100.034H513.383C513.383 99.8785 513.402 99.7398 513.442 99.6183C513.482 99.4968 513.54 99.3951 513.616 99.3133C513.69 99.234 513.783 99.1746 513.894 99.135C514.007 99.0927 514.138 99.0716 514.286 99.0716C514.399 99.0716 514.502 99.0901 514.595 99.1271C514.69 99.164 514.772 99.2169 514.841 99.2855C514.907 99.3568 514.958 99.4427 514.995 99.543C515.032 99.6434 515.051 99.7583 515.051 99.8877C515.051 99.9749 515.036 100.065 515.007 100.157C514.981 100.25 514.937 100.349 514.876 100.454C514.813 100.563 514.731 100.681 514.631 100.811C514.53 100.94 514.407 101.084 514.262 101.243L512.396 103.247V104H516.33Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 185L340 261\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M248.317 255.284V257.499H249.865C250.255 257.499 250.604 257.543 250.911 257.632C251.226 257.721 251.496 257.858 251.721 258.042C251.94 258.227 252.107 258.463 252.224 258.75C252.34 259.037 252.398 259.382 252.398 259.786C252.398 260.107 252.347 260.397 252.244 260.657C252.148 260.917 252.005 261.136 251.813 261.313C251.615 261.512 251.369 261.662 251.075 261.765C250.781 261.867 250.45 261.918 250.081 261.918C249.752 261.918 249.452 261.871 249.178 261.775C248.905 261.672 248.669 261.532 248.471 261.354C248.266 261.184 248.108 260.979 247.999 260.739C247.89 260.493 247.835 260.227 247.835 259.939H244.984C244.984 260.664 245.125 261.293 245.405 261.826C245.692 262.359 246.071 262.8 246.543 263.149C247.015 263.504 247.551 263.771 248.153 263.949C248.761 264.12 249.383 264.205 250.019 264.205C250.757 264.205 251.444 264.109 252.08 263.918C252.723 263.72 253.276 263.433 253.741 263.057C254.206 262.688 254.572 262.229 254.838 261.683C255.105 261.136 255.238 260.514 255.238 259.816C255.238 259.42 255.19 259.044 255.095 258.688C254.999 258.333 254.852 258.005 254.654 257.704C254.456 257.41 254.203 257.147 253.895 256.915C253.594 256.682 253.235 256.491 252.818 256.34C253.174 256.169 253.488 255.968 253.762 255.735C254.035 255.496 254.264 255.236 254.449 254.956C254.633 254.676 254.773 254.382 254.869 254.074C254.965 253.76 255.013 253.442 255.013 253.121C255.013 252.423 254.89 251.812 254.644 251.285C254.404 250.752 254.066 250.304 253.628 249.942C253.191 249.586 252.665 249.32 252.049 249.142C251.434 248.958 250.757 248.865 250.019 248.865C249.335 248.865 248.696 248.964 248.102 249.163C247.514 249.361 247.001 249.638 246.563 249.993C246.126 250.355 245.781 250.786 245.528 251.285C245.282 251.784 245.159 252.338 245.159 252.946H248.009C248.009 252.673 248.064 252.427 248.173 252.208C248.283 251.989 248.433 251.801 248.625 251.644C248.809 251.494 249.024 251.377 249.271 251.295C249.523 251.213 249.793 251.172 250.081 251.172C250.429 251.172 250.733 251.22 250.993 251.316C251.26 251.412 251.479 251.545 251.649 251.716C251.82 251.894 251.947 252.105 252.029 252.352C252.118 252.591 252.162 252.857 252.162 253.151C252.162 253.452 252.118 253.732 252.029 253.992C251.947 254.245 251.82 254.46 251.649 254.638C251.465 254.843 251.222 255.004 250.921 255.12C250.627 255.229 250.275 255.284 249.865 255.284H248.317Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M340.772 258.453V249.07H337.88L331.605 258.976L331.718 260.76H337.921V264H340.772V260.76H342.505V258.453H340.772ZM334.404 258.453L337.645 253.397L337.921 252.905V258.453H334.404Z\"\n      fill=\"black\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"26.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M63.7754 73.7871L63.8779 73.2256C63.6761 73.2191 63.5085 73.1637 63.375 73.0596C63.2448 72.9554 63.1406 72.8219 63.0625 72.6592C62.9811 72.4997 62.9242 72.319 62.8916 72.1172C62.859 71.9186 62.8428 71.7184 62.8428 71.5166V70.6914C62.8395 70.304 62.7484 69.9639 62.5693 69.6709C62.3903 69.3747 62.112 69.1517 61.7344 69.002C62.112 68.849 62.3903 68.626 62.5693 68.333C62.7516 68.0368 62.8428 67.6934 62.8428 67.3027V66.4727C62.8428 66.2741 62.8525 66.0739 62.8721 65.8721C62.8916 65.6702 62.9372 65.488 63.0088 65.3252C63.0771 65.1657 63.1797 65.0339 63.3164 64.9297C63.4564 64.8255 63.6436 64.7702 63.8779 64.7637L63.7754 64.2021C63.4466 64.2119 63.1667 64.2835 62.9355 64.417C62.7044 64.5472 62.5173 64.7165 62.374 64.9248C62.221 65.1429 62.1087 65.3903 62.0371 65.667C61.9688 65.9404 61.9346 66.209 61.9346 66.4727V67.3027C61.9346 67.7747 61.8223 68.1165 61.5977 68.3281C61.3763 68.5365 61.0361 68.6406 60.5771 68.6406V69.3486C61.0361 69.3519 61.3763 69.4593 61.5977 69.6709C61.8223 69.8825 61.9346 70.2227 61.9346 70.6914V71.5166C61.9346 71.777 61.972 72.0391 62.0469 72.3027C62.1217 72.5697 62.2324 72.8105 62.3789 73.0254C62.5319 73.25 62.724 73.4307 62.9551 73.5674C63.1862 73.7041 63.4596 73.7773 63.7754 73.7871ZM71.8613 72H72.7646V68.2109C72.8265 68.097 72.8981 67.9928 72.9795 67.8984C73.0641 67.804 73.1553 67.721 73.2529 67.6494C73.3734 67.568 73.5052 67.5046 73.6484 67.459C73.7917 67.4102 73.9463 67.3857 74.1123 67.3857C74.3044 67.3857 74.4736 67.4085 74.6201 67.4541C74.7699 67.4997 74.8968 67.5729 75.001 67.6738C75.1019 67.7747 75.1784 67.9066 75.2305 68.0693C75.2826 68.2321 75.3086 68.4307 75.3086 68.665V72H76.2119V68.6455C76.2119 68.2939 76.168 67.9912 76.0801 67.7373C75.9954 67.4801 75.8734 67.2686 75.7139 67.1025C75.5544 66.9365 75.3607 66.8145 75.1328 66.7363C74.9082 66.6582 74.6576 66.6191 74.3809 66.6191C74.1758 66.6224 73.9805 66.6533 73.7949 66.7119C73.6126 66.7673 73.4434 66.847 73.2871 66.9512C73.1829 67.0195 73.0837 67.1009 72.9893 67.1953C72.8981 67.2865 72.8135 67.3874 72.7354 67.498L72.6719 66.7168H71.8613V72ZM77.6133 69.3096V69.417C77.6133 69.7979 77.6686 70.151 77.7793 70.4766C77.89 70.8021 78.0495 71.0853 78.2578 71.3262C78.4629 71.5671 78.7135 71.7559 79.0098 71.8926C79.3092 72.0293 79.6462 72.0977 80.0205 72.0977C80.3916 72.0977 80.7253 72.0293 81.0215 71.8926C81.3177 71.7559 81.57 71.5671 81.7783 71.3262C81.9834 71.0853 82.1413 70.8021 82.252 70.4766C82.3626 70.151 82.418 69.7979 82.418 69.417V69.3096C82.418 68.9287 82.3626 68.5755 82.252 68.25C82.1413 67.9212 81.9834 67.6364 81.7783 67.3955C81.57 67.1546 81.3161 66.9658 81.0166 66.8291C80.7204 66.6891 80.3851 66.6191 80.0107 66.6191C79.6396 66.6191 79.306 66.6891 79.0098 66.8291C78.7135 66.9658 78.4629 67.1546 78.2578 67.3955C78.0495 67.6364 77.89 67.9212 77.7793 68.25C77.6686 68.5755 77.6133 68.9287 77.6133 69.3096ZM78.5166 69.417V69.3096C78.5166 69.0524 78.5475 68.8066 78.6094 68.5723C78.6712 68.3346 78.7656 68.1263 78.8926 67.9473C79.0163 67.7682 79.1709 67.6266 79.3564 67.5225C79.542 67.415 79.7601 67.3613 80.0107 67.3613C80.2614 67.3613 80.4795 67.415 80.665 67.5225C80.8538 67.6266 81.0117 67.7682 81.1387 67.9473C81.2624 68.1263 81.3551 68.3346 81.417 68.5723C81.4821 68.8066 81.5146 69.0524 81.5146 69.3096V69.417C81.5146 69.6774 81.4837 69.9264 81.4219 70.1641C81.36 70.3984 81.2673 70.6051 81.1436 70.7842C81.0166 70.9632 80.8587 71.1048 80.6699 71.209C80.4844 71.3132 80.2679 71.3652 80.0205 71.3652C79.7699 71.3652 79.5501 71.3132 79.3613 71.209C79.1725 71.1048 79.0163 70.9632 78.8926 70.7842C78.7656 70.6051 78.6712 70.3984 78.6094 70.1641C78.5475 69.9264 78.5166 69.6774 78.5166 69.417ZM83.7021 69.3145V69.417C83.7021 69.7946 83.7526 70.1478 83.8535 70.4766C83.9544 70.8021 84.096 71.0853 84.2783 71.3262C84.4606 71.5671 84.6803 71.7559 84.9375 71.8926C85.1979 72.0293 85.4876 72.0977 85.8066 72.0977C86.1322 72.0977 86.417 72.0423 86.6611 71.9316C86.9053 71.821 87.1152 71.6582 87.291 71.4434L87.3301 72H88.1602V64.5H87.2568V67.2393C87.0843 67.0374 86.8792 66.8844 86.6416 66.7803C86.4072 66.6729 86.1322 66.6191 85.8164 66.6191C85.4941 66.6191 85.2028 66.6859 84.9424 66.8193C84.682 66.9528 84.4606 67.1383 84.2783 67.376C84.0928 67.6136 83.9495 67.8984 83.8486 68.2305C83.751 68.5592 83.7021 68.9206 83.7021 69.3145ZM84.6055 69.417V69.3145C84.6055 69.0573 84.6331 68.8132 84.6885 68.582C84.7438 68.3477 84.8301 68.141 84.9473 67.9619C85.0612 67.7861 85.2077 67.6462 85.3867 67.542C85.569 67.4378 85.7871 67.3857 86.041 67.3857C86.3372 67.3857 86.5846 67.4557 86.7832 67.5957C86.9818 67.7324 87.1396 67.9082 87.2568 68.123V70.5742C87.1396 70.8053 86.9818 70.9893 86.7832 71.126C86.5846 71.2627 86.334 71.3311 86.0312 71.3311C85.7806 71.3311 85.5658 71.2806 85.3867 71.1797C85.2077 71.0755 85.0612 70.9355 84.9473 70.7598C84.8301 70.584 84.7438 70.3805 84.6885 70.1494C84.6331 69.9183 84.6055 69.6742 84.6055 69.417ZM92.2129 72.0977C92.7272 72.0977 93.1585 71.9951 93.5068 71.79C93.8584 71.5817 94.1221 71.3441 94.2979 71.0771L93.7461 70.6475C93.5801 70.8623 93.3717 71.0348 93.1211 71.165C92.8704 71.2952 92.584 71.3604 92.2617 71.3604C92.0176 71.3604 91.7946 71.3148 91.5928 71.2236C91.391 71.1325 91.2184 71.0072 91.0752 70.8477C90.9352 70.6979 90.8245 70.5254 90.7432 70.3301C90.665 70.1348 90.6146 69.9085 90.5918 69.6514V69.6172H94.3662V69.2119C94.3662 68.8441 94.319 68.5023 94.2246 68.1865C94.1335 67.8708 93.9935 67.5957 93.8047 67.3613C93.6159 67.1302 93.3783 66.9495 93.0918 66.8193C92.8086 66.6859 92.4766 66.6191 92.0957 66.6191C91.793 66.6191 91.4967 66.681 91.207 66.8047C90.9206 66.9284 90.665 67.1058 90.4404 67.3369C90.2126 67.5713 90.0303 67.8577 89.8936 68.1963C89.7568 68.5316 89.6885 68.9124 89.6885 69.3389V69.5439C89.6885 69.9118 89.7503 70.252 89.874 70.5645C89.9977 70.877 90.1702 71.1471 90.3916 71.375C90.613 71.6029 90.8783 71.7803 91.1875 71.9072C91.5 72.0342 91.8418 72.0977 92.2129 72.0977ZM92.0957 67.3613C92.3268 67.3613 92.5254 67.4036 92.6914 67.4883C92.8607 67.5729 93.0007 67.6836 93.1113 67.8203C93.222 67.957 93.3083 68.1198 93.3701 68.3086C93.432 68.4941 93.4629 68.6683 93.4629 68.8311V68.875H90.6211C90.6569 68.6309 90.7188 68.416 90.8066 68.2305C90.8978 68.0417 91.0085 67.8822 91.1387 67.752C91.2689 67.625 91.4154 67.529 91.5781 67.4639C91.7409 67.3955 91.9134 67.3613 92.0957 67.3613ZM98.8145 72V64.8906H98.7412L96.0508 65.9258V66.751L97.9111 66.043V72H98.8145ZM103.707 71.4141C103.707 71.6029 103.766 71.764 103.883 71.8975C104.003 72.0277 104.181 72.0928 104.415 72.0928C104.646 72.0928 104.824 72.0277 104.947 71.8975C105.071 71.7673 105.133 71.6061 105.133 71.4141C105.133 71.2188 105.071 71.0544 104.947 70.9209C104.827 70.7842 104.649 70.7158 104.415 70.7158C104.177 70.7158 104 70.7842 103.883 70.9209C103.766 71.0576 103.707 71.222 103.707 71.4141ZM103.707 67.1367C103.707 67.3255 103.766 67.4867 103.883 67.6201C104.003 67.7503 104.181 67.8154 104.415 67.8154C104.646 67.8154 104.824 67.7503 104.947 67.6201C105.071 67.4899 105.133 67.3288 105.133 67.1367C105.133 66.9414 105.071 66.777 104.947 66.6436C104.827 66.5068 104.649 66.4385 104.415 66.4385C104.177 66.4385 104 66.5068 103.883 66.6436C103.766 66.7803 103.707 66.9447 103.707 67.1367ZM116.832 72V64.8906H116.759L114.068 65.9258V66.751L115.929 66.043V72H116.832ZM122.198 71.79V70.9307H121.217V71.8047C121.217 72.0814 121.184 72.3483 121.119 72.6055C121.054 72.8626 120.943 73.1051 120.787 73.333L121.349 73.6406C121.609 73.4095 121.816 73.1247 121.969 72.7861C122.122 72.4476 122.198 72.1156 122.198 71.79ZM131.92 72H132.823V68.2109C132.885 68.097 132.957 67.9928 133.038 67.8984C133.123 67.804 133.214 67.721 133.312 67.6494C133.432 67.568 133.564 67.5046 133.707 67.459C133.85 67.4102 134.005 67.3857 134.171 67.3857C134.363 67.3857 134.532 67.4085 134.679 67.4541C134.828 67.4997 134.955 67.5729 135.06 67.6738C135.16 67.7747 135.237 67.9066 135.289 68.0693C135.341 68.2321 135.367 68.4307 135.367 68.665V72H136.271V68.6455C136.271 68.2939 136.227 67.9912 136.139 67.7373C136.054 67.4801 135.932 67.2686 135.772 67.1025C135.613 66.9365 135.419 66.8145 135.191 66.7363C134.967 66.6582 134.716 66.6191 134.439 66.6191C134.234 66.6224 134.039 66.6533 133.854 66.7119C133.671 66.7673 133.502 66.847 133.346 66.9512C133.242 67.0195 133.142 67.1009 133.048 67.1953C132.957 67.2865 132.872 67.3874 132.794 67.498L132.73 66.7168H131.92V72ZM137.672 69.3096V69.417C137.672 69.7979 137.727 70.151 137.838 70.4766C137.949 70.8021 138.108 71.0853 138.316 71.3262C138.521 71.5671 138.772 71.7559 139.068 71.8926C139.368 72.0293 139.705 72.0977 140.079 72.0977C140.45 72.0977 140.784 72.0293 141.08 71.8926C141.376 71.7559 141.629 71.5671 141.837 71.3262C142.042 71.0853 142.2 70.8021 142.311 70.4766C142.421 70.151 142.477 69.7979 142.477 69.417V69.3096C142.477 68.9287 142.421 68.5755 142.311 68.25C142.2 67.9212 142.042 67.6364 141.837 67.3955C141.629 67.1546 141.375 66.9658 141.075 66.8291C140.779 66.6891 140.444 66.6191 140.069 66.6191C139.698 66.6191 139.365 66.6891 139.068 66.8291C138.772 66.9658 138.521 67.1546 138.316 67.3955C138.108 67.6364 137.949 67.9212 137.838 68.25C137.727 68.5755 137.672 68.9287 137.672 69.3096ZM138.575 69.417V69.3096C138.575 69.0524 138.606 68.8066 138.668 68.5723C138.73 68.3346 138.824 68.1263 138.951 67.9473C139.075 67.7682 139.229 67.6266 139.415 67.5225C139.601 67.415 139.819 67.3613 140.069 67.3613C140.32 67.3613 140.538 67.415 140.724 67.5225C140.912 67.6266 141.07 67.7682 141.197 67.9473C141.321 68.1263 141.414 68.3346 141.476 68.5723C141.541 68.8066 141.573 69.0524 141.573 69.3096V69.417C141.573 69.6774 141.542 69.9264 141.48 70.1641C141.419 70.3984 141.326 70.6051 141.202 70.7842C141.075 70.9632 140.917 71.1048 140.729 71.209C140.543 71.3132 140.326 71.3652 140.079 71.3652C139.828 71.3652 139.609 71.3132 139.42 71.209C139.231 71.1048 139.075 70.9632 138.951 70.7842C138.824 70.6051 138.73 70.3984 138.668 70.1641C138.606 69.9264 138.575 69.6774 138.575 69.417ZM143.761 69.3145V69.417C143.761 69.7946 143.811 70.1478 143.912 70.4766C144.013 70.8021 144.155 71.0853 144.337 71.3262C144.519 71.5671 144.739 71.7559 144.996 71.8926C145.257 72.0293 145.546 72.0977 145.865 72.0977C146.191 72.0977 146.476 72.0423 146.72 71.9316C146.964 71.821 147.174 71.6582 147.35 71.4434L147.389 72H148.219V64.5H147.315V67.2393C147.143 67.0374 146.938 66.8844 146.7 66.7803C146.466 66.6729 146.191 66.6191 145.875 66.6191C145.553 66.6191 145.261 66.6859 145.001 66.8193C144.741 66.9528 144.519 67.1383 144.337 67.376C144.151 67.6136 144.008 67.8984 143.907 68.2305C143.81 68.5592 143.761 68.9206 143.761 69.3145ZM144.664 69.417V69.3145C144.664 69.0573 144.692 68.8132 144.747 68.582C144.802 68.3477 144.889 68.141 145.006 67.9619C145.12 67.7861 145.266 67.6462 145.445 67.542C145.628 67.4378 145.846 67.3857 146.1 67.3857C146.396 67.3857 146.643 67.4557 146.842 67.5957C147.04 67.7324 147.198 67.9082 147.315 68.123V70.5742C147.198 70.8053 147.04 70.9893 146.842 71.126C146.643 71.2627 146.393 71.3311 146.09 71.3311C145.839 71.3311 145.624 71.2806 145.445 71.1797C145.266 71.0755 145.12 70.9355 145.006 70.7598C144.889 70.584 144.802 70.3805 144.747 70.1494C144.692 69.9183 144.664 69.6742 144.664 69.417ZM152.271 72.0977C152.786 72.0977 153.217 71.9951 153.565 71.79C153.917 71.5817 154.181 71.3441 154.356 71.0771L153.805 70.6475C153.639 70.8623 153.43 71.0348 153.18 71.165C152.929 71.2952 152.643 71.3604 152.32 71.3604C152.076 71.3604 151.853 71.3148 151.651 71.2236C151.45 71.1325 151.277 71.0072 151.134 70.8477C150.994 70.6979 150.883 70.5254 150.802 70.3301C150.724 70.1348 150.673 69.9085 150.65 69.6514V69.6172H154.425V69.2119C154.425 68.8441 154.378 68.5023 154.283 68.1865C154.192 67.8708 154.052 67.5957 153.863 67.3613C153.674 67.1302 153.437 66.9495 153.15 66.8193C152.867 66.6859 152.535 66.6191 152.154 66.6191C151.852 66.6191 151.555 66.681 151.266 66.8047C150.979 66.9284 150.724 67.1058 150.499 67.3369C150.271 67.5713 150.089 67.8577 149.952 68.1963C149.815 68.5316 149.747 68.9124 149.747 69.3389V69.5439C149.747 69.9118 149.809 70.252 149.933 70.5645C150.056 70.877 150.229 71.1471 150.45 71.375C150.672 71.6029 150.937 71.7803 151.246 71.9072C151.559 72.0342 151.9 72.0977 152.271 72.0977ZM152.154 67.3613C152.385 67.3613 152.584 67.4036 152.75 67.4883C152.919 67.5729 153.059 67.6836 153.17 67.8203C153.281 67.957 153.367 68.1198 153.429 68.3086C153.491 68.4941 153.521 68.6683 153.521 68.8311V68.875H150.68C150.715 68.6309 150.777 68.416 150.865 68.2305C150.956 68.0417 151.067 67.8822 151.197 67.752C151.327 67.625 151.474 67.529 151.637 67.4639C151.799 67.3955 151.972 67.3613 152.154 67.3613ZM160.304 72V71.2627H156.734L158.644 69.1924C158.823 68.9971 158.992 68.8018 159.151 68.6064C159.314 68.4079 159.457 68.2077 159.581 68.0059C159.701 67.804 159.798 67.6006 159.869 67.3955C159.941 67.1872 159.977 66.9772 159.977 66.7656C159.977 66.4824 159.926 66.2204 159.825 65.9795C159.728 65.7386 159.586 65.5303 159.4 65.3545C159.215 65.1787 158.987 65.042 158.717 64.9443C158.45 64.8434 158.149 64.793 157.813 64.793C157.449 64.793 157.123 64.8516 156.837 64.9688C156.554 65.0859 156.314 65.2438 156.119 65.4424C155.921 65.641 155.769 65.8737 155.665 66.1406C155.561 66.4043 155.509 66.6859 155.509 66.9854H156.417C156.417 66.764 156.445 66.5638 156.5 66.3848C156.559 66.2057 156.646 66.0527 156.764 65.9258C156.878 65.8021 157.021 65.7061 157.193 65.6377C157.369 65.5693 157.576 65.5352 157.813 65.5352C158.009 65.5352 158.183 65.5693 158.336 65.6377C158.492 65.7028 158.626 65.7923 158.736 65.9062C158.844 66.0202 158.925 66.1553 158.98 66.3115C159.039 66.4645 159.068 66.6289 159.068 66.8047C159.068 66.9479 159.05 67.0879 159.015 67.2246C158.979 67.3581 158.919 67.4997 158.834 67.6494C158.749 67.8024 158.637 67.9684 158.497 68.1475C158.357 68.3265 158.183 68.5316 157.975 68.7627L155.646 71.3506V72H160.304ZM163.766 71.4141C163.766 71.6029 163.824 71.764 163.941 71.8975C164.062 72.0277 164.239 72.0928 164.474 72.0928C164.705 72.0928 164.882 72.0277 165.006 71.8975C165.13 71.7673 165.191 71.6061 165.191 71.4141C165.191 71.2188 165.13 71.0544 165.006 70.9209C164.885 70.7842 164.708 70.7158 164.474 70.7158C164.236 70.7158 164.059 70.7842 163.941 70.9209C163.824 71.0576 163.766 71.222 163.766 71.4141ZM163.766 67.1367C163.766 67.3255 163.824 67.4867 163.941 67.6201C164.062 67.7503 164.239 67.8154 164.474 67.8154C164.705 67.8154 164.882 67.7503 165.006 67.6201C165.13 67.4899 165.191 67.3288 165.191 67.1367C165.191 66.9414 165.13 66.777 165.006 66.6436C164.885 66.5068 164.708 66.4385 164.474 66.4385C164.236 66.4385 164.059 66.5068 163.941 66.6436C163.824 66.7803 163.766 66.9447 163.766 67.1367ZM178.321 72V71.2627H174.752L176.661 69.1924C176.84 68.9971 177.009 68.8018 177.169 68.6064C177.332 68.4079 177.475 68.2077 177.599 68.0059C177.719 67.804 177.815 67.6006 177.887 67.3955C177.958 67.1872 177.994 66.9772 177.994 66.7656C177.994 66.4824 177.944 66.2204 177.843 65.9795C177.745 65.7386 177.604 65.5303 177.418 65.3545C177.232 65.1787 177.005 65.042 176.734 64.9443C176.467 64.8434 176.166 64.793 175.831 64.793C175.466 64.793 175.141 64.8516 174.854 64.9688C174.571 65.0859 174.332 65.2438 174.137 65.4424C173.938 65.641 173.787 65.8737 173.683 66.1406C173.578 66.4043 173.526 66.6859 173.526 66.9854H174.435C174.435 66.764 174.462 66.5638 174.518 66.3848C174.576 66.2057 174.664 66.0527 174.781 65.9258C174.895 65.8021 175.038 65.7061 175.211 65.6377C175.387 65.5693 175.593 65.5352 175.831 65.5352C176.026 65.5352 176.201 65.5693 176.354 65.6377C176.51 65.7028 176.643 65.7923 176.754 65.9062C176.861 66.0202 176.943 66.1553 176.998 66.3115C177.057 66.4645 177.086 66.6289 177.086 66.8047C177.086 66.9479 177.068 67.0879 177.032 67.2246C176.996 67.3581 176.936 67.4997 176.852 67.6494C176.767 67.8024 176.655 67.9684 176.515 68.1475C176.375 68.3265 176.201 68.5316 175.992 68.7627L173.663 71.3506V72H178.321ZM186.7 73.2256L186.803 73.7871C187.122 73.7806 187.397 73.7074 187.628 73.5674C187.859 73.4274 188.051 73.2484 188.204 73.0303C188.354 72.8122 188.465 72.5697 188.536 72.3027C188.608 72.0391 188.644 71.777 188.644 71.5166V70.6914C188.644 70.4635 188.67 70.2666 188.722 70.1006C188.774 69.9346 188.854 69.7962 188.961 69.6855C189.072 69.5716 189.213 69.4886 189.386 69.4365C189.562 69.3812 189.767 69.3519 190.001 69.3486V68.6406C189.734 68.6406 189.505 68.6064 189.312 68.5381C189.124 68.4665 188.976 68.3542 188.868 68.2012C188.793 68.0938 188.736 67.9668 188.697 67.8203C188.661 67.6706 188.644 67.498 188.644 67.3027V66.4727C188.644 66.1992 188.606 65.9225 188.531 65.6426C188.46 65.3626 188.341 65.1104 188.175 64.8857C188.028 64.6872 187.841 64.526 187.613 64.4023C187.389 64.2786 187.118 64.2119 186.803 64.2021L186.705 64.7637C186.939 64.7702 187.125 64.8255 187.262 64.9297C187.398 65.0339 187.503 65.1657 187.574 65.3252C187.643 65.488 187.687 65.6702 187.706 65.8721C187.729 66.0739 187.74 66.2741 187.74 66.4727V67.3027C187.74 67.5566 187.778 67.7926 187.853 68.0107C187.927 68.2256 188.043 68.4144 188.199 68.5771C188.281 68.665 188.375 68.7448 188.482 68.8164C188.593 68.888 188.714 68.9499 188.844 69.002C188.717 69.054 188.6 69.1143 188.492 69.1826C188.388 69.251 188.294 69.3275 188.209 69.4121C188.049 69.5716 187.931 69.7604 187.853 69.9785C187.778 70.1966 187.74 70.4342 187.74 70.6914V71.5166C187.74 71.7184 187.722 71.9186 187.687 72.1172C187.654 72.319 187.599 72.4997 187.521 72.6592C187.439 72.8219 187.332 72.9554 187.198 73.0596C187.065 73.1637 186.899 73.2191 186.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M462.876 93.6491C463.234 93.4415 463.357 92.9827 463.149 92.6242L459.767 86.7826C459.56 86.4241 459.101 86.3018 458.742 86.5093C458.384 86.7168 458.261 87.1757 458.469 87.5342L461.475 92.7267L456.283 95.7329C455.924 95.9405 455.802 96.3993 456.009 96.7578C456.217 97.1163 456.676 97.2386 457.034 97.0311L462.876 93.6491ZM292 33.5C291.751 34.2074 291.751 34.2075 291.752 34.2078C291.753 34.208 291.754 34.2084 291.755 34.2089C291.758 34.2098 291.762 34.2112 291.767 34.2132C291.778 34.217 291.794 34.2227 291.816 34.2303C291.859 34.2455 291.924 34.2681 292.009 34.2981C292.179 34.3581 292.432 34.4473 292.764 34.5641C293.428 34.7977 294.405 35.1419 295.661 35.5843C298.173 36.469 301.798 37.7464 306.251 39.3166C315.157 42.4572 327.375 46.7696 340.625 51.457C367.126 60.8323 397.747 71.7061 414.244 77.7048L414.756 76.2952C398.253 70.2938 367.624 59.4177 341.125 50.0429C327.875 45.3553 315.656 41.0427 306.749 37.902C302.296 36.3317 298.671 35.0543 296.159 34.1695C294.903 33.7271 293.926 33.3829 293.262 33.1492C292.93 33.0324 292.677 32.9432 292.507 32.8832C292.422 32.8533 292.357 32.8306 292.314 32.8154C292.292 32.8078 292.276 32.8021 292.265 32.7982C292.26 32.7963 292.256 32.7949 292.253 32.7939C292.252 32.7935 292.251 32.7931 292.25 32.7929C292.249 32.7926 292.249 32.7925 292 33.5ZM414.244 77.7048C430.753 83.7082 442.763 87.7115 450.648 90.2149C454.591 91.4665 457.502 92.3432 459.43 92.9073C460.394 93.1894 461.111 93.3933 461.589 93.5269C461.828 93.5938 462.006 93.643 462.126 93.6756C462.185 93.6919 462.23 93.7041 462.26 93.7122C462.276 93.7163 462.287 93.7194 462.295 93.7214C462.298 93.7225 462.301 93.7233 462.303 93.7238C462.304 93.7241 462.305 93.7243 462.306 93.7244C462.306 93.7245 462.306 93.7246 462.306 93.7246C462.307 93.7246 462.307 93.7247 462.5 93C462.693 92.2753 462.693 92.2753 462.693 92.2753C462.693 92.2753 462.693 92.2753 462.693 92.2752C462.692 92.2751 462.692 92.275 462.691 92.2747C462.689 92.2743 462.687 92.2736 462.683 92.2727C462.676 92.2708 462.666 92.268 462.651 92.2641C462.623 92.2564 462.579 92.2446 462.521 92.2287C462.405 92.1969 462.229 92.1484 461.993 92.0824C461.521 91.9504 460.809 91.7481 459.851 91.4677C457.935 90.9068 455.034 90.0335 451.102 88.7852C443.237 86.2885 431.247 82.2919 414.756 76.2952L414.244 77.7048Z\"\n      fill=\"url(#paint0_linear_5_169)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M55.3473 229.369C55.5514 229.73 56.009 229.857 56.3695 229.653L62.2435 226.327C62.6039 226.123 62.7307 225.665 62.5266 225.305C62.3226 224.945 61.8649 224.818 61.5045 225.022L56.2832 227.978L53.3272 222.757C53.1231 222.396 52.6655 222.269 52.305 222.473C51.9446 222.677 51.8178 223.135 52.0219 223.496L55.3473 229.369ZM96.2772 80.7998L55.2772 228.8L56.7228 229.2L97.7228 81.2002L96.2772 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M142.45 231.538C142.747 231.827 143.222 231.82 143.511 231.524L148.221 226.688C148.51 226.392 148.503 225.917 148.207 225.628C147.91 225.339 147.435 225.345 147.146 225.642L142.96 229.94L138.662 225.753C138.365 225.464 137.89 225.471 137.601 225.767C137.312 226.064 137.318 226.539 137.615 226.828L142.45 231.538ZM140.25 81.0099L142.224 231.01L143.724 230.99L141.75 80.9901L140.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"223.5\"\n      y=\"86.5\"\n      width=\"184\"\n      height=\"203\"\n      stroke=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M255.775 73.7871L255.878 73.2256C255.676 73.2191 255.508 73.1637 255.375 73.0596C255.245 72.9554 255.141 72.8219 255.062 72.6592C254.981 72.4997 254.924 72.319 254.892 72.1172C254.859 71.9186 254.843 71.7184 254.843 71.5166V70.6914C254.84 70.304 254.748 69.9639 254.569 69.6709C254.39 69.3747 254.112 69.1517 253.734 69.002C254.112 68.849 254.39 68.626 254.569 68.333C254.752 68.0368 254.843 67.6934 254.843 67.3027V66.4727C254.843 66.2741 254.853 66.0739 254.872 65.8721C254.892 65.6702 254.937 65.488 255.009 65.3252C255.077 65.1657 255.18 65.0339 255.316 64.9297C255.456 64.8255 255.644 64.7702 255.878 64.7637L255.775 64.2021C255.447 64.2119 255.167 64.2835 254.936 64.417C254.704 64.5472 254.517 64.7165 254.374 64.9248C254.221 65.1429 254.109 65.3903 254.037 65.667C253.969 65.9404 253.935 66.209 253.935 66.4727V67.3027C253.935 67.7747 253.822 68.1165 253.598 68.3281C253.376 68.5365 253.036 68.6406 252.577 68.6406V69.3486C253.036 69.3519 253.376 69.4593 253.598 69.6709C253.822 69.8825 253.935 70.2227 253.935 70.6914V71.5166C253.935 71.777 253.972 72.0391 254.047 72.3027C254.122 72.5697 254.232 72.8105 254.379 73.0254C254.532 73.25 254.724 73.4307 254.955 73.5674C255.186 73.7041 255.46 73.7773 255.775 73.7871ZM263.861 72H264.765V68.2109C264.826 68.097 264.898 67.9928 264.979 67.8984C265.064 67.804 265.155 67.721 265.253 67.6494C265.373 67.568 265.505 67.5046 265.648 67.459C265.792 67.4102 265.946 67.3857 266.112 67.3857C266.304 67.3857 266.474 67.4085 266.62 67.4541C266.77 67.4997 266.897 67.5729 267.001 67.6738C267.102 67.7747 267.178 67.9066 267.23 68.0693C267.283 68.2321 267.309 68.4307 267.309 68.665V72H268.212V68.6455C268.212 68.2939 268.168 67.9912 268.08 67.7373C267.995 67.4801 267.873 67.2686 267.714 67.1025C267.554 66.9365 267.361 66.8145 267.133 66.7363C266.908 66.6582 266.658 66.6191 266.381 66.6191C266.176 66.6224 265.98 66.6533 265.795 66.7119C265.613 66.7673 265.443 66.847 265.287 66.9512C265.183 67.0195 265.084 67.1009 264.989 67.1953C264.898 67.2865 264.813 67.3874 264.735 67.498L264.672 66.7168H263.861V72ZM269.613 69.3096V69.417C269.613 69.7979 269.669 70.151 269.779 70.4766C269.89 70.8021 270.049 71.0853 270.258 71.3262C270.463 71.5671 270.714 71.7559 271.01 71.8926C271.309 72.0293 271.646 72.0977 272.021 72.0977C272.392 72.0977 272.725 72.0293 273.021 71.8926C273.318 71.7559 273.57 71.5671 273.778 71.3262C273.983 71.0853 274.141 70.8021 274.252 70.4766C274.363 70.151 274.418 69.7979 274.418 69.417V69.3096C274.418 68.9287 274.363 68.5755 274.252 68.25C274.141 67.9212 273.983 67.6364 273.778 67.3955C273.57 67.1546 273.316 66.9658 273.017 66.8291C272.72 66.6891 272.385 66.6191 272.011 66.6191C271.64 66.6191 271.306 66.6891 271.01 66.8291C270.714 66.9658 270.463 67.1546 270.258 67.3955C270.049 67.6364 269.89 67.9212 269.779 68.25C269.669 68.5755 269.613 68.9287 269.613 69.3096ZM270.517 69.417V69.3096C270.517 69.0524 270.548 68.8066 270.609 68.5723C270.671 68.3346 270.766 68.1263 270.893 67.9473C271.016 67.7682 271.171 67.6266 271.356 67.5225C271.542 67.415 271.76 67.3613 272.011 67.3613C272.261 67.3613 272.479 67.415 272.665 67.5225C272.854 67.6266 273.012 67.7682 273.139 67.9473C273.262 68.1263 273.355 68.3346 273.417 68.5723C273.482 68.8066 273.515 69.0524 273.515 69.3096V69.417C273.515 69.6774 273.484 69.9264 273.422 70.1641C273.36 70.3984 273.267 70.6051 273.144 70.7842C273.017 70.9632 272.859 71.1048 272.67 71.209C272.484 71.3132 272.268 71.3652 272.021 71.3652C271.77 71.3652 271.55 71.3132 271.361 71.209C271.173 71.1048 271.016 70.9632 270.893 70.7842C270.766 70.6051 270.671 70.3984 270.609 70.1641C270.548 69.9264 270.517 69.6774 270.517 69.417ZM275.702 69.3145V69.417C275.702 69.7946 275.753 70.1478 275.854 70.4766C275.954 70.8021 276.096 71.0853 276.278 71.3262C276.461 71.5671 276.68 71.7559 276.938 71.8926C277.198 72.0293 277.488 72.0977 277.807 72.0977C278.132 72.0977 278.417 72.0423 278.661 71.9316C278.905 71.821 279.115 71.6582 279.291 71.4434L279.33 72H280.16V64.5H279.257V67.2393C279.084 67.0374 278.879 66.8844 278.642 66.7803C278.407 66.6729 278.132 66.6191 277.816 66.6191C277.494 66.6191 277.203 66.6859 276.942 66.8193C276.682 66.9528 276.461 67.1383 276.278 67.376C276.093 67.6136 275.95 67.8984 275.849 68.2305C275.751 68.5592 275.702 68.9206 275.702 69.3145ZM276.605 69.417V69.3145C276.605 69.0573 276.633 68.8132 276.688 68.582C276.744 68.3477 276.83 68.141 276.947 67.9619C277.061 67.7861 277.208 67.6462 277.387 67.542C277.569 67.4378 277.787 67.3857 278.041 67.3857C278.337 67.3857 278.585 67.4557 278.783 67.5957C278.982 67.7324 279.14 67.9082 279.257 68.123V70.5742C279.14 70.8053 278.982 70.9893 278.783 71.126C278.585 71.2627 278.334 71.3311 278.031 71.3311C277.781 71.3311 277.566 71.2806 277.387 71.1797C277.208 71.0755 277.061 70.9355 276.947 70.7598C276.83 70.584 276.744 70.3805 276.688 70.1494C276.633 69.9183 276.605 69.6742 276.605 69.417ZM284.213 72.0977C284.727 72.0977 285.159 71.9951 285.507 71.79C285.858 71.5817 286.122 71.3441 286.298 71.0771L285.746 70.6475C285.58 70.8623 285.372 71.0348 285.121 71.165C284.87 71.2952 284.584 71.3604 284.262 71.3604C284.018 71.3604 283.795 71.3148 283.593 71.2236C283.391 71.1325 283.218 71.0072 283.075 70.8477C282.935 70.6979 282.825 70.5254 282.743 70.3301C282.665 70.1348 282.615 69.9085 282.592 69.6514V69.6172H286.366V69.2119C286.366 68.8441 286.319 68.5023 286.225 68.1865C286.133 67.8708 285.993 67.5957 285.805 67.3613C285.616 67.1302 285.378 66.9495 285.092 66.8193C284.809 66.6859 284.477 66.6191 284.096 66.6191C283.793 66.6191 283.497 66.681 283.207 66.8047C282.921 66.9284 282.665 67.1058 282.44 67.3369C282.213 67.5713 282.03 67.8577 281.894 68.1963C281.757 68.5316 281.688 68.9124 281.688 69.3389V69.5439C281.688 69.9118 281.75 70.252 281.874 70.5645C281.998 70.877 282.17 71.1471 282.392 71.375C282.613 71.6029 282.878 71.7803 283.188 71.9072C283.5 72.0342 283.842 72.0977 284.213 72.0977ZM284.096 67.3613C284.327 67.3613 284.525 67.4036 284.691 67.4883C284.861 67.5729 285.001 67.6836 285.111 67.8203C285.222 67.957 285.308 68.1198 285.37 68.3086C285.432 68.4941 285.463 68.6683 285.463 68.8311V68.875H282.621C282.657 68.6309 282.719 68.416 282.807 68.2305C282.898 68.0417 283.008 67.8822 283.139 67.752C283.269 67.625 283.415 67.529 283.578 67.4639C283.741 67.3955 283.913 67.3613 284.096 67.3613ZM290.814 72V64.8906H290.741L288.051 65.9258V66.751L289.911 66.043V72H290.814ZM295.707 71.4141C295.707 71.6029 295.766 71.764 295.883 71.8975C296.003 72.0277 296.181 72.0928 296.415 72.0928C296.646 72.0928 296.824 72.0277 296.947 71.8975C297.071 71.7673 297.133 71.6061 297.133 71.4141C297.133 71.2188 297.071 71.0544 296.947 70.9209C296.827 70.7842 296.649 70.7158 296.415 70.7158C296.177 70.7158 296 70.7842 295.883 70.9209C295.766 71.0576 295.707 71.222 295.707 71.4141ZM295.707 67.1367C295.707 67.3255 295.766 67.4867 295.883 67.6201C296.003 67.7503 296.181 67.8154 296.415 67.8154C296.646 67.8154 296.824 67.7503 296.947 67.6201C297.071 67.4899 297.133 67.3288 297.133 67.1367C297.133 66.9414 297.071 66.777 296.947 66.6436C296.827 66.5068 296.649 66.4385 296.415 66.4385C296.177 66.4385 296 66.5068 295.883 66.6436C295.766 66.7803 295.707 66.9447 295.707 67.1367ZM306.957 68.0107V68.7432H307.602C307.826 68.7432 308.031 68.7692 308.217 68.8213C308.406 68.8734 308.567 68.9531 308.7 69.0605C308.83 69.168 308.931 69.3031 309.003 69.4658C309.078 69.6253 309.115 69.8158 309.115 70.0371C309.115 70.2617 309.083 70.457 309.018 70.623C308.956 70.7858 308.866 70.9225 308.749 71.0332C308.632 71.1439 308.49 71.2269 308.324 71.2822C308.158 71.3343 307.973 71.3604 307.768 71.3604C307.562 71.3604 307.375 71.3311 307.206 71.2725C307.04 71.2139 306.898 71.1309 306.781 71.0234C306.664 70.916 306.573 70.7858 306.508 70.6328C306.446 70.4798 306.415 70.3105 306.415 70.125H305.512C305.512 70.4375 305.57 70.7158 305.688 70.96C305.808 71.2041 305.969 71.4108 306.171 71.5801C306.373 71.7493 306.61 71.8779 306.884 71.9658C307.16 72.0537 307.455 72.0977 307.768 72.0977C308.087 72.0977 308.383 72.0521 308.656 71.9609C308.933 71.8665 309.172 71.7298 309.374 71.5508C309.576 71.375 309.734 71.1585 309.848 70.9014C309.962 70.6442 310.019 70.3496 310.019 70.0176C310.019 69.8548 309.999 69.6904 309.96 69.5244C309.924 69.3584 309.861 69.2005 309.77 69.0508C309.675 68.901 309.55 68.766 309.394 68.6455C309.241 68.5251 309.049 68.4274 308.817 68.3525C309.009 68.2712 309.174 68.1702 309.311 68.0498C309.451 67.9261 309.564 67.7943 309.652 67.6543C309.74 67.5176 309.805 67.376 309.848 67.2295C309.89 67.083 309.911 66.9414 309.911 66.8047C309.911 66.4759 309.859 66.1862 309.755 65.9355C309.651 65.6849 309.504 65.4749 309.315 65.3057C309.127 65.1364 308.9 65.0094 308.637 64.9248C308.373 64.8369 308.082 64.793 307.763 64.793C307.434 64.793 307.134 64.8451 306.864 64.9492C306.597 65.0501 306.368 65.1885 306.176 65.3643C305.984 65.5433 305.834 65.7533 305.727 65.9941C305.622 66.2318 305.57 66.4857 305.57 66.7559H306.479C306.479 66.5703 306.509 66.4027 306.571 66.2529C306.633 66.1032 306.721 65.9746 306.835 65.8672C306.946 65.7598 307.079 65.6784 307.235 65.623C307.395 65.5645 307.571 65.5352 307.763 65.5352C307.961 65.5352 308.137 65.5612 308.29 65.6133C308.446 65.6621 308.576 65.737 308.681 65.8379C308.788 65.9421 308.869 66.0739 308.925 66.2334C308.98 66.3896 309.008 66.5736 309.008 66.7852C309.008 66.9642 308.977 67.1286 308.915 67.2783C308.853 67.4281 308.764 67.5566 308.646 67.6641C308.526 67.7715 308.378 67.8561 308.202 67.918C308.03 67.9798 307.829 68.0107 307.602 68.0107H306.957ZM314.198 71.79V70.9307H313.217V71.8047C313.217 72.0814 313.184 72.3483 313.119 72.6055C313.054 72.8626 312.943 73.1051 312.787 73.333L313.349 73.6406C313.609 73.4095 313.816 73.1247 313.969 72.7861C314.122 72.4476 314.198 72.1156 314.198 71.79ZM323.92 72H324.823V68.2109C324.885 68.097 324.957 67.9928 325.038 67.8984C325.123 67.804 325.214 67.721 325.312 67.6494C325.432 67.568 325.564 67.5046 325.707 67.459C325.85 67.4102 326.005 67.3857 326.171 67.3857C326.363 67.3857 326.532 67.4085 326.679 67.4541C326.828 67.4997 326.955 67.5729 327.06 67.6738C327.16 67.7747 327.237 67.9066 327.289 68.0693C327.341 68.2321 327.367 68.4307 327.367 68.665V72H328.271V68.6455C328.271 68.2939 328.227 67.9912 328.139 67.7373C328.054 67.4801 327.932 67.2686 327.772 67.1025C327.613 66.9365 327.419 66.8145 327.191 66.7363C326.967 66.6582 326.716 66.6191 326.439 66.6191C326.234 66.6224 326.039 66.6533 325.854 66.7119C325.671 66.7673 325.502 66.847 325.346 66.9512C325.242 67.0195 325.142 67.1009 325.048 67.1953C324.957 67.2865 324.872 67.3874 324.794 67.498L324.73 66.7168H323.92V72ZM329.672 69.3096V69.417C329.672 69.7979 329.727 70.151 329.838 70.4766C329.949 70.8021 330.108 71.0853 330.316 71.3262C330.521 71.5671 330.772 71.7559 331.068 71.8926C331.368 72.0293 331.705 72.0977 332.079 72.0977C332.45 72.0977 332.784 72.0293 333.08 71.8926C333.376 71.7559 333.629 71.5671 333.837 71.3262C334.042 71.0853 334.2 70.8021 334.311 70.4766C334.421 70.151 334.477 69.7979 334.477 69.417V69.3096C334.477 68.9287 334.421 68.5755 334.311 68.25C334.2 67.9212 334.042 67.6364 333.837 67.3955C333.629 67.1546 333.375 66.9658 333.075 66.8291C332.779 66.6891 332.444 66.6191 332.069 66.6191C331.698 66.6191 331.365 66.6891 331.068 66.8291C330.772 66.9658 330.521 67.1546 330.316 67.3955C330.108 67.6364 329.949 67.9212 329.838 68.25C329.727 68.5755 329.672 68.9287 329.672 69.3096ZM330.575 69.417V69.3096C330.575 69.0524 330.606 68.8066 330.668 68.5723C330.73 68.3346 330.824 68.1263 330.951 67.9473C331.075 67.7682 331.229 67.6266 331.415 67.5225C331.601 67.415 331.819 67.3613 332.069 67.3613C332.32 67.3613 332.538 67.415 332.724 67.5225C332.912 67.6266 333.07 67.7682 333.197 67.9473C333.321 68.1263 333.414 68.3346 333.476 68.5723C333.541 68.8066 333.573 69.0524 333.573 69.3096V69.417C333.573 69.6774 333.542 69.9264 333.48 70.1641C333.419 70.3984 333.326 70.6051 333.202 70.7842C333.075 70.9632 332.917 71.1048 332.729 71.209C332.543 71.3132 332.326 71.3652 332.079 71.3652C331.828 71.3652 331.609 71.3132 331.42 71.209C331.231 71.1048 331.075 70.9632 330.951 70.7842C330.824 70.6051 330.73 70.3984 330.668 70.1641C330.606 69.9264 330.575 69.6774 330.575 69.417ZM335.761 69.3145V69.417C335.761 69.7946 335.811 70.1478 335.912 70.4766C336.013 70.8021 336.155 71.0853 336.337 71.3262C336.519 71.5671 336.739 71.7559 336.996 71.8926C337.257 72.0293 337.546 72.0977 337.865 72.0977C338.191 72.0977 338.476 72.0423 338.72 71.9316C338.964 71.821 339.174 71.6582 339.35 71.4434L339.389 72H340.219V64.5H339.315V67.2393C339.143 67.0374 338.938 66.8844 338.7 66.7803C338.466 66.6729 338.191 66.6191 337.875 66.6191C337.553 66.6191 337.261 66.6859 337.001 66.8193C336.741 66.9528 336.519 67.1383 336.337 67.376C336.151 67.6136 336.008 67.8984 335.907 68.2305C335.81 68.5592 335.761 68.9206 335.761 69.3145ZM336.664 69.417V69.3145C336.664 69.0573 336.692 68.8132 336.747 68.582C336.802 68.3477 336.889 68.141 337.006 67.9619C337.12 67.7861 337.266 67.6462 337.445 67.542C337.628 67.4378 337.846 67.3857 338.1 67.3857C338.396 67.3857 338.643 67.4557 338.842 67.5957C339.04 67.7324 339.198 67.9082 339.315 68.123V70.5742C339.198 70.8053 339.04 70.9893 338.842 71.126C338.643 71.2627 338.393 71.3311 338.09 71.3311C337.839 71.3311 337.624 71.2806 337.445 71.1797C337.266 71.0755 337.12 70.9355 337.006 70.7598C336.889 70.584 336.802 70.3805 336.747 70.1494C336.692 69.9183 336.664 69.6742 336.664 69.417ZM344.271 72.0977C344.786 72.0977 345.217 71.9951 345.565 71.79C345.917 71.5817 346.181 71.3441 346.356 71.0771L345.805 70.6475C345.639 70.8623 345.43 71.0348 345.18 71.165C344.929 71.2952 344.643 71.3604 344.32 71.3604C344.076 71.3604 343.853 71.3148 343.651 71.2236C343.45 71.1325 343.277 71.0072 343.134 70.8477C342.994 70.6979 342.883 70.5254 342.802 70.3301C342.724 70.1348 342.673 69.9085 342.65 69.6514V69.6172H346.425V69.2119C346.425 68.8441 346.378 68.5023 346.283 68.1865C346.192 67.8708 346.052 67.5957 345.863 67.3613C345.674 67.1302 345.437 66.9495 345.15 66.8193C344.867 66.6859 344.535 66.6191 344.154 66.6191C343.852 66.6191 343.555 66.681 343.266 66.8047C342.979 66.9284 342.724 67.1058 342.499 67.3369C342.271 67.5713 342.089 67.8577 341.952 68.1963C341.815 68.5316 341.747 68.9124 341.747 69.3389V69.5439C341.747 69.9118 341.809 70.252 341.933 70.5645C342.056 70.877 342.229 71.1471 342.45 71.375C342.672 71.6029 342.937 71.7803 343.246 71.9072C343.559 72.0342 343.9 72.0977 344.271 72.0977ZM344.154 67.3613C344.385 67.3613 344.584 67.4036 344.75 67.4883C344.919 67.5729 345.059 67.6836 345.17 67.8203C345.281 67.957 345.367 68.1198 345.429 68.3086C345.491 68.4941 345.521 68.6683 345.521 68.8311V68.875H342.68C342.715 68.6309 342.777 68.416 342.865 68.2305C342.956 68.0417 343.067 67.8822 343.197 67.752C343.327 67.625 343.474 67.529 343.637 67.4639C343.799 67.3955 343.972 67.3613 344.154 67.3613ZM352.304 72V71.2627H348.734L350.644 69.1924C350.823 68.9971 350.992 68.8018 351.151 68.6064C351.314 68.4079 351.457 68.2077 351.581 68.0059C351.701 67.804 351.798 67.6006 351.869 67.3955C351.941 67.1872 351.977 66.9772 351.977 66.7656C351.977 66.4824 351.926 66.2204 351.825 65.9795C351.728 65.7386 351.586 65.5303 351.4 65.3545C351.215 65.1787 350.987 65.042 350.717 64.9443C350.45 64.8434 350.149 64.793 349.813 64.793C349.449 64.793 349.123 64.8516 348.837 64.9688C348.554 65.0859 348.314 65.2438 348.119 65.4424C347.921 65.641 347.769 65.8737 347.665 66.1406C347.561 66.4043 347.509 66.6859 347.509 66.9854H348.417C348.417 66.764 348.445 66.5638 348.5 66.3848C348.559 66.2057 348.646 66.0527 348.764 65.9258C348.878 65.8021 349.021 65.7061 349.193 65.6377C349.369 65.5693 349.576 65.5352 349.813 65.5352C350.009 65.5352 350.183 65.5693 350.336 65.6377C350.492 65.7028 350.626 65.7923 350.736 65.9062C350.844 66.0202 350.925 66.1553 350.98 66.3115C351.039 66.4645 351.068 66.6289 351.068 66.8047C351.068 66.9479 351.05 67.0879 351.015 67.2246C350.979 67.3581 350.919 67.4997 350.834 67.6494C350.749 67.8024 350.637 67.9684 350.497 68.1475C350.357 68.3265 350.183 68.5316 349.975 68.7627L347.646 71.3506V72H352.304ZM355.766 71.4141C355.766 71.6029 355.824 71.764 355.941 71.8975C356.062 72.0277 356.239 72.0928 356.474 72.0928C356.705 72.0928 356.882 72.0277 357.006 71.8975C357.13 71.7673 357.191 71.6061 357.191 71.4141C357.191 71.2188 357.13 71.0544 357.006 70.9209C356.885 70.7842 356.708 70.7158 356.474 70.7158C356.236 70.7158 356.059 70.7842 355.941 70.9209C355.824 71.0576 355.766 71.222 355.766 71.4141ZM355.766 67.1367C355.766 67.3255 355.824 67.4867 355.941 67.6201C356.062 67.7503 356.239 67.8154 356.474 67.8154C356.705 67.8154 356.882 67.7503 357.006 67.6201C357.13 67.4899 357.191 67.3288 357.191 67.1367C357.191 66.9414 357.13 66.777 357.006 66.6436C356.885 66.5068 356.708 66.4385 356.474 66.4385C356.236 66.4385 356.059 66.5068 355.941 66.6436C355.824 66.7803 355.766 66.9447 355.766 67.1367ZM369.623 69.6123V64.8906H368.661L365.478 69.8174V70.3496H368.72V72H369.623V70.3496H370.614V69.6123H369.623ZM366.479 69.6123L368.573 66.3652L368.72 66.0918V69.6123H366.479ZM378.7 73.2256L378.803 73.7871C379.122 73.7806 379.397 73.7074 379.628 73.5674C379.859 73.4274 380.051 73.2484 380.204 73.0303C380.354 72.8122 380.465 72.5697 380.536 72.3027C380.608 72.0391 380.644 71.777 380.644 71.5166V70.6914C380.644 70.4635 380.67 70.2666 380.722 70.1006C380.774 69.9346 380.854 69.7962 380.961 69.6855C381.072 69.5716 381.213 69.4886 381.386 69.4365C381.562 69.3812 381.767 69.3519 382.001 69.3486V68.6406C381.734 68.6406 381.505 68.6064 381.312 68.5381C381.124 68.4665 380.976 68.3542 380.868 68.2012C380.793 68.0938 380.736 67.9668 380.697 67.8203C380.661 67.6706 380.644 67.498 380.644 67.3027V66.4727C380.644 66.1992 380.606 65.9225 380.531 65.6426C380.46 65.3626 380.341 65.1104 380.175 64.8857C380.028 64.6872 379.841 64.526 379.613 64.4023C379.389 64.2786 379.118 64.2119 378.803 64.2021L378.705 64.7637C378.939 64.7702 379.125 64.8255 379.262 64.9297C379.398 65.0339 379.503 65.1657 379.574 65.3252C379.643 65.488 379.687 65.6702 379.706 65.8721C379.729 66.0739 379.74 66.2741 379.74 66.4727V67.3027C379.74 67.5566 379.778 67.7926 379.853 68.0107C379.927 68.2256 380.043 68.4144 380.199 68.5771C380.281 68.665 380.375 68.7448 380.482 68.8164C380.593 68.888 380.714 68.9499 380.844 69.002C380.717 69.054 380.6 69.1143 380.492 69.1826C380.388 69.251 380.294 69.3275 380.209 69.4121C380.049 69.5716 379.931 69.7604 379.853 69.9785C379.778 70.1966 379.74 70.4342 379.74 70.6914V71.5166C379.74 71.7184 379.722 71.9186 379.687 72.1172C379.654 72.319 379.599 72.4997 379.521 72.6592C379.439 72.8219 379.332 72.9554 379.198 73.0596C379.065 73.1637 378.899 73.2191 378.7 73.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M252.347 229.369C252.551 229.73 253.009 229.857 253.369 229.653L259.243 226.327C259.604 226.123 259.731 225.665 259.527 225.305C259.323 224.945 258.865 224.818 258.504 225.022L253.283 227.978L250.327 222.757C250.123 222.396 249.665 222.269 249.305 222.473C248.945 222.677 248.818 223.135 249.022 223.496L252.347 229.369ZM293.277 80.7998L252.277 228.8L253.723 229.2L294.723 81.2002L293.277 80.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M339.45 231.538C339.747 231.827 340.222 231.82 340.511 231.524L345.221 226.688C345.51 226.392 345.503 225.917 345.207 225.628C344.91 225.339 344.435 225.345 344.146 225.642L339.96 229.94L335.662 225.753C335.365 225.464 334.89 225.471 334.601 225.767C334.312 226.064 334.318 226.539 334.615 226.828L339.45 231.538ZM337.25 81.0099L339.224 231.01L340.724 230.99L338.75 80.9901L337.25 81.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M157.263 61.7115C156.87 61.5805 156.658 61.1558 156.788 60.7628L158.923 54.3592C159.054 53.9663 159.479 53.7539 159.872 53.8849C160.265 54.0159 160.477 54.4406 160.346 54.8336L158.449 60.5257L164.141 62.423C164.534 62.554 164.746 62.9788 164.615 63.3717C164.484 63.7647 164.059 63.977 163.666 63.8461L157.263 61.7115ZM339.174 60.6709C339.356 61.0431 339.201 61.4922 338.829 61.6739L332.764 64.6361C332.392 64.8178 331.943 64.6635 331.761 64.2913C331.579 63.9191 331.733 63.47 332.106 63.2882L337.497 60.6552L334.864 55.2638C334.682 54.8916 334.837 54.4425 335.209 54.2607C335.581 54.079 336.03 54.2333 336.212 54.6055L339.174 60.6709ZM157.5 61C157.165 60.3292 157.165 60.329 157.165 60.3288C157.166 60.3286 157.166 60.3283 157.167 60.328C157.168 60.3274 157.17 60.3265 157.172 60.3254C157.177 60.3231 157.183 60.3199 157.192 60.3156C157.209 60.3072 157.234 60.2948 157.267 60.2787C157.333 60.2464 157.431 60.199 157.56 60.1375C157.819 60.0145 158.202 59.8351 158.707 59.6074C159.717 59.1519 161.211 58.503 163.159 57.7253C167.056 56.1699 172.768 54.0988 180.045 52.0286C194.598 47.8884 215.418 43.75 240.5 43.75L240.5 45.25C215.582 45.25 194.902 49.3616 180.455 53.4714C173.232 55.5262 167.569 57.5801 163.716 59.1184C161.789 59.8876 160.315 60.5278 159.324 60.9747C158.829 61.1981 158.455 61.3732 158.205 61.4919C158.08 61.5513 157.987 61.5965 157.925 61.6267C157.894 61.6418 157.871 61.6531 157.856 61.6605C157.849 61.6642 157.843 61.6669 157.84 61.6686C157.838 61.6695 157.837 61.6701 157.836 61.6705C157.836 61.6706 157.836 61.6707 157.835 61.6708C157.835 61.6709 157.835 61.6708 157.5 61ZM240.5 43.75C265.576 43.75 290.135 47.8866 308.415 52.0185C317.558 54.0849 325.136 56.1516 330.43 57.7021C333.077 58.4774 335.153 59.1238 336.568 59.5767C337.276 59.8031 337.819 59.9813 338.185 60.1029C338.368 60.1638 338.507 60.2105 338.601 60.2422C338.648 60.258 338.683 60.27 338.707 60.2782C338.719 60.2822 338.728 60.2853 338.734 60.2874C338.737 60.2885 338.74 60.2893 338.741 60.2898C338.742 60.2901 338.743 60.2903 338.743 60.2905C338.744 60.2906 338.744 60.2907 338.5 61C338.256 61.7093 338.256 61.7092 338.256 61.7092C338.256 61.709 338.255 61.7089 338.254 61.7087C338.253 61.7082 338.251 61.7075 338.248 61.7066C338.243 61.7047 338.234 61.7018 338.223 61.6979C338.2 61.6902 338.166 61.6786 338.121 61.6632C338.029 61.6324 337.893 61.5865 337.712 61.5264C337.351 61.4064 336.814 61.2301 336.111 61.0053C334.707 60.5559 332.642 59.9132 330.008 59.1416C324.739 57.5984 317.192 55.5401 308.085 53.4815C289.865 49.3634 265.424 45.25 240.5 45.25L240.5 43.75Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M199.49 30.1775V27.625H198.722V34H199.49V30.7378C199.545 30.6493 199.608 30.569 199.677 30.4971C199.749 30.4224 199.826 30.3573 199.909 30.302C200.014 30.2301 200.129 30.1747 200.254 30.136C200.378 30.0972 200.51 30.0779 200.648 30.0779C200.817 30.0751 200.966 30.0986 201.096 30.1484C201.226 30.1955 201.334 30.2674 201.42 30.3643C201.5 30.4528 201.561 30.5649 201.603 30.7004C201.644 30.8333 201.665 30.9882 201.665 31.1653V34H202.433V31.1736C202.433 30.872 202.395 30.6119 202.321 30.3933C202.249 30.172 202.145 29.9893 202.009 29.8455C201.874 29.7016 201.709 29.5964 201.515 29.53C201.324 29.4609 201.111 29.4263 200.876 29.4263C200.696 29.429 200.526 29.4553 200.366 29.5051C200.208 29.5549 200.063 29.6283 199.93 29.7251C199.847 29.7832 199.768 29.851 199.693 29.9285C199.619 30.0032 199.551 30.0862 199.49 30.1775ZM206.778 34H207.579V33.9336C207.529 33.8091 207.491 33.6638 207.463 33.4978C207.435 33.329 207.421 33.1699 207.421 33.0205V30.9329C207.421 30.6811 207.376 30.4611 207.284 30.2729C207.193 30.0848 207.069 29.9271 206.911 29.7998C206.75 29.6753 206.561 29.5826 206.342 29.5217C206.124 29.4581 205.887 29.4263 205.633 29.4263C205.353 29.4263 205.103 29.465 204.881 29.5425C204.663 29.62 204.477 29.7209 204.325 29.8455C204.17 29.9727 204.051 30.1152 203.968 30.2729C203.888 30.4307 203.847 30.5911 203.844 30.7544H204.616C204.616 30.6603 204.638 30.5704 204.682 30.4846C204.729 30.3961 204.794 30.32 204.877 30.2563C204.96 30.1927 205.061 30.1415 205.18 30.1028C205.302 30.064 205.439 30.0447 205.591 30.0447C205.754 30.0447 205.901 30.0654 206.031 30.1069C206.164 30.1484 206.276 30.2065 206.367 30.2812C206.458 30.3587 206.529 30.4514 206.579 30.5593C206.629 30.6672 206.654 30.789 206.654 30.9246V31.2773H205.815C205.503 31.2773 205.219 31.3078 204.964 31.3687C204.713 31.4295 204.497 31.5208 204.317 31.6426C204.137 31.7671 203.997 31.922 203.898 32.1074C203.801 32.2928 203.752 32.5086 203.752 32.7549C203.752 32.943 203.788 33.1187 203.86 33.282C203.935 33.4425 204.04 33.5808 204.176 33.697C204.309 33.816 204.47 33.9101 204.661 33.9792C204.855 34.0484 205.071 34.083 205.309 34.083C205.455 34.083 205.594 34.0678 205.724 34.0374C205.854 34.0069 205.977 33.9654 206.093 33.9128C206.207 33.8603 206.31 33.7994 206.405 33.7302C206.501 33.6611 206.589 33.5877 206.666 33.5103C206.674 33.6043 206.687 33.6956 206.703 33.7842C206.723 33.87 206.748 33.9419 206.778 34ZM205.421 33.4148C205.271 33.4148 205.14 33.3954 205.027 33.3567C204.913 33.318 204.819 33.264 204.744 33.1948C204.67 33.1284 204.613 33.0482 204.574 32.9541C204.538 32.86 204.52 32.7576 204.52 32.647C204.52 32.5308 204.541 32.427 204.583 32.3357C204.627 32.2444 204.69 32.1655 204.773 32.0991C204.89 32.005 205.046 31.9359 205.242 31.8916C205.442 31.8446 205.674 31.821 205.94 31.821H206.654V32.73C206.609 32.8185 206.548 32.9043 206.471 32.9873C206.393 33.0675 206.302 33.1395 206.197 33.2031C206.089 33.2668 205.97 33.318 205.84 33.3567C205.71 33.3954 205.57 33.4148 205.421 33.4148ZM211.916 32.8088C211.916 32.8808 211.902 32.9486 211.875 33.0122C211.847 33.0758 211.807 33.134 211.754 33.1865C211.669 33.2723 211.55 33.3401 211.397 33.3899C211.245 33.4369 211.067 33.4604 210.862 33.4604C210.732 33.4604 210.601 33.4466 210.468 33.4189C210.335 33.3913 210.215 33.3442 210.107 33.2778C209.996 33.2114 209.903 33.1243 209.829 33.0164C209.757 32.9084 209.715 32.7756 209.704 32.6179H208.936C208.936 32.8088 208.979 32.9928 209.065 33.1699C209.153 33.347 209.281 33.502 209.447 33.6348C209.61 33.7703 209.811 33.8796 210.049 33.9626C210.287 34.0429 210.558 34.083 210.862 34.083C211.128 34.083 211.373 34.0512 211.597 33.9875C211.821 33.9239 212.013 33.834 212.174 33.7178C212.334 33.6016 212.459 33.4618 212.547 33.2986C212.638 33.1353 212.684 32.9541 212.684 32.7549C212.684 32.5695 212.644 32.4062 212.564 32.2651C212.486 32.124 212.373 31.9995 212.223 31.8916C212.074 31.7865 211.89 31.6965 211.671 31.6218C211.453 31.5444 211.205 31.4766 210.928 31.4185C210.718 31.377 210.544 31.3341 210.406 31.2898C210.27 31.2455 210.162 31.1957 210.082 31.1404C209.999 31.085 209.941 31.0228 209.907 30.9536C209.874 30.8844 209.858 30.8056 209.858 30.717C209.858 30.6313 209.878 30.5483 209.92 30.468C209.961 30.3878 210.024 30.3172 210.107 30.2563C210.187 30.1955 210.288 30.1471 210.41 30.1111C210.534 30.0751 210.678 30.0571 210.841 30.0571C210.999 30.0571 211.14 30.0793 211.265 30.1235C211.392 30.1678 211.5 30.2259 211.588 30.2979C211.677 30.3698 211.746 30.4528 211.796 30.5469C211.846 30.6382 211.871 30.7323 211.871 30.8291H212.638C212.638 30.6326 212.596 30.45 212.51 30.2812C212.427 30.1097 212.308 29.9603 212.153 29.833C211.998 29.7057 211.81 29.6061 211.588 29.5342C211.367 29.4622 211.118 29.4263 210.841 29.4263C210.584 29.4263 210.347 29.4609 210.132 29.53C209.919 29.5992 209.735 29.6933 209.58 29.8123C209.425 29.9312 209.304 30.071 209.219 30.2314C209.133 30.3892 209.09 30.5593 209.09 30.7419C209.09 30.9273 209.131 31.0906 209.214 31.2317C209.297 31.37 209.415 31.4904 209.567 31.5928C209.717 31.6979 209.896 31.7878 210.107 31.8625C210.32 31.9373 210.555 32.0009 210.812 32.0535C211.023 32.095 211.198 32.142 211.339 32.1946C211.48 32.2444 211.594 32.2997 211.68 32.3606C211.765 32.4215 211.826 32.4893 211.862 32.564C211.898 32.6359 211.916 32.7175 211.916 32.8088ZM221.055 33.4604C220.815 33.4604 220.613 33.4134 220.449 33.3193C220.289 33.2225 220.16 33.0966 220.063 32.9417C219.964 32.7895 219.892 32.6179 219.848 32.427C219.806 32.2333 219.785 32.0382 219.785 31.8418V31.6675C219.785 31.4738 219.806 31.2815 219.848 31.0906C219.892 30.8997 219.964 30.7267 220.063 30.5718C220.163 30.4196 220.293 30.2965 220.454 30.2024C220.617 30.1056 220.817 30.0571 221.055 30.0571C221.21 30.0571 221.354 30.0834 221.487 30.136C221.623 30.1886 221.739 30.2605 221.836 30.3518C221.933 30.4431 222.009 30.5496 222.064 30.6714C222.122 30.7904 222.153 30.9176 222.155 31.0532H222.882C222.882 30.8263 222.836 30.6133 222.745 30.4141C222.653 30.2148 222.527 30.0419 222.367 29.8953C222.204 29.7514 222.01 29.6379 221.786 29.5549C221.565 29.4692 221.321 29.4263 221.055 29.4263C220.715 29.4263 220.418 29.4871 220.163 29.6089C219.909 29.7306 219.697 29.8939 219.528 30.0986C219.357 30.3062 219.228 30.5455 219.142 30.8167C219.056 31.0878 219.013 31.3714 219.013 31.6675V31.8418C219.013 32.1406 219.056 32.4256 219.142 32.6968C219.228 32.9652 219.357 33.2017 219.528 33.4065C219.697 33.614 219.909 33.7786 220.163 33.9004C220.418 34.0221 220.715 34.083 221.055 34.083C221.293 34.083 221.522 34.0429 221.74 33.9626C221.959 33.8796 222.153 33.769 222.321 33.6306C222.49 33.495 222.624 33.3373 222.724 33.1575C222.826 32.9749 222.879 32.7839 222.882 32.5847H222.155C222.153 32.7092 222.119 32.8254 222.056 32.9333C221.995 33.0385 221.913 33.1298 221.811 33.2073C221.708 33.2875 221.591 33.3498 221.458 33.394C221.328 33.4383 221.194 33.4604 221.055 33.4604ZM225.015 30.1775V27.625H224.247V34H225.015V30.7378C225.07 30.6493 225.132 30.569 225.202 30.4971C225.274 30.4224 225.351 30.3573 225.434 30.302C225.539 30.2301 225.654 30.1747 225.779 30.136C225.903 30.0972 226.035 30.0779 226.173 30.0779C226.342 30.0751 226.491 30.0986 226.621 30.1484C226.751 30.1955 226.859 30.2674 226.945 30.3643C227.025 30.4528 227.086 30.5649 227.127 30.7004C227.169 30.8333 227.19 30.9882 227.19 31.1653V34H227.958V31.1736C227.958 30.872 227.92 30.6119 227.845 30.3933C227.774 30.172 227.67 29.9893 227.534 29.8455C227.399 29.7016 227.234 29.5964 227.04 29.53C226.849 29.4609 226.636 29.4263 226.401 29.4263C226.221 29.429 226.051 29.4553 225.891 29.5051C225.733 29.5549 225.588 29.6283 225.455 29.7251C225.372 29.7832 225.293 29.851 225.218 29.9285C225.144 30.0032 225.076 30.0862 225.015 30.1775ZM232.303 34H233.104V33.9336C233.054 33.8091 233.015 33.6638 232.988 33.4978C232.96 33.329 232.946 33.1699 232.946 33.0205V30.9329C232.946 30.6811 232.901 30.4611 232.809 30.2729C232.718 30.0848 232.594 29.9271 232.436 29.7998C232.275 29.6753 232.086 29.5826 231.867 29.5217C231.649 29.4581 231.412 29.4263 231.157 29.4263C230.878 29.4263 230.628 29.465 230.406 29.5425C230.188 29.62 230.002 29.7209 229.85 29.8455C229.695 29.9727 229.576 30.1152 229.493 30.2729C229.413 30.4307 229.371 30.5911 229.369 30.7544H230.141C230.141 30.6603 230.163 30.5704 230.207 30.4846C230.254 30.3961 230.319 30.32 230.402 30.2563C230.485 30.1927 230.586 30.1415 230.705 30.1028C230.827 30.064 230.964 30.0447 231.116 30.0447C231.279 30.0447 231.426 30.0654 231.556 30.1069C231.689 30.1484 231.801 30.2065 231.892 30.2812C231.983 30.3587 232.054 30.4514 232.104 30.5593C232.154 30.6672 232.178 30.789 232.178 30.9246V31.2773H231.34C231.027 31.2773 230.744 31.3078 230.489 31.3687C230.237 31.4295 230.022 31.5208 229.842 31.6426C229.662 31.7671 229.522 31.922 229.423 32.1074C229.326 32.2928 229.277 32.5086 229.277 32.7549C229.277 32.943 229.313 33.1187 229.385 33.282C229.46 33.4425 229.565 33.5808 229.701 33.697C229.833 33.816 229.995 33.9101 230.186 33.9792C230.38 34.0484 230.596 34.083 230.834 34.083C230.98 34.083 231.119 34.0678 231.249 34.0374C231.379 34.0069 231.502 33.9654 231.618 33.9128C231.732 33.8603 231.835 33.7994 231.929 33.7302C232.026 33.6611 232.113 33.5877 232.191 33.5103C232.199 33.6043 232.212 33.6956 232.228 33.7842C232.248 33.87 232.273 33.9419 232.303 34ZM230.946 33.4148C230.796 33.4148 230.665 33.3954 230.552 33.3567C230.438 33.318 230.344 33.264 230.269 33.1948C230.195 33.1284 230.138 33.0482 230.099 32.9541C230.063 32.86 230.045 32.7576 230.045 32.647C230.045 32.5308 230.066 32.427 230.107 32.3357C230.152 32.2444 230.215 32.1655 230.298 32.0991C230.415 32.005 230.571 31.9359 230.767 31.8916C230.967 31.8446 231.199 31.821 231.465 31.821H232.178V32.73C232.134 32.8185 232.073 32.9043 231.996 32.9873C231.918 33.0675 231.827 33.1395 231.722 33.2031C231.614 33.2668 231.495 33.318 231.365 33.3567C231.235 33.3954 231.095 33.4148 230.946 33.4148ZM234.457 34H235.225V30.7793C235.277 30.6825 235.338 30.5939 235.407 30.5137C235.479 30.4334 235.557 30.3629 235.64 30.302C235.742 30.2328 235.854 30.1789 235.976 30.1401C236.098 30.0986 236.229 30.0779 236.37 30.0779C236.534 30.0779 236.677 30.0972 236.802 30.136C236.929 30.1747 237.037 30.237 237.126 30.3228C237.212 30.4085 237.277 30.5206 237.321 30.6589C237.365 30.7973 237.387 30.9661 237.387 31.1653V34H238.155V31.1487C238.155 30.8499 238.118 30.5925 238.043 30.3767C237.971 30.1581 237.867 29.9783 237.732 29.8372C237.596 29.696 237.431 29.5923 237.238 29.5259C237.047 29.4595 236.834 29.4263 236.599 29.4263C236.424 29.429 236.258 29.4553 236.101 29.5051C235.946 29.5522 235.802 29.62 235.669 29.7085C235.58 29.7666 235.496 29.8358 235.416 29.916C235.338 29.9935 235.266 30.0793 235.2 30.1733L235.146 29.5093H234.457V34ZM239.421 31.7173V31.8044C239.421 32.1254 239.462 32.4256 239.545 32.7051C239.628 32.9818 239.747 33.2225 239.902 33.4272C240.055 33.632 240.241 33.7925 240.463 33.9087C240.684 34.0249 240.932 34.083 241.206 34.083C241.369 34.083 241.521 34.065 241.662 34.0291C241.803 33.9958 241.932 33.9474 242.048 33.8838C242.123 33.8423 242.192 33.7939 242.256 33.7385C242.322 33.6832 242.384 33.6223 242.442 33.5559V33.9419C242.442 34.1356 242.415 34.3071 242.359 34.4565C242.304 34.606 242.225 34.7305 242.123 34.8301C242.018 34.9325 241.892 35.0099 241.745 35.0625C241.598 35.1151 241.434 35.1414 241.251 35.1414C241.149 35.1414 241.046 35.1303 240.944 35.1082C240.842 35.0888 240.739 35.0556 240.637 35.0085C240.535 34.9615 240.434 34.8979 240.334 34.8176C240.234 34.7402 240.138 34.6447 240.043 34.5312L239.645 34.9919C239.747 35.1386 239.869 35.2617 240.01 35.3613C240.154 35.4609 240.304 35.5398 240.458 35.5979C240.611 35.6588 240.761 35.7017 240.911 35.7266C241.06 35.7542 241.193 35.7681 241.309 35.7681C241.592 35.7681 241.849 35.7266 242.081 35.6436C242.314 35.5605 242.514 35.4388 242.683 35.2783C242.849 35.1178 242.978 34.9228 243.069 34.6931C243.163 34.4635 243.21 34.2006 243.21 33.9045V29.5093H242.513L242.476 29.999C242.423 29.9326 242.366 29.8717 242.305 29.8164C242.247 29.7611 242.185 29.7126 242.119 29.6711C241.997 29.5909 241.86 29.53 241.708 29.4885C241.558 29.447 241.394 29.4263 241.214 29.4263C240.934 29.4263 240.684 29.483 240.463 29.5964C240.241 29.7099 240.053 29.8676 239.898 30.0696C239.743 30.2716 239.624 30.5137 239.541 30.7959C239.461 31.0754 239.421 31.3825 239.421 31.7173ZM240.189 31.8044V31.7173C240.189 31.4987 240.211 31.2912 240.255 31.0947C240.302 30.8955 240.375 30.7198 240.475 30.5676C240.572 30.4182 240.696 30.2992 240.849 30.2107C241.004 30.1222 241.189 30.0779 241.405 30.0779C241.532 30.0779 241.648 30.0945 241.753 30.1277C241.859 30.1581 241.954 30.201 242.04 30.2563C242.126 30.3145 242.202 30.3822 242.268 30.4597C242.334 30.5372 242.393 30.623 242.442 30.717V32.7756C242.393 32.8725 242.334 32.961 242.268 33.0413C242.202 33.1215 242.127 33.1907 242.044 33.2488C241.958 33.3069 241.861 33.3525 241.753 33.3857C241.648 33.4162 241.529 33.4314 241.396 33.4314C241.183 33.4314 241.001 33.3885 240.849 33.3027C240.696 33.2142 240.572 33.0952 240.475 32.9458C240.375 32.7964 240.302 32.6235 240.255 32.427C240.211 32.2306 240.189 32.023 240.189 31.8044ZM246.651 34.083C247.088 34.083 247.455 33.9958 247.751 33.8215C248.05 33.6444 248.274 33.4425 248.423 33.2156L247.954 32.8503C247.813 33.033 247.636 33.1796 247.423 33.2903C247.21 33.401 246.966 33.4563 246.692 33.4563C246.485 33.4563 246.295 33.4176 246.124 33.3401C245.952 33.2626 245.806 33.1561 245.684 33.0205C245.565 32.8932 245.471 32.7466 245.402 32.5806C245.335 32.4146 245.292 32.2222 245.273 32.0037V31.9746H248.481V31.6301C248.481 31.3175 248.441 31.0269 248.361 30.7585C248.283 30.4902 248.164 30.2563 248.004 30.0571C247.843 29.8607 247.641 29.7071 247.398 29.5964C247.157 29.483 246.875 29.4263 246.551 29.4263C246.294 29.4263 246.042 29.4788 245.796 29.584C245.552 29.6891 245.335 29.8399 245.144 30.0364C244.951 30.2356 244.796 30.4791 244.679 30.7668C244.563 31.0518 244.505 31.3756 244.505 31.738V31.9124C244.505 32.225 244.558 32.5142 244.663 32.7798C244.768 33.0454 244.915 33.2751 245.103 33.4688C245.291 33.6624 245.516 33.8132 245.779 33.9211C246.045 34.0291 246.335 34.083 246.651 34.083ZM246.551 30.0571C246.748 30.0571 246.917 30.0931 247.058 30.165C247.201 30.237 247.32 30.3311 247.415 30.4473C247.509 30.5635 247.582 30.7018 247.635 30.8623C247.687 31.02 247.713 31.1681 247.713 31.3064V31.3438H245.298C245.328 31.1362 245.381 30.9536 245.456 30.7959C245.533 30.6354 245.627 30.4998 245.738 30.3892C245.848 30.2812 245.973 30.1996 246.111 30.1443C246.25 30.0862 246.396 30.0571 246.551 30.0571ZM249.627 31.7173V31.8044C249.627 32.1254 249.67 32.4256 249.755 32.7051C249.841 32.9818 249.962 33.2225 250.116 33.4272C250.271 33.632 250.458 33.7925 250.677 33.9087C250.898 34.0249 251.144 34.083 251.416 34.083C251.692 34.083 251.934 34.036 252.142 33.9419C252.349 33.8478 252.528 33.7095 252.677 33.5269L252.71 34H253.416V27.625H252.648V29.9534C252.502 29.7818 252.327 29.6518 252.125 29.5632C251.926 29.4719 251.692 29.4263 251.424 29.4263C251.15 29.4263 250.902 29.483 250.681 29.5964C250.46 29.7099 250.271 29.8676 250.116 30.0696C249.959 30.2716 249.837 30.5137 249.751 30.7959C249.668 31.0754 249.627 31.3825 249.627 31.7173ZM250.395 31.8044V31.7173C250.395 31.4987 250.418 31.2912 250.465 31.0947C250.512 30.8955 250.585 30.7198 250.685 30.5676C250.782 30.4182 250.906 30.2992 251.059 30.2107C251.214 30.1222 251.399 30.0779 251.615 30.0779C251.867 30.0779 252.077 30.1374 252.246 30.2563C252.414 30.3726 252.549 30.522 252.648 30.7046V32.7881C252.549 32.9845 252.414 33.1409 252.246 33.2571C252.077 33.3733 251.864 33.4314 251.606 33.4314C251.393 33.4314 251.211 33.3885 251.059 33.3027C250.906 33.2142 250.782 33.0952 250.685 32.9458C250.585 32.7964 250.512 32.6235 250.465 32.427C250.418 32.2306 250.395 32.023 250.395 31.8044ZM256.276 32.2983H257.043C257.043 32.1904 257.046 32.095 257.052 32.012C257.057 31.9262 257.071 31.8459 257.093 31.7712C257.115 31.6965 257.149 31.6232 257.193 31.5513C257.24 31.4793 257.305 31.4032 257.388 31.323C257.518 31.2068 257.649 31.0809 257.782 30.9453C257.918 30.8097 258.04 30.6631 258.147 30.5054C258.255 30.3504 258.344 30.1858 258.413 30.0115C258.482 29.8344 258.517 29.6462 258.517 29.447C258.517 29.198 258.477 28.9766 258.396 28.783C258.316 28.5893 258.2 28.4246 258.048 28.2891C257.896 28.1535 257.709 28.0511 257.488 27.9819C257.269 27.91 257.02 27.874 256.74 27.874C256.489 27.874 256.253 27.9086 256.035 27.9778C255.819 28.0442 255.632 28.141 255.475 28.2683C255.314 28.3984 255.187 28.5561 255.093 28.7415C254.999 28.9268 254.95 29.1357 254.948 29.3682H255.715C255.715 29.2243 255.744 29.1012 255.802 28.9988C255.861 28.8936 255.938 28.8065 256.035 28.7373C256.129 28.6709 256.237 28.6225 256.359 28.592C256.483 28.5588 256.61 28.5422 256.74 28.5422C256.909 28.5422 257.059 28.5644 257.189 28.6086C257.319 28.6529 257.427 28.7179 257.512 28.8037C257.59 28.8812 257.648 28.9766 257.687 29.0901C257.728 29.2008 257.749 29.328 257.749 29.4719C257.749 29.6103 257.723 29.7417 257.67 29.8662C257.618 29.9907 257.551 30.1083 257.471 30.219C257.388 30.3324 257.297 30.4403 257.197 30.5427C257.1 30.6451 257.005 30.7447 256.911 30.8416C256.772 30.9688 256.662 31.0795 256.579 31.1736C256.496 31.2649 256.432 31.3604 256.388 31.46C256.343 31.5623 256.314 31.6785 256.301 31.8086C256.287 31.9359 256.278 32.0991 256.276 32.2983ZM256.188 33.5974C256.188 33.7247 256.227 33.8312 256.305 33.917C256.385 34.0028 256.504 34.0457 256.662 34.0457C256.819 34.0457 256.938 34.0028 257.019 33.917C257.102 33.8312 257.143 33.7247 257.143 33.5974C257.143 33.4646 257.102 33.3539 257.019 33.2654C256.938 33.1768 256.819 33.1326 256.662 33.1326C256.504 33.1326 256.385 33.1768 256.305 33.2654C256.227 33.3539 256.188 33.4646 256.188 33.5974Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M265.797 31.543V31.6343C265.797 32.0272 265.826 32.3952 265.884 32.7383C265.945 33.0814 266.026 33.3982 266.129 33.6887C266.231 33.982 266.35 34.249 266.486 34.4897C266.624 34.7305 266.769 34.9421 266.921 35.1248C267.074 35.3101 267.23 35.4679 267.39 35.5979C267.554 35.7279 267.711 35.8276 267.864 35.8967L268.088 35.2742C267.98 35.1912 267.87 35.0874 267.76 34.9629C267.649 34.8384 267.544 34.6917 267.444 34.5229C267.35 34.368 267.262 34.1868 267.179 33.9792C267.098 33.7717 267.028 33.5462 266.967 33.3027C266.923 33.1284 266.881 32.8946 266.843 32.6013C266.807 32.308 266.789 31.9884 266.789 31.6426V31.5347C266.789 31.1833 266.808 30.8582 266.847 30.5593C266.885 30.2605 266.937 29.988 267 29.7417C267.072 29.4871 267.155 29.252 267.249 29.0361C267.346 28.8203 267.45 28.6335 267.561 28.4758C267.646 28.3541 267.733 28.2462 267.822 28.1521C267.911 28.058 267.999 27.9778 268.088 27.9114L267.864 27.2805C267.711 27.3497 267.554 27.4493 267.39 27.5793C267.23 27.7066 267.074 27.863 266.921 28.0483C266.769 28.2337 266.624 28.4468 266.486 28.6875C266.35 28.9282 266.231 29.1938 266.129 29.4844C266.026 29.7777 265.945 30.0972 265.884 30.4431C265.826 30.7862 265.797 31.1528 265.797 31.543ZM272.076 30.7419L270.885 27.957H269.607L271.479 31.8584L271.483 34H272.645L272.649 31.9082L274.55 27.957H273.267L272.076 30.7419ZM277.339 34.083C277.773 34.083 278.15 33.9986 278.468 33.8298C278.786 33.6611 279.018 33.4729 279.165 33.2654L278.588 32.6428C278.455 32.8144 278.282 32.943 278.069 33.0288C277.856 33.1146 277.636 33.1575 277.409 33.1575C277.249 33.1575 277.101 33.1326 276.965 33.0828C276.83 33.033 276.709 32.9624 276.604 32.8711C276.502 32.7826 276.42 32.6843 276.359 32.5764C276.299 32.4657 276.249 32.3205 276.21 32.1406V32.1282H279.256V31.6384C279.256 31.3092 279.211 31.009 279.119 30.7378C279.028 30.4639 278.895 30.2301 278.721 30.0364C278.544 29.8427 278.328 29.6933 278.073 29.5881C277.822 29.4802 277.534 29.4263 277.21 29.4263C276.898 29.4263 276.608 29.483 276.343 29.5964C276.077 29.7099 275.847 29.869 275.654 30.0737C275.46 30.2785 275.309 30.5234 275.201 30.8083C275.094 31.0906 275.04 31.4032 275.04 31.7463V31.9124C275.04 32.2139 275.094 32.4976 275.201 32.7632C275.312 33.026 275.468 33.2543 275.67 33.448C275.872 33.6444 276.115 33.7994 276.397 33.9128C276.679 34.0263 276.993 34.083 277.339 34.083ZM277.202 30.3601C277.349 30.3601 277.477 30.3836 277.588 30.4307C277.701 30.4749 277.797 30.5358 277.874 30.6133C277.952 30.6935 278.013 30.7876 278.057 30.8955C278.101 31.0034 278.123 31.1182 278.123 31.24V31.3313H276.231C276.258 31.1847 276.3 31.0518 276.355 30.9329C276.411 30.8139 276.48 30.7115 276.563 30.6257C276.643 30.54 276.737 30.4749 276.845 30.4307C276.953 30.3836 277.072 30.3601 277.202 30.3601ZM283.162 32.7673C283.162 32.8365 283.144 32.9001 283.108 32.9583C283.075 33.0164 283.024 33.0675 282.954 33.1118C282.882 33.1561 282.79 33.1921 282.676 33.2197C282.566 33.2446 282.436 33.2571 282.286 33.2571C282.162 33.2571 282.04 33.2446 281.921 33.2197C281.805 33.1948 281.701 33.1547 281.61 33.0994C281.518 33.0468 281.444 32.9776 281.385 32.8918C281.327 32.8033 281.294 32.6982 281.286 32.5764H280.186C280.186 32.759 280.23 32.9417 280.319 33.1243C280.41 33.3041 280.543 33.4646 280.717 33.6057C280.892 33.7496 281.107 33.8658 281.365 33.9543C281.625 34.0429 281.924 34.0872 282.261 34.0872C282.568 34.0872 282.846 34.054 283.095 33.9875C283.344 33.9184 283.558 33.8229 283.735 33.7012C283.909 33.5794 284.043 33.4355 284.137 33.2695C284.234 33.1007 284.282 32.9167 284.282 32.7175C284.282 32.5017 284.234 32.3163 284.137 32.1614C284.043 32.0037 283.912 31.8695 283.743 31.7588C283.574 31.6509 283.374 31.5623 283.141 31.4932C282.909 31.424 282.657 31.3673 282.386 31.323C282.198 31.2953 282.043 31.2635 281.921 31.2275C281.799 31.1888 281.704 31.1459 281.635 31.0989C281.563 31.0546 281.513 31.0048 281.485 30.9495C281.457 30.8914 281.444 30.8291 281.444 30.7627C281.444 30.6963 281.459 30.634 281.489 30.5759C281.522 30.5151 281.569 30.4625 281.63 30.4182C281.697 30.3684 281.783 30.3297 281.888 30.302C281.993 30.2743 282.116 30.2605 282.257 30.2605C282.423 30.2605 282.564 30.2812 282.68 30.3228C282.799 30.3643 282.893 30.4196 282.963 30.4888C283.012 30.5413 283.05 30.6008 283.075 30.6672C283.1 30.7309 283.112 30.8 283.112 30.8748H284.266C284.266 30.6672 284.22 30.4749 284.129 30.2979C284.038 30.1208 283.906 29.9672 283.735 29.8372C283.56 29.7099 283.349 29.6103 283.1 29.5383C282.851 29.4636 282.57 29.4263 282.257 29.4263C281.958 29.4263 281.69 29.4636 281.452 29.5383C281.214 29.613 281.012 29.714 280.846 29.8413C280.68 29.9686 280.553 30.1166 280.464 30.2854C280.376 30.4542 280.331 30.6313 280.331 30.8167C280.331 31.0076 280.374 31.1764 280.46 31.323C280.549 31.4696 280.67 31.5983 280.825 31.709C280.98 31.8224 281.166 31.9193 281.381 31.9995C281.6 32.077 281.841 32.142 282.104 32.1946C282.311 32.2333 282.483 32.2721 282.618 32.3108C282.754 32.3495 282.863 32.391 282.946 32.4353C283.026 32.4823 283.082 32.5321 283.112 32.5847C283.145 32.6373 283.162 32.6982 283.162 32.7673ZM288.441 31.6343V31.543C288.441 31.1639 288.411 30.8056 288.35 30.468C288.289 30.1277 288.206 29.8109 288.101 29.5176C287.996 29.2243 287.873 28.9573 287.731 28.7166C287.593 28.4731 287.445 28.2559 287.287 28.0649C287.13 27.8768 286.968 27.7163 286.802 27.5835C286.636 27.4507 286.474 27.3497 286.316 27.2805L286.096 27.8989C286.179 27.9626 286.262 28.04 286.345 28.1313C286.431 28.2199 286.514 28.3209 286.594 28.4343C286.713 28.6059 286.825 28.8092 286.93 29.0444C287.038 29.2796 287.13 29.5452 287.204 29.8413C287.262 30.0793 287.308 30.3394 287.341 30.6216C287.377 30.9038 287.395 31.2082 287.395 31.5347V31.6426C287.395 31.9774 287.377 32.2887 287.341 32.5764C287.308 32.8642 287.262 33.127 287.204 33.365C287.135 33.6251 287.055 33.8603 286.964 34.0706C286.875 34.2808 286.777 34.469 286.669 34.635C286.578 34.7761 286.484 34.8993 286.387 35.0044C286.29 35.1123 286.193 35.2022 286.096 35.2742L286.316 35.8967C286.474 35.8276 286.636 35.7266 286.802 35.5938C286.968 35.4609 287.13 35.2991 287.287 35.1082C287.445 34.92 287.593 34.7042 287.731 34.4607C287.873 34.22 287.996 33.953 288.101 33.6597C288.206 33.3664 288.289 33.0509 288.35 32.7134C288.411 32.373 288.441 32.0133 288.441 31.6343Z\"\n      fill=\"#10D310\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_5_169\"\n        x1=\"354.788\"\n        y1=\"-85.0949\"\n        x2=\"449.293\"\n        y2=\"-90.87\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n];\n\nexport const descriptions = [\n  'Instead of diffing by element, we can just diff `prop1` and `prop2`. Since both have associations to their respective nodes with the \"Edit Mapping\" we created during static analysis, once we determine a difference, we can directly update the DOM.',\n  \"We diff the current `prop1` and new `prop1` values, and since they're different, we update the DOM.\",\n  \"We diff the current `prop2` and new `prop2` values, and since they're different, we update the DOM.\",\n];\n\nexport const BlockVDomExample = () => {\n  return <Slideshow frames={frames} descriptions={descriptions} />;\n};\n"
  },
  {
    "path": "website/components/back-in-block/combined-block.tsx",
    "content": "import { Slideshow } from './slideshow';\nimport {\n  frames as staticAnalysisFrames,\n  descriptions as staticAnalysisDescriptions,\n} from './static-analysis';\nimport {\n  frames as blockVDomFrames,\n  descriptions as blockVDomDescriptions,\n} from './block-vdom';\n\nexport const CombinedBlockExample = () => {\n  return (\n    <Slideshow\n      frames={[...staticAnalysisFrames, ...blockVDomFrames]}\n      descriptions={[...staticAnalysisDescriptions, ...blockVDomDescriptions]}\n    />\n  );\n};\n"
  },
  {
    "path": "website/components/back-in-block/count.tsx",
    "content": "import { useState } from 'react';\n\nexport function CountExample() {\n  const [count, setCount] = useState(0);\n\n  const node1 = count + 1;\n  const node2 = count + 2;\n\n  return (\n    <div className=\"border rounded border-gray-500 p-5\">\n      <ul className=\"list-disc ml-5 mb-4\">\n        <li>{node1}</li>\n        <li>{node2}</li>\n      </ul>\n      <button\n        className=\"bg-gray-500 py-1.5 px-6 rounded font-bold font-mono hover:bg-gray-600 transition-colors disabled:opacity-30\"\n        onClick={() => {\n          setCount(count + 1);\n        }}\n      >\n        Increment Count\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/back-in-block/slideshow.tsx",
    "content": "import { useState } from 'react';\n\nexport const motionAnimationProps = {\n  initial: { pathLength: 0 },\n  animate: { pathLength: 1 },\n  transition: {\n    duration: 1,\n    ease: 'easeInOut',\n  },\n};\n\nexport function Slideshow({\n  frames,\n  descriptions,\n}: {\n  frames: JSX.Element[];\n  descriptions: string[];\n}) {\n  const [frame, setFrame] = useState<number>(0);\n\n  return (\n    <div className=\"w-full justify-center flex flex-col gap-2\">\n      <div className=\"flex-shrink-0\">{frames[frame]}</div>\n      <div className=\"w-full flex gap-2 justify-center items-center text-gray-500 h-24\">\n        <small className=\"text-center\">{descriptions[frame]}</small>\n      </div>\n      <div className=\"w-full flex gap-2 justify-center items-center\">\n        <button\n          className=\"bg-gray-500 py-2 px-8 rounded font-bold font-mono hover:bg-gray-600 transition-colors disabled:opacity-30\"\n          disabled={frame <= 0}\n          onClick={() => {\n            if (frame <= 0) return;\n            setFrame(frame - 1);\n          }}\n        >\n          --\n        </button>\n        <p className=\"font-bold font-mono\">\n          ({frame + 1}/{frames.length})\n        </p>\n        <button\n          className=\"bg-gray-500 py-2 px-8 rounded font-bold  font-mono hover:bg-gray-600 transition-colors disabled:opacity-30\"\n          disabled={frame >= frames.length - 1}\n          onClick={() => {\n            if (frame >= frames.length - 1) return;\n            setFrame(frame + 1);\n          }}\n        >\n          ++\n        </button>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/back-in-block/static-analysis.tsx",
    "content": "import { motion } from 'framer-motion';\nimport { Slideshow, motionAnimationProps } from './slideshow';\n\nexport const frames = [\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"95.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 96L249 241.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 97L377 167\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 166L340 242\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M249.117 240.468H251.68C251.68 240.194 251.687 239.962 251.701 239.771C251.714 239.572 251.749 239.391 251.803 239.227C251.851 239.063 251.933 238.902 252.049 238.745C252.166 238.588 252.326 238.407 252.531 238.202C252.866 237.908 253.198 237.607 253.526 237.299C253.861 236.985 254.158 236.653 254.418 236.305C254.678 235.963 254.89 235.594 255.054 235.197C255.218 234.794 255.3 234.35 255.3 233.864C255.3 233.208 255.19 232.63 254.972 232.131C254.753 231.632 254.438 231.212 254.028 230.87C253.611 230.535 253.102 230.282 252.5 230.111C251.899 229.94 251.219 229.855 250.46 229.855C249.783 229.855 249.154 229.94 248.573 230.111C247.992 230.275 247.486 230.528 247.056 230.87C246.625 231.212 246.283 231.643 246.03 232.162C245.777 232.675 245.647 233.28 245.641 233.977H248.501C248.508 233.663 248.566 233.393 248.676 233.167C248.792 232.941 248.942 232.757 249.127 232.613C249.305 232.47 249.51 232.367 249.742 232.306C249.975 232.237 250.214 232.203 250.46 232.203C250.774 232.203 251.051 232.237 251.291 232.306C251.537 232.374 251.745 232.477 251.916 232.613C252.08 232.764 252.207 232.955 252.295 233.188C252.384 233.413 252.429 233.683 252.429 233.998C252.429 234.257 252.371 234.517 252.254 234.777C252.138 235.037 251.988 235.29 251.803 235.536C251.612 235.789 251.4 236.035 251.167 236.274C250.935 236.506 250.703 236.729 250.47 236.94C250.149 237.193 249.899 237.433 249.722 237.658C249.544 237.877 249.411 238.116 249.322 238.376C249.233 238.643 249.175 238.94 249.147 239.268C249.127 239.596 249.117 239.996 249.117 240.468ZM248.696 243.575C248.696 244.012 248.843 244.381 249.137 244.682C249.431 244.976 249.838 245.123 250.357 245.123C250.863 245.123 251.267 244.976 251.567 244.682C251.875 244.381 252.029 244.012 252.029 243.575C252.029 243.124 251.875 242.748 251.567 242.447C251.267 242.139 250.863 241.985 250.357 241.985C249.838 241.985 249.431 242.139 249.137 242.447C248.843 242.748 248.696 243.124 248.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M336.117 240.468H338.68C338.68 240.194 338.687 239.962 338.701 239.771C338.714 239.572 338.749 239.391 338.803 239.227C338.851 239.063 338.933 238.902 339.049 238.745C339.166 238.588 339.326 238.407 339.531 238.202C339.866 237.908 340.198 237.607 340.526 237.299C340.861 236.985 341.158 236.653 341.418 236.305C341.678 235.963 341.89 235.594 342.054 235.197C342.218 234.794 342.3 234.35 342.3 233.864C342.3 233.208 342.19 232.63 341.972 232.131C341.753 231.632 341.438 231.212 341.028 230.87C340.611 230.535 340.102 230.282 339.5 230.111C338.899 229.94 338.219 229.855 337.46 229.855C336.783 229.855 336.154 229.94 335.573 230.111C334.992 230.275 334.486 230.528 334.056 230.87C333.625 231.212 333.283 231.643 333.03 232.162C332.777 232.675 332.647 233.28 332.641 233.977H335.501C335.508 233.663 335.566 233.393 335.676 233.167C335.792 232.941 335.942 232.757 336.127 232.613C336.305 232.47 336.51 232.367 336.742 232.306C336.975 232.237 337.214 232.203 337.46 232.203C337.774 232.203 338.051 232.237 338.291 232.306C338.537 232.374 338.745 232.477 338.916 232.613C339.08 232.764 339.207 232.955 339.295 233.188C339.384 233.413 339.429 233.683 339.429 233.998C339.429 234.257 339.371 234.517 339.254 234.777C339.138 235.037 338.988 235.29 338.803 235.536C338.612 235.789 338.4 236.035 338.167 236.274C337.935 236.506 337.703 236.729 337.47 236.94C337.149 237.193 336.899 237.433 336.722 237.658C336.544 237.877 336.411 238.116 336.322 238.376C336.233 238.643 336.175 238.94 336.147 239.268C336.127 239.596 336.117 239.996 336.117 240.468ZM335.696 243.575C335.696 244.012 335.843 244.381 336.137 244.682C336.431 244.976 336.838 245.123 337.357 245.123C337.863 245.123 338.267 244.976 338.567 244.682C338.875 244.381 339.029 244.012 339.029 243.575C339.029 243.124 338.875 242.748 338.567 242.447C338.267 242.139 337.863 241.985 337.357 241.985C336.838 241.985 336.431 242.139 336.137 242.447C335.843 242.748 335.696 243.124 335.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M258.775 54.7871L258.878 54.2256C258.676 54.2191 258.508 54.1637 258.375 54.0596C258.245 53.9554 258.141 53.8219 258.062 53.6592C257.981 53.4997 257.924 53.319 257.892 53.1172C257.859 52.9186 257.843 52.7184 257.843 52.5166V51.6914C257.84 51.304 257.748 50.9639 257.569 50.6709C257.39 50.3747 257.112 50.1517 256.734 50.002C257.112 49.849 257.39 49.626 257.569 49.333C257.752 49.0368 257.843 48.6934 257.843 48.3027V47.4727C257.843 47.2741 257.853 47.0739 257.872 46.8721C257.892 46.6702 257.937 46.488 258.009 46.3252C258.077 46.1657 258.18 46.0339 258.316 45.9297C258.456 45.8255 258.644 45.7702 258.878 45.7637L258.775 45.2021C258.447 45.2119 258.167 45.2835 257.936 45.417C257.704 45.5472 257.517 45.7165 257.374 45.9248C257.221 46.1429 257.109 46.3903 257.037 46.667C256.969 46.9404 256.935 47.209 256.935 47.4727V48.3027C256.935 48.7747 256.822 49.1165 256.598 49.3281C256.376 49.5365 256.036 49.6406 255.577 49.6406V50.3486C256.036 50.3519 256.376 50.4593 256.598 50.6709C256.822 50.8825 256.935 51.2227 256.935 51.6914V52.5166C256.935 52.777 256.972 53.0391 257.047 53.3027C257.122 53.5697 257.232 53.8105 257.379 54.0254C257.532 54.25 257.724 54.4307 257.955 54.5674C258.186 54.7041 258.46 54.7773 258.775 54.7871ZM266.861 53H267.765V49.2109C267.826 49.097 267.898 48.9928 267.979 48.8984C268.064 48.804 268.155 48.721 268.253 48.6494C268.373 48.568 268.505 48.5046 268.648 48.459C268.792 48.4102 268.946 48.3857 269.112 48.3857C269.304 48.3857 269.474 48.4085 269.62 48.4541C269.77 48.4997 269.897 48.5729 270.001 48.6738C270.102 48.7747 270.178 48.9066 270.23 49.0693C270.283 49.2321 270.309 49.4307 270.309 49.665V53H271.212V49.6455C271.212 49.2939 271.168 48.9912 271.08 48.7373C270.995 48.4801 270.873 48.2686 270.714 48.1025C270.554 47.9365 270.361 47.8145 270.133 47.7363C269.908 47.6582 269.658 47.6191 269.381 47.6191C269.176 47.6224 268.98 47.6533 268.795 47.7119C268.613 47.7673 268.443 47.847 268.287 47.9512C268.183 48.0195 268.084 48.1009 267.989 48.1953C267.898 48.2865 267.813 48.3874 267.735 48.498L267.672 47.7168H266.861V53ZM272.613 50.3096V50.417C272.613 50.7979 272.669 51.151 272.779 51.4766C272.89 51.8021 273.049 52.0853 273.258 52.3262C273.463 52.5671 273.714 52.7559 274.01 52.8926C274.309 53.0293 274.646 53.0977 275.021 53.0977C275.392 53.0977 275.725 53.0293 276.021 52.8926C276.318 52.7559 276.57 52.5671 276.778 52.3262C276.983 52.0853 277.141 51.8021 277.252 51.4766C277.363 51.151 277.418 50.7979 277.418 50.417V50.3096C277.418 49.9287 277.363 49.5755 277.252 49.25C277.141 48.9212 276.983 48.6364 276.778 48.3955C276.57 48.1546 276.316 47.9658 276.017 47.8291C275.72 47.6891 275.385 47.6191 275.011 47.6191C274.64 47.6191 274.306 47.6891 274.01 47.8291C273.714 47.9658 273.463 48.1546 273.258 48.3955C273.049 48.6364 272.89 48.9212 272.779 49.25C272.669 49.5755 272.613 49.9287 272.613 50.3096ZM273.517 50.417V50.3096C273.517 50.0524 273.548 49.8066 273.609 49.5723C273.671 49.3346 273.766 49.1263 273.893 48.9473C274.016 48.7682 274.171 48.6266 274.356 48.5225C274.542 48.415 274.76 48.3613 275.011 48.3613C275.261 48.3613 275.479 48.415 275.665 48.5225C275.854 48.6266 276.012 48.7682 276.139 48.9473C276.262 49.1263 276.355 49.3346 276.417 49.5723C276.482 49.8066 276.515 50.0524 276.515 50.3096V50.417C276.515 50.6774 276.484 50.9264 276.422 51.1641C276.36 51.3984 276.267 51.6051 276.144 51.7842C276.017 51.9632 275.859 52.1048 275.67 52.209C275.484 52.3132 275.268 52.3652 275.021 52.3652C274.77 52.3652 274.55 52.3132 274.361 52.209C274.173 52.1048 274.016 51.9632 273.893 51.7842C273.766 51.6051 273.671 51.3984 273.609 51.1641C273.548 50.9264 273.517 50.6774 273.517 50.417ZM278.702 50.3145V50.417C278.702 50.7946 278.753 51.1478 278.854 51.4766C278.954 51.8021 279.096 52.0853 279.278 52.3262C279.461 52.5671 279.68 52.7559 279.938 52.8926C280.198 53.0293 280.488 53.0977 280.807 53.0977C281.132 53.0977 281.417 53.0423 281.661 52.9316C281.905 52.821 282.115 52.6582 282.291 52.4434L282.33 53H283.16V45.5H282.257V48.2393C282.084 48.0374 281.879 47.8844 281.642 47.7803C281.407 47.6729 281.132 47.6191 280.816 47.6191C280.494 47.6191 280.203 47.6859 279.942 47.8193C279.682 47.9528 279.461 48.1383 279.278 48.376C279.093 48.6136 278.95 48.8984 278.849 49.2305C278.751 49.5592 278.702 49.9206 278.702 50.3145ZM279.605 50.417V50.3145C279.605 50.0573 279.633 49.8132 279.688 49.582C279.744 49.3477 279.83 49.141 279.947 48.9619C280.061 48.7861 280.208 48.6462 280.387 48.542C280.569 48.4378 280.787 48.3857 281.041 48.3857C281.337 48.3857 281.585 48.4557 281.783 48.5957C281.982 48.7324 282.14 48.9082 282.257 49.123V51.5742C282.14 51.8053 281.982 51.9893 281.783 52.126C281.585 52.2627 281.334 52.3311 281.031 52.3311C280.781 52.3311 280.566 52.2806 280.387 52.1797C280.208 52.0755 280.061 51.9355 279.947 51.7598C279.83 51.584 279.744 51.3805 279.688 51.1494C279.633 50.9183 279.605 50.6742 279.605 50.417ZM287.213 53.0977C287.727 53.0977 288.159 52.9951 288.507 52.79C288.858 52.5817 289.122 52.3441 289.298 52.0771L288.746 51.6475C288.58 51.8623 288.372 52.0348 288.121 52.165C287.87 52.2952 287.584 52.3604 287.262 52.3604C287.018 52.3604 286.795 52.3148 286.593 52.2236C286.391 52.1325 286.218 52.0072 286.075 51.8477C285.935 51.6979 285.825 51.5254 285.743 51.3301C285.665 51.1348 285.615 50.9085 285.592 50.6514V50.6172H289.366V50.2119C289.366 49.8441 289.319 49.5023 289.225 49.1865C289.133 48.8708 288.993 48.5957 288.805 48.3613C288.616 48.1302 288.378 47.9495 288.092 47.8193C287.809 47.6859 287.477 47.6191 287.096 47.6191C286.793 47.6191 286.497 47.681 286.207 47.8047C285.921 47.9284 285.665 48.1058 285.44 48.3369C285.213 48.5713 285.03 48.8577 284.894 49.1963C284.757 49.5316 284.688 49.9124 284.688 50.3389V50.5439C284.688 50.9118 284.75 51.252 284.874 51.5645C284.998 51.877 285.17 52.1471 285.392 52.375C285.613 52.6029 285.878 52.7803 286.188 52.9072C286.5 53.0342 286.842 53.0977 287.213 53.0977ZM287.096 48.3613C287.327 48.3613 287.525 48.4036 287.691 48.4883C287.861 48.5729 288.001 48.6836 288.111 48.8203C288.222 48.957 288.308 49.1198 288.37 49.3086C288.432 49.4941 288.463 49.6683 288.463 49.8311V49.875H285.621C285.657 49.6309 285.719 49.416 285.807 49.2305C285.898 49.0417 286.008 48.8822 286.139 48.752C286.269 48.625 286.415 48.529 286.578 48.4639C286.741 48.3955 286.913 48.3613 287.096 48.3613ZM293.814 53V45.8906H293.741L291.051 46.9258V47.751L292.911 47.043V53H293.814ZM298.707 52.4141C298.707 52.6029 298.766 52.764 298.883 52.8975C299.003 53.0277 299.181 53.0928 299.415 53.0928C299.646 53.0928 299.824 53.0277 299.947 52.8975C300.071 52.7673 300.133 52.6061 300.133 52.4141C300.133 52.2188 300.071 52.0544 299.947 51.9209C299.827 51.7842 299.649 51.7158 299.415 51.7158C299.177 51.7158 299 51.7842 298.883 51.9209C298.766 52.0576 298.707 52.222 298.707 52.4141ZM298.707 48.1367C298.707 48.3255 298.766 48.4867 298.883 48.6201C299.003 48.7503 299.181 48.8154 299.415 48.8154C299.646 48.8154 299.824 48.7503 299.947 48.6201C300.071 48.4899 300.133 48.3288 300.133 48.1367C300.133 47.9414 300.071 47.777 299.947 47.6436C299.827 47.5068 299.649 47.4385 299.415 47.4385C299.177 47.4385 299 47.5068 298.883 47.6436C298.766 47.7803 298.707 47.9447 298.707 48.1367ZM310.548 50.998H311.451C311.451 50.8711 311.454 50.7588 311.461 50.6611C311.467 50.5602 311.484 50.4658 311.51 50.3779C311.536 50.29 311.575 50.2038 311.627 50.1191C311.682 50.0345 311.759 49.945 311.856 49.8506C312.009 49.7139 312.164 49.5658 312.32 49.4062C312.48 49.2467 312.623 49.0742 312.75 48.8887C312.877 48.7064 312.981 48.5127 313.062 48.3076C313.144 48.0993 313.185 47.8779 313.185 47.6436C313.185 47.3506 313.137 47.0902 313.043 46.8623C312.949 46.6344 312.812 46.4408 312.633 46.2812C312.454 46.1217 312.234 46.0013 311.974 45.9199C311.716 45.8353 311.424 45.793 311.095 45.793C310.799 45.793 310.522 45.8337 310.265 45.915C310.011 45.9932 309.791 46.1071 309.605 46.2568C309.417 46.4098 309.267 46.5954 309.156 46.8135C309.046 47.0316 308.989 47.2773 308.985 47.5508H309.889C309.889 47.3815 309.923 47.2367 309.991 47.1162C310.06 46.9925 310.151 46.89 310.265 46.8086C310.375 46.7305 310.502 46.6735 310.646 46.6377C310.792 46.5986 310.942 46.5791 311.095 46.5791C311.293 46.5791 311.469 46.6051 311.622 46.6572C311.775 46.7093 311.902 46.7858 312.003 46.8867C312.094 46.9779 312.162 47.0902 312.208 47.2236C312.257 47.3538 312.281 47.5036 312.281 47.6729C312.281 47.8356 312.25 47.9902 312.188 48.1367C312.127 48.2832 312.049 48.4215 311.954 48.5518C311.856 48.6852 311.749 48.8122 311.632 48.9326C311.518 49.0531 311.406 49.1702 311.295 49.2842C311.132 49.4339 311.002 49.5641 310.904 49.6748C310.807 49.7822 310.732 49.8945 310.68 50.0117C310.628 50.1322 310.593 50.2689 310.577 50.4219C310.561 50.5716 310.551 50.7637 310.548 50.998ZM310.445 52.5264C310.445 52.6761 310.491 52.8014 310.582 52.9023C310.676 53.0033 310.816 53.0537 311.002 53.0537C311.188 53.0537 311.327 53.0033 311.422 52.9023C311.52 52.8014 311.568 52.6761 311.568 52.5264C311.568 52.3701 311.52 52.2399 311.422 52.1357C311.327 52.0316 311.188 51.9795 311.002 51.9795C310.816 51.9795 310.676 52.0316 310.582 52.1357C310.491 52.2399 310.445 52.3701 310.445 52.5264ZM317.198 52.79V51.9307H316.217V52.8047C316.217 53.0814 316.184 53.3483 316.119 53.6055C316.054 53.8626 315.943 54.1051 315.787 54.333L316.349 54.6406C316.609 54.4095 316.816 54.1247 316.969 53.7861C317.122 53.4476 317.198 53.1156 317.198 52.79ZM326.92 53H327.823V49.2109C327.885 49.097 327.957 48.9928 328.038 48.8984C328.123 48.804 328.214 48.721 328.312 48.6494C328.432 48.568 328.564 48.5046 328.707 48.459C328.85 48.4102 329.005 48.3857 329.171 48.3857C329.363 48.3857 329.532 48.4085 329.679 48.4541C329.828 48.4997 329.955 48.5729 330.06 48.6738C330.16 48.7747 330.237 48.9066 330.289 49.0693C330.341 49.2321 330.367 49.4307 330.367 49.665V53H331.271V49.6455C331.271 49.2939 331.227 48.9912 331.139 48.7373C331.054 48.4801 330.932 48.2686 330.772 48.1025C330.613 47.9365 330.419 47.8145 330.191 47.7363C329.967 47.6582 329.716 47.6191 329.439 47.6191C329.234 47.6224 329.039 47.6533 328.854 47.7119C328.671 47.7673 328.502 47.847 328.346 47.9512C328.242 48.0195 328.142 48.1009 328.048 48.1953C327.957 48.2865 327.872 48.3874 327.794 48.498L327.73 47.7168H326.92V53ZM332.672 50.3096V50.417C332.672 50.7979 332.727 51.151 332.838 51.4766C332.949 51.8021 333.108 52.0853 333.316 52.3262C333.521 52.5671 333.772 52.7559 334.068 52.8926C334.368 53.0293 334.705 53.0977 335.079 53.0977C335.45 53.0977 335.784 53.0293 336.08 52.8926C336.376 52.7559 336.629 52.5671 336.837 52.3262C337.042 52.0853 337.2 51.8021 337.311 51.4766C337.421 51.151 337.477 50.7979 337.477 50.417V50.3096C337.477 49.9287 337.421 49.5755 337.311 49.25C337.2 48.9212 337.042 48.6364 336.837 48.3955C336.629 48.1546 336.375 47.9658 336.075 47.8291C335.779 47.6891 335.444 47.6191 335.069 47.6191C334.698 47.6191 334.365 47.6891 334.068 47.8291C333.772 47.9658 333.521 48.1546 333.316 48.3955C333.108 48.6364 332.949 48.9212 332.838 49.25C332.727 49.5755 332.672 49.9287 332.672 50.3096ZM333.575 50.417V50.3096C333.575 50.0524 333.606 49.8066 333.668 49.5723C333.73 49.3346 333.824 49.1263 333.951 48.9473C334.075 48.7682 334.229 48.6266 334.415 48.5225C334.601 48.415 334.819 48.3613 335.069 48.3613C335.32 48.3613 335.538 48.415 335.724 48.5225C335.912 48.6266 336.07 48.7682 336.197 48.9473C336.321 49.1263 336.414 49.3346 336.476 49.5723C336.541 49.8066 336.573 50.0524 336.573 50.3096V50.417C336.573 50.6774 336.542 50.9264 336.48 51.1641C336.419 51.3984 336.326 51.6051 336.202 51.7842C336.075 51.9632 335.917 52.1048 335.729 52.209C335.543 52.3132 335.326 52.3652 335.079 52.3652C334.828 52.3652 334.609 52.3132 334.42 52.209C334.231 52.1048 334.075 51.9632 333.951 51.7842C333.824 51.6051 333.73 51.3984 333.668 51.1641C333.606 50.9264 333.575 50.6774 333.575 50.417ZM338.761 50.3145V50.417C338.761 50.7946 338.811 51.1478 338.912 51.4766C339.013 51.8021 339.155 52.0853 339.337 52.3262C339.519 52.5671 339.739 52.7559 339.996 52.8926C340.257 53.0293 340.546 53.0977 340.865 53.0977C341.191 53.0977 341.476 53.0423 341.72 52.9316C341.964 52.821 342.174 52.6582 342.35 52.4434L342.389 53H343.219V45.5H342.315V48.2393C342.143 48.0374 341.938 47.8844 341.7 47.7803C341.466 47.6729 341.191 47.6191 340.875 47.6191C340.553 47.6191 340.261 47.6859 340.001 47.8193C339.741 47.9528 339.519 48.1383 339.337 48.376C339.151 48.6136 339.008 48.8984 338.907 49.2305C338.81 49.5592 338.761 49.9206 338.761 50.3145ZM339.664 50.417V50.3145C339.664 50.0573 339.692 49.8132 339.747 49.582C339.802 49.3477 339.889 49.141 340.006 48.9619C340.12 48.7861 340.266 48.6462 340.445 48.542C340.628 48.4378 340.846 48.3857 341.1 48.3857C341.396 48.3857 341.643 48.4557 341.842 48.5957C342.04 48.7324 342.198 48.9082 342.315 49.123V51.5742C342.198 51.8053 342.04 51.9893 341.842 52.126C341.643 52.2627 341.393 52.3311 341.09 52.3311C340.839 52.3311 340.624 52.2806 340.445 52.1797C340.266 52.0755 340.12 51.9355 340.006 51.7598C339.889 51.584 339.802 51.3805 339.747 51.1494C339.692 50.9183 339.664 50.6742 339.664 50.417ZM347.271 53.0977C347.786 53.0977 348.217 52.9951 348.565 52.79C348.917 52.5817 349.181 52.3441 349.356 52.0771L348.805 51.6475C348.639 51.8623 348.43 52.0348 348.18 52.165C347.929 52.2952 347.643 52.3604 347.32 52.3604C347.076 52.3604 346.853 52.3148 346.651 52.2236C346.45 52.1325 346.277 52.0072 346.134 51.8477C345.994 51.6979 345.883 51.5254 345.802 51.3301C345.724 51.1348 345.673 50.9085 345.65 50.6514V50.6172H349.425V50.2119C349.425 49.8441 349.378 49.5023 349.283 49.1865C349.192 48.8708 349.052 48.5957 348.863 48.3613C348.674 48.1302 348.437 47.9495 348.15 47.8193C347.867 47.6859 347.535 47.6191 347.154 47.6191C346.852 47.6191 346.555 47.681 346.266 47.8047C345.979 47.9284 345.724 48.1058 345.499 48.3369C345.271 48.5713 345.089 48.8577 344.952 49.1963C344.815 49.5316 344.747 49.9124 344.747 50.3389V50.5439C344.747 50.9118 344.809 51.252 344.933 51.5645C345.056 51.877 345.229 52.1471 345.45 52.375C345.672 52.6029 345.937 52.7803 346.246 52.9072C346.559 53.0342 346.9 53.0977 347.271 53.0977ZM347.154 48.3613C347.385 48.3613 347.584 48.4036 347.75 48.4883C347.919 48.5729 348.059 48.6836 348.17 48.8203C348.281 48.957 348.367 49.1198 348.429 49.3086C348.491 49.4941 348.521 49.6683 348.521 49.8311V49.875H345.68C345.715 49.6309 345.777 49.416 345.865 49.2305C345.956 49.0417 346.067 48.8822 346.197 48.752C346.327 48.625 346.474 48.529 346.637 48.4639C346.799 48.3955 346.972 48.3613 347.154 48.3613ZM355.304 53V52.2627H351.734L353.644 50.1924C353.823 49.9971 353.992 49.8018 354.151 49.6064C354.314 49.4079 354.457 49.2077 354.581 49.0059C354.701 48.804 354.798 48.6006 354.869 48.3955C354.941 48.1872 354.977 47.9772 354.977 47.7656C354.977 47.4824 354.926 47.2204 354.825 46.9795C354.728 46.7386 354.586 46.5303 354.4 46.3545C354.215 46.1787 353.987 46.042 353.717 45.9443C353.45 45.8434 353.149 45.793 352.813 45.793C352.449 45.793 352.123 45.8516 351.837 45.9688C351.554 46.0859 351.314 46.2438 351.119 46.4424C350.921 46.641 350.769 46.8737 350.665 47.1406C350.561 47.4043 350.509 47.6859 350.509 47.9854H351.417C351.417 47.764 351.445 47.5638 351.5 47.3848C351.559 47.2057 351.646 47.0527 351.764 46.9258C351.878 46.8021 352.021 46.7061 352.193 46.6377C352.369 46.5693 352.576 46.5352 352.813 46.5352C353.009 46.5352 353.183 46.5693 353.336 46.6377C353.492 46.7028 353.626 46.7923 353.736 46.9062C353.844 47.0202 353.925 47.1553 353.98 47.3115C354.039 47.4645 354.068 47.6289 354.068 47.8047C354.068 47.9479 354.05 48.0879 354.015 48.2246C353.979 48.3581 353.919 48.4997 353.834 48.6494C353.749 48.8024 353.637 48.9684 353.497 49.1475C353.357 49.3265 353.183 49.5316 352.975 49.7627L350.646 52.3506V53H355.304ZM358.766 52.4141C358.766 52.6029 358.824 52.764 358.941 52.8975C359.062 53.0277 359.239 53.0928 359.474 53.0928C359.705 53.0928 359.882 53.0277 360.006 52.8975C360.13 52.7673 360.191 52.6061 360.191 52.4141C360.191 52.2188 360.13 52.0544 360.006 51.9209C359.885 51.7842 359.708 51.7158 359.474 51.7158C359.236 51.7158 359.059 51.7842 358.941 51.9209C358.824 52.0576 358.766 52.222 358.766 52.4141ZM358.766 48.1367C358.766 48.3255 358.824 48.4867 358.941 48.6201C359.062 48.7503 359.239 48.8154 359.474 48.8154C359.705 48.8154 359.882 48.7503 360.006 48.6201C360.13 48.4899 360.191 48.3288 360.191 48.1367C360.191 47.9414 360.13 47.777 360.006 47.6436C359.885 47.5068 359.708 47.4385 359.474 47.4385C359.236 47.4385 359.059 47.5068 358.941 47.6436C358.824 47.7803 358.766 47.9447 358.766 48.1367ZM370.606 50.998H371.51C371.51 50.8711 371.513 50.7588 371.52 50.6611C371.526 50.5602 371.542 50.4658 371.568 50.3779C371.594 50.29 371.633 50.2038 371.686 50.1191C371.741 50.0345 371.817 49.945 371.915 49.8506C372.068 49.7139 372.223 49.5658 372.379 49.4062C372.538 49.2467 372.682 49.0742 372.809 48.8887C372.936 48.7064 373.04 48.5127 373.121 48.3076C373.202 48.0993 373.243 47.8779 373.243 47.6436C373.243 47.3506 373.196 47.0902 373.102 46.8623C373.007 46.6344 372.87 46.4408 372.691 46.2812C372.512 46.1217 372.293 46.0013 372.032 45.9199C371.775 45.8353 371.482 45.793 371.153 45.793C370.857 45.793 370.58 45.8337 370.323 45.915C370.069 45.9932 369.85 46.1071 369.664 46.2568C369.475 46.4098 369.326 46.5954 369.215 46.8135C369.104 47.0316 369.047 47.2773 369.044 47.5508H369.947C369.947 47.3815 369.981 47.2367 370.05 47.1162C370.118 46.9925 370.209 46.89 370.323 46.8086C370.434 46.7305 370.561 46.6735 370.704 46.6377C370.851 46.5986 371 46.5791 371.153 46.5791C371.352 46.5791 371.528 46.6051 371.681 46.6572C371.834 46.7093 371.961 46.7858 372.062 46.8867C372.153 46.9779 372.221 47.0902 372.267 47.2236C372.315 47.3538 372.34 47.5036 372.34 47.6729C372.34 47.8356 372.309 47.9902 372.247 48.1367C372.185 48.2832 372.107 48.4215 372.013 48.5518C371.915 48.6852 371.808 48.8122 371.69 48.9326C371.576 49.0531 371.464 49.1702 371.354 49.2842C371.191 49.4339 371.061 49.5641 370.963 49.6748C370.865 49.7822 370.79 49.8945 370.738 50.0117C370.686 50.1322 370.652 50.2689 370.636 50.4219C370.619 50.5716 370.61 50.7637 370.606 50.998ZM370.504 52.5264C370.504 52.6761 370.549 52.8014 370.641 52.9023C370.735 53.0033 370.875 53.0537 371.061 53.0537C371.246 53.0537 371.386 53.0033 371.48 52.9023C371.578 52.8014 371.627 52.6761 371.627 52.5264C371.627 52.3701 371.578 52.2399 371.48 52.1357C371.386 52.0316 371.246 51.9795 371.061 51.9795C370.875 51.9795 370.735 52.0316 370.641 52.1357C370.549 52.2399 370.504 52.3701 370.504 52.5264ZM381.7 54.2256L381.803 54.7871C382.122 54.7806 382.397 54.7074 382.628 54.5674C382.859 54.4274 383.051 54.2484 383.204 54.0303C383.354 53.8122 383.465 53.5697 383.536 53.3027C383.608 53.0391 383.644 52.777 383.644 52.5166V51.6914C383.644 51.4635 383.67 51.2666 383.722 51.1006C383.774 50.9346 383.854 50.7962 383.961 50.6855C384.072 50.5716 384.213 50.4886 384.386 50.4365C384.562 50.3812 384.767 50.3519 385.001 50.3486V49.6406C384.734 49.6406 384.505 49.6064 384.312 49.5381C384.124 49.4665 383.976 49.3542 383.868 49.2012C383.793 49.0938 383.736 48.9668 383.697 48.8203C383.661 48.6706 383.644 48.498 383.644 48.3027V47.4727C383.644 47.1992 383.606 46.9225 383.531 46.6426C383.46 46.3626 383.341 46.1104 383.175 45.8857C383.028 45.6872 382.841 45.526 382.613 45.4023C382.389 45.2786 382.118 45.2119 381.803 45.2021L381.705 45.7637C381.939 45.7702 382.125 45.8255 382.262 45.9297C382.398 46.0339 382.503 46.1657 382.574 46.3252C382.643 46.488 382.687 46.6702 382.706 46.8721C382.729 47.0739 382.74 47.2741 382.74 47.4727V48.3027C382.74 48.5566 382.778 48.7926 382.853 49.0107C382.927 49.2256 383.043 49.4144 383.199 49.5771C383.281 49.665 383.375 49.7448 383.482 49.8164C383.593 49.888 383.714 49.9499 383.844 50.002C383.717 50.054 383.6 50.1143 383.492 50.1826C383.388 50.251 383.294 50.3275 383.209 50.4121C383.049 50.5716 382.931 50.7604 382.853 50.9785C382.778 51.1966 382.74 51.4342 382.74 51.6914V52.5166C382.74 52.7184 382.722 52.9186 382.687 53.1172C382.654 53.319 382.599 53.4997 382.521 53.6592C382.439 53.8219 382.332 53.9554 382.198 54.0596C382.065 54.1637 381.899 54.2191 381.7 54.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M250.347 210.369C250.551 210.73 251.009 210.857 251.369 210.653L257.243 207.327C257.604 207.123 257.731 206.665 257.527 206.305C257.323 205.945 256.865 205.818 256.504 206.022L251.283 208.978L248.327 203.757C248.123 203.396 247.665 203.269 247.305 203.473C246.945 203.677 246.818 204.135 247.022 204.496L250.347 210.369ZM291.277 61.7998L250.277 209.8L251.723 210.2L292.723 62.2002L291.277 61.7998Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M337.45 212.538C337.747 212.827 338.222 212.82 338.511 212.524L343.221 207.688C343.51 207.392 343.503 206.917 343.207 206.628C342.91 206.339 342.435 206.345 342.146 206.642L337.96 210.94L333.662 206.753C333.365 206.464 332.89 206.471 332.601 206.767C332.312 207.064 332.318 207.539 332.615 207.828L337.45 212.538ZM335.25 62.0099L337.224 212.01L338.724 211.99L336.75 61.9901L335.25 62.0099Z\"\n      fill=\"#5F9CF8\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"95.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 96L249 241.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 97L377 167\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 166L340 242\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M249.117 240.468H251.68C251.68 240.194 251.687 239.962 251.701 239.771C251.714 239.572 251.749 239.391 251.803 239.227C251.851 239.063 251.933 238.902 252.049 238.745C252.166 238.588 252.326 238.407 252.531 238.202C252.866 237.908 253.198 237.607 253.526 237.299C253.861 236.985 254.158 236.653 254.418 236.305C254.678 235.963 254.89 235.594 255.054 235.197C255.218 234.794 255.3 234.35 255.3 233.864C255.3 233.208 255.19 232.63 254.972 232.131C254.753 231.632 254.438 231.212 254.028 230.87C253.611 230.535 253.102 230.282 252.5 230.111C251.899 229.94 251.219 229.855 250.46 229.855C249.783 229.855 249.154 229.94 248.573 230.111C247.992 230.275 247.486 230.528 247.056 230.87C246.625 231.212 246.283 231.643 246.03 232.162C245.777 232.675 245.647 233.28 245.641 233.977H248.501C248.508 233.663 248.566 233.393 248.676 233.167C248.792 232.941 248.942 232.757 249.127 232.613C249.305 232.47 249.51 232.367 249.742 232.306C249.975 232.237 250.214 232.203 250.46 232.203C250.774 232.203 251.051 232.237 251.291 232.306C251.537 232.374 251.745 232.477 251.916 232.613C252.08 232.764 252.207 232.955 252.295 233.188C252.384 233.413 252.429 233.683 252.429 233.998C252.429 234.257 252.371 234.517 252.254 234.777C252.138 235.037 251.988 235.29 251.803 235.536C251.612 235.789 251.4 236.035 251.167 236.274C250.935 236.506 250.703 236.729 250.47 236.94C250.149 237.193 249.899 237.433 249.722 237.658C249.544 237.877 249.411 238.116 249.322 238.376C249.233 238.643 249.175 238.94 249.147 239.268C249.127 239.596 249.117 239.996 249.117 240.468ZM248.696 243.575C248.696 244.012 248.843 244.381 249.137 244.682C249.431 244.976 249.838 245.123 250.357 245.123C250.863 245.123 251.267 244.976 251.567 244.682C251.875 244.381 252.029 244.012 252.029 243.575C252.029 243.124 251.875 242.748 251.567 242.447C251.267 242.139 250.863 241.985 250.357 241.985C249.838 241.985 249.431 242.139 249.137 242.447C248.843 242.748 248.696 243.124 248.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M336.117 240.468H338.68C338.68 240.194 338.687 239.962 338.701 239.771C338.714 239.572 338.749 239.391 338.803 239.227C338.851 239.063 338.933 238.902 339.049 238.745C339.166 238.588 339.326 238.407 339.531 238.202C339.866 237.908 340.198 237.607 340.526 237.299C340.861 236.985 341.158 236.653 341.418 236.305C341.678 235.963 341.89 235.594 342.054 235.197C342.218 234.794 342.3 234.35 342.3 233.864C342.3 233.208 342.19 232.63 341.972 232.131C341.753 231.632 341.438 231.212 341.028 230.87C340.611 230.535 340.102 230.282 339.5 230.111C338.899 229.94 338.219 229.855 337.46 229.855C336.783 229.855 336.154 229.94 335.573 230.111C334.992 230.275 334.486 230.528 334.056 230.87C333.625 231.212 333.283 231.643 333.03 232.162C332.777 232.675 332.647 233.28 332.641 233.977H335.501C335.508 233.663 335.566 233.393 335.676 233.167C335.792 232.941 335.942 232.757 336.127 232.613C336.305 232.47 336.51 232.367 336.742 232.306C336.975 232.237 337.214 232.203 337.46 232.203C337.774 232.203 338.051 232.237 338.291 232.306C338.537 232.374 338.745 232.477 338.916 232.613C339.08 232.764 339.207 232.955 339.295 233.188C339.384 233.413 339.429 233.683 339.429 233.998C339.429 234.257 339.371 234.517 339.254 234.777C339.138 235.037 338.988 235.29 338.803 235.536C338.612 235.789 338.4 236.035 338.167 236.274C337.935 236.506 337.703 236.729 337.47 236.94C337.149 237.193 336.899 237.433 336.722 237.658C336.544 237.877 336.411 238.116 336.322 238.376C336.233 238.643 336.175 238.94 336.147 239.268C336.127 239.596 336.117 239.996 336.117 240.468ZM335.696 243.575C335.696 244.012 335.843 244.381 336.137 244.682C336.431 244.976 336.838 245.123 337.357 245.123C337.863 245.123 338.267 244.976 338.567 244.682C338.875 244.381 339.029 244.012 339.029 243.575C339.029 243.124 338.875 242.748 338.567 242.447C338.267 242.139 337.863 241.985 337.357 241.985C336.838 241.985 336.431 242.139 336.137 242.447C335.843 242.748 335.696 243.124 335.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M255.775 36.7871L255.878 36.2256C255.676 36.2191 255.508 36.1637 255.375 36.0596C255.245 35.9554 255.141 35.8219 255.062 35.6592C254.981 35.4997 254.924 35.319 254.892 35.1172C254.859 34.9186 254.843 34.7184 254.843 34.5166V33.6914C254.84 33.304 254.748 32.9639 254.569 32.6709C254.39 32.3747 254.112 32.1517 253.734 32.002C254.112 31.849 254.39 31.626 254.569 31.333C254.752 31.0368 254.843 30.6934 254.843 30.3027V29.4727C254.843 29.2741 254.853 29.0739 254.872 28.8721C254.892 28.6702 254.937 28.488 255.009 28.3252C255.077 28.1657 255.18 28.0339 255.316 27.9297C255.456 27.8255 255.644 27.7702 255.878 27.7637L255.775 27.2021C255.447 27.2119 255.167 27.2835 254.936 27.417C254.704 27.5472 254.517 27.7165 254.374 27.9248C254.221 28.1429 254.109 28.3903 254.037 28.667C253.969 28.9404 253.935 29.209 253.935 29.4727V30.3027C253.935 30.7747 253.822 31.1165 253.598 31.3281C253.376 31.5365 253.036 31.6406 252.577 31.6406V32.3486C253.036 32.3519 253.376 32.4593 253.598 32.6709C253.822 32.8825 253.935 33.2227 253.935 33.6914V34.5166C253.935 34.777 253.972 35.0391 254.047 35.3027C254.122 35.5697 254.232 35.8105 254.379 36.0254C254.532 36.25 254.724 36.4307 254.955 36.5674C255.186 36.7041 255.46 36.7773 255.775 36.7871ZM263.861 35H264.765V31.2109C264.826 31.097 264.898 30.9928 264.979 30.8984C265.064 30.804 265.155 30.721 265.253 30.6494C265.373 30.568 265.505 30.5046 265.648 30.459C265.792 30.4102 265.946 30.3857 266.112 30.3857C266.304 30.3857 266.474 30.4085 266.62 30.4541C266.77 30.4997 266.897 30.5729 267.001 30.6738C267.102 30.7747 267.178 30.9066 267.23 31.0693C267.283 31.2321 267.309 31.4307 267.309 31.665V35H268.212V31.6455C268.212 31.2939 268.168 30.9912 268.08 30.7373C267.995 30.4801 267.873 30.2686 267.714 30.1025C267.554 29.9365 267.361 29.8145 267.133 29.7363C266.908 29.6582 266.658 29.6191 266.381 29.6191C266.176 29.6224 265.98 29.6533 265.795 29.7119C265.613 29.7673 265.443 29.847 265.287 29.9512C265.183 30.0195 265.084 30.1009 264.989 30.1953C264.898 30.2865 264.813 30.3874 264.735 30.498L264.672 29.7168H263.861V35ZM269.613 32.3096V32.417C269.613 32.7979 269.669 33.151 269.779 33.4766C269.89 33.8021 270.049 34.0853 270.258 34.3262C270.463 34.5671 270.714 34.7559 271.01 34.8926C271.309 35.0293 271.646 35.0977 272.021 35.0977C272.392 35.0977 272.725 35.0293 273.021 34.8926C273.318 34.7559 273.57 34.5671 273.778 34.3262C273.983 34.0853 274.141 33.8021 274.252 33.4766C274.363 33.151 274.418 32.7979 274.418 32.417V32.3096C274.418 31.9287 274.363 31.5755 274.252 31.25C274.141 30.9212 273.983 30.6364 273.778 30.3955C273.57 30.1546 273.316 29.9658 273.017 29.8291C272.72 29.6891 272.385 29.6191 272.011 29.6191C271.64 29.6191 271.306 29.6891 271.01 29.8291C270.714 29.9658 270.463 30.1546 270.258 30.3955C270.049 30.6364 269.89 30.9212 269.779 31.25C269.669 31.5755 269.613 31.9287 269.613 32.3096ZM270.517 32.417V32.3096C270.517 32.0524 270.548 31.8066 270.609 31.5723C270.671 31.3346 270.766 31.1263 270.893 30.9473C271.016 30.7682 271.171 30.6266 271.356 30.5225C271.542 30.415 271.76 30.3613 272.011 30.3613C272.261 30.3613 272.479 30.415 272.665 30.5225C272.854 30.6266 273.012 30.7682 273.139 30.9473C273.262 31.1263 273.355 31.3346 273.417 31.5723C273.482 31.8066 273.515 32.0524 273.515 32.3096V32.417C273.515 32.6774 273.484 32.9264 273.422 33.1641C273.36 33.3984 273.267 33.6051 273.144 33.7842C273.017 33.9632 272.859 34.1048 272.67 34.209C272.484 34.3132 272.268 34.3652 272.021 34.3652C271.77 34.3652 271.55 34.3132 271.361 34.209C271.173 34.1048 271.016 33.9632 270.893 33.7842C270.766 33.6051 270.671 33.3984 270.609 33.1641C270.548 32.9264 270.517 32.6774 270.517 32.417ZM275.702 32.3145V32.417C275.702 32.7946 275.753 33.1478 275.854 33.4766C275.954 33.8021 276.096 34.0853 276.278 34.3262C276.461 34.5671 276.68 34.7559 276.938 34.8926C277.198 35.0293 277.488 35.0977 277.807 35.0977C278.132 35.0977 278.417 35.0423 278.661 34.9316C278.905 34.821 279.115 34.6582 279.291 34.4434L279.33 35H280.16V27.5H279.257V30.2393C279.084 30.0374 278.879 29.8844 278.642 29.7803C278.407 29.6729 278.132 29.6191 277.816 29.6191C277.494 29.6191 277.203 29.6859 276.942 29.8193C276.682 29.9528 276.461 30.1383 276.278 30.376C276.093 30.6136 275.95 30.8984 275.849 31.2305C275.751 31.5592 275.702 31.9206 275.702 32.3145ZM276.605 32.417V32.3145C276.605 32.0573 276.633 31.8132 276.688 31.582C276.744 31.3477 276.83 31.141 276.947 30.9619C277.061 30.7861 277.208 30.6462 277.387 30.542C277.569 30.4378 277.787 30.3857 278.041 30.3857C278.337 30.3857 278.585 30.4557 278.783 30.5957C278.982 30.7324 279.14 30.9082 279.257 31.123V33.5742C279.14 33.8053 278.982 33.9893 278.783 34.126C278.585 34.2627 278.334 34.3311 278.031 34.3311C277.781 34.3311 277.566 34.2806 277.387 34.1797C277.208 34.0755 277.061 33.9355 276.947 33.7598C276.83 33.584 276.744 33.3805 276.688 33.1494C276.633 32.9183 276.605 32.6742 276.605 32.417ZM284.213 35.0977C284.727 35.0977 285.159 34.9951 285.507 34.79C285.858 34.5817 286.122 34.3441 286.298 34.0771L285.746 33.6475C285.58 33.8623 285.372 34.0348 285.121 34.165C284.87 34.2952 284.584 34.3604 284.262 34.3604C284.018 34.3604 283.795 34.3148 283.593 34.2236C283.391 34.1325 283.218 34.0072 283.075 33.8477C282.935 33.6979 282.825 33.5254 282.743 33.3301C282.665 33.1348 282.615 32.9085 282.592 32.6514V32.6172H286.366V32.2119C286.366 31.8441 286.319 31.5023 286.225 31.1865C286.133 30.8708 285.993 30.5957 285.805 30.3613C285.616 30.1302 285.378 29.9495 285.092 29.8193C284.809 29.6859 284.477 29.6191 284.096 29.6191C283.793 29.6191 283.497 29.681 283.207 29.8047C282.921 29.9284 282.665 30.1058 282.44 30.3369C282.213 30.5713 282.03 30.8577 281.894 31.1963C281.757 31.5316 281.688 31.9124 281.688 32.3389V32.5439C281.688 32.9118 281.75 33.252 281.874 33.5645C281.998 33.877 282.17 34.1471 282.392 34.375C282.613 34.6029 282.878 34.7803 283.188 34.9072C283.5 35.0342 283.842 35.0977 284.213 35.0977ZM284.096 30.3613C284.327 30.3613 284.525 30.4036 284.691 30.4883C284.861 30.5729 285.001 30.6836 285.111 30.8203C285.222 30.957 285.308 31.1198 285.37 31.3086C285.432 31.4941 285.463 31.6683 285.463 31.8311V31.875H282.621C282.657 31.6309 282.719 31.416 282.807 31.2305C282.898 31.0417 283.008 30.8822 283.139 30.752C283.269 30.625 283.415 30.529 283.578 30.4639C283.741 30.3955 283.913 30.3613 284.096 30.3613ZM290.814 35V27.8906H290.741L288.051 28.9258V29.751L289.911 29.043V35H290.814ZM295.707 34.4141C295.707 34.6029 295.766 34.764 295.883 34.8975C296.003 35.0277 296.181 35.0928 296.415 35.0928C296.646 35.0928 296.824 35.0277 296.947 34.8975C297.071 34.7673 297.133 34.6061 297.133 34.4141C297.133 34.2188 297.071 34.0544 296.947 33.9209C296.827 33.7842 296.649 33.7158 296.415 33.7158C296.177 33.7158 296 33.7842 295.883 33.9209C295.766 34.0576 295.707 34.222 295.707 34.4141ZM295.707 30.1367C295.707 30.3255 295.766 30.4867 295.883 30.6201C296.003 30.7503 296.181 30.8154 296.415 30.8154C296.646 30.8154 296.824 30.7503 296.947 30.6201C297.071 30.4899 297.133 30.3288 297.133 30.1367C297.133 29.9414 297.071 29.777 296.947 29.6436C296.827 29.5068 296.649 29.4385 296.415 29.4385C296.177 29.4385 296 29.5068 295.883 29.6436C295.766 29.7803 295.707 29.9447 295.707 30.1367ZM307.548 32.998H308.451C308.451 32.8711 308.454 32.7588 308.461 32.6611C308.467 32.5602 308.484 32.4658 308.51 32.3779C308.536 32.29 308.575 32.2038 308.627 32.1191C308.682 32.0345 308.759 31.945 308.856 31.8506C309.009 31.7139 309.164 31.5658 309.32 31.4062C309.48 31.2467 309.623 31.0742 309.75 30.8887C309.877 30.7064 309.981 30.5127 310.062 30.3076C310.144 30.0993 310.185 29.8779 310.185 29.6436C310.185 29.3506 310.137 29.0902 310.043 28.8623C309.949 28.6344 309.812 28.4408 309.633 28.2812C309.454 28.1217 309.234 28.0013 308.974 27.9199C308.716 27.8353 308.424 27.793 308.095 27.793C307.799 27.793 307.522 27.8337 307.265 27.915C307.011 27.9932 306.791 28.1071 306.605 28.2568C306.417 28.4098 306.267 28.5954 306.156 28.8135C306.046 29.0316 305.989 29.2773 305.985 29.5508H306.889C306.889 29.3815 306.923 29.2367 306.991 29.1162C307.06 28.9925 307.151 28.89 307.265 28.8086C307.375 28.7305 307.502 28.6735 307.646 28.6377C307.792 28.5986 307.942 28.5791 308.095 28.5791C308.293 28.5791 308.469 28.6051 308.622 28.6572C308.775 28.7093 308.902 28.7858 309.003 28.8867C309.094 28.9779 309.162 29.0902 309.208 29.2236C309.257 29.3538 309.281 29.5036 309.281 29.6729C309.281 29.8356 309.25 29.9902 309.188 30.1367C309.127 30.2832 309.049 30.4215 308.954 30.5518C308.856 30.6852 308.749 30.8122 308.632 30.9326C308.518 31.0531 308.406 31.1702 308.295 31.2842C308.132 31.4339 308.002 31.5641 307.904 31.6748C307.807 31.7822 307.732 31.8945 307.68 32.0117C307.628 32.1322 307.593 32.2689 307.577 32.4219C307.561 32.5716 307.551 32.7637 307.548 32.998ZM307.445 34.5264C307.445 34.6761 307.491 34.8014 307.582 34.9023C307.676 35.0033 307.816 35.0537 308.002 35.0537C308.188 35.0537 308.327 35.0033 308.422 34.9023C308.52 34.8014 308.568 34.6761 308.568 34.5264C308.568 34.3701 308.52 34.2399 308.422 34.1357C308.327 34.0316 308.188 33.9795 308.002 33.9795C307.816 33.9795 307.676 34.0316 307.582 34.1357C307.491 34.2399 307.445 34.3701 307.445 34.5264ZM314.198 34.79V33.9307H313.217V34.8047C313.217 35.0814 313.184 35.3483 313.119 35.6055C313.054 35.8626 312.943 36.1051 312.787 36.333L313.349 36.6406C313.609 36.4095 313.816 36.1247 313.969 35.7861C314.122 35.4476 314.198 35.1156 314.198 34.79ZM323.92 35H324.823V31.2109C324.885 31.097 324.957 30.9928 325.038 30.8984C325.123 30.804 325.214 30.721 325.312 30.6494C325.432 30.568 325.564 30.5046 325.707 30.459C325.85 30.4102 326.005 30.3857 326.171 30.3857C326.363 30.3857 326.532 30.4085 326.679 30.4541C326.828 30.4997 326.955 30.5729 327.06 30.6738C327.16 30.7747 327.237 30.9066 327.289 31.0693C327.341 31.2321 327.367 31.4307 327.367 31.665V35H328.271V31.6455C328.271 31.2939 328.227 30.9912 328.139 30.7373C328.054 30.4801 327.932 30.2686 327.772 30.1025C327.613 29.9365 327.419 29.8145 327.191 29.7363C326.967 29.6582 326.716 29.6191 326.439 29.6191C326.234 29.6224 326.039 29.6533 325.854 29.7119C325.671 29.7673 325.502 29.847 325.346 29.9512C325.242 30.0195 325.142 30.1009 325.048 30.1953C324.957 30.2865 324.872 30.3874 324.794 30.498L324.73 29.7168H323.92V35ZM329.672 32.3096V32.417C329.672 32.7979 329.727 33.151 329.838 33.4766C329.949 33.8021 330.108 34.0853 330.316 34.3262C330.521 34.5671 330.772 34.7559 331.068 34.8926C331.368 35.0293 331.705 35.0977 332.079 35.0977C332.45 35.0977 332.784 35.0293 333.08 34.8926C333.376 34.7559 333.629 34.5671 333.837 34.3262C334.042 34.0853 334.2 33.8021 334.311 33.4766C334.421 33.151 334.477 32.7979 334.477 32.417V32.3096C334.477 31.9287 334.421 31.5755 334.311 31.25C334.2 30.9212 334.042 30.6364 333.837 30.3955C333.629 30.1546 333.375 29.9658 333.075 29.8291C332.779 29.6891 332.444 29.6191 332.069 29.6191C331.698 29.6191 331.365 29.6891 331.068 29.8291C330.772 29.9658 330.521 30.1546 330.316 30.3955C330.108 30.6364 329.949 30.9212 329.838 31.25C329.727 31.5755 329.672 31.9287 329.672 32.3096ZM330.575 32.417V32.3096C330.575 32.0524 330.606 31.8066 330.668 31.5723C330.73 31.3346 330.824 31.1263 330.951 30.9473C331.075 30.7682 331.229 30.6266 331.415 30.5225C331.601 30.415 331.819 30.3613 332.069 30.3613C332.32 30.3613 332.538 30.415 332.724 30.5225C332.912 30.6266 333.07 30.7682 333.197 30.9473C333.321 31.1263 333.414 31.3346 333.476 31.5723C333.541 31.8066 333.573 32.0524 333.573 32.3096V32.417C333.573 32.6774 333.542 32.9264 333.48 33.1641C333.419 33.3984 333.326 33.6051 333.202 33.7842C333.075 33.9632 332.917 34.1048 332.729 34.209C332.543 34.3132 332.326 34.3652 332.079 34.3652C331.828 34.3652 331.609 34.3132 331.42 34.209C331.231 34.1048 331.075 33.9632 330.951 33.7842C330.824 33.6051 330.73 33.3984 330.668 33.1641C330.606 32.9264 330.575 32.6774 330.575 32.417ZM335.761 32.3145V32.417C335.761 32.7946 335.811 33.1478 335.912 33.4766C336.013 33.8021 336.155 34.0853 336.337 34.3262C336.519 34.5671 336.739 34.7559 336.996 34.8926C337.257 35.0293 337.546 35.0977 337.865 35.0977C338.191 35.0977 338.476 35.0423 338.72 34.9316C338.964 34.821 339.174 34.6582 339.35 34.4434L339.389 35H340.219V27.5H339.315V30.2393C339.143 30.0374 338.938 29.8844 338.7 29.7803C338.466 29.6729 338.191 29.6191 337.875 29.6191C337.553 29.6191 337.261 29.6859 337.001 29.8193C336.741 29.9528 336.519 30.1383 336.337 30.376C336.151 30.6136 336.008 30.8984 335.907 31.2305C335.81 31.5592 335.761 31.9206 335.761 32.3145ZM336.664 32.417V32.3145C336.664 32.0573 336.692 31.8132 336.747 31.582C336.802 31.3477 336.889 31.141 337.006 30.9619C337.12 30.7861 337.266 30.6462 337.445 30.542C337.628 30.4378 337.846 30.3857 338.1 30.3857C338.396 30.3857 338.643 30.4557 338.842 30.5957C339.04 30.7324 339.198 30.9082 339.315 31.123V33.5742C339.198 33.8053 339.04 33.9893 338.842 34.126C338.643 34.2627 338.393 34.3311 338.09 34.3311C337.839 34.3311 337.624 34.2806 337.445 34.1797C337.266 34.0755 337.12 33.9355 337.006 33.7598C336.889 33.584 336.802 33.3805 336.747 33.1494C336.692 32.9183 336.664 32.6742 336.664 32.417ZM344.271 35.0977C344.786 35.0977 345.217 34.9951 345.565 34.79C345.917 34.5817 346.181 34.3441 346.356 34.0771L345.805 33.6475C345.639 33.8623 345.43 34.0348 345.18 34.165C344.929 34.2952 344.643 34.3604 344.32 34.3604C344.076 34.3604 343.853 34.3148 343.651 34.2236C343.45 34.1325 343.277 34.0072 343.134 33.8477C342.994 33.6979 342.883 33.5254 342.802 33.3301C342.724 33.1348 342.673 32.9085 342.65 32.6514V32.6172H346.425V32.2119C346.425 31.8441 346.378 31.5023 346.283 31.1865C346.192 30.8708 346.052 30.5957 345.863 30.3613C345.674 30.1302 345.437 29.9495 345.15 29.8193C344.867 29.6859 344.535 29.6191 344.154 29.6191C343.852 29.6191 343.555 29.681 343.266 29.8047C342.979 29.9284 342.724 30.1058 342.499 30.3369C342.271 30.5713 342.089 30.8577 341.952 31.1963C341.815 31.5316 341.747 31.9124 341.747 32.3389V32.5439C341.747 32.9118 341.809 33.252 341.933 33.5645C342.056 33.877 342.229 34.1471 342.45 34.375C342.672 34.6029 342.937 34.7803 343.246 34.9072C343.559 35.0342 343.9 35.0977 344.271 35.0977ZM344.154 30.3613C344.385 30.3613 344.584 30.4036 344.75 30.4883C344.919 30.5729 345.059 30.6836 345.17 30.8203C345.281 30.957 345.367 31.1198 345.429 31.3086C345.491 31.4941 345.521 31.6683 345.521 31.8311V31.875H342.68C342.715 31.6309 342.777 31.416 342.865 31.2305C342.956 31.0417 343.067 30.8822 343.197 30.752C343.327 30.625 343.474 30.529 343.637 30.4639C343.799 30.3955 343.972 30.3613 344.154 30.3613ZM352.304 35V34.2627H348.734L350.644 32.1924C350.823 31.9971 350.992 31.8018 351.151 31.6064C351.314 31.4079 351.457 31.2077 351.581 31.0059C351.701 30.804 351.798 30.6006 351.869 30.3955C351.941 30.1872 351.977 29.9772 351.977 29.7656C351.977 29.4824 351.926 29.2204 351.825 28.9795C351.728 28.7386 351.586 28.5303 351.4 28.3545C351.215 28.1787 350.987 28.042 350.717 27.9443C350.45 27.8434 350.149 27.793 349.813 27.793C349.449 27.793 349.123 27.8516 348.837 27.9688C348.554 28.0859 348.314 28.2438 348.119 28.4424C347.921 28.641 347.769 28.8737 347.665 29.1406C347.561 29.4043 347.509 29.6859 347.509 29.9854H348.417C348.417 29.764 348.445 29.5638 348.5 29.3848C348.559 29.2057 348.646 29.0527 348.764 28.9258C348.878 28.8021 349.021 28.7061 349.193 28.6377C349.369 28.5693 349.576 28.5352 349.813 28.5352C350.009 28.5352 350.183 28.5693 350.336 28.6377C350.492 28.7028 350.626 28.7923 350.736 28.9062C350.844 29.0202 350.925 29.1553 350.98 29.3115C351.039 29.4645 351.068 29.6289 351.068 29.8047C351.068 29.9479 351.05 30.0879 351.015 30.2246C350.979 30.3581 350.919 30.4997 350.834 30.6494C350.749 30.8024 350.637 30.9684 350.497 31.1475C350.357 31.3265 350.183 31.5316 349.975 31.7627L347.646 34.3506V35H352.304ZM355.766 34.4141C355.766 34.6029 355.824 34.764 355.941 34.8975C356.062 35.0277 356.239 35.0928 356.474 35.0928C356.705 35.0928 356.882 35.0277 357.006 34.8975C357.13 34.7673 357.191 34.6061 357.191 34.4141C357.191 34.2188 357.13 34.0544 357.006 33.9209C356.885 33.7842 356.708 33.7158 356.474 33.7158C356.236 33.7158 356.059 33.7842 355.941 33.9209C355.824 34.0576 355.766 34.222 355.766 34.4141ZM355.766 30.1367C355.766 30.3255 355.824 30.4867 355.941 30.6201C356.062 30.7503 356.239 30.8154 356.474 30.8154C356.705 30.8154 356.882 30.7503 357.006 30.6201C357.13 30.4899 357.191 30.3288 357.191 30.1367C357.191 29.9414 357.13 29.777 357.006 29.6436C356.885 29.5068 356.708 29.4385 356.474 29.4385C356.236 29.4385 356.059 29.5068 355.941 29.6436C355.824 29.7803 355.766 29.9447 355.766 30.1367ZM367.606 32.998H368.51C368.51 32.8711 368.513 32.7588 368.52 32.6611C368.526 32.5602 368.542 32.4658 368.568 32.3779C368.594 32.29 368.633 32.2038 368.686 32.1191C368.741 32.0345 368.817 31.945 368.915 31.8506C369.068 31.7139 369.223 31.5658 369.379 31.4062C369.538 31.2467 369.682 31.0742 369.809 30.8887C369.936 30.7064 370.04 30.5127 370.121 30.3076C370.202 30.0993 370.243 29.8779 370.243 29.6436C370.243 29.3506 370.196 29.0902 370.102 28.8623C370.007 28.6344 369.87 28.4408 369.691 28.2812C369.512 28.1217 369.293 28.0013 369.032 27.9199C368.775 27.8353 368.482 27.793 368.153 27.793C367.857 27.793 367.58 27.8337 367.323 27.915C367.069 27.9932 366.85 28.1071 366.664 28.2568C366.475 28.4098 366.326 28.5954 366.215 28.8135C366.104 29.0316 366.047 29.2773 366.044 29.5508H366.947C366.947 29.3815 366.981 29.2367 367.05 29.1162C367.118 28.9925 367.209 28.89 367.323 28.8086C367.434 28.7305 367.561 28.6735 367.704 28.6377C367.851 28.5986 368 28.5791 368.153 28.5791C368.352 28.5791 368.528 28.6051 368.681 28.6572C368.834 28.7093 368.961 28.7858 369.062 28.8867C369.153 28.9779 369.221 29.0902 369.267 29.2236C369.315 29.3538 369.34 29.5036 369.34 29.6729C369.34 29.8356 369.309 29.9902 369.247 30.1367C369.185 30.2832 369.107 30.4215 369.013 30.5518C368.915 30.6852 368.808 30.8122 368.69 30.9326C368.576 31.0531 368.464 31.1702 368.354 31.2842C368.191 31.4339 368.061 31.5641 367.963 31.6748C367.865 31.7822 367.79 31.8945 367.738 32.0117C367.686 32.1322 367.652 32.2689 367.636 32.4219C367.619 32.5716 367.61 32.7637 367.606 32.998ZM367.504 34.5264C367.504 34.6761 367.549 34.8014 367.641 34.9023C367.735 35.0033 367.875 35.0537 368.061 35.0537C368.246 35.0537 368.386 35.0033 368.48 34.9023C368.578 34.8014 368.627 34.6761 368.627 34.5264C368.627 34.3701 368.578 34.2399 368.48 34.1357C368.386 34.0316 368.246 33.9795 368.061 33.9795C367.875 33.9795 367.735 34.0316 367.641 34.1357C367.549 34.2399 367.504 34.3701 367.504 34.5264ZM378.7 36.2256L378.803 36.7871C379.122 36.7806 379.397 36.7074 379.628 36.5674C379.859 36.4274 380.051 36.2484 380.204 36.0303C380.354 35.8122 380.465 35.5697 380.536 35.3027C380.608 35.0391 380.644 34.777 380.644 34.5166V33.6914C380.644 33.4635 380.67 33.2666 380.722 33.1006C380.774 32.9346 380.854 32.7962 380.961 32.6855C381.072 32.5716 381.213 32.4886 381.386 32.4365C381.562 32.3812 381.767 32.3519 382.001 32.3486V31.6406C381.734 31.6406 381.505 31.6064 381.312 31.5381C381.124 31.4665 380.976 31.3542 380.868 31.2012C380.793 31.0938 380.736 30.9668 380.697 30.8203C380.661 30.6706 380.644 30.498 380.644 30.3027V29.4727C380.644 29.1992 380.606 28.9225 380.531 28.6426C380.46 28.3626 380.341 28.1104 380.175 27.8857C380.028 27.6872 379.841 27.526 379.613 27.4023C379.389 27.2786 379.118 27.2119 378.803 27.2021L378.705 27.7637C378.939 27.7702 379.125 27.8255 379.262 27.9297C379.398 28.0339 379.503 28.1657 379.574 28.3252C379.643 28.488 379.687 28.6702 379.706 28.8721C379.729 29.0739 379.74 29.2741 379.74 29.4727V30.3027C379.74 30.5566 379.778 30.7926 379.853 31.0107C379.927 31.2256 380.043 31.4144 380.199 31.5771C380.281 31.665 380.375 31.7448 380.482 31.8164C380.593 31.888 380.714 31.9499 380.844 32.002C380.717 32.054 380.6 32.1143 380.492 32.1826C380.388 32.251 380.294 32.3275 380.209 32.4121C380.049 32.5716 379.931 32.7604 379.853 32.9785C379.778 33.1966 379.74 33.4342 379.74 33.6914V34.5166C379.74 34.7184 379.722 34.9186 379.687 35.1172C379.654 35.319 379.599 35.4997 379.521 35.6592C379.439 35.8219 379.332 35.9554 379.198 36.0596C379.065 36.1637 378.899 36.2191 378.7 36.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"307.5\"\n      y=\"67.5\"\n      width=\"55\"\n      height=\"55\"\n      stroke=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M151.753 94.5029V91.5H150.85V99H151.753V95.1621C151.818 95.0579 151.891 94.9635 151.973 94.8789C152.057 94.791 152.148 94.7145 152.246 94.6494C152.37 94.5648 152.505 94.4997 152.651 94.4541C152.798 94.4085 152.952 94.3857 153.115 94.3857C153.314 94.3825 153.49 94.4102 153.643 94.4688C153.796 94.5241 153.923 94.6087 154.023 94.7227C154.118 94.8268 154.189 94.9587 154.238 95.1182C154.287 95.2744 154.312 95.4567 154.312 95.665V99H155.215V95.6748C155.215 95.32 155.171 95.014 155.083 94.7568C154.998 94.4964 154.876 94.2816 154.717 94.1123C154.557 93.943 154.364 93.8193 154.136 93.7412C153.911 93.6598 153.66 93.6191 153.384 93.6191C153.172 93.6224 152.972 93.6533 152.783 93.7119C152.598 93.7705 152.427 93.8568 152.271 93.9707C152.173 94.0391 152.08 94.1188 151.992 94.21C151.904 94.2979 151.825 94.3955 151.753 94.5029ZM160.327 99H161.27V98.9219C161.211 98.7754 161.165 98.6045 161.133 98.4092C161.1 98.2106 161.084 98.0234 161.084 97.8477V95.3916C161.084 95.0954 161.03 94.8366 160.923 94.6152C160.815 94.3939 160.669 94.2083 160.483 94.0586C160.295 93.9121 160.072 93.8031 159.814 93.7314C159.557 93.6566 159.279 93.6191 158.979 93.6191C158.651 93.6191 158.356 93.6647 158.096 93.7559C157.839 93.847 157.62 93.9658 157.441 94.1123C157.259 94.262 157.119 94.4297 157.021 94.6152C156.927 94.8008 156.878 94.9896 156.875 95.1816H157.783C157.783 95.071 157.809 94.9652 157.861 94.8643C157.917 94.7601 157.993 94.6706 158.091 94.5957C158.188 94.5208 158.307 94.4606 158.447 94.415C158.59 94.3695 158.752 94.3467 158.931 94.3467C159.123 94.3467 159.295 94.3711 159.448 94.4199C159.604 94.4688 159.736 94.5371 159.844 94.625C159.951 94.7161 160.034 94.8252 160.093 94.9521C160.151 95.0791 160.181 95.2223 160.181 95.3818V95.7969H159.194C158.826 95.7969 158.493 95.8327 158.193 95.9043C157.897 95.9759 157.643 96.0833 157.432 96.2266C157.22 96.373 157.056 96.5553 156.938 96.7734C156.825 96.9915 156.768 97.2454 156.768 97.5352C156.768 97.7565 156.81 97.9632 156.895 98.1553C156.982 98.3441 157.106 98.5068 157.266 98.6436C157.422 98.7835 157.612 98.8942 157.837 98.9756C158.065 99.057 158.319 99.0977 158.599 99.0977C158.771 99.0977 158.934 99.0798 159.087 99.0439C159.24 99.0081 159.385 98.9593 159.521 98.8975C159.655 98.8356 159.777 98.764 159.888 98.6826C160.002 98.6012 160.104 98.515 160.195 98.4238C160.205 98.5345 160.22 98.6419 160.239 98.7461C160.262 98.847 160.291 98.9316 160.327 99ZM158.73 98.3115C158.555 98.3115 158.4 98.2887 158.267 98.2432C158.133 98.1976 158.022 98.1341 157.935 98.0527C157.847 97.9746 157.78 97.8802 157.734 97.7695C157.692 97.6589 157.671 97.5384 157.671 97.4082C157.671 97.2715 157.695 97.1494 157.744 97.042C157.796 96.9346 157.871 96.8418 157.969 96.7637C158.105 96.653 158.289 96.5716 158.521 96.5195C158.755 96.4642 159.028 96.4365 159.341 96.4365H160.181V97.5059C160.129 97.61 160.057 97.7109 159.966 97.8086C159.875 97.903 159.767 97.9876 159.644 98.0625C159.517 98.1374 159.377 98.1976 159.224 98.2432C159.071 98.2887 158.906 98.3115 158.73 98.3115ZM166.372 97.5986C166.372 97.6833 166.356 97.763 166.323 97.8379C166.291 97.9128 166.243 97.9811 166.182 98.043C166.081 98.1439 165.941 98.2236 165.762 98.2822C165.583 98.3376 165.373 98.3652 165.132 98.3652C164.979 98.3652 164.824 98.349 164.668 98.3164C164.512 98.2839 164.37 98.2285 164.243 98.1504C164.113 98.0723 164.004 97.9697 163.916 97.8428C163.831 97.7158 163.783 97.5596 163.77 97.374H162.866C162.866 97.5986 162.917 97.8151 163.018 98.0234C163.122 98.2318 163.271 98.4141 163.467 98.5703C163.659 98.7298 163.895 98.8584 164.175 98.9561C164.455 99.0505 164.774 99.0977 165.132 99.0977C165.444 99.0977 165.732 99.0602 165.996 98.9854C166.26 98.9105 166.486 98.8047 166.675 98.668C166.864 98.5312 167.01 98.3669 167.114 98.1748C167.222 97.9827 167.275 97.7695 167.275 97.5352C167.275 97.3171 167.228 97.125 167.134 96.959C167.043 96.793 166.909 96.6465 166.733 96.5195C166.558 96.3958 166.341 96.29 166.084 96.2021C165.827 96.111 165.535 96.0312 165.21 95.9629C164.963 95.9141 164.757 95.8636 164.595 95.8115C164.435 95.7594 164.308 95.7008 164.214 95.6357C164.116 95.5706 164.048 95.4974 164.009 95.416C163.97 95.3346 163.95 95.2419 163.95 95.1377C163.95 95.0368 163.975 94.9391 164.023 94.8447C164.072 94.7503 164.146 94.6673 164.243 94.5957C164.338 94.5241 164.456 94.4671 164.6 94.4248C164.746 94.3825 164.915 94.3613 165.107 94.3613C165.293 94.3613 165.459 94.3874 165.605 94.4395C165.755 94.4915 165.882 94.5599 165.986 94.6445C166.09 94.7292 166.172 94.8268 166.23 94.9375C166.289 95.0449 166.318 95.1556 166.318 95.2695H167.222C167.222 95.0384 167.171 94.8236 167.07 94.625C166.973 94.4232 166.833 94.2474 166.65 94.0977C166.468 93.9479 166.247 93.8307 165.986 93.7461C165.726 93.6615 165.433 93.6191 165.107 93.6191C164.805 93.6191 164.526 93.6598 164.272 93.7412C164.022 93.8226 163.805 93.9333 163.623 94.0732C163.441 94.2132 163.299 94.3776 163.198 94.5664C163.097 94.752 163.047 94.9521 163.047 95.167C163.047 95.3851 163.096 95.5771 163.193 95.7432C163.291 95.9059 163.429 96.0475 163.608 96.168C163.784 96.2917 163.996 96.3975 164.243 96.4854C164.494 96.5732 164.771 96.6481 165.073 96.71C165.321 96.7588 165.527 96.8141 165.693 96.876C165.859 96.9346 165.993 96.9997 166.094 97.0713C166.195 97.1429 166.266 97.2227 166.309 97.3105C166.351 97.3952 166.372 97.4912 166.372 97.5986ZM175.63 93.2139V93.9268H176.514V93.1992C176.514 92.9193 176.551 92.6589 176.626 92.418C176.704 92.1771 176.82 91.9411 176.973 91.71L176.479 91.3584C176.343 91.4756 176.222 91.609 176.118 91.7588C176.014 91.9085 175.926 92.0648 175.854 92.2275C175.78 92.3936 175.723 92.5612 175.684 92.7305C175.648 92.8997 175.63 93.0609 175.63 93.2139ZM177.217 93.2139V93.9268H178.101V93.1992C178.101 92.9193 178.138 92.6589 178.213 92.418C178.291 92.1771 178.407 91.9411 178.56 91.71L178.066 91.3584C177.93 91.4756 177.809 91.609 177.705 91.7588C177.601 91.9085 177.513 92.0648 177.441 92.2275C177.367 92.3936 177.31 92.5612 177.271 92.7305C177.235 92.8997 177.217 93.0609 177.217 93.2139ZM182.524 96.998H183.428C183.428 96.8711 183.431 96.7588 183.438 96.6611C183.444 96.5602 183.46 96.4658 183.486 96.3779C183.512 96.29 183.551 96.2038 183.604 96.1191C183.659 96.0345 183.735 95.945 183.833 95.8506C183.986 95.7139 184.141 95.5658 184.297 95.4062C184.456 95.2467 184.6 95.0742 184.727 94.8887C184.854 94.7064 184.958 94.5127 185.039 94.3076C185.12 94.0993 185.161 93.8779 185.161 93.6436C185.161 93.3506 185.114 93.0902 185.02 92.8623C184.925 92.6344 184.788 92.4408 184.609 92.2812C184.43 92.1217 184.211 92.0013 183.95 91.9199C183.693 91.8353 183.4 91.793 183.071 91.793C182.775 91.793 182.498 91.8337 182.241 91.915C181.987 91.9932 181.768 92.1071 181.582 92.2568C181.393 92.4098 181.243 92.5954 181.133 92.8135C181.022 93.0316 180.965 93.2773 180.962 93.5508H181.865C181.865 93.3815 181.899 93.2367 181.968 93.1162C182.036 92.9925 182.127 92.89 182.241 92.8086C182.352 92.7305 182.479 92.6735 182.622 92.6377C182.769 92.5986 182.918 92.5791 183.071 92.5791C183.27 92.5791 183.446 92.6051 183.599 92.6572C183.752 92.7093 183.879 92.7858 183.979 92.8867C184.071 92.9779 184.139 93.0902 184.185 93.2236C184.233 93.3538 184.258 93.5036 184.258 93.6729C184.258 93.8356 184.227 93.9902 184.165 94.1367C184.103 94.2832 184.025 94.4215 183.931 94.5518C183.833 94.6852 183.726 94.8122 183.608 94.9326C183.494 95.0531 183.382 95.1702 183.271 95.2842C183.109 95.4339 182.979 95.5641 182.881 95.6748C182.783 95.7822 182.708 95.8945 182.656 96.0117C182.604 96.1322 182.57 96.2689 182.554 96.4219C182.537 96.5716 182.528 96.7637 182.524 96.998ZM182.422 98.5264C182.422 98.6761 182.467 98.8014 182.559 98.9023C182.653 99.0033 182.793 99.0537 182.979 99.0537C183.164 99.0537 183.304 99.0033 183.398 98.9023C183.496 98.8014 183.545 98.6761 183.545 98.5264C183.545 98.3701 183.496 98.2399 183.398 98.1357C183.304 98.0316 183.164 97.9795 182.979 97.9795C182.793 97.9795 182.653 98.0316 182.559 98.1357C182.467 98.2399 182.422 98.3701 182.422 98.5264ZM188.848 92.1104V91.3926H187.964V92.125C187.964 92.4049 187.925 92.6654 187.847 92.9062C187.772 93.1471 187.658 93.3831 187.505 93.6143L187.998 93.9658C188.135 93.8486 188.255 93.7152 188.359 93.5654C188.464 93.4157 188.553 93.2578 188.628 93.0918C188.7 92.929 188.753 92.763 188.789 92.5938C188.828 92.4245 188.848 92.2633 188.848 92.1104ZM190.469 92.1104V91.3926H189.585V92.125C189.585 92.4049 189.546 92.6654 189.468 92.9062C189.393 93.1471 189.279 93.3831 189.126 93.6143L189.619 93.9658C189.756 93.8486 189.876 93.7152 189.98 93.5654C190.085 93.4157 190.174 93.2578 190.249 93.0918C190.321 92.929 190.374 92.763 190.41 92.5938C190.449 92.4245 190.469 92.2633 190.469 92.1104ZM198.892 101.031H199.795V98.4922C199.86 98.5638 199.93 98.6305 200.005 98.6924C200.08 98.751 200.16 98.8047 200.244 98.8535C200.384 98.9316 200.54 98.9919 200.713 99.0342C200.889 99.0765 201.077 99.0977 201.279 99.0977C201.611 99.0977 201.906 99.0293 202.163 98.8926C202.424 98.7559 202.642 98.5671 202.817 98.3262C202.993 98.0853 203.127 97.8021 203.218 97.4766C203.309 97.1478 203.354 96.7946 203.354 96.417V96.3145C203.354 95.9206 203.309 95.5592 203.218 95.2305C203.127 94.8984 202.993 94.6136 202.817 94.376C202.642 94.1383 202.424 93.9528 202.163 93.8193C201.903 93.6859 201.603 93.6191 201.265 93.6191C201.073 93.6191 200.892 93.6403 200.723 93.6826C200.557 93.7217 200.405 93.7803 200.269 93.8584C200.171 93.9105 200.08 93.974 199.995 94.0488C199.91 94.1204 199.832 94.2018 199.761 94.293L199.717 93.7168H198.892V101.031ZM202.451 96.3145V96.417C202.451 96.6742 202.422 96.9199 202.363 97.1543C202.308 97.3887 202.222 97.5954 202.104 97.7744C201.987 97.9535 201.838 98.0967 201.655 98.2041C201.473 98.3083 201.257 98.3604 201.006 98.3604C200.85 98.3604 200.706 98.3408 200.576 98.3018C200.449 98.2627 200.334 98.209 200.229 98.1406C200.138 98.082 200.057 98.0104 199.985 97.9258C199.914 97.8411 199.85 97.75 199.795 97.6523V95.1084C199.857 94.9977 199.928 94.8968 200.01 94.8057C200.091 94.7145 200.184 94.638 200.288 94.5762C200.382 94.5143 200.488 94.4671 200.605 94.4346C200.726 94.402 200.856 94.3857 200.996 94.3857C201.25 94.3857 201.468 94.4378 201.65 94.542C201.833 94.6462 201.984 94.7861 202.104 94.9619C202.222 95.141 202.308 95.3477 202.363 95.582C202.422 95.8132 202.451 96.0573 202.451 96.3145ZM205.044 91.5V92.2861H206.841V98.2188H205.044V99H209.468V98.2188H207.744V91.5H205.044ZM214.38 99H215.322V98.9219C215.264 98.7754 215.218 98.6045 215.186 98.4092C215.153 98.2106 215.137 98.0234 215.137 97.8477V95.3916C215.137 95.0954 215.083 94.8366 214.976 94.6152C214.868 94.3939 214.722 94.2083 214.536 94.0586C214.347 93.9121 214.124 93.8031 213.867 93.7314C213.61 93.6566 213.332 93.6191 213.032 93.6191C212.703 93.6191 212.409 93.6647 212.148 93.7559C211.891 93.847 211.673 93.9658 211.494 94.1123C211.312 94.262 211.172 94.4297 211.074 94.6152C210.98 94.8008 210.931 94.9896 210.928 95.1816H211.836C211.836 95.071 211.862 94.9652 211.914 94.8643C211.969 94.7601 212.046 94.6706 212.144 94.5957C212.241 94.5208 212.36 94.4606 212.5 94.415C212.643 94.3695 212.804 94.3467 212.983 94.3467C213.175 94.3467 213.348 94.3711 213.501 94.4199C213.657 94.4688 213.789 94.5371 213.896 94.625C214.004 94.7161 214.087 94.8252 214.146 94.9521C214.204 95.0791 214.233 95.2223 214.233 95.3818V95.7969H213.247C212.879 95.7969 212.546 95.8327 212.246 95.9043C211.95 95.9759 211.696 96.0833 211.484 96.2266C211.273 96.373 211.108 96.5553 210.991 96.7734C210.877 96.9915 210.82 97.2454 210.82 97.5352C210.82 97.7565 210.863 97.9632 210.947 98.1553C211.035 98.3441 211.159 98.5068 211.318 98.6436C211.475 98.7835 211.665 98.8942 211.89 98.9756C212.118 99.057 212.371 99.0977 212.651 99.0977C212.824 99.0977 212.987 99.0798 213.14 99.0439C213.293 99.0081 213.438 98.9593 213.574 98.8975C213.708 98.8356 213.83 98.764 213.94 98.6826C214.054 98.6012 214.157 98.515 214.248 98.4238C214.258 98.5345 214.272 98.6419 214.292 98.7461C214.315 98.847 214.344 98.9316 214.38 99ZM212.783 98.3115C212.607 98.3115 212.453 98.2887 212.319 98.2432C212.186 98.1976 212.075 98.1341 211.987 98.0527C211.899 97.9746 211.833 97.8802 211.787 97.7695C211.745 97.6589 211.724 97.5384 211.724 97.4082C211.724 97.2715 211.748 97.1494 211.797 97.042C211.849 96.9346 211.924 96.8418 212.021 96.7637C212.158 96.653 212.342 96.5716 212.573 96.5195C212.808 96.4642 213.081 96.4365 213.394 96.4365H214.233V97.5059C214.181 97.61 214.11 97.7109 214.019 97.8086C213.927 97.903 213.82 97.9876 213.696 98.0625C213.569 98.1374 213.429 98.1976 213.276 98.2432C213.123 98.2887 212.959 98.3115 212.783 98.3115ZM219.165 98.3652C218.882 98.3652 218.644 98.3099 218.452 98.1992C218.263 98.0853 218.112 97.9372 217.998 97.7549C217.881 97.5758 217.796 97.374 217.744 97.1494C217.695 96.9215 217.671 96.6921 217.671 96.4609V96.2559C217.671 96.028 217.695 95.8018 217.744 95.5771C217.796 95.3525 217.881 95.1491 217.998 94.9668C218.115 94.7878 218.268 94.6429 218.457 94.5322C218.649 94.4183 218.885 94.3613 219.165 94.3613C219.347 94.3613 219.517 94.3923 219.673 94.4541C219.832 94.516 219.969 94.6006 220.083 94.708C220.197 94.8154 220.286 94.9408 220.352 95.084C220.42 95.224 220.456 95.3737 220.459 95.5332H221.313C221.313 95.2663 221.26 95.0156 221.152 94.7812C221.045 94.5469 220.897 94.3434 220.708 94.1709C220.516 94.0016 220.288 93.8682 220.024 93.7705C219.764 93.6696 219.478 93.6191 219.165 93.6191C218.765 93.6191 218.415 93.6908 218.115 93.834C217.816 93.9772 217.567 94.1693 217.368 94.4102C217.166 94.6543 217.015 94.9359 216.914 95.2549C216.813 95.5739 216.763 95.9076 216.763 96.2559V96.4609C216.763 96.8125 216.813 97.1478 216.914 97.4668C217.015 97.7826 217.166 98.0609 217.368 98.3018C217.567 98.5459 217.816 98.7396 218.115 98.8828C218.415 99.026 218.765 99.0977 219.165 99.0977C219.445 99.0977 219.714 99.0505 219.971 98.9561C220.228 98.8584 220.456 98.7282 220.654 98.5654C220.853 98.4059 221.011 98.2204 221.128 98.0088C221.248 97.7939 221.31 97.5693 221.313 97.335H220.459C220.456 97.4814 220.417 97.6182 220.342 97.7451C220.27 97.8688 220.174 97.9762 220.054 98.0674C219.933 98.1618 219.795 98.235 219.639 98.2871C219.486 98.3392 219.328 98.3652 219.165 98.3652ZM225.254 99.0977C225.768 99.0977 226.2 98.9951 226.548 98.79C226.899 98.5817 227.163 98.3441 227.339 98.0771L226.787 97.6475C226.621 97.8623 226.413 98.0348 226.162 98.165C225.911 98.2952 225.625 98.3604 225.303 98.3604C225.059 98.3604 224.836 98.3148 224.634 98.2236C224.432 98.1325 224.259 98.0072 224.116 97.8477C223.976 97.6979 223.866 97.5254 223.784 97.3301C223.706 97.1348 223.656 96.9085 223.633 96.6514V96.6172H227.407V96.2119C227.407 95.8441 227.36 95.5023 227.266 95.1865C227.174 94.8708 227.035 94.5957 226.846 94.3613C226.657 94.1302 226.419 93.9495 226.133 93.8193C225.85 93.6859 225.518 93.6191 225.137 93.6191C224.834 93.6191 224.538 93.681 224.248 93.8047C223.962 93.9284 223.706 94.1058 223.481 94.3369C223.254 94.5713 223.071 94.8577 222.935 95.1963C222.798 95.5316 222.729 95.9124 222.729 96.3389V96.5439C222.729 96.9118 222.791 97.252 222.915 97.5645C223.039 97.877 223.211 98.1471 223.433 98.375C223.654 98.6029 223.919 98.7803 224.229 98.9072C224.541 99.0342 224.883 99.0977 225.254 99.0977ZM225.137 94.3613C225.368 94.3613 225.566 94.4036 225.732 94.4883C225.902 94.5729 226.042 94.6836 226.152 94.8203C226.263 94.957 226.349 95.1198 226.411 95.3086C226.473 95.4941 226.504 95.6683 226.504 95.8311V95.875H223.662C223.698 95.6309 223.76 95.416 223.848 95.2305C223.939 95.0417 224.049 94.8822 224.18 94.752C224.31 94.625 224.456 94.529 224.619 94.4639C224.782 94.3955 224.954 94.3613 225.137 94.3613ZM229.829 94.5029V91.5H228.926V99H229.829V95.1621C229.894 95.0579 229.967 94.9635 230.049 94.8789C230.133 94.791 230.225 94.7145 230.322 94.6494C230.446 94.5648 230.581 94.4997 230.728 94.4541C230.874 94.4085 231.029 94.3857 231.191 94.3857C231.39 94.3825 231.566 94.4102 231.719 94.4688C231.872 94.5241 231.999 94.6087 232.1 94.7227C232.194 94.8268 232.266 94.9587 232.314 95.1182C232.363 95.2744 232.388 95.4567 232.388 95.665V99H233.291V95.6748C233.291 95.32 233.247 95.014 233.159 94.7568C233.075 94.4964 232.952 94.2816 232.793 94.1123C232.633 93.943 232.44 93.8193 232.212 93.7412C231.987 93.6598 231.737 93.6191 231.46 93.6191C231.248 93.6224 231.048 93.6533 230.859 93.7119C230.674 93.7705 230.503 93.8568 230.347 93.9707C230.249 94.0391 230.156 94.1188 230.068 94.21C229.98 94.2979 229.901 94.3955 229.829 94.5029ZM234.678 96.3096V96.417C234.678 96.7979 234.733 97.151 234.844 97.4766C234.954 97.8021 235.114 98.0853 235.322 98.3262C235.527 98.5671 235.778 98.7559 236.074 98.8926C236.374 99.0293 236.711 99.0977 237.085 99.0977C237.456 99.0977 237.79 99.0293 238.086 98.8926C238.382 98.7559 238.634 98.5671 238.843 98.3262C239.048 98.0853 239.206 97.8021 239.316 97.4766C239.427 97.151 239.482 96.7979 239.482 96.417V96.3096C239.482 95.9287 239.427 95.5755 239.316 95.25C239.206 94.9212 239.048 94.6364 238.843 94.3955C238.634 94.1546 238.381 93.9658 238.081 93.8291C237.785 93.6891 237.45 93.6191 237.075 93.6191C236.704 93.6191 236.37 93.6891 236.074 93.8291C235.778 93.9658 235.527 94.1546 235.322 94.3955C235.114 94.6364 234.954 94.9212 234.844 95.25C234.733 95.5755 234.678 95.9287 234.678 96.3096ZM235.581 96.417V96.3096C235.581 96.0524 235.612 95.8066 235.674 95.5723C235.736 95.3346 235.83 95.1263 235.957 94.9473C236.081 94.7682 236.235 94.6266 236.421 94.5225C236.606 94.415 236.825 94.3613 237.075 94.3613C237.326 94.3613 237.544 94.415 237.729 94.5225C237.918 94.6266 238.076 94.7682 238.203 94.9473C238.327 95.1263 238.42 95.3346 238.481 95.5723C238.547 95.8066 238.579 96.0524 238.579 96.3096V96.417C238.579 96.6774 238.548 96.9264 238.486 97.1641C238.424 97.3984 238.332 97.6051 238.208 97.7842C238.081 97.9632 237.923 98.1048 237.734 98.209C237.549 98.3132 237.332 98.3652 237.085 98.3652C236.834 98.3652 236.615 98.3132 236.426 98.209C236.237 98.1048 236.081 97.9632 235.957 97.7842C235.83 97.6051 235.736 97.3984 235.674 97.1641C235.612 96.9264 235.581 96.6774 235.581 96.417ZM241.079 91.5V92.2861H242.876V98.2188H241.079V99H245.503V98.2188H243.779V91.5H241.079ZM246.772 96.3145V96.417C246.772 96.7946 246.823 97.1478 246.924 97.4766C247.025 97.8021 247.166 98.0853 247.349 98.3262C247.531 98.5671 247.751 98.7559 248.008 98.8926C248.268 99.0293 248.558 99.0977 248.877 99.0977C249.202 99.0977 249.487 99.0423 249.731 98.9316C249.976 98.821 250.186 98.6582 250.361 98.4434L250.4 99H251.23V91.5H250.327V94.2393C250.155 94.0374 249.95 93.8844 249.712 93.7803C249.478 93.6729 249.202 93.6191 248.887 93.6191C248.564 93.6191 248.273 93.6859 248.013 93.8193C247.752 93.9528 247.531 94.1383 247.349 94.376C247.163 94.6136 247.02 94.8984 246.919 95.2305C246.821 95.5592 246.772 95.9206 246.772 96.3145ZM247.676 96.417V96.3145C247.676 96.0573 247.703 95.8132 247.759 95.582C247.814 95.3477 247.9 95.141 248.018 94.9619C248.132 94.7861 248.278 94.6462 248.457 94.542C248.639 94.4378 248.857 94.3857 249.111 94.3857C249.408 94.3857 249.655 94.4557 249.854 94.5957C250.052 94.7324 250.21 94.9082 250.327 95.123V97.5742C250.21 97.8053 250.052 97.9893 249.854 98.126C249.655 98.2627 249.404 98.3311 249.102 98.3311C248.851 98.3311 248.636 98.2806 248.457 98.1797C248.278 98.0755 248.132 97.9355 248.018 97.7598C247.9 97.584 247.814 97.3805 247.759 97.1494C247.703 96.9183 247.676 96.6742 247.676 96.417ZM255.283 99.0977C255.798 99.0977 256.229 98.9951 256.577 98.79C256.929 98.5817 257.192 98.3441 257.368 98.0771L256.816 97.6475C256.65 97.8623 256.442 98.0348 256.191 98.165C255.941 98.2952 255.654 98.3604 255.332 98.3604C255.088 98.3604 254.865 98.3148 254.663 98.2236C254.461 98.1325 254.289 98.0072 254.146 97.8477C254.006 97.6979 253.895 97.5254 253.813 97.3301C253.735 97.1348 253.685 96.9085 253.662 96.6514V96.6172H257.437V96.2119C257.437 95.8441 257.389 95.5023 257.295 95.1865C257.204 94.8708 257.064 94.5957 256.875 94.3613C256.686 94.1302 256.449 93.9495 256.162 93.8193C255.879 93.6859 255.547 93.6191 255.166 93.6191C254.863 93.6191 254.567 93.681 254.277 93.8047C253.991 93.9284 253.735 94.1058 253.511 94.3369C253.283 94.5713 253.101 94.8577 252.964 95.1963C252.827 95.5316 252.759 95.9124 252.759 96.3389V96.5439C252.759 96.9118 252.821 97.252 252.944 97.5645C253.068 97.877 253.241 98.1471 253.462 98.375C253.683 98.6029 253.949 98.7803 254.258 98.9072C254.57 99.0342 254.912 99.0977 255.283 99.0977ZM255.166 94.3613C255.397 94.3613 255.596 94.4036 255.762 94.4883C255.931 94.5729 256.071 94.6836 256.182 94.8203C256.292 94.957 256.379 95.1198 256.44 95.3086C256.502 95.4941 256.533 95.6683 256.533 95.8311V95.875H253.691C253.727 95.6309 253.789 95.416 253.877 95.2305C253.968 95.0417 254.079 94.8822 254.209 94.752C254.339 94.625 254.486 94.529 254.648 94.4639C254.811 94.3955 254.984 94.3613 255.166 94.3613ZM262.417 93.6191C262.033 93.6191 261.689 93.7038 261.387 93.873C261.087 94.0391 260.83 94.2669 260.615 94.5566L260.61 94.4248L260.571 93.7168H259.712V99H260.62V95.6113C260.679 95.4486 260.752 95.3021 260.84 95.1719C260.931 95.0384 261.037 94.9261 261.157 94.835C261.291 94.7308 261.447 94.6527 261.626 94.6006C261.805 94.5452 262.005 94.5176 262.227 94.5176C262.399 94.5176 262.563 94.5273 262.72 94.5469C262.879 94.5632 263.047 94.5908 263.223 94.6299L263.345 93.7461C263.254 93.707 263.117 93.6761 262.935 93.6533C262.756 93.6305 262.583 93.6191 262.417 93.6191ZM266.606 96.998H267.51C267.51 96.8711 267.513 96.7588 267.52 96.6611C267.526 96.5602 267.542 96.4658 267.568 96.3779C267.594 96.29 267.633 96.2038 267.686 96.1191C267.741 96.0345 267.817 95.945 267.915 95.8506C268.068 95.7139 268.223 95.5658 268.379 95.4062C268.538 95.2467 268.682 95.0742 268.809 94.8887C268.936 94.7064 269.04 94.5127 269.121 94.3076C269.202 94.0993 269.243 93.8779 269.243 93.6436C269.243 93.3506 269.196 93.0902 269.102 92.8623C269.007 92.6344 268.87 92.4408 268.691 92.2812C268.512 92.1217 268.293 92.0013 268.032 91.9199C267.775 91.8353 267.482 91.793 267.153 91.793C266.857 91.793 266.58 91.8337 266.323 91.915C266.069 91.9932 265.85 92.1071 265.664 92.2568C265.475 92.4098 265.326 92.5954 265.215 92.8135C265.104 93.0316 265.047 93.2773 265.044 93.5508H265.947C265.947 93.3815 265.981 93.2367 266.05 93.1162C266.118 92.9925 266.209 92.89 266.323 92.8086C266.434 92.7305 266.561 92.6735 266.704 92.6377C266.851 92.5986 267 92.5791 267.153 92.5791C267.352 92.5791 267.528 92.6051 267.681 92.6572C267.834 92.7093 267.961 92.7858 268.062 92.8867C268.153 92.9779 268.221 93.0902 268.267 93.2236C268.315 93.3538 268.34 93.5036 268.34 93.6729C268.34 93.8356 268.309 93.9902 268.247 94.1367C268.185 94.2832 268.107 94.4215 268.013 94.5518C267.915 94.6852 267.808 94.8122 267.69 94.9326C267.576 95.0531 267.464 95.1702 267.354 95.2842C267.191 95.4339 267.061 95.5641 266.963 95.6748C266.865 95.7822 266.79 95.8945 266.738 96.0117C266.686 96.1322 266.652 96.2689 266.636 96.4219C266.619 96.5716 266.61 96.7637 266.606 96.998ZM266.504 98.5264C266.504 98.6761 266.549 98.8014 266.641 98.9023C266.735 99.0033 266.875 99.0537 267.061 99.0537C267.246 99.0537 267.386 99.0033 267.48 98.9023C267.578 98.8014 267.627 98.6761 267.627 98.5264C267.627 98.3701 267.578 98.2399 267.48 98.1357C267.386 98.0316 267.246 97.9795 267.061 97.9795C266.875 97.9795 266.735 98.0316 266.641 98.1357C266.549 98.2399 266.504 98.3701 266.504 98.5264ZM277.866 96.1143V96.1631C277.866 96.6286 277.902 97.0664 277.974 97.4766C278.049 97.8867 278.148 98.266 278.271 98.6143C278.392 98.9658 278.532 99.2848 278.691 99.5713C278.854 99.861 279.025 100.118 279.204 100.343C279.38 100.571 279.557 100.763 279.736 100.919C279.919 101.078 280.091 101.204 280.254 101.295L280.444 100.743C280.311 100.636 280.177 100.506 280.044 100.353C279.914 100.203 279.787 100.03 279.663 99.835C279.543 99.6299 279.427 99.3971 279.316 99.1367C279.206 98.8796 279.108 98.5996 279.023 98.2969C278.945 97.9974 278.883 97.6702 278.838 97.3154C278.792 96.9606 278.77 96.5798 278.77 96.1729V96.1045C278.77 95.6813 278.794 95.2858 278.843 94.918C278.892 94.5501 278.96 94.2132 279.048 93.9072C279.139 93.5687 279.253 93.2578 279.39 92.9746C279.526 92.6882 279.67 92.4391 279.819 92.2275C279.92 92.0908 280.023 91.9671 280.127 91.8564C280.234 91.7458 280.34 91.6514 280.444 91.5732L280.254 90.9775C280.091 91.0687 279.92 91.194 279.741 91.3535C279.562 91.513 279.385 91.7051 279.209 91.9297C279.03 92.1543 278.859 92.4115 278.696 92.7012C278.537 92.9909 278.395 93.3099 278.271 93.6582C278.148 94.0098 278.049 94.3906 277.974 94.8008C277.902 95.2109 277.866 95.6488 277.866 96.1143ZM282.979 99H283.882V95.2109C283.944 95.097 284.015 94.9928 284.097 94.8984C284.181 94.804 284.272 94.721 284.37 94.6494C284.491 94.568 284.622 94.5046 284.766 94.459C284.909 94.4102 285.063 94.3857 285.229 94.3857C285.422 94.3857 285.591 94.4085 285.737 94.4541C285.887 94.4997 286.014 94.5729 286.118 94.6738C286.219 94.7747 286.296 94.9066 286.348 95.0693C286.4 95.2321 286.426 95.4307 286.426 95.665V99H287.329V95.6455C287.329 95.2939 287.285 94.9912 287.197 94.7373C287.113 94.4801 286.991 94.2686 286.831 94.1025C286.672 93.9365 286.478 93.8145 286.25 93.7363C286.025 93.6582 285.775 93.6191 285.498 93.6191C285.293 93.6224 285.098 93.6533 284.912 93.7119C284.73 93.7673 284.561 93.847 284.404 93.9512C284.3 94.0195 284.201 94.1009 284.106 94.1953C284.015 94.2865 283.931 94.3874 283.853 94.498L283.789 93.7168H282.979V99ZM288.73 96.3096V96.417C288.73 96.7979 288.786 97.151 288.896 97.4766C289.007 97.8021 289.167 98.0853 289.375 98.3262C289.58 98.5671 289.831 98.7559 290.127 98.8926C290.426 99.0293 290.763 99.0977 291.138 99.0977C291.509 99.0977 291.842 99.0293 292.139 98.8926C292.435 98.7559 292.687 98.5671 292.896 98.3262C293.101 98.0853 293.258 97.8021 293.369 97.4766C293.48 97.151 293.535 96.7979 293.535 96.417V96.3096C293.535 95.9287 293.48 95.5755 293.369 95.25C293.258 94.9212 293.101 94.6364 292.896 94.3955C292.687 94.1546 292.433 93.9658 292.134 93.8291C291.838 93.6891 291.502 93.6191 291.128 93.6191C290.757 93.6191 290.423 93.6891 290.127 93.8291C289.831 93.9658 289.58 94.1546 289.375 94.3955C289.167 94.6364 289.007 94.9212 288.896 95.25C288.786 95.5755 288.73 95.9287 288.73 96.3096ZM289.634 96.417V96.3096C289.634 96.0524 289.665 95.8066 289.727 95.5723C289.788 95.3346 289.883 95.1263 290.01 94.9473C290.133 94.7682 290.288 94.6266 290.474 94.5225C290.659 94.415 290.877 94.3613 291.128 94.3613C291.379 94.3613 291.597 94.415 291.782 94.5225C291.971 94.6266 292.129 94.7682 292.256 94.9473C292.38 95.1263 292.472 95.3346 292.534 95.5723C292.599 95.8066 292.632 96.0524 292.632 96.3096V96.417C292.632 96.6774 292.601 96.9264 292.539 97.1641C292.477 97.3984 292.384 97.6051 292.261 97.7842C292.134 97.9632 291.976 98.1048 291.787 98.209C291.602 98.3132 291.385 98.3652 291.138 98.3652C290.887 98.3652 290.667 98.3132 290.479 98.209C290.29 98.1048 290.133 97.9632 290.01 97.7842C289.883 97.6051 289.788 97.3984 289.727 97.1641C289.665 96.9264 289.634 96.6774 289.634 96.417ZM298.286 96.1631V96.1143C298.286 95.6162 298.247 95.1686 298.169 94.7715C298.094 94.3711 297.998 94 297.881 93.6582C297.76 93.3034 297.62 92.9844 297.461 92.7012C297.301 92.418 297.131 92.1608 296.948 91.9297C296.772 91.7051 296.593 91.513 296.411 91.3535C296.229 91.194 296.056 91.0687 295.894 90.9775L295.703 91.5293C295.811 91.6172 295.921 91.7246 296.035 91.8516C296.149 91.9753 296.26 92.1201 296.367 92.2861C296.507 92.4977 296.644 92.7467 296.777 93.0332C296.911 93.3164 297.025 93.637 297.119 93.9951C297.184 94.2458 297.243 94.5501 297.295 94.9082C297.35 95.2663 297.378 95.665 297.378 96.1045V96.1729C297.378 96.5602 297.357 96.9248 297.314 97.2666C297.275 97.6051 297.218 97.9209 297.144 98.2139C297.072 98.5296 296.979 98.8193 296.865 99.083C296.755 99.3499 296.639 99.5892 296.519 99.8008C296.392 100.009 296.258 100.193 296.118 100.353C295.978 100.512 295.84 100.642 295.703 100.743L295.894 101.295C296.056 101.204 296.227 101.078 296.406 100.919C296.589 100.763 296.769 100.571 296.948 100.343C297.124 100.118 297.292 99.861 297.451 99.5713C297.614 99.2848 297.757 98.9658 297.881 98.6143C298.005 98.266 298.102 97.8867 298.174 97.4766C298.249 97.0664 298.286 96.6286 298.286 96.1631Z\"\n      fill=\"#E139F0\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"335\"\n      cy=\"95.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"376\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"294\"\n      cy=\"165.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"250\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"338\"\n      cy=\"237.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334 96L249 241.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M334.5 97L377 167\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293 166L340 242\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M249.117 240.468H251.68C251.68 240.194 251.687 239.962 251.701 239.771C251.714 239.572 251.749 239.391 251.803 239.227C251.851 239.063 251.933 238.902 252.049 238.745C252.166 238.588 252.326 238.407 252.531 238.202C252.866 237.908 253.198 237.607 253.526 237.299C253.861 236.985 254.158 236.653 254.418 236.305C254.678 235.963 254.89 235.594 255.054 235.197C255.218 234.794 255.3 234.35 255.3 233.864C255.3 233.208 255.19 232.63 254.972 232.131C254.753 231.632 254.438 231.212 254.028 230.87C253.611 230.535 253.102 230.282 252.5 230.111C251.899 229.94 251.219 229.855 250.46 229.855C249.783 229.855 249.154 229.94 248.573 230.111C247.992 230.275 247.486 230.528 247.056 230.87C246.625 231.212 246.283 231.643 246.03 232.162C245.777 232.675 245.647 233.28 245.641 233.977H248.501C248.508 233.663 248.566 233.393 248.676 233.167C248.792 232.941 248.942 232.757 249.127 232.613C249.305 232.47 249.51 232.367 249.742 232.306C249.975 232.237 250.214 232.203 250.46 232.203C250.774 232.203 251.051 232.237 251.291 232.306C251.537 232.374 251.745 232.477 251.916 232.613C252.08 232.764 252.207 232.955 252.295 233.188C252.384 233.413 252.429 233.683 252.429 233.998C252.429 234.257 252.371 234.517 252.254 234.777C252.138 235.037 251.988 235.29 251.803 235.536C251.612 235.789 251.4 236.035 251.167 236.274C250.935 236.506 250.703 236.729 250.47 236.94C250.149 237.193 249.899 237.433 249.722 237.658C249.544 237.877 249.411 238.116 249.322 238.376C249.233 238.643 249.175 238.94 249.147 239.268C249.127 239.596 249.117 239.996 249.117 240.468ZM248.696 243.575C248.696 244.012 248.843 244.381 249.137 244.682C249.431 244.976 249.838 245.123 250.357 245.123C250.863 245.123 251.267 244.976 251.567 244.682C251.875 244.381 252.029 244.012 252.029 243.575C252.029 243.124 251.875 242.748 251.567 242.447C251.267 242.139 250.863 241.985 250.357 241.985C249.838 241.985 249.431 242.139 249.137 242.447C248.843 242.748 248.696 243.124 248.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M336.117 240.468H338.68C338.68 240.194 338.687 239.962 338.701 239.771C338.714 239.572 338.749 239.391 338.803 239.227C338.851 239.063 338.933 238.902 339.049 238.745C339.166 238.588 339.326 238.407 339.531 238.202C339.866 237.908 340.198 237.607 340.526 237.299C340.861 236.985 341.158 236.653 341.418 236.305C341.678 235.963 341.89 235.594 342.054 235.197C342.218 234.794 342.3 234.35 342.3 233.864C342.3 233.208 342.19 232.63 341.972 232.131C341.753 231.632 341.438 231.212 341.028 230.87C340.611 230.535 340.102 230.282 339.5 230.111C338.899 229.94 338.219 229.855 337.46 229.855C336.783 229.855 336.154 229.94 335.573 230.111C334.992 230.275 334.486 230.528 334.056 230.87C333.625 231.212 333.283 231.643 333.03 232.162C332.777 232.675 332.647 233.28 332.641 233.977H335.501C335.508 233.663 335.566 233.393 335.676 233.167C335.792 232.941 335.942 232.757 336.127 232.613C336.305 232.47 336.51 232.367 336.742 232.306C336.975 232.237 337.214 232.203 337.46 232.203C337.774 232.203 338.051 232.237 338.291 232.306C338.537 232.374 338.745 232.477 338.916 232.613C339.08 232.764 339.207 232.955 339.295 233.188C339.384 233.413 339.429 233.683 339.429 233.998C339.429 234.257 339.371 234.517 339.254 234.777C339.138 235.037 338.988 235.29 338.803 235.536C338.612 235.789 338.4 236.035 338.167 236.274C337.935 236.506 337.703 236.729 337.47 236.94C337.149 237.193 336.899 237.433 336.722 237.658C336.544 237.877 336.411 238.116 336.322 238.376C336.233 238.643 336.175 238.94 336.147 239.268C336.127 239.596 336.117 239.996 336.117 240.468ZM335.696 243.575C335.696 244.012 335.843 244.381 336.137 244.682C336.431 244.976 336.838 245.123 337.357 245.123C337.863 245.123 338.267 244.976 338.567 244.682C338.875 244.381 339.029 244.012 339.029 243.575C339.029 243.124 338.875 242.748 338.567 242.447C338.267 242.139 337.863 241.985 337.357 241.985C336.838 241.985 336.431 242.139 336.137 242.447C335.843 242.748 335.696 243.124 335.696 243.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M255.775 36.7871L255.878 36.2256C255.676 36.2191 255.508 36.1637 255.375 36.0596C255.245 35.9554 255.141 35.8219 255.062 35.6592C254.981 35.4997 254.924 35.319 254.892 35.1172C254.859 34.9186 254.843 34.7184 254.843 34.5166V33.6914C254.84 33.304 254.748 32.9639 254.569 32.6709C254.39 32.3747 254.112 32.1517 253.734 32.002C254.112 31.849 254.39 31.626 254.569 31.333C254.752 31.0368 254.843 30.6934 254.843 30.3027V29.4727C254.843 29.2741 254.853 29.0739 254.872 28.8721C254.892 28.6702 254.937 28.488 255.009 28.3252C255.077 28.1657 255.18 28.0339 255.316 27.9297C255.456 27.8255 255.644 27.7702 255.878 27.7637L255.775 27.2021C255.447 27.2119 255.167 27.2835 254.936 27.417C254.704 27.5472 254.517 27.7165 254.374 27.9248C254.221 28.1429 254.109 28.3903 254.037 28.667C253.969 28.9404 253.935 29.209 253.935 29.4727V30.3027C253.935 30.7747 253.822 31.1165 253.598 31.3281C253.376 31.5365 253.036 31.6406 252.577 31.6406V32.3486C253.036 32.3519 253.376 32.4593 253.598 32.6709C253.822 32.8825 253.935 33.2227 253.935 33.6914V34.5166C253.935 34.777 253.972 35.0391 254.047 35.3027C254.122 35.5697 254.232 35.8105 254.379 36.0254C254.532 36.25 254.724 36.4307 254.955 36.5674C255.186 36.7041 255.46 36.7773 255.775 36.7871ZM263.861 35H264.765V31.2109C264.826 31.097 264.898 30.9928 264.979 30.8984C265.064 30.804 265.155 30.721 265.253 30.6494C265.373 30.568 265.505 30.5046 265.648 30.459C265.792 30.4102 265.946 30.3857 266.112 30.3857C266.304 30.3857 266.474 30.4085 266.62 30.4541C266.77 30.4997 266.897 30.5729 267.001 30.6738C267.102 30.7747 267.178 30.9066 267.23 31.0693C267.283 31.2321 267.309 31.4307 267.309 31.665V35H268.212V31.6455C268.212 31.2939 268.168 30.9912 268.08 30.7373C267.995 30.4801 267.873 30.2686 267.714 30.1025C267.554 29.9365 267.361 29.8145 267.133 29.7363C266.908 29.6582 266.658 29.6191 266.381 29.6191C266.176 29.6224 265.98 29.6533 265.795 29.7119C265.613 29.7673 265.443 29.847 265.287 29.9512C265.183 30.0195 265.084 30.1009 264.989 30.1953C264.898 30.2865 264.813 30.3874 264.735 30.498L264.672 29.7168H263.861V35ZM269.613 32.3096V32.417C269.613 32.7979 269.669 33.151 269.779 33.4766C269.89 33.8021 270.049 34.0853 270.258 34.3262C270.463 34.5671 270.714 34.7559 271.01 34.8926C271.309 35.0293 271.646 35.0977 272.021 35.0977C272.392 35.0977 272.725 35.0293 273.021 34.8926C273.318 34.7559 273.57 34.5671 273.778 34.3262C273.983 34.0853 274.141 33.8021 274.252 33.4766C274.363 33.151 274.418 32.7979 274.418 32.417V32.3096C274.418 31.9287 274.363 31.5755 274.252 31.25C274.141 30.9212 273.983 30.6364 273.778 30.3955C273.57 30.1546 273.316 29.9658 273.017 29.8291C272.72 29.6891 272.385 29.6191 272.011 29.6191C271.64 29.6191 271.306 29.6891 271.01 29.8291C270.714 29.9658 270.463 30.1546 270.258 30.3955C270.049 30.6364 269.89 30.9212 269.779 31.25C269.669 31.5755 269.613 31.9287 269.613 32.3096ZM270.517 32.417V32.3096C270.517 32.0524 270.548 31.8066 270.609 31.5723C270.671 31.3346 270.766 31.1263 270.893 30.9473C271.016 30.7682 271.171 30.6266 271.356 30.5225C271.542 30.415 271.76 30.3613 272.011 30.3613C272.261 30.3613 272.479 30.415 272.665 30.5225C272.854 30.6266 273.012 30.7682 273.139 30.9473C273.262 31.1263 273.355 31.3346 273.417 31.5723C273.482 31.8066 273.515 32.0524 273.515 32.3096V32.417C273.515 32.6774 273.484 32.9264 273.422 33.1641C273.36 33.3984 273.267 33.6051 273.144 33.7842C273.017 33.9632 272.859 34.1048 272.67 34.209C272.484 34.3132 272.268 34.3652 272.021 34.3652C271.77 34.3652 271.55 34.3132 271.361 34.209C271.173 34.1048 271.016 33.9632 270.893 33.7842C270.766 33.6051 270.671 33.3984 270.609 33.1641C270.548 32.9264 270.517 32.6774 270.517 32.417ZM275.702 32.3145V32.417C275.702 32.7946 275.753 33.1478 275.854 33.4766C275.954 33.8021 276.096 34.0853 276.278 34.3262C276.461 34.5671 276.68 34.7559 276.938 34.8926C277.198 35.0293 277.488 35.0977 277.807 35.0977C278.132 35.0977 278.417 35.0423 278.661 34.9316C278.905 34.821 279.115 34.6582 279.291 34.4434L279.33 35H280.16V27.5H279.257V30.2393C279.084 30.0374 278.879 29.8844 278.642 29.7803C278.407 29.6729 278.132 29.6191 277.816 29.6191C277.494 29.6191 277.203 29.6859 276.942 29.8193C276.682 29.9528 276.461 30.1383 276.278 30.376C276.093 30.6136 275.95 30.8984 275.849 31.2305C275.751 31.5592 275.702 31.9206 275.702 32.3145ZM276.605 32.417V32.3145C276.605 32.0573 276.633 31.8132 276.688 31.582C276.744 31.3477 276.83 31.141 276.947 30.9619C277.061 30.7861 277.208 30.6462 277.387 30.542C277.569 30.4378 277.787 30.3857 278.041 30.3857C278.337 30.3857 278.585 30.4557 278.783 30.5957C278.982 30.7324 279.14 30.9082 279.257 31.123V33.5742C279.14 33.8053 278.982 33.9893 278.783 34.126C278.585 34.2627 278.334 34.3311 278.031 34.3311C277.781 34.3311 277.566 34.2806 277.387 34.1797C277.208 34.0755 277.061 33.9355 276.947 33.7598C276.83 33.584 276.744 33.3805 276.688 33.1494C276.633 32.9183 276.605 32.6742 276.605 32.417ZM284.213 35.0977C284.727 35.0977 285.159 34.9951 285.507 34.79C285.858 34.5817 286.122 34.3441 286.298 34.0771L285.746 33.6475C285.58 33.8623 285.372 34.0348 285.121 34.165C284.87 34.2952 284.584 34.3604 284.262 34.3604C284.018 34.3604 283.795 34.3148 283.593 34.2236C283.391 34.1325 283.218 34.0072 283.075 33.8477C282.935 33.6979 282.825 33.5254 282.743 33.3301C282.665 33.1348 282.615 32.9085 282.592 32.6514V32.6172H286.366V32.2119C286.366 31.8441 286.319 31.5023 286.225 31.1865C286.133 30.8708 285.993 30.5957 285.805 30.3613C285.616 30.1302 285.378 29.9495 285.092 29.8193C284.809 29.6859 284.477 29.6191 284.096 29.6191C283.793 29.6191 283.497 29.681 283.207 29.8047C282.921 29.9284 282.665 30.1058 282.44 30.3369C282.213 30.5713 282.03 30.8577 281.894 31.1963C281.757 31.5316 281.688 31.9124 281.688 32.3389V32.5439C281.688 32.9118 281.75 33.252 281.874 33.5645C281.998 33.877 282.17 34.1471 282.392 34.375C282.613 34.6029 282.878 34.7803 283.188 34.9072C283.5 35.0342 283.842 35.0977 284.213 35.0977ZM284.096 30.3613C284.327 30.3613 284.525 30.4036 284.691 30.4883C284.861 30.5729 285.001 30.6836 285.111 30.8203C285.222 30.957 285.308 31.1198 285.37 31.3086C285.432 31.4941 285.463 31.6683 285.463 31.8311V31.875H282.621C282.657 31.6309 282.719 31.416 282.807 31.2305C282.898 31.0417 283.008 30.8822 283.139 30.752C283.269 30.625 283.415 30.529 283.578 30.4639C283.741 30.3955 283.913 30.3613 284.096 30.3613ZM290.814 35V27.8906H290.741L288.051 28.9258V29.751L289.911 29.043V35H290.814ZM295.707 34.4141C295.707 34.6029 295.766 34.764 295.883 34.8975C296.003 35.0277 296.181 35.0928 296.415 35.0928C296.646 35.0928 296.824 35.0277 296.947 34.8975C297.071 34.7673 297.133 34.6061 297.133 34.4141C297.133 34.2188 297.071 34.0544 296.947 33.9209C296.827 33.7842 296.649 33.7158 296.415 33.7158C296.177 33.7158 296 33.7842 295.883 33.9209C295.766 34.0576 295.707 34.222 295.707 34.4141ZM295.707 30.1367C295.707 30.3255 295.766 30.4867 295.883 30.6201C296.003 30.7503 296.181 30.8154 296.415 30.8154C296.646 30.8154 296.824 30.7503 296.947 30.6201C297.071 30.4899 297.133 30.3288 297.133 30.1367C297.133 29.9414 297.071 29.777 296.947 29.6436C296.827 29.5068 296.649 29.4385 296.415 29.4385C296.177 29.4385 296 29.5068 295.883 29.6436C295.766 29.7803 295.707 29.9447 295.707 30.1367ZM307.548 32.998H308.451C308.451 32.8711 308.454 32.7588 308.461 32.6611C308.467 32.5602 308.484 32.4658 308.51 32.3779C308.536 32.29 308.575 32.2038 308.627 32.1191C308.682 32.0345 308.759 31.945 308.856 31.8506C309.009 31.7139 309.164 31.5658 309.32 31.4062C309.48 31.2467 309.623 31.0742 309.75 30.8887C309.877 30.7064 309.981 30.5127 310.062 30.3076C310.144 30.0993 310.185 29.8779 310.185 29.6436C310.185 29.3506 310.137 29.0902 310.043 28.8623C309.949 28.6344 309.812 28.4408 309.633 28.2812C309.454 28.1217 309.234 28.0013 308.974 27.9199C308.716 27.8353 308.424 27.793 308.095 27.793C307.799 27.793 307.522 27.8337 307.265 27.915C307.011 27.9932 306.791 28.1071 306.605 28.2568C306.417 28.4098 306.267 28.5954 306.156 28.8135C306.046 29.0316 305.989 29.2773 305.985 29.5508H306.889C306.889 29.3815 306.923 29.2367 306.991 29.1162C307.06 28.9925 307.151 28.89 307.265 28.8086C307.375 28.7305 307.502 28.6735 307.646 28.6377C307.792 28.5986 307.942 28.5791 308.095 28.5791C308.293 28.5791 308.469 28.6051 308.622 28.6572C308.775 28.7093 308.902 28.7858 309.003 28.8867C309.094 28.9779 309.162 29.0902 309.208 29.2236C309.257 29.3538 309.281 29.5036 309.281 29.6729C309.281 29.8356 309.25 29.9902 309.188 30.1367C309.127 30.2832 309.049 30.4215 308.954 30.5518C308.856 30.6852 308.749 30.8122 308.632 30.9326C308.518 31.0531 308.406 31.1702 308.295 31.2842C308.132 31.4339 308.002 31.5641 307.904 31.6748C307.807 31.7822 307.732 31.8945 307.68 32.0117C307.628 32.1322 307.593 32.2689 307.577 32.4219C307.561 32.5716 307.551 32.7637 307.548 32.998ZM307.445 34.5264C307.445 34.6761 307.491 34.8014 307.582 34.9023C307.676 35.0033 307.816 35.0537 308.002 35.0537C308.188 35.0537 308.327 35.0033 308.422 34.9023C308.52 34.8014 308.568 34.6761 308.568 34.5264C308.568 34.3701 308.52 34.2399 308.422 34.1357C308.327 34.0316 308.188 33.9795 308.002 33.9795C307.816 33.9795 307.676 34.0316 307.582 34.1357C307.491 34.2399 307.445 34.3701 307.445 34.5264ZM314.198 34.79V33.9307H313.217V34.8047C313.217 35.0814 313.184 35.3483 313.119 35.6055C313.054 35.8626 312.943 36.1051 312.787 36.333L313.349 36.6406C313.609 36.4095 313.816 36.1247 313.969 35.7861C314.122 35.4476 314.198 35.1156 314.198 34.79ZM323.92 35H324.823V31.2109C324.885 31.097 324.957 30.9928 325.038 30.8984C325.123 30.804 325.214 30.721 325.312 30.6494C325.432 30.568 325.564 30.5046 325.707 30.459C325.85 30.4102 326.005 30.3857 326.171 30.3857C326.363 30.3857 326.532 30.4085 326.679 30.4541C326.828 30.4997 326.955 30.5729 327.06 30.6738C327.16 30.7747 327.237 30.9066 327.289 31.0693C327.341 31.2321 327.367 31.4307 327.367 31.665V35H328.271V31.6455C328.271 31.2939 328.227 30.9912 328.139 30.7373C328.054 30.4801 327.932 30.2686 327.772 30.1025C327.613 29.9365 327.419 29.8145 327.191 29.7363C326.967 29.6582 326.716 29.6191 326.439 29.6191C326.234 29.6224 326.039 29.6533 325.854 29.7119C325.671 29.7673 325.502 29.847 325.346 29.9512C325.242 30.0195 325.142 30.1009 325.048 30.1953C324.957 30.2865 324.872 30.3874 324.794 30.498L324.73 29.7168H323.92V35ZM329.672 32.3096V32.417C329.672 32.7979 329.727 33.151 329.838 33.4766C329.949 33.8021 330.108 34.0853 330.316 34.3262C330.521 34.5671 330.772 34.7559 331.068 34.8926C331.368 35.0293 331.705 35.0977 332.079 35.0977C332.45 35.0977 332.784 35.0293 333.08 34.8926C333.376 34.7559 333.629 34.5671 333.837 34.3262C334.042 34.0853 334.2 33.8021 334.311 33.4766C334.421 33.151 334.477 32.7979 334.477 32.417V32.3096C334.477 31.9287 334.421 31.5755 334.311 31.25C334.2 30.9212 334.042 30.6364 333.837 30.3955C333.629 30.1546 333.375 29.9658 333.075 29.8291C332.779 29.6891 332.444 29.6191 332.069 29.6191C331.698 29.6191 331.365 29.6891 331.068 29.8291C330.772 29.9658 330.521 30.1546 330.316 30.3955C330.108 30.6364 329.949 30.9212 329.838 31.25C329.727 31.5755 329.672 31.9287 329.672 32.3096ZM330.575 32.417V32.3096C330.575 32.0524 330.606 31.8066 330.668 31.5723C330.73 31.3346 330.824 31.1263 330.951 30.9473C331.075 30.7682 331.229 30.6266 331.415 30.5225C331.601 30.415 331.819 30.3613 332.069 30.3613C332.32 30.3613 332.538 30.415 332.724 30.5225C332.912 30.6266 333.07 30.7682 333.197 30.9473C333.321 31.1263 333.414 31.3346 333.476 31.5723C333.541 31.8066 333.573 32.0524 333.573 32.3096V32.417C333.573 32.6774 333.542 32.9264 333.48 33.1641C333.419 33.3984 333.326 33.6051 333.202 33.7842C333.075 33.9632 332.917 34.1048 332.729 34.209C332.543 34.3132 332.326 34.3652 332.079 34.3652C331.828 34.3652 331.609 34.3132 331.42 34.209C331.231 34.1048 331.075 33.9632 330.951 33.7842C330.824 33.6051 330.73 33.3984 330.668 33.1641C330.606 32.9264 330.575 32.6774 330.575 32.417ZM335.761 32.3145V32.417C335.761 32.7946 335.811 33.1478 335.912 33.4766C336.013 33.8021 336.155 34.0853 336.337 34.3262C336.519 34.5671 336.739 34.7559 336.996 34.8926C337.257 35.0293 337.546 35.0977 337.865 35.0977C338.191 35.0977 338.476 35.0423 338.72 34.9316C338.964 34.821 339.174 34.6582 339.35 34.4434L339.389 35H340.219V27.5H339.315V30.2393C339.143 30.0374 338.938 29.8844 338.7 29.7803C338.466 29.6729 338.191 29.6191 337.875 29.6191C337.553 29.6191 337.261 29.6859 337.001 29.8193C336.741 29.9528 336.519 30.1383 336.337 30.376C336.151 30.6136 336.008 30.8984 335.907 31.2305C335.81 31.5592 335.761 31.9206 335.761 32.3145ZM336.664 32.417V32.3145C336.664 32.0573 336.692 31.8132 336.747 31.582C336.802 31.3477 336.889 31.141 337.006 30.9619C337.12 30.7861 337.266 30.6462 337.445 30.542C337.628 30.4378 337.846 30.3857 338.1 30.3857C338.396 30.3857 338.643 30.4557 338.842 30.5957C339.04 30.7324 339.198 30.9082 339.315 31.123V33.5742C339.198 33.8053 339.04 33.9893 338.842 34.126C338.643 34.2627 338.393 34.3311 338.09 34.3311C337.839 34.3311 337.624 34.2806 337.445 34.1797C337.266 34.0755 337.12 33.9355 337.006 33.7598C336.889 33.584 336.802 33.3805 336.747 33.1494C336.692 32.9183 336.664 32.6742 336.664 32.417ZM344.271 35.0977C344.786 35.0977 345.217 34.9951 345.565 34.79C345.917 34.5817 346.181 34.3441 346.356 34.0771L345.805 33.6475C345.639 33.8623 345.43 34.0348 345.18 34.165C344.929 34.2952 344.643 34.3604 344.32 34.3604C344.076 34.3604 343.853 34.3148 343.651 34.2236C343.45 34.1325 343.277 34.0072 343.134 33.8477C342.994 33.6979 342.883 33.5254 342.802 33.3301C342.724 33.1348 342.673 32.9085 342.65 32.6514V32.6172H346.425V32.2119C346.425 31.8441 346.378 31.5023 346.283 31.1865C346.192 30.8708 346.052 30.5957 345.863 30.3613C345.674 30.1302 345.437 29.9495 345.15 29.8193C344.867 29.6859 344.535 29.6191 344.154 29.6191C343.852 29.6191 343.555 29.681 343.266 29.8047C342.979 29.9284 342.724 30.1058 342.499 30.3369C342.271 30.5713 342.089 30.8577 341.952 31.1963C341.815 31.5316 341.747 31.9124 341.747 32.3389V32.5439C341.747 32.9118 341.809 33.252 341.933 33.5645C342.056 33.877 342.229 34.1471 342.45 34.375C342.672 34.6029 342.937 34.7803 343.246 34.9072C343.559 35.0342 343.9 35.0977 344.271 35.0977ZM344.154 30.3613C344.385 30.3613 344.584 30.4036 344.75 30.4883C344.919 30.5729 345.059 30.6836 345.17 30.8203C345.281 30.957 345.367 31.1198 345.429 31.3086C345.491 31.4941 345.521 31.6683 345.521 31.8311V31.875H342.68C342.715 31.6309 342.777 31.416 342.865 31.2305C342.956 31.0417 343.067 30.8822 343.197 30.752C343.327 30.625 343.474 30.529 343.637 30.4639C343.799 30.3955 343.972 30.3613 344.154 30.3613ZM352.304 35V34.2627H348.734L350.644 32.1924C350.823 31.9971 350.992 31.8018 351.151 31.6064C351.314 31.4079 351.457 31.2077 351.581 31.0059C351.701 30.804 351.798 30.6006 351.869 30.3955C351.941 30.1872 351.977 29.9772 351.977 29.7656C351.977 29.4824 351.926 29.2204 351.825 28.9795C351.728 28.7386 351.586 28.5303 351.4 28.3545C351.215 28.1787 350.987 28.042 350.717 27.9443C350.45 27.8434 350.149 27.793 349.813 27.793C349.449 27.793 349.123 27.8516 348.837 27.9688C348.554 28.0859 348.314 28.2438 348.119 28.4424C347.921 28.641 347.769 28.8737 347.665 29.1406C347.561 29.4043 347.509 29.6859 347.509 29.9854H348.417C348.417 29.764 348.445 29.5638 348.5 29.3848C348.559 29.2057 348.646 29.0527 348.764 28.9258C348.878 28.8021 349.021 28.7061 349.193 28.6377C349.369 28.5693 349.576 28.5352 349.813 28.5352C350.009 28.5352 350.183 28.5693 350.336 28.6377C350.492 28.7028 350.626 28.7923 350.736 28.9062C350.844 29.0202 350.925 29.1553 350.98 29.3115C351.039 29.4645 351.068 29.6289 351.068 29.8047C351.068 29.9479 351.05 30.0879 351.015 30.2246C350.979 30.3581 350.919 30.4997 350.834 30.6494C350.749 30.8024 350.637 30.9684 350.497 31.1475C350.357 31.3265 350.183 31.5316 349.975 31.7627L347.646 34.3506V35H352.304ZM355.766 34.4141C355.766 34.6029 355.824 34.764 355.941 34.8975C356.062 35.0277 356.239 35.0928 356.474 35.0928C356.705 35.0928 356.882 35.0277 357.006 34.8975C357.13 34.7673 357.191 34.6061 357.191 34.4141C357.191 34.2188 357.13 34.0544 357.006 33.9209C356.885 33.7842 356.708 33.7158 356.474 33.7158C356.236 33.7158 356.059 33.7842 355.941 33.9209C355.824 34.0576 355.766 34.222 355.766 34.4141ZM355.766 30.1367C355.766 30.3255 355.824 30.4867 355.941 30.6201C356.062 30.7503 356.239 30.8154 356.474 30.8154C356.705 30.8154 356.882 30.7503 357.006 30.6201C357.13 30.4899 357.191 30.3288 357.191 30.1367C357.191 29.9414 357.13 29.777 357.006 29.6436C356.885 29.5068 356.708 29.4385 356.474 29.4385C356.236 29.4385 356.059 29.5068 355.941 29.6436C355.824 29.7803 355.766 29.9447 355.766 30.1367ZM367.606 32.998H368.51C368.51 32.8711 368.513 32.7588 368.52 32.6611C368.526 32.5602 368.542 32.4658 368.568 32.3779C368.594 32.29 368.633 32.2038 368.686 32.1191C368.741 32.0345 368.817 31.945 368.915 31.8506C369.068 31.7139 369.223 31.5658 369.379 31.4062C369.538 31.2467 369.682 31.0742 369.809 30.8887C369.936 30.7064 370.04 30.5127 370.121 30.3076C370.202 30.0993 370.243 29.8779 370.243 29.6436C370.243 29.3506 370.196 29.0902 370.102 28.8623C370.007 28.6344 369.87 28.4408 369.691 28.2812C369.512 28.1217 369.293 28.0013 369.032 27.9199C368.775 27.8353 368.482 27.793 368.153 27.793C367.857 27.793 367.58 27.8337 367.323 27.915C367.069 27.9932 366.85 28.1071 366.664 28.2568C366.475 28.4098 366.326 28.5954 366.215 28.8135C366.104 29.0316 366.047 29.2773 366.044 29.5508H366.947C366.947 29.3815 366.981 29.2367 367.05 29.1162C367.118 28.9925 367.209 28.89 367.323 28.8086C367.434 28.7305 367.561 28.6735 367.704 28.6377C367.851 28.5986 368 28.5791 368.153 28.5791C368.352 28.5791 368.528 28.6051 368.681 28.6572C368.834 28.7093 368.961 28.7858 369.062 28.8867C369.153 28.9779 369.221 29.0902 369.267 29.2236C369.315 29.3538 369.34 29.5036 369.34 29.6729C369.34 29.8356 369.309 29.9902 369.247 30.1367C369.185 30.2832 369.107 30.4215 369.013 30.5518C368.915 30.6852 368.808 30.8122 368.69 30.9326C368.576 31.0531 368.464 31.1702 368.354 31.2842C368.191 31.4339 368.061 31.5641 367.963 31.6748C367.865 31.7822 367.79 31.8945 367.738 32.0117C367.686 32.1322 367.652 32.2689 367.636 32.4219C367.619 32.5716 367.61 32.7637 367.606 32.998ZM367.504 34.5264C367.504 34.6761 367.549 34.8014 367.641 34.9023C367.735 35.0033 367.875 35.0537 368.061 35.0537C368.246 35.0537 368.386 35.0033 368.48 34.9023C368.578 34.8014 368.627 34.6761 368.627 34.5264C368.627 34.3701 368.578 34.2399 368.48 34.1357C368.386 34.0316 368.246 33.9795 368.061 33.9795C367.875 33.9795 367.735 34.0316 367.641 34.1357C367.549 34.2399 367.504 34.3701 367.504 34.5264ZM378.7 36.2256L378.803 36.7871C379.122 36.7806 379.397 36.7074 379.628 36.5674C379.859 36.4274 380.051 36.2484 380.204 36.0303C380.354 35.8122 380.465 35.5697 380.536 35.3027C380.608 35.0391 380.644 34.777 380.644 34.5166V33.6914C380.644 33.4635 380.67 33.2666 380.722 33.1006C380.774 32.9346 380.854 32.7962 380.961 32.6855C381.072 32.5716 381.213 32.4886 381.386 32.4365C381.562 32.3812 381.767 32.3519 382.001 32.3486V31.6406C381.734 31.6406 381.505 31.6064 381.312 31.5381C381.124 31.4665 380.976 31.3542 380.868 31.2012C380.793 31.0938 380.736 30.9668 380.697 30.8203C380.661 30.6706 380.644 30.498 380.644 30.3027V29.4727C380.644 29.1992 380.606 28.9225 380.531 28.6426C380.46 28.3626 380.341 28.1104 380.175 27.8857C380.028 27.6872 379.841 27.526 379.613 27.4023C379.389 27.2786 379.118 27.2119 378.803 27.2021L378.705 27.7637C378.939 27.7702 379.125 27.8255 379.262 27.9297C379.398 28.0339 379.503 28.1657 379.574 28.3252C379.643 28.488 379.687 28.6702 379.706 28.8721C379.729 29.0739 379.74 29.2741 379.74 29.4727V30.3027C379.74 30.5566 379.778 30.7926 379.853 31.0107C379.927 31.2256 380.043 31.4144 380.199 31.5771C380.281 31.665 380.375 31.7448 380.482 31.8164C380.593 31.888 380.714 31.9499 380.844 32.002C380.717 32.054 380.6 32.1143 380.492 32.1826C380.388 32.251 380.294 32.3275 380.209 32.4121C380.049 32.5716 379.931 32.7604 379.853 32.9785C379.778 33.1966 379.74 33.4342 379.74 33.6914V34.5166C379.74 34.7184 379.722 34.9186 379.687 35.1172C379.654 35.319 379.599 35.4997 379.521 35.6592C379.439 35.8219 379.332 35.9554 379.198 36.0596C379.065 36.1637 378.899 36.2191 378.7 36.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"266.5\"\n      y=\"137.5\"\n      width=\"55\"\n      height=\"55\"\n      stroke=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M106.753 162.503V159.5H105.85V167H106.753V163.162C106.818 163.058 106.891 162.964 106.973 162.879C107.057 162.791 107.148 162.715 107.246 162.649C107.37 162.565 107.505 162.5 107.651 162.454C107.798 162.409 107.952 162.386 108.115 162.386C108.314 162.382 108.49 162.41 108.643 162.469C108.796 162.524 108.923 162.609 109.023 162.723C109.118 162.827 109.189 162.959 109.238 163.118C109.287 163.274 109.312 163.457 109.312 163.665V167H110.215V163.675C110.215 163.32 110.171 163.014 110.083 162.757C109.998 162.496 109.876 162.282 109.717 162.112C109.557 161.943 109.364 161.819 109.136 161.741C108.911 161.66 108.66 161.619 108.384 161.619C108.172 161.622 107.972 161.653 107.783 161.712C107.598 161.771 107.427 161.857 107.271 161.971C107.173 162.039 107.08 162.119 106.992 162.21C106.904 162.298 106.825 162.396 106.753 162.503ZM115.327 167H116.27V166.922C116.211 166.775 116.165 166.604 116.133 166.409C116.1 166.211 116.084 166.023 116.084 165.848V163.392C116.084 163.095 116.03 162.837 115.923 162.615C115.815 162.394 115.669 162.208 115.483 162.059C115.295 161.912 115.072 161.803 114.814 161.731C114.557 161.657 114.279 161.619 113.979 161.619C113.651 161.619 113.356 161.665 113.096 161.756C112.839 161.847 112.62 161.966 112.441 162.112C112.259 162.262 112.119 162.43 112.021 162.615C111.927 162.801 111.878 162.99 111.875 163.182H112.783C112.783 163.071 112.809 162.965 112.861 162.864C112.917 162.76 112.993 162.671 113.091 162.596C113.188 162.521 113.307 162.461 113.447 162.415C113.59 162.369 113.752 162.347 113.931 162.347C114.123 162.347 114.295 162.371 114.448 162.42C114.604 162.469 114.736 162.537 114.844 162.625C114.951 162.716 115.034 162.825 115.093 162.952C115.151 163.079 115.181 163.222 115.181 163.382V163.797H114.194C113.826 163.797 113.493 163.833 113.193 163.904C112.897 163.976 112.643 164.083 112.432 164.227C112.22 164.373 112.056 164.555 111.938 164.773C111.825 164.992 111.768 165.245 111.768 165.535C111.768 165.757 111.81 165.963 111.895 166.155C111.982 166.344 112.106 166.507 112.266 166.644C112.422 166.784 112.612 166.894 112.837 166.976C113.065 167.057 113.319 167.098 113.599 167.098C113.771 167.098 113.934 167.08 114.087 167.044C114.24 167.008 114.385 166.959 114.521 166.897C114.655 166.836 114.777 166.764 114.888 166.683C115.002 166.601 115.104 166.515 115.195 166.424C115.205 166.535 115.22 166.642 115.239 166.746C115.262 166.847 115.291 166.932 115.327 167ZM113.73 166.312C113.555 166.312 113.4 166.289 113.267 166.243C113.133 166.198 113.022 166.134 112.935 166.053C112.847 165.975 112.78 165.88 112.734 165.77C112.692 165.659 112.671 165.538 112.671 165.408C112.671 165.271 112.695 165.149 112.744 165.042C112.796 164.935 112.871 164.842 112.969 164.764C113.105 164.653 113.289 164.572 113.521 164.52C113.755 164.464 114.028 164.437 114.341 164.437H115.181V165.506C115.129 165.61 115.057 165.711 114.966 165.809C114.875 165.903 114.767 165.988 114.644 166.062C114.517 166.137 114.377 166.198 114.224 166.243C114.071 166.289 113.906 166.312 113.73 166.312ZM121.372 165.599C121.372 165.683 121.356 165.763 121.323 165.838C121.291 165.913 121.243 165.981 121.182 166.043C121.081 166.144 120.941 166.224 120.762 166.282C120.583 166.338 120.373 166.365 120.132 166.365C119.979 166.365 119.824 166.349 119.668 166.316C119.512 166.284 119.37 166.229 119.243 166.15C119.113 166.072 119.004 165.97 118.916 165.843C118.831 165.716 118.783 165.56 118.77 165.374H117.866C117.866 165.599 117.917 165.815 118.018 166.023C118.122 166.232 118.271 166.414 118.467 166.57C118.659 166.73 118.895 166.858 119.175 166.956C119.455 167.05 119.774 167.098 120.132 167.098C120.444 167.098 120.732 167.06 120.996 166.985C121.26 166.91 121.486 166.805 121.675 166.668C121.864 166.531 122.01 166.367 122.114 166.175C122.222 165.983 122.275 165.77 122.275 165.535C122.275 165.317 122.228 165.125 122.134 164.959C122.043 164.793 121.909 164.646 121.733 164.52C121.558 164.396 121.341 164.29 121.084 164.202C120.827 164.111 120.535 164.031 120.21 163.963C119.963 163.914 119.757 163.864 119.595 163.812C119.435 163.759 119.308 163.701 119.214 163.636C119.116 163.571 119.048 163.497 119.009 163.416C118.97 163.335 118.95 163.242 118.95 163.138C118.95 163.037 118.975 162.939 119.023 162.845C119.072 162.75 119.146 162.667 119.243 162.596C119.338 162.524 119.456 162.467 119.6 162.425C119.746 162.382 119.915 162.361 120.107 162.361C120.293 162.361 120.459 162.387 120.605 162.439C120.755 162.492 120.882 162.56 120.986 162.645C121.09 162.729 121.172 162.827 121.23 162.938C121.289 163.045 121.318 163.156 121.318 163.27H122.222C122.222 163.038 122.171 162.824 122.07 162.625C121.973 162.423 121.833 162.247 121.65 162.098C121.468 161.948 121.247 161.831 120.986 161.746C120.726 161.661 120.433 161.619 120.107 161.619C119.805 161.619 119.526 161.66 119.272 161.741C119.022 161.823 118.805 161.933 118.623 162.073C118.441 162.213 118.299 162.378 118.198 162.566C118.097 162.752 118.047 162.952 118.047 163.167C118.047 163.385 118.096 163.577 118.193 163.743C118.291 163.906 118.429 164.048 118.608 164.168C118.784 164.292 118.996 164.397 119.243 164.485C119.494 164.573 119.771 164.648 120.073 164.71C120.321 164.759 120.527 164.814 120.693 164.876C120.859 164.935 120.993 165 121.094 165.071C121.195 165.143 121.266 165.223 121.309 165.311C121.351 165.395 121.372 165.491 121.372 165.599ZM130.63 161.214V161.927H131.514V161.199C131.514 160.919 131.551 160.659 131.626 160.418C131.704 160.177 131.82 159.941 131.973 159.71L131.479 159.358C131.343 159.476 131.222 159.609 131.118 159.759C131.014 159.909 130.926 160.065 130.854 160.228C130.78 160.394 130.723 160.561 130.684 160.73C130.648 160.9 130.63 161.061 130.63 161.214ZM132.217 161.214V161.927H133.101V161.199C133.101 160.919 133.138 160.659 133.213 160.418C133.291 160.177 133.407 159.941 133.56 159.71L133.066 159.358C132.93 159.476 132.809 159.609 132.705 159.759C132.601 159.909 132.513 160.065 132.441 160.228C132.367 160.394 132.31 160.561 132.271 160.73C132.235 160.9 132.217 161.061 132.217 161.214ZM137.524 164.998H138.428C138.428 164.871 138.431 164.759 138.438 164.661C138.444 164.56 138.46 164.466 138.486 164.378C138.512 164.29 138.551 164.204 138.604 164.119C138.659 164.035 138.735 163.945 138.833 163.851C138.986 163.714 139.141 163.566 139.297 163.406C139.456 163.247 139.6 163.074 139.727 162.889C139.854 162.706 139.958 162.513 140.039 162.308C140.12 162.099 140.161 161.878 140.161 161.644C140.161 161.351 140.114 161.09 140.02 160.862C139.925 160.634 139.788 160.441 139.609 160.281C139.43 160.122 139.211 160.001 138.95 159.92C138.693 159.835 138.4 159.793 138.071 159.793C137.775 159.793 137.498 159.834 137.241 159.915C136.987 159.993 136.768 160.107 136.582 160.257C136.393 160.41 136.243 160.595 136.133 160.813C136.022 161.032 135.965 161.277 135.962 161.551H136.865C136.865 161.382 136.899 161.237 136.968 161.116C137.036 160.993 137.127 160.89 137.241 160.809C137.352 160.73 137.479 160.674 137.622 160.638C137.769 160.599 137.918 160.579 138.071 160.579C138.27 160.579 138.446 160.605 138.599 160.657C138.752 160.709 138.879 160.786 138.979 160.887C139.071 160.978 139.139 161.09 139.185 161.224C139.233 161.354 139.258 161.504 139.258 161.673C139.258 161.836 139.227 161.99 139.165 162.137C139.103 162.283 139.025 162.422 138.931 162.552C138.833 162.685 138.726 162.812 138.608 162.933C138.494 163.053 138.382 163.17 138.271 163.284C138.109 163.434 137.979 163.564 137.881 163.675C137.783 163.782 137.708 163.895 137.656 164.012C137.604 164.132 137.57 164.269 137.554 164.422C137.537 164.572 137.528 164.764 137.524 164.998ZM137.422 166.526C137.422 166.676 137.467 166.801 137.559 166.902C137.653 167.003 137.793 167.054 137.979 167.054C138.164 167.054 138.304 167.003 138.398 166.902C138.496 166.801 138.545 166.676 138.545 166.526C138.545 166.37 138.496 166.24 138.398 166.136C138.304 166.032 138.164 165.979 137.979 165.979C137.793 165.979 137.653 166.032 137.559 166.136C137.467 166.24 137.422 166.37 137.422 166.526ZM143.848 160.11V159.393H142.964V160.125C142.964 160.405 142.925 160.665 142.847 160.906C142.772 161.147 142.658 161.383 142.505 161.614L142.998 161.966C143.135 161.849 143.255 161.715 143.359 161.565C143.464 161.416 143.553 161.258 143.628 161.092C143.7 160.929 143.753 160.763 143.789 160.594C143.828 160.424 143.848 160.263 143.848 160.11ZM145.469 160.11V159.393H144.585V160.125C144.585 160.405 144.546 160.665 144.468 160.906C144.393 161.147 144.279 161.383 144.126 161.614L144.619 161.966C144.756 161.849 144.876 161.715 144.98 161.565C145.085 161.416 145.174 161.258 145.249 161.092C145.321 160.929 145.374 160.763 145.41 160.594C145.449 160.424 145.469 160.263 145.469 160.11ZM153.892 169.031H154.795V166.492C154.86 166.564 154.93 166.631 155.005 166.692C155.08 166.751 155.16 166.805 155.244 166.854C155.384 166.932 155.54 166.992 155.713 167.034C155.889 167.076 156.077 167.098 156.279 167.098C156.611 167.098 156.906 167.029 157.163 166.893C157.424 166.756 157.642 166.567 157.817 166.326C157.993 166.085 158.127 165.802 158.218 165.477C158.309 165.148 158.354 164.795 158.354 164.417V164.314C158.354 163.921 158.309 163.559 158.218 163.23C158.127 162.898 157.993 162.614 157.817 162.376C157.642 162.138 157.424 161.953 157.163 161.819C156.903 161.686 156.603 161.619 156.265 161.619C156.073 161.619 155.892 161.64 155.723 161.683C155.557 161.722 155.405 161.78 155.269 161.858C155.171 161.91 155.08 161.974 154.995 162.049C154.91 162.12 154.832 162.202 154.761 162.293L154.717 161.717H153.892V169.031ZM157.451 164.314V164.417C157.451 164.674 157.422 164.92 157.363 165.154C157.308 165.389 157.222 165.595 157.104 165.774C156.987 165.953 156.838 166.097 156.655 166.204C156.473 166.308 156.257 166.36 156.006 166.36C155.85 166.36 155.706 166.341 155.576 166.302C155.449 166.263 155.334 166.209 155.229 166.141C155.138 166.082 155.057 166.01 154.985 165.926C154.914 165.841 154.85 165.75 154.795 165.652V163.108C154.857 162.998 154.928 162.897 155.01 162.806C155.091 162.715 155.184 162.638 155.288 162.576C155.382 162.514 155.488 162.467 155.605 162.435C155.726 162.402 155.856 162.386 155.996 162.386C156.25 162.386 156.468 162.438 156.65 162.542C156.833 162.646 156.984 162.786 157.104 162.962C157.222 163.141 157.308 163.348 157.363 163.582C157.422 163.813 157.451 164.057 157.451 164.314ZM160.044 159.5V160.286H161.841V166.219H160.044V167H164.468V166.219H162.744V159.5H160.044ZM169.38 167H170.322V166.922C170.264 166.775 170.218 166.604 170.186 166.409C170.153 166.211 170.137 166.023 170.137 165.848V163.392C170.137 163.095 170.083 162.837 169.976 162.615C169.868 162.394 169.722 162.208 169.536 162.059C169.347 161.912 169.124 161.803 168.867 161.731C168.61 161.657 168.332 161.619 168.032 161.619C167.703 161.619 167.409 161.665 167.148 161.756C166.891 161.847 166.673 161.966 166.494 162.112C166.312 162.262 166.172 162.43 166.074 162.615C165.98 162.801 165.931 162.99 165.928 163.182H166.836C166.836 163.071 166.862 162.965 166.914 162.864C166.969 162.76 167.046 162.671 167.144 162.596C167.241 162.521 167.36 162.461 167.5 162.415C167.643 162.369 167.804 162.347 167.983 162.347C168.175 162.347 168.348 162.371 168.501 162.42C168.657 162.469 168.789 162.537 168.896 162.625C169.004 162.716 169.087 162.825 169.146 162.952C169.204 163.079 169.233 163.222 169.233 163.382V163.797H168.247C167.879 163.797 167.546 163.833 167.246 163.904C166.95 163.976 166.696 164.083 166.484 164.227C166.273 164.373 166.108 164.555 165.991 164.773C165.877 164.992 165.82 165.245 165.82 165.535C165.82 165.757 165.863 165.963 165.947 166.155C166.035 166.344 166.159 166.507 166.318 166.644C166.475 166.784 166.665 166.894 166.89 166.976C167.118 167.057 167.371 167.098 167.651 167.098C167.824 167.098 167.987 167.08 168.14 167.044C168.293 167.008 168.438 166.959 168.574 166.897C168.708 166.836 168.83 166.764 168.94 166.683C169.054 166.601 169.157 166.515 169.248 166.424C169.258 166.535 169.272 166.642 169.292 166.746C169.315 166.847 169.344 166.932 169.38 167ZM167.783 166.312C167.607 166.312 167.453 166.289 167.319 166.243C167.186 166.198 167.075 166.134 166.987 166.053C166.899 165.975 166.833 165.88 166.787 165.77C166.745 165.659 166.724 165.538 166.724 165.408C166.724 165.271 166.748 165.149 166.797 165.042C166.849 164.935 166.924 164.842 167.021 164.764C167.158 164.653 167.342 164.572 167.573 164.52C167.808 164.464 168.081 164.437 168.394 164.437H169.233V165.506C169.181 165.61 169.11 165.711 169.019 165.809C168.927 165.903 168.82 165.988 168.696 166.062C168.569 166.137 168.429 166.198 168.276 166.243C168.123 166.289 167.959 166.312 167.783 166.312ZM174.165 166.365C173.882 166.365 173.644 166.31 173.452 166.199C173.263 166.085 173.112 165.937 172.998 165.755C172.881 165.576 172.796 165.374 172.744 165.149C172.695 164.922 172.671 164.692 172.671 164.461V164.256C172.671 164.028 172.695 163.802 172.744 163.577C172.796 163.353 172.881 163.149 172.998 162.967C173.115 162.788 173.268 162.643 173.457 162.532C173.649 162.418 173.885 162.361 174.165 162.361C174.347 162.361 174.517 162.392 174.673 162.454C174.832 162.516 174.969 162.601 175.083 162.708C175.197 162.815 175.286 162.941 175.352 163.084C175.42 163.224 175.456 163.374 175.459 163.533H176.313C176.313 163.266 176.26 163.016 176.152 162.781C176.045 162.547 175.897 162.343 175.708 162.171C175.516 162.002 175.288 161.868 175.024 161.771C174.764 161.67 174.478 161.619 174.165 161.619C173.765 161.619 173.415 161.691 173.115 161.834C172.816 161.977 172.567 162.169 172.368 162.41C172.166 162.654 172.015 162.936 171.914 163.255C171.813 163.574 171.763 163.908 171.763 164.256V164.461C171.763 164.812 171.813 165.148 171.914 165.467C172.015 165.783 172.166 166.061 172.368 166.302C172.567 166.546 172.816 166.74 173.115 166.883C173.415 167.026 173.765 167.098 174.165 167.098C174.445 167.098 174.714 167.05 174.971 166.956C175.228 166.858 175.456 166.728 175.654 166.565C175.853 166.406 176.011 166.22 176.128 166.009C176.248 165.794 176.31 165.569 176.313 165.335H175.459C175.456 165.481 175.417 165.618 175.342 165.745C175.27 165.869 175.174 165.976 175.054 166.067C174.933 166.162 174.795 166.235 174.639 166.287C174.486 166.339 174.328 166.365 174.165 166.365ZM180.254 167.098C180.768 167.098 181.2 166.995 181.548 166.79C181.899 166.582 182.163 166.344 182.339 166.077L181.787 165.647C181.621 165.862 181.413 166.035 181.162 166.165C180.911 166.295 180.625 166.36 180.303 166.36C180.059 166.36 179.836 166.315 179.634 166.224C179.432 166.132 179.259 166.007 179.116 165.848C178.976 165.698 178.866 165.525 178.784 165.33C178.706 165.135 178.656 164.909 178.633 164.651V164.617H182.407V164.212C182.407 163.844 182.36 163.502 182.266 163.187C182.174 162.871 182.035 162.596 181.846 162.361C181.657 162.13 181.419 161.95 181.133 161.819C180.85 161.686 180.518 161.619 180.137 161.619C179.834 161.619 179.538 161.681 179.248 161.805C178.962 161.928 178.706 162.106 178.481 162.337C178.254 162.571 178.071 162.858 177.935 163.196C177.798 163.532 177.729 163.912 177.729 164.339V164.544C177.729 164.912 177.791 165.252 177.915 165.564C178.039 165.877 178.211 166.147 178.433 166.375C178.654 166.603 178.919 166.78 179.229 166.907C179.541 167.034 179.883 167.098 180.254 167.098ZM180.137 162.361C180.368 162.361 180.566 162.404 180.732 162.488C180.902 162.573 181.042 162.684 181.152 162.82C181.263 162.957 181.349 163.12 181.411 163.309C181.473 163.494 181.504 163.668 181.504 163.831V163.875H178.662C178.698 163.631 178.76 163.416 178.848 163.23C178.939 163.042 179.049 162.882 179.18 162.752C179.31 162.625 179.456 162.529 179.619 162.464C179.782 162.396 179.954 162.361 180.137 162.361ZM184.829 162.503V159.5H183.926V167H184.829V163.162C184.894 163.058 184.967 162.964 185.049 162.879C185.133 162.791 185.225 162.715 185.322 162.649C185.446 162.565 185.581 162.5 185.728 162.454C185.874 162.409 186.029 162.386 186.191 162.386C186.39 162.382 186.566 162.41 186.719 162.469C186.872 162.524 186.999 162.609 187.1 162.723C187.194 162.827 187.266 162.959 187.314 163.118C187.363 163.274 187.388 163.457 187.388 163.665V167H188.291V163.675C188.291 163.32 188.247 163.014 188.159 162.757C188.075 162.496 187.952 162.282 187.793 162.112C187.633 161.943 187.44 161.819 187.212 161.741C186.987 161.66 186.737 161.619 186.46 161.619C186.248 161.622 186.048 161.653 185.859 161.712C185.674 161.771 185.503 161.857 185.347 161.971C185.249 162.039 185.156 162.119 185.068 162.21C184.98 162.298 184.901 162.396 184.829 162.503ZM189.678 164.31V164.417C189.678 164.798 189.733 165.151 189.844 165.477C189.954 165.802 190.114 166.085 190.322 166.326C190.527 166.567 190.778 166.756 191.074 166.893C191.374 167.029 191.711 167.098 192.085 167.098C192.456 167.098 192.79 167.029 193.086 166.893C193.382 166.756 193.634 166.567 193.843 166.326C194.048 166.085 194.206 165.802 194.316 165.477C194.427 165.151 194.482 164.798 194.482 164.417V164.31C194.482 163.929 194.427 163.576 194.316 163.25C194.206 162.921 194.048 162.636 193.843 162.396C193.634 162.155 193.381 161.966 193.081 161.829C192.785 161.689 192.45 161.619 192.075 161.619C191.704 161.619 191.37 161.689 191.074 161.829C190.778 161.966 190.527 162.155 190.322 162.396C190.114 162.636 189.954 162.921 189.844 163.25C189.733 163.576 189.678 163.929 189.678 164.31ZM190.581 164.417V164.31C190.581 164.052 190.612 163.807 190.674 163.572C190.736 163.335 190.83 163.126 190.957 162.947C191.081 162.768 191.235 162.627 191.421 162.522C191.606 162.415 191.825 162.361 192.075 162.361C192.326 162.361 192.544 162.415 192.729 162.522C192.918 162.627 193.076 162.768 193.203 162.947C193.327 163.126 193.42 163.335 193.481 163.572C193.547 163.807 193.579 164.052 193.579 164.31V164.417C193.579 164.677 193.548 164.926 193.486 165.164C193.424 165.398 193.332 165.605 193.208 165.784C193.081 165.963 192.923 166.105 192.734 166.209C192.549 166.313 192.332 166.365 192.085 166.365C191.834 166.365 191.615 166.313 191.426 166.209C191.237 166.105 191.081 165.963 190.957 165.784C190.83 165.605 190.736 165.398 190.674 165.164C190.612 164.926 190.581 164.677 190.581 164.417ZM196.079 159.5V160.286H197.876V166.219H196.079V167H200.503V166.219H198.779V159.5H196.079ZM201.772 164.314V164.417C201.772 164.795 201.823 165.148 201.924 165.477C202.025 165.802 202.166 166.085 202.349 166.326C202.531 166.567 202.751 166.756 203.008 166.893C203.268 167.029 203.558 167.098 203.877 167.098C204.202 167.098 204.487 167.042 204.731 166.932C204.976 166.821 205.186 166.658 205.361 166.443L205.4 167H206.23V159.5H205.327V162.239C205.155 162.037 204.95 161.884 204.712 161.78C204.478 161.673 204.202 161.619 203.887 161.619C203.564 161.619 203.273 161.686 203.013 161.819C202.752 161.953 202.531 162.138 202.349 162.376C202.163 162.614 202.02 162.898 201.919 163.23C201.821 163.559 201.772 163.921 201.772 164.314ZM202.676 164.417V164.314C202.676 164.057 202.703 163.813 202.759 163.582C202.814 163.348 202.9 163.141 203.018 162.962C203.132 162.786 203.278 162.646 203.457 162.542C203.639 162.438 203.857 162.386 204.111 162.386C204.408 162.386 204.655 162.456 204.854 162.596C205.052 162.732 205.21 162.908 205.327 163.123V165.574C205.21 165.805 205.052 165.989 204.854 166.126C204.655 166.263 204.404 166.331 204.102 166.331C203.851 166.331 203.636 166.281 203.457 166.18C203.278 166.076 203.132 165.936 203.018 165.76C202.9 165.584 202.814 165.381 202.759 165.149C202.703 164.918 202.676 164.674 202.676 164.417ZM210.283 167.098C210.798 167.098 211.229 166.995 211.577 166.79C211.929 166.582 212.192 166.344 212.368 166.077L211.816 165.647C211.65 165.862 211.442 166.035 211.191 166.165C210.941 166.295 210.654 166.36 210.332 166.36C210.088 166.36 209.865 166.315 209.663 166.224C209.461 166.132 209.289 166.007 209.146 165.848C209.006 165.698 208.895 165.525 208.813 165.33C208.735 165.135 208.685 164.909 208.662 164.651V164.617H212.437V164.212C212.437 163.844 212.389 163.502 212.295 163.187C212.204 162.871 212.064 162.596 211.875 162.361C211.686 162.13 211.449 161.95 211.162 161.819C210.879 161.686 210.547 161.619 210.166 161.619C209.863 161.619 209.567 161.681 209.277 161.805C208.991 161.928 208.735 162.106 208.511 162.337C208.283 162.571 208.101 162.858 207.964 163.196C207.827 163.532 207.759 163.912 207.759 164.339V164.544C207.759 164.912 207.821 165.252 207.944 165.564C208.068 165.877 208.241 166.147 208.462 166.375C208.683 166.603 208.949 166.78 209.258 166.907C209.57 167.034 209.912 167.098 210.283 167.098ZM210.166 162.361C210.397 162.361 210.596 162.404 210.762 162.488C210.931 162.573 211.071 162.684 211.182 162.82C211.292 162.957 211.379 163.12 211.44 163.309C211.502 163.494 211.533 163.668 211.533 163.831V163.875H208.691C208.727 163.631 208.789 163.416 208.877 163.23C208.968 163.042 209.079 162.882 209.209 162.752C209.339 162.625 209.486 162.529 209.648 162.464C209.811 162.396 209.984 162.361 210.166 162.361ZM217.417 161.619C217.033 161.619 216.689 161.704 216.387 161.873C216.087 162.039 215.83 162.267 215.615 162.557L215.61 162.425L215.571 161.717H214.712V167H215.62V163.611C215.679 163.449 215.752 163.302 215.84 163.172C215.931 163.038 216.037 162.926 216.157 162.835C216.291 162.731 216.447 162.653 216.626 162.601C216.805 162.545 217.005 162.518 217.227 162.518C217.399 162.518 217.563 162.527 217.72 162.547C217.879 162.563 218.047 162.591 218.223 162.63L218.345 161.746C218.254 161.707 218.117 161.676 217.935 161.653C217.756 161.631 217.583 161.619 217.417 161.619ZM221.606 164.998H222.51C222.51 164.871 222.513 164.759 222.52 164.661C222.526 164.56 222.542 164.466 222.568 164.378C222.594 164.29 222.633 164.204 222.686 164.119C222.741 164.035 222.817 163.945 222.915 163.851C223.068 163.714 223.223 163.566 223.379 163.406C223.538 163.247 223.682 163.074 223.809 162.889C223.936 162.706 224.04 162.513 224.121 162.308C224.202 162.099 224.243 161.878 224.243 161.644C224.243 161.351 224.196 161.09 224.102 160.862C224.007 160.634 223.87 160.441 223.691 160.281C223.512 160.122 223.293 160.001 223.032 159.92C222.775 159.835 222.482 159.793 222.153 159.793C221.857 159.793 221.58 159.834 221.323 159.915C221.069 159.993 220.85 160.107 220.664 160.257C220.475 160.41 220.326 160.595 220.215 160.813C220.104 161.032 220.047 161.277 220.044 161.551H220.947C220.947 161.382 220.981 161.237 221.05 161.116C221.118 160.993 221.209 160.89 221.323 160.809C221.434 160.73 221.561 160.674 221.704 160.638C221.851 160.599 222 160.579 222.153 160.579C222.352 160.579 222.528 160.605 222.681 160.657C222.834 160.709 222.961 160.786 223.062 160.887C223.153 160.978 223.221 161.09 223.267 161.224C223.315 161.354 223.34 161.504 223.34 161.673C223.34 161.836 223.309 161.99 223.247 162.137C223.185 162.283 223.107 162.422 223.013 162.552C222.915 162.685 222.808 162.812 222.69 162.933C222.576 163.053 222.464 163.17 222.354 163.284C222.191 163.434 222.061 163.564 221.963 163.675C221.865 163.782 221.79 163.895 221.738 164.012C221.686 164.132 221.652 164.269 221.636 164.422C221.619 164.572 221.61 164.764 221.606 164.998ZM221.504 166.526C221.504 166.676 221.549 166.801 221.641 166.902C221.735 167.003 221.875 167.054 222.061 167.054C222.246 167.054 222.386 167.003 222.48 166.902C222.578 166.801 222.627 166.676 222.627 166.526C222.627 166.37 222.578 166.24 222.48 166.136C222.386 166.032 222.246 165.979 222.061 165.979C221.875 165.979 221.735 166.032 221.641 166.136C221.549 166.24 221.504 166.37 221.504 166.526ZM232.866 164.114V164.163C232.866 164.629 232.902 165.066 232.974 165.477C233.049 165.887 233.148 166.266 233.271 166.614C233.392 166.966 233.532 167.285 233.691 167.571C233.854 167.861 234.025 168.118 234.204 168.343C234.38 168.571 234.557 168.763 234.736 168.919C234.919 169.078 235.091 169.204 235.254 169.295L235.444 168.743C235.311 168.636 235.177 168.506 235.044 168.353C234.914 168.203 234.787 168.03 234.663 167.835C234.543 167.63 234.427 167.397 234.316 167.137C234.206 166.88 234.108 166.6 234.023 166.297C233.945 165.997 233.883 165.67 233.838 165.315C233.792 164.961 233.77 164.58 233.77 164.173V164.104C233.77 163.681 233.794 163.286 233.843 162.918C233.892 162.55 233.96 162.213 234.048 161.907C234.139 161.569 234.253 161.258 234.39 160.975C234.526 160.688 234.67 160.439 234.819 160.228C234.92 160.091 235.023 159.967 235.127 159.856C235.234 159.746 235.34 159.651 235.444 159.573L235.254 158.978C235.091 159.069 234.92 159.194 234.741 159.354C234.562 159.513 234.385 159.705 234.209 159.93C234.03 160.154 233.859 160.411 233.696 160.701C233.537 160.991 233.395 161.31 233.271 161.658C233.148 162.01 233.049 162.391 232.974 162.801C232.902 163.211 232.866 163.649 232.866 164.114ZM237.979 167H238.882V163.211C238.944 163.097 239.015 162.993 239.097 162.898C239.181 162.804 239.272 162.721 239.37 162.649C239.491 162.568 239.622 162.505 239.766 162.459C239.909 162.41 240.063 162.386 240.229 162.386C240.422 162.386 240.591 162.409 240.737 162.454C240.887 162.5 241.014 162.573 241.118 162.674C241.219 162.775 241.296 162.907 241.348 163.069C241.4 163.232 241.426 163.431 241.426 163.665V167H242.329V163.646C242.329 163.294 242.285 162.991 242.197 162.737C242.113 162.48 241.991 162.269 241.831 162.103C241.672 161.937 241.478 161.814 241.25 161.736C241.025 161.658 240.775 161.619 240.498 161.619C240.293 161.622 240.098 161.653 239.912 161.712C239.73 161.767 239.561 161.847 239.404 161.951C239.3 162.02 239.201 162.101 239.106 162.195C239.015 162.286 238.931 162.387 238.853 162.498L238.789 161.717H237.979V167ZM243.73 164.31V164.417C243.73 164.798 243.786 165.151 243.896 165.477C244.007 165.802 244.167 166.085 244.375 166.326C244.58 166.567 244.831 166.756 245.127 166.893C245.426 167.029 245.763 167.098 246.138 167.098C246.509 167.098 246.842 167.029 247.139 166.893C247.435 166.756 247.687 166.567 247.896 166.326C248.101 166.085 248.258 165.802 248.369 165.477C248.48 165.151 248.535 164.798 248.535 164.417V164.31C248.535 163.929 248.48 163.576 248.369 163.25C248.258 162.921 248.101 162.636 247.896 162.396C247.687 162.155 247.433 161.966 247.134 161.829C246.838 161.689 246.502 161.619 246.128 161.619C245.757 161.619 245.423 161.689 245.127 161.829C244.831 161.966 244.58 162.155 244.375 162.396C244.167 162.636 244.007 162.921 243.896 163.25C243.786 163.576 243.73 163.929 243.73 164.31ZM244.634 164.417V164.31C244.634 164.052 244.665 163.807 244.727 163.572C244.788 163.335 244.883 163.126 245.01 162.947C245.133 162.768 245.288 162.627 245.474 162.522C245.659 162.415 245.877 162.361 246.128 162.361C246.379 162.361 246.597 162.415 246.782 162.522C246.971 162.627 247.129 162.768 247.256 162.947C247.38 163.126 247.472 163.335 247.534 163.572C247.599 163.807 247.632 164.052 247.632 164.31V164.417C247.632 164.677 247.601 164.926 247.539 165.164C247.477 165.398 247.384 165.605 247.261 165.784C247.134 165.963 246.976 166.105 246.787 166.209C246.602 166.313 246.385 166.365 246.138 166.365C245.887 166.365 245.667 166.313 245.479 166.209C245.29 166.105 245.133 165.963 245.01 165.784C244.883 165.605 244.788 165.398 244.727 165.164C244.665 164.926 244.634 164.677 244.634 164.417ZM253.286 164.163V164.114C253.286 163.616 253.247 163.169 253.169 162.771C253.094 162.371 252.998 162 252.881 161.658C252.76 161.303 252.62 160.984 252.461 160.701C252.301 160.418 252.131 160.161 251.948 159.93C251.772 159.705 251.593 159.513 251.411 159.354C251.229 159.194 251.056 159.069 250.894 158.978L250.703 159.529C250.811 159.617 250.921 159.725 251.035 159.852C251.149 159.975 251.26 160.12 251.367 160.286C251.507 160.498 251.644 160.747 251.777 161.033C251.911 161.316 252.025 161.637 252.119 161.995C252.184 162.246 252.243 162.55 252.295 162.908C252.35 163.266 252.378 163.665 252.378 164.104V164.173C252.378 164.56 252.357 164.925 252.314 165.267C252.275 165.605 252.218 165.921 252.144 166.214C252.072 166.53 251.979 166.819 251.865 167.083C251.755 167.35 251.639 167.589 251.519 167.801C251.392 168.009 251.258 168.193 251.118 168.353C250.978 168.512 250.84 168.642 250.703 168.743L250.894 169.295C251.056 169.204 251.227 169.078 251.406 168.919C251.589 168.763 251.769 168.571 251.948 168.343C252.124 168.118 252.292 167.861 252.451 167.571C252.614 167.285 252.757 166.966 252.881 166.614C253.005 166.266 253.102 165.887 253.174 165.477C253.249 165.066 253.286 164.629 253.286 164.163Z\"\n      fill=\"#E139F0\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"174\"\n      cy=\"87.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"215\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"133\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"89\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"177\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173 88L88 233.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173.5 89L216 159\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M132 158L179 234\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M88.1167 232.468H90.6802C90.6802 232.194 90.687 231.962 90.7007 231.771C90.7144 231.572 90.7485 231.391 90.8032 231.227C90.8511 231.063 90.9331 230.902 91.0493 230.745C91.1655 230.588 91.3262 230.407 91.5312 230.202C91.8662 229.908 92.1978 229.607 92.5259 229.299C92.8608 228.985 93.1582 228.653 93.418 228.305C93.6777 227.963 93.8896 227.594 94.0537 227.197C94.2178 226.794 94.2998 226.35 94.2998 225.864C94.2998 225.208 94.1904 224.63 93.9717 224.131C93.7529 223.632 93.4385 223.212 93.0283 222.87C92.6113 222.535 92.1021 222.282 91.5005 222.111C90.8989 221.94 90.2188 221.855 89.46 221.855C88.7832 221.855 88.1543 221.94 87.5732 222.111C86.9922 222.275 86.4863 222.528 86.0557 222.87C85.625 223.212 85.2832 223.643 85.0303 224.162C84.7773 224.675 84.6475 225.28 84.6406 225.977H87.5015C87.5083 225.663 87.5664 225.393 87.6758 225.167C87.792 224.941 87.9424 224.757 88.127 224.613C88.3047 224.47 88.5098 224.367 88.7422 224.306C88.9746 224.237 89.2139 224.203 89.46 224.203C89.7744 224.203 90.0513 224.237 90.2905 224.306C90.5366 224.374 90.7451 224.477 90.916 224.613C91.0801 224.764 91.2065 224.955 91.2954 225.188C91.3843 225.413 91.4287 225.683 91.4287 225.998C91.4287 226.257 91.3706 226.517 91.2544 226.777C91.1382 227.037 90.9878 227.29 90.8032 227.536C90.6118 227.789 90.3999 228.035 90.1675 228.274C89.9351 228.506 89.7026 228.729 89.4702 228.94C89.1489 229.193 88.8994 229.433 88.7217 229.658C88.5439 229.877 88.4106 230.116 88.3218 230.376C88.2329 230.643 88.1748 230.94 88.1475 231.268C88.127 231.596 88.1167 231.996 88.1167 232.468ZM87.6963 235.575C87.6963 236.012 87.8433 236.381 88.1372 236.682C88.4312 236.976 88.8379 237.123 89.3574 237.123C89.8633 237.123 90.2666 236.976 90.5674 236.682C90.875 236.381 91.0288 236.012 91.0288 235.575C91.0288 235.124 90.875 234.748 90.5674 234.447C90.2666 234.139 89.8633 233.985 89.3574 233.985C88.8379 233.985 88.4312 234.139 88.1372 234.447C87.8433 234.748 87.6963 235.124 87.6963 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M175.117 232.468H177.68C177.68 232.194 177.687 231.962 177.701 231.771C177.714 231.572 177.749 231.391 177.803 231.227C177.851 231.063 177.933 230.902 178.049 230.745C178.166 230.588 178.326 230.407 178.531 230.202C178.866 229.908 179.198 229.607 179.526 229.299C179.861 228.985 180.158 228.653 180.418 228.305C180.678 227.963 180.89 227.594 181.054 227.197C181.218 226.794 181.3 226.35 181.3 225.864C181.3 225.208 181.19 224.63 180.972 224.131C180.753 223.632 180.438 223.212 180.028 222.87C179.611 222.535 179.102 222.282 178.5 222.111C177.899 221.94 177.219 221.855 176.46 221.855C175.783 221.855 175.154 221.94 174.573 222.111C173.992 222.275 173.486 222.528 173.056 222.87C172.625 223.212 172.283 223.643 172.03 224.162C171.777 224.675 171.647 225.28 171.641 225.977H174.501C174.508 225.663 174.566 225.393 174.676 225.167C174.792 224.941 174.942 224.757 175.127 224.613C175.305 224.47 175.51 224.367 175.742 224.306C175.975 224.237 176.214 224.203 176.46 224.203C176.774 224.203 177.051 224.237 177.291 224.306C177.537 224.374 177.745 224.477 177.916 224.613C178.08 224.764 178.207 224.955 178.295 225.188C178.384 225.413 178.429 225.683 178.429 225.998C178.429 226.257 178.371 226.517 178.254 226.777C178.138 227.037 177.988 227.29 177.803 227.536C177.612 227.789 177.4 228.035 177.167 228.274C176.935 228.506 176.703 228.729 176.47 228.94C176.149 229.193 175.899 229.433 175.722 229.658C175.544 229.877 175.411 230.116 175.322 230.376C175.233 230.643 175.175 230.94 175.147 231.268C175.127 231.596 175.117 231.996 175.117 232.468ZM174.696 235.575C174.696 236.012 174.843 236.381 175.137 236.682C175.431 236.976 175.838 237.123 176.357 237.123C176.863 237.123 177.267 236.976 177.567 236.682C177.875 236.381 178.029 236.012 178.029 235.575C178.029 235.124 177.875 234.748 177.567 234.447C177.267 234.139 176.863 233.985 176.357 233.985C175.838 233.985 175.431 234.139 175.137 234.447C174.843 234.748 174.696 235.124 174.696 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M430.713 54.0566V53.1367H427.15V50.3945H431.252V49.4688H426.066V58H431.305V57.0801H427.15V54.0566H430.713ZM433.021 54.7773V54.9004C433.021 55.3535 433.082 55.7773 433.203 56.1719C433.324 56.5625 433.494 56.9023 433.713 57.1914C433.932 57.4805 434.195 57.707 434.504 57.8711C434.816 58.0352 435.164 58.1172 435.547 58.1172C435.938 58.1172 436.279 58.0508 436.572 57.918C436.865 57.7852 437.117 57.5898 437.328 57.332L437.375 58H438.371V49H437.287V52.2871C437.08 52.0449 436.834 51.8613 436.549 51.7363C436.268 51.6074 435.938 51.543 435.559 51.543C435.172 51.543 434.822 51.623 434.51 51.7832C434.197 51.9434 433.932 52.166 433.713 52.4512C433.49 52.7363 433.318 53.0781 433.197 53.4766C433.08 53.8711 433.021 54.3047 433.021 54.7773ZM434.105 54.9004V54.7773C434.105 54.4688 434.139 54.1758 434.205 53.8984C434.271 53.6172 434.375 53.3691 434.516 53.1543C434.652 52.9434 434.828 52.7754 435.043 52.6504C435.262 52.5254 435.523 52.4629 435.828 52.4629C436.184 52.4629 436.48 52.5469 436.719 52.7148C436.957 52.8789 437.146 53.0898 437.287 53.3477V56.2891C437.146 56.5664 436.957 56.7871 436.719 56.9512C436.48 57.1152 436.18 57.1973 435.816 57.1973C435.516 57.1973 435.258 57.1367 435.043 57.0156C434.828 56.8906 434.652 56.7227 434.516 56.5117C434.375 56.3008 434.271 56.0566 434.205 55.7793C434.139 55.502 434.105 55.209 434.105 54.9004ZM440.604 51.6602V52.6035H442.76V57.0625H440.604V58H445.912V57.0625H443.844V51.6602H440.604ZM442.619 49.9961C442.619 50.1719 442.672 50.3184 442.777 50.4355C442.887 50.5527 443.051 50.6113 443.27 50.6113C443.484 50.6113 443.646 50.5527 443.756 50.4355C443.865 50.3184 443.92 50.1719 443.92 49.9961C443.92 49.8984 443.904 49.8086 443.873 49.7266C443.842 49.6445 443.795 49.5762 443.732 49.5215C443.682 49.4707 443.617 49.4316 443.539 49.4043C443.461 49.373 443.371 49.3574 443.27 49.3574C443.168 49.3574 443.076 49.373 442.994 49.4043C442.916 49.4316 442.852 49.4707 442.801 49.5215C442.738 49.5801 442.691 49.6504 442.66 49.7324C442.633 49.8145 442.619 49.9023 442.619 49.9961ZM450.207 50.125H449.117V51.6602H447.453V52.498H449.117V55.9434C449.117 56.334 449.168 56.668 449.27 56.9453C449.375 57.2188 449.518 57.4414 449.697 57.6133C449.877 57.7891 450.088 57.918 450.33 58C450.576 58.0781 450.84 58.1172 451.121 58.1172C451.289 58.1172 451.457 58.1094 451.625 58.0938C451.797 58.0781 451.959 58.0547 452.111 58.0234C452.264 57.9961 452.404 57.9629 452.533 57.9238C452.662 57.8809 452.771 57.832 452.861 57.7773L452.709 57.0098C452.643 57.0254 452.557 57.0449 452.451 57.0684C452.35 57.0879 452.24 57.1074 452.123 57.127C452.002 57.1465 451.879 57.1641 451.754 57.1797C451.629 57.1914 451.508 57.1973 451.391 57.1973C451.23 57.1973 451.078 57.1777 450.934 57.1387C450.793 57.0996 450.668 57.0312 450.559 56.9336C450.449 56.8398 450.363 56.7129 450.301 56.5527C450.238 56.3926 450.207 56.1895 450.207 55.9434V52.498H452.621V51.6602H450.207V50.125ZM463.244 49.4688H461.902V58H462.957V54.5957L462.869 51.1562L464.316 55.627H464.938L466.514 51.0332L466.426 54.5957V58H467.48V49.4688H466.133L464.633 53.7344L463.244 49.4688ZM473.428 58H474.559V57.9062C474.488 57.7305 474.434 57.5254 474.395 57.291C474.355 57.0527 474.336 56.8281 474.336 56.6172V53.6699C474.336 53.3145 474.271 53.0039 474.143 52.7383C474.014 52.4727 473.838 52.25 473.615 52.0703C473.389 51.8945 473.121 51.7637 472.812 51.6777C472.504 51.5879 472.17 51.543 471.811 51.543C471.416 51.543 471.062 51.5977 470.75 51.707C470.441 51.8164 470.18 51.959 469.965 52.1348C469.746 52.3145 469.578 52.5156 469.461 52.7383C469.348 52.9609 469.289 53.1875 469.285 53.418H470.375C470.375 53.2852 470.406 53.1582 470.469 53.0371C470.535 52.9121 470.627 52.8047 470.744 52.7148C470.861 52.625 471.004 52.5527 471.172 52.498C471.344 52.4434 471.537 52.416 471.752 52.416C471.982 52.416 472.189 52.4453 472.373 52.5039C472.561 52.5625 472.719 52.6445 472.848 52.75C472.977 52.8594 473.076 52.9902 473.146 53.1426C473.217 53.2949 473.252 53.4668 473.252 53.6582V54.1562H472.068C471.627 54.1562 471.227 54.1992 470.867 54.2852C470.512 54.3711 470.207 54.5 469.953 54.6719C469.699 54.8477 469.502 55.0664 469.361 55.3281C469.225 55.5898 469.156 55.8945 469.156 56.2422C469.156 56.5078 469.207 56.7559 469.309 56.9863C469.414 57.2129 469.562 57.4082 469.754 57.5723C469.941 57.7402 470.17 57.873 470.439 57.9707C470.713 58.0684 471.018 58.1172 471.354 58.1172C471.561 58.1172 471.756 58.0957 471.939 58.0527C472.123 58.0098 472.297 57.9512 472.461 57.877C472.621 57.8027 472.768 57.7168 472.9 57.6191C473.037 57.5215 473.16 57.418 473.27 57.3086C473.281 57.4414 473.299 57.5703 473.322 57.6953C473.35 57.8164 473.385 57.918 473.428 58ZM471.512 57.1738C471.301 57.1738 471.115 57.1465 470.955 57.0918C470.795 57.0371 470.662 56.9609 470.557 56.8633C470.451 56.7695 470.371 56.6562 470.316 56.5234C470.266 56.3906 470.24 56.2461 470.24 56.0898C470.24 55.9258 470.27 55.7793 470.328 55.6504C470.391 55.5215 470.48 55.4102 470.598 55.3164C470.762 55.1836 470.982 55.0859 471.26 55.0234C471.541 54.957 471.869 54.9238 472.244 54.9238H473.252V56.207C473.189 56.332 473.104 56.4531 472.994 56.5703C472.885 56.6836 472.756 56.7852 472.607 56.875C472.455 56.9648 472.287 57.0371 472.104 57.0918C471.92 57.1465 471.723 57.1738 471.512 57.1738ZM476.463 60.4375H477.547V57.3906C477.625 57.4766 477.709 57.5566 477.799 57.6309C477.889 57.7012 477.984 57.7656 478.086 57.8242C478.254 57.918 478.441 57.9902 478.648 58.041C478.859 58.0918 479.086 58.1172 479.328 58.1172C479.727 58.1172 480.08 58.0352 480.389 57.8711C480.701 57.707 480.963 57.4805 481.174 57.1914C481.385 56.9023 481.545 56.5625 481.654 56.1719C481.764 55.7773 481.818 55.3535 481.818 54.9004V54.7773C481.818 54.3047 481.764 53.8711 481.654 53.4766C481.545 53.0781 481.385 52.7363 481.174 52.4512C480.963 52.166 480.701 51.9434 480.389 51.7832C480.076 51.623 479.717 51.543 479.311 51.543C479.08 51.543 478.863 51.5684 478.66 51.6191C478.461 51.666 478.279 51.7363 478.115 51.8301C477.998 51.8926 477.889 51.9688 477.787 52.0586C477.686 52.1445 477.592 52.2422 477.506 52.3516L477.453 51.6602H476.463V60.4375ZM480.734 54.7773V54.9004C480.734 55.209 480.699 55.5039 480.629 55.7852C480.562 56.0664 480.459 56.3145 480.318 56.5293C480.178 56.7441 479.998 56.916 479.779 57.0449C479.561 57.1699 479.301 57.2324 479 57.2324C478.812 57.2324 478.641 57.209 478.484 57.1621C478.332 57.1152 478.193 57.0508 478.068 56.9688C477.959 56.8984 477.861 56.8125 477.775 56.7109C477.689 56.6094 477.613 56.5 477.547 56.3828V53.3301C477.621 53.1973 477.707 53.0762 477.805 52.9668C477.902 52.8574 478.014 52.7656 478.139 52.6914C478.252 52.6172 478.379 52.5605 478.52 52.5215C478.664 52.4824 478.82 52.4629 478.988 52.4629C479.293 52.4629 479.555 52.5254 479.773 52.6504C479.992 52.7754 480.174 52.9434 480.318 53.1543C480.459 53.3691 480.562 53.6172 480.629 53.8984C480.699 54.1758 480.734 54.4688 480.734 54.7773ZM483.67 60.4375H484.754V57.3906C484.832 57.4766 484.916 57.5566 485.006 57.6309C485.096 57.7012 485.191 57.7656 485.293 57.8242C485.461 57.918 485.648 57.9902 485.855 58.041C486.066 58.0918 486.293 58.1172 486.535 58.1172C486.934 58.1172 487.287 58.0352 487.596 57.8711C487.908 57.707 488.17 57.4805 488.381 57.1914C488.592 56.9023 488.752 56.5625 488.861 56.1719C488.971 55.7773 489.025 55.3535 489.025 54.9004V54.7773C489.025 54.3047 488.971 53.8711 488.861 53.4766C488.752 53.0781 488.592 52.7363 488.381 52.4512C488.17 52.166 487.908 51.9434 487.596 51.7832C487.283 51.623 486.924 51.543 486.518 51.543C486.287 51.543 486.07 51.5684 485.867 51.6191C485.668 51.666 485.486 51.7363 485.322 51.8301C485.205 51.8926 485.096 51.9688 484.994 52.0586C484.893 52.1445 484.799 52.2422 484.713 52.3516L484.66 51.6602H483.67V60.4375ZM487.941 54.7773V54.9004C487.941 55.209 487.906 55.5039 487.836 55.7852C487.77 56.0664 487.666 56.3145 487.525 56.5293C487.385 56.7441 487.205 56.916 486.986 57.0449C486.768 57.1699 486.508 57.2324 486.207 57.2324C486.02 57.2324 485.848 57.209 485.691 57.1621C485.539 57.1152 485.4 57.0508 485.275 56.9688C485.166 56.8984 485.068 56.8125 484.982 56.7109C484.896 56.6094 484.82 56.5 484.754 56.3828V53.3301C484.828 53.1973 484.914 53.0762 485.012 52.9668C485.109 52.8574 485.221 52.7656 485.346 52.6914C485.459 52.6172 485.586 52.5605 485.727 52.5215C485.871 52.4824 486.027 52.4629 486.195 52.4629C486.5 52.4629 486.762 52.5254 486.98 52.6504C487.199 52.7754 487.381 52.9434 487.525 53.1543C487.666 53.3691 487.77 53.6172 487.836 53.8984C487.906 54.1758 487.941 54.4688 487.941 54.7773ZM491.053 51.6602V52.6035H493.209V57.0625H491.053V58H496.361V57.0625H494.293V51.6602H491.053ZM493.068 49.9961C493.068 50.1719 493.121 50.3184 493.227 50.4355C493.336 50.5527 493.5 50.6113 493.719 50.6113C493.934 50.6113 494.096 50.5527 494.205 50.4355C494.314 50.3184 494.369 50.1719 494.369 49.9961C494.369 49.8984 494.354 49.8086 494.322 49.7266C494.291 49.6445 494.244 49.5762 494.182 49.5215C494.131 49.4707 494.066 49.4316 493.988 49.4043C493.91 49.373 493.82 49.3574 493.719 49.3574C493.617 49.3574 493.525 49.373 493.443 49.4043C493.365 49.4316 493.301 49.4707 493.25 49.5215C493.188 49.5801 493.141 49.6504 493.109 49.7324C493.082 49.8145 493.068 49.9023 493.068 49.9961ZM498.09 58H499.174V53.4531C499.248 53.3164 499.334 53.1914 499.432 53.0781C499.533 52.9648 499.643 52.8652 499.76 52.7793C499.904 52.6816 500.062 52.6055 500.234 52.5508C500.406 52.4922 500.592 52.4629 500.791 52.4629C501.021 52.4629 501.225 52.4902 501.4 52.5449C501.58 52.5996 501.732 52.6875 501.857 52.8086C501.979 52.9297 502.07 53.0879 502.133 53.2832C502.195 53.4785 502.227 53.7168 502.227 53.998V58H503.311V53.9746C503.311 53.5527 503.258 53.1895 503.152 52.8848C503.051 52.5762 502.904 52.3223 502.713 52.123C502.521 51.9238 502.289 51.7773 502.016 51.6836C501.746 51.5898 501.445 51.543 501.113 51.543C500.867 51.5469 500.633 51.584 500.41 51.6543C500.191 51.7207 499.988 51.8164 499.801 51.9414C499.676 52.0234 499.557 52.1211 499.443 52.2344C499.334 52.3438 499.232 52.4648 499.139 52.5977L499.062 51.6602H498.09V58ZM505.098 54.7773V54.9004C505.098 55.3535 505.156 55.7773 505.273 56.1719C505.391 56.5625 505.559 56.9023 505.777 57.1914C505.992 57.4805 506.256 57.707 506.568 57.8711C506.881 58.0352 507.23 58.1172 507.617 58.1172C507.848 58.1172 508.062 58.0918 508.262 58.041C508.461 57.9941 508.643 57.9258 508.807 57.8359C508.912 57.7773 509.01 57.709 509.1 57.6309C509.193 57.5527 509.281 57.4668 509.363 57.373V57.918C509.363 58.1914 509.324 58.4336 509.246 58.6445C509.168 58.8555 509.057 59.0312 508.912 59.1719C508.764 59.3164 508.586 59.4258 508.379 59.5C508.172 59.5742 507.939 59.6113 507.682 59.6113C507.537 59.6113 507.393 59.5957 507.248 59.5645C507.104 59.5371 506.959 59.4902 506.814 59.4238C506.67 59.3574 506.527 59.2676 506.387 59.1543C506.246 59.0449 506.109 58.9102 505.977 58.75L505.414 59.4004C505.559 59.6074 505.73 59.7812 505.93 59.9219C506.133 60.0625 506.344 60.1738 506.562 60.2559C506.777 60.3418 506.99 60.4023 507.201 60.4375C507.412 60.4766 507.6 60.4961 507.764 60.4961C508.162 60.4961 508.525 60.4375 508.854 60.3203C509.182 60.2031 509.465 60.0312 509.703 59.8047C509.938 59.5781 510.119 59.3027 510.248 58.9785C510.381 58.6543 510.447 58.2832 510.447 57.8652V51.6602H509.463L509.41 52.3516C509.336 52.2578 509.256 52.1719 509.17 52.0938C509.088 52.0156 509 51.9473 508.906 51.8887C508.734 51.7754 508.541 51.6895 508.326 51.6309C508.115 51.5723 507.883 51.543 507.629 51.543C507.234 51.543 506.881 51.623 506.568 51.7832C506.256 51.9434 505.99 52.166 505.771 52.4512C505.553 52.7363 505.385 53.0781 505.268 53.4766C505.154 53.8711 505.098 54.3047 505.098 54.7773ZM506.182 54.9004V54.7773C506.182 54.4688 506.213 54.1758 506.275 53.8984C506.342 53.6172 506.445 53.3691 506.586 53.1543C506.723 52.9434 506.898 52.7754 507.113 52.6504C507.332 52.5254 507.594 52.4629 507.898 52.4629C508.078 52.4629 508.242 52.4863 508.391 52.5332C508.539 52.5762 508.674 52.6367 508.795 52.7148C508.916 52.7969 509.023 52.8926 509.117 53.002C509.211 53.1113 509.293 53.2324 509.363 53.3652V56.2715C509.293 56.4082 509.211 56.5332 509.117 56.6465C509.023 56.7598 508.918 56.8574 508.801 56.9395C508.68 57.0215 508.543 57.0859 508.391 57.1328C508.242 57.1758 508.074 57.1973 507.887 57.1973C507.586 57.1973 507.328 57.1367 507.113 57.0156C506.898 56.8906 506.723 56.7227 506.586 56.5117C506.445 56.3008 506.342 56.0566 506.275 55.7793C506.213 55.502 506.182 55.209 506.182 54.9004Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M425 59.1719H511.479V59.7578H425V59.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M86.7754 46.7871L86.8779 46.2256C86.6761 46.2191 86.5085 46.1637 86.375 46.0596C86.2448 45.9554 86.1406 45.8219 86.0625 45.6592C85.9811 45.4997 85.9242 45.319 85.8916 45.1172C85.859 44.9186 85.8428 44.7184 85.8428 44.5166V43.6914C85.8395 43.304 85.7484 42.9639 85.5693 42.6709C85.3903 42.3747 85.112 42.1517 84.7344 42.002C85.112 41.849 85.3903 41.626 85.5693 41.333C85.7516 41.0368 85.8428 40.6934 85.8428 40.3027V39.4727C85.8428 39.2741 85.8525 39.0739 85.8721 38.8721C85.8916 38.6702 85.9372 38.488 86.0088 38.3252C86.0771 38.1657 86.1797 38.0339 86.3164 37.9297C86.4564 37.8255 86.6436 37.7702 86.8779 37.7637L86.7754 37.2021C86.4466 37.2119 86.1667 37.2835 85.9355 37.417C85.7044 37.5472 85.5173 37.7165 85.374 37.9248C85.221 38.1429 85.1087 38.3903 85.0371 38.667C84.9688 38.9404 84.9346 39.209 84.9346 39.4727V40.3027C84.9346 40.7747 84.8223 41.1165 84.5977 41.3281C84.3763 41.5365 84.0361 41.6406 83.5771 41.6406V42.3486C84.0361 42.3519 84.3763 42.4593 84.5977 42.6709C84.8223 42.8825 84.9346 43.2227 84.9346 43.6914V44.5166C84.9346 44.777 84.972 45.0391 85.0469 45.3027C85.1217 45.5697 85.2324 45.8105 85.3789 46.0254C85.5319 46.25 85.724 46.4307 85.9551 46.5674C86.1862 46.7041 86.4596 46.7773 86.7754 46.7871ZM94.8613 45H95.7646V41.2109C95.8265 41.097 95.8981 40.9928 95.9795 40.8984C96.0641 40.804 96.1553 40.721 96.2529 40.6494C96.3734 40.568 96.5052 40.5046 96.6484 40.459C96.7917 40.4102 96.9463 40.3857 97.1123 40.3857C97.3044 40.3857 97.4736 40.4085 97.6201 40.4541C97.7699 40.4997 97.8968 40.5729 98.001 40.6738C98.1019 40.7747 98.1784 40.9066 98.2305 41.0693C98.2826 41.2321 98.3086 41.4307 98.3086 41.665V45H99.2119V41.6455C99.2119 41.2939 99.168 40.9912 99.0801 40.7373C98.9954 40.4801 98.8734 40.2686 98.7139 40.1025C98.5544 39.9365 98.3607 39.8145 98.1328 39.7363C97.9082 39.6582 97.6576 39.6191 97.3809 39.6191C97.1758 39.6224 96.9805 39.6533 96.7949 39.7119C96.6126 39.7673 96.4434 39.847 96.2871 39.9512C96.1829 40.0195 96.0837 40.1009 95.9893 40.1953C95.8981 40.2865 95.8135 40.3874 95.7354 40.498L95.6719 39.7168H94.8613V45ZM100.613 42.3096V42.417C100.613 42.7979 100.669 43.151 100.779 43.4766C100.89 43.8021 101.049 44.0853 101.258 44.3262C101.463 44.5671 101.714 44.7559 102.01 44.8926C102.309 45.0293 102.646 45.0977 103.021 45.0977C103.392 45.0977 103.725 45.0293 104.021 44.8926C104.318 44.7559 104.57 44.5671 104.778 44.3262C104.983 44.0853 105.141 43.8021 105.252 43.4766C105.363 43.151 105.418 42.7979 105.418 42.417V42.3096C105.418 41.9287 105.363 41.5755 105.252 41.25C105.141 40.9212 104.983 40.6364 104.778 40.3955C104.57 40.1546 104.316 39.9658 104.017 39.8291C103.72 39.6891 103.385 39.6191 103.011 39.6191C102.64 39.6191 102.306 39.6891 102.01 39.8291C101.714 39.9658 101.463 40.1546 101.258 40.3955C101.049 40.6364 100.89 40.9212 100.779 41.25C100.669 41.5755 100.613 41.9287 100.613 42.3096ZM101.517 42.417V42.3096C101.517 42.0524 101.548 41.8066 101.609 41.5723C101.671 41.3346 101.766 41.1263 101.893 40.9473C102.016 40.7682 102.171 40.6266 102.356 40.5225C102.542 40.415 102.76 40.3613 103.011 40.3613C103.261 40.3613 103.479 40.415 103.665 40.5225C103.854 40.6266 104.012 40.7682 104.139 40.9473C104.262 41.1263 104.355 41.3346 104.417 41.5723C104.482 41.8066 104.515 42.0524 104.515 42.3096V42.417C104.515 42.6774 104.484 42.9264 104.422 43.1641C104.36 43.3984 104.267 43.6051 104.144 43.7842C104.017 43.9632 103.859 44.1048 103.67 44.209C103.484 44.3132 103.268 44.3652 103.021 44.3652C102.77 44.3652 102.55 44.3132 102.361 44.209C102.173 44.1048 102.016 43.9632 101.893 43.7842C101.766 43.6051 101.671 43.3984 101.609 43.1641C101.548 42.9264 101.517 42.6774 101.517 42.417ZM106.702 42.3145V42.417C106.702 42.7946 106.753 43.1478 106.854 43.4766C106.954 43.8021 107.096 44.0853 107.278 44.3262C107.461 44.5671 107.68 44.7559 107.938 44.8926C108.198 45.0293 108.488 45.0977 108.807 45.0977C109.132 45.0977 109.417 45.0423 109.661 44.9316C109.905 44.821 110.115 44.6582 110.291 44.4434L110.33 45H111.16V37.5H110.257V40.2393C110.084 40.0374 109.879 39.8844 109.642 39.7803C109.407 39.6729 109.132 39.6191 108.816 39.6191C108.494 39.6191 108.203 39.6859 107.942 39.8193C107.682 39.9528 107.461 40.1383 107.278 40.376C107.093 40.6136 106.95 40.8984 106.849 41.2305C106.751 41.5592 106.702 41.9206 106.702 42.3145ZM107.605 42.417V42.3145C107.605 42.0573 107.633 41.8132 107.688 41.582C107.744 41.3477 107.83 41.141 107.947 40.9619C108.061 40.7861 108.208 40.6462 108.387 40.542C108.569 40.4378 108.787 40.3857 109.041 40.3857C109.337 40.3857 109.585 40.4557 109.783 40.5957C109.982 40.7324 110.14 40.9082 110.257 41.123V43.5742C110.14 43.8053 109.982 43.9893 109.783 44.126C109.585 44.2627 109.334 44.3311 109.031 44.3311C108.781 44.3311 108.566 44.2806 108.387 44.1797C108.208 44.0755 108.061 43.9355 107.947 43.7598C107.83 43.584 107.744 43.3805 107.688 43.1494C107.633 42.9183 107.605 42.6742 107.605 42.417ZM115.213 45.0977C115.727 45.0977 116.159 44.9951 116.507 44.79C116.858 44.5817 117.122 44.3441 117.298 44.0771L116.746 43.6475C116.58 43.8623 116.372 44.0348 116.121 44.165C115.87 44.2952 115.584 44.3604 115.262 44.3604C115.018 44.3604 114.795 44.3148 114.593 44.2236C114.391 44.1325 114.218 44.0072 114.075 43.8477C113.935 43.6979 113.825 43.5254 113.743 43.3301C113.665 43.1348 113.615 42.9085 113.592 42.6514V42.6172H117.366V42.2119C117.366 41.8441 117.319 41.5023 117.225 41.1865C117.133 40.8708 116.993 40.5957 116.805 40.3613C116.616 40.1302 116.378 39.9495 116.092 39.8193C115.809 39.6859 115.477 39.6191 115.096 39.6191C114.793 39.6191 114.497 39.681 114.207 39.8047C113.921 39.9284 113.665 40.1058 113.44 40.3369C113.213 40.5713 113.03 40.8577 112.894 41.1963C112.757 41.5316 112.688 41.9124 112.688 42.3389V42.5439C112.688 42.9118 112.75 43.252 112.874 43.5645C112.998 43.877 113.17 44.1471 113.392 44.375C113.613 44.6029 113.878 44.7803 114.188 44.9072C114.5 45.0342 114.842 45.0977 115.213 45.0977ZM115.096 40.3613C115.327 40.3613 115.525 40.4036 115.691 40.4883C115.861 40.5729 116.001 40.6836 116.111 40.8203C116.222 40.957 116.308 41.1198 116.37 41.3086C116.432 41.4941 116.463 41.6683 116.463 41.8311V41.875H113.621C113.657 41.6309 113.719 41.416 113.807 41.2305C113.898 41.0417 114.008 40.8822 114.139 40.752C114.269 40.625 114.415 40.529 114.578 40.4639C114.741 40.3955 114.913 40.3613 115.096 40.3613ZM121.814 45V37.8906H121.741L119.051 38.9258V39.751L120.911 39.043V45H121.814ZM126.707 44.4141C126.707 44.6029 126.766 44.764 126.883 44.8975C127.003 45.0277 127.181 45.0928 127.415 45.0928C127.646 45.0928 127.824 45.0277 127.947 44.8975C128.071 44.7673 128.133 44.6061 128.133 44.4141C128.133 44.2188 128.071 44.0544 127.947 43.9209C127.827 43.7842 127.649 43.7158 127.415 43.7158C127.177 43.7158 127 43.7842 126.883 43.9209C126.766 44.0576 126.707 44.222 126.707 44.4141ZM126.707 40.1367C126.707 40.3255 126.766 40.4867 126.883 40.6201C127.003 40.7503 127.181 40.8154 127.415 40.8154C127.646 40.8154 127.824 40.7503 127.947 40.6201C128.071 40.4899 128.133 40.3288 128.133 40.1367C128.133 39.9414 128.071 39.777 127.947 39.6436C127.827 39.5068 127.649 39.4385 127.415 39.4385C127.177 39.4385 127 39.5068 126.883 39.6436C126.766 39.7803 126.707 39.9447 126.707 40.1367ZM138.548 42.998H139.451C139.451 42.8711 139.454 42.7588 139.461 42.6611C139.467 42.5602 139.484 42.4658 139.51 42.3779C139.536 42.29 139.575 42.2038 139.627 42.1191C139.682 42.0345 139.759 41.945 139.856 41.8506C140.009 41.7139 140.164 41.5658 140.32 41.4062C140.48 41.2467 140.623 41.0742 140.75 40.8887C140.877 40.7064 140.981 40.5127 141.062 40.3076C141.144 40.0993 141.185 39.8779 141.185 39.6436C141.185 39.3506 141.137 39.0902 141.043 38.8623C140.949 38.6344 140.812 38.4408 140.633 38.2812C140.454 38.1217 140.234 38.0013 139.974 37.9199C139.716 37.8353 139.424 37.793 139.095 37.793C138.799 37.793 138.522 37.8337 138.265 37.915C138.011 37.9932 137.791 38.1071 137.605 38.2568C137.417 38.4098 137.267 38.5954 137.156 38.8135C137.046 39.0316 136.989 39.2773 136.985 39.5508H137.889C137.889 39.3815 137.923 39.2367 137.991 39.1162C138.06 38.9925 138.151 38.89 138.265 38.8086C138.375 38.7305 138.502 38.6735 138.646 38.6377C138.792 38.5986 138.942 38.5791 139.095 38.5791C139.293 38.5791 139.469 38.6051 139.622 38.6572C139.775 38.7093 139.902 38.7858 140.003 38.8867C140.094 38.9779 140.162 39.0902 140.208 39.2236C140.257 39.3538 140.281 39.5036 140.281 39.6729C140.281 39.8356 140.25 39.9902 140.188 40.1367C140.127 40.2832 140.049 40.4215 139.954 40.5518C139.856 40.6852 139.749 40.8122 139.632 40.9326C139.518 41.0531 139.406 41.1702 139.295 41.2842C139.132 41.4339 139.002 41.5641 138.904 41.6748C138.807 41.7822 138.732 41.8945 138.68 42.0117C138.628 42.1322 138.593 42.2689 138.577 42.4219C138.561 42.5716 138.551 42.7637 138.548 42.998ZM138.445 44.5264C138.445 44.6761 138.491 44.8014 138.582 44.9023C138.676 45.0033 138.816 45.0537 139.002 45.0537C139.188 45.0537 139.327 45.0033 139.422 44.9023C139.52 44.8014 139.568 44.6761 139.568 44.5264C139.568 44.3701 139.52 44.2399 139.422 44.1357C139.327 44.0316 139.188 43.9795 139.002 43.9795C138.816 43.9795 138.676 44.0316 138.582 44.1357C138.491 44.2399 138.445 44.3701 138.445 44.5264ZM145.198 44.79V43.9307H144.217V44.8047C144.217 45.0814 144.184 45.3483 144.119 45.6055C144.054 45.8626 143.943 46.1051 143.787 46.333L144.349 46.6406C144.609 46.4095 144.816 46.1247 144.969 45.7861C145.122 45.4476 145.198 45.1156 145.198 44.79ZM154.92 45H155.823V41.2109C155.885 41.097 155.957 40.9928 156.038 40.8984C156.123 40.804 156.214 40.721 156.312 40.6494C156.432 40.568 156.564 40.5046 156.707 40.459C156.85 40.4102 157.005 40.3857 157.171 40.3857C157.363 40.3857 157.532 40.4085 157.679 40.4541C157.828 40.4997 157.955 40.5729 158.06 40.6738C158.16 40.7747 158.237 40.9066 158.289 41.0693C158.341 41.2321 158.367 41.4307 158.367 41.665V45H159.271V41.6455C159.271 41.2939 159.227 40.9912 159.139 40.7373C159.054 40.4801 158.932 40.2686 158.772 40.1025C158.613 39.9365 158.419 39.8145 158.191 39.7363C157.967 39.6582 157.716 39.6191 157.439 39.6191C157.234 39.6224 157.039 39.6533 156.854 39.7119C156.671 39.7673 156.502 39.847 156.346 39.9512C156.242 40.0195 156.142 40.1009 156.048 40.1953C155.957 40.2865 155.872 40.3874 155.794 40.498L155.73 39.7168H154.92V45ZM160.672 42.3096V42.417C160.672 42.7979 160.727 43.151 160.838 43.4766C160.949 43.8021 161.108 44.0853 161.316 44.3262C161.521 44.5671 161.772 44.7559 162.068 44.8926C162.368 45.0293 162.705 45.0977 163.079 45.0977C163.45 45.0977 163.784 45.0293 164.08 44.8926C164.376 44.7559 164.629 44.5671 164.837 44.3262C165.042 44.0853 165.2 43.8021 165.311 43.4766C165.421 43.151 165.477 42.7979 165.477 42.417V42.3096C165.477 41.9287 165.421 41.5755 165.311 41.25C165.2 40.9212 165.042 40.6364 164.837 40.3955C164.629 40.1546 164.375 39.9658 164.075 39.8291C163.779 39.6891 163.444 39.6191 163.069 39.6191C162.698 39.6191 162.365 39.6891 162.068 39.8291C161.772 39.9658 161.521 40.1546 161.316 40.3955C161.108 40.6364 160.949 40.9212 160.838 41.25C160.727 41.5755 160.672 41.9287 160.672 42.3096ZM161.575 42.417V42.3096C161.575 42.0524 161.606 41.8066 161.668 41.5723C161.73 41.3346 161.824 41.1263 161.951 40.9473C162.075 40.7682 162.229 40.6266 162.415 40.5225C162.601 40.415 162.819 40.3613 163.069 40.3613C163.32 40.3613 163.538 40.415 163.724 40.5225C163.912 40.6266 164.07 40.7682 164.197 40.9473C164.321 41.1263 164.414 41.3346 164.476 41.5723C164.541 41.8066 164.573 42.0524 164.573 42.3096V42.417C164.573 42.6774 164.542 42.9264 164.48 43.1641C164.419 43.3984 164.326 43.6051 164.202 43.7842C164.075 43.9632 163.917 44.1048 163.729 44.209C163.543 44.3132 163.326 44.3652 163.079 44.3652C162.828 44.3652 162.609 44.3132 162.42 44.209C162.231 44.1048 162.075 43.9632 161.951 43.7842C161.824 43.6051 161.73 43.3984 161.668 43.1641C161.606 42.9264 161.575 42.6774 161.575 42.417ZM166.761 42.3145V42.417C166.761 42.7946 166.811 43.1478 166.912 43.4766C167.013 43.8021 167.155 44.0853 167.337 44.3262C167.519 44.5671 167.739 44.7559 167.996 44.8926C168.257 45.0293 168.546 45.0977 168.865 45.0977C169.191 45.0977 169.476 45.0423 169.72 44.9316C169.964 44.821 170.174 44.6582 170.35 44.4434L170.389 45H171.219V37.5H170.315V40.2393C170.143 40.0374 169.938 39.8844 169.7 39.7803C169.466 39.6729 169.191 39.6191 168.875 39.6191C168.553 39.6191 168.261 39.6859 168.001 39.8193C167.741 39.9528 167.519 40.1383 167.337 40.376C167.151 40.6136 167.008 40.8984 166.907 41.2305C166.81 41.5592 166.761 41.9206 166.761 42.3145ZM167.664 42.417V42.3145C167.664 42.0573 167.692 41.8132 167.747 41.582C167.802 41.3477 167.889 41.141 168.006 40.9619C168.12 40.7861 168.266 40.6462 168.445 40.542C168.628 40.4378 168.846 40.3857 169.1 40.3857C169.396 40.3857 169.643 40.4557 169.842 40.5957C170.04 40.7324 170.198 40.9082 170.315 41.123V43.5742C170.198 43.8053 170.04 43.9893 169.842 44.126C169.643 44.2627 169.393 44.3311 169.09 44.3311C168.839 44.3311 168.624 44.2806 168.445 44.1797C168.266 44.0755 168.12 43.9355 168.006 43.7598C167.889 43.584 167.802 43.3805 167.747 43.1494C167.692 42.9183 167.664 42.6742 167.664 42.417ZM175.271 45.0977C175.786 45.0977 176.217 44.9951 176.565 44.79C176.917 44.5817 177.181 44.3441 177.356 44.0771L176.805 43.6475C176.639 43.8623 176.43 44.0348 176.18 44.165C175.929 44.2952 175.643 44.3604 175.32 44.3604C175.076 44.3604 174.853 44.3148 174.651 44.2236C174.45 44.1325 174.277 44.0072 174.134 43.8477C173.994 43.6979 173.883 43.5254 173.802 43.3301C173.724 43.1348 173.673 42.9085 173.65 42.6514V42.6172H177.425V42.2119C177.425 41.8441 177.378 41.5023 177.283 41.1865C177.192 40.8708 177.052 40.5957 176.863 40.3613C176.674 40.1302 176.437 39.9495 176.15 39.8193C175.867 39.6859 175.535 39.6191 175.154 39.6191C174.852 39.6191 174.555 39.681 174.266 39.8047C173.979 39.9284 173.724 40.1058 173.499 40.3369C173.271 40.5713 173.089 40.8577 172.952 41.1963C172.815 41.5316 172.747 41.9124 172.747 42.3389V42.5439C172.747 42.9118 172.809 43.252 172.933 43.5645C173.056 43.877 173.229 44.1471 173.45 44.375C173.672 44.6029 173.937 44.7803 174.246 44.9072C174.559 45.0342 174.9 45.0977 175.271 45.0977ZM175.154 40.3613C175.385 40.3613 175.584 40.4036 175.75 40.4883C175.919 40.5729 176.059 40.6836 176.17 40.8203C176.281 40.957 176.367 41.1198 176.429 41.3086C176.491 41.4941 176.521 41.6683 176.521 41.8311V41.875H173.68C173.715 41.6309 173.777 41.416 173.865 41.2305C173.956 41.0417 174.067 40.8822 174.197 40.752C174.327 40.625 174.474 40.529 174.637 40.4639C174.799 40.3955 174.972 40.3613 175.154 40.3613ZM183.304 45V44.2627H179.734L181.644 42.1924C181.823 41.9971 181.992 41.8018 182.151 41.6064C182.314 41.4079 182.457 41.2077 182.581 41.0059C182.701 40.804 182.798 40.6006 182.869 40.3955C182.941 40.1872 182.977 39.9772 182.977 39.7656C182.977 39.4824 182.926 39.2204 182.825 38.9795C182.728 38.7386 182.586 38.5303 182.4 38.3545C182.215 38.1787 181.987 38.042 181.717 37.9443C181.45 37.8434 181.149 37.793 180.813 37.793C180.449 37.793 180.123 37.8516 179.837 37.9688C179.554 38.0859 179.314 38.2438 179.119 38.4424C178.921 38.641 178.769 38.8737 178.665 39.1406C178.561 39.4043 178.509 39.6859 178.509 39.9854H179.417C179.417 39.764 179.445 39.5638 179.5 39.3848C179.559 39.2057 179.646 39.0527 179.764 38.9258C179.878 38.8021 180.021 38.7061 180.193 38.6377C180.369 38.5693 180.576 38.5352 180.813 38.5352C181.009 38.5352 181.183 38.5693 181.336 38.6377C181.492 38.7028 181.626 38.7923 181.736 38.9062C181.844 39.0202 181.925 39.1553 181.98 39.3115C182.039 39.4645 182.068 39.6289 182.068 39.8047C182.068 39.9479 182.05 40.0879 182.015 40.2246C181.979 40.3581 181.919 40.4997 181.834 40.6494C181.749 40.8024 181.637 40.9684 181.497 41.1475C181.357 41.3265 181.183 41.5316 180.975 41.7627L178.646 44.3506V45H183.304ZM186.766 44.4141C186.766 44.6029 186.824 44.764 186.941 44.8975C187.062 45.0277 187.239 45.0928 187.474 45.0928C187.705 45.0928 187.882 45.0277 188.006 44.8975C188.13 44.7673 188.191 44.6061 188.191 44.4141C188.191 44.2188 188.13 44.0544 188.006 43.9209C187.885 43.7842 187.708 43.7158 187.474 43.7158C187.236 43.7158 187.059 43.7842 186.941 43.9209C186.824 44.0576 186.766 44.222 186.766 44.4141ZM186.766 40.1367C186.766 40.3255 186.824 40.4867 186.941 40.6201C187.062 40.7503 187.239 40.8154 187.474 40.8154C187.705 40.8154 187.882 40.7503 188.006 40.6201C188.13 40.4899 188.191 40.3288 188.191 40.1367C188.191 39.9414 188.13 39.777 188.006 39.6436C187.885 39.5068 187.708 39.4385 187.474 39.4385C187.236 39.4385 187.059 39.5068 186.941 39.6436C186.824 39.7803 186.766 39.9447 186.766 40.1367ZM198.606 42.998H199.51C199.51 42.8711 199.513 42.7588 199.52 42.6611C199.526 42.5602 199.542 42.4658 199.568 42.3779C199.594 42.29 199.633 42.2038 199.686 42.1191C199.741 42.0345 199.817 41.945 199.915 41.8506C200.068 41.7139 200.223 41.5658 200.379 41.4062C200.538 41.2467 200.682 41.0742 200.809 40.8887C200.936 40.7064 201.04 40.5127 201.121 40.3076C201.202 40.0993 201.243 39.8779 201.243 39.6436C201.243 39.3506 201.196 39.0902 201.102 38.8623C201.007 38.6344 200.87 38.4408 200.691 38.2812C200.512 38.1217 200.293 38.0013 200.032 37.9199C199.775 37.8353 199.482 37.793 199.153 37.793C198.857 37.793 198.58 37.8337 198.323 37.915C198.069 37.9932 197.85 38.1071 197.664 38.2568C197.475 38.4098 197.326 38.5954 197.215 38.8135C197.104 39.0316 197.047 39.2773 197.044 39.5508H197.947C197.947 39.3815 197.981 39.2367 198.05 39.1162C198.118 38.9925 198.209 38.89 198.323 38.8086C198.434 38.7305 198.561 38.6735 198.704 38.6377C198.851 38.5986 199 38.5791 199.153 38.5791C199.352 38.5791 199.528 38.6051 199.681 38.6572C199.834 38.7093 199.961 38.7858 200.062 38.8867C200.153 38.9779 200.221 39.0902 200.267 39.2236C200.315 39.3538 200.34 39.5036 200.34 39.6729C200.34 39.8356 200.309 39.9902 200.247 40.1367C200.185 40.2832 200.107 40.4215 200.013 40.5518C199.915 40.6852 199.808 40.8122 199.69 40.9326C199.576 41.0531 199.464 41.1702 199.354 41.2842C199.191 41.4339 199.061 41.5641 198.963 41.6748C198.865 41.7822 198.79 41.8945 198.738 42.0117C198.686 42.1322 198.652 42.2689 198.636 42.4219C198.619 42.5716 198.61 42.7637 198.606 42.998ZM198.504 44.5264C198.504 44.6761 198.549 44.8014 198.641 44.9023C198.735 45.0033 198.875 45.0537 199.061 45.0537C199.246 45.0537 199.386 45.0033 199.48 44.9023C199.578 44.8014 199.627 44.6761 199.627 44.5264C199.627 44.3701 199.578 44.2399 199.48 44.1357C199.386 44.0316 199.246 43.9795 199.061 43.9795C198.875 43.9795 198.735 44.0316 198.641 44.1357C198.549 44.2399 198.504 44.3701 198.504 44.5264ZM209.7 46.2256L209.803 46.7871C210.122 46.7806 210.397 46.7074 210.628 46.5674C210.859 46.4274 211.051 46.2484 211.204 46.0303C211.354 45.8122 211.465 45.5697 211.536 45.3027C211.608 45.0391 211.644 44.777 211.644 44.5166V43.6914C211.644 43.4635 211.67 43.2666 211.722 43.1006C211.774 42.9346 211.854 42.7962 211.961 42.6855C212.072 42.5716 212.213 42.4886 212.386 42.4365C212.562 42.3812 212.767 42.3519 213.001 42.3486V41.6406C212.734 41.6406 212.505 41.6064 212.312 41.5381C212.124 41.4665 211.976 41.3542 211.868 41.2012C211.793 41.0938 211.736 40.9668 211.697 40.8203C211.661 40.6706 211.644 40.498 211.644 40.3027V39.4727C211.644 39.1992 211.606 38.9225 211.531 38.6426C211.46 38.3626 211.341 38.1104 211.175 37.8857C211.028 37.6872 210.841 37.526 210.613 37.4023C210.389 37.2786 210.118 37.2119 209.803 37.2021L209.705 37.7637C209.939 37.7702 210.125 37.8255 210.262 37.9297C210.398 38.0339 210.503 38.1657 210.574 38.3252C210.643 38.488 210.687 38.6702 210.706 38.8721C210.729 39.0739 210.74 39.2741 210.74 39.4727V40.3027C210.74 40.5566 210.778 40.7926 210.853 41.0107C210.927 41.2256 211.043 41.4144 211.199 41.5771C211.281 41.665 211.375 41.7448 211.482 41.8164C211.593 41.888 211.714 41.9499 211.844 42.002C211.717 42.054 211.6 42.1143 211.492 42.1826C211.388 42.251 211.294 42.3275 211.209 42.4121C211.049 42.5716 210.931 42.7604 210.853 42.9785C210.778 43.1966 210.74 43.4342 210.74 43.6914V44.5166C210.74 44.7184 210.722 44.9186 210.687 45.1172C210.654 45.319 210.599 45.4997 210.521 45.6592C210.439 45.8219 210.332 45.9554 210.198 46.0596C210.065 46.1637 209.899 46.2191 209.7 46.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"62.5\"\n      y=\"201.5\"\n      width=\"55\"\n      height=\"55\"\n      stroke=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M36.7529 279.503V276.5H35.8496V284H36.7529V280.162C36.818 280.058 36.8913 279.964 36.9727 279.879C37.0573 279.791 37.1484 279.715 37.2461 279.649C37.3698 279.565 37.5049 279.5 37.6514 279.454C37.7979 279.409 37.9525 279.386 38.1152 279.386C38.3138 279.382 38.4896 279.41 38.6426 279.469C38.7956 279.524 38.9225 279.609 39.0234 279.723C39.1178 279.827 39.1895 279.959 39.2383 280.118C39.2871 280.274 39.3115 280.457 39.3115 280.665V284H40.2148V280.675C40.2148 280.32 40.1709 280.014 40.083 279.757C39.9984 279.496 39.8763 279.282 39.7168 279.112C39.5573 278.943 39.3636 278.819 39.1357 278.741C38.9111 278.66 38.6605 278.619 38.3838 278.619C38.1722 278.622 37.972 278.653 37.7832 278.712C37.5977 278.771 37.4268 278.857 37.2705 278.971C37.1729 279.039 37.0801 279.119 36.9922 279.21C36.9043 279.298 36.8245 279.396 36.7529 279.503ZM45.3271 284H46.2695V283.922C46.2109 283.775 46.1654 283.604 46.1328 283.409C46.1003 283.211 46.084 283.023 46.084 282.848V280.392C46.084 280.095 46.0303 279.837 45.9229 279.615C45.8154 279.394 45.6689 279.208 45.4834 279.059C45.2946 278.912 45.0716 278.803 44.8145 278.731C44.5573 278.657 44.279 278.619 43.9795 278.619C43.6507 278.619 43.3561 278.665 43.0957 278.756C42.8385 278.847 42.6204 278.966 42.4414 279.112C42.2591 279.262 42.1191 279.43 42.0215 279.615C41.9271 279.801 41.8783 279.99 41.875 280.182H42.7832C42.7832 280.071 42.8092 279.965 42.8613 279.864C42.9167 279.76 42.9932 279.671 43.0908 279.596C43.1885 279.521 43.3073 279.461 43.4473 279.415C43.5905 279.369 43.7516 279.347 43.9307 279.347C44.1227 279.347 44.2952 279.371 44.4482 279.42C44.6045 279.469 44.7363 279.537 44.8438 279.625C44.9512 279.716 45.0342 279.825 45.0928 279.952C45.1514 280.079 45.1807 280.222 45.1807 280.382V280.797H44.1943C43.8265 280.797 43.4928 280.833 43.1934 280.904C42.8971 280.976 42.6432 281.083 42.4316 281.227C42.2201 281.373 42.0557 281.555 41.9385 281.773C41.8245 281.992 41.7676 282.245 41.7676 282.535C41.7676 282.757 41.8099 282.963 41.8945 283.155C41.9824 283.344 42.1061 283.507 42.2656 283.644C42.4219 283.784 42.6123 283.894 42.8369 283.976C43.0648 284.057 43.3187 284.098 43.5986 284.098C43.7712 284.098 43.9339 284.08 44.0869 284.044C44.2399 284.008 44.3848 283.959 44.5215 283.897C44.6549 283.836 44.777 283.764 44.8877 283.683C45.0016 283.601 45.1042 283.515 45.1953 283.424C45.2051 283.535 45.2197 283.642 45.2393 283.746C45.262 283.847 45.2913 283.932 45.3271 284ZM43.7305 283.312C43.5547 283.312 43.4001 283.289 43.2666 283.243C43.1331 283.198 43.0225 283.134 42.9346 283.053C42.8467 282.975 42.7799 282.88 42.7344 282.77C42.6921 282.659 42.6709 282.538 42.6709 282.408C42.6709 282.271 42.6953 282.149 42.7441 282.042C42.7962 281.935 42.8711 281.842 42.9688 281.764C43.1055 281.653 43.2894 281.572 43.5205 281.52C43.7549 281.464 44.0283 281.437 44.3408 281.437H45.1807V282.506C45.1286 282.61 45.057 282.711 44.9658 282.809C44.8747 282.903 44.7673 282.988 44.6436 283.062C44.5166 283.137 44.3766 283.198 44.2236 283.243C44.0706 283.289 43.9062 283.312 43.7305 283.312ZM51.3721 282.599C51.3721 282.683 51.3558 282.763 51.3232 282.838C51.2907 282.913 51.2435 282.981 51.1816 283.043C51.0807 283.144 50.9408 283.224 50.7617 283.282C50.5827 283.338 50.3727 283.365 50.1318 283.365C49.9788 283.365 49.8242 283.349 49.668 283.316C49.5117 283.284 49.3701 283.229 49.2432 283.15C49.113 283.072 49.0039 282.97 48.916 282.843C48.8314 282.716 48.7826 282.56 48.7695 282.374H47.8662C47.8662 282.599 47.9167 282.815 48.0176 283.023C48.1217 283.232 48.2715 283.414 48.4668 283.57C48.6589 283.73 48.8949 283.858 49.1748 283.956C49.4548 284.05 49.7738 284.098 50.1318 284.098C50.4443 284.098 50.7324 284.06 50.9961 283.985C51.2598 283.91 51.486 283.805 51.6748 283.668C51.8636 283.531 52.0101 283.367 52.1143 283.175C52.2217 282.983 52.2754 282.77 52.2754 282.535C52.2754 282.317 52.2282 282.125 52.1338 281.959C52.0426 281.793 51.9092 281.646 51.7334 281.52C51.5576 281.396 51.3411 281.29 51.084 281.202C50.8268 281.111 50.5355 281.031 50.21 280.963C49.9626 280.914 49.7575 280.864 49.5947 280.812C49.4352 280.759 49.3083 280.701 49.2139 280.636C49.1162 280.571 49.0479 280.497 49.0088 280.416C48.9697 280.335 48.9502 280.242 48.9502 280.138C48.9502 280.037 48.9746 279.939 49.0234 279.845C49.0723 279.75 49.1455 279.667 49.2432 279.596C49.3376 279.524 49.4564 279.467 49.5996 279.425C49.7461 279.382 49.9154 279.361 50.1074 279.361C50.293 279.361 50.459 279.387 50.6055 279.439C50.7552 279.492 50.8822 279.56 50.9863 279.645C51.0905 279.729 51.1719 279.827 51.2305 279.938C51.2891 280.045 51.3184 280.156 51.3184 280.27H52.2217C52.2217 280.038 52.1712 279.824 52.0703 279.625C51.9727 279.423 51.8327 279.247 51.6504 279.098C51.4681 278.948 51.2467 278.831 50.9863 278.746C50.7259 278.661 50.4329 278.619 50.1074 278.619C49.8047 278.619 49.5264 278.66 49.2725 278.741C49.0218 278.823 48.8053 278.933 48.623 279.073C48.4408 279.213 48.2992 279.378 48.1982 279.566C48.0973 279.752 48.0469 279.952 48.0469 280.167C48.0469 280.385 48.0957 280.577 48.1934 280.743C48.291 280.906 48.4294 281.048 48.6084 281.168C48.7842 281.292 48.9958 281.397 49.2432 281.485C49.4938 281.573 49.7705 281.648 50.0732 281.71C50.3206 281.759 50.5273 281.814 50.6934 281.876C50.8594 281.935 50.9928 282 51.0938 282.071C51.1947 282.143 51.2663 282.223 51.3086 282.311C51.3509 282.395 51.3721 282.491 51.3721 282.599ZM60.6299 278.214V278.927H61.5137V278.199C61.5137 277.919 61.5511 277.659 61.626 277.418C61.7041 277.177 61.8197 276.941 61.9727 276.71L61.4795 276.358C61.3428 276.476 61.2223 276.609 61.1182 276.759C61.014 276.909 60.9261 277.065 60.8545 277.228C60.7796 277.394 60.7227 277.561 60.6836 277.73C60.6478 277.9 60.6299 278.061 60.6299 278.214ZM62.2168 278.214V278.927H63.1006V278.199C63.1006 277.919 63.138 277.659 63.2129 277.418C63.291 277.177 63.4066 276.941 63.5596 276.71L63.0664 276.358C62.9297 276.476 62.8092 276.609 62.7051 276.759C62.6009 276.909 62.513 277.065 62.4414 277.228C62.3665 277.394 62.3096 277.561 62.2705 277.73C62.2347 277.9 62.2168 278.061 62.2168 278.214ZM67.5244 281.998H68.4277C68.4277 281.871 68.431 281.759 68.4375 281.661C68.444 281.56 68.4603 281.466 68.4863 281.378C68.5124 281.29 68.5514 281.204 68.6035 281.119C68.6589 281.035 68.7354 280.945 68.833 280.851C68.986 280.714 69.1406 280.566 69.2969 280.406C69.4564 280.247 69.5996 280.074 69.7266 279.889C69.8535 279.706 69.9577 279.513 70.0391 279.308C70.1204 279.099 70.1611 278.878 70.1611 278.644C70.1611 278.351 70.1139 278.09 70.0195 277.862C69.9251 277.634 69.7884 277.441 69.6094 277.281C69.4303 277.122 69.2106 277.001 68.9502 276.92C68.693 276.835 68.4001 276.793 68.0713 276.793C67.7751 276.793 67.4984 276.834 67.2412 276.915C66.9873 276.993 66.7676 277.107 66.582 277.257C66.3932 277.41 66.2435 277.595 66.1328 277.813C66.0221 278.032 65.9652 278.277 65.9619 278.551H66.8652C66.8652 278.382 66.8994 278.237 66.9678 278.116C67.0361 277.993 67.1273 277.89 67.2412 277.809C67.3519 277.73 67.4788 277.674 67.6221 277.638C67.7686 277.599 67.9183 277.579 68.0713 277.579C68.2699 277.579 68.4456 277.605 68.5986 277.657C68.7516 277.709 68.8786 277.786 68.9795 277.887C69.0706 277.978 69.139 278.09 69.1846 278.224C69.2334 278.354 69.2578 278.504 69.2578 278.673C69.2578 278.836 69.2269 278.99 69.165 279.137C69.1032 279.283 69.0251 279.422 68.9307 279.552C68.833 279.685 68.7256 279.812 68.6084 279.933C68.4945 280.053 68.3822 280.17 68.2715 280.284C68.1087 280.434 67.9785 280.564 67.8809 280.675C67.7832 280.782 67.7083 280.895 67.6562 281.012C67.6042 281.132 67.57 281.269 67.5537 281.422C67.5374 281.572 67.5277 281.764 67.5244 281.998ZM67.4219 283.526C67.4219 283.676 67.4674 283.801 67.5586 283.902C67.653 284.003 67.793 284.054 67.9785 284.054C68.1641 284.054 68.304 284.003 68.3984 283.902C68.4961 283.801 68.5449 283.676 68.5449 283.526C68.5449 283.37 68.4961 283.24 68.3984 283.136C68.304 283.032 68.1641 282.979 67.9785 282.979C67.793 282.979 67.653 283.032 67.5586 283.136C67.4674 283.24 67.4219 283.37 67.4219 283.526ZM73.8477 277.11V276.393H72.9639V277.125C72.9639 277.405 72.9248 277.665 72.8467 277.906C72.7718 278.147 72.6579 278.383 72.5049 278.614L72.998 278.966C73.1348 278.849 73.2552 278.715 73.3594 278.565C73.4635 278.416 73.5531 278.258 73.6279 278.092C73.6995 277.929 73.7533 277.763 73.7891 277.594C73.8281 277.424 73.8477 277.263 73.8477 277.11ZM75.4688 277.11V276.393H74.585V277.125C74.585 277.405 74.5459 277.665 74.4678 277.906C74.3929 278.147 74.279 278.383 74.126 278.614L74.6191 278.966C74.7559 278.849 74.8763 278.715 74.9805 278.565C75.0846 278.416 75.1742 278.258 75.249 278.092C75.3206 277.929 75.3743 277.763 75.4102 277.594C75.4492 277.424 75.4688 277.263 75.4688 277.11ZM83.8916 286.031H84.7949V283.492C84.86 283.564 84.93 283.631 85.0049 283.692C85.0798 283.751 85.1595 283.805 85.2441 283.854C85.3841 283.932 85.5404 283.992 85.7129 284.034C85.8887 284.076 86.0775 284.098 86.2793 284.098C86.6113 284.098 86.9059 284.029 87.1631 283.893C87.4235 283.756 87.6416 283.567 87.8174 283.326C87.9932 283.085 88.1266 282.802 88.2178 282.477C88.3089 282.148 88.3545 281.795 88.3545 281.417V281.314C88.3545 280.921 88.3089 280.559 88.2178 280.23C88.1266 279.898 87.9932 279.614 87.8174 279.376C87.6416 279.138 87.4235 278.953 87.1631 278.819C86.9027 278.686 86.6032 278.619 86.2646 278.619C86.0726 278.619 85.8919 278.64 85.7227 278.683C85.5566 278.722 85.4053 278.78 85.2686 278.858C85.1709 278.91 85.0798 278.974 84.9951 279.049C84.9105 279.12 84.8324 279.202 84.7607 279.293L84.7168 278.717H83.8916V286.031ZM87.4512 281.314V281.417C87.4512 281.674 87.4219 281.92 87.3633 282.154C87.3079 282.389 87.2217 282.595 87.1045 282.774C86.9873 282.953 86.8376 283.097 86.6553 283.204C86.473 283.308 86.2565 283.36 86.0059 283.36C85.8496 283.36 85.7064 283.341 85.5762 283.302C85.4492 283.263 85.3337 283.209 85.2295 283.141C85.1383 283.082 85.057 283.01 84.9854 282.926C84.9137 282.841 84.8503 282.75 84.7949 282.652V280.108C84.8568 279.998 84.9284 279.897 85.0098 279.806C85.0911 279.715 85.1839 279.638 85.2881 279.576C85.3825 279.514 85.4883 279.467 85.6055 279.435C85.7259 279.402 85.8561 279.386 85.9961 279.386C86.25 279.386 86.4681 279.438 86.6504 279.542C86.8327 279.646 86.984 279.786 87.1045 279.962C87.2217 280.141 87.3079 280.348 87.3633 280.582C87.4219 280.813 87.4512 281.057 87.4512 281.314ZM90.0439 276.5V277.286H91.8408V283.219H90.0439V284H94.4678V283.219H92.7441V276.5H90.0439ZM99.3799 284H100.322V283.922C100.264 283.775 100.218 283.604 100.186 283.409C100.153 283.211 100.137 283.023 100.137 282.848V280.392C100.137 280.095 100.083 279.837 99.9756 279.615C99.8682 279.394 99.7217 279.208 99.5361 279.059C99.3473 278.912 99.1243 278.803 98.8672 278.731C98.61 278.657 98.3317 278.619 98.0322 278.619C97.7035 278.619 97.4089 278.665 97.1484 278.756C96.8913 278.847 96.6732 278.966 96.4941 279.112C96.3118 279.262 96.1719 279.43 96.0742 279.615C95.9798 279.801 95.931 279.99 95.9277 280.182H96.8359C96.8359 280.071 96.862 279.965 96.9141 279.864C96.9694 279.76 97.0459 279.671 97.1436 279.596C97.2412 279.521 97.36 279.461 97.5 279.415C97.6432 279.369 97.8044 279.347 97.9834 279.347C98.1755 279.347 98.348 279.371 98.501 279.42C98.6572 279.469 98.7891 279.537 98.8965 279.625C99.0039 279.716 99.0869 279.825 99.1455 279.952C99.2041 280.079 99.2334 280.222 99.2334 280.382V280.797H98.2471C97.8792 280.797 97.5456 280.833 97.2461 280.904C96.9499 280.976 96.696 281.083 96.4844 281.227C96.2728 281.373 96.1084 281.555 95.9912 281.773C95.8773 281.992 95.8203 282.245 95.8203 282.535C95.8203 282.757 95.8626 282.963 95.9473 283.155C96.0352 283.344 96.1589 283.507 96.3184 283.644C96.4746 283.784 96.665 283.894 96.8896 283.976C97.1175 284.057 97.3714 284.098 97.6514 284.098C97.8239 284.098 97.9867 284.08 98.1396 284.044C98.2926 284.008 98.4375 283.959 98.5742 283.897C98.7077 283.836 98.8298 283.764 98.9404 283.683C99.0544 283.601 99.1569 283.515 99.248 283.424C99.2578 283.535 99.2725 283.642 99.292 283.746C99.3148 283.847 99.3441 283.932 99.3799 284ZM97.7832 283.312C97.6074 283.312 97.4528 283.289 97.3193 283.243C97.1859 283.198 97.0752 283.134 96.9873 283.053C96.8994 282.975 96.8327 282.88 96.7871 282.77C96.7448 282.659 96.7236 282.538 96.7236 282.408C96.7236 282.271 96.748 282.149 96.7969 282.042C96.849 281.935 96.9238 281.842 97.0215 281.764C97.1582 281.653 97.3421 281.572 97.5732 281.52C97.8076 281.464 98.0811 281.437 98.3936 281.437H99.2334V282.506C99.1813 282.61 99.1097 282.711 99.0186 282.809C98.9274 282.903 98.82 282.988 98.6963 283.062C98.5693 283.137 98.4294 283.198 98.2764 283.243C98.1234 283.289 97.959 283.312 97.7832 283.312ZM104.165 283.365C103.882 283.365 103.644 283.31 103.452 283.199C103.263 283.085 103.112 282.937 102.998 282.755C102.881 282.576 102.796 282.374 102.744 282.149C102.695 281.922 102.671 281.692 102.671 281.461V281.256C102.671 281.028 102.695 280.802 102.744 280.577C102.796 280.353 102.881 280.149 102.998 279.967C103.115 279.788 103.268 279.643 103.457 279.532C103.649 279.418 103.885 279.361 104.165 279.361C104.347 279.361 104.517 279.392 104.673 279.454C104.832 279.516 104.969 279.601 105.083 279.708C105.197 279.815 105.286 279.941 105.352 280.084C105.42 280.224 105.456 280.374 105.459 280.533H106.313C106.313 280.266 106.26 280.016 106.152 279.781C106.045 279.547 105.897 279.343 105.708 279.171C105.516 279.002 105.288 278.868 105.024 278.771C104.764 278.67 104.478 278.619 104.165 278.619C103.765 278.619 103.415 278.691 103.115 278.834C102.816 278.977 102.567 279.169 102.368 279.41C102.166 279.654 102.015 279.936 101.914 280.255C101.813 280.574 101.763 280.908 101.763 281.256V281.461C101.763 281.812 101.813 282.148 101.914 282.467C102.015 282.783 102.166 283.061 102.368 283.302C102.567 283.546 102.816 283.74 103.115 283.883C103.415 284.026 103.765 284.098 104.165 284.098C104.445 284.098 104.714 284.05 104.971 283.956C105.228 283.858 105.456 283.728 105.654 283.565C105.853 283.406 106.011 283.22 106.128 283.009C106.248 282.794 106.31 282.569 106.313 282.335H105.459C105.456 282.481 105.417 282.618 105.342 282.745C105.27 282.869 105.174 282.976 105.054 283.067C104.933 283.162 104.795 283.235 104.639 283.287C104.486 283.339 104.328 283.365 104.165 283.365ZM110.254 284.098C110.768 284.098 111.2 283.995 111.548 283.79C111.899 283.582 112.163 283.344 112.339 283.077L111.787 282.647C111.621 282.862 111.413 283.035 111.162 283.165C110.911 283.295 110.625 283.36 110.303 283.36C110.059 283.36 109.836 283.315 109.634 283.224C109.432 283.132 109.259 283.007 109.116 282.848C108.976 282.698 108.866 282.525 108.784 282.33C108.706 282.135 108.656 281.909 108.633 281.651V281.617H112.407V281.212C112.407 280.844 112.36 280.502 112.266 280.187C112.174 279.871 112.035 279.596 111.846 279.361C111.657 279.13 111.419 278.95 111.133 278.819C110.85 278.686 110.518 278.619 110.137 278.619C109.834 278.619 109.538 278.681 109.248 278.805C108.962 278.928 108.706 279.106 108.481 279.337C108.254 279.571 108.071 279.858 107.935 280.196C107.798 280.532 107.729 280.912 107.729 281.339V281.544C107.729 281.912 107.791 282.252 107.915 282.564C108.039 282.877 108.211 283.147 108.433 283.375C108.654 283.603 108.919 283.78 109.229 283.907C109.541 284.034 109.883 284.098 110.254 284.098ZM110.137 279.361C110.368 279.361 110.566 279.404 110.732 279.488C110.902 279.573 111.042 279.684 111.152 279.82C111.263 279.957 111.349 280.12 111.411 280.309C111.473 280.494 111.504 280.668 111.504 280.831V280.875H108.662C108.698 280.631 108.76 280.416 108.848 280.23C108.939 280.042 109.049 279.882 109.18 279.752C109.31 279.625 109.456 279.529 109.619 279.464C109.782 279.396 109.954 279.361 110.137 279.361ZM114.829 279.503V276.5H113.926V284H114.829V280.162C114.894 280.058 114.967 279.964 115.049 279.879C115.133 279.791 115.225 279.715 115.322 279.649C115.446 279.565 115.581 279.5 115.728 279.454C115.874 279.409 116.029 279.386 116.191 279.386C116.39 279.382 116.566 279.41 116.719 279.469C116.872 279.524 116.999 279.609 117.1 279.723C117.194 279.827 117.266 279.959 117.314 280.118C117.363 280.274 117.388 280.457 117.388 280.665V284H118.291V280.675C118.291 280.32 118.247 280.014 118.159 279.757C118.075 279.496 117.952 279.282 117.793 279.112C117.633 278.943 117.44 278.819 117.212 278.741C116.987 278.66 116.737 278.619 116.46 278.619C116.248 278.622 116.048 278.653 115.859 278.712C115.674 278.771 115.503 278.857 115.347 278.971C115.249 279.039 115.156 279.119 115.068 279.21C114.98 279.298 114.901 279.396 114.829 279.503ZM119.678 281.31V281.417C119.678 281.798 119.733 282.151 119.844 282.477C119.954 282.802 120.114 283.085 120.322 283.326C120.527 283.567 120.778 283.756 121.074 283.893C121.374 284.029 121.711 284.098 122.085 284.098C122.456 284.098 122.79 284.029 123.086 283.893C123.382 283.756 123.634 283.567 123.843 283.326C124.048 283.085 124.206 282.802 124.316 282.477C124.427 282.151 124.482 281.798 124.482 281.417V281.31C124.482 280.929 124.427 280.576 124.316 280.25C124.206 279.921 124.048 279.636 123.843 279.396C123.634 279.155 123.381 278.966 123.081 278.829C122.785 278.689 122.45 278.619 122.075 278.619C121.704 278.619 121.37 278.689 121.074 278.829C120.778 278.966 120.527 279.155 120.322 279.396C120.114 279.636 119.954 279.921 119.844 280.25C119.733 280.576 119.678 280.929 119.678 281.31ZM120.581 281.417V281.31C120.581 281.052 120.612 280.807 120.674 280.572C120.736 280.335 120.83 280.126 120.957 279.947C121.081 279.768 121.235 279.627 121.421 279.522C121.606 279.415 121.825 279.361 122.075 279.361C122.326 279.361 122.544 279.415 122.729 279.522C122.918 279.627 123.076 279.768 123.203 279.947C123.327 280.126 123.42 280.335 123.481 280.572C123.547 280.807 123.579 281.052 123.579 281.31V281.417C123.579 281.677 123.548 281.926 123.486 282.164C123.424 282.398 123.332 282.605 123.208 282.784C123.081 282.963 122.923 283.105 122.734 283.209C122.549 283.313 122.332 283.365 122.085 283.365C121.834 283.365 121.615 283.313 121.426 283.209C121.237 283.105 121.081 282.963 120.957 282.784C120.83 282.605 120.736 282.398 120.674 282.164C120.612 281.926 120.581 281.677 120.581 281.417ZM126.079 276.5V277.286H127.876V283.219H126.079V284H130.503V283.219H128.779V276.5H126.079ZM131.772 281.314V281.417C131.772 281.795 131.823 282.148 131.924 282.477C132.025 282.802 132.166 283.085 132.349 283.326C132.531 283.567 132.751 283.756 133.008 283.893C133.268 284.029 133.558 284.098 133.877 284.098C134.202 284.098 134.487 284.042 134.731 283.932C134.976 283.821 135.186 283.658 135.361 283.443L135.4 284H136.23V276.5H135.327V279.239C135.155 279.037 134.95 278.884 134.712 278.78C134.478 278.673 134.202 278.619 133.887 278.619C133.564 278.619 133.273 278.686 133.013 278.819C132.752 278.953 132.531 279.138 132.349 279.376C132.163 279.614 132.02 279.898 131.919 280.23C131.821 280.559 131.772 280.921 131.772 281.314ZM132.676 281.417V281.314C132.676 281.057 132.703 280.813 132.759 280.582C132.814 280.348 132.9 280.141 133.018 279.962C133.132 279.786 133.278 279.646 133.457 279.542C133.639 279.438 133.857 279.386 134.111 279.386C134.408 279.386 134.655 279.456 134.854 279.596C135.052 279.732 135.21 279.908 135.327 280.123V282.574C135.21 282.805 135.052 282.989 134.854 283.126C134.655 283.263 134.404 283.331 134.102 283.331C133.851 283.331 133.636 283.281 133.457 283.18C133.278 283.076 133.132 282.936 133.018 282.76C132.9 282.584 132.814 282.381 132.759 282.149C132.703 281.918 132.676 281.674 132.676 281.417ZM140.283 284.098C140.798 284.098 141.229 283.995 141.577 283.79C141.929 283.582 142.192 283.344 142.368 283.077L141.816 282.647C141.65 282.862 141.442 283.035 141.191 283.165C140.941 283.295 140.654 283.36 140.332 283.36C140.088 283.36 139.865 283.315 139.663 283.224C139.461 283.132 139.289 283.007 139.146 282.848C139.006 282.698 138.895 282.525 138.813 282.33C138.735 282.135 138.685 281.909 138.662 281.651V281.617H142.437V281.212C142.437 280.844 142.389 280.502 142.295 280.187C142.204 279.871 142.064 279.596 141.875 279.361C141.686 279.13 141.449 278.95 141.162 278.819C140.879 278.686 140.547 278.619 140.166 278.619C139.863 278.619 139.567 278.681 139.277 278.805C138.991 278.928 138.735 279.106 138.511 279.337C138.283 279.571 138.101 279.858 137.964 280.196C137.827 280.532 137.759 280.912 137.759 281.339V281.544C137.759 281.912 137.821 282.252 137.944 282.564C138.068 282.877 138.241 283.147 138.462 283.375C138.683 283.603 138.949 283.78 139.258 283.907C139.57 284.034 139.912 284.098 140.283 284.098ZM140.166 279.361C140.397 279.361 140.596 279.404 140.762 279.488C140.931 279.573 141.071 279.684 141.182 279.82C141.292 279.957 141.379 280.12 141.44 280.309C141.502 280.494 141.533 280.668 141.533 280.831V280.875H138.691C138.727 280.631 138.789 280.416 138.877 280.23C138.968 280.042 139.079 279.882 139.209 279.752C139.339 279.625 139.486 279.529 139.648 279.464C139.811 279.396 139.984 279.361 140.166 279.361ZM147.417 278.619C147.033 278.619 146.689 278.704 146.387 278.873C146.087 279.039 145.83 279.267 145.615 279.557L145.61 279.425L145.571 278.717H144.712V284H145.62V280.611C145.679 280.449 145.752 280.302 145.84 280.172C145.931 280.038 146.037 279.926 146.157 279.835C146.291 279.731 146.447 279.653 146.626 279.601C146.805 279.545 147.005 279.518 147.227 279.518C147.399 279.518 147.563 279.527 147.72 279.547C147.879 279.563 148.047 279.591 148.223 279.63L148.345 278.746C148.254 278.707 148.117 278.676 147.935 278.653C147.756 278.631 147.583 278.619 147.417 278.619ZM151.606 281.998H152.51C152.51 281.871 152.513 281.759 152.52 281.661C152.526 281.56 152.542 281.466 152.568 281.378C152.594 281.29 152.633 281.204 152.686 281.119C152.741 281.035 152.817 280.945 152.915 280.851C153.068 280.714 153.223 280.566 153.379 280.406C153.538 280.247 153.682 280.074 153.809 279.889C153.936 279.706 154.04 279.513 154.121 279.308C154.202 279.099 154.243 278.878 154.243 278.644C154.243 278.351 154.196 278.09 154.102 277.862C154.007 277.634 153.87 277.441 153.691 277.281C153.512 277.122 153.293 277.001 153.032 276.92C152.775 276.835 152.482 276.793 152.153 276.793C151.857 276.793 151.58 276.834 151.323 276.915C151.069 276.993 150.85 277.107 150.664 277.257C150.475 277.41 150.326 277.595 150.215 277.813C150.104 278.032 150.047 278.277 150.044 278.551H150.947C150.947 278.382 150.981 278.237 151.05 278.116C151.118 277.993 151.209 277.89 151.323 277.809C151.434 277.73 151.561 277.674 151.704 277.638C151.851 277.599 152 277.579 152.153 277.579C152.352 277.579 152.528 277.605 152.681 277.657C152.834 277.709 152.961 277.786 153.062 277.887C153.153 277.978 153.221 278.09 153.267 278.224C153.315 278.354 153.34 278.504 153.34 278.673C153.34 278.836 153.309 278.99 153.247 279.137C153.185 279.283 153.107 279.422 153.013 279.552C152.915 279.685 152.808 279.812 152.69 279.933C152.576 280.053 152.464 280.17 152.354 280.284C152.191 280.434 152.061 280.564 151.963 280.675C151.865 280.782 151.79 280.895 151.738 281.012C151.686 281.132 151.652 281.269 151.636 281.422C151.619 281.572 151.61 281.764 151.606 281.998ZM151.504 283.526C151.504 283.676 151.549 283.801 151.641 283.902C151.735 284.003 151.875 284.054 152.061 284.054C152.246 284.054 152.386 284.003 152.48 283.902C152.578 283.801 152.627 283.676 152.627 283.526C152.627 283.37 152.578 283.24 152.48 283.136C152.386 283.032 152.246 282.979 152.061 282.979C151.875 282.979 151.735 283.032 151.641 283.136C151.549 283.24 151.504 283.37 151.504 283.526Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M162.808 281.109V281.217C162.808 281.679 162.842 282.112 162.91 282.516C162.982 282.919 163.078 283.292 163.198 283.634C163.319 283.979 163.459 284.293 163.618 284.576C163.781 284.859 163.952 285.108 164.131 285.323C164.31 285.541 164.494 285.727 164.683 285.88C164.875 286.033 165.06 286.15 165.239 286.231L165.503 285.499C165.376 285.401 165.247 285.279 165.117 285.133C164.987 284.986 164.863 284.814 164.746 284.615C164.635 284.433 164.531 284.22 164.434 283.976C164.339 283.731 164.256 283.466 164.185 283.18C164.132 282.975 164.084 282.7 164.038 282.354C163.996 282.009 163.975 281.633 163.975 281.227V281.1C163.975 280.686 163.997 280.304 164.043 279.952C164.089 279.601 164.149 279.28 164.224 278.99C164.308 278.691 164.406 278.414 164.517 278.16C164.631 277.906 164.753 277.687 164.883 277.501C164.984 277.358 165.086 277.231 165.19 277.12C165.295 277.009 165.399 276.915 165.503 276.837L165.239 276.095C165.06 276.176 164.875 276.293 164.683 276.446C164.494 276.596 164.31 276.78 164.131 276.998C163.952 277.216 163.781 277.467 163.618 277.75C163.459 278.033 163.319 278.346 163.198 278.688C163.078 279.033 162.982 279.409 162.91 279.815C162.842 280.219 162.808 280.65 162.808 281.109ZM170.195 280.167L168.794 276.891H167.29L169.492 281.48L169.497 284H170.864L170.869 281.539L173.105 276.891H171.597L170.195 280.167ZM176.387 284.098C176.898 284.098 177.34 283.998 177.715 283.8C178.089 283.601 178.363 283.38 178.535 283.136L177.856 282.403C177.7 282.605 177.497 282.757 177.246 282.857C176.995 282.958 176.737 283.009 176.47 283.009C176.281 283.009 176.107 282.979 175.947 282.921C175.788 282.862 175.646 282.779 175.522 282.672C175.402 282.568 175.306 282.452 175.234 282.325C175.163 282.195 175.104 282.024 175.059 281.812V281.798H178.643V281.222C178.643 280.834 178.589 280.481 178.481 280.162C178.374 279.84 178.218 279.565 178.013 279.337C177.804 279.109 177.55 278.933 177.251 278.81C176.955 278.683 176.616 278.619 176.235 278.619C175.868 278.619 175.527 278.686 175.215 278.819C174.902 278.953 174.632 279.14 174.404 279.381C174.176 279.622 173.999 279.91 173.872 280.245C173.745 280.577 173.682 280.945 173.682 281.349V281.544C173.682 281.899 173.745 282.232 173.872 282.545C174.002 282.854 174.186 283.123 174.424 283.351C174.661 283.582 174.946 283.764 175.278 283.897C175.61 284.031 175.98 284.098 176.387 284.098ZM176.226 279.718C176.398 279.718 176.549 279.745 176.68 279.801C176.813 279.853 176.925 279.924 177.017 280.016C177.108 280.11 177.179 280.221 177.231 280.348C177.284 280.475 177.31 280.61 177.31 280.753V280.86H175.083C175.116 280.688 175.164 280.532 175.229 280.392C175.295 280.252 175.376 280.131 175.474 280.03C175.568 279.929 175.679 279.853 175.806 279.801C175.933 279.745 176.073 279.718 176.226 279.718ZM183.237 282.55C183.237 282.631 183.216 282.706 183.174 282.774C183.135 282.843 183.075 282.903 182.993 282.955C182.909 283.007 182.799 283.049 182.666 283.082C182.536 283.111 182.383 283.126 182.207 283.126C182.061 283.126 181.917 283.111 181.777 283.082C181.641 283.053 181.519 283.006 181.411 282.94C181.304 282.879 181.216 282.797 181.147 282.696C181.079 282.592 181.04 282.468 181.03 282.325H179.736C179.736 282.54 179.788 282.755 179.893 282.97C180 283.181 180.156 283.37 180.361 283.536C180.566 283.705 180.82 283.842 181.123 283.946C181.429 284.05 181.781 284.103 182.178 284.103C182.539 284.103 182.866 284.063 183.159 283.985C183.452 283.904 183.703 283.792 183.911 283.648C184.116 283.505 184.274 283.336 184.385 283.141C184.499 282.942 184.556 282.726 184.556 282.491C184.556 282.237 184.499 282.019 184.385 281.837C184.274 281.651 184.119 281.493 183.921 281.363C183.722 281.236 183.486 281.132 183.213 281.051C182.939 280.969 182.643 280.903 182.324 280.851C182.103 280.818 181.921 280.781 181.777 280.738C181.634 280.693 181.522 280.642 181.44 280.587C181.356 280.535 181.297 280.476 181.265 280.411C181.232 280.343 181.216 280.27 181.216 280.191C181.216 280.113 181.234 280.04 181.27 279.972C181.309 279.9 181.364 279.838 181.436 279.786C181.514 279.728 181.615 279.682 181.738 279.649C181.862 279.617 182.007 279.601 182.173 279.601C182.368 279.601 182.534 279.625 182.671 279.674C182.811 279.723 182.922 279.788 183.003 279.869C183.062 279.931 183.105 280.001 183.135 280.079C183.164 280.154 183.179 280.235 183.179 280.323H184.536C184.536 280.079 184.482 279.853 184.375 279.645C184.268 279.436 184.113 279.256 183.911 279.103C183.706 278.953 183.457 278.836 183.164 278.751C182.871 278.663 182.541 278.619 182.173 278.619C181.821 278.619 181.506 278.663 181.226 278.751C180.946 278.839 180.708 278.958 180.513 279.107C180.317 279.257 180.168 279.431 180.063 279.63C179.959 279.828 179.907 280.037 179.907 280.255C179.907 280.479 179.958 280.678 180.059 280.851C180.163 281.023 180.306 281.174 180.488 281.305C180.671 281.438 180.889 281.552 181.143 281.646C181.4 281.738 181.683 281.814 181.992 281.876C182.236 281.922 182.438 281.967 182.598 282.013C182.757 282.058 182.886 282.107 182.983 282.159C183.078 282.215 183.143 282.273 183.179 282.335C183.218 282.397 183.237 282.468 183.237 282.55ZM189.448 281.217V281.109C189.448 280.663 189.412 280.242 189.341 279.845C189.269 279.444 189.172 279.072 189.048 278.727C188.924 278.382 188.779 278.067 188.613 277.784C188.451 277.498 188.276 277.242 188.091 277.018C187.905 276.796 187.715 276.607 187.52 276.451C187.324 276.295 187.134 276.176 186.948 276.095L186.689 276.822C186.787 276.897 186.885 276.988 186.982 277.096C187.083 277.2 187.181 277.319 187.275 277.452C187.415 277.654 187.547 277.893 187.671 278.17C187.798 278.447 187.905 278.759 187.993 279.107C188.062 279.387 188.115 279.693 188.154 280.025C188.197 280.357 188.218 280.715 188.218 281.1V281.227C188.218 281.62 188.197 281.987 188.154 282.325C188.115 282.664 188.062 282.973 187.993 283.253C187.912 283.559 187.817 283.836 187.71 284.083C187.606 284.33 187.49 284.552 187.363 284.747C187.256 284.913 187.145 285.058 187.031 285.182C186.917 285.309 186.803 285.414 186.689 285.499L186.948 286.231C187.134 286.15 187.324 286.031 187.52 285.875C187.715 285.719 187.905 285.528 188.091 285.304C188.276 285.082 188.451 284.828 188.613 284.542C188.779 284.259 188.924 283.945 189.048 283.6C189.172 283.255 189.269 282.883 189.341 282.486C189.412 282.086 189.448 281.663 189.448 281.217Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M192.5 281C192.5 284.114 190.765 286.978 187.873 289.081C184.982 291.184 180.962 292.5 176.5 292.5C172.038 292.5 168.018 291.184 165.127 289.081C162.235 286.978 160.5 284.114 160.5 281C160.5 277.886 162.235 275.022 165.127 272.919C168.018 270.816 172.038 269.5 176.5 269.5C180.962 269.5 184.982 270.816 187.873 272.919C190.765 275.022 192.5 277.886 192.5 281Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M388.696 87.2785C388.85 86.894 388.663 86.4575 388.279 86.3036L382.011 83.7968C381.627 83.6429 381.19 83.83 381.036 84.2146C380.883 84.5992 381.07 85.0356 381.454 85.1895L387.025 87.4178L384.797 92.9887C384.643 93.3733 384.83 93.8097 385.215 93.9636C385.599 94.1174 386.036 93.9303 386.189 93.5458L388.696 87.2785ZM193 280C193.339 280.669 193.34 280.669 193.34 280.668C193.341 280.668 193.342 280.667 193.343 280.667C193.346 280.666 193.349 280.664 193.354 280.661C193.363 280.657 193.377 280.65 193.395 280.64C193.431 280.622 193.485 280.594 193.555 280.558C193.697 280.485 193.906 280.376 194.18 280.231C194.729 279.941 195.536 279.507 196.578 278.932C198.66 277.781 201.677 276.06 205.421 273.781C212.909 269.223 223.307 262.426 234.957 253.47C258.251 235.561 286.582 208.991 306.649 174.376L305.351 173.624C285.418 208.009 257.249 234.439 234.043 252.28C222.443 261.199 212.091 267.965 204.641 272.5C200.917 274.767 197.918 276.477 195.852 277.619C194.819 278.19 194.02 278.619 193.479 278.904C193.209 279.047 193.003 279.154 192.866 279.226C192.797 279.261 192.745 279.288 192.711 279.305C192.694 279.314 192.681 279.321 192.673 279.325C192.669 279.327 192.666 279.329 192.664 279.33C192.663 279.33 192.662 279.33 192.661 279.331C192.661 279.331 192.661 279.331 193 280ZM306.649 174.376C326.605 139.952 347.049 118.268 362.485 105.197C370.203 98.6616 376.671 94.2782 381.201 91.532C383.467 90.1589 385.248 89.195 386.459 88.576C387.064 88.2665 387.527 88.0433 387.837 87.8982C387.992 87.8256 388.108 87.7726 388.185 87.7381C388.223 87.7209 388.252 87.7083 388.27 87.7002C388.28 87.6962 388.286 87.6933 388.291 87.6915C388.293 87.6906 388.294 87.6899 388.295 87.6896C388.295 87.6894 388.295 87.6894 388.296 87.6893C388.296 87.6893 388.295 87.6894 388 87C387.705 86.3106 387.704 86.3109 387.703 86.3111C387.703 86.3113 387.702 86.3117 387.701 86.3121C387.699 86.3128 387.697 86.3139 387.694 86.3152C387.688 86.3178 387.679 86.3215 387.668 86.3264C387.646 86.3361 387.614 86.3504 387.572 86.3693C387.487 86.4072 387.363 86.4637 387.2 86.5398C386.875 86.6921 386.397 86.9229 385.776 87.2404C384.534 87.8753 382.721 88.8568 380.424 90.2493C375.829 93.0343 369.297 97.4634 361.515 104.053C345.951 117.232 325.395 139.048 305.351 173.624L306.649 174.376Z\"\n      fill=\"url(#paint0_linear_5_234)\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"540.5\"\n      cy=\"81.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M539.772 82.9534H540.763C540.763 82.8478 540.765 82.758 540.771 82.684C540.776 82.6074 540.789 82.5375 540.81 82.4741C540.829 82.4107 540.861 82.3486 540.905 82.2879C540.95 82.2271 541.012 82.1571 541.092 82.0779C541.221 81.9643 541.349 81.8481 541.476 81.7293C541.605 81.6078 541.72 81.4797 541.821 81.345C541.921 81.2129 542.003 81.0703 542.066 80.9171C542.13 80.7613 542.161 80.5896 542.161 80.4021C542.161 80.1485 542.119 79.9254 542.035 79.7325C541.95 79.5397 541.829 79.3773 541.67 79.2453C541.509 79.1158 541.312 79.0181 541.08 78.9521C540.847 78.8861 540.585 78.853 540.291 78.853C540.03 78.853 539.787 78.8861 539.562 78.9521C539.338 79.0155 539.142 79.1132 538.976 79.2453C538.81 79.3773 538.678 79.5437 538.58 79.7444C538.482 79.9425 538.432 80.1763 538.429 80.4457H539.535C539.537 80.3242 539.56 80.2198 539.602 80.1327C539.647 80.0455 539.705 79.9742 539.776 79.9188C539.845 79.8633 539.924 79.8237 540.014 79.7999C540.104 79.7735 540.196 79.7603 540.291 79.7603C540.413 79.7603 540.52 79.7735 540.612 79.7999C540.707 79.8263 540.788 79.8659 540.854 79.9188C540.917 79.9769 540.966 80.0508 541.001 80.1406C541.035 80.2278 541.052 80.3321 541.052 80.4536C541.052 80.5539 541.03 80.6543 540.985 80.7547C540.94 80.855 540.882 80.9528 540.81 81.0478C540.736 81.1456 540.655 81.2407 540.565 81.3331C540.475 81.4229 540.385 81.5087 540.295 81.5906C540.171 81.6883 540.075 81.7808 540.006 81.8679C539.937 81.9524 539.886 82.0449 539.852 82.1452C539.817 82.2483 539.795 82.3631 539.784 82.4899C539.776 82.6167 539.772 82.7712 539.772 82.9534ZM539.61 84.1538C539.61 84.3229 539.667 84.4655 539.78 84.5817C539.894 84.6953 540.051 84.7521 540.252 84.7521C540.447 84.7521 540.603 84.6953 540.719 84.5817C540.838 84.4655 540.898 84.3229 540.898 84.1538C540.898 83.9795 540.838 83.8343 540.719 83.7181C540.603 83.5992 540.447 83.5398 540.252 83.5398C540.051 83.5398 539.894 83.5992 539.78 83.7181C539.667 83.8343 539.61 83.9795 539.61 84.1538Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M399.895 85H400.902L401.385 81.8861L401.429 81.5929L401.472 81.8861L401.975 85H402.982L403.782 79.2317H402.76L402.367 82.4645L402.34 82.7062L402.304 82.4685L401.821 79.2317H401.024L400.569 82.4447L400.533 82.6824L400.505 82.4566L400.121 79.2317H399.103L399.895 85ZM405.533 81.3037V78.9148H404.432V85H405.533V81.9059C405.575 81.8504 405.621 81.8002 405.672 81.7553C405.724 81.7104 405.782 81.6721 405.846 81.6404C405.915 81.6035 405.991 81.5757 406.076 81.5573C406.16 81.5388 406.251 81.5295 406.349 81.5295C406.476 81.5295 406.589 81.5467 406.69 81.581C406.79 81.6127 406.876 81.6629 406.947 81.7316C407.019 81.8002 407.073 81.89 407.11 82.001C407.149 82.1119 407.169 82.244 407.169 82.3971V85H408.27V82.4051C408.27 82.0908 408.232 81.8227 408.156 81.6008C408.082 81.3763 407.977 81.1928 407.843 81.0501C407.708 80.9075 407.547 80.8032 407.359 80.7372C407.172 80.6685 406.966 80.6342 406.741 80.6342C406.588 80.6342 406.443 80.6566 406.305 80.7015C406.168 80.7464 406.043 80.8098 405.929 80.8917C405.855 80.9445 405.784 81.0066 405.715 81.0779C405.649 81.1466 405.588 81.2218 405.533 81.3037ZM411.384 85.0792C411.799 85.0792 412.158 84.9987 412.462 84.8376C412.766 84.6765 412.988 84.4969 413.128 84.2988L412.577 83.7045C412.45 83.8683 412.285 83.9911 412.082 84.073C411.878 84.1548 411.668 84.1958 411.452 84.1958C411.299 84.1958 411.157 84.172 411.028 84.1245C410.898 84.0769 410.784 84.0096 410.683 83.9224C410.585 83.8379 410.508 83.7441 410.449 83.6411C410.391 83.5355 410.344 83.3968 410.307 83.2251V83.2133H413.215V82.7458C413.215 82.4315 413.171 82.1449 413.084 81.8861C412.997 81.6246 412.87 81.4014 412.704 81.2165C412.535 81.0317 412.329 80.889 412.086 80.7887C411.845 80.6857 411.571 80.6342 411.262 80.6342C410.963 80.6342 410.687 80.6883 410.434 80.7966C410.18 80.9049 409.961 81.0568 409.776 81.2522C409.591 81.4476 409.447 81.6814 409.344 81.9534C409.241 82.2228 409.19 82.5213 409.19 82.8488V83.0072C409.19 83.2951 409.241 83.5659 409.344 83.8194C409.45 84.0703 409.599 84.2882 409.792 84.4731C409.985 84.6606 410.216 84.8085 410.485 84.9168C410.754 85.0251 411.054 85.0792 411.384 85.0792ZM411.254 81.5256C411.394 81.5256 411.516 81.548 411.622 81.5929C411.73 81.6352 411.821 81.6933 411.895 81.7672C411.969 81.8438 412.028 81.9336 412.07 82.0366C412.112 82.1396 412.133 82.2492 412.133 82.3654V82.4526H410.327C410.353 82.3126 410.393 82.1858 410.445 82.0723C410.498 81.9587 410.564 81.861 410.644 81.7791C410.72 81.6972 410.81 81.6352 410.913 81.5929C411.016 81.548 411.13 81.5256 411.254 81.5256ZM414.177 85H415.283V81.9534C415.32 81.8953 415.361 81.8425 415.406 81.795C415.45 81.7474 415.501 81.7065 415.556 81.6721C415.625 81.6246 415.703 81.5889 415.79 81.5652C415.88 81.5414 415.977 81.5295 416.083 81.5295C416.21 81.5295 416.323 81.5427 416.424 81.5691C416.524 81.5929 416.61 81.6365 416.681 81.6999C416.753 81.7633 416.807 81.8504 416.844 81.9613C416.883 82.0696 416.903 82.2083 416.903 82.3773V85H418.004V82.3615C418.004 82.0498 417.967 81.7857 417.894 81.5691C417.822 81.3499 417.722 81.1703 417.592 81.0303C417.46 80.893 417.305 80.7926 417.125 80.7292C416.945 80.6659 416.747 80.6342 416.531 80.6342C416.362 80.6342 416.202 80.6579 416.051 80.7055C415.901 80.753 415.762 80.8217 415.635 80.9115C415.561 80.9643 415.491 81.0237 415.425 81.0898C415.359 81.1558 415.299 81.2284 415.243 81.3077L415.176 80.7134H414.177V85ZM423.923 85H425.029V81.9534C425.066 81.8953 425.107 81.8425 425.151 81.795C425.196 81.7474 425.247 81.7065 425.302 81.6721C425.371 81.6246 425.449 81.5889 425.536 81.5652C425.626 81.5414 425.723 81.5295 425.829 81.5295C425.956 81.5295 426.069 81.5427 426.17 81.5691C426.27 81.5929 426.356 81.6365 426.427 81.6999C426.498 81.7633 426.553 81.8504 426.59 81.9613C426.629 82.0696 426.649 82.2083 426.649 82.3773V85H427.75V82.3615C427.75 82.0498 427.713 81.7857 427.639 81.5691C427.568 81.3499 427.468 81.1703 427.338 81.0303C427.206 80.893 427.05 80.7926 426.871 80.7292C426.691 80.6659 426.493 80.6342 426.277 80.6342C426.108 80.6342 425.948 80.6579 425.797 80.7055C425.647 80.753 425.508 80.8217 425.381 80.9115C425.307 80.9643 425.237 81.0237 425.171 81.0898C425.105 81.1558 425.044 81.2284 424.989 81.3077L424.922 80.7134H423.923V85ZM428.646 82.8171V82.9003C428.646 83.2146 428.691 83.5051 428.78 83.7719C428.87 84.036 429.002 84.2658 429.177 84.4612C429.348 84.6566 429.56 84.8098 429.81 84.9208C430.064 85.0291 430.352 85.0832 430.674 85.0832C430.994 85.0832 431.279 85.0291 431.53 84.9208C431.781 84.8098 431.992 84.6566 432.164 84.4612C432.335 84.2658 432.466 84.036 432.556 83.7719C432.646 83.5051 432.691 83.2146 432.691 82.9003V82.8171C432.691 82.5054 432.646 82.2175 432.556 81.9534C432.466 81.6867 432.335 81.4556 432.164 81.2601C431.989 81.0647 431.777 80.9115 431.526 80.8006C431.275 80.6896 430.988 80.6342 430.666 80.6342C430.344 80.6342 430.057 80.6896 429.806 80.8006C429.558 80.9115 429.348 81.0647 429.177 81.2601C429.002 81.4556 428.87 81.6867 428.78 81.9534C428.691 82.2175 428.646 82.5054 428.646 82.8171ZM429.747 82.9003V82.8171C429.747 82.6428 429.764 82.4777 429.799 82.3219C429.833 82.166 429.887 82.0287 429.961 81.9098C430.035 81.791 430.13 81.6972 430.246 81.6286C430.362 81.5599 430.502 81.5256 430.666 81.5256C430.833 81.5256 430.974 81.5599 431.09 81.6286C431.206 81.6972 431.301 81.791 431.375 81.9098C431.447 82.0287 431.499 82.166 431.534 82.3219C431.568 82.4777 431.585 82.6428 431.585 82.8171V82.9003C431.585 83.0799 431.568 83.2489 431.534 83.4074C431.499 83.5632 431.447 83.6992 431.375 83.8154C431.301 83.9343 431.206 84.0281 431.09 84.0967C430.974 84.1654 430.835 84.1997 430.674 84.1997C430.508 84.1997 430.365 84.1654 430.246 84.0967C430.13 84.0281 430.035 83.9343 429.961 83.8154C429.887 83.6992 429.833 83.5632 429.799 83.4074C429.764 83.2489 429.747 83.0799 429.747 82.9003ZM433.554 82.825V82.9082C433.554 83.2199 433.593 83.5091 433.669 83.7758C433.746 84.0399 433.857 84.2684 434.002 84.4612C434.145 84.654 434.319 84.8059 434.525 84.9168C434.734 85.0251 434.969 85.0792 435.23 85.0792C435.47 85.0792 435.682 85.033 435.864 84.9406C436.046 84.8481 436.205 84.7187 436.339 84.5523L436.395 85H437.389V78.9148H436.284V81.0977C436.152 80.9498 436 80.8362 435.828 80.757C435.659 80.6751 435.463 80.6342 435.238 80.6342C434.971 80.6342 434.734 80.687 434.525 80.7926C434.319 80.8983 434.143 81.0475 433.998 81.2403C433.853 81.4331 433.742 81.6642 433.665 81.9336C433.591 82.203 433.554 82.5001 433.554 82.825ZM434.656 82.9082V82.825C434.656 82.6454 434.671 82.4777 434.703 82.3219C434.735 82.1634 434.785 82.0247 434.854 81.9059C434.922 81.7897 435.011 81.6986 435.119 81.6325C435.23 81.5639 435.363 81.5295 435.519 81.5295C435.707 81.5295 435.863 81.5705 435.987 81.6523C436.111 81.7316 436.21 81.8438 436.284 81.9891V83.7243C436.21 83.8669 436.11 83.9792 435.983 84.0611C435.859 84.1429 435.702 84.1839 435.511 84.1839C435.356 84.1839 435.223 84.1509 435.115 84.0848C435.007 84.0188 434.918 83.9277 434.85 83.8115C434.781 83.6979 434.731 83.5645 434.699 83.4113C434.67 83.2555 434.656 83.0878 434.656 82.9082ZM440.622 85.0792C441.037 85.0792 441.396 84.9987 441.7 84.8376C442.003 84.6765 442.225 84.4969 442.365 84.2988L441.814 83.7045C441.688 83.8683 441.523 83.9911 441.319 84.073C441.116 84.1548 440.906 84.1958 440.689 84.1958C440.536 84.1958 440.395 84.172 440.265 84.1245C440.136 84.0769 440.021 84.0096 439.921 83.9224C439.823 83.8379 439.745 83.7441 439.687 83.6411C439.629 83.5355 439.581 83.3968 439.544 83.2251V83.2133H442.452V82.7458C442.452 82.4315 442.409 82.1449 442.322 81.8861C442.234 81.6246 442.108 81.4014 441.941 81.2165C441.772 81.0317 441.566 80.889 441.323 80.7887C441.083 80.6857 440.808 80.6342 440.499 80.6342C440.201 80.6342 439.925 80.6883 439.671 80.7966C439.418 80.9049 439.198 81.0568 439.014 81.2522C438.829 81.4476 438.685 81.6814 438.582 81.9534C438.479 82.2228 438.427 82.5213 438.427 82.8488V83.0072C438.427 83.2951 438.479 83.5659 438.582 83.8194C438.687 84.0703 438.837 84.2882 439.029 84.4731C439.222 84.6606 439.453 84.8085 439.723 84.9168C439.992 85.0251 440.292 85.0792 440.622 85.0792ZM440.491 81.5256C440.631 81.5256 440.754 81.548 440.86 81.5929C440.968 81.6352 441.059 81.6933 441.133 81.7672C441.207 81.8438 441.265 81.9336 441.307 82.0366C441.35 82.1396 441.371 82.2492 441.371 82.3654V82.4526H439.564C439.591 82.3126 439.63 82.1858 439.683 82.0723C439.736 81.9587 439.802 81.861 439.881 81.7791C439.958 81.6972 440.048 81.6352 440.151 81.5929C440.254 81.548 440.367 81.5256 440.491 81.5256ZM446.113 85V79.2317H446.054L443.542 80.1389V81.0977L445 80.5747V85H446.113ZM455.059 84.1997C454.882 84.1997 454.735 84.1641 454.619 84.0928C454.505 84.0215 454.415 83.9264 454.349 83.8075C454.281 83.6913 454.233 83.5566 454.207 83.4034C454.18 83.2476 454.167 83.0865 454.167 82.9201V82.8012C454.167 82.6375 454.18 82.479 454.207 82.3258C454.236 82.1726 454.285 82.0366 454.353 81.9178C454.419 81.7989 454.509 81.7038 454.623 81.6325C454.736 81.5612 454.88 81.5256 455.055 81.5256C455.173 81.5256 455.283 81.5467 455.383 81.5889C455.484 81.6286 455.57 81.6827 455.641 81.7514C455.712 81.82 455.766 81.9019 455.803 81.997C455.84 82.0921 455.856 82.1924 455.851 82.2981H456.889C456.894 82.0445 456.852 81.8161 456.762 81.6127C456.672 81.4067 456.547 81.2311 456.386 81.0858C456.222 80.9432 456.028 80.8323 455.803 80.753C455.579 80.6738 455.335 80.6342 455.07 80.6342C454.74 80.6342 454.45 80.691 454.199 80.8045C453.951 80.9181 453.742 81.0726 453.573 81.268C453.404 81.4635 453.277 81.6933 453.193 81.9574C453.108 82.2189 453.066 82.5001 453.066 82.8012V82.9201C453.066 83.2212 453.108 83.5038 453.193 83.7679C453.28 84.0294 453.408 84.2578 453.577 84.4533C453.743 84.6487 453.952 84.8032 454.203 84.9168C454.454 85.0277 454.746 85.0832 455.078 85.0832C455.324 85.0832 455.556 85.0449 455.776 84.9683C455.998 84.8891 456.192 84.7808 456.358 84.6434C456.524 84.5061 456.655 84.3424 456.75 84.1522C456.848 83.962 456.894 83.756 456.889 83.5342H455.851C455.856 83.6345 455.838 83.7256 455.795 83.8075C455.756 83.8894 455.699 83.9594 455.625 84.0175C455.551 84.0756 455.465 84.1205 455.368 84.1522C455.27 84.1839 455.167 84.1997 455.059 84.1997ZM459.135 81.3037V78.9148H458.034V85H459.135V81.9059C459.177 81.8504 459.224 81.8002 459.274 81.7553C459.327 81.7104 459.385 81.6721 459.448 81.6404C459.517 81.6035 459.593 81.5757 459.678 81.5573C459.762 81.5388 459.854 81.5295 459.951 81.5295C460.078 81.5295 460.192 81.5467 460.292 81.581C460.392 81.6127 460.478 81.6629 460.55 81.7316C460.621 81.8002 460.675 81.89 460.712 82.001C460.752 82.1119 460.771 82.244 460.771 82.3971V85H461.873V82.4051C461.873 82.0908 461.834 81.8227 461.758 81.6008C461.684 81.3763 461.58 81.1928 461.445 81.0501C461.31 80.9075 461.149 80.8032 460.962 80.7372C460.774 80.6685 460.568 80.6342 460.344 80.6342C460.19 80.6342 460.045 80.6566 459.908 80.7015C459.77 80.7464 459.645 80.8098 459.531 80.8917C459.457 80.9445 459.386 81.0066 459.317 81.0779C459.251 81.1466 459.191 81.2218 459.135 81.3037ZM465.585 85H466.702V84.9327C466.647 84.8244 466.604 84.6949 466.575 84.5444C466.546 84.3939 466.532 84.2037 466.532 83.9739V82.1357C466.532 81.8874 466.486 81.6695 466.393 81.482C466.301 81.2918 466.173 81.1347 466.009 81.0105C465.845 80.8864 465.651 80.7926 465.426 80.7292C465.205 80.6659 464.964 80.6342 464.705 80.6342C464.418 80.6342 464.161 80.6711 463.937 80.7451C463.715 80.8164 463.527 80.9141 463.374 81.0383C463.218 81.1624 463.1 81.3063 463.018 81.4701C462.938 81.6338 462.899 81.8068 462.899 81.9891H464C464 81.9125 464.011 81.8425 464.032 81.7791C464.056 81.7157 464.091 81.6616 464.139 81.6167C464.192 81.5665 464.26 81.5282 464.345 81.5018C464.429 81.4727 464.53 81.4582 464.646 81.4582C464.778 81.4582 464.893 81.4754 464.991 81.5097C465.091 81.5414 465.174 81.5876 465.24 81.6484C465.304 81.7065 465.351 81.7765 465.383 81.8583C465.415 81.9376 465.43 82.0274 465.43 82.1277V82.3813H464.816C464.499 82.3813 464.218 82.4103 463.972 82.4685C463.729 82.5239 463.525 82.6058 463.358 82.7141C463.174 82.8329 463.035 82.9848 462.942 83.1697C462.85 83.3519 462.804 83.5619 462.804 83.7996C462.804 83.9845 462.841 84.1562 462.915 84.3146C462.989 84.4704 463.092 84.6051 463.224 84.7187C463.356 84.8323 463.513 84.9208 463.695 84.9842C463.88 85.0475 464.082 85.0792 464.301 85.0792C464.436 85.0792 464.561 85.066 464.678 85.0396C464.794 85.0158 464.901 84.9815 464.999 84.9366C465.094 84.8944 465.181 84.8442 465.26 84.7861C465.339 84.728 465.409 84.6659 465.47 84.5999C465.483 84.6765 465.499 84.7491 465.518 84.8178C465.536 84.8864 465.558 84.9472 465.585 85ZM464.535 84.2275C464.432 84.2275 464.341 84.2156 464.262 84.1918C464.185 84.1654 464.12 84.1311 464.068 84.0888C464.015 84.0439 463.974 83.9898 463.945 83.9264C463.918 83.8603 463.905 83.789 463.905 83.7124C463.905 83.6147 463.924 83.5249 463.961 83.443C463.998 83.3585 464.054 83.2859 464.131 83.2251C464.208 83.167 464.307 83.1221 464.428 83.0904C464.55 83.0561 464.696 83.0389 464.868 83.0389H465.43V83.7758C465.399 83.8313 465.355 83.8868 465.3 83.9422C465.244 83.995 465.178 84.0426 465.102 84.0848C465.025 84.1271 464.939 84.1614 464.844 84.1878C464.749 84.2143 464.646 84.2275 464.535 84.2275ZM467.78 85H468.885V81.9534C468.922 81.8953 468.963 81.8425 469.008 81.795C469.053 81.7474 469.103 81.7065 469.158 81.6721C469.227 81.6246 469.305 81.5889 469.392 81.5652C469.482 81.5414 469.58 81.5295 469.685 81.5295C469.812 81.5295 469.926 81.5427 470.026 81.5691C470.126 81.5929 470.212 81.6365 470.284 81.6999C470.355 81.7633 470.409 81.8504 470.446 81.9613C470.486 82.0696 470.505 82.2083 470.505 82.3773V85H471.607V82.3615C471.607 82.0498 471.57 81.7857 471.496 81.5691C471.425 81.3499 471.324 81.1703 471.195 81.0303C471.063 80.893 470.907 80.7926 470.727 80.7292C470.548 80.6659 470.35 80.6342 470.133 80.6342C469.964 80.6342 469.804 80.6579 469.654 80.7055C469.503 80.753 469.364 80.8217 469.238 80.9115C469.164 80.9643 469.094 81.0237 469.028 81.0898C468.962 81.1558 468.901 81.2284 468.845 81.3077L468.778 80.7134H467.78V85ZM472.542 82.825V82.9082C472.542 83.2199 472.581 83.5091 472.661 83.7758C472.742 84.0399 472.859 84.2684 473.009 84.4612C473.16 84.654 473.341 84.8059 473.552 84.9168C473.766 85.0251 474.006 85.0792 474.273 85.0792C474.408 85.0792 474.533 85.0647 474.649 85.0357C474.768 85.0066 474.876 84.9657 474.974 84.9128C475.04 84.8759 475.102 84.8336 475.16 84.7861C475.219 84.7385 475.274 84.6857 475.327 84.6276V84.8732C475.327 85.0185 475.306 85.1492 475.263 85.2654C475.224 85.3816 475.166 85.4794 475.089 85.5586C475.005 85.6458 474.899 85.7118 474.772 85.7567C474.648 85.8016 474.505 85.824 474.344 85.824C474.244 85.824 474.146 85.8135 474.051 85.7923C473.959 85.7739 473.869 85.7448 473.782 85.7052C473.692 85.6656 473.606 85.6141 473.524 85.5507C473.442 85.4899 473.366 85.4186 473.294 85.3367L472.799 86.0063C472.892 86.1251 473.003 86.2268 473.132 86.3113C473.261 86.3985 473.399 86.4698 473.544 86.5253C473.689 86.5807 473.836 86.6217 473.984 86.6481C474.132 86.6745 474.27 86.6877 474.4 86.6877C474.701 86.6877 474.976 86.6468 475.224 86.5649C475.475 86.4857 475.69 86.3681 475.87 86.2123C476.047 86.0565 476.184 85.865 476.282 85.6378C476.382 85.4107 476.432 85.1519 476.432 84.8613V80.7134H475.43L475.386 81.1215C475.333 81.0554 475.275 80.996 475.212 80.9432C475.149 80.8877 475.08 80.8402 475.006 80.8006C474.908 80.7451 474.799 80.7042 474.677 80.6777C474.558 80.6487 474.426 80.6342 474.281 80.6342C474.012 80.6342 473.77 80.687 473.556 80.7926C473.342 80.8983 473.16 81.0475 473.009 81.2403C472.859 81.4331 472.742 81.6642 472.661 81.9336C472.581 82.203 472.542 82.5001 472.542 82.825ZM473.647 82.9082V82.825C473.647 82.6454 473.666 82.4777 473.703 82.3219C473.739 82.1634 473.796 82.0247 473.873 81.9059C473.947 81.7897 474.041 81.6986 474.154 81.6325C474.268 81.5639 474.402 81.5295 474.558 81.5295C474.643 81.5295 474.721 81.5374 474.792 81.5533C474.866 81.5691 474.933 81.5916 474.994 81.6206C475.065 81.655 475.129 81.6999 475.184 81.7553C475.24 81.8108 475.287 81.8755 475.327 81.9495V83.7639C475.29 83.83 475.246 83.8894 475.196 83.9422C475.146 83.995 475.088 84.0399 475.022 84.0769C474.958 84.1113 474.887 84.1377 474.808 84.1562C474.731 84.1746 474.645 84.1839 474.55 84.1839C474.394 84.1839 474.26 84.1509 474.146 84.0848C474.033 84.0188 473.939 83.9277 473.865 83.8115C473.791 83.6979 473.736 83.5645 473.699 83.4113C473.664 83.2555 473.647 83.0878 473.647 82.9082ZM479.605 85.0792C480.02 85.0792 480.379 84.9987 480.683 84.8376C480.987 84.6765 481.209 84.4969 481.349 84.2988L480.798 83.7045C480.671 83.8683 480.506 83.9911 480.303 84.073C480.099 84.1548 479.889 84.1958 479.673 84.1958C479.52 84.1958 479.378 84.172 479.249 84.1245C479.12 84.0769 479.005 84.0096 478.904 83.9224C478.807 83.8379 478.729 83.7441 478.671 83.6411C478.612 83.5355 478.565 83.3968 478.528 83.2251V83.2133H481.436V82.7458C481.436 82.4315 481.392 82.1449 481.305 81.8861C481.218 81.6246 481.091 81.4014 480.925 81.2165C480.756 81.0317 480.55 80.889 480.307 80.7887C480.066 80.6857 479.792 80.6342 479.483 80.6342C479.184 80.6342 478.908 80.6883 478.655 80.7966C478.401 80.9049 478.182 81.0568 477.997 81.2522C477.812 81.4476 477.668 81.6814 477.565 81.9534C477.462 82.2228 477.411 82.5213 477.411 82.8488V83.0072C477.411 83.2951 477.462 83.5659 477.565 83.8194C477.671 84.0703 477.82 84.2882 478.013 84.4731C478.206 84.6606 478.437 84.8085 478.706 84.9168C478.976 85.0251 479.275 85.0792 479.605 85.0792ZM479.475 81.5256C479.615 81.5256 479.738 81.548 479.843 81.5929C479.951 81.6352 480.043 81.6933 480.117 81.7672C480.191 81.8438 480.249 81.9336 480.291 82.0366C480.333 82.1396 480.354 82.2492 480.354 82.3654V82.4526H478.548C478.574 82.3126 478.614 82.1858 478.667 82.0723C478.719 81.9587 478.785 81.861 478.865 81.7791C478.941 81.6972 479.031 81.6352 479.134 81.5929C479.237 81.548 479.351 81.5256 479.475 81.5256ZM485.164 83.8234C485.164 83.8894 485.147 83.9501 485.112 84.0056C485.081 84.0611 485.032 84.1099 484.966 84.1522C484.897 84.1944 484.809 84.2288 484.7 84.2552C484.595 84.279 484.47 84.2908 484.328 84.2908C484.209 84.2908 484.093 84.279 483.979 84.2552C483.868 84.2314 483.769 84.1931 483.682 84.1403C483.595 84.0901 483.524 84.0241 483.468 83.9422C483.413 83.8577 483.381 83.7573 483.373 83.6411H482.323C482.323 83.8154 482.365 83.9898 482.45 84.1641C482.537 84.3357 482.664 84.4889 482.83 84.6236C482.997 84.761 483.203 84.8719 483.448 84.9564C483.697 85.0409 483.982 85.0832 484.304 85.0832C484.597 85.0832 484.863 85.0515 485.1 84.9881C485.338 84.9221 485.541 84.831 485.711 84.7148C485.877 84.5985 486.005 84.4612 486.095 84.3027C486.187 84.1416 486.233 83.966 486.233 83.7758C486.233 83.5698 486.187 83.3929 486.095 83.245C486.005 83.0944 485.88 82.9663 485.718 82.8607C485.557 82.7577 485.366 82.6731 485.144 82.6071C484.922 82.5411 484.682 82.4869 484.423 82.4447C484.243 82.4183 484.095 82.3879 483.979 82.3536C483.863 82.3166 483.772 82.2756 483.706 82.2307C483.637 82.1885 483.59 82.1409 483.563 82.0881C483.537 82.0327 483.524 81.9732 483.524 81.9098C483.524 81.8465 483.538 81.787 483.567 81.7316C483.599 81.6735 483.644 81.6233 483.702 81.581C483.765 81.5335 483.847 81.4965 483.948 81.4701C484.048 81.4437 484.165 81.4305 484.3 81.4305C484.459 81.4305 484.593 81.4503 484.704 81.4899C484.818 81.5295 484.908 81.5823 484.974 81.6484C485.021 81.6986 485.057 81.7553 485.081 81.8187C485.104 81.8795 485.116 81.9455 485.116 82.0168H486.218C486.218 81.8187 486.174 81.6352 486.087 81.4661C486 81.2971 485.874 81.1505 485.711 81.0264C485.544 80.9049 485.342 80.8098 485.104 80.7411C484.867 80.6698 484.599 80.6342 484.3 80.6342C484.015 80.6342 483.759 80.6698 483.532 80.7411C483.304 80.8124 483.112 80.9088 482.953 81.0303C482.795 81.1518 482.673 81.2931 482.589 81.4542C482.504 81.6154 482.462 81.7844 482.462 81.9613C482.462 82.1436 482.503 82.3047 482.585 82.4447C482.669 82.5847 482.785 82.7075 482.933 82.8131C483.081 82.9214 483.258 83.0138 483.464 83.0904C483.673 83.1644 483.903 83.2265 484.154 83.2766C484.352 83.3136 484.515 83.3506 484.645 83.3876C484.774 83.4245 484.879 83.4642 484.958 83.5064C485.034 83.5513 485.087 83.5989 485.116 83.649C485.148 83.6992 485.164 83.7573 485.164 83.8234ZM489.526 84.9128L489.53 84.0373H488.496V84.9643C488.496 85.2549 488.461 85.5031 488.393 85.7092C488.324 85.9178 488.239 86.1172 488.139 86.3074L488.721 86.6085C488.959 86.3972 489.152 86.137 489.3 85.828C489.45 85.519 489.526 85.2139 489.526 84.9128ZM499.814 85H500.813V80.7134H499.707V83.7204C499.673 83.789 499.632 83.8511 499.585 83.9066C499.537 83.962 499.483 84.0096 499.422 84.0492C499.351 84.0941 499.268 84.1284 499.173 84.1522C499.08 84.176 498.976 84.1878 498.86 84.1878C498.73 84.1878 498.621 84.172 498.531 84.1403C498.441 84.1086 498.368 84.0558 498.313 83.9818C498.257 83.9105 498.216 83.8154 498.19 83.6966C498.166 83.5777 498.154 83.4312 498.154 83.2568V80.7134H497.053V83.2489C497.053 83.5738 497.089 83.8524 497.16 84.0848C497.234 84.3146 497.337 84.5035 497.469 84.6514C497.601 84.8019 497.759 84.9115 497.944 84.9802C498.129 85.0489 498.333 85.0832 498.554 85.0832C498.797 85.0832 499.021 85.0224 499.224 84.901C499.43 84.7795 499.606 84.6117 499.751 84.3978L499.814 85ZM501.906 86.6481H503.007V84.6276C503.058 84.6831 503.11 84.7332 503.166 84.7781C503.221 84.823 503.28 84.864 503.34 84.901C503.443 84.9591 503.554 85.0026 503.673 85.0317C503.795 85.0634 503.927 85.0792 504.069 85.0792C504.339 85.0792 504.578 85.0238 504.786 84.9128C504.995 84.8019 505.171 84.6487 505.313 84.4533C505.453 84.2605 505.559 84.0307 505.63 83.7639C505.704 83.4972 505.741 83.208 505.741 82.8963V82.8131C505.741 82.4883 505.704 82.1924 505.63 81.9257C505.559 81.6563 505.452 81.4252 505.309 81.2324C505.167 81.0422 504.991 80.8956 504.782 80.7926C504.574 80.687 504.333 80.6342 504.061 80.6342C503.929 80.6342 503.805 80.6487 503.689 80.6777C503.575 80.7042 503.471 80.7425 503.376 80.7926C503.297 80.8349 503.223 80.8851 503.154 80.9432C503.085 80.9986 503.022 81.062 502.964 81.1333L502.924 80.7134H501.906V86.6481ZM504.64 82.8131V82.8963C504.64 83.0733 504.624 83.241 504.592 83.3995C504.56 83.5553 504.51 83.6926 504.442 83.8115C504.373 83.9303 504.283 84.0241 504.172 84.0928C504.064 84.1614 503.932 84.1958 503.776 84.1958C503.678 84.1958 503.59 84.1865 503.511 84.168C503.431 84.1469 503.361 84.1179 503.301 84.0809C503.237 84.0413 503.18 83.9937 503.13 83.9383C503.083 83.8828 503.042 83.8207 503.007 83.7521V81.9613C503.044 81.8874 503.088 81.8227 503.138 81.7672C503.191 81.7118 503.252 81.6655 503.32 81.6286C503.381 81.5969 503.449 81.5731 503.522 81.5573C503.596 81.5388 503.678 81.5295 503.768 81.5295C503.924 81.5295 504.056 81.5625 504.164 81.6286C504.275 81.6946 504.366 81.7844 504.438 81.898C504.506 82.0142 504.557 82.1515 504.588 82.31C504.623 82.4658 504.64 82.6335 504.64 82.8131ZM506.648 82.825V82.9082C506.648 83.2199 506.687 83.5091 506.763 83.7758C506.84 84.0399 506.951 84.2684 507.096 84.4612C507.239 84.654 507.413 84.8059 507.619 84.9168C507.828 85.0251 508.063 85.0792 508.324 85.0792C508.564 85.0792 508.776 85.033 508.958 84.9406C509.14 84.8481 509.299 84.7187 509.433 84.5523L509.489 85H510.483V78.9148H509.378V81.0977C509.246 80.9498 509.094 80.8362 508.922 80.757C508.753 80.6751 508.557 80.6342 508.332 80.6342C508.065 80.6342 507.828 80.687 507.619 80.7926C507.413 80.8983 507.237 81.0475 507.092 81.2403C506.947 81.4331 506.836 81.6642 506.759 81.9336C506.685 82.203 506.648 82.5001 506.648 82.825ZM507.75 82.9082V82.825C507.75 82.6454 507.766 82.4777 507.797 82.3219C507.829 82.1634 507.879 82.0247 507.948 81.9059C508.016 81.7897 508.105 81.6986 508.213 81.6325C508.324 81.5639 508.457 81.5295 508.613 81.5295C508.801 81.5295 508.957 81.5705 509.081 81.6523C509.205 81.7316 509.304 81.8438 509.378 81.9891V83.7243C509.304 83.8669 509.204 83.9792 509.077 84.0611C508.953 84.1429 508.796 84.1839 508.605 84.1839C508.45 84.1839 508.318 84.1509 508.209 84.0848C508.101 84.0188 508.012 83.9277 507.944 83.8115C507.875 83.6979 507.825 83.5645 507.793 83.4113C507.764 83.2555 507.75 83.0878 507.75 82.9082ZM514.314 85H515.431V84.9327C515.376 84.8244 515.334 84.6949 515.305 84.5444C515.276 84.3939 515.261 84.2037 515.261 83.9739V82.1357C515.261 81.8874 515.215 81.6695 515.122 81.482C515.03 81.2918 514.902 81.1347 514.738 81.0105C514.574 80.8864 514.38 80.7926 514.156 80.7292C513.934 80.6659 513.694 80.6342 513.435 80.6342C513.147 80.6342 512.891 80.6711 512.666 80.7451C512.444 80.8164 512.257 80.9141 512.104 81.0383C511.948 81.1624 511.829 81.3063 511.747 81.4701C511.668 81.6338 511.628 81.8068 511.628 81.9891H512.73C512.73 81.9125 512.74 81.8425 512.761 81.7791C512.785 81.7157 512.821 81.6616 512.868 81.6167C512.921 81.5665 512.99 81.5282 513.074 81.5018C513.159 81.4727 513.259 81.4582 513.375 81.4582C513.507 81.4582 513.622 81.4754 513.72 81.5097C513.82 81.5414 513.904 81.5876 513.97 81.6484C514.033 81.7065 514.081 81.7765 514.112 81.8583C514.144 81.9376 514.16 82.0274 514.16 82.1277V82.3813H513.546C513.229 82.3813 512.947 82.4103 512.702 82.4685C512.459 82.5239 512.254 82.6058 512.088 82.7141C511.903 82.8329 511.764 82.9848 511.672 83.1697C511.579 83.3519 511.533 83.5619 511.533 83.7996C511.533 83.9845 511.57 84.1562 511.644 84.3146C511.718 84.4704 511.821 84.6051 511.953 84.7187C512.085 84.8323 512.242 84.9208 512.425 84.9842C512.609 85.0475 512.811 85.0792 513.031 85.0792C513.165 85.0792 513.291 85.066 513.407 85.0396C513.523 85.0158 513.63 84.9815 513.728 84.9366C513.823 84.8944 513.91 84.8442 513.989 84.7861C514.069 84.728 514.139 84.6659 514.199 84.5999C514.213 84.6765 514.228 84.7491 514.247 84.8178C514.265 84.8864 514.288 84.9472 514.314 85ZM513.264 84.2275C513.161 84.2275 513.07 84.2156 512.991 84.1918C512.914 84.1654 512.85 84.1311 512.797 84.0888C512.744 84.0439 512.703 83.9898 512.674 83.9264C512.648 83.8603 512.634 83.789 512.634 83.7124C512.634 83.6147 512.653 83.5249 512.69 83.443C512.727 83.3585 512.784 83.2859 512.86 83.2251C512.937 83.167 513.036 83.1221 513.157 83.0904C513.279 83.0561 513.426 83.0389 513.597 83.0389H514.16V83.7758C514.128 83.8313 514.084 83.8868 514.029 83.9422C513.974 83.995 513.908 84.0426 513.831 84.0848C513.754 84.1271 513.668 84.1614 513.573 84.1878C513.478 84.2143 513.375 84.2275 513.264 84.2275ZM518.53 79.6635H517.428V80.7134H516.45V81.5256H517.428V83.4747C517.428 83.7573 517.465 84.0003 517.539 84.2037C517.613 84.4044 517.719 84.5695 517.856 84.6989C517.991 84.831 518.153 84.9287 518.343 84.9921C518.536 85.0528 518.75 85.0832 518.985 85.0832C519.107 85.0832 519.229 85.0766 519.354 85.0634C519.48 85.0528 519.602 85.037 519.718 85.0158C519.834 84.9947 519.944 84.9683 520.047 84.9366C520.15 84.9023 520.24 84.8627 520.316 84.8178L520.209 84.0611C520.159 84.0743 520.098 84.0875 520.027 84.1007C519.958 84.1139 519.884 84.1258 519.805 84.1363C519.723 84.1495 519.638 84.1601 519.548 84.168C519.461 84.176 519.375 84.1799 519.29 84.1799C519.174 84.1799 519.068 84.1667 518.973 84.1403C518.881 84.1139 518.802 84.069 518.736 84.0056C518.67 83.9449 518.618 83.863 518.581 83.76C518.547 83.6543 518.53 83.5236 518.53 83.3678V81.5256H520.13V80.7134H518.53V79.6635ZM523.462 85.0792C523.877 85.0792 524.236 84.9987 524.54 84.8376C524.843 84.6765 525.065 84.4969 525.205 84.2988L524.654 83.7045C524.528 83.8683 524.363 83.9911 524.159 84.073C523.956 84.1548 523.746 84.1958 523.529 84.1958C523.376 84.1958 523.235 84.172 523.105 84.1245C522.976 84.0769 522.861 84.0096 522.761 83.9224C522.663 83.8379 522.585 83.7441 522.527 83.6411C522.469 83.5355 522.421 83.3968 522.384 83.2251V83.2133H525.292V82.7458C525.292 82.4315 525.249 82.1449 525.161 81.8861C525.074 81.6246 524.948 81.4014 524.781 81.2165C524.612 81.0317 524.406 80.889 524.163 80.7887C523.923 80.6857 523.648 80.6342 523.339 80.6342C523.041 80.6342 522.765 80.6883 522.511 80.7966C522.258 80.9049 522.038 81.0568 521.853 81.2522C521.669 81.4476 521.525 81.6814 521.422 81.9534C521.319 82.2228 521.267 82.5213 521.267 82.8488V83.0072C521.267 83.2951 521.319 83.5659 521.422 83.8194C521.527 84.0703 521.676 84.2882 521.869 84.4731C522.062 84.6606 522.293 84.8085 522.563 84.9168C522.832 85.0251 523.132 85.0792 523.462 85.0792ZM523.331 81.5256C523.471 81.5256 523.594 81.548 523.7 81.5929C523.808 81.6352 523.899 81.6933 523.973 81.7672C524.047 81.8438 524.105 81.9336 524.147 82.0366C524.19 82.1396 524.211 82.2492 524.211 82.3654V82.4526H522.404C522.431 82.3126 522.47 82.1858 522.523 82.0723C522.576 81.9587 522.642 81.861 522.721 81.7791C522.798 81.6972 522.887 81.6352 522.99 81.5929C523.093 81.548 523.207 81.5256 523.331 81.5256Z\"\n      fill=\"white\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_5_234\"\n        x1=\"201.788\"\n        y1=\"132.405\"\n        x2=\"296.293\"\n        y2=\"126.63\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M0 19C0 8.50659 8.50659 0 19 0H607C617.493 0 626 8.50659 626 19V283C626 293.493 617.493 302 607 302H19C8.5066 302 0 293.493 0 283V19Z\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"174\"\n      cy=\"87.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"215\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"133\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"89\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"177\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173 88L88 233.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173.5 89L216 159\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M132 158L179 234\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M88.1167 232.468H90.6802C90.6802 232.194 90.687 231.962 90.7007 231.771C90.7144 231.572 90.7485 231.391 90.8032 231.227C90.8511 231.063 90.9331 230.902 91.0493 230.745C91.1655 230.588 91.3262 230.407 91.5312 230.202C91.8662 229.908 92.1978 229.607 92.5259 229.299C92.8608 228.985 93.1582 228.653 93.418 228.305C93.6777 227.963 93.8896 227.594 94.0537 227.197C94.2178 226.794 94.2998 226.35 94.2998 225.864C94.2998 225.208 94.1904 224.63 93.9717 224.131C93.7529 223.632 93.4385 223.212 93.0283 222.87C92.6113 222.535 92.1021 222.282 91.5005 222.111C90.8989 221.94 90.2188 221.855 89.46 221.855C88.7832 221.855 88.1543 221.94 87.5732 222.111C86.9922 222.275 86.4863 222.528 86.0557 222.87C85.625 223.212 85.2832 223.643 85.0303 224.162C84.7773 224.675 84.6475 225.28 84.6406 225.977H87.5015C87.5083 225.663 87.5664 225.393 87.6758 225.167C87.792 224.941 87.9424 224.757 88.127 224.613C88.3047 224.47 88.5098 224.367 88.7422 224.306C88.9746 224.237 89.2139 224.203 89.46 224.203C89.7744 224.203 90.0513 224.237 90.2905 224.306C90.5366 224.374 90.7451 224.477 90.916 224.613C91.0801 224.764 91.2065 224.955 91.2954 225.188C91.3843 225.413 91.4287 225.683 91.4287 225.998C91.4287 226.257 91.3706 226.517 91.2544 226.777C91.1382 227.037 90.9878 227.29 90.8032 227.536C90.6118 227.789 90.3999 228.035 90.1675 228.274C89.9351 228.506 89.7026 228.729 89.4702 228.94C89.1489 229.193 88.8994 229.433 88.7217 229.658C88.5439 229.877 88.4106 230.116 88.3218 230.376C88.2329 230.643 88.1748 230.94 88.1475 231.268C88.127 231.596 88.1167 231.996 88.1167 232.468ZM87.6963 235.575C87.6963 236.012 87.8433 236.381 88.1372 236.682C88.4312 236.976 88.8379 237.123 89.3574 237.123C89.8633 237.123 90.2666 236.976 90.5674 236.682C90.875 236.381 91.0288 236.012 91.0288 235.575C91.0288 235.124 90.875 234.748 90.5674 234.447C90.2666 234.139 89.8633 233.985 89.3574 233.985C88.8379 233.985 88.4312 234.139 88.1372 234.447C87.8433 234.748 87.6963 235.124 87.6963 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M175.117 232.468H177.68C177.68 232.194 177.687 231.962 177.701 231.771C177.714 231.572 177.749 231.391 177.803 231.227C177.851 231.063 177.933 230.902 178.049 230.745C178.166 230.588 178.326 230.407 178.531 230.202C178.866 229.908 179.198 229.607 179.526 229.299C179.861 228.985 180.158 228.653 180.418 228.305C180.678 227.963 180.89 227.594 181.054 227.197C181.218 226.794 181.3 226.35 181.3 225.864C181.3 225.208 181.19 224.63 180.972 224.131C180.753 223.632 180.438 223.212 180.028 222.87C179.611 222.535 179.102 222.282 178.5 222.111C177.899 221.94 177.219 221.855 176.46 221.855C175.783 221.855 175.154 221.94 174.573 222.111C173.992 222.275 173.486 222.528 173.056 222.87C172.625 223.212 172.283 223.643 172.03 224.162C171.777 224.675 171.647 225.28 171.641 225.977H174.501C174.508 225.663 174.566 225.393 174.676 225.167C174.792 224.941 174.942 224.757 175.127 224.613C175.305 224.47 175.51 224.367 175.742 224.306C175.975 224.237 176.214 224.203 176.46 224.203C176.774 224.203 177.051 224.237 177.291 224.306C177.537 224.374 177.745 224.477 177.916 224.613C178.08 224.764 178.207 224.955 178.295 225.188C178.384 225.413 178.429 225.683 178.429 225.998C178.429 226.257 178.371 226.517 178.254 226.777C178.138 227.037 177.988 227.29 177.803 227.536C177.612 227.789 177.4 228.035 177.167 228.274C176.935 228.506 176.703 228.729 176.47 228.94C176.149 229.193 175.899 229.433 175.722 229.658C175.544 229.877 175.411 230.116 175.322 230.376C175.233 230.643 175.175 230.94 175.147 231.268C175.127 231.596 175.117 231.996 175.117 232.468ZM174.696 235.575C174.696 236.012 174.843 236.381 175.137 236.682C175.431 236.976 175.838 237.123 176.357 237.123C176.863 237.123 177.267 236.976 177.567 236.682C177.875 236.381 178.029 236.012 178.029 235.575C178.029 235.124 177.875 234.748 177.567 234.447C177.267 234.139 176.863 233.985 176.357 233.985C175.838 233.985 175.431 234.139 175.137 234.447C174.843 234.748 174.696 235.124 174.696 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M430.713 54.0566V53.1367H427.15V50.3945H431.252V49.4688H426.066V58H431.305V57.0801H427.15V54.0566H430.713ZM433.021 54.7773V54.9004C433.021 55.3535 433.082 55.7773 433.203 56.1719C433.324 56.5625 433.494 56.9023 433.713 57.1914C433.932 57.4805 434.195 57.707 434.504 57.8711C434.816 58.0352 435.164 58.1172 435.547 58.1172C435.938 58.1172 436.279 58.0508 436.572 57.918C436.865 57.7852 437.117 57.5898 437.328 57.332L437.375 58H438.371V49H437.287V52.2871C437.08 52.0449 436.834 51.8613 436.549 51.7363C436.268 51.6074 435.938 51.543 435.559 51.543C435.172 51.543 434.822 51.623 434.51 51.7832C434.197 51.9434 433.932 52.166 433.713 52.4512C433.49 52.7363 433.318 53.0781 433.197 53.4766C433.08 53.8711 433.021 54.3047 433.021 54.7773ZM434.105 54.9004V54.7773C434.105 54.4688 434.139 54.1758 434.205 53.8984C434.271 53.6172 434.375 53.3691 434.516 53.1543C434.652 52.9434 434.828 52.7754 435.043 52.6504C435.262 52.5254 435.523 52.4629 435.828 52.4629C436.184 52.4629 436.48 52.5469 436.719 52.7148C436.957 52.8789 437.146 53.0898 437.287 53.3477V56.2891C437.146 56.5664 436.957 56.7871 436.719 56.9512C436.48 57.1152 436.18 57.1973 435.816 57.1973C435.516 57.1973 435.258 57.1367 435.043 57.0156C434.828 56.8906 434.652 56.7227 434.516 56.5117C434.375 56.3008 434.271 56.0566 434.205 55.7793C434.139 55.502 434.105 55.209 434.105 54.9004ZM440.604 51.6602V52.6035H442.76V57.0625H440.604V58H445.912V57.0625H443.844V51.6602H440.604ZM442.619 49.9961C442.619 50.1719 442.672 50.3184 442.777 50.4355C442.887 50.5527 443.051 50.6113 443.27 50.6113C443.484 50.6113 443.646 50.5527 443.756 50.4355C443.865 50.3184 443.92 50.1719 443.92 49.9961C443.92 49.8984 443.904 49.8086 443.873 49.7266C443.842 49.6445 443.795 49.5762 443.732 49.5215C443.682 49.4707 443.617 49.4316 443.539 49.4043C443.461 49.373 443.371 49.3574 443.27 49.3574C443.168 49.3574 443.076 49.373 442.994 49.4043C442.916 49.4316 442.852 49.4707 442.801 49.5215C442.738 49.5801 442.691 49.6504 442.66 49.7324C442.633 49.8145 442.619 49.9023 442.619 49.9961ZM450.207 50.125H449.117V51.6602H447.453V52.498H449.117V55.9434C449.117 56.334 449.168 56.668 449.27 56.9453C449.375 57.2188 449.518 57.4414 449.697 57.6133C449.877 57.7891 450.088 57.918 450.33 58C450.576 58.0781 450.84 58.1172 451.121 58.1172C451.289 58.1172 451.457 58.1094 451.625 58.0938C451.797 58.0781 451.959 58.0547 452.111 58.0234C452.264 57.9961 452.404 57.9629 452.533 57.9238C452.662 57.8809 452.771 57.832 452.861 57.7773L452.709 57.0098C452.643 57.0254 452.557 57.0449 452.451 57.0684C452.35 57.0879 452.24 57.1074 452.123 57.127C452.002 57.1465 451.879 57.1641 451.754 57.1797C451.629 57.1914 451.508 57.1973 451.391 57.1973C451.23 57.1973 451.078 57.1777 450.934 57.1387C450.793 57.0996 450.668 57.0312 450.559 56.9336C450.449 56.8398 450.363 56.7129 450.301 56.5527C450.238 56.3926 450.207 56.1895 450.207 55.9434V52.498H452.621V51.6602H450.207V50.125ZM463.244 49.4688H461.902V58H462.957V54.5957L462.869 51.1562L464.316 55.627H464.938L466.514 51.0332L466.426 54.5957V58H467.48V49.4688H466.133L464.633 53.7344L463.244 49.4688ZM473.428 58H474.559V57.9062C474.488 57.7305 474.434 57.5254 474.395 57.291C474.355 57.0527 474.336 56.8281 474.336 56.6172V53.6699C474.336 53.3145 474.271 53.0039 474.143 52.7383C474.014 52.4727 473.838 52.25 473.615 52.0703C473.389 51.8945 473.121 51.7637 472.812 51.6777C472.504 51.5879 472.17 51.543 471.811 51.543C471.416 51.543 471.062 51.5977 470.75 51.707C470.441 51.8164 470.18 51.959 469.965 52.1348C469.746 52.3145 469.578 52.5156 469.461 52.7383C469.348 52.9609 469.289 53.1875 469.285 53.418H470.375C470.375 53.2852 470.406 53.1582 470.469 53.0371C470.535 52.9121 470.627 52.8047 470.744 52.7148C470.861 52.625 471.004 52.5527 471.172 52.498C471.344 52.4434 471.537 52.416 471.752 52.416C471.982 52.416 472.189 52.4453 472.373 52.5039C472.561 52.5625 472.719 52.6445 472.848 52.75C472.977 52.8594 473.076 52.9902 473.146 53.1426C473.217 53.2949 473.252 53.4668 473.252 53.6582V54.1562H472.068C471.627 54.1562 471.227 54.1992 470.867 54.2852C470.512 54.3711 470.207 54.5 469.953 54.6719C469.699 54.8477 469.502 55.0664 469.361 55.3281C469.225 55.5898 469.156 55.8945 469.156 56.2422C469.156 56.5078 469.207 56.7559 469.309 56.9863C469.414 57.2129 469.562 57.4082 469.754 57.5723C469.941 57.7402 470.17 57.873 470.439 57.9707C470.713 58.0684 471.018 58.1172 471.354 58.1172C471.561 58.1172 471.756 58.0957 471.939 58.0527C472.123 58.0098 472.297 57.9512 472.461 57.877C472.621 57.8027 472.768 57.7168 472.9 57.6191C473.037 57.5215 473.16 57.418 473.27 57.3086C473.281 57.4414 473.299 57.5703 473.322 57.6953C473.35 57.8164 473.385 57.918 473.428 58ZM471.512 57.1738C471.301 57.1738 471.115 57.1465 470.955 57.0918C470.795 57.0371 470.662 56.9609 470.557 56.8633C470.451 56.7695 470.371 56.6562 470.316 56.5234C470.266 56.3906 470.24 56.2461 470.24 56.0898C470.24 55.9258 470.27 55.7793 470.328 55.6504C470.391 55.5215 470.48 55.4102 470.598 55.3164C470.762 55.1836 470.982 55.0859 471.26 55.0234C471.541 54.957 471.869 54.9238 472.244 54.9238H473.252V56.207C473.189 56.332 473.104 56.4531 472.994 56.5703C472.885 56.6836 472.756 56.7852 472.607 56.875C472.455 56.9648 472.287 57.0371 472.104 57.0918C471.92 57.1465 471.723 57.1738 471.512 57.1738ZM476.463 60.4375H477.547V57.3906C477.625 57.4766 477.709 57.5566 477.799 57.6309C477.889 57.7012 477.984 57.7656 478.086 57.8242C478.254 57.918 478.441 57.9902 478.648 58.041C478.859 58.0918 479.086 58.1172 479.328 58.1172C479.727 58.1172 480.08 58.0352 480.389 57.8711C480.701 57.707 480.963 57.4805 481.174 57.1914C481.385 56.9023 481.545 56.5625 481.654 56.1719C481.764 55.7773 481.818 55.3535 481.818 54.9004V54.7773C481.818 54.3047 481.764 53.8711 481.654 53.4766C481.545 53.0781 481.385 52.7363 481.174 52.4512C480.963 52.166 480.701 51.9434 480.389 51.7832C480.076 51.623 479.717 51.543 479.311 51.543C479.08 51.543 478.863 51.5684 478.66 51.6191C478.461 51.666 478.279 51.7363 478.115 51.8301C477.998 51.8926 477.889 51.9688 477.787 52.0586C477.686 52.1445 477.592 52.2422 477.506 52.3516L477.453 51.6602H476.463V60.4375ZM480.734 54.7773V54.9004C480.734 55.209 480.699 55.5039 480.629 55.7852C480.562 56.0664 480.459 56.3145 480.318 56.5293C480.178 56.7441 479.998 56.916 479.779 57.0449C479.561 57.1699 479.301 57.2324 479 57.2324C478.812 57.2324 478.641 57.209 478.484 57.1621C478.332 57.1152 478.193 57.0508 478.068 56.9688C477.959 56.8984 477.861 56.8125 477.775 56.7109C477.689 56.6094 477.613 56.5 477.547 56.3828V53.3301C477.621 53.1973 477.707 53.0762 477.805 52.9668C477.902 52.8574 478.014 52.7656 478.139 52.6914C478.252 52.6172 478.379 52.5605 478.52 52.5215C478.664 52.4824 478.82 52.4629 478.988 52.4629C479.293 52.4629 479.555 52.5254 479.773 52.6504C479.992 52.7754 480.174 52.9434 480.318 53.1543C480.459 53.3691 480.562 53.6172 480.629 53.8984C480.699 54.1758 480.734 54.4688 480.734 54.7773ZM483.67 60.4375H484.754V57.3906C484.832 57.4766 484.916 57.5566 485.006 57.6309C485.096 57.7012 485.191 57.7656 485.293 57.8242C485.461 57.918 485.648 57.9902 485.855 58.041C486.066 58.0918 486.293 58.1172 486.535 58.1172C486.934 58.1172 487.287 58.0352 487.596 57.8711C487.908 57.707 488.17 57.4805 488.381 57.1914C488.592 56.9023 488.752 56.5625 488.861 56.1719C488.971 55.7773 489.025 55.3535 489.025 54.9004V54.7773C489.025 54.3047 488.971 53.8711 488.861 53.4766C488.752 53.0781 488.592 52.7363 488.381 52.4512C488.17 52.166 487.908 51.9434 487.596 51.7832C487.283 51.623 486.924 51.543 486.518 51.543C486.287 51.543 486.07 51.5684 485.867 51.6191C485.668 51.666 485.486 51.7363 485.322 51.8301C485.205 51.8926 485.096 51.9688 484.994 52.0586C484.893 52.1445 484.799 52.2422 484.713 52.3516L484.66 51.6602H483.67V60.4375ZM487.941 54.7773V54.9004C487.941 55.209 487.906 55.5039 487.836 55.7852C487.77 56.0664 487.666 56.3145 487.525 56.5293C487.385 56.7441 487.205 56.916 486.986 57.0449C486.768 57.1699 486.508 57.2324 486.207 57.2324C486.02 57.2324 485.848 57.209 485.691 57.1621C485.539 57.1152 485.4 57.0508 485.275 56.9688C485.166 56.8984 485.068 56.8125 484.982 56.7109C484.896 56.6094 484.82 56.5 484.754 56.3828V53.3301C484.828 53.1973 484.914 53.0762 485.012 52.9668C485.109 52.8574 485.221 52.7656 485.346 52.6914C485.459 52.6172 485.586 52.5605 485.727 52.5215C485.871 52.4824 486.027 52.4629 486.195 52.4629C486.5 52.4629 486.762 52.5254 486.98 52.6504C487.199 52.7754 487.381 52.9434 487.525 53.1543C487.666 53.3691 487.77 53.6172 487.836 53.8984C487.906 54.1758 487.941 54.4688 487.941 54.7773ZM491.053 51.6602V52.6035H493.209V57.0625H491.053V58H496.361V57.0625H494.293V51.6602H491.053ZM493.068 49.9961C493.068 50.1719 493.121 50.3184 493.227 50.4355C493.336 50.5527 493.5 50.6113 493.719 50.6113C493.934 50.6113 494.096 50.5527 494.205 50.4355C494.314 50.3184 494.369 50.1719 494.369 49.9961C494.369 49.8984 494.354 49.8086 494.322 49.7266C494.291 49.6445 494.244 49.5762 494.182 49.5215C494.131 49.4707 494.066 49.4316 493.988 49.4043C493.91 49.373 493.82 49.3574 493.719 49.3574C493.617 49.3574 493.525 49.373 493.443 49.4043C493.365 49.4316 493.301 49.4707 493.25 49.5215C493.188 49.5801 493.141 49.6504 493.109 49.7324C493.082 49.8145 493.068 49.9023 493.068 49.9961ZM498.09 58H499.174V53.4531C499.248 53.3164 499.334 53.1914 499.432 53.0781C499.533 52.9648 499.643 52.8652 499.76 52.7793C499.904 52.6816 500.062 52.6055 500.234 52.5508C500.406 52.4922 500.592 52.4629 500.791 52.4629C501.021 52.4629 501.225 52.4902 501.4 52.5449C501.58 52.5996 501.732 52.6875 501.857 52.8086C501.979 52.9297 502.07 53.0879 502.133 53.2832C502.195 53.4785 502.227 53.7168 502.227 53.998V58H503.311V53.9746C503.311 53.5527 503.258 53.1895 503.152 52.8848C503.051 52.5762 502.904 52.3223 502.713 52.123C502.521 51.9238 502.289 51.7773 502.016 51.6836C501.746 51.5898 501.445 51.543 501.113 51.543C500.867 51.5469 500.633 51.584 500.41 51.6543C500.191 51.7207 499.988 51.8164 499.801 51.9414C499.676 52.0234 499.557 52.1211 499.443 52.2344C499.334 52.3438 499.232 52.4648 499.139 52.5977L499.062 51.6602H498.09V58ZM505.098 54.7773V54.9004C505.098 55.3535 505.156 55.7773 505.273 56.1719C505.391 56.5625 505.559 56.9023 505.777 57.1914C505.992 57.4805 506.256 57.707 506.568 57.8711C506.881 58.0352 507.23 58.1172 507.617 58.1172C507.848 58.1172 508.062 58.0918 508.262 58.041C508.461 57.9941 508.643 57.9258 508.807 57.8359C508.912 57.7773 509.01 57.709 509.1 57.6309C509.193 57.5527 509.281 57.4668 509.363 57.373V57.918C509.363 58.1914 509.324 58.4336 509.246 58.6445C509.168 58.8555 509.057 59.0312 508.912 59.1719C508.764 59.3164 508.586 59.4258 508.379 59.5C508.172 59.5742 507.939 59.6113 507.682 59.6113C507.537 59.6113 507.393 59.5957 507.248 59.5645C507.104 59.5371 506.959 59.4902 506.814 59.4238C506.67 59.3574 506.527 59.2676 506.387 59.1543C506.246 59.0449 506.109 58.9102 505.977 58.75L505.414 59.4004C505.559 59.6074 505.73 59.7812 505.93 59.9219C506.133 60.0625 506.344 60.1738 506.562 60.2559C506.777 60.3418 506.99 60.4023 507.201 60.4375C507.412 60.4766 507.6 60.4961 507.764 60.4961C508.162 60.4961 508.525 60.4375 508.854 60.3203C509.182 60.2031 509.465 60.0312 509.703 59.8047C509.938 59.5781 510.119 59.3027 510.248 58.9785C510.381 58.6543 510.447 58.2832 510.447 57.8652V51.6602H509.463L509.41 52.3516C509.336 52.2578 509.256 52.1719 509.17 52.0938C509.088 52.0156 509 51.9473 508.906 51.8887C508.734 51.7754 508.541 51.6895 508.326 51.6309C508.115 51.5723 507.883 51.543 507.629 51.543C507.234 51.543 506.881 51.623 506.568 51.7832C506.256 51.9434 505.99 52.166 505.771 52.4512C505.553 52.7363 505.385 53.0781 505.268 53.4766C505.154 53.8711 505.098 54.3047 505.098 54.7773ZM506.182 54.9004V54.7773C506.182 54.4688 506.213 54.1758 506.275 53.8984C506.342 53.6172 506.445 53.3691 506.586 53.1543C506.723 52.9434 506.898 52.7754 507.113 52.6504C507.332 52.5254 507.594 52.4629 507.898 52.4629C508.078 52.4629 508.242 52.4863 508.391 52.5332C508.539 52.5762 508.674 52.6367 508.795 52.7148C508.916 52.7969 509.023 52.8926 509.117 53.002C509.211 53.1113 509.293 53.2324 509.363 53.3652V56.2715C509.293 56.4082 509.211 56.5332 509.117 56.6465C509.023 56.7598 508.918 56.8574 508.801 56.9395C508.68 57.0215 508.543 57.0859 508.391 57.1328C508.242 57.1758 508.074 57.1973 507.887 57.1973C507.586 57.1973 507.328 57.1367 507.113 57.0156C506.898 56.8906 506.723 56.7227 506.586 56.5117C506.445 56.3008 506.342 56.0566 506.275 55.7793C506.213 55.502 506.182 55.209 506.182 54.9004Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M425 59.1719H511.479V59.7578H425V59.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M86.7754 46.7871L86.8779 46.2256C86.6761 46.2191 86.5085 46.1637 86.375 46.0596C86.2448 45.9554 86.1406 45.8219 86.0625 45.6592C85.9811 45.4997 85.9242 45.319 85.8916 45.1172C85.859 44.9186 85.8428 44.7184 85.8428 44.5166V43.6914C85.8395 43.304 85.7484 42.9639 85.5693 42.6709C85.3903 42.3747 85.112 42.1517 84.7344 42.002C85.112 41.849 85.3903 41.626 85.5693 41.333C85.7516 41.0368 85.8428 40.6934 85.8428 40.3027V39.4727C85.8428 39.2741 85.8525 39.0739 85.8721 38.8721C85.8916 38.6702 85.9372 38.488 86.0088 38.3252C86.0771 38.1657 86.1797 38.0339 86.3164 37.9297C86.4564 37.8255 86.6436 37.7702 86.8779 37.7637L86.7754 37.2021C86.4466 37.2119 86.1667 37.2835 85.9355 37.417C85.7044 37.5472 85.5173 37.7165 85.374 37.9248C85.221 38.1429 85.1087 38.3903 85.0371 38.667C84.9688 38.9404 84.9346 39.209 84.9346 39.4727V40.3027C84.9346 40.7747 84.8223 41.1165 84.5977 41.3281C84.3763 41.5365 84.0361 41.6406 83.5771 41.6406V42.3486C84.0361 42.3519 84.3763 42.4593 84.5977 42.6709C84.8223 42.8825 84.9346 43.2227 84.9346 43.6914V44.5166C84.9346 44.777 84.972 45.0391 85.0469 45.3027C85.1217 45.5697 85.2324 45.8105 85.3789 46.0254C85.5319 46.25 85.724 46.4307 85.9551 46.5674C86.1862 46.7041 86.4596 46.7773 86.7754 46.7871ZM94.8613 45H95.7646V41.2109C95.8265 41.097 95.8981 40.9928 95.9795 40.8984C96.0641 40.804 96.1553 40.721 96.2529 40.6494C96.3734 40.568 96.5052 40.5046 96.6484 40.459C96.7917 40.4102 96.9463 40.3857 97.1123 40.3857C97.3044 40.3857 97.4736 40.4085 97.6201 40.4541C97.7699 40.4997 97.8968 40.5729 98.001 40.6738C98.1019 40.7747 98.1784 40.9066 98.2305 41.0693C98.2826 41.2321 98.3086 41.4307 98.3086 41.665V45H99.2119V41.6455C99.2119 41.2939 99.168 40.9912 99.0801 40.7373C98.9954 40.4801 98.8734 40.2686 98.7139 40.1025C98.5544 39.9365 98.3607 39.8145 98.1328 39.7363C97.9082 39.6582 97.6576 39.6191 97.3809 39.6191C97.1758 39.6224 96.9805 39.6533 96.7949 39.7119C96.6126 39.7673 96.4434 39.847 96.2871 39.9512C96.1829 40.0195 96.0837 40.1009 95.9893 40.1953C95.8981 40.2865 95.8135 40.3874 95.7354 40.498L95.6719 39.7168H94.8613V45ZM100.613 42.3096V42.417C100.613 42.7979 100.669 43.151 100.779 43.4766C100.89 43.8021 101.049 44.0853 101.258 44.3262C101.463 44.5671 101.714 44.7559 102.01 44.8926C102.309 45.0293 102.646 45.0977 103.021 45.0977C103.392 45.0977 103.725 45.0293 104.021 44.8926C104.318 44.7559 104.57 44.5671 104.778 44.3262C104.983 44.0853 105.141 43.8021 105.252 43.4766C105.363 43.151 105.418 42.7979 105.418 42.417V42.3096C105.418 41.9287 105.363 41.5755 105.252 41.25C105.141 40.9212 104.983 40.6364 104.778 40.3955C104.57 40.1546 104.316 39.9658 104.017 39.8291C103.72 39.6891 103.385 39.6191 103.011 39.6191C102.64 39.6191 102.306 39.6891 102.01 39.8291C101.714 39.9658 101.463 40.1546 101.258 40.3955C101.049 40.6364 100.89 40.9212 100.779 41.25C100.669 41.5755 100.613 41.9287 100.613 42.3096ZM101.517 42.417V42.3096C101.517 42.0524 101.548 41.8066 101.609 41.5723C101.671 41.3346 101.766 41.1263 101.893 40.9473C102.016 40.7682 102.171 40.6266 102.356 40.5225C102.542 40.415 102.76 40.3613 103.011 40.3613C103.261 40.3613 103.479 40.415 103.665 40.5225C103.854 40.6266 104.012 40.7682 104.139 40.9473C104.262 41.1263 104.355 41.3346 104.417 41.5723C104.482 41.8066 104.515 42.0524 104.515 42.3096V42.417C104.515 42.6774 104.484 42.9264 104.422 43.1641C104.36 43.3984 104.267 43.6051 104.144 43.7842C104.017 43.9632 103.859 44.1048 103.67 44.209C103.484 44.3132 103.268 44.3652 103.021 44.3652C102.77 44.3652 102.55 44.3132 102.361 44.209C102.173 44.1048 102.016 43.9632 101.893 43.7842C101.766 43.6051 101.671 43.3984 101.609 43.1641C101.548 42.9264 101.517 42.6774 101.517 42.417ZM106.702 42.3145V42.417C106.702 42.7946 106.753 43.1478 106.854 43.4766C106.954 43.8021 107.096 44.0853 107.278 44.3262C107.461 44.5671 107.68 44.7559 107.938 44.8926C108.198 45.0293 108.488 45.0977 108.807 45.0977C109.132 45.0977 109.417 45.0423 109.661 44.9316C109.905 44.821 110.115 44.6582 110.291 44.4434L110.33 45H111.16V37.5H110.257V40.2393C110.084 40.0374 109.879 39.8844 109.642 39.7803C109.407 39.6729 109.132 39.6191 108.816 39.6191C108.494 39.6191 108.203 39.6859 107.942 39.8193C107.682 39.9528 107.461 40.1383 107.278 40.376C107.093 40.6136 106.95 40.8984 106.849 41.2305C106.751 41.5592 106.702 41.9206 106.702 42.3145ZM107.605 42.417V42.3145C107.605 42.0573 107.633 41.8132 107.688 41.582C107.744 41.3477 107.83 41.141 107.947 40.9619C108.061 40.7861 108.208 40.6462 108.387 40.542C108.569 40.4378 108.787 40.3857 109.041 40.3857C109.337 40.3857 109.585 40.4557 109.783 40.5957C109.982 40.7324 110.14 40.9082 110.257 41.123V43.5742C110.14 43.8053 109.982 43.9893 109.783 44.126C109.585 44.2627 109.334 44.3311 109.031 44.3311C108.781 44.3311 108.566 44.2806 108.387 44.1797C108.208 44.0755 108.061 43.9355 107.947 43.7598C107.83 43.584 107.744 43.3805 107.688 43.1494C107.633 42.9183 107.605 42.6742 107.605 42.417ZM115.213 45.0977C115.727 45.0977 116.159 44.9951 116.507 44.79C116.858 44.5817 117.122 44.3441 117.298 44.0771L116.746 43.6475C116.58 43.8623 116.372 44.0348 116.121 44.165C115.87 44.2952 115.584 44.3604 115.262 44.3604C115.018 44.3604 114.795 44.3148 114.593 44.2236C114.391 44.1325 114.218 44.0072 114.075 43.8477C113.935 43.6979 113.825 43.5254 113.743 43.3301C113.665 43.1348 113.615 42.9085 113.592 42.6514V42.6172H117.366V42.2119C117.366 41.8441 117.319 41.5023 117.225 41.1865C117.133 40.8708 116.993 40.5957 116.805 40.3613C116.616 40.1302 116.378 39.9495 116.092 39.8193C115.809 39.6859 115.477 39.6191 115.096 39.6191C114.793 39.6191 114.497 39.681 114.207 39.8047C113.921 39.9284 113.665 40.1058 113.44 40.3369C113.213 40.5713 113.03 40.8577 112.894 41.1963C112.757 41.5316 112.688 41.9124 112.688 42.3389V42.5439C112.688 42.9118 112.75 43.252 112.874 43.5645C112.998 43.877 113.17 44.1471 113.392 44.375C113.613 44.6029 113.878 44.7803 114.188 44.9072C114.5 45.0342 114.842 45.0977 115.213 45.0977ZM115.096 40.3613C115.327 40.3613 115.525 40.4036 115.691 40.4883C115.861 40.5729 116.001 40.6836 116.111 40.8203C116.222 40.957 116.308 41.1198 116.37 41.3086C116.432 41.4941 116.463 41.6683 116.463 41.8311V41.875H113.621C113.657 41.6309 113.719 41.416 113.807 41.2305C113.898 41.0417 114.008 40.8822 114.139 40.752C114.269 40.625 114.415 40.529 114.578 40.4639C114.741 40.3955 114.913 40.3613 115.096 40.3613ZM121.814 45V37.8906H121.741L119.051 38.9258V39.751L120.911 39.043V45H121.814ZM126.707 44.4141C126.707 44.6029 126.766 44.764 126.883 44.8975C127.003 45.0277 127.181 45.0928 127.415 45.0928C127.646 45.0928 127.824 45.0277 127.947 44.8975C128.071 44.7673 128.133 44.6061 128.133 44.4141C128.133 44.2188 128.071 44.0544 127.947 43.9209C127.827 43.7842 127.649 43.7158 127.415 43.7158C127.177 43.7158 127 43.7842 126.883 43.9209C126.766 44.0576 126.707 44.222 126.707 44.4141ZM126.707 40.1367C126.707 40.3255 126.766 40.4867 126.883 40.6201C127.003 40.7503 127.181 40.8154 127.415 40.8154C127.646 40.8154 127.824 40.7503 127.947 40.6201C128.071 40.4899 128.133 40.3288 128.133 40.1367C128.133 39.9414 128.071 39.777 127.947 39.6436C127.827 39.5068 127.649 39.4385 127.415 39.4385C127.177 39.4385 127 39.5068 126.883 39.6436C126.766 39.7803 126.707 39.9447 126.707 40.1367ZM138.548 42.998H139.451C139.451 42.8711 139.454 42.7588 139.461 42.6611C139.467 42.5602 139.484 42.4658 139.51 42.3779C139.536 42.29 139.575 42.2038 139.627 42.1191C139.682 42.0345 139.759 41.945 139.856 41.8506C140.009 41.7139 140.164 41.5658 140.32 41.4062C140.48 41.2467 140.623 41.0742 140.75 40.8887C140.877 40.7064 140.981 40.5127 141.062 40.3076C141.144 40.0993 141.185 39.8779 141.185 39.6436C141.185 39.3506 141.137 39.0902 141.043 38.8623C140.949 38.6344 140.812 38.4408 140.633 38.2812C140.454 38.1217 140.234 38.0013 139.974 37.9199C139.716 37.8353 139.424 37.793 139.095 37.793C138.799 37.793 138.522 37.8337 138.265 37.915C138.011 37.9932 137.791 38.1071 137.605 38.2568C137.417 38.4098 137.267 38.5954 137.156 38.8135C137.046 39.0316 136.989 39.2773 136.985 39.5508H137.889C137.889 39.3815 137.923 39.2367 137.991 39.1162C138.06 38.9925 138.151 38.89 138.265 38.8086C138.375 38.7305 138.502 38.6735 138.646 38.6377C138.792 38.5986 138.942 38.5791 139.095 38.5791C139.293 38.5791 139.469 38.6051 139.622 38.6572C139.775 38.7093 139.902 38.7858 140.003 38.8867C140.094 38.9779 140.162 39.0902 140.208 39.2236C140.257 39.3538 140.281 39.5036 140.281 39.6729C140.281 39.8356 140.25 39.9902 140.188 40.1367C140.127 40.2832 140.049 40.4215 139.954 40.5518C139.856 40.6852 139.749 40.8122 139.632 40.9326C139.518 41.0531 139.406 41.1702 139.295 41.2842C139.132 41.4339 139.002 41.5641 138.904 41.6748C138.807 41.7822 138.732 41.8945 138.68 42.0117C138.628 42.1322 138.593 42.2689 138.577 42.4219C138.561 42.5716 138.551 42.7637 138.548 42.998ZM138.445 44.5264C138.445 44.6761 138.491 44.8014 138.582 44.9023C138.676 45.0033 138.816 45.0537 139.002 45.0537C139.188 45.0537 139.327 45.0033 139.422 44.9023C139.52 44.8014 139.568 44.6761 139.568 44.5264C139.568 44.3701 139.52 44.2399 139.422 44.1357C139.327 44.0316 139.188 43.9795 139.002 43.9795C138.816 43.9795 138.676 44.0316 138.582 44.1357C138.491 44.2399 138.445 44.3701 138.445 44.5264ZM145.198 44.79V43.9307H144.217V44.8047C144.217 45.0814 144.184 45.3483 144.119 45.6055C144.054 45.8626 143.943 46.1051 143.787 46.333L144.349 46.6406C144.609 46.4095 144.816 46.1247 144.969 45.7861C145.122 45.4476 145.198 45.1156 145.198 44.79ZM154.92 45H155.823V41.2109C155.885 41.097 155.957 40.9928 156.038 40.8984C156.123 40.804 156.214 40.721 156.312 40.6494C156.432 40.568 156.564 40.5046 156.707 40.459C156.85 40.4102 157.005 40.3857 157.171 40.3857C157.363 40.3857 157.532 40.4085 157.679 40.4541C157.828 40.4997 157.955 40.5729 158.06 40.6738C158.16 40.7747 158.237 40.9066 158.289 41.0693C158.341 41.2321 158.367 41.4307 158.367 41.665V45H159.271V41.6455C159.271 41.2939 159.227 40.9912 159.139 40.7373C159.054 40.4801 158.932 40.2686 158.772 40.1025C158.613 39.9365 158.419 39.8145 158.191 39.7363C157.967 39.6582 157.716 39.6191 157.439 39.6191C157.234 39.6224 157.039 39.6533 156.854 39.7119C156.671 39.7673 156.502 39.847 156.346 39.9512C156.242 40.0195 156.142 40.1009 156.048 40.1953C155.957 40.2865 155.872 40.3874 155.794 40.498L155.73 39.7168H154.92V45ZM160.672 42.3096V42.417C160.672 42.7979 160.727 43.151 160.838 43.4766C160.949 43.8021 161.108 44.0853 161.316 44.3262C161.521 44.5671 161.772 44.7559 162.068 44.8926C162.368 45.0293 162.705 45.0977 163.079 45.0977C163.45 45.0977 163.784 45.0293 164.08 44.8926C164.376 44.7559 164.629 44.5671 164.837 44.3262C165.042 44.0853 165.2 43.8021 165.311 43.4766C165.421 43.151 165.477 42.7979 165.477 42.417V42.3096C165.477 41.9287 165.421 41.5755 165.311 41.25C165.2 40.9212 165.042 40.6364 164.837 40.3955C164.629 40.1546 164.375 39.9658 164.075 39.8291C163.779 39.6891 163.444 39.6191 163.069 39.6191C162.698 39.6191 162.365 39.6891 162.068 39.8291C161.772 39.9658 161.521 40.1546 161.316 40.3955C161.108 40.6364 160.949 40.9212 160.838 41.25C160.727 41.5755 160.672 41.9287 160.672 42.3096ZM161.575 42.417V42.3096C161.575 42.0524 161.606 41.8066 161.668 41.5723C161.73 41.3346 161.824 41.1263 161.951 40.9473C162.075 40.7682 162.229 40.6266 162.415 40.5225C162.601 40.415 162.819 40.3613 163.069 40.3613C163.32 40.3613 163.538 40.415 163.724 40.5225C163.912 40.6266 164.07 40.7682 164.197 40.9473C164.321 41.1263 164.414 41.3346 164.476 41.5723C164.541 41.8066 164.573 42.0524 164.573 42.3096V42.417C164.573 42.6774 164.542 42.9264 164.48 43.1641C164.419 43.3984 164.326 43.6051 164.202 43.7842C164.075 43.9632 163.917 44.1048 163.729 44.209C163.543 44.3132 163.326 44.3652 163.079 44.3652C162.828 44.3652 162.609 44.3132 162.42 44.209C162.231 44.1048 162.075 43.9632 161.951 43.7842C161.824 43.6051 161.73 43.3984 161.668 43.1641C161.606 42.9264 161.575 42.6774 161.575 42.417ZM166.761 42.3145V42.417C166.761 42.7946 166.811 43.1478 166.912 43.4766C167.013 43.8021 167.155 44.0853 167.337 44.3262C167.519 44.5671 167.739 44.7559 167.996 44.8926C168.257 45.0293 168.546 45.0977 168.865 45.0977C169.191 45.0977 169.476 45.0423 169.72 44.9316C169.964 44.821 170.174 44.6582 170.35 44.4434L170.389 45H171.219V37.5H170.315V40.2393C170.143 40.0374 169.938 39.8844 169.7 39.7803C169.466 39.6729 169.191 39.6191 168.875 39.6191C168.553 39.6191 168.261 39.6859 168.001 39.8193C167.741 39.9528 167.519 40.1383 167.337 40.376C167.151 40.6136 167.008 40.8984 166.907 41.2305C166.81 41.5592 166.761 41.9206 166.761 42.3145ZM167.664 42.417V42.3145C167.664 42.0573 167.692 41.8132 167.747 41.582C167.802 41.3477 167.889 41.141 168.006 40.9619C168.12 40.7861 168.266 40.6462 168.445 40.542C168.628 40.4378 168.846 40.3857 169.1 40.3857C169.396 40.3857 169.643 40.4557 169.842 40.5957C170.04 40.7324 170.198 40.9082 170.315 41.123V43.5742C170.198 43.8053 170.04 43.9893 169.842 44.126C169.643 44.2627 169.393 44.3311 169.09 44.3311C168.839 44.3311 168.624 44.2806 168.445 44.1797C168.266 44.0755 168.12 43.9355 168.006 43.7598C167.889 43.584 167.802 43.3805 167.747 43.1494C167.692 42.9183 167.664 42.6742 167.664 42.417ZM175.271 45.0977C175.786 45.0977 176.217 44.9951 176.565 44.79C176.917 44.5817 177.181 44.3441 177.356 44.0771L176.805 43.6475C176.639 43.8623 176.43 44.0348 176.18 44.165C175.929 44.2952 175.643 44.3604 175.32 44.3604C175.076 44.3604 174.853 44.3148 174.651 44.2236C174.45 44.1325 174.277 44.0072 174.134 43.8477C173.994 43.6979 173.883 43.5254 173.802 43.3301C173.724 43.1348 173.673 42.9085 173.65 42.6514V42.6172H177.425V42.2119C177.425 41.8441 177.378 41.5023 177.283 41.1865C177.192 40.8708 177.052 40.5957 176.863 40.3613C176.674 40.1302 176.437 39.9495 176.15 39.8193C175.867 39.6859 175.535 39.6191 175.154 39.6191C174.852 39.6191 174.555 39.681 174.266 39.8047C173.979 39.9284 173.724 40.1058 173.499 40.3369C173.271 40.5713 173.089 40.8577 172.952 41.1963C172.815 41.5316 172.747 41.9124 172.747 42.3389V42.5439C172.747 42.9118 172.809 43.252 172.933 43.5645C173.056 43.877 173.229 44.1471 173.45 44.375C173.672 44.6029 173.937 44.7803 174.246 44.9072C174.559 45.0342 174.9 45.0977 175.271 45.0977ZM175.154 40.3613C175.385 40.3613 175.584 40.4036 175.75 40.4883C175.919 40.5729 176.059 40.6836 176.17 40.8203C176.281 40.957 176.367 41.1198 176.429 41.3086C176.491 41.4941 176.521 41.6683 176.521 41.8311V41.875H173.68C173.715 41.6309 173.777 41.416 173.865 41.2305C173.956 41.0417 174.067 40.8822 174.197 40.752C174.327 40.625 174.474 40.529 174.637 40.4639C174.799 40.3955 174.972 40.3613 175.154 40.3613ZM183.304 45V44.2627H179.734L181.644 42.1924C181.823 41.9971 181.992 41.8018 182.151 41.6064C182.314 41.4079 182.457 41.2077 182.581 41.0059C182.701 40.804 182.798 40.6006 182.869 40.3955C182.941 40.1872 182.977 39.9772 182.977 39.7656C182.977 39.4824 182.926 39.2204 182.825 38.9795C182.728 38.7386 182.586 38.5303 182.4 38.3545C182.215 38.1787 181.987 38.042 181.717 37.9443C181.45 37.8434 181.149 37.793 180.813 37.793C180.449 37.793 180.123 37.8516 179.837 37.9688C179.554 38.0859 179.314 38.2438 179.119 38.4424C178.921 38.641 178.769 38.8737 178.665 39.1406C178.561 39.4043 178.509 39.6859 178.509 39.9854H179.417C179.417 39.764 179.445 39.5638 179.5 39.3848C179.559 39.2057 179.646 39.0527 179.764 38.9258C179.878 38.8021 180.021 38.7061 180.193 38.6377C180.369 38.5693 180.576 38.5352 180.813 38.5352C181.009 38.5352 181.183 38.5693 181.336 38.6377C181.492 38.7028 181.626 38.7923 181.736 38.9062C181.844 39.0202 181.925 39.1553 181.98 39.3115C182.039 39.4645 182.068 39.6289 182.068 39.8047C182.068 39.9479 182.05 40.0879 182.015 40.2246C181.979 40.3581 181.919 40.4997 181.834 40.6494C181.749 40.8024 181.637 40.9684 181.497 41.1475C181.357 41.3265 181.183 41.5316 180.975 41.7627L178.646 44.3506V45H183.304ZM186.766 44.4141C186.766 44.6029 186.824 44.764 186.941 44.8975C187.062 45.0277 187.239 45.0928 187.474 45.0928C187.705 45.0928 187.882 45.0277 188.006 44.8975C188.13 44.7673 188.191 44.6061 188.191 44.4141C188.191 44.2188 188.13 44.0544 188.006 43.9209C187.885 43.7842 187.708 43.7158 187.474 43.7158C187.236 43.7158 187.059 43.7842 186.941 43.9209C186.824 44.0576 186.766 44.222 186.766 44.4141ZM186.766 40.1367C186.766 40.3255 186.824 40.4867 186.941 40.6201C187.062 40.7503 187.239 40.8154 187.474 40.8154C187.705 40.8154 187.882 40.7503 188.006 40.6201C188.13 40.4899 188.191 40.3288 188.191 40.1367C188.191 39.9414 188.13 39.777 188.006 39.6436C187.885 39.5068 187.708 39.4385 187.474 39.4385C187.236 39.4385 187.059 39.5068 186.941 39.6436C186.824 39.7803 186.766 39.9447 186.766 40.1367ZM198.606 42.998H199.51C199.51 42.8711 199.513 42.7588 199.52 42.6611C199.526 42.5602 199.542 42.4658 199.568 42.3779C199.594 42.29 199.633 42.2038 199.686 42.1191C199.741 42.0345 199.817 41.945 199.915 41.8506C200.068 41.7139 200.223 41.5658 200.379 41.4062C200.538 41.2467 200.682 41.0742 200.809 40.8887C200.936 40.7064 201.04 40.5127 201.121 40.3076C201.202 40.0993 201.243 39.8779 201.243 39.6436C201.243 39.3506 201.196 39.0902 201.102 38.8623C201.007 38.6344 200.87 38.4408 200.691 38.2812C200.512 38.1217 200.293 38.0013 200.032 37.9199C199.775 37.8353 199.482 37.793 199.153 37.793C198.857 37.793 198.58 37.8337 198.323 37.915C198.069 37.9932 197.85 38.1071 197.664 38.2568C197.475 38.4098 197.326 38.5954 197.215 38.8135C197.104 39.0316 197.047 39.2773 197.044 39.5508H197.947C197.947 39.3815 197.981 39.2367 198.05 39.1162C198.118 38.9925 198.209 38.89 198.323 38.8086C198.434 38.7305 198.561 38.6735 198.704 38.6377C198.851 38.5986 199 38.5791 199.153 38.5791C199.352 38.5791 199.528 38.6051 199.681 38.6572C199.834 38.7093 199.961 38.7858 200.062 38.8867C200.153 38.9779 200.221 39.0902 200.267 39.2236C200.315 39.3538 200.34 39.5036 200.34 39.6729C200.34 39.8356 200.309 39.9902 200.247 40.1367C200.185 40.2832 200.107 40.4215 200.013 40.5518C199.915 40.6852 199.808 40.8122 199.69 40.9326C199.576 41.0531 199.464 41.1702 199.354 41.2842C199.191 41.4339 199.061 41.5641 198.963 41.6748C198.865 41.7822 198.79 41.8945 198.738 42.0117C198.686 42.1322 198.652 42.2689 198.636 42.4219C198.619 42.5716 198.61 42.7637 198.606 42.998ZM198.504 44.5264C198.504 44.6761 198.549 44.8014 198.641 44.9023C198.735 45.0033 198.875 45.0537 199.061 45.0537C199.246 45.0537 199.386 45.0033 199.48 44.9023C199.578 44.8014 199.627 44.6761 199.627 44.5264C199.627 44.3701 199.578 44.2399 199.48 44.1357C199.386 44.0316 199.246 43.9795 199.061 43.9795C198.875 43.9795 198.735 44.0316 198.641 44.1357C198.549 44.2399 198.504 44.3701 198.504 44.5264ZM209.7 46.2256L209.803 46.7871C210.122 46.7806 210.397 46.7074 210.628 46.5674C210.859 46.4274 211.051 46.2484 211.204 46.0303C211.354 45.8122 211.465 45.5697 211.536 45.3027C211.608 45.0391 211.644 44.777 211.644 44.5166V43.6914C211.644 43.4635 211.67 43.2666 211.722 43.1006C211.774 42.9346 211.854 42.7962 211.961 42.6855C212.072 42.5716 212.213 42.4886 212.386 42.4365C212.562 42.3812 212.767 42.3519 213.001 42.3486V41.6406C212.734 41.6406 212.505 41.6064 212.312 41.5381C212.124 41.4665 211.976 41.3542 211.868 41.2012C211.793 41.0938 211.736 40.9668 211.697 40.8203C211.661 40.6706 211.644 40.498 211.644 40.3027V39.4727C211.644 39.1992 211.606 38.9225 211.531 38.6426C211.46 38.3626 211.341 38.1104 211.175 37.8857C211.028 37.6872 210.841 37.526 210.613 37.4023C210.389 37.2786 210.118 37.2119 209.803 37.2021L209.705 37.7637C209.939 37.7702 210.125 37.8255 210.262 37.9297C210.398 38.0339 210.503 38.1657 210.574 38.3252C210.643 38.488 210.687 38.6702 210.706 38.8721C210.729 39.0739 210.74 39.2741 210.74 39.4727V40.3027C210.74 40.5566 210.778 40.7926 210.853 41.0107C210.927 41.2256 211.043 41.4144 211.199 41.5771C211.281 41.665 211.375 41.7448 211.482 41.8164C211.593 41.888 211.714 41.9499 211.844 42.002C211.717 42.054 211.6 42.1143 211.492 42.1826C211.388 42.251 211.294 42.3275 211.209 42.4121C211.049 42.5716 210.931 42.7604 210.853 42.9785C210.778 43.1966 210.74 43.4342 210.74 43.6914V44.5166C210.74 44.7184 210.722 44.9186 210.687 45.1172C210.654 45.319 210.599 45.4997 210.521 45.6592C210.439 45.8219 210.332 45.9554 210.198 46.0596C210.065 46.1637 209.899 46.2191 209.7 46.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"149.5\"\n      y=\"201.5\"\n      width=\"55\"\n      height=\"55\"\n      stroke=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M101.753 278.503V275.5H100.85V283H101.753V279.162C101.818 279.058 101.891 278.964 101.973 278.879C102.057 278.791 102.148 278.715 102.246 278.649C102.37 278.565 102.505 278.5 102.651 278.454C102.798 278.409 102.952 278.386 103.115 278.386C103.314 278.382 103.49 278.41 103.643 278.469C103.796 278.524 103.923 278.609 104.023 278.723C104.118 278.827 104.189 278.959 104.238 279.118C104.287 279.274 104.312 279.457 104.312 279.665V283H105.215V279.675C105.215 279.32 105.171 279.014 105.083 278.757C104.998 278.496 104.876 278.282 104.717 278.112C104.557 277.943 104.364 277.819 104.136 277.741C103.911 277.66 103.66 277.619 103.384 277.619C103.172 277.622 102.972 277.653 102.783 277.712C102.598 277.771 102.427 277.857 102.271 277.971C102.173 278.039 102.08 278.119 101.992 278.21C101.904 278.298 101.825 278.396 101.753 278.503ZM110.327 283H111.27V282.922C111.211 282.775 111.165 282.604 111.133 282.409C111.1 282.211 111.084 282.023 111.084 281.848V279.392C111.084 279.095 111.03 278.837 110.923 278.615C110.815 278.394 110.669 278.208 110.483 278.059C110.295 277.912 110.072 277.803 109.814 277.731C109.557 277.657 109.279 277.619 108.979 277.619C108.651 277.619 108.356 277.665 108.096 277.756C107.839 277.847 107.62 277.966 107.441 278.112C107.259 278.262 107.119 278.43 107.021 278.615C106.927 278.801 106.878 278.99 106.875 279.182H107.783C107.783 279.071 107.809 278.965 107.861 278.864C107.917 278.76 107.993 278.671 108.091 278.596C108.188 278.521 108.307 278.461 108.447 278.415C108.59 278.369 108.752 278.347 108.931 278.347C109.123 278.347 109.295 278.371 109.448 278.42C109.604 278.469 109.736 278.537 109.844 278.625C109.951 278.716 110.034 278.825 110.093 278.952C110.151 279.079 110.181 279.222 110.181 279.382V279.797H109.194C108.826 279.797 108.493 279.833 108.193 279.904C107.897 279.976 107.643 280.083 107.432 280.227C107.22 280.373 107.056 280.555 106.938 280.773C106.825 280.992 106.768 281.245 106.768 281.535C106.768 281.757 106.81 281.963 106.895 282.155C106.982 282.344 107.106 282.507 107.266 282.644C107.422 282.784 107.612 282.894 107.837 282.976C108.065 283.057 108.319 283.098 108.599 283.098C108.771 283.098 108.934 283.08 109.087 283.044C109.24 283.008 109.385 282.959 109.521 282.897C109.655 282.836 109.777 282.764 109.888 282.683C110.002 282.601 110.104 282.515 110.195 282.424C110.205 282.535 110.22 282.642 110.239 282.746C110.262 282.847 110.291 282.932 110.327 283ZM108.73 282.312C108.555 282.312 108.4 282.289 108.267 282.243C108.133 282.198 108.022 282.134 107.935 282.053C107.847 281.975 107.78 281.88 107.734 281.77C107.692 281.659 107.671 281.538 107.671 281.408C107.671 281.271 107.695 281.149 107.744 281.042C107.796 280.935 107.871 280.842 107.969 280.764C108.105 280.653 108.289 280.572 108.521 280.52C108.755 280.464 109.028 280.437 109.341 280.437H110.181V281.506C110.129 281.61 110.057 281.711 109.966 281.809C109.875 281.903 109.767 281.988 109.644 282.062C109.517 282.137 109.377 282.198 109.224 282.243C109.071 282.289 108.906 282.312 108.73 282.312ZM116.372 281.599C116.372 281.683 116.356 281.763 116.323 281.838C116.291 281.913 116.243 281.981 116.182 282.043C116.081 282.144 115.941 282.224 115.762 282.282C115.583 282.338 115.373 282.365 115.132 282.365C114.979 282.365 114.824 282.349 114.668 282.316C114.512 282.284 114.37 282.229 114.243 282.15C114.113 282.072 114.004 281.97 113.916 281.843C113.831 281.716 113.783 281.56 113.77 281.374H112.866C112.866 281.599 112.917 281.815 113.018 282.023C113.122 282.232 113.271 282.414 113.467 282.57C113.659 282.73 113.895 282.858 114.175 282.956C114.455 283.05 114.774 283.098 115.132 283.098C115.444 283.098 115.732 283.06 115.996 282.985C116.26 282.91 116.486 282.805 116.675 282.668C116.864 282.531 117.01 282.367 117.114 282.175C117.222 281.983 117.275 281.77 117.275 281.535C117.275 281.317 117.228 281.125 117.134 280.959C117.043 280.793 116.909 280.646 116.733 280.52C116.558 280.396 116.341 280.29 116.084 280.202C115.827 280.111 115.535 280.031 115.21 279.963C114.963 279.914 114.757 279.864 114.595 279.812C114.435 279.759 114.308 279.701 114.214 279.636C114.116 279.571 114.048 279.497 114.009 279.416C113.97 279.335 113.95 279.242 113.95 279.138C113.95 279.037 113.975 278.939 114.023 278.845C114.072 278.75 114.146 278.667 114.243 278.596C114.338 278.524 114.456 278.467 114.6 278.425C114.746 278.382 114.915 278.361 115.107 278.361C115.293 278.361 115.459 278.387 115.605 278.439C115.755 278.492 115.882 278.56 115.986 278.645C116.09 278.729 116.172 278.827 116.23 278.938C116.289 279.045 116.318 279.156 116.318 279.27H117.222C117.222 279.038 117.171 278.824 117.07 278.625C116.973 278.423 116.833 278.247 116.65 278.098C116.468 277.948 116.247 277.831 115.986 277.746C115.726 277.661 115.433 277.619 115.107 277.619C114.805 277.619 114.526 277.66 114.272 277.741C114.022 277.823 113.805 277.933 113.623 278.073C113.441 278.213 113.299 278.378 113.198 278.566C113.097 278.752 113.047 278.952 113.047 279.167C113.047 279.385 113.096 279.577 113.193 279.743C113.291 279.906 113.429 280.048 113.608 280.168C113.784 280.292 113.996 280.397 114.243 280.485C114.494 280.573 114.771 280.648 115.073 280.71C115.321 280.759 115.527 280.814 115.693 280.876C115.859 280.935 115.993 281 116.094 281.071C116.195 281.143 116.266 281.223 116.309 281.311C116.351 281.395 116.372 281.491 116.372 281.599ZM125.63 277.214V277.927H126.514V277.199C126.514 276.919 126.551 276.659 126.626 276.418C126.704 276.177 126.82 275.941 126.973 275.71L126.479 275.358C126.343 275.476 126.222 275.609 126.118 275.759C126.014 275.909 125.926 276.065 125.854 276.228C125.78 276.394 125.723 276.561 125.684 276.73C125.648 276.9 125.63 277.061 125.63 277.214ZM127.217 277.214V277.927H128.101V277.199C128.101 276.919 128.138 276.659 128.213 276.418C128.291 276.177 128.407 275.941 128.56 275.71L128.066 275.358C127.93 275.476 127.809 275.609 127.705 275.759C127.601 275.909 127.513 276.065 127.441 276.228C127.367 276.394 127.31 276.561 127.271 276.73C127.235 276.9 127.217 277.061 127.217 277.214ZM132.524 280.998H133.428C133.428 280.871 133.431 280.759 133.438 280.661C133.444 280.56 133.46 280.466 133.486 280.378C133.512 280.29 133.551 280.204 133.604 280.119C133.659 280.035 133.735 279.945 133.833 279.851C133.986 279.714 134.141 279.566 134.297 279.406C134.456 279.247 134.6 279.074 134.727 278.889C134.854 278.706 134.958 278.513 135.039 278.308C135.12 278.099 135.161 277.878 135.161 277.644C135.161 277.351 135.114 277.09 135.02 276.862C134.925 276.634 134.788 276.441 134.609 276.281C134.43 276.122 134.211 276.001 133.95 275.92C133.693 275.835 133.4 275.793 133.071 275.793C132.775 275.793 132.498 275.834 132.241 275.915C131.987 275.993 131.768 276.107 131.582 276.257C131.393 276.41 131.243 276.595 131.133 276.813C131.022 277.032 130.965 277.277 130.962 277.551H131.865C131.865 277.382 131.899 277.237 131.968 277.116C132.036 276.993 132.127 276.89 132.241 276.809C132.352 276.73 132.479 276.674 132.622 276.638C132.769 276.599 132.918 276.579 133.071 276.579C133.27 276.579 133.446 276.605 133.599 276.657C133.752 276.709 133.879 276.786 133.979 276.887C134.071 276.978 134.139 277.09 134.185 277.224C134.233 277.354 134.258 277.504 134.258 277.673C134.258 277.836 134.227 277.99 134.165 278.137C134.103 278.283 134.025 278.422 133.931 278.552C133.833 278.685 133.726 278.812 133.608 278.933C133.494 279.053 133.382 279.17 133.271 279.284C133.109 279.434 132.979 279.564 132.881 279.675C132.783 279.782 132.708 279.895 132.656 280.012C132.604 280.132 132.57 280.269 132.554 280.422C132.537 280.572 132.528 280.764 132.524 280.998ZM132.422 282.526C132.422 282.676 132.467 282.801 132.559 282.902C132.653 283.003 132.793 283.054 132.979 283.054C133.164 283.054 133.304 283.003 133.398 282.902C133.496 282.801 133.545 282.676 133.545 282.526C133.545 282.37 133.496 282.24 133.398 282.136C133.304 282.032 133.164 281.979 132.979 281.979C132.793 281.979 132.653 282.032 132.559 282.136C132.467 282.24 132.422 282.37 132.422 282.526ZM138.848 276.11V275.393H137.964V276.125C137.964 276.405 137.925 276.665 137.847 276.906C137.772 277.147 137.658 277.383 137.505 277.614L137.998 277.966C138.135 277.849 138.255 277.715 138.359 277.565C138.464 277.416 138.553 277.258 138.628 277.092C138.7 276.929 138.753 276.763 138.789 276.594C138.828 276.424 138.848 276.263 138.848 276.11ZM140.469 276.11V275.393H139.585V276.125C139.585 276.405 139.546 276.665 139.468 276.906C139.393 277.147 139.279 277.383 139.126 277.614L139.619 277.966C139.756 277.849 139.876 277.715 139.98 277.565C140.085 277.416 140.174 277.258 140.249 277.092C140.321 276.929 140.374 276.763 140.41 276.594C140.449 276.424 140.469 276.263 140.469 276.11ZM148.892 285.031H149.795V282.492C149.86 282.564 149.93 282.631 150.005 282.692C150.08 282.751 150.16 282.805 150.244 282.854C150.384 282.932 150.54 282.992 150.713 283.034C150.889 283.076 151.077 283.098 151.279 283.098C151.611 283.098 151.906 283.029 152.163 282.893C152.424 282.756 152.642 282.567 152.817 282.326C152.993 282.085 153.127 281.802 153.218 281.477C153.309 281.148 153.354 280.795 153.354 280.417V280.314C153.354 279.921 153.309 279.559 153.218 279.23C153.127 278.898 152.993 278.614 152.817 278.376C152.642 278.138 152.424 277.953 152.163 277.819C151.903 277.686 151.603 277.619 151.265 277.619C151.073 277.619 150.892 277.64 150.723 277.683C150.557 277.722 150.405 277.78 150.269 277.858C150.171 277.91 150.08 277.974 149.995 278.049C149.91 278.12 149.832 278.202 149.761 278.293L149.717 277.717H148.892V285.031ZM152.451 280.314V280.417C152.451 280.674 152.422 280.92 152.363 281.154C152.308 281.389 152.222 281.595 152.104 281.774C151.987 281.953 151.838 282.097 151.655 282.204C151.473 282.308 151.257 282.36 151.006 282.36C150.85 282.36 150.706 282.341 150.576 282.302C150.449 282.263 150.334 282.209 150.229 282.141C150.138 282.082 150.057 282.01 149.985 281.926C149.914 281.841 149.85 281.75 149.795 281.652V279.108C149.857 278.998 149.928 278.897 150.01 278.806C150.091 278.715 150.184 278.638 150.288 278.576C150.382 278.514 150.488 278.467 150.605 278.435C150.726 278.402 150.856 278.386 150.996 278.386C151.25 278.386 151.468 278.438 151.65 278.542C151.833 278.646 151.984 278.786 152.104 278.962C152.222 279.141 152.308 279.348 152.363 279.582C152.422 279.813 152.451 280.057 152.451 280.314ZM155.044 275.5V276.286H156.841V282.219H155.044V283H159.468V282.219H157.744V275.5H155.044ZM164.38 283H165.322V282.922C165.264 282.775 165.218 282.604 165.186 282.409C165.153 282.211 165.137 282.023 165.137 281.848V279.392C165.137 279.095 165.083 278.837 164.976 278.615C164.868 278.394 164.722 278.208 164.536 278.059C164.347 277.912 164.124 277.803 163.867 277.731C163.61 277.657 163.332 277.619 163.032 277.619C162.703 277.619 162.409 277.665 162.148 277.756C161.891 277.847 161.673 277.966 161.494 278.112C161.312 278.262 161.172 278.43 161.074 278.615C160.98 278.801 160.931 278.99 160.928 279.182H161.836C161.836 279.071 161.862 278.965 161.914 278.864C161.969 278.76 162.046 278.671 162.144 278.596C162.241 278.521 162.36 278.461 162.5 278.415C162.643 278.369 162.804 278.347 162.983 278.347C163.175 278.347 163.348 278.371 163.501 278.42C163.657 278.469 163.789 278.537 163.896 278.625C164.004 278.716 164.087 278.825 164.146 278.952C164.204 279.079 164.233 279.222 164.233 279.382V279.797H163.247C162.879 279.797 162.546 279.833 162.246 279.904C161.95 279.976 161.696 280.083 161.484 280.227C161.273 280.373 161.108 280.555 160.991 280.773C160.877 280.992 160.82 281.245 160.82 281.535C160.82 281.757 160.863 281.963 160.947 282.155C161.035 282.344 161.159 282.507 161.318 282.644C161.475 282.784 161.665 282.894 161.89 282.976C162.118 283.057 162.371 283.098 162.651 283.098C162.824 283.098 162.987 283.08 163.14 283.044C163.293 283.008 163.438 282.959 163.574 282.897C163.708 282.836 163.83 282.764 163.94 282.683C164.054 282.601 164.157 282.515 164.248 282.424C164.258 282.535 164.272 282.642 164.292 282.746C164.315 282.847 164.344 282.932 164.38 283ZM162.783 282.312C162.607 282.312 162.453 282.289 162.319 282.243C162.186 282.198 162.075 282.134 161.987 282.053C161.899 281.975 161.833 281.88 161.787 281.77C161.745 281.659 161.724 281.538 161.724 281.408C161.724 281.271 161.748 281.149 161.797 281.042C161.849 280.935 161.924 280.842 162.021 280.764C162.158 280.653 162.342 280.572 162.573 280.52C162.808 280.464 163.081 280.437 163.394 280.437H164.233V281.506C164.181 281.61 164.11 281.711 164.019 281.809C163.927 281.903 163.82 281.988 163.696 282.062C163.569 282.137 163.429 282.198 163.276 282.243C163.123 282.289 162.959 282.312 162.783 282.312ZM169.165 282.365C168.882 282.365 168.644 282.31 168.452 282.199C168.263 282.085 168.112 281.937 167.998 281.755C167.881 281.576 167.796 281.374 167.744 281.149C167.695 280.922 167.671 280.692 167.671 280.461V280.256C167.671 280.028 167.695 279.802 167.744 279.577C167.796 279.353 167.881 279.149 167.998 278.967C168.115 278.788 168.268 278.643 168.457 278.532C168.649 278.418 168.885 278.361 169.165 278.361C169.347 278.361 169.517 278.392 169.673 278.454C169.832 278.516 169.969 278.601 170.083 278.708C170.197 278.815 170.286 278.941 170.352 279.084C170.42 279.224 170.456 279.374 170.459 279.533H171.313C171.313 279.266 171.26 279.016 171.152 278.781C171.045 278.547 170.897 278.343 170.708 278.171C170.516 278.002 170.288 277.868 170.024 277.771C169.764 277.67 169.478 277.619 169.165 277.619C168.765 277.619 168.415 277.691 168.115 277.834C167.816 277.977 167.567 278.169 167.368 278.41C167.166 278.654 167.015 278.936 166.914 279.255C166.813 279.574 166.763 279.908 166.763 280.256V280.461C166.763 280.812 166.813 281.148 166.914 281.467C167.015 281.783 167.166 282.061 167.368 282.302C167.567 282.546 167.816 282.74 168.115 282.883C168.415 283.026 168.765 283.098 169.165 283.098C169.445 283.098 169.714 283.05 169.971 282.956C170.228 282.858 170.456 282.728 170.654 282.565C170.853 282.406 171.011 282.22 171.128 282.009C171.248 281.794 171.31 281.569 171.313 281.335H170.459C170.456 281.481 170.417 281.618 170.342 281.745C170.27 281.869 170.174 281.976 170.054 282.067C169.933 282.162 169.795 282.235 169.639 282.287C169.486 282.339 169.328 282.365 169.165 282.365ZM175.254 283.098C175.768 283.098 176.2 282.995 176.548 282.79C176.899 282.582 177.163 282.344 177.339 282.077L176.787 281.647C176.621 281.862 176.413 282.035 176.162 282.165C175.911 282.295 175.625 282.36 175.303 282.36C175.059 282.36 174.836 282.315 174.634 282.224C174.432 282.132 174.259 282.007 174.116 281.848C173.976 281.698 173.866 281.525 173.784 281.33C173.706 281.135 173.656 280.909 173.633 280.651V280.617H177.407V280.212C177.407 279.844 177.36 279.502 177.266 279.187C177.174 278.871 177.035 278.596 176.846 278.361C176.657 278.13 176.419 277.95 176.133 277.819C175.85 277.686 175.518 277.619 175.137 277.619C174.834 277.619 174.538 277.681 174.248 277.805C173.962 277.928 173.706 278.106 173.481 278.337C173.254 278.571 173.071 278.858 172.935 279.196C172.798 279.532 172.729 279.912 172.729 280.339V280.544C172.729 280.912 172.791 281.252 172.915 281.564C173.039 281.877 173.211 282.147 173.433 282.375C173.654 282.603 173.919 282.78 174.229 282.907C174.541 283.034 174.883 283.098 175.254 283.098ZM175.137 278.361C175.368 278.361 175.566 278.404 175.732 278.488C175.902 278.573 176.042 278.684 176.152 278.82C176.263 278.957 176.349 279.12 176.411 279.309C176.473 279.494 176.504 279.668 176.504 279.831V279.875H173.662C173.698 279.631 173.76 279.416 173.848 279.23C173.939 279.042 174.049 278.882 174.18 278.752C174.31 278.625 174.456 278.529 174.619 278.464C174.782 278.396 174.954 278.361 175.137 278.361ZM179.829 278.503V275.5H178.926V283H179.829V279.162C179.894 279.058 179.967 278.964 180.049 278.879C180.133 278.791 180.225 278.715 180.322 278.649C180.446 278.565 180.581 278.5 180.728 278.454C180.874 278.409 181.029 278.386 181.191 278.386C181.39 278.382 181.566 278.41 181.719 278.469C181.872 278.524 181.999 278.609 182.1 278.723C182.194 278.827 182.266 278.959 182.314 279.118C182.363 279.274 182.388 279.457 182.388 279.665V283H183.291V279.675C183.291 279.32 183.247 279.014 183.159 278.757C183.075 278.496 182.952 278.282 182.793 278.112C182.633 277.943 182.44 277.819 182.212 277.741C181.987 277.66 181.737 277.619 181.46 277.619C181.248 277.622 181.048 277.653 180.859 277.712C180.674 277.771 180.503 277.857 180.347 277.971C180.249 278.039 180.156 278.119 180.068 278.21C179.98 278.298 179.901 278.396 179.829 278.503ZM184.678 280.31V280.417C184.678 280.798 184.733 281.151 184.844 281.477C184.954 281.802 185.114 282.085 185.322 282.326C185.527 282.567 185.778 282.756 186.074 282.893C186.374 283.029 186.711 283.098 187.085 283.098C187.456 283.098 187.79 283.029 188.086 282.893C188.382 282.756 188.634 282.567 188.843 282.326C189.048 282.085 189.206 281.802 189.316 281.477C189.427 281.151 189.482 280.798 189.482 280.417V280.31C189.482 279.929 189.427 279.576 189.316 279.25C189.206 278.921 189.048 278.636 188.843 278.396C188.634 278.155 188.381 277.966 188.081 277.829C187.785 277.689 187.45 277.619 187.075 277.619C186.704 277.619 186.37 277.689 186.074 277.829C185.778 277.966 185.527 278.155 185.322 278.396C185.114 278.636 184.954 278.921 184.844 279.25C184.733 279.576 184.678 279.929 184.678 280.31ZM185.581 280.417V280.31C185.581 280.052 185.612 279.807 185.674 279.572C185.736 279.335 185.83 279.126 185.957 278.947C186.081 278.768 186.235 278.627 186.421 278.522C186.606 278.415 186.825 278.361 187.075 278.361C187.326 278.361 187.544 278.415 187.729 278.522C187.918 278.627 188.076 278.768 188.203 278.947C188.327 279.126 188.42 279.335 188.481 279.572C188.547 279.807 188.579 280.052 188.579 280.31V280.417C188.579 280.677 188.548 280.926 188.486 281.164C188.424 281.398 188.332 281.605 188.208 281.784C188.081 281.963 187.923 282.105 187.734 282.209C187.549 282.313 187.332 282.365 187.085 282.365C186.834 282.365 186.615 282.313 186.426 282.209C186.237 282.105 186.081 281.963 185.957 281.784C185.83 281.605 185.736 281.398 185.674 281.164C185.612 280.926 185.581 280.677 185.581 280.417ZM191.079 275.5V276.286H192.876V282.219H191.079V283H195.503V282.219H193.779V275.5H191.079ZM196.772 280.314V280.417C196.772 280.795 196.823 281.148 196.924 281.477C197.025 281.802 197.166 282.085 197.349 282.326C197.531 282.567 197.751 282.756 198.008 282.893C198.268 283.029 198.558 283.098 198.877 283.098C199.202 283.098 199.487 283.042 199.731 282.932C199.976 282.821 200.186 282.658 200.361 282.443L200.4 283H201.23V275.5H200.327V278.239C200.155 278.037 199.95 277.884 199.712 277.78C199.478 277.673 199.202 277.619 198.887 277.619C198.564 277.619 198.273 277.686 198.013 277.819C197.752 277.953 197.531 278.138 197.349 278.376C197.163 278.614 197.02 278.898 196.919 279.23C196.821 279.559 196.772 279.921 196.772 280.314ZM197.676 280.417V280.314C197.676 280.057 197.703 279.813 197.759 279.582C197.814 279.348 197.9 279.141 198.018 278.962C198.132 278.786 198.278 278.646 198.457 278.542C198.639 278.438 198.857 278.386 199.111 278.386C199.408 278.386 199.655 278.456 199.854 278.596C200.052 278.732 200.21 278.908 200.327 279.123V281.574C200.21 281.805 200.052 281.989 199.854 282.126C199.655 282.263 199.404 282.331 199.102 282.331C198.851 282.331 198.636 282.281 198.457 282.18C198.278 282.076 198.132 281.936 198.018 281.76C197.9 281.584 197.814 281.381 197.759 281.149C197.703 280.918 197.676 280.674 197.676 280.417ZM205.283 283.098C205.798 283.098 206.229 282.995 206.577 282.79C206.929 282.582 207.192 282.344 207.368 282.077L206.816 281.647C206.65 281.862 206.442 282.035 206.191 282.165C205.941 282.295 205.654 282.36 205.332 282.36C205.088 282.36 204.865 282.315 204.663 282.224C204.461 282.132 204.289 282.007 204.146 281.848C204.006 281.698 203.895 281.525 203.813 281.33C203.735 281.135 203.685 280.909 203.662 280.651V280.617H207.437V280.212C207.437 279.844 207.389 279.502 207.295 279.187C207.204 278.871 207.064 278.596 206.875 278.361C206.686 278.13 206.449 277.95 206.162 277.819C205.879 277.686 205.547 277.619 205.166 277.619C204.863 277.619 204.567 277.681 204.277 277.805C203.991 277.928 203.735 278.106 203.511 278.337C203.283 278.571 203.101 278.858 202.964 279.196C202.827 279.532 202.759 279.912 202.759 280.339V280.544C202.759 280.912 202.821 281.252 202.944 281.564C203.068 281.877 203.241 282.147 203.462 282.375C203.683 282.603 203.949 282.78 204.258 282.907C204.57 283.034 204.912 283.098 205.283 283.098ZM205.166 278.361C205.397 278.361 205.596 278.404 205.762 278.488C205.931 278.573 206.071 278.684 206.182 278.82C206.292 278.957 206.379 279.12 206.44 279.309C206.502 279.494 206.533 279.668 206.533 279.831V279.875H203.691C203.727 279.631 203.789 279.416 203.877 279.23C203.968 279.042 204.079 278.882 204.209 278.752C204.339 278.625 204.486 278.529 204.648 278.464C204.811 278.396 204.984 278.361 205.166 278.361ZM212.417 277.619C212.033 277.619 211.689 277.704 211.387 277.873C211.087 278.039 210.83 278.267 210.615 278.557L210.61 278.425L210.571 277.717H209.712V283H210.62V279.611C210.679 279.449 210.752 279.302 210.84 279.172C210.931 279.038 211.037 278.926 211.157 278.835C211.291 278.731 211.447 278.653 211.626 278.601C211.805 278.545 212.005 278.518 212.227 278.518C212.399 278.518 212.563 278.527 212.72 278.547C212.879 278.563 213.047 278.591 213.223 278.63L213.345 277.746C213.254 277.707 213.117 277.676 212.935 277.653C212.756 277.631 212.583 277.619 212.417 277.619ZM216.606 280.998H217.51C217.51 280.871 217.513 280.759 217.52 280.661C217.526 280.56 217.542 280.466 217.568 280.378C217.594 280.29 217.633 280.204 217.686 280.119C217.741 280.035 217.817 279.945 217.915 279.851C218.068 279.714 218.223 279.566 218.379 279.406C218.538 279.247 218.682 279.074 218.809 278.889C218.936 278.706 219.04 278.513 219.121 278.308C219.202 278.099 219.243 277.878 219.243 277.644C219.243 277.351 219.196 277.09 219.102 276.862C219.007 276.634 218.87 276.441 218.691 276.281C218.512 276.122 218.293 276.001 218.032 275.92C217.775 275.835 217.482 275.793 217.153 275.793C216.857 275.793 216.58 275.834 216.323 275.915C216.069 275.993 215.85 276.107 215.664 276.257C215.475 276.41 215.326 276.595 215.215 276.813C215.104 277.032 215.047 277.277 215.044 277.551H215.947C215.947 277.382 215.981 277.237 216.05 277.116C216.118 276.993 216.209 276.89 216.323 276.809C216.434 276.73 216.561 276.674 216.704 276.638C216.851 276.599 217 276.579 217.153 276.579C217.352 276.579 217.528 276.605 217.681 276.657C217.834 276.709 217.961 276.786 218.062 276.887C218.153 276.978 218.221 277.09 218.267 277.224C218.315 277.354 218.34 277.504 218.34 277.673C218.34 277.836 218.309 277.99 218.247 278.137C218.185 278.283 218.107 278.422 218.013 278.552C217.915 278.685 217.808 278.812 217.69 278.933C217.576 279.053 217.464 279.17 217.354 279.284C217.191 279.434 217.061 279.564 216.963 279.675C216.865 279.782 216.79 279.895 216.738 280.012C216.686 280.132 216.652 280.269 216.636 280.422C216.619 280.572 216.61 280.764 216.606 280.998ZM216.504 282.526C216.504 282.676 216.549 282.801 216.641 282.902C216.735 283.003 216.875 283.054 217.061 283.054C217.246 283.054 217.386 283.003 217.48 282.902C217.578 282.801 217.627 282.676 217.627 282.526C217.627 282.37 217.578 282.24 217.48 282.136C217.386 282.032 217.246 281.979 217.061 281.979C216.875 281.979 216.735 282.032 216.641 282.136C216.549 282.24 216.504 282.37 216.504 282.526Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M227.808 280.109V280.217C227.808 280.679 227.842 281.112 227.91 281.516C227.982 281.919 228.078 282.292 228.198 282.634C228.319 282.979 228.459 283.293 228.618 283.576C228.781 283.859 228.952 284.108 229.131 284.323C229.31 284.541 229.494 284.727 229.683 284.88C229.875 285.033 230.06 285.15 230.239 285.231L230.503 284.499C230.376 284.401 230.247 284.279 230.117 284.133C229.987 283.986 229.863 283.814 229.746 283.615C229.635 283.433 229.531 283.22 229.434 282.976C229.339 282.731 229.256 282.466 229.185 282.18C229.132 281.975 229.084 281.7 229.038 281.354C228.996 281.009 228.975 280.633 228.975 280.227V280.1C228.975 279.686 228.997 279.304 229.043 278.952C229.089 278.601 229.149 278.28 229.224 277.99C229.308 277.691 229.406 277.414 229.517 277.16C229.631 276.906 229.753 276.687 229.883 276.501C229.984 276.358 230.086 276.231 230.19 276.12C230.295 276.009 230.399 275.915 230.503 275.837L230.239 275.095C230.06 275.176 229.875 275.293 229.683 275.446C229.494 275.596 229.31 275.78 229.131 275.998C228.952 276.216 228.781 276.467 228.618 276.75C228.459 277.033 228.319 277.346 228.198 277.688C228.078 278.033 227.982 278.409 227.91 278.815C227.842 279.219 227.808 279.65 227.808 280.109ZM235.195 279.167L233.794 275.891H232.29L234.492 280.48L234.497 283H235.864L235.869 280.539L238.105 275.891H236.597L235.195 279.167ZM241.387 283.098C241.898 283.098 242.34 282.998 242.715 282.8C243.089 282.601 243.363 282.38 243.535 282.136L242.856 281.403C242.7 281.605 242.497 281.757 242.246 281.857C241.995 281.958 241.737 282.009 241.47 282.009C241.281 282.009 241.107 281.979 240.947 281.921C240.788 281.862 240.646 281.779 240.522 281.672C240.402 281.568 240.306 281.452 240.234 281.325C240.163 281.195 240.104 281.024 240.059 280.812V280.798H243.643V280.222C243.643 279.834 243.589 279.481 243.481 279.162C243.374 278.84 243.218 278.565 243.013 278.337C242.804 278.109 242.55 277.933 242.251 277.81C241.955 277.683 241.616 277.619 241.235 277.619C240.868 277.619 240.527 277.686 240.215 277.819C239.902 277.953 239.632 278.14 239.404 278.381C239.176 278.622 238.999 278.91 238.872 279.245C238.745 279.577 238.682 279.945 238.682 280.349V280.544C238.682 280.899 238.745 281.232 238.872 281.545C239.002 281.854 239.186 282.123 239.424 282.351C239.661 282.582 239.946 282.764 240.278 282.897C240.61 283.031 240.98 283.098 241.387 283.098ZM241.226 278.718C241.398 278.718 241.549 278.745 241.68 278.801C241.813 278.853 241.925 278.924 242.017 279.016C242.108 279.11 242.179 279.221 242.231 279.348C242.284 279.475 242.31 279.61 242.31 279.753V279.86H240.083C240.116 279.688 240.164 279.532 240.229 279.392C240.295 279.252 240.376 279.131 240.474 279.03C240.568 278.929 240.679 278.853 240.806 278.801C240.933 278.745 241.073 278.718 241.226 278.718ZM248.237 281.55C248.237 281.631 248.216 281.706 248.174 281.774C248.135 281.843 248.075 281.903 247.993 281.955C247.909 282.007 247.799 282.049 247.666 282.082C247.536 282.111 247.383 282.126 247.207 282.126C247.061 282.126 246.917 282.111 246.777 282.082C246.641 282.053 246.519 282.006 246.411 281.94C246.304 281.879 246.216 281.797 246.147 281.696C246.079 281.592 246.04 281.468 246.03 281.325H244.736C244.736 281.54 244.788 281.755 244.893 281.97C245 282.181 245.156 282.37 245.361 282.536C245.566 282.705 245.82 282.842 246.123 282.946C246.429 283.05 246.781 283.103 247.178 283.103C247.539 283.103 247.866 283.063 248.159 282.985C248.452 282.904 248.703 282.792 248.911 282.648C249.116 282.505 249.274 282.336 249.385 282.141C249.499 281.942 249.556 281.726 249.556 281.491C249.556 281.237 249.499 281.019 249.385 280.837C249.274 280.651 249.119 280.493 248.921 280.363C248.722 280.236 248.486 280.132 248.213 280.051C247.939 279.969 247.643 279.903 247.324 279.851C247.103 279.818 246.921 279.781 246.777 279.738C246.634 279.693 246.522 279.642 246.44 279.587C246.356 279.535 246.297 279.476 246.265 279.411C246.232 279.343 246.216 279.27 246.216 279.191C246.216 279.113 246.234 279.04 246.27 278.972C246.309 278.9 246.364 278.838 246.436 278.786C246.514 278.728 246.615 278.682 246.738 278.649C246.862 278.617 247.007 278.601 247.173 278.601C247.368 278.601 247.534 278.625 247.671 278.674C247.811 278.723 247.922 278.788 248.003 278.869C248.062 278.931 248.105 279.001 248.135 279.079C248.164 279.154 248.179 279.235 248.179 279.323H249.536C249.536 279.079 249.482 278.853 249.375 278.645C249.268 278.436 249.113 278.256 248.911 278.103C248.706 277.953 248.457 277.836 248.164 277.751C247.871 277.663 247.541 277.619 247.173 277.619C246.821 277.619 246.506 277.663 246.226 277.751C245.946 277.839 245.708 277.958 245.513 278.107C245.317 278.257 245.168 278.431 245.063 278.63C244.959 278.828 244.907 279.037 244.907 279.255C244.907 279.479 244.958 279.678 245.059 279.851C245.163 280.023 245.306 280.174 245.488 280.305C245.671 280.438 245.889 280.552 246.143 280.646C246.4 280.738 246.683 280.814 246.992 280.876C247.236 280.922 247.438 280.967 247.598 281.013C247.757 281.058 247.886 281.107 247.983 281.159C248.078 281.215 248.143 281.273 248.179 281.335C248.218 281.397 248.237 281.468 248.237 281.55ZM254.448 280.217V280.109C254.448 279.663 254.412 279.242 254.341 278.845C254.269 278.444 254.172 278.072 254.048 277.727C253.924 277.382 253.779 277.067 253.613 276.784C253.451 276.498 253.276 276.242 253.091 276.018C252.905 275.796 252.715 275.607 252.52 275.451C252.324 275.295 252.134 275.176 251.948 275.095L251.689 275.822C251.787 275.897 251.885 275.988 251.982 276.096C252.083 276.2 252.181 276.319 252.275 276.452C252.415 276.654 252.547 276.893 252.671 277.17C252.798 277.447 252.905 277.759 252.993 278.107C253.062 278.387 253.115 278.693 253.154 279.025C253.197 279.357 253.218 279.715 253.218 280.1V280.227C253.218 280.62 253.197 280.987 253.154 281.325C253.115 281.664 253.062 281.973 252.993 282.253C252.912 282.559 252.817 282.836 252.71 283.083C252.606 283.33 252.49 283.552 252.363 283.747C252.256 283.913 252.145 284.058 252.031 284.182C251.917 284.309 251.803 284.414 251.689 284.499L251.948 285.231C252.134 285.15 252.324 285.031 252.52 284.875C252.715 284.719 252.905 284.528 253.091 284.304C253.276 284.082 253.451 283.828 253.613 283.542C253.779 283.259 253.924 282.945 254.048 282.6C254.172 282.255 254.269 281.883 254.341 281.486C254.412 281.086 254.448 280.663 254.448 280.217Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M257.5 280C257.5 283.114 255.765 285.978 252.873 288.081C249.982 290.184 245.962 291.5 241.5 291.5C237.038 291.5 233.018 290.184 230.127 288.081C227.235 285.978 225.5 283.114 225.5 280C225.5 276.886 227.235 274.022 230.127 271.919C233.018 269.816 237.038 268.5 241.5 268.5C245.962 268.5 249.982 269.816 252.873 271.919C255.765 274.022 257.5 276.886 257.5 280Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M388.711 114.24C388.843 113.847 388.632 113.422 388.24 113.289L381.843 111.133C381.451 111.001 381.025 111.212 380.893 111.604C380.761 111.997 380.972 112.422 381.364 112.555L387.05 114.471L385.133 120.157C385.001 120.549 385.212 120.975 385.604 121.107C385.997 121.239 386.422 121.028 386.555 120.636L388.711 114.24ZM252 271C252.414 271.625 252.414 271.625 252.415 271.625C252.415 271.625 252.416 271.624 252.417 271.623C252.419 271.622 252.421 271.62 252.425 271.618C252.432 271.614 252.442 271.607 252.455 271.598C252.482 271.58 252.522 271.553 252.574 271.518C252.679 271.448 252.834 271.343 253.037 271.205C253.442 270.927 254.039 270.515 254.808 269.971C256.345 268.884 258.568 267.272 261.319 265.171C266.821 260.969 274.434 254.809 282.889 246.968C299.793 231.294 320.092 208.877 333.583 181.953L332.242 181.281C318.862 207.983 298.704 230.258 281.87 245.868C273.455 253.671 265.879 259.801 260.409 263.979C257.673 266.068 255.465 267.669 253.941 268.747C253.18 269.285 252.589 269.693 252.19 269.966C251.991 270.103 251.839 270.205 251.737 270.273C251.687 270.307 251.648 270.333 251.623 270.35C251.61 270.358 251.601 270.365 251.595 270.369C251.592 270.371 251.59 270.372 251.588 270.373C251.587 270.374 251.587 270.374 251.586 270.374C251.586 270.374 251.586 270.375 252 271ZM333.583 181.953C346.983 155.211 360.706 138.375 371.058 128.234C376.235 123.163 380.57 119.764 383.602 117.638C385.118 116.575 386.309 115.829 387.117 115.351C387.521 115.113 387.829 114.941 388.034 114.83C388.136 114.774 388.213 114.734 388.263 114.708C388.289 114.695 388.307 114.685 388.319 114.679C388.324 114.676 388.329 114.674 388.331 114.673C388.332 114.672 388.333 114.672 388.333 114.672C388.334 114.672 388.333 114.672 388.334 114.672C388.333 114.672 388.333 114.672 388 114C387.667 113.328 387.666 113.328 387.666 113.329C387.665 113.329 387.665 113.329 387.664 113.329C387.663 113.33 387.661 113.331 387.659 113.332C387.654 113.334 387.648 113.337 387.64 113.341C387.625 113.349 387.602 113.361 387.573 113.376C387.515 113.406 387.43 113.451 387.319 113.511C387.098 113.631 386.774 113.812 386.353 114.06C385.513 114.557 384.29 115.324 382.741 116.41C379.643 118.582 375.245 122.033 370.008 127.162C359.535 137.423 345.714 154.395 332.242 181.281L333.583 181.953Z\"\n      fill=\"url(#paint0_linear_5_241)\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"540.5\"\n      cy=\"81.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M539.772 82.9534H540.763C540.763 82.8478 540.765 82.758 540.771 82.684C540.776 82.6074 540.789 82.5375 540.81 82.4741C540.829 82.4107 540.861 82.3486 540.905 82.2879C540.95 82.2271 541.012 82.1571 541.092 82.0779C541.221 81.9643 541.349 81.8481 541.476 81.7293C541.605 81.6078 541.72 81.4797 541.821 81.345C541.921 81.2129 542.003 81.0703 542.066 80.9171C542.13 80.7613 542.161 80.5896 542.161 80.4021C542.161 80.1485 542.119 79.9254 542.035 79.7325C541.95 79.5397 541.829 79.3773 541.67 79.2453C541.509 79.1158 541.312 79.0181 541.08 78.9521C540.847 78.8861 540.585 78.853 540.291 78.853C540.03 78.853 539.787 78.8861 539.562 78.9521C539.338 79.0155 539.142 79.1132 538.976 79.2453C538.81 79.3773 538.678 79.5437 538.58 79.7444C538.482 79.9425 538.432 80.1763 538.429 80.4457H539.535C539.537 80.3242 539.56 80.2198 539.602 80.1327C539.647 80.0455 539.705 79.9742 539.776 79.9188C539.845 79.8633 539.924 79.8237 540.014 79.7999C540.104 79.7735 540.196 79.7603 540.291 79.7603C540.413 79.7603 540.52 79.7735 540.612 79.7999C540.707 79.8263 540.788 79.8659 540.854 79.9188C540.917 79.9769 540.966 80.0508 541.001 80.1406C541.035 80.2278 541.052 80.3321 541.052 80.4536C541.052 80.5539 541.03 80.6543 540.985 80.7547C540.94 80.855 540.882 80.9528 540.81 81.0478C540.736 81.1456 540.655 81.2407 540.565 81.3331C540.475 81.4229 540.385 81.5087 540.295 81.5906C540.171 81.6883 540.075 81.7808 540.006 81.8679C539.937 81.9524 539.886 82.0449 539.852 82.1452C539.817 82.2483 539.795 82.3631 539.784 82.4899C539.776 82.6167 539.772 82.7712 539.772 82.9534ZM539.61 84.1538C539.61 84.3229 539.667 84.4655 539.78 84.5817C539.894 84.6953 540.051 84.7521 540.252 84.7521C540.447 84.7521 540.603 84.6953 540.719 84.5817C540.838 84.4655 540.898 84.3229 540.898 84.1538C540.898 83.9795 540.838 83.8343 540.719 83.7181C540.603 83.5992 540.447 83.5398 540.252 83.5398C540.051 83.5398 539.894 83.5992 539.78 83.7181C539.667 83.8343 539.61 83.9795 539.61 84.1538Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M399.895 85H400.902L401.385 81.8861L401.429 81.5929L401.472 81.8861L401.975 85H402.982L403.782 79.2317H402.76L402.367 82.4645L402.34 82.7062L402.304 82.4685L401.821 79.2317H401.024L400.569 82.4447L400.533 82.6824L400.505 82.4566L400.121 79.2317H399.103L399.895 85ZM405.533 81.3037V78.9148H404.432V85H405.533V81.9059C405.575 81.8504 405.621 81.8002 405.672 81.7553C405.724 81.7104 405.782 81.6721 405.846 81.6404C405.915 81.6035 405.991 81.5757 406.076 81.5573C406.16 81.5388 406.251 81.5295 406.349 81.5295C406.476 81.5295 406.589 81.5467 406.69 81.581C406.79 81.6127 406.876 81.6629 406.947 81.7316C407.019 81.8002 407.073 81.89 407.11 82.001C407.149 82.1119 407.169 82.244 407.169 82.3971V85H408.27V82.4051C408.27 82.0908 408.232 81.8227 408.156 81.6008C408.082 81.3763 407.977 81.1928 407.843 81.0501C407.708 80.9075 407.547 80.8032 407.359 80.7372C407.172 80.6685 406.966 80.6342 406.741 80.6342C406.588 80.6342 406.443 80.6566 406.305 80.7015C406.168 80.7464 406.043 80.8098 405.929 80.8917C405.855 80.9445 405.784 81.0066 405.715 81.0779C405.649 81.1466 405.588 81.2218 405.533 81.3037ZM411.384 85.0792C411.799 85.0792 412.158 84.9987 412.462 84.8376C412.766 84.6765 412.988 84.4969 413.128 84.2988L412.577 83.7045C412.45 83.8683 412.285 83.9911 412.082 84.073C411.878 84.1548 411.668 84.1958 411.452 84.1958C411.299 84.1958 411.157 84.172 411.028 84.1245C410.898 84.0769 410.784 84.0096 410.683 83.9224C410.585 83.8379 410.508 83.7441 410.449 83.6411C410.391 83.5355 410.344 83.3968 410.307 83.2251V83.2133H413.215V82.7458C413.215 82.4315 413.171 82.1449 413.084 81.8861C412.997 81.6246 412.87 81.4014 412.704 81.2165C412.535 81.0317 412.329 80.889 412.086 80.7887C411.845 80.6857 411.571 80.6342 411.262 80.6342C410.963 80.6342 410.687 80.6883 410.434 80.7966C410.18 80.9049 409.961 81.0568 409.776 81.2522C409.591 81.4476 409.447 81.6814 409.344 81.9534C409.241 82.2228 409.19 82.5213 409.19 82.8488V83.0072C409.19 83.2951 409.241 83.5659 409.344 83.8194C409.45 84.0703 409.599 84.2882 409.792 84.4731C409.985 84.6606 410.216 84.8085 410.485 84.9168C410.754 85.0251 411.054 85.0792 411.384 85.0792ZM411.254 81.5256C411.394 81.5256 411.516 81.548 411.622 81.5929C411.73 81.6352 411.821 81.6933 411.895 81.7672C411.969 81.8438 412.028 81.9336 412.07 82.0366C412.112 82.1396 412.133 82.2492 412.133 82.3654V82.4526H410.327C410.353 82.3126 410.393 82.1858 410.445 82.0723C410.498 81.9587 410.564 81.861 410.644 81.7791C410.72 81.6972 410.81 81.6352 410.913 81.5929C411.016 81.548 411.13 81.5256 411.254 81.5256ZM414.177 85H415.283V81.9534C415.32 81.8953 415.361 81.8425 415.406 81.795C415.45 81.7474 415.501 81.7065 415.556 81.6721C415.625 81.6246 415.703 81.5889 415.79 81.5652C415.88 81.5414 415.977 81.5295 416.083 81.5295C416.21 81.5295 416.323 81.5427 416.424 81.5691C416.524 81.5929 416.61 81.6365 416.681 81.6999C416.753 81.7633 416.807 81.8504 416.844 81.9613C416.883 82.0696 416.903 82.2083 416.903 82.3773V85H418.004V82.3615C418.004 82.0498 417.967 81.7857 417.894 81.5691C417.822 81.3499 417.722 81.1703 417.592 81.0303C417.46 80.893 417.305 80.7926 417.125 80.7292C416.945 80.6659 416.747 80.6342 416.531 80.6342C416.362 80.6342 416.202 80.6579 416.051 80.7055C415.901 80.753 415.762 80.8217 415.635 80.9115C415.561 80.9643 415.491 81.0237 415.425 81.0898C415.359 81.1558 415.299 81.2284 415.243 81.3077L415.176 80.7134H414.177V85ZM423.923 85H425.029V81.9534C425.066 81.8953 425.107 81.8425 425.151 81.795C425.196 81.7474 425.247 81.7065 425.302 81.6721C425.371 81.6246 425.449 81.5889 425.536 81.5652C425.626 81.5414 425.723 81.5295 425.829 81.5295C425.956 81.5295 426.069 81.5427 426.17 81.5691C426.27 81.5929 426.356 81.6365 426.427 81.6999C426.498 81.7633 426.553 81.8504 426.59 81.9613C426.629 82.0696 426.649 82.2083 426.649 82.3773V85H427.75V82.3615C427.75 82.0498 427.713 81.7857 427.639 81.5691C427.568 81.3499 427.468 81.1703 427.338 81.0303C427.206 80.893 427.05 80.7926 426.871 80.7292C426.691 80.6659 426.493 80.6342 426.277 80.6342C426.108 80.6342 425.948 80.6579 425.797 80.7055C425.647 80.753 425.508 80.8217 425.381 80.9115C425.307 80.9643 425.237 81.0237 425.171 81.0898C425.105 81.1558 425.044 81.2284 424.989 81.3077L424.922 80.7134H423.923V85ZM428.646 82.8171V82.9003C428.646 83.2146 428.691 83.5051 428.78 83.7719C428.87 84.036 429.002 84.2658 429.177 84.4612C429.348 84.6566 429.56 84.8098 429.81 84.9208C430.064 85.0291 430.352 85.0832 430.674 85.0832C430.994 85.0832 431.279 85.0291 431.53 84.9208C431.781 84.8098 431.992 84.6566 432.164 84.4612C432.335 84.2658 432.466 84.036 432.556 83.7719C432.646 83.5051 432.691 83.2146 432.691 82.9003V82.8171C432.691 82.5054 432.646 82.2175 432.556 81.9534C432.466 81.6867 432.335 81.4556 432.164 81.2601C431.989 81.0647 431.777 80.9115 431.526 80.8006C431.275 80.6896 430.988 80.6342 430.666 80.6342C430.344 80.6342 430.057 80.6896 429.806 80.8006C429.558 80.9115 429.348 81.0647 429.177 81.2601C429.002 81.4556 428.87 81.6867 428.78 81.9534C428.691 82.2175 428.646 82.5054 428.646 82.8171ZM429.747 82.9003V82.8171C429.747 82.6428 429.764 82.4777 429.799 82.3219C429.833 82.166 429.887 82.0287 429.961 81.9098C430.035 81.791 430.13 81.6972 430.246 81.6286C430.362 81.5599 430.502 81.5256 430.666 81.5256C430.833 81.5256 430.974 81.5599 431.09 81.6286C431.206 81.6972 431.301 81.791 431.375 81.9098C431.447 82.0287 431.499 82.166 431.534 82.3219C431.568 82.4777 431.585 82.6428 431.585 82.8171V82.9003C431.585 83.0799 431.568 83.2489 431.534 83.4074C431.499 83.5632 431.447 83.6992 431.375 83.8154C431.301 83.9343 431.206 84.0281 431.09 84.0967C430.974 84.1654 430.835 84.1997 430.674 84.1997C430.508 84.1997 430.365 84.1654 430.246 84.0967C430.13 84.0281 430.035 83.9343 429.961 83.8154C429.887 83.6992 429.833 83.5632 429.799 83.4074C429.764 83.2489 429.747 83.0799 429.747 82.9003ZM433.554 82.825V82.9082C433.554 83.2199 433.593 83.5091 433.669 83.7758C433.746 84.0399 433.857 84.2684 434.002 84.4612C434.145 84.654 434.319 84.8059 434.525 84.9168C434.734 85.0251 434.969 85.0792 435.23 85.0792C435.47 85.0792 435.682 85.033 435.864 84.9406C436.046 84.8481 436.205 84.7187 436.339 84.5523L436.395 85H437.389V78.9148H436.284V81.0977C436.152 80.9498 436 80.8362 435.828 80.757C435.659 80.6751 435.463 80.6342 435.238 80.6342C434.971 80.6342 434.734 80.687 434.525 80.7926C434.319 80.8983 434.143 81.0475 433.998 81.2403C433.853 81.4331 433.742 81.6642 433.665 81.9336C433.591 82.203 433.554 82.5001 433.554 82.825ZM434.656 82.9082V82.825C434.656 82.6454 434.671 82.4777 434.703 82.3219C434.735 82.1634 434.785 82.0247 434.854 81.9059C434.922 81.7897 435.011 81.6986 435.119 81.6325C435.23 81.5639 435.363 81.5295 435.519 81.5295C435.707 81.5295 435.863 81.5705 435.987 81.6523C436.111 81.7316 436.21 81.8438 436.284 81.9891V83.7243C436.21 83.8669 436.11 83.9792 435.983 84.0611C435.859 84.1429 435.702 84.1839 435.511 84.1839C435.356 84.1839 435.223 84.1509 435.115 84.0848C435.007 84.0188 434.918 83.9277 434.85 83.8115C434.781 83.6979 434.731 83.5645 434.699 83.4113C434.67 83.2555 434.656 83.0878 434.656 82.9082ZM440.622 85.0792C441.037 85.0792 441.396 84.9987 441.7 84.8376C442.003 84.6765 442.225 84.4969 442.365 84.2988L441.814 83.7045C441.688 83.8683 441.523 83.9911 441.319 84.073C441.116 84.1548 440.906 84.1958 440.689 84.1958C440.536 84.1958 440.395 84.172 440.265 84.1245C440.136 84.0769 440.021 84.0096 439.921 83.9224C439.823 83.8379 439.745 83.7441 439.687 83.6411C439.629 83.5355 439.581 83.3968 439.544 83.2251V83.2133H442.452V82.7458C442.452 82.4315 442.409 82.1449 442.322 81.8861C442.234 81.6246 442.108 81.4014 441.941 81.2165C441.772 81.0317 441.566 80.889 441.323 80.7887C441.083 80.6857 440.808 80.6342 440.499 80.6342C440.201 80.6342 439.925 80.6883 439.671 80.7966C439.418 80.9049 439.198 81.0568 439.014 81.2522C438.829 81.4476 438.685 81.6814 438.582 81.9534C438.479 82.2228 438.427 82.5213 438.427 82.8488V83.0072C438.427 83.2951 438.479 83.5659 438.582 83.8194C438.687 84.0703 438.837 84.2882 439.029 84.4731C439.222 84.6606 439.453 84.8085 439.723 84.9168C439.992 85.0251 440.292 85.0792 440.622 85.0792ZM440.491 81.5256C440.631 81.5256 440.754 81.548 440.86 81.5929C440.968 81.6352 441.059 81.6933 441.133 81.7672C441.207 81.8438 441.265 81.9336 441.307 82.0366C441.35 82.1396 441.371 82.2492 441.371 82.3654V82.4526H439.564C439.591 82.3126 439.63 82.1858 439.683 82.0723C439.736 81.9587 439.802 81.861 439.881 81.7791C439.958 81.6972 440.048 81.6352 440.151 81.5929C440.254 81.548 440.367 81.5256 440.491 81.5256ZM446.113 85V79.2317H446.054L443.542 80.1389V81.0977L445 80.5747V85H446.113ZM455.059 84.1997C454.882 84.1997 454.735 84.1641 454.619 84.0928C454.505 84.0215 454.415 83.9264 454.349 83.8075C454.281 83.6913 454.233 83.5566 454.207 83.4034C454.18 83.2476 454.167 83.0865 454.167 82.9201V82.8012C454.167 82.6375 454.18 82.479 454.207 82.3258C454.236 82.1726 454.285 82.0366 454.353 81.9178C454.419 81.7989 454.509 81.7038 454.623 81.6325C454.736 81.5612 454.88 81.5256 455.055 81.5256C455.173 81.5256 455.283 81.5467 455.383 81.5889C455.484 81.6286 455.57 81.6827 455.641 81.7514C455.712 81.82 455.766 81.9019 455.803 81.997C455.84 82.0921 455.856 82.1924 455.851 82.2981H456.889C456.894 82.0445 456.852 81.8161 456.762 81.6127C456.672 81.4067 456.547 81.2311 456.386 81.0858C456.222 80.9432 456.028 80.8323 455.803 80.753C455.579 80.6738 455.335 80.6342 455.07 80.6342C454.74 80.6342 454.45 80.691 454.199 80.8045C453.951 80.9181 453.742 81.0726 453.573 81.268C453.404 81.4635 453.277 81.6933 453.193 81.9574C453.108 82.2189 453.066 82.5001 453.066 82.8012V82.9201C453.066 83.2212 453.108 83.5038 453.193 83.7679C453.28 84.0294 453.408 84.2578 453.577 84.4533C453.743 84.6487 453.952 84.8032 454.203 84.9168C454.454 85.0277 454.746 85.0832 455.078 85.0832C455.324 85.0832 455.556 85.0449 455.776 84.9683C455.998 84.8891 456.192 84.7808 456.358 84.6434C456.524 84.5061 456.655 84.3424 456.75 84.1522C456.848 83.962 456.894 83.756 456.889 83.5342H455.851C455.856 83.6345 455.838 83.7256 455.795 83.8075C455.756 83.8894 455.699 83.9594 455.625 84.0175C455.551 84.0756 455.465 84.1205 455.368 84.1522C455.27 84.1839 455.167 84.1997 455.059 84.1997ZM459.135 81.3037V78.9148H458.034V85H459.135V81.9059C459.177 81.8504 459.224 81.8002 459.274 81.7553C459.327 81.7104 459.385 81.6721 459.448 81.6404C459.517 81.6035 459.593 81.5757 459.678 81.5573C459.762 81.5388 459.854 81.5295 459.951 81.5295C460.078 81.5295 460.192 81.5467 460.292 81.581C460.392 81.6127 460.478 81.6629 460.55 81.7316C460.621 81.8002 460.675 81.89 460.712 82.001C460.752 82.1119 460.771 82.244 460.771 82.3971V85H461.873V82.4051C461.873 82.0908 461.834 81.8227 461.758 81.6008C461.684 81.3763 461.58 81.1928 461.445 81.0501C461.31 80.9075 461.149 80.8032 460.962 80.7372C460.774 80.6685 460.568 80.6342 460.344 80.6342C460.19 80.6342 460.045 80.6566 459.908 80.7015C459.77 80.7464 459.645 80.8098 459.531 80.8917C459.457 80.9445 459.386 81.0066 459.317 81.0779C459.251 81.1466 459.191 81.2218 459.135 81.3037ZM465.585 85H466.702V84.9327C466.647 84.8244 466.604 84.6949 466.575 84.5444C466.546 84.3939 466.532 84.2037 466.532 83.9739V82.1357C466.532 81.8874 466.486 81.6695 466.393 81.482C466.301 81.2918 466.173 81.1347 466.009 81.0105C465.845 80.8864 465.651 80.7926 465.426 80.7292C465.205 80.6659 464.964 80.6342 464.705 80.6342C464.418 80.6342 464.161 80.6711 463.937 80.7451C463.715 80.8164 463.527 80.9141 463.374 81.0383C463.218 81.1624 463.1 81.3063 463.018 81.4701C462.938 81.6338 462.899 81.8068 462.899 81.9891H464C464 81.9125 464.011 81.8425 464.032 81.7791C464.056 81.7157 464.091 81.6616 464.139 81.6167C464.192 81.5665 464.26 81.5282 464.345 81.5018C464.429 81.4727 464.53 81.4582 464.646 81.4582C464.778 81.4582 464.893 81.4754 464.991 81.5097C465.091 81.5414 465.174 81.5876 465.24 81.6484C465.304 81.7065 465.351 81.7765 465.383 81.8583C465.415 81.9376 465.43 82.0274 465.43 82.1277V82.3813H464.816C464.499 82.3813 464.218 82.4103 463.972 82.4685C463.729 82.5239 463.525 82.6058 463.358 82.7141C463.174 82.8329 463.035 82.9848 462.942 83.1697C462.85 83.3519 462.804 83.5619 462.804 83.7996C462.804 83.9845 462.841 84.1562 462.915 84.3146C462.989 84.4704 463.092 84.6051 463.224 84.7187C463.356 84.8323 463.513 84.9208 463.695 84.9842C463.88 85.0475 464.082 85.0792 464.301 85.0792C464.436 85.0792 464.561 85.066 464.678 85.0396C464.794 85.0158 464.901 84.9815 464.999 84.9366C465.094 84.8944 465.181 84.8442 465.26 84.7861C465.339 84.728 465.409 84.6659 465.47 84.5999C465.483 84.6765 465.499 84.7491 465.518 84.8178C465.536 84.8864 465.558 84.9472 465.585 85ZM464.535 84.2275C464.432 84.2275 464.341 84.2156 464.262 84.1918C464.185 84.1654 464.12 84.1311 464.068 84.0888C464.015 84.0439 463.974 83.9898 463.945 83.9264C463.918 83.8603 463.905 83.789 463.905 83.7124C463.905 83.6147 463.924 83.5249 463.961 83.443C463.998 83.3585 464.054 83.2859 464.131 83.2251C464.208 83.167 464.307 83.1221 464.428 83.0904C464.55 83.0561 464.696 83.0389 464.868 83.0389H465.43V83.7758C465.399 83.8313 465.355 83.8868 465.3 83.9422C465.244 83.995 465.178 84.0426 465.102 84.0848C465.025 84.1271 464.939 84.1614 464.844 84.1878C464.749 84.2143 464.646 84.2275 464.535 84.2275ZM467.78 85H468.885V81.9534C468.922 81.8953 468.963 81.8425 469.008 81.795C469.053 81.7474 469.103 81.7065 469.158 81.6721C469.227 81.6246 469.305 81.5889 469.392 81.5652C469.482 81.5414 469.58 81.5295 469.685 81.5295C469.812 81.5295 469.926 81.5427 470.026 81.5691C470.126 81.5929 470.212 81.6365 470.284 81.6999C470.355 81.7633 470.409 81.8504 470.446 81.9613C470.486 82.0696 470.505 82.2083 470.505 82.3773V85H471.607V82.3615C471.607 82.0498 471.57 81.7857 471.496 81.5691C471.425 81.3499 471.324 81.1703 471.195 81.0303C471.063 80.893 470.907 80.7926 470.727 80.7292C470.548 80.6659 470.35 80.6342 470.133 80.6342C469.964 80.6342 469.804 80.6579 469.654 80.7055C469.503 80.753 469.364 80.8217 469.238 80.9115C469.164 80.9643 469.094 81.0237 469.028 81.0898C468.962 81.1558 468.901 81.2284 468.845 81.3077L468.778 80.7134H467.78V85ZM472.542 82.825V82.9082C472.542 83.2199 472.581 83.5091 472.661 83.7758C472.742 84.0399 472.859 84.2684 473.009 84.4612C473.16 84.654 473.341 84.8059 473.552 84.9168C473.766 85.0251 474.006 85.0792 474.273 85.0792C474.408 85.0792 474.533 85.0647 474.649 85.0357C474.768 85.0066 474.876 84.9657 474.974 84.9128C475.04 84.8759 475.102 84.8336 475.16 84.7861C475.219 84.7385 475.274 84.6857 475.327 84.6276V84.8732C475.327 85.0185 475.306 85.1492 475.263 85.2654C475.224 85.3816 475.166 85.4794 475.089 85.5586C475.005 85.6458 474.899 85.7118 474.772 85.7567C474.648 85.8016 474.505 85.824 474.344 85.824C474.244 85.824 474.146 85.8135 474.051 85.7923C473.959 85.7739 473.869 85.7448 473.782 85.7052C473.692 85.6656 473.606 85.6141 473.524 85.5507C473.442 85.4899 473.366 85.4186 473.294 85.3367L472.799 86.0063C472.892 86.1251 473.003 86.2268 473.132 86.3113C473.261 86.3985 473.399 86.4698 473.544 86.5253C473.689 86.5807 473.836 86.6217 473.984 86.6481C474.132 86.6745 474.27 86.6877 474.4 86.6877C474.701 86.6877 474.976 86.6468 475.224 86.5649C475.475 86.4857 475.69 86.3681 475.87 86.2123C476.047 86.0565 476.184 85.865 476.282 85.6378C476.382 85.4107 476.432 85.1519 476.432 84.8613V80.7134H475.43L475.386 81.1215C475.333 81.0554 475.275 80.996 475.212 80.9432C475.149 80.8877 475.08 80.8402 475.006 80.8006C474.908 80.7451 474.799 80.7042 474.677 80.6777C474.558 80.6487 474.426 80.6342 474.281 80.6342C474.012 80.6342 473.77 80.687 473.556 80.7926C473.342 80.8983 473.16 81.0475 473.009 81.2403C472.859 81.4331 472.742 81.6642 472.661 81.9336C472.581 82.203 472.542 82.5001 472.542 82.825ZM473.647 82.9082V82.825C473.647 82.6454 473.666 82.4777 473.703 82.3219C473.739 82.1634 473.796 82.0247 473.873 81.9059C473.947 81.7897 474.041 81.6986 474.154 81.6325C474.268 81.5639 474.402 81.5295 474.558 81.5295C474.643 81.5295 474.721 81.5374 474.792 81.5533C474.866 81.5691 474.933 81.5916 474.994 81.6206C475.065 81.655 475.129 81.6999 475.184 81.7553C475.24 81.8108 475.287 81.8755 475.327 81.9495V83.7639C475.29 83.83 475.246 83.8894 475.196 83.9422C475.146 83.995 475.088 84.0399 475.022 84.0769C474.958 84.1113 474.887 84.1377 474.808 84.1562C474.731 84.1746 474.645 84.1839 474.55 84.1839C474.394 84.1839 474.26 84.1509 474.146 84.0848C474.033 84.0188 473.939 83.9277 473.865 83.8115C473.791 83.6979 473.736 83.5645 473.699 83.4113C473.664 83.2555 473.647 83.0878 473.647 82.9082ZM479.605 85.0792C480.02 85.0792 480.379 84.9987 480.683 84.8376C480.987 84.6765 481.209 84.4969 481.349 84.2988L480.798 83.7045C480.671 83.8683 480.506 83.9911 480.303 84.073C480.099 84.1548 479.889 84.1958 479.673 84.1958C479.52 84.1958 479.378 84.172 479.249 84.1245C479.12 84.0769 479.005 84.0096 478.904 83.9224C478.807 83.8379 478.729 83.7441 478.671 83.6411C478.612 83.5355 478.565 83.3968 478.528 83.2251V83.2133H481.436V82.7458C481.436 82.4315 481.392 82.1449 481.305 81.8861C481.218 81.6246 481.091 81.4014 480.925 81.2165C480.756 81.0317 480.55 80.889 480.307 80.7887C480.066 80.6857 479.792 80.6342 479.483 80.6342C479.184 80.6342 478.908 80.6883 478.655 80.7966C478.401 80.9049 478.182 81.0568 477.997 81.2522C477.812 81.4476 477.668 81.6814 477.565 81.9534C477.462 82.2228 477.411 82.5213 477.411 82.8488V83.0072C477.411 83.2951 477.462 83.5659 477.565 83.8194C477.671 84.0703 477.82 84.2882 478.013 84.4731C478.206 84.6606 478.437 84.8085 478.706 84.9168C478.976 85.0251 479.275 85.0792 479.605 85.0792ZM479.475 81.5256C479.615 81.5256 479.738 81.548 479.843 81.5929C479.951 81.6352 480.043 81.6933 480.117 81.7672C480.191 81.8438 480.249 81.9336 480.291 82.0366C480.333 82.1396 480.354 82.2492 480.354 82.3654V82.4526H478.548C478.574 82.3126 478.614 82.1858 478.667 82.0723C478.719 81.9587 478.785 81.861 478.865 81.7791C478.941 81.6972 479.031 81.6352 479.134 81.5929C479.237 81.548 479.351 81.5256 479.475 81.5256ZM485.164 83.8234C485.164 83.8894 485.147 83.9501 485.112 84.0056C485.081 84.0611 485.032 84.1099 484.966 84.1522C484.897 84.1944 484.809 84.2288 484.7 84.2552C484.595 84.279 484.47 84.2908 484.328 84.2908C484.209 84.2908 484.093 84.279 483.979 84.2552C483.868 84.2314 483.769 84.1931 483.682 84.1403C483.595 84.0901 483.524 84.0241 483.468 83.9422C483.413 83.8577 483.381 83.7573 483.373 83.6411H482.323C482.323 83.8154 482.365 83.9898 482.45 84.1641C482.537 84.3357 482.664 84.4889 482.83 84.6236C482.997 84.761 483.203 84.8719 483.448 84.9564C483.697 85.0409 483.982 85.0832 484.304 85.0832C484.597 85.0832 484.863 85.0515 485.1 84.9881C485.338 84.9221 485.541 84.831 485.711 84.7148C485.877 84.5985 486.005 84.4612 486.095 84.3027C486.187 84.1416 486.233 83.966 486.233 83.7758C486.233 83.5698 486.187 83.3929 486.095 83.245C486.005 83.0944 485.88 82.9663 485.718 82.8607C485.557 82.7577 485.366 82.6731 485.144 82.6071C484.922 82.5411 484.682 82.4869 484.423 82.4447C484.243 82.4183 484.095 82.3879 483.979 82.3536C483.863 82.3166 483.772 82.2756 483.706 82.2307C483.637 82.1885 483.59 82.1409 483.563 82.0881C483.537 82.0327 483.524 81.9732 483.524 81.9098C483.524 81.8465 483.538 81.787 483.567 81.7316C483.599 81.6735 483.644 81.6233 483.702 81.581C483.765 81.5335 483.847 81.4965 483.948 81.4701C484.048 81.4437 484.165 81.4305 484.3 81.4305C484.459 81.4305 484.593 81.4503 484.704 81.4899C484.818 81.5295 484.908 81.5823 484.974 81.6484C485.021 81.6986 485.057 81.7553 485.081 81.8187C485.104 81.8795 485.116 81.9455 485.116 82.0168H486.218C486.218 81.8187 486.174 81.6352 486.087 81.4661C486 81.2971 485.874 81.1505 485.711 81.0264C485.544 80.9049 485.342 80.8098 485.104 80.7411C484.867 80.6698 484.599 80.6342 484.3 80.6342C484.015 80.6342 483.759 80.6698 483.532 80.7411C483.304 80.8124 483.112 80.9088 482.953 81.0303C482.795 81.1518 482.673 81.2931 482.589 81.4542C482.504 81.6154 482.462 81.7844 482.462 81.9613C482.462 82.1436 482.503 82.3047 482.585 82.4447C482.669 82.5847 482.785 82.7075 482.933 82.8131C483.081 82.9214 483.258 83.0138 483.464 83.0904C483.673 83.1644 483.903 83.2265 484.154 83.2766C484.352 83.3136 484.515 83.3506 484.645 83.3876C484.774 83.4245 484.879 83.4642 484.958 83.5064C485.034 83.5513 485.087 83.5989 485.116 83.649C485.148 83.6992 485.164 83.7573 485.164 83.8234ZM489.526 84.9128L489.53 84.0373H488.496V84.9643C488.496 85.2549 488.461 85.5031 488.393 85.7092C488.324 85.9178 488.239 86.1172 488.139 86.3074L488.721 86.6085C488.959 86.3972 489.152 86.137 489.3 85.828C489.45 85.519 489.526 85.2139 489.526 84.9128ZM499.814 85H500.813V80.7134H499.707V83.7204C499.673 83.789 499.632 83.8511 499.585 83.9066C499.537 83.962 499.483 84.0096 499.422 84.0492C499.351 84.0941 499.268 84.1284 499.173 84.1522C499.08 84.176 498.976 84.1878 498.86 84.1878C498.73 84.1878 498.621 84.172 498.531 84.1403C498.441 84.1086 498.368 84.0558 498.313 83.9818C498.257 83.9105 498.216 83.8154 498.19 83.6966C498.166 83.5777 498.154 83.4312 498.154 83.2568V80.7134H497.053V83.2489C497.053 83.5738 497.089 83.8524 497.16 84.0848C497.234 84.3146 497.337 84.5035 497.469 84.6514C497.601 84.8019 497.759 84.9115 497.944 84.9802C498.129 85.0489 498.333 85.0832 498.554 85.0832C498.797 85.0832 499.021 85.0224 499.224 84.901C499.43 84.7795 499.606 84.6117 499.751 84.3978L499.814 85ZM501.906 86.6481H503.007V84.6276C503.058 84.6831 503.11 84.7332 503.166 84.7781C503.221 84.823 503.28 84.864 503.34 84.901C503.443 84.9591 503.554 85.0026 503.673 85.0317C503.795 85.0634 503.927 85.0792 504.069 85.0792C504.339 85.0792 504.578 85.0238 504.786 84.9128C504.995 84.8019 505.171 84.6487 505.313 84.4533C505.453 84.2605 505.559 84.0307 505.63 83.7639C505.704 83.4972 505.741 83.208 505.741 82.8963V82.8131C505.741 82.4883 505.704 82.1924 505.63 81.9257C505.559 81.6563 505.452 81.4252 505.309 81.2324C505.167 81.0422 504.991 80.8956 504.782 80.7926C504.574 80.687 504.333 80.6342 504.061 80.6342C503.929 80.6342 503.805 80.6487 503.689 80.6777C503.575 80.7042 503.471 80.7425 503.376 80.7926C503.297 80.8349 503.223 80.8851 503.154 80.9432C503.085 80.9986 503.022 81.062 502.964 81.1333L502.924 80.7134H501.906V86.6481ZM504.64 82.8131V82.8963C504.64 83.0733 504.624 83.241 504.592 83.3995C504.56 83.5553 504.51 83.6926 504.442 83.8115C504.373 83.9303 504.283 84.0241 504.172 84.0928C504.064 84.1614 503.932 84.1958 503.776 84.1958C503.678 84.1958 503.59 84.1865 503.511 84.168C503.431 84.1469 503.361 84.1179 503.301 84.0809C503.237 84.0413 503.18 83.9937 503.13 83.9383C503.083 83.8828 503.042 83.8207 503.007 83.7521V81.9613C503.044 81.8874 503.088 81.8227 503.138 81.7672C503.191 81.7118 503.252 81.6655 503.32 81.6286C503.381 81.5969 503.449 81.5731 503.522 81.5573C503.596 81.5388 503.678 81.5295 503.768 81.5295C503.924 81.5295 504.056 81.5625 504.164 81.6286C504.275 81.6946 504.366 81.7844 504.438 81.898C504.506 82.0142 504.557 82.1515 504.588 82.31C504.623 82.4658 504.64 82.6335 504.64 82.8131ZM506.648 82.825V82.9082C506.648 83.2199 506.687 83.5091 506.763 83.7758C506.84 84.0399 506.951 84.2684 507.096 84.4612C507.239 84.654 507.413 84.8059 507.619 84.9168C507.828 85.0251 508.063 85.0792 508.324 85.0792C508.564 85.0792 508.776 85.033 508.958 84.9406C509.14 84.8481 509.299 84.7187 509.433 84.5523L509.489 85H510.483V78.9148H509.378V81.0977C509.246 80.9498 509.094 80.8362 508.922 80.757C508.753 80.6751 508.557 80.6342 508.332 80.6342C508.065 80.6342 507.828 80.687 507.619 80.7926C507.413 80.8983 507.237 81.0475 507.092 81.2403C506.947 81.4331 506.836 81.6642 506.759 81.9336C506.685 82.203 506.648 82.5001 506.648 82.825ZM507.75 82.9082V82.825C507.75 82.6454 507.766 82.4777 507.797 82.3219C507.829 82.1634 507.879 82.0247 507.948 81.9059C508.016 81.7897 508.105 81.6986 508.213 81.6325C508.324 81.5639 508.457 81.5295 508.613 81.5295C508.801 81.5295 508.957 81.5705 509.081 81.6523C509.205 81.7316 509.304 81.8438 509.378 81.9891V83.7243C509.304 83.8669 509.204 83.9792 509.077 84.0611C508.953 84.1429 508.796 84.1839 508.605 84.1839C508.45 84.1839 508.318 84.1509 508.209 84.0848C508.101 84.0188 508.012 83.9277 507.944 83.8115C507.875 83.6979 507.825 83.5645 507.793 83.4113C507.764 83.2555 507.75 83.0878 507.75 82.9082ZM514.314 85H515.431V84.9327C515.376 84.8244 515.334 84.6949 515.305 84.5444C515.276 84.3939 515.261 84.2037 515.261 83.9739V82.1357C515.261 81.8874 515.215 81.6695 515.122 81.482C515.03 81.2918 514.902 81.1347 514.738 81.0105C514.574 80.8864 514.38 80.7926 514.156 80.7292C513.934 80.6659 513.694 80.6342 513.435 80.6342C513.147 80.6342 512.891 80.6711 512.666 80.7451C512.444 80.8164 512.257 80.9141 512.104 81.0383C511.948 81.1624 511.829 81.3063 511.747 81.4701C511.668 81.6338 511.628 81.8068 511.628 81.9891H512.73C512.73 81.9125 512.74 81.8425 512.761 81.7791C512.785 81.7157 512.821 81.6616 512.868 81.6167C512.921 81.5665 512.99 81.5282 513.074 81.5018C513.159 81.4727 513.259 81.4582 513.375 81.4582C513.507 81.4582 513.622 81.4754 513.72 81.5097C513.82 81.5414 513.904 81.5876 513.97 81.6484C514.033 81.7065 514.081 81.7765 514.112 81.8583C514.144 81.9376 514.16 82.0274 514.16 82.1277V82.3813H513.546C513.229 82.3813 512.947 82.4103 512.702 82.4685C512.459 82.5239 512.254 82.6058 512.088 82.7141C511.903 82.8329 511.764 82.9848 511.672 83.1697C511.579 83.3519 511.533 83.5619 511.533 83.7996C511.533 83.9845 511.57 84.1562 511.644 84.3146C511.718 84.4704 511.821 84.6051 511.953 84.7187C512.085 84.8323 512.242 84.9208 512.425 84.9842C512.609 85.0475 512.811 85.0792 513.031 85.0792C513.165 85.0792 513.291 85.066 513.407 85.0396C513.523 85.0158 513.63 84.9815 513.728 84.9366C513.823 84.8944 513.91 84.8442 513.989 84.7861C514.069 84.728 514.139 84.6659 514.199 84.5999C514.213 84.6765 514.228 84.7491 514.247 84.8178C514.265 84.8864 514.288 84.9472 514.314 85ZM513.264 84.2275C513.161 84.2275 513.07 84.2156 512.991 84.1918C512.914 84.1654 512.85 84.1311 512.797 84.0888C512.744 84.0439 512.703 83.9898 512.674 83.9264C512.648 83.8603 512.634 83.789 512.634 83.7124C512.634 83.6147 512.653 83.5249 512.69 83.443C512.727 83.3585 512.784 83.2859 512.86 83.2251C512.937 83.167 513.036 83.1221 513.157 83.0904C513.279 83.0561 513.426 83.0389 513.597 83.0389H514.16V83.7758C514.128 83.8313 514.084 83.8868 514.029 83.9422C513.974 83.995 513.908 84.0426 513.831 84.0848C513.754 84.1271 513.668 84.1614 513.573 84.1878C513.478 84.2143 513.375 84.2275 513.264 84.2275ZM518.53 79.6635H517.428V80.7134H516.45V81.5256H517.428V83.4747C517.428 83.7573 517.465 84.0003 517.539 84.2037C517.613 84.4044 517.719 84.5695 517.856 84.6989C517.991 84.831 518.153 84.9287 518.343 84.9921C518.536 85.0528 518.75 85.0832 518.985 85.0832C519.107 85.0832 519.229 85.0766 519.354 85.0634C519.48 85.0528 519.602 85.037 519.718 85.0158C519.834 84.9947 519.944 84.9683 520.047 84.9366C520.15 84.9023 520.24 84.8627 520.316 84.8178L520.209 84.0611C520.159 84.0743 520.098 84.0875 520.027 84.1007C519.958 84.1139 519.884 84.1258 519.805 84.1363C519.723 84.1495 519.638 84.1601 519.548 84.168C519.461 84.176 519.375 84.1799 519.29 84.1799C519.174 84.1799 519.068 84.1667 518.973 84.1403C518.881 84.1139 518.802 84.069 518.736 84.0056C518.67 83.9449 518.618 83.863 518.581 83.76C518.547 83.6543 518.53 83.5236 518.53 83.3678V81.5256H520.13V80.7134H518.53V79.6635ZM523.462 85.0792C523.877 85.0792 524.236 84.9987 524.54 84.8376C524.843 84.6765 525.065 84.4969 525.205 84.2988L524.654 83.7045C524.528 83.8683 524.363 83.9911 524.159 84.073C523.956 84.1548 523.746 84.1958 523.529 84.1958C523.376 84.1958 523.235 84.172 523.105 84.1245C522.976 84.0769 522.861 84.0096 522.761 83.9224C522.663 83.8379 522.585 83.7441 522.527 83.6411C522.469 83.5355 522.421 83.3968 522.384 83.2251V83.2133H525.292V82.7458C525.292 82.4315 525.249 82.1449 525.161 81.8861C525.074 81.6246 524.948 81.4014 524.781 81.2165C524.612 81.0317 524.406 80.889 524.163 80.7887C523.923 80.6857 523.648 80.6342 523.339 80.6342C523.041 80.6342 522.765 80.6883 522.511 80.7966C522.258 80.9049 522.038 81.0568 521.853 81.2522C521.669 81.4476 521.525 81.6814 521.422 81.9534C521.319 82.2228 521.267 82.5213 521.267 82.8488V83.0072C521.267 83.2951 521.319 83.5659 521.422 83.8194C521.527 84.0703 521.676 84.2882 521.869 84.4731C522.062 84.6606 522.293 84.8085 522.563 84.9168C522.832 85.0251 523.132 85.0792 523.462 85.0792ZM523.331 81.5256C523.471 81.5256 523.594 81.548 523.7 81.5929C523.808 81.6352 523.899 81.6933 523.973 81.7672C524.047 81.8438 524.105 81.9336 524.147 82.0366C524.19 82.1396 524.211 82.2492 524.211 82.3654V82.4526H522.404C522.431 82.3126 522.47 82.1858 522.523 82.0723C522.576 81.9587 522.642 81.861 522.721 81.7791C522.798 81.6972 522.887 81.6352 522.99 81.5929C523.093 81.548 523.207 81.5256 523.331 81.5256Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"540.5\"\n      cy=\"110.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M539.772 111.953H540.763C540.763 111.848 540.765 111.758 540.771 111.684C540.776 111.607 540.789 111.537 540.81 111.474C540.829 111.411 540.861 111.349 540.905 111.288C540.95 111.227 541.012 111.157 541.092 111.078C541.221 110.964 541.349 110.848 541.476 110.729C541.605 110.608 541.72 110.48 541.821 110.345C541.921 110.213 542.003 110.07 542.066 109.917C542.13 109.761 542.161 109.59 542.161 109.402C542.161 109.149 542.119 108.925 542.035 108.733C541.95 108.54 541.829 108.377 541.67 108.245C541.509 108.116 541.312 108.018 541.08 107.952C540.847 107.886 540.585 107.853 540.291 107.853C540.03 107.853 539.787 107.886 539.562 107.952C539.338 108.015 539.142 108.113 538.976 108.245C538.81 108.377 538.678 108.544 538.58 108.744C538.482 108.943 538.432 109.176 538.429 109.446H539.535C539.537 109.324 539.56 109.22 539.602 109.133C539.647 109.046 539.705 108.974 539.776 108.919C539.845 108.863 539.924 108.824 540.014 108.8C540.104 108.773 540.196 108.76 540.291 108.76C540.413 108.76 540.52 108.773 540.612 108.8C540.707 108.826 540.788 108.866 540.854 108.919C540.917 108.977 540.966 109.051 541.001 109.141C541.035 109.228 541.052 109.332 541.052 109.454C541.052 109.554 541.03 109.654 540.985 109.755C540.94 109.855 540.882 109.953 540.81 110.048C540.736 110.146 540.655 110.241 540.565 110.333C540.475 110.423 540.385 110.509 540.295 110.591C540.171 110.688 540.075 110.781 540.006 110.868C539.937 110.952 539.886 111.045 539.852 111.145C539.817 111.248 539.795 111.363 539.784 111.49C539.776 111.617 539.772 111.771 539.772 111.953ZM539.61 113.154C539.61 113.323 539.667 113.466 539.78 113.582C539.894 113.695 540.051 113.752 540.252 113.752C540.447 113.752 540.603 113.695 540.719 113.582C540.838 113.466 540.898 113.323 540.898 113.154C540.898 112.98 540.838 112.834 540.719 112.718C540.603 112.599 540.447 112.54 540.252 112.54C540.051 112.54 539.894 112.599 539.78 112.718C539.667 112.834 539.61 112.98 539.61 113.154Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M399.895 114H400.902L401.385 110.886L401.429 110.593L401.472 110.886L401.975 114H402.982L403.782 108.232H402.76L402.367 111.464L402.34 111.706L402.304 111.468L401.821 108.232H401.024L400.569 111.445L400.533 111.682L400.505 111.457L400.121 108.232H399.103L399.895 114ZM405.533 110.304V107.915H404.432V114H405.533V110.906C405.575 110.85 405.621 110.8 405.672 110.755C405.724 110.71 405.782 110.672 405.846 110.64C405.915 110.603 405.991 110.576 406.076 110.557C406.16 110.539 406.251 110.53 406.349 110.53C406.476 110.53 406.589 110.547 406.69 110.581C406.79 110.613 406.876 110.663 406.947 110.732C407.019 110.8 407.073 110.89 407.11 111.001C407.149 111.112 407.169 111.244 407.169 111.397V114H408.27V111.405C408.27 111.091 408.232 110.823 408.156 110.601C408.082 110.376 407.977 110.193 407.843 110.05C407.708 109.908 407.547 109.803 407.359 109.737C407.172 109.669 406.966 109.634 406.741 109.634C406.588 109.634 406.443 109.657 406.305 109.702C406.168 109.746 406.043 109.81 405.929 109.892C405.855 109.945 405.784 110.007 405.715 110.078C405.649 110.147 405.588 110.222 405.533 110.304ZM411.384 114.079C411.799 114.079 412.158 113.999 412.462 113.838C412.766 113.676 412.988 113.497 413.128 113.299L412.577 112.705C412.45 112.868 412.285 112.991 412.082 113.073C411.878 113.155 411.668 113.196 411.452 113.196C411.299 113.196 411.157 113.172 411.028 113.124C410.898 113.077 410.784 113.01 410.683 112.922C410.585 112.838 410.508 112.744 410.449 112.641C410.391 112.535 410.344 112.397 410.307 112.225V112.213H413.215V111.746C413.215 111.431 413.171 111.145 413.084 110.886C412.997 110.625 412.87 110.401 412.704 110.217C412.535 110.032 412.329 109.889 412.086 109.789C411.845 109.686 411.571 109.634 411.262 109.634C410.963 109.634 410.687 109.688 410.434 109.797C410.18 109.905 409.961 110.057 409.776 110.252C409.591 110.448 409.447 110.681 409.344 110.953C409.241 111.223 409.19 111.521 409.19 111.849V112.007C409.19 112.295 409.241 112.566 409.344 112.819C409.45 113.07 409.599 113.288 409.792 113.473C409.985 113.661 410.216 113.809 410.485 113.917C410.754 114.025 411.054 114.079 411.384 114.079ZM411.254 110.526C411.394 110.526 411.516 110.548 411.622 110.593C411.73 110.635 411.821 110.693 411.895 110.767C411.969 110.844 412.028 110.934 412.07 111.037C412.112 111.14 412.133 111.249 412.133 111.365V111.453H410.327C410.353 111.313 410.393 111.186 410.445 111.072C410.498 110.959 410.564 110.861 410.644 110.779C410.72 110.697 410.81 110.635 410.913 110.593C411.016 110.548 411.13 110.526 411.254 110.526ZM414.177 114H415.283V110.953C415.32 110.895 415.361 110.842 415.406 110.795C415.45 110.747 415.501 110.706 415.556 110.672C415.625 110.625 415.703 110.589 415.79 110.565C415.88 110.541 415.977 110.53 416.083 110.53C416.21 110.53 416.323 110.543 416.424 110.569C416.524 110.593 416.61 110.636 416.681 110.7C416.753 110.763 416.807 110.85 416.844 110.961C416.883 111.07 416.903 111.208 416.903 111.377V114H418.004V111.361C418.004 111.05 417.967 110.786 417.894 110.569C417.822 110.35 417.722 110.17 417.592 110.03C417.46 109.893 417.305 109.793 417.125 109.729C416.945 109.666 416.747 109.634 416.531 109.634C416.362 109.634 416.202 109.658 416.051 109.705C415.901 109.753 415.762 109.822 415.635 109.911C415.561 109.964 415.491 110.024 415.425 110.09C415.359 110.156 415.299 110.228 415.243 110.308L415.176 109.713H414.177V114ZM423.923 114H425.029V110.953C425.066 110.895 425.107 110.842 425.151 110.795C425.196 110.747 425.247 110.706 425.302 110.672C425.371 110.625 425.449 110.589 425.536 110.565C425.626 110.541 425.723 110.53 425.829 110.53C425.956 110.53 426.069 110.543 426.17 110.569C426.27 110.593 426.356 110.636 426.427 110.7C426.498 110.763 426.553 110.85 426.59 110.961C426.629 111.07 426.649 111.208 426.649 111.377V114H427.75V111.361C427.75 111.05 427.713 110.786 427.639 110.569C427.568 110.35 427.468 110.17 427.338 110.03C427.206 109.893 427.05 109.793 426.871 109.729C426.691 109.666 426.493 109.634 426.277 109.634C426.108 109.634 425.948 109.658 425.797 109.705C425.647 109.753 425.508 109.822 425.381 109.911C425.307 109.964 425.237 110.024 425.171 110.09C425.105 110.156 425.044 110.228 424.989 110.308L424.922 109.713H423.923V114ZM428.646 111.817V111.9C428.646 112.215 428.691 112.505 428.78 112.772C428.87 113.036 429.002 113.266 429.177 113.461C429.348 113.657 429.56 113.81 429.81 113.921C430.064 114.029 430.352 114.083 430.674 114.083C430.994 114.083 431.279 114.029 431.53 113.921C431.781 113.81 431.992 113.657 432.164 113.461C432.335 113.266 432.466 113.036 432.556 112.772C432.646 112.505 432.691 112.215 432.691 111.9V111.817C432.691 111.505 432.646 111.218 432.556 110.953C432.466 110.687 432.335 110.456 432.164 110.26C431.989 110.065 431.777 109.911 431.526 109.801C431.275 109.69 430.988 109.634 430.666 109.634C430.344 109.634 430.057 109.69 429.806 109.801C429.558 109.911 429.348 110.065 429.177 110.26C429.002 110.456 428.87 110.687 428.78 110.953C428.691 111.218 428.646 111.505 428.646 111.817ZM429.747 111.9V111.817C429.747 111.643 429.764 111.478 429.799 111.322C429.833 111.166 429.887 111.029 429.961 110.91C430.035 110.791 430.13 110.697 430.246 110.629C430.362 110.56 430.502 110.526 430.666 110.526C430.833 110.526 430.974 110.56 431.09 110.629C431.206 110.697 431.301 110.791 431.375 110.91C431.447 111.029 431.499 111.166 431.534 111.322C431.568 111.478 431.585 111.643 431.585 111.817V111.9C431.585 112.08 431.568 112.249 431.534 112.407C431.499 112.563 431.447 112.699 431.375 112.815C431.301 112.934 431.206 113.028 431.09 113.097C430.974 113.165 430.835 113.2 430.674 113.2C430.508 113.2 430.365 113.165 430.246 113.097C430.13 113.028 430.035 112.934 429.961 112.815C429.887 112.699 429.833 112.563 429.799 112.407C429.764 112.249 429.747 112.08 429.747 111.9ZM433.554 111.825V111.908C433.554 112.22 433.593 112.509 433.669 112.776C433.746 113.04 433.857 113.268 434.002 113.461C434.145 113.654 434.319 113.806 434.525 113.917C434.734 114.025 434.969 114.079 435.23 114.079C435.47 114.079 435.682 114.033 435.864 113.941C436.046 113.848 436.205 113.719 436.339 113.552L436.395 114H437.389V107.915H436.284V110.098C436.152 109.95 436 109.836 435.828 109.757C435.659 109.675 435.463 109.634 435.238 109.634C434.971 109.634 434.734 109.687 434.525 109.793C434.319 109.898 434.143 110.048 433.998 110.24C433.853 110.433 433.742 110.664 433.665 110.934C433.591 111.203 433.554 111.5 433.554 111.825ZM434.656 111.908V111.825C434.656 111.645 434.671 111.478 434.703 111.322C434.735 111.163 434.785 111.025 434.854 110.906C434.922 110.79 435.011 110.699 435.119 110.633C435.23 110.564 435.363 110.53 435.519 110.53C435.707 110.53 435.863 110.57 435.987 110.652C436.111 110.732 436.21 110.844 436.284 110.989V112.724C436.21 112.867 436.11 112.979 435.983 113.061C435.859 113.143 435.702 113.184 435.511 113.184C435.356 113.184 435.223 113.151 435.115 113.085C435.007 113.019 434.918 112.928 434.85 112.811C434.781 112.698 434.731 112.565 434.699 112.411C434.67 112.256 434.656 112.088 434.656 111.908ZM440.622 114.079C441.037 114.079 441.396 113.999 441.7 113.838C442.003 113.676 442.225 113.497 442.365 113.299L441.814 112.705C441.688 112.868 441.523 112.991 441.319 113.073C441.116 113.155 440.906 113.196 440.689 113.196C440.536 113.196 440.395 113.172 440.265 113.124C440.136 113.077 440.021 113.01 439.921 112.922C439.823 112.838 439.745 112.744 439.687 112.641C439.629 112.535 439.581 112.397 439.544 112.225V112.213H442.452V111.746C442.452 111.431 442.409 111.145 442.322 110.886C442.234 110.625 442.108 110.401 441.941 110.217C441.772 110.032 441.566 109.889 441.323 109.789C441.083 109.686 440.808 109.634 440.499 109.634C440.201 109.634 439.925 109.688 439.671 109.797C439.418 109.905 439.198 110.057 439.014 110.252C438.829 110.448 438.685 110.681 438.582 110.953C438.479 111.223 438.427 111.521 438.427 111.849V112.007C438.427 112.295 438.479 112.566 438.582 112.819C438.687 113.07 438.837 113.288 439.029 113.473C439.222 113.661 439.453 113.809 439.723 113.917C439.992 114.025 440.292 114.079 440.622 114.079ZM440.491 110.526C440.631 110.526 440.754 110.548 440.86 110.593C440.968 110.635 441.059 110.693 441.133 110.767C441.207 110.844 441.265 110.934 441.307 111.037C441.35 111.14 441.371 111.249 441.371 111.365V111.453H439.564C439.591 111.313 439.63 111.186 439.683 111.072C439.736 110.959 439.802 110.861 439.881 110.779C439.958 110.697 440.048 110.635 440.151 110.593C440.254 110.548 440.367 110.526 440.491 110.526ZM447.187 114V113.117H444.655L445.741 111.968C445.928 111.775 446.098 111.591 446.252 111.417C446.405 111.24 446.537 111.067 446.648 110.898C446.756 110.729 446.839 110.559 446.897 110.387C446.958 110.213 446.989 110.03 446.989 109.84C446.989 109.589 446.949 109.361 446.87 109.155C446.79 108.946 446.676 108.768 446.525 108.62C446.372 108.472 446.182 108.357 445.955 108.275C445.73 108.193 445.471 108.152 445.178 108.152C444.872 108.152 444.592 108.203 444.338 108.303C444.087 108.401 443.873 108.535 443.696 108.707C443.517 108.879 443.378 109.08 443.28 109.309C443.183 109.536 443.134 109.778 443.134 110.034H444.239C444.239 109.878 444.259 109.74 444.298 109.618C444.338 109.497 444.396 109.395 444.473 109.313C444.547 109.234 444.639 109.175 444.75 109.135C444.864 109.093 444.994 109.072 445.142 109.072C445.256 109.072 445.359 109.09 445.451 109.127C445.546 109.164 445.628 109.217 445.697 109.286C445.763 109.357 445.815 109.443 445.851 109.543C445.888 109.643 445.907 109.758 445.907 109.888C445.907 109.975 445.892 110.065 445.863 110.157C445.837 110.25 445.793 110.349 445.733 110.454C445.669 110.563 445.587 110.681 445.487 110.811C445.387 110.94 445.264 111.084 445.119 111.243L443.253 113.247V114H447.187ZM455.059 113.2C454.882 113.2 454.735 113.164 454.619 113.093C454.505 113.021 454.415 112.926 454.349 112.808C454.281 112.691 454.233 112.557 454.207 112.403C454.18 112.248 454.167 112.086 454.167 111.92V111.801C454.167 111.637 454.18 111.479 454.207 111.326C454.236 111.173 454.285 111.037 454.353 110.918C454.419 110.799 454.509 110.704 454.623 110.633C454.736 110.561 454.88 110.526 455.055 110.526C455.173 110.526 455.283 110.547 455.383 110.589C455.484 110.629 455.57 110.683 455.641 110.751C455.712 110.82 455.766 110.902 455.803 110.997C455.84 111.092 455.856 111.192 455.851 111.298H456.889C456.894 111.045 456.852 110.816 456.762 110.613C456.672 110.407 456.547 110.231 456.386 110.086C456.222 109.943 456.028 109.832 455.803 109.753C455.579 109.674 455.335 109.634 455.07 109.634C454.74 109.634 454.45 109.691 454.199 109.805C453.951 109.918 453.742 110.073 453.573 110.268C453.404 110.463 453.277 110.693 453.193 110.957C453.108 111.219 453.066 111.5 453.066 111.801V111.92C453.066 112.221 453.108 112.504 453.193 112.768C453.28 113.029 453.408 113.258 453.577 113.453C453.743 113.649 453.952 113.803 454.203 113.917C454.454 114.028 454.746 114.083 455.078 114.083C455.324 114.083 455.556 114.045 455.776 113.968C455.998 113.889 456.192 113.781 456.358 113.643C456.524 113.506 456.655 113.342 456.75 113.152C456.848 112.962 456.894 112.756 456.889 112.534H455.851C455.856 112.635 455.838 112.726 455.795 112.808C455.756 112.889 455.699 112.959 455.625 113.017C455.551 113.076 455.465 113.12 455.368 113.152C455.27 113.184 455.167 113.2 455.059 113.2ZM459.135 110.304V107.915H458.034V114H459.135V110.906C459.177 110.85 459.224 110.8 459.274 110.755C459.327 110.71 459.385 110.672 459.448 110.64C459.517 110.603 459.593 110.576 459.678 110.557C459.762 110.539 459.854 110.53 459.951 110.53C460.078 110.53 460.192 110.547 460.292 110.581C460.392 110.613 460.478 110.663 460.55 110.732C460.621 110.8 460.675 110.89 460.712 111.001C460.752 111.112 460.771 111.244 460.771 111.397V114H461.873V111.405C461.873 111.091 461.834 110.823 461.758 110.601C461.684 110.376 461.58 110.193 461.445 110.05C461.31 109.908 461.149 109.803 460.962 109.737C460.774 109.669 460.568 109.634 460.344 109.634C460.19 109.634 460.045 109.657 459.908 109.702C459.77 109.746 459.645 109.81 459.531 109.892C459.457 109.945 459.386 110.007 459.317 110.078C459.251 110.147 459.191 110.222 459.135 110.304ZM465.585 114H466.702V113.933C466.647 113.824 466.604 113.695 466.575 113.544C466.546 113.394 466.532 113.204 466.532 112.974V111.136C466.532 110.887 466.486 110.67 466.393 110.482C466.301 110.292 466.173 110.135 466.009 110.011C465.845 109.886 465.651 109.793 465.426 109.729C465.205 109.666 464.964 109.634 464.705 109.634C464.418 109.634 464.161 109.671 463.937 109.745C463.715 109.816 463.527 109.914 463.374 110.038C463.218 110.162 463.1 110.306 463.018 110.47C462.938 110.634 462.899 110.807 462.899 110.989H464C464 110.912 464.011 110.842 464.032 110.779C464.056 110.716 464.091 110.662 464.139 110.617C464.192 110.566 464.26 110.528 464.345 110.502C464.429 110.473 464.53 110.458 464.646 110.458C464.778 110.458 464.893 110.475 464.991 110.51C465.091 110.541 465.174 110.588 465.24 110.648C465.304 110.706 465.351 110.776 465.383 110.858C465.415 110.938 465.43 111.027 465.43 111.128V111.381H464.816C464.499 111.381 464.218 111.41 463.972 111.468C463.729 111.524 463.525 111.606 463.358 111.714C463.174 111.833 463.035 111.985 462.942 112.17C462.85 112.352 462.804 112.562 462.804 112.8C462.804 112.984 462.841 113.156 462.915 113.315C462.989 113.47 463.092 113.605 463.224 113.719C463.356 113.832 463.513 113.921 463.695 113.984C463.88 114.048 464.082 114.079 464.301 114.079C464.436 114.079 464.561 114.066 464.678 114.04C464.794 114.016 464.901 113.982 464.999 113.937C465.094 113.894 465.181 113.844 465.26 113.786C465.339 113.728 465.409 113.666 465.47 113.6C465.483 113.676 465.499 113.749 465.518 113.818C465.536 113.886 465.558 113.947 465.585 114ZM464.535 113.227C464.432 113.227 464.341 113.216 464.262 113.192C464.185 113.165 464.12 113.131 464.068 113.089C464.015 113.044 463.974 112.99 463.945 112.926C463.918 112.86 463.905 112.789 463.905 112.712C463.905 112.615 463.924 112.525 463.961 112.443C463.998 112.359 464.054 112.286 464.131 112.225C464.208 112.167 464.307 112.122 464.428 112.09C464.55 112.056 464.696 112.039 464.868 112.039H465.43V112.776C465.399 112.831 465.355 112.887 465.3 112.942C465.244 112.995 465.178 113.043 465.102 113.085C465.025 113.127 464.939 113.161 464.844 113.188C464.749 113.214 464.646 113.227 464.535 113.227ZM467.78 114H468.885V110.953C468.922 110.895 468.963 110.842 469.008 110.795C469.053 110.747 469.103 110.706 469.158 110.672C469.227 110.625 469.305 110.589 469.392 110.565C469.482 110.541 469.58 110.53 469.685 110.53C469.812 110.53 469.926 110.543 470.026 110.569C470.126 110.593 470.212 110.636 470.284 110.7C470.355 110.763 470.409 110.85 470.446 110.961C470.486 111.07 470.505 111.208 470.505 111.377V114H471.607V111.361C471.607 111.05 471.57 110.786 471.496 110.569C471.425 110.35 471.324 110.17 471.195 110.03C471.063 109.893 470.907 109.793 470.727 109.729C470.548 109.666 470.35 109.634 470.133 109.634C469.964 109.634 469.804 109.658 469.654 109.705C469.503 109.753 469.364 109.822 469.238 109.911C469.164 109.964 469.094 110.024 469.028 110.09C468.962 110.156 468.901 110.228 468.845 110.308L468.778 109.713H467.78V114ZM472.542 111.825V111.908C472.542 112.22 472.581 112.509 472.661 112.776C472.742 113.04 472.859 113.268 473.009 113.461C473.16 113.654 473.341 113.806 473.552 113.917C473.766 114.025 474.006 114.079 474.273 114.079C474.408 114.079 474.533 114.065 474.649 114.036C474.768 114.007 474.876 113.966 474.974 113.913C475.04 113.876 475.102 113.834 475.16 113.786C475.219 113.739 475.274 113.686 475.327 113.628V113.873C475.327 114.018 475.306 114.149 475.263 114.265C475.224 114.382 475.166 114.479 475.089 114.559C475.005 114.646 474.899 114.712 474.772 114.757C474.648 114.802 474.505 114.824 474.344 114.824C474.244 114.824 474.146 114.813 474.051 114.792C473.959 114.774 473.869 114.745 473.782 114.705C473.692 114.666 473.606 114.614 473.524 114.551C473.442 114.49 473.366 114.419 473.294 114.337L472.799 115.006C472.892 115.125 473.003 115.227 473.132 115.311C473.261 115.398 473.399 115.47 473.544 115.525C473.689 115.581 473.836 115.622 473.984 115.648C474.132 115.674 474.27 115.688 474.4 115.688C474.701 115.688 474.976 115.647 475.224 115.565C475.475 115.486 475.69 115.368 475.87 115.212C476.047 115.056 476.184 114.865 476.282 114.638C476.382 114.411 476.432 114.152 476.432 113.861V109.713H475.43L475.386 110.121C475.333 110.055 475.275 109.996 475.212 109.943C475.149 109.888 475.08 109.84 475.006 109.801C474.908 109.745 474.799 109.704 474.677 109.678C474.558 109.649 474.426 109.634 474.281 109.634C474.012 109.634 473.77 109.687 473.556 109.793C473.342 109.898 473.16 110.048 473.009 110.24C472.859 110.433 472.742 110.664 472.661 110.934C472.581 111.203 472.542 111.5 472.542 111.825ZM473.647 111.908V111.825C473.647 111.645 473.666 111.478 473.703 111.322C473.739 111.163 473.796 111.025 473.873 110.906C473.947 110.79 474.041 110.699 474.154 110.633C474.268 110.564 474.402 110.53 474.558 110.53C474.643 110.53 474.721 110.537 474.792 110.553C474.866 110.569 474.933 110.592 474.994 110.621C475.065 110.655 475.129 110.7 475.184 110.755C475.24 110.811 475.287 110.876 475.327 110.949V112.764C475.29 112.83 475.246 112.889 475.196 112.942C475.146 112.995 475.088 113.04 475.022 113.077C474.958 113.111 474.887 113.138 474.808 113.156C474.731 113.175 474.645 113.184 474.55 113.184C474.394 113.184 474.26 113.151 474.146 113.085C474.033 113.019 473.939 112.928 473.865 112.811C473.791 112.698 473.736 112.565 473.699 112.411C473.664 112.256 473.647 112.088 473.647 111.908ZM479.605 114.079C480.02 114.079 480.379 113.999 480.683 113.838C480.987 113.676 481.209 113.497 481.349 113.299L480.798 112.705C480.671 112.868 480.506 112.991 480.303 113.073C480.099 113.155 479.889 113.196 479.673 113.196C479.52 113.196 479.378 113.172 479.249 113.124C479.12 113.077 479.005 113.01 478.904 112.922C478.807 112.838 478.729 112.744 478.671 112.641C478.612 112.535 478.565 112.397 478.528 112.225V112.213H481.436V111.746C481.436 111.431 481.392 111.145 481.305 110.886C481.218 110.625 481.091 110.401 480.925 110.217C480.756 110.032 480.55 109.889 480.307 109.789C480.066 109.686 479.792 109.634 479.483 109.634C479.184 109.634 478.908 109.688 478.655 109.797C478.401 109.905 478.182 110.057 477.997 110.252C477.812 110.448 477.668 110.681 477.565 110.953C477.462 111.223 477.411 111.521 477.411 111.849V112.007C477.411 112.295 477.462 112.566 477.565 112.819C477.671 113.07 477.82 113.288 478.013 113.473C478.206 113.661 478.437 113.809 478.706 113.917C478.976 114.025 479.275 114.079 479.605 114.079ZM479.475 110.526C479.615 110.526 479.738 110.548 479.843 110.593C479.951 110.635 480.043 110.693 480.117 110.767C480.191 110.844 480.249 110.934 480.291 111.037C480.333 111.14 480.354 111.249 480.354 111.365V111.453H478.548C478.574 111.313 478.614 111.186 478.667 111.072C478.719 110.959 478.785 110.861 478.865 110.779C478.941 110.697 479.031 110.635 479.134 110.593C479.237 110.548 479.351 110.526 479.475 110.526ZM485.164 112.823C485.164 112.889 485.147 112.95 485.112 113.006C485.081 113.061 485.032 113.11 484.966 113.152C484.897 113.194 484.809 113.229 484.7 113.255C484.595 113.279 484.47 113.291 484.328 113.291C484.209 113.291 484.093 113.279 483.979 113.255C483.868 113.231 483.769 113.193 483.682 113.14C483.595 113.09 483.524 113.024 483.468 112.942C483.413 112.858 483.381 112.757 483.373 112.641H482.323C482.323 112.815 482.365 112.99 482.45 113.164C482.537 113.336 482.664 113.489 482.83 113.624C482.997 113.761 483.203 113.872 483.448 113.956C483.697 114.041 483.982 114.083 484.304 114.083C484.597 114.083 484.863 114.052 485.1 113.988C485.338 113.922 485.541 113.831 485.711 113.715C485.877 113.599 486.005 113.461 486.095 113.303C486.187 113.142 486.233 112.966 486.233 112.776C486.233 112.57 486.187 112.393 486.095 112.245C486.005 112.094 485.88 111.966 485.718 111.861C485.557 111.758 485.366 111.673 485.144 111.607C484.922 111.541 484.682 111.487 484.423 111.445C484.243 111.418 484.095 111.388 483.979 111.354C483.863 111.317 483.772 111.276 483.706 111.231C483.637 111.188 483.59 111.141 483.563 111.088C483.537 111.033 483.524 110.973 483.524 110.91C483.524 110.846 483.538 110.787 483.567 110.732C483.599 110.673 483.644 110.623 483.702 110.581C483.765 110.533 483.847 110.497 483.948 110.47C484.048 110.444 484.165 110.43 484.3 110.43C484.459 110.43 484.593 110.45 484.704 110.49C484.818 110.53 484.908 110.582 484.974 110.648C485.021 110.699 485.057 110.755 485.081 110.819C485.104 110.879 485.116 110.946 485.116 111.017H486.218C486.218 110.819 486.174 110.635 486.087 110.466C486 110.297 485.874 110.151 485.711 110.026C485.544 109.905 485.342 109.81 485.104 109.741C484.867 109.67 484.599 109.634 484.3 109.634C484.015 109.634 483.759 109.67 483.532 109.741C483.304 109.812 483.112 109.909 482.953 110.03C482.795 110.152 482.673 110.293 482.589 110.454C482.504 110.615 482.462 110.784 482.462 110.961C482.462 111.144 482.503 111.305 482.585 111.445C482.669 111.585 482.785 111.707 482.933 111.813C483.081 111.921 483.258 112.014 483.464 112.09C483.673 112.164 483.903 112.226 484.154 112.277C484.352 112.314 484.515 112.351 484.645 112.388C484.774 112.425 484.879 112.464 484.958 112.506C485.034 112.551 485.087 112.599 485.116 112.649C485.148 112.699 485.164 112.757 485.164 112.823ZM489.526 113.913L489.53 113.037H488.496V113.964C488.496 114.255 488.461 114.503 488.393 114.709C488.324 114.918 488.239 115.117 488.139 115.307L488.721 115.608C488.959 115.397 489.152 115.137 489.3 114.828C489.45 114.519 489.526 114.214 489.526 113.913ZM499.814 114H500.813V109.713H499.707V112.72C499.673 112.789 499.632 112.851 499.585 112.907C499.537 112.962 499.483 113.01 499.422 113.049C499.351 113.094 499.268 113.128 499.173 113.152C499.08 113.176 498.976 113.188 498.86 113.188C498.73 113.188 498.621 113.172 498.531 113.14C498.441 113.109 498.368 113.056 498.313 112.982C498.257 112.911 498.216 112.815 498.19 112.697C498.166 112.578 498.154 112.431 498.154 112.257V109.713H497.053V112.249C497.053 112.574 497.089 112.852 497.16 113.085C497.234 113.315 497.337 113.503 497.469 113.651C497.601 113.802 497.759 113.912 497.944 113.98C498.129 114.049 498.333 114.083 498.554 114.083C498.797 114.083 499.021 114.022 499.224 113.901C499.43 113.779 499.606 113.612 499.751 113.398L499.814 114ZM501.906 115.648H503.007V113.628C503.058 113.683 503.11 113.733 503.166 113.778C503.221 113.823 503.28 113.864 503.34 113.901C503.443 113.959 503.554 114.003 503.673 114.032C503.795 114.063 503.927 114.079 504.069 114.079C504.339 114.079 504.578 114.024 504.786 113.913C504.995 113.802 505.171 113.649 505.313 113.453C505.453 113.26 505.559 113.031 505.63 112.764C505.704 112.497 505.741 112.208 505.741 111.896V111.813C505.741 111.488 505.704 111.192 505.63 110.926C505.559 110.656 505.452 110.425 505.309 110.232C505.167 110.042 504.991 109.896 504.782 109.793C504.574 109.687 504.333 109.634 504.061 109.634C503.929 109.634 503.805 109.649 503.689 109.678C503.575 109.704 503.471 109.742 503.376 109.793C503.297 109.835 503.223 109.885 503.154 109.943C503.085 109.999 503.022 110.062 502.964 110.133L502.924 109.713H501.906V115.648ZM504.64 111.813V111.896C504.64 112.073 504.624 112.241 504.592 112.399C504.56 112.555 504.51 112.693 504.442 112.811C504.373 112.93 504.283 113.024 504.172 113.093C504.064 113.161 503.932 113.196 503.776 113.196C503.678 113.196 503.59 113.187 503.511 113.168C503.431 113.147 503.361 113.118 503.301 113.081C503.237 113.041 503.18 112.994 503.13 112.938C503.083 112.883 503.042 112.821 503.007 112.752V110.961C503.044 110.887 503.088 110.823 503.138 110.767C503.191 110.712 503.252 110.666 503.32 110.629C503.381 110.597 503.449 110.573 503.522 110.557C503.596 110.539 503.678 110.53 503.768 110.53C503.924 110.53 504.056 110.563 504.164 110.629C504.275 110.695 504.366 110.784 504.438 110.898C504.506 111.014 504.557 111.152 504.588 111.31C504.623 111.466 504.64 111.634 504.64 111.813ZM506.648 111.825V111.908C506.648 112.22 506.687 112.509 506.763 112.776C506.84 113.04 506.951 113.268 507.096 113.461C507.239 113.654 507.413 113.806 507.619 113.917C507.828 114.025 508.063 114.079 508.324 114.079C508.564 114.079 508.776 114.033 508.958 113.941C509.14 113.848 509.299 113.719 509.433 113.552L509.489 114H510.483V107.915H509.378V110.098C509.246 109.95 509.094 109.836 508.922 109.757C508.753 109.675 508.557 109.634 508.332 109.634C508.065 109.634 507.828 109.687 507.619 109.793C507.413 109.898 507.237 110.048 507.092 110.24C506.947 110.433 506.836 110.664 506.759 110.934C506.685 111.203 506.648 111.5 506.648 111.825ZM507.75 111.908V111.825C507.75 111.645 507.766 111.478 507.797 111.322C507.829 111.163 507.879 111.025 507.948 110.906C508.016 110.79 508.105 110.699 508.213 110.633C508.324 110.564 508.457 110.53 508.613 110.53C508.801 110.53 508.957 110.57 509.081 110.652C509.205 110.732 509.304 110.844 509.378 110.989V112.724C509.304 112.867 509.204 112.979 509.077 113.061C508.953 113.143 508.796 113.184 508.605 113.184C508.45 113.184 508.318 113.151 508.209 113.085C508.101 113.019 508.012 112.928 507.944 112.811C507.875 112.698 507.825 112.565 507.793 112.411C507.764 112.256 507.75 112.088 507.75 111.908ZM514.314 114H515.431V113.933C515.376 113.824 515.334 113.695 515.305 113.544C515.276 113.394 515.261 113.204 515.261 112.974V111.136C515.261 110.887 515.215 110.67 515.122 110.482C515.03 110.292 514.902 110.135 514.738 110.011C514.574 109.886 514.38 109.793 514.156 109.729C513.934 109.666 513.694 109.634 513.435 109.634C513.147 109.634 512.891 109.671 512.666 109.745C512.444 109.816 512.257 109.914 512.104 110.038C511.948 110.162 511.829 110.306 511.747 110.47C511.668 110.634 511.628 110.807 511.628 110.989H512.73C512.73 110.912 512.74 110.842 512.761 110.779C512.785 110.716 512.821 110.662 512.868 110.617C512.921 110.566 512.99 110.528 513.074 110.502C513.159 110.473 513.259 110.458 513.375 110.458C513.507 110.458 513.622 110.475 513.72 110.51C513.82 110.541 513.904 110.588 513.97 110.648C514.033 110.706 514.081 110.776 514.112 110.858C514.144 110.938 514.16 111.027 514.16 111.128V111.381H513.546C513.229 111.381 512.947 111.41 512.702 111.468C512.459 111.524 512.254 111.606 512.088 111.714C511.903 111.833 511.764 111.985 511.672 112.17C511.579 112.352 511.533 112.562 511.533 112.8C511.533 112.984 511.57 113.156 511.644 113.315C511.718 113.47 511.821 113.605 511.953 113.719C512.085 113.832 512.242 113.921 512.425 113.984C512.609 114.048 512.811 114.079 513.031 114.079C513.165 114.079 513.291 114.066 513.407 114.04C513.523 114.016 513.63 113.982 513.728 113.937C513.823 113.894 513.91 113.844 513.989 113.786C514.069 113.728 514.139 113.666 514.199 113.6C514.213 113.676 514.228 113.749 514.247 113.818C514.265 113.886 514.288 113.947 514.314 114ZM513.264 113.227C513.161 113.227 513.07 113.216 512.991 113.192C512.914 113.165 512.85 113.131 512.797 113.089C512.744 113.044 512.703 112.99 512.674 112.926C512.648 112.86 512.634 112.789 512.634 112.712C512.634 112.615 512.653 112.525 512.69 112.443C512.727 112.359 512.784 112.286 512.86 112.225C512.937 112.167 513.036 112.122 513.157 112.09C513.279 112.056 513.426 112.039 513.597 112.039H514.16V112.776C514.128 112.831 514.084 112.887 514.029 112.942C513.974 112.995 513.908 113.043 513.831 113.085C513.754 113.127 513.668 113.161 513.573 113.188C513.478 113.214 513.375 113.227 513.264 113.227ZM518.53 108.664H517.428V109.713H516.45V110.526H517.428V112.475C517.428 112.757 517.465 113 517.539 113.204C517.613 113.404 517.719 113.569 517.856 113.699C517.991 113.831 518.153 113.929 518.343 113.992C518.536 114.053 518.75 114.083 518.985 114.083C519.107 114.083 519.229 114.077 519.354 114.063C519.48 114.053 519.602 114.037 519.718 114.016C519.834 113.995 519.944 113.968 520.047 113.937C520.15 113.902 520.24 113.863 520.316 113.818L520.209 113.061C520.159 113.074 520.098 113.087 520.027 113.101C519.958 113.114 519.884 113.126 519.805 113.136C519.723 113.15 519.638 113.16 519.548 113.168C519.461 113.176 519.375 113.18 519.29 113.18C519.174 113.18 519.068 113.167 518.973 113.14C518.881 113.114 518.802 113.069 518.736 113.006C518.67 112.945 518.618 112.863 518.581 112.76C518.547 112.654 518.53 112.524 518.53 112.368V110.526H520.13V109.713H518.53V108.664ZM523.462 114.079C523.877 114.079 524.236 113.999 524.54 113.838C524.843 113.676 525.065 113.497 525.205 113.299L524.654 112.705C524.528 112.868 524.363 112.991 524.159 113.073C523.956 113.155 523.746 113.196 523.529 113.196C523.376 113.196 523.235 113.172 523.105 113.124C522.976 113.077 522.861 113.01 522.761 112.922C522.663 112.838 522.585 112.744 522.527 112.641C522.469 112.535 522.421 112.397 522.384 112.225V112.213H525.292V111.746C525.292 111.431 525.249 111.145 525.161 110.886C525.074 110.625 524.948 110.401 524.781 110.217C524.612 110.032 524.406 109.889 524.163 109.789C523.923 109.686 523.648 109.634 523.339 109.634C523.041 109.634 522.765 109.688 522.511 109.797C522.258 109.905 522.038 110.057 521.853 110.252C521.669 110.448 521.525 110.681 521.422 110.953C521.319 111.223 521.267 111.521 521.267 111.849V112.007C521.267 112.295 521.319 112.566 521.422 112.819C521.527 113.07 521.676 113.288 521.869 113.473C522.062 113.661 522.293 113.809 522.563 113.917C522.832 114.025 523.132 114.079 523.462 114.079ZM523.331 110.526C523.471 110.526 523.594 110.548 523.7 110.593C523.808 110.635 523.899 110.693 523.973 110.767C524.047 110.844 524.105 110.934 524.147 111.037C524.19 111.14 524.211 111.249 524.211 111.365V111.453H522.404C522.431 111.313 522.47 111.186 522.523 111.072C522.576 110.959 522.642 110.861 522.721 110.779C522.798 110.697 522.887 110.635 522.99 110.593C523.093 110.548 523.207 110.526 523.331 110.526Z\"\n      fill=\"white\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"42\"\n      y=\"175\"\n      width=\"81\"\n      height=\"93\"\n      fill=\"#111111\"\n      fill-opacity=\"0.85\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_5_241\"\n        x1=\"262.904\"\n        y1=\"149.289\"\n        x2=\"326.451\"\n        y2=\"145.932\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M0 19C0 8.50659 8.50659 0 19 0H607C617.493 0 626 8.50659 626 19V283C626 293.493 617.493 302 607 302H19C8.5066 302 0 293.493 0 283V19Z\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"174\"\n      cy=\"87.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"215\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"133\"\n      cy=\"157.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"89\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"177\"\n      cy=\"229.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173 88L88 233.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M173.5 89L216 159\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M132 158L179 234\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M88.1167 232.468H90.6802C90.6802 232.194 90.687 231.962 90.7007 231.771C90.7144 231.572 90.7485 231.391 90.8032 231.227C90.8511 231.063 90.9331 230.902 91.0493 230.745C91.1655 230.588 91.3262 230.407 91.5312 230.202C91.8662 229.908 92.1978 229.607 92.5259 229.299C92.8608 228.985 93.1582 228.653 93.418 228.305C93.6777 227.963 93.8896 227.594 94.0537 227.197C94.2178 226.794 94.2998 226.35 94.2998 225.864C94.2998 225.208 94.1904 224.63 93.9717 224.131C93.7529 223.632 93.4385 223.212 93.0283 222.87C92.6113 222.535 92.1021 222.282 91.5005 222.111C90.8989 221.94 90.2188 221.855 89.46 221.855C88.7832 221.855 88.1543 221.94 87.5732 222.111C86.9922 222.275 86.4863 222.528 86.0557 222.87C85.625 223.212 85.2832 223.643 85.0303 224.162C84.7773 224.675 84.6475 225.28 84.6406 225.977H87.5015C87.5083 225.663 87.5664 225.393 87.6758 225.167C87.792 224.941 87.9424 224.757 88.127 224.613C88.3047 224.47 88.5098 224.367 88.7422 224.306C88.9746 224.237 89.2139 224.203 89.46 224.203C89.7744 224.203 90.0513 224.237 90.2905 224.306C90.5366 224.374 90.7451 224.477 90.916 224.613C91.0801 224.764 91.2065 224.955 91.2954 225.188C91.3843 225.413 91.4287 225.683 91.4287 225.998C91.4287 226.257 91.3706 226.517 91.2544 226.777C91.1382 227.037 90.9878 227.29 90.8032 227.536C90.6118 227.789 90.3999 228.035 90.1675 228.274C89.9351 228.506 89.7026 228.729 89.4702 228.94C89.1489 229.193 88.8994 229.433 88.7217 229.658C88.5439 229.877 88.4106 230.116 88.3218 230.376C88.2329 230.643 88.1748 230.94 88.1475 231.268C88.127 231.596 88.1167 231.996 88.1167 232.468ZM87.6963 235.575C87.6963 236.012 87.8433 236.381 88.1372 236.682C88.4312 236.976 88.8379 237.123 89.3574 237.123C89.8633 237.123 90.2666 236.976 90.5674 236.682C90.875 236.381 91.0288 236.012 91.0288 235.575C91.0288 235.124 90.875 234.748 90.5674 234.447C90.2666 234.139 89.8633 233.985 89.3574 233.985C88.8379 233.985 88.4312 234.139 88.1372 234.447C87.8433 234.748 87.6963 235.124 87.6963 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M175.117 232.468H177.68C177.68 232.194 177.687 231.962 177.701 231.771C177.714 231.572 177.749 231.391 177.803 231.227C177.851 231.063 177.933 230.902 178.049 230.745C178.166 230.588 178.326 230.407 178.531 230.202C178.866 229.908 179.198 229.607 179.526 229.299C179.861 228.985 180.158 228.653 180.418 228.305C180.678 227.963 180.89 227.594 181.054 227.197C181.218 226.794 181.3 226.35 181.3 225.864C181.3 225.208 181.19 224.63 180.972 224.131C180.753 223.632 180.438 223.212 180.028 222.87C179.611 222.535 179.102 222.282 178.5 222.111C177.899 221.94 177.219 221.855 176.46 221.855C175.783 221.855 175.154 221.94 174.573 222.111C173.992 222.275 173.486 222.528 173.056 222.87C172.625 223.212 172.283 223.643 172.03 224.162C171.777 224.675 171.647 225.28 171.641 225.977H174.501C174.508 225.663 174.566 225.393 174.676 225.167C174.792 224.941 174.942 224.757 175.127 224.613C175.305 224.47 175.51 224.367 175.742 224.306C175.975 224.237 176.214 224.203 176.46 224.203C176.774 224.203 177.051 224.237 177.291 224.306C177.537 224.374 177.745 224.477 177.916 224.613C178.08 224.764 178.207 224.955 178.295 225.188C178.384 225.413 178.429 225.683 178.429 225.998C178.429 226.257 178.371 226.517 178.254 226.777C178.138 227.037 177.988 227.29 177.803 227.536C177.612 227.789 177.4 228.035 177.167 228.274C176.935 228.506 176.703 228.729 176.47 228.94C176.149 229.193 175.899 229.433 175.722 229.658C175.544 229.877 175.411 230.116 175.322 230.376C175.233 230.643 175.175 230.94 175.147 231.268C175.127 231.596 175.117 231.996 175.117 232.468ZM174.696 235.575C174.696 236.012 174.843 236.381 175.137 236.682C175.431 236.976 175.838 237.123 176.357 237.123C176.863 237.123 177.267 236.976 177.567 236.682C177.875 236.381 178.029 236.012 178.029 235.575C178.029 235.124 177.875 234.748 177.567 234.447C177.267 234.139 176.863 233.985 176.357 233.985C175.838 233.985 175.431 234.139 175.137 234.447C174.843 234.748 174.696 235.124 174.696 235.575Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M430.713 54.0566V53.1367H427.15V50.3945H431.252V49.4688H426.066V58H431.305V57.0801H427.15V54.0566H430.713ZM433.021 54.7773V54.9004C433.021 55.3535 433.082 55.7773 433.203 56.1719C433.324 56.5625 433.494 56.9023 433.713 57.1914C433.932 57.4805 434.195 57.707 434.504 57.8711C434.816 58.0352 435.164 58.1172 435.547 58.1172C435.938 58.1172 436.279 58.0508 436.572 57.918C436.865 57.7852 437.117 57.5898 437.328 57.332L437.375 58H438.371V49H437.287V52.2871C437.08 52.0449 436.834 51.8613 436.549 51.7363C436.268 51.6074 435.938 51.543 435.559 51.543C435.172 51.543 434.822 51.623 434.51 51.7832C434.197 51.9434 433.932 52.166 433.713 52.4512C433.49 52.7363 433.318 53.0781 433.197 53.4766C433.08 53.8711 433.021 54.3047 433.021 54.7773ZM434.105 54.9004V54.7773C434.105 54.4688 434.139 54.1758 434.205 53.8984C434.271 53.6172 434.375 53.3691 434.516 53.1543C434.652 52.9434 434.828 52.7754 435.043 52.6504C435.262 52.5254 435.523 52.4629 435.828 52.4629C436.184 52.4629 436.48 52.5469 436.719 52.7148C436.957 52.8789 437.146 53.0898 437.287 53.3477V56.2891C437.146 56.5664 436.957 56.7871 436.719 56.9512C436.48 57.1152 436.18 57.1973 435.816 57.1973C435.516 57.1973 435.258 57.1367 435.043 57.0156C434.828 56.8906 434.652 56.7227 434.516 56.5117C434.375 56.3008 434.271 56.0566 434.205 55.7793C434.139 55.502 434.105 55.209 434.105 54.9004ZM440.604 51.6602V52.6035H442.76V57.0625H440.604V58H445.912V57.0625H443.844V51.6602H440.604ZM442.619 49.9961C442.619 50.1719 442.672 50.3184 442.777 50.4355C442.887 50.5527 443.051 50.6113 443.27 50.6113C443.484 50.6113 443.646 50.5527 443.756 50.4355C443.865 50.3184 443.92 50.1719 443.92 49.9961C443.92 49.8984 443.904 49.8086 443.873 49.7266C443.842 49.6445 443.795 49.5762 443.732 49.5215C443.682 49.4707 443.617 49.4316 443.539 49.4043C443.461 49.373 443.371 49.3574 443.27 49.3574C443.168 49.3574 443.076 49.373 442.994 49.4043C442.916 49.4316 442.852 49.4707 442.801 49.5215C442.738 49.5801 442.691 49.6504 442.66 49.7324C442.633 49.8145 442.619 49.9023 442.619 49.9961ZM450.207 50.125H449.117V51.6602H447.453V52.498H449.117V55.9434C449.117 56.334 449.168 56.668 449.27 56.9453C449.375 57.2188 449.518 57.4414 449.697 57.6133C449.877 57.7891 450.088 57.918 450.33 58C450.576 58.0781 450.84 58.1172 451.121 58.1172C451.289 58.1172 451.457 58.1094 451.625 58.0938C451.797 58.0781 451.959 58.0547 452.111 58.0234C452.264 57.9961 452.404 57.9629 452.533 57.9238C452.662 57.8809 452.771 57.832 452.861 57.7773L452.709 57.0098C452.643 57.0254 452.557 57.0449 452.451 57.0684C452.35 57.0879 452.24 57.1074 452.123 57.127C452.002 57.1465 451.879 57.1641 451.754 57.1797C451.629 57.1914 451.508 57.1973 451.391 57.1973C451.23 57.1973 451.078 57.1777 450.934 57.1387C450.793 57.0996 450.668 57.0312 450.559 56.9336C450.449 56.8398 450.363 56.7129 450.301 56.5527C450.238 56.3926 450.207 56.1895 450.207 55.9434V52.498H452.621V51.6602H450.207V50.125ZM463.244 49.4688H461.902V58H462.957V54.5957L462.869 51.1562L464.316 55.627H464.938L466.514 51.0332L466.426 54.5957V58H467.48V49.4688H466.133L464.633 53.7344L463.244 49.4688ZM473.428 58H474.559V57.9062C474.488 57.7305 474.434 57.5254 474.395 57.291C474.355 57.0527 474.336 56.8281 474.336 56.6172V53.6699C474.336 53.3145 474.271 53.0039 474.143 52.7383C474.014 52.4727 473.838 52.25 473.615 52.0703C473.389 51.8945 473.121 51.7637 472.812 51.6777C472.504 51.5879 472.17 51.543 471.811 51.543C471.416 51.543 471.062 51.5977 470.75 51.707C470.441 51.8164 470.18 51.959 469.965 52.1348C469.746 52.3145 469.578 52.5156 469.461 52.7383C469.348 52.9609 469.289 53.1875 469.285 53.418H470.375C470.375 53.2852 470.406 53.1582 470.469 53.0371C470.535 52.9121 470.627 52.8047 470.744 52.7148C470.861 52.625 471.004 52.5527 471.172 52.498C471.344 52.4434 471.537 52.416 471.752 52.416C471.982 52.416 472.189 52.4453 472.373 52.5039C472.561 52.5625 472.719 52.6445 472.848 52.75C472.977 52.8594 473.076 52.9902 473.146 53.1426C473.217 53.2949 473.252 53.4668 473.252 53.6582V54.1562H472.068C471.627 54.1562 471.227 54.1992 470.867 54.2852C470.512 54.3711 470.207 54.5 469.953 54.6719C469.699 54.8477 469.502 55.0664 469.361 55.3281C469.225 55.5898 469.156 55.8945 469.156 56.2422C469.156 56.5078 469.207 56.7559 469.309 56.9863C469.414 57.2129 469.562 57.4082 469.754 57.5723C469.941 57.7402 470.17 57.873 470.439 57.9707C470.713 58.0684 471.018 58.1172 471.354 58.1172C471.561 58.1172 471.756 58.0957 471.939 58.0527C472.123 58.0098 472.297 57.9512 472.461 57.877C472.621 57.8027 472.768 57.7168 472.9 57.6191C473.037 57.5215 473.16 57.418 473.27 57.3086C473.281 57.4414 473.299 57.5703 473.322 57.6953C473.35 57.8164 473.385 57.918 473.428 58ZM471.512 57.1738C471.301 57.1738 471.115 57.1465 470.955 57.0918C470.795 57.0371 470.662 56.9609 470.557 56.8633C470.451 56.7695 470.371 56.6562 470.316 56.5234C470.266 56.3906 470.24 56.2461 470.24 56.0898C470.24 55.9258 470.27 55.7793 470.328 55.6504C470.391 55.5215 470.48 55.4102 470.598 55.3164C470.762 55.1836 470.982 55.0859 471.26 55.0234C471.541 54.957 471.869 54.9238 472.244 54.9238H473.252V56.207C473.189 56.332 473.104 56.4531 472.994 56.5703C472.885 56.6836 472.756 56.7852 472.607 56.875C472.455 56.9648 472.287 57.0371 472.104 57.0918C471.92 57.1465 471.723 57.1738 471.512 57.1738ZM476.463 60.4375H477.547V57.3906C477.625 57.4766 477.709 57.5566 477.799 57.6309C477.889 57.7012 477.984 57.7656 478.086 57.8242C478.254 57.918 478.441 57.9902 478.648 58.041C478.859 58.0918 479.086 58.1172 479.328 58.1172C479.727 58.1172 480.08 58.0352 480.389 57.8711C480.701 57.707 480.963 57.4805 481.174 57.1914C481.385 56.9023 481.545 56.5625 481.654 56.1719C481.764 55.7773 481.818 55.3535 481.818 54.9004V54.7773C481.818 54.3047 481.764 53.8711 481.654 53.4766C481.545 53.0781 481.385 52.7363 481.174 52.4512C480.963 52.166 480.701 51.9434 480.389 51.7832C480.076 51.623 479.717 51.543 479.311 51.543C479.08 51.543 478.863 51.5684 478.66 51.6191C478.461 51.666 478.279 51.7363 478.115 51.8301C477.998 51.8926 477.889 51.9688 477.787 52.0586C477.686 52.1445 477.592 52.2422 477.506 52.3516L477.453 51.6602H476.463V60.4375ZM480.734 54.7773V54.9004C480.734 55.209 480.699 55.5039 480.629 55.7852C480.562 56.0664 480.459 56.3145 480.318 56.5293C480.178 56.7441 479.998 56.916 479.779 57.0449C479.561 57.1699 479.301 57.2324 479 57.2324C478.812 57.2324 478.641 57.209 478.484 57.1621C478.332 57.1152 478.193 57.0508 478.068 56.9688C477.959 56.8984 477.861 56.8125 477.775 56.7109C477.689 56.6094 477.613 56.5 477.547 56.3828V53.3301C477.621 53.1973 477.707 53.0762 477.805 52.9668C477.902 52.8574 478.014 52.7656 478.139 52.6914C478.252 52.6172 478.379 52.5605 478.52 52.5215C478.664 52.4824 478.82 52.4629 478.988 52.4629C479.293 52.4629 479.555 52.5254 479.773 52.6504C479.992 52.7754 480.174 52.9434 480.318 53.1543C480.459 53.3691 480.562 53.6172 480.629 53.8984C480.699 54.1758 480.734 54.4688 480.734 54.7773ZM483.67 60.4375H484.754V57.3906C484.832 57.4766 484.916 57.5566 485.006 57.6309C485.096 57.7012 485.191 57.7656 485.293 57.8242C485.461 57.918 485.648 57.9902 485.855 58.041C486.066 58.0918 486.293 58.1172 486.535 58.1172C486.934 58.1172 487.287 58.0352 487.596 57.8711C487.908 57.707 488.17 57.4805 488.381 57.1914C488.592 56.9023 488.752 56.5625 488.861 56.1719C488.971 55.7773 489.025 55.3535 489.025 54.9004V54.7773C489.025 54.3047 488.971 53.8711 488.861 53.4766C488.752 53.0781 488.592 52.7363 488.381 52.4512C488.17 52.166 487.908 51.9434 487.596 51.7832C487.283 51.623 486.924 51.543 486.518 51.543C486.287 51.543 486.07 51.5684 485.867 51.6191C485.668 51.666 485.486 51.7363 485.322 51.8301C485.205 51.8926 485.096 51.9688 484.994 52.0586C484.893 52.1445 484.799 52.2422 484.713 52.3516L484.66 51.6602H483.67V60.4375ZM487.941 54.7773V54.9004C487.941 55.209 487.906 55.5039 487.836 55.7852C487.77 56.0664 487.666 56.3145 487.525 56.5293C487.385 56.7441 487.205 56.916 486.986 57.0449C486.768 57.1699 486.508 57.2324 486.207 57.2324C486.02 57.2324 485.848 57.209 485.691 57.1621C485.539 57.1152 485.4 57.0508 485.275 56.9688C485.166 56.8984 485.068 56.8125 484.982 56.7109C484.896 56.6094 484.82 56.5 484.754 56.3828V53.3301C484.828 53.1973 484.914 53.0762 485.012 52.9668C485.109 52.8574 485.221 52.7656 485.346 52.6914C485.459 52.6172 485.586 52.5605 485.727 52.5215C485.871 52.4824 486.027 52.4629 486.195 52.4629C486.5 52.4629 486.762 52.5254 486.98 52.6504C487.199 52.7754 487.381 52.9434 487.525 53.1543C487.666 53.3691 487.77 53.6172 487.836 53.8984C487.906 54.1758 487.941 54.4688 487.941 54.7773ZM491.053 51.6602V52.6035H493.209V57.0625H491.053V58H496.361V57.0625H494.293V51.6602H491.053ZM493.068 49.9961C493.068 50.1719 493.121 50.3184 493.227 50.4355C493.336 50.5527 493.5 50.6113 493.719 50.6113C493.934 50.6113 494.096 50.5527 494.205 50.4355C494.314 50.3184 494.369 50.1719 494.369 49.9961C494.369 49.8984 494.354 49.8086 494.322 49.7266C494.291 49.6445 494.244 49.5762 494.182 49.5215C494.131 49.4707 494.066 49.4316 493.988 49.4043C493.91 49.373 493.82 49.3574 493.719 49.3574C493.617 49.3574 493.525 49.373 493.443 49.4043C493.365 49.4316 493.301 49.4707 493.25 49.5215C493.188 49.5801 493.141 49.6504 493.109 49.7324C493.082 49.8145 493.068 49.9023 493.068 49.9961ZM498.09 58H499.174V53.4531C499.248 53.3164 499.334 53.1914 499.432 53.0781C499.533 52.9648 499.643 52.8652 499.76 52.7793C499.904 52.6816 500.062 52.6055 500.234 52.5508C500.406 52.4922 500.592 52.4629 500.791 52.4629C501.021 52.4629 501.225 52.4902 501.4 52.5449C501.58 52.5996 501.732 52.6875 501.857 52.8086C501.979 52.9297 502.07 53.0879 502.133 53.2832C502.195 53.4785 502.227 53.7168 502.227 53.998V58H503.311V53.9746C503.311 53.5527 503.258 53.1895 503.152 52.8848C503.051 52.5762 502.904 52.3223 502.713 52.123C502.521 51.9238 502.289 51.7773 502.016 51.6836C501.746 51.5898 501.445 51.543 501.113 51.543C500.867 51.5469 500.633 51.584 500.41 51.6543C500.191 51.7207 499.988 51.8164 499.801 51.9414C499.676 52.0234 499.557 52.1211 499.443 52.2344C499.334 52.3438 499.232 52.4648 499.139 52.5977L499.062 51.6602H498.09V58ZM505.098 54.7773V54.9004C505.098 55.3535 505.156 55.7773 505.273 56.1719C505.391 56.5625 505.559 56.9023 505.777 57.1914C505.992 57.4805 506.256 57.707 506.568 57.8711C506.881 58.0352 507.23 58.1172 507.617 58.1172C507.848 58.1172 508.062 58.0918 508.262 58.041C508.461 57.9941 508.643 57.9258 508.807 57.8359C508.912 57.7773 509.01 57.709 509.1 57.6309C509.193 57.5527 509.281 57.4668 509.363 57.373V57.918C509.363 58.1914 509.324 58.4336 509.246 58.6445C509.168 58.8555 509.057 59.0312 508.912 59.1719C508.764 59.3164 508.586 59.4258 508.379 59.5C508.172 59.5742 507.939 59.6113 507.682 59.6113C507.537 59.6113 507.393 59.5957 507.248 59.5645C507.104 59.5371 506.959 59.4902 506.814 59.4238C506.67 59.3574 506.527 59.2676 506.387 59.1543C506.246 59.0449 506.109 58.9102 505.977 58.75L505.414 59.4004C505.559 59.6074 505.73 59.7812 505.93 59.9219C506.133 60.0625 506.344 60.1738 506.562 60.2559C506.777 60.3418 506.99 60.4023 507.201 60.4375C507.412 60.4766 507.6 60.4961 507.764 60.4961C508.162 60.4961 508.525 60.4375 508.854 60.3203C509.182 60.2031 509.465 60.0312 509.703 59.8047C509.938 59.5781 510.119 59.3027 510.248 58.9785C510.381 58.6543 510.447 58.2832 510.447 57.8652V51.6602H509.463L509.41 52.3516C509.336 52.2578 509.256 52.1719 509.17 52.0938C509.088 52.0156 509 51.9473 508.906 51.8887C508.734 51.7754 508.541 51.6895 508.326 51.6309C508.115 51.5723 507.883 51.543 507.629 51.543C507.234 51.543 506.881 51.623 506.568 51.7832C506.256 51.9434 505.99 52.166 505.771 52.4512C505.553 52.7363 505.385 53.0781 505.268 53.4766C505.154 53.8711 505.098 54.3047 505.098 54.7773ZM506.182 54.9004V54.7773C506.182 54.4688 506.213 54.1758 506.275 53.8984C506.342 53.6172 506.445 53.3691 506.586 53.1543C506.723 52.9434 506.898 52.7754 507.113 52.6504C507.332 52.5254 507.594 52.4629 507.898 52.4629C508.078 52.4629 508.242 52.4863 508.391 52.5332C508.539 52.5762 508.674 52.6367 508.795 52.7148C508.916 52.7969 509.023 52.8926 509.117 53.002C509.211 53.1113 509.293 53.2324 509.363 53.3652V56.2715C509.293 56.4082 509.211 56.5332 509.117 56.6465C509.023 56.7598 508.918 56.8574 508.801 56.9395C508.68 57.0215 508.543 57.0859 508.391 57.1328C508.242 57.1758 508.074 57.1973 507.887 57.1973C507.586 57.1973 507.328 57.1367 507.113 57.0156C506.898 56.8906 506.723 56.7227 506.586 56.5117C506.445 56.3008 506.342 56.0566 506.275 55.7793C506.213 55.502 506.182 55.209 506.182 54.9004Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M425 59.1719H511.479V59.7578H425V59.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M86.7754 46.7871L86.8779 46.2256C86.6761 46.2191 86.5085 46.1637 86.375 46.0596C86.2448 45.9554 86.1406 45.8219 86.0625 45.6592C85.9811 45.4997 85.9242 45.319 85.8916 45.1172C85.859 44.9186 85.8428 44.7184 85.8428 44.5166V43.6914C85.8395 43.304 85.7484 42.9639 85.5693 42.6709C85.3903 42.3747 85.112 42.1517 84.7344 42.002C85.112 41.849 85.3903 41.626 85.5693 41.333C85.7516 41.0368 85.8428 40.6934 85.8428 40.3027V39.4727C85.8428 39.2741 85.8525 39.0739 85.8721 38.8721C85.8916 38.6702 85.9372 38.488 86.0088 38.3252C86.0771 38.1657 86.1797 38.0339 86.3164 37.9297C86.4564 37.8255 86.6436 37.7702 86.8779 37.7637L86.7754 37.2021C86.4466 37.2119 86.1667 37.2835 85.9355 37.417C85.7044 37.5472 85.5173 37.7165 85.374 37.9248C85.221 38.1429 85.1087 38.3903 85.0371 38.667C84.9688 38.9404 84.9346 39.209 84.9346 39.4727V40.3027C84.9346 40.7747 84.8223 41.1165 84.5977 41.3281C84.3763 41.5365 84.0361 41.6406 83.5771 41.6406V42.3486C84.0361 42.3519 84.3763 42.4593 84.5977 42.6709C84.8223 42.8825 84.9346 43.2227 84.9346 43.6914V44.5166C84.9346 44.777 84.972 45.0391 85.0469 45.3027C85.1217 45.5697 85.2324 45.8105 85.3789 46.0254C85.5319 46.25 85.724 46.4307 85.9551 46.5674C86.1862 46.7041 86.4596 46.7773 86.7754 46.7871ZM94.8613 45H95.7646V41.2109C95.8265 41.097 95.8981 40.9928 95.9795 40.8984C96.0641 40.804 96.1553 40.721 96.2529 40.6494C96.3734 40.568 96.5052 40.5046 96.6484 40.459C96.7917 40.4102 96.9463 40.3857 97.1123 40.3857C97.3044 40.3857 97.4736 40.4085 97.6201 40.4541C97.7699 40.4997 97.8968 40.5729 98.001 40.6738C98.1019 40.7747 98.1784 40.9066 98.2305 41.0693C98.2826 41.2321 98.3086 41.4307 98.3086 41.665V45H99.2119V41.6455C99.2119 41.2939 99.168 40.9912 99.0801 40.7373C98.9954 40.4801 98.8734 40.2686 98.7139 40.1025C98.5544 39.9365 98.3607 39.8145 98.1328 39.7363C97.9082 39.6582 97.6576 39.6191 97.3809 39.6191C97.1758 39.6224 96.9805 39.6533 96.7949 39.7119C96.6126 39.7673 96.4434 39.847 96.2871 39.9512C96.1829 40.0195 96.0837 40.1009 95.9893 40.1953C95.8981 40.2865 95.8135 40.3874 95.7354 40.498L95.6719 39.7168H94.8613V45ZM100.613 42.3096V42.417C100.613 42.7979 100.669 43.151 100.779 43.4766C100.89 43.8021 101.049 44.0853 101.258 44.3262C101.463 44.5671 101.714 44.7559 102.01 44.8926C102.309 45.0293 102.646 45.0977 103.021 45.0977C103.392 45.0977 103.725 45.0293 104.021 44.8926C104.318 44.7559 104.57 44.5671 104.778 44.3262C104.983 44.0853 105.141 43.8021 105.252 43.4766C105.363 43.151 105.418 42.7979 105.418 42.417V42.3096C105.418 41.9287 105.363 41.5755 105.252 41.25C105.141 40.9212 104.983 40.6364 104.778 40.3955C104.57 40.1546 104.316 39.9658 104.017 39.8291C103.72 39.6891 103.385 39.6191 103.011 39.6191C102.64 39.6191 102.306 39.6891 102.01 39.8291C101.714 39.9658 101.463 40.1546 101.258 40.3955C101.049 40.6364 100.89 40.9212 100.779 41.25C100.669 41.5755 100.613 41.9287 100.613 42.3096ZM101.517 42.417V42.3096C101.517 42.0524 101.548 41.8066 101.609 41.5723C101.671 41.3346 101.766 41.1263 101.893 40.9473C102.016 40.7682 102.171 40.6266 102.356 40.5225C102.542 40.415 102.76 40.3613 103.011 40.3613C103.261 40.3613 103.479 40.415 103.665 40.5225C103.854 40.6266 104.012 40.7682 104.139 40.9473C104.262 41.1263 104.355 41.3346 104.417 41.5723C104.482 41.8066 104.515 42.0524 104.515 42.3096V42.417C104.515 42.6774 104.484 42.9264 104.422 43.1641C104.36 43.3984 104.267 43.6051 104.144 43.7842C104.017 43.9632 103.859 44.1048 103.67 44.209C103.484 44.3132 103.268 44.3652 103.021 44.3652C102.77 44.3652 102.55 44.3132 102.361 44.209C102.173 44.1048 102.016 43.9632 101.893 43.7842C101.766 43.6051 101.671 43.3984 101.609 43.1641C101.548 42.9264 101.517 42.6774 101.517 42.417ZM106.702 42.3145V42.417C106.702 42.7946 106.753 43.1478 106.854 43.4766C106.954 43.8021 107.096 44.0853 107.278 44.3262C107.461 44.5671 107.68 44.7559 107.938 44.8926C108.198 45.0293 108.488 45.0977 108.807 45.0977C109.132 45.0977 109.417 45.0423 109.661 44.9316C109.905 44.821 110.115 44.6582 110.291 44.4434L110.33 45H111.16V37.5H110.257V40.2393C110.084 40.0374 109.879 39.8844 109.642 39.7803C109.407 39.6729 109.132 39.6191 108.816 39.6191C108.494 39.6191 108.203 39.6859 107.942 39.8193C107.682 39.9528 107.461 40.1383 107.278 40.376C107.093 40.6136 106.95 40.8984 106.849 41.2305C106.751 41.5592 106.702 41.9206 106.702 42.3145ZM107.605 42.417V42.3145C107.605 42.0573 107.633 41.8132 107.688 41.582C107.744 41.3477 107.83 41.141 107.947 40.9619C108.061 40.7861 108.208 40.6462 108.387 40.542C108.569 40.4378 108.787 40.3857 109.041 40.3857C109.337 40.3857 109.585 40.4557 109.783 40.5957C109.982 40.7324 110.14 40.9082 110.257 41.123V43.5742C110.14 43.8053 109.982 43.9893 109.783 44.126C109.585 44.2627 109.334 44.3311 109.031 44.3311C108.781 44.3311 108.566 44.2806 108.387 44.1797C108.208 44.0755 108.061 43.9355 107.947 43.7598C107.83 43.584 107.744 43.3805 107.688 43.1494C107.633 42.9183 107.605 42.6742 107.605 42.417ZM115.213 45.0977C115.727 45.0977 116.159 44.9951 116.507 44.79C116.858 44.5817 117.122 44.3441 117.298 44.0771L116.746 43.6475C116.58 43.8623 116.372 44.0348 116.121 44.165C115.87 44.2952 115.584 44.3604 115.262 44.3604C115.018 44.3604 114.795 44.3148 114.593 44.2236C114.391 44.1325 114.218 44.0072 114.075 43.8477C113.935 43.6979 113.825 43.5254 113.743 43.3301C113.665 43.1348 113.615 42.9085 113.592 42.6514V42.6172H117.366V42.2119C117.366 41.8441 117.319 41.5023 117.225 41.1865C117.133 40.8708 116.993 40.5957 116.805 40.3613C116.616 40.1302 116.378 39.9495 116.092 39.8193C115.809 39.6859 115.477 39.6191 115.096 39.6191C114.793 39.6191 114.497 39.681 114.207 39.8047C113.921 39.9284 113.665 40.1058 113.44 40.3369C113.213 40.5713 113.03 40.8577 112.894 41.1963C112.757 41.5316 112.688 41.9124 112.688 42.3389V42.5439C112.688 42.9118 112.75 43.252 112.874 43.5645C112.998 43.877 113.17 44.1471 113.392 44.375C113.613 44.6029 113.878 44.7803 114.188 44.9072C114.5 45.0342 114.842 45.0977 115.213 45.0977ZM115.096 40.3613C115.327 40.3613 115.525 40.4036 115.691 40.4883C115.861 40.5729 116.001 40.6836 116.111 40.8203C116.222 40.957 116.308 41.1198 116.37 41.3086C116.432 41.4941 116.463 41.6683 116.463 41.8311V41.875H113.621C113.657 41.6309 113.719 41.416 113.807 41.2305C113.898 41.0417 114.008 40.8822 114.139 40.752C114.269 40.625 114.415 40.529 114.578 40.4639C114.741 40.3955 114.913 40.3613 115.096 40.3613ZM121.814 45V37.8906H121.741L119.051 38.9258V39.751L120.911 39.043V45H121.814ZM126.707 44.4141C126.707 44.6029 126.766 44.764 126.883 44.8975C127.003 45.0277 127.181 45.0928 127.415 45.0928C127.646 45.0928 127.824 45.0277 127.947 44.8975C128.071 44.7673 128.133 44.6061 128.133 44.4141C128.133 44.2188 128.071 44.0544 127.947 43.9209C127.827 43.7842 127.649 43.7158 127.415 43.7158C127.177 43.7158 127 43.7842 126.883 43.9209C126.766 44.0576 126.707 44.222 126.707 44.4141ZM126.707 40.1367C126.707 40.3255 126.766 40.4867 126.883 40.6201C127.003 40.7503 127.181 40.8154 127.415 40.8154C127.646 40.8154 127.824 40.7503 127.947 40.6201C128.071 40.4899 128.133 40.3288 128.133 40.1367C128.133 39.9414 128.071 39.777 127.947 39.6436C127.827 39.5068 127.649 39.4385 127.415 39.4385C127.177 39.4385 127 39.5068 126.883 39.6436C126.766 39.7803 126.707 39.9447 126.707 40.1367ZM138.548 42.998H139.451C139.451 42.8711 139.454 42.7588 139.461 42.6611C139.467 42.5602 139.484 42.4658 139.51 42.3779C139.536 42.29 139.575 42.2038 139.627 42.1191C139.682 42.0345 139.759 41.945 139.856 41.8506C140.009 41.7139 140.164 41.5658 140.32 41.4062C140.48 41.2467 140.623 41.0742 140.75 40.8887C140.877 40.7064 140.981 40.5127 141.062 40.3076C141.144 40.0993 141.185 39.8779 141.185 39.6436C141.185 39.3506 141.137 39.0902 141.043 38.8623C140.949 38.6344 140.812 38.4408 140.633 38.2812C140.454 38.1217 140.234 38.0013 139.974 37.9199C139.716 37.8353 139.424 37.793 139.095 37.793C138.799 37.793 138.522 37.8337 138.265 37.915C138.011 37.9932 137.791 38.1071 137.605 38.2568C137.417 38.4098 137.267 38.5954 137.156 38.8135C137.046 39.0316 136.989 39.2773 136.985 39.5508H137.889C137.889 39.3815 137.923 39.2367 137.991 39.1162C138.06 38.9925 138.151 38.89 138.265 38.8086C138.375 38.7305 138.502 38.6735 138.646 38.6377C138.792 38.5986 138.942 38.5791 139.095 38.5791C139.293 38.5791 139.469 38.6051 139.622 38.6572C139.775 38.7093 139.902 38.7858 140.003 38.8867C140.094 38.9779 140.162 39.0902 140.208 39.2236C140.257 39.3538 140.281 39.5036 140.281 39.6729C140.281 39.8356 140.25 39.9902 140.188 40.1367C140.127 40.2832 140.049 40.4215 139.954 40.5518C139.856 40.6852 139.749 40.8122 139.632 40.9326C139.518 41.0531 139.406 41.1702 139.295 41.2842C139.132 41.4339 139.002 41.5641 138.904 41.6748C138.807 41.7822 138.732 41.8945 138.68 42.0117C138.628 42.1322 138.593 42.2689 138.577 42.4219C138.561 42.5716 138.551 42.7637 138.548 42.998ZM138.445 44.5264C138.445 44.6761 138.491 44.8014 138.582 44.9023C138.676 45.0033 138.816 45.0537 139.002 45.0537C139.188 45.0537 139.327 45.0033 139.422 44.9023C139.52 44.8014 139.568 44.6761 139.568 44.5264C139.568 44.3701 139.52 44.2399 139.422 44.1357C139.327 44.0316 139.188 43.9795 139.002 43.9795C138.816 43.9795 138.676 44.0316 138.582 44.1357C138.491 44.2399 138.445 44.3701 138.445 44.5264ZM145.198 44.79V43.9307H144.217V44.8047C144.217 45.0814 144.184 45.3483 144.119 45.6055C144.054 45.8626 143.943 46.1051 143.787 46.333L144.349 46.6406C144.609 46.4095 144.816 46.1247 144.969 45.7861C145.122 45.4476 145.198 45.1156 145.198 44.79ZM154.92 45H155.823V41.2109C155.885 41.097 155.957 40.9928 156.038 40.8984C156.123 40.804 156.214 40.721 156.312 40.6494C156.432 40.568 156.564 40.5046 156.707 40.459C156.85 40.4102 157.005 40.3857 157.171 40.3857C157.363 40.3857 157.532 40.4085 157.679 40.4541C157.828 40.4997 157.955 40.5729 158.06 40.6738C158.16 40.7747 158.237 40.9066 158.289 41.0693C158.341 41.2321 158.367 41.4307 158.367 41.665V45H159.271V41.6455C159.271 41.2939 159.227 40.9912 159.139 40.7373C159.054 40.4801 158.932 40.2686 158.772 40.1025C158.613 39.9365 158.419 39.8145 158.191 39.7363C157.967 39.6582 157.716 39.6191 157.439 39.6191C157.234 39.6224 157.039 39.6533 156.854 39.7119C156.671 39.7673 156.502 39.847 156.346 39.9512C156.242 40.0195 156.142 40.1009 156.048 40.1953C155.957 40.2865 155.872 40.3874 155.794 40.498L155.73 39.7168H154.92V45ZM160.672 42.3096V42.417C160.672 42.7979 160.727 43.151 160.838 43.4766C160.949 43.8021 161.108 44.0853 161.316 44.3262C161.521 44.5671 161.772 44.7559 162.068 44.8926C162.368 45.0293 162.705 45.0977 163.079 45.0977C163.45 45.0977 163.784 45.0293 164.08 44.8926C164.376 44.7559 164.629 44.5671 164.837 44.3262C165.042 44.0853 165.2 43.8021 165.311 43.4766C165.421 43.151 165.477 42.7979 165.477 42.417V42.3096C165.477 41.9287 165.421 41.5755 165.311 41.25C165.2 40.9212 165.042 40.6364 164.837 40.3955C164.629 40.1546 164.375 39.9658 164.075 39.8291C163.779 39.6891 163.444 39.6191 163.069 39.6191C162.698 39.6191 162.365 39.6891 162.068 39.8291C161.772 39.9658 161.521 40.1546 161.316 40.3955C161.108 40.6364 160.949 40.9212 160.838 41.25C160.727 41.5755 160.672 41.9287 160.672 42.3096ZM161.575 42.417V42.3096C161.575 42.0524 161.606 41.8066 161.668 41.5723C161.73 41.3346 161.824 41.1263 161.951 40.9473C162.075 40.7682 162.229 40.6266 162.415 40.5225C162.601 40.415 162.819 40.3613 163.069 40.3613C163.32 40.3613 163.538 40.415 163.724 40.5225C163.912 40.6266 164.07 40.7682 164.197 40.9473C164.321 41.1263 164.414 41.3346 164.476 41.5723C164.541 41.8066 164.573 42.0524 164.573 42.3096V42.417C164.573 42.6774 164.542 42.9264 164.48 43.1641C164.419 43.3984 164.326 43.6051 164.202 43.7842C164.075 43.9632 163.917 44.1048 163.729 44.209C163.543 44.3132 163.326 44.3652 163.079 44.3652C162.828 44.3652 162.609 44.3132 162.42 44.209C162.231 44.1048 162.075 43.9632 161.951 43.7842C161.824 43.6051 161.73 43.3984 161.668 43.1641C161.606 42.9264 161.575 42.6774 161.575 42.417ZM166.761 42.3145V42.417C166.761 42.7946 166.811 43.1478 166.912 43.4766C167.013 43.8021 167.155 44.0853 167.337 44.3262C167.519 44.5671 167.739 44.7559 167.996 44.8926C168.257 45.0293 168.546 45.0977 168.865 45.0977C169.191 45.0977 169.476 45.0423 169.72 44.9316C169.964 44.821 170.174 44.6582 170.35 44.4434L170.389 45H171.219V37.5H170.315V40.2393C170.143 40.0374 169.938 39.8844 169.7 39.7803C169.466 39.6729 169.191 39.6191 168.875 39.6191C168.553 39.6191 168.261 39.6859 168.001 39.8193C167.741 39.9528 167.519 40.1383 167.337 40.376C167.151 40.6136 167.008 40.8984 166.907 41.2305C166.81 41.5592 166.761 41.9206 166.761 42.3145ZM167.664 42.417V42.3145C167.664 42.0573 167.692 41.8132 167.747 41.582C167.802 41.3477 167.889 41.141 168.006 40.9619C168.12 40.7861 168.266 40.6462 168.445 40.542C168.628 40.4378 168.846 40.3857 169.1 40.3857C169.396 40.3857 169.643 40.4557 169.842 40.5957C170.04 40.7324 170.198 40.9082 170.315 41.123V43.5742C170.198 43.8053 170.04 43.9893 169.842 44.126C169.643 44.2627 169.393 44.3311 169.09 44.3311C168.839 44.3311 168.624 44.2806 168.445 44.1797C168.266 44.0755 168.12 43.9355 168.006 43.7598C167.889 43.584 167.802 43.3805 167.747 43.1494C167.692 42.9183 167.664 42.6742 167.664 42.417ZM175.271 45.0977C175.786 45.0977 176.217 44.9951 176.565 44.79C176.917 44.5817 177.181 44.3441 177.356 44.0771L176.805 43.6475C176.639 43.8623 176.43 44.0348 176.18 44.165C175.929 44.2952 175.643 44.3604 175.32 44.3604C175.076 44.3604 174.853 44.3148 174.651 44.2236C174.45 44.1325 174.277 44.0072 174.134 43.8477C173.994 43.6979 173.883 43.5254 173.802 43.3301C173.724 43.1348 173.673 42.9085 173.65 42.6514V42.6172H177.425V42.2119C177.425 41.8441 177.378 41.5023 177.283 41.1865C177.192 40.8708 177.052 40.5957 176.863 40.3613C176.674 40.1302 176.437 39.9495 176.15 39.8193C175.867 39.6859 175.535 39.6191 175.154 39.6191C174.852 39.6191 174.555 39.681 174.266 39.8047C173.979 39.9284 173.724 40.1058 173.499 40.3369C173.271 40.5713 173.089 40.8577 172.952 41.1963C172.815 41.5316 172.747 41.9124 172.747 42.3389V42.5439C172.747 42.9118 172.809 43.252 172.933 43.5645C173.056 43.877 173.229 44.1471 173.45 44.375C173.672 44.6029 173.937 44.7803 174.246 44.9072C174.559 45.0342 174.9 45.0977 175.271 45.0977ZM175.154 40.3613C175.385 40.3613 175.584 40.4036 175.75 40.4883C175.919 40.5729 176.059 40.6836 176.17 40.8203C176.281 40.957 176.367 41.1198 176.429 41.3086C176.491 41.4941 176.521 41.6683 176.521 41.8311V41.875H173.68C173.715 41.6309 173.777 41.416 173.865 41.2305C173.956 41.0417 174.067 40.8822 174.197 40.752C174.327 40.625 174.474 40.529 174.637 40.4639C174.799 40.3955 174.972 40.3613 175.154 40.3613ZM183.304 45V44.2627H179.734L181.644 42.1924C181.823 41.9971 181.992 41.8018 182.151 41.6064C182.314 41.4079 182.457 41.2077 182.581 41.0059C182.701 40.804 182.798 40.6006 182.869 40.3955C182.941 40.1872 182.977 39.9772 182.977 39.7656C182.977 39.4824 182.926 39.2204 182.825 38.9795C182.728 38.7386 182.586 38.5303 182.4 38.3545C182.215 38.1787 181.987 38.042 181.717 37.9443C181.45 37.8434 181.149 37.793 180.813 37.793C180.449 37.793 180.123 37.8516 179.837 37.9688C179.554 38.0859 179.314 38.2438 179.119 38.4424C178.921 38.641 178.769 38.8737 178.665 39.1406C178.561 39.4043 178.509 39.6859 178.509 39.9854H179.417C179.417 39.764 179.445 39.5638 179.5 39.3848C179.559 39.2057 179.646 39.0527 179.764 38.9258C179.878 38.8021 180.021 38.7061 180.193 38.6377C180.369 38.5693 180.576 38.5352 180.813 38.5352C181.009 38.5352 181.183 38.5693 181.336 38.6377C181.492 38.7028 181.626 38.7923 181.736 38.9062C181.844 39.0202 181.925 39.1553 181.98 39.3115C182.039 39.4645 182.068 39.6289 182.068 39.8047C182.068 39.9479 182.05 40.0879 182.015 40.2246C181.979 40.3581 181.919 40.4997 181.834 40.6494C181.749 40.8024 181.637 40.9684 181.497 41.1475C181.357 41.3265 181.183 41.5316 180.975 41.7627L178.646 44.3506V45H183.304ZM186.766 44.4141C186.766 44.6029 186.824 44.764 186.941 44.8975C187.062 45.0277 187.239 45.0928 187.474 45.0928C187.705 45.0928 187.882 45.0277 188.006 44.8975C188.13 44.7673 188.191 44.6061 188.191 44.4141C188.191 44.2188 188.13 44.0544 188.006 43.9209C187.885 43.7842 187.708 43.7158 187.474 43.7158C187.236 43.7158 187.059 43.7842 186.941 43.9209C186.824 44.0576 186.766 44.222 186.766 44.4141ZM186.766 40.1367C186.766 40.3255 186.824 40.4867 186.941 40.6201C187.062 40.7503 187.239 40.8154 187.474 40.8154C187.705 40.8154 187.882 40.7503 188.006 40.6201C188.13 40.4899 188.191 40.3288 188.191 40.1367C188.191 39.9414 188.13 39.777 188.006 39.6436C187.885 39.5068 187.708 39.4385 187.474 39.4385C187.236 39.4385 187.059 39.5068 186.941 39.6436C186.824 39.7803 186.766 39.9447 186.766 40.1367ZM198.606 42.998H199.51C199.51 42.8711 199.513 42.7588 199.52 42.6611C199.526 42.5602 199.542 42.4658 199.568 42.3779C199.594 42.29 199.633 42.2038 199.686 42.1191C199.741 42.0345 199.817 41.945 199.915 41.8506C200.068 41.7139 200.223 41.5658 200.379 41.4062C200.538 41.2467 200.682 41.0742 200.809 40.8887C200.936 40.7064 201.04 40.5127 201.121 40.3076C201.202 40.0993 201.243 39.8779 201.243 39.6436C201.243 39.3506 201.196 39.0902 201.102 38.8623C201.007 38.6344 200.87 38.4408 200.691 38.2812C200.512 38.1217 200.293 38.0013 200.032 37.9199C199.775 37.8353 199.482 37.793 199.153 37.793C198.857 37.793 198.58 37.8337 198.323 37.915C198.069 37.9932 197.85 38.1071 197.664 38.2568C197.475 38.4098 197.326 38.5954 197.215 38.8135C197.104 39.0316 197.047 39.2773 197.044 39.5508H197.947C197.947 39.3815 197.981 39.2367 198.05 39.1162C198.118 38.9925 198.209 38.89 198.323 38.8086C198.434 38.7305 198.561 38.6735 198.704 38.6377C198.851 38.5986 199 38.5791 199.153 38.5791C199.352 38.5791 199.528 38.6051 199.681 38.6572C199.834 38.7093 199.961 38.7858 200.062 38.8867C200.153 38.9779 200.221 39.0902 200.267 39.2236C200.315 39.3538 200.34 39.5036 200.34 39.6729C200.34 39.8356 200.309 39.9902 200.247 40.1367C200.185 40.2832 200.107 40.4215 200.013 40.5518C199.915 40.6852 199.808 40.8122 199.69 40.9326C199.576 41.0531 199.464 41.1702 199.354 41.2842C199.191 41.4339 199.061 41.5641 198.963 41.6748C198.865 41.7822 198.79 41.8945 198.738 42.0117C198.686 42.1322 198.652 42.2689 198.636 42.4219C198.619 42.5716 198.61 42.7637 198.606 42.998ZM198.504 44.5264C198.504 44.6761 198.549 44.8014 198.641 44.9023C198.735 45.0033 198.875 45.0537 199.061 45.0537C199.246 45.0537 199.386 45.0033 199.48 44.9023C199.578 44.8014 199.627 44.6761 199.627 44.5264C199.627 44.3701 199.578 44.2399 199.48 44.1357C199.386 44.0316 199.246 43.9795 199.061 43.9795C198.875 43.9795 198.735 44.0316 198.641 44.1357C198.549 44.2399 198.504 44.3701 198.504 44.5264ZM209.7 46.2256L209.803 46.7871C210.122 46.7806 210.397 46.7074 210.628 46.5674C210.859 46.4274 211.051 46.2484 211.204 46.0303C211.354 45.8122 211.465 45.5697 211.536 45.3027C211.608 45.0391 211.644 44.777 211.644 44.5166V43.6914C211.644 43.4635 211.67 43.2666 211.722 43.1006C211.774 42.9346 211.854 42.7962 211.961 42.6855C212.072 42.5716 212.213 42.4886 212.386 42.4365C212.562 42.3812 212.767 42.3519 213.001 42.3486V41.6406C212.734 41.6406 212.505 41.6064 212.312 41.5381C212.124 41.4665 211.976 41.3542 211.868 41.2012C211.793 41.0938 211.736 40.9668 211.697 40.8203C211.661 40.6706 211.644 40.498 211.644 40.3027V39.4727C211.644 39.1992 211.606 38.9225 211.531 38.6426C211.46 38.3626 211.341 38.1104 211.175 37.8857C211.028 37.6872 210.841 37.526 210.613 37.4023C210.389 37.2786 210.118 37.2119 209.803 37.2021L209.705 37.7637C209.939 37.7702 210.125 37.8255 210.262 37.9297C210.398 38.0339 210.503 38.1657 210.574 38.3252C210.643 38.488 210.687 38.6702 210.706 38.8721C210.729 39.0739 210.74 39.2741 210.74 39.4727V40.3027C210.74 40.5566 210.778 40.7926 210.853 41.0107C210.927 41.2256 211.043 41.4144 211.199 41.5771C211.281 41.665 211.375 41.7448 211.482 41.8164C211.593 41.888 211.714 41.9499 211.844 42.002C211.717 42.054 211.6 42.1143 211.492 42.1826C211.388 42.251 211.294 42.3275 211.209 42.4121C211.049 42.5716 210.931 42.7604 210.853 42.9785C210.778 43.1966 210.74 43.4342 210.74 43.6914V44.5166C210.74 44.7184 210.722 44.9186 210.687 45.1172C210.654 45.319 210.599 45.4997 210.521 45.6592C210.439 45.8219 210.332 45.9554 210.198 46.0596C210.065 46.1637 209.899 46.2191 209.7 46.2256Z\"\n      fill=\"#5F9CF8\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"186.5\"\n      y=\"130.5\"\n      width=\"55\"\n      height=\"55\"\n      stroke=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M203.753 195.503V192.5H202.85V200H203.753V196.162C203.818 196.058 203.891 195.964 203.973 195.879C204.057 195.791 204.148 195.715 204.246 195.649C204.37 195.565 204.505 195.5 204.651 195.454C204.798 195.409 204.952 195.386 205.115 195.386C205.314 195.382 205.49 195.41 205.643 195.469C205.796 195.524 205.923 195.609 206.023 195.723C206.118 195.827 206.189 195.959 206.238 196.118C206.287 196.274 206.312 196.457 206.312 196.665V200H207.215V196.675C207.215 196.32 207.171 196.014 207.083 195.757C206.998 195.496 206.876 195.282 206.717 195.112C206.557 194.943 206.364 194.819 206.136 194.741C205.911 194.66 205.66 194.619 205.384 194.619C205.172 194.622 204.972 194.653 204.783 194.712C204.598 194.771 204.427 194.857 204.271 194.971C204.173 195.039 204.08 195.119 203.992 195.21C203.904 195.298 203.825 195.396 203.753 195.503ZM212.327 200H213.27V199.922C213.211 199.775 213.165 199.604 213.133 199.409C213.1 199.211 213.084 199.023 213.084 198.848V196.392C213.084 196.095 213.03 195.837 212.923 195.615C212.815 195.394 212.669 195.208 212.483 195.059C212.295 194.912 212.072 194.803 211.814 194.731C211.557 194.657 211.279 194.619 210.979 194.619C210.651 194.619 210.356 194.665 210.096 194.756C209.839 194.847 209.62 194.966 209.441 195.112C209.259 195.262 209.119 195.43 209.021 195.615C208.927 195.801 208.878 195.99 208.875 196.182H209.783C209.783 196.071 209.809 195.965 209.861 195.864C209.917 195.76 209.993 195.671 210.091 195.596C210.188 195.521 210.307 195.461 210.447 195.415C210.59 195.369 210.752 195.347 210.931 195.347C211.123 195.347 211.295 195.371 211.448 195.42C211.604 195.469 211.736 195.537 211.844 195.625C211.951 195.716 212.034 195.825 212.093 195.952C212.151 196.079 212.181 196.222 212.181 196.382V196.797H211.194C210.826 196.797 210.493 196.833 210.193 196.904C209.897 196.976 209.643 197.083 209.432 197.227C209.22 197.373 209.056 197.555 208.938 197.773C208.825 197.992 208.768 198.245 208.768 198.535C208.768 198.757 208.81 198.963 208.895 199.155C208.982 199.344 209.106 199.507 209.266 199.644C209.422 199.784 209.612 199.894 209.837 199.976C210.065 200.057 210.319 200.098 210.599 200.098C210.771 200.098 210.934 200.08 211.087 200.044C211.24 200.008 211.385 199.959 211.521 199.897C211.655 199.836 211.777 199.764 211.888 199.683C212.002 199.601 212.104 199.515 212.195 199.424C212.205 199.535 212.22 199.642 212.239 199.746C212.262 199.847 212.291 199.932 212.327 200ZM210.73 199.312C210.555 199.312 210.4 199.289 210.267 199.243C210.133 199.198 210.022 199.134 209.935 199.053C209.847 198.975 209.78 198.88 209.734 198.77C209.692 198.659 209.671 198.538 209.671 198.408C209.671 198.271 209.695 198.149 209.744 198.042C209.796 197.935 209.871 197.842 209.969 197.764C210.105 197.653 210.289 197.572 210.521 197.52C210.755 197.464 211.028 197.437 211.341 197.437H212.181V198.506C212.129 198.61 212.057 198.711 211.966 198.809C211.875 198.903 211.767 198.988 211.644 199.062C211.517 199.137 211.377 199.198 211.224 199.243C211.071 199.289 210.906 199.312 210.73 199.312ZM218.372 198.599C218.372 198.683 218.356 198.763 218.323 198.838C218.291 198.913 218.243 198.981 218.182 199.043C218.081 199.144 217.941 199.224 217.762 199.282C217.583 199.338 217.373 199.365 217.132 199.365C216.979 199.365 216.824 199.349 216.668 199.316C216.512 199.284 216.37 199.229 216.243 199.15C216.113 199.072 216.004 198.97 215.916 198.843C215.831 198.716 215.783 198.56 215.77 198.374H214.866C214.866 198.599 214.917 198.815 215.018 199.023C215.122 199.232 215.271 199.414 215.467 199.57C215.659 199.73 215.895 199.858 216.175 199.956C216.455 200.05 216.774 200.098 217.132 200.098C217.444 200.098 217.732 200.06 217.996 199.985C218.26 199.91 218.486 199.805 218.675 199.668C218.864 199.531 219.01 199.367 219.114 199.175C219.222 198.983 219.275 198.77 219.275 198.535C219.275 198.317 219.228 198.125 219.134 197.959C219.043 197.793 218.909 197.646 218.733 197.52C218.558 197.396 218.341 197.29 218.084 197.202C217.827 197.111 217.535 197.031 217.21 196.963C216.963 196.914 216.757 196.864 216.595 196.812C216.435 196.759 216.308 196.701 216.214 196.636C216.116 196.571 216.048 196.497 216.009 196.416C215.97 196.335 215.95 196.242 215.95 196.138C215.95 196.037 215.975 195.939 216.023 195.845C216.072 195.75 216.146 195.667 216.243 195.596C216.338 195.524 216.456 195.467 216.6 195.425C216.746 195.382 216.915 195.361 217.107 195.361C217.293 195.361 217.459 195.387 217.605 195.439C217.755 195.492 217.882 195.56 217.986 195.645C218.09 195.729 218.172 195.827 218.23 195.938C218.289 196.045 218.318 196.156 218.318 196.27H219.222C219.222 196.038 219.171 195.824 219.07 195.625C218.973 195.423 218.833 195.247 218.65 195.098C218.468 194.948 218.247 194.831 217.986 194.746C217.726 194.661 217.433 194.619 217.107 194.619C216.805 194.619 216.526 194.66 216.272 194.741C216.022 194.823 215.805 194.933 215.623 195.073C215.441 195.213 215.299 195.378 215.198 195.566C215.097 195.752 215.047 195.952 215.047 196.167C215.047 196.385 215.096 196.577 215.193 196.743C215.291 196.906 215.429 197.048 215.608 197.168C215.784 197.292 215.996 197.397 216.243 197.485C216.494 197.573 216.771 197.648 217.073 197.71C217.321 197.759 217.527 197.814 217.693 197.876C217.859 197.935 217.993 198 218.094 198.071C218.195 198.143 218.266 198.223 218.309 198.311C218.351 198.395 218.372 198.491 218.372 198.599ZM227.63 194.214V194.927H228.514V194.199C228.514 193.919 228.551 193.659 228.626 193.418C228.704 193.177 228.82 192.941 228.973 192.71L228.479 192.358C228.343 192.476 228.222 192.609 228.118 192.759C228.014 192.909 227.926 193.065 227.854 193.228C227.78 193.394 227.723 193.561 227.684 193.73C227.648 193.9 227.63 194.061 227.63 194.214ZM229.217 194.214V194.927H230.101V194.199C230.101 193.919 230.138 193.659 230.213 193.418C230.291 193.177 230.407 192.941 230.56 192.71L230.066 192.358C229.93 192.476 229.809 192.609 229.705 192.759C229.601 192.909 229.513 193.065 229.441 193.228C229.367 193.394 229.31 193.561 229.271 193.73C229.235 193.9 229.217 194.061 229.217 194.214ZM234.524 197.998H235.428C235.428 197.871 235.431 197.759 235.438 197.661C235.444 197.56 235.46 197.466 235.486 197.378C235.512 197.29 235.551 197.204 235.604 197.119C235.659 197.035 235.735 196.945 235.833 196.851C235.986 196.714 236.141 196.566 236.297 196.406C236.456 196.247 236.6 196.074 236.727 195.889C236.854 195.706 236.958 195.513 237.039 195.308C237.12 195.099 237.161 194.878 237.161 194.644C237.161 194.351 237.114 194.09 237.02 193.862C236.925 193.634 236.788 193.441 236.609 193.281C236.43 193.122 236.211 193.001 235.95 192.92C235.693 192.835 235.4 192.793 235.071 192.793C234.775 192.793 234.498 192.834 234.241 192.915C233.987 192.993 233.768 193.107 233.582 193.257C233.393 193.41 233.243 193.595 233.133 193.813C233.022 194.032 232.965 194.277 232.962 194.551H233.865C233.865 194.382 233.899 194.237 233.968 194.116C234.036 193.993 234.127 193.89 234.241 193.809C234.352 193.73 234.479 193.674 234.622 193.638C234.769 193.599 234.918 193.579 235.071 193.579C235.27 193.579 235.446 193.605 235.599 193.657C235.752 193.709 235.879 193.786 235.979 193.887C236.071 193.978 236.139 194.09 236.185 194.224C236.233 194.354 236.258 194.504 236.258 194.673C236.258 194.836 236.227 194.99 236.165 195.137C236.103 195.283 236.025 195.422 235.931 195.552C235.833 195.685 235.726 195.812 235.608 195.933C235.494 196.053 235.382 196.17 235.271 196.284C235.109 196.434 234.979 196.564 234.881 196.675C234.783 196.782 234.708 196.895 234.656 197.012C234.604 197.132 234.57 197.269 234.554 197.422C234.537 197.572 234.528 197.764 234.524 197.998ZM234.422 199.526C234.422 199.676 234.467 199.801 234.559 199.902C234.653 200.003 234.793 200.054 234.979 200.054C235.164 200.054 235.304 200.003 235.398 199.902C235.496 199.801 235.545 199.676 235.545 199.526C235.545 199.37 235.496 199.24 235.398 199.136C235.304 199.032 235.164 198.979 234.979 198.979C234.793 198.979 234.653 199.032 234.559 199.136C234.467 199.24 234.422 199.37 234.422 199.526ZM240.848 193.11V192.393H239.964V193.125C239.964 193.405 239.925 193.665 239.847 193.906C239.772 194.147 239.658 194.383 239.505 194.614L239.998 194.966C240.135 194.849 240.255 194.715 240.359 194.565C240.464 194.416 240.553 194.258 240.628 194.092C240.7 193.929 240.753 193.763 240.789 193.594C240.828 193.424 240.848 193.263 240.848 193.11ZM242.469 193.11V192.393H241.585V193.125C241.585 193.405 241.546 193.665 241.468 193.906C241.393 194.147 241.279 194.383 241.126 194.614L241.619 194.966C241.756 194.849 241.876 194.715 241.98 194.565C242.085 194.416 242.174 194.258 242.249 194.092C242.321 193.929 242.374 193.763 242.41 193.594C242.449 193.424 242.469 193.263 242.469 193.11ZM250.892 202.031H251.795V199.492C251.86 199.564 251.93 199.631 252.005 199.692C252.08 199.751 252.16 199.805 252.244 199.854C252.384 199.932 252.54 199.992 252.713 200.034C252.889 200.076 253.077 200.098 253.279 200.098C253.611 200.098 253.906 200.029 254.163 199.893C254.424 199.756 254.642 199.567 254.817 199.326C254.993 199.085 255.127 198.802 255.218 198.477C255.309 198.148 255.354 197.795 255.354 197.417V197.314C255.354 196.921 255.309 196.559 255.218 196.23C255.127 195.898 254.993 195.614 254.817 195.376C254.642 195.138 254.424 194.953 254.163 194.819C253.903 194.686 253.603 194.619 253.265 194.619C253.073 194.619 252.892 194.64 252.723 194.683C252.557 194.722 252.405 194.78 252.269 194.858C252.171 194.91 252.08 194.974 251.995 195.049C251.91 195.12 251.832 195.202 251.761 195.293L251.717 194.717H250.892V202.031ZM254.451 197.314V197.417C254.451 197.674 254.422 197.92 254.363 198.154C254.308 198.389 254.222 198.595 254.104 198.774C253.987 198.953 253.838 199.097 253.655 199.204C253.473 199.308 253.257 199.36 253.006 199.36C252.85 199.36 252.706 199.341 252.576 199.302C252.449 199.263 252.334 199.209 252.229 199.141C252.138 199.082 252.057 199.01 251.985 198.926C251.914 198.841 251.85 198.75 251.795 198.652V196.108C251.857 195.998 251.928 195.897 252.01 195.806C252.091 195.715 252.184 195.638 252.288 195.576C252.382 195.514 252.488 195.467 252.605 195.435C252.726 195.402 252.856 195.386 252.996 195.386C253.25 195.386 253.468 195.438 253.65 195.542C253.833 195.646 253.984 195.786 254.104 195.962C254.222 196.141 254.308 196.348 254.363 196.582C254.422 196.813 254.451 197.057 254.451 197.314ZM257.044 192.5V193.286H258.841V199.219H257.044V200H261.468V199.219H259.744V192.5H257.044ZM266.38 200H267.322V199.922C267.264 199.775 267.218 199.604 267.186 199.409C267.153 199.211 267.137 199.023 267.137 198.848V196.392C267.137 196.095 267.083 195.837 266.976 195.615C266.868 195.394 266.722 195.208 266.536 195.059C266.347 194.912 266.124 194.803 265.867 194.731C265.61 194.657 265.332 194.619 265.032 194.619C264.703 194.619 264.409 194.665 264.148 194.756C263.891 194.847 263.673 194.966 263.494 195.112C263.312 195.262 263.172 195.43 263.074 195.615C262.98 195.801 262.931 195.99 262.928 196.182H263.836C263.836 196.071 263.862 195.965 263.914 195.864C263.969 195.76 264.046 195.671 264.144 195.596C264.241 195.521 264.36 195.461 264.5 195.415C264.643 195.369 264.804 195.347 264.983 195.347C265.175 195.347 265.348 195.371 265.501 195.42C265.657 195.469 265.789 195.537 265.896 195.625C266.004 195.716 266.087 195.825 266.146 195.952C266.204 196.079 266.233 196.222 266.233 196.382V196.797H265.247C264.879 196.797 264.546 196.833 264.246 196.904C263.95 196.976 263.696 197.083 263.484 197.227C263.273 197.373 263.108 197.555 262.991 197.773C262.877 197.992 262.82 198.245 262.82 198.535C262.82 198.757 262.863 198.963 262.947 199.155C263.035 199.344 263.159 199.507 263.318 199.644C263.475 199.784 263.665 199.894 263.89 199.976C264.118 200.057 264.371 200.098 264.651 200.098C264.824 200.098 264.987 200.08 265.14 200.044C265.293 200.008 265.438 199.959 265.574 199.897C265.708 199.836 265.83 199.764 265.94 199.683C266.054 199.601 266.157 199.515 266.248 199.424C266.258 199.535 266.272 199.642 266.292 199.746C266.315 199.847 266.344 199.932 266.38 200ZM264.783 199.312C264.607 199.312 264.453 199.289 264.319 199.243C264.186 199.198 264.075 199.134 263.987 199.053C263.899 198.975 263.833 198.88 263.787 198.77C263.745 198.659 263.724 198.538 263.724 198.408C263.724 198.271 263.748 198.149 263.797 198.042C263.849 197.935 263.924 197.842 264.021 197.764C264.158 197.653 264.342 197.572 264.573 197.52C264.808 197.464 265.081 197.437 265.394 197.437H266.233V198.506C266.181 198.61 266.11 198.711 266.019 198.809C265.927 198.903 265.82 198.988 265.696 199.062C265.569 199.137 265.429 199.198 265.276 199.243C265.123 199.289 264.959 199.312 264.783 199.312ZM271.165 199.365C270.882 199.365 270.644 199.31 270.452 199.199C270.263 199.085 270.112 198.937 269.998 198.755C269.881 198.576 269.796 198.374 269.744 198.149C269.695 197.922 269.671 197.692 269.671 197.461V197.256C269.671 197.028 269.695 196.802 269.744 196.577C269.796 196.353 269.881 196.149 269.998 195.967C270.115 195.788 270.268 195.643 270.457 195.532C270.649 195.418 270.885 195.361 271.165 195.361C271.347 195.361 271.517 195.392 271.673 195.454C271.832 195.516 271.969 195.601 272.083 195.708C272.197 195.815 272.286 195.941 272.352 196.084C272.42 196.224 272.456 196.374 272.459 196.533H273.313C273.313 196.266 273.26 196.016 273.152 195.781C273.045 195.547 272.897 195.343 272.708 195.171C272.516 195.002 272.288 194.868 272.024 194.771C271.764 194.67 271.478 194.619 271.165 194.619C270.765 194.619 270.415 194.691 270.115 194.834C269.816 194.977 269.567 195.169 269.368 195.41C269.166 195.654 269.015 195.936 268.914 196.255C268.813 196.574 268.763 196.908 268.763 197.256V197.461C268.763 197.812 268.813 198.148 268.914 198.467C269.015 198.783 269.166 199.061 269.368 199.302C269.567 199.546 269.816 199.74 270.115 199.883C270.415 200.026 270.765 200.098 271.165 200.098C271.445 200.098 271.714 200.05 271.971 199.956C272.228 199.858 272.456 199.728 272.654 199.565C272.853 199.406 273.011 199.22 273.128 199.009C273.248 198.794 273.31 198.569 273.313 198.335H272.459C272.456 198.481 272.417 198.618 272.342 198.745C272.27 198.869 272.174 198.976 272.054 199.067C271.933 199.162 271.795 199.235 271.639 199.287C271.486 199.339 271.328 199.365 271.165 199.365ZM277.254 200.098C277.768 200.098 278.2 199.995 278.548 199.79C278.899 199.582 279.163 199.344 279.339 199.077L278.787 198.647C278.621 198.862 278.413 199.035 278.162 199.165C277.911 199.295 277.625 199.36 277.303 199.36C277.059 199.36 276.836 199.315 276.634 199.224C276.432 199.132 276.259 199.007 276.116 198.848C275.976 198.698 275.866 198.525 275.784 198.33C275.706 198.135 275.656 197.909 275.633 197.651V197.617H279.407V197.212C279.407 196.844 279.36 196.502 279.266 196.187C279.174 195.871 279.035 195.596 278.846 195.361C278.657 195.13 278.419 194.95 278.133 194.819C277.85 194.686 277.518 194.619 277.137 194.619C276.834 194.619 276.538 194.681 276.248 194.805C275.962 194.928 275.706 195.106 275.481 195.337C275.254 195.571 275.071 195.858 274.935 196.196C274.798 196.532 274.729 196.912 274.729 197.339V197.544C274.729 197.912 274.791 198.252 274.915 198.564C275.039 198.877 275.211 199.147 275.433 199.375C275.654 199.603 275.919 199.78 276.229 199.907C276.541 200.034 276.883 200.098 277.254 200.098ZM277.137 195.361C277.368 195.361 277.566 195.404 277.732 195.488C277.902 195.573 278.042 195.684 278.152 195.82C278.263 195.957 278.349 196.12 278.411 196.309C278.473 196.494 278.504 196.668 278.504 196.831V196.875H275.662C275.698 196.631 275.76 196.416 275.848 196.23C275.939 196.042 276.049 195.882 276.18 195.752C276.31 195.625 276.456 195.529 276.619 195.464C276.782 195.396 276.954 195.361 277.137 195.361ZM281.829 195.503V192.5H280.926V200H281.829V196.162C281.894 196.058 281.967 195.964 282.049 195.879C282.133 195.791 282.225 195.715 282.322 195.649C282.446 195.565 282.581 195.5 282.728 195.454C282.874 195.409 283.029 195.386 283.191 195.386C283.39 195.382 283.566 195.41 283.719 195.469C283.872 195.524 283.999 195.609 284.1 195.723C284.194 195.827 284.266 195.959 284.314 196.118C284.363 196.274 284.388 196.457 284.388 196.665V200H285.291V196.675C285.291 196.32 285.247 196.014 285.159 195.757C285.075 195.496 284.952 195.282 284.793 195.112C284.633 194.943 284.44 194.819 284.212 194.741C283.987 194.66 283.737 194.619 283.46 194.619C283.248 194.622 283.048 194.653 282.859 194.712C282.674 194.771 282.503 194.857 282.347 194.971C282.249 195.039 282.156 195.119 282.068 195.21C281.98 195.298 281.901 195.396 281.829 195.503ZM286.678 197.31V197.417C286.678 197.798 286.733 198.151 286.844 198.477C286.954 198.802 287.114 199.085 287.322 199.326C287.527 199.567 287.778 199.756 288.074 199.893C288.374 200.029 288.711 200.098 289.085 200.098C289.456 200.098 289.79 200.029 290.086 199.893C290.382 199.756 290.634 199.567 290.843 199.326C291.048 199.085 291.206 198.802 291.316 198.477C291.427 198.151 291.482 197.798 291.482 197.417V197.31C291.482 196.929 291.427 196.576 291.316 196.25C291.206 195.921 291.048 195.636 290.843 195.396C290.634 195.155 290.381 194.966 290.081 194.829C289.785 194.689 289.45 194.619 289.075 194.619C288.704 194.619 288.37 194.689 288.074 194.829C287.778 194.966 287.527 195.155 287.322 195.396C287.114 195.636 286.954 195.921 286.844 196.25C286.733 196.576 286.678 196.929 286.678 197.31ZM287.581 197.417V197.31C287.581 197.052 287.612 196.807 287.674 196.572C287.736 196.335 287.83 196.126 287.957 195.947C288.081 195.768 288.235 195.627 288.421 195.522C288.606 195.415 288.825 195.361 289.075 195.361C289.326 195.361 289.544 195.415 289.729 195.522C289.918 195.627 290.076 195.768 290.203 195.947C290.327 196.126 290.42 196.335 290.481 196.572C290.547 196.807 290.579 197.052 290.579 197.31V197.417C290.579 197.677 290.548 197.926 290.486 198.164C290.424 198.398 290.332 198.605 290.208 198.784C290.081 198.963 289.923 199.105 289.734 199.209C289.549 199.313 289.332 199.365 289.085 199.365C288.834 199.365 288.615 199.313 288.426 199.209C288.237 199.105 288.081 198.963 287.957 198.784C287.83 198.605 287.736 198.398 287.674 198.164C287.612 197.926 287.581 197.677 287.581 197.417ZM293.079 192.5V193.286H294.876V199.219H293.079V200H297.503V199.219H295.779V192.5H293.079ZM298.772 197.314V197.417C298.772 197.795 298.823 198.148 298.924 198.477C299.025 198.802 299.166 199.085 299.349 199.326C299.531 199.567 299.751 199.756 300.008 199.893C300.268 200.029 300.558 200.098 300.877 200.098C301.202 200.098 301.487 200.042 301.731 199.932C301.976 199.821 302.186 199.658 302.361 199.443L302.4 200H303.23V192.5H302.327V195.239C302.155 195.037 301.95 194.884 301.712 194.78C301.478 194.673 301.202 194.619 300.887 194.619C300.564 194.619 300.273 194.686 300.013 194.819C299.752 194.953 299.531 195.138 299.349 195.376C299.163 195.614 299.02 195.898 298.919 196.23C298.821 196.559 298.772 196.921 298.772 197.314ZM299.676 197.417V197.314C299.676 197.057 299.703 196.813 299.759 196.582C299.814 196.348 299.9 196.141 300.018 195.962C300.132 195.786 300.278 195.646 300.457 195.542C300.639 195.438 300.857 195.386 301.111 195.386C301.408 195.386 301.655 195.456 301.854 195.596C302.052 195.732 302.21 195.908 302.327 196.123V198.574C302.21 198.805 302.052 198.989 301.854 199.126C301.655 199.263 301.404 199.331 301.102 199.331C300.851 199.331 300.636 199.281 300.457 199.18C300.278 199.076 300.132 198.936 300.018 198.76C299.9 198.584 299.814 198.381 299.759 198.149C299.703 197.918 299.676 197.674 299.676 197.417ZM307.283 200.098C307.798 200.098 308.229 199.995 308.577 199.79C308.929 199.582 309.192 199.344 309.368 199.077L308.816 198.647C308.65 198.862 308.442 199.035 308.191 199.165C307.941 199.295 307.654 199.36 307.332 199.36C307.088 199.36 306.865 199.315 306.663 199.224C306.461 199.132 306.289 199.007 306.146 198.848C306.006 198.698 305.895 198.525 305.813 198.33C305.735 198.135 305.685 197.909 305.662 197.651V197.617H309.437V197.212C309.437 196.844 309.389 196.502 309.295 196.187C309.204 195.871 309.064 195.596 308.875 195.361C308.686 195.13 308.449 194.95 308.162 194.819C307.879 194.686 307.547 194.619 307.166 194.619C306.863 194.619 306.567 194.681 306.277 194.805C305.991 194.928 305.735 195.106 305.511 195.337C305.283 195.571 305.101 195.858 304.964 196.196C304.827 196.532 304.759 196.912 304.759 197.339V197.544C304.759 197.912 304.821 198.252 304.944 198.564C305.068 198.877 305.241 199.147 305.462 199.375C305.683 199.603 305.949 199.78 306.258 199.907C306.57 200.034 306.912 200.098 307.283 200.098ZM307.166 195.361C307.397 195.361 307.596 195.404 307.762 195.488C307.931 195.573 308.071 195.684 308.182 195.82C308.292 195.957 308.379 196.12 308.44 196.309C308.502 196.494 308.533 196.668 308.533 196.831V196.875H305.691C305.727 196.631 305.789 196.416 305.877 196.23C305.968 196.042 306.079 195.882 306.209 195.752C306.339 195.625 306.486 195.529 306.648 195.464C306.811 195.396 306.984 195.361 307.166 195.361ZM314.417 194.619C314.033 194.619 313.689 194.704 313.387 194.873C313.087 195.039 312.83 195.267 312.615 195.557L312.61 195.425L312.571 194.717H311.712V200H312.62V196.611C312.679 196.449 312.752 196.302 312.84 196.172C312.931 196.038 313.037 195.926 313.157 195.835C313.291 195.731 313.447 195.653 313.626 195.601C313.805 195.545 314.005 195.518 314.227 195.518C314.399 195.518 314.563 195.527 314.72 195.547C314.879 195.563 315.047 195.591 315.223 195.63L315.345 194.746C315.254 194.707 315.117 194.676 314.935 194.653C314.756 194.631 314.583 194.619 314.417 194.619ZM318.606 197.998H319.51C319.51 197.871 319.513 197.759 319.52 197.661C319.526 197.56 319.542 197.466 319.568 197.378C319.594 197.29 319.633 197.204 319.686 197.119C319.741 197.035 319.817 196.945 319.915 196.851C320.068 196.714 320.223 196.566 320.379 196.406C320.538 196.247 320.682 196.074 320.809 195.889C320.936 195.706 321.04 195.513 321.121 195.308C321.202 195.099 321.243 194.878 321.243 194.644C321.243 194.351 321.196 194.09 321.102 193.862C321.007 193.634 320.87 193.441 320.691 193.281C320.512 193.122 320.293 193.001 320.032 192.92C319.775 192.835 319.482 192.793 319.153 192.793C318.857 192.793 318.58 192.834 318.323 192.915C318.069 192.993 317.85 193.107 317.664 193.257C317.475 193.41 317.326 193.595 317.215 193.813C317.104 194.032 317.047 194.277 317.044 194.551H317.947C317.947 194.382 317.981 194.237 318.05 194.116C318.118 193.993 318.209 193.89 318.323 193.809C318.434 193.73 318.561 193.674 318.704 193.638C318.851 193.599 319 193.579 319.153 193.579C319.352 193.579 319.528 193.605 319.681 193.657C319.834 193.709 319.961 193.786 320.062 193.887C320.153 193.978 320.221 194.09 320.267 194.224C320.315 194.354 320.34 194.504 320.34 194.673C320.34 194.836 320.309 194.99 320.247 195.137C320.185 195.283 320.107 195.422 320.013 195.552C319.915 195.685 319.808 195.812 319.69 195.933C319.576 196.053 319.464 196.17 319.354 196.284C319.191 196.434 319.061 196.564 318.963 196.675C318.865 196.782 318.79 196.895 318.738 197.012C318.686 197.132 318.652 197.269 318.636 197.422C318.619 197.572 318.61 197.764 318.606 197.998ZM318.504 199.526C318.504 199.676 318.549 199.801 318.641 199.902C318.735 200.003 318.875 200.054 319.061 200.054C319.246 200.054 319.386 200.003 319.48 199.902C319.578 199.801 319.627 199.676 319.627 199.526C319.627 199.37 319.578 199.24 319.48 199.136C319.386 199.032 319.246 198.979 319.061 198.979C318.875 198.979 318.735 199.032 318.641 199.136C318.549 199.24 318.504 199.37 318.504 199.526ZM329.866 197.114V197.163C329.866 197.629 329.902 198.066 329.974 198.477C330.049 198.887 330.148 199.266 330.271 199.614C330.392 199.966 330.532 200.285 330.691 200.571C330.854 200.861 331.025 201.118 331.204 201.343C331.38 201.571 331.557 201.763 331.736 201.919C331.919 202.078 332.091 202.204 332.254 202.295L332.444 201.743C332.311 201.636 332.177 201.506 332.044 201.353C331.914 201.203 331.787 201.03 331.663 200.835C331.543 200.63 331.427 200.397 331.316 200.137C331.206 199.88 331.108 199.6 331.023 199.297C330.945 198.997 330.883 198.67 330.838 198.315C330.792 197.961 330.77 197.58 330.77 197.173V197.104C330.77 196.681 330.794 196.286 330.843 195.918C330.892 195.55 330.96 195.213 331.048 194.907C331.139 194.569 331.253 194.258 331.39 193.975C331.526 193.688 331.67 193.439 331.819 193.228C331.92 193.091 332.023 192.967 332.127 192.856C332.234 192.746 332.34 192.651 332.444 192.573L332.254 191.978C332.091 192.069 331.92 192.194 331.741 192.354C331.562 192.513 331.385 192.705 331.209 192.93C331.03 193.154 330.859 193.411 330.696 193.701C330.537 193.991 330.395 194.31 330.271 194.658C330.148 195.01 330.049 195.391 329.974 195.801C329.902 196.211 329.866 196.649 329.866 197.114ZM334.979 200H335.882V196.211C335.944 196.097 336.015 195.993 336.097 195.898C336.181 195.804 336.272 195.721 336.37 195.649C336.491 195.568 336.622 195.505 336.766 195.459C336.909 195.41 337.063 195.386 337.229 195.386C337.422 195.386 337.591 195.409 337.737 195.454C337.887 195.5 338.014 195.573 338.118 195.674C338.219 195.775 338.296 195.907 338.348 196.069C338.4 196.232 338.426 196.431 338.426 196.665V200H339.329V196.646C339.329 196.294 339.285 195.991 339.197 195.737C339.113 195.48 338.991 195.269 338.831 195.103C338.672 194.937 338.478 194.814 338.25 194.736C338.025 194.658 337.775 194.619 337.498 194.619C337.293 194.622 337.098 194.653 336.912 194.712C336.73 194.767 336.561 194.847 336.404 194.951C336.3 195.02 336.201 195.101 336.106 195.195C336.015 195.286 335.931 195.387 335.853 195.498L335.789 194.717H334.979V200ZM340.73 197.31V197.417C340.73 197.798 340.786 198.151 340.896 198.477C341.007 198.802 341.167 199.085 341.375 199.326C341.58 199.567 341.831 199.756 342.127 199.893C342.426 200.029 342.763 200.098 343.138 200.098C343.509 200.098 343.842 200.029 344.139 199.893C344.435 199.756 344.687 199.567 344.896 199.326C345.101 199.085 345.258 198.802 345.369 198.477C345.48 198.151 345.535 197.798 345.535 197.417V197.31C345.535 196.929 345.48 196.576 345.369 196.25C345.258 195.921 345.101 195.636 344.896 195.396C344.687 195.155 344.433 194.966 344.134 194.829C343.838 194.689 343.502 194.619 343.128 194.619C342.757 194.619 342.423 194.689 342.127 194.829C341.831 194.966 341.58 195.155 341.375 195.396C341.167 195.636 341.007 195.921 340.896 196.25C340.786 196.576 340.73 196.929 340.73 197.31ZM341.634 197.417V197.31C341.634 197.052 341.665 196.807 341.727 196.572C341.788 196.335 341.883 196.126 342.01 195.947C342.133 195.768 342.288 195.627 342.474 195.522C342.659 195.415 342.877 195.361 343.128 195.361C343.379 195.361 343.597 195.415 343.782 195.522C343.971 195.627 344.129 195.768 344.256 195.947C344.38 196.126 344.472 196.335 344.534 196.572C344.599 196.807 344.632 197.052 344.632 197.31V197.417C344.632 197.677 344.601 197.926 344.539 198.164C344.477 198.398 344.384 198.605 344.261 198.784C344.134 198.963 343.976 199.105 343.787 199.209C343.602 199.313 343.385 199.365 343.138 199.365C342.887 199.365 342.667 199.313 342.479 199.209C342.29 199.105 342.133 198.963 342.01 198.784C341.883 198.605 341.788 198.398 341.727 198.164C341.665 197.926 341.634 197.677 341.634 197.417ZM350.286 197.163V197.114C350.286 196.616 350.247 196.169 350.169 195.771C350.094 195.371 349.998 195 349.881 194.658C349.76 194.303 349.62 193.984 349.461 193.701C349.301 193.418 349.131 193.161 348.948 192.93C348.772 192.705 348.593 192.513 348.411 192.354C348.229 192.194 348.056 192.069 347.894 191.978L347.703 192.529C347.811 192.617 347.921 192.725 348.035 192.852C348.149 192.975 348.26 193.12 348.367 193.286C348.507 193.498 348.644 193.747 348.777 194.033C348.911 194.316 349.025 194.637 349.119 194.995C349.184 195.246 349.243 195.55 349.295 195.908C349.35 196.266 349.378 196.665 349.378 197.104V197.173C349.378 197.56 349.357 197.925 349.314 198.267C349.275 198.605 349.218 198.921 349.144 199.214C349.072 199.53 348.979 199.819 348.865 200.083C348.755 200.35 348.639 200.589 348.519 200.801C348.392 201.009 348.258 201.193 348.118 201.353C347.978 201.512 347.84 201.642 347.703 201.743L347.894 202.295C348.056 202.204 348.227 202.078 348.406 201.919C348.589 201.763 348.769 201.571 348.948 201.343C349.124 201.118 349.292 200.861 349.451 200.571C349.614 200.285 349.757 199.966 349.881 199.614C350.005 199.266 350.102 198.887 350.174 198.477C350.249 198.066 350.286 197.629 350.286 197.163Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"540.5\"\n      cy=\"81.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M539.772 82.9534H540.763C540.763 82.8478 540.765 82.758 540.771 82.684C540.776 82.6074 540.789 82.5375 540.81 82.4741C540.829 82.4107 540.861 82.3486 540.905 82.2879C540.95 82.2271 541.012 82.1571 541.092 82.0779C541.221 81.9643 541.349 81.8481 541.476 81.7293C541.605 81.6078 541.72 81.4797 541.821 81.345C541.921 81.2129 542.003 81.0703 542.066 80.9171C542.13 80.7613 542.161 80.5896 542.161 80.4021C542.161 80.1485 542.119 79.9254 542.035 79.7325C541.95 79.5397 541.829 79.3773 541.67 79.2453C541.509 79.1158 541.312 79.0181 541.08 78.9521C540.847 78.8861 540.585 78.853 540.291 78.853C540.03 78.853 539.787 78.8861 539.562 78.9521C539.338 79.0155 539.142 79.1132 538.976 79.2453C538.81 79.3773 538.678 79.5437 538.58 79.7444C538.482 79.9425 538.432 80.1763 538.429 80.4457H539.535C539.537 80.3242 539.56 80.2198 539.602 80.1327C539.647 80.0455 539.705 79.9742 539.776 79.9188C539.845 79.8633 539.924 79.8237 540.014 79.7999C540.104 79.7735 540.196 79.7603 540.291 79.7603C540.413 79.7603 540.52 79.7735 540.612 79.7999C540.707 79.8263 540.788 79.8659 540.854 79.9188C540.917 79.9769 540.966 80.0508 541.001 80.1406C541.035 80.2278 541.052 80.3321 541.052 80.4536C541.052 80.5539 541.03 80.6543 540.985 80.7547C540.94 80.855 540.882 80.9528 540.81 81.0478C540.736 81.1456 540.655 81.2407 540.565 81.3331C540.475 81.4229 540.385 81.5087 540.295 81.5906C540.171 81.6883 540.075 81.7808 540.006 81.8679C539.937 81.9524 539.886 82.0449 539.852 82.1452C539.817 82.2483 539.795 82.3631 539.784 82.4899C539.776 82.6167 539.772 82.7712 539.772 82.9534ZM539.61 84.1538C539.61 84.3229 539.667 84.4655 539.78 84.5817C539.894 84.6953 540.051 84.7521 540.252 84.7521C540.447 84.7521 540.603 84.6953 540.719 84.5817C540.838 84.4655 540.898 84.3229 540.898 84.1538C540.898 83.9795 540.838 83.8343 540.719 83.7181C540.603 83.5992 540.447 83.5398 540.252 83.5398C540.051 83.5398 539.894 83.5992 539.78 83.7181C539.667 83.8343 539.61 83.9795 539.61 84.1538Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M399.895 85H400.902L401.385 81.8861L401.429 81.5929L401.472 81.8861L401.975 85H402.982L403.782 79.2317H402.76L402.367 82.4645L402.34 82.7062L402.304 82.4685L401.821 79.2317H401.024L400.569 82.4447L400.533 82.6824L400.505 82.4566L400.121 79.2317H399.103L399.895 85ZM405.533 81.3037V78.9148H404.432V85H405.533V81.9059C405.575 81.8504 405.621 81.8002 405.672 81.7553C405.724 81.7104 405.782 81.6721 405.846 81.6404C405.915 81.6035 405.991 81.5757 406.076 81.5573C406.16 81.5388 406.251 81.5295 406.349 81.5295C406.476 81.5295 406.589 81.5467 406.69 81.581C406.79 81.6127 406.876 81.6629 406.947 81.7316C407.019 81.8002 407.073 81.89 407.11 82.001C407.149 82.1119 407.169 82.244 407.169 82.3971V85H408.27V82.4051C408.27 82.0908 408.232 81.8227 408.156 81.6008C408.082 81.3763 407.977 81.1928 407.843 81.0501C407.708 80.9075 407.547 80.8032 407.359 80.7372C407.172 80.6685 406.966 80.6342 406.741 80.6342C406.588 80.6342 406.443 80.6566 406.305 80.7015C406.168 80.7464 406.043 80.8098 405.929 80.8917C405.855 80.9445 405.784 81.0066 405.715 81.0779C405.649 81.1466 405.588 81.2218 405.533 81.3037ZM411.384 85.0792C411.799 85.0792 412.158 84.9987 412.462 84.8376C412.766 84.6765 412.988 84.4969 413.128 84.2988L412.577 83.7045C412.45 83.8683 412.285 83.9911 412.082 84.073C411.878 84.1548 411.668 84.1958 411.452 84.1958C411.299 84.1958 411.157 84.172 411.028 84.1245C410.898 84.0769 410.784 84.0096 410.683 83.9224C410.585 83.8379 410.508 83.7441 410.449 83.6411C410.391 83.5355 410.344 83.3968 410.307 83.2251V83.2133H413.215V82.7458C413.215 82.4315 413.171 82.1449 413.084 81.8861C412.997 81.6246 412.87 81.4014 412.704 81.2165C412.535 81.0317 412.329 80.889 412.086 80.7887C411.845 80.6857 411.571 80.6342 411.262 80.6342C410.963 80.6342 410.687 80.6883 410.434 80.7966C410.18 80.9049 409.961 81.0568 409.776 81.2522C409.591 81.4476 409.447 81.6814 409.344 81.9534C409.241 82.2228 409.19 82.5213 409.19 82.8488V83.0072C409.19 83.2951 409.241 83.5659 409.344 83.8194C409.45 84.0703 409.599 84.2882 409.792 84.4731C409.985 84.6606 410.216 84.8085 410.485 84.9168C410.754 85.0251 411.054 85.0792 411.384 85.0792ZM411.254 81.5256C411.394 81.5256 411.516 81.548 411.622 81.5929C411.73 81.6352 411.821 81.6933 411.895 81.7672C411.969 81.8438 412.028 81.9336 412.07 82.0366C412.112 82.1396 412.133 82.2492 412.133 82.3654V82.4526H410.327C410.353 82.3126 410.393 82.1858 410.445 82.0723C410.498 81.9587 410.564 81.861 410.644 81.7791C410.72 81.6972 410.81 81.6352 410.913 81.5929C411.016 81.548 411.13 81.5256 411.254 81.5256ZM414.177 85H415.283V81.9534C415.32 81.8953 415.361 81.8425 415.406 81.795C415.45 81.7474 415.501 81.7065 415.556 81.6721C415.625 81.6246 415.703 81.5889 415.79 81.5652C415.88 81.5414 415.977 81.5295 416.083 81.5295C416.21 81.5295 416.323 81.5427 416.424 81.5691C416.524 81.5929 416.61 81.6365 416.681 81.6999C416.753 81.7633 416.807 81.8504 416.844 81.9613C416.883 82.0696 416.903 82.2083 416.903 82.3773V85H418.004V82.3615C418.004 82.0498 417.967 81.7857 417.894 81.5691C417.822 81.3499 417.722 81.1703 417.592 81.0303C417.46 80.893 417.305 80.7926 417.125 80.7292C416.945 80.6659 416.747 80.6342 416.531 80.6342C416.362 80.6342 416.202 80.6579 416.051 80.7055C415.901 80.753 415.762 80.8217 415.635 80.9115C415.561 80.9643 415.491 81.0237 415.425 81.0898C415.359 81.1558 415.299 81.2284 415.243 81.3077L415.176 80.7134H414.177V85ZM423.923 85H425.029V81.9534C425.066 81.8953 425.107 81.8425 425.151 81.795C425.196 81.7474 425.247 81.7065 425.302 81.6721C425.371 81.6246 425.449 81.5889 425.536 81.5652C425.626 81.5414 425.723 81.5295 425.829 81.5295C425.956 81.5295 426.069 81.5427 426.17 81.5691C426.27 81.5929 426.356 81.6365 426.427 81.6999C426.498 81.7633 426.553 81.8504 426.59 81.9613C426.629 82.0696 426.649 82.2083 426.649 82.3773V85H427.75V82.3615C427.75 82.0498 427.713 81.7857 427.639 81.5691C427.568 81.3499 427.468 81.1703 427.338 81.0303C427.206 80.893 427.05 80.7926 426.871 80.7292C426.691 80.6659 426.493 80.6342 426.277 80.6342C426.108 80.6342 425.948 80.6579 425.797 80.7055C425.647 80.753 425.508 80.8217 425.381 80.9115C425.307 80.9643 425.237 81.0237 425.171 81.0898C425.105 81.1558 425.044 81.2284 424.989 81.3077L424.922 80.7134H423.923V85ZM428.646 82.8171V82.9003C428.646 83.2146 428.691 83.5051 428.78 83.7719C428.87 84.036 429.002 84.2658 429.177 84.4612C429.348 84.6566 429.56 84.8098 429.81 84.9208C430.064 85.0291 430.352 85.0832 430.674 85.0832C430.994 85.0832 431.279 85.0291 431.53 84.9208C431.781 84.8098 431.992 84.6566 432.164 84.4612C432.335 84.2658 432.466 84.036 432.556 83.7719C432.646 83.5051 432.691 83.2146 432.691 82.9003V82.8171C432.691 82.5054 432.646 82.2175 432.556 81.9534C432.466 81.6867 432.335 81.4556 432.164 81.2601C431.989 81.0647 431.777 80.9115 431.526 80.8006C431.275 80.6896 430.988 80.6342 430.666 80.6342C430.344 80.6342 430.057 80.6896 429.806 80.8006C429.558 80.9115 429.348 81.0647 429.177 81.2601C429.002 81.4556 428.87 81.6867 428.78 81.9534C428.691 82.2175 428.646 82.5054 428.646 82.8171ZM429.747 82.9003V82.8171C429.747 82.6428 429.764 82.4777 429.799 82.3219C429.833 82.166 429.887 82.0287 429.961 81.9098C430.035 81.791 430.13 81.6972 430.246 81.6286C430.362 81.5599 430.502 81.5256 430.666 81.5256C430.833 81.5256 430.974 81.5599 431.09 81.6286C431.206 81.6972 431.301 81.791 431.375 81.9098C431.447 82.0287 431.499 82.166 431.534 82.3219C431.568 82.4777 431.585 82.6428 431.585 82.8171V82.9003C431.585 83.0799 431.568 83.2489 431.534 83.4074C431.499 83.5632 431.447 83.6992 431.375 83.8154C431.301 83.9343 431.206 84.0281 431.09 84.0967C430.974 84.1654 430.835 84.1997 430.674 84.1997C430.508 84.1997 430.365 84.1654 430.246 84.0967C430.13 84.0281 430.035 83.9343 429.961 83.8154C429.887 83.6992 429.833 83.5632 429.799 83.4074C429.764 83.2489 429.747 83.0799 429.747 82.9003ZM433.554 82.825V82.9082C433.554 83.2199 433.593 83.5091 433.669 83.7758C433.746 84.0399 433.857 84.2684 434.002 84.4612C434.145 84.654 434.319 84.8059 434.525 84.9168C434.734 85.0251 434.969 85.0792 435.23 85.0792C435.47 85.0792 435.682 85.033 435.864 84.9406C436.046 84.8481 436.205 84.7187 436.339 84.5523L436.395 85H437.389V78.9148H436.284V81.0977C436.152 80.9498 436 80.8362 435.828 80.757C435.659 80.6751 435.463 80.6342 435.238 80.6342C434.971 80.6342 434.734 80.687 434.525 80.7926C434.319 80.8983 434.143 81.0475 433.998 81.2403C433.853 81.4331 433.742 81.6642 433.665 81.9336C433.591 82.203 433.554 82.5001 433.554 82.825ZM434.656 82.9082V82.825C434.656 82.6454 434.671 82.4777 434.703 82.3219C434.735 82.1634 434.785 82.0247 434.854 81.9059C434.922 81.7897 435.011 81.6986 435.119 81.6325C435.23 81.5639 435.363 81.5295 435.519 81.5295C435.707 81.5295 435.863 81.5705 435.987 81.6523C436.111 81.7316 436.21 81.8438 436.284 81.9891V83.7243C436.21 83.8669 436.11 83.9792 435.983 84.0611C435.859 84.1429 435.702 84.1839 435.511 84.1839C435.356 84.1839 435.223 84.1509 435.115 84.0848C435.007 84.0188 434.918 83.9277 434.85 83.8115C434.781 83.6979 434.731 83.5645 434.699 83.4113C434.67 83.2555 434.656 83.0878 434.656 82.9082ZM440.622 85.0792C441.037 85.0792 441.396 84.9987 441.7 84.8376C442.003 84.6765 442.225 84.4969 442.365 84.2988L441.814 83.7045C441.688 83.8683 441.523 83.9911 441.319 84.073C441.116 84.1548 440.906 84.1958 440.689 84.1958C440.536 84.1958 440.395 84.172 440.265 84.1245C440.136 84.0769 440.021 84.0096 439.921 83.9224C439.823 83.8379 439.745 83.7441 439.687 83.6411C439.629 83.5355 439.581 83.3968 439.544 83.2251V83.2133H442.452V82.7458C442.452 82.4315 442.409 82.1449 442.322 81.8861C442.234 81.6246 442.108 81.4014 441.941 81.2165C441.772 81.0317 441.566 80.889 441.323 80.7887C441.083 80.6857 440.808 80.6342 440.499 80.6342C440.201 80.6342 439.925 80.6883 439.671 80.7966C439.418 80.9049 439.198 81.0568 439.014 81.2522C438.829 81.4476 438.685 81.6814 438.582 81.9534C438.479 82.2228 438.427 82.5213 438.427 82.8488V83.0072C438.427 83.2951 438.479 83.5659 438.582 83.8194C438.687 84.0703 438.837 84.2882 439.029 84.4731C439.222 84.6606 439.453 84.8085 439.723 84.9168C439.992 85.0251 440.292 85.0792 440.622 85.0792ZM440.491 81.5256C440.631 81.5256 440.754 81.548 440.86 81.5929C440.968 81.6352 441.059 81.6933 441.133 81.7672C441.207 81.8438 441.265 81.9336 441.307 82.0366C441.35 82.1396 441.371 82.2492 441.371 82.3654V82.4526H439.564C439.591 82.3126 439.63 82.1858 439.683 82.0723C439.736 81.9587 439.802 81.861 439.881 81.7791C439.958 81.6972 440.048 81.6352 440.151 81.5929C440.254 81.548 440.367 81.5256 440.491 81.5256ZM446.113 85V79.2317H446.054L443.542 80.1389V81.0977L445 80.5747V85H446.113ZM455.059 84.1997C454.882 84.1997 454.735 84.1641 454.619 84.0928C454.505 84.0215 454.415 83.9264 454.349 83.8075C454.281 83.6913 454.233 83.5566 454.207 83.4034C454.18 83.2476 454.167 83.0865 454.167 82.9201V82.8012C454.167 82.6375 454.18 82.479 454.207 82.3258C454.236 82.1726 454.285 82.0366 454.353 81.9178C454.419 81.7989 454.509 81.7038 454.623 81.6325C454.736 81.5612 454.88 81.5256 455.055 81.5256C455.173 81.5256 455.283 81.5467 455.383 81.5889C455.484 81.6286 455.57 81.6827 455.641 81.7514C455.712 81.82 455.766 81.9019 455.803 81.997C455.84 82.0921 455.856 82.1924 455.851 82.2981H456.889C456.894 82.0445 456.852 81.8161 456.762 81.6127C456.672 81.4067 456.547 81.2311 456.386 81.0858C456.222 80.9432 456.028 80.8323 455.803 80.753C455.579 80.6738 455.335 80.6342 455.07 80.6342C454.74 80.6342 454.45 80.691 454.199 80.8045C453.951 80.9181 453.742 81.0726 453.573 81.268C453.404 81.4635 453.277 81.6933 453.193 81.9574C453.108 82.2189 453.066 82.5001 453.066 82.8012V82.9201C453.066 83.2212 453.108 83.5038 453.193 83.7679C453.28 84.0294 453.408 84.2578 453.577 84.4533C453.743 84.6487 453.952 84.8032 454.203 84.9168C454.454 85.0277 454.746 85.0832 455.078 85.0832C455.324 85.0832 455.556 85.0449 455.776 84.9683C455.998 84.8891 456.192 84.7808 456.358 84.6434C456.524 84.5061 456.655 84.3424 456.75 84.1522C456.848 83.962 456.894 83.756 456.889 83.5342H455.851C455.856 83.6345 455.838 83.7256 455.795 83.8075C455.756 83.8894 455.699 83.9594 455.625 84.0175C455.551 84.0756 455.465 84.1205 455.368 84.1522C455.27 84.1839 455.167 84.1997 455.059 84.1997ZM459.135 81.3037V78.9148H458.034V85H459.135V81.9059C459.177 81.8504 459.224 81.8002 459.274 81.7553C459.327 81.7104 459.385 81.6721 459.448 81.6404C459.517 81.6035 459.593 81.5757 459.678 81.5573C459.762 81.5388 459.854 81.5295 459.951 81.5295C460.078 81.5295 460.192 81.5467 460.292 81.581C460.392 81.6127 460.478 81.6629 460.55 81.7316C460.621 81.8002 460.675 81.89 460.712 82.001C460.752 82.1119 460.771 82.244 460.771 82.3971V85H461.873V82.4051C461.873 82.0908 461.834 81.8227 461.758 81.6008C461.684 81.3763 461.58 81.1928 461.445 81.0501C461.31 80.9075 461.149 80.8032 460.962 80.7372C460.774 80.6685 460.568 80.6342 460.344 80.6342C460.19 80.6342 460.045 80.6566 459.908 80.7015C459.77 80.7464 459.645 80.8098 459.531 80.8917C459.457 80.9445 459.386 81.0066 459.317 81.0779C459.251 81.1466 459.191 81.2218 459.135 81.3037ZM465.585 85H466.702V84.9327C466.647 84.8244 466.604 84.6949 466.575 84.5444C466.546 84.3939 466.532 84.2037 466.532 83.9739V82.1357C466.532 81.8874 466.486 81.6695 466.393 81.482C466.301 81.2918 466.173 81.1347 466.009 81.0105C465.845 80.8864 465.651 80.7926 465.426 80.7292C465.205 80.6659 464.964 80.6342 464.705 80.6342C464.418 80.6342 464.161 80.6711 463.937 80.7451C463.715 80.8164 463.527 80.9141 463.374 81.0383C463.218 81.1624 463.1 81.3063 463.018 81.4701C462.938 81.6338 462.899 81.8068 462.899 81.9891H464C464 81.9125 464.011 81.8425 464.032 81.7791C464.056 81.7157 464.091 81.6616 464.139 81.6167C464.192 81.5665 464.26 81.5282 464.345 81.5018C464.429 81.4727 464.53 81.4582 464.646 81.4582C464.778 81.4582 464.893 81.4754 464.991 81.5097C465.091 81.5414 465.174 81.5876 465.24 81.6484C465.304 81.7065 465.351 81.7765 465.383 81.8583C465.415 81.9376 465.43 82.0274 465.43 82.1277V82.3813H464.816C464.499 82.3813 464.218 82.4103 463.972 82.4685C463.729 82.5239 463.525 82.6058 463.358 82.7141C463.174 82.8329 463.035 82.9848 462.942 83.1697C462.85 83.3519 462.804 83.5619 462.804 83.7996C462.804 83.9845 462.841 84.1562 462.915 84.3146C462.989 84.4704 463.092 84.6051 463.224 84.7187C463.356 84.8323 463.513 84.9208 463.695 84.9842C463.88 85.0475 464.082 85.0792 464.301 85.0792C464.436 85.0792 464.561 85.066 464.678 85.0396C464.794 85.0158 464.901 84.9815 464.999 84.9366C465.094 84.8944 465.181 84.8442 465.26 84.7861C465.339 84.728 465.409 84.6659 465.47 84.5999C465.483 84.6765 465.499 84.7491 465.518 84.8178C465.536 84.8864 465.558 84.9472 465.585 85ZM464.535 84.2275C464.432 84.2275 464.341 84.2156 464.262 84.1918C464.185 84.1654 464.12 84.1311 464.068 84.0888C464.015 84.0439 463.974 83.9898 463.945 83.9264C463.918 83.8603 463.905 83.789 463.905 83.7124C463.905 83.6147 463.924 83.5249 463.961 83.443C463.998 83.3585 464.054 83.2859 464.131 83.2251C464.208 83.167 464.307 83.1221 464.428 83.0904C464.55 83.0561 464.696 83.0389 464.868 83.0389H465.43V83.7758C465.399 83.8313 465.355 83.8868 465.3 83.9422C465.244 83.995 465.178 84.0426 465.102 84.0848C465.025 84.1271 464.939 84.1614 464.844 84.1878C464.749 84.2143 464.646 84.2275 464.535 84.2275ZM467.78 85H468.885V81.9534C468.922 81.8953 468.963 81.8425 469.008 81.795C469.053 81.7474 469.103 81.7065 469.158 81.6721C469.227 81.6246 469.305 81.5889 469.392 81.5652C469.482 81.5414 469.58 81.5295 469.685 81.5295C469.812 81.5295 469.926 81.5427 470.026 81.5691C470.126 81.5929 470.212 81.6365 470.284 81.6999C470.355 81.7633 470.409 81.8504 470.446 81.9613C470.486 82.0696 470.505 82.2083 470.505 82.3773V85H471.607V82.3615C471.607 82.0498 471.57 81.7857 471.496 81.5691C471.425 81.3499 471.324 81.1703 471.195 81.0303C471.063 80.893 470.907 80.7926 470.727 80.7292C470.548 80.6659 470.35 80.6342 470.133 80.6342C469.964 80.6342 469.804 80.6579 469.654 80.7055C469.503 80.753 469.364 80.8217 469.238 80.9115C469.164 80.9643 469.094 81.0237 469.028 81.0898C468.962 81.1558 468.901 81.2284 468.845 81.3077L468.778 80.7134H467.78V85ZM472.542 82.825V82.9082C472.542 83.2199 472.581 83.5091 472.661 83.7758C472.742 84.0399 472.859 84.2684 473.009 84.4612C473.16 84.654 473.341 84.8059 473.552 84.9168C473.766 85.0251 474.006 85.0792 474.273 85.0792C474.408 85.0792 474.533 85.0647 474.649 85.0357C474.768 85.0066 474.876 84.9657 474.974 84.9128C475.04 84.8759 475.102 84.8336 475.16 84.7861C475.219 84.7385 475.274 84.6857 475.327 84.6276V84.8732C475.327 85.0185 475.306 85.1492 475.263 85.2654C475.224 85.3816 475.166 85.4794 475.089 85.5586C475.005 85.6458 474.899 85.7118 474.772 85.7567C474.648 85.8016 474.505 85.824 474.344 85.824C474.244 85.824 474.146 85.8135 474.051 85.7923C473.959 85.7739 473.869 85.7448 473.782 85.7052C473.692 85.6656 473.606 85.6141 473.524 85.5507C473.442 85.4899 473.366 85.4186 473.294 85.3367L472.799 86.0063C472.892 86.1251 473.003 86.2268 473.132 86.3113C473.261 86.3985 473.399 86.4698 473.544 86.5253C473.689 86.5807 473.836 86.6217 473.984 86.6481C474.132 86.6745 474.27 86.6877 474.4 86.6877C474.701 86.6877 474.976 86.6468 475.224 86.5649C475.475 86.4857 475.69 86.3681 475.87 86.2123C476.047 86.0565 476.184 85.865 476.282 85.6378C476.382 85.4107 476.432 85.1519 476.432 84.8613V80.7134H475.43L475.386 81.1215C475.333 81.0554 475.275 80.996 475.212 80.9432C475.149 80.8877 475.08 80.8402 475.006 80.8006C474.908 80.7451 474.799 80.7042 474.677 80.6777C474.558 80.6487 474.426 80.6342 474.281 80.6342C474.012 80.6342 473.77 80.687 473.556 80.7926C473.342 80.8983 473.16 81.0475 473.009 81.2403C472.859 81.4331 472.742 81.6642 472.661 81.9336C472.581 82.203 472.542 82.5001 472.542 82.825ZM473.647 82.9082V82.825C473.647 82.6454 473.666 82.4777 473.703 82.3219C473.739 82.1634 473.796 82.0247 473.873 81.9059C473.947 81.7897 474.041 81.6986 474.154 81.6325C474.268 81.5639 474.402 81.5295 474.558 81.5295C474.643 81.5295 474.721 81.5374 474.792 81.5533C474.866 81.5691 474.933 81.5916 474.994 81.6206C475.065 81.655 475.129 81.6999 475.184 81.7553C475.24 81.8108 475.287 81.8755 475.327 81.9495V83.7639C475.29 83.83 475.246 83.8894 475.196 83.9422C475.146 83.995 475.088 84.0399 475.022 84.0769C474.958 84.1113 474.887 84.1377 474.808 84.1562C474.731 84.1746 474.645 84.1839 474.55 84.1839C474.394 84.1839 474.26 84.1509 474.146 84.0848C474.033 84.0188 473.939 83.9277 473.865 83.8115C473.791 83.6979 473.736 83.5645 473.699 83.4113C473.664 83.2555 473.647 83.0878 473.647 82.9082ZM479.605 85.0792C480.02 85.0792 480.379 84.9987 480.683 84.8376C480.987 84.6765 481.209 84.4969 481.349 84.2988L480.798 83.7045C480.671 83.8683 480.506 83.9911 480.303 84.073C480.099 84.1548 479.889 84.1958 479.673 84.1958C479.52 84.1958 479.378 84.172 479.249 84.1245C479.12 84.0769 479.005 84.0096 478.904 83.9224C478.807 83.8379 478.729 83.7441 478.671 83.6411C478.612 83.5355 478.565 83.3968 478.528 83.2251V83.2133H481.436V82.7458C481.436 82.4315 481.392 82.1449 481.305 81.8861C481.218 81.6246 481.091 81.4014 480.925 81.2165C480.756 81.0317 480.55 80.889 480.307 80.7887C480.066 80.6857 479.792 80.6342 479.483 80.6342C479.184 80.6342 478.908 80.6883 478.655 80.7966C478.401 80.9049 478.182 81.0568 477.997 81.2522C477.812 81.4476 477.668 81.6814 477.565 81.9534C477.462 82.2228 477.411 82.5213 477.411 82.8488V83.0072C477.411 83.2951 477.462 83.5659 477.565 83.8194C477.671 84.0703 477.82 84.2882 478.013 84.4731C478.206 84.6606 478.437 84.8085 478.706 84.9168C478.976 85.0251 479.275 85.0792 479.605 85.0792ZM479.475 81.5256C479.615 81.5256 479.738 81.548 479.843 81.5929C479.951 81.6352 480.043 81.6933 480.117 81.7672C480.191 81.8438 480.249 81.9336 480.291 82.0366C480.333 82.1396 480.354 82.2492 480.354 82.3654V82.4526H478.548C478.574 82.3126 478.614 82.1858 478.667 82.0723C478.719 81.9587 478.785 81.861 478.865 81.7791C478.941 81.6972 479.031 81.6352 479.134 81.5929C479.237 81.548 479.351 81.5256 479.475 81.5256ZM485.164 83.8234C485.164 83.8894 485.147 83.9501 485.112 84.0056C485.081 84.0611 485.032 84.1099 484.966 84.1522C484.897 84.1944 484.809 84.2288 484.7 84.2552C484.595 84.279 484.47 84.2908 484.328 84.2908C484.209 84.2908 484.093 84.279 483.979 84.2552C483.868 84.2314 483.769 84.1931 483.682 84.1403C483.595 84.0901 483.524 84.0241 483.468 83.9422C483.413 83.8577 483.381 83.7573 483.373 83.6411H482.323C482.323 83.8154 482.365 83.9898 482.45 84.1641C482.537 84.3357 482.664 84.4889 482.83 84.6236C482.997 84.761 483.203 84.8719 483.448 84.9564C483.697 85.0409 483.982 85.0832 484.304 85.0832C484.597 85.0832 484.863 85.0515 485.1 84.9881C485.338 84.9221 485.541 84.831 485.711 84.7148C485.877 84.5985 486.005 84.4612 486.095 84.3027C486.187 84.1416 486.233 83.966 486.233 83.7758C486.233 83.5698 486.187 83.3929 486.095 83.245C486.005 83.0944 485.88 82.9663 485.718 82.8607C485.557 82.7577 485.366 82.6731 485.144 82.6071C484.922 82.5411 484.682 82.4869 484.423 82.4447C484.243 82.4183 484.095 82.3879 483.979 82.3536C483.863 82.3166 483.772 82.2756 483.706 82.2307C483.637 82.1885 483.59 82.1409 483.563 82.0881C483.537 82.0327 483.524 81.9732 483.524 81.9098C483.524 81.8465 483.538 81.787 483.567 81.7316C483.599 81.6735 483.644 81.6233 483.702 81.581C483.765 81.5335 483.847 81.4965 483.948 81.4701C484.048 81.4437 484.165 81.4305 484.3 81.4305C484.459 81.4305 484.593 81.4503 484.704 81.4899C484.818 81.5295 484.908 81.5823 484.974 81.6484C485.021 81.6986 485.057 81.7553 485.081 81.8187C485.104 81.8795 485.116 81.9455 485.116 82.0168H486.218C486.218 81.8187 486.174 81.6352 486.087 81.4661C486 81.2971 485.874 81.1505 485.711 81.0264C485.544 80.9049 485.342 80.8098 485.104 80.7411C484.867 80.6698 484.599 80.6342 484.3 80.6342C484.015 80.6342 483.759 80.6698 483.532 80.7411C483.304 80.8124 483.112 80.9088 482.953 81.0303C482.795 81.1518 482.673 81.2931 482.589 81.4542C482.504 81.6154 482.462 81.7844 482.462 81.9613C482.462 82.1436 482.503 82.3047 482.585 82.4447C482.669 82.5847 482.785 82.7075 482.933 82.8131C483.081 82.9214 483.258 83.0138 483.464 83.0904C483.673 83.1644 483.903 83.2265 484.154 83.2766C484.352 83.3136 484.515 83.3506 484.645 83.3876C484.774 83.4245 484.879 83.4642 484.958 83.5064C485.034 83.5513 485.087 83.5989 485.116 83.649C485.148 83.6992 485.164 83.7573 485.164 83.8234ZM489.526 84.9128L489.53 84.0373H488.496V84.9643C488.496 85.2549 488.461 85.5031 488.393 85.7092C488.324 85.9178 488.239 86.1172 488.139 86.3074L488.721 86.6085C488.959 86.3972 489.152 86.137 489.3 85.828C489.45 85.519 489.526 85.2139 489.526 84.9128ZM499.814 85H500.813V80.7134H499.707V83.7204C499.673 83.789 499.632 83.8511 499.585 83.9066C499.537 83.962 499.483 84.0096 499.422 84.0492C499.351 84.0941 499.268 84.1284 499.173 84.1522C499.08 84.176 498.976 84.1878 498.86 84.1878C498.73 84.1878 498.621 84.172 498.531 84.1403C498.441 84.1086 498.368 84.0558 498.313 83.9818C498.257 83.9105 498.216 83.8154 498.19 83.6966C498.166 83.5777 498.154 83.4312 498.154 83.2568V80.7134H497.053V83.2489C497.053 83.5738 497.089 83.8524 497.16 84.0848C497.234 84.3146 497.337 84.5035 497.469 84.6514C497.601 84.8019 497.759 84.9115 497.944 84.9802C498.129 85.0489 498.333 85.0832 498.554 85.0832C498.797 85.0832 499.021 85.0224 499.224 84.901C499.43 84.7795 499.606 84.6117 499.751 84.3978L499.814 85ZM501.906 86.6481H503.007V84.6276C503.058 84.6831 503.11 84.7332 503.166 84.7781C503.221 84.823 503.28 84.864 503.34 84.901C503.443 84.9591 503.554 85.0026 503.673 85.0317C503.795 85.0634 503.927 85.0792 504.069 85.0792C504.339 85.0792 504.578 85.0238 504.786 84.9128C504.995 84.8019 505.171 84.6487 505.313 84.4533C505.453 84.2605 505.559 84.0307 505.63 83.7639C505.704 83.4972 505.741 83.208 505.741 82.8963V82.8131C505.741 82.4883 505.704 82.1924 505.63 81.9257C505.559 81.6563 505.452 81.4252 505.309 81.2324C505.167 81.0422 504.991 80.8956 504.782 80.7926C504.574 80.687 504.333 80.6342 504.061 80.6342C503.929 80.6342 503.805 80.6487 503.689 80.6777C503.575 80.7042 503.471 80.7425 503.376 80.7926C503.297 80.8349 503.223 80.8851 503.154 80.9432C503.085 80.9986 503.022 81.062 502.964 81.1333L502.924 80.7134H501.906V86.6481ZM504.64 82.8131V82.8963C504.64 83.0733 504.624 83.241 504.592 83.3995C504.56 83.5553 504.51 83.6926 504.442 83.8115C504.373 83.9303 504.283 84.0241 504.172 84.0928C504.064 84.1614 503.932 84.1958 503.776 84.1958C503.678 84.1958 503.59 84.1865 503.511 84.168C503.431 84.1469 503.361 84.1179 503.301 84.0809C503.237 84.0413 503.18 83.9937 503.13 83.9383C503.083 83.8828 503.042 83.8207 503.007 83.7521V81.9613C503.044 81.8874 503.088 81.8227 503.138 81.7672C503.191 81.7118 503.252 81.6655 503.32 81.6286C503.381 81.5969 503.449 81.5731 503.522 81.5573C503.596 81.5388 503.678 81.5295 503.768 81.5295C503.924 81.5295 504.056 81.5625 504.164 81.6286C504.275 81.6946 504.366 81.7844 504.438 81.898C504.506 82.0142 504.557 82.1515 504.588 82.31C504.623 82.4658 504.64 82.6335 504.64 82.8131ZM506.648 82.825V82.9082C506.648 83.2199 506.687 83.5091 506.763 83.7758C506.84 84.0399 506.951 84.2684 507.096 84.4612C507.239 84.654 507.413 84.8059 507.619 84.9168C507.828 85.0251 508.063 85.0792 508.324 85.0792C508.564 85.0792 508.776 85.033 508.958 84.9406C509.14 84.8481 509.299 84.7187 509.433 84.5523L509.489 85H510.483V78.9148H509.378V81.0977C509.246 80.9498 509.094 80.8362 508.922 80.757C508.753 80.6751 508.557 80.6342 508.332 80.6342C508.065 80.6342 507.828 80.687 507.619 80.7926C507.413 80.8983 507.237 81.0475 507.092 81.2403C506.947 81.4331 506.836 81.6642 506.759 81.9336C506.685 82.203 506.648 82.5001 506.648 82.825ZM507.75 82.9082V82.825C507.75 82.6454 507.766 82.4777 507.797 82.3219C507.829 82.1634 507.879 82.0247 507.948 81.9059C508.016 81.7897 508.105 81.6986 508.213 81.6325C508.324 81.5639 508.457 81.5295 508.613 81.5295C508.801 81.5295 508.957 81.5705 509.081 81.6523C509.205 81.7316 509.304 81.8438 509.378 81.9891V83.7243C509.304 83.8669 509.204 83.9792 509.077 84.0611C508.953 84.1429 508.796 84.1839 508.605 84.1839C508.45 84.1839 508.318 84.1509 508.209 84.0848C508.101 84.0188 508.012 83.9277 507.944 83.8115C507.875 83.6979 507.825 83.5645 507.793 83.4113C507.764 83.2555 507.75 83.0878 507.75 82.9082ZM514.314 85H515.431V84.9327C515.376 84.8244 515.334 84.6949 515.305 84.5444C515.276 84.3939 515.261 84.2037 515.261 83.9739V82.1357C515.261 81.8874 515.215 81.6695 515.122 81.482C515.03 81.2918 514.902 81.1347 514.738 81.0105C514.574 80.8864 514.38 80.7926 514.156 80.7292C513.934 80.6659 513.694 80.6342 513.435 80.6342C513.147 80.6342 512.891 80.6711 512.666 80.7451C512.444 80.8164 512.257 80.9141 512.104 81.0383C511.948 81.1624 511.829 81.3063 511.747 81.4701C511.668 81.6338 511.628 81.8068 511.628 81.9891H512.73C512.73 81.9125 512.74 81.8425 512.761 81.7791C512.785 81.7157 512.821 81.6616 512.868 81.6167C512.921 81.5665 512.99 81.5282 513.074 81.5018C513.159 81.4727 513.259 81.4582 513.375 81.4582C513.507 81.4582 513.622 81.4754 513.72 81.5097C513.82 81.5414 513.904 81.5876 513.97 81.6484C514.033 81.7065 514.081 81.7765 514.112 81.8583C514.144 81.9376 514.16 82.0274 514.16 82.1277V82.3813H513.546C513.229 82.3813 512.947 82.4103 512.702 82.4685C512.459 82.5239 512.254 82.6058 512.088 82.7141C511.903 82.8329 511.764 82.9848 511.672 83.1697C511.579 83.3519 511.533 83.5619 511.533 83.7996C511.533 83.9845 511.57 84.1562 511.644 84.3146C511.718 84.4704 511.821 84.6051 511.953 84.7187C512.085 84.8323 512.242 84.9208 512.425 84.9842C512.609 85.0475 512.811 85.0792 513.031 85.0792C513.165 85.0792 513.291 85.066 513.407 85.0396C513.523 85.0158 513.63 84.9815 513.728 84.9366C513.823 84.8944 513.91 84.8442 513.989 84.7861C514.069 84.728 514.139 84.6659 514.199 84.5999C514.213 84.6765 514.228 84.7491 514.247 84.8178C514.265 84.8864 514.288 84.9472 514.314 85ZM513.264 84.2275C513.161 84.2275 513.07 84.2156 512.991 84.1918C512.914 84.1654 512.85 84.1311 512.797 84.0888C512.744 84.0439 512.703 83.9898 512.674 83.9264C512.648 83.8603 512.634 83.789 512.634 83.7124C512.634 83.6147 512.653 83.5249 512.69 83.443C512.727 83.3585 512.784 83.2859 512.86 83.2251C512.937 83.167 513.036 83.1221 513.157 83.0904C513.279 83.0561 513.426 83.0389 513.597 83.0389H514.16V83.7758C514.128 83.8313 514.084 83.8868 514.029 83.9422C513.974 83.995 513.908 84.0426 513.831 84.0848C513.754 84.1271 513.668 84.1614 513.573 84.1878C513.478 84.2143 513.375 84.2275 513.264 84.2275ZM518.53 79.6635H517.428V80.7134H516.45V81.5256H517.428V83.4747C517.428 83.7573 517.465 84.0003 517.539 84.2037C517.613 84.4044 517.719 84.5695 517.856 84.6989C517.991 84.831 518.153 84.9287 518.343 84.9921C518.536 85.0528 518.75 85.0832 518.985 85.0832C519.107 85.0832 519.229 85.0766 519.354 85.0634C519.48 85.0528 519.602 85.037 519.718 85.0158C519.834 84.9947 519.944 84.9683 520.047 84.9366C520.15 84.9023 520.24 84.8627 520.316 84.8178L520.209 84.0611C520.159 84.0743 520.098 84.0875 520.027 84.1007C519.958 84.1139 519.884 84.1258 519.805 84.1363C519.723 84.1495 519.638 84.1601 519.548 84.168C519.461 84.176 519.375 84.1799 519.29 84.1799C519.174 84.1799 519.068 84.1667 518.973 84.1403C518.881 84.1139 518.802 84.069 518.736 84.0056C518.67 83.9449 518.618 83.863 518.581 83.76C518.547 83.6543 518.53 83.5236 518.53 83.3678V81.5256H520.13V80.7134H518.53V79.6635ZM523.462 85.0792C523.877 85.0792 524.236 84.9987 524.54 84.8376C524.843 84.6765 525.065 84.4969 525.205 84.2988L524.654 83.7045C524.528 83.8683 524.363 83.9911 524.159 84.073C523.956 84.1548 523.746 84.1958 523.529 84.1958C523.376 84.1958 523.235 84.172 523.105 84.1245C522.976 84.0769 522.861 84.0096 522.761 83.9224C522.663 83.8379 522.585 83.7441 522.527 83.6411C522.469 83.5355 522.421 83.3968 522.384 83.2251V83.2133H525.292V82.7458C525.292 82.4315 525.249 82.1449 525.161 81.8861C525.074 81.6246 524.948 81.4014 524.781 81.2165C524.612 81.0317 524.406 80.889 524.163 80.7887C523.923 80.6857 523.648 80.6342 523.339 80.6342C523.041 80.6342 522.765 80.6883 522.511 80.7966C522.258 80.9049 522.038 81.0568 521.853 81.2522C521.669 81.4476 521.525 81.6814 521.422 81.9534C521.319 82.2228 521.267 82.5213 521.267 82.8488V83.0072C521.267 83.2951 521.319 83.5659 521.422 83.8194C521.527 84.0703 521.676 84.2882 521.869 84.4731C522.062 84.6606 522.293 84.8085 522.563 84.9168C522.832 85.0251 523.132 85.0792 523.462 85.0792ZM523.331 81.5256C523.471 81.5256 523.594 81.548 523.7 81.5929C523.808 81.6352 523.899 81.6933 523.973 81.7672C524.047 81.8438 524.105 81.9336 524.147 82.0366C524.19 82.1396 524.211 82.2492 524.211 82.3654V82.4526H522.404C522.431 82.3126 522.47 82.1858 522.523 82.0723C522.576 81.9587 522.642 81.861 522.721 81.7791C522.798 81.6972 522.887 81.6352 522.99 81.5929C523.093 81.548 523.207 81.5256 523.331 81.5256Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"540.5\"\n      cy=\"110.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M539.772 111.953H540.763C540.763 111.848 540.765 111.758 540.771 111.684C540.776 111.607 540.789 111.537 540.81 111.474C540.829 111.411 540.861 111.349 540.905 111.288C540.95 111.227 541.012 111.157 541.092 111.078C541.221 110.964 541.349 110.848 541.476 110.729C541.605 110.608 541.72 110.48 541.821 110.345C541.921 110.213 542.003 110.07 542.066 109.917C542.13 109.761 542.161 109.59 542.161 109.402C542.161 109.149 542.119 108.925 542.035 108.733C541.95 108.54 541.829 108.377 541.67 108.245C541.509 108.116 541.312 108.018 541.08 107.952C540.847 107.886 540.585 107.853 540.291 107.853C540.03 107.853 539.787 107.886 539.562 107.952C539.338 108.015 539.142 108.113 538.976 108.245C538.81 108.377 538.678 108.544 538.58 108.744C538.482 108.943 538.432 109.176 538.429 109.446H539.535C539.537 109.324 539.56 109.22 539.602 109.133C539.647 109.046 539.705 108.974 539.776 108.919C539.845 108.863 539.924 108.824 540.014 108.8C540.104 108.773 540.196 108.76 540.291 108.76C540.413 108.76 540.52 108.773 540.612 108.8C540.707 108.826 540.788 108.866 540.854 108.919C540.917 108.977 540.966 109.051 541.001 109.141C541.035 109.228 541.052 109.332 541.052 109.454C541.052 109.554 541.03 109.654 540.985 109.755C540.94 109.855 540.882 109.953 540.81 110.048C540.736 110.146 540.655 110.241 540.565 110.333C540.475 110.423 540.385 110.509 540.295 110.591C540.171 110.688 540.075 110.781 540.006 110.868C539.937 110.952 539.886 111.045 539.852 111.145C539.817 111.248 539.795 111.363 539.784 111.49C539.776 111.617 539.772 111.771 539.772 111.953ZM539.61 113.154C539.61 113.323 539.667 113.466 539.78 113.582C539.894 113.695 540.051 113.752 540.252 113.752C540.447 113.752 540.603 113.695 540.719 113.582C540.838 113.466 540.898 113.323 540.898 113.154C540.898 112.98 540.838 112.834 540.719 112.718C540.603 112.599 540.447 112.54 540.252 112.54C540.051 112.54 539.894 112.599 539.78 112.718C539.667 112.834 539.61 112.98 539.61 113.154Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M399.895 114H400.902L401.385 110.886L401.429 110.593L401.472 110.886L401.975 114H402.982L403.782 108.232H402.76L402.367 111.464L402.34 111.706L402.304 111.468L401.821 108.232H401.024L400.569 111.445L400.533 111.682L400.505 111.457L400.121 108.232H399.103L399.895 114ZM405.533 110.304V107.915H404.432V114H405.533V110.906C405.575 110.85 405.621 110.8 405.672 110.755C405.724 110.71 405.782 110.672 405.846 110.64C405.915 110.603 405.991 110.576 406.076 110.557C406.16 110.539 406.251 110.53 406.349 110.53C406.476 110.53 406.589 110.547 406.69 110.581C406.79 110.613 406.876 110.663 406.947 110.732C407.019 110.8 407.073 110.89 407.11 111.001C407.149 111.112 407.169 111.244 407.169 111.397V114H408.27V111.405C408.27 111.091 408.232 110.823 408.156 110.601C408.082 110.376 407.977 110.193 407.843 110.05C407.708 109.908 407.547 109.803 407.359 109.737C407.172 109.669 406.966 109.634 406.741 109.634C406.588 109.634 406.443 109.657 406.305 109.702C406.168 109.746 406.043 109.81 405.929 109.892C405.855 109.945 405.784 110.007 405.715 110.078C405.649 110.147 405.588 110.222 405.533 110.304ZM411.384 114.079C411.799 114.079 412.158 113.999 412.462 113.838C412.766 113.676 412.988 113.497 413.128 113.299L412.577 112.705C412.45 112.868 412.285 112.991 412.082 113.073C411.878 113.155 411.668 113.196 411.452 113.196C411.299 113.196 411.157 113.172 411.028 113.124C410.898 113.077 410.784 113.01 410.683 112.922C410.585 112.838 410.508 112.744 410.449 112.641C410.391 112.535 410.344 112.397 410.307 112.225V112.213H413.215V111.746C413.215 111.431 413.171 111.145 413.084 110.886C412.997 110.625 412.87 110.401 412.704 110.217C412.535 110.032 412.329 109.889 412.086 109.789C411.845 109.686 411.571 109.634 411.262 109.634C410.963 109.634 410.687 109.688 410.434 109.797C410.18 109.905 409.961 110.057 409.776 110.252C409.591 110.448 409.447 110.681 409.344 110.953C409.241 111.223 409.19 111.521 409.19 111.849V112.007C409.19 112.295 409.241 112.566 409.344 112.819C409.45 113.07 409.599 113.288 409.792 113.473C409.985 113.661 410.216 113.809 410.485 113.917C410.754 114.025 411.054 114.079 411.384 114.079ZM411.254 110.526C411.394 110.526 411.516 110.548 411.622 110.593C411.73 110.635 411.821 110.693 411.895 110.767C411.969 110.844 412.028 110.934 412.07 111.037C412.112 111.14 412.133 111.249 412.133 111.365V111.453H410.327C410.353 111.313 410.393 111.186 410.445 111.072C410.498 110.959 410.564 110.861 410.644 110.779C410.72 110.697 410.81 110.635 410.913 110.593C411.016 110.548 411.13 110.526 411.254 110.526ZM414.177 114H415.283V110.953C415.32 110.895 415.361 110.842 415.406 110.795C415.45 110.747 415.501 110.706 415.556 110.672C415.625 110.625 415.703 110.589 415.79 110.565C415.88 110.541 415.977 110.53 416.083 110.53C416.21 110.53 416.323 110.543 416.424 110.569C416.524 110.593 416.61 110.636 416.681 110.7C416.753 110.763 416.807 110.85 416.844 110.961C416.883 111.07 416.903 111.208 416.903 111.377V114H418.004V111.361C418.004 111.05 417.967 110.786 417.894 110.569C417.822 110.35 417.722 110.17 417.592 110.03C417.46 109.893 417.305 109.793 417.125 109.729C416.945 109.666 416.747 109.634 416.531 109.634C416.362 109.634 416.202 109.658 416.051 109.705C415.901 109.753 415.762 109.822 415.635 109.911C415.561 109.964 415.491 110.024 415.425 110.09C415.359 110.156 415.299 110.228 415.243 110.308L415.176 109.713H414.177V114ZM423.923 114H425.029V110.953C425.066 110.895 425.107 110.842 425.151 110.795C425.196 110.747 425.247 110.706 425.302 110.672C425.371 110.625 425.449 110.589 425.536 110.565C425.626 110.541 425.723 110.53 425.829 110.53C425.956 110.53 426.069 110.543 426.17 110.569C426.27 110.593 426.356 110.636 426.427 110.7C426.498 110.763 426.553 110.85 426.59 110.961C426.629 111.07 426.649 111.208 426.649 111.377V114H427.75V111.361C427.75 111.05 427.713 110.786 427.639 110.569C427.568 110.35 427.468 110.17 427.338 110.03C427.206 109.893 427.05 109.793 426.871 109.729C426.691 109.666 426.493 109.634 426.277 109.634C426.108 109.634 425.948 109.658 425.797 109.705C425.647 109.753 425.508 109.822 425.381 109.911C425.307 109.964 425.237 110.024 425.171 110.09C425.105 110.156 425.044 110.228 424.989 110.308L424.922 109.713H423.923V114ZM428.646 111.817V111.9C428.646 112.215 428.691 112.505 428.78 112.772C428.87 113.036 429.002 113.266 429.177 113.461C429.348 113.657 429.56 113.81 429.81 113.921C430.064 114.029 430.352 114.083 430.674 114.083C430.994 114.083 431.279 114.029 431.53 113.921C431.781 113.81 431.992 113.657 432.164 113.461C432.335 113.266 432.466 113.036 432.556 112.772C432.646 112.505 432.691 112.215 432.691 111.9V111.817C432.691 111.505 432.646 111.218 432.556 110.953C432.466 110.687 432.335 110.456 432.164 110.26C431.989 110.065 431.777 109.911 431.526 109.801C431.275 109.69 430.988 109.634 430.666 109.634C430.344 109.634 430.057 109.69 429.806 109.801C429.558 109.911 429.348 110.065 429.177 110.26C429.002 110.456 428.87 110.687 428.78 110.953C428.691 111.218 428.646 111.505 428.646 111.817ZM429.747 111.9V111.817C429.747 111.643 429.764 111.478 429.799 111.322C429.833 111.166 429.887 111.029 429.961 110.91C430.035 110.791 430.13 110.697 430.246 110.629C430.362 110.56 430.502 110.526 430.666 110.526C430.833 110.526 430.974 110.56 431.09 110.629C431.206 110.697 431.301 110.791 431.375 110.91C431.447 111.029 431.499 111.166 431.534 111.322C431.568 111.478 431.585 111.643 431.585 111.817V111.9C431.585 112.08 431.568 112.249 431.534 112.407C431.499 112.563 431.447 112.699 431.375 112.815C431.301 112.934 431.206 113.028 431.09 113.097C430.974 113.165 430.835 113.2 430.674 113.2C430.508 113.2 430.365 113.165 430.246 113.097C430.13 113.028 430.035 112.934 429.961 112.815C429.887 112.699 429.833 112.563 429.799 112.407C429.764 112.249 429.747 112.08 429.747 111.9ZM433.554 111.825V111.908C433.554 112.22 433.593 112.509 433.669 112.776C433.746 113.04 433.857 113.268 434.002 113.461C434.145 113.654 434.319 113.806 434.525 113.917C434.734 114.025 434.969 114.079 435.23 114.079C435.47 114.079 435.682 114.033 435.864 113.941C436.046 113.848 436.205 113.719 436.339 113.552L436.395 114H437.389V107.915H436.284V110.098C436.152 109.95 436 109.836 435.828 109.757C435.659 109.675 435.463 109.634 435.238 109.634C434.971 109.634 434.734 109.687 434.525 109.793C434.319 109.898 434.143 110.048 433.998 110.24C433.853 110.433 433.742 110.664 433.665 110.934C433.591 111.203 433.554 111.5 433.554 111.825ZM434.656 111.908V111.825C434.656 111.645 434.671 111.478 434.703 111.322C434.735 111.163 434.785 111.025 434.854 110.906C434.922 110.79 435.011 110.699 435.119 110.633C435.23 110.564 435.363 110.53 435.519 110.53C435.707 110.53 435.863 110.57 435.987 110.652C436.111 110.732 436.21 110.844 436.284 110.989V112.724C436.21 112.867 436.11 112.979 435.983 113.061C435.859 113.143 435.702 113.184 435.511 113.184C435.356 113.184 435.223 113.151 435.115 113.085C435.007 113.019 434.918 112.928 434.85 112.811C434.781 112.698 434.731 112.565 434.699 112.411C434.67 112.256 434.656 112.088 434.656 111.908ZM440.622 114.079C441.037 114.079 441.396 113.999 441.7 113.838C442.003 113.676 442.225 113.497 442.365 113.299L441.814 112.705C441.688 112.868 441.523 112.991 441.319 113.073C441.116 113.155 440.906 113.196 440.689 113.196C440.536 113.196 440.395 113.172 440.265 113.124C440.136 113.077 440.021 113.01 439.921 112.922C439.823 112.838 439.745 112.744 439.687 112.641C439.629 112.535 439.581 112.397 439.544 112.225V112.213H442.452V111.746C442.452 111.431 442.409 111.145 442.322 110.886C442.234 110.625 442.108 110.401 441.941 110.217C441.772 110.032 441.566 109.889 441.323 109.789C441.083 109.686 440.808 109.634 440.499 109.634C440.201 109.634 439.925 109.688 439.671 109.797C439.418 109.905 439.198 110.057 439.014 110.252C438.829 110.448 438.685 110.681 438.582 110.953C438.479 111.223 438.427 111.521 438.427 111.849V112.007C438.427 112.295 438.479 112.566 438.582 112.819C438.687 113.07 438.837 113.288 439.029 113.473C439.222 113.661 439.453 113.809 439.723 113.917C439.992 114.025 440.292 114.079 440.622 114.079ZM440.491 110.526C440.631 110.526 440.754 110.548 440.86 110.593C440.968 110.635 441.059 110.693 441.133 110.767C441.207 110.844 441.265 110.934 441.307 111.037C441.35 111.14 441.371 111.249 441.371 111.365V111.453H439.564C439.591 111.313 439.63 111.186 439.683 111.072C439.736 110.959 439.802 110.861 439.881 110.779C439.958 110.697 440.048 110.635 440.151 110.593C440.254 110.548 440.367 110.526 440.491 110.526ZM447.187 114V113.117H444.655L445.741 111.968C445.928 111.775 446.098 111.591 446.252 111.417C446.405 111.24 446.537 111.067 446.648 110.898C446.756 110.729 446.839 110.559 446.897 110.387C446.958 110.213 446.989 110.03 446.989 109.84C446.989 109.589 446.949 109.361 446.87 109.155C446.79 108.946 446.676 108.768 446.525 108.62C446.372 108.472 446.182 108.357 445.955 108.275C445.73 108.193 445.471 108.152 445.178 108.152C444.872 108.152 444.592 108.203 444.338 108.303C444.087 108.401 443.873 108.535 443.696 108.707C443.517 108.879 443.378 109.08 443.28 109.309C443.183 109.536 443.134 109.778 443.134 110.034H444.239C444.239 109.878 444.259 109.74 444.298 109.618C444.338 109.497 444.396 109.395 444.473 109.313C444.547 109.234 444.639 109.175 444.75 109.135C444.864 109.093 444.994 109.072 445.142 109.072C445.256 109.072 445.359 109.09 445.451 109.127C445.546 109.164 445.628 109.217 445.697 109.286C445.763 109.357 445.815 109.443 445.851 109.543C445.888 109.643 445.907 109.758 445.907 109.888C445.907 109.975 445.892 110.065 445.863 110.157C445.837 110.25 445.793 110.349 445.733 110.454C445.669 110.563 445.587 110.681 445.487 110.811C445.387 110.94 445.264 111.084 445.119 111.243L443.253 113.247V114H447.187ZM455.059 113.2C454.882 113.2 454.735 113.164 454.619 113.093C454.505 113.021 454.415 112.926 454.349 112.808C454.281 112.691 454.233 112.557 454.207 112.403C454.18 112.248 454.167 112.086 454.167 111.92V111.801C454.167 111.637 454.18 111.479 454.207 111.326C454.236 111.173 454.285 111.037 454.353 110.918C454.419 110.799 454.509 110.704 454.623 110.633C454.736 110.561 454.88 110.526 455.055 110.526C455.173 110.526 455.283 110.547 455.383 110.589C455.484 110.629 455.57 110.683 455.641 110.751C455.712 110.82 455.766 110.902 455.803 110.997C455.84 111.092 455.856 111.192 455.851 111.298H456.889C456.894 111.045 456.852 110.816 456.762 110.613C456.672 110.407 456.547 110.231 456.386 110.086C456.222 109.943 456.028 109.832 455.803 109.753C455.579 109.674 455.335 109.634 455.07 109.634C454.74 109.634 454.45 109.691 454.199 109.805C453.951 109.918 453.742 110.073 453.573 110.268C453.404 110.463 453.277 110.693 453.193 110.957C453.108 111.219 453.066 111.5 453.066 111.801V111.92C453.066 112.221 453.108 112.504 453.193 112.768C453.28 113.029 453.408 113.258 453.577 113.453C453.743 113.649 453.952 113.803 454.203 113.917C454.454 114.028 454.746 114.083 455.078 114.083C455.324 114.083 455.556 114.045 455.776 113.968C455.998 113.889 456.192 113.781 456.358 113.643C456.524 113.506 456.655 113.342 456.75 113.152C456.848 112.962 456.894 112.756 456.889 112.534H455.851C455.856 112.635 455.838 112.726 455.795 112.808C455.756 112.889 455.699 112.959 455.625 113.017C455.551 113.076 455.465 113.12 455.368 113.152C455.27 113.184 455.167 113.2 455.059 113.2ZM459.135 110.304V107.915H458.034V114H459.135V110.906C459.177 110.85 459.224 110.8 459.274 110.755C459.327 110.71 459.385 110.672 459.448 110.64C459.517 110.603 459.593 110.576 459.678 110.557C459.762 110.539 459.854 110.53 459.951 110.53C460.078 110.53 460.192 110.547 460.292 110.581C460.392 110.613 460.478 110.663 460.55 110.732C460.621 110.8 460.675 110.89 460.712 111.001C460.752 111.112 460.771 111.244 460.771 111.397V114H461.873V111.405C461.873 111.091 461.834 110.823 461.758 110.601C461.684 110.376 461.58 110.193 461.445 110.05C461.31 109.908 461.149 109.803 460.962 109.737C460.774 109.669 460.568 109.634 460.344 109.634C460.19 109.634 460.045 109.657 459.908 109.702C459.77 109.746 459.645 109.81 459.531 109.892C459.457 109.945 459.386 110.007 459.317 110.078C459.251 110.147 459.191 110.222 459.135 110.304ZM465.585 114H466.702V113.933C466.647 113.824 466.604 113.695 466.575 113.544C466.546 113.394 466.532 113.204 466.532 112.974V111.136C466.532 110.887 466.486 110.67 466.393 110.482C466.301 110.292 466.173 110.135 466.009 110.011C465.845 109.886 465.651 109.793 465.426 109.729C465.205 109.666 464.964 109.634 464.705 109.634C464.418 109.634 464.161 109.671 463.937 109.745C463.715 109.816 463.527 109.914 463.374 110.038C463.218 110.162 463.1 110.306 463.018 110.47C462.938 110.634 462.899 110.807 462.899 110.989H464C464 110.912 464.011 110.842 464.032 110.779C464.056 110.716 464.091 110.662 464.139 110.617C464.192 110.566 464.26 110.528 464.345 110.502C464.429 110.473 464.53 110.458 464.646 110.458C464.778 110.458 464.893 110.475 464.991 110.51C465.091 110.541 465.174 110.588 465.24 110.648C465.304 110.706 465.351 110.776 465.383 110.858C465.415 110.938 465.43 111.027 465.43 111.128V111.381H464.816C464.499 111.381 464.218 111.41 463.972 111.468C463.729 111.524 463.525 111.606 463.358 111.714C463.174 111.833 463.035 111.985 462.942 112.17C462.85 112.352 462.804 112.562 462.804 112.8C462.804 112.984 462.841 113.156 462.915 113.315C462.989 113.47 463.092 113.605 463.224 113.719C463.356 113.832 463.513 113.921 463.695 113.984C463.88 114.048 464.082 114.079 464.301 114.079C464.436 114.079 464.561 114.066 464.678 114.04C464.794 114.016 464.901 113.982 464.999 113.937C465.094 113.894 465.181 113.844 465.26 113.786C465.339 113.728 465.409 113.666 465.47 113.6C465.483 113.676 465.499 113.749 465.518 113.818C465.536 113.886 465.558 113.947 465.585 114ZM464.535 113.227C464.432 113.227 464.341 113.216 464.262 113.192C464.185 113.165 464.12 113.131 464.068 113.089C464.015 113.044 463.974 112.99 463.945 112.926C463.918 112.86 463.905 112.789 463.905 112.712C463.905 112.615 463.924 112.525 463.961 112.443C463.998 112.359 464.054 112.286 464.131 112.225C464.208 112.167 464.307 112.122 464.428 112.09C464.55 112.056 464.696 112.039 464.868 112.039H465.43V112.776C465.399 112.831 465.355 112.887 465.3 112.942C465.244 112.995 465.178 113.043 465.102 113.085C465.025 113.127 464.939 113.161 464.844 113.188C464.749 113.214 464.646 113.227 464.535 113.227ZM467.78 114H468.885V110.953C468.922 110.895 468.963 110.842 469.008 110.795C469.053 110.747 469.103 110.706 469.158 110.672C469.227 110.625 469.305 110.589 469.392 110.565C469.482 110.541 469.58 110.53 469.685 110.53C469.812 110.53 469.926 110.543 470.026 110.569C470.126 110.593 470.212 110.636 470.284 110.7C470.355 110.763 470.409 110.85 470.446 110.961C470.486 111.07 470.505 111.208 470.505 111.377V114H471.607V111.361C471.607 111.05 471.57 110.786 471.496 110.569C471.425 110.35 471.324 110.17 471.195 110.03C471.063 109.893 470.907 109.793 470.727 109.729C470.548 109.666 470.35 109.634 470.133 109.634C469.964 109.634 469.804 109.658 469.654 109.705C469.503 109.753 469.364 109.822 469.238 109.911C469.164 109.964 469.094 110.024 469.028 110.09C468.962 110.156 468.901 110.228 468.845 110.308L468.778 109.713H467.78V114ZM472.542 111.825V111.908C472.542 112.22 472.581 112.509 472.661 112.776C472.742 113.04 472.859 113.268 473.009 113.461C473.16 113.654 473.341 113.806 473.552 113.917C473.766 114.025 474.006 114.079 474.273 114.079C474.408 114.079 474.533 114.065 474.649 114.036C474.768 114.007 474.876 113.966 474.974 113.913C475.04 113.876 475.102 113.834 475.16 113.786C475.219 113.739 475.274 113.686 475.327 113.628V113.873C475.327 114.018 475.306 114.149 475.263 114.265C475.224 114.382 475.166 114.479 475.089 114.559C475.005 114.646 474.899 114.712 474.772 114.757C474.648 114.802 474.505 114.824 474.344 114.824C474.244 114.824 474.146 114.813 474.051 114.792C473.959 114.774 473.869 114.745 473.782 114.705C473.692 114.666 473.606 114.614 473.524 114.551C473.442 114.49 473.366 114.419 473.294 114.337L472.799 115.006C472.892 115.125 473.003 115.227 473.132 115.311C473.261 115.398 473.399 115.47 473.544 115.525C473.689 115.581 473.836 115.622 473.984 115.648C474.132 115.674 474.27 115.688 474.4 115.688C474.701 115.688 474.976 115.647 475.224 115.565C475.475 115.486 475.69 115.368 475.87 115.212C476.047 115.056 476.184 114.865 476.282 114.638C476.382 114.411 476.432 114.152 476.432 113.861V109.713H475.43L475.386 110.121C475.333 110.055 475.275 109.996 475.212 109.943C475.149 109.888 475.08 109.84 475.006 109.801C474.908 109.745 474.799 109.704 474.677 109.678C474.558 109.649 474.426 109.634 474.281 109.634C474.012 109.634 473.77 109.687 473.556 109.793C473.342 109.898 473.16 110.048 473.009 110.24C472.859 110.433 472.742 110.664 472.661 110.934C472.581 111.203 472.542 111.5 472.542 111.825ZM473.647 111.908V111.825C473.647 111.645 473.666 111.478 473.703 111.322C473.739 111.163 473.796 111.025 473.873 110.906C473.947 110.79 474.041 110.699 474.154 110.633C474.268 110.564 474.402 110.53 474.558 110.53C474.643 110.53 474.721 110.537 474.792 110.553C474.866 110.569 474.933 110.592 474.994 110.621C475.065 110.655 475.129 110.7 475.184 110.755C475.24 110.811 475.287 110.876 475.327 110.949V112.764C475.29 112.83 475.246 112.889 475.196 112.942C475.146 112.995 475.088 113.04 475.022 113.077C474.958 113.111 474.887 113.138 474.808 113.156C474.731 113.175 474.645 113.184 474.55 113.184C474.394 113.184 474.26 113.151 474.146 113.085C474.033 113.019 473.939 112.928 473.865 112.811C473.791 112.698 473.736 112.565 473.699 112.411C473.664 112.256 473.647 112.088 473.647 111.908ZM479.605 114.079C480.02 114.079 480.379 113.999 480.683 113.838C480.987 113.676 481.209 113.497 481.349 113.299L480.798 112.705C480.671 112.868 480.506 112.991 480.303 113.073C480.099 113.155 479.889 113.196 479.673 113.196C479.52 113.196 479.378 113.172 479.249 113.124C479.12 113.077 479.005 113.01 478.904 112.922C478.807 112.838 478.729 112.744 478.671 112.641C478.612 112.535 478.565 112.397 478.528 112.225V112.213H481.436V111.746C481.436 111.431 481.392 111.145 481.305 110.886C481.218 110.625 481.091 110.401 480.925 110.217C480.756 110.032 480.55 109.889 480.307 109.789C480.066 109.686 479.792 109.634 479.483 109.634C479.184 109.634 478.908 109.688 478.655 109.797C478.401 109.905 478.182 110.057 477.997 110.252C477.812 110.448 477.668 110.681 477.565 110.953C477.462 111.223 477.411 111.521 477.411 111.849V112.007C477.411 112.295 477.462 112.566 477.565 112.819C477.671 113.07 477.82 113.288 478.013 113.473C478.206 113.661 478.437 113.809 478.706 113.917C478.976 114.025 479.275 114.079 479.605 114.079ZM479.475 110.526C479.615 110.526 479.738 110.548 479.843 110.593C479.951 110.635 480.043 110.693 480.117 110.767C480.191 110.844 480.249 110.934 480.291 111.037C480.333 111.14 480.354 111.249 480.354 111.365V111.453H478.548C478.574 111.313 478.614 111.186 478.667 111.072C478.719 110.959 478.785 110.861 478.865 110.779C478.941 110.697 479.031 110.635 479.134 110.593C479.237 110.548 479.351 110.526 479.475 110.526ZM485.164 112.823C485.164 112.889 485.147 112.95 485.112 113.006C485.081 113.061 485.032 113.11 484.966 113.152C484.897 113.194 484.809 113.229 484.7 113.255C484.595 113.279 484.47 113.291 484.328 113.291C484.209 113.291 484.093 113.279 483.979 113.255C483.868 113.231 483.769 113.193 483.682 113.14C483.595 113.09 483.524 113.024 483.468 112.942C483.413 112.858 483.381 112.757 483.373 112.641H482.323C482.323 112.815 482.365 112.99 482.45 113.164C482.537 113.336 482.664 113.489 482.83 113.624C482.997 113.761 483.203 113.872 483.448 113.956C483.697 114.041 483.982 114.083 484.304 114.083C484.597 114.083 484.863 114.052 485.1 113.988C485.338 113.922 485.541 113.831 485.711 113.715C485.877 113.599 486.005 113.461 486.095 113.303C486.187 113.142 486.233 112.966 486.233 112.776C486.233 112.57 486.187 112.393 486.095 112.245C486.005 112.094 485.88 111.966 485.718 111.861C485.557 111.758 485.366 111.673 485.144 111.607C484.922 111.541 484.682 111.487 484.423 111.445C484.243 111.418 484.095 111.388 483.979 111.354C483.863 111.317 483.772 111.276 483.706 111.231C483.637 111.188 483.59 111.141 483.563 111.088C483.537 111.033 483.524 110.973 483.524 110.91C483.524 110.846 483.538 110.787 483.567 110.732C483.599 110.673 483.644 110.623 483.702 110.581C483.765 110.533 483.847 110.497 483.948 110.47C484.048 110.444 484.165 110.43 484.3 110.43C484.459 110.43 484.593 110.45 484.704 110.49C484.818 110.53 484.908 110.582 484.974 110.648C485.021 110.699 485.057 110.755 485.081 110.819C485.104 110.879 485.116 110.946 485.116 111.017H486.218C486.218 110.819 486.174 110.635 486.087 110.466C486 110.297 485.874 110.151 485.711 110.026C485.544 109.905 485.342 109.81 485.104 109.741C484.867 109.67 484.599 109.634 484.3 109.634C484.015 109.634 483.759 109.67 483.532 109.741C483.304 109.812 483.112 109.909 482.953 110.03C482.795 110.152 482.673 110.293 482.589 110.454C482.504 110.615 482.462 110.784 482.462 110.961C482.462 111.144 482.503 111.305 482.585 111.445C482.669 111.585 482.785 111.707 482.933 111.813C483.081 111.921 483.258 112.014 483.464 112.09C483.673 112.164 483.903 112.226 484.154 112.277C484.352 112.314 484.515 112.351 484.645 112.388C484.774 112.425 484.879 112.464 484.958 112.506C485.034 112.551 485.087 112.599 485.116 112.649C485.148 112.699 485.164 112.757 485.164 112.823ZM489.526 113.913L489.53 113.037H488.496V113.964C488.496 114.255 488.461 114.503 488.393 114.709C488.324 114.918 488.239 115.117 488.139 115.307L488.721 115.608C488.959 115.397 489.152 115.137 489.3 114.828C489.45 114.519 489.526 114.214 489.526 113.913ZM499.814 114H500.813V109.713H499.707V112.72C499.673 112.789 499.632 112.851 499.585 112.907C499.537 112.962 499.483 113.01 499.422 113.049C499.351 113.094 499.268 113.128 499.173 113.152C499.08 113.176 498.976 113.188 498.86 113.188C498.73 113.188 498.621 113.172 498.531 113.14C498.441 113.109 498.368 113.056 498.313 112.982C498.257 112.911 498.216 112.815 498.19 112.697C498.166 112.578 498.154 112.431 498.154 112.257V109.713H497.053V112.249C497.053 112.574 497.089 112.852 497.16 113.085C497.234 113.315 497.337 113.503 497.469 113.651C497.601 113.802 497.759 113.912 497.944 113.98C498.129 114.049 498.333 114.083 498.554 114.083C498.797 114.083 499.021 114.022 499.224 113.901C499.43 113.779 499.606 113.612 499.751 113.398L499.814 114ZM501.906 115.648H503.007V113.628C503.058 113.683 503.11 113.733 503.166 113.778C503.221 113.823 503.28 113.864 503.34 113.901C503.443 113.959 503.554 114.003 503.673 114.032C503.795 114.063 503.927 114.079 504.069 114.079C504.339 114.079 504.578 114.024 504.786 113.913C504.995 113.802 505.171 113.649 505.313 113.453C505.453 113.26 505.559 113.031 505.63 112.764C505.704 112.497 505.741 112.208 505.741 111.896V111.813C505.741 111.488 505.704 111.192 505.63 110.926C505.559 110.656 505.452 110.425 505.309 110.232C505.167 110.042 504.991 109.896 504.782 109.793C504.574 109.687 504.333 109.634 504.061 109.634C503.929 109.634 503.805 109.649 503.689 109.678C503.575 109.704 503.471 109.742 503.376 109.793C503.297 109.835 503.223 109.885 503.154 109.943C503.085 109.999 503.022 110.062 502.964 110.133L502.924 109.713H501.906V115.648ZM504.64 111.813V111.896C504.64 112.073 504.624 112.241 504.592 112.399C504.56 112.555 504.51 112.693 504.442 112.811C504.373 112.93 504.283 113.024 504.172 113.093C504.064 113.161 503.932 113.196 503.776 113.196C503.678 113.196 503.59 113.187 503.511 113.168C503.431 113.147 503.361 113.118 503.301 113.081C503.237 113.041 503.18 112.994 503.13 112.938C503.083 112.883 503.042 112.821 503.007 112.752V110.961C503.044 110.887 503.088 110.823 503.138 110.767C503.191 110.712 503.252 110.666 503.32 110.629C503.381 110.597 503.449 110.573 503.522 110.557C503.596 110.539 503.678 110.53 503.768 110.53C503.924 110.53 504.056 110.563 504.164 110.629C504.275 110.695 504.366 110.784 504.438 110.898C504.506 111.014 504.557 111.152 504.588 111.31C504.623 111.466 504.64 111.634 504.64 111.813ZM506.648 111.825V111.908C506.648 112.22 506.687 112.509 506.763 112.776C506.84 113.04 506.951 113.268 507.096 113.461C507.239 113.654 507.413 113.806 507.619 113.917C507.828 114.025 508.063 114.079 508.324 114.079C508.564 114.079 508.776 114.033 508.958 113.941C509.14 113.848 509.299 113.719 509.433 113.552L509.489 114H510.483V107.915H509.378V110.098C509.246 109.95 509.094 109.836 508.922 109.757C508.753 109.675 508.557 109.634 508.332 109.634C508.065 109.634 507.828 109.687 507.619 109.793C507.413 109.898 507.237 110.048 507.092 110.24C506.947 110.433 506.836 110.664 506.759 110.934C506.685 111.203 506.648 111.5 506.648 111.825ZM507.75 111.908V111.825C507.75 111.645 507.766 111.478 507.797 111.322C507.829 111.163 507.879 111.025 507.948 110.906C508.016 110.79 508.105 110.699 508.213 110.633C508.324 110.564 508.457 110.53 508.613 110.53C508.801 110.53 508.957 110.57 509.081 110.652C509.205 110.732 509.304 110.844 509.378 110.989V112.724C509.304 112.867 509.204 112.979 509.077 113.061C508.953 113.143 508.796 113.184 508.605 113.184C508.45 113.184 508.318 113.151 508.209 113.085C508.101 113.019 508.012 112.928 507.944 112.811C507.875 112.698 507.825 112.565 507.793 112.411C507.764 112.256 507.75 112.088 507.75 111.908ZM514.314 114H515.431V113.933C515.376 113.824 515.334 113.695 515.305 113.544C515.276 113.394 515.261 113.204 515.261 112.974V111.136C515.261 110.887 515.215 110.67 515.122 110.482C515.03 110.292 514.902 110.135 514.738 110.011C514.574 109.886 514.38 109.793 514.156 109.729C513.934 109.666 513.694 109.634 513.435 109.634C513.147 109.634 512.891 109.671 512.666 109.745C512.444 109.816 512.257 109.914 512.104 110.038C511.948 110.162 511.829 110.306 511.747 110.47C511.668 110.634 511.628 110.807 511.628 110.989H512.73C512.73 110.912 512.74 110.842 512.761 110.779C512.785 110.716 512.821 110.662 512.868 110.617C512.921 110.566 512.99 110.528 513.074 110.502C513.159 110.473 513.259 110.458 513.375 110.458C513.507 110.458 513.622 110.475 513.72 110.51C513.82 110.541 513.904 110.588 513.97 110.648C514.033 110.706 514.081 110.776 514.112 110.858C514.144 110.938 514.16 111.027 514.16 111.128V111.381H513.546C513.229 111.381 512.947 111.41 512.702 111.468C512.459 111.524 512.254 111.606 512.088 111.714C511.903 111.833 511.764 111.985 511.672 112.17C511.579 112.352 511.533 112.562 511.533 112.8C511.533 112.984 511.57 113.156 511.644 113.315C511.718 113.47 511.821 113.605 511.953 113.719C512.085 113.832 512.242 113.921 512.425 113.984C512.609 114.048 512.811 114.079 513.031 114.079C513.165 114.079 513.291 114.066 513.407 114.04C513.523 114.016 513.63 113.982 513.728 113.937C513.823 113.894 513.91 113.844 513.989 113.786C514.069 113.728 514.139 113.666 514.199 113.6C514.213 113.676 514.228 113.749 514.247 113.818C514.265 113.886 514.288 113.947 514.314 114ZM513.264 113.227C513.161 113.227 513.07 113.216 512.991 113.192C512.914 113.165 512.85 113.131 512.797 113.089C512.744 113.044 512.703 112.99 512.674 112.926C512.648 112.86 512.634 112.789 512.634 112.712C512.634 112.615 512.653 112.525 512.69 112.443C512.727 112.359 512.784 112.286 512.86 112.225C512.937 112.167 513.036 112.122 513.157 112.09C513.279 112.056 513.426 112.039 513.597 112.039H514.16V112.776C514.128 112.831 514.084 112.887 514.029 112.942C513.974 112.995 513.908 113.043 513.831 113.085C513.754 113.127 513.668 113.161 513.573 113.188C513.478 113.214 513.375 113.227 513.264 113.227ZM518.53 108.664H517.428V109.713H516.45V110.526H517.428V112.475C517.428 112.757 517.465 113 517.539 113.204C517.613 113.404 517.719 113.569 517.856 113.699C517.991 113.831 518.153 113.929 518.343 113.992C518.536 114.053 518.75 114.083 518.985 114.083C519.107 114.083 519.229 114.077 519.354 114.063C519.48 114.053 519.602 114.037 519.718 114.016C519.834 113.995 519.944 113.968 520.047 113.937C520.15 113.902 520.24 113.863 520.316 113.818L520.209 113.061C520.159 113.074 520.098 113.087 520.027 113.101C519.958 113.114 519.884 113.126 519.805 113.136C519.723 113.15 519.638 113.16 519.548 113.168C519.461 113.176 519.375 113.18 519.29 113.18C519.174 113.18 519.068 113.167 518.973 113.14C518.881 113.114 518.802 113.069 518.736 113.006C518.67 112.945 518.618 112.863 518.581 112.76C518.547 112.654 518.53 112.524 518.53 112.368V110.526H520.13V109.713H518.53V108.664ZM523.462 114.079C523.877 114.079 524.236 113.999 524.54 113.838C524.843 113.676 525.065 113.497 525.205 113.299L524.654 112.705C524.528 112.868 524.363 112.991 524.159 113.073C523.956 113.155 523.746 113.196 523.529 113.196C523.376 113.196 523.235 113.172 523.105 113.124C522.976 113.077 522.861 113.01 522.761 112.922C522.663 112.838 522.585 112.744 522.527 112.641C522.469 112.535 522.421 112.397 522.384 112.225V112.213H525.292V111.746C525.292 111.431 525.249 111.145 525.161 110.886C525.074 110.625 524.948 110.401 524.781 110.217C524.612 110.032 524.406 109.889 524.163 109.789C523.923 109.686 523.648 109.634 523.339 109.634C523.041 109.634 522.765 109.688 522.511 109.797C522.258 109.905 522.038 110.057 521.853 110.252C521.669 110.448 521.525 110.681 521.422 110.953C521.319 111.223 521.267 111.521 521.267 111.849V112.007C521.267 112.295 521.319 112.566 521.422 112.819C521.527 113.07 521.676 113.288 521.869 113.473C522.062 113.661 522.293 113.809 522.563 113.917C522.832 114.025 523.132 114.079 523.462 114.079ZM523.331 110.526C523.471 110.526 523.594 110.548 523.7 110.593C523.808 110.635 523.899 110.693 523.973 110.767C524.047 110.844 524.105 110.934 524.147 111.037C524.19 111.14 524.211 111.249 524.211 111.365V111.453H522.404C522.431 111.313 522.47 111.186 522.523 111.072C522.576 110.959 522.642 110.861 522.721 110.779C522.798 110.697 522.887 110.635 522.99 110.593C523.093 110.548 523.207 110.526 523.331 110.526Z\"\n      fill=\"white\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"42\"\n      y=\"175\"\n      width=\"81\"\n      height=\"93\"\n      fill=\"#111111\"\n      fill-opacity=\"0.85\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"126\"\n      y=\"203\"\n      width=\"76\"\n      height=\"93\"\n      fill=\"#111111\"\n      fill-opacity=\"0.85\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"139\"\n      y=\"179\"\n      width=\"31\"\n      height=\"24\"\n      fill=\"#111111\"\n      fill-opacity=\"0.85\"\n    />\n    <motion.rect\n      {...motionAnimationProps}\n      x=\"143\"\n      y=\"176\"\n      width=\"22\"\n      height=\"3\"\n      fill=\"#111111\"\n      fill-opacity=\"0.85\"\n    />\n  </motion.svg>,\n];\n\nexport const descriptions = [\n  'Instead of rendering the JSX with React, we render it using Million.js, which passes \"holes\" (represented with \"?\") to the virtual DOM. These holes will act as placeholders for dynamic content and are used during static analysis.',\n  'We now begin static analysis. We check the first node for a placeholder and find none. We go next.',\n  'We check the second node for a placeholder and find none. We go next.',\n  'We check the third node for a placeholder and find a \"?\". We push the placeholder to the \"Edit Mapping,\" which associates `prop1` to the placeholder node. We then remove the placeholder from the block.',\n  'We check the fourth node for a placeholder and find a \"?\". We push the placeholder to the \"Edit Mapping,\" which associates `prop2` to the placeholder node. We then remove the placeholder from the block.',\n  'We check the fifth node for a placeholder and find none. We now finish.',\n];\n\nexport const StaticAnalysisExample = () => {\n  return <Slideshow frames={frames} descriptions={descriptions} />;\n};\n"
  },
  {
    "path": "website/components/back-in-block/vdom.tsx",
    "content": "import { motion } from 'framer-motion';\nimport { Slideshow, motionAnimationProps } from './slideshow';\n\nconst frames = [\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M168.47 87.4697C168.177 87.7626 168.177 88.2374 168.47 88.5303L173.243 93.3033C173.536 93.5962 174.01 93.5962 174.303 93.3033C174.596 93.0104 174.596 92.5355 174.303 92.2426L170.061 88L174.303 83.7574C174.596 83.4645 174.596 82.9896 174.303 82.6967C174.01 82.4038 173.536 82.4038 173.243 82.6967L168.47 87.4697ZM307.53 88.5303C307.823 88.2374 307.823 87.7626 307.53 87.4697L302.757 82.6967C302.464 82.4038 301.99 82.4038 301.697 82.6967C301.404 82.9896 301.404 83.4645 301.697 83.7574L305.939 88L301.697 92.2426C301.404 92.5355 301.404 93.0104 301.697 93.3033C301.99 93.5962 302.464 93.5962 302.757 93.3033L307.53 88.5303ZM169 88.75H307V87.25H169V88.75Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M194.49 74.1775V71.625H193.722V78H194.49V74.7378C194.545 74.6493 194.608 74.569 194.677 74.4971C194.749 74.4224 194.826 74.3573 194.909 74.302C195.014 74.2301 195.129 74.1747 195.254 74.136C195.378 74.0972 195.51 74.0779 195.648 74.0779C195.817 74.0751 195.966 74.0986 196.096 74.1484C196.226 74.1955 196.334 74.2674 196.42 74.3643C196.5 74.4528 196.561 74.5649 196.603 74.7004C196.644 74.8333 196.665 74.9882 196.665 75.1653V78H197.433V75.1736C197.433 74.872 197.395 74.6119 197.321 74.3933C197.249 74.172 197.145 73.9893 197.009 73.8455C196.874 73.7016 196.709 73.5964 196.515 73.53C196.324 73.4609 196.111 73.4263 195.876 73.4263C195.696 73.429 195.526 73.4553 195.366 73.5051C195.208 73.5549 195.063 73.6283 194.93 73.7251C194.847 73.7832 194.768 73.851 194.693 73.9285C194.619 74.0032 194.551 74.0862 194.49 74.1775ZM201.778 78H202.579V77.9336C202.529 77.8091 202.491 77.6638 202.463 77.4978C202.435 77.329 202.421 77.1699 202.421 77.0205V74.9329C202.421 74.6811 202.376 74.4611 202.284 74.2729C202.193 74.0848 202.069 73.9271 201.911 73.7998C201.75 73.6753 201.561 73.5826 201.342 73.5217C201.124 73.4581 200.887 73.4263 200.633 73.4263C200.353 73.4263 200.103 73.465 199.881 73.5425C199.663 73.62 199.477 73.7209 199.325 73.8455C199.17 73.9727 199.051 74.1152 198.968 74.2729C198.888 74.4307 198.847 74.5911 198.844 74.7544H199.616C199.616 74.6603 199.638 74.5704 199.682 74.4846C199.729 74.3961 199.794 74.32 199.877 74.2563C199.96 74.1927 200.061 74.1415 200.18 74.1028C200.302 74.064 200.439 74.0447 200.591 74.0447C200.754 74.0447 200.901 74.0654 201.031 74.1069C201.164 74.1484 201.276 74.2065 201.367 74.2812C201.458 74.3587 201.529 74.4514 201.579 74.5593C201.629 74.6672 201.654 74.789 201.654 74.9246V75.2773H200.815C200.503 75.2773 200.219 75.3078 199.964 75.3687C199.713 75.4295 199.497 75.5208 199.317 75.6426C199.137 75.7671 198.997 75.922 198.898 76.1074C198.801 76.2928 198.752 76.5086 198.752 76.7549C198.752 76.943 198.788 77.1187 198.86 77.282C198.935 77.4425 199.04 77.5808 199.176 77.697C199.309 77.816 199.47 77.9101 199.661 77.9792C199.855 78.0484 200.071 78.083 200.309 78.083C200.455 78.083 200.594 78.0678 200.724 78.0374C200.854 78.0069 200.977 77.9654 201.093 77.9128C201.207 77.8603 201.31 77.7994 201.405 77.7302C201.501 77.6611 201.589 77.5877 201.666 77.5103C201.674 77.6043 201.687 77.6956 201.703 77.7842C201.723 77.87 201.748 77.9419 201.778 78ZM200.421 77.4148C200.271 77.4148 200.14 77.3954 200.027 77.3567C199.913 77.318 199.819 77.264 199.744 77.1948C199.67 77.1284 199.613 77.0482 199.574 76.9541C199.538 76.86 199.52 76.7576 199.52 76.647C199.52 76.5308 199.541 76.427 199.583 76.3357C199.627 76.2444 199.69 76.1655 199.773 76.0991C199.89 76.005 200.046 75.9359 200.242 75.8916C200.442 75.8446 200.674 75.821 200.94 75.821H201.654V76.73C201.609 76.8185 201.548 76.9043 201.471 76.9873C201.393 77.0675 201.302 77.1395 201.197 77.2031C201.089 77.2668 200.97 77.318 200.84 77.3567C200.71 77.3954 200.57 77.4148 200.421 77.4148ZM206.916 76.8088C206.916 76.8808 206.902 76.9486 206.875 77.0122C206.847 77.0758 206.807 77.134 206.754 77.1865C206.669 77.2723 206.55 77.3401 206.397 77.3899C206.245 77.4369 206.067 77.4604 205.862 77.4604C205.732 77.4604 205.601 77.4466 205.468 77.4189C205.335 77.3913 205.215 77.3442 205.107 77.2778C204.996 77.2114 204.903 77.1243 204.829 77.0164C204.757 76.9084 204.715 76.7756 204.704 76.6179H203.936C203.936 76.8088 203.979 76.9928 204.065 77.1699C204.153 77.347 204.281 77.502 204.447 77.6348C204.61 77.7703 204.811 77.8796 205.049 77.9626C205.287 78.0429 205.558 78.083 205.862 78.083C206.128 78.083 206.373 78.0512 206.597 77.9875C206.821 77.9239 207.013 77.834 207.174 77.7178C207.334 77.6016 207.459 77.4618 207.547 77.2986C207.638 77.1353 207.684 76.9541 207.684 76.7549C207.684 76.5695 207.644 76.4062 207.564 76.2651C207.486 76.124 207.373 75.9995 207.223 75.8916C207.074 75.7865 206.89 75.6965 206.671 75.6218C206.453 75.5444 206.205 75.4766 205.928 75.4185C205.718 75.377 205.544 75.3341 205.406 75.2898C205.27 75.2455 205.162 75.1957 205.082 75.1404C204.999 75.085 204.941 75.0228 204.907 74.9536C204.874 74.8844 204.858 74.8056 204.858 74.717C204.858 74.6313 204.878 74.5483 204.92 74.468C204.961 74.3878 205.024 74.3172 205.107 74.2563C205.187 74.1955 205.288 74.1471 205.41 74.1111C205.534 74.0751 205.678 74.0571 205.841 74.0571C205.999 74.0571 206.14 74.0793 206.265 74.1235C206.392 74.1678 206.5 74.2259 206.588 74.2979C206.677 74.3698 206.746 74.4528 206.796 74.5469C206.846 74.6382 206.871 74.7323 206.871 74.8291H207.638C207.638 74.6326 207.596 74.45 207.51 74.2812C207.427 74.1097 207.308 73.9603 207.153 73.833C206.998 73.7057 206.81 73.6061 206.588 73.5342C206.367 73.4622 206.118 73.4263 205.841 73.4263C205.584 73.4263 205.347 73.4609 205.132 73.53C204.919 73.5992 204.735 73.6933 204.58 73.8123C204.425 73.9312 204.304 74.071 204.219 74.2314C204.133 74.3892 204.09 74.5593 204.09 74.7419C204.09 74.9273 204.131 75.0906 204.214 75.2317C204.297 75.37 204.415 75.4904 204.567 75.5928C204.717 75.6979 204.896 75.7878 205.107 75.8625C205.32 75.9373 205.555 76.0009 205.812 76.0535C206.023 76.095 206.198 76.142 206.339 76.1946C206.48 76.2444 206.594 76.2997 206.68 76.3606C206.765 76.4215 206.826 76.4893 206.862 76.564C206.898 76.6359 206.916 76.7175 206.916 76.8088ZM216.055 77.4604C215.815 77.4604 215.613 77.4134 215.449 77.3193C215.289 77.2225 215.16 77.0966 215.063 76.9417C214.964 76.7895 214.892 76.6179 214.848 76.427C214.806 76.2333 214.785 76.0382 214.785 75.8418V75.6675C214.785 75.4738 214.806 75.2815 214.848 75.0906C214.892 74.8997 214.964 74.7267 215.063 74.5718C215.163 74.4196 215.293 74.2965 215.454 74.2024C215.617 74.1056 215.817 74.0571 216.055 74.0571C216.21 74.0571 216.354 74.0834 216.487 74.136C216.623 74.1886 216.739 74.2605 216.836 74.3518C216.933 74.4431 217.009 74.5496 217.064 74.6714C217.122 74.7904 217.153 74.9176 217.155 75.0532H217.882C217.882 74.8263 217.836 74.6133 217.745 74.4141C217.653 74.2148 217.527 74.0419 217.367 73.8953C217.204 73.7514 217.01 73.6379 216.786 73.5549C216.565 73.4692 216.321 73.4263 216.055 73.4263C215.715 73.4263 215.418 73.4871 215.163 73.6089C214.909 73.7306 214.697 73.8939 214.528 74.0986C214.357 74.3062 214.228 74.5455 214.142 74.8167C214.056 75.0878 214.013 75.3714 214.013 75.6675V75.8418C214.013 76.1406 214.056 76.4256 214.142 76.6968C214.228 76.9652 214.357 77.2017 214.528 77.4065C214.697 77.614 214.909 77.7786 215.163 77.9004C215.418 78.0221 215.715 78.083 216.055 78.083C216.293 78.083 216.522 78.0429 216.74 77.9626C216.959 77.8796 217.153 77.769 217.321 77.6306C217.49 77.495 217.624 77.3373 217.724 77.1575C217.826 76.9749 217.879 76.7839 217.882 76.5847H217.155C217.153 76.7092 217.119 76.8254 217.056 76.9333C216.995 77.0385 216.913 77.1298 216.811 77.2073C216.708 77.2875 216.591 77.3498 216.458 77.394C216.328 77.4383 216.194 77.4604 216.055 77.4604ZM220.015 74.1775V71.625H219.247V78H220.015V74.7378C220.07 74.6493 220.132 74.569 220.202 74.4971C220.274 74.4224 220.351 74.3573 220.434 74.302C220.539 74.2301 220.654 74.1747 220.779 74.136C220.903 74.0972 221.035 74.0779 221.173 74.0779C221.342 74.0751 221.491 74.0986 221.621 74.1484C221.751 74.1955 221.859 74.2674 221.945 74.3643C222.025 74.4528 222.086 74.5649 222.127 74.7004C222.169 74.8333 222.19 74.9882 222.19 75.1653V78H222.958V75.1736C222.958 74.872 222.92 74.6119 222.845 74.3933C222.774 74.172 222.67 73.9893 222.534 73.8455C222.399 73.7016 222.234 73.5964 222.04 73.53C221.849 73.4609 221.636 73.4263 221.401 73.4263C221.221 73.429 221.051 73.4553 220.891 73.5051C220.733 73.5549 220.588 73.6283 220.455 73.7251C220.372 73.7832 220.293 73.851 220.218 73.9285C220.144 74.0032 220.076 74.0862 220.015 74.1775ZM227.303 78H228.104V77.9336C228.054 77.8091 228.015 77.6638 227.988 77.4978C227.96 77.329 227.946 77.1699 227.946 77.0205V74.9329C227.946 74.6811 227.901 74.4611 227.809 74.2729C227.718 74.0848 227.594 73.9271 227.436 73.7998C227.275 73.6753 227.086 73.5826 226.867 73.5217C226.649 73.4581 226.412 73.4263 226.157 73.4263C225.878 73.4263 225.628 73.465 225.406 73.5425C225.188 73.62 225.002 73.7209 224.85 73.8455C224.695 73.9727 224.576 74.1152 224.493 74.2729C224.413 74.4307 224.371 74.5911 224.369 74.7544H225.141C225.141 74.6603 225.163 74.5704 225.207 74.4846C225.254 74.3961 225.319 74.32 225.402 74.2563C225.485 74.1927 225.586 74.1415 225.705 74.1028C225.827 74.064 225.964 74.0447 226.116 74.0447C226.279 74.0447 226.426 74.0654 226.556 74.1069C226.689 74.1484 226.801 74.2065 226.892 74.2812C226.983 74.3587 227.054 74.4514 227.104 74.5593C227.154 74.6672 227.178 74.789 227.178 74.9246V75.2773H226.34C226.027 75.2773 225.744 75.3078 225.489 75.3687C225.237 75.4295 225.022 75.5208 224.842 75.6426C224.662 75.7671 224.522 75.922 224.423 76.1074C224.326 76.2928 224.277 76.5086 224.277 76.7549C224.277 76.943 224.313 77.1187 224.385 77.282C224.46 77.4425 224.565 77.5808 224.701 77.697C224.833 77.816 224.995 77.9101 225.186 77.9792C225.38 78.0484 225.596 78.083 225.834 78.083C225.98 78.083 226.119 78.0678 226.249 78.0374C226.379 78.0069 226.502 77.9654 226.618 77.9128C226.732 77.8603 226.835 77.7994 226.929 77.7302C227.026 77.6611 227.113 77.5877 227.191 77.5103C227.199 77.6043 227.212 77.6956 227.228 77.7842C227.248 77.87 227.273 77.9419 227.303 78ZM225.946 77.4148C225.796 77.4148 225.665 77.3954 225.552 77.3567C225.438 77.318 225.344 77.264 225.269 77.1948C225.195 77.1284 225.138 77.0482 225.099 76.9541C225.063 76.86 225.045 76.7576 225.045 76.647C225.045 76.5308 225.066 76.427 225.107 76.3357C225.152 76.2444 225.215 76.1655 225.298 76.0991C225.415 76.005 225.571 75.9359 225.767 75.8916C225.967 75.8446 226.199 75.821 226.465 75.821H227.178V76.73C227.134 76.8185 227.073 76.9043 226.996 76.9873C226.918 77.0675 226.827 77.1395 226.722 77.2031C226.614 77.2668 226.495 77.318 226.365 77.3567C226.235 77.3954 226.095 77.4148 225.946 77.4148ZM229.457 78H230.225V74.7793C230.277 74.6825 230.338 74.5939 230.407 74.5137C230.479 74.4334 230.557 74.3629 230.64 74.302C230.742 74.2328 230.854 74.1789 230.976 74.1401C231.098 74.0986 231.229 74.0779 231.37 74.0779C231.534 74.0779 231.677 74.0972 231.802 74.136C231.929 74.1747 232.037 74.237 232.126 74.3228C232.212 74.4085 232.277 74.5206 232.321 74.6589C232.365 74.7973 232.387 74.9661 232.387 75.1653V78H233.155V75.1487C233.155 74.8499 233.118 74.5925 233.043 74.3767C232.971 74.1581 232.867 73.9783 232.732 73.8372C232.596 73.696 232.431 73.5923 232.238 73.5259C232.047 73.4595 231.834 73.4263 231.599 73.4263C231.424 73.429 231.258 73.4553 231.101 73.5051C230.946 73.5522 230.802 73.62 230.669 73.7085C230.58 73.7666 230.496 73.8358 230.416 73.916C230.338 73.9935 230.266 74.0793 230.2 74.1733L230.146 73.5093H229.457V78ZM234.421 75.7173V75.8044C234.421 76.1254 234.462 76.4256 234.545 76.7051C234.628 76.9818 234.747 77.2225 234.902 77.4272C235.055 77.632 235.241 77.7925 235.463 77.9087C235.684 78.0249 235.932 78.083 236.206 78.083C236.369 78.083 236.521 78.065 236.662 78.0291C236.803 77.9958 236.932 77.9474 237.048 77.8838C237.123 77.8423 237.192 77.7939 237.256 77.7385C237.322 77.6832 237.384 77.6223 237.442 77.5559V77.9419C237.442 78.1356 237.415 78.3071 237.359 78.4565C237.304 78.606 237.225 78.7305 237.123 78.8301C237.018 78.9325 236.892 79.0099 236.745 79.0625C236.598 79.1151 236.434 79.1414 236.251 79.1414C236.149 79.1414 236.046 79.1303 235.944 79.1082C235.842 79.0888 235.739 79.0556 235.637 79.0085C235.535 78.9615 235.434 78.8979 235.334 78.8176C235.234 78.7402 235.138 78.6447 235.043 78.5312L234.645 78.9919C234.747 79.1386 234.869 79.2617 235.01 79.3613C235.154 79.4609 235.304 79.5398 235.458 79.5979C235.611 79.6588 235.761 79.7017 235.911 79.7266C236.06 79.7542 236.193 79.7681 236.309 79.7681C236.592 79.7681 236.849 79.7266 237.081 79.6436C237.314 79.5605 237.514 79.4388 237.683 79.2783C237.849 79.1178 237.978 78.9228 238.069 78.6931C238.163 78.4635 238.21 78.2006 238.21 77.9045V73.5093H237.513L237.476 73.999C237.423 73.9326 237.366 73.8717 237.305 73.8164C237.247 73.7611 237.185 73.7126 237.119 73.6711C236.997 73.5909 236.86 73.53 236.708 73.4885C236.558 73.447 236.394 73.4263 236.214 73.4263C235.934 73.4263 235.684 73.483 235.463 73.5964C235.241 73.7099 235.053 73.8676 234.898 74.0696C234.743 74.2716 234.624 74.5137 234.541 74.7959C234.461 75.0754 234.421 75.3825 234.421 75.7173ZM235.189 75.8044V75.7173C235.189 75.4987 235.211 75.2912 235.255 75.0947C235.302 74.8955 235.375 74.7198 235.475 74.5676C235.572 74.4182 235.696 74.2992 235.849 74.2107C236.004 74.1222 236.189 74.0779 236.405 74.0779C236.532 74.0779 236.648 74.0945 236.753 74.1277C236.859 74.1581 236.954 74.201 237.04 74.2563C237.126 74.3145 237.202 74.3822 237.268 74.4597C237.334 74.5372 237.393 74.623 237.442 74.717V76.7756C237.393 76.8725 237.334 76.961 237.268 77.0413C237.202 77.1215 237.127 77.1907 237.044 77.2488C236.958 77.3069 236.861 77.3525 236.753 77.3857C236.648 77.4162 236.529 77.4314 236.396 77.4314C236.183 77.4314 236.001 77.3885 235.849 77.3027C235.696 77.2142 235.572 77.0952 235.475 76.9458C235.375 76.7964 235.302 76.6235 235.255 76.427C235.211 76.2306 235.189 76.023 235.189 75.8044ZM241.651 78.083C242.088 78.083 242.455 77.9958 242.751 77.8215C243.05 77.6444 243.274 77.4425 243.423 77.2156L242.954 76.8503C242.813 77.033 242.636 77.1796 242.423 77.2903C242.21 77.401 241.966 77.4563 241.692 77.4563C241.485 77.4563 241.295 77.4176 241.124 77.3401C240.952 77.2626 240.806 77.1561 240.684 77.0205C240.565 76.8932 240.471 76.7466 240.402 76.5806C240.335 76.4146 240.292 76.2222 240.273 76.0037V75.9746H243.481V75.6301C243.481 75.3175 243.441 75.0269 243.361 74.7585C243.283 74.4902 243.164 74.2563 243.004 74.0571C242.843 73.8607 242.641 73.7071 242.398 73.5964C242.157 73.483 241.875 73.4263 241.551 73.4263C241.294 73.4263 241.042 73.4788 240.796 73.584C240.552 73.6891 240.335 73.8399 240.144 74.0364C239.951 74.2356 239.796 74.4791 239.679 74.7668C239.563 75.0518 239.505 75.3756 239.505 75.738V75.9124C239.505 76.225 239.558 76.5142 239.663 76.7798C239.768 77.0454 239.915 77.2751 240.103 77.4688C240.291 77.6624 240.516 77.8132 240.779 77.9211C241.045 78.0291 241.335 78.083 241.651 78.083ZM241.551 74.0571C241.748 74.0571 241.917 74.0931 242.058 74.165C242.201 74.237 242.32 74.3311 242.415 74.4473C242.509 74.5635 242.582 74.7018 242.635 74.8623C242.687 75.02 242.713 75.1681 242.713 75.3064V75.3438H240.298C240.328 75.1362 240.381 74.9536 240.456 74.7959C240.533 74.6354 240.627 74.4998 240.738 74.3892C240.848 74.2812 240.973 74.1996 241.111 74.1443C241.25 74.0862 241.396 74.0571 241.551 74.0571ZM244.627 75.7173V75.8044C244.627 76.1254 244.67 76.4256 244.755 76.7051C244.841 76.9818 244.962 77.2225 245.116 77.4272C245.271 77.632 245.458 77.7925 245.677 77.9087C245.898 78.0249 246.144 78.083 246.416 78.083C246.692 78.083 246.934 78.036 247.142 77.9419C247.349 77.8478 247.528 77.7095 247.677 77.5269L247.71 78H248.416V71.625H247.648V73.9534C247.502 73.7818 247.327 73.6518 247.125 73.5632C246.926 73.4719 246.692 73.4263 246.424 73.4263C246.15 73.4263 245.902 73.483 245.681 73.5964C245.46 73.7099 245.271 73.8676 245.116 74.0696C244.959 74.2716 244.837 74.5137 244.751 74.7959C244.668 75.0754 244.627 75.3825 244.627 75.7173ZM245.395 75.8044V75.7173C245.395 75.4987 245.418 75.2912 245.465 75.0947C245.512 74.8955 245.585 74.7198 245.685 74.5676C245.782 74.4182 245.906 74.2992 246.059 74.2107C246.214 74.1222 246.399 74.0779 246.615 74.0779C246.867 74.0779 247.077 74.1374 247.246 74.2563C247.414 74.3726 247.549 74.522 247.648 74.7046V76.7881C247.549 76.9845 247.414 77.1409 247.246 77.2571C247.077 77.3733 246.864 77.4314 246.606 77.4314C246.393 77.4314 246.211 77.3885 246.059 77.3027C245.906 77.2142 245.782 77.0952 245.685 76.9458C245.585 76.7964 245.512 76.6235 245.465 76.427C245.418 76.2306 245.395 76.023 245.395 75.8044ZM251.276 76.2983H252.043C252.043 76.1904 252.046 76.095 252.052 76.012C252.057 75.9262 252.071 75.8459 252.093 75.7712C252.115 75.6965 252.149 75.6232 252.193 75.5513C252.24 75.4793 252.305 75.4032 252.388 75.323C252.518 75.2068 252.649 75.0809 252.782 74.9453C252.918 74.8097 253.04 74.6631 253.147 74.5054C253.255 74.3504 253.344 74.1858 253.413 74.0115C253.482 73.8344 253.517 73.6462 253.517 73.447C253.517 73.198 253.477 72.9766 253.396 72.783C253.316 72.5893 253.2 72.4246 253.048 72.2891C252.896 72.1535 252.709 72.0511 252.488 71.9819C252.269 71.91 252.02 71.874 251.74 71.874C251.489 71.874 251.253 71.9086 251.035 71.9778C250.819 72.0442 250.632 72.141 250.475 72.2683C250.314 72.3984 250.187 72.5561 250.093 72.7415C249.999 72.9268 249.95 73.1357 249.948 73.3682H250.715C250.715 73.2243 250.744 73.1012 250.802 72.9988C250.861 72.8936 250.938 72.8065 251.035 72.7373C251.129 72.6709 251.237 72.6225 251.359 72.592C251.483 72.5588 251.61 72.5422 251.74 72.5422C251.909 72.5422 252.059 72.5644 252.189 72.6086C252.319 72.6529 252.427 72.7179 252.512 72.8037C252.59 72.8812 252.648 72.9766 252.687 73.0901C252.728 73.2008 252.749 73.328 252.749 73.4719C252.749 73.6103 252.723 73.7417 252.67 73.8662C252.618 73.9907 252.551 74.1083 252.471 74.219C252.388 74.3324 252.297 74.4403 252.197 74.5427C252.1 74.6451 252.005 74.7447 251.911 74.8416C251.772 74.9688 251.662 75.0795 251.579 75.1736C251.496 75.2649 251.432 75.3604 251.388 75.46C251.343 75.5623 251.314 75.6785 251.301 75.8086C251.287 75.9359 251.278 76.0991 251.276 76.2983ZM251.188 77.5974C251.188 77.7247 251.227 77.8312 251.305 77.917C251.385 78.0028 251.504 78.0457 251.662 78.0457C251.819 78.0457 251.938 78.0028 252.019 77.917C252.102 77.8312 252.143 77.7247 252.143 77.5974C252.143 77.4646 252.102 77.3539 252.019 77.2654C251.938 77.1768 251.819 77.1326 251.662 77.1326C251.504 77.1326 251.385 77.1768 251.305 77.2654C251.227 77.3539 251.188 77.4646 251.188 77.5974ZM260.797 75.543V75.6343C260.797 76.0272 260.826 76.3952 260.884 76.7383C260.945 77.0814 261.026 77.3982 261.129 77.6887C261.231 77.982 261.35 78.249 261.486 78.4897C261.624 78.7305 261.769 78.9421 261.921 79.1248C262.074 79.3101 262.23 79.4679 262.39 79.5979C262.554 79.7279 262.711 79.8276 262.864 79.8967L263.088 79.2742C262.98 79.1912 262.87 79.0874 262.76 78.9629C262.649 78.8384 262.544 78.6917 262.444 78.5229C262.35 78.368 262.262 78.1868 262.179 77.9792C262.098 77.7717 262.028 77.5462 261.967 77.3027C261.923 77.1284 261.881 76.8946 261.843 76.6013C261.807 76.308 261.789 75.9884 261.789 75.6426V75.5347C261.789 75.1833 261.808 74.8582 261.847 74.5593C261.885 74.2605 261.937 73.988 262 73.7417C262.072 73.4871 262.155 73.252 262.249 73.0361C262.346 72.8203 262.45 72.6335 262.561 72.4758C262.646 72.3541 262.733 72.2462 262.822 72.1521C262.911 72.058 262.999 71.9778 263.088 71.9114L262.864 71.2805C262.711 71.3497 262.554 71.4493 262.39 71.5793C262.23 71.7066 262.074 71.863 261.921 72.0483C261.769 72.2337 261.624 72.4468 261.486 72.6875C261.35 72.9282 261.231 73.1938 261.129 73.4844C261.026 73.7777 260.945 74.0972 260.884 74.4431C260.826 74.7862 260.797 75.1528 260.797 75.543ZM265.055 78H266.213V74.8083C266.252 74.7475 266.295 74.6921 266.342 74.6423C266.389 74.5925 266.441 74.5496 266.499 74.5137C266.571 74.4639 266.653 74.4265 266.744 74.4016C266.838 74.3767 266.941 74.3643 267.051 74.3643C267.184 74.3643 267.303 74.3781 267.408 74.4058C267.513 74.4307 267.603 74.4763 267.678 74.5427C267.753 74.6091 267.809 74.7004 267.848 74.8167C267.89 74.9301 267.91 75.0754 267.91 75.2524V78H269.064V75.2358C269.064 74.9093 269.025 74.6326 268.948 74.4058C268.873 74.1761 268.768 73.988 268.633 73.8413C268.494 73.6974 268.331 73.5923 268.143 73.5259C267.955 73.4595 267.747 73.4263 267.52 73.4263C267.343 73.4263 267.176 73.4512 267.018 73.501C266.86 73.5508 266.715 73.6227 266.582 73.7168C266.505 73.7721 266.431 73.8344 266.362 73.9036C266.293 73.9727 266.229 74.0488 266.171 74.1318L266.101 73.5093H265.055V78ZM270.002 75.7131V75.8003C270.002 76.1296 270.049 76.4339 270.143 76.7134C270.237 76.9901 270.376 77.2308 270.558 77.4355C270.738 77.6403 270.96 77.8008 271.222 77.917C271.488 78.0304 271.79 78.0872 272.127 78.0872C272.462 78.0872 272.761 78.0304 273.024 77.917C273.287 77.8008 273.508 77.6403 273.688 77.4355C273.868 77.2308 274.005 76.9901 274.099 76.7134C274.193 76.4339 274.24 76.1296 274.24 75.8003V75.7131C274.24 75.3866 274.193 75.085 274.099 74.8083C274.005 74.5289 273.868 74.2868 273.688 74.082C273.505 73.8773 273.282 73.7168 273.02 73.6006C272.757 73.4844 272.456 73.4263 272.119 73.4263C271.781 73.4263 271.481 73.4844 271.218 73.6006C270.958 73.7168 270.738 73.8773 270.558 74.082C270.376 74.2868 270.237 74.5289 270.143 74.8083C270.049 75.085 270.002 75.3866 270.002 75.7131ZM271.156 75.8003V75.7131C271.156 75.5305 271.174 75.3576 271.21 75.1943C271.246 75.0311 271.303 74.8872 271.38 74.7627C271.458 74.6382 271.557 74.54 271.679 74.468C271.801 74.3961 271.947 74.3601 272.119 74.3601C272.293 74.3601 272.441 74.3961 272.563 74.468C272.685 74.54 272.784 74.6382 272.862 74.7627C272.937 74.8872 272.992 75.0311 273.028 75.1943C273.064 75.3576 273.082 75.5305 273.082 75.7131V75.8003C273.082 75.9884 273.064 76.1655 273.028 76.3315C272.992 76.4948 272.937 76.6373 272.862 76.759C272.784 76.8835 272.685 76.9818 272.563 77.0537C272.441 77.1257 272.296 77.1616 272.127 77.1616C271.953 77.1616 271.803 77.1257 271.679 77.0537C271.557 76.9818 271.458 76.8835 271.38 76.759C271.303 76.6373 271.246 76.4948 271.21 76.3315C271.174 76.1655 271.156 75.9884 271.156 75.8003ZM278.336 75.6343V75.543C278.336 75.1639 278.306 74.8056 278.245 74.468C278.184 74.1277 278.101 73.8109 277.996 73.5176C277.891 73.2243 277.768 72.9573 277.626 72.7166C277.488 72.4731 277.34 72.2559 277.182 72.0649C277.025 71.8768 276.863 71.7163 276.697 71.5835C276.531 71.4507 276.369 71.3497 276.211 71.2805L275.991 71.8989C276.074 71.9626 276.157 72.04 276.24 72.1313C276.326 72.2199 276.409 72.3209 276.489 72.4343C276.608 72.6059 276.72 72.8092 276.825 73.0444C276.933 73.2796 277.025 73.5452 277.099 73.8413C277.157 74.0793 277.203 74.3394 277.236 74.6216C277.272 74.9038 277.29 75.2082 277.29 75.5347V75.6426C277.29 75.9774 277.272 76.2887 277.236 76.5764C277.203 76.8642 277.157 77.127 277.099 77.365C277.03 77.6251 276.95 77.8603 276.859 78.0706C276.77 78.2808 276.672 78.469 276.564 78.635C276.473 78.7761 276.379 78.8993 276.282 79.0044C276.185 79.1123 276.088 79.2022 275.991 79.2742L276.211 79.8967C276.369 79.8276 276.531 79.7266 276.697 79.5938C276.863 79.4609 277.025 79.2991 277.182 79.1082C277.34 78.92 277.488 78.7042 277.626 78.4607C277.768 78.22 277.891 77.953 277.996 77.6597C278.101 77.3664 278.184 77.0509 278.245 76.7134C278.306 76.373 278.336 76.0133 278.336 75.6343Z\"\n      fill=\"#E139F0\"\n    />\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M519.126 69.7045V68.8211H516.594L517.68 67.6722C517.867 67.4794 518.037 67.2958 518.191 67.1215C518.344 66.9445 518.476 66.7715 518.587 66.6025C518.695 66.4335 518.778 66.2631 518.836 66.0914C518.897 65.9171 518.928 65.7349 518.928 65.5447C518.928 65.2938 518.888 65.0654 518.809 64.8593C518.729 64.6507 518.615 64.4724 518.464 64.3245C518.311 64.1766 518.121 64.0617 517.894 63.9798C517.669 63.898 517.41 63.857 517.117 63.857C516.811 63.857 516.531 63.9072 516.277 64.0076C516.026 64.1053 515.812 64.24 515.635 64.4117C515.456 64.5833 515.317 64.7841 515.219 65.0138C515.122 65.241 515.073 65.4827 515.073 65.7388H516.178C516.178 65.583 516.198 65.4444 516.238 65.3229C516.277 65.2014 516.335 65.0997 516.412 65.0178C516.486 64.9386 516.578 64.8791 516.689 64.8395C516.803 64.7973 516.933 64.7761 517.081 64.7761C517.195 64.7761 517.298 64.7946 517.39 64.8316C517.485 64.8686 517.567 64.9214 517.636 64.9901C517.702 65.0614 517.754 65.1472 517.791 65.2476C517.828 65.348 517.846 65.4628 517.846 65.5923C517.846 65.6794 517.831 65.7692 517.802 65.8617C517.776 65.9541 517.732 66.0531 517.672 66.1588C517.608 66.2671 517.526 66.3859 517.426 66.5153C517.326 66.6448 517.203 66.7887 517.058 66.9472L515.192 68.9518V69.7045H519.126Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"555.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M553.41 66.864L554.289 67.0819C554.331 67.0396 554.376 67 554.424 66.963C554.471 66.9234 554.525 66.8891 554.586 66.86C554.647 66.831 554.717 66.8072 554.796 66.7887C554.875 66.7702 554.969 66.761 555.077 66.761C555.239 66.761 555.379 66.7861 555.497 66.8362C555.616 66.8864 555.715 66.9577 555.795 67.0502C555.874 67.1426 555.932 67.2535 555.969 67.383C556.008 67.5097 556.028 67.6497 556.028 67.8029C556.028 67.9587 556.012 68.104 555.981 68.2387C555.952 68.3734 555.905 68.4896 555.842 68.5873C555.776 68.6851 555.69 68.7617 555.585 68.8171C555.482 68.8726 555.356 68.9003 555.208 68.9003C554.968 68.9003 554.77 68.8316 554.614 68.6943C554.461 68.557 554.371 68.3628 554.345 68.1119H553.259C553.267 68.3787 553.326 68.6164 553.437 68.825C553.551 69.031 553.697 69.2054 553.877 69.348C554.057 69.4906 554.261 69.5989 554.491 69.6729C554.724 69.7468 554.964 69.7838 555.212 69.7838C555.54 69.7838 555.824 69.7323 556.064 69.6293C556.304 69.5263 556.504 69.3863 556.662 69.2093C556.821 69.0324 556.938 68.8277 557.015 68.5953C557.091 68.3628 557.13 68.1172 557.13 67.8584C557.13 67.5546 557.09 67.2826 557.011 67.0423C556.932 66.8019 556.818 66.5985 556.67 66.4321C556.52 66.2658 556.335 66.139 556.115 66.0518C555.899 65.962 555.652 65.9171 555.375 65.9171C555.179 65.9171 555.006 65.9422 554.856 65.9924C554.705 66.0426 554.589 66.0914 554.507 66.139L554.646 64.8712H556.939V63.9363H553.738L553.41 66.864Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M479.362 64.2317H478.257L478.253 68.0548C478.25 68.2423 478.23 68.4074 478.193 68.55C478.156 68.6926 478.101 68.8115 478.027 68.9066C477.958 68.999 477.871 69.069 477.765 69.1165C477.662 69.1614 477.543 69.1839 477.409 69.1839C477.285 69.1839 477.175 69.1628 477.08 69.1205C476.985 69.0756 476.904 69.0096 476.838 68.9224C476.767 68.8273 476.713 68.7072 476.676 68.5619C476.641 68.4166 476.623 68.2476 476.62 68.0548L476.616 64.2317H475.503L475.499 68.0548C475.499 68.377 475.544 68.6649 475.634 68.9184C475.726 69.1694 475.856 69.3806 476.022 69.5523C476.189 69.724 476.388 69.8547 476.62 69.9445C476.855 70.0343 477.118 70.0792 477.409 70.0792C477.718 70.0792 477.992 70.0343 478.233 69.9445C478.476 69.8547 478.682 69.7227 478.851 69.5484C479.017 69.3767 479.144 69.1654 479.231 68.9145C479.321 68.6636 479.366 68.377 479.366 68.0548L479.362 64.2317ZM480.447 71.6481H481.549V69.6276C481.599 69.6831 481.652 69.7332 481.707 69.7781C481.763 69.823 481.821 69.864 481.882 69.901C481.985 69.9591 482.095 70.0026 482.214 70.0317C482.336 70.0634 482.468 70.0792 482.61 70.0792C482.88 70.0792 483.119 70.0238 483.328 69.9128C483.536 69.8019 483.712 69.6487 483.854 69.4533C483.994 69.2605 484.1 69.0307 484.171 68.7639C484.245 68.4972 484.282 68.208 484.282 67.8963V67.8131C484.282 67.4883 484.245 67.1924 484.171 66.9257C484.1 66.6563 483.993 66.4252 483.851 66.2324C483.708 66.0422 483.532 65.8956 483.324 65.7926C483.115 65.687 482.875 65.6342 482.603 65.6342C482.471 65.6342 482.346 65.6487 482.23 65.6777C482.117 65.7042 482.012 65.7425 481.917 65.7926C481.838 65.8349 481.764 65.8851 481.695 65.9432C481.627 65.9986 481.563 66.062 481.505 66.1333L481.466 65.7134H480.447V71.6481ZM483.181 67.8131V67.8963C483.181 68.0733 483.165 68.241 483.133 68.3995C483.102 68.5553 483.052 68.6926 482.983 68.8115C482.914 68.9303 482.824 69.0241 482.714 69.0928C482.605 69.1614 482.473 69.1958 482.317 69.1958C482.22 69.1958 482.131 69.1865 482.052 69.168C481.973 69.1469 481.903 69.1179 481.842 69.0809C481.779 69.0413 481.722 68.9937 481.672 68.9383C481.624 68.8828 481.583 68.8207 481.549 68.7521V66.9613C481.586 66.8874 481.629 66.8227 481.679 66.7672C481.732 66.7118 481.793 66.6655 481.862 66.6286C481.922 66.5969 481.99 66.5731 482.064 66.5573C482.138 66.5388 482.22 66.5295 482.309 66.5295C482.465 66.5295 482.597 66.5625 482.706 66.6286C482.817 66.6946 482.908 66.7844 482.979 66.898C483.048 67.0142 483.098 67.1515 483.129 67.31C483.164 67.4658 483.181 67.6335 483.181 67.8131ZM485.19 67.825V67.9082C485.19 68.2199 485.228 68.5091 485.304 68.7758C485.381 69.0399 485.492 69.2684 485.637 69.4612C485.78 69.654 485.954 69.8059 486.16 69.9168C486.369 70.0251 486.604 70.0792 486.865 70.0792C487.106 70.0792 487.317 70.033 487.499 69.9406C487.682 69.8481 487.84 69.7187 487.975 69.5523L488.03 70H489.025V63.9148H487.919V66.0977C487.787 65.9498 487.635 65.8362 487.464 65.757C487.295 65.6751 487.098 65.6342 486.873 65.6342C486.607 65.6342 486.369 65.687 486.16 65.7926C485.954 65.8983 485.779 66.0475 485.633 66.2403C485.488 66.4331 485.377 66.6642 485.301 66.9336C485.227 67.203 485.19 67.5001 485.19 67.825ZM486.291 67.9082V67.825C486.291 67.6454 486.307 67.4777 486.338 67.3219C486.37 67.1634 486.42 67.0247 486.489 66.9059C486.558 66.7897 486.646 66.6986 486.754 66.6325C486.865 66.5639 486.999 66.5295 487.155 66.5295C487.342 66.5295 487.498 66.5705 487.622 66.6523C487.746 66.7316 487.845 66.8438 487.919 66.9891V68.7243C487.845 68.8669 487.745 68.9792 487.618 69.0611C487.494 69.1429 487.337 69.1839 487.147 69.1839C486.991 69.1839 486.859 69.1509 486.751 69.0848C486.642 69.0188 486.554 68.9277 486.485 68.8115C486.416 68.6979 486.366 68.5645 486.335 68.4113C486.305 68.2555 486.291 68.0878 486.291 67.9082ZM492.856 70H493.973V69.9327C493.917 69.8244 493.875 69.6949 493.846 69.5444C493.817 69.3939 493.802 69.2037 493.802 68.9739V67.1357C493.802 66.8874 493.756 66.6695 493.664 66.482C493.571 66.2918 493.443 66.1347 493.279 66.0105C493.116 65.8864 492.922 65.7926 492.697 65.7292C492.475 65.6659 492.235 65.6342 491.976 65.6342C491.688 65.6342 491.432 65.6711 491.207 65.7451C490.986 65.8164 490.798 65.9141 490.645 66.0383C490.489 66.1624 490.37 66.3063 490.288 66.4701C490.209 66.6338 490.169 66.8068 490.169 66.9891H491.271C491.271 66.9125 491.281 66.8425 491.303 66.7791C491.326 66.7157 491.362 66.6616 491.41 66.6167C491.462 66.5665 491.531 66.5282 491.616 66.5018C491.7 66.4727 491.8 66.4582 491.917 66.4582C492.049 66.4582 492.164 66.4754 492.261 66.5097C492.362 66.5414 492.445 66.5876 492.511 66.6484C492.574 66.7065 492.622 66.7765 492.653 66.8583C492.685 66.9376 492.701 67.0274 492.701 67.1277V67.3813H492.087C491.77 67.3813 491.489 67.4103 491.243 67.4685C491 67.5239 490.795 67.6058 490.629 67.7141C490.444 67.8329 490.306 67.9848 490.213 68.1697C490.121 68.3519 490.074 68.5619 490.074 68.7996C490.074 68.9845 490.111 69.1562 490.185 69.3146C490.259 69.4704 490.362 69.6051 490.494 69.7187C490.626 69.8323 490.784 69.9208 490.966 69.9842C491.151 70.0475 491.353 70.0792 491.572 70.0792C491.707 70.0792 491.832 70.066 491.948 70.0396C492.065 70.0158 492.171 69.9815 492.269 69.9366C492.364 69.8944 492.451 69.8442 492.531 69.7861C492.61 69.728 492.68 69.6659 492.741 69.5999C492.754 69.6765 492.77 69.7491 492.788 69.8178C492.807 69.8864 492.829 69.9472 492.856 70ZM491.806 69.2275C491.703 69.2275 491.612 69.2156 491.532 69.1918C491.456 69.1654 491.391 69.1311 491.338 69.0888C491.285 69.0439 491.244 68.9898 491.215 68.9264C491.189 68.8603 491.176 68.789 491.176 68.7124C491.176 68.6147 491.194 68.5249 491.231 68.443C491.268 68.3585 491.325 68.2859 491.402 68.2251C491.478 68.167 491.577 68.1221 491.699 68.0904C491.82 68.0561 491.967 68.0389 492.138 68.0389H492.701V68.7758C492.669 68.8313 492.626 68.8868 492.57 68.9422C492.515 68.995 492.449 69.0426 492.372 69.0848C492.296 69.1271 492.21 69.1614 492.115 69.1878C492.02 69.2143 491.917 69.2275 491.806 69.2275ZM497.071 64.6635H495.969V65.7134H494.991V66.5256H495.969V68.4747C495.969 68.7573 496.006 69.0003 496.08 69.2037C496.154 69.4044 496.26 69.5695 496.397 69.6989C496.532 69.831 496.694 69.9287 496.885 69.9921C497.077 70.0528 497.291 70.0832 497.526 70.0832C497.648 70.0832 497.771 70.0766 497.895 70.0634C498.022 70.0528 498.143 70.037 498.259 70.0158C498.376 69.9947 498.485 69.9683 498.588 69.9366C498.691 69.9023 498.781 69.8627 498.858 69.8178L498.751 69.0611C498.7 69.0743 498.64 69.0875 498.568 69.1007C498.5 69.1139 498.426 69.1258 498.347 69.1363C498.265 69.1495 498.179 69.1601 498.089 69.168C498.002 69.176 497.916 69.1799 497.831 69.1799C497.715 69.1799 497.61 69.1667 497.515 69.1403C497.422 69.1139 497.343 69.069 497.277 69.0056C497.211 68.9449 497.159 68.863 497.122 68.76C497.088 68.6543 497.071 68.5236 497.071 68.3678V66.5256H498.671V65.7134H497.071V64.6635ZM502.003 70.0792C502.418 70.0792 502.777 69.9987 503.081 69.8376C503.385 69.6765 503.606 69.4969 503.746 69.2988L503.196 68.7045C503.069 68.8683 502.904 68.9911 502.7 69.073C502.497 69.1548 502.287 69.1958 502.071 69.1958C501.917 69.1958 501.776 69.172 501.647 69.1245C501.517 69.0769 501.402 69.0096 501.302 68.9224C501.204 68.8379 501.126 68.7441 501.068 68.6411C501.01 68.5355 500.963 68.3968 500.926 68.2251V68.2133H503.834V67.7458C503.834 67.4315 503.79 67.1449 503.703 66.8861C503.616 66.6246 503.489 66.4014 503.322 66.2165C503.153 66.0317 502.947 65.889 502.704 65.7887C502.464 65.6857 502.189 65.6342 501.88 65.6342C501.582 65.6342 501.306 65.6883 501.052 65.7966C500.799 65.9049 500.58 66.0568 500.395 66.2522C500.21 66.4476 500.066 66.6814 499.963 66.9534C499.86 67.2228 499.808 67.5213 499.808 67.8488V68.0072C499.808 68.2951 499.86 68.5659 499.963 68.8194C500.069 69.0703 500.218 69.2882 500.411 69.4731C500.603 69.6606 500.834 69.8085 501.104 69.9168C501.373 70.0251 501.673 70.0792 502.003 70.0792ZM501.872 66.5256C502.012 66.5256 502.135 66.548 502.241 66.5929C502.349 66.6352 502.44 66.6933 502.514 66.7672C502.588 66.8438 502.646 66.9336 502.689 67.0366C502.731 67.1396 502.752 67.2492 502.752 67.3654V67.4526H500.945C500.972 67.3126 501.011 67.1858 501.064 67.0723C501.117 66.9587 501.183 66.861 501.262 66.7791C501.339 66.6972 501.429 66.6352 501.532 66.5929C501.635 66.548 501.748 66.5256 501.872 66.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M533.579 64.6635H532.478V65.7134H531.499V66.5256H532.478V68.4747C532.478 68.7573 532.515 69.0003 532.589 69.2037C532.663 69.4044 532.768 69.5695 532.906 69.6989C533.04 69.831 533.203 69.9287 533.393 69.9921C533.586 70.0528 533.8 70.0832 534.035 70.0832C534.156 70.0832 534.279 70.0766 534.403 70.0634C534.53 70.0528 534.651 70.037 534.768 70.0158C534.884 69.9947 534.993 69.9683 535.096 69.9366C535.199 69.9023 535.289 69.8627 535.366 69.8178L535.259 69.0611C535.209 69.0743 535.148 69.0875 535.077 69.1007C535.008 69.1139 534.934 69.1258 534.855 69.1363C534.773 69.1495 534.687 69.1601 534.597 69.168C534.51 69.176 534.424 69.1799 534.34 69.1799C534.224 69.1799 534.118 69.1667 534.023 69.1403C533.93 69.1139 533.851 69.069 533.785 69.0056C533.719 68.9449 533.668 68.863 533.631 68.76C533.596 68.6543 533.579 68.5236 533.579 68.3678V66.5256H535.18V65.7134H533.579V64.6635ZM536.281 67.8171V67.9003C536.281 68.2146 536.326 68.5051 536.416 68.7719C536.505 69.036 536.638 69.2658 536.812 69.4612C536.984 69.6566 537.195 69.8098 537.446 69.9208C537.699 70.0291 537.987 70.0832 538.309 70.0832C538.629 70.0832 538.914 70.0291 539.165 69.9208C539.416 69.8098 539.627 69.6566 539.799 69.4612C539.971 69.2658 540.101 69.036 540.191 68.7719C540.281 68.5051 540.326 68.2146 540.326 67.9003V67.8171C540.326 67.5054 540.281 67.2175 540.191 66.9534C540.101 66.6867 539.971 66.4556 539.799 66.2601C539.625 66.0647 539.412 65.9115 539.161 65.8006C538.91 65.6896 538.624 65.6342 538.301 65.6342C537.979 65.6342 537.693 65.6896 537.442 65.8006C537.194 65.9115 536.984 66.0647 536.812 66.2601C536.638 66.4556 536.505 66.6867 536.416 66.9534C536.326 67.2175 536.281 67.5054 536.281 67.8171ZM537.382 67.9003V67.8171C537.382 67.6428 537.4 67.4777 537.434 67.3219C537.468 67.166 537.522 67.0287 537.596 66.9098C537.67 66.791 537.765 66.6972 537.882 66.6286C537.998 66.5599 538.138 66.5256 538.301 66.5256C538.468 66.5256 538.609 66.5599 538.725 66.6286C538.842 66.6972 538.937 66.791 539.011 66.9098C539.082 67.0287 539.135 67.166 539.169 67.3219C539.203 67.4777 539.221 67.6428 539.221 67.8171V67.9003C539.221 68.0799 539.203 68.2489 539.169 68.4074C539.135 68.5632 539.082 68.6992 539.011 68.8154C538.937 68.9343 538.842 69.0281 538.725 69.0967C538.609 69.1654 538.471 69.1997 538.309 69.1997C538.143 69.1997 538 69.1654 537.882 69.0967C537.765 69.0281 537.67 68.9343 537.596 68.8154C537.522 68.6992 537.468 68.5632 537.434 68.4074C537.4 68.2489 537.382 68.0799 537.382 67.9003Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M120.341 144.358C120.538 144.722 120.993 144.857 121.358 144.659L127.291 141.441C127.655 141.244 127.79 140.788 127.593 140.424C127.395 140.06 126.94 139.925 126.576 140.123L121.302 142.983L118.441 137.709C118.244 137.345 117.788 137.21 117.424 137.407C117.06 137.605 116.925 138.06 117.123 138.424L120.341 144.358ZM197.017 121.063L197.001 121.813L197.001 121.813L197.017 121.063ZM271.655 142.714C272.023 142.904 272.476 142.761 272.666 142.393L275.769 136.398C275.959 136.03 275.815 135.578 275.447 135.387C275.08 135.197 274.627 135.341 274.437 135.709L271.679 141.037L266.35 138.279C265.982 138.089 265.53 138.233 265.339 138.601C265.149 138.968 265.293 139.421 265.661 139.611L271.655 142.714ZM121 144C121.719 144.213 121.719 144.214 121.719 144.215C121.719 144.215 121.718 144.216 121.718 144.216C121.718 144.216 121.718 144.216 121.718 144.216C121.718 144.216 121.719 144.214 121.72 144.21C121.722 144.204 121.726 144.191 121.732 144.173C121.745 144.137 121.766 144.079 121.796 144C121.858 143.842 121.96 143.601 122.116 143.29C122.427 142.668 122.953 141.762 123.799 140.669C125.489 138.487 128.466 135.547 133.588 132.635C143.837 126.807 162.692 121.083 197.001 121.813L197.033 120.314C162.565 119.58 143.412 125.324 132.846 131.331C127.561 134.336 124.43 137.405 122.613 139.751C121.705 140.923 121.128 141.913 120.775 142.619C120.598 142.972 120.478 143.254 120.4 143.453C120.361 143.552 120.333 143.631 120.313 143.687C120.304 143.715 120.296 143.738 120.291 143.754C120.288 143.763 120.286 143.769 120.285 143.775C120.284 143.778 120.283 143.78 120.282 143.782C120.282 143.783 120.282 143.784 120.282 143.785C120.281 143.786 120.281 143.787 121 144ZM197.001 121.813C231.331 122.544 249.954 127.781 259.965 132.776C264.966 135.271 267.812 137.702 269.397 139.475C270.189 140.362 270.669 141.086 270.946 141.576C271.085 141.821 271.174 142.008 271.226 142.127C271.252 142.187 271.268 142.23 271.278 142.255C271.282 142.267 271.285 142.275 271.286 142.279C271.287 142.281 271.287 142.281 271.287 142.28C271.287 142.28 271.287 142.28 271.286 142.279C271.286 142.278 271.286 142.277 271.286 142.277C271.286 142.276 271.285 142.275 272 142.048C272.715 141.821 272.714 141.82 272.714 141.818C272.714 141.818 272.713 141.816 272.713 141.815C272.712 141.813 272.712 141.811 272.711 141.808C272.709 141.803 272.707 141.796 272.704 141.789C272.699 141.773 272.692 141.753 272.683 141.729C272.664 141.68 272.638 141.613 272.601 141.53C272.529 141.362 272.417 141.128 272.252 140.837C271.921 140.253 271.379 139.441 270.515 138.475C268.787 136.542 265.782 134.002 260.635 131.434C250.349 126.302 231.481 121.047 197.033 120.314L197.001 121.813Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M314.697 59.8035L314.574 59.0636L314.697 59.8035ZM461.443 69.4062C461.777 69.1618 461.85 68.6925 461.606 68.3581L457.623 62.9084C457.378 62.574 456.909 62.501 456.575 62.7454C456.24 62.9898 456.167 63.459 456.412 63.7935L459.952 68.6377L455.108 72.178C454.773 72.4224 454.7 72.8916 454.945 73.226C455.189 73.5605 455.658 73.6334 455.993 73.389L461.443 69.4062ZM251 101C251.64 101.391 251.64 101.391 251.64 101.391C251.64 101.391 251.64 101.391 251.641 101.39C251.641 101.39 251.642 101.388 251.643 101.387C251.645 101.383 251.648 101.378 251.653 101.37C251.662 101.355 251.677 101.332 251.696 101.301C251.735 101.239 251.794 101.146 251.874 101.023C252.033 100.777 252.273 100.413 252.596 99.9464C253.24 99.0123 254.211 97.6656 255.511 96.0254C258.111 92.7445 262.024 88.2922 267.268 83.6192C277.758 74.2722 293.557 64.0575 314.819 60.5435L314.574 59.0636C292.959 62.636 276.909 73.0196 266.27 82.4992C260.95 87.2395 256.979 91.7576 254.335 95.0938C253.013 96.7621 252.023 98.1356 251.361 99.0946C251.03 99.5741 250.782 99.95 250.615 100.207C250.531 100.336 250.469 100.435 250.426 100.503C250.405 100.537 250.389 100.563 250.378 100.58C250.372 100.589 250.368 100.596 250.365 100.601C250.363 100.603 250.362 100.605 250.361 100.607C250.361 100.607 250.361 100.608 250.36 100.608C250.36 100.609 250.36 100.609 251 101ZM314.819 60.5435C336.144 57.019 372.622 59.2543 403.853 62.3909C419.45 63.9574 433.709 65.7453 444.07 67.1416C449.25 67.8397 453.454 68.4399 456.364 68.8655C457.818 69.0783 458.949 69.2474 459.716 69.3633C460.099 69.4213 460.392 69.4659 460.588 69.496C460.687 69.5111 460.761 69.5226 460.81 69.5302C460.835 69.5341 460.854 69.5369 460.866 69.5389C460.872 69.5398 460.877 69.5405 460.88 69.541C460.882 69.5413 460.883 69.5414 460.884 69.5416C460.884 69.5417 460.885 69.5417 461 68.8006C461.115 68.0595 461.115 68.0595 461.114 68.0593C461.113 68.0592 461.112 68.059 461.11 68.0588C461.107 68.0583 461.102 68.0575 461.096 68.0566C461.083 68.0546 461.064 68.0517 461.039 68.0478C460.989 68.0401 460.914 68.0285 460.816 68.0134C460.618 67.9831 460.325 67.9383 459.94 67.8802C459.171 67.7639 458.038 67.5944 456.581 67.3813C453.667 66.955 449.456 66.354 444.27 65.655C433.898 64.2571 419.621 62.467 404.003 60.8984C372.801 57.7648 336.127 55.5015 314.574 59.0636L314.819 60.5435Z\"\n      fill=\"url(#paint0_linear_1_54)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M171.49 110.177V107.625H170.722V114H171.49V110.738C171.545 110.649 171.608 110.569 171.677 110.497C171.749 110.422 171.826 110.357 171.909 110.302C172.014 110.23 172.129 110.175 172.254 110.136C172.378 110.097 172.51 110.078 172.648 110.078C172.817 110.075 172.966 110.099 173.096 110.148C173.226 110.195 173.334 110.267 173.42 110.364C173.5 110.453 173.561 110.565 173.603 110.7C173.644 110.833 173.665 110.988 173.665 111.165V114H174.433V111.174C174.433 110.872 174.395 110.612 174.321 110.393C174.249 110.172 174.145 109.989 174.009 109.845C173.874 109.702 173.709 109.596 173.515 109.53C173.324 109.461 173.111 109.426 172.876 109.426C172.696 109.429 172.526 109.455 172.366 109.505C172.208 109.555 172.063 109.628 171.93 109.725C171.847 109.783 171.768 109.851 171.693 109.928C171.619 110.003 171.551 110.086 171.49 110.177ZM178.778 114H179.579V113.934C179.529 113.809 179.491 113.664 179.463 113.498C179.435 113.329 179.421 113.17 179.421 113.021V110.933C179.421 110.681 179.376 110.461 179.284 110.273C179.193 110.085 179.069 109.927 178.911 109.8C178.75 109.675 178.561 109.583 178.342 109.522C178.124 109.458 177.887 109.426 177.633 109.426C177.353 109.426 177.103 109.465 176.881 109.542C176.663 109.62 176.477 109.721 176.325 109.845C176.17 109.973 176.051 110.115 175.968 110.273C175.888 110.431 175.847 110.591 175.844 110.754H176.616C176.616 110.66 176.638 110.57 176.682 110.485C176.729 110.396 176.794 110.32 176.877 110.256C176.96 110.193 177.061 110.142 177.18 110.103C177.302 110.064 177.439 110.045 177.591 110.045C177.754 110.045 177.901 110.065 178.031 110.107C178.164 110.148 178.276 110.207 178.367 110.281C178.458 110.359 178.529 110.451 178.579 110.559C178.629 110.667 178.654 110.789 178.654 110.925V111.277H177.815C177.503 111.277 177.219 111.308 176.964 111.369C176.713 111.43 176.497 111.521 176.317 111.643C176.137 111.767 175.997 111.922 175.898 112.107C175.801 112.293 175.752 112.509 175.752 112.755C175.752 112.943 175.788 113.119 175.86 113.282C175.935 113.442 176.04 113.581 176.176 113.697C176.309 113.816 176.47 113.91 176.661 113.979C176.855 114.048 177.071 114.083 177.309 114.083C177.455 114.083 177.594 114.068 177.724 114.037C177.854 114.007 177.977 113.965 178.093 113.913C178.207 113.86 178.31 113.799 178.405 113.73C178.501 113.661 178.589 113.588 178.666 113.51C178.674 113.604 178.687 113.696 178.703 113.784C178.723 113.87 178.748 113.942 178.778 114ZM177.421 113.415C177.271 113.415 177.14 113.395 177.027 113.357C176.913 113.318 176.819 113.264 176.744 113.195C176.67 113.128 176.613 113.048 176.574 112.954C176.538 112.86 176.52 112.758 176.52 112.647C176.52 112.531 176.541 112.427 176.583 112.336C176.627 112.244 176.69 112.166 176.773 112.099C176.89 112.005 177.046 111.936 177.242 111.892C177.442 111.845 177.674 111.821 177.94 111.821H178.654V112.73C178.609 112.819 178.548 112.904 178.471 112.987C178.393 113.068 178.302 113.139 178.197 113.203C178.089 113.267 177.97 113.318 177.84 113.357C177.71 113.395 177.57 113.415 177.421 113.415ZM183.916 112.809C183.916 112.881 183.902 112.949 183.875 113.012C183.847 113.076 183.807 113.134 183.754 113.187C183.669 113.272 183.55 113.34 183.397 113.39C183.245 113.437 183.067 113.46 182.862 113.46C182.732 113.46 182.601 113.447 182.468 113.419C182.335 113.391 182.215 113.344 182.107 113.278C181.996 113.211 181.903 113.124 181.829 113.016C181.757 112.908 181.715 112.776 181.704 112.618H180.936C180.936 112.809 180.979 112.993 181.065 113.17C181.153 113.347 181.281 113.502 181.447 113.635C181.61 113.77 181.811 113.88 182.049 113.963C182.287 114.043 182.558 114.083 182.862 114.083C183.128 114.083 183.373 114.051 183.597 113.988C183.821 113.924 184.013 113.834 184.174 113.718C184.334 113.602 184.459 113.462 184.547 113.299C184.638 113.135 184.684 112.954 184.684 112.755C184.684 112.569 184.644 112.406 184.564 112.265C184.486 112.124 184.373 112 184.223 111.892C184.074 111.786 183.89 111.697 183.671 111.622C183.453 111.544 183.205 111.477 182.928 111.418C182.718 111.377 182.544 111.334 182.406 111.29C182.27 111.246 182.162 111.196 182.082 111.14C181.999 111.085 181.941 111.023 181.907 110.954C181.874 110.884 181.858 110.806 181.858 110.717C181.858 110.631 181.878 110.548 181.92 110.468C181.961 110.388 182.024 110.317 182.107 110.256C182.187 110.195 182.288 110.147 182.41 110.111C182.534 110.075 182.678 110.057 182.841 110.057C182.999 110.057 183.14 110.079 183.265 110.124C183.392 110.168 183.5 110.226 183.588 110.298C183.677 110.37 183.746 110.453 183.796 110.547C183.846 110.638 183.871 110.732 183.871 110.829H184.638C184.638 110.633 184.596 110.45 184.51 110.281C184.427 110.11 184.308 109.96 184.153 109.833C183.998 109.706 183.81 109.606 183.588 109.534C183.367 109.462 183.118 109.426 182.841 109.426C182.584 109.426 182.347 109.461 182.132 109.53C181.919 109.599 181.735 109.693 181.58 109.812C181.425 109.931 181.304 110.071 181.219 110.231C181.133 110.389 181.09 110.559 181.09 110.742C181.09 110.927 181.131 111.091 181.214 111.232C181.297 111.37 181.415 111.49 181.567 111.593C181.717 111.698 181.896 111.788 182.107 111.863C182.32 111.937 182.555 112.001 182.812 112.053C183.023 112.095 183.198 112.142 183.339 112.195C183.48 112.244 183.594 112.3 183.68 112.361C183.765 112.421 183.826 112.489 183.862 112.564C183.898 112.636 183.916 112.718 183.916 112.809ZM193.055 113.46C192.815 113.46 192.613 113.413 192.449 113.319C192.289 113.222 192.16 113.097 192.063 112.942C191.964 112.789 191.892 112.618 191.848 112.427C191.806 112.233 191.785 112.038 191.785 111.842V111.667C191.785 111.474 191.806 111.281 191.848 111.091C191.892 110.9 191.964 110.727 192.063 110.572C192.163 110.42 192.293 110.296 192.454 110.202C192.617 110.106 192.817 110.057 193.055 110.057C193.21 110.057 193.354 110.083 193.487 110.136C193.623 110.189 193.739 110.26 193.836 110.352C193.933 110.443 194.009 110.55 194.064 110.671C194.122 110.79 194.153 110.918 194.155 111.053H194.882C194.882 110.826 194.836 110.613 194.745 110.414C194.653 110.215 194.527 110.042 194.367 109.895C194.204 109.751 194.01 109.638 193.786 109.555C193.565 109.469 193.321 109.426 193.055 109.426C192.715 109.426 192.418 109.487 192.163 109.609C191.909 109.731 191.697 109.894 191.528 110.099C191.357 110.306 191.228 110.545 191.142 110.817C191.056 111.088 191.013 111.371 191.013 111.667V111.842C191.013 112.141 191.056 112.426 191.142 112.697C191.228 112.965 191.357 113.202 191.528 113.406C191.697 113.614 191.909 113.779 192.163 113.9C192.418 114.022 192.715 114.083 193.055 114.083C193.293 114.083 193.522 114.043 193.74 113.963C193.959 113.88 194.153 113.769 194.321 113.631C194.49 113.495 194.624 113.337 194.724 113.157C194.826 112.975 194.879 112.784 194.882 112.585H194.155C194.153 112.709 194.119 112.825 194.056 112.933C193.995 113.038 193.913 113.13 193.811 113.207C193.708 113.288 193.591 113.35 193.458 113.394C193.328 113.438 193.194 113.46 193.055 113.46ZM197.015 110.177V107.625H196.247V114H197.015V110.738C197.07 110.649 197.132 110.569 197.202 110.497C197.274 110.422 197.351 110.357 197.434 110.302C197.539 110.23 197.654 110.175 197.779 110.136C197.903 110.097 198.035 110.078 198.173 110.078C198.342 110.075 198.491 110.099 198.621 110.148C198.751 110.195 198.859 110.267 198.945 110.364C199.025 110.453 199.086 110.565 199.127 110.7C199.169 110.833 199.19 110.988 199.19 111.165V114H199.958V111.174C199.958 110.872 199.92 110.612 199.845 110.393C199.774 110.172 199.67 109.989 199.534 109.845C199.399 109.702 199.234 109.596 199.04 109.53C198.849 109.461 198.636 109.426 198.401 109.426C198.221 109.429 198.051 109.455 197.891 109.505C197.733 109.555 197.588 109.628 197.455 109.725C197.372 109.783 197.293 109.851 197.218 109.928C197.144 110.003 197.076 110.086 197.015 110.177ZM204.303 114H205.104V113.934C205.054 113.809 205.015 113.664 204.988 113.498C204.96 113.329 204.946 113.17 204.946 113.021V110.933C204.946 110.681 204.901 110.461 204.809 110.273C204.718 110.085 204.594 109.927 204.436 109.8C204.275 109.675 204.086 109.583 203.867 109.522C203.649 109.458 203.412 109.426 203.157 109.426C202.878 109.426 202.628 109.465 202.406 109.542C202.188 109.62 202.002 109.721 201.85 109.845C201.695 109.973 201.576 110.115 201.493 110.273C201.413 110.431 201.371 110.591 201.369 110.754H202.141C202.141 110.66 202.163 110.57 202.207 110.485C202.254 110.396 202.319 110.32 202.402 110.256C202.485 110.193 202.586 110.142 202.705 110.103C202.827 110.064 202.964 110.045 203.116 110.045C203.279 110.045 203.426 110.065 203.556 110.107C203.689 110.148 203.801 110.207 203.892 110.281C203.983 110.359 204.054 110.451 204.104 110.559C204.154 110.667 204.178 110.789 204.178 110.925V111.277H203.34C203.027 111.277 202.744 111.308 202.489 111.369C202.237 111.43 202.022 111.521 201.842 111.643C201.662 111.767 201.522 111.922 201.423 112.107C201.326 112.293 201.277 112.509 201.277 112.755C201.277 112.943 201.313 113.119 201.385 113.282C201.46 113.442 201.565 113.581 201.701 113.697C201.833 113.816 201.995 113.91 202.186 113.979C202.38 114.048 202.596 114.083 202.834 114.083C202.98 114.083 203.119 114.068 203.249 114.037C203.379 114.007 203.502 113.965 203.618 113.913C203.732 113.86 203.835 113.799 203.929 113.73C204.026 113.661 204.113 113.588 204.191 113.51C204.199 113.604 204.212 113.696 204.228 113.784C204.248 113.87 204.273 113.942 204.303 114ZM202.946 113.415C202.796 113.415 202.665 113.395 202.552 113.357C202.438 113.318 202.344 113.264 202.269 113.195C202.195 113.128 202.138 113.048 202.099 112.954C202.063 112.86 202.045 112.758 202.045 112.647C202.045 112.531 202.066 112.427 202.107 112.336C202.152 112.244 202.215 112.166 202.298 112.099C202.415 112.005 202.571 111.936 202.767 111.892C202.967 111.845 203.199 111.821 203.465 111.821H204.178V112.73C204.134 112.819 204.073 112.904 203.996 112.987C203.918 113.068 203.827 113.139 203.722 113.203C203.614 113.267 203.495 113.318 203.365 113.357C203.235 113.395 203.095 113.415 202.946 113.415ZM206.457 114H207.225V110.779C207.277 110.682 207.338 110.594 207.407 110.514C207.479 110.433 207.557 110.363 207.64 110.302C207.742 110.233 207.854 110.179 207.976 110.14C208.098 110.099 208.229 110.078 208.37 110.078C208.534 110.078 208.677 110.097 208.802 110.136C208.929 110.175 209.037 110.237 209.126 110.323C209.212 110.409 209.277 110.521 209.321 110.659C209.365 110.797 209.387 110.966 209.387 111.165V114H210.155V111.149C210.155 110.85 210.118 110.593 210.043 110.377C209.971 110.158 209.867 109.978 209.732 109.837C209.596 109.696 209.431 109.592 209.238 109.526C209.047 109.459 208.834 109.426 208.599 109.426C208.424 109.429 208.258 109.455 208.101 109.505C207.946 109.552 207.802 109.62 207.669 109.708C207.58 109.767 207.496 109.836 207.416 109.916C207.338 109.993 207.266 110.079 207.2 110.173L207.146 109.509H206.457V114ZM211.421 111.717V111.804C211.421 112.125 211.462 112.426 211.545 112.705C211.628 112.982 211.747 113.222 211.902 113.427C212.055 113.632 212.241 113.792 212.463 113.909C212.684 114.025 212.932 114.083 213.206 114.083C213.369 114.083 213.521 114.065 213.662 114.029C213.803 113.996 213.932 113.947 214.048 113.884C214.123 113.842 214.192 113.794 214.256 113.739C214.322 113.683 214.384 113.622 214.442 113.556V113.942C214.442 114.136 214.415 114.307 214.359 114.457C214.304 114.606 214.225 114.73 214.123 114.83C214.018 114.932 213.892 115.01 213.745 115.062C213.598 115.115 213.434 115.141 213.251 115.141C213.149 115.141 213.046 115.13 212.944 115.108C212.842 115.089 212.739 115.056 212.637 115.009C212.535 114.962 212.434 114.898 212.334 114.818C212.234 114.74 212.138 114.645 212.043 114.531L211.645 114.992C211.747 115.139 211.869 115.262 212.01 115.361C212.154 115.461 212.304 115.54 212.458 115.598C212.611 115.659 212.761 115.702 212.911 115.727C213.06 115.754 213.193 115.768 213.309 115.768C213.592 115.768 213.849 115.727 214.081 115.644C214.314 115.561 214.514 115.439 214.683 115.278C214.849 115.118 214.978 114.923 215.069 114.693C215.163 114.463 215.21 114.201 215.21 113.905V109.509H214.513L214.476 109.999C214.423 109.933 214.366 109.872 214.305 109.816C214.247 109.761 214.185 109.713 214.119 109.671C213.997 109.591 213.86 109.53 213.708 109.489C213.558 109.447 213.394 109.426 213.214 109.426C212.934 109.426 212.684 109.483 212.463 109.596C212.241 109.71 212.053 109.868 211.898 110.07C211.743 110.272 211.624 110.514 211.541 110.796C211.461 111.075 211.421 111.382 211.421 111.717ZM212.189 111.804V111.717C212.189 111.499 212.211 111.291 212.255 111.095C212.302 110.896 212.375 110.72 212.475 110.568C212.572 110.418 212.696 110.299 212.849 110.211C213.004 110.122 213.189 110.078 213.405 110.078C213.532 110.078 213.648 110.094 213.753 110.128C213.859 110.158 213.954 110.201 214.04 110.256C214.126 110.314 214.202 110.382 214.268 110.46C214.334 110.537 214.393 110.623 214.442 110.717V112.776C214.393 112.872 214.334 112.961 214.268 113.041C214.202 113.122 214.127 113.191 214.044 113.249C213.958 113.307 213.861 113.353 213.753 113.386C213.648 113.416 213.529 113.431 213.396 113.431C213.183 113.431 213.001 113.389 212.849 113.303C212.696 113.214 212.572 113.095 212.475 112.946C212.375 112.796 212.302 112.623 212.255 112.427C212.211 112.231 212.189 112.023 212.189 111.804ZM218.651 114.083C219.088 114.083 219.455 113.996 219.751 113.822C220.05 113.644 220.274 113.442 220.423 113.216L219.954 112.85C219.813 113.033 219.636 113.18 219.423 113.29C219.21 113.401 218.966 113.456 218.692 113.456C218.485 113.456 218.295 113.418 218.124 113.34C217.952 113.263 217.806 113.156 217.684 113.021C217.565 112.893 217.471 112.747 217.402 112.581C217.335 112.415 217.292 112.222 217.273 112.004V111.975H220.481V111.63C220.481 111.317 220.441 111.027 220.361 110.759C220.283 110.49 220.164 110.256 220.004 110.057C219.843 109.861 219.641 109.707 219.398 109.596C219.157 109.483 218.875 109.426 218.551 109.426C218.294 109.426 218.042 109.479 217.796 109.584C217.552 109.689 217.335 109.84 217.144 110.036C216.951 110.236 216.796 110.479 216.679 110.767C216.563 111.052 216.505 111.376 216.505 111.738V111.912C216.505 112.225 216.558 112.514 216.663 112.78C216.768 113.045 216.915 113.275 217.103 113.469C217.291 113.662 217.516 113.813 217.779 113.921C218.045 114.029 218.335 114.083 218.651 114.083ZM218.551 110.057C218.748 110.057 218.917 110.093 219.058 110.165C219.201 110.237 219.32 110.331 219.415 110.447C219.509 110.563 219.582 110.702 219.635 110.862C219.687 111.02 219.713 111.168 219.713 111.306V111.344H217.298C217.328 111.136 217.381 110.954 217.456 110.796C217.533 110.635 217.627 110.5 217.738 110.389C217.848 110.281 217.973 110.2 218.111 110.144C218.25 110.086 218.396 110.057 218.551 110.057ZM221.627 111.717V111.804C221.627 112.125 221.67 112.426 221.755 112.705C221.841 112.982 221.962 113.222 222.116 113.427C222.271 113.632 222.458 113.792 222.677 113.909C222.898 114.025 223.144 114.083 223.416 114.083C223.692 114.083 223.934 114.036 224.142 113.942C224.349 113.848 224.528 113.709 224.677 113.527L224.71 114H225.416V107.625H224.648V109.953C224.502 109.782 224.327 109.652 224.125 109.563C223.926 109.472 223.692 109.426 223.424 109.426C223.15 109.426 222.902 109.483 222.681 109.596C222.46 109.71 222.271 109.868 222.116 110.07C221.959 110.272 221.837 110.514 221.751 110.796C221.668 111.075 221.627 111.382 221.627 111.717ZM222.395 111.804V111.717C222.395 111.499 222.418 111.291 222.465 111.095C222.512 110.896 222.585 110.72 222.685 110.568C222.782 110.418 222.906 110.299 223.059 110.211C223.214 110.122 223.399 110.078 223.615 110.078C223.867 110.078 224.077 110.137 224.246 110.256C224.414 110.373 224.549 110.522 224.648 110.705V112.788C224.549 112.985 224.414 113.141 224.246 113.257C224.077 113.373 223.864 113.431 223.606 113.431C223.393 113.431 223.211 113.389 223.059 113.303C222.906 113.214 222.782 113.095 222.685 112.946C222.585 112.796 222.512 112.623 222.465 112.427C222.418 112.231 222.395 112.023 222.395 111.804ZM228.276 112.298H229.043C229.043 112.19 229.046 112.095 229.052 112.012C229.057 111.926 229.071 111.846 229.093 111.771C229.115 111.697 229.149 111.623 229.193 111.551C229.24 111.479 229.305 111.403 229.388 111.323C229.518 111.207 229.649 111.081 229.782 110.945C229.918 110.81 230.04 110.663 230.147 110.505C230.255 110.35 230.344 110.186 230.413 110.011C230.482 109.834 230.517 109.646 230.517 109.447C230.517 109.198 230.477 108.977 230.396 108.783C230.316 108.589 230.2 108.425 230.048 108.289C229.896 108.153 229.709 108.051 229.488 107.982C229.269 107.91 229.02 107.874 228.74 107.874C228.489 107.874 228.253 107.909 228.035 107.978C227.819 108.044 227.632 108.141 227.475 108.268C227.314 108.398 227.187 108.556 227.093 108.741C226.999 108.927 226.95 109.136 226.948 109.368H227.715C227.715 109.224 227.744 109.101 227.802 108.999C227.861 108.894 227.938 108.806 228.035 108.737C228.129 108.671 228.237 108.622 228.359 108.592C228.483 108.559 228.61 108.542 228.74 108.542C228.909 108.542 229.059 108.564 229.189 108.609C229.319 108.653 229.427 108.718 229.512 108.804C229.59 108.881 229.648 108.977 229.687 109.09C229.728 109.201 229.749 109.328 229.749 109.472C229.749 109.61 229.723 109.742 229.67 109.866C229.618 109.991 229.551 110.108 229.471 110.219C229.388 110.332 229.297 110.44 229.197 110.543C229.1 110.645 229.005 110.745 228.911 110.842C228.772 110.969 228.662 111.08 228.579 111.174C228.496 111.265 228.432 111.36 228.388 111.46C228.343 111.562 228.314 111.679 228.301 111.809C228.287 111.936 228.278 112.099 228.276 112.298ZM228.188 113.597C228.188 113.725 228.227 113.831 228.305 113.917C228.385 114.003 228.504 114.046 228.662 114.046C228.819 114.046 228.938 114.003 229.019 113.917C229.102 113.831 229.143 113.725 229.143 113.597C229.143 113.465 229.102 113.354 229.019 113.265C228.938 113.177 228.819 113.133 228.662 113.133C228.504 113.133 228.385 113.177 228.305 113.265C228.227 113.354 228.188 113.465 228.188 113.597Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M237.797 111.543V111.634C237.797 112.027 237.826 112.395 237.884 112.738C237.945 113.081 238.026 113.398 238.129 113.689C238.231 113.982 238.35 114.249 238.486 114.49C238.624 114.73 238.769 114.942 238.921 115.125C239.074 115.31 239.23 115.468 239.39 115.598C239.554 115.728 239.711 115.828 239.864 115.897L240.088 115.274C239.98 115.191 239.87 115.087 239.76 114.963C239.649 114.838 239.544 114.692 239.444 114.523C239.35 114.368 239.262 114.187 239.179 113.979C239.098 113.772 239.028 113.546 238.967 113.303C238.923 113.128 238.881 112.895 238.843 112.601C238.807 112.308 238.789 111.988 238.789 111.643V111.535C238.789 111.183 238.808 110.858 238.847 110.559C238.885 110.26 238.937 109.988 239 109.742C239.072 109.487 239.155 109.252 239.249 109.036C239.346 108.82 239.45 108.634 239.561 108.476C239.646 108.354 239.733 108.246 239.822 108.152C239.911 108.058 239.999 107.978 240.088 107.911L239.864 107.281C239.711 107.35 239.554 107.449 239.39 107.579C239.23 107.707 239.074 107.863 238.921 108.048C238.769 108.234 238.624 108.447 238.486 108.688C238.35 108.928 238.231 109.194 238.129 109.484C238.026 109.778 237.945 110.097 237.884 110.443C237.826 110.786 237.797 111.153 237.797 111.543ZM244.076 110.742L242.885 107.957H241.607L243.479 111.858L243.483 114H244.645L244.649 111.908L246.55 107.957H245.267L244.076 110.742ZM249.339 114.083C249.773 114.083 250.15 113.999 250.468 113.83C250.786 113.661 251.018 113.473 251.165 113.265L250.588 112.643C250.455 112.814 250.282 112.943 250.069 113.029C249.856 113.115 249.636 113.157 249.409 113.157C249.249 113.157 249.101 113.133 248.965 113.083C248.83 113.033 248.709 112.962 248.604 112.871C248.502 112.783 248.42 112.684 248.359 112.576C248.299 112.466 248.249 112.32 248.21 112.141V112.128H251.256V111.638C251.256 111.309 251.211 111.009 251.119 110.738C251.028 110.464 250.895 110.23 250.721 110.036C250.544 109.843 250.328 109.693 250.073 109.588C249.822 109.48 249.534 109.426 249.21 109.426C248.898 109.426 248.608 109.483 248.343 109.596C248.077 109.71 247.847 109.869 247.654 110.074C247.46 110.278 247.309 110.523 247.201 110.808C247.094 111.091 247.04 111.403 247.04 111.746V111.912C247.04 112.214 247.094 112.498 247.201 112.763C247.312 113.026 247.468 113.254 247.67 113.448C247.872 113.644 248.115 113.799 248.397 113.913C248.679 114.026 248.993 114.083 249.339 114.083ZM249.202 110.36C249.349 110.36 249.477 110.384 249.588 110.431C249.701 110.475 249.797 110.536 249.874 110.613C249.952 110.694 250.013 110.788 250.057 110.896C250.101 111.003 250.123 111.118 250.123 111.24V111.331H248.231C248.258 111.185 248.3 111.052 248.355 110.933C248.411 110.814 248.48 110.712 248.563 110.626C248.643 110.54 248.737 110.475 248.845 110.431C248.953 110.384 249.072 110.36 249.202 110.36ZM255.162 112.767C255.162 112.837 255.144 112.9 255.108 112.958C255.075 113.016 255.024 113.068 254.954 113.112C254.882 113.156 254.79 113.192 254.676 113.22C254.566 113.245 254.436 113.257 254.286 113.257C254.162 113.257 254.04 113.245 253.921 113.22C253.805 113.195 253.701 113.155 253.61 113.099C253.518 113.047 253.444 112.978 253.385 112.892C253.327 112.803 253.294 112.698 253.286 112.576H252.186C252.186 112.759 252.23 112.942 252.319 113.124C252.41 113.304 252.543 113.465 252.717 113.606C252.892 113.75 253.107 113.866 253.365 113.954C253.625 114.043 253.924 114.087 254.261 114.087C254.568 114.087 254.846 114.054 255.095 113.988C255.344 113.918 255.558 113.823 255.735 113.701C255.909 113.579 256.043 113.436 256.137 113.27C256.234 113.101 256.282 112.917 256.282 112.718C256.282 112.502 256.234 112.316 256.137 112.161C256.043 112.004 255.912 111.869 255.743 111.759C255.574 111.651 255.374 111.562 255.141 111.493C254.909 111.424 254.657 111.367 254.386 111.323C254.198 111.295 254.043 111.264 253.921 111.228C253.799 111.189 253.704 111.146 253.635 111.099C253.563 111.055 253.513 111.005 253.485 110.949C253.457 110.891 253.444 110.829 253.444 110.763C253.444 110.696 253.459 110.634 253.489 110.576C253.522 110.515 253.569 110.462 253.63 110.418C253.697 110.368 253.783 110.33 253.888 110.302C253.993 110.274 254.116 110.26 254.257 110.26C254.423 110.26 254.564 110.281 254.68 110.323C254.799 110.364 254.893 110.42 254.963 110.489C255.012 110.541 255.05 110.601 255.075 110.667C255.1 110.731 255.112 110.8 255.112 110.875H256.266C256.266 110.667 256.22 110.475 256.129 110.298C256.038 110.121 255.906 109.967 255.735 109.837C255.56 109.71 255.349 109.61 255.1 109.538C254.851 109.464 254.57 109.426 254.257 109.426C253.958 109.426 253.69 109.464 253.452 109.538C253.214 109.613 253.012 109.714 252.846 109.841C252.68 109.969 252.553 110.117 252.464 110.285C252.376 110.454 252.331 110.631 252.331 110.817C252.331 111.008 252.374 111.176 252.46 111.323C252.549 111.47 252.67 111.598 252.825 111.709C252.98 111.822 253.166 111.919 253.381 112C253.6 112.077 253.841 112.142 254.104 112.195C254.311 112.233 254.483 112.272 254.618 112.311C254.754 112.35 254.863 112.391 254.946 112.435C255.026 112.482 255.082 112.532 255.112 112.585C255.145 112.637 255.162 112.698 255.162 112.767ZM260.441 111.634V111.543C260.441 111.164 260.411 110.806 260.35 110.468C260.289 110.128 260.206 109.811 260.101 109.518C259.996 109.224 259.873 108.957 259.731 108.717C259.593 108.473 259.445 108.256 259.287 108.065C259.13 107.877 258.968 107.716 258.802 107.583C258.636 107.451 258.474 107.35 258.316 107.281L258.096 107.899C258.179 107.963 258.262 108.04 258.345 108.131C258.431 108.22 258.514 108.321 258.594 108.434C258.713 108.606 258.825 108.809 258.93 109.044C259.038 109.28 259.13 109.545 259.204 109.841C259.262 110.079 259.308 110.339 259.341 110.622C259.377 110.904 259.395 111.208 259.395 111.535V111.643C259.395 111.977 259.377 112.289 259.341 112.576C259.308 112.864 259.262 113.127 259.204 113.365C259.135 113.625 259.055 113.86 258.964 114.071C258.875 114.281 258.777 114.469 258.669 114.635C258.578 114.776 258.484 114.899 258.387 115.004C258.29 115.112 258.193 115.202 258.096 115.274L258.316 115.897C258.474 115.828 258.636 115.727 258.802 115.594C258.968 115.461 259.13 115.299 259.287 115.108C259.445 114.92 259.593 114.704 259.731 114.461C259.873 114.22 259.996 113.953 260.101 113.66C260.206 113.366 260.289 113.051 260.35 112.713C260.411 112.373 260.441 112.013 260.441 111.634Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M267.5 112C267.5 115.088 265.57 117.951 262.309 120.066C259.054 122.178 254.526 123.5 249.5 123.5C244.474 123.5 239.946 122.178 236.691 120.066C233.43 117.951 231.5 115.088 231.5 112C231.5 108.912 233.43 106.049 236.691 103.934C239.946 101.822 244.474 100.5 249.5 100.5C254.526 100.5 259.054 101.822 262.309 103.934C265.57 106.049 267.5 108.912 267.5 112Z\"\n      stroke=\"#10D310\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_1_54\"\n        x1=\"270.926\"\n        y1=\"109.649\"\n        x2=\"465.51\"\n        y2=\"83.9453\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M519.126 69.7045V68.8211H516.594L517.68 67.6722C517.867 67.4794 518.037 67.2958 518.191 67.1215C518.344 66.9445 518.476 66.7715 518.587 66.6025C518.695 66.4335 518.778 66.2631 518.836 66.0914C518.897 65.9171 518.928 65.7349 518.928 65.5447C518.928 65.2938 518.888 65.0654 518.809 64.8593C518.729 64.6507 518.615 64.4724 518.464 64.3245C518.311 64.1766 518.121 64.0617 517.894 63.9798C517.669 63.898 517.41 63.857 517.117 63.857C516.811 63.857 516.531 63.9072 516.277 64.0076C516.026 64.1053 515.812 64.24 515.635 64.4117C515.456 64.5833 515.317 64.7841 515.219 65.0138C515.122 65.241 515.073 65.4827 515.073 65.7388H516.178C516.178 65.583 516.198 65.4444 516.238 65.3229C516.277 65.2014 516.335 65.0997 516.412 65.0178C516.486 64.9386 516.578 64.8791 516.689 64.8395C516.803 64.7973 516.933 64.7761 517.081 64.7761C517.195 64.7761 517.298 64.7946 517.39 64.8316C517.485 64.8686 517.567 64.9214 517.636 64.9901C517.702 65.0614 517.754 65.1472 517.791 65.2476C517.828 65.348 517.846 65.4628 517.846 65.5923C517.846 65.6794 517.831 65.7692 517.802 65.8617C517.776 65.9541 517.732 66.0531 517.672 66.1588C517.608 66.2671 517.526 66.3859 517.426 66.5153C517.326 66.6448 517.203 66.7887 517.058 66.9472L515.192 68.9518V69.7045H519.126Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"555.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M553.41 66.864L554.289 67.0819C554.331 67.0396 554.376 67 554.424 66.963C554.471 66.9234 554.525 66.8891 554.586 66.86C554.647 66.831 554.717 66.8072 554.796 66.7887C554.875 66.7702 554.969 66.761 555.077 66.761C555.239 66.761 555.379 66.7861 555.497 66.8362C555.616 66.8864 555.715 66.9577 555.795 67.0502C555.874 67.1426 555.932 67.2535 555.969 67.383C556.008 67.5097 556.028 67.6497 556.028 67.8029C556.028 67.9587 556.012 68.104 555.981 68.2387C555.952 68.3734 555.905 68.4896 555.842 68.5873C555.776 68.6851 555.69 68.7617 555.585 68.8171C555.482 68.8726 555.356 68.9003 555.208 68.9003C554.968 68.9003 554.77 68.8316 554.614 68.6943C554.461 68.557 554.371 68.3628 554.345 68.1119H553.259C553.267 68.3787 553.326 68.6164 553.437 68.825C553.551 69.031 553.697 69.2054 553.877 69.348C554.057 69.4906 554.261 69.5989 554.491 69.6729C554.724 69.7468 554.964 69.7838 555.212 69.7838C555.54 69.7838 555.824 69.7323 556.064 69.6293C556.304 69.5263 556.504 69.3863 556.662 69.2093C556.821 69.0324 556.938 68.8277 557.015 68.5953C557.091 68.3628 557.13 68.1172 557.13 67.8584C557.13 67.5546 557.09 67.2826 557.011 67.0423C556.932 66.8019 556.818 66.5985 556.67 66.4321C556.52 66.2658 556.335 66.139 556.115 66.0518C555.899 65.962 555.652 65.9171 555.375 65.9171C555.179 65.9171 555.006 65.9422 554.856 65.9924C554.705 66.0426 554.589 66.0914 554.507 66.139L554.646 64.8712H556.939V63.9363H553.738L553.41 66.864Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M479.362 64.2317H478.257L478.253 68.0548C478.25 68.2423 478.23 68.4074 478.193 68.55C478.156 68.6926 478.101 68.8115 478.027 68.9066C477.958 68.999 477.871 69.069 477.765 69.1165C477.662 69.1614 477.543 69.1839 477.409 69.1839C477.285 69.1839 477.175 69.1628 477.08 69.1205C476.985 69.0756 476.904 69.0096 476.838 68.9224C476.767 68.8273 476.713 68.7072 476.676 68.5619C476.641 68.4166 476.623 68.2476 476.62 68.0548L476.616 64.2317H475.503L475.499 68.0548C475.499 68.377 475.544 68.6649 475.634 68.9184C475.726 69.1694 475.856 69.3806 476.022 69.5523C476.189 69.724 476.388 69.8547 476.62 69.9445C476.855 70.0343 477.118 70.0792 477.409 70.0792C477.718 70.0792 477.992 70.0343 478.233 69.9445C478.476 69.8547 478.682 69.7227 478.851 69.5484C479.017 69.3767 479.144 69.1654 479.231 68.9145C479.321 68.6636 479.366 68.377 479.366 68.0548L479.362 64.2317ZM480.447 71.6481H481.549V69.6276C481.599 69.6831 481.652 69.7332 481.707 69.7781C481.763 69.823 481.821 69.864 481.882 69.901C481.985 69.9591 482.095 70.0026 482.214 70.0317C482.336 70.0634 482.468 70.0792 482.61 70.0792C482.88 70.0792 483.119 70.0238 483.328 69.9128C483.536 69.8019 483.712 69.6487 483.854 69.4533C483.994 69.2605 484.1 69.0307 484.171 68.7639C484.245 68.4972 484.282 68.208 484.282 67.8963V67.8131C484.282 67.4883 484.245 67.1924 484.171 66.9257C484.1 66.6563 483.993 66.4252 483.851 66.2324C483.708 66.0422 483.532 65.8956 483.324 65.7926C483.115 65.687 482.875 65.6342 482.603 65.6342C482.471 65.6342 482.346 65.6487 482.23 65.6777C482.117 65.7042 482.012 65.7425 481.917 65.7926C481.838 65.8349 481.764 65.8851 481.695 65.9432C481.627 65.9986 481.563 66.062 481.505 66.1333L481.466 65.7134H480.447V71.6481ZM483.181 67.8131V67.8963C483.181 68.0733 483.165 68.241 483.133 68.3995C483.102 68.5553 483.052 68.6926 482.983 68.8115C482.914 68.9303 482.824 69.0241 482.714 69.0928C482.605 69.1614 482.473 69.1958 482.317 69.1958C482.22 69.1958 482.131 69.1865 482.052 69.168C481.973 69.1469 481.903 69.1179 481.842 69.0809C481.779 69.0413 481.722 68.9937 481.672 68.9383C481.624 68.8828 481.583 68.8207 481.549 68.7521V66.9613C481.586 66.8874 481.629 66.8227 481.679 66.7672C481.732 66.7118 481.793 66.6655 481.862 66.6286C481.922 66.5969 481.99 66.5731 482.064 66.5573C482.138 66.5388 482.22 66.5295 482.309 66.5295C482.465 66.5295 482.597 66.5625 482.706 66.6286C482.817 66.6946 482.908 66.7844 482.979 66.898C483.048 67.0142 483.098 67.1515 483.129 67.31C483.164 67.4658 483.181 67.6335 483.181 67.8131ZM485.19 67.825V67.9082C485.19 68.2199 485.228 68.5091 485.304 68.7758C485.381 69.0399 485.492 69.2684 485.637 69.4612C485.78 69.654 485.954 69.8059 486.16 69.9168C486.369 70.0251 486.604 70.0792 486.865 70.0792C487.106 70.0792 487.317 70.033 487.499 69.9406C487.682 69.8481 487.84 69.7187 487.975 69.5523L488.03 70H489.025V63.9148H487.919V66.0977C487.787 65.9498 487.635 65.8362 487.464 65.757C487.295 65.6751 487.098 65.6342 486.873 65.6342C486.607 65.6342 486.369 65.687 486.16 65.7926C485.954 65.8983 485.779 66.0475 485.633 66.2403C485.488 66.4331 485.377 66.6642 485.301 66.9336C485.227 67.203 485.19 67.5001 485.19 67.825ZM486.291 67.9082V67.825C486.291 67.6454 486.307 67.4777 486.338 67.3219C486.37 67.1634 486.42 67.0247 486.489 66.9059C486.558 66.7897 486.646 66.6986 486.754 66.6325C486.865 66.5639 486.999 66.5295 487.155 66.5295C487.342 66.5295 487.498 66.5705 487.622 66.6523C487.746 66.7316 487.845 66.8438 487.919 66.9891V68.7243C487.845 68.8669 487.745 68.9792 487.618 69.0611C487.494 69.1429 487.337 69.1839 487.147 69.1839C486.991 69.1839 486.859 69.1509 486.751 69.0848C486.642 69.0188 486.554 68.9277 486.485 68.8115C486.416 68.6979 486.366 68.5645 486.335 68.4113C486.305 68.2555 486.291 68.0878 486.291 67.9082ZM492.856 70H493.973V69.9327C493.917 69.8244 493.875 69.6949 493.846 69.5444C493.817 69.3939 493.802 69.2037 493.802 68.9739V67.1357C493.802 66.8874 493.756 66.6695 493.664 66.482C493.571 66.2918 493.443 66.1347 493.279 66.0105C493.116 65.8864 492.922 65.7926 492.697 65.7292C492.475 65.6659 492.235 65.6342 491.976 65.6342C491.688 65.6342 491.432 65.6711 491.207 65.7451C490.986 65.8164 490.798 65.9141 490.645 66.0383C490.489 66.1624 490.37 66.3063 490.288 66.4701C490.209 66.6338 490.169 66.8068 490.169 66.9891H491.271C491.271 66.9125 491.281 66.8425 491.303 66.7791C491.326 66.7157 491.362 66.6616 491.41 66.6167C491.462 66.5665 491.531 66.5282 491.616 66.5018C491.7 66.4727 491.8 66.4582 491.917 66.4582C492.049 66.4582 492.164 66.4754 492.261 66.5097C492.362 66.5414 492.445 66.5876 492.511 66.6484C492.574 66.7065 492.622 66.7765 492.653 66.8583C492.685 66.9376 492.701 67.0274 492.701 67.1277V67.3813H492.087C491.77 67.3813 491.489 67.4103 491.243 67.4685C491 67.5239 490.795 67.6058 490.629 67.7141C490.444 67.8329 490.306 67.9848 490.213 68.1697C490.121 68.3519 490.074 68.5619 490.074 68.7996C490.074 68.9845 490.111 69.1562 490.185 69.3146C490.259 69.4704 490.362 69.6051 490.494 69.7187C490.626 69.8323 490.784 69.9208 490.966 69.9842C491.151 70.0475 491.353 70.0792 491.572 70.0792C491.707 70.0792 491.832 70.066 491.948 70.0396C492.065 70.0158 492.171 69.9815 492.269 69.9366C492.364 69.8944 492.451 69.8442 492.531 69.7861C492.61 69.728 492.68 69.6659 492.741 69.5999C492.754 69.6765 492.77 69.7491 492.788 69.8178C492.807 69.8864 492.829 69.9472 492.856 70ZM491.806 69.2275C491.703 69.2275 491.612 69.2156 491.532 69.1918C491.456 69.1654 491.391 69.1311 491.338 69.0888C491.285 69.0439 491.244 68.9898 491.215 68.9264C491.189 68.8603 491.176 68.789 491.176 68.7124C491.176 68.6147 491.194 68.5249 491.231 68.443C491.268 68.3585 491.325 68.2859 491.402 68.2251C491.478 68.167 491.577 68.1221 491.699 68.0904C491.82 68.0561 491.967 68.0389 492.138 68.0389H492.701V68.7758C492.669 68.8313 492.626 68.8868 492.57 68.9422C492.515 68.995 492.449 69.0426 492.372 69.0848C492.296 69.1271 492.21 69.1614 492.115 69.1878C492.02 69.2143 491.917 69.2275 491.806 69.2275ZM497.071 64.6635H495.969V65.7134H494.991V66.5256H495.969V68.4747C495.969 68.7573 496.006 69.0003 496.08 69.2037C496.154 69.4044 496.26 69.5695 496.397 69.6989C496.532 69.831 496.694 69.9287 496.885 69.9921C497.077 70.0528 497.291 70.0832 497.526 70.0832C497.648 70.0832 497.771 70.0766 497.895 70.0634C498.022 70.0528 498.143 70.037 498.259 70.0158C498.376 69.9947 498.485 69.9683 498.588 69.9366C498.691 69.9023 498.781 69.8627 498.858 69.8178L498.751 69.0611C498.7 69.0743 498.64 69.0875 498.568 69.1007C498.5 69.1139 498.426 69.1258 498.347 69.1363C498.265 69.1495 498.179 69.1601 498.089 69.168C498.002 69.176 497.916 69.1799 497.831 69.1799C497.715 69.1799 497.61 69.1667 497.515 69.1403C497.422 69.1139 497.343 69.069 497.277 69.0056C497.211 68.9449 497.159 68.863 497.122 68.76C497.088 68.6543 497.071 68.5236 497.071 68.3678V66.5256H498.671V65.7134H497.071V64.6635ZM502.003 70.0792C502.418 70.0792 502.777 69.9987 503.081 69.8376C503.385 69.6765 503.606 69.4969 503.746 69.2988L503.196 68.7045C503.069 68.8683 502.904 68.9911 502.7 69.073C502.497 69.1548 502.287 69.1958 502.071 69.1958C501.917 69.1958 501.776 69.172 501.647 69.1245C501.517 69.0769 501.402 69.0096 501.302 68.9224C501.204 68.8379 501.126 68.7441 501.068 68.6411C501.01 68.5355 500.963 68.3968 500.926 68.2251V68.2133H503.834V67.7458C503.834 67.4315 503.79 67.1449 503.703 66.8861C503.616 66.6246 503.489 66.4014 503.322 66.2165C503.153 66.0317 502.947 65.889 502.704 65.7887C502.464 65.6857 502.189 65.6342 501.88 65.6342C501.582 65.6342 501.306 65.6883 501.052 65.7966C500.799 65.9049 500.58 66.0568 500.395 66.2522C500.21 66.4476 500.066 66.6814 499.963 66.9534C499.86 67.2228 499.808 67.5213 499.808 67.8488V68.0072C499.808 68.2951 499.86 68.5659 499.963 68.8194C500.069 69.0703 500.218 69.2882 500.411 69.4731C500.603 69.6606 500.834 69.8085 501.104 69.9168C501.373 70.0251 501.673 70.0792 502.003 70.0792ZM501.872 66.5256C502.012 66.5256 502.135 66.548 502.241 66.5929C502.349 66.6352 502.44 66.6933 502.514 66.7672C502.588 66.8438 502.646 66.9336 502.689 67.0366C502.731 67.1396 502.752 67.2492 502.752 67.3654V67.4526H500.945C500.972 67.3126 501.011 67.1858 501.064 67.0723C501.117 66.9587 501.183 66.861 501.262 66.7791C501.339 66.6972 501.429 66.6352 501.532 66.5929C501.635 66.548 501.748 66.5256 501.872 66.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M533.579 64.6635H532.478V65.7134H531.499V66.5256H532.478V68.4747C532.478 68.7573 532.515 69.0003 532.589 69.2037C532.663 69.4044 532.768 69.5695 532.906 69.6989C533.04 69.831 533.203 69.9287 533.393 69.9921C533.586 70.0528 533.8 70.0832 534.035 70.0832C534.156 70.0832 534.279 70.0766 534.403 70.0634C534.53 70.0528 534.651 70.037 534.768 70.0158C534.884 69.9947 534.993 69.9683 535.096 69.9366C535.199 69.9023 535.289 69.8627 535.366 69.8178L535.259 69.0611C535.209 69.0743 535.148 69.0875 535.077 69.1007C535.008 69.1139 534.934 69.1258 534.855 69.1363C534.773 69.1495 534.687 69.1601 534.597 69.168C534.51 69.176 534.424 69.1799 534.34 69.1799C534.224 69.1799 534.118 69.1667 534.023 69.1403C533.93 69.1139 533.851 69.069 533.785 69.0056C533.719 68.9449 533.668 68.863 533.631 68.76C533.596 68.6543 533.579 68.5236 533.579 68.3678V66.5256H535.18V65.7134H533.579V64.6635ZM536.281 67.8171V67.9003C536.281 68.2146 536.326 68.5051 536.416 68.7719C536.505 69.036 536.638 69.2658 536.812 69.4612C536.984 69.6566 537.195 69.8098 537.446 69.9208C537.699 70.0291 537.987 70.0832 538.309 70.0832C538.629 70.0832 538.914 70.0291 539.165 69.9208C539.416 69.8098 539.627 69.6566 539.799 69.4612C539.971 69.2658 540.101 69.036 540.191 68.7719C540.281 68.5051 540.326 68.2146 540.326 67.9003V67.8171C540.326 67.5054 540.281 67.2175 540.191 66.9534C540.101 66.6867 539.971 66.4556 539.799 66.2601C539.625 66.0647 539.412 65.9115 539.161 65.8006C538.91 65.6896 538.624 65.6342 538.301 65.6342C537.979 65.6342 537.693 65.6896 537.442 65.8006C537.194 65.9115 536.984 66.0647 536.812 66.2601C536.638 66.4556 536.505 66.6867 536.416 66.9534C536.326 67.2175 536.281 67.5054 536.281 67.8171ZM537.382 67.9003V67.8171C537.382 67.6428 537.4 67.4777 537.434 67.3219C537.468 67.166 537.522 67.0287 537.596 66.9098C537.67 66.791 537.765 66.6972 537.882 66.6286C537.998 66.5599 538.138 66.5256 538.301 66.5256C538.468 66.5256 538.609 66.5599 538.725 66.6286C538.842 66.6972 538.937 66.791 539.011 66.9098C539.082 67.0287 539.135 67.166 539.169 67.3219C539.203 67.4777 539.221 67.6428 539.221 67.8171V67.9003C539.221 68.0799 539.203 68.2489 539.169 68.4074C539.135 68.5632 539.082 68.6992 539.011 68.8154C538.937 68.9343 538.842 69.0281 538.725 69.0967C538.609 69.1654 538.471 69.1997 538.309 69.1997C538.143 69.1997 538 69.1654 537.882 69.0967C537.765 69.0281 537.67 68.9343 537.596 68.8154C537.522 68.6992 537.468 68.5632 537.434 68.4074C537.4 68.2489 537.382 68.0799 537.382 67.9003Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"92.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M516.463 92.3371V93.1928H517.062C517.212 93.1928 517.347 93.21 517.466 93.2443C517.587 93.2786 517.692 93.3315 517.779 93.4028C517.863 93.4741 517.928 93.5652 517.973 93.6761C518.018 93.7871 518.04 93.9204 518.04 94.0763C518.04 94.2004 518.02 94.3127 517.981 94.413C517.944 94.5134 517.888 94.5979 517.814 94.6666C517.738 94.7432 517.643 94.8013 517.529 94.8409C517.415 94.8805 517.287 94.9003 517.145 94.9003C517.018 94.9003 516.902 94.8818 516.796 94.8448C516.691 94.8052 516.599 94.7511 516.523 94.6824C516.444 94.6164 516.383 94.5372 516.341 94.4447C516.298 94.3496 516.277 94.2466 516.277 94.1357H515.176C515.176 94.4157 515.23 94.6586 515.338 94.8647C515.449 95.0707 515.596 95.241 515.778 95.3757C515.96 95.5131 516.168 95.6161 516.4 95.6847C516.635 95.7508 516.875 95.7838 517.121 95.7838C517.406 95.7838 517.672 95.7468 517.917 95.6729C518.166 95.5963 518.38 95.4853 518.559 95.3401C518.739 95.1974 518.88 95.0205 518.983 94.8092C519.086 94.5979 519.138 94.3576 519.138 94.0882C519.138 93.935 519.119 93.7897 519.082 93.6524C519.045 93.515 518.988 93.3882 518.912 93.272C518.835 93.1585 518.737 93.0568 518.619 92.967C518.502 92.8772 518.364 92.8032 518.203 92.7451C518.34 92.6791 518.461 92.6012 518.567 92.5114C518.673 92.4189 518.761 92.3186 518.832 92.2103C518.904 92.102 518.958 91.9884 518.995 91.8696C519.032 91.7481 519.05 91.6253 519.05 91.5011C519.05 91.2317 519.003 90.9954 518.908 90.792C518.815 90.586 518.685 90.413 518.516 90.273C518.347 90.1357 518.143 90.0327 517.905 89.964C517.668 89.8927 517.406 89.857 517.121 89.857C516.857 89.857 516.61 89.8953 516.38 89.9719C516.153 90.0485 515.955 90.1555 515.786 90.2928C515.617 90.4328 515.483 90.5992 515.386 90.792C515.291 90.9848 515.243 91.1987 515.243 91.4338H516.345C516.345 91.3281 516.366 91.2331 516.408 91.1485C516.45 91.064 516.508 90.9914 516.582 90.9307C516.654 90.8725 516.737 90.8276 516.832 90.796C516.93 90.7643 517.034 90.7484 517.145 90.7484C517.279 90.7484 517.397 90.7669 517.497 90.8039C517.6 90.8409 517.685 90.8924 517.751 90.9584C517.817 91.0271 517.866 91.1089 517.898 91.204C517.932 91.2965 517.949 91.3995 517.949 91.513C517.949 91.6292 517.932 91.7375 517.898 91.8379C517.866 91.9356 517.817 92.0188 517.751 92.0875C517.68 92.1667 517.586 92.2288 517.47 92.2737C517.356 92.3159 517.22 92.3371 517.062 92.3371H516.463Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.476 93.8448L478.562 96H479.754V95.9485L478.514 93.5675C478.673 93.4962 478.815 93.4117 478.942 93.3139C479.071 93.2162 479.182 93.1013 479.275 92.9693C479.365 92.8399 479.433 92.6933 479.481 92.5295C479.531 92.3631 479.556 92.1769 479.556 91.9709C479.556 91.6857 479.506 91.4348 479.405 91.2182C479.308 91.0016 479.168 90.8207 478.986 90.6754C478.801 90.5302 478.579 90.4206 478.32 90.3466C478.061 90.27 477.772 90.2317 477.452 90.2317H475.519V96H476.632V93.8448H477.476ZM476.632 92.9415V91.135H477.452C477.606 91.135 477.742 91.1535 477.86 91.1905C477.979 91.2274 478.08 91.2803 478.161 91.3489C478.254 91.4255 478.323 91.5232 478.367 91.6421C478.415 91.7583 478.439 91.893 478.439 92.0462C478.439 92.173 478.42 92.2879 478.383 92.3909C478.349 92.4939 478.297 92.5823 478.229 92.6563C478.147 92.7487 478.04 92.82 477.908 92.8702C477.778 92.9178 477.628 92.9415 477.456 92.9415H476.632ZM482.511 96.0792C482.926 96.0792 483.285 95.9987 483.589 95.8376C483.893 95.6765 484.115 95.4969 484.255 95.2988L483.704 94.7045C483.577 94.8683 483.412 94.9911 483.209 95.073C483.005 95.1548 482.795 95.1958 482.579 95.1958C482.426 95.1958 482.284 95.172 482.155 95.1245C482.025 95.0769 481.911 95.0096 481.81 94.9224C481.713 94.8379 481.635 94.7441 481.576 94.6411C481.518 94.5355 481.471 94.3968 481.434 94.2251V94.2133H484.342V93.7458C484.342 93.4315 484.298 93.1449 484.211 92.8861C484.124 92.6246 483.997 92.4014 483.831 92.2165C483.662 92.0317 483.456 91.889 483.213 91.7887C482.972 91.6857 482.698 91.6342 482.389 91.6342C482.09 91.6342 481.814 91.6883 481.561 91.7966C481.307 91.9049 481.088 92.0568 480.903 92.2522C480.718 92.4476 480.574 92.6814 480.471 92.9534C480.368 93.2228 480.317 93.5213 480.317 93.8488V94.0072C480.317 94.2951 480.368 94.5659 480.471 94.8194C480.577 95.0703 480.726 95.2882 480.919 95.4731C481.112 95.6606 481.343 95.8085 481.612 95.9168C481.882 96.0251 482.181 96.0792 482.511 96.0792ZM482.381 92.5256C482.521 92.5256 482.644 92.548 482.749 92.5929C482.857 92.6352 482.949 92.6933 483.023 92.7672C483.096 92.8438 483.155 92.9336 483.197 93.0366C483.239 93.1396 483.26 93.2492 483.26 93.3654V93.4526H481.454C481.48 93.3126 481.52 93.1858 481.573 93.0723C481.625 92.9587 481.691 92.861 481.771 92.7791C481.847 92.6972 481.937 92.6352 482.04 92.5929C482.143 92.548 482.257 92.5256 482.381 92.5256ZM485.99 91.7134H485.043V96H486.045V92.791C486.059 92.7567 486.073 92.725 486.089 92.6959C486.105 92.6669 486.123 92.6418 486.144 92.6206C486.173 92.5916 486.206 92.5691 486.243 92.5533C486.28 92.5374 486.323 92.5295 486.37 92.5295C486.412 92.5295 486.452 92.5361 486.489 92.5493C486.526 92.5599 486.559 92.5797 486.588 92.6088C486.614 92.6378 486.636 92.6787 486.651 92.7316C486.667 92.7844 486.675 92.8517 486.675 92.9336V96H487.646V92.8385C487.646 92.8068 487.646 92.7817 487.646 92.7633C487.646 92.7448 487.646 92.7329 487.646 92.7276C487.659 92.6986 487.675 92.6735 487.693 92.6523C487.712 92.6286 487.733 92.6074 487.757 92.5889C487.786 92.5705 487.816 92.5559 487.848 92.5454C487.882 92.5348 487.921 92.5295 487.963 92.5295C488.002 92.5295 488.041 92.5361 488.078 92.5493C488.117 92.5599 488.152 92.5797 488.181 92.6088C488.21 92.6404 488.232 92.6827 488.248 92.7355C488.267 92.7884 488.276 92.8557 488.276 92.9376V96H489.278V92.9415C489.278 92.7038 489.254 92.5031 489.207 92.3394C489.162 92.173 489.098 92.0369 489.017 91.9313C488.932 91.8283 488.833 91.753 488.719 91.7055C488.609 91.6579 488.488 91.6342 488.359 91.6342C488.256 91.6342 488.161 91.6474 488.074 91.6738C487.987 91.7002 487.909 91.7372 487.84 91.7847C487.785 91.8217 487.733 91.8666 487.685 91.9194C487.641 91.9696 487.6 92.0264 487.563 92.0898C487.539 92.0237 487.51 91.9656 487.476 91.9154C487.444 91.8626 487.406 91.8177 487.361 91.7808C487.303 91.7306 487.234 91.6936 487.155 91.6698C487.075 91.6461 486.986 91.6342 486.885 91.6342C486.679 91.6342 486.504 91.6883 486.358 91.7966C486.216 91.9022 486.103 92.0475 486.022 92.2324L485.99 91.7134ZM490.027 93.8171V93.9003C490.027 94.2146 490.072 94.5051 490.162 94.7719C490.251 95.036 490.383 95.2658 490.558 95.4612C490.729 95.6566 490.941 95.8098 491.192 95.9208C491.445 96.0291 491.733 96.0832 492.055 96.0832C492.375 96.0832 492.66 96.0291 492.911 95.9208C493.162 95.8098 493.373 95.6566 493.545 95.4612C493.717 95.2658 493.847 95.036 493.937 94.7719C494.027 94.5051 494.072 94.2146 494.072 93.9003V93.8171C494.072 93.5054 494.027 93.2175 493.937 92.9534C493.847 92.6867 493.717 92.4556 493.545 92.2601C493.371 92.0647 493.158 91.9115 492.907 91.8006C492.656 91.6896 492.37 91.6342 492.047 91.6342C491.725 91.6342 491.439 91.6896 491.188 91.8006C490.939 91.9115 490.729 92.0647 490.558 92.2601C490.383 92.4556 490.251 92.6867 490.162 92.9534C490.072 93.2175 490.027 93.5054 490.027 93.8171ZM491.128 93.9003V93.8171C491.128 93.6428 491.145 93.4777 491.18 93.3219C491.214 93.166 491.268 93.0287 491.342 92.9098C491.416 92.791 491.511 92.6972 491.627 92.6286C491.744 92.5599 491.884 92.5256 492.047 92.5256C492.214 92.5256 492.355 92.5599 492.471 92.6286C492.587 92.6972 492.683 92.791 492.757 92.9098C492.828 93.0287 492.881 93.166 492.915 93.3219C492.949 93.4777 492.966 93.6428 492.966 93.8171V93.9003C492.966 94.0799 492.949 94.2489 492.915 94.4074C492.881 94.5632 492.828 94.6992 492.757 94.8154C492.683 94.9343 492.587 95.0281 492.471 95.0967C492.355 95.1654 492.216 95.1997 492.055 95.1997C491.889 95.1997 491.746 95.1654 491.627 95.0967C491.511 95.0281 491.416 94.9343 491.342 94.8154C491.268 94.6992 491.214 94.5632 491.18 94.4074C491.145 94.2489 491.128 94.0799 491.128 93.9003ZM496.413 96H497.447L499.075 91.7134H497.927L496.988 94.7362L496.928 95.0373L496.869 94.7362L495.926 91.7134H494.777L496.413 96ZM502.003 96.0792C502.418 96.0792 502.777 95.9987 503.081 95.8376C503.385 95.6765 503.606 95.4969 503.746 95.2988L503.196 94.7045C503.069 94.8683 502.904 94.9911 502.7 95.073C502.497 95.1548 502.287 95.1958 502.071 95.1958C501.917 95.1958 501.776 95.172 501.647 95.1245C501.517 95.0769 501.402 95.0096 501.302 94.9224C501.204 94.8379 501.126 94.7441 501.068 94.6411C501.01 94.5355 500.963 94.3968 500.926 94.2251V94.2133H503.834V93.7458C503.834 93.4315 503.79 93.1449 503.703 92.8861C503.616 92.6246 503.489 92.4014 503.322 92.2165C503.153 92.0317 502.947 91.889 502.704 91.7887C502.464 91.6857 502.189 91.6342 501.88 91.6342C501.582 91.6342 501.306 91.6883 501.052 91.7966C500.799 91.9049 500.58 92.0568 500.395 92.2522C500.21 92.4476 500.066 92.6814 499.963 92.9534C499.86 93.2228 499.808 93.5213 499.808 93.8488V94.0072C499.808 94.2951 499.86 94.5659 499.963 94.8194C500.069 95.0703 500.218 95.2882 500.411 95.4731C500.603 95.6606 500.834 95.8085 501.104 95.9168C501.373 96.0251 501.673 96.0792 502.003 96.0792ZM501.872 92.5256C502.012 92.5256 502.135 92.548 502.241 92.5929C502.349 92.6352 502.44 92.6933 502.514 92.7672C502.588 92.8438 502.646 92.9336 502.689 93.0366C502.731 93.1396 502.752 93.2492 502.752 93.3654V93.4526H500.945C500.972 93.3126 501.011 93.1858 501.064 93.0723C501.117 92.9587 501.183 92.861 501.262 92.7791C501.339 92.6972 501.429 92.6352 501.532 92.5929C501.635 92.548 501.748 92.5256 501.872 92.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M52.3649 246.241C52.5852 245.89 53.0481 245.785 53.3989 246.005L59.1151 249.595C59.4659 249.815 59.5717 250.278 59.3514 250.629C59.1311 250.98 58.6681 251.085 58.3173 250.865L53.2363 247.674L50.0452 252.755C49.825 253.106 49.362 253.212 49.0112 252.991C48.6605 252.771 48.5547 252.308 48.775 251.957L52.3649 246.241ZM139.282 276.503L139.469 277.23L139.282 276.503ZM266.313 237.318C266.689 237.491 266.854 237.936 266.682 238.313L263.869 244.448C263.696 244.825 263.251 244.99 262.874 244.818C262.498 244.645 262.332 244.2 262.505 243.823L265.006 238.369L259.552 235.869C259.175 235.696 259.01 235.251 259.182 234.874C259.355 234.498 259.8 234.332 260.177 234.505L266.313 237.318ZM53 246.64C53.7312 246.473 53.7311 246.473 53.731 246.472C53.7311 246.473 53.7311 246.473 53.7312 246.473C53.7313 246.474 53.7317 246.475 53.7322 246.477C53.7333 246.482 53.735 246.489 53.7375 246.5C53.7425 246.52 53.7503 246.552 53.7613 246.595C53.7833 246.682 53.8177 246.812 53.8662 246.983C53.9631 247.326 54.1161 247.831 54.3379 248.47C54.7817 249.748 55.5002 251.56 56.5948 253.679C58.7842 257.917 62.4737 263.372 68.4716 268.233C80.4334 277.929 101.743 285.393 139.095 275.777L139.469 277.23C101.777 286.933 79.9451 279.464 67.527 269.399C61.335 264.38 57.5248 258.747 55.2621 254.367C54.1306 252.177 53.3849 250.298 52.9209 248.962C52.6889 248.293 52.5272 247.761 52.4229 247.392C52.3707 247.208 52.3329 247.064 52.3077 246.966C52.2952 246.916 52.2858 246.878 52.2794 246.852C52.2762 246.838 52.2737 246.828 52.2719 246.82C52.2711 246.817 52.2704 246.814 52.2699 246.812C52.2696 246.81 52.2694 246.809 52.2692 246.809C52.269 246.808 52.2688 246.807 53 246.64ZM139.095 275.777C176.6 266.123 208.265 256.501 230.552 249.294C241.696 245.69 250.494 242.69 256.506 240.591C259.512 239.542 261.821 238.718 263.379 238.157C264.157 237.876 264.748 237.661 265.144 237.516C265.341 237.443 265.491 237.389 265.59 237.352C265.64 237.334 265.677 237.32 265.702 237.311C265.714 237.306 265.724 237.303 265.73 237.3C265.733 237.299 265.735 237.298 265.737 237.298C265.738 237.297 265.738 237.297 265.738 237.297C265.739 237.297 265.739 237.297 266 238C266.261 238.703 266.261 238.703 266.26 238.703C266.26 238.704 266.259 238.704 266.258 238.704C266.257 238.705 266.254 238.706 266.251 238.707C266.245 238.709 266.235 238.713 266.222 238.717C266.197 238.727 266.159 238.741 266.109 238.759C266.008 238.796 265.858 238.852 265.659 238.924C265.261 239.07 264.668 239.286 263.887 239.568C262.326 240.131 260.012 240.957 257.001 242.008C250.979 244.11 242.169 247.114 231.014 250.721C208.703 257.936 177.009 267.566 139.469 277.23L139.095 275.777Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M491.012 101.952C490.709 101.669 490.234 101.685 489.952 101.988L485.345 106.922C485.063 107.225 485.079 107.699 485.382 107.982C485.684 108.265 486.159 108.248 486.442 107.946L490.536 103.56L494.922 107.655C495.225 107.937 495.699 107.921 495.982 107.618C496.265 107.316 496.248 106.841 495.946 106.558L491.012 101.952ZM298.5 270.5C299.154 270.867 299.154 270.867 299.154 270.867C299.154 270.866 299.155 270.866 299.155 270.865C299.156 270.863 299.158 270.86 299.16 270.856C299.164 270.849 299.171 270.837 299.18 270.821C299.198 270.789 299.226 270.74 299.263 270.676C299.338 270.547 299.45 270.355 299.601 270.103C299.902 269.598 300.355 268.855 300.96 267.906C302.171 266.008 303.989 263.286 306.416 260C311.269 253.428 318.551 244.606 328.26 235.613C347.679 217.625 376.775 198.982 415.553 196.248L415.447 194.752C376.225 197.518 346.821 216.375 327.24 234.512C317.449 243.582 310.106 252.478 305.209 259.109C302.761 262.425 300.923 265.176 299.696 267.1C299.082 268.062 298.621 268.817 298.313 269.334C298.159 269.592 298.043 269.79 297.965 269.925C297.926 269.992 297.897 270.044 297.877 270.078C297.867 270.096 297.859 270.109 297.854 270.118C297.852 270.123 297.85 270.126 297.848 270.129C297.848 270.13 297.847 270.131 297.847 270.132C297.846 270.132 297.846 270.133 298.5 270.5ZM415.553 196.248C435.202 194.863 449.792 188.306 460.607 179.223C471.414 170.146 478.414 158.578 482.947 147.215C487.479 135.854 489.553 124.675 490.495 116.342C490.967 112.174 491.155 108.714 491.226 106.292C491.262 105.082 491.268 104.131 491.265 103.481C491.263 103.156 491.259 102.906 491.256 102.736C491.254 102.652 491.253 102.587 491.252 102.543C491.251 102.521 491.251 102.504 491.25 102.493C491.25 102.487 491.25 102.483 491.25 102.48C491.25 102.478 491.25 102.477 491.25 102.476C491.25 102.475 491.25 102.474 490.5 102.5C489.75 102.526 489.75 102.526 489.75 102.526C489.75 102.527 489.75 102.527 489.751 102.528C489.751 102.531 489.751 102.534 489.751 102.539C489.751 102.549 489.752 102.564 489.752 102.584C489.753 102.624 489.755 102.685 489.756 102.766C489.76 102.928 489.763 103.17 489.765 103.487C489.768 104.122 489.762 105.056 489.727 106.249C489.657 108.634 489.471 112.053 489.005 116.174C488.072 124.419 486.021 135.459 481.553 146.66C477.086 157.86 470.211 169.198 459.643 178.074C449.083 186.943 434.798 193.387 415.447 194.752L415.553 196.248Z\"\n      fill=\"url(#paint0_linear_1_62)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M204.49 275.177V272.625H203.722V279H204.49V275.738C204.545 275.649 204.608 275.569 204.677 275.497C204.749 275.422 204.826 275.357 204.909 275.302C205.014 275.23 205.129 275.175 205.254 275.136C205.378 275.097 205.51 275.078 205.648 275.078C205.817 275.075 205.966 275.099 206.096 275.148C206.226 275.195 206.334 275.267 206.42 275.364C206.5 275.453 206.561 275.565 206.603 275.7C206.644 275.833 206.665 275.988 206.665 276.165V279H207.433V276.174C207.433 275.872 207.395 275.612 207.321 275.393C207.249 275.172 207.145 274.989 207.009 274.845C206.874 274.702 206.709 274.596 206.515 274.53C206.324 274.461 206.111 274.426 205.876 274.426C205.696 274.429 205.526 274.455 205.366 274.505C205.208 274.555 205.063 274.628 204.93 274.725C204.847 274.783 204.768 274.851 204.693 274.928C204.619 275.003 204.551 275.086 204.49 275.177ZM211.778 279H212.579V278.934C212.529 278.809 212.491 278.664 212.463 278.498C212.435 278.329 212.421 278.17 212.421 278.021V275.933C212.421 275.681 212.376 275.461 212.284 275.273C212.193 275.085 212.069 274.927 211.911 274.8C211.75 274.675 211.561 274.583 211.342 274.522C211.124 274.458 210.887 274.426 210.633 274.426C210.353 274.426 210.103 274.465 209.881 274.542C209.663 274.62 209.477 274.721 209.325 274.845C209.17 274.973 209.051 275.115 208.968 275.273C208.888 275.431 208.847 275.591 208.844 275.754H209.616C209.616 275.66 209.638 275.57 209.682 275.485C209.729 275.396 209.794 275.32 209.877 275.256C209.96 275.193 210.061 275.142 210.18 275.103C210.302 275.064 210.439 275.045 210.591 275.045C210.754 275.045 210.901 275.065 211.031 275.107C211.164 275.148 211.276 275.207 211.367 275.281C211.458 275.359 211.529 275.451 211.579 275.559C211.629 275.667 211.654 275.789 211.654 275.925V276.277H210.815C210.503 276.277 210.219 276.308 209.964 276.369C209.713 276.43 209.497 276.521 209.317 276.643C209.137 276.767 208.997 276.922 208.898 277.107C208.801 277.293 208.752 277.509 208.752 277.755C208.752 277.943 208.788 278.119 208.86 278.282C208.935 278.442 209.04 278.581 209.176 278.697C209.309 278.816 209.47 278.91 209.661 278.979C209.855 279.048 210.071 279.083 210.309 279.083C210.455 279.083 210.594 279.068 210.724 279.037C210.854 279.007 210.977 278.965 211.093 278.913C211.207 278.86 211.31 278.799 211.405 278.73C211.501 278.661 211.589 278.588 211.666 278.51C211.674 278.604 211.687 278.696 211.703 278.784C211.723 278.87 211.748 278.942 211.778 279ZM210.421 278.415C210.271 278.415 210.14 278.395 210.027 278.357C209.913 278.318 209.819 278.264 209.744 278.195C209.67 278.128 209.613 278.048 209.574 277.954C209.538 277.86 209.52 277.758 209.52 277.647C209.52 277.531 209.541 277.427 209.583 277.336C209.627 277.244 209.69 277.166 209.773 277.099C209.89 277.005 210.046 276.936 210.242 276.892C210.442 276.845 210.674 276.821 210.94 276.821H211.654V277.73C211.609 277.819 211.548 277.904 211.471 277.987C211.393 278.068 211.302 278.139 211.197 278.203C211.089 278.267 210.97 278.318 210.84 278.357C210.71 278.395 210.57 278.415 210.421 278.415ZM216.916 277.809C216.916 277.881 216.902 277.949 216.875 278.012C216.847 278.076 216.807 278.134 216.754 278.187C216.669 278.272 216.55 278.34 216.397 278.39C216.245 278.437 216.067 278.46 215.862 278.46C215.732 278.46 215.601 278.447 215.468 278.419C215.335 278.391 215.215 278.344 215.107 278.278C214.996 278.211 214.903 278.124 214.829 278.016C214.757 277.908 214.715 277.776 214.704 277.618H213.936C213.936 277.809 213.979 277.993 214.065 278.17C214.153 278.347 214.281 278.502 214.447 278.635C214.61 278.77 214.811 278.88 215.049 278.963C215.287 279.043 215.558 279.083 215.862 279.083C216.128 279.083 216.373 279.051 216.597 278.988C216.821 278.924 217.013 278.834 217.174 278.718C217.334 278.602 217.459 278.462 217.547 278.299C217.638 278.135 217.684 277.954 217.684 277.755C217.684 277.569 217.644 277.406 217.564 277.265C217.486 277.124 217.373 277 217.223 276.892C217.074 276.786 216.89 276.697 216.671 276.622C216.453 276.544 216.205 276.477 215.928 276.418C215.718 276.377 215.544 276.334 215.406 276.29C215.27 276.246 215.162 276.196 215.082 276.14C214.999 276.085 214.941 276.023 214.907 275.954C214.874 275.884 214.858 275.806 214.858 275.717C214.858 275.631 214.878 275.548 214.92 275.468C214.961 275.388 215.024 275.317 215.107 275.256C215.187 275.195 215.288 275.147 215.41 275.111C215.534 275.075 215.678 275.057 215.841 275.057C215.999 275.057 216.14 275.079 216.265 275.124C216.392 275.168 216.5 275.226 216.588 275.298C216.677 275.37 216.746 275.453 216.796 275.547C216.846 275.638 216.871 275.732 216.871 275.829H217.638C217.638 275.633 217.596 275.45 217.51 275.281C217.427 275.11 217.308 274.96 217.153 274.833C216.998 274.706 216.81 274.606 216.588 274.534C216.367 274.462 216.118 274.426 215.841 274.426C215.584 274.426 215.347 274.461 215.132 274.53C214.919 274.599 214.735 274.693 214.58 274.812C214.425 274.931 214.304 275.071 214.219 275.231C214.133 275.389 214.09 275.559 214.09 275.742C214.09 275.927 214.131 276.091 214.214 276.232C214.297 276.37 214.415 276.49 214.567 276.593C214.717 276.698 214.896 276.788 215.107 276.863C215.32 276.937 215.555 277.001 215.812 277.053C216.023 277.095 216.198 277.142 216.339 277.195C216.48 277.244 216.594 277.3 216.68 277.361C216.765 277.421 216.826 277.489 216.862 277.564C216.898 277.636 216.916 277.718 216.916 277.809ZM226.055 278.46C225.815 278.46 225.613 278.413 225.449 278.319C225.289 278.222 225.16 278.097 225.063 277.942C224.964 277.789 224.892 277.618 224.848 277.427C224.806 277.233 224.785 277.038 224.785 276.842V276.667C224.785 276.474 224.806 276.281 224.848 276.091C224.892 275.9 224.964 275.727 225.063 275.572C225.163 275.42 225.293 275.296 225.454 275.202C225.617 275.106 225.817 275.057 226.055 275.057C226.21 275.057 226.354 275.083 226.487 275.136C226.623 275.189 226.739 275.26 226.836 275.352C226.933 275.443 227.009 275.55 227.064 275.671C227.122 275.79 227.153 275.918 227.155 276.053H227.882C227.882 275.826 227.836 275.613 227.745 275.414C227.653 275.215 227.527 275.042 227.367 274.895C227.204 274.751 227.01 274.638 226.786 274.555C226.565 274.469 226.321 274.426 226.055 274.426C225.715 274.426 225.418 274.487 225.163 274.609C224.909 274.731 224.697 274.894 224.528 275.099C224.357 275.306 224.228 275.545 224.142 275.817C224.056 276.088 224.013 276.371 224.013 276.667V276.842C224.013 277.141 224.056 277.426 224.142 277.697C224.228 277.965 224.357 278.202 224.528 278.406C224.697 278.614 224.909 278.779 225.163 278.9C225.418 279.022 225.715 279.083 226.055 279.083C226.293 279.083 226.522 279.043 226.74 278.963C226.959 278.88 227.153 278.769 227.321 278.631C227.49 278.495 227.624 278.337 227.724 278.157C227.826 277.975 227.879 277.784 227.882 277.585H227.155C227.153 277.709 227.119 277.825 227.056 277.933C226.995 278.038 226.913 278.13 226.811 278.207C226.708 278.288 226.591 278.35 226.458 278.394C226.328 278.438 226.194 278.46 226.055 278.46ZM230.015 275.177V272.625H229.247V279H230.015V275.738C230.07 275.649 230.132 275.569 230.202 275.497C230.274 275.422 230.351 275.357 230.434 275.302C230.539 275.23 230.654 275.175 230.779 275.136C230.903 275.097 231.035 275.078 231.173 275.078C231.342 275.075 231.491 275.099 231.621 275.148C231.751 275.195 231.859 275.267 231.945 275.364C232.025 275.453 232.086 275.565 232.127 275.7C232.169 275.833 232.19 275.988 232.19 276.165V279H232.958V276.174C232.958 275.872 232.92 275.612 232.845 275.393C232.774 275.172 232.67 274.989 232.534 274.845C232.399 274.702 232.234 274.596 232.04 274.53C231.849 274.461 231.636 274.426 231.401 274.426C231.221 274.429 231.051 274.455 230.891 274.505C230.733 274.555 230.588 274.628 230.455 274.725C230.372 274.783 230.293 274.851 230.218 274.928C230.144 275.003 230.076 275.086 230.015 275.177ZM237.303 279H238.104V278.934C238.054 278.809 238.015 278.664 237.988 278.498C237.96 278.329 237.946 278.17 237.946 278.021V275.933C237.946 275.681 237.901 275.461 237.809 275.273C237.718 275.085 237.594 274.927 237.436 274.8C237.275 274.675 237.086 274.583 236.867 274.522C236.649 274.458 236.412 274.426 236.157 274.426C235.878 274.426 235.628 274.465 235.406 274.542C235.188 274.62 235.002 274.721 234.85 274.845C234.695 274.973 234.576 275.115 234.493 275.273C234.413 275.431 234.371 275.591 234.369 275.754H235.141C235.141 275.66 235.163 275.57 235.207 275.485C235.254 275.396 235.319 275.32 235.402 275.256C235.485 275.193 235.586 275.142 235.705 275.103C235.827 275.064 235.964 275.045 236.116 275.045C236.279 275.045 236.426 275.065 236.556 275.107C236.689 275.148 236.801 275.207 236.892 275.281C236.983 275.359 237.054 275.451 237.104 275.559C237.154 275.667 237.178 275.789 237.178 275.925V276.277H236.34C236.027 276.277 235.744 276.308 235.489 276.369C235.237 276.43 235.022 276.521 234.842 276.643C234.662 276.767 234.522 276.922 234.423 277.107C234.326 277.293 234.277 277.509 234.277 277.755C234.277 277.943 234.313 278.119 234.385 278.282C234.46 278.442 234.565 278.581 234.701 278.697C234.833 278.816 234.995 278.91 235.186 278.979C235.38 279.048 235.596 279.083 235.834 279.083C235.98 279.083 236.119 279.068 236.249 279.037C236.379 279.007 236.502 278.965 236.618 278.913C236.732 278.86 236.835 278.799 236.929 278.73C237.026 278.661 237.113 278.588 237.191 278.51C237.199 278.604 237.212 278.696 237.228 278.784C237.248 278.87 237.273 278.942 237.303 279ZM235.946 278.415C235.796 278.415 235.665 278.395 235.552 278.357C235.438 278.318 235.344 278.264 235.269 278.195C235.195 278.128 235.138 278.048 235.099 277.954C235.063 277.86 235.045 277.758 235.045 277.647C235.045 277.531 235.066 277.427 235.107 277.336C235.152 277.244 235.215 277.166 235.298 277.099C235.415 277.005 235.571 276.936 235.767 276.892C235.967 276.845 236.199 276.821 236.465 276.821H237.178V277.73C237.134 277.819 237.073 277.904 236.996 277.987C236.918 278.068 236.827 278.139 236.722 278.203C236.614 278.267 236.495 278.318 236.365 278.357C236.235 278.395 236.095 278.415 235.946 278.415ZM239.457 279H240.225V275.779C240.277 275.682 240.338 275.594 240.407 275.514C240.479 275.433 240.557 275.363 240.64 275.302C240.742 275.233 240.854 275.179 240.976 275.14C241.098 275.099 241.229 275.078 241.37 275.078C241.534 275.078 241.677 275.097 241.802 275.136C241.929 275.175 242.037 275.237 242.126 275.323C242.212 275.409 242.277 275.521 242.321 275.659C242.365 275.797 242.387 275.966 242.387 276.165V279H243.155V276.149C243.155 275.85 243.118 275.593 243.043 275.377C242.971 275.158 242.867 274.978 242.732 274.837C242.596 274.696 242.431 274.592 242.238 274.526C242.047 274.459 241.834 274.426 241.599 274.426C241.424 274.429 241.258 274.455 241.101 274.505C240.946 274.552 240.802 274.62 240.669 274.708C240.58 274.767 240.496 274.836 240.416 274.916C240.338 274.993 240.266 275.079 240.2 275.173L240.146 274.509H239.457V279ZM244.421 276.717V276.804C244.421 277.125 244.462 277.426 244.545 277.705C244.628 277.982 244.747 278.222 244.902 278.427C245.055 278.632 245.241 278.792 245.463 278.909C245.684 279.025 245.932 279.083 246.206 279.083C246.369 279.083 246.521 279.065 246.662 279.029C246.803 278.996 246.932 278.947 247.048 278.884C247.123 278.842 247.192 278.794 247.256 278.739C247.322 278.683 247.384 278.622 247.442 278.556V278.942C247.442 279.136 247.415 279.307 247.359 279.457C247.304 279.606 247.225 279.73 247.123 279.83C247.018 279.932 246.892 280.01 246.745 280.062C246.598 280.115 246.434 280.141 246.251 280.141C246.149 280.141 246.046 280.13 245.944 280.108C245.842 280.089 245.739 280.056 245.637 280.009C245.535 279.962 245.434 279.898 245.334 279.818C245.234 279.74 245.138 279.645 245.043 279.531L244.645 279.992C244.747 280.139 244.869 280.262 245.01 280.361C245.154 280.461 245.304 280.54 245.458 280.598C245.611 280.659 245.761 280.702 245.911 280.727C246.06 280.754 246.193 280.768 246.309 280.768C246.592 280.768 246.849 280.727 247.081 280.644C247.314 280.561 247.514 280.439 247.683 280.278C247.849 280.118 247.978 279.923 248.069 279.693C248.163 279.463 248.21 279.201 248.21 278.905V274.509H247.513L247.476 274.999C247.423 274.933 247.366 274.872 247.305 274.816C247.247 274.761 247.185 274.713 247.119 274.671C246.997 274.591 246.86 274.53 246.708 274.489C246.558 274.447 246.394 274.426 246.214 274.426C245.934 274.426 245.684 274.483 245.463 274.596C245.241 274.71 245.053 274.868 244.898 275.07C244.743 275.272 244.624 275.514 244.541 275.796C244.461 276.075 244.421 276.382 244.421 276.717ZM245.189 276.804V276.717C245.189 276.499 245.211 276.291 245.255 276.095C245.302 275.896 245.375 275.72 245.475 275.568C245.572 275.418 245.696 275.299 245.849 275.211C246.004 275.122 246.189 275.078 246.405 275.078C246.532 275.078 246.648 275.094 246.753 275.128C246.859 275.158 246.954 275.201 247.04 275.256C247.126 275.314 247.202 275.382 247.268 275.46C247.334 275.537 247.393 275.623 247.442 275.717V277.776C247.393 277.872 247.334 277.961 247.268 278.041C247.202 278.122 247.127 278.191 247.044 278.249C246.958 278.307 246.861 278.353 246.753 278.386C246.648 278.416 246.529 278.431 246.396 278.431C246.183 278.431 246.001 278.389 245.849 278.303C245.696 278.214 245.572 278.095 245.475 277.946C245.375 277.796 245.302 277.623 245.255 277.427C245.211 277.231 245.189 277.023 245.189 276.804ZM251.651 279.083C252.088 279.083 252.455 278.996 252.751 278.822C253.05 278.644 253.274 278.442 253.423 278.216L252.954 277.85C252.813 278.033 252.636 278.18 252.423 278.29C252.21 278.401 251.966 278.456 251.692 278.456C251.485 278.456 251.295 278.418 251.124 278.34C250.952 278.263 250.806 278.156 250.684 278.021C250.565 277.893 250.471 277.747 250.402 277.581C250.335 277.415 250.292 277.222 250.273 277.004V276.975H253.481V276.63C253.481 276.317 253.441 276.027 253.361 275.759C253.283 275.49 253.164 275.256 253.004 275.057C252.843 274.861 252.641 274.707 252.398 274.596C252.157 274.483 251.875 274.426 251.551 274.426C251.294 274.426 251.042 274.479 250.796 274.584C250.552 274.689 250.335 274.84 250.144 275.036C249.951 275.236 249.796 275.479 249.679 275.767C249.563 276.052 249.505 276.376 249.505 276.738V276.912C249.505 277.225 249.558 277.514 249.663 277.78C249.768 278.045 249.915 278.275 250.103 278.469C250.291 278.662 250.516 278.813 250.779 278.921C251.045 279.029 251.335 279.083 251.651 279.083ZM251.551 275.057C251.748 275.057 251.917 275.093 252.058 275.165C252.201 275.237 252.32 275.331 252.415 275.447C252.509 275.563 252.582 275.702 252.635 275.862C252.687 276.02 252.713 276.168 252.713 276.306V276.344H250.298C250.328 276.136 250.381 275.954 250.456 275.796C250.533 275.635 250.627 275.5 250.738 275.389C250.848 275.281 250.973 275.2 251.111 275.144C251.25 275.086 251.396 275.057 251.551 275.057ZM254.627 276.717V276.804C254.627 277.125 254.67 277.426 254.755 277.705C254.841 277.982 254.962 278.222 255.116 278.427C255.271 278.632 255.458 278.792 255.677 278.909C255.898 279.025 256.144 279.083 256.416 279.083C256.692 279.083 256.934 279.036 257.142 278.942C257.349 278.848 257.528 278.709 257.677 278.527L257.71 279H258.416V272.625H257.648V274.953C257.502 274.782 257.327 274.652 257.125 274.563C256.926 274.472 256.692 274.426 256.424 274.426C256.15 274.426 255.902 274.483 255.681 274.596C255.46 274.71 255.271 274.868 255.116 275.07C254.959 275.272 254.837 275.514 254.751 275.796C254.668 276.075 254.627 276.382 254.627 276.717ZM255.395 276.804V276.717C255.395 276.499 255.418 276.291 255.465 276.095C255.512 275.896 255.585 275.72 255.685 275.568C255.782 275.418 255.906 275.299 256.059 275.211C256.214 275.122 256.399 275.078 256.615 275.078C256.867 275.078 257.077 275.137 257.246 275.256C257.414 275.373 257.549 275.522 257.648 275.705V277.788C257.549 277.985 257.414 278.141 257.246 278.257C257.077 278.373 256.864 278.431 256.606 278.431C256.393 278.431 256.211 278.389 256.059 278.303C255.906 278.214 255.782 278.095 255.685 277.946C255.585 277.796 255.512 277.623 255.465 277.427C255.418 277.231 255.395 277.023 255.395 276.804ZM261.276 277.298H262.043C262.043 277.19 262.046 277.095 262.052 277.012C262.057 276.926 262.071 276.846 262.093 276.771C262.115 276.697 262.149 276.623 262.193 276.551C262.24 276.479 262.305 276.403 262.388 276.323C262.518 276.207 262.649 276.081 262.782 275.945C262.918 275.81 263.04 275.663 263.147 275.505C263.255 275.35 263.344 275.186 263.413 275.011C263.482 274.834 263.517 274.646 263.517 274.447C263.517 274.198 263.477 273.977 263.396 273.783C263.316 273.589 263.2 273.425 263.048 273.289C262.896 273.153 262.709 273.051 262.488 272.982C262.269 272.91 262.02 272.874 261.74 272.874C261.489 272.874 261.253 272.909 261.035 272.978C260.819 273.044 260.632 273.141 260.475 273.268C260.314 273.398 260.187 273.556 260.093 273.741C259.999 273.927 259.95 274.136 259.948 274.368H260.715C260.715 274.224 260.744 274.101 260.802 273.999C260.861 273.894 260.938 273.806 261.035 273.737C261.129 273.671 261.237 273.622 261.359 273.592C261.483 273.559 261.61 273.542 261.74 273.542C261.909 273.542 262.059 273.564 262.189 273.609C262.319 273.653 262.427 273.718 262.512 273.804C262.59 273.881 262.648 273.977 262.687 274.09C262.728 274.201 262.749 274.328 262.749 274.472C262.749 274.61 262.723 274.742 262.67 274.866C262.618 274.991 262.551 275.108 262.471 275.219C262.388 275.332 262.297 275.44 262.197 275.543C262.1 275.645 262.005 275.745 261.911 275.842C261.772 275.969 261.662 276.08 261.579 276.174C261.496 276.265 261.432 276.36 261.388 276.46C261.343 276.562 261.314 276.679 261.301 276.809C261.287 276.936 261.278 277.099 261.276 277.298ZM261.188 278.597C261.188 278.725 261.227 278.831 261.305 278.917C261.385 279.003 261.504 279.046 261.662 279.046C261.819 279.046 261.938 279.003 262.019 278.917C262.102 278.831 262.143 278.725 262.143 278.597C262.143 278.465 262.102 278.354 262.019 278.265C261.938 278.177 261.819 278.133 261.662 278.133C261.504 278.133 261.385 278.177 261.305 278.265C261.227 278.354 261.188 278.465 261.188 278.597Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M270.797 276.543V276.634C270.797 277.027 270.826 277.395 270.884 277.738C270.945 278.081 271.026 278.398 271.129 278.689C271.231 278.982 271.35 279.249 271.486 279.49C271.624 279.73 271.769 279.942 271.921 280.125C272.074 280.31 272.23 280.468 272.39 280.598C272.554 280.728 272.711 280.828 272.864 280.897L273.088 280.274C272.98 280.191 272.87 280.087 272.76 279.963C272.649 279.838 272.544 279.692 272.444 279.523C272.35 279.368 272.262 279.187 272.179 278.979C272.098 278.772 272.028 278.546 271.967 278.303C271.923 278.128 271.881 277.895 271.843 277.601C271.807 277.308 271.789 276.988 271.789 276.643V276.535C271.789 276.183 271.808 275.858 271.847 275.559C271.885 275.26 271.937 274.988 272 274.742C272.072 274.487 272.155 274.252 272.249 274.036C272.346 273.82 272.45 273.634 272.561 273.476C272.646 273.354 272.733 273.246 272.822 273.152C272.911 273.058 272.999 272.978 273.088 272.911L272.864 272.281C272.711 272.35 272.554 272.449 272.39 272.579C272.23 272.707 272.074 272.863 271.921 273.048C271.769 273.234 271.624 273.447 271.486 273.688C271.35 273.928 271.231 274.194 271.129 274.484C271.026 274.778 270.945 275.097 270.884 275.443C270.826 275.786 270.797 276.153 270.797 276.543ZM277.076 275.742L275.885 272.957H274.607L276.479 276.858L276.483 279H277.645L277.649 276.908L279.55 272.957H278.267L277.076 275.742ZM282.339 279.083C282.773 279.083 283.15 278.999 283.468 278.83C283.786 278.661 284.018 278.473 284.165 278.265L283.588 277.643C283.455 277.814 283.282 277.943 283.069 278.029C282.856 278.115 282.636 278.157 282.409 278.157C282.249 278.157 282.101 278.133 281.965 278.083C281.83 278.033 281.709 277.962 281.604 277.871C281.502 277.783 281.42 277.684 281.359 277.576C281.299 277.466 281.249 277.32 281.21 277.141V277.128H284.256V276.638C284.256 276.309 284.211 276.009 284.119 275.738C284.028 275.464 283.895 275.23 283.721 275.036C283.544 274.843 283.328 274.693 283.073 274.588C282.822 274.48 282.534 274.426 282.21 274.426C281.898 274.426 281.608 274.483 281.343 274.596C281.077 274.71 280.847 274.869 280.654 275.074C280.46 275.278 280.309 275.523 280.201 275.808C280.094 276.091 280.04 276.403 280.04 276.746V276.912C280.04 277.214 280.094 277.498 280.201 277.763C280.312 278.026 280.468 278.254 280.67 278.448C280.872 278.644 281.115 278.799 281.397 278.913C281.679 279.026 281.993 279.083 282.339 279.083ZM282.202 275.36C282.349 275.36 282.477 275.384 282.588 275.431C282.701 275.475 282.797 275.536 282.874 275.613C282.952 275.694 283.013 275.788 283.057 275.896C283.101 276.003 283.123 276.118 283.123 276.24V276.331H281.231C281.258 276.185 281.3 276.052 281.355 275.933C281.411 275.814 281.48 275.712 281.563 275.626C281.643 275.54 281.737 275.475 281.845 275.431C281.953 275.384 282.072 275.36 282.202 275.36ZM288.162 277.767C288.162 277.837 288.144 277.9 288.108 277.958C288.075 278.016 288.024 278.068 287.954 278.112C287.882 278.156 287.79 278.192 287.676 278.22C287.566 278.245 287.436 278.257 287.286 278.257C287.162 278.257 287.04 278.245 286.921 278.22C286.805 278.195 286.701 278.155 286.61 278.099C286.518 278.047 286.444 277.978 286.385 277.892C286.327 277.803 286.294 277.698 286.286 277.576H285.186C285.186 277.759 285.23 277.942 285.319 278.124C285.41 278.304 285.543 278.465 285.717 278.606C285.892 278.75 286.107 278.866 286.365 278.954C286.625 279.043 286.924 279.087 287.261 279.087C287.568 279.087 287.846 279.054 288.095 278.988C288.344 278.918 288.558 278.823 288.735 278.701C288.909 278.579 289.043 278.436 289.137 278.27C289.234 278.101 289.282 277.917 289.282 277.718C289.282 277.502 289.234 277.316 289.137 277.161C289.043 277.004 288.912 276.869 288.743 276.759C288.574 276.651 288.374 276.562 288.141 276.493C287.909 276.424 287.657 276.367 287.386 276.323C287.198 276.295 287.043 276.264 286.921 276.228C286.799 276.189 286.704 276.146 286.635 276.099C286.563 276.055 286.513 276.005 286.485 275.949C286.457 275.891 286.444 275.829 286.444 275.763C286.444 275.696 286.459 275.634 286.489 275.576C286.522 275.515 286.569 275.462 286.63 275.418C286.697 275.368 286.783 275.33 286.888 275.302C286.993 275.274 287.116 275.26 287.257 275.26C287.423 275.26 287.564 275.281 287.68 275.323C287.799 275.364 287.893 275.42 287.963 275.489C288.012 275.541 288.05 275.601 288.075 275.667C288.1 275.731 288.112 275.8 288.112 275.875H289.266C289.266 275.667 289.22 275.475 289.129 275.298C289.038 275.121 288.906 274.967 288.735 274.837C288.56 274.71 288.349 274.61 288.1 274.538C287.851 274.464 287.57 274.426 287.257 274.426C286.958 274.426 286.69 274.464 286.452 274.538C286.214 274.613 286.012 274.714 285.846 274.841C285.68 274.969 285.553 275.117 285.464 275.285C285.376 275.454 285.331 275.631 285.331 275.817C285.331 276.008 285.374 276.176 285.46 276.323C285.549 276.47 285.67 276.598 285.825 276.709C285.98 276.822 286.166 276.919 286.381 277C286.6 277.077 286.841 277.142 287.104 277.195C287.311 277.233 287.483 277.272 287.618 277.311C287.754 277.35 287.863 277.391 287.946 277.435C288.026 277.482 288.082 277.532 288.112 277.585C288.145 277.637 288.162 277.698 288.162 277.767ZM293.441 276.634V276.543C293.441 276.164 293.411 275.806 293.35 275.468C293.289 275.128 293.206 274.811 293.101 274.518C292.996 274.224 292.873 273.957 292.731 273.717C292.593 273.473 292.445 273.256 292.287 273.065C292.13 272.877 291.968 272.716 291.802 272.583C291.636 272.451 291.474 272.35 291.316 272.281L291.096 272.899C291.179 272.963 291.262 273.04 291.345 273.131C291.431 273.22 291.514 273.321 291.594 273.434C291.713 273.606 291.825 273.809 291.93 274.044C292.038 274.28 292.13 274.545 292.204 274.841C292.262 275.079 292.308 275.339 292.341 275.622C292.377 275.904 292.395 276.208 292.395 276.535V276.643C292.395 276.977 292.377 277.289 292.341 277.576C292.308 277.864 292.262 278.127 292.204 278.365C292.135 278.625 292.055 278.86 291.964 279.071C291.875 279.281 291.777 279.469 291.669 279.635C291.578 279.776 291.484 279.899 291.387 280.004C291.29 280.112 291.193 280.202 291.096 280.274L291.316 280.897C291.474 280.828 291.636 280.727 291.802 280.594C291.968 280.461 292.13 280.299 292.287 280.108C292.445 279.92 292.593 279.704 292.731 279.461C292.873 279.22 292.996 278.953 293.101 278.66C293.206 278.366 293.289 278.051 293.35 277.713C293.411 277.373 293.441 277.013 293.441 276.634Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M302.5 277C302.5 280.088 300.57 282.951 297.309 285.066C294.054 287.178 289.526 288.5 284.5 288.5C279.474 288.5 274.946 287.178 271.691 285.066C268.43 282.951 266.5 280.088 266.5 277C266.5 273.912 268.43 271.049 271.691 268.934C274.946 266.822 279.474 265.5 284.5 265.5C289.526 265.5 294.054 266.822 297.309 268.934C300.57 271.049 302.5 273.912 302.5 277Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M282.203 237.391H284.81C284.81 237.113 284.817 236.877 284.831 236.682C284.845 236.48 284.88 236.296 284.935 236.129C284.984 235.963 285.067 235.799 285.186 235.639C285.304 235.479 285.467 235.295 285.676 235.087C286.016 234.788 286.353 234.482 286.687 234.169C287.028 233.849 287.33 233.512 287.594 233.158C287.858 232.81 288.074 232.435 288.241 232.031C288.408 231.621 288.491 231.169 288.491 230.676C288.491 230.008 288.38 229.421 288.157 228.914C287.935 228.406 287.615 227.979 287.198 227.631C286.774 227.29 286.256 227.033 285.644 226.859C285.033 226.686 284.341 226.599 283.569 226.599C282.881 226.599 282.242 226.686 281.651 226.859C281.06 227.026 280.545 227.283 280.107 227.631C279.669 227.979 279.322 228.417 279.065 228.945C278.807 229.466 278.675 230.081 278.668 230.791H281.578C281.585 230.471 281.644 230.196 281.755 229.967C281.873 229.737 282.026 229.55 282.214 229.404C282.394 229.258 282.603 229.153 282.839 229.091C283.076 229.021 283.319 228.987 283.569 228.987C283.889 228.987 284.171 229.021 284.414 229.091C284.664 229.16 284.876 229.265 285.05 229.404C285.217 229.557 285.345 229.751 285.436 229.988C285.526 230.217 285.571 230.492 285.571 230.811C285.571 231.076 285.512 231.34 285.394 231.604C285.276 231.868 285.123 232.125 284.935 232.375C284.741 232.633 284.525 232.883 284.289 233.126C284.052 233.363 283.816 233.589 283.58 233.804C283.253 234.061 282.999 234.305 282.819 234.534C282.638 234.756 282.502 235 282.412 235.264C282.321 235.535 282.262 235.837 282.235 236.171C282.214 236.505 282.203 236.911 282.203 237.391ZM281.776 240.551C281.776 240.995 281.925 241.371 282.224 241.677C282.523 241.976 282.937 242.125 283.465 242.125C283.979 242.125 284.39 241.976 284.695 241.677C285.008 241.371 285.165 240.995 285.165 240.551C285.165 240.092 285.008 239.709 284.695 239.404C284.39 239.091 283.979 238.934 283.465 238.934C282.937 238.934 282.523 239.091 282.224 239.404C281.925 239.709 281.776 240.092 281.776 240.551Z\"\n      fill=\"white\"\n      fill-opacity=\"0.5\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_1_62\"\n        x1=\"270.926\"\n        y1=\"109.649\"\n        x2=\"465.509\"\n        y2=\"83.9453\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M519.126 69.7045V68.8211H516.594L517.68 67.6722C517.867 67.4794 518.037 67.2958 518.191 67.1215C518.344 66.9445 518.476 66.7715 518.587 66.6025C518.695 66.4335 518.778 66.2631 518.836 66.0914C518.897 65.9171 518.928 65.7349 518.928 65.5447C518.928 65.2938 518.888 65.0654 518.809 64.8593C518.729 64.6507 518.615 64.4724 518.464 64.3245C518.311 64.1766 518.121 64.0617 517.894 63.9798C517.669 63.898 517.41 63.857 517.117 63.857C516.811 63.857 516.531 63.9072 516.277 64.0076C516.026 64.1053 515.812 64.24 515.635 64.4117C515.456 64.5833 515.317 64.7841 515.219 65.0138C515.122 65.241 515.073 65.4827 515.073 65.7388H516.178C516.178 65.583 516.198 65.4444 516.238 65.3229C516.277 65.2014 516.335 65.0997 516.412 65.0178C516.486 64.9386 516.578 64.8791 516.689 64.8395C516.803 64.7973 516.933 64.7761 517.081 64.7761C517.195 64.7761 517.298 64.7946 517.39 64.8316C517.485 64.8686 517.567 64.9214 517.636 64.9901C517.702 65.0614 517.754 65.1472 517.791 65.2476C517.828 65.348 517.846 65.4628 517.846 65.5923C517.846 65.6794 517.831 65.7692 517.802 65.8617C517.776 65.9541 517.732 66.0531 517.672 66.1588C517.608 66.2671 517.526 66.3859 517.426 66.5153C517.326 66.6448 517.203 66.7887 517.058 66.9472L515.192 68.9518V69.7045H519.126Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"555.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M553.41 66.864L554.289 67.0819C554.331 67.0396 554.376 67 554.424 66.963C554.471 66.9234 554.525 66.8891 554.586 66.86C554.647 66.831 554.717 66.8072 554.796 66.7887C554.875 66.7702 554.969 66.761 555.077 66.761C555.239 66.761 555.379 66.7861 555.497 66.8362C555.616 66.8864 555.715 66.9577 555.795 67.0502C555.874 67.1426 555.932 67.2535 555.969 67.383C556.008 67.5097 556.028 67.6497 556.028 67.8029C556.028 67.9587 556.012 68.104 555.981 68.2387C555.952 68.3734 555.905 68.4896 555.842 68.5873C555.776 68.6851 555.69 68.7617 555.585 68.8171C555.482 68.8726 555.356 68.9003 555.208 68.9003C554.968 68.9003 554.77 68.8316 554.614 68.6943C554.461 68.557 554.371 68.3628 554.345 68.1119H553.259C553.267 68.3787 553.326 68.6164 553.437 68.825C553.551 69.031 553.697 69.2054 553.877 69.348C554.057 69.4906 554.261 69.5989 554.491 69.6729C554.724 69.7468 554.964 69.7838 555.212 69.7838C555.54 69.7838 555.824 69.7323 556.064 69.6293C556.304 69.5263 556.504 69.3863 556.662 69.2093C556.821 69.0324 556.938 68.8277 557.015 68.5953C557.091 68.3628 557.13 68.1172 557.13 67.8584C557.13 67.5546 557.09 67.2826 557.011 67.0423C556.932 66.8019 556.818 66.5985 556.67 66.4321C556.52 66.2658 556.335 66.139 556.115 66.0518C555.899 65.962 555.652 65.9171 555.375 65.9171C555.179 65.9171 555.006 65.9422 554.856 65.9924C554.705 66.0426 554.589 66.0914 554.507 66.139L554.646 64.8712H556.939V63.9363H553.738L553.41 66.864Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M479.362 64.2317H478.257L478.253 68.0548C478.25 68.2423 478.23 68.4074 478.193 68.55C478.156 68.6926 478.101 68.8115 478.027 68.9066C477.958 68.999 477.871 69.069 477.765 69.1165C477.662 69.1614 477.543 69.1839 477.409 69.1839C477.285 69.1839 477.175 69.1628 477.08 69.1205C476.985 69.0756 476.904 69.0096 476.838 68.9224C476.767 68.8273 476.713 68.7072 476.676 68.5619C476.641 68.4166 476.623 68.2476 476.62 68.0548L476.616 64.2317H475.503L475.499 68.0548C475.499 68.377 475.544 68.6649 475.634 68.9184C475.726 69.1694 475.856 69.3806 476.022 69.5523C476.189 69.724 476.388 69.8547 476.62 69.9445C476.855 70.0343 477.118 70.0792 477.409 70.0792C477.718 70.0792 477.992 70.0343 478.233 69.9445C478.476 69.8547 478.682 69.7227 478.851 69.5484C479.017 69.3767 479.144 69.1654 479.231 68.9145C479.321 68.6636 479.366 68.377 479.366 68.0548L479.362 64.2317ZM480.447 71.6481H481.549V69.6276C481.599 69.6831 481.652 69.7332 481.707 69.7781C481.763 69.823 481.821 69.864 481.882 69.901C481.985 69.9591 482.095 70.0026 482.214 70.0317C482.336 70.0634 482.468 70.0792 482.61 70.0792C482.88 70.0792 483.119 70.0238 483.328 69.9128C483.536 69.8019 483.712 69.6487 483.854 69.4533C483.994 69.2605 484.1 69.0307 484.171 68.7639C484.245 68.4972 484.282 68.208 484.282 67.8963V67.8131C484.282 67.4883 484.245 67.1924 484.171 66.9257C484.1 66.6563 483.993 66.4252 483.851 66.2324C483.708 66.0422 483.532 65.8956 483.324 65.7926C483.115 65.687 482.875 65.6342 482.603 65.6342C482.471 65.6342 482.346 65.6487 482.23 65.6777C482.117 65.7042 482.012 65.7425 481.917 65.7926C481.838 65.8349 481.764 65.8851 481.695 65.9432C481.627 65.9986 481.563 66.062 481.505 66.1333L481.466 65.7134H480.447V71.6481ZM483.181 67.8131V67.8963C483.181 68.0733 483.165 68.241 483.133 68.3995C483.102 68.5553 483.052 68.6926 482.983 68.8115C482.914 68.9303 482.824 69.0241 482.714 69.0928C482.605 69.1614 482.473 69.1958 482.317 69.1958C482.22 69.1958 482.131 69.1865 482.052 69.168C481.973 69.1469 481.903 69.1179 481.842 69.0809C481.779 69.0413 481.722 68.9937 481.672 68.9383C481.624 68.8828 481.583 68.8207 481.549 68.7521V66.9613C481.586 66.8874 481.629 66.8227 481.679 66.7672C481.732 66.7118 481.793 66.6655 481.862 66.6286C481.922 66.5969 481.99 66.5731 482.064 66.5573C482.138 66.5388 482.22 66.5295 482.309 66.5295C482.465 66.5295 482.597 66.5625 482.706 66.6286C482.817 66.6946 482.908 66.7844 482.979 66.898C483.048 67.0142 483.098 67.1515 483.129 67.31C483.164 67.4658 483.181 67.6335 483.181 67.8131ZM485.19 67.825V67.9082C485.19 68.2199 485.228 68.5091 485.304 68.7758C485.381 69.0399 485.492 69.2684 485.637 69.4612C485.78 69.654 485.954 69.8059 486.16 69.9168C486.369 70.0251 486.604 70.0792 486.865 70.0792C487.106 70.0792 487.317 70.033 487.499 69.9406C487.682 69.8481 487.84 69.7187 487.975 69.5523L488.03 70H489.025V63.9148H487.919V66.0977C487.787 65.9498 487.635 65.8362 487.464 65.757C487.295 65.6751 487.098 65.6342 486.873 65.6342C486.607 65.6342 486.369 65.687 486.16 65.7926C485.954 65.8983 485.779 66.0475 485.633 66.2403C485.488 66.4331 485.377 66.6642 485.301 66.9336C485.227 67.203 485.19 67.5001 485.19 67.825ZM486.291 67.9082V67.825C486.291 67.6454 486.307 67.4777 486.338 67.3219C486.37 67.1634 486.42 67.0247 486.489 66.9059C486.558 66.7897 486.646 66.6986 486.754 66.6325C486.865 66.5639 486.999 66.5295 487.155 66.5295C487.342 66.5295 487.498 66.5705 487.622 66.6523C487.746 66.7316 487.845 66.8438 487.919 66.9891V68.7243C487.845 68.8669 487.745 68.9792 487.618 69.0611C487.494 69.1429 487.337 69.1839 487.147 69.1839C486.991 69.1839 486.859 69.1509 486.751 69.0848C486.642 69.0188 486.554 68.9277 486.485 68.8115C486.416 68.6979 486.366 68.5645 486.335 68.4113C486.305 68.2555 486.291 68.0878 486.291 67.9082ZM492.856 70H493.973V69.9327C493.917 69.8244 493.875 69.6949 493.846 69.5444C493.817 69.3939 493.802 69.2037 493.802 68.9739V67.1357C493.802 66.8874 493.756 66.6695 493.664 66.482C493.571 66.2918 493.443 66.1347 493.279 66.0105C493.116 65.8864 492.922 65.7926 492.697 65.7292C492.475 65.6659 492.235 65.6342 491.976 65.6342C491.688 65.6342 491.432 65.6711 491.207 65.7451C490.986 65.8164 490.798 65.9141 490.645 66.0383C490.489 66.1624 490.37 66.3063 490.288 66.4701C490.209 66.6338 490.169 66.8068 490.169 66.9891H491.271C491.271 66.9125 491.281 66.8425 491.303 66.7791C491.326 66.7157 491.362 66.6616 491.41 66.6167C491.462 66.5665 491.531 66.5282 491.616 66.5018C491.7 66.4727 491.8 66.4582 491.917 66.4582C492.049 66.4582 492.164 66.4754 492.261 66.5097C492.362 66.5414 492.445 66.5876 492.511 66.6484C492.574 66.7065 492.622 66.7765 492.653 66.8583C492.685 66.9376 492.701 67.0274 492.701 67.1277V67.3813H492.087C491.77 67.3813 491.489 67.4103 491.243 67.4685C491 67.5239 490.795 67.6058 490.629 67.7141C490.444 67.8329 490.306 67.9848 490.213 68.1697C490.121 68.3519 490.074 68.5619 490.074 68.7996C490.074 68.9845 490.111 69.1562 490.185 69.3146C490.259 69.4704 490.362 69.6051 490.494 69.7187C490.626 69.8323 490.784 69.9208 490.966 69.9842C491.151 70.0475 491.353 70.0792 491.572 70.0792C491.707 70.0792 491.832 70.066 491.948 70.0396C492.065 70.0158 492.171 69.9815 492.269 69.9366C492.364 69.8944 492.451 69.8442 492.531 69.7861C492.61 69.728 492.68 69.6659 492.741 69.5999C492.754 69.6765 492.77 69.7491 492.788 69.8178C492.807 69.8864 492.829 69.9472 492.856 70ZM491.806 69.2275C491.703 69.2275 491.612 69.2156 491.532 69.1918C491.456 69.1654 491.391 69.1311 491.338 69.0888C491.285 69.0439 491.244 68.9898 491.215 68.9264C491.189 68.8603 491.176 68.789 491.176 68.7124C491.176 68.6147 491.194 68.5249 491.231 68.443C491.268 68.3585 491.325 68.2859 491.402 68.2251C491.478 68.167 491.577 68.1221 491.699 68.0904C491.82 68.0561 491.967 68.0389 492.138 68.0389H492.701V68.7758C492.669 68.8313 492.626 68.8868 492.57 68.9422C492.515 68.995 492.449 69.0426 492.372 69.0848C492.296 69.1271 492.21 69.1614 492.115 69.1878C492.02 69.2143 491.917 69.2275 491.806 69.2275ZM497.071 64.6635H495.969V65.7134H494.991V66.5256H495.969V68.4747C495.969 68.7573 496.006 69.0003 496.08 69.2037C496.154 69.4044 496.26 69.5695 496.397 69.6989C496.532 69.831 496.694 69.9287 496.885 69.9921C497.077 70.0528 497.291 70.0832 497.526 70.0832C497.648 70.0832 497.771 70.0766 497.895 70.0634C498.022 70.0528 498.143 70.037 498.259 70.0158C498.376 69.9947 498.485 69.9683 498.588 69.9366C498.691 69.9023 498.781 69.8627 498.858 69.8178L498.751 69.0611C498.7 69.0743 498.64 69.0875 498.568 69.1007C498.5 69.1139 498.426 69.1258 498.347 69.1363C498.265 69.1495 498.179 69.1601 498.089 69.168C498.002 69.176 497.916 69.1799 497.831 69.1799C497.715 69.1799 497.61 69.1667 497.515 69.1403C497.422 69.1139 497.343 69.069 497.277 69.0056C497.211 68.9449 497.159 68.863 497.122 68.76C497.088 68.6543 497.071 68.5236 497.071 68.3678V66.5256H498.671V65.7134H497.071V64.6635ZM502.003 70.0792C502.418 70.0792 502.777 69.9987 503.081 69.8376C503.385 69.6765 503.606 69.4969 503.746 69.2988L503.196 68.7045C503.069 68.8683 502.904 68.9911 502.7 69.073C502.497 69.1548 502.287 69.1958 502.071 69.1958C501.917 69.1958 501.776 69.172 501.647 69.1245C501.517 69.0769 501.402 69.0096 501.302 68.9224C501.204 68.8379 501.126 68.7441 501.068 68.6411C501.01 68.5355 500.963 68.3968 500.926 68.2251V68.2133H503.834V67.7458C503.834 67.4315 503.79 67.1449 503.703 66.8861C503.616 66.6246 503.489 66.4014 503.322 66.2165C503.153 66.0317 502.947 65.889 502.704 65.7887C502.464 65.6857 502.189 65.6342 501.88 65.6342C501.582 65.6342 501.306 65.6883 501.052 65.7966C500.799 65.9049 500.58 66.0568 500.395 66.2522C500.21 66.4476 500.066 66.6814 499.963 66.9534C499.86 67.2228 499.808 67.5213 499.808 67.8488V68.0072C499.808 68.2951 499.86 68.5659 499.963 68.8194C500.069 69.0703 500.218 69.2882 500.411 69.4731C500.603 69.6606 500.834 69.8085 501.104 69.9168C501.373 70.0251 501.673 70.0792 502.003 70.0792ZM501.872 66.5256C502.012 66.5256 502.135 66.548 502.241 66.5929C502.349 66.6352 502.44 66.6933 502.514 66.7672C502.588 66.8438 502.646 66.9336 502.689 67.0366C502.731 67.1396 502.752 67.2492 502.752 67.3654V67.4526H500.945C500.972 67.3126 501.011 67.1858 501.064 67.0723C501.117 66.9587 501.183 66.861 501.262 66.7791C501.339 66.6972 501.429 66.6352 501.532 66.5929C501.635 66.548 501.748 66.5256 501.872 66.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M533.579 64.6635H532.478V65.7134H531.499V66.5256H532.478V68.4747C532.478 68.7573 532.515 69.0003 532.589 69.2037C532.663 69.4044 532.768 69.5695 532.906 69.6989C533.04 69.831 533.203 69.9287 533.393 69.9921C533.586 70.0528 533.8 70.0832 534.035 70.0832C534.156 70.0832 534.279 70.0766 534.403 70.0634C534.53 70.0528 534.651 70.037 534.768 70.0158C534.884 69.9947 534.993 69.9683 535.096 69.9366C535.199 69.9023 535.289 69.8627 535.366 69.8178L535.259 69.0611C535.209 69.0743 535.148 69.0875 535.077 69.1007C535.008 69.1139 534.934 69.1258 534.855 69.1363C534.773 69.1495 534.687 69.1601 534.597 69.168C534.51 69.176 534.424 69.1799 534.34 69.1799C534.224 69.1799 534.118 69.1667 534.023 69.1403C533.93 69.1139 533.851 69.069 533.785 69.0056C533.719 68.9449 533.668 68.863 533.631 68.76C533.596 68.6543 533.579 68.5236 533.579 68.3678V66.5256H535.18V65.7134H533.579V64.6635ZM536.281 67.8171V67.9003C536.281 68.2146 536.326 68.5051 536.416 68.7719C536.505 69.036 536.638 69.2658 536.812 69.4612C536.984 69.6566 537.195 69.8098 537.446 69.9208C537.699 70.0291 537.987 70.0832 538.309 70.0832C538.629 70.0832 538.914 70.0291 539.165 69.9208C539.416 69.8098 539.627 69.6566 539.799 69.4612C539.971 69.2658 540.101 69.036 540.191 68.7719C540.281 68.5051 540.326 68.2146 540.326 67.9003V67.8171C540.326 67.5054 540.281 67.2175 540.191 66.9534C540.101 66.6867 539.971 66.4556 539.799 66.2601C539.625 66.0647 539.412 65.9115 539.161 65.8006C538.91 65.6896 538.624 65.6342 538.301 65.6342C537.979 65.6342 537.693 65.6896 537.442 65.8006C537.194 65.9115 536.984 66.0647 536.812 66.2601C536.638 66.4556 536.505 66.6867 536.416 66.9534C536.326 67.2175 536.281 67.5054 536.281 67.8171ZM537.382 67.9003V67.8171C537.382 67.6428 537.4 67.4777 537.434 67.3219C537.468 67.166 537.522 67.0287 537.596 66.9098C537.67 66.791 537.765 66.6972 537.882 66.6286C537.998 66.5599 538.138 66.5256 538.301 66.5256C538.468 66.5256 538.609 66.5599 538.725 66.6286C538.842 66.6972 538.937 66.791 539.011 66.9098C539.082 67.0287 539.135 67.166 539.169 67.3219C539.203 67.4777 539.221 67.6428 539.221 67.8171V67.9003C539.221 68.0799 539.203 68.2489 539.169 68.4074C539.135 68.5632 539.082 68.6992 539.011 68.8154C538.937 68.9343 538.842 69.0281 538.725 69.0967C538.609 69.1654 538.471 69.1997 538.309 69.1997C538.143 69.1997 538 69.1654 537.882 69.0967C537.765 69.0281 537.67 68.9343 537.596 68.8154C537.522 68.6992 537.468 68.5632 537.434 68.4074C537.4 68.2489 537.382 68.0799 537.382 67.9003Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"92.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M516.463 92.3371V93.1928H517.062C517.212 93.1928 517.347 93.21 517.466 93.2443C517.587 93.2786 517.692 93.3315 517.779 93.4028C517.863 93.4741 517.928 93.5652 517.973 93.6761C518.018 93.7871 518.04 93.9204 518.04 94.0763C518.04 94.2004 518.02 94.3127 517.981 94.413C517.944 94.5134 517.888 94.5979 517.814 94.6666C517.738 94.7432 517.643 94.8013 517.529 94.8409C517.415 94.8805 517.287 94.9003 517.145 94.9003C517.018 94.9003 516.902 94.8818 516.796 94.8448C516.691 94.8052 516.599 94.7511 516.523 94.6824C516.444 94.6164 516.383 94.5372 516.341 94.4447C516.298 94.3496 516.277 94.2466 516.277 94.1357H515.176C515.176 94.4157 515.23 94.6586 515.338 94.8647C515.449 95.0707 515.596 95.241 515.778 95.3757C515.96 95.5131 516.168 95.6161 516.4 95.6847C516.635 95.7508 516.875 95.7838 517.121 95.7838C517.406 95.7838 517.672 95.7468 517.917 95.6729C518.166 95.5963 518.38 95.4853 518.559 95.3401C518.739 95.1974 518.88 95.0205 518.983 94.8092C519.086 94.5979 519.138 94.3576 519.138 94.0882C519.138 93.935 519.119 93.7897 519.082 93.6524C519.045 93.515 518.988 93.3882 518.912 93.272C518.835 93.1585 518.737 93.0568 518.619 92.967C518.502 92.8772 518.364 92.8032 518.203 92.7451C518.34 92.6791 518.461 92.6012 518.567 92.5114C518.673 92.4189 518.761 92.3186 518.832 92.2103C518.904 92.102 518.958 91.9884 518.995 91.8696C519.032 91.7481 519.05 91.6253 519.05 91.5011C519.05 91.2317 519.003 90.9954 518.908 90.792C518.815 90.586 518.685 90.413 518.516 90.273C518.347 90.1357 518.143 90.0327 517.905 89.964C517.668 89.8927 517.406 89.857 517.121 89.857C516.857 89.857 516.61 89.8953 516.38 89.9719C516.153 90.0485 515.955 90.1555 515.786 90.2928C515.617 90.4328 515.483 90.5992 515.386 90.792C515.291 90.9848 515.243 91.1987 515.243 91.4338H516.345C516.345 91.3281 516.366 91.2331 516.408 91.1485C516.45 91.064 516.508 90.9914 516.582 90.9307C516.654 90.8725 516.737 90.8276 516.832 90.796C516.93 90.7643 517.034 90.7484 517.145 90.7484C517.279 90.7484 517.397 90.7669 517.497 90.8039C517.6 90.8409 517.685 90.8924 517.751 90.9584C517.817 91.0271 517.866 91.1089 517.898 91.204C517.932 91.2965 517.949 91.3995 517.949 91.513C517.949 91.6292 517.932 91.7375 517.898 91.8379C517.866 91.9356 517.817 92.0188 517.751 92.0875C517.68 92.1667 517.586 92.2288 517.47 92.2737C517.356 92.3159 517.22 92.3371 517.062 92.3371H516.463Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.476 93.8448L478.562 96H479.754V95.9485L478.514 93.5675C478.673 93.4962 478.815 93.4117 478.942 93.3139C479.071 93.2162 479.182 93.1013 479.275 92.9693C479.365 92.8399 479.433 92.6933 479.481 92.5295C479.531 92.3631 479.556 92.1769 479.556 91.9709C479.556 91.6857 479.506 91.4348 479.405 91.2182C479.308 91.0016 479.168 90.8207 478.986 90.6754C478.801 90.5302 478.579 90.4206 478.32 90.3466C478.061 90.27 477.772 90.2317 477.452 90.2317H475.519V96H476.632V93.8448H477.476ZM476.632 92.9415V91.135H477.452C477.606 91.135 477.742 91.1535 477.86 91.1905C477.979 91.2274 478.08 91.2803 478.161 91.3489C478.254 91.4255 478.323 91.5232 478.367 91.6421C478.415 91.7583 478.439 91.893 478.439 92.0462C478.439 92.173 478.42 92.2879 478.383 92.3909C478.349 92.4939 478.297 92.5823 478.229 92.6563C478.147 92.7487 478.04 92.82 477.908 92.8702C477.778 92.9178 477.628 92.9415 477.456 92.9415H476.632ZM482.511 96.0792C482.926 96.0792 483.285 95.9987 483.589 95.8376C483.893 95.6765 484.115 95.4969 484.255 95.2988L483.704 94.7045C483.577 94.8683 483.412 94.9911 483.209 95.073C483.005 95.1548 482.795 95.1958 482.579 95.1958C482.426 95.1958 482.284 95.172 482.155 95.1245C482.025 95.0769 481.911 95.0096 481.81 94.9224C481.713 94.8379 481.635 94.7441 481.576 94.6411C481.518 94.5355 481.471 94.3968 481.434 94.2251V94.2133H484.342V93.7458C484.342 93.4315 484.298 93.1449 484.211 92.8861C484.124 92.6246 483.997 92.4014 483.831 92.2165C483.662 92.0317 483.456 91.889 483.213 91.7887C482.972 91.6857 482.698 91.6342 482.389 91.6342C482.09 91.6342 481.814 91.6883 481.561 91.7966C481.307 91.9049 481.088 92.0568 480.903 92.2522C480.718 92.4476 480.574 92.6814 480.471 92.9534C480.368 93.2228 480.317 93.5213 480.317 93.8488V94.0072C480.317 94.2951 480.368 94.5659 480.471 94.8194C480.577 95.0703 480.726 95.2882 480.919 95.4731C481.112 95.6606 481.343 95.8085 481.612 95.9168C481.882 96.0251 482.181 96.0792 482.511 96.0792ZM482.381 92.5256C482.521 92.5256 482.644 92.548 482.749 92.5929C482.857 92.6352 482.949 92.6933 483.023 92.7672C483.096 92.8438 483.155 92.9336 483.197 93.0366C483.239 93.1396 483.26 93.2492 483.26 93.3654V93.4526H481.454C481.48 93.3126 481.52 93.1858 481.573 93.0723C481.625 92.9587 481.691 92.861 481.771 92.7791C481.847 92.6972 481.937 92.6352 482.04 92.5929C482.143 92.548 482.257 92.5256 482.381 92.5256ZM485.99 91.7134H485.043V96H486.045V92.791C486.059 92.7567 486.073 92.725 486.089 92.6959C486.105 92.6669 486.123 92.6418 486.144 92.6206C486.173 92.5916 486.206 92.5691 486.243 92.5533C486.28 92.5374 486.323 92.5295 486.37 92.5295C486.412 92.5295 486.452 92.5361 486.489 92.5493C486.526 92.5599 486.559 92.5797 486.588 92.6088C486.614 92.6378 486.636 92.6787 486.651 92.7316C486.667 92.7844 486.675 92.8517 486.675 92.9336V96H487.646V92.8385C487.646 92.8068 487.646 92.7817 487.646 92.7633C487.646 92.7448 487.646 92.7329 487.646 92.7276C487.659 92.6986 487.675 92.6735 487.693 92.6523C487.712 92.6286 487.733 92.6074 487.757 92.5889C487.786 92.5705 487.816 92.5559 487.848 92.5454C487.882 92.5348 487.921 92.5295 487.963 92.5295C488.002 92.5295 488.041 92.5361 488.078 92.5493C488.117 92.5599 488.152 92.5797 488.181 92.6088C488.21 92.6404 488.232 92.6827 488.248 92.7355C488.267 92.7884 488.276 92.8557 488.276 92.9376V96H489.278V92.9415C489.278 92.7038 489.254 92.5031 489.207 92.3394C489.162 92.173 489.098 92.0369 489.017 91.9313C488.932 91.8283 488.833 91.753 488.719 91.7055C488.609 91.6579 488.488 91.6342 488.359 91.6342C488.256 91.6342 488.161 91.6474 488.074 91.6738C487.987 91.7002 487.909 91.7372 487.84 91.7847C487.785 91.8217 487.733 91.8666 487.685 91.9194C487.641 91.9696 487.6 92.0264 487.563 92.0898C487.539 92.0237 487.51 91.9656 487.476 91.9154C487.444 91.8626 487.406 91.8177 487.361 91.7808C487.303 91.7306 487.234 91.6936 487.155 91.6698C487.075 91.6461 486.986 91.6342 486.885 91.6342C486.679 91.6342 486.504 91.6883 486.358 91.7966C486.216 91.9022 486.103 92.0475 486.022 92.2324L485.99 91.7134ZM490.027 93.8171V93.9003C490.027 94.2146 490.072 94.5051 490.162 94.7719C490.251 95.036 490.383 95.2658 490.558 95.4612C490.729 95.6566 490.941 95.8098 491.192 95.9208C491.445 96.0291 491.733 96.0832 492.055 96.0832C492.375 96.0832 492.66 96.0291 492.911 95.9208C493.162 95.8098 493.373 95.6566 493.545 95.4612C493.717 95.2658 493.847 95.036 493.937 94.7719C494.027 94.5051 494.072 94.2146 494.072 93.9003V93.8171C494.072 93.5054 494.027 93.2175 493.937 92.9534C493.847 92.6867 493.717 92.4556 493.545 92.2601C493.371 92.0647 493.158 91.9115 492.907 91.8006C492.656 91.6896 492.37 91.6342 492.047 91.6342C491.725 91.6342 491.439 91.6896 491.188 91.8006C490.939 91.9115 490.729 92.0647 490.558 92.2601C490.383 92.4556 490.251 92.6867 490.162 92.9534C490.072 93.2175 490.027 93.5054 490.027 93.8171ZM491.128 93.9003V93.8171C491.128 93.6428 491.145 93.4777 491.18 93.3219C491.214 93.166 491.268 93.0287 491.342 92.9098C491.416 92.791 491.511 92.6972 491.627 92.6286C491.744 92.5599 491.884 92.5256 492.047 92.5256C492.214 92.5256 492.355 92.5599 492.471 92.6286C492.587 92.6972 492.683 92.791 492.757 92.9098C492.828 93.0287 492.881 93.166 492.915 93.3219C492.949 93.4777 492.966 93.6428 492.966 93.8171V93.9003C492.966 94.0799 492.949 94.2489 492.915 94.4074C492.881 94.5632 492.828 94.6992 492.757 94.8154C492.683 94.9343 492.587 95.0281 492.471 95.0967C492.355 95.1654 492.216 95.1997 492.055 95.1997C491.889 95.1997 491.746 95.1654 491.627 95.0967C491.511 95.0281 491.416 94.9343 491.342 94.8154C491.268 94.6992 491.214 94.5632 491.18 94.4074C491.145 94.2489 491.128 94.0799 491.128 93.9003ZM496.413 96H497.447L499.075 91.7134H497.927L496.988 94.7362L496.928 95.0373L496.869 94.7362L495.926 91.7134H494.777L496.413 96ZM502.003 96.0792C502.418 96.0792 502.777 95.9987 503.081 95.8376C503.385 95.6765 503.606 95.4969 503.746 95.2988L503.196 94.7045C503.069 94.8683 502.904 94.9911 502.7 95.073C502.497 95.1548 502.287 95.1958 502.071 95.1958C501.917 95.1958 501.776 95.172 501.647 95.1245C501.517 95.0769 501.402 95.0096 501.302 94.9224C501.204 94.8379 501.126 94.7441 501.068 94.6411C501.01 94.5355 500.963 94.3968 500.926 94.2251V94.2133H503.834V93.7458C503.834 93.4315 503.79 93.1449 503.703 92.8861C503.616 92.6246 503.489 92.4014 503.322 92.2165C503.153 92.0317 502.947 91.889 502.704 91.7887C502.464 91.6857 502.189 91.6342 501.88 91.6342C501.582 91.6342 501.306 91.6883 501.052 91.7966C500.799 91.9049 500.58 92.0568 500.395 92.2522C500.21 92.4476 500.066 92.6814 499.963 92.9534C499.86 93.2228 499.808 93.5213 499.808 93.8488V94.0072C499.808 94.2951 499.86 94.5659 499.963 94.8194C500.069 95.0703 500.218 95.2882 500.411 95.4731C500.603 95.6606 500.834 95.8085 501.104 95.9168C501.373 96.0251 501.673 96.0792 502.003 96.0792ZM501.872 92.5256C502.012 92.5256 502.135 92.548 502.241 92.5929C502.349 92.6352 502.44 92.6933 502.514 92.7672C502.588 92.8438 502.646 92.9336 502.689 93.0366C502.731 93.1396 502.752 93.2492 502.752 93.3654V93.4526H500.945C500.972 93.3126 501.011 93.1858 501.064 93.0723C501.117 92.9587 501.183 92.861 501.262 92.7791C501.339 92.6972 501.429 92.6352 501.532 92.5929C501.635 92.548 501.748 92.5256 501.872 92.5256Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"117.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M518.571 118.561V114.936H517.454L515.029 118.763L515.073 119.453H517.47V120.705H518.571V119.453H519.241V118.561H518.571ZM516.111 118.561L517.363 116.608L517.47 116.418V118.561H516.111Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.476 118.845L478.562 121H479.754V120.948L478.514 118.567C478.673 118.496 478.815 118.412 478.942 118.314C479.071 118.216 479.182 118.101 479.275 117.969C479.365 117.84 479.433 117.693 479.481 117.53C479.531 117.363 479.556 117.177 479.556 116.971C479.556 116.686 479.506 116.435 479.405 116.218C479.308 116.002 479.168 115.821 478.986 115.675C478.801 115.53 478.579 115.421 478.32 115.347C478.061 115.27 477.772 115.232 477.452 115.232H475.519V121H476.632V118.845H477.476ZM476.632 117.942V116.135H477.452C477.606 116.135 477.742 116.153 477.86 116.19C477.979 116.227 478.08 116.28 478.161 116.349C478.254 116.426 478.323 116.523 478.367 116.642C478.415 116.758 478.439 116.893 478.439 117.046C478.439 117.173 478.42 117.288 478.383 117.391C478.349 117.494 478.297 117.582 478.229 117.656C478.147 117.749 478.04 117.82 477.908 117.87C477.778 117.918 477.628 117.942 477.456 117.942H476.632ZM482.511 121.079C482.926 121.079 483.285 120.999 483.589 120.838C483.893 120.676 484.115 120.497 484.255 120.299L483.704 119.705C483.577 119.868 483.412 119.991 483.209 120.073C483.005 120.155 482.795 120.196 482.579 120.196C482.426 120.196 482.284 120.172 482.155 120.124C482.025 120.077 481.911 120.01 481.81 119.922C481.713 119.838 481.635 119.744 481.576 119.641C481.518 119.535 481.471 119.397 481.434 119.225V119.213H484.342V118.746C484.342 118.431 484.298 118.145 484.211 117.886C484.124 117.625 483.997 117.401 483.831 117.217C483.662 117.032 483.456 116.889 483.213 116.789C482.972 116.686 482.698 116.634 482.389 116.634C482.09 116.634 481.814 116.688 481.561 116.797C481.307 116.905 481.088 117.057 480.903 117.252C480.718 117.448 480.574 117.681 480.471 117.953C480.368 118.223 480.317 118.521 480.317 118.849V119.007C480.317 119.295 480.368 119.566 480.471 119.819C480.577 120.07 480.726 120.288 480.919 120.473C481.112 120.661 481.343 120.809 481.612 120.917C481.882 121.025 482.181 121.079 482.511 121.079ZM482.381 117.526C482.521 117.526 482.644 117.548 482.749 117.593C482.857 117.635 482.949 117.693 483.023 117.767C483.096 117.844 483.155 117.934 483.197 118.037C483.239 118.14 483.26 118.249 483.26 118.365V118.453H481.454C481.48 118.313 481.52 118.186 481.573 118.072C481.625 117.959 481.691 117.861 481.771 117.779C481.847 117.697 481.937 117.635 482.04 117.593C482.143 117.548 482.257 117.526 482.381 117.526ZM485.99 116.713H485.043V121H486.045V117.791C486.059 117.757 486.073 117.725 486.089 117.696C486.105 117.667 486.123 117.642 486.144 117.621C486.173 117.592 486.206 117.569 486.243 117.553C486.28 117.537 486.323 117.53 486.37 117.53C486.412 117.53 486.452 117.536 486.489 117.549C486.526 117.56 486.559 117.58 486.588 117.609C486.614 117.638 486.636 117.679 486.651 117.732C486.667 117.784 486.675 117.852 486.675 117.934V121H487.646V117.839C487.646 117.807 487.646 117.782 487.646 117.763C487.646 117.745 487.646 117.733 487.646 117.728C487.659 117.699 487.675 117.673 487.693 117.652C487.712 117.629 487.733 117.607 487.757 117.589C487.786 117.57 487.816 117.556 487.848 117.545C487.882 117.535 487.921 117.53 487.963 117.53C488.002 117.53 488.041 117.536 488.078 117.549C488.117 117.56 488.152 117.58 488.181 117.609C488.21 117.64 488.232 117.683 488.248 117.736C488.267 117.788 488.276 117.856 488.276 117.938V121H489.278V117.942C489.278 117.704 489.254 117.503 489.207 117.339C489.162 117.173 489.098 117.037 489.017 116.931C488.932 116.828 488.833 116.753 488.719 116.705C488.609 116.658 488.488 116.634 488.359 116.634C488.256 116.634 488.161 116.647 488.074 116.674C487.987 116.7 487.909 116.737 487.84 116.785C487.785 116.822 487.733 116.867 487.685 116.919C487.641 116.97 487.6 117.026 487.563 117.09C487.539 117.024 487.51 116.966 487.476 116.915C487.444 116.863 487.406 116.818 487.361 116.781C487.303 116.731 487.234 116.694 487.155 116.67C487.075 116.646 486.986 116.634 486.885 116.634C486.679 116.634 486.504 116.688 486.358 116.797C486.216 116.902 486.103 117.048 486.022 117.232L485.99 116.713ZM490.027 118.817V118.9C490.027 119.215 490.072 119.505 490.162 119.772C490.251 120.036 490.383 120.266 490.558 120.461C490.729 120.657 490.941 120.81 491.192 120.921C491.445 121.029 491.733 121.083 492.055 121.083C492.375 121.083 492.66 121.029 492.911 120.921C493.162 120.81 493.373 120.657 493.545 120.461C493.717 120.266 493.847 120.036 493.937 119.772C494.027 119.505 494.072 119.215 494.072 118.9V118.817C494.072 118.505 494.027 118.218 493.937 117.953C493.847 117.687 493.717 117.456 493.545 117.26C493.371 117.065 493.158 116.911 492.907 116.801C492.656 116.69 492.37 116.634 492.047 116.634C491.725 116.634 491.439 116.69 491.188 116.801C490.939 116.911 490.729 117.065 490.558 117.26C490.383 117.456 490.251 117.687 490.162 117.953C490.072 118.218 490.027 118.505 490.027 118.817ZM491.128 118.9V118.817C491.128 118.643 491.145 118.478 491.18 118.322C491.214 118.166 491.268 118.029 491.342 117.91C491.416 117.791 491.511 117.697 491.627 117.629C491.744 117.56 491.884 117.526 492.047 117.526C492.214 117.526 492.355 117.56 492.471 117.629C492.587 117.697 492.683 117.791 492.757 117.91C492.828 118.029 492.881 118.166 492.915 118.322C492.949 118.478 492.966 118.643 492.966 118.817V118.9C492.966 119.08 492.949 119.249 492.915 119.407C492.881 119.563 492.828 119.699 492.757 119.815C492.683 119.934 492.587 120.028 492.471 120.097C492.355 120.165 492.216 120.2 492.055 120.2C491.889 120.2 491.746 120.165 491.627 120.097C491.511 120.028 491.416 119.934 491.342 119.815C491.268 119.699 491.214 119.563 491.18 119.407C491.145 119.249 491.128 119.08 491.128 118.9ZM496.413 121H497.447L499.075 116.713H497.927L496.988 119.736L496.928 120.037L496.869 119.736L495.926 116.713H494.777L496.413 121ZM502.003 121.079C502.418 121.079 502.777 120.999 503.081 120.838C503.385 120.676 503.606 120.497 503.746 120.299L503.196 119.705C503.069 119.868 502.904 119.991 502.7 120.073C502.497 120.155 502.287 120.196 502.071 120.196C501.917 120.196 501.776 120.172 501.647 120.124C501.517 120.077 501.402 120.01 501.302 119.922C501.204 119.838 501.126 119.744 501.068 119.641C501.01 119.535 500.963 119.397 500.926 119.225V119.213H503.834V118.746C503.834 118.431 503.79 118.145 503.703 117.886C503.616 117.625 503.489 117.401 503.322 117.217C503.153 117.032 502.947 116.889 502.704 116.789C502.464 116.686 502.189 116.634 501.88 116.634C501.582 116.634 501.306 116.688 501.052 116.797C500.799 116.905 500.58 117.057 500.395 117.252C500.21 117.448 500.066 117.681 499.963 117.953C499.86 118.223 499.808 118.521 499.808 118.849V119.007C499.808 119.295 499.86 119.566 499.963 119.819C500.069 120.07 500.218 120.288 500.411 120.473C500.603 120.661 500.834 120.809 501.104 120.917C501.373 121.025 501.673 121.079 502.003 121.079ZM501.872 117.526C502.012 117.526 502.135 117.548 502.241 117.593C502.349 117.635 502.44 117.693 502.514 117.767C502.588 117.844 502.646 117.934 502.689 118.037C502.731 118.14 502.752 118.249 502.752 118.365V118.453H500.945C500.972 118.313 501.011 118.186 501.064 118.072C501.117 117.959 501.183 117.861 501.262 117.779C501.339 117.697 501.429 117.635 501.532 117.593C501.635 117.548 501.748 117.526 501.872 117.526Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M161.365 248.241C161.585 247.89 162.048 247.785 162.399 248.005L168.115 251.595C168.466 251.815 168.572 252.278 168.351 252.629C168.131 252.98 167.668 253.085 167.317 252.865L162.236 249.674L159.045 254.755C158.825 255.106 158.362 255.212 158.011 254.991C157.66 254.771 157.555 254.308 157.775 253.957L161.365 248.241ZM248.282 278.503L248.469 279.23L248.282 278.503ZM375.313 239.318C375.689 239.491 375.854 239.936 375.682 240.313L372.869 246.448C372.696 246.825 372.251 246.99 371.874 246.818C371.498 246.645 371.332 246.2 371.505 245.823L374.006 240.369L368.552 237.869C368.175 237.696 368.01 237.251 368.182 236.874C368.355 236.498 368.8 236.332 369.177 236.505L375.313 239.318ZM162 248.64C162.731 248.473 162.731 248.473 162.731 248.472C162.731 248.473 162.731 248.473 162.731 248.473C162.731 248.474 162.732 248.475 162.732 248.477C162.733 248.482 162.735 248.489 162.737 248.5C162.742 248.52 162.75 248.552 162.761 248.595C162.783 248.682 162.818 248.812 162.866 248.983C162.963 249.326 163.116 249.831 163.338 250.47C163.782 251.748 164.5 253.56 165.595 255.679C167.784 259.917 171.474 265.372 177.472 270.233C189.433 279.929 210.743 287.393 248.095 277.777L248.469 279.23C210.777 288.933 188.945 281.464 176.527 271.399C170.335 266.38 166.525 260.747 164.262 256.367C163.131 254.177 162.385 252.298 161.921 250.962C161.689 250.293 161.527 249.761 161.423 249.392C161.371 249.208 161.333 249.064 161.308 248.966C161.295 248.916 161.286 248.878 161.279 248.852C161.276 248.838 161.274 248.828 161.272 248.82C161.271 248.817 161.27 248.814 161.27 248.812C161.27 248.81 161.269 248.809 161.269 248.809C161.269 248.808 161.269 248.807 162 248.64ZM248.095 277.777C285.6 268.123 317.265 258.501 339.552 251.294C350.696 247.69 359.494 244.69 365.506 242.591C368.512 241.542 370.821 240.718 372.379 240.157C373.157 239.876 373.748 239.661 374.144 239.516C374.341 239.443 374.491 239.389 374.59 239.352C374.64 239.334 374.677 239.32 374.702 239.311C374.714 239.306 374.724 239.303 374.73 239.3C374.733 239.299 374.735 239.298 374.737 239.298C374.738 239.297 374.738 239.297 374.738 239.297C374.739 239.297 374.739 239.297 375 240C375.261 240.703 375.261 240.703 375.26 240.703C375.26 240.704 375.259 240.704 375.258 240.704C375.257 240.705 375.254 240.706 375.251 240.707C375.245 240.709 375.235 240.713 375.222 240.717C375.197 240.727 375.159 240.741 375.109 240.759C375.008 240.796 374.858 240.852 374.659 240.924C374.261 241.07 373.668 241.286 372.887 241.568C371.326 242.131 369.012 242.957 366.001 244.008C359.979 246.11 351.169 249.114 340.014 252.721C317.703 259.936 286.009 269.566 248.469 279.23L248.095 277.777Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M478.633 136.098C478.411 135.748 477.947 135.645 477.598 135.867L471.901 139.488C471.551 139.71 471.448 140.174 471.67 140.523C471.893 140.873 472.356 140.976 472.706 140.754L477.769 137.535L480.988 142.599C481.21 142.949 481.674 143.052 482.023 142.83C482.373 142.607 482.476 142.144 482.254 141.794L478.633 136.098ZM399 276C399.578 276.478 399.578 276.478 399.579 276.477C399.579 276.477 399.579 276.476 399.58 276.475C399.581 276.474 399.583 276.472 399.586 276.469C399.591 276.463 399.598 276.454 399.608 276.442C399.628 276.418 399.657 276.382 399.696 276.335C399.773 276.242 399.888 276.102 400.038 275.919C400.339 275.552 400.782 275.011 401.352 274.312C402.491 272.915 404.135 270.887 406.157 268.365C410.199 263.319 415.752 256.293 421.791 248.37C433.861 232.536 447.908 213.075 455.717 198.679L454.399 197.964C446.65 212.247 432.668 231.625 420.598 247.461C414.568 255.372 409.023 262.388 404.986 267.427C402.967 269.946 401.326 271.97 400.189 273.365C399.621 274.062 399.179 274.602 398.879 274.967C398.729 275.149 398.615 275.288 398.538 275.382C398.499 275.428 398.47 275.464 398.451 275.487C398.441 275.499 398.434 275.508 398.429 275.513C398.427 275.516 398.425 275.519 398.424 275.52C398.423 275.521 398.423 275.521 398.422 275.522C398.422 275.522 398.422 275.522 399 276ZM455.717 198.679C463.527 184.283 469.279 168.779 473.078 156.884C474.978 150.935 476.39 145.883 477.328 142.317C477.798 140.535 478.148 139.123 478.381 138.156C478.498 137.673 478.586 137.3 478.644 137.049C478.673 136.923 478.695 136.827 478.71 136.762C478.717 136.73 478.723 136.705 478.726 136.689C478.728 136.68 478.73 136.674 478.731 136.67C478.731 136.668 478.731 136.666 478.732 136.665C478.732 136.664 478.732 136.664 478.732 136.664C478.732 136.663 478.732 136.663 478 136.5C477.268 136.337 477.268 136.337 477.268 136.337C477.268 136.337 477.268 136.338 477.268 136.338C477.267 136.339 477.267 136.34 477.267 136.342C477.266 136.346 477.265 136.352 477.263 136.36C477.259 136.375 477.254 136.399 477.247 136.43C477.233 136.492 477.211 136.586 477.183 136.71C477.125 136.957 477.039 137.325 476.923 137.804C476.692 138.762 476.344 140.164 475.878 141.936C474.945 145.481 473.54 150.507 471.649 156.428C467.866 168.275 462.147 183.681 454.399 197.964L455.717 198.679Z\"\n      fill=\"url(#paint0_linear_1_66)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M302.49 275.177V272.625H301.722V279H302.49V275.738C302.545 275.649 302.608 275.569 302.677 275.497C302.749 275.422 302.826 275.357 302.909 275.302C303.014 275.23 303.129 275.175 303.254 275.136C303.378 275.097 303.51 275.078 303.648 275.078C303.817 275.075 303.966 275.099 304.096 275.148C304.226 275.195 304.334 275.267 304.42 275.364C304.5 275.453 304.561 275.565 304.603 275.7C304.644 275.833 304.665 275.988 304.665 276.165V279H305.433V276.174C305.433 275.872 305.395 275.612 305.321 275.393C305.249 275.172 305.145 274.989 305.009 274.845C304.874 274.702 304.709 274.596 304.515 274.53C304.324 274.461 304.111 274.426 303.876 274.426C303.696 274.429 303.526 274.455 303.366 274.505C303.208 274.555 303.063 274.628 302.93 274.725C302.847 274.783 302.768 274.851 302.693 274.928C302.619 275.003 302.551 275.086 302.49 275.177ZM309.778 279H310.579V278.934C310.529 278.809 310.491 278.664 310.463 278.498C310.435 278.329 310.421 278.17 310.421 278.021V275.933C310.421 275.681 310.376 275.461 310.284 275.273C310.193 275.085 310.069 274.927 309.911 274.8C309.75 274.675 309.561 274.583 309.342 274.522C309.124 274.458 308.887 274.426 308.633 274.426C308.353 274.426 308.103 274.465 307.881 274.542C307.663 274.62 307.477 274.721 307.325 274.845C307.17 274.973 307.051 275.115 306.968 275.273C306.888 275.431 306.847 275.591 306.844 275.754H307.616C307.616 275.66 307.638 275.57 307.682 275.485C307.729 275.396 307.794 275.32 307.877 275.256C307.96 275.193 308.061 275.142 308.18 275.103C308.302 275.064 308.439 275.045 308.591 275.045C308.754 275.045 308.901 275.065 309.031 275.107C309.164 275.148 309.276 275.207 309.367 275.281C309.458 275.359 309.529 275.451 309.579 275.559C309.629 275.667 309.654 275.789 309.654 275.925V276.277H308.815C308.503 276.277 308.219 276.308 307.964 276.369C307.713 276.43 307.497 276.521 307.317 276.643C307.137 276.767 306.997 276.922 306.898 277.107C306.801 277.293 306.752 277.509 306.752 277.755C306.752 277.943 306.788 278.119 306.86 278.282C306.935 278.442 307.04 278.581 307.176 278.697C307.309 278.816 307.47 278.91 307.661 278.979C307.855 279.048 308.071 279.083 308.309 279.083C308.455 279.083 308.594 279.068 308.724 279.037C308.854 279.007 308.977 278.965 309.093 278.913C309.207 278.86 309.31 278.799 309.405 278.73C309.501 278.661 309.589 278.588 309.666 278.51C309.674 278.604 309.687 278.696 309.703 278.784C309.723 278.87 309.748 278.942 309.778 279ZM308.421 278.415C308.271 278.415 308.14 278.395 308.027 278.357C307.913 278.318 307.819 278.264 307.744 278.195C307.67 278.128 307.613 278.048 307.574 277.954C307.538 277.86 307.52 277.758 307.52 277.647C307.52 277.531 307.541 277.427 307.583 277.336C307.627 277.244 307.69 277.166 307.773 277.099C307.89 277.005 308.046 276.936 308.242 276.892C308.442 276.845 308.674 276.821 308.94 276.821H309.654V277.73C309.609 277.819 309.548 277.904 309.471 277.987C309.393 278.068 309.302 278.139 309.197 278.203C309.089 278.267 308.97 278.318 308.84 278.357C308.71 278.395 308.57 278.415 308.421 278.415ZM314.916 277.809C314.916 277.881 314.902 277.949 314.875 278.012C314.847 278.076 314.807 278.134 314.754 278.187C314.669 278.272 314.55 278.34 314.397 278.39C314.245 278.437 314.067 278.46 313.862 278.46C313.732 278.46 313.601 278.447 313.468 278.419C313.335 278.391 313.215 278.344 313.107 278.278C312.996 278.211 312.903 278.124 312.829 278.016C312.757 277.908 312.715 277.776 312.704 277.618H311.936C311.936 277.809 311.979 277.993 312.065 278.17C312.153 278.347 312.281 278.502 312.447 278.635C312.61 278.77 312.811 278.88 313.049 278.963C313.287 279.043 313.558 279.083 313.862 279.083C314.128 279.083 314.373 279.051 314.597 278.988C314.821 278.924 315.013 278.834 315.174 278.718C315.334 278.602 315.459 278.462 315.547 278.299C315.638 278.135 315.684 277.954 315.684 277.755C315.684 277.569 315.644 277.406 315.564 277.265C315.486 277.124 315.373 277 315.223 276.892C315.074 276.786 314.89 276.697 314.671 276.622C314.453 276.544 314.205 276.477 313.928 276.418C313.718 276.377 313.544 276.334 313.406 276.29C313.27 276.246 313.162 276.196 313.082 276.14C312.999 276.085 312.941 276.023 312.907 275.954C312.874 275.884 312.858 275.806 312.858 275.717C312.858 275.631 312.878 275.548 312.92 275.468C312.961 275.388 313.024 275.317 313.107 275.256C313.187 275.195 313.288 275.147 313.41 275.111C313.534 275.075 313.678 275.057 313.841 275.057C313.999 275.057 314.14 275.079 314.265 275.124C314.392 275.168 314.5 275.226 314.588 275.298C314.677 275.37 314.746 275.453 314.796 275.547C314.846 275.638 314.871 275.732 314.871 275.829H315.638C315.638 275.633 315.596 275.45 315.51 275.281C315.427 275.11 315.308 274.96 315.153 274.833C314.998 274.706 314.81 274.606 314.588 274.534C314.367 274.462 314.118 274.426 313.841 274.426C313.584 274.426 313.347 274.461 313.132 274.53C312.919 274.599 312.735 274.693 312.58 274.812C312.425 274.931 312.304 275.071 312.219 275.231C312.133 275.389 312.09 275.559 312.09 275.742C312.09 275.927 312.131 276.091 312.214 276.232C312.297 276.37 312.415 276.49 312.567 276.593C312.717 276.698 312.896 276.788 313.107 276.863C313.32 276.937 313.555 277.001 313.812 277.053C314.023 277.095 314.198 277.142 314.339 277.195C314.48 277.244 314.594 277.3 314.68 277.361C314.765 277.421 314.826 277.489 314.862 277.564C314.898 277.636 314.916 277.718 314.916 277.809ZM324.055 278.46C323.815 278.46 323.613 278.413 323.449 278.319C323.289 278.222 323.16 278.097 323.063 277.942C322.964 277.789 322.892 277.618 322.848 277.427C322.806 277.233 322.785 277.038 322.785 276.842V276.667C322.785 276.474 322.806 276.281 322.848 276.091C322.892 275.9 322.964 275.727 323.063 275.572C323.163 275.42 323.293 275.296 323.454 275.202C323.617 275.106 323.817 275.057 324.055 275.057C324.21 275.057 324.354 275.083 324.487 275.136C324.623 275.189 324.739 275.26 324.836 275.352C324.933 275.443 325.009 275.55 325.064 275.671C325.122 275.79 325.153 275.918 325.155 276.053H325.882C325.882 275.826 325.836 275.613 325.745 275.414C325.653 275.215 325.527 275.042 325.367 274.895C325.204 274.751 325.01 274.638 324.786 274.555C324.565 274.469 324.321 274.426 324.055 274.426C323.715 274.426 323.418 274.487 323.163 274.609C322.909 274.731 322.697 274.894 322.528 275.099C322.357 275.306 322.228 275.545 322.142 275.817C322.056 276.088 322.013 276.371 322.013 276.667V276.842C322.013 277.141 322.056 277.426 322.142 277.697C322.228 277.965 322.357 278.202 322.528 278.406C322.697 278.614 322.909 278.779 323.163 278.9C323.418 279.022 323.715 279.083 324.055 279.083C324.293 279.083 324.522 279.043 324.74 278.963C324.959 278.88 325.153 278.769 325.321 278.631C325.49 278.495 325.624 278.337 325.724 278.157C325.826 277.975 325.879 277.784 325.882 277.585H325.155C325.153 277.709 325.119 277.825 325.056 277.933C324.995 278.038 324.913 278.13 324.811 278.207C324.708 278.288 324.591 278.35 324.458 278.394C324.328 278.438 324.194 278.46 324.055 278.46ZM328.015 275.177V272.625H327.247V279H328.015V275.738C328.07 275.649 328.132 275.569 328.202 275.497C328.274 275.422 328.351 275.357 328.434 275.302C328.539 275.23 328.654 275.175 328.779 275.136C328.903 275.097 329.035 275.078 329.173 275.078C329.342 275.075 329.491 275.099 329.621 275.148C329.751 275.195 329.859 275.267 329.945 275.364C330.025 275.453 330.086 275.565 330.127 275.7C330.169 275.833 330.19 275.988 330.19 276.165V279H330.958V276.174C330.958 275.872 330.92 275.612 330.845 275.393C330.774 275.172 330.67 274.989 330.534 274.845C330.399 274.702 330.234 274.596 330.04 274.53C329.849 274.461 329.636 274.426 329.401 274.426C329.221 274.429 329.051 274.455 328.891 274.505C328.733 274.555 328.588 274.628 328.455 274.725C328.372 274.783 328.293 274.851 328.218 274.928C328.144 275.003 328.076 275.086 328.015 275.177ZM335.303 279H336.104V278.934C336.054 278.809 336.015 278.664 335.988 278.498C335.96 278.329 335.946 278.17 335.946 278.021V275.933C335.946 275.681 335.901 275.461 335.809 275.273C335.718 275.085 335.594 274.927 335.436 274.8C335.275 274.675 335.086 274.583 334.867 274.522C334.649 274.458 334.412 274.426 334.157 274.426C333.878 274.426 333.628 274.465 333.406 274.542C333.188 274.62 333.002 274.721 332.85 274.845C332.695 274.973 332.576 275.115 332.493 275.273C332.413 275.431 332.371 275.591 332.369 275.754H333.141C333.141 275.66 333.163 275.57 333.207 275.485C333.254 275.396 333.319 275.32 333.402 275.256C333.485 275.193 333.586 275.142 333.705 275.103C333.827 275.064 333.964 275.045 334.116 275.045C334.279 275.045 334.426 275.065 334.556 275.107C334.689 275.148 334.801 275.207 334.892 275.281C334.983 275.359 335.054 275.451 335.104 275.559C335.154 275.667 335.178 275.789 335.178 275.925V276.277H334.34C334.027 276.277 333.744 276.308 333.489 276.369C333.237 276.43 333.022 276.521 332.842 276.643C332.662 276.767 332.522 276.922 332.423 277.107C332.326 277.293 332.277 277.509 332.277 277.755C332.277 277.943 332.313 278.119 332.385 278.282C332.46 278.442 332.565 278.581 332.701 278.697C332.833 278.816 332.995 278.91 333.186 278.979C333.38 279.048 333.596 279.083 333.834 279.083C333.98 279.083 334.119 279.068 334.249 279.037C334.379 279.007 334.502 278.965 334.618 278.913C334.732 278.86 334.835 278.799 334.929 278.73C335.026 278.661 335.113 278.588 335.191 278.51C335.199 278.604 335.212 278.696 335.228 278.784C335.248 278.87 335.273 278.942 335.303 279ZM333.946 278.415C333.796 278.415 333.665 278.395 333.552 278.357C333.438 278.318 333.344 278.264 333.269 278.195C333.195 278.128 333.138 278.048 333.099 277.954C333.063 277.86 333.045 277.758 333.045 277.647C333.045 277.531 333.066 277.427 333.107 277.336C333.152 277.244 333.215 277.166 333.298 277.099C333.415 277.005 333.571 276.936 333.767 276.892C333.967 276.845 334.199 276.821 334.465 276.821H335.178V277.73C335.134 277.819 335.073 277.904 334.996 277.987C334.918 278.068 334.827 278.139 334.722 278.203C334.614 278.267 334.495 278.318 334.365 278.357C334.235 278.395 334.095 278.415 333.946 278.415ZM337.457 279H338.225V275.779C338.277 275.682 338.338 275.594 338.407 275.514C338.479 275.433 338.557 275.363 338.64 275.302C338.742 275.233 338.854 275.179 338.976 275.14C339.098 275.099 339.229 275.078 339.37 275.078C339.534 275.078 339.677 275.097 339.802 275.136C339.929 275.175 340.037 275.237 340.126 275.323C340.212 275.409 340.277 275.521 340.321 275.659C340.365 275.797 340.387 275.966 340.387 276.165V279H341.155V276.149C341.155 275.85 341.118 275.593 341.043 275.377C340.971 275.158 340.867 274.978 340.732 274.837C340.596 274.696 340.431 274.592 340.238 274.526C340.047 274.459 339.834 274.426 339.599 274.426C339.424 274.429 339.258 274.455 339.101 274.505C338.946 274.552 338.802 274.62 338.669 274.708C338.58 274.767 338.496 274.836 338.416 274.916C338.338 274.993 338.266 275.079 338.2 275.173L338.146 274.509H337.457V279ZM342.421 276.717V276.804C342.421 277.125 342.462 277.426 342.545 277.705C342.628 277.982 342.747 278.222 342.902 278.427C343.055 278.632 343.241 278.792 343.463 278.909C343.684 279.025 343.932 279.083 344.206 279.083C344.369 279.083 344.521 279.065 344.662 279.029C344.803 278.996 344.932 278.947 345.048 278.884C345.123 278.842 345.192 278.794 345.256 278.739C345.322 278.683 345.384 278.622 345.442 278.556V278.942C345.442 279.136 345.415 279.307 345.359 279.457C345.304 279.606 345.225 279.73 345.123 279.83C345.018 279.932 344.892 280.01 344.745 280.062C344.598 280.115 344.434 280.141 344.251 280.141C344.149 280.141 344.046 280.13 343.944 280.108C343.842 280.089 343.739 280.056 343.637 280.009C343.535 279.962 343.434 279.898 343.334 279.818C343.234 279.74 343.138 279.645 343.043 279.531L342.645 279.992C342.747 280.139 342.869 280.262 343.01 280.361C343.154 280.461 343.304 280.54 343.458 280.598C343.611 280.659 343.761 280.702 343.911 280.727C344.06 280.754 344.193 280.768 344.309 280.768C344.592 280.768 344.849 280.727 345.081 280.644C345.314 280.561 345.514 280.439 345.683 280.278C345.849 280.118 345.978 279.923 346.069 279.693C346.163 279.463 346.21 279.201 346.21 278.905V274.509H345.513L345.476 274.999C345.423 274.933 345.366 274.872 345.305 274.816C345.247 274.761 345.185 274.713 345.119 274.671C344.997 274.591 344.86 274.53 344.708 274.489C344.558 274.447 344.394 274.426 344.214 274.426C343.934 274.426 343.684 274.483 343.463 274.596C343.241 274.71 343.053 274.868 342.898 275.07C342.743 275.272 342.624 275.514 342.541 275.796C342.461 276.075 342.421 276.382 342.421 276.717ZM343.189 276.804V276.717C343.189 276.499 343.211 276.291 343.255 276.095C343.302 275.896 343.375 275.72 343.475 275.568C343.572 275.418 343.696 275.299 343.849 275.211C344.004 275.122 344.189 275.078 344.405 275.078C344.532 275.078 344.648 275.094 344.753 275.128C344.859 275.158 344.954 275.201 345.04 275.256C345.126 275.314 345.202 275.382 345.268 275.46C345.334 275.537 345.393 275.623 345.442 275.717V277.776C345.393 277.872 345.334 277.961 345.268 278.041C345.202 278.122 345.127 278.191 345.044 278.249C344.958 278.307 344.861 278.353 344.753 278.386C344.648 278.416 344.529 278.431 344.396 278.431C344.183 278.431 344.001 278.389 343.849 278.303C343.696 278.214 343.572 278.095 343.475 277.946C343.375 277.796 343.302 277.623 343.255 277.427C343.211 277.231 343.189 277.023 343.189 276.804ZM349.651 279.083C350.088 279.083 350.455 278.996 350.751 278.822C351.05 278.644 351.274 278.442 351.423 278.216L350.954 277.85C350.813 278.033 350.636 278.18 350.423 278.29C350.21 278.401 349.966 278.456 349.692 278.456C349.485 278.456 349.295 278.418 349.124 278.34C348.952 278.263 348.806 278.156 348.684 278.021C348.565 277.893 348.471 277.747 348.402 277.581C348.335 277.415 348.292 277.222 348.273 277.004V276.975H351.481V276.63C351.481 276.317 351.441 276.027 351.361 275.759C351.283 275.49 351.164 275.256 351.004 275.057C350.843 274.861 350.641 274.707 350.398 274.596C350.157 274.483 349.875 274.426 349.551 274.426C349.294 274.426 349.042 274.479 348.796 274.584C348.552 274.689 348.335 274.84 348.144 275.036C347.951 275.236 347.796 275.479 347.679 275.767C347.563 276.052 347.505 276.376 347.505 276.738V276.912C347.505 277.225 347.558 277.514 347.663 277.78C347.768 278.045 347.915 278.275 348.103 278.469C348.291 278.662 348.516 278.813 348.779 278.921C349.045 279.029 349.335 279.083 349.651 279.083ZM349.551 275.057C349.748 275.057 349.917 275.093 350.058 275.165C350.201 275.237 350.32 275.331 350.415 275.447C350.509 275.563 350.582 275.702 350.635 275.862C350.687 276.02 350.713 276.168 350.713 276.306V276.344H348.298C348.328 276.136 348.381 275.954 348.456 275.796C348.533 275.635 348.627 275.5 348.738 275.389C348.848 275.281 348.973 275.2 349.111 275.144C349.25 275.086 349.396 275.057 349.551 275.057ZM352.627 276.717V276.804C352.627 277.125 352.67 277.426 352.755 277.705C352.841 277.982 352.962 278.222 353.116 278.427C353.271 278.632 353.458 278.792 353.677 278.909C353.898 279.025 354.144 279.083 354.416 279.083C354.692 279.083 354.934 279.036 355.142 278.942C355.349 278.848 355.528 278.709 355.677 278.527L355.71 279H356.416V272.625H355.648V274.953C355.502 274.782 355.327 274.652 355.125 274.563C354.926 274.472 354.692 274.426 354.424 274.426C354.15 274.426 353.902 274.483 353.681 274.596C353.46 274.71 353.271 274.868 353.116 275.07C352.959 275.272 352.837 275.514 352.751 275.796C352.668 276.075 352.627 276.382 352.627 276.717ZM353.395 276.804V276.717C353.395 276.499 353.418 276.291 353.465 276.095C353.512 275.896 353.585 275.72 353.685 275.568C353.782 275.418 353.906 275.299 354.059 275.211C354.214 275.122 354.399 275.078 354.615 275.078C354.867 275.078 355.077 275.137 355.246 275.256C355.414 275.373 355.549 275.522 355.648 275.705V277.788C355.549 277.985 355.414 278.141 355.246 278.257C355.077 278.373 354.864 278.431 354.606 278.431C354.393 278.431 354.211 278.389 354.059 278.303C353.906 278.214 353.782 278.095 353.685 277.946C353.585 277.796 353.512 277.623 353.465 277.427C353.418 277.231 353.395 277.023 353.395 276.804ZM359.276 277.298H360.043C360.043 277.19 360.046 277.095 360.052 277.012C360.057 276.926 360.071 276.846 360.093 276.771C360.115 276.697 360.149 276.623 360.193 276.551C360.24 276.479 360.305 276.403 360.388 276.323C360.518 276.207 360.649 276.081 360.782 275.945C360.918 275.81 361.04 275.663 361.147 275.505C361.255 275.35 361.344 275.186 361.413 275.011C361.482 274.834 361.517 274.646 361.517 274.447C361.517 274.198 361.477 273.977 361.396 273.783C361.316 273.589 361.2 273.425 361.048 273.289C360.896 273.153 360.709 273.051 360.488 272.982C360.269 272.91 360.02 272.874 359.74 272.874C359.489 272.874 359.253 272.909 359.035 272.978C358.819 273.044 358.632 273.141 358.475 273.268C358.314 273.398 358.187 273.556 358.093 273.741C357.999 273.927 357.95 274.136 357.948 274.368H358.715C358.715 274.224 358.744 274.101 358.802 273.999C358.861 273.894 358.938 273.806 359.035 273.737C359.129 273.671 359.237 273.622 359.359 273.592C359.483 273.559 359.61 273.542 359.74 273.542C359.909 273.542 360.059 273.564 360.189 273.609C360.319 273.653 360.427 273.718 360.512 273.804C360.59 273.881 360.648 273.977 360.687 274.09C360.728 274.201 360.749 274.328 360.749 274.472C360.749 274.61 360.723 274.742 360.67 274.866C360.618 274.991 360.551 275.108 360.471 275.219C360.388 275.332 360.297 275.44 360.197 275.543C360.1 275.645 360.005 275.745 359.911 275.842C359.772 275.969 359.662 276.08 359.579 276.174C359.496 276.265 359.432 276.36 359.388 276.46C359.343 276.562 359.314 276.679 359.301 276.809C359.287 276.936 359.278 277.099 359.276 277.298ZM359.188 278.597C359.188 278.725 359.227 278.831 359.305 278.917C359.385 279.003 359.504 279.046 359.662 279.046C359.819 279.046 359.938 279.003 360.019 278.917C360.102 278.831 360.143 278.725 360.143 278.597C360.143 278.465 360.102 278.354 360.019 278.265C359.938 278.177 359.819 278.133 359.662 278.133C359.504 278.133 359.385 278.177 359.305 278.265C359.227 278.354 359.188 278.465 359.188 278.597Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M368.797 276.543V276.634C368.797 277.027 368.826 277.395 368.884 277.738C368.945 278.081 369.026 278.398 369.129 278.689C369.231 278.982 369.35 279.249 369.486 279.49C369.624 279.73 369.769 279.942 369.921 280.125C370.074 280.31 370.23 280.468 370.39 280.598C370.554 280.728 370.711 280.828 370.864 280.897L371.088 280.274C370.98 280.191 370.87 280.087 370.76 279.963C370.649 279.838 370.544 279.692 370.444 279.523C370.35 279.368 370.262 279.187 370.179 278.979C370.098 278.772 370.028 278.546 369.967 278.303C369.923 278.128 369.881 277.895 369.843 277.601C369.807 277.308 369.789 276.988 369.789 276.643V276.535C369.789 276.183 369.808 275.858 369.847 275.559C369.885 275.26 369.937 274.988 370 274.742C370.072 274.487 370.155 274.252 370.249 274.036C370.346 273.82 370.45 273.634 370.561 273.476C370.646 273.354 370.733 273.246 370.822 273.152C370.911 273.058 370.999 272.978 371.088 272.911L370.864 272.281C370.711 272.35 370.554 272.449 370.39 272.579C370.23 272.707 370.074 272.863 369.921 273.048C369.769 273.234 369.624 273.447 369.486 273.688C369.35 273.928 369.231 274.194 369.129 274.484C369.026 274.778 368.945 275.097 368.884 275.443C368.826 275.786 368.797 276.153 368.797 276.543ZM375.076 275.742L373.885 272.957H372.607L374.479 276.858L374.483 279H375.645L375.649 276.908L377.55 272.957H376.267L375.076 275.742ZM380.339 279.083C380.773 279.083 381.15 278.999 381.468 278.83C381.786 278.661 382.018 278.473 382.165 278.265L381.588 277.643C381.455 277.814 381.282 277.943 381.069 278.029C380.856 278.115 380.636 278.157 380.409 278.157C380.249 278.157 380.101 278.133 379.965 278.083C379.83 278.033 379.709 277.962 379.604 277.871C379.502 277.783 379.42 277.684 379.359 277.576C379.299 277.466 379.249 277.32 379.21 277.141V277.128H382.256V276.638C382.256 276.309 382.211 276.009 382.119 275.738C382.028 275.464 381.895 275.23 381.721 275.036C381.544 274.843 381.328 274.693 381.073 274.588C380.822 274.48 380.534 274.426 380.21 274.426C379.898 274.426 379.608 274.483 379.343 274.596C379.077 274.71 378.847 274.869 378.654 275.074C378.46 275.278 378.309 275.523 378.201 275.808C378.094 276.091 378.04 276.403 378.04 276.746V276.912C378.04 277.214 378.094 277.498 378.201 277.763C378.312 278.026 378.468 278.254 378.67 278.448C378.872 278.644 379.115 278.799 379.397 278.913C379.679 279.026 379.993 279.083 380.339 279.083ZM380.202 275.36C380.349 275.36 380.477 275.384 380.588 275.431C380.701 275.475 380.797 275.536 380.874 275.613C380.952 275.694 381.013 275.788 381.057 275.896C381.101 276.003 381.123 276.118 381.123 276.24V276.331H379.231C379.258 276.185 379.3 276.052 379.355 275.933C379.411 275.814 379.48 275.712 379.563 275.626C379.643 275.54 379.737 275.475 379.845 275.431C379.953 275.384 380.072 275.36 380.202 275.36ZM386.162 277.767C386.162 277.837 386.144 277.9 386.108 277.958C386.075 278.016 386.024 278.068 385.954 278.112C385.882 278.156 385.79 278.192 385.676 278.22C385.566 278.245 385.436 278.257 385.286 278.257C385.162 278.257 385.04 278.245 384.921 278.22C384.805 278.195 384.701 278.155 384.61 278.099C384.518 278.047 384.444 277.978 384.385 277.892C384.327 277.803 384.294 277.698 384.286 277.576H383.186C383.186 277.759 383.23 277.942 383.319 278.124C383.41 278.304 383.543 278.465 383.717 278.606C383.892 278.75 384.107 278.866 384.365 278.954C384.625 279.043 384.924 279.087 385.261 279.087C385.568 279.087 385.846 279.054 386.095 278.988C386.344 278.918 386.558 278.823 386.735 278.701C386.909 278.579 387.043 278.436 387.137 278.27C387.234 278.101 387.282 277.917 387.282 277.718C387.282 277.502 387.234 277.316 387.137 277.161C387.043 277.004 386.912 276.869 386.743 276.759C386.574 276.651 386.374 276.562 386.141 276.493C385.909 276.424 385.657 276.367 385.386 276.323C385.198 276.295 385.043 276.264 384.921 276.228C384.799 276.189 384.704 276.146 384.635 276.099C384.563 276.055 384.513 276.005 384.485 275.949C384.457 275.891 384.444 275.829 384.444 275.763C384.444 275.696 384.459 275.634 384.489 275.576C384.522 275.515 384.569 275.462 384.63 275.418C384.697 275.368 384.783 275.33 384.888 275.302C384.993 275.274 385.116 275.26 385.257 275.26C385.423 275.26 385.564 275.281 385.68 275.323C385.799 275.364 385.893 275.42 385.963 275.489C386.012 275.541 386.05 275.601 386.075 275.667C386.1 275.731 386.112 275.8 386.112 275.875H387.266C387.266 275.667 387.22 275.475 387.129 275.298C387.038 275.121 386.906 274.967 386.735 274.837C386.56 274.71 386.349 274.61 386.1 274.538C385.851 274.464 385.57 274.426 385.257 274.426C384.958 274.426 384.69 274.464 384.452 274.538C384.214 274.613 384.012 274.714 383.846 274.841C383.68 274.969 383.553 275.117 383.464 275.285C383.376 275.454 383.331 275.631 383.331 275.817C383.331 276.008 383.374 276.176 383.46 276.323C383.549 276.47 383.67 276.598 383.825 276.709C383.98 276.822 384.166 276.919 384.381 277C384.6 277.077 384.841 277.142 385.104 277.195C385.311 277.233 385.483 277.272 385.618 277.311C385.754 277.35 385.863 277.391 385.946 277.435C386.026 277.482 386.082 277.532 386.112 277.585C386.145 277.637 386.162 277.698 386.162 277.767ZM391.441 276.634V276.543C391.441 276.164 391.411 275.806 391.35 275.468C391.289 275.128 391.206 274.811 391.101 274.518C390.996 274.224 390.873 273.957 390.731 273.717C390.593 273.473 390.445 273.256 390.287 273.065C390.13 272.877 389.968 272.716 389.802 272.583C389.636 272.451 389.474 272.35 389.316 272.281L389.096 272.899C389.179 272.963 389.262 273.04 389.345 273.131C389.431 273.22 389.514 273.321 389.594 273.434C389.713 273.606 389.825 273.809 389.93 274.044C390.038 274.28 390.13 274.545 390.204 274.841C390.262 275.079 390.308 275.339 390.341 275.622C390.377 275.904 390.395 276.208 390.395 276.535V276.643C390.395 276.977 390.377 277.289 390.341 277.576C390.308 277.864 390.262 278.127 390.204 278.365C390.135 278.625 390.055 278.86 389.964 279.071C389.875 279.281 389.777 279.469 389.669 279.635C389.578 279.776 389.484 279.899 389.387 280.004C389.29 280.112 389.193 280.202 389.096 280.274L389.316 280.897C389.474 280.828 389.636 280.727 389.802 280.594C389.968 280.461 390.13 280.299 390.287 280.108C390.445 279.92 390.593 279.704 390.731 279.461C390.873 279.22 390.996 278.953 391.101 278.66C391.206 278.366 391.289 278.051 391.35 277.713C391.411 277.373 391.441 277.013 391.441 276.634Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M398.5 276C398.5 279.088 396.57 281.951 393.309 284.066C390.054 286.178 385.526 287.5 380.5 287.5C375.474 287.5 370.946 286.178 367.691 284.066C364.43 281.951 362.5 279.088 362.5 276C362.5 272.912 364.43 270.049 367.691 267.934C370.946 265.822 375.474 264.5 380.5 264.5C385.526 264.5 390.054 265.822 393.309 267.934C396.57 270.049 398.5 272.912 398.5 276Z\"\n      stroke=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M391.203 239.391H393.81C393.81 239.113 393.817 238.877 393.831 238.682C393.845 238.48 393.88 238.296 393.935 238.129C393.984 237.963 394.067 237.799 394.186 237.639C394.304 237.479 394.467 237.295 394.676 237.087C395.016 236.788 395.353 236.482 395.687 236.169C396.028 235.849 396.33 235.512 396.594 235.158C396.858 234.81 397.074 234.435 397.241 234.031C397.408 233.621 397.491 233.169 397.491 232.676C397.491 232.008 397.38 231.421 397.157 230.914C396.935 230.406 396.615 229.979 396.198 229.631C395.774 229.29 395.256 229.033 394.644 228.859C394.033 228.686 393.341 228.599 392.569 228.599C391.881 228.599 391.242 228.686 390.651 228.859C390.06 229.026 389.545 229.283 389.107 229.631C388.669 229.979 388.322 230.417 388.065 230.945C387.807 231.466 387.675 232.081 387.668 232.791H390.578C390.585 232.471 390.644 232.196 390.755 231.967C390.873 231.737 391.026 231.55 391.214 231.404C391.394 231.258 391.603 231.153 391.839 231.091C392.076 231.021 392.319 230.987 392.569 230.987C392.889 230.987 393.171 231.021 393.414 231.091C393.664 231.16 393.876 231.265 394.05 231.404C394.217 231.557 394.345 231.751 394.436 231.988C394.526 232.217 394.571 232.492 394.571 232.811C394.571 233.076 394.512 233.34 394.394 233.604C394.276 233.868 394.123 234.125 393.935 234.375C393.741 234.633 393.525 234.883 393.289 235.126C393.052 235.363 392.816 235.589 392.58 235.804C392.253 236.061 391.999 236.305 391.819 236.534C391.638 236.756 391.502 237 391.412 237.264C391.321 237.535 391.262 237.837 391.235 238.171C391.214 238.505 391.203 238.911 391.203 239.391ZM390.776 242.551C390.776 242.995 390.925 243.371 391.224 243.677C391.523 243.976 391.937 244.125 392.465 244.125C392.979 244.125 393.39 243.976 393.695 243.677C394.008 243.371 394.165 242.995 394.165 242.551C394.165 242.092 394.008 241.709 393.695 241.404C393.39 241.091 392.979 240.934 392.465 240.934C391.937 240.934 391.523 241.091 391.224 241.404C390.925 241.709 390.776 242.092 390.776 242.551Z\"\n      fill=\"white\"\n      fill-opacity=\"0.5\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_1_66\"\n        x1=\"385.788\"\n        y1=\"109.405\"\n        x2=\"480.293\"\n        y2=\"103.63\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n\n  <motion.svg\n    {...motionAnimationProps}\n    className=\"w-full svg\"\n    width=\"626\"\n    height=\"302\"\n    viewBox=\"0 0 626 302\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <motion.rect\n      {...motionAnimationProps}\n      width=\"626\"\n      height=\"302\"\n      rx=\"19\"\n      fill=\"#111111\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"140\"\n      cy=\"88.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"181\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"99\"\n      cy=\"158.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"55\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"143\"\n      cy=\"230.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139 89L54 234.5\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M139.5 90L182 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M98 159L145 235\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 354 67)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 313 137)\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"22\"\n      cy=\"21.5\"\n      rx=\"22\"\n      ry=\"21.5\"\n      transform=\"matrix(-1 0 0 1 395 137)\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M332 90L290 160\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M330 88L377 164\"\n      stroke=\"white\"\n      strokeWidth=\"3\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M56.5449 41.4336H55.4609C55.4258 41.6914 55.3652 41.9316 55.2793 42.1543C55.1934 42.373 55.0781 42.5625 54.9336 42.7227C54.7891 42.8867 54.6113 43.0137 54.4004 43.1035C54.1934 43.1934 53.9473 43.2383 53.6621 43.2383C53.4004 43.2383 53.1719 43.1973 52.9766 43.1152C52.7812 43.0293 52.6113 42.9121 52.4668 42.7637C52.3223 42.6191 52.2031 42.4512 52.1094 42.2598C52.0156 42.0684 51.9395 41.8633 51.8809 41.6445C51.8223 41.4297 51.7793 41.2109 51.752 40.9883C51.7285 40.7617 51.7168 40.543 51.7168 40.332V39.1309C51.7168 38.9199 51.7285 38.7031 51.752 38.4805C51.7793 38.2539 51.8223 38.0332 51.8809 37.8184C51.9395 37.6035 52.0156 37.4004 52.1094 37.209C52.207 37.0176 52.3281 36.8496 52.4727 36.7051C52.6133 36.5605 52.7812 36.4473 52.9766 36.3652C53.1758 36.2793 53.4043 36.2363 53.6621 36.2363C53.9473 36.2363 54.1934 36.2852 54.4004 36.3828C54.6113 36.4766 54.7891 36.6074 54.9336 36.7754C55.0781 36.9434 55.1934 37.1387 55.2793 37.3613C55.3652 37.584 55.4258 37.8242 55.4609 38.082H56.5449C56.498 37.6758 56.4004 37.3047 56.252 36.9688C56.1074 36.6328 55.9141 36.3438 55.6719 36.1016C55.4297 35.8633 55.1406 35.6797 54.8047 35.5508C54.4688 35.418 54.0879 35.3516 53.6621 35.3516C53.3066 35.3516 52.9863 35.4023 52.7012 35.5039C52.416 35.6016 52.1621 35.7383 51.9395 35.9141C51.7129 36.0898 51.5176 36.2988 51.3535 36.541C51.1934 36.7793 51.0605 37.0391 50.9551 37.3203C50.8457 37.6016 50.7637 37.8965 50.709 38.2051C50.6582 38.5137 50.6309 38.8262 50.627 39.1426V40.332C50.6309 40.6484 50.6582 40.9609 50.709 41.2695C50.7637 41.5781 50.8457 41.873 50.9551 42.1543C51.0605 42.4355 51.1934 42.6953 51.3535 42.9336C51.5176 43.1719 51.7129 43.3789 51.9395 43.5547C52.1621 43.7305 52.416 43.8691 52.7012 43.9707C52.9902 44.0684 53.3105 44.1172 53.6621 44.1172C54.0723 44.1172 54.4434 44.0527 54.7754 43.9238C55.1113 43.791 55.4023 43.6055 55.6484 43.3672C55.8906 43.1328 56.0879 42.8516 56.2402 42.5234C56.3926 42.1914 56.4941 41.8281 56.5449 41.4336ZM62.4043 44H63.3887V37.6602H62.2988V42.207C62.2402 42.3438 62.166 42.4707 62.0762 42.5879C61.9902 42.7012 61.8887 42.7988 61.7715 42.8809C61.6309 42.9824 61.4648 43.0625 61.2734 43.1211C61.082 43.1758 60.8652 43.2031 60.623 43.2031C60.416 43.2031 60.2324 43.1758 60.0723 43.1211C59.916 43.0664 59.7832 42.9707 59.6738 42.834C59.5645 42.7012 59.4824 42.5215 59.4277 42.2949C59.373 42.0684 59.3457 41.7832 59.3457 41.4395V37.6602H58.2617V41.4277C58.2617 41.9004 58.3125 42.3066 58.4141 42.6465C58.5195 42.9824 58.668 43.2598 58.8594 43.4785C59.0508 43.6973 59.2812 43.8594 59.5508 43.9648C59.8203 44.0664 60.1211 44.1172 60.4531 44.1172C60.8672 44.1172 61.2324 44.0312 61.5488 43.8594C61.8652 43.6836 62.1289 43.4395 62.3398 43.127L62.4043 44ZM69.5879 37.543C69.127 37.543 68.7148 37.6445 68.3516 37.8477C67.9922 38.0469 67.6836 38.3203 67.4258 38.668L67.4199 38.5098L67.373 37.6602H66.3418V44H67.4316V39.9336C67.502 39.7383 67.5898 39.5625 67.6953 39.4062C67.8047 39.2461 67.9316 39.1113 68.0762 39.002C68.2363 38.877 68.4238 38.7832 68.6387 38.7207C68.8535 38.6543 69.0938 38.6211 69.3594 38.6211C69.5664 38.6211 69.7637 38.6328 69.9512 38.6562C70.1426 38.6758 70.3438 38.709 70.5547 38.7559L70.7012 37.6953C70.5918 37.6484 70.4277 37.6113 70.209 37.584C69.9941 37.5566 69.7871 37.543 69.5879 37.543ZM76.7949 37.543C76.334 37.543 75.9219 37.6445 75.5586 37.8477C75.1992 38.0469 74.8906 38.3203 74.6328 38.668L74.627 38.5098L74.5801 37.6602H73.5488V44H74.6387V39.9336C74.709 39.7383 74.7969 39.5625 74.9023 39.4062C75.0117 39.2461 75.1387 39.1113 75.2832 39.002C75.4434 38.877 75.6309 38.7832 75.8457 38.7207C76.0605 38.6543 76.3008 38.6211 76.5664 38.6211C76.7734 38.6211 76.9707 38.6328 77.1582 38.6562C77.3496 38.6758 77.5508 38.709 77.7617 38.7559L77.9082 37.6953C77.7988 37.6484 77.6348 37.6113 77.416 37.584C77.2012 37.5566 76.9941 37.543 76.7949 37.543ZM82.6484 44.1172C83.2656 44.1172 83.7832 43.9941 84.2012 43.748C84.623 43.498 84.9395 43.2129 85.1504 42.8926L84.4883 42.377C84.2891 42.6348 84.0391 42.8418 83.7383 42.998C83.4375 43.1543 83.0938 43.2324 82.707 43.2324C82.4141 43.2324 82.1465 43.1777 81.9043 43.0684C81.6621 42.959 81.4551 42.8086 81.2832 42.6172C81.1152 42.4375 80.9824 42.2305 80.8848 41.9961C80.791 41.7617 80.7305 41.4902 80.7031 41.1816V41.1406H85.2324V40.6543C85.2324 40.2129 85.1758 39.8027 85.0625 39.4238C84.9531 39.0449 84.7852 38.7148 84.5586 38.4336C84.332 38.1562 84.0469 37.9395 83.7031 37.7832C83.3633 37.623 82.9648 37.543 82.5078 37.543C82.1445 37.543 81.7891 37.6172 81.4414 37.7656C81.0977 37.9141 80.791 38.127 80.5215 38.4043C80.248 38.6855 80.0293 39.0293 79.8652 39.4355C79.7012 39.8379 79.6191 40.2949 79.6191 40.8066V41.0527C79.6191 41.4941 79.6934 41.9023 79.8418 42.2773C79.9902 42.6523 80.1973 42.9766 80.4629 43.25C80.7285 43.5234 81.0469 43.7363 81.418 43.8887C81.793 44.041 82.2031 44.1172 82.6484 44.1172ZM82.5078 38.4336C82.7852 38.4336 83.0234 38.4844 83.2227 38.5859C83.4258 38.6875 83.5938 38.8203 83.7266 38.9844C83.8594 39.1484 83.9629 39.3438 84.0371 39.5703C84.1113 39.793 84.1484 40.002 84.1484 40.1973V40.25H80.7383C80.7812 39.957 80.8555 39.6992 80.9609 39.4766C81.0703 39.25 81.2031 39.0586 81.3594 38.9023C81.5156 38.75 81.6914 38.6348 81.8867 38.5566C82.082 38.4746 82.2891 38.4336 82.5078 38.4336ZM87.0547 44H88.1387V39.4531C88.2129 39.3164 88.2988 39.1914 88.3965 39.0781C88.498 38.9648 88.6074 38.8652 88.7246 38.7793C88.8691 38.6816 89.0273 38.6055 89.1992 38.5508C89.3711 38.4922 89.5566 38.4629 89.7559 38.4629C89.9863 38.4629 90.1895 38.4902 90.3652 38.5449C90.5449 38.5996 90.6973 38.6875 90.8223 38.8086C90.9434 38.9297 91.0352 39.0879 91.0977 39.2832C91.1602 39.4785 91.1914 39.7168 91.1914 39.998V44H92.2754V39.9746C92.2754 39.5527 92.2227 39.1895 92.1172 38.8848C92.0156 38.5762 91.8691 38.3223 91.6777 38.123C91.4863 37.9238 91.2539 37.7773 90.9805 37.6836C90.7109 37.5898 90.4102 37.543 90.0781 37.543C89.832 37.5469 89.5977 37.584 89.375 37.6543C89.1562 37.7207 88.9531 37.8164 88.7656 37.9414C88.6406 38.0234 88.5215 38.1211 88.4082 38.2344C88.2988 38.3438 88.1973 38.4648 88.1035 38.5977L88.0273 37.6602H87.0547V44ZM96.8281 36.125H95.7383V37.6602H94.0742V38.498H95.7383V41.9434C95.7383 42.334 95.7891 42.668 95.8906 42.9453C95.9961 43.2188 96.1387 43.4414 96.3184 43.6133C96.498 43.7891 96.709 43.918 96.9512 44C97.1973 44.0781 97.4609 44.1172 97.7422 44.1172C97.9102 44.1172 98.0781 44.1094 98.2461 44.0938C98.418 44.0781 98.5801 44.0547 98.7324 44.0234C98.8848 43.9961 99.0254 43.9629 99.1543 43.9238C99.2832 43.8809 99.3926 43.832 99.4824 43.7773L99.3301 43.0098C99.2637 43.0254 99.1777 43.0449 99.0723 43.0684C98.9707 43.0879 98.8613 43.1074 98.7441 43.127C98.623 43.1465 98.5 43.1641 98.375 43.1797C98.25 43.1914 98.1289 43.1973 98.0117 43.1973C97.8516 43.1973 97.6992 43.1777 97.5547 43.1387C97.4141 43.0996 97.2891 43.0312 97.1797 42.9336C97.0703 42.8398 96.9844 42.7129 96.9219 42.5527C96.8594 42.3926 96.8281 42.1895 96.8281 41.9434V38.498H99.2422V37.6602H96.8281V36.125ZM110.838 44H111.664L114.248 37.6602H113.141L111.365 42.4414L111.26 42.834L111.16 42.4414L109.344 37.6602H108.23L110.838 44ZM116.053 37.6602V38.6035H118.209V43.0625H116.053V44H121.361V43.0625H119.293V37.6602H116.053ZM118.068 35.9961C118.068 36.1719 118.121 36.3184 118.227 36.4355C118.336 36.5527 118.5 36.6113 118.719 36.6113C118.934 36.6113 119.096 36.5527 119.205 36.4355C119.314 36.3184 119.369 36.1719 119.369 35.9961C119.369 35.8984 119.354 35.8086 119.322 35.7266C119.291 35.6445 119.244 35.5762 119.182 35.5215C119.131 35.4707 119.066 35.4316 118.988 35.4043C118.91 35.373 118.82 35.3574 118.719 35.3574C118.617 35.3574 118.525 35.373 118.443 35.4043C118.365 35.4316 118.301 35.4707 118.25 35.5215C118.188 35.5801 118.141 35.6504 118.109 35.7324C118.082 35.8145 118.068 35.9023 118.068 35.9961ZM127.244 37.543C126.783 37.543 126.371 37.6445 126.008 37.8477C125.648 38.0469 125.34 38.3203 125.082 38.668L125.076 38.5098L125.029 37.6602H123.998V44H125.088V39.9336C125.158 39.7383 125.246 39.5625 125.352 39.4062C125.461 39.2461 125.588 39.1113 125.732 39.002C125.893 38.877 126.08 38.7832 126.295 38.7207C126.51 38.6543 126.75 38.6211 127.016 38.6211C127.223 38.6211 127.42 38.6328 127.607 38.6562C127.799 38.6758 128 38.709 128.211 38.7559L128.357 37.6953C128.248 37.6484 128.084 37.6113 127.865 37.584C127.65 37.5566 127.443 37.543 127.244 37.543ZM132.863 36.125H131.773V37.6602H130.109V38.498H131.773V41.9434C131.773 42.334 131.824 42.668 131.926 42.9453C132.031 43.2188 132.174 43.4414 132.354 43.6133C132.533 43.7891 132.744 43.918 132.986 44C133.232 44.0781 133.496 44.1172 133.777 44.1172C133.945 44.1172 134.113 44.1094 134.281 44.0938C134.453 44.0781 134.615 44.0547 134.768 44.0234C134.92 43.9961 135.061 43.9629 135.189 43.9238C135.318 43.8809 135.428 43.832 135.518 43.7773L135.365 43.0098C135.299 43.0254 135.213 43.0449 135.107 43.0684C135.006 43.0879 134.896 43.1074 134.779 43.127C134.658 43.1465 134.535 43.1641 134.41 43.1797C134.285 43.1914 134.164 43.1973 134.047 43.1973C133.887 43.1973 133.734 43.1777 133.59 43.1387C133.449 43.0996 133.324 43.0312 133.215 42.9336C133.105 42.8398 133.02 42.7129 132.957 42.5527C132.895 42.3926 132.863 42.1895 132.863 41.9434V38.498H135.277V37.6602H132.863V36.125ZM141.682 44H142.666V37.6602H141.576V42.207C141.518 42.3438 141.443 42.4707 141.354 42.5879C141.268 42.7012 141.166 42.7988 141.049 42.8809C140.908 42.9824 140.742 43.0625 140.551 43.1211C140.359 43.1758 140.143 43.2031 139.9 43.2031C139.693 43.2031 139.51 43.1758 139.35 43.1211C139.193 43.0664 139.061 42.9707 138.951 42.834C138.842 42.7012 138.76 42.5215 138.705 42.2949C138.65 42.0684 138.623 41.7832 138.623 41.4395V37.6602H137.539V41.4277C137.539 41.9004 137.59 42.3066 137.691 42.6465C137.797 42.9824 137.945 43.2598 138.137 43.4785C138.328 43.6973 138.559 43.8594 138.828 43.9648C139.098 44.0664 139.398 44.1172 139.73 44.1172C140.145 44.1172 140.51 44.0312 140.826 43.8594C141.143 43.6836 141.406 43.4395 141.617 43.127L141.682 44ZM148.877 44H150.008V43.9062C149.938 43.7305 149.883 43.5254 149.844 43.291C149.805 43.0527 149.785 42.8281 149.785 42.6172V39.6699C149.785 39.3145 149.721 39.0039 149.592 38.7383C149.463 38.4727 149.287 38.25 149.064 38.0703C148.838 37.8945 148.57 37.7637 148.262 37.6777C147.953 37.5879 147.619 37.543 147.26 37.543C146.865 37.543 146.512 37.5977 146.199 37.707C145.891 37.8164 145.629 37.959 145.414 38.1348C145.195 38.3145 145.027 38.5156 144.91 38.7383C144.797 38.9609 144.738 39.1875 144.734 39.418H145.824C145.824 39.2852 145.855 39.1582 145.918 39.0371C145.984 38.9121 146.076 38.8047 146.193 38.7148C146.311 38.625 146.453 38.5527 146.621 38.498C146.793 38.4434 146.986 38.416 147.201 38.416C147.432 38.416 147.639 38.4453 147.822 38.5039C148.01 38.5625 148.168 38.6445 148.297 38.75C148.426 38.8594 148.525 38.9902 148.596 39.1426C148.666 39.2949 148.701 39.4668 148.701 39.6582V40.1562H147.518C147.076 40.1562 146.676 40.1992 146.316 40.2852C145.961 40.3711 145.656 40.5 145.402 40.6719C145.148 40.8477 144.951 41.0664 144.811 41.3281C144.674 41.5898 144.605 41.8945 144.605 42.2422C144.605 42.5078 144.656 42.7559 144.758 42.9863C144.863 43.2129 145.012 43.4082 145.203 43.5723C145.391 43.7402 145.619 43.873 145.889 43.9707C146.162 44.0684 146.467 44.1172 146.803 44.1172C147.01 44.1172 147.205 44.0957 147.389 44.0527C147.572 44.0098 147.746 43.9512 147.91 43.877C148.07 43.8027 148.217 43.7168 148.35 43.6191C148.486 43.5215 148.609 43.418 148.719 43.3086C148.73 43.4414 148.748 43.5703 148.771 43.6953C148.799 43.8164 148.834 43.918 148.877 44ZM146.961 43.1738C146.75 43.1738 146.564 43.1465 146.404 43.0918C146.244 43.0371 146.111 42.9609 146.006 42.8633C145.9 42.7695 145.82 42.6562 145.766 42.5234C145.715 42.3906 145.689 42.2461 145.689 42.0898C145.689 41.9258 145.719 41.7793 145.777 41.6504C145.84 41.5215 145.93 41.4102 146.047 41.3164C146.211 41.1836 146.432 41.0859 146.709 41.0234C146.99 40.957 147.318 40.9238 147.693 40.9238H148.701V42.207C148.639 42.332 148.553 42.4531 148.443 42.5703C148.334 42.6836 148.205 42.7852 148.057 42.875C147.904 42.9648 147.736 43.0371 147.553 43.0918C147.369 43.1465 147.172 43.1738 146.961 43.1738ZM152.088 35V35.9434H154.244V43.0625H152.088V44H157.396V43.0625H155.328V35H152.088ZM166.221 44H168.195C168.605 43.9961 168.986 43.9473 169.338 43.8535C169.693 43.7598 170.012 43.625 170.293 43.4492C170.559 43.2812 170.799 43.0781 171.014 42.8398C171.229 42.6016 171.406 42.3359 171.547 42.043C171.684 41.7617 171.787 41.4531 171.857 41.1172C171.932 40.7812 171.969 40.4258 171.969 40.0508V39.4238C171.965 39.0332 171.924 38.666 171.846 38.3223C171.771 37.9785 171.662 37.6621 171.518 37.373C171.357 37.0332 171.143 36.7344 170.873 36.4766C170.607 36.2148 170.301 36.0039 169.953 35.8438C169.703 35.7266 169.43 35.6367 169.133 35.5742C168.84 35.5078 168.527 35.4727 168.195 35.4688H166.221V44ZM167.322 36.3594H168.195C168.465 36.3633 168.713 36.3945 168.939 36.4531C169.166 36.5078 169.371 36.5859 169.555 36.6875C169.812 36.8242 170.029 37.0039 170.205 37.2266C170.385 37.4453 170.527 37.6914 170.633 37.9648C170.715 38.1758 170.775 38.4043 170.814 38.6504C170.857 38.8926 170.881 39.1465 170.885 39.4121V40.0508C170.881 40.3125 170.859 40.5645 170.82 40.8066C170.781 41.0449 170.723 41.2676 170.645 41.4746C170.555 41.7285 170.432 41.959 170.275 42.166C170.123 42.3691 169.941 42.541 169.73 42.6816C169.531 42.8184 169.303 42.9238 169.045 42.998C168.791 43.0723 168.508 43.1113 168.195 43.1152H167.322V36.3594ZM179.088 40.2266V39.2539C179.084 38.9492 179.057 38.6406 179.006 38.3281C178.959 38.0156 178.885 37.7148 178.783 37.4258C178.678 37.1367 178.545 36.8672 178.385 36.6172C178.229 36.3633 178.041 36.1426 177.822 35.9551C177.604 35.7676 177.352 35.6211 177.066 35.5156C176.781 35.4062 176.463 35.3516 176.111 35.3516C175.76 35.3516 175.441 35.4062 175.156 35.5156C174.875 35.6211 174.625 35.7676 174.406 35.9551C174.188 36.1465 173.998 36.3691 173.838 36.623C173.682 36.873 173.553 37.1426 173.451 37.4316C173.346 37.7207 173.268 38.0215 173.217 38.334C173.17 38.6426 173.145 38.9492 173.141 39.2539V40.2266C173.145 40.5312 173.172 40.8379 173.223 41.1465C173.273 41.4551 173.352 41.7539 173.457 42.043C173.559 42.332 173.689 42.6035 173.85 42.8574C174.01 43.1074 174.199 43.3262 174.418 43.5137C174.637 43.7012 174.887 43.8496 175.168 43.959C175.453 44.0645 175.771 44.1172 176.123 44.1172C176.475 44.1172 176.791 44.0645 177.072 43.959C177.357 43.8496 177.609 43.7012 177.828 43.5137C178.047 43.3262 178.234 43.1074 178.391 42.8574C178.551 42.6074 178.682 42.3379 178.783 42.0488C178.885 41.7598 178.959 41.4609 179.006 41.1523C179.057 40.8398 179.084 40.5312 179.088 40.2266ZM178.016 39.2422V40.2266C178.012 40.4297 177.998 40.6426 177.975 40.8652C177.955 41.0879 177.918 41.3066 177.863 41.5215C177.805 41.7402 177.729 41.9492 177.635 42.1484C177.545 42.3438 177.432 42.5156 177.295 42.6641C177.154 42.8164 176.986 42.9375 176.791 43.0273C176.6 43.1172 176.377 43.1621 176.123 43.1621C175.869 43.1621 175.646 43.1172 175.455 43.0273C175.264 42.9375 175.098 42.8164 174.957 42.6641C174.816 42.5156 174.699 42.3418 174.605 42.1426C174.512 41.9434 174.436 41.7344 174.377 41.5156C174.318 41.3008 174.275 41.082 174.248 40.8594C174.225 40.6367 174.211 40.4258 174.207 40.2266V39.2422C174.211 39.043 174.225 38.834 174.248 38.6152C174.275 38.3926 174.318 38.1719 174.377 37.9531C174.432 37.7383 174.506 37.5332 174.6 37.3379C174.693 37.1387 174.811 36.9629 174.951 36.8105C175.092 36.6621 175.258 36.543 175.449 36.4531C175.641 36.3633 175.861 36.3184 176.111 36.3184C176.365 36.3184 176.588 36.3633 176.779 36.4531C176.971 36.5391 177.137 36.6562 177.277 36.8047C177.418 36.957 177.535 37.1328 177.629 37.332C177.723 37.5273 177.799 37.7324 177.857 37.9473C177.912 38.166 177.951 38.3867 177.975 38.6094C177.998 38.8281 178.012 39.0391 178.016 39.2422ZM181.936 35.4688H180.594V44H181.648V40.5957L181.561 37.1562L183.008 41.627H183.629L185.205 37.0332L185.117 40.5957V44H186.172V35.4688H184.824L183.324 39.7344L181.936 35.4688Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M50 45.1719H186.928V45.7578H50V45.1719Z\"\n      fill=\"#FF0000\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M283.363 44V35.4688H282.268L282.25 41.832L278.939 35.4688H277.838V44H278.934L278.951 37.625L282.262 44H283.363ZM288.027 44.1172C288.645 44.1172 289.162 43.9941 289.58 43.748C290.002 43.498 290.318 43.2129 290.529 42.8926L289.867 42.377C289.668 42.6348 289.418 42.8418 289.117 42.998C288.816 43.1543 288.473 43.2324 288.086 43.2324C287.793 43.2324 287.525 43.1777 287.283 43.0684C287.041 42.959 286.834 42.8086 286.662 42.6172C286.494 42.4375 286.361 42.2305 286.264 41.9961C286.17 41.7617 286.109 41.4902 286.082 41.1816V41.1406H290.611V40.6543C290.611 40.2129 290.555 39.8027 290.441 39.4238C290.332 39.0449 290.164 38.7148 289.938 38.4336C289.711 38.1562 289.426 37.9395 289.082 37.7832C288.742 37.623 288.344 37.543 287.887 37.543C287.523 37.543 287.168 37.6172 286.82 37.7656C286.477 37.9141 286.17 38.127 285.9 38.4043C285.627 38.6855 285.408 39.0293 285.244 39.4355C285.08 39.8379 284.998 40.2949 284.998 40.8066V41.0527C284.998 41.4941 285.072 41.9023 285.221 42.2773C285.369 42.6523 285.576 42.9766 285.842 43.25C286.107 43.5234 286.426 43.7363 286.797 43.8887C287.172 44.041 287.582 44.1172 288.027 44.1172ZM287.887 38.4336C288.164 38.4336 288.402 38.4844 288.602 38.5859C288.805 38.6875 288.973 38.8203 289.105 38.9844C289.238 39.1484 289.342 39.3438 289.416 39.5703C289.49 39.793 289.527 40.002 289.527 40.1973V40.25H286.117C286.16 39.957 286.234 39.6992 286.34 39.4766C286.449 39.25 286.582 39.0586 286.738 38.9023C286.895 38.75 287.07 38.6348 287.266 38.5566C287.461 38.4746 287.668 38.4336 287.887 38.4336ZM293.043 44H293.898L294.877 40.1152L295.035 39.1309L295.199 40.1152L296.189 44H297.045L298.393 37.6602H297.432L296.729 41.7031L296.57 42.6992L296.4 41.7031L295.393 37.6602H294.695L293.682 41.7031L293.523 42.6113L293.395 41.7031L292.656 37.6602H291.695L293.043 44ZM309.01 44H309.836L312.42 37.6602H311.312L309.537 42.4414L309.432 42.834L309.332 42.4414L307.516 37.6602H306.402L309.01 44ZM314.225 37.6602V38.6035H316.381V43.0625H314.225V44H319.533V43.0625H317.465V37.6602H314.225ZM316.24 35.9961C316.24 36.1719 316.293 36.3184 316.398 36.4355C316.508 36.5527 316.672 36.6113 316.891 36.6113C317.105 36.6113 317.268 36.5527 317.377 36.4355C317.486 36.3184 317.541 36.1719 317.541 35.9961C317.541 35.8984 317.525 35.8086 317.494 35.7266C317.463 35.6445 317.416 35.5762 317.354 35.5215C317.303 35.4707 317.238 35.4316 317.16 35.4043C317.082 35.373 316.992 35.3574 316.891 35.3574C316.789 35.3574 316.697 35.373 316.615 35.4043C316.537 35.4316 316.473 35.4707 316.422 35.5215C316.359 35.5801 316.312 35.6504 316.281 35.7324C316.254 35.8145 316.24 35.9023 316.24 35.9961ZM325.416 37.543C324.955 37.543 324.543 37.6445 324.18 37.8477C323.82 38.0469 323.512 38.3203 323.254 38.668L323.248 38.5098L323.201 37.6602H322.17V44H323.26V39.9336C323.33 39.7383 323.418 39.5625 323.523 39.4062C323.633 39.2461 323.76 39.1113 323.904 39.002C324.064 38.877 324.252 38.7832 324.467 38.7207C324.682 38.6543 324.922 38.6211 325.188 38.6211C325.395 38.6211 325.592 38.6328 325.779 38.6562C325.971 38.6758 326.172 38.709 326.383 38.7559L326.529 37.6953C326.42 37.6484 326.256 37.6113 326.037 37.584C325.822 37.5566 325.615 37.543 325.416 37.543ZM331.035 36.125H329.945V37.6602H328.281V38.498H329.945V41.9434C329.945 42.334 329.996 42.668 330.098 42.9453C330.203 43.2188 330.346 43.4414 330.525 43.6133C330.705 43.7891 330.916 43.918 331.158 44C331.404 44.0781 331.668 44.1172 331.949 44.1172C332.117 44.1172 332.285 44.1094 332.453 44.0938C332.625 44.0781 332.787 44.0547 332.939 44.0234C333.092 43.9961 333.232 43.9629 333.361 43.9238C333.49 43.8809 333.6 43.832 333.689 43.7773L333.537 43.0098C333.471 43.0254 333.385 43.0449 333.279 43.0684C333.178 43.0879 333.068 43.1074 332.951 43.127C332.83 43.1465 332.707 43.1641 332.582 43.1797C332.457 43.1914 332.336 43.1973 332.219 43.1973C332.059 43.1973 331.906 43.1777 331.762 43.1387C331.621 43.0996 331.496 43.0312 331.387 42.9336C331.277 42.8398 331.191 42.7129 331.129 42.5527C331.066 42.3926 331.035 42.1895 331.035 41.9434V38.498H333.449V37.6602H331.035V36.125ZM339.854 44H340.838V37.6602H339.748V42.207C339.689 42.3438 339.615 42.4707 339.525 42.5879C339.439 42.7012 339.338 42.7988 339.221 42.8809C339.08 42.9824 338.914 43.0625 338.723 43.1211C338.531 43.1758 338.314 43.2031 338.072 43.2031C337.865 43.2031 337.682 43.1758 337.521 43.1211C337.365 43.0664 337.232 42.9707 337.123 42.834C337.014 42.7012 336.932 42.5215 336.877 42.2949C336.822 42.0684 336.795 41.7832 336.795 41.4395V37.6602H335.711V41.4277C335.711 41.9004 335.762 42.3066 335.863 42.6465C335.969 42.9824 336.117 43.2598 336.309 43.4785C336.5 43.6973 336.73 43.8594 337 43.9648C337.27 44.0664 337.57 44.1172 337.902 44.1172C338.316 44.1172 338.682 44.0312 338.998 43.8594C339.314 43.6836 339.578 43.4395 339.789 43.127L339.854 44ZM347.049 44H348.18V43.9062C348.109 43.7305 348.055 43.5254 348.016 43.291C347.977 43.0527 347.957 42.8281 347.957 42.6172V39.6699C347.957 39.3145 347.893 39.0039 347.764 38.7383C347.635 38.4727 347.459 38.25 347.236 38.0703C347.01 37.8945 346.742 37.7637 346.434 37.6777C346.125 37.5879 345.791 37.543 345.432 37.543C345.037 37.543 344.684 37.5977 344.371 37.707C344.062 37.8164 343.801 37.959 343.586 38.1348C343.367 38.3145 343.199 38.5156 343.082 38.7383C342.969 38.9609 342.91 39.1875 342.906 39.418H343.996C343.996 39.2852 344.027 39.1582 344.09 39.0371C344.156 38.9121 344.248 38.8047 344.365 38.7148C344.482 38.625 344.625 38.5527 344.793 38.498C344.965 38.4434 345.158 38.416 345.373 38.416C345.604 38.416 345.811 38.4453 345.994 38.5039C346.182 38.5625 346.34 38.6445 346.469 38.75C346.598 38.8594 346.697 38.9902 346.768 39.1426C346.838 39.2949 346.873 39.4668 346.873 39.6582V40.1562H345.689C345.248 40.1562 344.848 40.1992 344.488 40.2852C344.133 40.3711 343.828 40.5 343.574 40.6719C343.32 40.8477 343.123 41.0664 342.982 41.3281C342.846 41.5898 342.777 41.8945 342.777 42.2422C342.777 42.5078 342.828 42.7559 342.93 42.9863C343.035 43.2129 343.184 43.4082 343.375 43.5723C343.562 43.7402 343.791 43.873 344.061 43.9707C344.334 44.0684 344.639 44.1172 344.975 44.1172C345.182 44.1172 345.377 44.0957 345.561 44.0527C345.744 44.0098 345.918 43.9512 346.082 43.877C346.242 43.8027 346.389 43.7168 346.521 43.6191C346.658 43.5215 346.781 43.418 346.891 43.3086C346.902 43.4414 346.92 43.5703 346.943 43.6953C346.971 43.8164 347.006 43.918 347.049 44ZM345.133 43.1738C344.922 43.1738 344.736 43.1465 344.576 43.0918C344.416 43.0371 344.283 42.9609 344.178 42.8633C344.072 42.7695 343.992 42.6562 343.938 42.5234C343.887 42.3906 343.861 42.2461 343.861 42.0898C343.861 41.9258 343.891 41.7793 343.949 41.6504C344.012 41.5215 344.102 41.4102 344.219 41.3164C344.383 41.1836 344.604 41.0859 344.881 41.0234C345.162 40.957 345.49 40.9238 345.865 40.9238H346.873V42.207C346.811 42.332 346.725 42.4531 346.615 42.5703C346.506 42.6836 346.377 42.7852 346.229 42.875C346.076 42.9648 345.908 43.0371 345.725 43.0918C345.541 43.1465 345.344 43.1738 345.133 43.1738ZM350.26 35V35.9434H352.416V43.0625H350.26V44H355.568V43.0625H353.5V35H350.26ZM364.393 44H366.367C366.777 43.9961 367.158 43.9473 367.51 43.8535C367.865 43.7598 368.184 43.625 368.465 43.4492C368.73 43.2812 368.971 43.0781 369.186 42.8398C369.4 42.6016 369.578 42.3359 369.719 42.043C369.855 41.7617 369.959 41.4531 370.029 41.1172C370.104 40.7812 370.141 40.4258 370.141 40.0508V39.4238C370.137 39.0332 370.096 38.666 370.018 38.3223C369.943 37.9785 369.834 37.6621 369.689 37.373C369.529 37.0332 369.314 36.7344 369.045 36.4766C368.779 36.2148 368.473 36.0039 368.125 35.8438C367.875 35.7266 367.602 35.6367 367.305 35.5742C367.012 35.5078 366.699 35.4727 366.367 35.4688H364.393V44ZM365.494 36.3594H366.367C366.637 36.3633 366.885 36.3945 367.111 36.4531C367.338 36.5078 367.543 36.5859 367.727 36.6875C367.984 36.8242 368.201 37.0039 368.377 37.2266C368.557 37.4453 368.699 37.6914 368.805 37.9648C368.887 38.1758 368.947 38.4043 368.986 38.6504C369.029 38.8926 369.053 39.1465 369.057 39.4121V40.0508C369.053 40.3125 369.031 40.5645 368.992 40.8066C368.953 41.0449 368.895 41.2676 368.816 41.4746C368.727 41.7285 368.604 41.959 368.447 42.166C368.295 42.3691 368.113 42.541 367.902 42.6816C367.703 42.8184 367.475 42.9238 367.217 42.998C366.963 43.0723 366.68 43.1113 366.367 43.1152H365.494V36.3594ZM377.26 40.2266V39.2539C377.256 38.9492 377.229 38.6406 377.178 38.3281C377.131 38.0156 377.057 37.7148 376.955 37.4258C376.85 37.1367 376.717 36.8672 376.557 36.6172C376.4 36.3633 376.213 36.1426 375.994 35.9551C375.775 35.7676 375.523 35.6211 375.238 35.5156C374.953 35.4062 374.635 35.3516 374.283 35.3516C373.932 35.3516 373.613 35.4062 373.328 35.5156C373.047 35.6211 372.797 35.7676 372.578 35.9551C372.359 36.1465 372.17 36.3691 372.01 36.623C371.854 36.873 371.725 37.1426 371.623 37.4316C371.518 37.7207 371.439 38.0215 371.389 38.334C371.342 38.6426 371.316 38.9492 371.312 39.2539V40.2266C371.316 40.5312 371.344 40.8379 371.395 41.1465C371.445 41.4551 371.523 41.7539 371.629 42.043C371.73 42.332 371.861 42.6035 372.021 42.8574C372.182 43.1074 372.371 43.3262 372.59 43.5137C372.809 43.7012 373.059 43.8496 373.34 43.959C373.625 44.0645 373.943 44.1172 374.295 44.1172C374.646 44.1172 374.963 44.0645 375.244 43.959C375.529 43.8496 375.781 43.7012 376 43.5137C376.219 43.3262 376.406 43.1074 376.562 42.8574C376.723 42.6074 376.854 42.3379 376.955 42.0488C377.057 41.7598 377.131 41.4609 377.178 41.1523C377.229 40.8398 377.256 40.5312 377.26 40.2266ZM376.188 39.2422V40.2266C376.184 40.4297 376.17 40.6426 376.146 40.8652C376.127 41.0879 376.09 41.3066 376.035 41.5215C375.977 41.7402 375.9 41.9492 375.807 42.1484C375.717 42.3438 375.604 42.5156 375.467 42.6641C375.326 42.8164 375.158 42.9375 374.963 43.0273C374.771 43.1172 374.549 43.1621 374.295 43.1621C374.041 43.1621 373.818 43.1172 373.627 43.0273C373.436 42.9375 373.27 42.8164 373.129 42.6641C372.988 42.5156 372.871 42.3418 372.777 42.1426C372.684 41.9434 372.607 41.7344 372.549 41.5156C372.49 41.3008 372.447 41.082 372.42 40.8594C372.396 40.6367 372.383 40.4258 372.379 40.2266V39.2422C372.383 39.043 372.396 38.834 372.42 38.6152C372.447 38.3926 372.49 38.1719 372.549 37.9531C372.604 37.7383 372.678 37.5332 372.771 37.3379C372.865 37.1387 372.982 36.9629 373.123 36.8105C373.264 36.6621 373.43 36.543 373.621 36.4531C373.812 36.3633 374.033 36.3184 374.283 36.3184C374.537 36.3184 374.76 36.3633 374.951 36.4531C375.143 36.5391 375.309 36.6562 375.449 36.8047C375.59 36.957 375.707 37.1328 375.801 37.332C375.895 37.5273 375.971 37.7324 376.029 37.9473C376.084 38.166 376.123 38.3867 376.146 38.6094C376.17 38.8281 376.184 39.0391 376.188 39.2422ZM380.107 35.4688H378.766V44H379.82V40.5957L379.732 37.1562L381.18 41.627H381.801L383.377 37.0332L383.289 40.5957V44H384.344V35.4688H382.996L381.496 39.7344L380.107 35.4688Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M277 45.1719H385.1V45.7578H277V45.1719Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M460.545 41.4336H459.461C459.426 41.6914 459.365 41.9316 459.279 42.1543C459.193 42.373 459.078 42.5625 458.934 42.7227C458.789 42.8867 458.611 43.0137 458.4 43.1035C458.193 43.1934 457.947 43.2383 457.662 43.2383C457.4 43.2383 457.172 43.1973 456.977 43.1152C456.781 43.0293 456.611 42.9121 456.467 42.7637C456.322 42.6191 456.203 42.4512 456.109 42.2598C456.016 42.0684 455.939 41.8633 455.881 41.6445C455.822 41.4297 455.779 41.2109 455.752 40.9883C455.729 40.7617 455.717 40.543 455.717 40.332V39.1309C455.717 38.9199 455.729 38.7031 455.752 38.4805C455.779 38.2539 455.822 38.0332 455.881 37.8184C455.939 37.6035 456.016 37.4004 456.109 37.209C456.207 37.0176 456.328 36.8496 456.473 36.7051C456.613 36.5605 456.781 36.4473 456.977 36.3652C457.176 36.2793 457.404 36.2363 457.662 36.2363C457.947 36.2363 458.193 36.2852 458.4 36.3828C458.611 36.4766 458.789 36.6074 458.934 36.7754C459.078 36.9434 459.193 37.1387 459.279 37.3613C459.365 37.584 459.426 37.8242 459.461 38.082H460.545C460.498 37.6758 460.4 37.3047 460.252 36.9688C460.107 36.6328 459.914 36.3438 459.672 36.1016C459.43 35.8633 459.141 35.6797 458.805 35.5508C458.469 35.418 458.088 35.3516 457.662 35.3516C457.307 35.3516 456.986 35.4023 456.701 35.5039C456.416 35.6016 456.162 35.7383 455.939 35.9141C455.713 36.0898 455.518 36.2988 455.354 36.541C455.193 36.7793 455.061 37.0391 454.955 37.3203C454.846 37.6016 454.764 37.8965 454.709 38.2051C454.658 38.5137 454.631 38.8262 454.627 39.1426V40.332C454.631 40.6484 454.658 40.9609 454.709 41.2695C454.764 41.5781 454.846 41.873 454.955 42.1543C455.061 42.4355 455.193 42.6953 455.354 42.9336C455.518 43.1719 455.713 43.3789 455.939 43.5547C456.162 43.7305 456.416 43.8691 456.701 43.9707C456.99 44.0684 457.311 44.1172 457.662 44.1172C458.072 44.1172 458.443 44.0527 458.775 43.9238C459.111 43.791 459.402 43.6055 459.648 43.3672C459.891 43.1328 460.088 42.8516 460.24 42.5234C460.393 42.1914 460.494 41.8281 460.545 41.4336ZM463.311 38.6035V35H462.227V44H463.311V39.3945C463.389 39.2695 463.477 39.1562 463.574 39.0547C463.676 38.9492 463.785 38.8574 463.902 38.7793C464.051 38.6777 464.213 38.5996 464.389 38.5449C464.564 38.4902 464.75 38.4629 464.945 38.4629C465.184 38.459 465.395 38.4922 465.578 38.5625C465.762 38.6289 465.914 38.7305 466.035 38.8672C466.148 38.9922 466.234 39.1504 466.293 39.3418C466.352 39.5293 466.381 39.748 466.381 39.998V44H467.465V40.0098C467.465 39.584 467.412 39.2168 467.307 38.9082C467.205 38.5957 467.059 38.3379 466.867 38.1348C466.676 37.9316 466.443 37.7832 466.17 37.6895C465.9 37.5918 465.6 37.543 465.268 37.543C465.014 37.5469 464.773 37.584 464.547 37.6543C464.324 37.7246 464.119 37.8281 463.932 37.9648C463.814 38.0469 463.703 38.1426 463.598 38.252C463.492 38.3574 463.396 38.4746 463.311 38.6035ZM473.6 44H474.73V43.9062C474.66 43.7305 474.605 43.5254 474.566 43.291C474.527 43.0527 474.508 42.8281 474.508 42.6172V39.6699C474.508 39.3145 474.443 39.0039 474.314 38.7383C474.186 38.4727 474.01 38.25 473.787 38.0703C473.561 37.8945 473.293 37.7637 472.984 37.6777C472.676 37.5879 472.342 37.543 471.982 37.543C471.588 37.543 471.234 37.5977 470.922 37.707C470.613 37.8164 470.352 37.959 470.137 38.1348C469.918 38.3145 469.75 38.5156 469.633 38.7383C469.52 38.9609 469.461 39.1875 469.457 39.418H470.547C470.547 39.2852 470.578 39.1582 470.641 39.0371C470.707 38.9121 470.799 38.8047 470.916 38.7148C471.033 38.625 471.176 38.5527 471.344 38.498C471.516 38.4434 471.709 38.416 471.924 38.416C472.154 38.416 472.361 38.4453 472.545 38.5039C472.732 38.5625 472.891 38.6445 473.02 38.75C473.148 38.8594 473.248 38.9902 473.318 39.1426C473.389 39.2949 473.424 39.4668 473.424 39.6582V40.1562H472.24C471.799 40.1562 471.398 40.1992 471.039 40.2852C470.684 40.3711 470.379 40.5 470.125 40.6719C469.871 40.8477 469.674 41.0664 469.533 41.3281C469.396 41.5898 469.328 41.8945 469.328 42.2422C469.328 42.5078 469.379 42.7559 469.48 42.9863C469.586 43.2129 469.734 43.4082 469.926 43.5723C470.113 43.7402 470.342 43.873 470.611 43.9707C470.885 44.0684 471.189 44.1172 471.525 44.1172C471.732 44.1172 471.928 44.0957 472.111 44.0527C472.295 44.0098 472.469 43.9512 472.633 43.877C472.793 43.8027 472.939 43.7168 473.072 43.6191C473.209 43.5215 473.332 43.418 473.441 43.3086C473.453 43.4414 473.471 43.5703 473.494 43.6953C473.521 43.8164 473.557 43.918 473.6 44ZM471.684 43.1738C471.473 43.1738 471.287 43.1465 471.127 43.0918C470.967 43.0371 470.834 42.9609 470.729 42.8633C470.623 42.7695 470.543 42.6562 470.488 42.5234C470.438 42.3906 470.412 42.2461 470.412 42.0898C470.412 41.9258 470.441 41.7793 470.5 41.6504C470.562 41.5215 470.652 41.4102 470.77 41.3164C470.934 41.1836 471.154 41.0859 471.432 41.0234C471.713 40.957 472.041 40.9238 472.416 40.9238H473.424V42.207C473.361 42.332 473.275 42.4531 473.166 42.5703C473.057 42.6836 472.928 42.7852 472.779 42.875C472.627 42.9648 472.459 43.0371 472.275 43.0918C472.092 43.1465 471.895 43.1738 471.684 43.1738ZM476.641 44H477.725V39.4531C477.799 39.3164 477.885 39.1914 477.982 39.0781C478.084 38.9648 478.193 38.8652 478.311 38.7793C478.455 38.6816 478.613 38.6055 478.785 38.5508C478.957 38.4922 479.143 38.4629 479.342 38.4629C479.572 38.4629 479.775 38.4902 479.951 38.5449C480.131 38.5996 480.283 38.6875 480.408 38.8086C480.529 38.9297 480.621 39.0879 480.684 39.2832C480.746 39.4785 480.777 39.7168 480.777 39.998V44H481.861V39.9746C481.861 39.5527 481.809 39.1895 481.703 38.8848C481.602 38.5762 481.455 38.3223 481.264 38.123C481.072 37.9238 480.84 37.7773 480.566 37.6836C480.297 37.5898 479.996 37.543 479.664 37.543C479.418 37.5469 479.184 37.584 478.961 37.6543C478.742 37.7207 478.539 37.8164 478.352 37.9414C478.227 38.0234 478.107 38.1211 477.994 38.2344C477.885 38.3438 477.783 38.4648 477.689 38.5977L477.613 37.6602H476.641V44ZM483.648 40.7773V40.9004C483.648 41.3535 483.707 41.7773 483.824 42.1719C483.941 42.5625 484.109 42.9023 484.328 43.1914C484.543 43.4805 484.807 43.707 485.119 43.8711C485.432 44.0352 485.781 44.1172 486.168 44.1172C486.398 44.1172 486.613 44.0918 486.812 44.041C487.012 43.9941 487.193 43.9258 487.357 43.8359C487.463 43.7773 487.561 43.709 487.65 43.6309C487.744 43.5527 487.832 43.4668 487.914 43.373V43.918C487.914 44.1914 487.875 44.4336 487.797 44.6445C487.719 44.8555 487.607 45.0312 487.463 45.1719C487.314 45.3164 487.137 45.4258 486.93 45.5C486.723 45.5742 486.49 45.6113 486.232 45.6113C486.088 45.6113 485.943 45.5957 485.799 45.5645C485.654 45.5371 485.51 45.4902 485.365 45.4238C485.221 45.3574 485.078 45.2676 484.938 45.1543C484.797 45.0449 484.66 44.9102 484.527 44.75L483.965 45.4004C484.109 45.6074 484.281 45.7812 484.48 45.9219C484.684 46.0625 484.895 46.1738 485.113 46.2559C485.328 46.3418 485.541 46.4023 485.752 46.4375C485.963 46.4766 486.15 46.4961 486.314 46.4961C486.713 46.4961 487.076 46.4375 487.404 46.3203C487.732 46.2031 488.016 46.0312 488.254 45.8047C488.488 45.5781 488.67 45.3027 488.799 44.9785C488.932 44.6543 488.998 44.2832 488.998 43.8652V37.6602H488.014L487.961 38.3516C487.887 38.2578 487.807 38.1719 487.721 38.0938C487.639 38.0156 487.551 37.9473 487.457 37.8887C487.285 37.7754 487.092 37.6895 486.877 37.6309C486.666 37.5723 486.434 37.543 486.18 37.543C485.785 37.543 485.432 37.623 485.119 37.7832C484.807 37.9434 484.541 38.166 484.322 38.4512C484.104 38.7363 483.936 39.0781 483.818 39.4766C483.705 39.8711 483.648 40.3047 483.648 40.7773ZM484.732 40.9004V40.7773C484.732 40.4688 484.764 40.1758 484.826 39.8984C484.893 39.6172 484.996 39.3691 485.137 39.1543C485.273 38.9434 485.449 38.7754 485.664 38.6504C485.883 38.5254 486.145 38.4629 486.449 38.4629C486.629 38.4629 486.793 38.4863 486.941 38.5332C487.09 38.5762 487.225 38.6367 487.346 38.7148C487.467 38.7969 487.574 38.8926 487.668 39.002C487.762 39.1113 487.844 39.2324 487.914 39.3652V42.2715C487.844 42.4082 487.762 42.5332 487.668 42.6465C487.574 42.7598 487.469 42.8574 487.352 42.9395C487.23 43.0215 487.094 43.0859 486.941 43.1328C486.793 43.1758 486.625 43.1973 486.438 43.1973C486.137 43.1973 485.879 43.1367 485.664 43.0156C485.449 42.8906 485.273 42.7227 485.137 42.5117C484.996 42.3008 484.893 42.0566 484.826 41.7793C484.764 41.502 484.732 41.209 484.732 40.9004ZM493.855 44.1172C494.473 44.1172 494.99 43.9941 495.408 43.748C495.83 43.498 496.146 43.2129 496.357 42.8926L495.695 42.377C495.496 42.6348 495.246 42.8418 494.945 42.998C494.645 43.1543 494.301 43.2324 493.914 43.2324C493.621 43.2324 493.354 43.1777 493.111 43.0684C492.869 42.959 492.662 42.8086 492.49 42.6172C492.322 42.4375 492.189 42.2305 492.092 41.9961C491.998 41.7617 491.938 41.4902 491.91 41.1816V41.1406H496.439V40.6543C496.439 40.2129 496.383 39.8027 496.27 39.4238C496.16 39.0449 495.992 38.7148 495.766 38.4336C495.539 38.1562 495.254 37.9395 494.91 37.7832C494.57 37.623 494.172 37.543 493.715 37.543C493.352 37.543 492.996 37.6172 492.648 37.7656C492.305 37.9141 491.998 38.127 491.729 38.4043C491.455 38.6855 491.236 39.0293 491.072 39.4355C490.908 39.8379 490.826 40.2949 490.826 40.8066V41.0527C490.826 41.4941 490.9 41.9023 491.049 42.2773C491.197 42.6523 491.404 42.9766 491.67 43.25C491.936 43.5234 492.254 43.7363 492.625 43.8887C493 44.041 493.41 44.1172 493.855 44.1172ZM493.715 38.4336C493.992 38.4336 494.23 38.4844 494.43 38.5859C494.633 38.6875 494.801 38.8203 494.934 38.9844C495.066 39.1484 495.17 39.3438 495.244 39.5703C495.318 39.793 495.355 40.002 495.355 40.1973V40.25H491.945C491.988 39.957 492.062 39.6992 492.168 39.4766C492.277 39.25 492.41 39.0586 492.566 38.9023C492.723 38.75 492.898 38.6348 493.094 38.5566C493.289 38.4746 493.496 38.4336 493.715 38.4336ZM502.475 42.3184C502.475 42.4199 502.455 42.5156 502.416 42.6055C502.377 42.6953 502.32 42.7773 502.246 42.8516C502.125 42.9727 501.957 43.0684 501.742 43.1387C501.527 43.2051 501.275 43.2383 500.986 43.2383C500.803 43.2383 500.617 43.2188 500.43 43.1797C500.242 43.1406 500.072 43.0742 499.92 42.9805C499.764 42.8867 499.633 42.7637 499.527 42.6113C499.426 42.459 499.367 42.2715 499.352 42.0488H498.268C498.268 42.3184 498.328 42.5781 498.449 42.8281C498.574 43.0781 498.754 43.2969 498.988 43.4844C499.219 43.6758 499.502 43.8301 499.838 43.9473C500.174 44.0605 500.557 44.1172 500.986 44.1172C501.361 44.1172 501.707 44.0723 502.023 43.9824C502.34 43.8926 502.611 43.7656 502.838 43.6016C503.064 43.4375 503.24 43.2402 503.365 43.0098C503.494 42.7793 503.559 42.5234 503.559 42.2422C503.559 41.9805 503.502 41.75 503.389 41.5508C503.279 41.3516 503.119 41.1758 502.908 41.0234C502.697 40.875 502.438 40.748 502.129 40.6426C501.82 40.5332 501.471 40.4375 501.08 40.3555C500.783 40.2969 500.537 40.2363 500.342 40.1738C500.15 40.1113 499.998 40.041 499.885 39.9629C499.768 39.8848 499.686 39.7969 499.639 39.6992C499.592 39.6016 499.568 39.4902 499.568 39.3652C499.568 39.2441 499.598 39.127 499.656 39.0137C499.715 38.9004 499.803 38.8008 499.92 38.7148C500.033 38.6289 500.176 38.5605 500.348 38.5098C500.523 38.459 500.727 38.4336 500.957 38.4336C501.18 38.4336 501.379 38.4648 501.555 38.5273C501.734 38.5898 501.887 38.6719 502.012 38.7734C502.137 38.875 502.234 38.9922 502.305 39.125C502.375 39.2539 502.41 39.3867 502.41 39.5234H503.494C503.494 39.2461 503.434 38.9883 503.312 38.75C503.195 38.5078 503.027 38.2969 502.809 38.1172C502.59 37.9375 502.324 37.7969 502.012 37.6953C501.699 37.5938 501.348 37.543 500.957 37.543C500.594 37.543 500.26 37.5918 499.955 37.6895C499.654 37.7871 499.395 37.9199 499.176 38.0879C498.957 38.2559 498.787 38.4531 498.666 38.6797C498.545 38.9023 498.484 39.1426 498.484 39.4004C498.484 39.6621 498.543 39.8926 498.66 40.0918C498.777 40.2871 498.943 40.457 499.158 40.6016C499.369 40.75 499.623 40.877 499.92 40.9824C500.221 41.0879 500.553 41.1777 500.916 41.252C501.213 41.3105 501.461 41.377 501.66 41.4512C501.859 41.5215 502.02 41.5996 502.141 41.6855C502.262 41.7715 502.348 41.8672 502.398 41.9727C502.449 42.0742 502.475 42.1895 502.475 42.3184ZM515.242 36.125H514.152V37.6602H512.488V38.498H514.152V41.9434C514.152 42.334 514.203 42.668 514.305 42.9453C514.41 43.2188 514.553 43.4414 514.732 43.6133C514.912 43.7891 515.123 43.918 515.365 44C515.611 44.0781 515.875 44.1172 516.156 44.1172C516.324 44.1172 516.492 44.1094 516.66 44.0938C516.832 44.0781 516.994 44.0547 517.146 44.0234C517.299 43.9961 517.439 43.9629 517.568 43.9238C517.697 43.8809 517.807 43.832 517.896 43.7773L517.744 43.0098C517.678 43.0254 517.592 43.0449 517.486 43.0684C517.385 43.0879 517.275 43.1074 517.158 43.127C517.037 43.1465 516.914 43.1641 516.789 43.1797C516.664 43.1914 516.543 43.1973 516.426 43.1973C516.266 43.1973 516.113 43.1777 515.969 43.1387C515.828 43.0996 515.703 43.0312 515.594 42.9336C515.484 42.8398 515.398 42.7129 515.336 42.5527C515.273 42.3926 515.242 42.1895 515.242 41.9434V38.498H517.656V37.6602H515.242V36.125ZM519.578 40.7715V40.9004C519.578 41.3574 519.645 41.7812 519.777 42.1719C519.91 42.5625 520.102 42.9023 520.352 43.1914C520.598 43.4805 520.898 43.707 521.254 43.8711C521.613 44.0352 522.018 44.1172 522.467 44.1172C522.912 44.1172 523.312 44.0352 523.668 43.8711C524.023 43.707 524.326 43.4805 524.576 43.1914C524.822 42.9023 525.012 42.5625 525.145 42.1719C525.277 41.7812 525.344 41.3574 525.344 40.9004V40.7715C525.344 40.3145 525.277 39.8906 525.145 39.5C525.012 39.1055 524.822 38.7637 524.576 38.4746C524.326 38.1855 524.021 37.959 523.662 37.7949C523.307 37.627 522.904 37.543 522.455 37.543C522.01 37.543 521.609 37.627 521.254 37.7949C520.898 37.959 520.598 38.1855 520.352 38.4746C520.102 38.7637 519.91 39.1055 519.777 39.5C519.645 39.8906 519.578 40.3145 519.578 40.7715ZM520.662 40.9004V40.7715C520.662 40.4629 520.699 40.168 520.773 39.8867C520.848 39.6016 520.961 39.3516 521.113 39.1367C521.262 38.9219 521.447 38.752 521.67 38.627C521.893 38.498 522.154 38.4336 522.455 38.4336C522.756 38.4336 523.018 38.498 523.24 38.627C523.467 38.752 523.656 38.9219 523.809 39.1367C523.957 39.3516 524.068 39.6016 524.143 39.8867C524.221 40.168 524.26 40.4629 524.26 40.7715V40.9004C524.26 41.2129 524.223 41.5117 524.148 41.7969C524.074 42.0781 523.963 42.3262 523.814 42.541C523.662 42.7559 523.473 42.9258 523.246 43.0508C523.023 43.1758 522.764 43.2383 522.467 43.2383C522.166 43.2383 521.902 43.1758 521.676 43.0508C521.449 42.9258 521.262 42.7559 521.113 42.541C520.961 42.3262 520.848 42.0781 520.773 41.7969C520.699 41.5117 520.662 41.2129 520.662 40.9004ZM538.451 37.543C537.99 37.543 537.578 37.6445 537.215 37.8477C536.855 38.0469 536.547 38.3203 536.289 38.668L536.283 38.5098L536.236 37.6602H535.205V44H536.295V39.9336C536.365 39.7383 536.453 39.5625 536.559 39.4062C536.668 39.2461 536.795 39.1113 536.939 39.002C537.1 38.877 537.287 38.7832 537.502 38.7207C537.717 38.6543 537.957 38.6211 538.223 38.6211C538.43 38.6211 538.627 38.6328 538.814 38.6562C539.006 38.6758 539.207 38.709 539.418 38.7559L539.564 37.6953C539.455 37.6484 539.291 37.6113 539.072 37.584C538.857 37.5566 538.65 37.543 538.451 37.543ZM544.305 44.1172C544.922 44.1172 545.439 43.9941 545.857 43.748C546.279 43.498 546.596 43.2129 546.807 42.8926L546.145 42.377C545.945 42.6348 545.695 42.8418 545.395 42.998C545.094 43.1543 544.75 43.2324 544.363 43.2324C544.07 43.2324 543.803 43.1777 543.561 43.0684C543.318 42.959 543.111 42.8086 542.939 42.6172C542.771 42.4375 542.639 42.2305 542.541 41.9961C542.447 41.7617 542.387 41.4902 542.359 41.1816V41.1406H546.889V40.6543C546.889 40.2129 546.832 39.8027 546.719 39.4238C546.609 39.0449 546.441 38.7148 546.215 38.4336C545.988 38.1562 545.703 37.9395 545.359 37.7832C545.02 37.623 544.621 37.543 544.164 37.543C543.801 37.543 543.445 37.6172 543.098 37.7656C542.754 37.9141 542.447 38.127 542.178 38.4043C541.904 38.6855 541.686 39.0293 541.521 39.4355C541.357 39.8379 541.275 40.2949 541.275 40.8066V41.0527C541.275 41.4941 541.35 41.9023 541.498 42.2773C541.646 42.6523 541.854 42.9766 542.119 43.25C542.385 43.5234 542.703 43.7363 543.074 43.8887C543.449 44.041 543.859 44.1172 544.305 44.1172ZM544.164 38.4336C544.441 38.4336 544.68 38.4844 544.879 38.5859C545.082 38.6875 545.25 38.8203 545.383 38.9844C545.516 39.1484 545.619 39.3438 545.693 39.5703C545.768 39.793 545.805 40.002 545.805 40.1973V40.25H542.395C542.438 39.957 542.512 39.6992 542.617 39.4766C542.727 39.25 542.859 39.0586 543.016 38.9023C543.172 38.75 543.348 38.6348 543.543 38.5566C543.738 38.4746 543.945 38.4336 544.164 38.4336ZM552.877 44H554.008V43.9062C553.938 43.7305 553.883 43.5254 553.844 43.291C553.805 43.0527 553.785 42.8281 553.785 42.6172V39.6699C553.785 39.3145 553.721 39.0039 553.592 38.7383C553.463 38.4727 553.287 38.25 553.064 38.0703C552.838 37.8945 552.57 37.7637 552.262 37.6777C551.953 37.5879 551.619 37.543 551.26 37.543C550.865 37.543 550.512 37.5977 550.199 37.707C549.891 37.8164 549.629 37.959 549.414 38.1348C549.195 38.3145 549.027 38.5156 548.91 38.7383C548.797 38.9609 548.738 39.1875 548.734 39.418H549.824C549.824 39.2852 549.855 39.1582 549.918 39.0371C549.984 38.9121 550.076 38.8047 550.193 38.7148C550.311 38.625 550.453 38.5527 550.621 38.498C550.793 38.4434 550.986 38.416 551.201 38.416C551.432 38.416 551.639 38.4453 551.822 38.5039C552.01 38.5625 552.168 38.6445 552.297 38.75C552.426 38.8594 552.525 38.9902 552.596 39.1426C552.666 39.2949 552.701 39.4668 552.701 39.6582V40.1562H551.518C551.076 40.1562 550.676 40.1992 550.316 40.2852C549.961 40.3711 549.656 40.5 549.402 40.6719C549.148 40.8477 548.951 41.0664 548.811 41.3281C548.674 41.5898 548.605 41.8945 548.605 42.2422C548.605 42.5078 548.656 42.7559 548.758 42.9863C548.863 43.2129 549.012 43.4082 549.203 43.5723C549.391 43.7402 549.619 43.873 549.889 43.9707C550.162 44.0684 550.467 44.1172 550.803 44.1172C551.01 44.1172 551.205 44.0957 551.389 44.0527C551.572 44.0098 551.746 43.9512 551.91 43.877C552.07 43.8027 552.217 43.7168 552.35 43.6191C552.486 43.5215 552.609 43.418 552.719 43.3086C552.73 43.4414 552.748 43.5703 552.771 43.6953C552.799 43.8164 552.834 43.918 552.877 44ZM550.961 43.1738C550.75 43.1738 550.564 43.1465 550.404 43.0918C550.244 43.0371 550.111 42.9609 550.006 42.8633C549.9 42.7695 549.82 42.6562 549.766 42.5234C549.715 42.3906 549.689 42.2461 549.689 42.0898C549.689 41.9258 549.719 41.7793 549.777 41.6504C549.84 41.5215 549.93 41.4102 550.047 41.3164C550.211 41.1836 550.432 41.0859 550.709 41.0234C550.99 40.957 551.318 40.9238 551.693 40.9238H552.701V42.207C552.639 42.332 552.553 42.4531 552.443 42.5703C552.334 42.6836 552.205 42.7852 552.057 42.875C551.904 42.9648 551.736 43.0371 551.553 43.0918C551.369 43.1465 551.172 43.1738 550.961 43.1738ZM556.088 35V35.9434H558.244V43.0625H556.088V44H561.396V43.0625H559.328V35H556.088ZM570.221 44H572.195C572.605 43.9961 572.986 43.9473 573.338 43.8535C573.693 43.7598 574.012 43.625 574.293 43.4492C574.559 43.2812 574.799 43.0781 575.014 42.8398C575.229 42.6016 575.406 42.3359 575.547 42.043C575.684 41.7617 575.787 41.4531 575.857 41.1172C575.932 40.7812 575.969 40.4258 575.969 40.0508V39.4238C575.965 39.0332 575.924 38.666 575.846 38.3223C575.771 37.9785 575.662 37.6621 575.518 37.373C575.357 37.0332 575.143 36.7344 574.873 36.4766C574.607 36.2148 574.301 36.0039 573.953 35.8438C573.703 35.7266 573.43 35.6367 573.133 35.5742C572.84 35.5078 572.527 35.4727 572.195 35.4688H570.221V44ZM571.322 36.3594H572.195C572.465 36.3633 572.713 36.3945 572.939 36.4531C573.166 36.5078 573.371 36.5859 573.555 36.6875C573.812 36.8242 574.029 37.0039 574.205 37.2266C574.385 37.4453 574.527 37.6914 574.633 37.9648C574.715 38.1758 574.775 38.4043 574.814 38.6504C574.857 38.8926 574.881 39.1465 574.885 39.4121V40.0508C574.881 40.3125 574.859 40.5645 574.82 40.8066C574.781 41.0449 574.723 41.2676 574.645 41.4746C574.555 41.7285 574.432 41.959 574.275 42.166C574.123 42.3691 573.941 42.541 573.73 42.6816C573.531 42.8184 573.303 42.9238 573.045 42.998C572.791 43.0723 572.508 43.1113 572.195 43.1152H571.322V36.3594ZM583.088 40.2266V39.2539C583.084 38.9492 583.057 38.6406 583.006 38.3281C582.959 38.0156 582.885 37.7148 582.783 37.4258C582.678 37.1367 582.545 36.8672 582.385 36.6172C582.229 36.3633 582.041 36.1426 581.822 35.9551C581.604 35.7676 581.352 35.6211 581.066 35.5156C580.781 35.4062 580.463 35.3516 580.111 35.3516C579.76 35.3516 579.441 35.4062 579.156 35.5156C578.875 35.6211 578.625 35.7676 578.406 35.9551C578.188 36.1465 577.998 36.3691 577.838 36.623C577.682 36.873 577.553 37.1426 577.451 37.4316C577.346 37.7207 577.268 38.0215 577.217 38.334C577.17 38.6426 577.145 38.9492 577.141 39.2539V40.2266C577.145 40.5312 577.172 40.8379 577.223 41.1465C577.273 41.4551 577.352 41.7539 577.457 42.043C577.559 42.332 577.689 42.6035 577.85 42.8574C578.01 43.1074 578.199 43.3262 578.418 43.5137C578.637 43.7012 578.887 43.8496 579.168 43.959C579.453 44.0645 579.771 44.1172 580.123 44.1172C580.475 44.1172 580.791 44.0645 581.072 43.959C581.357 43.8496 581.609 43.7012 581.828 43.5137C582.047 43.3262 582.234 43.1074 582.391 42.8574C582.551 42.6074 582.682 42.3379 582.783 42.0488C582.885 41.7598 582.959 41.4609 583.006 41.1523C583.057 40.8398 583.084 40.5312 583.088 40.2266ZM582.016 39.2422V40.2266C582.012 40.4297 581.998 40.6426 581.975 40.8652C581.955 41.0879 581.918 41.3066 581.863 41.5215C581.805 41.7402 581.729 41.9492 581.635 42.1484C581.545 42.3438 581.432 42.5156 581.295 42.6641C581.154 42.8164 580.986 42.9375 580.791 43.0273C580.6 43.1172 580.377 43.1621 580.123 43.1621C579.869 43.1621 579.646 43.1172 579.455 43.0273C579.264 42.9375 579.098 42.8164 578.957 42.6641C578.816 42.5156 578.699 42.3418 578.605 42.1426C578.512 41.9434 578.436 41.7344 578.377 41.5156C578.318 41.3008 578.275 41.082 578.248 40.8594C578.225 40.6367 578.211 40.4258 578.207 40.2266V39.2422C578.211 39.043 578.225 38.834 578.248 38.6152C578.275 38.3926 578.318 38.1719 578.377 37.9531C578.432 37.7383 578.506 37.5332 578.6 37.3379C578.693 37.1387 578.811 36.9629 578.951 36.8105C579.092 36.6621 579.258 36.543 579.449 36.4531C579.641 36.3633 579.861 36.3184 580.111 36.3184C580.365 36.3184 580.588 36.3633 580.779 36.4531C580.971 36.5391 581.137 36.6562 581.277 36.8047C581.418 36.957 581.535 37.1328 581.629 37.332C581.723 37.5273 581.799 37.7324 581.857 37.9473C581.912 38.166 581.951 38.3867 581.975 38.6094C581.998 38.8281 582.012 39.0391 582.016 39.2422ZM585.936 35.4688H584.594V44H585.648V40.5957L585.561 37.1562L587.008 41.627H587.629L589.205 37.0332L589.117 40.5957V44H590.172V35.4688H588.824L587.324 39.7344L585.936 35.4688Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M454 45.1719H590.928V45.7578H454V45.1719Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M141.429 96V81.0703H141.275L134.774 83.4185V85.8999L138.547 84.5464V96H141.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M333.429 96V81.0703H333.275L326.774 83.4185V85.8999L330.547 84.5464V96H333.429Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M285.589 158.648L287.866 159.212C287.975 159.103 288.091 159 288.214 158.904C288.337 158.802 288.478 158.713 288.635 158.638C288.792 158.562 288.973 158.501 289.178 158.453C289.383 158.405 289.626 158.381 289.906 158.381C290.323 158.381 290.686 158.446 290.993 158.576C291.301 158.706 291.557 158.891 291.762 159.13C291.967 159.369 292.118 159.656 292.213 159.991C292.316 160.319 292.367 160.682 292.367 161.078C292.367 161.481 292.326 161.857 292.244 162.206C292.169 162.555 292.049 162.855 291.885 163.108C291.714 163.361 291.492 163.56 291.219 163.703C290.952 163.847 290.627 163.918 290.245 163.918C289.623 163.918 289.11 163.741 288.707 163.385C288.31 163.03 288.078 162.527 288.009 161.878H285.2C285.22 162.568 285.374 163.184 285.661 163.724C285.955 164.257 286.334 164.708 286.799 165.077C287.264 165.446 287.794 165.727 288.389 165.918C288.99 166.109 289.612 166.205 290.255 166.205C291.103 166.205 291.837 166.072 292.459 165.805C293.082 165.539 293.598 165.176 294.008 164.718C294.418 164.26 294.722 163.73 294.92 163.129C295.119 162.527 295.218 161.892 295.218 161.222C295.218 160.436 295.115 159.731 294.91 159.109C294.705 158.487 294.411 157.961 294.028 157.53C293.639 157.1 293.16 156.771 292.593 156.546C292.032 156.313 291.393 156.197 290.675 156.197C290.169 156.197 289.722 156.262 289.332 156.392C288.942 156.522 288.642 156.648 288.43 156.771L288.789 153.49H294.726V151.07H286.44L285.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M379.208 166V163.713H372.655L375.465 160.74C375.95 160.241 376.391 159.766 376.788 159.314C377.184 158.856 377.526 158.409 377.813 157.971C378.093 157.534 378.309 157.093 378.459 156.648C378.616 156.197 378.695 155.726 378.695 155.233C378.695 154.584 378.592 153.993 378.387 153.459C378.182 152.919 377.885 152.458 377.495 152.075C377.099 151.692 376.606 151.395 376.019 151.183C375.438 150.971 374.768 150.865 374.009 150.865C373.216 150.865 372.491 150.995 371.835 151.255C371.186 151.508 370.632 151.856 370.174 152.301C369.709 152.745 369.35 153.265 369.097 153.859C368.844 154.447 368.718 155.073 368.718 155.736H371.579C371.579 155.333 371.63 154.974 371.732 154.659C371.835 154.345 371.985 154.082 372.184 153.87C372.375 153.665 372.614 153.511 372.901 153.408C373.195 153.299 373.534 153.244 373.917 153.244C374.21 153.244 374.477 153.292 374.716 153.388C374.962 153.483 375.174 153.62 375.352 153.798C375.523 153.982 375.656 154.205 375.752 154.464C375.848 154.724 375.896 155.021 375.896 155.356C375.896 155.582 375.858 155.814 375.783 156.054C375.714 156.293 375.602 156.549 375.444 156.823C375.28 157.103 375.068 157.411 374.809 157.746C374.549 158.081 374.231 158.453 373.855 158.863L369.025 164.052V166H379.208Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M103.208 166V163.713H96.6553L99.4648 160.74C99.9502 160.241 100.391 159.766 100.788 159.314C101.184 158.856 101.526 158.409 101.813 157.971C102.093 157.534 102.309 157.093 102.459 156.648C102.616 156.197 102.695 155.726 102.695 155.233C102.695 154.584 102.592 153.993 102.387 153.459C102.182 152.919 101.885 152.458 101.495 152.075C101.099 151.692 100.606 151.395 100.019 151.183C99.4375 150.971 98.7676 150.865 98.0088 150.865C97.2158 150.865 96.4912 150.995 95.835 151.255C95.1855 151.508 94.6318 151.856 94.1738 152.301C93.709 152.745 93.3501 153.265 93.0972 153.859C92.8442 154.447 92.7178 155.073 92.7178 155.736H95.5786C95.5786 155.333 95.6299 154.974 95.7324 154.659C95.835 154.345 95.9854 154.082 96.1836 153.87C96.375 153.665 96.6143 153.511 96.9014 153.408C97.1953 153.299 97.5337 153.244 97.9165 153.244C98.2104 153.244 98.4771 153.292 98.7163 153.388C98.9624 153.483 99.1743 153.62 99.3521 153.798C99.5229 153.982 99.6562 154.205 99.752 154.464C99.8477 154.724 99.8955 155.021 99.8955 155.356C99.8955 155.582 99.8579 155.814 99.7827 156.054C99.7144 156.293 99.6016 156.549 99.4443 156.823C99.2803 157.103 99.0684 157.411 98.8086 157.746C98.5488 158.081 98.231 158.453 97.855 158.863L93.0254 164.052V166H103.208Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M519.126 69.7045V68.8211H516.594L517.68 67.6722C517.867 67.4794 518.037 67.2958 518.191 67.1215C518.344 66.9445 518.476 66.7715 518.587 66.6025C518.695 66.4335 518.778 66.2631 518.836 66.0914C518.897 65.9171 518.928 65.7349 518.928 65.5447C518.928 65.2938 518.888 65.0654 518.809 64.8593C518.729 64.6507 518.615 64.4724 518.464 64.3245C518.311 64.1766 518.121 64.0617 517.894 63.9798C517.669 63.898 517.41 63.857 517.117 63.857C516.811 63.857 516.531 63.9072 516.277 64.0076C516.026 64.1053 515.812 64.24 515.635 64.4117C515.456 64.5833 515.317 64.7841 515.219 65.0138C515.122 65.241 515.073 65.4827 515.073 65.7388H516.178C516.178 65.583 516.198 65.4444 516.238 65.3229C516.277 65.2014 516.335 65.0997 516.412 65.0178C516.486 64.9386 516.578 64.8791 516.689 64.8395C516.803 64.7973 516.933 64.7761 517.081 64.7761C517.195 64.7761 517.298 64.7946 517.39 64.8316C517.485 64.8686 517.567 64.9214 517.636 64.9901C517.702 65.0614 517.754 65.1472 517.791 65.2476C517.828 65.348 517.846 65.4628 517.846 65.5923C517.846 65.6794 517.831 65.7692 517.802 65.8617C517.776 65.9541 517.732 66.0531 517.672 66.1588C517.608 66.2671 517.526 66.3859 517.426 66.5153C517.326 66.6448 517.203 66.7887 517.058 66.9472L515.192 68.9518V69.7045H519.126Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"555.5\"\n      cy=\"66.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M553.41 66.864L554.289 67.0819C554.331 67.0396 554.376 67 554.424 66.963C554.471 66.9234 554.525 66.8891 554.586 66.86C554.647 66.831 554.717 66.8072 554.796 66.7887C554.875 66.7702 554.969 66.761 555.077 66.761C555.239 66.761 555.379 66.7861 555.497 66.8362C555.616 66.8864 555.715 66.9577 555.795 67.0502C555.874 67.1426 555.932 67.2535 555.969 67.383C556.008 67.5097 556.028 67.6497 556.028 67.8029C556.028 67.9587 556.012 68.104 555.981 68.2387C555.952 68.3734 555.905 68.4896 555.842 68.5873C555.776 68.6851 555.69 68.7617 555.585 68.8171C555.482 68.8726 555.356 68.9003 555.208 68.9003C554.968 68.9003 554.77 68.8316 554.614 68.6943C554.461 68.557 554.371 68.3628 554.345 68.1119H553.259C553.267 68.3787 553.326 68.6164 553.437 68.825C553.551 69.031 553.697 69.2054 553.877 69.348C554.057 69.4906 554.261 69.5989 554.491 69.6729C554.724 69.7468 554.964 69.7838 555.212 69.7838C555.54 69.7838 555.824 69.7323 556.064 69.6293C556.304 69.5263 556.504 69.3863 556.662 69.2093C556.821 69.0324 556.938 68.8277 557.015 68.5953C557.091 68.3628 557.13 68.1172 557.13 67.8584C557.13 67.5546 557.09 67.2826 557.011 67.0423C556.932 66.8019 556.818 66.5985 556.67 66.4321C556.52 66.2658 556.335 66.139 556.115 66.0518C555.899 65.962 555.652 65.9171 555.375 65.9171C555.179 65.9171 555.006 65.9422 554.856 65.9924C554.705 66.0426 554.589 66.0914 554.507 66.139L554.646 64.8712H556.939V63.9363H553.738L553.41 66.864Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M479.362 64.2317H478.257L478.253 68.0548C478.25 68.2423 478.23 68.4074 478.193 68.55C478.156 68.6926 478.101 68.8115 478.027 68.9066C477.958 68.999 477.871 69.069 477.765 69.1165C477.662 69.1614 477.543 69.1839 477.409 69.1839C477.285 69.1839 477.175 69.1628 477.08 69.1205C476.985 69.0756 476.904 69.0096 476.838 68.9224C476.767 68.8273 476.713 68.7072 476.676 68.5619C476.641 68.4166 476.623 68.2476 476.62 68.0548L476.616 64.2317H475.503L475.499 68.0548C475.499 68.377 475.544 68.6649 475.634 68.9184C475.726 69.1694 475.856 69.3806 476.022 69.5523C476.189 69.724 476.388 69.8547 476.62 69.9445C476.855 70.0343 477.118 70.0792 477.409 70.0792C477.718 70.0792 477.992 70.0343 478.233 69.9445C478.476 69.8547 478.682 69.7227 478.851 69.5484C479.017 69.3767 479.144 69.1654 479.231 68.9145C479.321 68.6636 479.366 68.377 479.366 68.0548L479.362 64.2317ZM480.447 71.6481H481.549V69.6276C481.599 69.6831 481.652 69.7332 481.707 69.7781C481.763 69.823 481.821 69.864 481.882 69.901C481.985 69.9591 482.095 70.0026 482.214 70.0317C482.336 70.0634 482.468 70.0792 482.61 70.0792C482.88 70.0792 483.119 70.0238 483.328 69.9128C483.536 69.8019 483.712 69.6487 483.854 69.4533C483.994 69.2605 484.1 69.0307 484.171 68.7639C484.245 68.4972 484.282 68.208 484.282 67.8963V67.8131C484.282 67.4883 484.245 67.1924 484.171 66.9257C484.1 66.6563 483.993 66.4252 483.851 66.2324C483.708 66.0422 483.532 65.8956 483.324 65.7926C483.115 65.687 482.875 65.6342 482.603 65.6342C482.471 65.6342 482.346 65.6487 482.23 65.6777C482.117 65.7042 482.012 65.7425 481.917 65.7926C481.838 65.8349 481.764 65.8851 481.695 65.9432C481.627 65.9986 481.563 66.062 481.505 66.1333L481.466 65.7134H480.447V71.6481ZM483.181 67.8131V67.8963C483.181 68.0733 483.165 68.241 483.133 68.3995C483.102 68.5553 483.052 68.6926 482.983 68.8115C482.914 68.9303 482.824 69.0241 482.714 69.0928C482.605 69.1614 482.473 69.1958 482.317 69.1958C482.22 69.1958 482.131 69.1865 482.052 69.168C481.973 69.1469 481.903 69.1179 481.842 69.0809C481.779 69.0413 481.722 68.9937 481.672 68.9383C481.624 68.8828 481.583 68.8207 481.549 68.7521V66.9613C481.586 66.8874 481.629 66.8227 481.679 66.7672C481.732 66.7118 481.793 66.6655 481.862 66.6286C481.922 66.5969 481.99 66.5731 482.064 66.5573C482.138 66.5388 482.22 66.5295 482.309 66.5295C482.465 66.5295 482.597 66.5625 482.706 66.6286C482.817 66.6946 482.908 66.7844 482.979 66.898C483.048 67.0142 483.098 67.1515 483.129 67.31C483.164 67.4658 483.181 67.6335 483.181 67.8131ZM485.19 67.825V67.9082C485.19 68.2199 485.228 68.5091 485.304 68.7758C485.381 69.0399 485.492 69.2684 485.637 69.4612C485.78 69.654 485.954 69.8059 486.16 69.9168C486.369 70.0251 486.604 70.0792 486.865 70.0792C487.106 70.0792 487.317 70.033 487.499 69.9406C487.682 69.8481 487.84 69.7187 487.975 69.5523L488.03 70H489.025V63.9148H487.919V66.0977C487.787 65.9498 487.635 65.8362 487.464 65.757C487.295 65.6751 487.098 65.6342 486.873 65.6342C486.607 65.6342 486.369 65.687 486.16 65.7926C485.954 65.8983 485.779 66.0475 485.633 66.2403C485.488 66.4331 485.377 66.6642 485.301 66.9336C485.227 67.203 485.19 67.5001 485.19 67.825ZM486.291 67.9082V67.825C486.291 67.6454 486.307 67.4777 486.338 67.3219C486.37 67.1634 486.42 67.0247 486.489 66.9059C486.558 66.7897 486.646 66.6986 486.754 66.6325C486.865 66.5639 486.999 66.5295 487.155 66.5295C487.342 66.5295 487.498 66.5705 487.622 66.6523C487.746 66.7316 487.845 66.8438 487.919 66.9891V68.7243C487.845 68.8669 487.745 68.9792 487.618 69.0611C487.494 69.1429 487.337 69.1839 487.147 69.1839C486.991 69.1839 486.859 69.1509 486.751 69.0848C486.642 69.0188 486.554 68.9277 486.485 68.8115C486.416 68.6979 486.366 68.5645 486.335 68.4113C486.305 68.2555 486.291 68.0878 486.291 67.9082ZM492.856 70H493.973V69.9327C493.917 69.8244 493.875 69.6949 493.846 69.5444C493.817 69.3939 493.802 69.2037 493.802 68.9739V67.1357C493.802 66.8874 493.756 66.6695 493.664 66.482C493.571 66.2918 493.443 66.1347 493.279 66.0105C493.116 65.8864 492.922 65.7926 492.697 65.7292C492.475 65.6659 492.235 65.6342 491.976 65.6342C491.688 65.6342 491.432 65.6711 491.207 65.7451C490.986 65.8164 490.798 65.9141 490.645 66.0383C490.489 66.1624 490.37 66.3063 490.288 66.4701C490.209 66.6338 490.169 66.8068 490.169 66.9891H491.271C491.271 66.9125 491.281 66.8425 491.303 66.7791C491.326 66.7157 491.362 66.6616 491.41 66.6167C491.462 66.5665 491.531 66.5282 491.616 66.5018C491.7 66.4727 491.8 66.4582 491.917 66.4582C492.049 66.4582 492.164 66.4754 492.261 66.5097C492.362 66.5414 492.445 66.5876 492.511 66.6484C492.574 66.7065 492.622 66.7765 492.653 66.8583C492.685 66.9376 492.701 67.0274 492.701 67.1277V67.3813H492.087C491.77 67.3813 491.489 67.4103 491.243 67.4685C491 67.5239 490.795 67.6058 490.629 67.7141C490.444 67.8329 490.306 67.9848 490.213 68.1697C490.121 68.3519 490.074 68.5619 490.074 68.7996C490.074 68.9845 490.111 69.1562 490.185 69.3146C490.259 69.4704 490.362 69.6051 490.494 69.7187C490.626 69.8323 490.784 69.9208 490.966 69.9842C491.151 70.0475 491.353 70.0792 491.572 70.0792C491.707 70.0792 491.832 70.066 491.948 70.0396C492.065 70.0158 492.171 69.9815 492.269 69.9366C492.364 69.8944 492.451 69.8442 492.531 69.7861C492.61 69.728 492.68 69.6659 492.741 69.5999C492.754 69.6765 492.77 69.7491 492.788 69.8178C492.807 69.8864 492.829 69.9472 492.856 70ZM491.806 69.2275C491.703 69.2275 491.612 69.2156 491.532 69.1918C491.456 69.1654 491.391 69.1311 491.338 69.0888C491.285 69.0439 491.244 68.9898 491.215 68.9264C491.189 68.8603 491.176 68.789 491.176 68.7124C491.176 68.6147 491.194 68.5249 491.231 68.443C491.268 68.3585 491.325 68.2859 491.402 68.2251C491.478 68.167 491.577 68.1221 491.699 68.0904C491.82 68.0561 491.967 68.0389 492.138 68.0389H492.701V68.7758C492.669 68.8313 492.626 68.8868 492.57 68.9422C492.515 68.995 492.449 69.0426 492.372 69.0848C492.296 69.1271 492.21 69.1614 492.115 69.1878C492.02 69.2143 491.917 69.2275 491.806 69.2275ZM497.071 64.6635H495.969V65.7134H494.991V66.5256H495.969V68.4747C495.969 68.7573 496.006 69.0003 496.08 69.2037C496.154 69.4044 496.26 69.5695 496.397 69.6989C496.532 69.831 496.694 69.9287 496.885 69.9921C497.077 70.0528 497.291 70.0832 497.526 70.0832C497.648 70.0832 497.771 70.0766 497.895 70.0634C498.022 70.0528 498.143 70.037 498.259 70.0158C498.376 69.9947 498.485 69.9683 498.588 69.9366C498.691 69.9023 498.781 69.8627 498.858 69.8178L498.751 69.0611C498.7 69.0743 498.64 69.0875 498.568 69.1007C498.5 69.1139 498.426 69.1258 498.347 69.1363C498.265 69.1495 498.179 69.1601 498.089 69.168C498.002 69.176 497.916 69.1799 497.831 69.1799C497.715 69.1799 497.61 69.1667 497.515 69.1403C497.422 69.1139 497.343 69.069 497.277 69.0056C497.211 68.9449 497.159 68.863 497.122 68.76C497.088 68.6543 497.071 68.5236 497.071 68.3678V66.5256H498.671V65.7134H497.071V64.6635ZM502.003 70.0792C502.418 70.0792 502.777 69.9987 503.081 69.8376C503.385 69.6765 503.606 69.4969 503.746 69.2988L503.196 68.7045C503.069 68.8683 502.904 68.9911 502.7 69.073C502.497 69.1548 502.287 69.1958 502.071 69.1958C501.917 69.1958 501.776 69.172 501.647 69.1245C501.517 69.0769 501.402 69.0096 501.302 68.9224C501.204 68.8379 501.126 68.7441 501.068 68.6411C501.01 68.5355 500.963 68.3968 500.926 68.2251V68.2133H503.834V67.7458C503.834 67.4315 503.79 67.1449 503.703 66.8861C503.616 66.6246 503.489 66.4014 503.322 66.2165C503.153 66.0317 502.947 65.889 502.704 65.7887C502.464 65.6857 502.189 65.6342 501.88 65.6342C501.582 65.6342 501.306 65.6883 501.052 65.7966C500.799 65.9049 500.58 66.0568 500.395 66.2522C500.21 66.4476 500.066 66.6814 499.963 66.9534C499.86 67.2228 499.808 67.5213 499.808 67.8488V68.0072C499.808 68.2951 499.86 68.5659 499.963 68.8194C500.069 69.0703 500.218 69.2882 500.411 69.4731C500.603 69.6606 500.834 69.8085 501.104 69.9168C501.373 70.0251 501.673 70.0792 502.003 70.0792ZM501.872 66.5256C502.012 66.5256 502.135 66.548 502.241 66.5929C502.349 66.6352 502.44 66.6933 502.514 66.7672C502.588 66.8438 502.646 66.9336 502.689 67.0366C502.731 67.1396 502.752 67.2492 502.752 67.3654V67.4526H500.945C500.972 67.3126 501.011 67.1858 501.064 67.0723C501.117 66.9587 501.183 66.861 501.262 66.7791C501.339 66.6972 501.429 66.6352 501.532 66.5929C501.635 66.548 501.748 66.5256 501.872 66.5256Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M533.579 64.6635H532.478V65.7134H531.499V66.5256H532.478V68.4747C532.478 68.7573 532.515 69.0003 532.589 69.2037C532.663 69.4044 532.768 69.5695 532.906 69.6989C533.04 69.831 533.203 69.9287 533.393 69.9921C533.586 70.0528 533.8 70.0832 534.035 70.0832C534.156 70.0832 534.279 70.0766 534.403 70.0634C534.53 70.0528 534.651 70.037 534.768 70.0158C534.884 69.9947 534.993 69.9683 535.096 69.9366C535.199 69.9023 535.289 69.8627 535.366 69.8178L535.259 69.0611C535.209 69.0743 535.148 69.0875 535.077 69.1007C535.008 69.1139 534.934 69.1258 534.855 69.1363C534.773 69.1495 534.687 69.1601 534.597 69.168C534.51 69.176 534.424 69.1799 534.34 69.1799C534.224 69.1799 534.118 69.1667 534.023 69.1403C533.93 69.1139 533.851 69.069 533.785 69.0056C533.719 68.9449 533.668 68.863 533.631 68.76C533.596 68.6543 533.579 68.5236 533.579 68.3678V66.5256H535.18V65.7134H533.579V64.6635ZM536.281 67.8171V67.9003C536.281 68.2146 536.326 68.5051 536.416 68.7719C536.505 69.036 536.638 69.2658 536.812 69.4612C536.984 69.6566 537.195 69.8098 537.446 69.9208C537.699 70.0291 537.987 70.0832 538.309 70.0832C538.629 70.0832 538.914 70.0291 539.165 69.9208C539.416 69.8098 539.627 69.6566 539.799 69.4612C539.971 69.2658 540.101 69.036 540.191 68.7719C540.281 68.5051 540.326 68.2146 540.326 67.9003V67.8171C540.326 67.5054 540.281 67.2175 540.191 66.9534C540.101 66.6867 539.971 66.4556 539.799 66.2601C539.625 66.0647 539.412 65.9115 539.161 65.8006C538.91 65.6896 538.624 65.6342 538.301 65.6342C537.979 65.6342 537.693 65.6896 537.442 65.8006C537.194 65.9115 536.984 66.0647 536.812 66.2601C536.638 66.4556 536.505 66.6867 536.416 66.9534C536.326 67.2175 536.281 67.5054 536.281 67.8171ZM537.382 67.9003V67.8171C537.382 67.6428 537.4 67.4777 537.434 67.3219C537.468 67.166 537.522 67.0287 537.596 66.9098C537.67 66.791 537.765 66.6972 537.882 66.6286C537.998 66.5599 538.138 66.5256 538.301 66.5256C538.468 66.5256 538.609 66.5599 538.725 66.6286C538.842 66.6972 538.937 66.791 539.011 66.9098C539.082 67.0287 539.135 67.166 539.169 67.3219C539.203 67.4777 539.221 67.6428 539.221 67.8171V67.9003C539.221 68.0799 539.203 68.2489 539.169 68.4074C539.135 68.5632 539.082 68.6992 539.011 68.8154C538.937 68.9343 538.842 69.0281 538.725 69.0967C538.609 69.1654 538.471 69.1997 538.309 69.1997C538.143 69.1997 538 69.1654 537.882 69.0967C537.765 69.0281 537.67 68.9343 537.596 68.8154C537.522 68.6992 537.468 68.5632 537.434 68.4074C537.4 68.2489 537.382 68.0799 537.382 67.9003Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"143.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M515.41 143.864L516.289 144.082C516.331 144.04 516.376 144 516.424 143.963C516.471 143.923 516.525 143.889 516.586 143.86C516.647 143.831 516.717 143.807 516.796 143.789C516.875 143.77 516.969 143.761 517.077 143.761C517.239 143.761 517.379 143.786 517.497 143.836C517.616 143.886 517.715 143.958 517.795 144.05C517.874 144.143 517.932 144.254 517.969 144.383C518.008 144.51 518.028 144.65 518.028 144.803C518.028 144.959 518.012 145.104 517.981 145.239C517.952 145.373 517.905 145.49 517.842 145.587C517.776 145.685 517.69 145.762 517.585 145.817C517.482 145.873 517.356 145.9 517.208 145.9C516.968 145.9 516.77 145.832 516.614 145.694C516.461 145.557 516.371 145.363 516.345 145.112H515.259C515.267 145.379 515.326 145.616 515.437 145.825C515.551 146.031 515.697 146.205 515.877 146.348C516.057 146.491 516.261 146.599 516.491 146.673C516.724 146.747 516.964 146.784 517.212 146.784C517.54 146.784 517.824 146.732 518.064 146.629C518.304 146.526 518.504 146.386 518.662 146.209C518.821 146.032 518.938 145.828 519.015 145.595C519.091 145.363 519.13 145.117 519.13 144.858C519.13 144.555 519.09 144.283 519.011 144.042C518.932 143.802 518.818 143.599 518.67 143.432C518.52 143.266 518.335 143.139 518.115 143.052C517.899 142.962 517.652 142.917 517.375 142.917C517.179 142.917 517.006 142.942 516.856 142.992C516.705 143.043 516.589 143.091 516.507 143.139L516.646 141.871H518.939V140.936H515.738L515.41 143.864Z\"\n      fill=\"black\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"555.5\"\n      cy=\"143.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M557.126 146.705V145.821H554.594L555.68 144.672C555.867 144.479 556.037 144.296 556.191 144.121C556.344 143.945 556.476 143.772 556.587 143.603C556.695 143.433 556.778 143.263 556.836 143.091C556.897 142.917 556.928 142.735 556.928 142.545C556.928 142.294 556.888 142.065 556.809 141.859C556.729 141.651 556.615 141.472 556.464 141.325C556.311 141.177 556.121 141.062 555.894 140.98C555.669 140.898 555.41 140.857 555.117 140.857C554.811 140.857 554.531 140.907 554.277 141.008C554.026 141.105 553.812 141.24 553.635 141.412C553.456 141.583 553.317 141.784 553.219 142.014C553.122 142.241 553.073 142.483 553.073 142.739H554.178C554.178 142.583 554.198 142.444 554.238 142.323C554.277 142.201 554.335 142.1 554.412 142.018C554.486 141.939 554.578 141.879 554.689 141.84C554.803 141.797 554.933 141.776 555.081 141.776C555.195 141.776 555.298 141.795 555.39 141.832C555.485 141.869 555.567 141.921 555.636 141.99C555.702 142.061 555.754 142.147 555.791 142.248C555.828 142.348 555.846 142.463 555.846 142.592C555.846 142.679 555.831 142.769 555.802 142.862C555.776 142.954 555.732 143.053 555.672 143.159C555.608 143.267 555.526 143.386 555.426 143.515C555.326 143.645 555.203 143.789 555.058 143.947L553.192 145.952V146.705H557.126Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M479.362 141.232H478.257L478.253 145.055C478.25 145.242 478.23 145.407 478.193 145.55C478.156 145.693 478.101 145.811 478.027 145.907C477.958 145.999 477.871 146.069 477.765 146.117C477.662 146.161 477.543 146.184 477.409 146.184C477.285 146.184 477.175 146.163 477.08 146.12C476.985 146.076 476.904 146.01 476.838 145.922C476.767 145.827 476.713 145.707 476.676 145.562C476.641 145.417 476.623 145.248 476.62 145.055L476.616 141.232H475.503L475.499 145.055C475.499 145.377 475.544 145.665 475.634 145.918C475.726 146.169 475.856 146.381 476.022 146.552C476.189 146.724 476.388 146.855 476.62 146.945C476.855 147.034 477.118 147.079 477.409 147.079C477.718 147.079 477.992 147.034 478.233 146.945C478.476 146.855 478.682 146.723 478.851 146.548C479.017 146.377 479.144 146.165 479.231 145.914C479.321 145.664 479.366 145.377 479.366 145.055L479.362 141.232ZM480.447 148.648H481.549V146.628C481.599 146.683 481.652 146.733 481.707 146.778C481.763 146.823 481.821 146.864 481.882 146.901C481.985 146.959 482.095 147.003 482.214 147.032C482.336 147.063 482.468 147.079 482.61 147.079C482.88 147.079 483.119 147.024 483.328 146.913C483.536 146.802 483.712 146.649 483.854 146.453C483.994 146.26 484.1 146.031 484.171 145.764C484.245 145.497 484.282 145.208 484.282 144.896V144.813C484.282 144.488 484.245 144.192 484.171 143.926C484.1 143.656 483.993 143.425 483.851 143.232C483.708 143.042 483.532 142.896 483.324 142.793C483.115 142.687 482.875 142.634 482.603 142.634C482.471 142.634 482.346 142.649 482.23 142.678C482.117 142.704 482.012 142.742 481.917 142.793C481.838 142.835 481.764 142.885 481.695 142.943C481.627 142.999 481.563 143.062 481.505 143.133L481.466 142.713H480.447V148.648ZM483.181 144.813V144.896C483.181 145.073 483.165 145.241 483.133 145.399C483.102 145.555 483.052 145.693 482.983 145.811C482.914 145.93 482.824 146.024 482.714 146.093C482.605 146.161 482.473 146.196 482.317 146.196C482.22 146.196 482.131 146.187 482.052 146.168C481.973 146.147 481.903 146.118 481.842 146.081C481.779 146.041 481.722 145.994 481.672 145.938C481.624 145.883 481.583 145.821 481.549 145.752V143.961C481.586 143.887 481.629 143.823 481.679 143.767C481.732 143.712 481.793 143.666 481.862 143.629C481.922 143.597 481.99 143.573 482.064 143.557C482.138 143.539 482.22 143.53 482.309 143.53C482.465 143.53 482.597 143.563 482.706 143.629C482.817 143.695 482.908 143.784 482.979 143.898C483.048 144.014 483.098 144.152 483.129 144.31C483.164 144.466 483.181 144.634 483.181 144.813ZM485.19 144.825V144.908C485.19 145.22 485.228 145.509 485.304 145.776C485.381 146.04 485.492 146.268 485.637 146.461C485.78 146.654 485.954 146.806 486.16 146.917C486.369 147.025 486.604 147.079 486.865 147.079C487.106 147.079 487.317 147.033 487.499 146.941C487.682 146.848 487.84 146.719 487.975 146.552L488.03 147H489.025V140.915H487.919V143.098C487.787 142.95 487.635 142.836 487.464 142.757C487.295 142.675 487.098 142.634 486.873 142.634C486.607 142.634 486.369 142.687 486.16 142.793C485.954 142.898 485.779 143.048 485.633 143.24C485.488 143.433 485.377 143.664 485.301 143.934C485.227 144.203 485.19 144.5 485.19 144.825ZM486.291 144.908V144.825C486.291 144.645 486.307 144.478 486.338 144.322C486.37 144.163 486.42 144.025 486.489 143.906C486.558 143.79 486.646 143.699 486.754 143.633C486.865 143.564 486.999 143.53 487.155 143.53C487.342 143.53 487.498 143.57 487.622 143.652C487.746 143.732 487.845 143.844 487.919 143.989V145.724C487.845 145.867 487.745 145.979 487.618 146.061C487.494 146.143 487.337 146.184 487.147 146.184C486.991 146.184 486.859 146.151 486.751 146.085C486.642 146.019 486.554 145.928 486.485 145.811C486.416 145.698 486.366 145.565 486.335 145.411C486.305 145.256 486.291 145.088 486.291 144.908ZM492.856 147H493.973V146.933C493.917 146.824 493.875 146.695 493.846 146.544C493.817 146.394 493.802 146.204 493.802 145.974V144.136C493.802 143.887 493.756 143.67 493.664 143.482C493.571 143.292 493.443 143.135 493.279 143.011C493.116 142.886 492.922 142.793 492.697 142.729C492.475 142.666 492.235 142.634 491.976 142.634C491.688 142.634 491.432 142.671 491.207 142.745C490.986 142.816 490.798 142.914 490.645 143.038C490.489 143.162 490.37 143.306 490.288 143.47C490.209 143.634 490.169 143.807 490.169 143.989H491.271C491.271 143.912 491.281 143.842 491.303 143.779C491.326 143.716 491.362 143.662 491.41 143.617C491.462 143.566 491.531 143.528 491.616 143.502C491.7 143.473 491.8 143.458 491.917 143.458C492.049 143.458 492.164 143.475 492.261 143.51C492.362 143.541 492.445 143.588 492.511 143.648C492.574 143.706 492.622 143.776 492.653 143.858C492.685 143.938 492.701 144.027 492.701 144.128V144.381H492.087C491.77 144.381 491.489 144.41 491.243 144.468C491 144.524 490.795 144.606 490.629 144.714C490.444 144.833 490.306 144.985 490.213 145.17C490.121 145.352 490.074 145.562 490.074 145.8C490.074 145.984 490.111 146.156 490.185 146.315C490.259 146.47 490.362 146.605 490.494 146.719C490.626 146.832 490.784 146.921 490.966 146.984C491.151 147.048 491.353 147.079 491.572 147.079C491.707 147.079 491.832 147.066 491.948 147.04C492.065 147.016 492.171 146.982 492.269 146.937C492.364 146.894 492.451 146.844 492.531 146.786C492.61 146.728 492.68 146.666 492.741 146.6C492.754 146.676 492.77 146.749 492.788 146.818C492.807 146.886 492.829 146.947 492.856 147ZM491.806 146.227C491.703 146.227 491.612 146.216 491.532 146.192C491.456 146.165 491.391 146.131 491.338 146.089C491.285 146.044 491.244 145.99 491.215 145.926C491.189 145.86 491.176 145.789 491.176 145.712C491.176 145.615 491.194 145.525 491.231 145.443C491.268 145.359 491.325 145.286 491.402 145.225C491.478 145.167 491.577 145.122 491.699 145.09C491.82 145.056 491.967 145.039 492.138 145.039H492.701V145.776C492.669 145.831 492.626 145.887 492.57 145.942C492.515 145.995 492.449 146.043 492.372 146.085C492.296 146.127 492.21 146.161 492.115 146.188C492.02 146.214 491.917 146.227 491.806 146.227ZM497.071 141.664H495.969V142.713H494.991V143.526H495.969V145.475C495.969 145.757 496.006 146 496.08 146.204C496.154 146.404 496.26 146.569 496.397 146.699C496.532 146.831 496.694 146.929 496.885 146.992C497.077 147.053 497.291 147.083 497.526 147.083C497.648 147.083 497.771 147.077 497.895 147.063C498.022 147.053 498.143 147.037 498.259 147.016C498.376 146.995 498.485 146.968 498.588 146.937C498.691 146.902 498.781 146.863 498.858 146.818L498.751 146.061C498.7 146.074 498.64 146.087 498.568 146.101C498.5 146.114 498.426 146.126 498.347 146.136C498.265 146.15 498.179 146.16 498.089 146.168C498.002 146.176 497.916 146.18 497.831 146.18C497.715 146.18 497.61 146.167 497.515 146.14C497.422 146.114 497.343 146.069 497.277 146.006C497.211 145.945 497.159 145.863 497.122 145.76C497.088 145.654 497.071 145.524 497.071 145.368V143.526H498.671V142.713H497.071V141.664ZM502.003 147.079C502.418 147.079 502.777 146.999 503.081 146.838C503.385 146.676 503.606 146.497 503.746 146.299L503.196 145.705C503.069 145.868 502.904 145.991 502.7 146.073C502.497 146.155 502.287 146.196 502.071 146.196C501.917 146.196 501.776 146.172 501.647 146.124C501.517 146.077 501.402 146.01 501.302 145.922C501.204 145.838 501.126 145.744 501.068 145.641C501.01 145.535 500.963 145.397 500.926 145.225V145.213H503.834V144.746C503.834 144.431 503.79 144.145 503.703 143.886C503.616 143.625 503.489 143.401 503.322 143.217C503.153 143.032 502.947 142.889 502.704 142.789C502.464 142.686 502.189 142.634 501.88 142.634C501.582 142.634 501.306 142.688 501.052 142.797C500.799 142.905 500.58 143.057 500.395 143.252C500.21 143.448 500.066 143.681 499.963 143.953C499.86 144.223 499.808 144.521 499.808 144.849V145.007C499.808 145.295 499.86 145.566 499.963 145.819C500.069 146.07 500.218 146.288 500.411 146.473C500.603 146.661 500.834 146.809 501.104 146.917C501.373 147.025 501.673 147.079 502.003 147.079ZM501.872 143.526C502.012 143.526 502.135 143.548 502.241 143.593C502.349 143.635 502.44 143.693 502.514 143.767C502.588 143.844 502.646 143.934 502.689 144.037C502.731 144.14 502.752 144.249 502.752 144.365V144.453H500.945C500.972 144.313 501.011 144.186 501.064 144.072C501.117 143.959 501.183 143.861 501.262 143.779C501.339 143.697 501.429 143.635 501.532 143.593C501.635 143.548 501.748 143.526 501.872 143.526Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M533.579 141.664H532.478V142.713H531.499V143.526H532.478V145.475C532.478 145.757 532.515 146 532.589 146.204C532.663 146.404 532.768 146.569 532.906 146.699C533.04 146.831 533.203 146.929 533.393 146.992C533.586 147.053 533.8 147.083 534.035 147.083C534.156 147.083 534.279 147.077 534.403 147.063C534.53 147.053 534.651 147.037 534.768 147.016C534.884 146.995 534.993 146.968 535.096 146.937C535.199 146.902 535.289 146.863 535.366 146.818L535.259 146.061C535.209 146.074 535.148 146.087 535.077 146.101C535.008 146.114 534.934 146.126 534.855 146.136C534.773 146.15 534.687 146.16 534.597 146.168C534.51 146.176 534.424 146.18 534.34 146.18C534.224 146.18 534.118 146.167 534.023 146.14C533.93 146.114 533.851 146.069 533.785 146.006C533.719 145.945 533.668 145.863 533.631 145.76C533.596 145.654 533.579 145.524 533.579 145.368V143.526H535.18V142.713H533.579V141.664ZM536.281 144.817V144.9C536.281 145.215 536.326 145.505 536.416 145.772C536.505 146.036 536.638 146.266 536.812 146.461C536.984 146.657 537.195 146.81 537.446 146.921C537.699 147.029 537.987 147.083 538.309 147.083C538.629 147.083 538.914 147.029 539.165 146.921C539.416 146.81 539.627 146.657 539.799 146.461C539.971 146.266 540.101 146.036 540.191 145.772C540.281 145.505 540.326 145.215 540.326 144.9V144.817C540.326 144.505 540.281 144.218 540.191 143.953C540.101 143.687 539.971 143.456 539.799 143.26C539.625 143.065 539.412 142.911 539.161 142.801C538.91 142.69 538.624 142.634 538.301 142.634C537.979 142.634 537.693 142.69 537.442 142.801C537.194 142.911 536.984 143.065 536.812 143.26C536.638 143.456 536.505 143.687 536.416 143.953C536.326 144.218 536.281 144.505 536.281 144.817ZM537.382 144.9V144.817C537.382 144.643 537.4 144.478 537.434 144.322C537.468 144.166 537.522 144.029 537.596 143.91C537.67 143.791 537.765 143.697 537.882 143.629C537.998 143.56 538.138 143.526 538.301 143.526C538.468 143.526 538.609 143.56 538.725 143.629C538.842 143.697 538.937 143.791 539.011 143.91C539.082 144.029 539.135 144.166 539.169 144.322C539.203 144.478 539.221 144.643 539.221 144.817V144.9C539.221 145.08 539.203 145.249 539.169 145.407C539.135 145.563 539.082 145.699 539.011 145.815C538.937 145.934 538.842 146.028 538.725 146.097C538.609 146.165 538.471 146.2 538.309 146.2C538.143 146.2 538 146.165 537.882 146.097C537.765 146.028 537.67 145.934 537.596 145.815C537.522 145.699 537.468 145.563 537.434 145.407C537.4 145.249 537.382 145.08 537.382 144.9Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"92.3068\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M516.463 92.3371V93.1928H517.062C517.212 93.1928 517.347 93.21 517.466 93.2443C517.587 93.2786 517.692 93.3315 517.779 93.4028C517.863 93.4741 517.928 93.5652 517.973 93.6761C518.018 93.7871 518.04 93.9204 518.04 94.0763C518.04 94.2004 518.02 94.3127 517.981 94.413C517.944 94.5134 517.888 94.5979 517.814 94.6666C517.738 94.7432 517.643 94.8013 517.529 94.8409C517.415 94.8805 517.287 94.9003 517.145 94.9003C517.018 94.9003 516.902 94.8818 516.796 94.8448C516.691 94.8052 516.599 94.7511 516.523 94.6824C516.444 94.6164 516.383 94.5372 516.341 94.4447C516.298 94.3496 516.277 94.2466 516.277 94.1357H515.176C515.176 94.4157 515.23 94.6586 515.338 94.8647C515.449 95.0707 515.596 95.241 515.778 95.3757C515.96 95.5131 516.168 95.6161 516.4 95.6847C516.635 95.7508 516.875 95.7838 517.121 95.7838C517.406 95.7838 517.672 95.7468 517.917 95.6729C518.166 95.5963 518.38 95.4853 518.559 95.3401C518.739 95.1974 518.88 95.0205 518.983 94.8092C519.086 94.5979 519.138 94.3576 519.138 94.0882C519.138 93.935 519.119 93.7897 519.082 93.6524C519.045 93.515 518.988 93.3882 518.912 93.272C518.835 93.1585 518.737 93.0568 518.619 92.967C518.502 92.8772 518.364 92.8032 518.203 92.7451C518.34 92.6791 518.461 92.6012 518.567 92.5114C518.673 92.4189 518.761 92.3186 518.832 92.2103C518.904 92.102 518.958 91.9884 518.995 91.8696C519.032 91.7481 519.05 91.6253 519.05 91.5011C519.05 91.2317 519.003 90.9954 518.908 90.792C518.815 90.586 518.685 90.413 518.516 90.273C518.347 90.1357 518.143 90.0327 517.905 89.964C517.668 89.8927 517.406 89.857 517.121 89.857C516.857 89.857 516.61 89.8953 516.38 89.9719C516.153 90.0485 515.955 90.1555 515.786 90.2928C515.617 90.4328 515.483 90.5992 515.386 90.792C515.291 90.9848 515.243 91.1987 515.243 91.4338H516.345C516.345 91.3281 516.366 91.2331 516.408 91.1485C516.45 91.064 516.508 90.9914 516.582 90.9307C516.654 90.8725 516.737 90.8276 516.832 90.796C516.93 90.7643 517.034 90.7484 517.145 90.7484C517.279 90.7484 517.397 90.7669 517.497 90.8039C517.6 90.8409 517.685 90.8924 517.751 90.9584C517.817 91.0271 517.866 91.1089 517.898 91.204C517.932 91.2965 517.949 91.3995 517.949 91.513C517.949 91.6292 517.932 91.7375 517.898 91.8379C517.866 91.9356 517.817 92.0188 517.751 92.0875C517.68 92.1667 517.586 92.2288 517.47 92.2737C517.356 92.3159 517.22 92.3371 517.062 92.3371H516.463Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.476 93.8448L478.562 96H479.754V95.9485L478.514 93.5675C478.673 93.4962 478.815 93.4117 478.942 93.3139C479.071 93.2162 479.182 93.1013 479.275 92.9693C479.365 92.8399 479.433 92.6933 479.481 92.5295C479.531 92.3631 479.556 92.1769 479.556 91.9709C479.556 91.6857 479.506 91.4348 479.405 91.2182C479.308 91.0016 479.168 90.8207 478.986 90.6754C478.801 90.5302 478.579 90.4206 478.32 90.3466C478.061 90.27 477.772 90.2317 477.452 90.2317H475.519V96H476.632V93.8448H477.476ZM476.632 92.9415V91.135H477.452C477.606 91.135 477.742 91.1535 477.86 91.1905C477.979 91.2274 478.08 91.2803 478.161 91.3489C478.254 91.4255 478.323 91.5232 478.367 91.6421C478.415 91.7583 478.439 91.893 478.439 92.0462C478.439 92.173 478.42 92.2879 478.383 92.3909C478.349 92.4939 478.297 92.5823 478.229 92.6563C478.147 92.7487 478.04 92.82 477.908 92.8702C477.778 92.9178 477.628 92.9415 477.456 92.9415H476.632ZM482.511 96.0792C482.926 96.0792 483.285 95.9987 483.589 95.8376C483.893 95.6765 484.115 95.4969 484.255 95.2988L483.704 94.7045C483.577 94.8683 483.412 94.9911 483.209 95.073C483.005 95.1548 482.795 95.1958 482.579 95.1958C482.426 95.1958 482.284 95.172 482.155 95.1245C482.025 95.0769 481.911 95.0096 481.81 94.9224C481.713 94.8379 481.635 94.7441 481.576 94.6411C481.518 94.5355 481.471 94.3968 481.434 94.2251V94.2133H484.342V93.7458C484.342 93.4315 484.298 93.1449 484.211 92.8861C484.124 92.6246 483.997 92.4014 483.831 92.2165C483.662 92.0317 483.456 91.889 483.213 91.7887C482.972 91.6857 482.698 91.6342 482.389 91.6342C482.09 91.6342 481.814 91.6883 481.561 91.7966C481.307 91.9049 481.088 92.0568 480.903 92.2522C480.718 92.4476 480.574 92.6814 480.471 92.9534C480.368 93.2228 480.317 93.5213 480.317 93.8488V94.0072C480.317 94.2951 480.368 94.5659 480.471 94.8194C480.577 95.0703 480.726 95.2882 480.919 95.4731C481.112 95.6606 481.343 95.8085 481.612 95.9168C481.882 96.0251 482.181 96.0792 482.511 96.0792ZM482.381 92.5256C482.521 92.5256 482.644 92.548 482.749 92.5929C482.857 92.6352 482.949 92.6933 483.023 92.7672C483.096 92.8438 483.155 92.9336 483.197 93.0366C483.239 93.1396 483.26 93.2492 483.26 93.3654V93.4526H481.454C481.48 93.3126 481.52 93.1858 481.573 93.0723C481.625 92.9587 481.691 92.861 481.771 92.7791C481.847 92.6972 481.937 92.6352 482.04 92.5929C482.143 92.548 482.257 92.5256 482.381 92.5256ZM485.99 91.7134H485.043V96H486.045V92.791C486.059 92.7567 486.073 92.725 486.089 92.6959C486.105 92.6669 486.123 92.6418 486.144 92.6206C486.173 92.5916 486.206 92.5691 486.243 92.5533C486.28 92.5374 486.323 92.5295 486.37 92.5295C486.412 92.5295 486.452 92.5361 486.489 92.5493C486.526 92.5599 486.559 92.5797 486.588 92.6088C486.614 92.6378 486.636 92.6787 486.651 92.7316C486.667 92.7844 486.675 92.8517 486.675 92.9336V96H487.646V92.8385C487.646 92.8068 487.646 92.7817 487.646 92.7633C487.646 92.7448 487.646 92.7329 487.646 92.7276C487.659 92.6986 487.675 92.6735 487.693 92.6523C487.712 92.6286 487.733 92.6074 487.757 92.5889C487.786 92.5705 487.816 92.5559 487.848 92.5454C487.882 92.5348 487.921 92.5295 487.963 92.5295C488.002 92.5295 488.041 92.5361 488.078 92.5493C488.117 92.5599 488.152 92.5797 488.181 92.6088C488.21 92.6404 488.232 92.6827 488.248 92.7355C488.267 92.7884 488.276 92.8557 488.276 92.9376V96H489.278V92.9415C489.278 92.7038 489.254 92.5031 489.207 92.3394C489.162 92.173 489.098 92.0369 489.017 91.9313C488.932 91.8283 488.833 91.753 488.719 91.7055C488.609 91.6579 488.488 91.6342 488.359 91.6342C488.256 91.6342 488.161 91.6474 488.074 91.6738C487.987 91.7002 487.909 91.7372 487.84 91.7847C487.785 91.8217 487.733 91.8666 487.685 91.9194C487.641 91.9696 487.6 92.0264 487.563 92.0898C487.539 92.0237 487.51 91.9656 487.476 91.9154C487.444 91.8626 487.406 91.8177 487.361 91.7808C487.303 91.7306 487.234 91.6936 487.155 91.6698C487.075 91.6461 486.986 91.6342 486.885 91.6342C486.679 91.6342 486.504 91.6883 486.358 91.7966C486.216 91.9022 486.103 92.0475 486.022 92.2324L485.99 91.7134ZM490.027 93.8171V93.9003C490.027 94.2146 490.072 94.5051 490.162 94.7719C490.251 95.036 490.383 95.2658 490.558 95.4612C490.729 95.6566 490.941 95.8098 491.192 95.9208C491.445 96.0291 491.733 96.0832 492.055 96.0832C492.375 96.0832 492.66 96.0291 492.911 95.9208C493.162 95.8098 493.373 95.6566 493.545 95.4612C493.717 95.2658 493.847 95.036 493.937 94.7719C494.027 94.5051 494.072 94.2146 494.072 93.9003V93.8171C494.072 93.5054 494.027 93.2175 493.937 92.9534C493.847 92.6867 493.717 92.4556 493.545 92.2601C493.371 92.0647 493.158 91.9115 492.907 91.8006C492.656 91.6896 492.37 91.6342 492.047 91.6342C491.725 91.6342 491.439 91.6896 491.188 91.8006C490.939 91.9115 490.729 92.0647 490.558 92.2601C490.383 92.4556 490.251 92.6867 490.162 92.9534C490.072 93.2175 490.027 93.5054 490.027 93.8171ZM491.128 93.9003V93.8171C491.128 93.6428 491.145 93.4777 491.18 93.3219C491.214 93.166 491.268 93.0287 491.342 92.9098C491.416 92.791 491.511 92.6972 491.627 92.6286C491.744 92.5599 491.884 92.5256 492.047 92.5256C492.214 92.5256 492.355 92.5599 492.471 92.6286C492.587 92.6972 492.683 92.791 492.757 92.9098C492.828 93.0287 492.881 93.166 492.915 93.3219C492.949 93.4777 492.966 93.6428 492.966 93.8171V93.9003C492.966 94.0799 492.949 94.2489 492.915 94.4074C492.881 94.5632 492.828 94.6992 492.757 94.8154C492.683 94.9343 492.587 95.0281 492.471 95.0967C492.355 95.1654 492.216 95.1997 492.055 95.1997C491.889 95.1997 491.746 95.1654 491.627 95.0967C491.511 95.0281 491.416 94.9343 491.342 94.8154C491.268 94.6992 491.214 94.5632 491.18 94.4074C491.145 94.2489 491.128 94.0799 491.128 93.9003ZM496.413 96H497.447L499.075 91.7134H497.927L496.988 94.7362L496.928 95.0373L496.869 94.7362L495.926 91.7134H494.777L496.413 96ZM502.003 96.0792C502.418 96.0792 502.777 95.9987 503.081 95.8376C503.385 95.6765 503.606 95.4969 503.746 95.2988L503.196 94.7045C503.069 94.8683 502.904 94.9911 502.7 95.073C502.497 95.1548 502.287 95.1958 502.071 95.1958C501.917 95.1958 501.776 95.172 501.647 95.1245C501.517 95.0769 501.402 95.0096 501.302 94.9224C501.204 94.8379 501.126 94.7441 501.068 94.6411C501.01 94.5355 500.963 94.3968 500.926 94.2251V94.2133H503.834V93.7458C503.834 93.4315 503.79 93.1449 503.703 92.8861C503.616 92.6246 503.489 92.4014 503.322 92.2165C503.153 92.0317 502.947 91.889 502.704 91.7887C502.464 91.6857 502.189 91.6342 501.88 91.6342C501.582 91.6342 501.306 91.6883 501.052 91.7966C500.799 91.9049 500.58 92.0568 500.395 92.2522C500.21 92.4476 500.066 92.6814 499.963 92.9534C499.86 93.2228 499.808 93.5213 499.808 93.8488V94.0072C499.808 94.2951 499.86 94.5659 499.963 94.8194C500.069 95.0703 500.218 95.2882 500.411 95.4731C500.603 95.6606 500.834 95.8085 501.104 95.9168C501.373 96.0251 501.673 96.0792 502.003 96.0792ZM501.872 92.5256C502.012 92.5256 502.135 92.548 502.241 92.5929C502.349 92.6352 502.44 92.6933 502.514 92.7672C502.588 92.8438 502.646 92.9336 502.689 93.0366C502.731 93.1396 502.752 93.2492 502.752 93.3654V93.4526H500.945C500.972 93.3126 501.011 93.1858 501.064 93.0723C501.117 92.9587 501.183 92.861 501.262 92.7791C501.339 92.6972 501.429 92.6352 501.532 92.5929C501.635 92.548 501.748 92.5256 501.872 92.5256Z\"\n      fill=\"white\"\n    />\n    <motion.ellipse\n      {...motionAnimationProps}\n      cx=\"517.5\"\n      cy=\"117.307\"\n      rx=\"8.5\"\n      ry=\"8.30682\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M518.571 118.561V114.936H517.454L515.029 118.763L515.073 119.453H517.47V120.705H518.571V119.453H519.241V118.561H518.571ZM516.111 118.561L517.363 116.608L517.47 116.418V118.561H516.111Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.476 118.845L478.562 121H479.754V120.948L478.514 118.567C478.673 118.496 478.815 118.412 478.942 118.314C479.071 118.216 479.182 118.101 479.275 117.969C479.365 117.84 479.433 117.693 479.481 117.53C479.531 117.363 479.556 117.177 479.556 116.971C479.556 116.686 479.506 116.435 479.405 116.218C479.308 116.002 479.168 115.821 478.986 115.675C478.801 115.53 478.579 115.421 478.32 115.347C478.061 115.27 477.772 115.232 477.452 115.232H475.519V121H476.632V118.845H477.476ZM476.632 117.942V116.135H477.452C477.606 116.135 477.742 116.153 477.86 116.19C477.979 116.227 478.08 116.28 478.161 116.349C478.254 116.426 478.323 116.523 478.367 116.642C478.415 116.758 478.439 116.893 478.439 117.046C478.439 117.173 478.42 117.288 478.383 117.391C478.349 117.494 478.297 117.582 478.229 117.656C478.147 117.749 478.04 117.82 477.908 117.87C477.778 117.918 477.628 117.942 477.456 117.942H476.632ZM482.511 121.079C482.926 121.079 483.285 120.999 483.589 120.838C483.893 120.676 484.115 120.497 484.255 120.299L483.704 119.705C483.577 119.868 483.412 119.991 483.209 120.073C483.005 120.155 482.795 120.196 482.579 120.196C482.426 120.196 482.284 120.172 482.155 120.124C482.025 120.077 481.911 120.01 481.81 119.922C481.713 119.838 481.635 119.744 481.576 119.641C481.518 119.535 481.471 119.397 481.434 119.225V119.213H484.342V118.746C484.342 118.431 484.298 118.145 484.211 117.886C484.124 117.625 483.997 117.401 483.831 117.217C483.662 117.032 483.456 116.889 483.213 116.789C482.972 116.686 482.698 116.634 482.389 116.634C482.09 116.634 481.814 116.688 481.561 116.797C481.307 116.905 481.088 117.057 480.903 117.252C480.718 117.448 480.574 117.681 480.471 117.953C480.368 118.223 480.317 118.521 480.317 118.849V119.007C480.317 119.295 480.368 119.566 480.471 119.819C480.577 120.07 480.726 120.288 480.919 120.473C481.112 120.661 481.343 120.809 481.612 120.917C481.882 121.025 482.181 121.079 482.511 121.079ZM482.381 117.526C482.521 117.526 482.644 117.548 482.749 117.593C482.857 117.635 482.949 117.693 483.023 117.767C483.096 117.844 483.155 117.934 483.197 118.037C483.239 118.14 483.26 118.249 483.26 118.365V118.453H481.454C481.48 118.313 481.52 118.186 481.573 118.072C481.625 117.959 481.691 117.861 481.771 117.779C481.847 117.697 481.937 117.635 482.04 117.593C482.143 117.548 482.257 117.526 482.381 117.526ZM485.99 116.713H485.043V121H486.045V117.791C486.059 117.757 486.073 117.725 486.089 117.696C486.105 117.667 486.123 117.642 486.144 117.621C486.173 117.592 486.206 117.569 486.243 117.553C486.28 117.537 486.323 117.53 486.37 117.53C486.412 117.53 486.452 117.536 486.489 117.549C486.526 117.56 486.559 117.58 486.588 117.609C486.614 117.638 486.636 117.679 486.651 117.732C486.667 117.784 486.675 117.852 486.675 117.934V121H487.646V117.839C487.646 117.807 487.646 117.782 487.646 117.763C487.646 117.745 487.646 117.733 487.646 117.728C487.659 117.699 487.675 117.673 487.693 117.652C487.712 117.629 487.733 117.607 487.757 117.589C487.786 117.57 487.816 117.556 487.848 117.545C487.882 117.535 487.921 117.53 487.963 117.53C488.002 117.53 488.041 117.536 488.078 117.549C488.117 117.56 488.152 117.58 488.181 117.609C488.21 117.64 488.232 117.683 488.248 117.736C488.267 117.788 488.276 117.856 488.276 117.938V121H489.278V117.942C489.278 117.704 489.254 117.503 489.207 117.339C489.162 117.173 489.098 117.037 489.017 116.931C488.932 116.828 488.833 116.753 488.719 116.705C488.609 116.658 488.488 116.634 488.359 116.634C488.256 116.634 488.161 116.647 488.074 116.674C487.987 116.7 487.909 116.737 487.84 116.785C487.785 116.822 487.733 116.867 487.685 116.919C487.641 116.97 487.6 117.026 487.563 117.09C487.539 117.024 487.51 116.966 487.476 116.915C487.444 116.863 487.406 116.818 487.361 116.781C487.303 116.731 487.234 116.694 487.155 116.67C487.075 116.646 486.986 116.634 486.885 116.634C486.679 116.634 486.504 116.688 486.358 116.797C486.216 116.902 486.103 117.048 486.022 117.232L485.99 116.713ZM490.027 118.817V118.9C490.027 119.215 490.072 119.505 490.162 119.772C490.251 120.036 490.383 120.266 490.558 120.461C490.729 120.657 490.941 120.81 491.192 120.921C491.445 121.029 491.733 121.083 492.055 121.083C492.375 121.083 492.66 121.029 492.911 120.921C493.162 120.81 493.373 120.657 493.545 120.461C493.717 120.266 493.847 120.036 493.937 119.772C494.027 119.505 494.072 119.215 494.072 118.9V118.817C494.072 118.505 494.027 118.218 493.937 117.953C493.847 117.687 493.717 117.456 493.545 117.26C493.371 117.065 493.158 116.911 492.907 116.801C492.656 116.69 492.37 116.634 492.047 116.634C491.725 116.634 491.439 116.69 491.188 116.801C490.939 116.911 490.729 117.065 490.558 117.26C490.383 117.456 490.251 117.687 490.162 117.953C490.072 118.218 490.027 118.505 490.027 118.817ZM491.128 118.9V118.817C491.128 118.643 491.145 118.478 491.18 118.322C491.214 118.166 491.268 118.029 491.342 117.91C491.416 117.791 491.511 117.697 491.627 117.629C491.744 117.56 491.884 117.526 492.047 117.526C492.214 117.526 492.355 117.56 492.471 117.629C492.587 117.697 492.683 117.791 492.757 117.91C492.828 118.029 492.881 118.166 492.915 118.322C492.949 118.478 492.966 118.643 492.966 118.817V118.9C492.966 119.08 492.949 119.249 492.915 119.407C492.881 119.563 492.828 119.699 492.757 119.815C492.683 119.934 492.587 120.028 492.471 120.097C492.355 120.165 492.216 120.2 492.055 120.2C491.889 120.2 491.746 120.165 491.627 120.097C491.511 120.028 491.416 119.934 491.342 119.815C491.268 119.699 491.214 119.563 491.18 119.407C491.145 119.249 491.128 119.08 491.128 118.9ZM496.413 121H497.447L499.075 116.713H497.927L496.988 119.736L496.928 120.037L496.869 119.736L495.926 116.713H494.777L496.413 121ZM502.003 121.079C502.418 121.079 502.777 120.999 503.081 120.838C503.385 120.676 503.606 120.497 503.746 120.299L503.196 119.705C503.069 119.868 502.904 119.991 502.7 120.073C502.497 120.155 502.287 120.196 502.071 120.196C501.917 120.196 501.776 120.172 501.647 120.124C501.517 120.077 501.402 120.01 501.302 119.922C501.204 119.838 501.126 119.744 501.068 119.641C501.01 119.535 500.963 119.397 500.926 119.225V119.213H503.834V118.746C503.834 118.431 503.79 118.145 503.703 117.886C503.616 117.625 503.489 117.401 503.322 117.217C503.153 117.032 502.947 116.889 502.704 116.789C502.464 116.686 502.189 116.634 501.88 116.634C501.582 116.634 501.306 116.688 501.052 116.797C500.799 116.905 500.58 117.057 500.395 117.252C500.21 117.448 500.066 117.681 499.963 117.953C499.86 118.223 499.808 118.521 499.808 118.849V119.007C499.808 119.295 499.86 119.566 499.963 119.819C500.069 120.07 500.218 120.288 500.411 120.473C500.603 120.661 500.834 120.809 501.104 120.917C501.373 121.025 501.673 121.079 502.003 121.079ZM501.872 117.526C502.012 117.526 502.135 117.548 502.241 117.593C502.349 117.635 502.44 117.693 502.514 117.767C502.588 117.844 502.646 117.934 502.689 118.037C502.731 118.14 502.752 118.249 502.752 118.365V118.453H500.945C500.972 118.313 501.011 118.186 501.064 118.072C501.117 117.959 501.183 117.861 501.262 117.779C501.339 117.697 501.429 117.635 501.532 117.593C501.635 117.548 501.748 117.526 501.872 117.526Z\"\n      fill=\"white\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M53.3169 229.284V231.499H54.8652C55.2549 231.499 55.6035 231.543 55.9111 231.632C56.2256 231.721 56.4956 231.858 56.7212 232.042C56.9399 232.227 57.1074 232.463 57.2236 232.75C57.3398 233.037 57.3979 233.382 57.3979 233.786C57.3979 234.107 57.3467 234.397 57.2441 234.657C57.1484 234.917 57.0049 235.136 56.8135 235.313C56.6152 235.512 56.3691 235.662 56.0752 235.765C55.7812 235.867 55.4497 235.918 55.0806 235.918C54.7524 235.918 54.4517 235.871 54.1782 235.775C53.9048 235.672 53.6689 235.532 53.4707 235.354C53.2656 235.184 53.1084 234.979 52.999 234.739C52.8896 234.493 52.835 234.227 52.835 233.939H49.9844C49.9844 234.664 50.1245 235.293 50.4048 235.826C50.6919 236.359 51.0713 236.8 51.543 237.149C52.0146 237.504 52.5513 237.771 53.1528 237.949C53.7612 238.12 54.3833 238.205 55.019 238.205C55.7573 238.205 56.4443 238.109 57.0801 237.918C57.7227 237.72 58.2764 237.433 58.7412 237.057C59.2061 236.688 59.5718 236.229 59.8384 235.683C60.105 235.136 60.2383 234.514 60.2383 233.816C60.2383 233.42 60.1904 233.044 60.0947 232.688C59.999 232.333 59.8521 232.005 59.6538 231.704C59.4556 231.41 59.2026 231.147 58.895 230.915C58.5942 230.682 58.2354 230.491 57.8184 230.34C58.1738 230.169 58.4883 229.968 58.7617 229.735C59.0352 229.496 59.2642 229.236 59.4487 228.956C59.6333 228.676 59.7734 228.382 59.8691 228.074C59.9648 227.76 60.0127 227.442 60.0127 227.121C60.0127 226.423 59.8896 225.812 59.6436 225.285C59.4043 224.752 59.0659 224.304 58.6284 223.942C58.1909 223.586 57.6646 223.32 57.0493 223.142C56.4341 222.958 55.7573 222.865 55.019 222.865C54.3354 222.865 53.6963 222.964 53.1016 223.163C52.5137 223.361 52.001 223.638 51.5635 223.993C51.126 224.355 50.7808 224.786 50.5278 225.285C50.2817 225.784 50.1587 226.338 50.1587 226.946H53.0093C53.0093 226.673 53.064 226.427 53.1733 226.208C53.2827 225.989 53.4331 225.801 53.6245 225.644C53.8091 225.494 54.0244 225.377 54.2705 225.295C54.5234 225.213 54.7935 225.172 55.0806 225.172C55.4292 225.172 55.7334 225.22 55.9932 225.316C56.2598 225.412 56.4785 225.545 56.6494 225.716C56.8203 225.894 56.9468 226.105 57.0288 226.352C57.1177 226.591 57.1621 226.857 57.1621 227.151C57.1621 227.452 57.1177 227.732 57.0288 227.992C56.9468 228.245 56.8203 228.46 56.6494 228.638C56.4648 228.843 56.2222 229.004 55.9214 229.12C55.6274 229.229 55.2754 229.284 54.8652 229.284H53.3169Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M146.772 232.453V223.07H143.88L137.605 232.976L137.718 234.76H143.921V238H146.772V234.76H148.505V232.453H146.772ZM140.404 232.453L143.645 227.397L143.921 226.905V232.453H140.404Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M176.589 158.648L178.866 159.212C178.975 159.103 179.091 159 179.214 158.904C179.337 158.802 179.478 158.713 179.635 158.638C179.792 158.562 179.973 158.501 180.178 158.453C180.383 158.405 180.626 158.381 180.906 158.381C181.323 158.381 181.686 158.446 181.993 158.576C182.301 158.706 182.557 158.891 182.762 159.13C182.967 159.369 183.118 159.656 183.213 159.991C183.316 160.319 183.367 160.682 183.367 161.078C183.367 161.481 183.326 161.857 183.244 162.206C183.169 162.555 183.049 162.855 182.885 163.108C182.714 163.361 182.492 163.56 182.219 163.703C181.952 163.847 181.627 163.918 181.245 163.918C180.623 163.918 180.11 163.741 179.707 163.385C179.31 163.03 179.078 162.527 179.009 161.878H176.2C176.22 162.568 176.374 163.184 176.661 163.724C176.955 164.257 177.334 164.708 177.799 165.077C178.264 165.446 178.794 165.727 179.389 165.918C179.99 166.109 180.612 166.205 181.255 166.205C182.103 166.205 182.837 166.072 183.459 165.805C184.082 165.539 184.598 165.176 185.008 164.718C185.418 164.26 185.722 163.73 185.92 163.129C186.119 162.527 186.218 161.892 186.218 161.222C186.218 160.436 186.115 159.731 185.91 159.109C185.705 158.487 185.411 157.961 185.028 157.53C184.639 157.1 184.16 156.771 183.593 156.546C183.032 156.313 182.393 156.197 181.675 156.197C181.169 156.197 180.722 156.262 180.332 156.392C179.942 156.522 179.642 156.648 179.43 156.771L179.789 153.49H185.726V151.07H177.44L176.589 158.648Z\"\n      fill=\"black\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M183.333 182.105C183.522 181.737 183.975 181.592 184.343 181.781L190.346 184.868C190.714 185.057 190.859 185.51 190.67 185.878C190.481 186.246 190.028 186.391 189.66 186.202L184.324 183.458L181.58 188.794C181.391 189.163 180.939 189.308 180.57 189.118C180.202 188.929 180.057 188.477 180.246 188.108L183.333 182.105ZM371.577 185.754C371.989 185.796 372.288 186.165 372.246 186.577L371.556 193.291C371.513 193.703 371.145 194.003 370.733 193.961C370.321 193.918 370.021 193.55 370.064 193.138L370.677 187.169L364.709 186.556C364.297 186.513 363.997 186.145 364.039 185.733C364.082 185.321 364.45 185.021 364.862 185.064L371.577 185.754ZM184 182.448C184.714 182.219 184.714 182.219 184.714 182.218C184.714 182.218 184.714 182.217 184.713 182.217C184.713 182.217 184.713 182.217 184.714 182.218C184.714 182.219 184.715 182.222 184.716 182.226C184.72 182.235 184.725 182.251 184.733 182.273C184.749 182.316 184.775 182.386 184.813 182.479C184.89 182.666 185.014 182.948 185.2 183.313C185.572 184.041 186.191 185.099 187.166 186.376C189.116 188.93 192.498 192.374 198.201 195.833C209.61 202.753 230.337 209.75 267.5 209.75L267.5 211.25C230.163 211.25 209.14 204.221 197.424 197.115C191.564 193.562 188.04 189.992 185.974 187.287C184.942 185.934 184.275 184.8 183.864 183.995C183.659 183.592 183.517 183.272 183.425 183.048C183.379 182.935 183.346 182.847 183.323 182.785C183.312 182.754 183.303 182.729 183.297 182.711C183.294 182.702 183.292 182.695 183.29 182.689C183.289 182.687 183.288 182.684 183.287 182.682C183.287 182.681 183.287 182.68 183.287 182.68C183.286 182.678 183.286 182.678 184 182.448ZM267.5 209.75C304.668 209.75 330.582 203.764 347.184 197.794C355.485 194.809 361.461 191.828 365.354 189.599C367.3 188.485 368.726 187.558 369.661 186.914C370.129 186.591 370.474 186.339 370.7 186.17C370.814 186.085 370.897 186.02 370.951 185.978C370.978 185.957 370.998 185.941 371.011 185.931C371.017 185.926 371.021 185.922 371.024 185.92C371.025 185.919 371.026 185.919 371.027 185.918C371.027 185.918 371.027 185.918 371.027 185.918C371.027 185.918 371.027 185.918 371.5 186.5C371.973 187.082 371.973 187.082 371.972 187.083C371.972 187.083 371.971 187.083 371.971 187.084C371.969 187.085 371.967 187.087 371.965 187.088C371.961 187.092 371.954 187.097 371.946 187.104C371.93 187.117 371.906 187.136 371.875 187.16C371.813 187.208 371.722 187.279 371.601 187.369C371.358 187.551 370.997 187.815 370.513 188.149C369.544 188.817 368.083 189.765 366.099 190.901C362.132 193.172 356.077 196.191 347.691 199.206C330.918 205.236 304.832 211.25 267.5 211.25L267.5 209.75Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M477.745 162.416C477.699 162.004 477.328 161.708 476.916 161.755L470.208 162.51C469.797 162.557 469.501 162.928 469.547 163.34C469.594 163.751 469.965 164.047 470.376 164.001L476.339 163.329L477.01 169.292C477.057 169.703 477.428 169.999 477.84 169.953C478.251 169.906 478.547 169.535 478.501 169.124L477.745 162.416ZM323 228C322.945 228.748 322.946 228.748 322.946 228.748C322.947 228.748 322.948 228.748 322.949 228.748C322.951 228.748 322.954 228.749 322.959 228.749C322.967 228.75 322.98 228.75 322.997 228.752C323.03 228.754 323.08 228.758 323.146 228.762C323.277 228.771 323.472 228.784 323.728 228.801C324.238 228.834 324.989 228.88 325.955 228.933C327.885 229.04 330.672 229.175 334.1 229.289C340.955 229.516 350.379 229.657 360.65 229.312C370.919 228.968 382.048 228.138 392.311 226.419C402.561 224.703 412.008 222.092 418.873 218.15L418.127 216.85C411.492 220.658 402.252 223.234 392.064 224.94C381.889 226.644 370.831 227.47 360.6 227.813C350.371 228.156 340.982 228.016 334.15 227.789C330.734 227.676 327.958 227.542 326.037 227.436C325.077 227.383 324.33 227.337 323.824 227.304C323.571 227.288 323.378 227.275 323.249 227.266C323.184 227.261 323.135 227.258 323.103 227.255C323.087 227.254 323.074 227.253 323.066 227.253C323.062 227.253 323.059 227.252 323.057 227.252C323.056 227.252 323.056 227.252 323.055 227.252C323.055 227.252 323.055 227.252 323 228ZM418.873 218.15C432.473 210.343 447.16 196.525 458.418 184.705C464.054 178.787 468.845 173.354 472.226 169.402C473.917 167.425 475.256 165.818 476.173 164.704C476.631 164.147 476.984 163.714 477.223 163.419C477.342 163.272 477.432 163.159 477.493 163.084C477.524 163.046 477.547 163.017 477.563 162.997C477.57 162.988 477.576 162.98 477.58 162.975C477.582 162.973 477.584 162.971 477.585 162.97C477.585 162.969 477.586 162.969 477.586 162.968C477.586 162.968 477.586 162.968 477 162.5C476.414 162.032 476.414 162.032 476.413 162.033C476.413 162.033 476.413 162.033 476.412 162.034C476.412 162.035 476.41 162.037 476.408 162.039C476.405 162.044 476.399 162.051 476.392 162.06C476.377 162.079 476.354 162.107 476.324 162.144C476.264 162.219 476.175 162.33 476.057 162.475C475.821 162.767 475.47 163.197 475.015 163.751C474.103 164.858 472.77 166.458 471.086 168.427C467.718 172.364 462.946 177.776 457.332 183.67C446.09 195.475 431.527 209.157 418.127 216.85L418.873 218.15Z\"\n      fill=\"url(#paint0_linear_1_76)\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M227.49 227.177V224.625H226.722V231H227.49V227.738C227.545 227.649 227.608 227.569 227.677 227.497C227.749 227.422 227.826 227.357 227.909 227.302C228.014 227.23 228.129 227.175 228.254 227.136C228.378 227.097 228.51 227.078 228.648 227.078C228.817 227.075 228.966 227.099 229.096 227.148C229.226 227.195 229.334 227.267 229.42 227.364C229.5 227.453 229.561 227.565 229.603 227.7C229.644 227.833 229.665 227.988 229.665 228.165V231H230.433V228.174C230.433 227.872 230.395 227.612 230.321 227.393C230.249 227.172 230.145 226.989 230.009 226.845C229.874 226.702 229.709 226.596 229.515 226.53C229.324 226.461 229.111 226.426 228.876 226.426C228.696 226.429 228.526 226.455 228.366 226.505C228.208 226.555 228.063 226.628 227.93 226.725C227.847 226.783 227.768 226.851 227.693 226.928C227.619 227.003 227.551 227.086 227.49 227.177ZM234.778 231H235.579V230.934C235.529 230.809 235.491 230.664 235.463 230.498C235.435 230.329 235.421 230.17 235.421 230.021V227.933C235.421 227.681 235.376 227.461 235.284 227.273C235.193 227.085 235.069 226.927 234.911 226.8C234.75 226.675 234.561 226.583 234.342 226.522C234.124 226.458 233.887 226.426 233.633 226.426C233.353 226.426 233.103 226.465 232.881 226.542C232.663 226.62 232.477 226.721 232.325 226.845C232.17 226.973 232.051 227.115 231.968 227.273C231.888 227.431 231.847 227.591 231.844 227.754H232.616C232.616 227.66 232.638 227.57 232.682 227.485C232.729 227.396 232.794 227.32 232.877 227.256C232.96 227.193 233.061 227.142 233.18 227.103C233.302 227.064 233.439 227.045 233.591 227.045C233.754 227.045 233.901 227.065 234.031 227.107C234.164 227.148 234.276 227.207 234.367 227.281C234.458 227.359 234.529 227.451 234.579 227.559C234.629 227.667 234.654 227.789 234.654 227.925V228.277H233.815C233.503 228.277 233.219 228.308 232.964 228.369C232.713 228.43 232.497 228.521 232.317 228.643C232.137 228.767 231.997 228.922 231.898 229.107C231.801 229.293 231.752 229.509 231.752 229.755C231.752 229.943 231.788 230.119 231.86 230.282C231.935 230.442 232.04 230.581 232.176 230.697C232.309 230.816 232.47 230.91 232.661 230.979C232.855 231.048 233.071 231.083 233.309 231.083C233.455 231.083 233.594 231.068 233.724 231.037C233.854 231.007 233.977 230.965 234.093 230.913C234.207 230.86 234.31 230.799 234.405 230.73C234.501 230.661 234.589 230.588 234.666 230.51C234.674 230.604 234.687 230.696 234.703 230.784C234.723 230.87 234.748 230.942 234.778 231ZM233.421 230.415C233.271 230.415 233.14 230.395 233.027 230.357C232.913 230.318 232.819 230.264 232.744 230.195C232.67 230.128 232.613 230.048 232.574 229.954C232.538 229.86 232.52 229.758 232.52 229.647C232.52 229.531 232.541 229.427 232.583 229.336C232.627 229.244 232.69 229.166 232.773 229.099C232.89 229.005 233.046 228.936 233.242 228.892C233.442 228.845 233.674 228.821 233.94 228.821H234.654V229.73C234.609 229.819 234.548 229.904 234.471 229.987C234.393 230.068 234.302 230.139 234.197 230.203C234.089 230.267 233.97 230.318 233.84 230.357C233.71 230.395 233.57 230.415 233.421 230.415ZM239.916 229.809C239.916 229.881 239.902 229.949 239.875 230.012C239.847 230.076 239.807 230.134 239.754 230.187C239.669 230.272 239.55 230.34 239.397 230.39C239.245 230.437 239.067 230.46 238.862 230.46C238.732 230.46 238.601 230.447 238.468 230.419C238.335 230.391 238.215 230.344 238.107 230.278C237.996 230.211 237.903 230.124 237.829 230.016C237.757 229.908 237.715 229.776 237.704 229.618H236.936C236.936 229.809 236.979 229.993 237.065 230.17C237.153 230.347 237.281 230.502 237.447 230.635C237.61 230.77 237.811 230.88 238.049 230.963C238.287 231.043 238.558 231.083 238.862 231.083C239.128 231.083 239.373 231.051 239.597 230.988C239.821 230.924 240.013 230.834 240.174 230.718C240.334 230.602 240.459 230.462 240.547 230.299C240.638 230.135 240.684 229.954 240.684 229.755C240.684 229.569 240.644 229.406 240.564 229.265C240.486 229.124 240.373 229 240.223 228.892C240.074 228.786 239.89 228.697 239.671 228.622C239.453 228.544 239.205 228.477 238.928 228.418C238.718 228.377 238.544 228.334 238.406 228.29C238.27 228.246 238.162 228.196 238.082 228.14C237.999 228.085 237.941 228.023 237.907 227.954C237.874 227.884 237.858 227.806 237.858 227.717C237.858 227.631 237.878 227.548 237.92 227.468C237.961 227.388 238.024 227.317 238.107 227.256C238.187 227.195 238.288 227.147 238.41 227.111C238.534 227.075 238.678 227.057 238.841 227.057C238.999 227.057 239.14 227.079 239.265 227.124C239.392 227.168 239.5 227.226 239.588 227.298C239.677 227.37 239.746 227.453 239.796 227.547C239.846 227.638 239.871 227.732 239.871 227.829H240.638C240.638 227.633 240.596 227.45 240.51 227.281C240.427 227.11 240.308 226.96 240.153 226.833C239.998 226.706 239.81 226.606 239.588 226.534C239.367 226.462 239.118 226.426 238.841 226.426C238.584 226.426 238.347 226.461 238.132 226.53C237.919 226.599 237.735 226.693 237.58 226.812C237.425 226.931 237.304 227.071 237.219 227.231C237.133 227.389 237.09 227.559 237.09 227.742C237.09 227.927 237.131 228.091 237.214 228.232C237.297 228.37 237.415 228.49 237.567 228.593C237.717 228.698 237.896 228.788 238.107 228.863C238.32 228.937 238.555 229.001 238.812 229.053C239.023 229.095 239.198 229.142 239.339 229.195C239.48 229.244 239.594 229.3 239.68 229.361C239.765 229.421 239.826 229.489 239.862 229.564C239.898 229.636 239.916 229.718 239.916 229.809ZM249.055 230.46C248.815 230.46 248.613 230.413 248.449 230.319C248.289 230.222 248.16 230.097 248.063 229.942C247.964 229.789 247.892 229.618 247.848 229.427C247.806 229.233 247.785 229.038 247.785 228.842V228.667C247.785 228.474 247.806 228.281 247.848 228.091C247.892 227.9 247.964 227.727 248.063 227.572C248.163 227.42 248.293 227.296 248.454 227.202C248.617 227.106 248.817 227.057 249.055 227.057C249.21 227.057 249.354 227.083 249.487 227.136C249.623 227.189 249.739 227.26 249.836 227.352C249.933 227.443 250.009 227.55 250.064 227.671C250.122 227.79 250.153 227.918 250.155 228.053H250.882C250.882 227.826 250.836 227.613 250.745 227.414C250.653 227.215 250.527 227.042 250.367 226.895C250.204 226.751 250.01 226.638 249.786 226.555C249.565 226.469 249.321 226.426 249.055 226.426C248.715 226.426 248.418 226.487 248.163 226.609C247.909 226.731 247.697 226.894 247.528 227.099C247.357 227.306 247.228 227.545 247.142 227.817C247.056 228.088 247.013 228.371 247.013 228.667V228.842C247.013 229.141 247.056 229.426 247.142 229.697C247.228 229.965 247.357 230.202 247.528 230.406C247.697 230.614 247.909 230.779 248.163 230.9C248.418 231.022 248.715 231.083 249.055 231.083C249.293 231.083 249.522 231.043 249.74 230.963C249.959 230.88 250.153 230.769 250.321 230.631C250.49 230.495 250.624 230.337 250.724 230.157C250.826 229.975 250.879 229.784 250.882 229.585H250.155C250.153 229.709 250.119 229.825 250.056 229.933C249.995 230.038 249.913 230.13 249.811 230.207C249.708 230.288 249.591 230.35 249.458 230.394C249.328 230.438 249.194 230.46 249.055 230.46ZM253.015 227.177V224.625H252.247V231H253.015V227.738C253.07 227.649 253.132 227.569 253.202 227.497C253.274 227.422 253.351 227.357 253.434 227.302C253.539 227.23 253.654 227.175 253.779 227.136C253.903 227.097 254.035 227.078 254.173 227.078C254.342 227.075 254.491 227.099 254.621 227.148C254.751 227.195 254.859 227.267 254.945 227.364C255.025 227.453 255.086 227.565 255.127 227.7C255.169 227.833 255.19 227.988 255.19 228.165V231H255.958V228.174C255.958 227.872 255.92 227.612 255.845 227.393C255.774 227.172 255.67 226.989 255.534 226.845C255.399 226.702 255.234 226.596 255.04 226.53C254.849 226.461 254.636 226.426 254.401 226.426C254.221 226.429 254.051 226.455 253.891 226.505C253.733 226.555 253.588 226.628 253.455 226.725C253.372 226.783 253.293 226.851 253.218 226.928C253.144 227.003 253.076 227.086 253.015 227.177ZM260.303 231H261.104V230.934C261.054 230.809 261.015 230.664 260.988 230.498C260.96 230.329 260.946 230.17 260.946 230.021V227.933C260.946 227.681 260.901 227.461 260.809 227.273C260.718 227.085 260.594 226.927 260.436 226.8C260.275 226.675 260.086 226.583 259.867 226.522C259.649 226.458 259.412 226.426 259.157 226.426C258.878 226.426 258.628 226.465 258.406 226.542C258.188 226.62 258.002 226.721 257.85 226.845C257.695 226.973 257.576 227.115 257.493 227.273C257.413 227.431 257.371 227.591 257.369 227.754H258.141C258.141 227.66 258.163 227.57 258.207 227.485C258.254 227.396 258.319 227.32 258.402 227.256C258.485 227.193 258.586 227.142 258.705 227.103C258.827 227.064 258.964 227.045 259.116 227.045C259.279 227.045 259.426 227.065 259.556 227.107C259.689 227.148 259.801 227.207 259.892 227.281C259.983 227.359 260.054 227.451 260.104 227.559C260.154 227.667 260.178 227.789 260.178 227.925V228.277H259.34C259.027 228.277 258.744 228.308 258.489 228.369C258.237 228.43 258.022 228.521 257.842 228.643C257.662 228.767 257.522 228.922 257.423 229.107C257.326 229.293 257.277 229.509 257.277 229.755C257.277 229.943 257.313 230.119 257.385 230.282C257.46 230.442 257.565 230.581 257.701 230.697C257.833 230.816 257.995 230.91 258.186 230.979C258.38 231.048 258.596 231.083 258.834 231.083C258.98 231.083 259.119 231.068 259.249 231.037C259.379 231.007 259.502 230.965 259.618 230.913C259.732 230.86 259.835 230.799 259.929 230.73C260.026 230.661 260.113 230.588 260.191 230.51C260.199 230.604 260.212 230.696 260.228 230.784C260.248 230.87 260.273 230.942 260.303 231ZM258.946 230.415C258.796 230.415 258.665 230.395 258.552 230.357C258.438 230.318 258.344 230.264 258.269 230.195C258.195 230.128 258.138 230.048 258.099 229.954C258.063 229.86 258.045 229.758 258.045 229.647C258.045 229.531 258.066 229.427 258.107 229.336C258.152 229.244 258.215 229.166 258.298 229.099C258.415 229.005 258.571 228.936 258.767 228.892C258.967 228.845 259.199 228.821 259.465 228.821H260.178V229.73C260.134 229.819 260.073 229.904 259.996 229.987C259.918 230.068 259.827 230.139 259.722 230.203C259.614 230.267 259.495 230.318 259.365 230.357C259.235 230.395 259.095 230.415 258.946 230.415ZM262.457 231H263.225V227.779C263.277 227.682 263.338 227.594 263.407 227.514C263.479 227.433 263.557 227.363 263.64 227.302C263.742 227.233 263.854 227.179 263.976 227.14C264.098 227.099 264.229 227.078 264.37 227.078C264.534 227.078 264.677 227.097 264.802 227.136C264.929 227.175 265.037 227.237 265.126 227.323C265.212 227.409 265.277 227.521 265.321 227.659C265.365 227.797 265.387 227.966 265.387 228.165V231H266.155V228.149C266.155 227.85 266.118 227.593 266.043 227.377C265.971 227.158 265.867 226.978 265.732 226.837C265.596 226.696 265.431 226.592 265.238 226.526C265.047 226.459 264.834 226.426 264.599 226.426C264.424 226.429 264.258 226.455 264.101 226.505C263.946 226.552 263.802 226.62 263.669 226.708C263.58 226.767 263.496 226.836 263.416 226.916C263.338 226.993 263.266 227.079 263.2 227.173L263.146 226.509H262.457V231ZM267.421 228.717V228.804C267.421 229.125 267.462 229.426 267.545 229.705C267.628 229.982 267.747 230.222 267.902 230.427C268.055 230.632 268.241 230.792 268.463 230.909C268.684 231.025 268.932 231.083 269.206 231.083C269.369 231.083 269.521 231.065 269.662 231.029C269.803 230.996 269.932 230.947 270.048 230.884C270.123 230.842 270.192 230.794 270.256 230.739C270.322 230.683 270.384 230.622 270.442 230.556V230.942C270.442 231.136 270.415 231.307 270.359 231.457C270.304 231.606 270.225 231.73 270.123 231.83C270.018 231.932 269.892 232.01 269.745 232.062C269.598 232.115 269.434 232.141 269.251 232.141C269.149 232.141 269.046 232.13 268.944 232.108C268.842 232.089 268.739 232.056 268.637 232.009C268.535 231.962 268.434 231.898 268.334 231.818C268.234 231.74 268.138 231.645 268.043 231.531L267.645 231.992C267.747 232.139 267.869 232.262 268.01 232.361C268.154 232.461 268.304 232.54 268.458 232.598C268.611 232.659 268.761 232.702 268.911 232.727C269.06 232.754 269.193 232.768 269.309 232.768C269.592 232.768 269.849 232.727 270.081 232.644C270.314 232.561 270.514 232.439 270.683 232.278C270.849 232.118 270.978 231.923 271.069 231.693C271.163 231.463 271.21 231.201 271.21 230.905V226.509H270.513L270.476 226.999C270.423 226.933 270.366 226.872 270.305 226.816C270.247 226.761 270.185 226.713 270.119 226.671C269.997 226.591 269.86 226.53 269.708 226.489C269.558 226.447 269.394 226.426 269.214 226.426C268.934 226.426 268.684 226.483 268.463 226.596C268.241 226.71 268.053 226.868 267.898 227.07C267.743 227.272 267.624 227.514 267.541 227.796C267.461 228.075 267.421 228.382 267.421 228.717ZM268.189 228.804V228.717C268.189 228.499 268.211 228.291 268.255 228.095C268.302 227.896 268.375 227.72 268.475 227.568C268.572 227.418 268.696 227.299 268.849 227.211C269.004 227.122 269.189 227.078 269.405 227.078C269.532 227.078 269.648 227.094 269.753 227.128C269.859 227.158 269.954 227.201 270.04 227.256C270.126 227.314 270.202 227.382 270.268 227.46C270.334 227.537 270.393 227.623 270.442 227.717V229.776C270.393 229.872 270.334 229.961 270.268 230.041C270.202 230.122 270.127 230.191 270.044 230.249C269.958 230.307 269.861 230.353 269.753 230.386C269.648 230.416 269.529 230.431 269.396 230.431C269.183 230.431 269.001 230.389 268.849 230.303C268.696 230.214 268.572 230.095 268.475 229.946C268.375 229.796 268.302 229.623 268.255 229.427C268.211 229.231 268.189 229.023 268.189 228.804ZM274.651 231.083C275.088 231.083 275.455 230.996 275.751 230.822C276.05 230.644 276.274 230.442 276.423 230.216L275.954 229.85C275.813 230.033 275.636 230.18 275.423 230.29C275.21 230.401 274.966 230.456 274.692 230.456C274.485 230.456 274.295 230.418 274.124 230.34C273.952 230.263 273.806 230.156 273.684 230.021C273.565 229.893 273.471 229.747 273.402 229.581C273.335 229.415 273.292 229.222 273.273 229.004V228.975H276.481V228.63C276.481 228.317 276.441 228.027 276.361 227.759C276.283 227.49 276.164 227.256 276.004 227.057C275.843 226.861 275.641 226.707 275.398 226.596C275.157 226.483 274.875 226.426 274.551 226.426C274.294 226.426 274.042 226.479 273.796 226.584C273.552 226.689 273.335 226.84 273.144 227.036C272.951 227.236 272.796 227.479 272.679 227.767C272.563 228.052 272.505 228.376 272.505 228.738V228.912C272.505 229.225 272.558 229.514 272.663 229.78C272.768 230.045 272.915 230.275 273.103 230.469C273.291 230.662 273.516 230.813 273.779 230.921C274.045 231.029 274.335 231.083 274.651 231.083ZM274.551 227.057C274.748 227.057 274.917 227.093 275.058 227.165C275.201 227.237 275.32 227.331 275.415 227.447C275.509 227.563 275.582 227.702 275.635 227.862C275.687 228.02 275.713 228.168 275.713 228.306V228.344H273.298C273.328 228.136 273.381 227.954 273.456 227.796C273.533 227.635 273.627 227.5 273.738 227.389C273.848 227.281 273.973 227.2 274.111 227.144C274.25 227.086 274.396 227.057 274.551 227.057ZM277.627 228.717V228.804C277.627 229.125 277.67 229.426 277.755 229.705C277.841 229.982 277.962 230.222 278.116 230.427C278.271 230.632 278.458 230.792 278.677 230.909C278.898 231.025 279.144 231.083 279.416 231.083C279.692 231.083 279.934 231.036 280.142 230.942C280.349 230.848 280.528 230.709 280.677 230.527L280.71 231H281.416V224.625H280.648V226.953C280.502 226.782 280.327 226.652 280.125 226.563C279.926 226.472 279.692 226.426 279.424 226.426C279.15 226.426 278.902 226.483 278.681 226.596C278.46 226.71 278.271 226.868 278.116 227.07C277.959 227.272 277.837 227.514 277.751 227.796C277.668 228.075 277.627 228.382 277.627 228.717ZM278.395 228.804V228.717C278.395 228.499 278.418 228.291 278.465 228.095C278.512 227.896 278.585 227.72 278.685 227.568C278.782 227.418 278.906 227.299 279.059 227.211C279.214 227.122 279.399 227.078 279.615 227.078C279.867 227.078 280.077 227.137 280.246 227.256C280.414 227.373 280.549 227.522 280.648 227.705V229.788C280.549 229.985 280.414 230.141 280.246 230.257C280.077 230.373 279.864 230.431 279.606 230.431C279.393 230.431 279.211 230.389 279.059 230.303C278.906 230.214 278.782 230.095 278.685 229.946C278.585 229.796 278.512 229.623 278.465 229.427C278.418 229.231 278.395 229.023 278.395 228.804ZM284.276 229.298H285.043C285.043 229.19 285.046 229.095 285.052 229.012C285.057 228.926 285.071 228.846 285.093 228.771C285.115 228.697 285.149 228.623 285.193 228.551C285.24 228.479 285.305 228.403 285.388 228.323C285.518 228.207 285.649 228.081 285.782 227.945C285.918 227.81 286.04 227.663 286.147 227.505C286.255 227.35 286.344 227.186 286.413 227.011C286.482 226.834 286.517 226.646 286.517 226.447C286.517 226.198 286.477 225.977 286.396 225.783C286.316 225.589 286.2 225.425 286.048 225.289C285.896 225.153 285.709 225.051 285.488 224.982C285.269 224.91 285.02 224.874 284.74 224.874C284.489 224.874 284.253 224.909 284.035 224.978C283.819 225.044 283.632 225.141 283.475 225.268C283.314 225.398 283.187 225.556 283.093 225.741C282.999 225.927 282.95 226.136 282.948 226.368H283.715C283.715 226.224 283.744 226.101 283.802 225.999C283.861 225.894 283.938 225.806 284.035 225.737C284.129 225.671 284.237 225.622 284.359 225.592C284.483 225.559 284.61 225.542 284.74 225.542C284.909 225.542 285.059 225.564 285.189 225.609C285.319 225.653 285.427 225.718 285.512 225.804C285.59 225.881 285.648 225.977 285.687 226.09C285.728 226.201 285.749 226.328 285.749 226.472C285.749 226.61 285.723 226.742 285.67 226.866C285.618 226.991 285.551 227.108 285.471 227.219C285.388 227.332 285.297 227.44 285.197 227.543C285.1 227.645 285.005 227.745 284.911 227.842C284.772 227.969 284.662 228.08 284.579 228.174C284.496 228.265 284.432 228.36 284.388 228.46C284.343 228.562 284.314 228.679 284.301 228.809C284.287 228.936 284.278 229.099 284.276 229.298ZM284.188 230.597C284.188 230.725 284.227 230.831 284.305 230.917C284.385 231.003 284.504 231.046 284.662 231.046C284.819 231.046 284.938 231.003 285.019 230.917C285.102 230.831 285.143 230.725 285.143 230.597C285.143 230.465 285.102 230.354 285.019 230.265C284.938 230.177 284.819 230.133 284.662 230.133C284.504 230.133 284.385 230.177 284.305 230.265C284.227 230.354 284.188 230.465 284.188 230.597Z\"\n      fill=\"#E139F0\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M293.797 228.543V228.634C293.797 229.027 293.826 229.395 293.884 229.738C293.945 230.081 294.026 230.398 294.129 230.689C294.231 230.982 294.35 231.249 294.486 231.49C294.624 231.73 294.769 231.942 294.921 232.125C295.074 232.31 295.23 232.468 295.39 232.598C295.554 232.728 295.711 232.828 295.864 232.897L296.088 232.274C295.98 232.191 295.87 232.087 295.76 231.963C295.649 231.838 295.544 231.692 295.444 231.523C295.35 231.368 295.262 231.187 295.179 230.979C295.098 230.772 295.028 230.546 294.967 230.303C294.923 230.128 294.881 229.895 294.843 229.601C294.807 229.308 294.789 228.988 294.789 228.643V228.535C294.789 228.183 294.808 227.858 294.847 227.559C294.885 227.26 294.937 226.988 295 226.742C295.072 226.487 295.155 226.252 295.249 226.036C295.346 225.82 295.45 225.634 295.561 225.476C295.646 225.354 295.733 225.246 295.822 225.152C295.911 225.058 295.999 224.978 296.088 224.911L295.864 224.281C295.711 224.35 295.554 224.449 295.39 224.579C295.23 224.707 295.074 224.863 294.921 225.048C294.769 225.234 294.624 225.447 294.486 225.688C294.35 225.928 294.231 226.194 294.129 226.484C294.026 226.778 293.945 227.097 293.884 227.443C293.826 227.786 293.797 228.153 293.797 228.543ZM300.076 227.742L298.885 224.957H297.607L299.479 228.858L299.483 231H300.645L300.649 228.908L302.55 224.957H301.267L300.076 227.742ZM305.339 231.083C305.773 231.083 306.15 230.999 306.468 230.83C306.786 230.661 307.018 230.473 307.165 230.265L306.588 229.643C306.455 229.814 306.282 229.943 306.069 230.029C305.856 230.115 305.636 230.157 305.409 230.157C305.249 230.157 305.101 230.133 304.965 230.083C304.83 230.033 304.709 229.962 304.604 229.871C304.502 229.783 304.42 229.684 304.359 229.576C304.299 229.466 304.249 229.32 304.21 229.141V229.128H307.256V228.638C307.256 228.309 307.211 228.009 307.119 227.738C307.028 227.464 306.895 227.23 306.721 227.036C306.544 226.843 306.328 226.693 306.073 226.588C305.822 226.48 305.534 226.426 305.21 226.426C304.898 226.426 304.608 226.483 304.343 226.596C304.077 226.71 303.847 226.869 303.654 227.074C303.46 227.278 303.309 227.523 303.201 227.808C303.094 228.091 303.04 228.403 303.04 228.746V228.912C303.04 229.214 303.094 229.498 303.201 229.763C303.312 230.026 303.468 230.254 303.67 230.448C303.872 230.644 304.115 230.799 304.397 230.913C304.679 231.026 304.993 231.083 305.339 231.083ZM305.202 227.36C305.349 227.36 305.477 227.384 305.588 227.431C305.701 227.475 305.797 227.536 305.874 227.613C305.952 227.694 306.013 227.788 306.057 227.896C306.101 228.003 306.123 228.118 306.123 228.24V228.331H304.231C304.258 228.185 304.3 228.052 304.355 227.933C304.411 227.814 304.48 227.712 304.563 227.626C304.643 227.54 304.737 227.475 304.845 227.431C304.953 227.384 305.072 227.36 305.202 227.36ZM311.162 229.767C311.162 229.837 311.144 229.9 311.108 229.958C311.075 230.016 311.024 230.068 310.954 230.112C310.882 230.156 310.79 230.192 310.676 230.22C310.566 230.245 310.436 230.257 310.286 230.257C310.162 230.257 310.04 230.245 309.921 230.22C309.805 230.195 309.701 230.155 309.61 230.099C309.518 230.047 309.444 229.978 309.385 229.892C309.327 229.803 309.294 229.698 309.286 229.576H308.186C308.186 229.759 308.23 229.942 308.319 230.124C308.41 230.304 308.543 230.465 308.717 230.606C308.892 230.75 309.107 230.866 309.365 230.954C309.625 231.043 309.924 231.087 310.261 231.087C310.568 231.087 310.846 231.054 311.095 230.988C311.344 230.918 311.558 230.823 311.735 230.701C311.909 230.579 312.043 230.436 312.137 230.27C312.234 230.101 312.282 229.917 312.282 229.718C312.282 229.502 312.234 229.316 312.137 229.161C312.043 229.004 311.912 228.869 311.743 228.759C311.574 228.651 311.374 228.562 311.141 228.493C310.909 228.424 310.657 228.367 310.386 228.323C310.198 228.295 310.043 228.264 309.921 228.228C309.799 228.189 309.704 228.146 309.635 228.099C309.563 228.055 309.513 228.005 309.485 227.949C309.457 227.891 309.444 227.829 309.444 227.763C309.444 227.696 309.459 227.634 309.489 227.576C309.522 227.515 309.569 227.462 309.63 227.418C309.697 227.368 309.783 227.33 309.888 227.302C309.993 227.274 310.116 227.26 310.257 227.26C310.423 227.26 310.564 227.281 310.68 227.323C310.799 227.364 310.893 227.42 310.963 227.489C311.012 227.541 311.05 227.601 311.075 227.667C311.1 227.731 311.112 227.8 311.112 227.875H312.266C312.266 227.667 312.22 227.475 312.129 227.298C312.038 227.121 311.906 226.967 311.735 226.837C311.56 226.71 311.349 226.61 311.1 226.538C310.851 226.464 310.57 226.426 310.257 226.426C309.958 226.426 309.69 226.464 309.452 226.538C309.214 226.613 309.012 226.714 308.846 226.841C308.68 226.969 308.553 227.117 308.464 227.285C308.376 227.454 308.331 227.631 308.331 227.817C308.331 228.008 308.374 228.176 308.46 228.323C308.549 228.47 308.67 228.598 308.825 228.709C308.98 228.822 309.166 228.919 309.381 229C309.6 229.077 309.841 229.142 310.104 229.195C310.311 229.233 310.483 229.272 310.618 229.311C310.754 229.35 310.863 229.391 310.946 229.435C311.026 229.482 311.082 229.532 311.112 229.585C311.145 229.637 311.162 229.698 311.162 229.767ZM316.441 228.634V228.543C316.441 228.164 316.411 227.806 316.35 227.468C316.289 227.128 316.206 226.811 316.101 226.518C315.996 226.224 315.873 225.957 315.731 225.717C315.593 225.473 315.445 225.256 315.287 225.065C315.13 224.877 314.968 224.716 314.802 224.583C314.636 224.451 314.474 224.35 314.316 224.281L314.096 224.899C314.179 224.963 314.262 225.04 314.345 225.131C314.431 225.22 314.514 225.321 314.594 225.434C314.713 225.606 314.825 225.809 314.93 226.044C315.038 226.28 315.13 226.545 315.204 226.841C315.262 227.079 315.308 227.339 315.341 227.622C315.377 227.904 315.395 228.208 315.395 228.535V228.643C315.395 228.977 315.377 229.289 315.341 229.576C315.308 229.864 315.262 230.127 315.204 230.365C315.135 230.625 315.055 230.86 314.964 231.071C314.875 231.281 314.777 231.469 314.669 231.635C314.578 231.776 314.484 231.899 314.387 232.004C314.29 232.112 314.193 232.202 314.096 232.274L314.316 232.897C314.474 232.828 314.636 232.727 314.802 232.594C314.968 232.461 315.13 232.299 315.287 232.108C315.445 231.92 315.593 231.704 315.731 231.461C315.873 231.22 315.996 230.953 316.101 230.66C316.206 230.366 316.289 230.051 316.35 229.713C316.411 229.373 316.441 229.013 316.441 228.634Z\"\n      fill=\"#10D310\"\n    />\n    <motion.path\n      {...motionAnimationProps}\n      d=\"M322.5 228C322.5 231.088 320.57 233.951 317.309 236.066C314.054 238.178 309.526 239.5 304.5 239.5C299.474 239.5 294.946 238.178 291.691 236.066C288.43 233.951 286.5 231.088 286.5 228C286.5 224.912 288.43 222.049 291.691 219.934C294.946 217.822 299.474 216.5 304.5 216.5C309.526 216.5 314.054 217.822 317.309 219.934C320.57 222.049 322.5 224.912 322.5 228Z\"\n      stroke=\"#10D310\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_1_76\"\n        x1=\"385.788\"\n        y1=\"109.405\"\n        x2=\"480.293\"\n        y2=\"103.63\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#10D310\" />\n        <stop offset=\"1\" stopColor=\"white\" />\n      </linearGradient>\n    </defs>\n  </motion.svg>,\n];\n\nconst descriptions = [\n  'We are given two virtual DOMs: current, which represents what our UI looks like, and new, which represents what we want.',\n  'We diff the first node and find no difference, so we go next.',\n  'We diff the second node and find a difference. We make the update in the DOM.',\n  \"We diff the third node and find that it's gone in the new virtual DOM, so we remove it in the DOM.\",\n  \"We diff the fourth node and find that it's gone in the new virtual DOM, so we remove it in the DOM.\",\n  'We diff the fifth node and find a difference. We make the update in the DOM and finish.',\n];\n\nexport const VDomExample = () => {\n  return <Slideshow frames={frames} descriptions={descriptions} />;\n};\n"
  },
  {
    "path": "website/components/bounties.tsx",
    "content": "// Copyright (c) 2023 Algora PBC.\n// https://github.com/algora-io/sdk/blob/5bcda5de293246b959b5e5ea81529ec46d7a8fe3/README.md\n\nimport { useEffect, useState } from 'react';\nimport { algora, type AlgoraOutput } from '@algora/sdk';\nimport Link from 'next/link';\nimport { Spotlight } from './spotlight';\n\nconst org = 'aidenybai';\nconst limit = 2;\n\ntype RemoteData<T> =\n  | { _tag: 'loading' }\n  | { _tag: 'failure'; error: Error }\n  | { _tag: 'success'; data: T };\n\ntype Bounty = AlgoraOutput['bounty']['list']['items'][number];\n\nexport function Bounties() {\n  const [bounties, setBounties] = useState<RemoteData<Bounty[]>>({\n    _tag: 'loading',\n  });\n\n  useEffect(() => {\n    const ac = new AbortController();\n\n    algora.bounty.list\n      .query({ org, limit, status: 'active' }, { signal: ac.signal })\n      .then(({ items: data }) => setBounties({ _tag: 'success', data }))\n      .catch((error: Error) => setBounties({ _tag: 'failure', error }));\n\n    return () => ac.abort();\n  }, []);\n\n  return (\n    <div className=\"space-y-2\">\n      <Callout />\n      <ul className=\"hidden sm:grid sm:grid-cols-2 gap-2\">\n        {bounties._tag === 'success' &&\n          bounties.data.map((bounty) => (\n            <li key={bounty.id}>\n              <BountyCard bounty={bounty} />\n            </li>\n          ))}\n        {bounties._tag === 'loading' &&\n          Array(limit)\n            .fill(0)\n            .map((_, i) => (\n              <li key={i}>\n                <BountyCardSkeleton />\n              </li>\n            ))}\n      </ul>\n    </div>\n  );\n}\n\nfunction BountyCard(props: { bounty: Bounty }) {\n  return (\n    <Link\n      href={props.bounty.task.url}\n      rel=\"noopener noreferrer\"\n      className=\"block group relative h-full rounded-lg border border-zinc-400/50 dark:border-purple-500/50 bg-gradient-to-br from-zinc-300/30 via-zinc-300/40 to-zinc-300/50 dark:from-purple-600/20 dark:via-purple-600/30 dark:to-purple-600/40 md:gap-8 transition-colors hover:border-zinc-400 hover:dark:border-purple-500 hover:bg-zinc-300/10 hover:dark:bg-zinc-600/5 !no-underline\"\n    >\n      <Spotlight className=\"bg-zinc-300/30 dark:bg-purple-600/20\">\n        <div className=\"p-4\">\n          <div className=\"text-2xl font-bold text-green-500 group-hover:text-green-600 dark:text-green-400 dark:group-hover:text-green-300 transition-colors\">\n            {props.bounty.reward_formatted}\n          </div>\n          <div className=\"mt-0.5 text-sm text-zinc-700 dark:text-purple-200 group-hover:text-zinc-800 dark:group-hover:text-purple-100 transition-colors\">\n            {props.bounty.task.repo_name}#{props.bounty.task.number}\n          </div>\n          <div className=\"mt-3 line-clamp-1 break-words text-lg font-medium leading-tight text-zinc-800 dark:text-purple-50 group-hover:text-zinc-900 dark:group-hover:text-white\">\n            {props.bounty.task.title}\n          </div>\n        </div>\n      </Spotlight>\n    </Link>\n  );\n}\n\nfunction BountyCardSkeleton() {\n  return (\n    <div className=\"h-[122px] animate-pulse rounded-lg bg-zinc-200 dark:bg-zinc-800\">\n      <div className=\"relative h-full p-4\">\n        <div className=\"mt-1 h-[25px] w-[59px] bg-zinc-300 dark:bg-zinc-700 rounded-md\" />\n        <div className=\"mt-2.5 h-[14px] w-[86px] bg-zinc-300 dark:bg-zinc-700 rounded-md\" />\n        <div className=\"mt-4 h-[20px] bg-zinc-300 dark:bg-zinc-700 rounded-md\" />\n      </div>\n    </div>\n  );\n}\n\nfunction Callout() {\n  return (\n    <div className=\"overflow-x-auto mt-6 flex rounded-lg border py-2 ltr:pr-4 rtl:pl-4 contrast-more:border-current contrast-more:dark:border-current border-purple-100 bg-green-100 text-green-800 dark:border-purple-400/30 dark:bg-purple-600/20 dark:text-purple-300\">\n      <div className=\"mt-px select-none text-xl ltr:pl-3 ltr:pr-2 rtl:pr-3 rtl:pl-2\">\n        💸\n      </div>\n      <div className=\"w-full min-w-0 leading-7\">\n        <p className=\"mt-6 leading-7 first:mt-0\">\n          We&apos;re actively looking for and <strong>paying</strong>{' '}\n          contributors for Million.js. Check out our{' '}\n          <Link\n            href={`https://console.algora.io/org/${org}/bounties`}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"!underline font-medium\"\n          >\n            active bounties\n            <span className=\"sr-only\"> (opens in a new tab)</span>\n          </Link>\n        </p>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/box.tsx",
    "content": "import {\n  SandpackCodeEditor,\n  SandpackLayout,\n  SandpackPreview,\n  SandpackProvider,\n} from '@codesandbox/sandpack-react';\nimport dedent from 'dedent';\nimport { useDarkMode } from './use-dark-mode';\n\nexport function Box({\n  code,\n  previewOnly,\n}: {\n  code: string;\n  previewOnly: boolean | undefined;\n}) {\n  const isDarkMode = useDarkMode();\n  return (\n    <SandpackProvider\n      theme={isDarkMode ? 'dark' : 'light'}\n      template=\"vite-react\"\n      customSetup={{\n        dependencies: {\n          vite: '3.2.3',\n          million: '2.3.3',\n          '@vitejs/plugin-react': 'latest',\n          'react-lag-radar': 'latest',\n        },\n      }}\n      files={{\n        'App.jsx': dedent`${code.trim()}`,\n        'data.jsx': {\n          code: dedent`const adjectives = ['pretty', 'large', 'big', 'small', 'tall', 'short', 'long', 'handsome', 'plain', 'quaint', 'clean', 'elegant', 'easy', 'angry', 'crazy', 'helpful', 'mushy', 'odd', 'unsightly', 'adorable', 'important', 'inexpensive', 'cheap', 'expensive', 'fancy'];\n        const colors = ['red', 'yellow', 'blue', 'green', 'pink', 'brown', 'purple', 'brown', 'white', 'black', 'orange'];\n        const nouns = ['table', 'chair', 'house', 'bbq', 'desk', 'car', 'pony', 'cookie', 'sandwich', 'burger', 'pizza', 'mouse', 'keyboard'];\n\n        const random = (max) => Math.round(Math.random() * 1000) % max;\n        export const buildData = (rows) => {\n          const data = [];\n          for (let i = 0; i < rows; i++) {\n            data.push({\n              adjective: getAdjective(),\n              noun: getNoun(),\n              color: getColor(),\n            });\n          }\n          return data;\n        }\n\n        export const getAdjective = () => adjectives[random(adjectives.length)];\n        export const getColor = () => colors[random(colors.length)];\n        export const getNoun = () => nouns[random(nouns.length)];`,\n          hidden: true,\n        },\n        'ui.jsx': {\n          code: dedent`\n          import { useRef } from 'react';\n          import LagRadar from 'react-lag-radar';\n\n          export const Table = ({ children, showRadar }) => (\n            <>\n              {showRadar && <LagRadar />}\n              <table>\n                <thead>\n                  <tr>\n                    <th>Adjective</th>\n                    <th>Noun</th>\n                    <th>Color</th>\n                  </tr>\n                </thead>\n                <tbody>\n                  {children}\n                </tbody>\n              </table>\n            </>\n          );\n\n          export const Input = ({ value, setValue }) => {\n            const inputRef = useRef();\n            const handleInput = () => {\n              const newValue = Number(inputRef.current.value);\n\n              if (!isNaN(newValue) && newValue >= 0 && newValue <= 9999) {\n                setValue(Number(inputRef.current.value))\n              }\n            }\n            return (\n              <input\n                type=\"number\"\n                ref={inputRef}\n                value={value}\n                onChange={handleInput}\n              />\n            );\n          };\n\n          export const lotsOfElements = Array(100).fill(0).map((_, i) => <div><div><div></div></div><div><div></div></div></div>);\n          `,\n          hidden: true,\n        },\n        'vite.config.js': {\n          code: dedent`\n            import react from '@vitejs/plugin-react';\n            import million from 'million/compiler';\n            import { defineConfig } from 'vite';\n\n            export default defineConfig({\n              plugins: [million.vite(), react()],\n            });\n          `,\n          readOnly: true,\n        },\n      }}\n    >\n      {!previewOnly && (\n        <>\n          <div\n            className=\"mt-6 flex px-2 ltr:pr-4 rtl:pl-4 bg-black/[.03] dark:bg-gray-50/10 dark:text-neutral-500\"\n            style={{\n              marginBottom: -1,\n              position: 'relative',\n              zIndex: 9,\n              borderTopLeftRadius: 8,\n              borderTopRightRadius: 8,\n              borderBottom: 0,\n            }}\n          >\n            <div className=\"min-w-0\">\n              <p className=\"text-gray-500 mt-6 leading-7 first:mt-0 flex\">\n                <svg\n                  className=\"mr-2 text-gray-400\"\n                  fill=\"none\"\n                  viewBox=\"0 0 24 24\"\n                  width=\"18\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <path\n                    d=\"m8 17.95-6-6L8.05 5.9l1.075 1.075L4.15 11.95l4.925 4.925L8 17.95Zm7.95.05-1.075-1.075 4.975-4.975-4.925-4.925L16 5.95l6 6L15.95 18Z\"\n                    fill=\"currentColor\"\n                  />\n                </svg>\n                Editable example\n              </p>\n            </div>\n          </div>\n          <SandpackLayout className=\"sandpack-fluid-layout\">\n            <SandpackCodeEditor wrapContent showTabs showLineNumbers />\n          </SandpackLayout>\n        </>\n      )}\n\n      <div\n        className=\"mt-4 flex px-2 ltr:pr-4 rtl:pl-4 bg-black/[.03] dark:bg-gray-50/10 dark:text-neutral-500\"\n        style={{\n          marginBottom: -1,\n          position: 'relative',\n          zIndex: 9,\n          borderTopLeftRadius: 8,\n          borderTopRightRadius: 8,\n          borderBottom: 0,\n        }}\n      >\n        <div className=\"min-w-0\">\n          <p className=\"text-gray-500 mt-6 leading-7 first:mt-0  flex\">\n            <svg\n              className=\"mr-2 text-gray-400\"\n              fill=\"currentColor\"\n              viewBox=\"0 0 48 48\"\n              width=\"18\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path d=\"M16 37.85v-28l22 14Zm3-14Zm0 8.55 13.45-8.55L19 15.3Z\" />\n            </svg>\n            Preview\n          </p>\n        </div>\n      </div>\n      <SandpackLayout>\n        <SandpackPreview\n          showOpenInCodeSandbox={false}\n          showRefreshButton={false}\n        />\n      </SandpackLayout>\n    </SandpackProvider>\n  );\n}\n"
  },
  {
    "path": "website/components/chart.tsx",
    "content": "import {\n  BarElement,\n  CategoryScale,\n  Chart as ChartJS,\n  defaults,\n  Legend,\n  LinearScale,\n  Title,\n  Tooltip,\n} from 'chart.js';\nimport { Bar } from 'react-chartjs-2';\nimport { memo } from 'react';\nimport { useDarkMode } from './use-dark-mode';\n\nChartJS.register(\n  CategoryScale,\n  LinearScale,\n  BarElement,\n  Title,\n  Tooltip,\n  Legend,\n);\n\nconst data = [\n  { framework: 'Million.js', val: 0.92 },\n  { framework: 'Preact', val: 0.59 },\n  { framework: 'React', val: 0.26 },\n];\n\nconst options = {\n  plugins: {\n    legend: {\n      display: false,\n    },\n  },\n  indexAxis: 'y' as const,\n  scales: {\n    x: {\n      max: 1,\n      ticks: {\n        format: {\n          style: 'percent',\n          minimumFractionDigits: 0,\n          maximumFractionDigits: 1,\n        },\n      },\n    },\n  },\n};\n\nexport function Chart() {\n  const isDarkMode = useDarkMode();\n\n  defaults.borderColor = isDarkMode ? '#2b2b2d' : '#e1e3eb';\n  defaults.color = isDarkMode ? '#e1e3eb' : '#545864';\n  defaults.font.size = 16;\n  defaults.font.family = 'Inter, sans-serif';\n\n  const color = isDarkMode ? '#54527b' : '#dcc9e8';\n  const backgroundColor = ['#b073d9', color, color];\n\n  return (\n    <div className=\"p-4 rounded-lg w-auto\">\n      {isDarkMode !== null && (\n        <BarChart darkMode={isDarkMode} backgroundColor={backgroundColor} />\n      )}\n    </div>\n  );\n}\n\ninterface BarChartProps {\n  backgroundColor: string[];\n  darkMode: boolean;\n}\n\nexport const BarChart = memo(\n  function BarChart({ backgroundColor, darkMode: _darkMode }: BarChartProps) {\n    return (\n      <Bar\n        redraw\n        options={options}\n        data={{\n          labels: data.map((row) => row.framework),\n          datasets: [\n            {\n              label: '% of vanilla JavaScript',\n              data: data.map((row) => row.val),\n              backgroundColor,\n              barPercentage: 0.5,\n            },\n          ],\n        }}\n      />\n    );\n  },\n  (prevProps, nextProps) => {\n    return (\n      prevProps.backgroundColor[0] === nextProps.backgroundColor[0] &&\n      prevProps.darkMode === nextProps.darkMode\n    );\n  },\n);\n"
  },
  {
    "path": "website/components/cursor.tsx",
    "content": "export function Cursor({\n  color,\n  x,\n  y,\n}: {\n  color: string;\n  x: number;\n  y: number;\n}) {\n  return (\n    <svg\n      style={{\n        position: 'absolute',\n        left: 0,\n        top: 0,\n        transform: `translateX(${x}px) translateY(${y}px)`,\n        zIndex: 1000,\n        pointerEvents: 'none'\n\n      }}\n      width=\"24\"\n      height=\"36\"\n      viewBox=\"0 0 24 36\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.65376 12.3673H5.46026L5.31717 12.4976L0.500002 16.8829L0.500002 1.19841L11.7841 12.3673H5.65376Z\"\n        fill={color}\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "website/components/demo.tsx",
    "content": "import { useState } from 'react';\n\nexport function Demo() {\n  const [isOpen, setIsOpen] = useState(false);\n  return (\n    <div className={`w-full ${isOpen ? 'h-[60vh]' : ''}`}>\n      {isOpen ? (\n        <div className=\"w-full h-full flex-col flex items-center justify-center border shadow border-[#e5e7eb] dark:border-[#262626] rounded-lg\">\n          <button\n            className=\"w-full transition-all text-[#262626] dark:text-[#e5e7eb] shadow py-2 px-4 rounded hover:opacity-[0.6]\"\n            onClick={() => setIsOpen(false)}\n          >\n            Close Demo ❌\n          </button>\n          <iframe className=\"w-full h-full\" src=\"https://demo.million.dev/\">\n            iframe is not supported\n          </iframe>\n        </div>\n      ) : (\n        <div className=\"w-full h-full flex items-center justify-center border shadow border-[#e5e7eb] dark:border-[#262626] rounded-lg\">\n          <button\n            className=\"w-full transition-all text-[#262626] dark:text-[#e5e7eb] shadow py-2 px-4 rounded hover:opacity-[0.6]\"\n            onClick={() => setIsOpen(true)}\n          >\n            Open Demo ✨\n          </button>\n        </div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/extra-content.tsx",
    "content": "import dynamic from 'next/dynamic';\nimport { startTransition, useEffect, useRef, useState } from 'react';\nimport { CarbonAds } from './ad';\n\nconst LagRadar = dynamic(() => import('react-lag-radar'), { ssr: false });\n\nexport function ExtraContent() {\n  return (\n    <>\n      <CarbonAds />\n    </>\n  );\n}\n// million-ignore\nexport function Showdown({ initStart = false, amount = 1000 }) {\n  const [start, setStart] = useState<boolean>(false);\n  const [renders, setRenders] = useState<number>(0);\n  const firstUpdate = useRef(true);\n  const ref = useRef<{\n    renderReact: () => void;\n    renderMillion: () => void;\n  }>();\n\n  useEffect(() => {\n    if (firstUpdate.current) {\n      firstUpdate.current = false;\n      return;\n    }\n    const setup = async () => {\n      const { block, mount, patch } = await import(\n        './million-library/million.mjs'\n      );\n      const { createRoot } = await import('react-dom/client');\n\n      const reactRoot = document.createElement('div');\n      const millionRoot = document.createElement('div');\n\n      const filledArray = Array(amount).fill(0);\n\n      const b = block(({ text }: { text: string }) => ({\n        type: 'div',\n        props: {\n          children: [\n            {\n              type: 'div',\n              props: {\n                children: [\n                  ...filledArray.map(() => ({\n                    type: 'div',\n                    props: {\n                      children: filledArray.map(() => ({\n                        type: 'div',\n                        props: {},\n                      })),\n                    },\n                  })),\n                  {\n                    type: 'div',\n                    props: {\n                      children: [text],\n                    },\n                  },\n                ],\n              },\n            },\n          ],\n        },\n      }));\n\n      const Component = ({ text }) => {\n        return (\n          <div>\n            <div>\n              {filledArray.map(() => (\n                <div>\n                  {filledArray.map(() => (\n                    <div></div>\n                  ))}\n                </div>\n              ))}\n              <div>{text}</div>\n            </div>\n          </div>\n        );\n      };\n\n      const currentBlock = b({ text: String(Math.random()) });\n      mount(currentBlock, millionRoot);\n      const root = createRoot(reactRoot);\n\n      root.render(<Component text={String(Math.random())} />);\n\n      ref.current = {\n        renderReact() {\n          root.render(<Component text={String(Math.random())} />);\n        },\n        renderMillion() {\n          patch(currentBlock, b({ text: String(Math.random()) }));\n        },\n      };\n    };\n    if (initStart || start) {\n      startTransition(() => {\n        void setup();\n      });\n    }\n  }, [start]);\n\n  useEffect(() => {\n    if (initStart) {\n      setTimeout(() => {\n        startTransition(() => {\n          setStart(true);\n        });\n      }, 1000);\n    }\n  }, []);\n\n  return (\n    <div className=\"w-full border border-[#e5e7eb] dark:border-[#262626] bg-white dark:bg-[#141414] p-3 shadow rounded-lg\">\n      <div className=\"px-2 text-xs text-[#6b7280] font-semibold\">\n        SPEED SHOWDOWN ⚡\n      </div>\n      <hr className=\"border-[#e8e8e8] dark:border-[#4b4b4b] my-2\" />\n      {!start ? (\n        <div>\n          <button\n            onClick={() => setStart(true)}\n            className=\"w-full bg-[#f0e1ff] text-[#5200a3] dark:bg-[#24182f] dark:text-[#9580ff] px-2 py-2 font-bold rounded\"\n          >\n            {initStart ? 'Booting up demo...' : 'Begin'}\n          </button>\n        </div>\n      ) : (\n        <div>\n          <div className=\"px-2 text-xs text-[#6b7280]\">\n            Click on a button to invoke a render cycle{' '}\n            <span className=\"font-semibold\">({renders} renders)</span>\n          </div>\n          <div className=\"flex justify-center my-4\">\n            <LagRadar />\n          </div>\n          <div className=\"flex gap-2 justify-center mb-4\">\n            <button\n              onClick={() => {\n                setRenders(renders + 1);\n                ref.current?.renderMillion();\n              }}\n              className=\"bg-[#b073d9] gradient-bg transition-all active:scale-105 hover:opacity-90 active:opacity-90 font-bold text-white py-2 px-4 rounded-full shadow\"\n            >\n              Million.js\n            </button>\n            <button\n              onClick={() => {\n                setRenders(renders + 1);\n                ref.current?.renderReact();\n              }}\n              className=\"bg-[#139eca] transition-all active:scale-105 hover:opacity-90 active:opacity-90 text-white py-2 px-4 rounded-full shadow\"\n            >\n              React\n            </button>\n          </div>\n        </div>\n      )}\n      <div className=\"flex justify-center\">\n        <div className=\"mt-2 text-xs text-[#6b7280]\">\n          <a\n            target=\"_blank\"\n            href=\"https://github.com/aidenybai/million/blob/188febf41af66a1af12064bdee943e0d680bd09e/website/components/extra-content.tsx#L15\"\n          >\n            <u>View Source</u>\n          </a>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/home/about.tsx",
    "content": "import Tilt from 'react-parallax-tilt';\nimport Link from 'next/link';\nimport { useState } from 'react';\nimport dynamic from 'next/dynamic';\nimport { useTranslations } from '../../hooks/use-translations';\nimport { Container } from './container';\nimport { Blur } from './hero';\n\nconst Chart = dynamic(() => import('../chart').then((mod) => mod.Chart));\nconst Showdown = dynamic(() =>\n  import('../extra-content').then((mod) => mod.Showdown),\n);\n\nexport function About() {\n  const { about } = useTranslations();\n  return (\n    <>\n      <div>\n        <Container>\n          <div className=\"lg:p-4 space-y-6 md:flex md:gap-20 justify-center md:space-y-0 lg:items-center\">\n            <div className=\"md:w-7/12 lg:w-1/2\">\n              <Graphic />\n            </div>\n            <div className=\"md:w-7/12 lg:w-1/2\">\n              <h2 className=\"text-3xl font-bold text-zinc-900 md:text-4xl dark:text-white\">\n                {about.rawJs}\n              </h2>\n              <p className=\"text-lg my-8 text-zinc-600 dark:text-zinc-300\">\n                {about.rawJsDescription}{' '}\n                <a\n                  href=\"https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html\"\n                  target=\"_blank\"\n                  rel=\"noreferrer\"\n                  className=\"nx-text-primary-600 underline decoration-from-font [text-underline-position:from-font]\"\n                >\n                  {about.jsBenchmark}\n                </a>\n                .\n              </p>\n              <div className=\"divide-y space-y-4 divide-zinc-100 dark:divide-zinc-800\">\n                <div className=\"mt-8 flex gap-4 md:items-center\">\n                  <div className=\"w-12 h-12 flex gap-4 rounded-full bg-purple-100 dark:bg-purple-900/20\">\n                    <LightningIcon />\n                  </div>\n                  <div className=\"w-5/6\">\n                    <h4 className=\"font-semibold text-lg text-zinc-700 dark:text-purple-300\">\n                      {about.seventyPercent}\n                    </h4>\n                    <p className=\"text-zinc-500 text-sm dark:text-zinc-400\">\n                      {about.benchmarkWarning}\n                    </p>\n                  </div>\n                </div>\n                <div className=\"pt-4 flex gap-4 md:items-center\">\n                  <div className=\"w-12 h-12 flex gap-4 rounded-full bg-purple-100 dark:bg-purple-900/20\">\n                    <ClockIcon />\n                  </div>\n                  <div className=\"w-5/6\">\n                    <h4 className=\"font-semibold text-lg text-zinc-700 dark:text-purple-300\">\n                      {about.integrate}\n                    </h4>\n                    <p className=\"text-zinc-500 text-sm dark:text-zinc-400\">\n                      {about.noNeedLearn}\n                    </p>\n                  </div>\n                </div>\n              </div>\n              <p className=\"mt-10 text-xs bg-gradient-to-b dark:from-zinc-500 dark:to-[#111] dark:hover:to-zinc-500 inline-block text-transparent bg-clip-text from-zinc-500 to-white hover:to-zinc-500 opacity-40 hover:opacity-50 transition-opacity\">\n                {about.benchmarkNote}\n              </p>\n            </div>\n          </div>\n        </Container>\n      </div>\n      <div className=\"relative\">\n        <Container>\n          <h3 className=\"text-2xl text-center font-bold text-zinc-900 dark:text-white md:text-3xl lg:text-4xl\">\n            {about.whatsInMillionJS}\n          </h3>\n          <p className=\"mt-3 text-center text-zinc-600 dark:text-zinc-300 md:text-md lg:text-lg\">\n            {about.toolsToMakeReactFaster}\n          </p>\n          <div className=\"relative mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n            <Card\n              title={about.blockVirtualDom}\n              icon={<BoxIcon />}\n              description={\n                <>\n                  {about.millionIntroduces}{' '}\n                  <Link\n                    href=\"/blog/virtual-dom\"\n                    className=\"underline nx-text-primary-600\"\n                  >\n                    {about.blockVirtualDomQuote}\n                  </Link>{' '}\n                  {about.blockVirtualDomDescription}\n                </>\n              }\n            />\n            <Card\n              title={about.superchargedCompiler}\n              icon={<LightBulbIcon />}\n              description={\n                <>\n                  {about.millionUses}{' '}\n                  <Link\n                    href=\"/blog/behind-the-block\"\n                    className=\"underline nx-text-primary-600\"\n                  >\n                    {about.customCompiler}\n                  </Link>{' '}\n                  {about.automaticallyOptimizes}\n                </>\n              }\n            />\n            <Card\n              title={about.automaticMode}\n              icon={<ThumbsUpIcon />}\n              description={\n                <>\n                  {about.tiredOf}{' '}\n                  <Link\n                    href=\"/docs/automatic\"\n                    className=\"underline nx-text-primary-600\"\n                  >\n                    {about.dropIn}\n                  </Link>{' '}\n                  {about.makeReactFaster}\n                </>\n              }\n            />\n          </div>\n        </Container>\n        <Blur />\n      </div>\n    </>\n  );\n}\n\nfunction Graphic() {\n  const [showShowdown, setShowShowdown] = useState(false);\n  const { about } = useTranslations();\n\n  const handleClick = () => {\n    setShowShowdown(!showShowdown);\n  };\n\n  return (\n    <GraphicWrapper onClick={handleClick}>\n      {!showShowdown ? (\n        <div className=\"bg-white p-4 pb-6 dark:bg-zinc-900 rounded-lg\">\n          <div className=\"w-full\">\n            <p className=\"font-bold text-lg\">{about.jsBenchmark}</p>\n            <p className=\"text-md mt-1 text-zinc-700 dark:text-zinc-400\">\n              {about.higherBetter}\n            </p>\n            <Chart />\n          </div>\n          <div className=\"text-sm text-zinc-400\">\n            {about.basedOn}{' '}\n            <a\n              href=\"https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html\"\n              target=\"_blank\"\n              rel=\"noreferrer\"\n              className=\"text-zinc-500 underline decoration-from-font [text-underline-position:from-font]\"\n            >\n              {about.benchmarkData}\n            </a>{' '}\n            {about.chromeVersion}\n          </div>\n        </div>\n      ) : (\n        <Showdown initStart amount={500} />\n      )}\n    </GraphicWrapper>\n  );\n}\n\nfunction GraphicWrapper({\n  children,\n  onClick,\n}: {\n  children: JSX.Element;\n  onClick: () => void;\n}) {\n  return (\n    <Tilt\n      tiltMaxAngleX={5}\n      tiltMaxAngleY={10}\n      glareEnable\n      tiltAngleYInitial={0}\n      glareMaxOpacity={0.1}\n      className=\"fix-safari-tilt shadow-lg w-full\nrounded-lg text-center bg-gradient-to-b from-zinc-200 to-white dark:from-zinc-700 dark:via-zinc-800 dark:to-darker p-px\"\n    >\n      <div className=\"absolute z-50 flex p-2 justify-end w-full\">\n        <button onClick={onClick}>\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            fill=\"none\"\n            viewBox=\"0 0 24 24\"\n            strokeWidth={1.5}\n            stroke=\"currentColor\"\n            className=\"w-6 h-6 absolute hover:animate-spin\"\n          >\n            <path\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n              d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99\"\n            />\n          </svg>\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            fill=\"none\"\n            viewBox=\"0 0 24 24\"\n            strokeWidth={1.5}\n            stroke=\"currentColor\"\n            className=\"w-6 h-6 animate-ping text-purple-500\"\n          >\n            <path\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n              d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99\"\n            />\n          </svg>\n        </button>\n      </div>\n      {children}\n    </Tilt>\n  );\n}\n\nfunction Card({ title, description, icon }) {\n  return (\n    <Tilt\n      tiltMaxAngleX={2.5}\n      tiltMaxAngleY={5}\n      glareEnable\n      tiltAngleYInitial={0}\n      glareMaxOpacity={0.1}\n      className=\"fix-safari-tilt relative overflow-hidden rounded-2xl bg-gradient-to-b from-zinc-200 to-white p-px dark:from-zinc-700 dark:via-zinc-800 dark:to-darker\"\n    >\n      <div className=\"relative flex h-full flex-col gap-6 rounded-2xl bg-zinc-100 p-8 dark:bg-zinc-900\">\n        {icon}\n        <div>\n          <h4 className=\"text-xl font-semibold text-zinc-900 dark:text-white\">\n            {title}\n          </h4>\n          <p className=\"mt-3 text-zinc-600 dark:text-zinc-400\">{description}</p>\n        </div>\n      </div>\n    </Tilt>\n  );\n}\n\nfunction ThumbsUpIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.5}\n      stroke=\"currentColor\"\n      className=\"w-6 h-6 text-purple-500 hover:animate-spin\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M6.633 10.5c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75A2.25 2.25 0 0116.5 4.5c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23H5.904M14.25 9h2.25M5.904 18.75c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 01-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 10.203 4.167 9.75 5 9.75h1.053c.472 0 .745.556.5.96a8.958 8.958 0 00-1.302 4.665c0 1.194.232 2.333.654 3.375z\"\n      />\n    </svg>\n  );\n}\n\nfunction LightBulbIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.5}\n      stroke=\"currentColor\"\n      className=\"w-6 h-6 text-purple-400 hover:animate-spin\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M12 18v-5.25m0 0a6.01 6.01 0 001.5-.189m-1.5.189a6.01 6.01 0 01-1.5-.189m3.75 7.478a12.06 12.06 0 01-4.5 0m3.75 2.383a14.406 14.406 0 01-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 10-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\"\n      />\n    </svg>\n  );\n}\n\nfunction BoxIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth=\"1.5\"\n      stroke=\"currentColor\"\n      className=\"w-6 h-6 text-purple-400 hover:animate-spin\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M21 7.5l-9-5.25L3 7.5m18 0l-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9\"\n      />\n    </svg>\n  );\n}\n\nfunction LightningIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.5}\n      stroke=\"currentColor\"\n      className=\"w-6 h-6 text-purple-400 m-auto hover:animate-spin\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z\"\n      />\n    </svg>\n  );\n}\n\nfunction ClockIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      strokeWidth={1.5}\n      stroke=\"currentColor\"\n      className=\"w-6 h-6 m-auto text-purple-600 dark:text-purple-400 hover:animate-spin\"\n    >\n      <path\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "website/components/home/container.tsx",
    "content": "export function Container({ children }) {\n  return (\n    <div className=\"max-w-7xl mx-auto px-6 md:px-12 xl:px-6\">{children}</div>\n  );\n}\n"
  },
  {
    "path": "website/components/home/cta.tsx",
    "content": "import Link from 'next/link';\nimport { useTranslations } from '../../hooks/use-translations';\nimport { Container } from './container';\nimport { Blur } from './hero';\nimport { ShimmerButton } from './shimmer-button';\n\nexport function CTA() {\n  const { cta } = useTranslations();\n\n  return (\n    <div className=\"relative\">\n      <Blur />\n      <Container>\n        <div className=\"relative\">\n          <div className=\"mt-48 m-auto space-y-6 md:w-8/12 lg:w-7/12\">\n            <h1 className=\"text-center text-4xl font-bold text-gray-800 dark:text-white md:text-5xl\">\n              {cta.getStartedInSeconds}\n            </h1>\n            <p className=\"mt-3 text-center text-zinc-600 dark:text-zinc-300 md:text-md lg:text-lg\">\n              {cta.welcome}\n            </p>\n            <div className=\"flex flex-wrap justify-center gap-6\">\n              <Link href=\"/docs/introduction\" className=\"h-12 w-fullsm:w-max\">\n                <ShimmerButton\n                  className=\"relative w-full sm:w-max flex items-center justify-center transition-all hover:shadow-[0_0_0_3px_rgba(255,255,255,0.3)_inset]\"\n                  background=\"radial-gradient(ellipse 80% 70% at 50% 120%, #b28ce2, #892fda)\"\n                >\n                  <span className=\"relative whitespace-pre text-center text-base font-semibold leading-none tracking-tight text-white z-10\">\n                    {cta.getStarted}\n                  </span>\n                </ShimmerButton>\n              </Link>\n            </div>\n          </div>\n        </div>\n      </Container>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/home/faq.tsx",
    "content": "import Image from 'next/image';\nimport Link from 'next/link';\nimport { Disclosure, Transition } from '@headlessui/react';\nimport { useTranslations } from 'hooks/use-translations';\nimport { Container } from './container';\n\nexport function FAQ() {\n  const { faqs } = useTranslations();\n\n  return (\n    <div id=\"faq\">\n      <Container>\n        <div className=\"flex flex-col gap-12 lg:flex-row\">\n          <div className=\"text-center lg:w-5/12 lg:pl-12 lg:text-left\">\n            <h2 className=\"text-2xl font-bold text-gray-800 dark:text-white md:text-3xl lg:text-4xl\">\n              {faqs.frequently}\n            </h2>\n            <p className=\"mt-4 text-gray-600 dark:text-gray-300\">\n              {faqs.description}\n            </p>\n          </div>\n          <div className=\"lg:w-7/12\">\n            <Disclosures />\n          </div>\n        </div>\n      </Container>\n    </div>\n  );\n}\n\nexport function Disclosures({ full = false }) {\n  const { faqs } = useTranslations();\n  const faq = [\n    {\n      question: <>{faqs.fast}</>,\n      answer: (\n        <>\n          {faqs.novelApproach}{' '}\n          <Link\n            className=\"nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n            href=\"/blog/virtual-dom\"\n          >\n            {faqs.virtualDom}\n          </Link>{' '}\n          {faqs.makeItHappen}{' '}\n          <Link\n            className=\"nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n            href=\"/blog/behind-the-block\"\n          >\n            {faqs.block}\n          </Link>\n          .\n        </>\n      ),\n    },\n    {\n      question: (\n        <>\n          {faqs.compare}{' '}\n          <code\n            className=\"nx-border-black nx-border-opacity-[0.04] nx-bg-opacity-[0.03] nx-bg-black nx-break-words nx-rounded-md nx-border nx-py-0.5 nx-px-[.25em] nx-text-[.9em] dark:nx-border-white/10 dark:nx-bg-white/10\"\n            dir=\"ltr\"\n            data-language=\"jsx\"\n            data-theme=\"default\"\n          >\n            <span className=\"line\">{faqs.JSFramework}</span>\n          </code>\n        </>\n      ),\n      answer: (\n        <>\n          {faqs.depends}{' '}\n          <a\n            href=\"https://krausest.github.io/js-framework-benchmark/current.html\"\n            target=\"_blank\"\n            className=\"nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n          >\n            {faqs.benchmark}\n          </a>\n          . {faqs.useCase}\n        </>\n      ),\n    },\n    {\n      question: <>{faqs.doesItWork}</>,\n      answer: (\n        <>\n          {faqs.probably}{' '}\n          <Link\n            className=\"nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n            href=\"/docs/install\"\n          >\n            {faqs.guide}\n          </Link>\n          .\n        </>\n      ),\n    },\n    {\n      question: <>{faqs.limitations}</>,\n      answer: (\n        <>\n          {faqs.viewList}{' '}\n          <Link\n            className=\"nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n            href=\"/docs/manual-mode/block#rules-of-blocks\"\n          >\n            {faqs.rulesOfBlocks}\n          </Link>\n          . {faqs.importantNote}\n        </>\n      ),\n    },\n    {\n      question: <>{faqs.isItMemo}</>,\n      answer: (\n        <>\n          {faqs.memoization}\n          <Link\n            className=\"nx-text-primary-600 px-1 nx-underline nx-decoration-from-font [text-underline-position:from-font]\"\n            href=\"/blog/virtual-dom\"\n          >\n            {faqs.backInBlock}\n          </Link>\n          {faqs.learnMore}\n        </>\n      ),\n    },\n    {\n      question: <>{faqs.logo}</>,\n      answer: (\n        <>\n          {faqs.he} <b>{faqs.milTheLion}</b> {faqs.friendlyMascot} (\n          <i>\n            {faqs.nobite} <b>{faqs.byte}</b>\n          </i>\n          )\n          <Image\n            src=\"./lion.svg\"\n            width={300}\n            height={200}\n            className=\"mt-5\"\n            alt=\"Mil the lion\"\n          />\n        </>\n      ),\n    },\n  ];\n  return (\n    <div className=\"divide-y divide-zinc-200 border-y border-zinc-200 dark:divide-zinc-800 dark:border-zinc-800\">\n      {faq.map((item, i) => (\n        <Disclosure\n          as=\"div\"\n          key={String(i)}\n          className={`mx-auto text-lg ${full ? '' : 'max-w-2xl'}`}\n        >\n          {({ open }) => (\n            <>\n              <Disclosure.Button className=\"flex w-full items-start justify-between py-6 text-left text-gray-400\">\n                <span className=\"font-medium text-gray-900 dark:text-white\">\n                  {item.question}\n                </span>\n                <span className=\"ml-6 flex h-7 items-center\">\n                  <svg\n                    className={`arrow-down h-6 w-6 transform duration-300 ${\n                      open ? 'rotate-180' : 'rotate-0'\n                    }`}\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    fill=\"none\"\n                    viewBox=\"0 0 24 24\"\n                    strokeWidth=\"1.5\"\n                    stroke=\"currentColor\"\n                    aria-hidden=\"true\"\n                  >\n                    <path\n                      strokeLinecap=\"round\"\n                      strokeLinejoin=\"round\"\n                      d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\"\n                    ></path>\n                  </svg>\n                </span>\n              </Disclosure.Button>\n              <Transition\n                enter=\"transition duration-100 ease-out\"\n                enterFrom=\"transform scale-95 opacity-0\"\n                enterTo=\"transform scale-100 opacity-100\"\n                leave=\"transition duration-75 ease-out\"\n                leaveFrom=\"transform scale-100 opacity-100\"\n                leaveTo=\"transform scale-95 opacity-0\"\n              >\n                <Disclosure.Panel\n                  className={`pr-12 duration-300 ease-in-out ${\n                    open ? '' : 'hidden'\n                  }`}\n                >\n                  <p className=\"pb-6 text-base text-gray-600 dark:text-gray-400\">\n                    {item.answer}\n                  </p>\n                </Disclosure.Panel>\n              </Transition>\n            </>\n          )}\n        </Disclosure>\n      ))}\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/home/hero.tsx",
    "content": "import dynamic from 'next/dynamic';\nimport Link from 'next/link';\nimport Image from 'next/image';\nimport { useState } from 'react';\nimport TextsLogo from '../../public/texts.webp';\nimport HackClubLogo from '../../public/hackclub.svg';\nimport OpenSaucedLogo from '../../public/opensauced.svg';\nimport MetamaskLogo from '../../public/metamask.svg';\nimport { RetroGrid } from '../retro-grid';\nimport { useTranslations } from '../../hooks/use-translations';\nimport { Container } from './container';\nimport { ShimmerButton } from './shimmer-button';\nimport { track } from '@vercel/analytics';\n\nconst CountUp = dynamic(() => import('react-countup'), {\n  loading: () => <span>70</span>,\n  ssr: false,\n});\n\nexport function Hero() {\n  const { hero } = useTranslations();\n  const [submitted, setSubmitted] = useState<boolean>(false);\n\n  const handleClickWizard = () => {\n    track('homepage/clicked-npx-wizard');\n    void navigator.clipboard.writeText('npx million@latest');\n    setSubmitted(true);\n\n    setTimeout(() => {\n      setSubmitted(false);\n    }, 1000);\n  };\n\n  return (\n    <div className=\"relative pb-10 border-b border-b-[#ffffff1a]\">\n      <Blur />\n      <RetroGrid className=\"opacity-20 \" />\n      <Container>\n        <div className=\"relative pt-20 md:pt-36 ml-auto\">\n          <div className=\"lg:w-[70%] text-center mx-auto\">\n            <h1 className=\"text-zinc-900 dark:text-white font-extrabold text-5xl md:text-6xl xl:text-7xl\">\n              {hero.makeReact}{' '}\n              <span className=\"gradient-text inline-block\">\n                <CountUp start={10} end={70} useEasing />% {hero.faster}\n              </span>\n            </h1>\n            <p className=\"mt-8 text-xl text-zinc-600 dark:text-zinc-300 leading-8\">\n              {hero.the}{' '}\n              <span className=\"font-medium dark:text-zinc-100\">\n                {hero.dropIn}\n              </span>{' '}\n              {hero.forReact}{' '}\n              <Link href=\"/docs/introduction\" className=\"font-medium hover:underline\">\n                {hero.now}\n              </Link>\n              !\n            </p>\n            <div className=\"mt-8 flex flex-wrap justify-center gap-y-4 gap-x-6\">\n              <Link href=\"/docs/introduction\" className=\"w-full sm:w-max\">\n                <ShimmerButton\n                  className=\"relative w-full sm:w-max flex items-center justify-center transition-all hover:shadow-[0_0_0_3px_rgba(255,255,255,0.3)_inset]\"\n                  background=\"radial-gradient(ellipse 80% 70% at 50% 120%, #b28ce2, #892fda)\"\n                >\n                  <span className=\"relative whitespace-pre text-center text-base font-semibold leading-none tracking-tight text-white z-10\">\n                    {hero.getStarted}\n                  </span>\n                </ShimmerButton>\n              </Link>\n              <Link\n                href=\"/blog/virtual-dom\"\n                className=\"relative flex h-11 w-full items-center justify-center px-6 before:absolute before:inset-0 before:rounded-full before:border before:border-transparent before:bg-purple-600/10 before:bg-gradient-to-b before:transition before:duration-300 hover:before:scale-105 active:duration-75 active:before:scale-95 dark:before:border-zinc-700 dark:before:bg-zinc-800 sm:w-max\"\n              >\n                <span className=\"relative text-base font-semibold text-purple-600 dark:text-white\">\n                  {hero.how}\n                </span>\n              </Link>\n            </div>\n            <button\n              className=\"mt-6 flex flex-row items-center gap-2 mx-auto rounded-lg group\"\n              onClick={handleClickWizard}\n            >\n              <p className=\"text-sm text-zinc-100 dark:text-zinc-400 font-mono\">\n                ~ npx million@latest\n              </p>\n              <div className=\"opacity-0 group-hover:opacity-100 text-xs text-zinc-600 dark:text-zinc-300 transition-opacity\">\n                {submitted ? (\n                  <svg\n                    className=\"w-[16px] h-[16px] dark:text-zinc-100 pt-[1px]\"\n                    data-testid=\"geist-icon\"\n                    fill=\"none\"\n                    height={24}\n                    shapeRendering=\"geometricPrecision\"\n                    stroke=\"currentColor\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth=\"1.5\"\n                    viewBox=\"0 0 24 24\"\n                    width={24}\n                    data-open=\"false\"\n                  >\n                    <path d=\"M20 6L9 17l-5-5\" />\n                  </svg>\n                ) : (\n                  <svg\n                    className=\"w-[16px] h-[16px] dark:text-zinc-100 pt-[1px]\"\n                    data-testid=\"geist-icon\"\n                    fill=\"none\"\n                    height={24}\n                    shapeRendering=\"geometricPrecision\"\n                    stroke=\"currentColor\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth=\"1.5\"\n                    viewBox=\"0 0 24 24\"\n                    width={24}\n                    data-open=\"true\"\n                  >\n                    <path d=\"M6 17C4.89543 17 4 16.1046 4 15V5C4 3.89543 4.89543 3 6 3H13C13.7403 3 14.3866 3.4022 14.7324 4M11 21H18C19.1046 21 20 20.1046 20 19V9C20 7.89543 19.1046 7 18 7H11C9.89543 7 9 7.89543 9 9V19C9 20.1046 9.89543 21 11 21Z\" />\n                  </svg>\n                )}\n              </div>\n            </button>\n          </div>\n        </div>\n      </Container>\n      <Container>\n        <div className=\"lg:w-2/3 text-center mx-auto\">\n          <Companies />\n        </div>\n      </Container>\n    </div>\n  );\n}\n\nexport function Blur() {\n  return (\n    <div\n      aria-hidden=\"true\"\n      className=\"absolute inset-0 grid grid-cols-2 -space-x-52 opacity-40 dark:opacity-20 pointer-events-none\"\n    >\n      <div className=\"fix-safari-blur blur-[106px] h-56 bg-gradient-to-br from-violet-500 to-purple-400 dark:from-fuchsia-700\"></div>\n      <div className=\"fix-safari-blur blur-[106px] h-32 bg-gradient-to-r from-fuchsia-400 to-purple-300 dark:to-violet-600\"></div>\n    </div>\n  );\n}\n\nexport function Companies() {\n  const { hero } = useTranslations();\n\n  const entries = [\n    {\n      url: 'https://wyze.com',\n      component: (\n        <div key=\"wyze\">\n          <WyzeLogo />\n        </div>\n      ),\n    },\n    {\n      url: 'https://metamask.io',\n      component: (\n        <div key=\"metamask\">\n          <div className=\"flex font-mono items-center gap-3 text-xl font-semibold\">\n            <Image\n              src={MetamaskLogo as string}\n              width={30}\n              height={30}\n              alt=\"METAMASK\"\n            />{' '}\n            METAMASK\n          </div>\n        </div>\n      ),\n    },\n    {\n      url: 'https://hackclub.com',\n      component: (\n        <div key=\"hackclub\">\n          <Image\n            src={HackClubLogo as string}\n            width={90}\n            height={30}\n            alt=\"Hack Club\"\n          />\n        </div>\n      ),\n    },\n    {\n      url: 'https://texts.com',\n      component: (\n        <div key=\"texts\">\n          <div className=\"flex items-center gap-3 text-xl font-semibold\">\n            <Image src={TextsLogo} width={30} height={30} alt=\"Texts\" /> Texts\n          </div>\n        </div>\n      ),\n    },\n    {\n      url: 'https://opensauced.pizza/',\n      component: (\n        <div key=\"opensauced\">\n          <Image\n            src={OpenSaucedLogo as string}\n            width={150}\n            height={25}\n            className=\"invert dark:invert-0\"\n            alt=\"OpenSauced\"\n          />\n        </div>\n      ),\n    },\n  ];\n\n  return (\n    <div className=\"mt-36 text-center lg:mt-32\">\n      <div className=\"uppercase text-sm font-semibold tracking-wider text-zinc-600 dark:text-zinc-400\">\n        {hero.trustedBy}{' '}\n        <span className=\"dark:text-white text-black semibold\">3M+</span>{' '}\n        {hero.users}\n      </div>\n      <div className=\"slider\">\n        <div className=\"slide-track-5 hover:pause mt-6 grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 justify-around items-center\">\n          {[...entries, ...entries].map(({ component, url }, i) => (\n            <div\n              className=\"w-[12rem] relative grayscale opacity-60 hover:opacity-100 transition duration-200 hover:grayscale-0\"\n              key={i}\n            >\n              <a\n                href={url}\n                target=\"_blank\"\n                className=\"flex justify-center w-full\"\n              >\n                {component}\n              </a>\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nfunction WyzeLogo() {\n  return (\n    <svg\n      width=\"100\"\n      height=\"23\"\n      viewBox=\"0 0 96 21\"\n      fill=\"none\"\n      className=\"invert dark:invert-0\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <title>Wyze</title>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M14.7772 0.191406H10.8936L14.7772 8.03827L11.379 14.8466L4.09734 0.191406H0.213745L10.1655 20.3855H12.5927L16.719 12.0771L20.8453 20.3855H23.2726L33.2243 0.191406H29.3407L22.0589 14.962L14.7772 0.191406Z\"\n        fill=\"white\"\n      ></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M51.671 0.191406L44.9961 10.3461L38.3212 0.191406H34.1949L43.297 13.9234V20.2701H46.8166V13.9234L55.7973 0.191406H51.671Z\"\n        fill=\"white\"\n      ></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M77.5212 20.3854H95.9683V16.9236H77.5212V20.3854Z\"\n        fill=\"white\"\n      ></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M77.5212 3.65326H95.9683V0.191406H77.5212V3.65326Z\"\n        fill=\"white\"\n      ></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M77.5212 11.9619H95.9683V8.5H77.5212V11.9619Z\"\n        fill=\"white\"\n      ></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M56.8897 0.191406V3.53786H69.0259L55.4333 20.3855H75.2154V17.0391H62.7151L76.4289 0.191406H56.8897Z\"\n        fill=\"white\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "website/components/home/index.tsx",
    "content": "import { About } from './about';\nimport { CTA } from './cta';\nimport { Hero } from './hero';\nimport { Showcase } from './showcase';\n\nexport function Home(): JSX.Element {\n  return (\n    <main className=\"space-y-40 mb-40\">\n      <Hero />\n      <About />\n      <Showcase />\n      <CTA />\n    </main>\n  );\n}\n"
  },
  {
    "path": "website/components/home/shimmer-button.tsx",
    "content": "import type { CSSProperties } from 'react';\n\ninterface ShimmerButtonProps {\n  shimmerColor?: string;\n  shimmerSize?: string;\n  borderRadius?: string;\n  shimmerDuration?: string;\n  background?: string;\n  className?: string;\n  children?: React.ReactNode;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- props\n  [key: string]: any; // ...props\n}\n\nexport const ShimmerButton = ({\n  shimmerColor = '#ffffff',\n  shimmerSize = '1px',\n  shimmerDuration = '1.5s',\n  borderRadius = '100px',\n  background = 'radial-gradient(ellipse 80% 50% at 50% 120%,rgba(62, 61, 117),rgba(18, 18, 38))',\n  className,\n  children,\n  ...props\n}: ShimmerButtonProps) => {\n  return (\n    <button\n      style={\n        {\n          '--spread': '90deg',\n          '--shimmer-color': shimmerColor,\n          '--radius': borderRadius,\n          '--speed': shimmerDuration,\n          '--cut': shimmerSize,\n          '--bg': background,\n        } as CSSProperties\n      }\n      className={`\n        flex text-white dark:text-black group relative cursor-pointer overflow-hidden whitespace-nowrap h-11 px-6  [background:var(--bg)] [border-radius:var(--radius)] transition-all shadow-[0_0_0_3px_rgba(255,255,255,0.3)_inset] hover:scale-105 duration-300 ${\n          className || ''\n        }\n      `}\n      {...props}\n    >\n      {/* spark container */}\n      <div className=\"absolute inset-0 overflow-visible [container-type:size]\">\n        {/* spark */}\n        <div className=\"absolute inset-0 h-[100cqh] animate-slide [aspect-ratio:1] [border-radius:0] [mask:none] \">\n          {/* spark before */}\n          <div className=\"absolute inset-[-100%] w-auto rotate-0 animate-spin [background:conic-gradient(from_calc(270deg-(var(--spread)*0.5)),transparent_0,hsl(0_0%_100%/1)_var(--spread),transparent_var(--spread))] [translate:0_0]\" />\n        </div>\n      </div>\n\n      {/* backdrop */}\n      <div className=\"absolute [background:var(--bg)] [border-radius:var(--radius)] [inset:var(--cut)]\" />\n      {/* content */}\n      {children}\n    </button>\n  );\n};\n"
  },
  {
    "path": "website/components/home/showcase.tsx",
    "content": "import Image from 'next/image';\nimport Link from 'next/link';\nimport Wyze from '../../pages/showcase/wyze.png';\nimport HackClub from '../../pages/showcase/hackclub.jpeg';\nimport DonaAI from '../../pages/showcase/dona-ai.jpeg';\nimport LLMReport from '../../pages/showcase/llm-report.png';\nimport Texts from '../../pages/showcase/texts.png';\nimport { useTranslations } from '../../hooks/use-translations';\nimport { Container } from './container';\n\nexport function Showcase() {\n  const { showCase } = useTranslations();\n  return (\n    <div className=\"my-42 relative\">\n      <Container>\n        <div className=\"mb-16\">\n          <h2 className=\"mb-4 text-center text-2xl font-bold text-gray-800 dark:text-white md:text-4xl\">\n            {showCase.faster}\n          </h2>\n          <p className=\"mt-3 text-center text-zinc-600 dark:text-zinc-300 md:text-md lg:text-lg\">\n            {showCase.witness}\n          </p>\n        </div>\n\n        <ShowcaseSlider />\n\n        <div className=\"flex flex-wrap justify-center gap-6 mt-8 items-center\">\n          <Link\n            href=\"/showcase\"\n            className=\"relative flex h-11 w-full items-center justify-center px-6 before:absolute before:inset-0 before:rounded-full before:border before:border-transparent before:bg-purple-600/10 before:bg-gradient-to-b before:transition before:duration-300 hover:before:scale-105 active:duration-75 active:before:scale-95 dark:before:border-zinc-700 dark:before:bg-zinc-800 sm:w-max\"\n          >\n            <span className=\"relative text-base font-semibold text-purple-600 dark:text-white\">\n              {showCase.showCase}\n            </span>\n          </Link>\n        </div>\n      </Container>\n    </div>\n  );\n}\n\nexport const ShowcaseSlider = () => {\n  const entries = [\n    {\n      image: Wyze,\n      name: 'Wyze',\n      url: 'wyze.com',\n    },\n    {\n      image: HackClub,\n      name: 'Hack Club',\n      url: 'hackclub.com',\n    },\n    {\n      image: DonaAI,\n      name: 'Dona AI',\n      url: 'dona.ai',\n    },\n    {\n      image: LLMReport,\n      name: 'LLM Report',\n      url: 'llm.report',\n    },\n    {\n      image: Texts,\n      name: 'Texts',\n      url: 'texts.com',\n    },\n  ];\n  return (\n    <div className=\"slider\">\n      <div className=\"slide-track-10 hover:pause mt-6 grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5\">\n        {[...entries, ...entries, ...entries].map(({ image, name, url }, i) => (\n          <a\n            key={url}\n            href={`https://${url}`}\n            target=\"_blank\"\n            className=\"pr-10 space-y-6 tex-center w-[24rem] relative grayscale-[50%] opacity-90 hover:opacity-100 transition duration-200 hover:grayscale-0\"\n          >\n            <Image\n              src={image}\n              alt={name}\n              width={256}\n              height={288}\n              className={`mx-auto h-32 w-72 md:h-40 md:w-24 lg:h-32 lg:w-72 rounded-lg object-cover object-top hover:rotate-0 ${\n                i % 2 === 0 ? '-rotate-1' : 'rotate-1'\n              } hover:scale-110 hover:shadow-lg lg:hover:shadow-2xl transition`}\n            />\n            <div>\n              <h4 className=\"text-2xl text-gray-700 dark:text-white\">{name}</h4>\n              <span className=\"block text-sm text-gray-500\">{url}</span>\n            </div>\n          </a>\n        ))}\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "website/components/icons/discord-icon.tsx",
    "content": "export function DiscordIcon() {\n  return (\n    <>\n      <svg\n        width=\"24\"\n        height=\"24\"\n        fill=\"currentColor\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 5 30.67 23.25\"\n      >\n        <title>Discord</title>\n        <path d=\"M26.0015 6.9529C24.0021 6.03845 21.8787 5.37198 19.6623 5C19.3833 5.48048 19.0733 6.13144 18.8563 6.64292C16.4989 6.30193 14.1585 6.30193 11.8336 6.64292C11.6166 6.13144 11.2911 5.48048 11.0276 5C8.79575 5.37198 6.67235 6.03845 4.6869 6.9529C0.672601 12.8736 -0.41235 18.6548 0.130124 24.3585C2.79599 26.2959 5.36889 27.4739 7.89682 28.2489C8.51679 27.4119 9.07477 26.5129 9.55525 25.5675C8.64079 25.2265 7.77283 24.808 6.93587 24.312C7.15286 24.1571 7.36986 23.9866 7.57135 23.8161C12.6241 26.1255 18.0969 26.1255 23.0876 23.8161C23.3046 23.9866 23.5061 24.1571 23.7231 24.312C22.8861 24.808 22.0182 25.2265 21.1037 25.5675C21.5842 26.5129 22.1422 27.4119 22.7621 28.2489C25.2885 27.4739 27.8769 26.2959 30.5288 24.3585C31.1952 17.7559 29.4733 12.0212 26.0015 6.9529ZM10.2527 20.8402C8.73376 20.8402 7.49382 19.4608 7.49382 17.7714C7.49382 16.082 8.70276 14.7025 10.2527 14.7025C11.7871 14.7025 13.0425 16.082 13.0115 17.7714C13.0115 19.4608 11.7871 20.8402 10.2527 20.8402ZM20.4373 20.8402C18.9183 20.8402 17.6768 19.4608 17.6768 17.7714C17.6768 16.082 18.8873 14.7025 20.4373 14.7025C21.9717 14.7025 23.2271 16.082 23.1961 17.7714C23.1961 19.4608 21.9872 20.8402 20.4373 20.8402Z\"></path>\n      </svg>\n      <style jsx>\n        {`\n          svg {\n            transition: fill 0.5s ease;\n          }\n\n          svg:hover,\n          svg:focus {\n            fill: #6f42c1;\n          }\n        `}\n      </style>\n    </>\n  );\n}\n"
  },
  {
    "path": "website/components/icons/github-icon.tsx",
    "content": "export function GitHubIcon() {\n  return (\n    <>\n      <svg width=\"24\" height=\"24\" fill=\"currentColor\" viewBox=\"3 3 18 18\">\n        <title>GitHub</title>\n        <path d=\"M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z\"></path>\n      </svg>\n      <style jsx>\n        {`\n        svg {\n          transition: fill 0.5s ease;\n        }\n\n        svg:hover,\n        svg:focus {\n          fill: #6f42c1;\n        }\n      `}\n      </style>\n    </>\n  );\n}\n"
  },
  {
    "path": "website/components/icons/twitter-x-icon.tsx",
    "content": "import GitHubButton from 'react-github-btn';\n\nexport function TwitterXIcon() {\n  return (\n    <>\n      <a\n        style={{ padding: '0.5rem' }}\n        target=\"_blank\"\n        href=\"https://twitter.com/milliondotjs\"\n        aria-label=\"Million.js twitter\"\n        rel=\"nofollow noreferrer\"\n      >\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"currentColor\"\n          className=\"feather feather-twitter\"\n        >\n          <path d=\"M16.99 0H20.298L13.071 8.26L21.573 19.5H14.916L9.702 12.683L3.736 19.5H0.426L8.156 10.665L0 0H6.826L11.539 6.231L16.99 0ZM15.829 17.52H17.662L5.83 1.876H3.863L15.829 17.52Z\"></path>\n        </svg>\n        <style jsx>\n          {`\n            svg {\n              transition: fill 0.5s ease;\n            }\n\n            svg:hover,\n            svg:focus {\n              fill: #6f42c1;\n            }\n          `}\n        </style>\n      </a>\n    </>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/article-wrapper.tsx",
    "content": "export default function ArticleWrapper(\n  props: React.HTMLAttributes<HTMLDivElement>,\n) {\n  return (\n    <article\n      {...props}\n      className={`w-full max-w-[1568px] px-8 pt-32 md:px-16 ${\n        props.className ?? ''\n      }`}\n    >\n      {props.children}\n    </article>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/border-beam.tsx",
    "content": "interface BorderBeamProps {\n  className?: string;\n  size?: number;\n  duration?: number;\n  borderWidth?: number;\n  anchor?: number;\n  colorFrom?: string;\n  colorTo?: string;\n  delay?: number;\n}\n\nexport const BorderBeam = ({\n  className = '',\n  size = 100,\n  duration = 15,\n  anchor = 90,\n  borderWidth = 1.5,\n  colorFrom = '#ffaa40',\n  colorTo = '#9c40ff',\n  delay = 0,\n}: BorderBeamProps) => {\n  return (\n    <div\n      style={\n        {\n          '--size': size,\n          '--duration': duration,\n          '--anchor': anchor,\n          '--border-width': borderWidth,\n          '--color-from': colorFrom,\n          '--color-to': colorTo,\n          '--delay': `-${delay}s`,\n        } as React.CSSProperties\n      }\n      className={\n        'absolute inset-[0] rounded-[inherit] [border:calc(var(--border-width)*1px)_solid_transparent] ' +\n        // mask styles\n        '![mask-clip:padding-box,border-box] ![mask-composite:intersect] [mask:linear-gradient(transparent,transparent),linear-gradient(white,white)] ' +\n        // pseudo styles\n        'after:absolute after:aspect-square after:w-[calc(var(--size)*1px)] after:animate-border-beam after:[animation-delay:var(--delay)] after:[background:linear-gradient(to_left,var(--color-from),var(--color-to),transparent)] after:[offset-anchor:calc(var(--anchor)*1%)_50%] after:[offset-path:rect(0_auto_auto_0_round_calc(var(--size)*1px))] ' +\n        className\n      }\n    />\n  );\n};\n"
  },
  {
    "path": "website/components/lint/cases.tsx",
    "content": "import ArticleWrapper from './article-wrapper';\nimport one from '../../public/lint/1.png';\nimport two from '../../public/lint/2.png';\n\nexport default function Platform(props: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <ArticleWrapper>\n      <div className=\"flex flex-col items-start justify-start gap-[24px]\">\n        <div className=\"flex max-w-[450px] flex-col items-start justify-start gap-[8px]\">\n          <h3 className=\"pl-[0.2rem] text-2xl font-medium not-italic leading-8 tracking-[-0.06rem] text-[#af72d8]\">\n            All-in-one React development tool\n          </h3>\n\n          <h2 className=\"max-w-[550px] text-5xl font-medium not-italic leading-[56px] tracking-[-1.92px]\">\n            Find and fix slow React components\n          </h2>\n          <h5 className=\"max-w-[450px] text-lg font-medium not-italic leading-[1.875rem] tracking-[-0.01125rem] text-[#c9c9c9]\">\n            Instead of dashboards and graphs, get real-time data in your IDE.\n          </h5>\n        </div>\n\n        <div className=\"grid w-fit min-w-full grid-cols-1 items-center justify-center gap-8 md:grid-cols-2\">\n          <PlatformCard\n            heading=\"Get render information right in your code\"\n            subheading=\"Also tracked: bundle sizes, network requests, hooks, props, and more!\"\n            art={one}\n          />\n          <PlatformCard\n            heading=\"Use lint++ to help you fix slow code\"\n            subheading=\"Not sure how to optimize React components? Use lint++ to turn hours of debugging into minutes!\"\n            art={two}\n          />\n        </div>\n      </div>\n    </ArticleWrapper>\n  );\n}\n\ninterface PlatformCardProps extends React.HTMLAttributes<HTMLDivElement> {\n  heading: string;\n  subheading: string;\n  art: any;\n}\n\nexport function PlatformCard(props: PlatformCardProps) {\n  return (\n    <div className=\"relative mx-auto my-0 flex w-full flex-col  justify-between gap-[16px] overflow-hidden rounded-2xl border border-solid border-[rgba(255,255,255,0.1)] px-6 py-8\">\n      <div className=\"flex w-full justify-between\">\n        <div className=\"-mt-3 flex max-w-[300px] flex-col justify-center gap-0\">\n          <h4 className=\"text-2xl font-medium leading-[133.333%] tracking-[-0.96px]\">\n            {props.heading}\n          </h4>\n          <h5 className=\"text-lg text-[#A7A7A7]\">{props.subheading}</h5>\n        </div>\n        <img\n          className=\"w-[225px] md:w-[250px] lg:w-[300px]\"\n          src={props.art.src}\n          alt=\"card art\"\n        ></img>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/index.tsx",
    "content": "import Cases from './cases';\nimport Intro from './intro';\nimport Join from './join';\n\nexport default function Home() {\n  return (\n    <>\n      <main\n        className={`relative flex min-h-screen flex-col items-center justify-start overflow-x-hidden leading-normal space-y-[1.5rem] pt-16 mb-32`}\n      >\n        <Intro />\n        <Cases />\n        <Join />\n      </main>\n    </>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/intro.tsx",
    "content": "import { domAnimation, LazyMotion, m } from 'framer-motion';\nimport LeftLine from './left';\nimport RightLine from './right';\nimport { useState } from 'react';\nimport Link from 'next/link';\nimport { BorderBeam } from './border-beam';\nimport ReactPlayer from 'react-player';\nimport { Blur } from '../home/hero';\n\nexport const leftSvgInfo = [\n  {\n    d: 'M766 115L453.617 115C446.29 115 439.104 112.987 432.842 109.182L353.267 60.8181C347.006 57.0126 339.819 55 332.492 55L-4.93638e-06 55',\n    stops: [\n      <stop key={1} stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.333349\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.770833\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M766 175L470.071 175C462.744 175 455.557 177.013 449.296 180.818L369.721 229.182C363.459 232.987 356.273 235 348.946 235L0 235',\n    stops: [\n      <stop key={1} offset=\"0.125\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.421875\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.833333\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M765.863 229.001L506.593 229.001C499.107 229.001 491.772 231.101 485.421 235.063L408.679 282.938C402.328 286.9 394.993 289 387.507 289L0 289',\n    stops: [\n      <stop key={1} stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.496998\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"1\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M766 61L499.55 61C492.18 61 484.953 58.9637 478.667 55.1158L399.873 6.88415C393.587 3.0363 386.36 1.00001 378.99 1.00001L-4.93638e-06 1.00002',\n    stops: [\n      <stop key={1} stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.496998\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"1\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n];\n\nexport const rightSvgInfo = [\n  {\n    d: 'M0 61L257.585 61C265.068 61 272.401 58.9007 278.751 54.9408L355.53 7.05916C361.88 3.09925 369.214 1.00001 376.697 1.00001L759 1',\n    stops: [\n      <stop key={1} stopColor=\"#4e56da\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"-1\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.639849\" stopColor=\"#4e56da\" stopOpacity=\"0\" />,\n      <stop key={4} offset=\"1\" stopColor=\"#4e56da\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M0 133L314.772 133C322.154 133 329.393 130.957 335.686 127.097L414.257 78.9032C420.55 75.0431 427.788 73 435.171 73L759 73',\n    stops: [\n      <stop key={1} offset=\"0.316148\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.558819\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.94364\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M-4.93638e-06 151L325.641 151C333.023 151 340.262 153.043 346.555 156.903L425.125 205.097C431.418 208.957 438.657 211 446.04 211L759 211',\n    stops: [\n      <stop key={1} stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.333349\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.639849\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M-4.93638e-06 199L283.251 199C290.648 199 297.9 201.051 304.202 204.925L382.513 253.075C388.814 256.949 396.066 259 403.463 259L759 259',\n    stops: [\n      <stop key={1} stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.496998\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"1\" stopColor=\"#b073d8\" stopOpacity=\"0\" />,\n    ],\n  },\n  {\n    d: 'M-4.9363e-06 235.001L257.489 235.001C264.974 235.001 272.309 237.101 278.66 241.063L355.403 288.938C361.754 292.9 369.089 295 376.574 295L758.738 295',\n    stops: [\n      <stop key={1} offset=\"0.316148\" stopColor=\"#4e56da\" stopOpacity=\"0\" />,\n      <stop key={2} offset=\"0.558819\" stopColor=\"#7a44f7\" />,\n      <stop key={3} offset=\"0.94364\" stopColor=\"#4e56da\" stopOpacity=\"0\" />,\n    ],\n  },\n];\n\nconst LinesGenerator = ({\n  svgInfo,\n  dir,\n}: {\n  svgInfo: {\n    d: string;\n    stops: JSX.Element[];\n  }[];\n  dir: 'left' | 'right';\n}) => {\n  return (\n    <LazyMotion features={domAnimation}>\n      <m.svg width=\"100%\" height=\"100%\" viewBox=\"0 0 766 290\" fill=\"none\">\n        {dir === 'left'\n          ? svgInfo.map((svgInfo, i) => {\n              return (\n                <LeftLine\n                  key={i}\n                  delay={i * 1}\n                  d={svgInfo.d}\n                  stops={svgInfo.stops}\n                  id={`leftPaint${i}`}\n                />\n              );\n            })\n          : svgInfo.map((svgInfo, i) => {\n              return (\n                <RightLine\n                  key={i}\n                  delay={i * 1}\n                  d={svgInfo.d}\n                  stops={svgInfo.stops}\n                  id={`rightPaint${i}`}\n                />\n              );\n            })}\n      </m.svg>\n    </LazyMotion>\n  );\n};\n\nexport default function Intro(props: React.HTMLAttributes<HTMLDivElement>) {\n  const [submitted, setSubmitted] = useState<boolean>(false);\n\n  const handleClickWizard = () => {\n    void navigator.clipboard.writeText('npx @million/lint@latest');\n    setSubmitted(true);\n\n    setTimeout(() => {\n      setSubmitted(false);\n    }, 1000);\n  };\n  return (\n    <article className=\"flex w-full flex-col items-center justify-center gap-16 border-0 border-solid px-1 pt-2 md:px-16 lg:pt-8\">\n      <div className=\"relative flex h-fit w-full flex-row items-start justify-center gap-0\">\n        <div className=\"absolute left-[-10%] top-[50%] z-[1] h-[400px] w-[600px] -translate-y-1/2\">\n          <LinesGenerator svgInfo={leftSvgInfo} dir=\"left\" />\n        </div>\n        <div\n          className=\"z-[2] flex w-[740px] flex-col items-center gap-[24px] px-8 py-0\"\n          style={{\n            background:\n              'radial-gradient(rgb(16, 16, 16) 40%, rgb(16, 16, 16) 50%, rgba(16, 16, 16, 0.6) 64%, rgba(16, 16, 16, 0) 70%, rgba(16, 16, 16, 0) 80%)',\n          }}\n        >\n          <h1 className=\"px-[24px] text-center text-5xl font-semibold not-italic leading-[3.3rem] tracking-[-0.16rem] sm:px-0 sm:text-[4rem] sm:leading-[4.3rem]\">\n            you write code\n            <br />\n            <span className=\"text-[#af72d8]\">\n              we make it <span className=\"gradient-text\">fast</span>\n            </span>\n          </h1>\n          <h5 className=\"max-w-[450px] text-center text-[#D9D9D9]\">\n            Million Lint is a IDE extension that helps you identify and fix slow\n            React components <i>(public beta)</i>\n          </h5>\n\n          <Link href=\"/blog/lint\" target=\"_blank\">\n            <button className=\"clickable flex items-center justify-center gap-1 rounded-xl border border-solid border-[color:rgba(255,255,255,0.10)] bg-[#af72d8]/80 px-[14px] py-[8px] text-sm font-[500] text-white !transition-transform hover:scale-105\">\n              <span className=\"pr-1\">Read our annoucement →</span>\n            </button>\n          </Link>\n          <button\n            className=\"flex flex-row items-center gap-2 mx-auto rounded-lg group\"\n            onClick={handleClickWizard}\n          >\n            <p className=\"text-sm text-zinc-100 dark:text-zinc-400 font-mono\">\n              ~ npx @million/lint@latest\n            </p>\n            <div className=\"opacity-0 group-hover:opacity-100 text-xs text-zinc-600 dark:text-zinc-300 transition-opacity\">\n              {submitted ? (\n                <svg\n                  className=\"w-[16px] h-[16px] dark:text-zinc-100 pt-[1px]\"\n                  data-testid=\"geist-icon\"\n                  fill=\"none\"\n                  height={24}\n                  shapeRendering=\"geometricPrecision\"\n                  stroke=\"currentColor\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  strokeWidth=\"1.5\"\n                  viewBox=\"0 0 24 24\"\n                  width={24}\n                  data-open=\"false\"\n                >\n                  <path d=\"M20 6L9 17l-5-5\" />\n                </svg>\n              ) : (\n                <svg\n                  className=\"w-[16px] h-[16px] dark:text-zinc-100 pt-[1px]\"\n                  data-testid=\"geist-icon\"\n                  fill=\"none\"\n                  height={24}\n                  shapeRendering=\"geometricPrecision\"\n                  stroke=\"currentColor\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  strokeWidth=\"1.5\"\n                  viewBox=\"0 0 24 24\"\n                  width={24}\n                  data-open=\"true\"\n                >\n                  <path d=\"M6 17C4.89543 17 4 16.1046 4 15V5C4 3.89543 4.89543 3 6 3H13C13.7403 3 14.3866 3.4022 14.7324 4M11 21H18C19.1046 21 20 20.1046 20 19V9C20 7.89543 19.1046 7 18 7H11C9.89543 7 9 7.89543 9 9V19C9 20.1046 9.89543 21 11 21Z\" />\n                </svg>\n              )}\n            </div>\n          </button>\n        </div>\n        <div className=\"absolute left-auto right-[-10%] top-[50%] z-[1] h-[400px] w-[600px] -translate-y-1/2\">\n          <LinesGenerator svgInfo={rightSvgInfo} dir=\"right\" />\n        </div>\n      </div>\n      <div className=\"relative rounded h-full overflow-hidden sm:w-4/5\">\n        <ReactPlayer\n          url=\"/lint/demo.mp4\"\n          controls\n          playing\n          muted={true}\n          width=\"100%\"\n          height=\"100%\"\n          loop\n        />\n\n        <BorderBeam\n          className=\"pointer-events-none\"\n          duration={10}\n          size={250}\n          colorFrom=\"#af72d8\"\n          colorTo=\"#855ce6\"\n        />\n      </div>\n    </article>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/join.tsx",
    "content": "import Link from 'next/link';\nimport ArticleWrapper from './article-wrapper';\n\nexport default function Join(props: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <ArticleWrapper>\n      <div className=\"flex flex-col items-center justify-center gap-[24px] overflow-hidden\">\n        <div className=\"flex max-w-[450px] flex-col items-center justify-center gap-[8px] text-center\">\n          <h3 className=\"pl-[0.2rem] text-[32px] leading-8 tracking-[-0.06rem] text-[#af72d8]\">\n            Million Lint\n          </h3>\n\n          <h2 className=\"text-5xl font-medium leading-[116.667%] tracking-[-1.92px]\">\n            Speed up your React site with Million Lint\n          </h2>\n          <h5 className=\"max-w-[450px] text-lg not-italic leading-[1.875rem] tracking-[-0.01125rem] text-[#A7A7A7]\">\n            Million Lint is in public beta. We have a lot of work to do. We\n            would love your feedback to help us make the best possible web\n            performance developer tool. Try it out, and let us know what you\n            think!\n          </h5>\n\n          <Link href=\"/blog/lint\">\n            <button className=\"clickable mt-4 flex w-full items-center justify-center gap-1 rounded-xl border border-solid border-[color:rgba(255,255,255,0.10)] bg-[#af72d8]/80 px-[14px] py-[8px] text-sm font-[500] text-white !transition-transform hover:scale-105\">\n              <span className=\"pr-1\">Read our annoucement →</span>\n            </button>\n          </Link>\n        </div>\n      </div>\n    </ArticleWrapper>\n  );\n}\n"
  },
  {
    "path": "website/components/lint/left.tsx",
    "content": "import { m } from 'framer-motion';\nimport React from 'react';\n\nconst lineVariant = {\n  initial: {\n    x1: '-50%',\n    x2: '0%',\n    y1: '-50%',\n    y2: '-50%',\n    opacity: 1,\n  },\n  final: {\n    x1: '100%',\n    x2: '150%',\n    y1: '150%',\n    y2: '150%',\n  },\n};\n\nconst LeftLine = ({\n  delay,\n  d,\n  stops,\n  id,\n}: {\n  delay: number;\n  d: string;\n  stops: JSX.Element[];\n  id: string;\n}) => {\n  return (\n    <>\n      <path d={d} stroke={`url(#${id})`} />\n      <defs>\n        <m.linearGradient\n          id={id}\n          variants={lineVariant}\n          transition={{\n            default: { duration: 3, repeat: Infinity, repeatType: 'loop' },\n            delay: (delay * 750) / 1000,\n          }}\n          animate=\"final\"\n          initial=\"initial\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          {stops.map((stop) => stop)}\n        </m.linearGradient>\n      </defs>\n    </>\n  );\n};\n\nexport default LeftLine;\n"
  },
  {
    "path": "website/components/lint/right.tsx",
    "content": "import { m } from 'framer-motion';\nimport React from 'react';\n\nconst lineVariant = {\n  final: {\n    x1: '-50%',\n    x2: '0%',\n    y1: '-50%',\n    y2: '-50%',\n  },\n  initial: {\n    x1: '100%',\n    x2: '150%',\n    y1: '150%',\n    y2: '150%',\n  },\n};\n\nconst RightLine = ({\n  delay,\n  d,\n  stops,\n  id,\n}: {\n  delay: number;\n  d: string;\n  stops: JSX.Element[];\n  id: string;\n}) => {\n  return (\n    <>\n      <path d={d} stroke={`url(#${id})`} />\n      <defs>\n        <m.linearGradient\n          id={id}\n          variants={lineVariant}\n          transition={{\n            default: { duration: 3, repeat: Infinity, repeatType: 'loop' },\n            delay: (delay * 750) / 1000,\n          }}\n          animate=\"final\"\n          initial=\"initial\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          {stops.map((stop) => stop)}\n        </m.linearGradient>\n      </defs>\n    </>\n  );\n};\n\nexport default RightLine;\n"
  },
  {
    "path": "website/components/million-library/block-878fb9ae.d.ts",
    "content": "import {\n  P as Props,\n  a as VElement,\n  V as VNode,\n  A as AbstractBlock,\n  E as Edit,\n} from './types-35702ad2.js';\n\ndeclare const block: (\n  fn: (props?: Props) => VElement,\n  unwrap?: ((vnode: any) => VNode) | undefined,\n  shouldUpdate?: ((oldProps: Props, newProps: Props) => boolean) | undefined,\n) => (\n  props?: Props | null,\n  key?: string,\n  shouldUpdateCurrentBlock?:\n    | ((oldProps: Props, newProps: Props) => boolean)\n    | undefined,\n) => Block;\ndeclare const mount: (\n  block: AbstractBlock,\n  parent?: HTMLElement,\n) => HTMLElement;\ndeclare const patch: (\n  oldBlock: AbstractBlock,\n  newBlock: AbstractBlock,\n) => HTMLElement;\ndeclare class Block extends AbstractBlock {\n  r: HTMLElement;\n  e: Edit[];\n  constructor(\n    root: HTMLElement,\n    edits: Edit[],\n    props?: Props | null,\n    key?: string,\n    shouldUpdate?: (oldProps: Props, newProps: Props) => boolean,\n    getElements?: (root: HTMLElement) => HTMLElement[],\n  );\n  m(parent?: HTMLElement, refNode?: Node | null): HTMLElement;\n  p(newBlock: AbstractBlock): HTMLElement;\n  v(block?: AbstractBlock | null, refNode?: Node | null): void;\n  x(): void;\n  u(_oldProps: Props, _newProps: Props): boolean;\n  s(): string;\n  t(): HTMLElement | null | undefined;\n}\ndeclare const stringToDOM: (content: string) => HTMLElement;\ndeclare const withKey: (value: any, key: string) => any;\n\nexport {\n  Block as B,\n  block as b,\n  mount as m,\n  patch as p,\n  stringToDOM as s,\n  withKey as w,\n};\n"
  },
  {
    "path": "website/components/million-library/chunks/block.cjs",
    "content": "'use strict';\n\nconst constants = require('./constants.cjs');\n\nif (typeof window === \"undefined\") {\n  throw new Error(\n    \"See http://millionjs.org/docs/quickstart to use the compiler. If that doesn't work, import from `million/react-server` instead.\"\n  );\n}\nconst document$ = document;\nconst template$ = document$.createElement(\"template\");\nconst node$ = Node.prototype;\nconst element$ = Element.prototype;\nconst characterData$ = CharacterData.prototype;\nconst getOwnPropertyDescriptor$ = constants.Object$.getOwnPropertyDescriptor;\nconst insertBefore$ = node$.insertBefore;\nconst cloneNode$ = node$.cloneNode;\nconst remove$$1 = element$.remove;\nconst addEventListener$ = node$.addEventListener;\nconst removeAttribute$ = element$.removeAttribute;\nconst setAttribute$ = element$.setAttribute;\nconst setAttributeNS$ = element$.setAttributeNS;\nconst setTextContent$ = getOwnPropertyDescriptor$(node$, \"textContent\").set;\nconst innerHTML$ = getOwnPropertyDescriptor$(element$, \"innerHTML\").set;\nconst firstChild$ = getOwnPropertyDescriptor$(node$, \"firstChild\").get;\nconst nextSibling$ = getOwnPropertyDescriptor$(node$, \"nextSibling\").get;\nconst characterDataSet$ = getOwnPropertyDescriptor$(\n  characterData$,\n  \"data\"\n).set;\ndocument$[constants.EVENTS_REGISTRY] = new constants.Set$();\nconst createEventListener = (el, name, value) => {\n  const event = name.toLowerCase();\n  const key = `$$${event}`;\n  if (!constants.SetHas$.call(document$[constants.EVENTS_REGISTRY], event)) {\n    addEventListener$.call(document$, event, (nativeEventObject) => {\n      requestAnimationFrame(() => {\n        let el2 = nativeEventObject.target;\n        while (el2) {\n          const handler = el2[key];\n          if (handler) {\n            let returnFalse = false;\n            if (handler(nativeEventObject) === false) {\n              returnFalse = true;\n            }\n            if (returnFalse)\n              return;\n          }\n          el2 = el2.parentNode;\n        }\n      });\n    });\n    constants.SetAdd$.call(document$[constants.EVENTS_REGISTRY], event);\n  }\n  const patch = (newValue) => {\n    if (!newValue) {\n      el[key] = null;\n    } else if (!(\"key\" in newValue && newValue.key === el[key]?.key)) {\n      el[key] = newValue;\n    }\n  };\n  patch(value);\n  return patch;\n};\nconst childAt = (el, index) => {\n  let child = firstChild$.call(el);\n  if (index) {\n    for (let j = 0; j < index; ++j) {\n      if (!child)\n        break;\n      child = nextSibling$.call(child);\n    }\n  }\n  return child;\n};\nconst insertText = (el, value, index) => {\n  const node = document$.createTextNode(value);\n  const child = childAt(el, index);\n  insertBefore$.call(el, node, child);\n  return node;\n};\nconst setText = (el, value) => {\n  characterDataSet$.call(el, value);\n};\nconst setStyleAttribute = (el, name, value) => {\n  if (typeof value !== \"number\" || constants.IS_NON_DIMENSIONAL.test(name)) {\n    el.style[name] = value;\n  } else if (typeof value === \"string\") {\n    el.style.cssText = value;\n  } else if (name.startsWith(\"-\")) {\n    el.style.setProperty(name, String(value));\n  } else if (value === void 0 || value === null) {\n    el.style[name] = \"\";\n  } else {\n    el.style[name] = `${String(value)}px`;\n  }\n};\nconst setSvgAttribute = (el, name, value) => {\n  name = name.replace(/xlink(?:H|:h)/, \"h\").replace(/sName$/, \"s\");\n  if (name.startsWith(\"xmlns\")) {\n    setAttributeNS$.call(el, constants.XML_NS, name, String(value));\n  } else if (name.startsWith(\"xlink\")) {\n    setAttributeNS$.call(el, constants.XLINK_NS, \"href\", String(value));\n  }\n};\nconst setAttribute = (el, name, value) => {\n  const isValueNully = value === void 0 || value === null;\n  value = isValueNully ? \"\" : value;\n  if (name in el && el[name] !== void 0 && el[name] !== null && !(el instanceof SVGElement) && constants.SetHas$.call(constants.NON_PROPS, name)) {\n    try {\n      el[name] = value;\n    } catch (_err) {\n    }\n  } else if (!isValueNully && value !== \"\" && (value !== false || name.includes(\"-\"))) {\n    setAttribute$.call(el, name, String(value));\n  } else {\n    removeAttribute$.call(el, name);\n  }\n};\n\nclass AbstractBlock {\n}\n\nconst renderToTemplate = (vnode, edits = [], path = []) => {\n  if (typeof vnode === \"string\")\n    return vnode;\n  if (typeof vnode === \"number\" || typeof vnode === \"bigint\" || vnode === true) {\n    return String(vnode);\n  }\n  if (vnode === null || vnode === void 0 || vnode === false)\n    return \"\";\n  let props = \"\";\n  let children = \"\";\n  const current = {\n    p: path,\n    e: [],\n    i: []\n  };\n  for (let name in vnode.props) {\n    const value = vnode.props[name];\n    if (name === \"key\" || name === \"ref\" || name === \"children\") {\n      continue;\n    }\n    if (name === \"className\")\n      name = \"class\";\n    if (name === \"htmlFor\")\n      name = \"for\";\n    if (name.startsWith(\"on\")) {\n      const isValueHole = \"$\" in value;\n      if (isValueHole) {\n        current.e.push({\n          t: constants.EventFlag,\n          n: name.slice(2),\n          v: null,\n          h: value.$,\n          i: null,\n          l: null,\n          p: null,\n          b: null\n        });\n      } else {\n        current.i.push({\n          t: constants.EventFlag,\n          n: name.slice(2),\n          v: null,\n          h: null,\n          i: null,\n          l: value,\n          p: null,\n          b: null\n        });\n      }\n      continue;\n    }\n    if (value) {\n      if (typeof value === \"object\" && \"$\" in value) {\n        if (name === \"style\") {\n          current.e.push({\n            t: constants.StyleAttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        } else if (name.charCodeAt(0) === constants.X_CHAR) {\n          current.e.push({\n            t: constants.SvgAttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        } else {\n          current.e.push({\n            t: constants.AttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        }\n        continue;\n      }\n      if (name === \"style\") {\n        let style = \"\";\n        for (const key in value) {\n          style += `${key}:${String(value[key])};`;\n        }\n        props += ` style=\"${style}\"`;\n        continue;\n      }\n      props += ` ${name}=\"${String(value)}\"`;\n    }\n  }\n  if (constants.SetHas$.call(constants.VOID_ELEMENTS, vnode.type)) {\n    if (current.e.length)\n      edits.push(current);\n    return `<${vnode.type}${props} />`;\n  }\n  let canMergeString = false;\n  for (let i = 0, j = vnode.props.children?.length || 0, k = 0; i < j; ++i) {\n    const child = vnode.props.children?.[i];\n    if (child === null || child === void 0 || child === false)\n      continue;\n    if (typeof child === \"object\" && \"$\" in child) {\n      current.e.push({\n        t: constants.ChildFlag,\n        n: null,\n        v: null,\n        h: child.$,\n        i,\n        l: null,\n        p: null,\n        b: null\n      });\n      continue;\n    }\n    if (child instanceof AbstractBlock) {\n      current.i.push({\n        t: constants.BlockFlag,\n        n: null,\n        v: null,\n        h: null,\n        i,\n        l: null,\n        p: null,\n        b: child\n      });\n      continue;\n    }\n    if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"bigint\") {\n      const value = typeof child === \"number\" || typeof child === \"bigint\" ? String(child) : child;\n      if (canMergeString) {\n        current.i.push({\n          t: constants.ChildFlag,\n          n: null,\n          v: value,\n          h: null,\n          i,\n          l: null,\n          p: null,\n          b: null\n        });\n        continue;\n      }\n      canMergeString = true;\n      children += value;\n      k++;\n      continue;\n    }\n    canMergeString = false;\n    const newPath = path.slice();\n    newPath.push(k++);\n    children += renderToTemplate(child, edits, newPath);\n  }\n  if (current.i.length || current.e.length)\n    edits.push(current);\n  return `<${vnode.type}${props}>${children}</${vnode.type}>`;\n};\n\nconst mapArray = (children) => {\n  return new ArrayBlock(children);\n};\nclass ArrayBlock extends AbstractBlock {\n  constructor(children) {\n    super();\n    this.b = children;\n  }\n  v() {\n  }\n  p(fragment) {\n    const oldChildren = this.b;\n    const newChildren = fragment.b;\n    const oldChildrenLength = oldChildren.length;\n    const newChildrenLength = newChildren.length;\n    const parent = this.t();\n    if (this === fragment)\n      return parent;\n    if (newChildrenLength === 0 && oldChildrenLength === 0)\n      return parent;\n    this.b = newChildren;\n    if (newChildrenLength === 0) {\n      arrayRemove$.call(this);\n      return parent;\n    }\n    if (oldChildrenLength === 0) {\n      arrayMount$.call(fragment, parent);\n      return parent;\n    }\n    let oldHead = 0;\n    let newHead = 0;\n    let oldTail = oldChildrenLength - 1;\n    let newTail = newChildrenLength - 1;\n    let oldHeadChild = oldChildren[0];\n    let newHeadChild = newChildren[0];\n    let oldTailChild = oldChildren[oldTail];\n    let newTailChild = newChildren[newTail];\n    let oldKeyMap;\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (!oldHeadChild) {\n        oldHeadChild = oldChildren[++oldHead];\n        continue;\n      }\n      if (!oldTailChild) {\n        oldTailChild = oldChildren[--oldTail];\n        continue;\n      }\n      const oldHeadKey = oldHeadChild.k;\n      const newHeadKey = newHeadChild.k;\n      if (oldHeadKey === newHeadKey) {\n        patch$.call(oldHeadChild, newHeadChild);\n        newChildren[newHead] = oldHeadChild;\n        oldHeadChild = oldChildren[++oldHead];\n        newHeadChild = newChildren[++newHead];\n        continue;\n      }\n      const oldTailKey = oldTailChild.k;\n      const newTailKey = newTailChild.k;\n      if (oldTailKey === newTailKey) {\n        patch$.call(oldTailChild, newTailChild);\n        newChildren[newTail] = oldTailChild;\n        oldTailChild = oldChildren[--oldTail];\n        newTailChild = newChildren[--newTail];\n        continue;\n      }\n      if (oldHeadKey === newTailKey) {\n        patch$.call(oldHeadChild, newTailChild);\n        newChildren[newTail] = oldHeadChild;\n        const nextChild = newChildren[newTail + 1];\n        move$.call(oldHeadChild, nextChild, nextChild?.l || null);\n        oldHeadChild = oldChildren[++oldHead];\n        newTailChild = newChildren[--newTail];\n        continue;\n      }\n      if (oldTailKey === newHeadKey) {\n        patch$.call(oldTailChild, newHeadChild);\n        newChildren[newHead] = oldTailChild;\n        const nextChild = oldChildren[oldHead];\n        move$.call(oldTailChild, nextChild, nextChild?.l || null);\n        oldTailChild = oldChildren[--oldTail];\n        newHeadChild = newChildren[++newHead];\n        continue;\n      }\n      if (!oldKeyMap) {\n        oldKeyMap = new constants.Map$();\n        for (let i = oldHead; i <= oldTail; i++) {\n          constants.MapSet$.call(oldKeyMap, oldChildren[i].k, i);\n        }\n      }\n      const oldIndex = oldKeyMap.get(newHeadKey);\n      if (oldIndex === void 0) {\n        mount$.call(newHeadChild, parent, oldHeadChild.l || null);\n      } else {\n        const oldChild = oldChildren[oldIndex];\n        move$.call(oldChild, oldHeadChild, null);\n        patch$.call(oldChild, newHeadChild);\n        newChildren[newHead] = oldChild;\n        oldChildren[oldIndex] = null;\n      }\n      newHeadChild = newChildren[++newHead];\n    }\n    if (oldHead <= oldTail || newHead <= newTail) {\n      if (oldHead > oldTail) {\n        const nextChild = newChildren[newTail + 1];\n        for (let i = newHead; i <= newTail; ++i) {\n          mount$.call(newChildren[i], parent, nextChild ? nextChild.l : null);\n        }\n      } else {\n        for (let i = oldHead; i <= oldTail; ++i) {\n          remove$.call(oldChildren[i]);\n        }\n      }\n    }\n    return parent;\n  }\n  m(parent, refNode = null) {\n    if (this._t)\n      return this._t;\n    for (let i = 0, j = this.b.length; i < j; ++i) {\n      const block = this.b[i];\n      mount$.call(block, parent, refNode);\n    }\n    this._t = parent;\n    return parent;\n  }\n  x() {\n    const parent = this.t();\n    if (parent) {\n      setTextContent$.call(parent, \"\");\n    } else {\n      for (let i = 0, j = this.b.length; i < j; ++i) {\n        remove$.call(this.b[i]);\n      }\n    }\n    this.b = [];\n  }\n  u() {\n    return true;\n  }\n  s() {\n    return this.b.map((block) => block.s()).join(\"\");\n  }\n  t() {\n    if (!this._t)\n      this._t = this.b[0].t();\n    return this._t;\n  }\n}\nconst array$ = ArrayBlock.prototype;\nconst arrayMount$ = array$.m;\nconst arrayPatch$ = array$.p;\nconst arrayRemove$ = array$.x;\n\nconst HOLE_PROXY = new Proxy(\n  {},\n  {\n    get(_, key) {\n      return { $: key };\n    }\n  }\n);\nconst block = (fn, unwrap, shouldUpdate) => {\n  const vnode = fn(HOLE_PROXY);\n  const edits = [];\n  const root = stringToDOM(\n    renderToTemplate(unwrap ? unwrap(vnode) : vnode, edits)\n  );\n  return (props, key, shouldUpdateCurrentBlock) => {\n    return new Block(\n      root,\n      edits,\n      props,\n      key ?? props?.key,\n      shouldUpdateCurrentBlock ?? shouldUpdate\n    );\n  };\n};\nconst mount = (block2, parent) => {\n  if (\"b\" in block2 && parent) {\n    return arrayMount$.call(block2, parent);\n  }\n  return mount$.call(block2, parent);\n};\nconst patch = (oldBlock, newBlock) => {\n  if (\"b\" in oldBlock || \"b\" in newBlock) {\n    arrayPatch$.call(oldBlock, newBlock);\n  }\n  if (!oldBlock.l)\n    mount$.call(oldBlock);\n  if (oldBlock.k && oldBlock.k === newBlock.k || oldBlock.r === newBlock.r) {\n    return patch$.call(oldBlock, newBlock);\n  }\n  const el = mount$.call(newBlock, oldBlock.t(), oldBlock.l);\n  remove$.call(oldBlock);\n  oldBlock.k = newBlock.k;\n  return el;\n};\nclass Block extends AbstractBlock {\n  constructor(root, edits, props, key, shouldUpdate, getElements) {\n    super();\n    this.r = root;\n    this.d = props;\n    this.e = edits;\n    this.k = key;\n    this.c = Array(edits.length);\n    if (shouldUpdate)\n      this.u = shouldUpdate;\n    if (getElements)\n      this.g = getElements;\n  }\n  m(parent, refNode = null) {\n    if (this.l)\n      return this.l;\n    const root = cloneNode$.call(this.r, true);\n    const elements = this.g?.(root);\n    if (elements)\n      this.c = elements;\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i];\n      const el = elements?.[i] ?? getCurrentElement(current.p, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k];\n        const value = this.d[edit.h];\n        if (edit.t & constants.ChildFlag) {\n          if (value === null || value === void 0 || value === false) {\n            continue;\n          }\n          if (value instanceof AbstractBlock) {\n            value.m(el);\n            continue;\n          }\n          if (!el[constants.TEXT_NODE_CACHE])\n            el[constants.TEXT_NODE_CACHE] = new Array(l);\n          if (typeof value === \"function\") {\n            const scopeEl = value(null);\n            el[constants.TEXT_NODE_CACHE][k] = scopeEl;\n            insertBefore$.call(el, scopeEl, childAt(el, edit.i));\n            continue;\n          }\n          el[constants.TEXT_NODE_CACHE][k] = insertText(el, String(value), edit.i);\n        } else if (edit.t & constants.EventFlag) {\n          const patch2 = createEventListener(el, edit.n, value);\n          edit.p = patch2;\n        } else if (edit.t & constants.AttributeFlag) {\n          setAttribute(el, edit.n, value);\n        } else if (edit.t & constants.StyleAttributeFlag) {\n          if (typeof value === \"string\") {\n            setStyleAttribute(el, edit.n, value);\n          } else {\n            for (const style in value) {\n              setStyleAttribute(el, style, value[style]);\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n, value);\n        }\n      }\n      const initsLength = current.i?.length;\n      if (!initsLength)\n        continue;\n      for (let k = 0; k < initsLength; ++k) {\n        const init = current.i[k];\n        if (init.t & constants.ChildFlag) {\n          insertText(el, init.v, init.i);\n        } else if (init.t & constants.EventFlag) {\n          createEventListener(el, init.n, init.l);\n        } else {\n          init.b.m(el, childAt(el, init.i));\n        }\n      }\n    }\n    if (parent) {\n      insertBefore$.call(parent, root, refNode);\n    }\n    this.l = root;\n    return root;\n  }\n  p(newBlock) {\n    const root = this.l;\n    if (!newBlock.d)\n      return root;\n    const props = this.d;\n    if (!shouldUpdate$.call(this, props, newBlock.d))\n      return root;\n    this.d = newBlock.d;\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i];\n      const el = this.c[i] ?? getCurrentElement(current.p, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k];\n        const oldValue = props[edit.h];\n        const newValue = newBlock.d[edit.h];\n        if (newValue === oldValue)\n          continue;\n        if (edit.t & constants.EventFlag) {\n          edit.p(newValue);\n          continue;\n        }\n        if (edit.t & constants.ChildFlag) {\n          if (oldValue instanceof AbstractBlock) {\n            const firstEdit = newBlock.e?.[i]?.e[k];\n            const newChildBlock = newBlock.d[firstEdit.h];\n            oldValue.p(newChildBlock);\n            continue;\n          }\n          if (typeof newValue === \"function\") {\n            newValue(el[constants.TEXT_NODE_CACHE][k]);\n            continue;\n          }\n          setText(\n            el[constants.TEXT_NODE_CACHE][k],\n            newValue === null || newValue === void 0 || newValue === false ? \"\" : String(newValue)\n          );\n        } else if (edit.t & constants.AttributeFlag) {\n          setAttribute(el, edit.n, newValue);\n        } else if (edit.t & constants.StyleAttributeFlag) {\n          if (typeof newValue === \"string\") {\n            setStyleAttribute(el, edit.n, newValue);\n          } else {\n            for (const style in newValue) {\n              if (newValue[style] !== oldValue[style]) {\n                setStyleAttribute(el, style, newValue[style]);\n              }\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n, newValue);\n        }\n      }\n    }\n    return root;\n  }\n  v(block2 = null, refNode = null) {\n    insertBefore$.call(this.t(), this.l, block2 ? block2.l : refNode);\n  }\n  x() {\n    remove$$1.call(this.l);\n    this.l = null;\n  }\n  u(_oldProps, _newProps) {\n    return true;\n  }\n  s() {\n    return String(this.l?.outerHTML);\n  }\n  t() {\n    if (!this._t)\n      this._t = this.l?.parentElement;\n    return this._t;\n  }\n}\nconst getCurrentElement = (path, root, cache, key) => {\n  const pathLength = path.length;\n  if (!pathLength)\n    return root;\n  if (cache && key !== void 0 && cache[key]) {\n    return cache[key];\n  }\n  for (let i = 0; i < pathLength; ++i) {\n    const siblings = path[i];\n    root = childAt(root, siblings);\n  }\n  if (cache && key !== void 0)\n    cache[key] = root;\n  return root;\n};\nconst stringToDOM = (content) => {\n  innerHTML$.call(template$, content);\n  return template$.content.firstChild;\n};\nconst withKey = (value, key) => {\n  value.key = key;\n  return value;\n};\nconst block$ = Block.prototype;\nconst mount$ = block$.m;\nconst patch$ = block$.p;\nconst move$ = block$.v;\nconst remove$ = block$.x;\nconst shouldUpdate$ = block$.u;\n\nexports.AbstractBlock = AbstractBlock;\nexports.ArrayBlock = ArrayBlock;\nexports.Block = Block;\nexports.arrayMount$ = arrayMount$;\nexports.arrayPatch$ = arrayPatch$;\nexports.block = block;\nexports.document$ = document$;\nexports.firstChild$ = firstChild$;\nexports.mapArray = mapArray;\nexports.mount = mount;\nexports.mount$ = mount$;\nexports.nextSibling$ = nextSibling$;\nexports.patch = patch;\nexports.remove$ = remove$;\nexports.renderToTemplate = renderToTemplate;\nexports.stringToDOM = stringToDOM;\nexports.withKey = withKey;\n"
  },
  {
    "path": "website/components/million-library/chunks/block.mjs",
    "content": "import { E as EVENTS_REGISTRY, S as Set$, O as Object$, a as SetHas$, b as SetAdd$, I as IS_NON_DIMENSIONAL, X as XML_NS, c as XLINK_NS, N as NON_PROPS, d as EventFlag, e as StyleAttributeFlag, f as X_CHAR, g as SvgAttributeFlag, A as AttributeFlag, V as VOID_ELEMENTS, C as ChildFlag, B as BlockFlag, M as Map$, h as MapSet$, T as TEXT_NODE_CACHE } from './constants.mjs';\n\nif (typeof window === \"undefined\") {\n  throw new Error(\n    \"See http://millionjs.org/docs/quickstart to use the compiler. If that doesn't work, import from `million/react-server` instead.\"\n  );\n}\nconst document$ = document;\nconst template$ = document$.createElement(\"template\");\nconst node$ = Node.prototype;\nconst element$ = Element.prototype;\nconst characterData$ = CharacterData.prototype;\nconst getOwnPropertyDescriptor$ = Object$.getOwnPropertyDescriptor;\nconst insertBefore$ = node$.insertBefore;\nconst cloneNode$ = node$.cloneNode;\nconst remove$$1 = element$.remove;\nconst addEventListener$ = node$.addEventListener;\nconst removeAttribute$ = element$.removeAttribute;\nconst setAttribute$ = element$.setAttribute;\nconst setAttributeNS$ = element$.setAttributeNS;\nconst setTextContent$ = getOwnPropertyDescriptor$(node$, \"textContent\").set;\nconst innerHTML$ = getOwnPropertyDescriptor$(element$, \"innerHTML\").set;\nconst firstChild$ = getOwnPropertyDescriptor$(node$, \"firstChild\").get;\nconst nextSibling$ = getOwnPropertyDescriptor$(node$, \"nextSibling\").get;\nconst characterDataSet$ = getOwnPropertyDescriptor$(\n  characterData$,\n  \"data\"\n).set;\ndocument$[EVENTS_REGISTRY] = new Set$();\nconst createEventListener = (el, name, value) => {\n  const event = name.toLowerCase();\n  const key = `$$${event}`;\n  if (!SetHas$.call(document$[EVENTS_REGISTRY], event)) {\n    addEventListener$.call(document$, event, (nativeEventObject) => {\n      requestAnimationFrame(() => {\n        let el2 = nativeEventObject.target;\n        while (el2) {\n          const handler = el2[key];\n          if (handler) {\n            let returnFalse = false;\n            if (handler(nativeEventObject) === false) {\n              returnFalse = true;\n            }\n            if (returnFalse)\n              return;\n          }\n          el2 = el2.parentNode;\n        }\n      });\n    });\n    SetAdd$.call(document$[EVENTS_REGISTRY], event);\n  }\n  const patch = (newValue) => {\n    if (!newValue) {\n      el[key] = null;\n    } else if (!(\"key\" in newValue && newValue.key === el[key]?.key)) {\n      el[key] = newValue;\n    }\n  };\n  patch(value);\n  return patch;\n};\nconst childAt = (el, index) => {\n  let child = firstChild$.call(el);\n  if (index) {\n    for (let j = 0; j < index; ++j) {\n      if (!child)\n        break;\n      child = nextSibling$.call(child);\n    }\n  }\n  return child;\n};\nconst insertText = (el, value, index) => {\n  const node = document$.createTextNode(value);\n  const child = childAt(el, index);\n  insertBefore$.call(el, node, child);\n  return node;\n};\nconst setText = (el, value) => {\n  characterDataSet$.call(el, value);\n};\nconst setStyleAttribute = (el, name, value) => {\n  if (typeof value !== \"number\" || IS_NON_DIMENSIONAL.test(name)) {\n    el.style[name] = value;\n  } else if (typeof value === \"string\") {\n    el.style.cssText = value;\n  } else if (name.startsWith(\"-\")) {\n    el.style.setProperty(name, String(value));\n  } else if (value === void 0 || value === null) {\n    el.style[name] = \"\";\n  } else {\n    el.style[name] = `${String(value)}px`;\n  }\n};\nconst setSvgAttribute = (el, name, value) => {\n  name = name.replace(/xlink(?:H|:h)/, \"h\").replace(/sName$/, \"s\");\n  if (name.startsWith(\"xmlns\")) {\n    setAttributeNS$.call(el, XML_NS, name, String(value));\n  } else if (name.startsWith(\"xlink\")) {\n    setAttributeNS$.call(el, XLINK_NS, \"href\", String(value));\n  }\n};\nconst setAttribute = (el, name, value) => {\n  const isValueNully = value === void 0 || value === null;\n  value = isValueNully ? \"\" : value;\n  if (name in el && el[name] !== void 0 && el[name] !== null && !(el instanceof SVGElement) && SetHas$.call(NON_PROPS, name)) {\n    try {\n      el[name] = value;\n    } catch (_err) {\n    }\n  } else if (!isValueNully && value !== \"\" && (value !== false || name.includes(\"-\"))) {\n    setAttribute$.call(el, name, String(value));\n  } else {\n    removeAttribute$.call(el, name);\n  }\n};\n\nclass AbstractBlock {\n}\n\nconst renderToTemplate = (vnode, edits = [], path = []) => {\n  if (typeof vnode === \"string\")\n    return vnode;\n  if (typeof vnode === \"number\" || typeof vnode === \"bigint\" || vnode === true) {\n    return String(vnode);\n  }\n  if (vnode === null || vnode === void 0 || vnode === false)\n    return \"\";\n  let props = \"\";\n  let children = \"\";\n  const current = {\n    p: path,\n    e: [],\n    i: []\n  };\n  for (let name in vnode.props) {\n    const value = vnode.props[name];\n    if (name === \"key\" || name === \"ref\" || name === \"children\") {\n      continue;\n    }\n    if (name === \"className\")\n      name = \"class\";\n    if (name === \"htmlFor\")\n      name = \"for\";\n    if (name.startsWith(\"on\")) {\n      const isValueHole = \"$\" in value;\n      if (isValueHole) {\n        current.e.push({\n          t: EventFlag,\n          n: name.slice(2),\n          v: null,\n          h: value.$,\n          i: null,\n          l: null,\n          p: null,\n          b: null\n        });\n      } else {\n        current.i.push({\n          t: EventFlag,\n          n: name.slice(2),\n          v: null,\n          h: null,\n          i: null,\n          l: value,\n          p: null,\n          b: null\n        });\n      }\n      continue;\n    }\n    if (value) {\n      if (typeof value === \"object\" && \"$\" in value) {\n        if (name === \"style\") {\n          current.e.push({\n            t: StyleAttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        } else if (name.charCodeAt(0) === X_CHAR) {\n          current.e.push({\n            t: SvgAttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        } else {\n          current.e.push({\n            t: AttributeFlag,\n            n: name,\n            v: null,\n            h: value.$,\n            i: null,\n            l: null,\n            p: null,\n            b: null\n          });\n        }\n        continue;\n      }\n      if (name === \"style\") {\n        let style = \"\";\n        for (const key in value) {\n          style += `${key}:${String(value[key])};`;\n        }\n        props += ` style=\"${style}\"`;\n        continue;\n      }\n      props += ` ${name}=\"${String(value)}\"`;\n    }\n  }\n  if (SetHas$.call(VOID_ELEMENTS, vnode.type)) {\n    if (current.e.length)\n      edits.push(current);\n    return `<${vnode.type}${props} />`;\n  }\n  let canMergeString = false;\n  for (let i = 0, j = vnode.props.children?.length || 0, k = 0; i < j; ++i) {\n    const child = vnode.props.children?.[i];\n    if (child === null || child === void 0 || child === false)\n      continue;\n    if (typeof child === \"object\" && \"$\" in child) {\n      current.e.push({\n        t: ChildFlag,\n        n: null,\n        v: null,\n        h: child.$,\n        i,\n        l: null,\n        p: null,\n        b: null\n      });\n      continue;\n    }\n    if (child instanceof AbstractBlock) {\n      current.i.push({\n        t: BlockFlag,\n        n: null,\n        v: null,\n        h: null,\n        i,\n        l: null,\n        p: null,\n        b: child\n      });\n      continue;\n    }\n    if (typeof child === \"string\" || typeof child === \"number\" || typeof child === \"bigint\") {\n      const value = typeof child === \"number\" || typeof child === \"bigint\" ? String(child) : child;\n      if (canMergeString) {\n        current.i.push({\n          t: ChildFlag,\n          n: null,\n          v: value,\n          h: null,\n          i,\n          l: null,\n          p: null,\n          b: null\n        });\n        continue;\n      }\n      canMergeString = true;\n      children += value;\n      k++;\n      continue;\n    }\n    canMergeString = false;\n    const newPath = path.slice();\n    newPath.push(k++);\n    children += renderToTemplate(child, edits, newPath);\n  }\n  if (current.i.length || current.e.length)\n    edits.push(current);\n  return `<${vnode.type}${props}>${children}</${vnode.type}>`;\n};\n\nconst mapArray = (children) => {\n  return new ArrayBlock(children);\n};\nclass ArrayBlock extends AbstractBlock {\n  constructor(children) {\n    super();\n    this.b = children;\n  }\n  v() {\n  }\n  p(fragment) {\n    const oldChildren = this.b;\n    const newChildren = fragment.b;\n    const oldChildrenLength = oldChildren.length;\n    const newChildrenLength = newChildren.length;\n    const parent = this.t();\n    if (this === fragment)\n      return parent;\n    if (newChildrenLength === 0 && oldChildrenLength === 0)\n      return parent;\n    this.b = newChildren;\n    if (newChildrenLength === 0) {\n      arrayRemove$.call(this);\n      return parent;\n    }\n    if (oldChildrenLength === 0) {\n      arrayMount$.call(fragment, parent);\n      return parent;\n    }\n    let oldHead = 0;\n    let newHead = 0;\n    let oldTail = oldChildrenLength - 1;\n    let newTail = newChildrenLength - 1;\n    let oldHeadChild = oldChildren[0];\n    let newHeadChild = newChildren[0];\n    let oldTailChild = oldChildren[oldTail];\n    let newTailChild = newChildren[newTail];\n    let oldKeyMap;\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (!oldHeadChild) {\n        oldHeadChild = oldChildren[++oldHead];\n        continue;\n      }\n      if (!oldTailChild) {\n        oldTailChild = oldChildren[--oldTail];\n        continue;\n      }\n      const oldHeadKey = oldHeadChild.k;\n      const newHeadKey = newHeadChild.k;\n      if (oldHeadKey === newHeadKey) {\n        patch$.call(oldHeadChild, newHeadChild);\n        newChildren[newHead] = oldHeadChild;\n        oldHeadChild = oldChildren[++oldHead];\n        newHeadChild = newChildren[++newHead];\n        continue;\n      }\n      const oldTailKey = oldTailChild.k;\n      const newTailKey = newTailChild.k;\n      if (oldTailKey === newTailKey) {\n        patch$.call(oldTailChild, newTailChild);\n        newChildren[newTail] = oldTailChild;\n        oldTailChild = oldChildren[--oldTail];\n        newTailChild = newChildren[--newTail];\n        continue;\n      }\n      if (oldHeadKey === newTailKey) {\n        patch$.call(oldHeadChild, newTailChild);\n        newChildren[newTail] = oldHeadChild;\n        const nextChild = newChildren[newTail + 1];\n        move$.call(oldHeadChild, nextChild, nextChild?.l || null);\n        oldHeadChild = oldChildren[++oldHead];\n        newTailChild = newChildren[--newTail];\n        continue;\n      }\n      if (oldTailKey === newHeadKey) {\n        patch$.call(oldTailChild, newHeadChild);\n        newChildren[newHead] = oldTailChild;\n        const nextChild = oldChildren[oldHead];\n        move$.call(oldTailChild, nextChild, nextChild?.l || null);\n        oldTailChild = oldChildren[--oldTail];\n        newHeadChild = newChildren[++newHead];\n        continue;\n      }\n      if (!oldKeyMap) {\n        oldKeyMap = new Map$();\n        for (let i = oldHead; i <= oldTail; i++) {\n          MapSet$.call(oldKeyMap, oldChildren[i].k, i);\n        }\n      }\n      const oldIndex = oldKeyMap.get(newHeadKey);\n      if (oldIndex === void 0) {\n        mount$.call(newHeadChild, parent, oldHeadChild.l || null);\n      } else {\n        const oldChild = oldChildren[oldIndex];\n        move$.call(oldChild, oldHeadChild, null);\n        patch$.call(oldChild, newHeadChild);\n        newChildren[newHead] = oldChild;\n        oldChildren[oldIndex] = null;\n      }\n      newHeadChild = newChildren[++newHead];\n    }\n    if (oldHead <= oldTail || newHead <= newTail) {\n      if (oldHead > oldTail) {\n        const nextChild = newChildren[newTail + 1];\n        for (let i = newHead; i <= newTail; ++i) {\n          mount$.call(newChildren[i], parent, nextChild ? nextChild.l : null);\n        }\n      } else {\n        for (let i = oldHead; i <= oldTail; ++i) {\n          remove$.call(oldChildren[i]);\n        }\n      }\n    }\n    return parent;\n  }\n  m(parent, refNode = null) {\n    if (this._t)\n      return this._t;\n    for (let i = 0, j = this.b.length; i < j; ++i) {\n      const block = this.b[i];\n      mount$.call(block, parent, refNode);\n    }\n    this._t = parent;\n    return parent;\n  }\n  x() {\n    const parent = this.t();\n    if (parent) {\n      setTextContent$.call(parent, \"\");\n    } else {\n      for (let i = 0, j = this.b.length; i < j; ++i) {\n        remove$.call(this.b[i]);\n      }\n    }\n    this.b = [];\n  }\n  u() {\n    return true;\n  }\n  s() {\n    return this.b.map((block) => block.s()).join(\"\");\n  }\n  t() {\n    if (!this._t)\n      this._t = this.b[0].t();\n    return this._t;\n  }\n}\nconst array$ = ArrayBlock.prototype;\nconst arrayMount$ = array$.m;\nconst arrayPatch$ = array$.p;\nconst arrayRemove$ = array$.x;\n\nconst HOLE_PROXY = new Proxy(\n  {},\n  {\n    get(_, key) {\n      return { $: key };\n    }\n  }\n);\nconst block = (fn, unwrap, shouldUpdate) => {\n  const vnode = fn(HOLE_PROXY);\n  const edits = [];\n  const root = stringToDOM(\n    renderToTemplate(unwrap ? unwrap(vnode) : vnode, edits)\n  );\n  return (props, key, shouldUpdateCurrentBlock) => {\n    return new Block(\n      root,\n      edits,\n      props,\n      key ?? props?.key,\n      shouldUpdateCurrentBlock ?? shouldUpdate\n    );\n  };\n};\nconst mount = (block2, parent) => {\n  if (\"b\" in block2 && parent) {\n    return arrayMount$.call(block2, parent);\n  }\n  return mount$.call(block2, parent);\n};\nconst patch = (oldBlock, newBlock) => {\n  if (\"b\" in oldBlock || \"b\" in newBlock) {\n    arrayPatch$.call(oldBlock, newBlock);\n  }\n  if (!oldBlock.l)\n    mount$.call(oldBlock);\n  if (oldBlock.k && oldBlock.k === newBlock.k || oldBlock.r === newBlock.r) {\n    return patch$.call(oldBlock, newBlock);\n  }\n  const el = mount$.call(newBlock, oldBlock.t(), oldBlock.l);\n  remove$.call(oldBlock);\n  oldBlock.k = newBlock.k;\n  return el;\n};\nclass Block extends AbstractBlock {\n  constructor(root, edits, props, key, shouldUpdate, getElements) {\n    super();\n    this.r = root;\n    this.d = props;\n    this.e = edits;\n    this.k = key;\n    this.c = Array(edits.length);\n    if (shouldUpdate)\n      this.u = shouldUpdate;\n    if (getElements)\n      this.g = getElements;\n  }\n  m(parent, refNode = null) {\n    if (this.l)\n      return this.l;\n    const root = cloneNode$.call(this.r, true);\n    const elements = this.g?.(root);\n    if (elements)\n      this.c = elements;\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i];\n      const el = elements?.[i] ?? getCurrentElement(current.p, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k];\n        const value = this.d[edit.h];\n        if (edit.t & ChildFlag) {\n          if (value === null || value === void 0 || value === false) {\n            continue;\n          }\n          if (value instanceof AbstractBlock) {\n            value.m(el);\n            continue;\n          }\n          if (!el[TEXT_NODE_CACHE])\n            el[TEXT_NODE_CACHE] = new Array(l);\n          if (typeof value === \"function\") {\n            const scopeEl = value(null);\n            el[TEXT_NODE_CACHE][k] = scopeEl;\n            insertBefore$.call(el, scopeEl, childAt(el, edit.i));\n            continue;\n          }\n          el[TEXT_NODE_CACHE][k] = insertText(el, String(value), edit.i);\n        } else if (edit.t & EventFlag) {\n          const patch2 = createEventListener(el, edit.n, value);\n          edit.p = patch2;\n        } else if (edit.t & AttributeFlag) {\n          setAttribute(el, edit.n, value);\n        } else if (edit.t & StyleAttributeFlag) {\n          if (typeof value === \"string\") {\n            setStyleAttribute(el, edit.n, value);\n          } else {\n            for (const style in value) {\n              setStyleAttribute(el, style, value[style]);\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n, value);\n        }\n      }\n      const initsLength = current.i?.length;\n      if (!initsLength)\n        continue;\n      for (let k = 0; k < initsLength; ++k) {\n        const init = current.i[k];\n        if (init.t & ChildFlag) {\n          insertText(el, init.v, init.i);\n        } else if (init.t & EventFlag) {\n          createEventListener(el, init.n, init.l);\n        } else {\n          init.b.m(el, childAt(el, init.i));\n        }\n      }\n    }\n    if (parent) {\n      insertBefore$.call(parent, root, refNode);\n    }\n    this.l = root;\n    return root;\n  }\n  p(newBlock) {\n    const root = this.l;\n    if (!newBlock.d)\n      return root;\n    const props = this.d;\n    if (!shouldUpdate$.call(this, props, newBlock.d))\n      return root;\n    this.d = newBlock.d;\n    for (let i = 0, j = this.e.length; i < j; ++i) {\n      const current = this.e[i];\n      const el = this.c[i] ?? getCurrentElement(current.p, root, this.c, i);\n      for (let k = 0, l = current.e.length; k < l; ++k) {\n        const edit = current.e[k];\n        const oldValue = props[edit.h];\n        const newValue = newBlock.d[edit.h];\n        if (newValue === oldValue)\n          continue;\n        if (edit.t & EventFlag) {\n          edit.p(newValue);\n          continue;\n        }\n        if (edit.t & ChildFlag) {\n          if (oldValue instanceof AbstractBlock) {\n            const firstEdit = newBlock.e?.[i]?.e[k];\n            const newChildBlock = newBlock.d[firstEdit.h];\n            oldValue.p(newChildBlock);\n            continue;\n          }\n          if (typeof newValue === \"function\") {\n            newValue(el[TEXT_NODE_CACHE][k]);\n            continue;\n          }\n          setText(\n            el[TEXT_NODE_CACHE][k],\n            newValue === null || newValue === void 0 || newValue === false ? \"\" : String(newValue)\n          );\n        } else if (edit.t & AttributeFlag) {\n          setAttribute(el, edit.n, newValue);\n        } else if (edit.t & StyleAttributeFlag) {\n          if (typeof newValue === \"string\") {\n            setStyleAttribute(el, edit.n, newValue);\n          } else {\n            for (const style in newValue) {\n              if (newValue[style] !== oldValue[style]) {\n                setStyleAttribute(el, style, newValue[style]);\n              }\n            }\n          }\n        } else {\n          setSvgAttribute(el, edit.n, newValue);\n        }\n      }\n    }\n    return root;\n  }\n  v(block2 = null, refNode = null) {\n    insertBefore$.call(this.t(), this.l, block2 ? block2.l : refNode);\n  }\n  x() {\n    remove$$1.call(this.l);\n    this.l = null;\n  }\n  u(_oldProps, _newProps) {\n    return true;\n  }\n  s() {\n    return String(this.l?.outerHTML);\n  }\n  t() {\n    if (!this._t)\n      this._t = this.l?.parentElement;\n    return this._t;\n  }\n}\nconst getCurrentElement = (path, root, cache, key) => {\n  const pathLength = path.length;\n  if (!pathLength)\n    return root;\n  if (cache && key !== void 0 && cache[key]) {\n    return cache[key];\n  }\n  for (let i = 0; i < pathLength; ++i) {\n    const siblings = path[i];\n    root = childAt(root, siblings);\n  }\n  if (cache && key !== void 0)\n    cache[key] = root;\n  return root;\n};\nconst stringToDOM = (content) => {\n  innerHTML$.call(template$, content);\n  return template$.content.firstChild;\n};\nconst withKey = (value, key) => {\n  value.key = key;\n  return value;\n};\nconst block$ = Block.prototype;\nconst mount$ = block$.m;\nconst patch$ = block$.p;\nconst move$ = block$.v;\nconst remove$ = block$.x;\nconst shouldUpdate$ = block$.u;\n\nexport { ArrayBlock as A, Block as B, mapArray as a, block as b, AbstractBlock as c, document$ as d, mount$ as e, firstChild$ as f, remove$ as g, arrayPatch$ as h, arrayMount$ as i, mount as m, nextSibling$ as n, patch as p, renderToTemplate as r, stringToDOM as s, withKey as w };\n"
  },
  {
    "path": "website/components/million-library/chunks/constants.cjs",
    "content": "'use strict';\n\nconst Object$ = Object;\nconst Map$ = Map;\nconst Set$ = Set;\nconst SetHas$ = Set$.prototype.has;\nconst SetAdd$ = Set$.prototype.add;\nconst MapHas$ = Map$.prototype.has;\nconst MapGet$ = Map$.prototype.get;\nconst MapSet$ = Map$.prototype.set;\nconst ChildFlag = 1;\nconst AttributeFlag = 2;\nconst EventFlag = 4;\nconst StyleAttributeFlag = 8;\nconst SvgAttributeFlag = 16;\nconst BlockFlag = 32;\nconst TEXT_NODE_CACHE = \"__t\";\nconst EVENTS_REGISTRY = \"__m\";\nconst IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nconst XLINK_NS = \"http://www.w3.org/1999/xlink\";\nconst XML_NS = \"http://www.w3.org/2000/xmlns/\";\nconst X_CHAR = 120;\nconst NON_PROPS = new Set$([\"href\", \"list\", \"form\", \"tabIndex\", \"download\"]);\nconst VOID_ELEMENTS = new Set$([\"area\", \"base\", \"basefont\", \"bgsound\", \"br\", \"col\", \"command\", \"embed\", \"frame\", \"hr\", \"image\", \"img\", \"input\", \"isindex\", \"keygen\", \"link\", \"menuitem\", \"meta\", \"nextid\", \"param\", \"source\", \"track\", \"wbr\"]);\n\nexports.AttributeFlag = AttributeFlag;\nexports.BlockFlag = BlockFlag;\nexports.ChildFlag = ChildFlag;\nexports.EVENTS_REGISTRY = EVENTS_REGISTRY;\nexports.EventFlag = EventFlag;\nexports.IS_NON_DIMENSIONAL = IS_NON_DIMENSIONAL;\nexports.Map$ = Map$;\nexports.MapGet$ = MapGet$;\nexports.MapHas$ = MapHas$;\nexports.MapSet$ = MapSet$;\nexports.NON_PROPS = NON_PROPS;\nexports.Object$ = Object$;\nexports.Set$ = Set$;\nexports.SetAdd$ = SetAdd$;\nexports.SetHas$ = SetHas$;\nexports.StyleAttributeFlag = StyleAttributeFlag;\nexports.SvgAttributeFlag = SvgAttributeFlag;\nexports.TEXT_NODE_CACHE = TEXT_NODE_CACHE;\nexports.VOID_ELEMENTS = VOID_ELEMENTS;\nexports.XLINK_NS = XLINK_NS;\nexports.XML_NS = XML_NS;\nexports.X_CHAR = X_CHAR;\n"
  },
  {
    "path": "website/components/million-library/chunks/constants.mjs",
    "content": "const Object$ = Object;\nconst Map$ = Map;\nconst Set$ = Set;\nconst SetHas$ = Set$.prototype.has;\nconst SetAdd$ = Set$.prototype.add;\nconst MapHas$ = Map$.prototype.has;\nconst MapGet$ = Map$.prototype.get;\nconst MapSet$ = Map$.prototype.set;\nconst ChildFlag = 1;\nconst AttributeFlag = 2;\nconst EventFlag = 4;\nconst StyleAttributeFlag = 8;\nconst SvgAttributeFlag = 16;\nconst BlockFlag = 32;\nconst TEXT_NODE_CACHE = \"__t\";\nconst EVENTS_REGISTRY = \"__m\";\nconst IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nconst XLINK_NS = \"http://www.w3.org/1999/xlink\";\nconst XML_NS = \"http://www.w3.org/2000/xmlns/\";\nconst X_CHAR = 120;\nconst NON_PROPS = new Set$([\"href\", \"list\", \"form\", \"tabIndex\", \"download\"]);\nconst VOID_ELEMENTS = new Set$([\"area\", \"base\", \"basefont\", \"bgsound\", \"br\", \"col\", \"command\", \"embed\", \"frame\", \"hr\", \"image\", \"img\", \"input\", \"isindex\", \"keygen\", \"link\", \"menuitem\", \"meta\", \"nextid\", \"param\", \"source\", \"track\", \"wbr\"]);\n\nexport { AttributeFlag as A, BlockFlag as B, ChildFlag as C, EVENTS_REGISTRY as E, IS_NON_DIMENSIONAL as I, Map$ as M, NON_PROPS as N, Object$ as O, Set$ as S, TEXT_NODE_CACHE as T, VOID_ELEMENTS as V, XML_NS as X, SetHas$ as a, SetAdd$ as b, XLINK_NS as c, EventFlag as d, StyleAttributeFlag as e, X_CHAR as f, SvgAttributeFlag as g, MapSet$ as h, MapHas$ as i, MapGet$ as j };\n"
  },
  {
    "path": "website/components/million-library/compiler.cjs",
    "content": "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst unplugin$1 = require('unplugin');\nconst core = require('@babel/core');\nconst require$$0 = require('assert');\nconst t = require('@babel/types');\nconst constants = require('./chunks/constants.cjs');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e[\"default\"] : e; }\n\nfunction _interopNamespace(e) {\n  if (e && e.__esModule) return e;\n  const n = Object.create(null);\n  if (e) {\n    for (const k in e) {\n      n[k] = e[k];\n    }\n  }\n  n[\"default\"] = e;\n  return n;\n}\n\nconst require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);\nconst t__default = /*#__PURE__*/_interopDefaultLegacy(t);\nconst t__namespace = /*#__PURE__*/_interopNamespace(t);\n\nvar lib$1 = {};\n\nObject.defineProperty(lib$1, \"__esModule\", {\n  value: true\n});\nvar declare_1 = lib$1.declare = declare;\nlib$1.declarePreset = void 0;\nconst apiPolyfills = {\n  assertVersion: api => range => {\n    throwVersionError(range, api.version);\n  },\n  targets: () => () => {\n    return {};\n  },\n  assumption: () => () => {\n    return undefined;\n  }\n};\nfunction declare(builder) {\n  return (api, options, dirname) => {\n    var _clonedApi2;\n    let clonedApi;\n    for (const name of Object.keys(apiPolyfills)) {\n      var _clonedApi;\n      if (api[name]) continue;\n\n      clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api);\n      clonedApi[name] = apiPolyfills[name](clonedApi);\n    }\n\n    return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname);\n  };\n}\nconst declarePreset = declare;\nlib$1.declarePreset = declarePreset;\nfunction copyApiObject(api) {\n  let proto = null;\n  if (typeof api.version === \"string\" && /^7\\./.test(api.version)) {\n    proto = Object.getPrototypeOf(api);\n    if (proto && (!has(proto, \"version\") || !has(proto, \"transform\") || !has(proto, \"template\") || !has(proto, \"types\"))) {\n      proto = null;\n    }\n  }\n  return Object.assign({}, proto, api);\n}\nfunction has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction throwVersionError(range, version) {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n  const limit = Error.stackTraceLimit;\n  if (typeof limit === \"number\" && limit < 25) {\n    Error.stackTraceLimit = 25;\n  }\n  let err;\n  if (version.slice(0, 2) === \"7.\") {\n    err = new Error(`Requires Babel \"^7.0.0-beta.41\", but was loaded with \"${version}\". ` + `You'll need to update your @babel/core version.`);\n  } else {\n    err = new Error(`Requires Babel \"${range}\", but was loaded with \"${version}\". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` + `to see what is calling Babel.`);\n  }\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version,\n    range\n  });\n}\n\nvar lib = {};\n\nvar importInjector = {};\n\nvar importBuilder = {};\n\nObject.defineProperty(importBuilder, \"__esModule\", {\n  value: true\n});\nimportBuilder.default = void 0;\n\nvar _assert$1 = require$$0__default;\n\nvar _t$1 = t__default;\n\nconst {\n  callExpression,\n  cloneNode,\n  expressionStatement,\n  identifier,\n  importDeclaration,\n  importDefaultSpecifier,\n  importNamespaceSpecifier,\n  importSpecifier,\n  memberExpression,\n  stringLiteral,\n  variableDeclaration,\n  variableDeclarator\n} = _t$1;\n\nclass ImportBuilder {\n  constructor(importedSource, scope, hub) {\n    this._statements = [];\n    this._resultName = null;\n    this._importedSource = void 0;\n    this._scope = scope;\n    this._hub = hub;\n    this._importedSource = importedSource;\n  }\n\n  done() {\n    return {\n      statements: this._statements,\n      resultName: this._resultName\n    };\n  }\n\n  import() {\n    this._statements.push(importDeclaration([], stringLiteral(this._importedSource)));\n\n    return this;\n  }\n\n  require() {\n    this._statements.push(expressionStatement(callExpression(identifier(\"require\"), [stringLiteral(this._importedSource)])));\n\n    return this;\n  }\n\n  namespace(name = \"namespace\") {\n    const local = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importNamespaceSpecifier(local)];\n    this._resultName = cloneNode(local);\n    return this;\n  }\n\n  default(name) {\n    const id = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importDefaultSpecifier(id)];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  named(name, importName) {\n    if (importName === \"default\") return this.default(name);\n\n    const id = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importSpecifier(id, identifier(importName))];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  var(name) {\n    const id = this._scope.generateUidIdentifier(name);\n\n    let statement = this._statements[this._statements.length - 1];\n\n    if (statement.type !== \"ExpressionStatement\") {\n      _assert$1(this._resultName);\n\n      statement = expressionStatement(this._resultName);\n\n      this._statements.push(statement);\n    }\n\n    this._statements[this._statements.length - 1] = variableDeclaration(\"var\", [variableDeclarator(id, statement.expression)]);\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  defaultInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireDefault\"));\n  }\n\n  wildcardInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireWildcard\"));\n  }\n\n  _interop(callee) {\n    const statement = this._statements[this._statements.length - 1];\n\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = callExpression(callee, [statement.expression]);\n    } else if (statement.type === \"VariableDeclaration\") {\n      _assert$1(statement.declarations.length === 1);\n\n      statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]);\n    } else {\n      _assert$1.fail(\"Unexpected type.\");\n    }\n\n    return this;\n  }\n\n  prop(name) {\n    const statement = this._statements[this._statements.length - 1];\n\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = memberExpression(statement.expression, identifier(name));\n    } else if (statement.type === \"VariableDeclaration\") {\n      _assert$1(statement.declarations.length === 1);\n\n      statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name));\n    } else {\n      _assert$1.fail(\"Unexpected type:\" + statement.type);\n    }\n\n    return this;\n  }\n\n  read(name) {\n    this._resultName = memberExpression(this._resultName, identifier(name));\n  }\n\n}\n\nimportBuilder.default = ImportBuilder;\n\nvar isModule$1 = {};\n\nObject.defineProperty(isModule$1, \"__esModule\", {\n  value: true\n});\nisModule$1.default = isModule;\n\nfunction isModule(path) {\n  const {\n    sourceType\n  } = path.node;\n\n  if (sourceType !== \"module\" && sourceType !== \"script\") {\n    throw path.buildCodeFrameError(`Unknown sourceType \"${sourceType}\", cannot transform.`);\n  }\n\n  return path.node.sourceType === \"module\";\n}\n\nObject.defineProperty(importInjector, \"__esModule\", {\n  value: true\n});\nimportInjector.default = void 0;\n\nvar _assert = require$$0__default;\n\nvar _t = t__default;\n\nvar _importBuilder = importBuilder;\n\nvar _isModule = isModule$1;\n\nconst {\n  numericLiteral,\n  sequenceExpression\n} = _t;\n\nclass ImportInjector {\n  constructor(path, importedSource, opts) {\n    this._defaultOpts = {\n      importedSource: null,\n      importedType: \"commonjs\",\n      importedInterop: \"babel\",\n      importingInterop: \"babel\",\n      ensureLiveReference: false,\n      ensureNoContext: false,\n      importPosition: \"before\"\n    };\n    const programPath = path.find(p => p.isProgram());\n    this._programPath = programPath;\n    this._programScope = programPath.scope;\n    this._hub = programPath.hub;\n    this._defaultOpts = this._applyDefaults(importedSource, opts, true);\n  }\n\n  addDefault(importedSourceIn, opts) {\n    return this.addNamed(\"default\", importedSourceIn, opts);\n  }\n\n  addNamed(importName, importedSourceIn, opts) {\n    _assert(typeof importName === \"string\");\n\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);\n  }\n\n  addNamespace(importedSourceIn, opts) {\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);\n  }\n\n  addSideEffect(importedSourceIn, opts) {\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0);\n  }\n\n  _applyDefaults(importedSource, opts, isInit = false) {\n    let newOpts;\n\n    if (typeof importedSource === \"string\") {\n      newOpts = Object.assign({}, this._defaultOpts, {\n        importedSource\n      }, opts);\n    } else {\n      _assert(!opts, \"Unexpected secondary arguments.\");\n\n      newOpts = Object.assign({}, this._defaultOpts, importedSource);\n    }\n\n    if (!isInit && opts) {\n      if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;\n      if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;\n    }\n\n    return newOpts;\n  }\n\n  _generateImport(opts, importName) {\n    const isDefault = importName === \"default\";\n    const isNamed = !!importName && !isDefault;\n    const isNamespace = importName === null;\n    const {\n      importedSource,\n      importedType,\n      importedInterop,\n      importingInterop,\n      ensureLiveReference,\n      ensureNoContext,\n      nameHint,\n      importPosition,\n      blockHoist\n    } = opts;\n    let name = nameHint || importName;\n    const isMod = (0, _isModule.default)(this._programPath);\n    const isModuleForNode = isMod && importingInterop === \"node\";\n    const isModuleForBabel = isMod && importingInterop === \"babel\";\n\n    if (importPosition === \"after\" && !isMod) {\n      throw new Error(`\"importPosition\": \"after\" is only supported in modules`);\n    }\n\n    const builder = new _importBuilder.default(importedSource, this._programScope, this._hub);\n\n    if (importedType === \"es6\") {\n      if (!isModuleForNode && !isModuleForBabel) {\n        throw new Error(\"Cannot import an ES6 module from CommonJS\");\n      }\n\n      builder.import();\n\n      if (isNamespace) {\n        builder.namespace(nameHint || importedSource);\n      } else if (isDefault || isNamed) {\n        builder.named(name, importName);\n      }\n    } else if (importedType !== \"commonjs\") {\n      throw new Error(`Unexpected interopType \"${importedType}\"`);\n    } else if (importedInterop === \"babel\") {\n      if (isModuleForNode) {\n        name = name !== \"default\" ? name : importedSource;\n        const es6Default = `${importedSource}$es6Default`;\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(es6Default).var(name || importedSource).wildcardInterop();\n        } else if (isDefault) {\n          if (ensureLiveReference) {\n            builder.default(es6Default).var(name || importedSource).defaultInterop().read(\"default\");\n          } else {\n            builder.default(es6Default).var(name).defaultInterop().prop(importName);\n          }\n        } else if (isNamed) {\n          builder.default(es6Default).read(importName);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource).wildcardInterop();\n        } else if ((isDefault || isNamed) && ensureLiveReference) {\n          if (isDefault) {\n            name = name !== \"default\" ? name : importedSource;\n            builder.var(name).read(importName);\n            builder.defaultInterop();\n          } else {\n            builder.var(importedSource).read(importName);\n          }\n        } else if (isDefault) {\n          builder.var(name).defaultInterop().prop(importName);\n        } else if (isNamed) {\n          builder.var(name).prop(importName);\n        }\n      }\n    } else if (importedInterop === \"compiled\") {\n      if (isModuleForNode) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault || isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.prop(importName).var(name);\n          }\n        }\n      }\n    } else if (importedInterop === \"uncompiled\") {\n      if (isDefault && ensureLiveReference) {\n        throw new Error(\"No live reference for commonjs default\");\n      }\n\n      if (isModuleForNode) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault) {\n          builder.var(name);\n        } else if (isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.var(name).prop(importName);\n          }\n        }\n      }\n    } else {\n      throw new Error(`Unknown importedInterop \"${importedInterop}\".`);\n    }\n\n    const {\n      statements,\n      resultName\n    } = builder.done();\n\n    this._insertStatements(statements, importPosition, blockHoist);\n\n    if ((isDefault || isNamed) && ensureNoContext && resultName.type !== \"Identifier\") {\n      return sequenceExpression([numericLiteral(0), resultName]);\n    }\n\n    return resultName;\n  }\n\n  _insertStatements(statements, importPosition = \"before\", blockHoist = 3) {\n    const body = this._programPath.get(\"body\");\n\n    if (importPosition === \"after\") {\n      for (let i = body.length - 1; i >= 0; i--) {\n        if (body[i].isImportDeclaration()) {\n          body[i].insertAfter(statements);\n          return;\n        }\n      }\n    } else {\n      statements.forEach(node => {\n        node._blockHoist = blockHoist;\n      });\n      const targetPath = body.find(p => {\n        const val = p.node._blockHoist;\n        return Number.isFinite(val) && val < 4;\n      });\n\n      if (targetPath) {\n        targetPath.insertBefore(statements);\n        return;\n      }\n    }\n\n    this._programPath.unshiftContainer(\"body\", statements);\n  }\n\n}\n\nimportInjector.default = ImportInjector;\n\n(function (exports) {\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\tObject.defineProperty(exports, \"ImportInjector\", {\n\t  enumerable: true,\n\t  get: function () {\n\t    return _importInjector.default;\n\t  }\n\t});\n\texports.addDefault = addDefault;\n\texports.addNamed = addNamed;\n\texports.addNamespace = addNamespace;\n\texports.addSideEffect = addSideEffect;\n\tObject.defineProperty(exports, \"isModule\", {\n\t  enumerable: true,\n\t  get: function () {\n\t    return _isModule.default;\n\t  }\n\t});\n\n\tvar _importInjector = importInjector;\n\n\tvar _isModule = isModule$1;\n\n\tfunction addDefault(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addDefault(importedSource, opts);\n\t}\n\n\tfunction addNamed(path, name, importedSource, opts) {\n\t  return new _importInjector.default(path).addNamed(name, importedSource, opts);\n\t}\n\n\tfunction addNamespace(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addNamespace(importedSource, opts);\n\t}\n\n\tfunction addSideEffect(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addSideEffect(importedSource, opts);\n\t}\n} (lib));\n\nconst renderToString = (node) => {\n  const type = node.openingElement.name;\n  const attributes = node.openingElement.attributes;\n  let html = `<${type.name}`;\n  for (let i = 0, j = attributes.length; i < j; i++) {\n    const attribute = attributes[i];\n    if (!t__namespace.isJSXSpreadAttribute(attribute) && attribute?.value && t__namespace.isJSXIdentifier(attribute.name) && \"value\" in attribute.value) {\n      const { name } = attribute.name;\n      const { value } = attribute.value;\n      html += ` ${name}${value ? `=\"${value}\"` : \"\"}`;\n    }\n  }\n  if (node.selfClosing) {\n    html += ` />`;\n    return html;\n  }\n  html += \">\";\n  if (node.children.length) {\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const child = node.children[i];\n      if (t__namespace.isJSXText(child)) {\n        html += child.value.trim();\n      } else if (t__namespace.isJSXElement(child)) {\n        html += renderToString(child);\n      } else if (t__namespace.isJSXExpressionContainer(child)) {\n        if (t__namespace.isStringLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t__namespace.isNumericLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t__namespace.isJSXElement(child.expression)) {\n          html += renderToString(child.expression);\n        }\n      }\n    }\n  }\n  html += `</${type.name}>`;\n  return html;\n};\nconst renderToTemplate = (node, edits, path = [], holes = []) => {\n  const attributesLength = node.openingElement.attributes.length;\n  const current = {\n    path,\n    edits: [],\n    inits: []\n  };\n  if (attributesLength) {\n    const newAttributes = [];\n    for (let i = 0; i < attributesLength; ++i) {\n      const attribute = node.openingElement.attributes[i];\n      if (t__namespace.isJSXAttribute(attribute) && t__namespace.isJSXIdentifier(attribute.name) && attribute.value) {\n        const name = attribute.name.name;\n        if (name === \"key\" || name === \"ref\" || name === \"children\") {\n          continue;\n        }\n        if (name === \"className\")\n          attribute.name.name = \"class\";\n        if (name === \"htmlFor\")\n          attribute.name.name = \"for\";\n        if (name.startsWith(\"on\")) {\n          if (!t__namespace.isJSXExpressionContainer(attribute.value))\n            continue;\n          const { expression } = attribute.value;\n          if (!t__namespace.isIdentifier(expression) && !t__namespace.isArrowFunctionExpression(expression)) {\n            continue;\n          }\n          const isDynamicListener = t__namespace.isIdentifier(expression) && holes.includes(expression.name);\n          const event = name.toLowerCase().slice(2);\n          if (isDynamicListener) {\n            current.edits.push({\n              type: t__namespace.numericLiteral(constants.EventFlag),\n              name: t__namespace.stringLiteral(event),\n              hole: t__namespace.stringLiteral(expression.name)\n            });\n          } else {\n            current.inits.push({\n              type: t__namespace.numericLiteral(constants.EventFlag),\n              listener: expression,\n              name: t__namespace.stringLiteral(event)\n            });\n          }\n          continue;\n        }\n        if (name === \"style\") {\n          if (!t__namespace.isJSXExpressionContainer(attribute.value))\n            continue;\n          const { expression } = attribute.value;\n          if (!t__namespace.isObjectExpression(expression))\n            continue;\n          let style = \"\";\n          for (let i2 = 0, j = expression.properties.length; i2 < j; ++i2) {\n            const property = expression.properties[i2];\n            if (!t__namespace.isObjectProperty(property) || !t__namespace.isIdentifier(property.key) || !t__namespace.isStringLiteral(property.value) && !t__namespace.isNumericLiteral(property.value))\n              continue;\n            if (!t__namespace.isIdentifier(property.key))\n              continue;\n            const value = property.value.extra?.raw || \"\";\n            style += `${property.key.name}:${String(value)};`;\n          }\n          attribute.value = t__namespace.stringLiteral(style);\n          continue;\n        }\n        if (t__namespace.isJSXExpressionContainer(attribute.value)) {\n          if (t__namespace.isStringLiteral(attribute.value.expression) || t__namespace.isNumericLiteral(attribute.value.expression)) {\n            newAttributes.push(\n              t__namespace.jsxAttribute(\n                attribute.name,\n                t__namespace.stringLiteral(String(attribute.value.expression.value))\n              )\n            );\n            continue;\n          }\n          const { expression } = attribute.value;\n          current.edits.push({\n            type: t__namespace.numericLiteral(\n              name === \"style\" ? constants.StyleAttributeFlag : name.charCodeAt(0) === constants.X_CHAR ? constants.SvgAttributeFlag : constants.AttributeFlag\n            ),\n            hole: t__namespace.stringLiteral(expression.name),\n            name: t__namespace.stringLiteral(name)\n          });\n          continue;\n        }\n      }\n      if (attribute && \"value\" in attribute && attribute.value && t__namespace.isJSXAttribute(attribute)) {\n        newAttributes.push(attribute);\n      }\n    }\n    node.openingElement.attributes = newAttributes;\n  }\n  const newChildren = [];\n  for (let i = 0, j = node.children.length || 0, k = 0; i < j; ++i) {\n    const child = node.children[i];\n    if (t__namespace.isJSXExpressionContainer(child) && t__namespace.isIdentifier(child.expression) && holes.includes(child.expression.name)) {\n      current.edits.push({\n        type: t__namespace.numericLiteral(constants.ChildFlag),\n        hole: t__namespace.stringLiteral(child.expression.name),\n        index: t__namespace.numericLiteral(i),\n        name: void 0,\n        listener: void 0,\n        value: void 0\n      });\n      continue;\n    }\n    if (t__namespace.isJSXText(child) && (typeof child.value === \"string\" || typeof child.value === \"number\" || typeof child.value === \"bigint\")) {\n      const value = String(child.value);\n      if (value.trim() === \"\")\n        continue;\n      newChildren.push(t__namespace.jsxText(value));\n      k++;\n      continue;\n    }\n    if (t__namespace.isJSXElement(child)) {\n      newChildren.push(renderToTemplate(child, edits, path.concat(k++), holes));\n    }\n  }\n  node.children = newChildren;\n  if (current.inits.length || current.edits.length) {\n    edits.push(current);\n  }\n  return node;\n};\n\nconst chainOrLogic = (...binaryExpressions) => {\n  if (binaryExpressions.length === 1) {\n    return binaryExpressions[0];\n  }\n  const [first, ...rest] = binaryExpressions;\n  return t__namespace.logicalExpression(\n    \"||\",\n    first,\n    chainOrLogic(...rest)\n  );\n};\n\nconst optimize = (path) => {\n  if (t__namespace.isIdentifier(path.node.callee, { name: \"block\" })) {\n    const blockFunction = path.scope.getBinding(path.node.callee.name);\n    if (!blockFunction)\n      return;\n    const importSource = blockFunction.path.parent;\n    if (!t__namespace.isVariableDeclarator(path.parentPath.node) || !t__namespace.isImportDeclaration(importSource) || !importSource.source.value.includes(\"million\")) {\n      return;\n    }\n    let [fn, _unwrap, shouldUpdate] = path.node.arguments;\n    if (!fn)\n      return;\n    const [props] = fn.params;\n    if (t__namespace.isArrowFunctionExpression(fn) && t__namespace.isJSXElement(fn.body)) {\n      const edits = [];\n      const holes = t__namespace.isObjectPattern(props) ? Object.keys(props.properties).map((key) => {\n        return props.properties[key].key.name;\n      }) : [];\n      const template = renderToTemplate(fn.body, edits, [], holes);\n      const paths = [];\n      let maxPathLength = 0;\n      for (let i = 0, j = edits.length; i < j; ++i) {\n        const path2 = edits[i]?.path || [];\n        if (path2.length > maxPathLength)\n          maxPathLength = path2.length;\n        paths.push(path2);\n      }\n      const { declarators, accessedIds } = hoistElements(\n        paths,\n        path,\n        importSource\n      );\n      const editsArray = t__namespace.arrayExpression(\n        edits.map((edit) => {\n          const editsProperties = [];\n          const initsProperties = [];\n          for (let i = 0, j = edit.edits.length; i < j; ++i) {\n            const { type, name, hole, listener, value, index } = edit.edits[i];\n            editsProperties.push(\n              t__namespace.objectExpression([\n                t__namespace.objectProperty(t__namespace.identifier(\"t\"), type),\n                t__namespace.objectProperty(t__namespace.identifier(\"n\"), name ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"v\"), value ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"h\"), hole ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"i\"), index ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(\n                  t__namespace.identifier(\"l\"),\n                  listener ?? t__namespace.nullLiteral()\n                ),\n                t__namespace.objectProperty(t__namespace.identifier(\"p\"), value ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"b\"), value ?? t__namespace.nullLiteral())\n              ])\n            );\n          }\n          for (let i = 0, j = edit.inits.length; i < j; ++i) {\n            const { type, name, hole, listener, value, index } = edit.inits[i];\n            initsProperties.push(\n              t__namespace.objectExpression([\n                t__namespace.objectProperty(t__namespace.identifier(\"t\"), type),\n                t__namespace.objectProperty(t__namespace.identifier(\"n\"), name ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"v\"), value ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"h\"), hole ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"i\"), index ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(\n                  t__namespace.identifier(\"l\"),\n                  listener ?? t__namespace.nullLiteral()\n                ),\n                t__namespace.objectProperty(t__namespace.identifier(\"p\"), value ?? t__namespace.nullLiteral()),\n                t__namespace.objectProperty(t__namespace.identifier(\"b\"), value ?? t__namespace.nullLiteral())\n              ])\n            );\n          }\n          return t__namespace.objectExpression([\n            t__namespace.objectProperty(t__namespace.identifier(\"p\"), t__namespace.nullLiteral()),\n            t__namespace.objectProperty(\n              t__namespace.identifier(\"e\"),\n              t__namespace.arrayExpression(editsProperties)\n            ),\n            t__namespace.objectProperty(\n              t__namespace.identifier(\"i\"),\n              initsProperties.length ? t__namespace.arrayExpression(initsProperties) : t__namespace.nullLiteral()\n            )\n          ]);\n        })\n      );\n      const stringToDOM = lib.addNamed(\n        path,\n        \"stringToDOM\",\n        importSource.source.value,\n        {\n          nameHint: \"stringToDOM$\"\n        }\n      );\n      const shouldUpdateExists = t__namespace.isIdentifier(shouldUpdate) && shouldUpdate.name !== \"undefined\" || t__namespace.isArrowFunctionExpression(shouldUpdate);\n      if (!shouldUpdateExists && props && !t__namespace.isIdentifier(props)) {\n        const { properties } = props;\n        shouldUpdate = t__namespace.arrowFunctionExpression(\n          [t__namespace.identifier(\"oldProps\"), t__namespace.identifier(\"newProps\")],\n          chainOrLogic(\n            ...properties.filter((property) => t__namespace.isObjectProperty(property)).map((property) => {\n              const key = property.key;\n              return t__namespace.binaryExpression(\n                \"!==\",\n                t__namespace.optionalMemberExpression(\n                  t__namespace.identifier(\"oldProps\"),\n                  key,\n                  false,\n                  true\n                ),\n                t__namespace.optionalMemberExpression(\n                  t__namespace.identifier(\"newProps\"),\n                  key,\n                  false,\n                  true\n                )\n              );\n            })\n          )\n        );\n      }\n      const domVariable = path.scope.generateUidIdentifier(\"dom$\");\n      const editsVariable = path.scope.generateUidIdentifier(\"edits$\");\n      const shouldUpdateVariable = path.scope.generateUidIdentifier(\"shouldUpdate$\");\n      const getElementsVariable = path.scope.generateUidIdentifier(\"getElements$\");\n      const variables = t__namespace.variableDeclaration(\"const\", [\n        t__namespace.variableDeclarator(\n          domVariable,\n          t__namespace.callExpression(stringToDOM, [\n            t__namespace.templateLiteral(\n              [\n                t__namespace.templateElement({\n                  raw: renderToString(template)\n                })\n              ],\n              []\n            )\n          ])\n        ),\n        t__namespace.variableDeclarator(editsVariable, editsArray),\n        t__namespace.variableDeclarator(\n          shouldUpdateVariable,\n          shouldUpdateExists ? t__namespace.nullLiteral() : shouldUpdate\n        ),\n        t__namespace.variableDeclarator(\n          getElementsVariable,\n          declarators.length ? t__namespace.arrowFunctionExpression(\n            [t__namespace.identifier(\"root\")],\n            t__namespace.blockStatement([\n              t__namespace.variableDeclaration(\"const\", declarators),\n              t__namespace.returnStatement(t__namespace.arrayExpression(accessedIds))\n            ])\n          ) : t__namespace.nullLiteral()\n        )\n      ]);\n      const BlockClass = lib.addNamed(path, \"Block\", importSource.source.value, {\n        nameHint: \"Block$\"\n      });\n      const blockFactory = t__namespace.arrowFunctionExpression(\n        [\n          t__namespace.identifier(\"props\"),\n          t__namespace.identifier(\"key\"),\n          t__namespace.identifier(\"shouldUpdate\")\n        ],\n        t__namespace.blockStatement([\n          t__namespace.returnStatement(\n            t__namespace.newExpression(BlockClass, [\n              domVariable,\n              editsVariable,\n              t__namespace.identifier(\"props\"),\n              t__namespace.logicalExpression(\n                \"??\",\n                t__namespace.identifier(\"key\"),\n                t__namespace.memberExpression(t__namespace.identifier(\"props\"), t__namespace.identifier(\"key\"))\n              ),\n              t__namespace.logicalExpression(\n                \"??\",\n                t__namespace.identifier(\"shouldUpdate\"),\n                shouldUpdateVariable\n              ),\n              getElementsVariable\n            ])\n          )\n        ])\n      );\n      path.parentPath.parentPath?.insertBefore(variables);\n      path.replaceWith(t__namespace.returnStatement(blockFactory));\n    }\n  }\n};\nconst hoistElements = (paths, path, importSource) => {\n  var _a;\n  const createTreeNode = () => ({\n    children: [],\n    path: void 0\n  });\n  const createPrunedNode = (index, parent) => ({\n    index,\n    parent,\n    path: void 0,\n    child: void 0,\n    next: void 0,\n    prev: void 0\n  });\n  const tree = createTreeNode();\n  for (let i = 0, j = paths.length; i < j; i++) {\n    const path2 = paths[i];\n    let prev = tree;\n    for (let k = 0, l = path2.length; k < l; k++) {\n      const index = path2[k];\n      (_a = prev.children)[index] || (_a[index] = createTreeNode());\n      prev = prev.children[index];\n      if (k === l - 1) {\n        prev.path || (prev.path = []);\n        prev.path.push(i);\n      }\n    }\n  }\n  const prune = (node, parent) => {\n    let prev = parent;\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const treeNode = node.children[i];\n      const current = createPrunedNode(i, parent);\n      if (prev === parent) {\n        prev.child = current;\n      } else {\n        current.prev = prev;\n        prev.next = current;\n      }\n      prev = current;\n      if (treeNode) {\n        prev.path = treeNode.path;\n        prune(treeNode, current);\n      }\n    }\n  };\n  const root = createPrunedNode(0);\n  prune(tree, root);\n  const getId = () => path.scope.generateUidIdentifier(\"el$\");\n  const firstChild = lib.addNamed(path, \"firstChild$\", importSource.source.value);\n  const nextSibling = lib.addNamed(path, \"nextSibling$\", importSource.source.value);\n  const declarators = [];\n  const accessedIds = Array(paths.length).fill(\n    t__namespace.identifier(\"root\")\n  );\n  const traverse = (node, prev, isParent) => {\n    if (isParent) {\n      prev = t__namespace.callExpression(\n        t__namespace.memberExpression(firstChild, t__namespace.identifier(\"call\")),\n        [prev]\n      );\n      for (let i = 0, j = node.index; i < j; i++) {\n        prev = t__namespace.callExpression(\n          t__namespace.memberExpression(nextSibling, t__namespace.identifier(\"call\")),\n          [prev]\n        );\n      }\n    } else {\n      for (let i = 0, j = node.index - (node.prev?.index ?? 0); i < j; i++) {\n        prev = t__namespace.callExpression(\n          t__namespace.memberExpression(nextSibling, t__namespace.identifier(\"call\")),\n          [prev]\n        );\n      }\n    }\n    if (node.child && node.next) {\n      const id = getId();\n      declarators.push(t__namespace.variableDeclarator(id, prev));\n      prev = id;\n      if (node.path !== void 0) {\n        for (let i = 0, j = node.path.length; i < j; ++i) {\n          accessedIds[node.path[i]] = id;\n        }\n      }\n    } else if (node.path !== void 0) {\n      const id = getId();\n      declarators.push(t__namespace.variableDeclarator(id, prev));\n      for (let i = 0, j = node.path.length; i < j; ++i) {\n        accessedIds[node.path[i]] = id;\n      }\n      prev = id;\n    }\n    if (node.next) {\n      traverse(node.next, prev, false);\n    }\n    if (node.child) {\n      traverse(node.child, prev, true);\n    }\n  };\n  if (root.child) {\n    traverse(root.child, t__namespace.identifier(\"root\"), true);\n  }\n  return {\n    declarators,\n    accessedIds\n  };\n};\n\nconst transformReact = (options = {}) => (path) => {\n  options._defer = [];\n  if (t__namespace.isIdentifier(path.node.callee, { name: \"block\" })) {\n    const blockFunction = path.scope.getBinding(path.node.callee.name);\n    if (!blockFunction)\n      return;\n    const importSource = blockFunction.path.parent;\n    if (!t__namespace.isVariableDeclarator(path.parentPath.node) || !t__namespace.isImportDeclaration(importSource) || !importSource.source.value.includes(\"million\")) {\n      return;\n    }\n    if (importSource.source.value === \"million\") {\n      importSource.source.value = \"million/react\";\n    }\n    if ((options.mode === \"next\" || options.mode === \"react-server\") && importSource.source.value === \"million/react\") {\n      importSource.source.value = \"million/react-server\";\n    }\n    const componentId = path.node.arguments[0];\n    if (!t__namespace.isIdentifier(componentId)) {\n      throw BlockError(\n        \"Found unsupported argument for block. Make sure blocks consume the reference to a component function, not the direct declaration.\",\n        path\n      );\n    }\n    const componentBinding = path.scope.getBinding(componentId.name);\n    const component = t__namespace.cloneNode(componentBinding.path.node);\n    if (t__namespace.isFunctionDeclaration(component)) {\n      handleComponent(\n        path,\n        component.body,\n        componentBinding,\n        component,\n        importSource.source.value\n      );\n    } else if (t__namespace.isVariableDeclarator(component) && t__namespace.isArrowFunctionExpression(component.init)) {\n      handleComponent(\n        path,\n        component.init.body,\n        componentBinding,\n        component,\n        importSource.source.value\n      );\n    } else {\n      throw BlockError(\n        \"You can only use block() with a function declaration or arrow function.\",\n        path\n      );\n    }\n  }\n};\nconst handleComponent = (path, componentFunction, componentBinding, component, sourceName) => {\n  if (!t__namespace.isBlockStatement(componentFunction)) {\n    throw BlockError(\n      \"Expected a block statement for the component function. Make sure you are using a function declaration or arrow function.\",\n      path\n    );\n  }\n  const bodyLength = componentFunction.body.length;\n  const correctSubPath = t__namespace.isVariableDeclarator(component) ? \"init.body.body\" : \"body.body\";\n  for (let i = 0; i < bodyLength; ++i) {\n    const node = componentFunction.body[i];\n    if (!t__namespace.isIfStatement(node))\n      continue;\n    if (t__namespace.isReturnStatement(node.consequent) || t__namespace.isBlockStatement(node.consequent) && node.consequent.body.some((n) => t__namespace.isReturnStatement(n))) {\n      const ifStatementPath = componentBinding.path.get(\n        `${correctSubPath}.${i}.consequent`\n      );\n      throw BlockError(\n        \"You cannot use multiple returns in blocks. There can only be one return statement at the end of the block.\",\n        path,\n        ifStatementPath\n      );\n    }\n  }\n  const view = componentFunction.body[bodyLength - 1];\n  if (t__namespace.isReturnStatement(view) && t__namespace.isJSXElement(view.argument)) {\n    const returnJsxPath = componentBinding.path.get(\n      `${correctSubPath}.${bodyLength - 1}.argument`\n    );\n    const jsx = view.argument;\n    const blockVariable = path.scope.generateUidIdentifier(\"block$\");\n    const componentVariable = path.scope.generateUidIdentifier(\"component$\");\n    const dynamics = getDynamicsFromJSX(path, jsx, sourceName, returnJsxPath);\n    const forgettiCompatibleComponentName = t__namespace.identifier(\n      `useBlock${componentVariable.name}`\n    );\n    const blockFunction = t__namespace.functionDeclaration(\n      blockVariable,\n      [\n        t__namespace.objectPattern(\n          dynamics.data.map(({ id }) => t__namespace.objectProperty(id, id))\n        )\n      ],\n      t__namespace.blockStatement([view])\n    );\n    componentFunction.body[bodyLength - 1] = t__namespace.returnStatement(\n      t__namespace.callExpression(forgettiCompatibleComponentName, [\n        t__namespace.objectExpression(\n          dynamics.data.map(\n            ({ id, value }) => t__namespace.objectProperty(id, value || id)\n          )\n        )\n      ])\n    );\n    for (let i = 0; i < dynamics.deferred.length; ++i) {\n      dynamics.deferred[i]?.();\n    }\n    const blockComponent = path.parentPath.node;\n    const temp = blockComponent.id;\n    blockComponent.id = forgettiCompatibleComponentName;\n    component.id = componentVariable;\n    path.node.arguments[0] = blockVariable;\n    const parentPath = path.parentPath.parentPath;\n    if (t__namespace.isFunctionDeclaration(component)) {\n      parentPath?.insertBefore(component);\n    } else {\n      parentPath?.insertBefore(t__namespace.variableDeclaration(\"const\", [component]));\n    }\n    parentPath?.insertBefore(blockFunction);\n    parentPath?.insertBefore(\n      t__namespace.variableDeclaration(\"const\", [\n        t__namespace.variableDeclarator(temp, component.id)\n      ])\n    );\n  }\n};\nconst getDynamicsFromJSX = (path, jsx, sourceName, returnJsxPath, dynamics = { data: [], cache: /* @__PURE__ */ new Set(), deferred: [] }) => {\n  const createDynamic = (identifier, expression, callback) => {\n    const id = identifier || path.scope.generateUidIdentifier(\"$\");\n    if (!dynamics.cache.has(id.name)) {\n      dynamics.data.push({ value: expression, id });\n      dynamics.cache.add(id.name);\n    }\n    dynamics.deferred.push(callback);\n    return id;\n  };\n  const type = jsx.openingElement.name;\n  if (t__namespace.isJSXIdentifier(type)) {\n    const componentBinding = path.scope.getBinding(type.name);\n    const component = componentBinding?.path.node;\n    if (t__namespace.isFunctionDeclaration(component) || t__namespace.isVariableDeclarator(component) || type.name.startsWith(type.name[0].toUpperCase())) {\n      const createElement = lib.addNamed(path, \"createElement\", \"react\", {\n        nameHint: \"createElement$\"\n      });\n      const objectProperties = [];\n      for (let i = 0, j = jsx.openingElement.attributes.length; i < j; i++) {\n        const attribute = jsx.openingElement.attributes[i];\n        if (t__namespace.isJSXAttribute(attribute) && t__namespace.isJSXExpressionContainer(attribute.value)) {\n          const { expression } = attribute.value;\n          const name = attribute.name;\n          if (t__namespace.isIdentifier(expression)) {\n            const id2 = createDynamic(expression, null, null);\n            if (t__namespace.isJSXIdentifier(name)) {\n              objectProperties.push(\n                t__namespace.objectProperty(t__namespace.identifier(name.name), id2)\n              );\n            }\n          } else if (t__namespace.isExpression(expression)) {\n            const id2 = createDynamic(null, expression, () => {\n              attribute.value.expression = id2;\n            });\n            if (t__namespace.isJSXIdentifier(name)) {\n              objectProperties.push(\n                t__namespace.objectProperty(t__namespace.identifier(name.name), id2)\n              );\n            }\n          }\n        }\n        if (t__namespace.isJSXSpreadAttribute(attribute)) {\n          const spreadPath = returnJsxPath.get(\n            `openingElement.attributes.${i}.argument`\n          );\n          throw BlockError(\n            \"Spread attributes aren't supported.\",\n            path,\n            spreadPath\n          );\n        }\n      }\n      BlockWarning(\n        \"Deoptimization Warning: Components will cause degraded performnace. Ideally, you should use DOM elements instead.\",\n        returnJsxPath.openingElement\n      );\n      const renderReactScope = lib.addNamed(path, \"renderReactScope\", sourceName, {\n        nameHint: \"renderReactScope$\"\n      });\n      const nestedRender = t__namespace.callExpression(renderReactScope, [\n        t__namespace.callExpression(createElement, [\n          t__namespace.identifier(type.name),\n          t__namespace.objectExpression(objectProperties)\n        ])\n      ]);\n      const id = createDynamic(null, nestedRender, null);\n      jsx.openingElement.name = t__namespace.jsxIdentifier(id.name);\n      if (jsx.closingElement) {\n        jsx.closingElement.name = t__namespace.jsxIdentifier(id.name);\n      }\n    }\n  }\n  for (let i = 0, j = jsx.openingElement.attributes.length; i < j; i++) {\n    const attribute = jsx.openingElement.attributes[i];\n    if (t__namespace.isJSXAttribute(attribute) && t__namespace.isJSXExpressionContainer(attribute.value)) {\n      const { expression } = attribute.value;\n      const { leadingComments } = expression;\n      if (leadingComments?.length && leadingComments[0]?.value.trim() === \"@once\") {\n        continue;\n      }\n      if (t__namespace.isIdentifier(expression)) {\n        createDynamic(expression, null, null);\n      } else if (t__namespace.isExpression(expression)) {\n        const id = createDynamic(null, expression, () => {\n          attribute.value.expression = id;\n        });\n      }\n    }\n    if (t__namespace.isJSXSpreadAttribute(attribute)) {\n      const spreadPath = returnJsxPath.get(\n        `openingElement.attributes.${i}.argument`\n      );\n      throw BlockError(\"Spread attributes aren't supported.\", path, spreadPath);\n    }\n  }\n  for (let i = 0, j = jsx.children.length; i < j; i++) {\n    const child = jsx.children[i];\n    if (t__namespace.isJSXExpressionContainer(child)) {\n      const { expression } = child;\n      const { leadingComments } = expression;\n      if (leadingComments?.length && leadingComments[0]?.value.trim() === \"@once\") {\n        continue;\n      }\n      if (t__namespace.isIdentifier(expression)) {\n        createDynamic(expression, null, null);\n      } else if (t__namespace.isJSXElement(expression)) {\n        getDynamicsFromJSX(\n          path,\n          expression,\n          sourceName,\n          returnJsxPath.get(`children.${i}`),\n          dynamics\n        );\n        jsx.children[i] = expression;\n      } else if (t__namespace.isExpression(expression)) {\n        if (t__namespace.isCallExpression(expression) && t__namespace.isMemberExpression(expression.callee) && t__namespace.isIdentifier(expression.callee.property, { name: \"map\" })) {\n          const For = lib.addNamed(path, \"For\", sourceName, {\n            nameHint: \"For$\"\n          });\n          const jsxFor = t__namespace.jsxIdentifier(For.name);\n          const newJsxArrayIterator = t__namespace.jsxElement(\n            t__namespace.jsxOpeningElement(jsxFor, [\n              t__namespace.jsxAttribute(\n                t__namespace.jsxIdentifier(\"each\"),\n                t__namespace.jsxExpressionContainer(expression.callee.object)\n              )\n            ]),\n            t__namespace.jsxClosingElement(jsxFor),\n            [t__namespace.jsxExpressionContainer(expression.arguments[0])]\n          );\n          const expressionPath = returnJsxPath.get(`children.${i}.expression`);\n          BlockWarning(\n            \"Deoptimization Warning: Array.map() will degrade performance. We recommend removing the block on the current component and using a <For /> component instead.\",\n            expressionPath\n          );\n          const renderReactScope = lib.addNamed(\n            path,\n            \"renderReactScope\",\n            sourceName,\n            {\n              nameHint: \"renderReactScope$\"\n            }\n          );\n          const nestedRender = t__namespace.callExpression(renderReactScope, [\n            newJsxArrayIterator\n          ]);\n          const id2 = createDynamic(null, nestedRender, () => {\n            jsx.children[i] = t__namespace.jsxExpressionContainer(id2);\n          });\n          continue;\n        }\n        if (t__namespace.isConditionalExpression(expression) || t__namespace.isLogicalExpression(expression)) {\n          const expressionPath = returnJsxPath.get(`children.${i}.expression`);\n          BlockWarning(\n            \"Deoptimization Warning: Conditional expressions will degrade performance. We recommend using deterministic returns instead.\",\n            expressionPath\n          );\n          const renderReactScope = lib.addNamed(\n            path,\n            \"renderReactScope\",\n            sourceName,\n            {\n              nameHint: \"renderReactScope$\"\n            }\n          );\n          const id2 = createDynamic(\n            null,\n            t__namespace.callExpression(renderReactScope, [expression]),\n            () => {\n              jsx.children[i] = t__namespace.jsxExpressionContainer(id2);\n            }\n          );\n          continue;\n        }\n        const id = createDynamic(null, expression, () => {\n          child.expression = id;\n        });\n      }\n    } else if (t__namespace.isJSXElement(child)) {\n      getDynamicsFromJSX(\n        path,\n        child,\n        sourceName,\n        returnJsxPath.get(`children.${i}`),\n        dynamics\n      );\n    }\n  }\n  return dynamics;\n};\nconst BlockError = (message, path, localPath) => {\n  if (t__namespace.isVariableDeclarator(path.parentPath.node) && t__namespace.isIdentifier(path.node.arguments[0])) {\n    path.parentPath.node.init = path.node.arguments[0];\n  }\n  return (localPath ?? path).buildCodeFrameError(message);\n};\nconst BlockWarning = (message, localPath) => {\n  const err = localPath.buildCodeFrameError(message);\n  console.warn(err.message);\n};\n\nconst babelPlugin = declare_1((api, options) => {\n  api.assertVersion(7);\n  const callExpressionHandler = options.mode === \"optimize\" ? optimize : transformReact(options);\n  return {\n    name: \"million\",\n    visitor: {\n      CallExpression(path) {\n        callExpressionHandler(path);\n      }\n    }\n  };\n});\n\nconst unplugin = unplugin$1.createUnplugin((options) => {\n  return {\n    enforce: \"pre\",\n    name: \"million\",\n    transformInclude(id) {\n      return /\\.[jt]sx$/.test(id);\n    },\n    async transform(code, id) {\n      if (options?.ignoreFiles?.some((pattern) => id.match(pattern))) {\n        return code;\n      }\n      const plugins = [\"@babel/plugin-syntax-jsx\"];\n      if (id.endsWith(\".tsx\")) {\n        plugins.push([\"@babel/plugin-syntax-typescript\", { isTSX: true }]);\n      }\n      const result = await core.transformAsync(code, {\n        plugins: [...plugins, [babelPlugin, options]]\n      });\n      code = result?.code ?? code;\n      return code;\n    }\n  };\n});\nconst next = (nextConfig = {}) => {\n  return {\n    ...nextConfig,\n    webpack(config, options) {\n      config.plugins.unshift(unplugin.webpack({ mode: \"react-server\" }));\n      if (typeof nextConfig.webpack === \"function\") {\n        return nextConfig.webpack(config, options);\n      }\n      return config;\n    }\n  };\n};\nunplugin.next = next;\n\nexports.babelPlugin = babelPlugin;\nexports[\"default\"] = unplugin;\nexports.next = next;\nexports.unplugin = unplugin;\n"
  },
  {
    "path": "website/components/million-library/compiler.d.ts",
    "content": "import * as _unplugin from 'unplugin';\nimport * as _babel_core from '@babel/core';\nimport { NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\ndeclare const _default: (\n  api: object,\n  options: Record<string, any> | null | undefined,\n  dirname: string,\n) => {\n  name: string;\n  visitor: {\n    CallExpression(\n      this: _babel_core.PluginPass,\n      path: NodePath<t.CallExpression>,\n    ): void;\n  };\n};\n\ninterface UserOptions {\n  ignoreFiles?: string[];\n  memo?: boolean;\n  mode: 'react' | 'next' | 'react-server' | 'optimize';\n}\n\ndeclare const unplugin: _unplugin.UnpluginInstance<\n  UserOptions | undefined,\n  boolean\n>;\ndeclare const next: (nextConfig?: Record<string, any>) => {\n  webpack(config: Record<string, any>, options: Record<string, any>): any;\n};\n\nexport { _default as babelPlugin, unplugin as default, next, unplugin };\n"
  },
  {
    "path": "website/components/million-library/compiler.mjs",
    "content": "import { createUnplugin } from 'unplugin';\nimport { transformAsync } from '@babel/core';\nimport require$$0 from 'assert';\nimport * as t from '@babel/types';\nimport t__default from '@babel/types';\nimport { d as EventFlag, e as StyleAttributeFlag, f as X_CHAR, g as SvgAttributeFlag, A as AttributeFlag, C as ChildFlag } from './chunks/constants.mjs';\n\nvar lib$1 = {};\n\nObject.defineProperty(lib$1, \"__esModule\", {\n  value: true\n});\nvar declare_1 = lib$1.declare = declare;\nlib$1.declarePreset = void 0;\nconst apiPolyfills = {\n  assertVersion: api => range => {\n    throwVersionError(range, api.version);\n  },\n  targets: () => () => {\n    return {};\n  },\n  assumption: () => () => {\n    return undefined;\n  }\n};\nfunction declare(builder) {\n  return (api, options, dirname) => {\n    var _clonedApi2;\n    let clonedApi;\n    for (const name of Object.keys(apiPolyfills)) {\n      var _clonedApi;\n      if (api[name]) continue;\n\n      clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api);\n      clonedApi[name] = apiPolyfills[name](clonedApi);\n    }\n\n    return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname);\n  };\n}\nconst declarePreset = declare;\nlib$1.declarePreset = declarePreset;\nfunction copyApiObject(api) {\n  let proto = null;\n  if (typeof api.version === \"string\" && /^7\\./.test(api.version)) {\n    proto = Object.getPrototypeOf(api);\n    if (proto && (!has(proto, \"version\") || !has(proto, \"transform\") || !has(proto, \"template\") || !has(proto, \"types\"))) {\n      proto = null;\n    }\n  }\n  return Object.assign({}, proto, api);\n}\nfunction has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction throwVersionError(range, version) {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n  const limit = Error.stackTraceLimit;\n  if (typeof limit === \"number\" && limit < 25) {\n    Error.stackTraceLimit = 25;\n  }\n  let err;\n  if (version.slice(0, 2) === \"7.\") {\n    err = new Error(`Requires Babel \"^7.0.0-beta.41\", but was loaded with \"${version}\". ` + `You'll need to update your @babel/core version.`);\n  } else {\n    err = new Error(`Requires Babel \"${range}\", but was loaded with \"${version}\". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` + `to see what is calling Babel.`);\n  }\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version,\n    range\n  });\n}\n\nvar lib = {};\n\nvar importInjector = {};\n\nvar importBuilder = {};\n\nObject.defineProperty(importBuilder, \"__esModule\", {\n  value: true\n});\nimportBuilder.default = void 0;\n\nvar _assert$1 = require$$0;\n\nvar _t$1 = t__default;\n\nconst {\n  callExpression,\n  cloneNode,\n  expressionStatement,\n  identifier,\n  importDeclaration,\n  importDefaultSpecifier,\n  importNamespaceSpecifier,\n  importSpecifier,\n  memberExpression,\n  stringLiteral,\n  variableDeclaration,\n  variableDeclarator\n} = _t$1;\n\nclass ImportBuilder {\n  constructor(importedSource, scope, hub) {\n    this._statements = [];\n    this._resultName = null;\n    this._importedSource = void 0;\n    this._scope = scope;\n    this._hub = hub;\n    this._importedSource = importedSource;\n  }\n\n  done() {\n    return {\n      statements: this._statements,\n      resultName: this._resultName\n    };\n  }\n\n  import() {\n    this._statements.push(importDeclaration([], stringLiteral(this._importedSource)));\n\n    return this;\n  }\n\n  require() {\n    this._statements.push(expressionStatement(callExpression(identifier(\"require\"), [stringLiteral(this._importedSource)])));\n\n    return this;\n  }\n\n  namespace(name = \"namespace\") {\n    const local = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importNamespaceSpecifier(local)];\n    this._resultName = cloneNode(local);\n    return this;\n  }\n\n  default(name) {\n    const id = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importDefaultSpecifier(id)];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  named(name, importName) {\n    if (importName === \"default\") return this.default(name);\n\n    const id = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n\n    _assert$1(statement.type === \"ImportDeclaration\");\n\n    _assert$1(statement.specifiers.length === 0);\n\n    statement.specifiers = [importSpecifier(id, identifier(importName))];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  var(name) {\n    const id = this._scope.generateUidIdentifier(name);\n\n    let statement = this._statements[this._statements.length - 1];\n\n    if (statement.type !== \"ExpressionStatement\") {\n      _assert$1(this._resultName);\n\n      statement = expressionStatement(this._resultName);\n\n      this._statements.push(statement);\n    }\n\n    this._statements[this._statements.length - 1] = variableDeclaration(\"var\", [variableDeclarator(id, statement.expression)]);\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  defaultInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireDefault\"));\n  }\n\n  wildcardInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireWildcard\"));\n  }\n\n  _interop(callee) {\n    const statement = this._statements[this._statements.length - 1];\n\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = callExpression(callee, [statement.expression]);\n    } else if (statement.type === \"VariableDeclaration\") {\n      _assert$1(statement.declarations.length === 1);\n\n      statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]);\n    } else {\n      _assert$1.fail(\"Unexpected type.\");\n    }\n\n    return this;\n  }\n\n  prop(name) {\n    const statement = this._statements[this._statements.length - 1];\n\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = memberExpression(statement.expression, identifier(name));\n    } else if (statement.type === \"VariableDeclaration\") {\n      _assert$1(statement.declarations.length === 1);\n\n      statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name));\n    } else {\n      _assert$1.fail(\"Unexpected type:\" + statement.type);\n    }\n\n    return this;\n  }\n\n  read(name) {\n    this._resultName = memberExpression(this._resultName, identifier(name));\n  }\n\n}\n\nimportBuilder.default = ImportBuilder;\n\nvar isModule$1 = {};\n\nObject.defineProperty(isModule$1, \"__esModule\", {\n  value: true\n});\nisModule$1.default = isModule;\n\nfunction isModule(path) {\n  const {\n    sourceType\n  } = path.node;\n\n  if (sourceType !== \"module\" && sourceType !== \"script\") {\n    throw path.buildCodeFrameError(`Unknown sourceType \"${sourceType}\", cannot transform.`);\n  }\n\n  return path.node.sourceType === \"module\";\n}\n\nObject.defineProperty(importInjector, \"__esModule\", {\n  value: true\n});\nimportInjector.default = void 0;\n\nvar _assert = require$$0;\n\nvar _t = t__default;\n\nvar _importBuilder = importBuilder;\n\nvar _isModule = isModule$1;\n\nconst {\n  numericLiteral,\n  sequenceExpression\n} = _t;\n\nclass ImportInjector {\n  constructor(path, importedSource, opts) {\n    this._defaultOpts = {\n      importedSource: null,\n      importedType: \"commonjs\",\n      importedInterop: \"babel\",\n      importingInterop: \"babel\",\n      ensureLiveReference: false,\n      ensureNoContext: false,\n      importPosition: \"before\"\n    };\n    const programPath = path.find(p => p.isProgram());\n    this._programPath = programPath;\n    this._programScope = programPath.scope;\n    this._hub = programPath.hub;\n    this._defaultOpts = this._applyDefaults(importedSource, opts, true);\n  }\n\n  addDefault(importedSourceIn, opts) {\n    return this.addNamed(\"default\", importedSourceIn, opts);\n  }\n\n  addNamed(importName, importedSourceIn, opts) {\n    _assert(typeof importName === \"string\");\n\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);\n  }\n\n  addNamespace(importedSourceIn, opts) {\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);\n  }\n\n  addSideEffect(importedSourceIn, opts) {\n    return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0);\n  }\n\n  _applyDefaults(importedSource, opts, isInit = false) {\n    let newOpts;\n\n    if (typeof importedSource === \"string\") {\n      newOpts = Object.assign({}, this._defaultOpts, {\n        importedSource\n      }, opts);\n    } else {\n      _assert(!opts, \"Unexpected secondary arguments.\");\n\n      newOpts = Object.assign({}, this._defaultOpts, importedSource);\n    }\n\n    if (!isInit && opts) {\n      if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;\n      if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;\n    }\n\n    return newOpts;\n  }\n\n  _generateImport(opts, importName) {\n    const isDefault = importName === \"default\";\n    const isNamed = !!importName && !isDefault;\n    const isNamespace = importName === null;\n    const {\n      importedSource,\n      importedType,\n      importedInterop,\n      importingInterop,\n      ensureLiveReference,\n      ensureNoContext,\n      nameHint,\n      importPosition,\n      blockHoist\n    } = opts;\n    let name = nameHint || importName;\n    const isMod = (0, _isModule.default)(this._programPath);\n    const isModuleForNode = isMod && importingInterop === \"node\";\n    const isModuleForBabel = isMod && importingInterop === \"babel\";\n\n    if (importPosition === \"after\" && !isMod) {\n      throw new Error(`\"importPosition\": \"after\" is only supported in modules`);\n    }\n\n    const builder = new _importBuilder.default(importedSource, this._programScope, this._hub);\n\n    if (importedType === \"es6\") {\n      if (!isModuleForNode && !isModuleForBabel) {\n        throw new Error(\"Cannot import an ES6 module from CommonJS\");\n      }\n\n      builder.import();\n\n      if (isNamespace) {\n        builder.namespace(nameHint || importedSource);\n      } else if (isDefault || isNamed) {\n        builder.named(name, importName);\n      }\n    } else if (importedType !== \"commonjs\") {\n      throw new Error(`Unexpected interopType \"${importedType}\"`);\n    } else if (importedInterop === \"babel\") {\n      if (isModuleForNode) {\n        name = name !== \"default\" ? name : importedSource;\n        const es6Default = `${importedSource}$es6Default`;\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(es6Default).var(name || importedSource).wildcardInterop();\n        } else if (isDefault) {\n          if (ensureLiveReference) {\n            builder.default(es6Default).var(name || importedSource).defaultInterop().read(\"default\");\n          } else {\n            builder.default(es6Default).var(name).defaultInterop().prop(importName);\n          }\n        } else if (isNamed) {\n          builder.default(es6Default).read(importName);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource).wildcardInterop();\n        } else if ((isDefault || isNamed) && ensureLiveReference) {\n          if (isDefault) {\n            name = name !== \"default\" ? name : importedSource;\n            builder.var(name).read(importName);\n            builder.defaultInterop();\n          } else {\n            builder.var(importedSource).read(importName);\n          }\n        } else if (isDefault) {\n          builder.var(name).defaultInterop().prop(importName);\n        } else if (isNamed) {\n          builder.var(name).prop(importName);\n        }\n      }\n    } else if (importedInterop === \"compiled\") {\n      if (isModuleForNode) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault || isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.prop(importName).var(name);\n          }\n        }\n      }\n    } else if (importedInterop === \"uncompiled\") {\n      if (isDefault && ensureLiveReference) {\n        throw new Error(\"No live reference for commonjs default\");\n      }\n\n      if (isModuleForNode) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        builder.import();\n\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        builder.require();\n\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault) {\n          builder.var(name);\n        } else if (isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.var(name).prop(importName);\n          }\n        }\n      }\n    } else {\n      throw new Error(`Unknown importedInterop \"${importedInterop}\".`);\n    }\n\n    const {\n      statements,\n      resultName\n    } = builder.done();\n\n    this._insertStatements(statements, importPosition, blockHoist);\n\n    if ((isDefault || isNamed) && ensureNoContext && resultName.type !== \"Identifier\") {\n      return sequenceExpression([numericLiteral(0), resultName]);\n    }\n\n    return resultName;\n  }\n\n  _insertStatements(statements, importPosition = \"before\", blockHoist = 3) {\n    const body = this._programPath.get(\"body\");\n\n    if (importPosition === \"after\") {\n      for (let i = body.length - 1; i >= 0; i--) {\n        if (body[i].isImportDeclaration()) {\n          body[i].insertAfter(statements);\n          return;\n        }\n      }\n    } else {\n      statements.forEach(node => {\n        node._blockHoist = blockHoist;\n      });\n      const targetPath = body.find(p => {\n        const val = p.node._blockHoist;\n        return Number.isFinite(val) && val < 4;\n      });\n\n      if (targetPath) {\n        targetPath.insertBefore(statements);\n        return;\n      }\n    }\n\n    this._programPath.unshiftContainer(\"body\", statements);\n  }\n\n}\n\nimportInjector.default = ImportInjector;\n\n(function (exports) {\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\tObject.defineProperty(exports, \"ImportInjector\", {\n\t  enumerable: true,\n\t  get: function () {\n\t    return _importInjector.default;\n\t  }\n\t});\n\texports.addDefault = addDefault;\n\texports.addNamed = addNamed;\n\texports.addNamespace = addNamespace;\n\texports.addSideEffect = addSideEffect;\n\tObject.defineProperty(exports, \"isModule\", {\n\t  enumerable: true,\n\t  get: function () {\n\t    return _isModule.default;\n\t  }\n\t});\n\n\tvar _importInjector = importInjector;\n\n\tvar _isModule = isModule$1;\n\n\tfunction addDefault(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addDefault(importedSource, opts);\n\t}\n\n\tfunction addNamed(path, name, importedSource, opts) {\n\t  return new _importInjector.default(path).addNamed(name, importedSource, opts);\n\t}\n\n\tfunction addNamespace(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addNamespace(importedSource, opts);\n\t}\n\n\tfunction addSideEffect(path, importedSource, opts) {\n\t  return new _importInjector.default(path).addSideEffect(importedSource, opts);\n\t}\n} (lib));\n\nconst renderToString = (node) => {\n  const type = node.openingElement.name;\n  const attributes = node.openingElement.attributes;\n  let html = `<${type.name}`;\n  for (let i = 0, j = attributes.length; i < j; i++) {\n    const attribute = attributes[i];\n    if (!t.isJSXSpreadAttribute(attribute) && attribute?.value && t.isJSXIdentifier(attribute.name) && \"value\" in attribute.value) {\n      const { name } = attribute.name;\n      const { value } = attribute.value;\n      html += ` ${name}${value ? `=\"${value}\"` : \"\"}`;\n    }\n  }\n  if (node.selfClosing) {\n    html += ` />`;\n    return html;\n  }\n  html += \">\";\n  if (node.children.length) {\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const child = node.children[i];\n      if (t.isJSXText(child)) {\n        html += child.value.trim();\n      } else if (t.isJSXElement(child)) {\n        html += renderToString(child);\n      } else if (t.isJSXExpressionContainer(child)) {\n        if (t.isStringLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t.isNumericLiteral(child.expression)) {\n          html += child.expression.value;\n        } else if (t.isJSXElement(child.expression)) {\n          html += renderToString(child.expression);\n        }\n      }\n    }\n  }\n  html += `</${type.name}>`;\n  return html;\n};\nconst renderToTemplate = (node, edits, path = [], holes = []) => {\n  const attributesLength = node.openingElement.attributes.length;\n  const current = {\n    path,\n    edits: [],\n    inits: []\n  };\n  if (attributesLength) {\n    const newAttributes = [];\n    for (let i = 0; i < attributesLength; ++i) {\n      const attribute = node.openingElement.attributes[i];\n      if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && attribute.value) {\n        const name = attribute.name.name;\n        if (name === \"key\" || name === \"ref\" || name === \"children\") {\n          continue;\n        }\n        if (name === \"className\")\n          attribute.name.name = \"class\";\n        if (name === \"htmlFor\")\n          attribute.name.name = \"for\";\n        if (name.startsWith(\"on\")) {\n          if (!t.isJSXExpressionContainer(attribute.value))\n            continue;\n          const { expression } = attribute.value;\n          if (!t.isIdentifier(expression) && !t.isArrowFunctionExpression(expression)) {\n            continue;\n          }\n          const isDynamicListener = t.isIdentifier(expression) && holes.includes(expression.name);\n          const event = name.toLowerCase().slice(2);\n          if (isDynamicListener) {\n            current.edits.push({\n              type: t.numericLiteral(EventFlag),\n              name: t.stringLiteral(event),\n              hole: t.stringLiteral(expression.name)\n            });\n          } else {\n            current.inits.push({\n              type: t.numericLiteral(EventFlag),\n              listener: expression,\n              name: t.stringLiteral(event)\n            });\n          }\n          continue;\n        }\n        if (name === \"style\") {\n          if (!t.isJSXExpressionContainer(attribute.value))\n            continue;\n          const { expression } = attribute.value;\n          if (!t.isObjectExpression(expression))\n            continue;\n          let style = \"\";\n          for (let i2 = 0, j = expression.properties.length; i2 < j; ++i2) {\n            const property = expression.properties[i2];\n            if (!t.isObjectProperty(property) || !t.isIdentifier(property.key) || !t.isStringLiteral(property.value) && !t.isNumericLiteral(property.value))\n              continue;\n            if (!t.isIdentifier(property.key))\n              continue;\n            const value = property.value.extra?.raw || \"\";\n            style += `${property.key.name}:${String(value)};`;\n          }\n          attribute.value = t.stringLiteral(style);\n          continue;\n        }\n        if (t.isJSXExpressionContainer(attribute.value)) {\n          if (t.isStringLiteral(attribute.value.expression) || t.isNumericLiteral(attribute.value.expression)) {\n            newAttributes.push(\n              t.jsxAttribute(\n                attribute.name,\n                t.stringLiteral(String(attribute.value.expression.value))\n              )\n            );\n            continue;\n          }\n          const { expression } = attribute.value;\n          current.edits.push({\n            type: t.numericLiteral(\n              name === \"style\" ? StyleAttributeFlag : name.charCodeAt(0) === X_CHAR ? SvgAttributeFlag : AttributeFlag\n            ),\n            hole: t.stringLiteral(expression.name),\n            name: t.stringLiteral(name)\n          });\n          continue;\n        }\n      }\n      if (attribute && \"value\" in attribute && attribute.value && t.isJSXAttribute(attribute)) {\n        newAttributes.push(attribute);\n      }\n    }\n    node.openingElement.attributes = newAttributes;\n  }\n  const newChildren = [];\n  for (let i = 0, j = node.children.length || 0, k = 0; i < j; ++i) {\n    const child = node.children[i];\n    if (t.isJSXExpressionContainer(child) && t.isIdentifier(child.expression) && holes.includes(child.expression.name)) {\n      current.edits.push({\n        type: t.numericLiteral(ChildFlag),\n        hole: t.stringLiteral(child.expression.name),\n        index: t.numericLiteral(i),\n        name: void 0,\n        listener: void 0,\n        value: void 0\n      });\n      continue;\n    }\n    if (t.isJSXText(child) && (typeof child.value === \"string\" || typeof child.value === \"number\" || typeof child.value === \"bigint\")) {\n      const value = String(child.value);\n      if (value.trim() === \"\")\n        continue;\n      newChildren.push(t.jsxText(value));\n      k++;\n      continue;\n    }\n    if (t.isJSXElement(child)) {\n      newChildren.push(renderToTemplate(child, edits, path.concat(k++), holes));\n    }\n  }\n  node.children = newChildren;\n  if (current.inits.length || current.edits.length) {\n    edits.push(current);\n  }\n  return node;\n};\n\nconst chainOrLogic = (...binaryExpressions) => {\n  if (binaryExpressions.length === 1) {\n    return binaryExpressions[0];\n  }\n  const [first, ...rest] = binaryExpressions;\n  return t.logicalExpression(\n    \"||\",\n    first,\n    chainOrLogic(...rest)\n  );\n};\n\nconst optimize = (path) => {\n  if (t.isIdentifier(path.node.callee, { name: \"block\" })) {\n    const blockFunction = path.scope.getBinding(path.node.callee.name);\n    if (!blockFunction)\n      return;\n    const importSource = blockFunction.path.parent;\n    if (!t.isVariableDeclarator(path.parentPath.node) || !t.isImportDeclaration(importSource) || !importSource.source.value.includes(\"million\")) {\n      return;\n    }\n    let [fn, _unwrap, shouldUpdate] = path.node.arguments;\n    if (!fn)\n      return;\n    const [props] = fn.params;\n    if (t.isArrowFunctionExpression(fn) && t.isJSXElement(fn.body)) {\n      const edits = [];\n      const holes = t.isObjectPattern(props) ? Object.keys(props.properties).map((key) => {\n        return props.properties[key].key.name;\n      }) : [];\n      const template = renderToTemplate(fn.body, edits, [], holes);\n      const paths = [];\n      let maxPathLength = 0;\n      for (let i = 0, j = edits.length; i < j; ++i) {\n        const path2 = edits[i]?.path || [];\n        if (path2.length > maxPathLength)\n          maxPathLength = path2.length;\n        paths.push(path2);\n      }\n      const { declarators, accessedIds } = hoistElements(\n        paths,\n        path,\n        importSource\n      );\n      const editsArray = t.arrayExpression(\n        edits.map((edit) => {\n          const editsProperties = [];\n          const initsProperties = [];\n          for (let i = 0, j = edit.edits.length; i < j; ++i) {\n            const { type, name, hole, listener, value, index } = edit.edits[i];\n            editsProperties.push(\n              t.objectExpression([\n                t.objectProperty(t.identifier(\"t\"), type),\n                t.objectProperty(t.identifier(\"n\"), name ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"v\"), value ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"h\"), hole ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"i\"), index ?? t.nullLiteral()),\n                t.objectProperty(\n                  t.identifier(\"l\"),\n                  listener ?? t.nullLiteral()\n                ),\n                t.objectProperty(t.identifier(\"p\"), value ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"b\"), value ?? t.nullLiteral())\n              ])\n            );\n          }\n          for (let i = 0, j = edit.inits.length; i < j; ++i) {\n            const { type, name, hole, listener, value, index } = edit.inits[i];\n            initsProperties.push(\n              t.objectExpression([\n                t.objectProperty(t.identifier(\"t\"), type),\n                t.objectProperty(t.identifier(\"n\"), name ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"v\"), value ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"h\"), hole ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"i\"), index ?? t.nullLiteral()),\n                t.objectProperty(\n                  t.identifier(\"l\"),\n                  listener ?? t.nullLiteral()\n                ),\n                t.objectProperty(t.identifier(\"p\"), value ?? t.nullLiteral()),\n                t.objectProperty(t.identifier(\"b\"), value ?? t.nullLiteral())\n              ])\n            );\n          }\n          return t.objectExpression([\n            t.objectProperty(t.identifier(\"p\"), t.nullLiteral()),\n            t.objectProperty(\n              t.identifier(\"e\"),\n              t.arrayExpression(editsProperties)\n            ),\n            t.objectProperty(\n              t.identifier(\"i\"),\n              initsProperties.length ? t.arrayExpression(initsProperties) : t.nullLiteral()\n            )\n          ]);\n        })\n      );\n      const stringToDOM = lib.addNamed(\n        path,\n        \"stringToDOM\",\n        importSource.source.value,\n        {\n          nameHint: \"stringToDOM$\"\n        }\n      );\n      const shouldUpdateExists = t.isIdentifier(shouldUpdate) && shouldUpdate.name !== \"undefined\" || t.isArrowFunctionExpression(shouldUpdate);\n      if (!shouldUpdateExists && props && !t.isIdentifier(props)) {\n        const { properties } = props;\n        shouldUpdate = t.arrowFunctionExpression(\n          [t.identifier(\"oldProps\"), t.identifier(\"newProps\")],\n          chainOrLogic(\n            ...properties.filter((property) => t.isObjectProperty(property)).map((property) => {\n              const key = property.key;\n              return t.binaryExpression(\n                \"!==\",\n                t.optionalMemberExpression(\n                  t.identifier(\"oldProps\"),\n                  key,\n                  false,\n                  true\n                ),\n                t.optionalMemberExpression(\n                  t.identifier(\"newProps\"),\n                  key,\n                  false,\n                  true\n                )\n              );\n            })\n          )\n        );\n      }\n      const domVariable = path.scope.generateUidIdentifier(\"dom$\");\n      const editsVariable = path.scope.generateUidIdentifier(\"edits$\");\n      const shouldUpdateVariable = path.scope.generateUidIdentifier(\"shouldUpdate$\");\n      const getElementsVariable = path.scope.generateUidIdentifier(\"getElements$\");\n      const variables = t.variableDeclaration(\"const\", [\n        t.variableDeclarator(\n          domVariable,\n          t.callExpression(stringToDOM, [\n            t.templateLiteral(\n              [\n                t.templateElement({\n                  raw: renderToString(template)\n                })\n              ],\n              []\n            )\n          ])\n        ),\n        t.variableDeclarator(editsVariable, editsArray),\n        t.variableDeclarator(\n          shouldUpdateVariable,\n          shouldUpdateExists ? t.nullLiteral() : shouldUpdate\n        ),\n        t.variableDeclarator(\n          getElementsVariable,\n          declarators.length ? t.arrowFunctionExpression(\n            [t.identifier(\"root\")],\n            t.blockStatement([\n              t.variableDeclaration(\"const\", declarators),\n              t.returnStatement(t.arrayExpression(accessedIds))\n            ])\n          ) : t.nullLiteral()\n        )\n      ]);\n      const BlockClass = lib.addNamed(path, \"Block\", importSource.source.value, {\n        nameHint: \"Block$\"\n      });\n      const blockFactory = t.arrowFunctionExpression(\n        [\n          t.identifier(\"props\"),\n          t.identifier(\"key\"),\n          t.identifier(\"shouldUpdate\")\n        ],\n        t.blockStatement([\n          t.returnStatement(\n            t.newExpression(BlockClass, [\n              domVariable,\n              editsVariable,\n              t.identifier(\"props\"),\n              t.logicalExpression(\n                \"??\",\n                t.identifier(\"key\"),\n                t.memberExpression(t.identifier(\"props\"), t.identifier(\"key\"))\n              ),\n              t.logicalExpression(\n                \"??\",\n                t.identifier(\"shouldUpdate\"),\n                shouldUpdateVariable\n              ),\n              getElementsVariable\n            ])\n          )\n        ])\n      );\n      path.parentPath.parentPath?.insertBefore(variables);\n      path.replaceWith(t.returnStatement(blockFactory));\n    }\n  }\n};\nconst hoistElements = (paths, path, importSource) => {\n  var _a;\n  const createTreeNode = () => ({\n    children: [],\n    path: void 0\n  });\n  const createPrunedNode = (index, parent) => ({\n    index,\n    parent,\n    path: void 0,\n    child: void 0,\n    next: void 0,\n    prev: void 0\n  });\n  const tree = createTreeNode();\n  for (let i = 0, j = paths.length; i < j; i++) {\n    const path2 = paths[i];\n    let prev = tree;\n    for (let k = 0, l = path2.length; k < l; k++) {\n      const index = path2[k];\n      (_a = prev.children)[index] || (_a[index] = createTreeNode());\n      prev = prev.children[index];\n      if (k === l - 1) {\n        prev.path || (prev.path = []);\n        prev.path.push(i);\n      }\n    }\n  }\n  const prune = (node, parent) => {\n    let prev = parent;\n    for (let i = 0, j = node.children.length; i < j; i++) {\n      const treeNode = node.children[i];\n      const current = createPrunedNode(i, parent);\n      if (prev === parent) {\n        prev.child = current;\n      } else {\n        current.prev = prev;\n        prev.next = current;\n      }\n      prev = current;\n      if (treeNode) {\n        prev.path = treeNode.path;\n        prune(treeNode, current);\n      }\n    }\n  };\n  const root = createPrunedNode(0);\n  prune(tree, root);\n  const getId = () => path.scope.generateUidIdentifier(\"el$\");\n  const firstChild = lib.addNamed(path, \"firstChild$\", importSource.source.value);\n  const nextSibling = lib.addNamed(path, \"nextSibling$\", importSource.source.value);\n  const declarators = [];\n  const accessedIds = Array(paths.length).fill(\n    t.identifier(\"root\")\n  );\n  const traverse = (node, prev, isParent) => {\n    if (isParent) {\n      prev = t.callExpression(\n        t.memberExpression(firstChild, t.identifier(\"call\")),\n        [prev]\n      );\n      for (let i = 0, j = node.index; i < j; i++) {\n        prev = t.callExpression(\n          t.memberExpression(nextSibling, t.identifier(\"call\")),\n          [prev]\n        );\n      }\n    } else {\n      for (let i = 0, j = node.index - (node.prev?.index ?? 0); i < j; i++) {\n        prev = t.callExpression(\n          t.memberExpression(nextSibling, t.identifier(\"call\")),\n          [prev]\n        );\n      }\n    }\n    if (node.child && node.next) {\n      const id = getId();\n      declarators.push(t.variableDeclarator(id, prev));\n      prev = id;\n      if (node.path !== void 0) {\n        for (let i = 0, j = node.path.length; i < j; ++i) {\n          accessedIds[node.path[i]] = id;\n        }\n      }\n    } else if (node.path !== void 0) {\n      const id = getId();\n      declarators.push(t.variableDeclarator(id, prev));\n      for (let i = 0, j = node.path.length; i < j; ++i) {\n        accessedIds[node.path[i]] = id;\n      }\n      prev = id;\n    }\n    if (node.next) {\n      traverse(node.next, prev, false);\n    }\n    if (node.child) {\n      traverse(node.child, prev, true);\n    }\n  };\n  if (root.child) {\n    traverse(root.child, t.identifier(\"root\"), true);\n  }\n  return {\n    declarators,\n    accessedIds\n  };\n};\n\nconst transformReact = (options = {}) => (path) => {\n  options._defer = [];\n  if (t.isIdentifier(path.node.callee, { name: \"block\" })) {\n    const blockFunction = path.scope.getBinding(path.node.callee.name);\n    if (!blockFunction)\n      return;\n    const importSource = blockFunction.path.parent;\n    if (!t.isVariableDeclarator(path.parentPath.node) || !t.isImportDeclaration(importSource) || !importSource.source.value.includes(\"million\")) {\n      return;\n    }\n    if (importSource.source.value === \"million\") {\n      importSource.source.value = \"million/react\";\n    }\n    if ((options.mode === \"next\" || options.mode === \"react-server\") && importSource.source.value === \"million/react\") {\n      importSource.source.value = \"million/react-server\";\n    }\n    const componentId = path.node.arguments[0];\n    if (!t.isIdentifier(componentId)) {\n      throw BlockError(\n        \"Found unsupported argument for block. Make sure blocks consume the reference to a component function, not the direct declaration.\",\n        path\n      );\n    }\n    const componentBinding = path.scope.getBinding(componentId.name);\n    const component = t.cloneNode(componentBinding.path.node);\n    if (t.isFunctionDeclaration(component)) {\n      handleComponent(\n        path,\n        component.body,\n        componentBinding,\n        component,\n        importSource.source.value\n      );\n    } else if (t.isVariableDeclarator(component) && t.isArrowFunctionExpression(component.init)) {\n      handleComponent(\n        path,\n        component.init.body,\n        componentBinding,\n        component,\n        importSource.source.value\n      );\n    } else {\n      throw BlockError(\n        \"You can only use block() with a function declaration or arrow function.\",\n        path\n      );\n    }\n  }\n};\nconst handleComponent = (path, componentFunction, componentBinding, component, sourceName) => {\n  if (!t.isBlockStatement(componentFunction)) {\n    throw BlockError(\n      \"Expected a block statement for the component function. Make sure you are using a function declaration or arrow function.\",\n      path\n    );\n  }\n  const bodyLength = componentFunction.body.length;\n  const correctSubPath = t.isVariableDeclarator(component) ? \"init.body.body\" : \"body.body\";\n  for (let i = 0; i < bodyLength; ++i) {\n    const node = componentFunction.body[i];\n    if (!t.isIfStatement(node))\n      continue;\n    if (t.isReturnStatement(node.consequent) || t.isBlockStatement(node.consequent) && node.consequent.body.some((n) => t.isReturnStatement(n))) {\n      const ifStatementPath = componentBinding.path.get(\n        `${correctSubPath}.${i}.consequent`\n      );\n      throw BlockError(\n        \"You cannot use multiple returns in blocks. There can only be one return statement at the end of the block.\",\n        path,\n        ifStatementPath\n      );\n    }\n  }\n  const view = componentFunction.body[bodyLength - 1];\n  if (t.isReturnStatement(view) && t.isJSXElement(view.argument)) {\n    const returnJsxPath = componentBinding.path.get(\n      `${correctSubPath}.${bodyLength - 1}.argument`\n    );\n    const jsx = view.argument;\n    const blockVariable = path.scope.generateUidIdentifier(\"block$\");\n    const componentVariable = path.scope.generateUidIdentifier(\"component$\");\n    const dynamics = getDynamicsFromJSX(path, jsx, sourceName, returnJsxPath);\n    const forgettiCompatibleComponentName = t.identifier(\n      `useBlock${componentVariable.name}`\n    );\n    const blockFunction = t.functionDeclaration(\n      blockVariable,\n      [\n        t.objectPattern(\n          dynamics.data.map(({ id }) => t.objectProperty(id, id))\n        )\n      ],\n      t.blockStatement([view])\n    );\n    componentFunction.body[bodyLength - 1] = t.returnStatement(\n      t.callExpression(forgettiCompatibleComponentName, [\n        t.objectExpression(\n          dynamics.data.map(\n            ({ id, value }) => t.objectProperty(id, value || id)\n          )\n        )\n      ])\n    );\n    for (let i = 0; i < dynamics.deferred.length; ++i) {\n      dynamics.deferred[i]?.();\n    }\n    const blockComponent = path.parentPath.node;\n    const temp = blockComponent.id;\n    blockComponent.id = forgettiCompatibleComponentName;\n    component.id = componentVariable;\n    path.node.arguments[0] = blockVariable;\n    const parentPath = path.parentPath.parentPath;\n    if (t.isFunctionDeclaration(component)) {\n      parentPath?.insertBefore(component);\n    } else {\n      parentPath?.insertBefore(t.variableDeclaration(\"const\", [component]));\n    }\n    parentPath?.insertBefore(blockFunction);\n    parentPath?.insertBefore(\n      t.variableDeclaration(\"const\", [\n        t.variableDeclarator(temp, component.id)\n      ])\n    );\n  }\n};\nconst getDynamicsFromJSX = (path, jsx, sourceName, returnJsxPath, dynamics = { data: [], cache: /* @__PURE__ */ new Set(), deferred: [] }) => {\n  const createDynamic = (identifier, expression, callback) => {\n    const id = identifier || path.scope.generateUidIdentifier(\"$\");\n    if (!dynamics.cache.has(id.name)) {\n      dynamics.data.push({ value: expression, id });\n      dynamics.cache.add(id.name);\n    }\n    dynamics.deferred.push(callback);\n    return id;\n  };\n  const type = jsx.openingElement.name;\n  if (t.isJSXIdentifier(type)) {\n    const componentBinding = path.scope.getBinding(type.name);\n    const component = componentBinding?.path.node;\n    if (t.isFunctionDeclaration(component) || t.isVariableDeclarator(component) || type.name.startsWith(type.name[0].toUpperCase())) {\n      const createElement = lib.addNamed(path, \"createElement\", \"react\", {\n        nameHint: \"createElement$\"\n      });\n      const objectProperties = [];\n      for (let i = 0, j = jsx.openingElement.attributes.length; i < j; i++) {\n        const attribute = jsx.openingElement.attributes[i];\n        if (t.isJSXAttribute(attribute) && t.isJSXExpressionContainer(attribute.value)) {\n          const { expression } = attribute.value;\n          const name = attribute.name;\n          if (t.isIdentifier(expression)) {\n            const id2 = createDynamic(expression, null, null);\n            if (t.isJSXIdentifier(name)) {\n              objectProperties.push(\n                t.objectProperty(t.identifier(name.name), id2)\n              );\n            }\n          } else if (t.isExpression(expression)) {\n            const id2 = createDynamic(null, expression, () => {\n              attribute.value.expression = id2;\n            });\n            if (t.isJSXIdentifier(name)) {\n              objectProperties.push(\n                t.objectProperty(t.identifier(name.name), id2)\n              );\n            }\n          }\n        }\n        if (t.isJSXSpreadAttribute(attribute)) {\n          const spreadPath = returnJsxPath.get(\n            `openingElement.attributes.${i}.argument`\n          );\n          throw BlockError(\n            \"Spread attributes aren't supported.\",\n            path,\n            spreadPath\n          );\n        }\n      }\n      BlockWarning(\n        \"Deoptimization Warning: Components will cause degraded performnace. Ideally, you should use DOM elements instead.\",\n        returnJsxPath.openingElement\n      );\n      const renderReactScope = lib.addNamed(path, \"renderReactScope\", sourceName, {\n        nameHint: \"renderReactScope$\"\n      });\n      const nestedRender = t.callExpression(renderReactScope, [\n        t.callExpression(createElement, [\n          t.identifier(type.name),\n          t.objectExpression(objectProperties)\n        ])\n      ]);\n      const id = createDynamic(null, nestedRender, null);\n      jsx.openingElement.name = t.jsxIdentifier(id.name);\n      if (jsx.closingElement) {\n        jsx.closingElement.name = t.jsxIdentifier(id.name);\n      }\n    }\n  }\n  for (let i = 0, j = jsx.openingElement.attributes.length; i < j; i++) {\n    const attribute = jsx.openingElement.attributes[i];\n    if (t.isJSXAttribute(attribute) && t.isJSXExpressionContainer(attribute.value)) {\n      const { expression } = attribute.value;\n      const { leadingComments } = expression;\n      if (leadingComments?.length && leadingComments[0]?.value.trim() === \"@once\") {\n        continue;\n      }\n      if (t.isIdentifier(expression)) {\n        createDynamic(expression, null, null);\n      } else if (t.isExpression(expression)) {\n        const id = createDynamic(null, expression, () => {\n          attribute.value.expression = id;\n        });\n      }\n    }\n    if (t.isJSXSpreadAttribute(attribute)) {\n      const spreadPath = returnJsxPath.get(\n        `openingElement.attributes.${i}.argument`\n      );\n      throw BlockError(\"Spread attributes aren't supported.\", path, spreadPath);\n    }\n  }\n  for (let i = 0, j = jsx.children.length; i < j; i++) {\n    const child = jsx.children[i];\n    if (t.isJSXExpressionContainer(child)) {\n      const { expression } = child;\n      const { leadingComments } = expression;\n      if (leadingComments?.length && leadingComments[0]?.value.trim() === \"@once\") {\n        continue;\n      }\n      if (t.isIdentifier(expression)) {\n        createDynamic(expression, null, null);\n      } else if (t.isJSXElement(expression)) {\n        getDynamicsFromJSX(\n          path,\n          expression,\n          sourceName,\n          returnJsxPath.get(`children.${i}`),\n          dynamics\n        );\n        jsx.children[i] = expression;\n      } else if (t.isExpression(expression)) {\n        if (t.isCallExpression(expression) && t.isMemberExpression(expression.callee) && t.isIdentifier(expression.callee.property, { name: \"map\" })) {\n          const For = lib.addNamed(path, \"For\", sourceName, {\n            nameHint: \"For$\"\n          });\n          const jsxFor = t.jsxIdentifier(For.name);\n          const newJsxArrayIterator = t.jsxElement(\n            t.jsxOpeningElement(jsxFor, [\n              t.jsxAttribute(\n                t.jsxIdentifier(\"each\"),\n                t.jsxExpressionContainer(expression.callee.object)\n              )\n            ]),\n            t.jsxClosingElement(jsxFor),\n            [t.jsxExpressionContainer(expression.arguments[0])]\n          );\n          const expressionPath = returnJsxPath.get(`children.${i}.expression`);\n          BlockWarning(\n            \"Deoptimization Warning: Array.map() will degrade performance. We recommend removing the block on the current component and using a <For /> component instead.\",\n            expressionPath\n          );\n          const renderReactScope = lib.addNamed(\n            path,\n            \"renderReactScope\",\n            sourceName,\n            {\n              nameHint: \"renderReactScope$\"\n            }\n          );\n          const nestedRender = t.callExpression(renderReactScope, [\n            newJsxArrayIterator\n          ]);\n          const id2 = createDynamic(null, nestedRender, () => {\n            jsx.children[i] = t.jsxExpressionContainer(id2);\n          });\n          continue;\n        }\n        if (t.isConditionalExpression(expression) || t.isLogicalExpression(expression)) {\n          const expressionPath = returnJsxPath.get(`children.${i}.expression`);\n          BlockWarning(\n            \"Deoptimization Warning: Conditional expressions will degrade performance. We recommend using deterministic returns instead.\",\n            expressionPath\n          );\n          const renderReactScope = lib.addNamed(\n            path,\n            \"renderReactScope\",\n            sourceName,\n            {\n              nameHint: \"renderReactScope$\"\n            }\n          );\n          const id2 = createDynamic(\n            null,\n            t.callExpression(renderReactScope, [expression]),\n            () => {\n              jsx.children[i] = t.jsxExpressionContainer(id2);\n            }\n          );\n          continue;\n        }\n        const id = createDynamic(null, expression, () => {\n          child.expression = id;\n        });\n      }\n    } else if (t.isJSXElement(child)) {\n      getDynamicsFromJSX(\n        path,\n        child,\n        sourceName,\n        returnJsxPath.get(`children.${i}`),\n        dynamics\n      );\n    }\n  }\n  return dynamics;\n};\nconst BlockError = (message, path, localPath) => {\n  if (t.isVariableDeclarator(path.parentPath.node) && t.isIdentifier(path.node.arguments[0])) {\n    path.parentPath.node.init = path.node.arguments[0];\n  }\n  return (localPath ?? path).buildCodeFrameError(message);\n};\nconst BlockWarning = (message, localPath) => {\n  const err = localPath.buildCodeFrameError(message);\n  console.warn(err.message);\n};\n\nconst babelPlugin = declare_1((api, options) => {\n  api.assertVersion(7);\n  const callExpressionHandler = options.mode === \"optimize\" ? optimize : transformReact(options);\n  return {\n    name: \"million\",\n    visitor: {\n      CallExpression(path) {\n        callExpressionHandler(path);\n      }\n    }\n  };\n});\n\nconst unplugin = createUnplugin((options) => {\n  return {\n    enforce: \"pre\",\n    name: \"million\",\n    transformInclude(id) {\n      return /\\.[jt]sx$/.test(id);\n    },\n    async transform(code, id) {\n      if (options?.ignoreFiles?.some((pattern) => id.match(pattern))) {\n        return code;\n      }\n      const plugins = [\"@babel/plugin-syntax-jsx\"];\n      if (id.endsWith(\".tsx\")) {\n        plugins.push([\"@babel/plugin-syntax-typescript\", { isTSX: true }]);\n      }\n      const result = await transformAsync(code, {\n        plugins: [...plugins, [babelPlugin, options]]\n      });\n      code = result?.code ?? code;\n      return code;\n    }\n  };\n});\nconst next = (nextConfig = {}) => {\n  return {\n    ...nextConfig,\n    webpack(config, options) {\n      config.plugins.unshift(unplugin.webpack({ mode: \"react-server\" }));\n      if (typeof nextConfig.webpack === \"function\") {\n        return nextConfig.webpack(config, options);\n      }\n      return config;\n    }\n  };\n};\nunplugin.next = next;\n\nexport { babelPlugin, unplugin as default, next, unplugin };\n"
  },
  {
    "path": "website/components/million-library/jsx-runtime.cjs",
    "content": "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst h = (type, props = {}, ...children) => {\n  if (props === null)\n    props = {};\n  props.children = children;\n  return {\n    type,\n    props\n  };\n};\n\nexports.createElement = h;\nexports.h = h;\nexports.jsx = h;\nexports.jsxs = h;\n"
  },
  {
    "path": "website/components/million-library/jsx-runtime.d.ts",
    "content": "import { P as Props, V as VNode } from './types-35702ad2.js';\n\ndeclare const h: (\n  type: string,\n  props?: Props | null,\n  ...children: VNode[]\n) => VNode;\n\nexport { h as createElement, h, h as jsx, h as jsxs };\n"
  },
  {
    "path": "website/components/million-library/jsx-runtime.mjs",
    "content": "const h = (type, props = {}, ...children) => {\n  if (props === null)\n    props = {};\n  props.children = children;\n  return {\n    type,\n    props\n  };\n};\n\nexport { h as createElement, h, h as jsx, h as jsxs };\n"
  },
  {
    "path": "website/components/million-library/million.cjs",
    "content": "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst block = require('./chunks/block.cjs');\nrequire('./chunks/constants.cjs');\n\n\n\nexports.AbstractBlock = block.AbstractBlock;\nexports.ArrayBlock = block.ArrayBlock;\nexports.Block = block.Block;\nexports.block = block.block;\nexports.firstChild$ = block.firstChild$;\nexports.mapArray = block.mapArray;\nexports.mount = block.mount;\nexports.nextSibling$ = block.nextSibling$;\nexports.patch = block.patch;\nexports.renderToTemplate = block.renderToTemplate;\nexports.stringToDOM = block.stringToDOM;\nexports.withKey = block.withKey;\n"
  },
  {
    "path": "website/components/million-library/million.d.ts",
    "content": "export {\n  B as Block,\n  b as block,\n  m as mount,\n  p as patch,\n  s as stringToDOM,\n  w as withKey,\n} from './block-878fb9ae.js';\nimport { A as AbstractBlock, V as VNode, E as Edit } from './types-35702ad2.js';\nexport {\n  A as AbstractBlock,\n  P as Props,\n  a as VElement,\n  V as VNode,\n} from './types-35702ad2.js';\n\ndeclare const mapArray: (children: AbstractBlock[]) => ArrayBlock;\ndeclare class ArrayBlock extends AbstractBlock {\n  b: AbstractBlock[];\n  constructor(children: AbstractBlock[]);\n  v(): void;\n  p(fragment: ArrayBlock): HTMLElement;\n  m(parent: HTMLElement, refNode?: Node | null): HTMLElement;\n  x(): void;\n  u(): boolean;\n  s(): string;\n  t(): HTMLElement | null | undefined;\n}\n\ndeclare const renderToTemplate: (\n  vnode: VNode,\n  edits?: Edit[],\n  path?: number[],\n) => string;\n\ndeclare const firstChild$: () => any;\ndeclare const nextSibling$: () => any;\n\nexport { ArrayBlock, firstChild$, mapArray, nextSibling$, renderToTemplate };\n"
  },
  {
    "path": "website/components/million-library/million.mjs",
    "content": "export { c as AbstractBlock, A as ArrayBlock, B as Block, b as block, f as firstChild$, a as mapArray, m as mount, n as nextSibling$, p as patch, r as renderToTemplate, s as stringToDOM, w as withKey } from './chunks/block.mjs';\nimport './chunks/constants.mjs';\n"
  },
  {
    "path": "website/components/million-library/react-server.cjs",
    "content": "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst utils = require('packages/react/utils');\nconst react = require('react');\n\nlet millionModule = null;\nconst block = (Component) => {\n  let blockFactory;\n  function MillionBlockLoader(props) {\n    react.useEffect(() => {\n      const importSource = async () => {\n        millionModule = await import('million/react');\n        if (!blockFactory) {\n          blockFactory = millionModule.block(Component);\n        }\n      };\n      try {\n        void importSource();\n      } catch (e) {\n        throw new Error(\"Failed to load Million library\");\n      }\n      return () => {\n        blockFactory = null;\n      };\n    }, []);\n    if (!blockFactory) {\n      return react.createElement(utils.RENDER_SCOPE, null, react.createElement(Component, props));\n    }\n    return react.createElement(blockFactory, props);\n  }\n  return MillionBlockLoader;\n};\nfunction For(props) {\n  const [_, forceUpdate] = react.useReducer((x) => x + 1, 0);\n  react.useEffect(() => {\n    const importSource = async () => {\n      millionModule = await import('million/react');\n      forceUpdate();\n    };\n    try {\n      void importSource();\n    } catch (e) {\n      throw new Error(\"Failed to load Million library\");\n    }\n  }, []);\n  if (millionModule) {\n    return react.createElement(millionModule.For, props);\n  }\n  return react.createElement(\n    \"million-fragment\",\n    null,\n    ...props.each.map(props.children)\n  );\n}\n\nexports.For = For;\nexports.block = block;\n"
  },
  {
    "path": "website/components/million-library/react-server.d.ts",
    "content": "import * as react from 'react';\nimport { FunctionComponent, ComponentProps } from 'react';\n\ndeclare const block: (\n  Component: FunctionComponent,\n) => (\n  props: ComponentProps<any>,\n) =>\n  | react.DOMElement<react.DOMAttributes<Element>, Element>\n  | react.CElement<any, react.Component<any, any, any>>;\ndeclare function For(props: {\n  each: any[];\n  children: (item: any, index: number) => any;\n}):\n  | react.FunctionComponentElement<{\n      each: any[];\n      children: (item: any, index: number) => any;\n    }>\n  | react.DOMElement<react.DOMAttributes<Element>, Element>;\n\nexport { For, block };\n"
  },
  {
    "path": "website/components/million-library/react-server.mjs",
    "content": "import { RENDER_SCOPE } from 'packages/react/utils';\nimport { useReducer, useEffect, createElement } from 'react';\n\nlet millionModule = null;\nconst block = (Component) => {\n  let blockFactory;\n  function MillionBlockLoader(props) {\n    useEffect(() => {\n      const importSource = async () => {\n        millionModule = await import('million/react');\n        if (!blockFactory) {\n          blockFactory = millionModule.block(Component);\n        }\n      };\n      try {\n        void importSource();\n      } catch (e) {\n        throw new Error(\"Failed to load Million library\");\n      }\n      return () => {\n        blockFactory = null;\n      };\n    }, []);\n    if (!blockFactory) {\n      return createElement(RENDER_SCOPE, null, createElement(Component, props));\n    }\n    return createElement(blockFactory, props);\n  }\n  return MillionBlockLoader;\n};\nfunction For(props) {\n  const [_, forceUpdate] = useReducer((x) => x + 1, 0);\n  useEffect(() => {\n    const importSource = async () => {\n      millionModule = await import('million/react');\n      forceUpdate();\n    };\n    try {\n      void importSource();\n    } catch (e) {\n      throw new Error(\"Failed to load Million library\");\n    }\n  }, []);\n  if (millionModule) {\n    return createElement(millionModule.For, props);\n  }\n  return createElement(\n    \"million-fragment\",\n    null,\n    ...props.each.map(props.children)\n  );\n}\n\nexport { For, block };\n"
  },
  {
    "path": "website/components/million-library/react.cjs",
    "content": "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst react = require('react');\nconst block$1 = require('./chunks/block.cjs');\nconst constants = require('./chunks/constants.cjs');\n\nconst REACT_ROOT = '__react_root';\nconst RENDER_SCOPE = 'million-render-scope';\nconst renderReactScope = (jsx) => {\n  return (el) => {\n    let root;\n    const parent = el ?? block$1.document$.createElement(RENDER_SCOPE);\n    if (react.version.startsWith('18')) {\n      // eslint-disable-next-line @typescript-eslint/no-var-requires\n      const { createRoot } = require('react-dom/client');\n      root =\n        REACT_ROOT in parent\n          ? parent[REACT_ROOT]\n          : (parent[REACT_ROOT] = createRoot(parent));\n    } else {\n      root = parent[REACT_ROOT];\n    }\n    root.render(jsx);\n    return parent;\n  };\n};\nconst unwrap = (vnode) => {\n  if (typeof vnode !== 'object' || vnode === null || !('type' in vnode)) {\n    if (typeof vnode === 'number' || vnode === true) {\n      return String(vnode);\n    } else if (!vnode) {\n      return void 0;\n    }\n    return vnode;\n  }\n  const type = vnode.type;\n  if (typeof type === 'function') {\n    return unwrap(type(vnode.props ?? {}));\n  }\n  if (typeof type === 'object' && '$' in type) return type;\n  const props = { ...vnode.props };\n  const children = vnode.props?.children;\n  if (children !== void 0 && children !== null) {\n    props.children = flatten(vnode.props.children).map((child) =>\n      unwrap(child),\n    );\n  }\n  return {\n    type,\n    props,\n  };\n};\nconst flatten = (rawChildren) => {\n  if (rawChildren === void 0 || rawChildren === null) return [];\n  if (\n    typeof rawChildren === 'object' &&\n    'type' in rawChildren &&\n    rawChildren.type === react.Fragment\n  ) {\n    return flatten(rawChildren.props.children);\n  }\n  if (\n    !Array.isArray(rawChildren) ||\n    (typeof rawChildren === 'object' && '$' in rawChildren)\n  ) {\n    return [rawChildren];\n  }\n  const flattenedChildren = rawChildren.flat(Infinity);\n  const children = [];\n  for (let i = 0, l = flattenedChildren.length; i < l; ++i) {\n    children.push(...flatten(flattenedChildren[i]));\n  }\n  return children;\n};\n\nconst css = `${RENDER_SCOPE} { display: contents }`;\nif (CSSStyleSheet.prototype.replaceSync) {\n  const sheet = new CSSStyleSheet();\n  sheet.replaceSync(css);\n  document.adoptedStyleSheets = [sheet];\n} else {\n  const style = document.createElement('style');\n  document.head.appendChild(style);\n  style.type = 'text/css';\n  style.appendChild(document.createTextNode(css));\n}\nconst REGISTRY = new constants.Map$();\nconst block = (fn, options = {}) => {\n  const block2 = constants.MapHas$.call(REGISTRY, fn)\n    ? constants.MapGet$.call(REGISTRY, fn)\n    : block$1.block(fn, unwrap);\n  function MillionBlock(props) {\n    const ref = react.useRef(null);\n    const patch = react.useRef(null);\n    patch.current?.(props);\n    const effect = react.useCallback(() => {\n      const currentBlock = block2(props, props.key, options.shouldUpdate);\n      if (ref.current) {\n        block$1.mount$.call(currentBlock, ref.current, null);\n        patch.current = (props2) => {\n          block$1.patch(currentBlock, block2(props2));\n        };\n      }\n      return () => {\n        block$1.remove$.call(currentBlock);\n      };\n    }, []);\n    const marker = react.useMemo(() => {\n      return react.createElement(RENDER_SCOPE, { ref });\n    }, []);\n    const vnode = react.createElement(\n      react.Fragment,\n      null,\n      marker,\n      react.createElement(Effect, { effect }),\n    );\n    return vnode;\n  }\n  if (!constants.MapHas$.call(REGISTRY, MillionBlock)) {\n    constants.MapSet$.call(REGISTRY, MillionBlock, block2);\n  }\n  return MillionBlock;\n};\nconst Effect = ({ effect }) => {\n  react.useEffect(effect, []);\n  return null;\n};\n\nconst MillionArray = ({ each, children }) => {\n  const ref = react.useRef(null);\n  const fragmentRef = react.useRef(null);\n  const cache = react.useRef({\n    each: null,\n    children: null,\n  });\n  if (fragmentRef.current && each !== cache.current.each) {\n    const newChildren = createChildren(each, children, cache);\n    block$1.arrayPatch$.call(\n      fragmentRef.current,\n      block$1.mapArray(newChildren),\n    );\n  }\n  react.useEffect(() => {\n    if (fragmentRef.current) return;\n    const newChildren = createChildren(each, children, cache);\n    fragmentRef.current = block$1.mapArray(newChildren);\n    block$1.arrayMount$.call(fragmentRef.current, ref.current);\n  }, []);\n  return react.createElement(RENDER_SCOPE, { ref });\n};\nconst For = react.memo(MillionArray, (oldProps, newProps) =>\n  Object.is(newProps.each, oldProps.each),\n);\nconst createChildren = (each, getComponent, cache) => {\n  const children = Array(each.length);\n  for (let i = 0, l = each.length; i < l; ++i) {\n    if (cache.current.each && cache.current.each[i] === each[i]) {\n      children[i] = cache.current.children?.[i];\n      continue;\n    }\n    const vnode = getComponent(each[i], i);\n    if (constants.MapHas$.call(REGISTRY, vnode.type)) {\n      if (!cache.current.block) {\n        cache.current.block = constants.MapGet$.call(REGISTRY, vnode.type);\n      }\n      children[i] = cache.current.block(vnode.props);\n    } else {\n      const block = block$1.block((props) => {\n        return {\n          type: RENDER_SCOPE,\n          props: { children: [props?.__scope] },\n        };\n      });\n      const currentBlock = (props) => {\n        return block({\n          props,\n          __scope: renderReactScope(react.createElement(vnode.type, props)),\n        });\n      };\n      constants.MapSet$.call(REGISTRY, vnode.type, currentBlock);\n      cache.current.block = currentBlock;\n      children[i] = currentBlock(vnode.props);\n    }\n  }\n  cache.current.each = each;\n  cache.current.children = children;\n  return children;\n};\n\nexports.For = For;\nexports.REGISTRY = REGISTRY;\nexports.block = block;\nexports.renderReactScope = renderReactScope;\nexports.unwrap = unwrap;\n"
  },
  {
    "path": "website/components/million-library/react.d.ts",
    "content": "import * as react from 'react';\nimport { ReactNode } from 'react';\nimport { B as Block } from './block-878fb9ae.js';\nimport { P as Props, V as VNode } from './types-35702ad2.js';\n\ninterface Options {\n  shouldUpdate?: (oldProps: Props, newProps: Props) => boolean;\n}\ndeclare const REGISTRY: Map<\n  (props: Props) => ReactNode,\n  (\n    props?: Props | null | undefined,\n    key?: string | undefined,\n    shouldUpdateCurrentBlock?:\n      | ((oldProps: Props, newProps: Props) => boolean)\n      | undefined,\n  ) => Block\n>;\ndeclare const block: (\n  fn: (props: Props) => ReactNode,\n  options?: Options,\n) => (props: Props) => react.FunctionComponentElement<{\n  children?: ReactNode;\n}>;\n\ninterface MillionArrayProps {\n  each: any[];\n  children: (value: any, i: number) => ReactNode;\n}\ndeclare const For: react.NamedExoticComponent<MillionArrayProps>;\n\ndeclare const renderReactScope: (\n  jsx: ReactNode,\n) => (el: HTMLElement | null) => HTMLElement;\ndeclare const unwrap: (vnode?: ReactNode) => VNode;\n\nexport { For, REGISTRY, block, renderReactScope, unwrap };\n"
  },
  {
    "path": "website/components/million-library/react.mjs",
    "content": "import {\n  version,\n  Fragment,\n  useRef,\n  useCallback,\n  useMemo,\n  createElement,\n  useEffect,\n  memo,\n} from 'react';\nimport {\n  d as document$,\n  b as block$1,\n  e as mount$,\n  p as patch,\n  g as remove$,\n  h as arrayPatch$,\n  a as mapArray,\n  i as arrayMount$,\n} from './chunks/block.mjs';\nimport {\n  M as Map$,\n  i as MapHas$,\n  j as MapGet$,\n  h as MapSet$,\n} from './chunks/constants.mjs';\n\nconst REACT_ROOT = '__react_root';\nconst RENDER_SCOPE = 'million-render-scope';\nconst renderReactScope = (jsx) => {\n  return (el) => {\n    const parent = el ?? document$.createElement(RENDER_SCOPE);\n\n    let root;\n    if (version.startsWith('18')) {\n      import('react-dom/client')\n        .then((res) => {\n          root =\n            REACT_ROOT in parent\n              ? parent[REACT_ROOT]\n              : (parent[REACT_ROOT] = res.createRoot(parent));\n          root.render(jsx);\n        })\n        .catch((e) => {\n          // eslint-disable-next-line no-console\n          console.error(e);\n        });\n    } else {\n      root = parent[REACT_ROOT];\n      root.render(jsx);\n    }\n    return parent;\n  };\n};\nconst unwrap = (vnode) => {\n  if (typeof vnode !== 'object' || vnode === null || !('type' in vnode)) {\n    if (typeof vnode === 'number' || vnode === true) {\n      return String(vnode);\n    } else if (!vnode) {\n      return void 0;\n    }\n    return vnode;\n  }\n  const type = vnode.type;\n  if (typeof type === 'function') {\n    return unwrap(type(vnode.props ?? {}));\n  }\n  if (typeof type === 'object' && '$' in type) return type;\n  const props = { ...vnode.props };\n  const children = vnode.props?.children;\n  if (children !== void 0 && children !== null) {\n    props.children = flatten(vnode.props.children).map((child) =>\n      unwrap(child),\n    );\n  }\n  return {\n    type,\n    props,\n  };\n};\nconst flatten = (rawChildren) => {\n  if (rawChildren === void 0 || rawChildren === null) return [];\n  if (\n    typeof rawChildren === 'object' &&\n    'type' in rawChildren &&\n    rawChildren.type === Fragment\n  ) {\n    return flatten(rawChildren.props.children);\n  }\n  if (\n    !Array.isArray(rawChildren) ||\n    (typeof rawChildren === 'object' && '$' in rawChildren)\n  ) {\n    return [rawChildren];\n  }\n  const flattenedChildren = rawChildren.flat(Infinity);\n  const children = [];\n  for (let i = 0, l = flattenedChildren.length; i < l; ++i) {\n    children.push(...flatten(flattenedChildren[i]));\n  }\n  return children;\n};\n\nconst css = `${RENDER_SCOPE} { display: contents }`;\nif (CSSStyleSheet.prototype.replaceSync) {\n  const sheet = new CSSStyleSheet();\n  sheet.replaceSync(css);\n  document.adoptedStyleSheets = [sheet];\n} else {\n  const style = document.createElement('style');\n  document.head.appendChild(style);\n  style.type = 'text/css';\n  style.appendChild(document.createTextNode(css));\n}\nconst REGISTRY = new Map$();\nconst block = (fn, options = {}) => {\n  const block2 = MapHas$.call(REGISTRY, fn)\n    ? MapGet$.call(REGISTRY, fn)\n    : block$1(fn, unwrap);\n  function MillionBlock(props) {\n    const ref = useRef(null);\n    const patch$1 = useRef(null);\n    patch$1.current?.(props);\n    const effect = useCallback(() => {\n      const currentBlock = block2(props, props.key, options.shouldUpdate);\n      if (ref.current) {\n        mount$.call(currentBlock, ref.current, null);\n        patch$1.current = (props2) => {\n          patch(currentBlock, block2(props2));\n        };\n      }\n      return () => {\n        remove$.call(currentBlock);\n      };\n    }, []);\n    const marker = useMemo(() => {\n      return createElement(RENDER_SCOPE, { ref });\n    }, []);\n    const vnode = createElement(\n      Fragment,\n      null,\n      marker,\n      createElement(Effect, { effect }),\n    );\n    return vnode;\n  }\n  if (!MapHas$.call(REGISTRY, MillionBlock)) {\n    MapSet$.call(REGISTRY, MillionBlock, block2);\n  }\n  return MillionBlock;\n};\nconst Effect = ({ effect }) => {\n  useEffect(effect, []);\n  return null;\n};\n\nconst MillionArray = ({ each, children }) => {\n  const ref = useRef(null);\n  const fragmentRef = useRef(null);\n  const cache = useRef({\n    each: null,\n    children: null,\n  });\n  if (fragmentRef.current && each !== cache.current.each) {\n    const newChildren = createChildren(each, children, cache);\n    arrayPatch$.call(fragmentRef.current, mapArray(newChildren));\n  }\n  useEffect(() => {\n    if (fragmentRef.current) return;\n    const newChildren = createChildren(each, children, cache);\n    fragmentRef.current = mapArray(newChildren);\n    arrayMount$.call(fragmentRef.current, ref.current);\n  }, []);\n  return createElement(RENDER_SCOPE, { ref });\n};\nconst For = memo(MillionArray, (oldProps, newProps) =>\n  Object.is(newProps.each, oldProps.each),\n);\nconst createChildren = (each, getComponent, cache) => {\n  const children = Array(each.length);\n  for (let i = 0, l = each.length; i < l; ++i) {\n    if (cache.current.each && cache.current.each[i] === each[i]) {\n      children[i] = cache.current.children?.[i];\n      continue;\n    }\n    const vnode = getComponent(each[i], i);\n    if (MapHas$.call(REGISTRY, vnode.type)) {\n      if (!cache.current.block) {\n        cache.current.block = MapGet$.call(REGISTRY, vnode.type);\n      }\n      children[i] = cache.current.block(vnode.props);\n    } else {\n      const block = block$1((props) => {\n        return {\n          type: RENDER_SCOPE,\n          props: { children: [props?.__scope] },\n        };\n      });\n      const currentBlock = (props) => {\n        return block({\n          props,\n          __scope: renderReactScope(createElement(vnode.type, props)),\n        });\n      };\n      MapSet$.call(REGISTRY, vnode.type, currentBlock);\n      cache.current.block = currentBlock;\n      children[i] = currentBlock(vnode.props);\n    }\n  }\n  cache.current.each = each;\n  cache.current.children = children;\n  return children;\n};\n\nexport { For, REGISTRY, block, renderReactScope, unwrap };\n"
  },
  {
    "path": "website/components/million-library/types-35702ad2.d.ts",
    "content": "declare const enum Flags {\n  Child = 1,\n  Attribute = 2,\n  Event = 4,\n  StyleAttribute = 8,\n  SvgAttribute = 16,\n  Block = 32,\n}\ntype VNode = VElement | string | number | bigint | boolean | undefined | null;\ntype Props = Record<string, any>;\ninterface VElement {\n  type: string;\n  props: Props & {\n    children?: (VNode | Hole)[];\n  };\n}\ninterface Hole {\n  $: string;\n}\ndeclare abstract class AbstractBlock {\n  r?: HTMLElement;\n  e?: Edit[];\n  l?: HTMLElement | null;\n  g?: (root: HTMLElement) => HTMLElement[];\n  _t?: HTMLElement | null;\n  d?: Props | null;\n  k?: string;\n  c?: HTMLElement[];\n  abstract p(block: AbstractBlock): HTMLElement;\n  abstract m(parent?: HTMLElement, refNode?: Node | null): HTMLElement;\n  abstract v(block: AbstractBlock | null, refNode: Node | null): void;\n  abstract x(): void;\n  abstract s(): string;\n  abstract u(oldProps: Props, newProps: Props): boolean;\n  abstract t(): HTMLElement | null | undefined;\n}\ninterface EditAttribute {\n  t: Flags.Attribute;\n  n: string;\n  v: null;\n  h: string;\n  i: null;\n  l: null;\n  p: null;\n  b: null;\n}\ninterface EditStyleAttribute {\n  t: Flags.StyleAttribute;\n  n: string;\n  v: null;\n  h: string;\n  i: null;\n  l: null;\n  p: null;\n  b: null;\n}\ninterface EditSvgAttribute {\n  t: Flags.SvgAttribute;\n  n: string;\n  v: null;\n  h: string;\n  i: null;\n  l: null;\n  p: null;\n  b: null;\n}\ninterface EditChild {\n  t: Flags.Child;\n  n: null;\n  v: null;\n  h: string;\n  i: number;\n  l: null;\n  p: null;\n  b: null;\n}\ninterface EditEvent {\n  t: Flags.Event;\n  n: string;\n  v: null;\n  h: string;\n  i: null;\n  l: null;\n  p: ((listener: EventListener) => void) | null;\n  b: null;\n}\ninterface InitEvent {\n  t: Flags.Event;\n  n: string;\n  v: null;\n  h: null;\n  i: null;\n  l: EventListener;\n  p: null;\n  b: null;\n}\ninterface InitChild {\n  t: Flags.Child;\n  n: null;\n  v: string;\n  h: null;\n  i: number;\n  l: null;\n  p: null;\n  b: null;\n}\ninterface InitBlock {\n  t: Flags.Block;\n  n: null;\n  v: null;\n  h: null;\n  i: number;\n  l: null;\n  p: null;\n  b: AbstractBlock;\n}\ninterface Edit {\n  p: number[] | null;\n  e: (\n    | EditAttribute\n    | EditStyleAttribute\n    | EditSvgAttribute\n    | EditChild\n    | EditEvent\n  )[];\n  i: (InitChild | InitEvent | InitBlock)[] | null;\n}\n\nexport { AbstractBlock as A, Edit as E, Props as P, VNode as V, VElement as a };\n"
  },
  {
    "path": "website/components/retro-grid.tsx",
    "content": "import clsx, { ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n  return twMerge(clsx(inputs));\n}\n\nexport function RetroGrid({ className }: { className?: string }): JSX.Element {\n  return (\n    <div\n      className={cn(\n        'absolute h-full w-full overflow-hidden [perspective:200px]',\n        className,\n      )}\n    >\n      {/* Grid */}\n      <div className=\"absolute inset-0 [transform:rotateX(45deg)]\">\n        <div\n          className={cn(\n            'animate-grid',\n\n            '[background-repeat:repeat] [background-size:60px_60px] [height:300vh] [inset:0%_0px] [margin-left:-50%] [transform-origin:100%_0_0] [width:300vw]',\n\n            // Light Styles\n            '[background-image:linear-gradient(to_right,rgba(0,0,0,0.3)_1px,transparent_0),linear-gradient(to_bottom,rgba(0,0,0,0.3)_1px,transparent_0)]',\n\n            // Dark styles\n            'dark:[background-image:linear-gradient(to_right,rgba(255,255,255,0.2)_1px,transparent_0),linear-gradient(to_bottom,rgba(255,255,255,0.2)_1px,transparent_0)]',\n          )}\n        />\n      </div>\n\n      {/* Background Gradient */}\n      <div className=\"absolute inset-0 bg-gradient-to-b from-white to-transparent to-60% dark:from-black\" />\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/spotlight.tsx",
    "content": "// Copyright (c) 2023 Andreas Thomas\n// https://github.com/chronark/chronark.com/blob/c3676d2b8da93820f38f65e6176fc62f8d309cd8/app/components/card.tsx\n\nimport classNames from 'classnames';\nimport { motion, useMotionTemplate, useSpring } from 'framer-motion';\n\nexport function Spotlight(props: {\n  children: React.ReactNode;\n  className?: string;\n}) {\n  const mouseX = useSpring(0, { stiffness: 500, damping: 100 });\n  const mouseY = useSpring(0, { stiffness: 500, damping: 100 });\n\n  const onMouseMove: React.MouseEventHandler<HTMLElement> = ({\n    currentTarget,\n    clientX,\n    clientY,\n  }) => {\n    const { left, top } = currentTarget.getBoundingClientRect();\n    mouseX.set(clientX - left);\n    mouseY.set(clientY - top);\n  };\n  const maskImage = useMotionTemplate`radial-gradient(240px at ${mouseX}px ${mouseY}px, white, transparent)`;\n  const style = { maskImage, WebkitMaskImage: maskImage };\n\n  return (\n    <div onMouseMove={onMouseMove} className=\"relative h-full\">\n      <div className=\"pointer-events-none\">\n        <div className=\"absolute inset-0 z-0 opacity-0 transition-opacity [mask-image:linear-gradient(black,transparent)] group-hover:opacity-100\" />\n        <motion.div\n          className={classNames(\n            'absolute inset-0 z-10 opacity-0 transition-opacity group-hover:opacity-100',\n            props.className,\n          )}\n          style={style}\n        />\n        <motion.div\n          className=\"absolute inset-0 z-10 opacity-0 mix-blend-overlay transition-opacity group-hover:opacity-100\"\n          style={style}\n        />\n      </div>\n      <div>{props.children}</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/components/use-dark-mode.tsx",
    "content": "import { useEffect, useState } from 'react';\n\nexport const useDarkMode = () => {\n  const [isDarkMode, setIsDarkMode] = useState<boolean | null>(null);\n\n  useEffect(() => {\n    const detectDarkMode = () => {\n      setIsDarkMode(document.documentElement.classList.contains('dark'));\n    };\n\n    const observer = new MutationObserver((mutations) => {\n      for (const mutation of mutations) {\n        if (mutation.attributeName === 'class') {\n          detectDarkMode();\n        }\n      }\n    });\n    observer.observe(document.documentElement, { attributes: true });\n\n    detectDarkMode();\n\n    return () => {\n      observer.disconnect();\n    };\n  }, []);\n\n  return isDarkMode;\n};\n"
  },
  {
    "path": "website/components/wrapped/index.tsx",
    "content": "import Head from 'next/head';\nimport { useEffect, useState } from 'react';\nimport Tilt from 'react-parallax-tilt';\nimport { Blur } from '../home/hero';\nimport { RetroGrid } from '../retro-grid';\nimport { useMockProgress } from './useMockProgress';\nimport { track } from '@vercel/analytics';\n\n// eslint-disable-next-line import/no-default-export -- This is the default export\nexport default function Wrapped(props) {\n  const [mode, setMode] = useState<'default' | 'customize'>('default');\n  const [name, setName] = useState<string>('My React app');\n  const [copied, setCopied] = useState<boolean>(false);\n  const [videoUrl, setVideoUrl] = useState<string>('');\n  const { progress, finish, start } = useMockProgress({\n    timeInterval: 2000,\n    autoComplete: false,\n  });\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Not exactly unsafe, but we need to be careful\n  const id = (props.id as string).split('.')[0];\n\n  useEffect(() => {\n    const url = new URL(globalThis.window.location.href);\n    if (url.searchParams.has('name')) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- asd\n      setName(url.searchParams.get('name')!);\n    } else {\n      setNameName('My React app');\n    }\n  }, []);\n\n  const setNameName = (newName: string): void => {\n    track('wrapped/set-name');\n    setName(newName);\n    const url = new URL(window.location.href);\n    url.searchParams.set('name', newName);\n    window.history.pushState(null, '', url.toString());\n  };\n\n  useEffect(() => {\n    track('wrapped/generate-video');\n    setVideoUrl('');\n    start();\n    const abortController = new AbortController();\n\n    void fetch(\n      `https://telemetry.million.dev/api/v1/wrapped/${id}.mp4${\n        name && name.length > 0 ? `?name=${name}` : ''\n      }`,\n      {\n        signal: abortController.signal,\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n        },\n      },\n    )\n      .then((res) => res.json())\n      .then((json) => {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- ghello\n        setVideoUrl(json.url as string);\n        finish();\n      });\n    return () => {\n      abortController.abort();\n    };\n  }, [id, name]);\n\n  return (\n    <main className=\"space-y-40 -mb-8\">\n      <Head>\n        <style\n          type=\"text/css\"\n          dangerouslySetInnerHTML={{\n            __html: `\n              .nextra-sidebar-container, .nextra-breadcrumb, .nextra-toc {\n                display: none!important;\n              }\n              #__next > main > div > div:nth-child(5) {\n                max-width: 100%!important;\n              }\n              article {\n                max-width: 100%!important;\n              }\n              article > main {\n                max-width: 100%!important;\n                padding: 0!important;\n              }\n              #__next > main > div > div:nth-child(5) > article > main > :nth-child(3) {\n                display: none!important;\n              }\n              progress[value]::-webkit-progress-value {\n                background-image:\n                   -webkit-linear-gradient(-45deg,\n                                           transparent 33%, rgba(0, 0, 0, .1) 33%,\n                                           rgba(0,0, 0, .1) 66%, transparent 66%),\n                   -webkit-linear-gradient(top,\n                                           rgba(255, 255, 255, .25),\n                                           rgba(0, 0, 0, .25)),\n                   -webkit-linear-gradient(left, #892fda, #a36bdf);\n\n                  border-radius: 2px;\n                  background-size: 400px 150px, 100% 100%, 100% 100%;\n              }\n\n              .james {\n                background: radial-gradient(ellipse 80% 70% at 50% 120%, #b28ce2, #892fda);\n              }\n              .james:hover {\n                background: radial-gradient(ellipse 80% 70% at 50% 120%, #892fda, #b28ce2);\n              }\n      `,\n          }}\n        ></style>\n      </Head>\n      <div className=\"relative pb-10 border-b border-b-[#ffffff1a] h-screen md:flex md:align-center \">\n        <Blur />\n        <div className=\"opacity-20\">\n          <RetroGrid />\n        </div>\n        <div className=\"max-w-7xl mx-auto px-6 md:px-12 xl:px-6 md:flex pt-40 md:pt-0\">\n          <div className=\"relative m-auto\">\n            <div className=\"lg:w-[90%] text-center mx-auto \">\n              <Tilt\n                gyroscope={true}\n                tiltMaxAngleX={2}\n                tiltMaxAngleY={4}\n                glareEnable\n                tiltAngleYInitial={0}\n                glareMaxOpacity={0.1}\n                className=\"fix-safari-tilt shadow-lg w-full rounded-lg text-center bg-gradient-to-b from-zinc-200 to-white dark:from-zinc-700 dark:via-zinc-800 dark:to-darker p-px\"\n              >\n                {id && videoUrl.length > 0 ? (\n                  <video\n                    className=\"rounded-t-lg\"\n                    crossOrigin=\"anonymous\"\n                    width=\"1280\"\n                    height=\"720\"\n                    muted={true}\n                    autoPlay={true}\n                    loop={true}\n                    onPlay={finish}\n                    onCanPlay={finish}\n                  >\n                    <source src={videoUrl} type=\"video/mp4\" />\n                  </video>\n                ) : (\n                  <progress\n                    className=\"rounded-lg mb-[-6px] w-full bg-transparent h-auto\"\n                    style={{ aspectRatio: '1280 / 720' }}\n                    value={progress}\n                    max={100}\n                  ></progress>\n                )}\n                <div className=\"grid grid-rows-4 grid-cols-1 sm:grid-cols-4 sm:grid-rows-1 justify-center items-center divide-x divide-[#42424C] border-top border-[#202025]\">\n                  <button\n                    className=\"relative w-full flex gap-2  items-center justify-center transition-all bg-black px-10 py-[11.5px] h-[64px] hover:bg-[#090909] md:rounded-bl-lg james\"\n                    onClick={() => {\n                      setMode((prev) =>\n                        prev === 'default' ? 'customize' : 'default',\n                      );\n                    }}\n                  >\n                    {mode === 'default' && (\n                      <svg\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        width={20}\n                        height={20}\n                        viewBox=\"0 0 24 24\"\n                      >\n                        <path\n                          fill=\"none\"\n                          stroke=\"currentColor\"\n                          strokeLinecap=\"round\"\n                          strokeLinejoin=\"round\"\n                          strokeWidth=\"1.5\"\n                          d=\"M9.53 16.122a3 3 0 0 0-5.78 1.128a2.25 2.25 0 0 1-2.4 2.245a4.5 4.5 0 0 0 8.4-2.245c0-.399-.078-.78-.22-1.128m0 0a15.998 15.998 0 0 0 3.388-1.62m-5.043-.025a15.994 15.994 0 0 1 1.622-3.395m3.42 3.42a15.995 15.995 0 0 0 4.764-4.648l3.876-5.814a1.151 1.151 0 0 0-1.597-1.597L14.146 6.32a15.996 15.996 0 0 0-4.649 4.764m3.42 3.42a6.776 6.776 0 0 0-3.42-3.42\"\n                        />\n                      </svg>\n                    )}\n\n                    <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                      {mode === 'default' ? 'Customize' : 'Back to Share'}\n                    </div>\n                  </button>\n\n                  {mode === 'customize' && (\n                    <div className=\"col-span-3\">\n                      <form\n                        onSubmit={(e) => {\n                          e.preventDefault();\n                          const form = e.target as HTMLFormElement;\n                          const formData = new FormData(form);\n                          const _name = formData.get('name') as string;\n                          setNameName(_name);\n                          setMode('default');\n                        }}\n                        className=\"flex flex-row divide-x divide-[#42424C]\"\n                      >\n                        <input\n                          name=\"name\"\n                          id=\"name\"\n                          type=\"text\"\n                          placeholder=\"Add your company name\"\n                          className=\"w-full h-[64px] px-4 text-lg font-semibold leading-none tracking-tight text-white bg-black\"\n                        ></input>\n                        <button\n                          className=\"relative w-full flex gap-1 items-center justify-center transition-all bg-black px-10 py-[11.5px] h-[64px] hover:bg-[#090909] rounded-br-lg w-[300px]\"\n                          type=\"submit\"\n                        >\n                          <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                            Generate\n                          </div>\n                        </button>\n                      </form>\n                    </div>\n                  )}\n\n                  {mode === 'default' && (\n                    <>\n                      <button\n                        className=\"relative w-full flex gap-1 items-center justify-center transition-all bg-black px-10 py-[11.5px] h-[64px] hover:bg-[#090909] \"\n                        onClick={() =>\n                          window.open(\n                            'https://twitter.com/intent/tweet?text=' +\n                              encodeURIComponent(\n                                `I just ran npx million@latest and it made my react app faster! Check it out at ${window.location.href} #millionwrapped`,\n                              ),\n                            '_blank',\n                          )\n                        }\n                      >\n                        <svg\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                          width=\"22\"\n                          height=\"22\"\n                          viewBox=\"0 0 24 24\"\n                          fill=\"white\"\n                          className=\"feather feather-twitter pt-1\"\n                        >\n                          <path d=\"M16.99 0H20.298L13.071 8.26L21.573 19.5H14.916L9.702 12.683L3.736 19.5H0.426L8.156 10.665L0 0H6.826L11.539 6.231L16.99 0ZM15.829 17.52H17.662L5.83 1.876H3.863L15.829 17.52Z\"></path>\n                        </svg>\n                        <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                          Post\n                        </div>\n                      </button>\n                      <button\n                        className=\"relative w-full flex gap-1 items-center justify-center bg-black px-8 py-[11.5px] h-[64px] hover:bg-[#090909]  md:rounded-bl-none\"\n                        onClick={() => {\n                          track('wrapped/copy-url');\n                          // Copy current url to clipboard\n                          void navigator.clipboard.writeText(\n                            window.location.href,\n                          );\n                          setCopied(true);\n\n                          setTimeout(() => {\n                            setCopied(false);\n                          }, 2000);\n                        }}\n                      >\n                        {copied ? (\n                          <>\n                            <svg\n                              className=\"w-[16px] h-[16px] dark:text-zinc-100 pt-[1px]\"\n                              data-testid=\"geist-icon\"\n                              fill=\"none\"\n                              height={24}\n                              shapeRendering=\"geometricPrecision\"\n                              stroke=\"currentColor\"\n                              strokeLinecap=\"round\"\n                              strokeLinejoin=\"round\"\n                              strokeWidth=\"1.5\"\n                              viewBox=\"0 0 24 24\"\n                              width={24}\n                              data-open=\"false\"\n                            >\n                              <path d=\"M20 6L9 17l-5-5\" />\n                            </svg>\n                            <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                              Copied!\n                            </div>\n                          </>\n                        ) : (\n                          <>\n                            <svg\n                              className=\"pt-[1px]\"\n                              fill=\"none\"\n                              height={22}\n                              shapeRendering=\"geometricPrecision\"\n                              stroke=\"currentColor\"\n                              strokeLinecap=\"round\"\n                              strokeLinejoin=\"round\"\n                              strokeWidth=\"1.5\"\n                              viewBox=\"0 0 24 24\"\n                              width={22}\n                              data-open=\"true\"\n                            >\n                              <path d=\"M6 17C4.89543 17 4 16.1046 4 15V5C4 3.89543 4.89543 3 6 3H13C13.7403 3 14.3866 3.4022 14.7324 4M11 21H18C19.1046 21 20 20.1046 20 19V9C20 7.89543 19.1046 7 18 7H11C9.89543 7 9 7.89543 9 9V19C9 20.1046 9.89543 21 11 21Z\" />\n                            </svg>\n\n                            <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                              Copy URL\n                            </div>\n                          </>\n                        )}\n                      </button>\n                      <button\n                        className=\"relative w-full flex gap-1 items-center justify-center bg-black px-8 py-[11.5px] h-[64px] hover:bg-[#090909] rounded-b-lg md:rounded-bl-none\"\n                        onClick={() => {\n                          track('wrapped/download');\n                          window.open(videoUrl, '_blank');\n                        }}\n                      >\n                        <svg\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                          fill=\"none\"\n                          viewBox=\"0 0 24 24\"\n                          strokeWidth={1.5}\n                          stroke=\"currentColor\"\n                          className=\"w-6 h-6\"\n                        >\n                          <path\n                            strokeLinecap=\"round\"\n                            strokeLinejoin=\"round\"\n                            d=\"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\"\n                          />\n                        </svg>\n\n                        <div className=\"relative whitespace-pre text-center text-lg font-semibold leading-none tracking-tight text-white z-10\">\n                          Download\n                        </div>\n                      </button>\n                    </>\n                  )}\n                </div>\n              </Tilt>\n            </div>\n          </div>\n        </div>\n      </div>\n    </main>\n  );\n}\n\nexport function hash(str: string): number {\n  let hashy = 0;\n  for (let i = 0, len = str.length; i < len; i++) {\n    const chr = str.charCodeAt(i);\n    hashy = (hashy << 5) - hashy + chr;\n    hashy |= 0; // Convert to 32bit integer\n  }\n  return hashy;\n}\n"
  },
  {
    "path": "website/components/wrapped/useMockProgress.ts",
    "content": "\nimport { useState, useRef, useMemo, useCallback, useEffect } from \"react\";\n\ninterface MockProgressProps {\n  timeInterval?: number;\n  autoComplete?: boolean;\n}\n\nconst DEFAULT_TIME_INTERVAL = 500;\nconst DEFAULT_AUTO_COMPLETE = true;\nconst PROGRESS_LOWER_LIMIT = 0;\nconst PROGRESS_UPPER_LIMIT = 100;\nconst MANUAL_PROGRESS_UPPER_LIMIT = 98;\n\ninterface MockProgressReturnType {\n  progress: number;\n  start: () => void;\n  finish: () => void;\n}\n\nfunction useMockProgress(props?:MockProgressProps): MockProgressReturnType {\n  const timeInterval = props?.timeInterval?? DEFAULT_TIME_INTERVAL;\n  const autoComplete = props?.autoComplete ??  DEFAULT_AUTO_COMPLETE;\n  \n  const [progress, setProgress] = useState<number>(PROGRESS_LOWER_LIMIT); // progress value\n  const increment = useRef<number>(1);  // increment for progress value update\n  const shouldProgress = useRef(false); // manage start, finish progress callbacks\n\n  // max value progress will reach automatically\n  // if auto complete off,\n  const upperLimit = useMemo(() => {\n    return autoComplete ? PROGRESS_UPPER_LIMIT : MANUAL_PROGRESS_UPPER_LIMIT;\n  }, [autoComplete]);\n\n  // randomly increment progress in increments between 1 and 10\n  const changeIncrement = useCallback(() => {\n    increment.current = Math.floor(Math.random() * 10) + 1;\n  }, []);\n\n  // create interval to update progress\n  const intervalRef = useInterval(() => {\n    if (shouldProgress.current) {\n      if (progress + increment.current <= upperLimit) {\n        setProgress(progress + increment.current);\n        changeIncrement();\n      } else {\n        setProgress(upperLimit);\n        // clearInterval(intervalRef.current);\n        // intervalRef.current = undefined;\n      }\n    }\n  }, timeInterval);\n\n  // complete progress and clear interval\n  const finish = useCallback(() => {\n    setProgress(PROGRESS_UPPER_LIMIT);\n    shouldProgress.current = false;\n    // clearInterval(intervalRef.current);\n    // intervalRef.current = undefined;\n  }, [intervalRef]);\n\n  // start progress\n  const start = useCallback(() => {\n    // if (intervalRef.current) {\n      shouldProgress.current = true;\n      setProgress(PROGRESS_LOWER_LIMIT);\n    // }\n  }, [intervalRef]);\n\n  return { progress, start, finish };\n}\n\nfunction useInterval(callback: any, delay: number) {\n  const intervalRef = useRef<number>();\n  const callbackRef = useRef(callback);\n  useEffect(() => {\n    callbackRef.current = callback;\n  }, [callback]);\n\n  useEffect(() => {\n      intervalRef.current = window.setInterval(\n        () => callbackRef.current(),\n        delay\n      );\n      return () => window.clearInterval(intervalRef.current);\n  }, [delay]);\n\n  return intervalRef;\n}\n\nexport { useMockProgress };\n"
  },
  {
    "path": "website/hooks/use-translations.ts",
    "content": "import { useRouter } from 'next/router';\nimport { translations } from '../translations';\n\n// This type represents the structure of each language's translations\ntype Translation = (typeof translations)['en-US'];\n\n/**\n * The function returns the translations for the current locale if it exists in the translations\n * object.\n * @returns The translations object for the specified locale, if it exists in the translations object.\n */\nexport function useTranslations(): Translation {\n  const { locale = 'en-US' } = useRouter();\n\n  if (locale in translations) {\n    return translations[locale];\n  }\n\n  // backup locale\n  return translations['en-US'];\n}\n"
  },
  {
    "path": "website/middleware.js",
    "content": "import { locales } from 'nextra/locales';\n\nexport const middleware = (request) => {\n  const { nextUrl } = request;\n\n  // The middleware must not handle dynamic routes.\n  // if (nextUrl.pathname.startsWith('/ai')) {\n  //   return;\n  // }\n\n  return locales(request);\n};\n"
  },
  {
    "path": "website/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "website/next.config.mjs",
    "content": "// eslint-disable-next-line import/default -- Next.js requires default export\nimport nextra from 'nextra';\n\nconst withNextra = nextra({\n  theme: 'nextra-theme-docs',\n  themeConfig: './theme.config.tsx',\n  staticImage: true,\n});\n\n/**\n * @type {import('next').NextConfig}\n */\nconst nextConfig = {\n  transpilePackages: ['react-tweet'],\n  i18n: {\n    locales: ['en-US', 'zh-CN', 'es-ES', 'fr-FR'],\n    defaultLocale: 'en-US',\n  },\n  async redirects() {\n    return [\n      {\n        source: '/docs.([a-zA-Z-]+)',\n        destination: '/docs/introduction',\n        statusCode: 302,\n      },\n      {\n        source: '/chat',\n        destination: 'https://discord.gg/QezWCDeYfH',\n        statusCode: 302,\n      },\n    ];\n  },\n};\n\n// eslint-disable-next-line import/no-default-export  -- Next.js requires default export\nexport default withNextra(nextConfig);\n"
  },
  {
    "path": "website/package.json",
    "content": "{\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"eslint components/**/*.tsx --ext .ts --cache\",\n    \"lint:fix\": \"pnpm lint --fix\"\n  },\n  \"dependencies\": {\n    \"@algora/sdk\": \"^0.1.2\",\n    \"@codesandbox/sandpack-react\": \"^2.6.7\",\n    \"@headlessui/react\": \"^1.7.13\",\n    \"@liveblocks/client\": \"^1.5.0\",\n    \"@liveblocks/react\": \"^1.5.0\",\n    \"@tailwindcss/line-clamp\": \"^0.4.4\",\n    \"@vercel/analytics\": \"^1.0.0\",\n    \"@vercel/og\": \"^0.5.6\",\n    \"@vercel/speed-insights\": \"^1.0.1\",\n    \"autoprefixer\": \"^10.4.13\",\n    \"chart.js\": \"^4.2.1\",\n    \"classnames\": \"^2.3.2\",\n    \"clsx\": \"^2.1.0\",\n    \"dedent\": \"^0.7.0\",\n    \"framer-motion\": \"^10.16.5\",\n    \"million\": \"workspace:*\",\n    \"mock-progress-react\": \"^1.0.8\",\n    \"next\": \"^14.1.0\",\n    \"nextra\": \"^2.13.3\",\n    \"nextra-theme-docs\": \"^2.13.3\",\n    \"postcss\": \"^8.4.21\",\n    \"react\": \"^18.2.0\",\n    \"react-chartjs-2\": \"^5.2.0\",\n    \"react-countup\": \"^6.4.1\",\n    \"react-device-detect\": \"^2.2.3\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-github-btn\": \"^1.4.0\",\n    \"react-lag-radar\": \"^1.0.0\",\n    \"react-parallax-tilt\": \"^1.7.110\",\n    \"react-player\": \"^2.15.1\",\n    \"react-tooltip\": \"^5.24.0\",\n    \"react-tweet\": \"^3.1.1\",\n    \"react-youtube\": \"^10.1.0\",\n    \"tailwind-merge\": \"^2.2.0\",\n    \"tailwindcss\": \"^3.2.7\"\n  },\n  \"devDependencies\": {\n    \"@types/dedent\": \"^0.7.0\",\n    \"@types/node\": \"18.11.10\",\n    \"@types/react\": \"^18.0.28\",\n    \"@types/react-dom\": \"^18.0.11\",\n    \"typescript\": \"^4.9.3\"\n  }\n}\n"
  },
  {
    "path": "website/pages/_app.mdx",
    "content": "import '../styles/global.css';\nimport { Analytics } from '@vercel/analytics/react';\nimport { SpeedInsights } from '@vercel/speed-insights/next';\n\nexport default function App({ Component, pageProps }) {\n  return (\n    <main>\n      <Component {...pageProps} />\n      <Analytics />\n      <SpeedInsights />\n    </main>\n  );\n}\n"
  },
  {
    "path": "website/pages/_meta.en-US.json",
    "content": "{\n  \"index\": {\n    \"type\": \"page\",\n    \"title\": \"Million.js\",\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"wrapped\": {\n    \"type\": \"page\",\n    \"theme\": {\n      \"layout\": \"full\",\n      \"sidebar\": false,\n      \"toc\": false,\n      \"pagination\": false\n    }\n  },\n  \"docs\": {\n    \"type\": \"page\",\n    \"title\": \"Docs\"\n  },\n  \"blog\": {\n    \"type\": \"page\",\n    \"title\": \"Blog\"\n  },\n  \"showcase\": {\n    \"type\": \"page\",\n    \"title\": \"Showcase\",\n    \"theme\": {\n      \"typesetting\": \"article\",\n      \"layout\": \"full\"\n    }\n  },\n  \"foundation\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Foundation\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"telemetry\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Telemetry\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"privacy\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Privacy Policy\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"code-policy\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Code Policy\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"terms\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Terms of Service\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"faq\": {\n    \"type\": \"page\",\n    \"title\": \"FAQ\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"lint\": {\n    \"type\": \"page\",\n    \"title\": \"Lint\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"more\": {\n    \"title\": \"More\",\n    \"type\": \"menu\",\n    \"items\": {\n      \"privacy\": {\n        \"title\": \"Privacy Policy\",\n        \"href\": \"/privacy\"\n      },\n      \"code-policy\": {\n        \"title\": \"Code Policy\",\n        \"href\": \"/code-policy\"\n      },\n      \"terms\": {\n        \"title\": \"Terms of Service\",\n        \"href\": \"/terms\"\n      },\n      \"telemetry\": {\n        \"title\": \"Telemetry\",\n        \"href\": \"/telemetry\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "website/pages/_meta.es-ES.json",
    "content": "{\n  \"index\": {\n    \"type\": \"page\",\n    \"title\": \"Million.js\",\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"docs\": {\n    \"type\": \"page\",\n    \"title\": \"Documentación\"\n  },\n  \"blog\": {\n    \"type\": \"page\",\n    \"title\": \"Blog\"\n  },\n  \"showcase\": {\n    \"type\": \"page\",\n    \"title\": \"Ejemplos\",\n    \"theme\": {\n      \"typesetting\": \"article\",\n      \"layout\": \"full\"\n    }\n  },\n  \"foundation\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Fundación\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"faq\": {\n    \"type\": \"page\",\n    \"title\": \"FAQ\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"lint\": {\n    \"type\": \"page\",\n    \"title\": \"Lint\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"more\": {\n    \"title\": \"Más\",\n    \"type\": \"menu\",\n    \"items\": {\n      \"foundation\": {\n        \"title\": \"Fundación\",\n        \"href\": \"/foundation\"\n      },\n      \"research\": {\n        \"title\": \"Investigación\",\n        \"href\": \"https://dl.acm.org/doi/10.1145/3555776.3577683\",\n        \"newWindow\": true\n      },\n      \"demo\": {\n        \"title\": \"Demo\",\n        \"href\": \"https://demo.million.dev\",\n        \"newWindow\": true\n      },\n      \"hundred\": {\n        \"title\": \"Construye el tuyo\",\n        \"href\": \"https://github.com/aidenybai/hundred\",\n        \"newWindow\": true\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "website/pages/_meta.fr-FR.json",
    "content": "{\n  \"index\": {\n    \"type\": \"page\",\n    \"title\": \"Million.js\",\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"docs\": {\n    \"type\": \"page\",\n    \"title\": \"Docs\"\n  },\n  \"blog\": {\n    \"type\": \"page\",\n    \"title\": \"Blog\"\n  },\n  \"showcase\": {\n    \"type\": \"page\",\n    \"title\": \"Showcase\",\n    \"theme\": {\n      \"typesetting\": \"article\",\n      \"layout\": \"full\"\n    }\n  },\n  \"foundation\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Foundation\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"faq\": {\n    \"type\": \"page\",\n    \"title\": \"FAQ\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"lint\": {\n    \"type\": \"page\",\n    \"title\": \"Lint\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"more\": {\n    \"title\": \"More\",\n    \"type\": \"menu\",\n    \"items\": {\n      \"foundation\": {\n        \"title\": \"Foundation\",\n        \"href\": \"/foundation\"\n      },\n      \"research\": {\n        \"title\": \"Research\",\n        \"href\": \"https://dl.acm.org/doi/10.1145/3555776.3577683\",\n        \"newWindow\": true\n      },\n      \"demo\": {\n        \"title\": \"Live demo\",\n        \"href\": \"https://demo.million.dev\",\n        \"newWindow\": true\n      },\n      \"hundred\": {\n        \"title\": \"Build your own\",\n        \"href\": \"https://github.com/aidenybai/hundred\",\n        \"newWindow\": true\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "website/pages/_meta.zh-CN.json",
    "content": "{\n  \"index\": {\n    \"type\": \"page\",\n    \"title\": \"Million.js\",\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"docs\": {\n    \"type\": \"page\",\n    \"title\": \"Docs\"\n  },\n  \"blog\": {\n    \"type\": \"page\",\n    \"title\": \"Blog\"\n  },\n  \"showcase\": {\n    \"type\": \"page\",\n    \"title\": \"Showcase\",\n    \"theme\": {\n      \"typesetting\": \"article\",\n      \"layout\": \"full\"\n    }\n  },\n  \"foundation\": {\n    \"display\": \"hidden\",\n    \"type\": \"page\",\n    \"title\": \"Foundation\",\n    \"theme\": {\n      \"typesetting\": \"article\"\n    }\n  },\n  \"faq\": {\n    \"type\": \"page\",\n    \"title\": \"FAQ\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"lint\": {\n    \"type\": \"page\",\n    \"title\": \"Lint\",\n    \"theme\": {\n      \"layout\": \"raw\"\n    }\n  },\n  \"more\": {\n    \"title\": \"More\",\n    \"type\": \"menu\",\n    \"items\": {\n      \"foundation\": {\n        \"title\": \"Foundation\",\n        \"href\": \"/foundation\"\n      },\n      \"research\": {\n        \"title\": \"Research\",\n        \"href\": \"https://dl.acm.org/doi/10.1145/3555776.3577683\",\n        \"newWindow\": true\n      },\n      \"demo\": {\n        \"title\": \"Live demo\",\n        \"href\": \"https://demo.million.dev\",\n        \"newWindow\": true\n      },\n      \"hundred\": {\n        \"title\": \"Build your own\",\n        \"href\": \"https://github.com/aidenybai/hundred\",\n        \"newWindow\": true\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "website/pages/api/og.tsx",
    "content": "// eslint-disable-next-line eslint-comments/disable-enable-pair\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { ImageResponse } from '@vercel/og';\nimport type { NextRequest } from 'next/server';\n\nexport const config = {\n  runtime: 'edge',\n};\n\nfunction arrayBufferToBase64(buffer: ArrayBuffer) {\n  let binary = '';\n  const bytes = new Uint8Array(buffer);\n  const len = bytes.byteLength;\n  for (let i = 0; i < len; i++) {\n    binary += String.fromCharCode(bytes[i]);\n  }\n  return btoa(binary);\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default async function handler(request: NextRequest) {\n  try {\n    const [SpaceGrotesk, SpaceGroteskBold, rawBg] = await Promise.all([\n      fetch(\n        String(\n          new URL('../../public/SpaceGrotesk-Medium.ttf', import.meta.url),\n        ),\n      ).then((res) => res.arrayBuffer()),\n      fetch(\n        String(new URL('../../public/SpaceGrotesk-Bold.ttf', import.meta.url)),\n      ).then((res) => res.arrayBuffer()),\n      fetch(String(new URL('../../public/bg.jpg', import.meta.url))).then(\n        (res) => res.arrayBuffer(),\n      ),\n    ]);\n    const bg = arrayBufferToBase64(rawBg);\n\n    const { searchParams } = new URL(request.url);\n\n    const title = searchParams.has('title')\n      ? searchParams.get('title')!.slice(0, 100)\n      : '';\n    const description = searchParams.has('description')\n      ? searchParams.get('description')!.slice(0, 200)\n      : '';\n    const note = searchParams.has('note')\n      ? searchParams.get('note')!.slice(0, 30)\n      : '';\n\n    return new ImageResponse(\n      <OgImage title={title} description={description} note={note} bg={bg} />,\n      {\n        width: 800,\n        height: 400,\n        fonts: [\n          {\n            name: 'Space Grotesk',\n            data: SpaceGrotesk,\n            weight: 500 as const,\n            style: 'normal' as const,\n          },\n          {\n            name: 'Space Grotesk Bold',\n            data: SpaceGroteskBold,\n            weight: 700 as const,\n            style: 'normal' as const,\n          },\n        ],\n      },\n    );\n  } catch (err: unknown) {\n    // eslint-disable-next-line no-console\n    console.log(err);\n    return new Response(undefined, {\n      status: 302,\n      headers: {\n        Location: 'https://million.dev/banner.png',\n      },\n    });\n  }\n}\n\nexport function OgImage({\n  title,\n  description,\n  note,\n  bg,\n}: {\n  title: string;\n  description: string;\n  note: string;\n  bg: string;\n}) {\n  return (\n    <div\n      tw=\"h-full w-full flex flex-col p-11 pb-7\"\n      style={{\n        fontFamily: 'Space Grotesk',\n        backgroundImage: `url(data:image/jpeg;base64,${bg})`,\n      }}\n    >\n      <div tw=\"flex flex-col\">\n        <span\n          tw=\"text-white text-6xl font-bold pb-5\"\n          style={{ fontFamily: 'Space Grotesk Bold' }}\n        >\n          {title}\n        </span>\n        <span tw=\"text-[#b9bdc4] text-3xl flex\">{description}</span>\n      </div>\n      <div tw=\"mt-auto flex-col flex\">\n        <hr tw=\"bg-[#2a2c35] w-full\" />\n        <div tw=\"flex mt-7\">\n          <span tw=\"text-[#838793] text-3xl flex mr-auto\">{note}</span>\n          <img\n            tw=\"h-10\"\n            src=\"data:image/svg+xml,%3Csvg width='566' height='119' view-box='0 0 566 119' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M43.2861 100.407C50.9973 89.3692 66.6897 81.813 84.794 81.813C102.898 81.813 118.591 89.3692 126.302 100.407C118.591 111.444 102.898 119 84.794 119C66.6897 119 50.9973 111.444 43.2861 100.407Z' fill='url(%23paint0_radial_1449_2)' /%3E%3Cpath d='M43.006 18.3961C50.7123 7.47595 66.3946 0 84.4874 0C102.58 0 118.263 7.47595 125.969 18.3961C118.263 29.3163 102.58 36.7922 84.4874 36.7922C66.3946 36.7922 50.7123 29.3163 43.006 18.3961Z' fill='url(%23paint1_radial_1449_2)' /%3E%3Cpath d='M85.2801 59.7175C74.0684 70.5465 58.8619 76.6302 43.006 76.6302C27.1502 76.6302 11.9437 70.5465 0.731934 59.7175L43.006 18.3961L85.2801 59.7175Z' fill='url(%23paint2_radial_1449_2)' /%3E%3Cpath d='M168.344 59.7378C157.132 70.5668 141.925 76.6505 126.07 76.6505C110.214 76.6505 95.0073 70.5668 83.7955 59.7378L126.07 18.3961L168.344 59.7378Z' fill='url(%23paint3_radial_1449_2)' /%3E%3Cpath d='M189.3 92V37.6H210.4L211.4 45.6H212.4C214.133 42.6667 216.533 40.4333 219.6 38.9C222.733 37.3667 226.367 36.6 230.5 36.6C234.9 36.6 238.733 37.5 242 39.3C245.267 41.0333 247.733 43.7667 249.4 47.5H250.4C252.6 43.5 255.433 40.7 258.9 39.1C262.367 37.4333 266.333 36.6 270.8 36.6C275.467 36.6 279.467 37.5333 282.8 39.4C286.2 41.2 288.8 44 290.6 47.8C292.4 51.5333 293.3 56.3667 293.3 62.3V92H271.2V65.1C271.2 62.7667 270.967 60.7 270.5 58.9C270.033 57.1 269.167 55.7 267.9 54.7C266.7 53.6333 264.933 53.1 262.6 53.1C260.4 53.1 258.533 53.5667 257 54.5C255.467 55.4333 254.3 56.7333 253.5 58.4C252.7 60 252.3 61.8667 252.3 64V92H230.3V64.9C230.3 62.6333 230.067 60.6333 229.6 58.9C229.2 57.1 228.367 55.7 227.1 54.7C225.833 53.6333 224 53.1 221.6 53.1C219.4 53.1 217.533 53.6 216 54.6C214.533 55.5333 213.4 56.8333 212.6 58.5C211.8 60.1 211.4 61.9333 211.4 64V92H189.3ZM301.898 92V37.6H323.998V92H301.898ZM301.898 32V19.1H323.998V32H301.898ZM332.659 92V19.1H354.759V92H332.659ZM363.421 92V19.1H385.521V92H363.421ZM394.183 92V37.6H416.283V92H394.183ZM394.183 32V19.1H416.283V32H394.183ZM456.545 93C451.478 93 446.878 92.4 442.745 91.2C438.611 89.9333 435.045 88.1 432.045 85.7C429.111 83.3 426.845 80.3667 425.245 76.9C423.645 73.3667 422.845 69.3333 422.845 64.8C422.845 58.8 424.245 53.7 427.045 49.5C429.845 45.3 433.745 42.1 438.745 39.9C443.811 37.7 449.745 36.6 456.545 36.6C461.611 36.6 466.211 37.2333 470.345 38.5C474.478 39.7 478.011 41.5 480.945 43.9C483.945 46.3 486.245 49.2667 487.845 52.8C489.445 56.2667 490.245 60.2667 490.245 64.8C490.245 70.7333 488.845 75.8333 486.045 80.1C483.311 84.3 479.411 87.5 474.345 89.7C469.345 91.9 463.411 93 456.545 93ZM456.545 76.3C459.145 76.3 461.311 75.8333 463.045 74.9C464.778 73.9667 466.078 72.6333 466.945 70.9C467.811 69.1667 468.245 67.1333 468.245 64.8C468.245 63 467.978 61.4 467.445 60C466.978 58.5333 466.245 57.3 465.245 56.3C464.311 55.3 463.111 54.5333 461.645 54C460.178 53.4667 458.478 53.2 456.545 53.2C454.011 53.2 451.878 53.6667 450.145 54.6C448.411 55.5333 447.111 56.8667 446.245 58.6C445.378 60.3333 444.945 62.4 444.945 64.8C444.945 66.6 445.178 68.2 445.645 69.6C446.178 71 446.911 72.2 447.845 73.2C448.845 74.2 450.045 74.9667 451.445 75.5C452.911 76.0333 454.611 76.3 456.545 76.3ZM496.722 92V37.6H518.022L518.822 45.5H519.822C521.422 42.7 523.922 40.5333 527.322 39C530.789 37.4 534.355 36.6 538.022 36.6C541.555 36.6 544.755 37.0333 547.622 37.9C550.489 38.7667 552.955 40.2 555.022 42.2C557.089 44.1333 558.689 46.7333 559.822 50C560.955 53.2667 561.522 57.3 561.522 62.1V92H539.422V66C539.422 63.4667 539.155 61.2333 538.622 59.3C538.155 57.3667 537.222 55.8667 535.822 54.8C534.489 53.6667 532.555 53.1 530.022 53.1C527.689 53.1 525.689 53.6333 524.022 54.7C522.355 55.7 521.055 57.1 520.122 58.9C519.255 60.6333 518.822 62.6333 518.822 64.9V92H496.722Z' fill='white' /%3E%3Cdefs%3E%3CradialGradient id='paint0_radial_1449_2' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(84.794 100.406) rotate(92.849) scale(12.0136 26.7792)'%3E%3Cstop stop-color='%23845CE7' /%3E%3Cstop offset='1' stop-color='%23AF73D8' /%3E%3C/radialGradient%3E%3CradialGradient id='paint1_radial_1449_2' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)'%3E%3Cstop stop-color='%23845CE7' /%3E%3Cstop offset='1' stop-color='%23AF73D8' /%3E%3C/radialGradient%3E%3CradialGradient id='paint2_radial_1449_2' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)'%3E%3Cstop stop-color='%23845CE7' /%3E%3Cstop offset='1' stop-color='%23AF73D8' /%3E%3C/radialGradient%3E%3CradialGradient id='paint3_radial_1449_2' cx='0' cy='0' r='1' gradientUnits='userSpaceOnUse' gradientTransform='translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)'%3E%3Cstop stop-color='%23845CE7' /%3E%3Cstop offset='1' stop-color='%23AF73D8' /%3E%3C/radialGradient%3E%3C/defs%3E%3C/svg%3E\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "website/pages/blog/.prettierignore",
    "content": "**"
  },
  {
    "path": "website/pages/blog/_meta.en-US.json",
    "content": "{\n  \"*\": {\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"toc\": false,\n      \"sidebar\": false,\n      \"pagination\": false,\n      \"typesetting\": \"article\"\n    }\n  },\n  \"lint\": \"Million Lint is in public beta\",\n  \"million-3\": \"Announcing Million.js 3.0\",\n  \"million-beyond-speed\": \"Million Beyond 'Speed'\",\n  \"million-v2.5.3\": \"Million.js v2.5.3\",\n  \"million-v2.5.1\": \"Million.js v2.5.1\",\n  \"behind-the-block\": \"Behind the block()\",\n  \"virtual-dom\": \"Virtual DOM: Back in Block\"\n}\n"
  },
  {
    "path": "website/pages/blog/_meta.es-ES.json",
    "content": "{\n  \"*\": {\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"toc\": false,\n      \"sidebar\": false,\n      \"pagination\": false,\n      \"typesetting\": \"article\"\n    }\n  },\n  \"3\": \"Anunciando Million.js 3.0\",\n  \"million-beyond-speed\": \"Million mas allá de la 'Velocidad'\",\n  \"million-v2.5.3\": \"Million.js v2.5.3\",\n  \"million-v2.5.1\": \"Million.js v2.5.1\",\n  \"behind-the-block\": \"Detrás de block()\",\n  \"virtual-dom\": \"Virtual DOM: Back in Block\"\n}\n"
  },
  {
    "path": "website/pages/blog/_meta.fr-FR.json",
    "content": "{\n  \"*\": {\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"toc\": false,\n      \"sidebar\": false,\n      \"pagination\": false,\n      \"typesetting\": \"article\"\n    }\n  },\n  \"3\": \"Présentation de Million.js 3.0\",\n  \"million-beyond-speed\": \"Million au-delà de la 'Vitesse'\",\n  \"million-v2.5.3\": \"Million.js v2.5.3\",\n  \"million-v2.5.1\": \"Million.js v2.5.1\",\n  \"behind-the-block\": \"Derrière le block()\",\n  \"virtual-dom\": \"Virtual DOM : Retour dans le Block\"\n}\n"
  },
  {
    "path": "website/pages/blog/_meta.zh-CN.json",
    "content": "{\n  \"*\": {\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"toc\": false,\n      \"sidebar\": false,\n      \"pagination\": false,\n      \"typesetting\": \"article\"\n    }\n  },\n  \"3\": \"Announcing Million.js 3.0\",\n  \"million-beyond-speed\": \"Million Beyond 'Speed'\",\n  \"million-v2.5.3\": \"Million.js v2.5.3\",\n  \"million-v2.5.1\": \"Million.js v2.5.1\",\n  \"behind-the-block\": \"Behind the block()\",\n  \"virtual-dom\": \"Virtual DOM: Back in Block\"\n}\n"
  },
  {
    "path": "website/pages/blog/behind-the-block.en-US.mdx",
    "content": "---\ntitle: 'Behind the block()'\ndate: JUN 1, 2023\ndescription: So how does block() really work with React?\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <Image src=\"/behind-the-block.png\" width={350} height={130} />\n</div>\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Behind the `block(){:jsx}`\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUN 1 2023</small>\n</div>\n\n---\n\nIf you've used Million.js for a while, you've probably heard of the [`block(){:jsx}`](/docs/manual-mode/block) function.\n\n```jsx {8}\nfunction MyComponent() {\n  // ...\n}\n\nconst MyBlock = block(MyComponent);\n\nexport default function App() {\n  return <MyBlock />; // ✨ it works! ✨\n}\n```\n\nWrapping a React component with `block(){:jsx}` creates a block. A block is a special [**Higher Order Component (HOC)**](https://legacy.reactjs.org/docs/higher-order-components.html) that can be used as a React component but are hyper-optimized for rendering speed by rendering using Million.js.\n\nBut how can this be? How can we use blocks _**inside**_ of React? Isn't Million.js a completely different virtual DOM?\n\n<CarbonAds />\n\n## Anatomy of `block(){:jsx}`\n\nOnce you've created a block and use it as a React component, the following will occur during rendering:\n\n![React to Million mount](/react-to-million.png)\n\n<Steps>\n\n### React renders `<Loader />{:jsx}` component\n\nInitially, React is responsible for rendering the `<Loader />{:jsx}` component. This process involves creating the necessary DOM elements and applying any initial properties or styles. During this phase, React is managing the lifecycle and state of the component, allowing for rich features such as state management, lifecycle methods, and more.\n\n### React mounts `<Loader />{:jsx}` and puts the DOM element in the ref\n\nFollowing the rendering process, React then mounts the `<Loader />{:jsx}` component. This involves inserting the component into the DOM and making it visible to the user. At this point, React also updates the ref with the DOM element. A ref in React is a way to hold local state that doesn't invoke rendering, and in this case, it's being used to store a reference to the DOM element.\n\n### Million.js renders `<App />{:jsx}` into the ref\n\nFinally, the ref is handed over to Million.js, a fast, lightweight virtual DOM. Using the DOM reference stored in the ref, Million.js renders the `<App />{:jsx}` component directly into this element. This allows Million.js to manage the `<App />{:jsx}` component separately from React, leading to potential performance benefits and isolation of responsibilities.\n\n</Steps>\n\nThis pattern allows us to \"control\" the DOM element without React knowing about it. React will only know about the `<Loader />{:jsx}` component, and Million.js will only know about the `<App />{:jsx}` component.\n\n## Implementing `block(){:jsx}`\n\nWith this in mind, we can create a basic implementation of this pattern.\n\n<Callout type=\"info\">\n  Note: This is not the actual implemention, rather more a conceptual code\n  sample. [View the source\n  here.](https://github.com/aidenybai/million/blob/674b13047665009f8ab1281e77a00a017ddea6e9/packages/react/block.ts#L45)\n</Callout>\n\n<Steps>\n\n### Creating a HOC factory\n\nAn HOC factory consumes some React component and spits out our `<Loader />{:jsx}` component. The `<Loader />{:jsx}` component is responsible for rendering the DOM element and passing it to Million.js.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    return /*... */;\n  };\n};\n```\n\n### Grabbing the DOM element with `useRef(){:js}`\n\nWe can use the `useRef(){:js}` hook to grab the DOM element.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    const el = useRef(); // stores the DOM element\n\n    return <div ref={el}></div>;\n  };\n};\n```\n\n### Create an effect to render Million.js\n\nNow, we put it all together. We create a `<Effect />{:jsx}` component that runs an effect on mount. This effect is responsible for rendering the `<App />{:jsx}` component into the DOM element. We use `useCallback(){:js}` to create a stable closure reference to the effect.\n\nNotice how there are `Million.convert(){:js}` and `Million.render(){:js}` calls. These are not real, but they essentially create blocks and render it into the DOM element.\n\n```jsx\nconst block = (ReactComponent) => {\n  const MillionComponent = Million.convert(ReactComponent);\n  return function Loader(props) {\n    const el = useRef();\n\n    // 3. Million.js renders <App /> into the ref\n    const effect = useCallback(() => {\n      // useCallback is used as a stable closure reference\n      Million.render(MillionComponent, el.current);\n    }, []);\n\n    // 2. React mounts <Loader /> and puts the DOM element in the ref\n    return (\n      <>\n        <div ref={el}></div>\n        <Effect effect={effect} />\n      </>\n    );\n  };\n};\n\n// Effect is a component that runs an effect on mount\nfunction Effect({ effect }) {\n  useEffect(effect, []);\n  return null;\n}\n```\n\n</Steps>\n\n## Compiler, you're a wizard! 🧙\n\nOne major limitation of the runtime implementation is that it requires the user to pass in a stateless component. This is because the internal block implementation has [a number of limitations](/docs/block). However, we can use the compiler to get around this limitation.\n\nLet's say we have an `<Emotion />{:jsx}` component that has some `isSad` state, and based on that state, it renders a 😢 or 😂 emoji.\n\n```jsx\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? '😢' : '😂'}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nThe compiler can extract out the `isSad` state and convert it into a prop that Million.js can understand.\n\n```jsx\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return <Emotion_jsx_block _0={isSad ? '😢' : '😂'} />;\n}\n```\n\nBut what if we had another React component inside of `<Emotion />{:jsx}`?\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? <SadEmoji /> : <HappyEmoji />}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nSimilarly, this is extracted, but during rendering when it meets a component boundary, it will create a \"React render scope.\" Essentially, it delegates the responsibility of rendering the component to React.\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return (\n    <Emotion_jsx_block\n      _0={renderReactScope(isSad ? <SadEmoji /> : <HappyEmoji />)}\n    />\n  );\n}\n```\n\nAs you can see, the compiler is able to extract out the state and render it from a parent element. It can also recognize when it hits a component boundary and delegate the responsibility of rendering to React.\n\n## Not just Million.js\n\nWhile this article details how Million.js takes advantage of this pattern, it is not limited to just Million.js.\n\nFor any modern framework that can render into a DOM element, you can use the `<Loader />{:jsx}` and HOC pattern to render foreign framework components inside of React.\n\nA very similar concept is the [\"islands architecture\"](https://www.patterns.dev/posts/islands-architecture), which allows you to incapsulate any framework into static HTML. This is a bit different, instead of rendering into static HTML, it renders into a React tree.\n\n<div className=\"flex justify-center\">\n  <Image src=\"/foreign-tree.png\" width={350} height={500} />\n</div>\n\n## Why not a compatibility layer?\n\nJavaScript frameworks like [Preact](https://preactjs.com) and [Inferno](https://infernojs.org) have compatibility layers that allow them to masquerade as React components but with better performance. This has a lot of benefit, as it allows projects and engineering teams to move very fast without having to rewrite their entire codebase.\n\nBut it comes at a cost. Compatibility layers always have to play catch up. When React adds a new feature, the compatibility layer has to add support for it. Maintaining the same behavior is near impossible, especially emulating the same behavior and benefits of the React concurrency model.\n\n## Closing Thoughts\n\nBy using specific different rendering methodologies on a component-by-component basis, we can take advantage of the best of both worlds and use the right tool for the right job. Hopefully one day, we'll see more frameworks adopt this pattern. Because performance shouldn't be a tradeoff for migration.\n\n[Discuss on Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fbehind-the-block) | [Edit on GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/behind-the-block.mdx)\n\n## Acknowledgements\n\nThank you to [Ryan Carniato](https://twitter.com/ryancarniato) for creating an initial Solid.js inside React [proof-of-concept](https://stackblitz.com/edit/hr-meheraj-vite-react-zgzg43?file=src%2FApp.jsx) that inspired this article.\n\nLooking for more? Check out another [interesting read](https://pyjun01.github.io/v/million-js/) from [Yongjun Park\n](https://github.com/pyjun01).\n"
  },
  {
    "path": "website/pages/blog/behind-the-block.es-ES.mdx",
    "content": "---\ntitle: 'Detrás del block()'\ndate: 1 JUN, 2023\ndescription: ¿Cómo el block() funciona realmente en React?\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <Image src=\"/behind-the-block.png\" width={350} height={130} />\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Detrás del `block(){:jsx}`\n\n  <small>[AIDEN BAI](https://aidenybai.com) 1 JUN 2023</small>\n</div>\n\n---\n\nSi has usado Million.js por un tiempo, probablemente hayas escuchado de la función [`block(){:jsx}`](/docs/manual-mode/block).\n\n```jsx {8}\nfunction MyComponent() {\n  // ...\n}\n\nconst MyBlock = block(MyComponent);\n\nexport default function App() {\n  return <MyBlock />; // ✨ ¡Funciona! ✨\n}\n```\n\nEnvolviendo un componente de React con `block(){:jsx}` crea un block. Un block es un [**Componente de Alto Orden (HOC)**](https://legacy.reactjs.org/docs/higher-order-components.html) especial que puede ser usado como un componente de React pero está hiper-optimizado para la velocidad de renderizado al renderizar usando Million.js.\n\n¿Pero cómo puede ser esto? ¿Cómo podemos usar blocks **dentro** de React? ¿No es Million.js un virtual DOM completamente diferente?\n\n<CarbonAds />\n\n## Anatomía de un `block(){:jsx}`\n\nUna vez que hayas creado un block y lo uses como un componente de React, lo siguiente ocurrirá durante el renderizado:\n\n![React to Million mount](/react-to-million.png)\n\n<Steps>\n\n### React renderiza el componente `<Loader />{:jsx}`\n\nInicialmente, React es responsable de renderizar el componente `<Loader />{:jsx}`. Este proceso involucra la creación de los elementos DOM necesarios y la aplicación de cualquier propiedad o estilo inicial. Durante esta fase, React está administrando el ciclo de vida y el estado del componente, lo que permite funciones avanzadas como la gestión de estado, métodos del ciclo de vida y más.\n\n### React monta un `<Loader />{:jsx}` y pone al elemento del DOM en un ref\n\nSiguiendo el proceso de renderizado, React monta el componente `<Loader />{:jsx}`. Esto implica insertar el componente en el DOM y hacerlo visible para el usuario. En este punto, React también actualiza el ref con el elemento DOM. Un ref en React es una forma de mantener un estado local que no invoca el renderizado, y en este caso, se está utilizando para almacenar una referencia al elemento DOM.\n\n### Million.js renderiza `<App />{:jsx}` en el ref\n\nFinalmente, el ref se entrega a Million.js, un virtual DOM rápido y ligero. Usando la referencia DOM almacenada en el ref, Million.js renderiza el componente `<App />{:jsx}` directamente en este elemento. Esto permite que Million.js administre el componente `<App />{:jsx}` por separado de React, lo que conduce a posibles beneficios de rendimiento y aislamiento de responsabilidades.\n\n</Steps>\n\nEste patrón nos permite \"controlar\" el elemento DOM sin que React lo sepa. React solo sabrá sobre el componente `<Loader />{:jsx}`, y Million.js solo sabrá sobre el componente `<App />{:jsx}`.\n\n## Implementando `block(){:jsx}`\n\nCon esto en mente, podemos crear una implementación básica de este patrón.\n\n<Callout type=\"info\">\n  Nota: Esta no es la implementación exacta, y está es mas bien una muestra\n  simplificada [Ver código\n  fuente.](https://github.com/aidenybai/million/blob/674b13047665009f8ab1281e77a00a017ddea6e9/packages/react/block.ts#L45)\n</Callout>\n\n<Steps>\n\n### Creando un HOC factory\n\nUn HOC factory consume un componente de React y escupe nuestro componente `<Loader />{:jsx}`. El componente `<Loader />{:jsx}` es responsable de renderizar el elemento DOM y pasarlo a Million.js.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    return /*... */;\n  };\n};\n```\n\n## Tomando el elemento del DOM con `useRef(){:js}`\n\nPodemos usar el hook `useRef(){:js}` para tomar el elemento del DOM.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    const el = useRef(); // almacena el elemento del DOM\n\n    return <div ref={el}></div>;\n  };\n};\n```\n\n### Crea un efecto para renderizar Million.js\n\nAhora, pondremos todo junto. Creamos un componente `<Effect />{:jsx}` que ejecuta un efecto en el montaje. Este efecto es responsable de renderizar el componente `<App />{:jsx}` en el elemento DOM. Usamos `useCallback(){:js}` para crear una referencia de cierre estable al efecto.\n\nNota como hay llamadas `Million.convert(){:js}` y `Million.render(){:js}`. Estas no son reales, pero esencialmente crean bloques y los renderizan en el elemento DOM.\n\n```jsx\nconst block = (ReactComponent) => {\n  const MillionComponent = Million.convert(ReactComponent);\n  return function Loader(props) {\n    const el = useRef();\n\n    // 3. Million.js rendereriza <App /> en el ref\n    const effect = useCallback(() => {\n      // useCallback es utilizado como una referencia de cierre estable\n      Million.render(MillionComponent, el.current);\n    }, []);\n\n    // 2. React monta <Loader /> y pone al elemento del DOM en el ref\n    return (\n      <>\n        <div ref={el}></div>\n        <Effect effect={effect} />\n      </>\n    );\n  };\n};\n\n// Effect es un componente que corre un effect al momento de montarlo\nfunction Effect({ effect }) {\n  useEffect(effect, []);\n  return null;\n}\n```\n\n</Steps>\n\n## ¡Compilador, eres un hechicero! 🧙\n\nUna limitación importante de la implementación en tiempo de ejecución es que requiere que el usuario pase un componente sin estado. Esto se debe a que la implementación interna del block tiene [una serie de limitaciones](/docs/block). Sin embargo, podemos usar el compilador para evitar esta limitación.\n\nDigamos que tenemos un componente `<Emotion />{:jsx}` que tiene algún estado `isSad`, y basado en ese estado, renderiza un emoji 😢 o 😂.\n\n```jsx\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? '😢' : '😂'}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nEl compilador puede extraer el estado `isSad` y convertirlo en una prop que Million.js pueda entender.\n\n```jsx\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return <Emotion_jsx_block _0={isSad ? '😢' : '😂'} />;\n}\n```\n\n¿Pero que pasaría si tuvieramos otro componente de React dentro de `<Emotion />{:jsx}`?\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? <SadEmoji /> : <HappyEmoji />}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nSimilarmente, esto es extraído, pero durante el renderizado cuando se encuentra con un límite de componente, creará un \"scope de renderizado de React\". Esencialmente, delega la responsabilidad de renderizar el componente a React.\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return (\n    <Emotion_jsx_block\n      _0={renderReactScope(isSad ? <SadEmoji /> : <HappyEmoji />)}\n    />\n  );\n}\n```\n\nComo puedes ver, el compilador es capaz de extraer el estado y renderizarlo desde un elemento padre. También puede reconocer cuando llega a un límite de componente y delegar la responsabilidad de renderizar a React.\n\n## No solo Million.js\n\nMinetras este artículo detalla como Million.js aprovecha este patrón, no se limita solo a Million.js.\n\nPara cualquier framework moderno que pueda renderizar en un elemento DOM, puedes usar el `<Loader />{:jsx}` y el patrón HOC para renderizar componentes de otros frameworks dentro de React.\n\nUn concepto muy similar es la [\"arquitectura de islas\"](https://www.patterns.dev/posts/islands-architecture), que te permite incapsular cualquier framework en HTML estático. Esto es un poco diferente, en lugar de renderizar en HTML estático, renderiza en un árbol de React.\n\n<div className=\"flex justify-center\">\n  <Image src=\"/foreign-tree.png\" width={350} height={500} />\n</div>\n\n## ¿Por qué no una capa de compatibilidad?\n\nFrameworks JavaScript como [Preact](https://preactjs.com) y [Inferno](https://infernojs.org) tienen capas de compatibilidad que les permiten disfrazarse como componentes de React pero con un mejor rendimiento. Esto tiene muchos beneficios, ya que permite que los proyectos y los equipos de ingeniería se muevan muy rápido sin tener que reescribir todo su código base.\n\nPero viene con un costo. Las capas de compatibilidad siempre tienen que ponerse al día. Cuando React agrega una nueva función, la capa de compatibilidad tiene que agregar soporte para ella. Mantener el mismo comportamiento es casi imposible, especialmente emular el mismo comportamiento y beneficios del modelo de concurrencia de React.\n\n## Reflexiones finales\n\nUtilizando diferentes metodologías specificas de renderizado en una forma componente por componente, podemos aprovechar lo mejor de ambos mundos y usar la herramienta correcta para el trabajo correcto. Esperemos que algún día, veamos más frameworks adoptar este patrón. Porque el rendimiento no debería ser un compromiso para la migración.\n\n[Discutirlo en Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fbehind-the-block) | [Edit on GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/behind-the-block.mdx)\n\n## Agradecimientos\n\nGracia a ti [Ryan Carniato](https://twitter.com/ryancarniato) por crear un Solid.js inicial dentro de React [proof-of-concept](https://stackblitz.com/edit/hr-meheraj-vite-react-zgzg43?file=src%2FApp.jsx) que inspiró este artículo.\n\n¿Quieres saber mas? Da un vistazo a otra [lectura interesante](https://pyjun01.github.io/v/million-js/) de [Yongjun Park\n](https://github.com/pyjun01).\n"
  },
  {
    "path": "website/pages/blog/behind-the-block.fr-FR.mdx",
    "content": "---\ntitle: 'Derrière le block()'\ndate: JUN 1, 2023\ndescription: Alors, comment fonctionne réellement block() avec React ?\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <Image src=\"/behind-the-block.png\" width={350} height={130} />\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Derrière le `block(){:jsx}`\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUN 1 2023</small>\n</div>\n\n---\n\nSi vous utilisez Million.js depuis un certain temps, vous avez probablement entendu parler de la fonction [`block(){:jsx}`](/docs/manual-mode/block).\n\n```jsx\nfunction MyComponent() {\n  // ...\n}\n\nconst MyBlock = block(MyComponent);\n\nexport default function App() {\n  return <MyBlock />; // ✨ ça fonctionne ! ✨\n}\n```\n\nEnvelopper un composant React avec `block(){:jsx}` crée un bloc. Un bloc est un [**Composant d'Ordre Supérieur (HOC)**](https://legacy.reactjs.org/docs/higher-order-components.html) spécial qui peut être utilisé comme un composant React, mais qui est hyper-optimisé pour la vitesse de rendu en utilisant Million.js.\n\nMais comment est-ce possible ? Comment pouvons-nous utiliser des blocs à l'intérieur de React ? Million.js n'est-il pas un DOM virtuel complètement différent ?\n\n<CarbonAds />\n\n## Anatomie de `block(){:jsx}`\n\nUne fois que vous avez créé un bloc et l'utilisez comme un composant React, les étapes suivantes se produiront lors du rendu :\n\n![React to Million mount](/react-to-million.png)\n\n<Steps>\n\n### React rend le composant `<Loader />{:jsx}`\n\nInitialement, React est chargé de rendre le composant `<Loader />{:jsx}`. Ce processus implique la création des éléments DOM nécessaires et l'application de toutes les propriétés ou styles initiaux. Pendant cette phase, React gère le cycle de vie et l'état du composant, permettant des fonctionnalités avancées telles que la gestion de l'état, les méthodes de cycle de vie, et plus encore.\n\n### React monte `<Loader />{:jsx}` et place l'élément DOM dans la référence (ref)\n\nAprès le processus de rendu, React monte ensuite le composant `<Loader />{:jsx}`. Cela implique d'insérer le composant dans le DOM et le rendre visible pour l'utilisateur. À ce stade, React met également à jour la référence (ref) avec l'élément DOM. Une référence (ref) en React est une manière de stocker un état local qui n'entraîne pas de rendu, et dans ce cas, elle est utilisée pour conserver une référence à l'élément DOM.\n\n### Million.js rend `<App />{:jsx}` dans la référence (ref)\n\nEnfin, la référence (ref) est remise à Million.js, un DOM virtuel rapide et léger. En utilisant la référence (ref) stockée qui pointe vers l'élément DOM, Million.js rend directement le composant `<App />{:jsx}` dans cet élément. Cela permet à Million.js de gérer le composant `<App />{:jsx}` de manière indépendante de React, entraînant des avantages potentiels en termes de performances et d'isolation des responsabilités.\n\n</Steps>\n\nCe pattern nous permet de \"contrôler\" l'élément DOM sans que React ne le sache. React ne connaîtra que le composant `<Loader />{:jsx}`, et Million.js ne connaîtra que le composant `<App />{:jsx}`.\n\n## Mise en œuvre de `block(){:jsx}`\n\nEn gardant cela à l'esprit, nous pouvons créer une implémentation de base de ce modèle.\n\n<Callout type=\"info\">\n  Remarque : il ne s'agit pas de la mise en œuvre proprement dite, mais plutôt\n  d'un exemple de code conceptuel. exemple. [Voir la source\n  ici](https://github.com/aidenybai/million/blob/674b13047665009f8ab1281e77a00a017ddea6e9/packages/react/block.ts#L45)\n</Callout>\n\n<Steps>\n\n### Création d'une fabrique HOC\n\nUne fabrique HOC consomme un composant React et retourne notre composant `<Loader />{:jsx}`. Le composant `<Loader />{:jsx}` est responsable du rendu de l'élément DOM et de sa transmission à Million.js.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    return /*... */;\n  };\n};\n```\n\n### Récupération de l'élément DOM avec `useRef(){:js}`\n\nNous pouvons utiliser le crochet `useRef(){:js}` pour récupérer l'élément DOM.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    const el = useRef(); // stocke l'élément DOM\n\n    return <div ref={el}></div>;\n  };\n};\n```\n\n### Créer un effet pour rendre Million.js\n\nMaintenant, nous mettons tout en place. Nous créons un composant `<Effect />{:jsx}` qui exécute un effet lors du montage. Cet effet est responsable du rendu du composant `<App />{:jsx}` dans l'élément DOM. Nous utilisons `useCallback(){:js}` pour créer une référence de fermeture stable pour l'effet.\n\nRemarquez qu'il y a des appels `Million.convert(){:js}` et `Million.render(){:js}`. Ce ne sont pas de vrais appels, mais ils créent essentiellement des blocs et les rendent dans l'élément DOM.\n\n```jsx\nconst block = (ReactComponent) => {\n  const MillionComponent = Million.convert(ReactComponent);\n\n  return function Loader(props) {\n    const el = useRef();\n\n    // 3. Million.js rend <App /> dans la référence\n    const effect = useCallback(() => {\n      // useCallback est utilisé comme une référence stable pour la fermeture\n      Million.render(MillionComponent, el.current);\n    }, []);\n\n    // 2. React monte <Loader /> et place l'élément DOM dans la référence\n    return (\n      <>\n        <div ref={el}></div>\n        <Effect effect={effect} />\n      </>\n    );\n  };\n};\n\n// Effect est un composant qui exécute un effet à la création\nfunction Effect({ effect }) {\n  useEffect(effect, []);\n  return null;\n}\n```\n\n</Steps>\n\n## Compilateur, tu es un sorcier ! 🧙\n\nUne limitation majeure de l'implémentation en cours d'exécution est qu'elle exige que l'utilisateur passe une composante sans état. Cela est dû aux nombreuses limitations de l'implémentation interne du bloc ([voir ici](/docs/block)). Cependant, nous pouvons contourner cette limitation en utilisant le compilateur.\n\nSupposons que nous ayons un composant `<Emotion />{:jsx}` qui a un état `isSad`, et en fonction de cet état, il rend un emoji 😢 ou 😂.\n\n```jsx\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? '😢' : '😂'}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nLe compilateur peut extraire l'état `isSad` et le convertir en une prop que Million.js peut comprendre.\n\n```jsx\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return <Emotion_jsx_block _0={isSad ? '😢' : '😂'} />;\n}\n```\n\nMais que se passe-t-il si nous avons un autre composant React à l'intérieur de `<Emotion />{:jsx}` ?\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? <SadEmoji /> : <HappyEmoji />}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nDe même, cela est extrait, mais lors du rendu, lorsqu'il atteint une limite de composant, il créera un \"scope de rendu React\". Essentiellement, il délègue la responsabilité du rendu du composant à React.\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return (\n    <Emotion_jsx_block\n      _0={renderReactScope(isSad ? <SadEmoji /> : <HappyEmoji />)}\n    />\n  );\n}\n```\n\nComme vous pouvez le voir, le compilateur est capable d'extraire l'état et de le rendre à partir d'un élément parent. Il peut également reconnaître lorsqu'il atteint une limite de composant et déléguer la responsabilité du rendu à React.\n\n## Pas seulement Million.js\n\nBien que cet article détaille comment Million.js tire parti de ce motif, il n'est pas limité à Million.js.\n\nPour n'importe quel framework moderne capable de rendre dans un élément DOM, vous pouvez utiliser le motif `<Loader />{:jsx}` et le modèle HOC pour rendre des composants d'un autre framework à l'intérieur de React.\n\nUn concept très similaire est l'[\"architecture des îles\"](https://www.patterns.dev/posts/islands-architecture), qui vous permet d'encapsuler n'importe quel framework dans du HTML statique. C'est un peu différent, au lieu de rendre dans du HTML statique, il rend dans un arbre React.\n\n<div className=\"flex justify-center\">\n  <Image src=\"/foreign-tree.png\" width={350} height={500} />\n</div>\n\n## Pourquoi pas une couche de compatibilité ?\n\nLes frameworks JavaScript comme [Preact](https://preactjs.com) et [Inferno](https://infernojs.org) ont des couches de compatibilité qui leur permettent de se faire passer pour des composants React mais avec de meilleures performances. Cela a de nombreux avantages, car cela permet aux projets et aux équipes d'ingénierie de progresser rapidement sans avoir à réécrire l'intégralité de leur code.\n\nMais cela a un coût. Les couches de compatibilité doivent toujours rattraper leur retard. Lorsque React ajoute une nouvelle fonctionnalité, la couche de compatibilité doit la prendre en charge. Maintenir le même comportement est presque impossible, surtout émuler le même comportement et les avantages du modèle de concurrence React.\n\n## Pensées finales\n\nEn utilisant des méthodologies de rendu spécifiques sur une base composant par composant, nous pouvons tirer parti du meilleur des deux mondes et utiliser le bon outil pour le bon travail. Espérons qu'un jour, nous verrons plus de frameworks adopter ce motif. Parce que la performance ne devrait pas être un compromis pour la migration.\n\n[Discuter sur Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fbehind-the-block) | [Modifier sur GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/behind-the-block.mdx)\n\n## Remerciements\n\nMerci à [Ryan Carniato](https://twitter.com/ryancarniato) d'avoir créé un [prototype initial](https://stackblitz.com/edit/hr-meheraj-vite-react-zgzg43?file=src%2FApp.jsx) de Solid.js à l'intérieur de React qui a inspiré cet article.\n\nVous en voulez plus ? Découvrez une autre [lecture intéressante](https://pyjun01.github.io/v/million-js/) de [Yongjun Park](https://github.com/pyjun01).\n"
  },
  {
    "path": "website/pages/blog/behind-the-block.zh-CN.mdx",
    "content": "---\ntitle: 'Behind the block()'\ndate: JUN 1, 2023\ndescription: So how does block() really work with React?\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <Image src=\"/behind-the-block.png\" width={350} height={130} />\n</div>\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Behind the `block(){:jsx}`\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUN 1 2023</small>\n</div>\n\n---\n\nIf you've used Million.js for a while, you've probably heard of the [`block(){:jsx}`](/docs/manual-mode/block) function.\n\n```jsx {8}\nfunction MyComponent() {\n  // ...\n}\n\nconst MyBlock = block(MyComponent);\n\nexport default function App() {\n  return <MyBlock />; // ✨ it works! ✨\n}\n```\n\nWrapping a React component with `block(){:jsx}` creates a block. A block is a special [**Higher Order Component (HOC)**](https://legacy.reactjs.org/docs/higher-order-components.html) that can be used as a React component but are hyper-optimized for rendering speed by rendering using Million.js.\n\nBut how can this be? How can we use blocks _**inside**_ of React? Isn't Million.js a completely different virtual DOM?\n\n<CarbonAds />\n\n## Anatomy of `block(){:jsx}`\n\nOnce you've created a block and use it as a React component, the following will occur during rendering:\n\n![React to Million mount](/react-to-million.png)\n\n<Steps>\n\n### React renders `<Loader />{:jsx}` component\n\nInitially, React is responsible for rendering the `<Loader />{:jsx}` component. This process involves creating the necessary DOM elements and applying any initial properties or styles. During this phase, React is managing the lifecycle and state of the component, allowing for rich features such as state management, lifecycle methods, and more.\n\n### React mounts `<Loader />{:jsx}` and puts the DOM element in the ref\n\nFollowing the rendering process, React then mounts the `<Loader />{:jsx}` component. This involves inserting the component into the DOM and making it visible to the user. At this point, React also updates the ref with the DOM element. A ref in React is a way to hold local state that doesn't invoke rendering, and in this case, it's being used to store a reference to the DOM element.\n\n### Million.js renders `<App />{:jsx}` into the ref\n\nFinally, the ref is handed over to Million.js, a fast, lightweight virtual DOM. Using the DOM reference stored in the ref, Million.js renders the `<App />{:jsx}` component directly into this element. This allows Million.js to manage the `<App />{:jsx}` component separately from React, leading to potential performance benefits and isolation of responsibilities.\n\n</Steps>\n\nThis pattern allows us to \"control\" the DOM element without React knowing about it. React will only know about the `<Loader />{:jsx}` component, and Million.js will only know about the `<App />{:jsx}` component.\n\n## Implementing `block(){:jsx}`\n\nWith this in mind, we can create a basic implementation of this pattern.\n\n<Callout type=\"info\">\n  Note: This is not the actual implemention, rather more a conceptual code\n  sample. [View the source\n  here.](https://github.com/aidenybai/million/blob/674b13047665009f8ab1281e77a00a017ddea6e9/packages/react/block.ts#L45)\n</Callout>\n\n<Steps>\n\n### Creating a HOC factory\n\nAn HOC factory consumes some React component and spits out our `<Loader />{:jsx}` component. The `<Loader />{:jsx}` component is responsible for rendering the DOM element and passing it to Million.js.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    return /*... */;\n  };\n};\n```\n\n### Grabbing the DOM element with `useRef(){:js}`\n\nWe can use the `useRef(){:js}` hook to grab the DOM element.\n\n```jsx\nconst block = (ReactComponent) => {\n  return function Loader(props) {\n    const el = useRef(); // stores the DOM element\n\n    return <div ref={el}></div>;\n  };\n};\n```\n\n### Create an effect to render Million.js\n\nNow, we put it all together. We create a `<Effect />{:jsx}` component that runs an effect on mount. This effect is responsible for rendering the `<App />{:jsx}` component into the DOM element. We use `useCallback(){:js}` to create a stable closure reference to the effect.\n\nNotice how there are `Million.convert(){:js}` and `Million.render(){:js}` calls. These are not real, but they essentially create blocks and render it into the DOM element.\n\n```jsx\nconst block = (ReactComponent) => {\n  const MillionComponent = Million.convert(ReactComponent);\n  return function Loader(props) {\n    const el = useRef();\n\n    // 3. Million.js renders <App /> into the ref\n    const effect = useCallback(() => {\n      // useCallback is used as a stable closure reference\n      Million.render(MillionComponent, el.current);\n    }, []);\n\n    // 2. React mounts <Loader /> and puts the DOM element in the ref\n    return (\n      <>\n        <div ref={el}></div>\n        <Effect effect={effect} />\n      </>\n    );\n  };\n};\n\n// Effect is a component that runs an effect on mount\nfunction Effect({ effect }) {\n  useEffect(effect, []);\n  return null;\n}\n```\n\n</Steps>\n\n## Compiler, you're a wizard! 🧙\n\nOne major limitation of the runtime implementation is that it requires the user to pass in a stateless component. This is because the internal block implementation has [a number of limitations](/docs/block). However, we can use the compiler to get around this limitation.\n\nLet's say we have an `<Emotion />{:jsx}` component that has some `isSad` state, and based on that state, it renders a 😢 or 😂 emoji.\n\n```jsx\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? '😢' : '😂'}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nThe compiler can extract out the `isSad` state and convert it into a prop that Million.js can understand.\n\n```jsx\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return <Emotion_jsx_block _0={isSad ? '😢' : '😂'} />;\n}\n```\n\nBut what if we had another React component inside of `<Emotion />{:jsx}`?\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion() {\n  const [isSad, setIsSad] = useState(true);\n  return <div>{isSad ? <SadEmoji /> : <HappyEmoji />}</div>;\n}\n\nconst EmotionBlock = block(Emotion);\n```\n\nSimilarly, this is extracted, but during rendering when it meets a component boundary, it will create a \"React render scope.\" Essentially, it delegates the responsibility of rendering the component to React.\n\n```jsx\nfunction SadEmoji() {\n  return '😢';\n}\n\nfunction HappyEmoji() {\n  return '😂';\n}\n\nfunction Emotion_jsx({ _0 }) {\n  return <div>{_0}</div>;\n}\n\nconst Emotion_jsx_block = block(Emotion_component);\n\nfunction EmotionBlock() {\n  const [isSad, setIsSad] = useState(true);\n  return (\n    <Emotion_jsx_block\n      _0={renderReactScope(isSad ? <SadEmoji /> : <HappyEmoji />)}\n    />\n  );\n}\n```\n\nAs you can see, the compiler is able to extract out the state and render it from a parent element. It can also recognize when it hits a component boundary and delegate the responsibility of rendering to React.\n\n## Not just Million.js\n\nWhile this article details how Million.js takes advantage of this pattern, it is not limited to just Million.js.\n\nFor any modern framework that can render into a DOM element, you can use the `<Loader />{:jsx}` and HOC pattern to render foreign framework components inside of React.\n\nA very similar concept is the [\"islands architecture\"](https://www.patterns.dev/posts/islands-architecture), which allows you to incapsulate any framework into static HTML. This is a bit different, instead of rendering into static HTML, it renders into a React tree.\n\n<div className=\"flex justify-center\">\n  <Image src=\"/foreign-tree.png\" width={350} height={500} />\n</div>\n\n## Why not a compatibility layer?\n\nJavaScript frameworks like [Preact](https://preactjs.com) and [Inferno](https://infernojs.org) have compatibility layers that allow them to masquerade as React components but with better performance. This has a lot of benefit, as it allows projects and engineering teams to move very fast without having to rewrite their entire codebase.\n\nBut it comes at a cost. Compatibility layers always have to play catch up. When React adds a new feature, the compatibility layer has to add support for it. Maintaining the same behavior is near impossible, especially emulating the same behavior and benefits of the React concurrency model.\n\n## Closing Thoughts\n\nBy using specific different rendering methodologies on a component-by-component basis, we can take advantage of the best of both worlds and use the right tool for the right job. Hopefully one day, we'll see more frameworks adopt this pattern. Because performance shouldn't be a tradeoff for migration.\n\n[Discuss on Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fbehind-the-block) | [Edit on GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/behind-the-block.mdx)\n\n## Acknowledgements\n\nThank you to [Ryan Carniato](https://twitter.com/ryancarniato) for creating an initial Solid.js inside React [proof-of-concept](https://stackblitz.com/edit/hr-meheraj-vite-react-zgzg43?file=src%2FApp.jsx) that inspired this article.\n\nLooking for more? Check out another [interesting read](https://pyjun01.github.io/v/million-js/) from [Yongjun Park\n](https://github.com/pyjun01).\n"
  },
  {
    "path": "website/pages/blog/lint.en-US.mdx",
    "content": "---\ntitle: Million Lint is in public beta\ndate: FEB 29, 2024\ndescription: We couldn't wait to share it with you!\n---\n\nimport { Steps, Callout, Tabs, Tab } from 'nextra-theme-docs';\nimport Image from 'next/image';\n\n<div className=\"flex flex-col items-center gap-2 pt-8\">\n\n<Image src=\"/lint/logo.png\" alt=\"Million Lint\" height={520} width={1200} />\n\n# Million Lint is in public beta\n\n<small>[Aiden Bai](https://twitter.com/aidenybai), [John Yang](https://twitter.com/fiveseveny), [Nisarg Patel](https://twitter.com/nisargptel) – February 29, 2024</small>\n\n</div>\n\n---\n\nIt’s launch time. After three months and hundreds of commits, we invite you to try out **Million Lint**. The experience is not finished – there are a few known bugs and several missing features – but we are really happy with how it's shaping up and couldn't wait to share it with you.\n\nGet started in one command by running this in any React app:\n\n```bash copy\nnpx @million/lint@latest\n```\n\n<details>\n  <summary>\n    Set up failed? Click here to follow the guide.\n  </summary>\n\n<Steps>\n\n### Install NPM package\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install @million/lint@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install @million/lint@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add @million/lint@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add @million/lint@latest\n  ```\n  </Tab>\n</Tabs>\n\n### Install VSCode extension\n\nGo to the [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=million.million-lint) and install the Million Lint extension.\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite','Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport MillionCompiler from '@million/lint';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nexport default MillionCompiler.next({ \n  rsc: true // if used in the app router mode\n})(nextConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport MillionCompiler from \"@million/lint\";\n\nexport default defineConfig({\n   vite: {\n     plugins: [MillionCompiler.vite()],\n   },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst MillionCompiler = require(\"@million/lint\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [MillionCompiler.webpack()],\n  });\n};\n````\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport MillionCompiler from \"@million/lint\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [MillionCompiler.vite(), react()],\n});\n````\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport MillionCompiler from \"@million/lint\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [MillionCompiler.vite(), remix()],\n});\n```\n</Tab>\n\n<Tab>\n  <Callout type=\"warning\">\n    If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n  </Callout>\n\n```js filename=\"craco.config.js\"\nconst MillionCompiler = require('@million/lint');\n\nmodule.exports = {\n  plugins: [MillionCompiler.craco({ legacyHmr: true })],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst MillionCompiler = require(\"@million/lint\");\n\nmodule.exports = {\n  plugins: [MillionCompiler.webpack()],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport MillionCompiler from \"@million/lint\";\n\nexport default {\n  plugins: [MillionCompiler.rollup()],\n};\n```\n</Tab>\n</Tabs>\n\n### Run your app!\n\n</Steps>\n\n</details>\n\nLet us know if you have any [questions or feedback](https://million.dev/chat)!\n\n## What is Million Lint?\n\nMillion Lint is a VSCode extension that keeps your React website fast. We identify slow code and provide suggestions to fix it. It’s like ESLint, but for performance!\n\nMany developers try to use tools like React Devtools to find unnecessary renders. Unfortunately, most lack the knowledge to properly manage the complexity.\n\nSee the difference between React Devtools and Million Lint:\n\n<Tabs items={['React Devtools', 'Million Lint']}>\n\n<Tab>\n_Feeling lost? Yeah, us too (+99% of all devs)_\n\n![React Profiler Flamegraph](/lint/profiler.jpeg)\n\n</Tab>\n\n<Tab>\n_Get profile information within VSCode!_\n\n<div className=\"pt-4\">\n<video src=\"/lint/renders.mp4\" controls autoPlay />\n</div>\n\n</Tab>\n\n</Tabs>\n\nComplicated tools means developers give up. Every developer knows this experience: we insert `console.log` everywhere, catch some promising leads, but nothing happens before \"time runs out.\" Eventually, the slow/buggy code never gets fixed, problems pile up on a backlog, and our end users are hurt.\n\nAre there no better ways to surface performance issues?\n\n### You vs. profilers\n\nExisting instrumentation tools (Sentry, Datadog, etc.) show you the “entire universe” of web data. This can include every function call, network request, user interaction, core web vital, screenshot, memory … a dizzying amount of information to process. As such, these tools have interfaces that are overwhelming.\n\nAs for React & Chrome Devtools, they are simply unusable if you don't know what you are doing. And even if you do, it is hard to tell which part of the component re-rendered, or which hook or prop caused this change. Unless you are an expert, the current experience of performance debugging is hostile to most developers.\n\n### Compiler or runtime?\n\nJavaScript compilers enable us to perform static analysis on source code. For performance optimization, static analysis is great for breadth – by writing rules, developers can surface problems across the entire code base. This is why ESLint is so great. The tradeoff is that we can't predict how slow an operation will be without actually running it, making it impossible to implement Million Lint solely as a compiler.\n\nAnother approach is thus instrumenting at runtime. The advantage here is we can directly run the app and get rendering information (via the [React Fiber](https://blog.logrocket.com/deep-dive-react-fiber/)), so many of the complexity challenges with static analysis are instantly solved. However, the tradeoff with runtime is that you don’t have the original source (unless you use source maps, which are painful and slow). \"Which hook or prop caused this change?\" \"Which part of the component re-rendered?\" We couldn’t answer these questions without the source code.\n\n### In search of a better way\n\nSo we went back to the drawing board. For Million Lint, we asked ourselves: how can we have the best of both worlds? We needed to create an profiling experience that didn’t hog build time or runtime; then, support a debugging flow that helped developers find performance problems fast.\n\nOur answer is dynamic analysis – using both static analysis and runtime analysis where it makes sense. Instead of filtering top-down, we follow the necessary data flow to understand each component render and build up from there. This resulted in our custom instrumentation library, designed specifically for React apps.\n\n## _import MillionCompiler from '@million/lint';_\n\nThe Million Lint experience starts with a compiler running dynamic analysis on individual React components.\n\nFirst, the compiler inject handlers:\n\n<Tabs items={['Compiled', 'Raw source']}>\n<Tab>\n```jsx /Million.capture/\nfunction App({ start }) {\n\n  Million.capture({ start });  // ✨ inject\n  const [count, setCount] = Million.capture(useState)(start);  // ✨ inject\n\n  useEffect(\n    () => {\n      console.log(\"double: \", count * 2);\n    },\n    Million.capture([count]),  // ✨ inject\n  );\n\n  return Million.capture(  // ✨ inject\n    <Button onClick={() => setCount(count + 1)}>{count}</Button>,\n  );\n}\n```\n</Tab>\n<Tab>\n```jsx\nfunction App({ start }) {\n\n  const [count, setCount] = useState(start);\n\n  useEffect(() => {\n    console.log('double: ', count * 2);\n  }, [count]);\n\n  return <Button onClick={() => setCount(count + 1)}>{count}</Button>;\n}\n```\n\n</Tab>\n</Tabs>\n\nDuring runtime, these inject handlers capture render, timing, and metadata information as you interact with your web app in dev mode. With this approach, we can get runtime profiling data from running the app, while keeping access to the source code thanks to the JavaScript compiler!\n\n```jsx\n// psuedo code of collected data:\n[\n  {\n    kind: 'state',\n    count: 7,\n    time: 0.1,\n    changes: [{ prev: 0, next: 8 }, ...],\n  },\n  // and so on...\n];\n```\n\nAfter capturing the renders, we extend the compiler to asynchronously collect bundle, network, and state manager information without build time overhead. These real-time insights are then fed into the VSCode extension, where you can see the collected information and suggestions to fix it.\n\n<Tabs items={['Render information', 'Bundle sizes']}>\n\n<Tab>\n\n<video src=\"/lint/renders.mp4\" controls autoPlay />\n\n</Tab>\n\n<Tab>\n\n<video src=\"/lint/bundles.mp4\" controls autoPlay />\n\n</Tab>\n\n</Tabs>\n\nLastly, we made **Lint++**, which feeds the collected information into a language model to discover optimization opportunities. So even if you don’t know what you’re doing – Million Lint will show you how!\n\n<div className=\"pt-6\">\n<video src=\"/lint/lint-plus-plus.mp4\" controls />\n</div>\n\n## How good is Lint++?\n\nMeasuring the objective quality of **Lint++** requires a non-trivial dataset, so we are working on an open source React web app optimization benchmark for code-gen models (coming soon!). For now, we have tested **Lint++** on a dozen in-production products between our friends. For a public example, **Lint++** was able to identify and suggest the correct fix to every problem in [a slow, educational React app](https://github.com/3perf/react-workshop-ra) our friend [Ivan Akulov](https://twitter.com/iamakulov) built.\n\nAfter running **Lint++** on Ivan's `notes` app, it labeled the following problems across 6 components:\n\n- Unstable reference as prop optimization\n- Memoizing expensive components\n- Caching inline functions\n- Suggesting virtualization\n- Suggesting `use-context-selector` > `useContext`\n- Moving context providers up the tree\n\nWe invited an engineer who's never seen the code base before to try speed up the `notes` app. Using Million Lint, he 3x'd the performance of the main page after ~15 minutes of work.\n\n<div className=\"pt-6\">\n<video src=\"/lint/comparison.mp4\" controls />\n</div>\n\nOf course, `notes` is a small app, and Million Lint wouldn't always find the best fix for every problem. We are working hard to improve its quality – try and please let us know about your experience!\n\n## How will we make money from this?\n\nIn the next few weeks, we will open source the Million Lint compiler and the VSCode extension. Both the compiler and in-editor annotations are free to use forever. Our focus is to build a great developer tool, and we believe that the best way to build a great developer tool is to build it in the open.\n\nTo earn a living, we will charge the **Lint++** service at $20 per month for 100 lints. For more frequent users, we are still working on the details, but the idea is to charge based on the number of lints you translate to code. We believe this aligns our incentives with yours: we only make money when we make your app faster.\n\n## The road to Million Lint 1.0\n\nWe are still in the very early days of experimentation! Million Lints focuses on solving unnecessary re-renders right now (but we understand this is [not a problem](https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024) for long 🫡) and will move on to handling slow-downs arising from the React ecosystem: state managers, animations, bundle sizes, waterfalls, etc. Our eventual goal is to create a toolchain which keeps your whole web infrastructure fast, automatically - frontend to backend.\n\nWe would like to [invite you on this journey](https://million.dev/chat) with us to make the best possible web performance developer tool. Million Lint is our very first step. Try it out and let us know what pieces are missing!\n\n## How can I help?\n\nWe are looking for talented frontend and pl/ml engineers to join us in the Bay Area.\n\nAt Million, we have a simple thesis for software performance – we can build tools that make *anyone* a performance expert. Developers should think only of shipping features and fixing bugs – not keeping their code fast. We plan to start with React, then extend to the broader frontend, backend, and other platforms.\n\nIf you feel like you missed the beginning of Million.js, get in on this. The fun of the beginning is how much you get to shape 🔜 [My email](mailto:aiden@million.dev)\n\n<br />\n\n<div className=\"flex flex-col items-center gap-4 pt-4\">\n  <Image src=\"/lint/team.png\" alt=\"the Million team\" height={450} width={600} />\n  <small>\n    _the Million team + [Ivan Akulov](https://twitter.com/iamakulov) fixing\n    React performance one step at a time. Join us!_\n  </small>\n</div>\n"
  },
  {
    "path": "website/pages/blog/million-3.en-US.mdx",
    "content": "---\ntitle: 'Announcing Million 3'\ndate: FEB 2, 2024\ndescription: Compiler overhaul, stability improvements, and the road ahead.\n---\n\nimport Thumbnail from '../../public/v3-thumbnail.png';\nimport Image from \"next/image\"\n\n<div className=\"flex justify-center mt-5\">\n  <Image src={Thumbnail} width=\"100%\" />\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Announcing Million 3\n\n  <small>[AIDEN BAI](https://twitter.com/aidenybai), [NISARG PATEL](https://twitter.com/nisargptel), [JOHN YANG](https://twitter.com/fiveseveny) – FEB 2 2024</small>\n</div>\n\n---\n\nAfter many months of development (_and one [soft launch](https://twitter.com/aidenybai/status/1732812329434423647) later_), we are **so excited** to finally release Million 3. Thousands of hours have gone into this release by the Million community, including the core team, contributors, and many Discord members who have helped us test and provide feedback.\n\n## What is Million?\n\nMillion is an optimizing compiler for React. The React virtual DOM represents the user interface (UI) as a tree. Every time a component (node) renders, React traverses the virtual DOM tree to update the UI, resulting in `O(n)` time complexity. As your website grows, this can lead to sluggish user experiences.\n\nMillion takes a fundamentally different approach. It still represents a UI as a tree, but it discriminates between nodes. In an application, some nodes will never change (static text, images, etc.), while others will change frequently (user input, dynamic data, etc.). Instead of traversing every node, Million uses a compiler to directly update dynamic nodes, resulting in `O(1)` time complexity.\n\nSince launching Million 1 & 2, we have found that this approach works exceptionally well for data-heavy UIs, like dashboard with real-time information. However, there were certain caveats – some common libraries were not compatible, non-deterministic returns could not be optimized, and the compiler was not as stable as we would like.\n\nMillion 3 is a signficant update that solves these issues. We believe that Million 3 is the best way to build React applications, and we are excited to share it with you.\n\n<div className=\"mt-3 flex justify-center\">\n  <iframe\n    width=\"560\"\n    height=\"315\"\n    src=\"https://www.youtube.com/embed/VkezQMb1DHw?si=dHe45lhM2uTOBQP9\"\n    title=\"YouTube video player\"\n    frameBorder=\"0\"\n    allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n    allowFullscreen\n  ></iframe>\n</div>\n\n## What's new?\n\n### Performance\n\nThe biggest challenge with Million 2 was hydration. In React, hydration is the process of attaching event listeners to the server-rendered HTML – making the page interactive. Just like how the virtual DOM needs to be traversed, hydration is also `O(n)` time complexity. This means that as your application grows, hydration can become a bottleneck.\n\n```jsx 2-5\n// Normally, React SSR will traverse every node in the component (👎 ❌)\n<div>\n  <h1>Hello, world!</h1>\n  <button onClick={handleClick}>{count}</button>\n</div>\n```\n\nIn Million 3, we have introduced a new hydration system that only traverses the parts of the component that are dynamic, resulting in `O(d)` time complexity (where `d` is the number of dynamic nodes, `d` ≤ `n`).\n\n```jsx /{count}/ /{handleClick}/\n// Million 3 only hydrates `handleClick` and `count` (✨ ✅)\n<div>\n  <h1>Hello, world!</h1>\n  <button onClick={handleClick}>{count}</button>\n</div>\n```\n\nWe are also currently working on removing `<slot>` elements. In Million 2, this was necessary to mount blocks and portals properly, but often resulted in extra memory overhead and issues with parent-dependent styling (such as `flex-box` or `grid`). We expect to ship a full revamp of this system in the next minor release.\n\n### Stability\n\nOne of the major focuses of this release was to improve the stability of the developer experience.\n\nMillion 3 is a complete rewrite of the compiler. We have refactored based on correctness, to cover significantly more edge cases. These include: better TypeScript support, multiple returns, conditionals support, and handling of nested React components. This means that you can expect a more seamless and stable experience when using Million 3.\n\nIn the next few minor releases, we will be focusing on improving the performance of the compiler. This will make Million 3.x even faster and more reliable.\n\n### Docs & i18n upgrade\n\nThe official [million.dev](https://million.dev) site has gotten an overhaul. We have added a new i18n system, so the site is now available in multiple languages! In addition, the documentation has been reorganized to show automatic mode as the default and manual mode as an advanced feature.\n\n## Upgrading to version 3\n\nYour current 2.x.x code should work with 3.x.x with no changes. To upgrade, simply run:\n\n```bash\nnpx million@latest\n```\n\nThat's all!\n\n## The road ahead\n\nIn the coming weeks, the Million team will ship a suite of developer tools to redefine how frontend engineering teams approach <span className=\"underline decoration-wavy text-amber-500 decoration-amber-600\">debugging</span>, fixing, and maintaining web performance. Our mission is to enable developers to deliver fast software effortlessly: with any system, on any platform.\n\nToday, dealing with performance issues is a nightmare. The status quo is navigating through React Devtools, `Profiler`, Chrome Devtools, `why-did-you-render`, Forget, and the lot. This is a fundamentally broken experience, leading to some developers spending more time debugging rerenders than shipping features.\n\nEven within the React ecosystem, there is a basic lack of understanding on how to enable developers to build and maintain fast applications. Frameworks like Next.js and Gatsby have made it easier to build performant websites, but they can't optimize inefficiently implemented code. Hosting services scale as your application grows, but they can't fix a poorly designed architecture.\n\nWe need to build tools that make it easy to deliver fast applications, regardless of the framework, platform, or the size of your engineering team.\n\nAt Million, we have a simple thesis for software performance – we can build tools that make _existing_ tooling fast and easy to use. Developers should think only of shipping features and fixing bugs – not keeping their apps fast. We plan to start with React, then extend to the roader frontend, backend, and other platforms.\n\nI invite you to join Million on this journey. We are looking for talented frontend (dev tools) and pl/ml engineers to join us in the Bay Area. If you are interested, please email [aiden@million.dev](aiden@million.dev) with your resume and something you built using Million.\n\nLet's make the future of software fast, together.\n\n## Acknowledgements\n\nThank you to the many contributors who made this release possible. Special thanks to [@lxsmnsyc](https://twitter.com/lxsmnsyc), [@nisargptel](https://twitter.com/nisargptel), [@fiveseveny](https://twitter.com/fiveseveny), [@melindachang](https://github.com/melindachang) for their contributions to this release.\n\nFeel free to ask questions and reach out to us on [Twitter](https://twitter.com/milliondotjs) or [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/blog/million-3.es-ES.mdx",
    "content": "---\ntitle: 'Anunciando Million.js 3.0'\ndate: 7 DEC, 2023\ndescription: Rendimiento actualizado para ambos, compilador y tiempo de ejecución\n---\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Anunciando Million 3.0\n\n  <small>[AIDEN BAI](https://aidenybai.com) 7 DEC 2023</small>\n</div>\n\n---\n\nDespués de vatios meses de duro trabajo, estoy emocionado de anunciar el lanzamiento de Million 3.0. Dentro de la próxima semana, lanzaremos una versión publicada oficialmente. Pronto, podrás obtener una serie de nuevas funciones y mejoras en la biblioteca.\n\nIncluso si cambiamos la forma en que funcionan las cosas internamente, Million 3.0 debería ser un reemplazo directo para todos. Puedes actualizar a la última versión sin ningún cambio al código.\n\nSi no has probado Million.js aún, puedes [consultar la documentación](/docs/quickstart) para comenzar. O simplemente ejecuta `npx million@latest` para comenzar. Million.js es un compilador que convierte tu código React existente en un DOM virtual hiper-optimizado. Es un reemplazo directo para React que es más rápido y más pequeño.\n\n## ¿Qué es lo nuevo?\n\n### Tiempo de compilación mas rápido\n\nEste lanzamiento incluye una revisión completa del compilador para que sea más eficiente, legible y escalable. Nuestras pruebas iniciales muestran una gran mejora desde la versión anterior: ~34% más rápido (3.2s -> 2.1s) para la compilación inicial y ~82% (1.1s -> 0.2s) para los cambios de código en un proyecto Next.js de tamaño mediano.\n\nTmabién hemos agregado una suite de pruebas legítima para asegurarnos de que el compilador funcione como se esperaba. Esto nos ayudará a detectar errores y regresiones en el futuro.\n\nEsto nos permite dar soporte a más funciones y optimizaciones en el futuro sin comprometer la experiencia del desarrollador. Esté atento a herramientas de diagnóstico, sidecar y gadgets de IA pronto 👀\n\n### Timpo de ejecución más rápido\n\nMillion 3.0 refactoriza cómo se realiza la hidratación. En lugar de reemplazar el DOM en los límites del componente, Million.js ahora puede señalar la hidratación, lo que resulta en tiempos de hidratación significativamente más rápidos dentro de los blocks.\n\nTambién estamos trabajando en eliminar la dependencia de los elementos `<slot>` para montar blocks; para muchos proyectos, esta es una reducción significativa en los nodos DOM innecesarios, mejorando la reconciliación y reduciendo el uso de memoria.\n\nCon estos cambios, estamos viendo una mejora inicial de ~100% (2s -> 1s) en los tiempos de hidratación (4x ralentización del CPU) y una generación de elementos `<slot>` mucho menor para un proyecto Next.js de tamaño mediano.\n\n## Migrando a 3.0\n\nLa migración es fácil. Simplemente actualiza tus dependencias a la última versión de Million.js. Únicamente ejecuta `npm install million@latest` (o tu administrador de paquetes favorito) para comenzar.\n\n## El camino por delante\n\nEl futuro de Million.js es ser el conjunto de herramientas de rendimiento por defecto para la web. En las próximas semanas, enviaremos algunas herramientas extremadamente poderosas y novedosas para ayudarte a crear sitios web más rápidos.\n\nJunto con las nuevas funciones, estaremos lanzando un nuevo sitio web y documentación para ayudarte a comenzar. También enviaremos un nuevo kitchen sink para mostrar algunas de las nuevas funciones.\n\n## Agradecimientos\n\nGracias a todos los que han [contribuido a Million.js](https://github.com/aidenybai/million/contributors).\n\nUn gran reconocimiento a [@toby_solutions](https://twitter.com/toby_solutions) por ayudar a mantener el sitio web y el kitchen sink, [@felpix\\_](https://twitter.com/felpix_) por manejar la cuenta de Twitter de Million.js, y a [@nisargptel](https://twitter.com/nisargptel) por hacer el video del trailer.\n\nSi tienes cualquier pregunta, no dudes en contactarme en [Twitter](https://twitter.com/aidenybai) o [GitHub](https://github.com/aidenybai/million).\n\nDisfruta 🎉\n"
  },
  {
    "path": "website/pages/blog/million-3.fr-FR.mdx",
    "content": "---\ntitle: 'Présentation de Million.js 3.0'\ndate: DEC 7, 2023\ndescription: Amélioration des performances pour le compilateur et l'exécution\n---\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Présentation de Million.js 3.0\n\n  <small>[AIDEN BAI](https://aidenybai.com) DEC 7 2023</small>\n</div>\n\n---\n\nAprès de nombreux mois de travail acharné, je suis ravi de vous annoncer la sortie de Million 3.0. au cours de la semaine prochaine, nous allons déployer une version officielle. Vous pourrez bientôt profiter de nombreuses nouvelles fonctionnalités et améliorations apportées à la bibliothèque.\n\nMême si nous modifions le fonctionnement interne, Million 3.0 devrait être une mise à jour transparente pour tous. Vous pouvez passer à la dernière version sans effectuer de changements de code.\n\nSi vous n'avez pas encore essayé Million.js, vous pouvez [consulter la documentation](/docs/quickstart) pour commencer. Ou, lancez simplement `npx million@latest` pour démarrer. Million.js est un compilateur qui transforme votre code React existant en un DOM virtuel hyperoptimisé. C'est une alternative plug-and-play à React qui est plus rapide et plus compacte.\n\n## Quelles sont les nouveautés ?\n\n### Temps de compilation plus rapide\n\nCette version comprend une refonte complète du compilateur pour le rendre plus efficace, lisible et scalable. Nos tests initiaux montrent une amélioration significative par rapport à la version précédente : environ 34 % plus rapide (3.2s -> 2.1s) pour la compilation initiale et environ 82 % (1.1s -> 0.2s) pour les changements de code sur un projet de taille moyenne avec Next.js.\n\nNous avons également intégré une suite de tests approfondie pour nous assurer que le compilateur fonctionne conformément aux attentes. Cela nous permettra de repérer les erreurs et les régressions plus facilement à l'avenir.\n\nCela nous donne la possibilité de prendre en charge davantage de fonctionnalités et d'optimisations à l'avenir sans compromettre l'expérience des développeurs. Restez attentifs aux nouveaux outils de diagnostique, au sidecar et aux gadgets d'IA qui arriveront bientôt 👀\n\n### Temps d'exécution plus rapide\n\nMillion 3.0 refactorise la manière dont la réhydratation est effectuée. Au lieu de remplacer le DOM aux limites des composants, Million.js peut maintenant cibler la réhydratation de manière précise, ce qui se traduit par des temps de réhydratation nettement plus rapides au sein des blocs.\n\nNous travaillons également sur la suppression de la dépendance aux éléments `<slot>` pour le montage des blocs. Pour de nombreux projets, cela représente une réduction significative du nombre inutile de nœuds DOM, améliorant la conciliation et réduisant l'utilisation de la mémoire.\n\nAvec ces changements, nous constatons une amélioration initiale d'environ 100 % (2s -> 1s) dans les temps de réhydratation (ralentissement du CPU 4x) et beaucoup moins de génération d'éléments `<slot>` pour un projet de taille moyenne avec Next.js.\n\n## Migration vers Million.js 3.0\n\nLa migration est facile. Mettez simplement à jour vos dépendances vers la dernière version de Million.js. Exécutez simplement `npm install million@latest` (ou votre gestionnaire de paquets préféré) pour commencer.\n\n## Les prochaines étapes\n\nL'avenir de Million.js est de devenir l'ensemble d'outils de performance de facto pour le web. Dans les semaines à venir, nous livrerons des outils extrêmement puissants et novateurs pour vous aider à construire des sites web plus rapides.\n\nEn plus des nouvelles fonctionnalités, nous lancerons un nouveau site web et une documentation pour vous aider à démarrer. Nous fournirons également un nouvel évier de cuisine pour mettre en valeur certaines des nouvelles fonctionnalités.\n\n## Remerciements\n\nMerci à tous ceux qui ont [contribué à Million.js](https://github.com/aidenybai/million/contributors).\n\nUn grand merci à [@toby_solutions](https://twitter.com/toby_solutions) pour son aide à maintenir le site web et l'évier de cuisine, à [@felpix\\_](https://twitter.com/felpix_) pour gérer le compte Twitter de Million.js, et à [@nisargptel](https://twitter.com/nisargptel) pour la réalisation de la vidéo de présentation.\n\nSi vous avez des questions, n'hésitez pas à me contacter sur [Twitter](https://twitter.com/aidenybai) ou [GitHub](https://github.com/aidenybai/million).\n\nProfitez bien 🎉\n"
  },
  {
    "path": "website/pages/blog/million-3.zh-CN.mdx",
    "content": "---\ntitle: 'Announcing Million.js 3.0'\ndate: DEC 7, 2023\ndescription: Updated performance for both compiler and runtime\n---\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Announcing Million 3.0\n\n  <small>[AIDEN BAI](https://aidenybai.com) DEC 7 2023</small>\n</div>\n\n---\n\nAfter many months of hard work, I'm excited to announce the release of Million 3.0. Within the next week, we'll roll out an official published release. Soon, you'll be able to get a number of new features and improvements to the library.\n\nEven though we're changing how things work under the hood, Million 3.0 should be a drop-in replacement for everyone. You can upgrade to the latest version without any code changes.\n\nIf you haven't tried Million.js yet, you can [check out the documentation](/docs/quickstart) to get started. Or, just run `npx million@latest` to get started. Million.js is a compiler that turns your existing React code into a hyper-optimized virtual DOM. It's a drop-in replacement for React that's faster and smaller.\n\n## What's new?\n\n### Faster build time\n\nThis release includes a complete overhaul of the compiler to be more efficient, readable, and scalable. Our initial benchmarks show a huge improvement from the previous version: ~34% faster (3.2s -> 2.1s) for initial compile and ~82% (1.1s -> 0.2s) for code changes on a medium sized Next.js project.\n\nWe've also added a legitimate test suite to ensure that the compiler is working as expected. This will help us catch bugs and regressions in the future.\n\nThis allows us to support more features and optimizations in the future without comprimising developer experience. Look out for new diagnostic tools, sidecar, and AI gadgets soon 👀\n\n### Faster runtime\n\nMillion 3.0 refactors how hydration is done. Instead of replacing DOM on component boundaries, Million.js now can pinpoint hydrate – which results in significantly faster hydration times within blocks.\n\nWe're also working on removing the dependency on `<slot>` elements for mounting blocks – for many projects, this is a significant reduction in unnecessary DOM nodes, improving reconciliation, and reducing memory usage.\n\nWith these changes, we're seeing an initial ~100% improvement (2s -> 1s) in hydration times (4x CPU slowdown) and much less `<slot>` element generation for a medium sized Next.js project.\n\n## Migrating to 3.0\n\nMigration is easy. Just update your dependencies to the latest version of Million.js. Just run `npm install million@latest` (or your favorite package manager) to get started.\n\n## The road ahead\n\nThe future of Million.js is to be the de-facto performance toolset for the web. In the coming weeks, we'll be shipping some extremely powerful and novel tools to help you build faster websites.\n\nAlong with the new features, we'll be shipping a new website and documentation to help you get started. We'll also be shipping a new kitchen sink to show off some of the new features.\n\n## Acknowledgements\n\nThank you to everyone who has [contributed to Million.js](https://github.com/aidenybai/million/contributors).\n\nBig shout out to [@toby_solutions](https://twitter.com/toby_solutions) for helping maintain the website and kitchen sink, [@felpix\\_](https://twitter.com/felpix_) for running the Million.js Twitter account, and [@nisargptel](https://twitter.com/nisargptel) for making the trailer video.\n\nShould you have any questions, feel free to reach out to me on [Twitter](https://twitter.com/aidenybai) or [GitHub](https://github.com/aidenybai/million).\n\nEnjoy 🎉\n"
  },
  {
    "path": "website/pages/blog/million-beyond-speed.en-US.mdx",
    "content": "---\ntitle: 'Million Beyond \"Speed\"'\ndate: OCT 1, 2023\ndescription: Making React apps memory efficient\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million Beyond \"Speed\"\n\n  <small>[RICARDO NUNEZ](https://x.com/ricardonunez-io) OCT 1 2023</small>\n</div>\n\n---\n\nIf you've heard of Million (from [Aiden Bai](https://twitter.com/aidenybai), its creator, or [Tobi Adedeji](https://twitter.com/toby_solutions)'s React puzzles on Twitter), you've probably been intrigued by the headline: \"Make React 70% Faster\".\n\nMost developers have the mindset of faster being better for a multitude or reasons, namely SEO and user experience. If I could write plain React and make it as fast or faster than a lot of frameworks like Svelte and Vue (in some cases), then it's a win, right?\n\nHowever, there are actually a few other reasons why Million optimizes React applications that has less to do with just \"speed\" and more to do with compatibility, whether with old devices, slow laptops, resource-constrained phones, etc.\n\nUltimately, what all of this comes down to is memory.\n\n> The old meme of a Chrome window with 10 tabs open chugging your old laptop to a halt has a lot more basis in reality than people realize.\n\nIf we look at the situations where an app is running really slowly despite being on a good network, it typically has a lot less to do with bandwidth and a lot more to do with memory, and that's what we're taking a look at in this article.\n\n<CarbonAds />\n\n## React Without Million\n\nThe way that typical React applications work without Million and without a server-side framework like Next.js is that for every component in your JSX, a transpiler (Babel) calls a function called `React.createElement()` which outputs not HTML elements but *React* elements.\n\nThese React elements actually create Javascript objects, so your JSX:\n\n```jsx\n<div>Hello world</div>\n```\n\nturns into a `React.createElement()` Javascript call that look like this:\n\n```js\nReact.createElement('div', {}, 'Hello world')\n```\n\nWhich gets you a Javascript object that looks like this:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: { children: \"Hello world\" },\n    ref: null,\n    type: \"div\"\n}\n```\n\nNow, depending on how complex your component tree is, we can have nested objects (DOM Nodes) that go deeper and deeper where the root element's `props` key has hundreds or thousands of children per page.\n\nThis object *is* the virtual DOM, which ReactDOM creates actual DOM nodes out of.\n\nSo let's say we have only three nested divs:\n\n```jsx\n<div>\n    <div>\n        <div>\n            Hello world\n        </div>\n    </div>\n</div>\n```\n\nThis would become something that looks more like this under the hood:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: {\n        children: {\n            {\n                $$typeof: Symbol(react.element),\n                key: null,\n                props: {\n                    children: {\n                        {\n                            $$typeof: Symbol(react.element),\n                            key: null,\n                            props: { children: \"Hello world\" },\n                            ref: null,\n                            type: \"div\"\n                        }\n                    },\n                ref: null,\n                type: \"div\"\n            }\n        }\n    },\n    ref: null,\n    type: \"div\"\n}\n```\n\nPretty large, right? Keep in mind, this is only for a nested object with three elements, too!\n\nFrom here, when the nested object(s) change (i.e. when state causes your component to render a different output), React will compare the old virtual DOM and new virtual DOM, update the actual DOM so that it matches the new virtual DOM, and discard of any stale objects from the old component tree.\n\n> Note, this is why most React tutorials will recommend moving your `useState()` or `useEffect()` as far down the tree as possible, because the smaller the component is that has to re-render, the more efficient it is to accomplish this comparing process (diffing).\n>\n> ![Diagram of why moving state to the component leaves of the tree is more efficient](https://i.postimg.cc/1R6kkLcQ/Screenshot-2023-09-28-at-10-44-28-PM.png)\n\nNow, diffing is incredibly expensive compared to traditional server-rendering where the browser just receives a string of HTML, parses it, and puts it in the DOM.\n\nWhile server-rendering doesn't require Javascript, not only does React require it, but it creates this huge nested object in the process, and at runtime, React has to continuously check for changes which is very CPU intensive.\n\n### Memory Usage\n\nWhere the high memory usage comes in is in two ways: storing the large object and continuously diffing the large object. Plus extra if you're also storing state in memory as well and using external libraries which also store state in memory (which most people probably are, myself included).\n\nStoring the large object itself is a problem in memory constrained environments, because mobile and/or older devices might not have much RAM to begin with, even less so for browser tabs which are sandboxed with their own small, finite amount of memory.\n\n> Ever had your browser tab refresh because it was \"consuming too much energy\"? That was likely a combination of both high memory usage plus continuous CPU operations that your device couldn't handle along with running these other operations like the OS, background app refreshes, keeping other browser tabs open, etc.\n\nAlso, diffing the large component tree means replacing old objects with new objects whenever the UI updates along with tossing the old objects away to the garbage collector, repeating the process constantly throughout the lifetime of the application. This is especially true for more dynamic, interactive applications (a.k.a. React's main selling point).\n\n![Object diffing process example in React](https://i.postimg.cc/q7JDzvFs/Example-Diff.png)\n*As you can see, the diffing process for even a simple component where you just change one word in a div means an object for garbage collection to get rid of. But what happens if you have thousands of these nodes in your object tree and many of them rely on dynamic state?*\n\nImmutable object stores used for state management (like with Redux) tax memory even more by continuously adding more and more nodes to their Javascript object.\n\nBecause this object store is immutable, it'll just continue to grow and grow, which further limits the memory available for the rest of your app to use for things like updating the DOM. All of this can create a sluggish, buggy-feeling experience for the end-user.\n\n### V8 and Garbage Collection\n\nModern browsers are optimized for this, though, right? V8's garbage collection is incredibly optimized and runs very quickly, so is this really a problem?\n\nThere are two problems with this take.\n\n1. Even if garbage collection runs quickly, garbage collection is a blocking operation, meaning it [introduces delays](https://javascript.info/garbage-collection#internal-algorithms) in subsequent Javascript rendering.\n\n  - The larger the objects are that have to be garbage collected, the longer these delays take. Eventually, there comes a point where there's so much object creation going on that garbage collection needs to run over and over again to free up memory for these new objects, which is often the case when your React app is open for a decent amount of time.\n\n  - If you've ever worked on optimizing a React app and left it open for a couple of hours, and you click a button only for it to take 10+ seconds to respond, you know this process.\n\n2. Even if V8 is highly optimized, React apps often aren't, with event listeners often not being unmounted, components being too large, static portions of components not being memoized, etc.\n\n  - All of these factors (even if they *are* often bugs and/or developer mishaps) increase memory usage, and some (like non-unmounted event listeners) even cause memory leaks. Yes, memory leaks. In a managed memory environment.\n\n![Dynatrace benchmark (Node.js memory consumption over time with memory leak)](https://dt-cdn.net/wp-content/uploads/2015/11/DK_7.png)\n*Dynatrace has a great visualization of a Node JS app's memory usage over time when there's a memory leak. Even with garbage collection (the downward movements of the yellow line) getting more and more aggressive towards the end, memory usage (and allocations) just keeps going up.*\n\nEven Dan Abramov mentioned in a [podcast](https://www.youtube.com/watch?v=_gQ6oJb6SMg) that Meta engineers have written some very bad React code, so it isn't difficult to write \"bad\" React, especially given how easy it is to create memory in React with things like [closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#performance_considerations) (functions written inside of `useEffect()` and `useState()`), or the necessity for `Array.prototype.map()` to loop over an array in JSX, which creates a clone of the original array in memory.\n\nSo it's not that performant React is impossible. It's just that it's often not intuitive how to write the best performing component, and the feedback loop of performance testing often has to wait for real-world users with a variety of browsers and devices.\n\n> Note: high performance Javascript *is* possible ([I highly recommend this talk from Colt McAnlis](https://www.youtube.com/watch?v=Op52liUjvSk)), but it's also difficult to achieve, because it requires things like [object pooling](https://en.wikipedia.org/wiki/Object_pool_pattern) and static arraylist allocations to get there.\n>\n> Both of these techniques are hard to leverage in React which is componentized by nature and typically doesn't promote the usage of a large list of recycled global objects (hence Redux's large, immutable, *single* object store for example).\n>\n> However, these optimization techniques are still often used under the hood for things like [virtualized lists](/docs/virtualization) which recycle DOM nodes in large lists whose rows go out of view. You can see more of these types of React-specific optimization techniques (specifically for low-end devices like TVs) in [this talk by Seungho Park from LG](https://portal.gitnation.org/contents/overcoming-performance-limitations-in-react-components-for-embedded-devices).\n\n## React With Million\n\nKeep in mind that even though memory constraints are real, developers are often conscious of the amount of tabs or apps open while running their dev server, so we often won't notice them apart from a few buggy experiences that might prompt a refresh or a server restart in development. However, your users will probably notice more often than you, especially on older phones, tablets, laptops, since they aren't clearing their open apps/tabs for your app.\n\nSo what does Million do differently that solves this problem?\n\nWell, Million is a compiler, and while I won't go into everything here (you can read more about the [block DOM](/blog/virtual-dom) and Million's [`block()` function](/blog/behind-the-block) at these links), Million can statically analyze your React code and automatically compile React components into tightly optimized [Higher Order Components](https://https://legacy.reactjs.org/docs/higher-order-components.html) which are then rendered by Million.\n\nMillion uses techniques closer to fine-grained reactivity (shoutout [Solid JS](https://solidjs.com)) where observers are placed right on the necessary DOM nodes to track state changes among other optimizations, rather than using a virtual DOM.\n\nThis allows Million's performance and memory overhead to be closer to optimized vanilla Javascript than even performance focused virtual DOMs like Preact or Inferno, but without having an abstraction layer on top of React. That is to say using Million doesn't mean moving your React app to use \"React-compatible\" libraries. It's just plain React that Million itself can automatically optimize via our [CLI](/docs/install).\n\n> Keep in mind, Million isn't suitable for all use cases. We'll go into where Million does/doesn't fit in later on.\n\n### Memory Usage\n\nIn terms of memory usage, Million uses about 55% of the memory that React does on standby after the page loads, which is a substantial difference. It uses less than half the memory that React does for every single operation otherwise tested by [Krausest's JS Framework Benchmark](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_113.0.5672.63.html), even on Chrome 113 (we're currently on 117).\n\n![memory benchmark for vanilla JS versus Million versus React](https://i.postimg.cc/RZj3CgZK/Screenshot-2023-09-29-at-12-13-41-AM.png)\n\nThe memory hit you'd take by using Million compared to using vanilla Javascript would be at most about 28% higher (15MB vs. 11.9MB) when adding 10,000 rows to a page (the heaviest operation in the benchmark), whereas React would use about 303% to complete the same task vs. vanilla Javascript (36.1 MB vs. 11.9 MB).\n\nCouple that with the total operations your app is completing over its lifetime, and both performance and memory usage will vary dramatically when using purely a virtual DOM vs. a hybrid block DOM approach, especially once you consider state management, libraries/dependencies, etc. Of course, in Million's favor.\n\n## Wait, But What About _?\n\nAs with everything, there are tradeoffs when using Million and the block DOM approach. After all, there was a reason that React was invented and there are definitely still reasons to use it.\n\n### Dynamic Components\n\nLet's say you have a highly dynamic component in which data is frequently changed.\n\nFor example, maybe you have an application which is consuming stock market data, and you have a component that displays the most recent 1,000 stock trades. The component itself is a list that varies the list item component that's rendered per stock trade depending on whether it was a buy or sell.\n\nFor simplicity, we'll assume it's already prepopulated with 1000 stock trades.\n\n```jsx\nimport { useState, useEffect } from \"react\";\nimport { BuyComponent, SellComponent } from \"@/components/recent-trades\"\n\nexport function RecentTrades() {\n    const [trades, setTrades] = useState([]);\n    useEffect(() => {\n        // set a timer to make this event run every second\n        const tradeTimer = setInterval(() => {\n            let tradeRes = fetch(\"example.com/stocks/trades\");\n            // errors? never heard of them\n            tradeRes = JSON.parse(tradeRes);\n            setTrades(previousList => {\n                // remove the amount of elements returned from\n                // our fetch call to stay at 1,000 elements\n                previousList.slice(0, tradeRes.length);\n                // add the most recent elements\n                for (i, i < tradeRes.length, i++) {\n                    previousList.push(tradeRes[i]);\n                };\n                return previousList;\n            });\n        }, 1000);\n\n        return () => clearInterval(tradeTimer);\n    }, [])\n\n    return (\n        <ul>\n            {trades.map((trade, index) => (\n                <li key={index}>\n                    {trade.includes(\"+\") ?\n                        <BuyComponent>BUY: {trade}</BuyComponent>\n                        : <SellComponent>SELL: {trade}</SellComponent>\n                    }\n                </li>\n            ))}\n        </ul>\n    )\n}\n```\n\nIgnoring that there are probably more efficient ways to do this, this is a great example of where Million would *not* do well. The data is changing every second, the component being rendered depends on the data itself, and overall, there is nothing really static about this component.\n\nIf you look at the returned HTML, you might think \"Having an optimized `<For />` component would work great here!\" However, in terms of Million's compiler (barring Million's `<For />` component) there is no way to statically analyze the returned list of elements, and in fact, cases like these are [why React was first brought about at Facebook](https://en.wikipedia.org/wiki/React_(software)#History) (the news section of their UI, a highly dynamic list).\n\nThis is a great use case for React's runtime, because manipulating the DOM directly is expensive, and doing so every second for a large list of elements is expensive as well.\n\nHowever, it's quicker when using something *like* React, because it will only diff and rerender this granular part of the page vs. something traditionally server rendered which might replace the entire page. Because of this, Million is better suited to handle other static parts of the page to keep React's footprint smaller.\n\nDoes that mean only components this extreme should be ignored by Million and use React's runtime? Not necessarily. If your components even lean into this kind of use case where the component relies on highly dynamic aspects like constantly changing state, ternary-driven return values, or anything that can't comfortably fit in the \"static and/or close-to-static\" box, then Million might not work well.\n\nAgain, there's a reason React was built, and there's a reason we're choosing to improve it, not create a new framework!\n\n## What *Will* Million Work Well On?\n\nWe'd definitely like to see Million pushed to the limits of where it can be used, but as for right now, there are certainly sweet spots where Million shines.\n\nObviously, static components are great for Million, and those are easy to imagine, so I won't go too deep into them. These could be things like blogs, landing pages, applications with CRUD-type operations where the data isn't too dynamic, etc.\n\nHowever, other great use cases for Million are applications with nested data, i.e. objects with lists of data inside. This is because nested data is typically a bit slow to render due to tree traversal (i.e. going through the entire tree of data to find the datapoint your application needs).\n\nMillion is optimized for this use case with our `<For />` component which is made specifically for looping over arrays as efficiently as possible and (like we mentioned before) recycling DOM nodes as you scroll rather than creating and discarding them.\n\nThis is one of the examples where even with dynamic, stateful data, performance can be optimized essentially for free by just using `<For />` rather than `Array.prototype.map()` and creating DOM nodes for each item in the mapped array.\n\nFor example:\n\n```jsx\nimport { For } from 'million/react';\n\nexport default function App() {\n    const [items, setItems] = useState([1, 2, 3]);\n\n    return (\n        <>\n            <button onClick={() => setItems([...items, items.length + 1])}>\n                Add item\n            </button>\n            <ul>\n                <For each={items}>{(item) => <li>{item}</li>}</For>\n            </ul>\n        </>\n    );\n}\n```\n\nAgain, this performance can be gained almost for free with the only requirement being knowing how/when to use `<For />`.\n\nFor example, server rendering tends to cause errors with hydration because we're not mapping array elements 1:1 with DOM nodes, and our server rendering algorithm differs to that of client rendering, but it's a great example of a dynamic, stateful component that can be optimized with Million with a bit of work!\n\nAnd although this example uses a custom component provided by Million, this is just an example of a specific use cases where Million can work well. However, as we went over before, non-list components that can be stateful and are relatively static work incredibly well with Million's compiler, such as CRUD-style components like forms, CMS-driven components like text blocks, landing pages, etc. (a.k.a. most applications that we work on as frontend developers, or at least I do).\n\n## Is It Worth Using Million?\n\nWe certainly think so. Lots of people, when optimizing for performance look at the easiest metrics to track: page speed. It's what you can measure right away on [pagespeed.web.dev](https://pagespeed.web.dev), and while that is certainly important, initial page load time usually won't be a big draw on user experience, especially when writing a Single Page Application which is optimized for between-page transitions, not full page loads.\n\nHowever, avoiding and reducing memory usage where possible is also an incredibly compelling use-case for using Million JS.\n\nIf each action that your user performs takes no time to complete and gives them instant feedback, then user experience feels more native, and that's typically where performance issues creep up if you're not careful, because input delay is typically highly influenced by memory usage.\n\nSo is it necessary to use a virtual DOM to acheive this? We certainly *don't* think so. Especially if it means more Javascript to run, more objects to create, and more memory overhead to worry about on lower-end devices.\n\nThis doesn't mean Million is a good fit for all use cases, nor will it solve all performance problems. In fact, we recommend to use it granularly, as in some cases (i.e. more dynamic data like we discussed), a virtual DOM will actually be more performant.\n\nBut having a tool in your toolbelt that requires almost no setup time or config will certainly get us closer to having React be a much more reliable, performant library to reach for when building an app that will live in the wild, outside of other devs' 8 core, 32GB machines.\n\nSoon, we'll be doing benchmarks on common React templates to see how Million impacts memory and performance, so stay tuned!\n"
  },
  {
    "path": "website/pages/blog/million-beyond-speed.es-ES.mdx",
    "content": "---\ntitle: 'Million más allá de la \"Velocidad\"'\ndate: 1 OCT, 2023\ndescription: Haciendo apps en React eficientes en memoria\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million más allá de la \"Velocidad\"\n\n  <small>[RICARDO NUNEZ](https://x.com/ricardonunez-io) 1 OCT 2023</small>\n</div>\n\n---\n\nSi has escuchado de Million (por [Aiden Bai](https://twitter.com/aidenybai), su creador, o los puzzles de React de [Tobi Adedeji](https://twitter.com/toby_solutions) en Twitter), probablemente te has sentido intrigado por el titular: \"Haz React 70% más rápido\".\n\nLa mayoría de desarrolladores tienen la mentalidad de que más rápido es mejor por una multitud de razones, principalmente SEO y experiencia de usuario. Si pudiera escribir React puro y hacerlo tan rápido o más rápido que muchos frameworks como Svelte y Vue (en algunos casos), entonces es una victoria, ¿verdad?\n\nSin embargo, hay algunas otras razones por las que Million optimiza aplicaciones React que tienen menos que ver con la \"velocidad\" y más que ver con la compatibilidad, ya sea con dispositivos antiguos, laptops lentas, teléfonos con recursos limitados, etc.\n\nÚltimadamente, todo esto se reduce a la memoria.\n\n> El viejo meme de una ventana de Chrome con 10 pestañas abiertas que hace que tu vieja laptop se detenga tiene mucho más base en la realidad de lo que la gente se da cuenta.\n\nSi vemos la situación donde la app está ejecutandose muy lento a pesar de estar en una buena red, típicamente tiene mucho menos que ver con el ancho de banda y mucho más que ver con la memoria, y eso es lo que estamos viendo en este artículo.\n\n<CarbonAds />\n\n## React Sin Million\n\nLa forma típica en la que las aplicaciones de React funcionan sin Million y sin un framework del lado del servidor como Next.js es que para cada componente en tu JSX, un transpilador (Babel) llama a una función llamada `React.createElement()` que no produce elementos HTML sino elementos _React_.\n\nEstos elementos de React crean de hecho objetos Javascript, así que tu JSX:\n\n```jsx\n<div>Hola mundo</div>\n```\n\nse convierte en una llamada `React.createElement()` de Javascript que se ve así:\n\n```js\nReact.createElement('div', {}, 'Hola mundo');\n```\n\nY que te da un objecto de Javascript que se ve de esta forma:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: { children: \"Hola mundo\" },\n    ref: null,\n    type: \"div\"\n}\n```\n\nQue a su vez te devuelve un objeto de Javascript que se ve así:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: { children: \"Hola mundo\" },\n    ref: null,\n    type: \"div\"\n}\n```\n\nAhora, dependiendo de que tan complejo sea tu árbol de componentes, podemos tener objetos anidados (Nodos del DOM) que van más y más profundo donde la llave `props` del elemento raíz tiene cientos o miles de hijos por página.\n\nEste objeto _es_ el DOM virtual, del cual ReactDOM crea nodos del DOM reales.\n\nAsí que digamos que tenemos solo tres divs anidados:\n\n```jsx\n<div>\n  <div>\n    <div>Hola mundo</div>\n  </div>\n</div>\n```\n\nEsto se convertirá en algo que se ve más o menos así por dentro:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: {\n        children: {\n            {\n                $$typeof: Symbol(react.element),\n                key: null,\n                props: {\n                    children: {\n                        {\n                            $$typeof: Symbol(react.element),\n                            key: null,\n                            props: { children: \"Hola mundo\" },\n                            ref: null,\n                            type: \"div\"\n                        }\n                    },\n                ref: null,\n                type: \"div\"\n            }\n        }\n    },\n    ref: null,\n    type: \"div\"\n}\n```\n\nDemasiado largo, ¿verdad? Ten en cuenta que esto es solo para un objeto anidado con tres elementos, ¡también!\n\nDesde aquí, cuando el objeto anidado cambia (es decir, cuando el estado hace que tu componente renderice una salida diferente), React comparará el DOM virtual viejo y el DOM virtual nuevo, actualizará el DOM real para que coincida con el nuevo DOM virtual y descartará cualquier objeto obsoleto del árbol de componentes viejo.\n\n> Nota, esto es por lo que la mayoría de los tutoriales de React recomiendan mover tu `useState()` o `useEffect()` lo más abajo posible en el árbol, porque mientras más pequeño sea el componente que tiene que volver a renderizarse, más eficiente es realizar este proceso de comparación (diffing).\n>\n> ![Diagrama de por qué mover el estado a los componentes hace el árbol más eficiente](https://i.postimg.cc/1R6kkLcQ/Screenshot-2023-09-28-at-10-44-28-PM.png)\n\nAhora, el diffing es increíblemente costoso en comparación con el renderizado del lado del servidor tradicional donde el navegador solo recibe una cadena de HTML, lo analiza y lo coloca en el DOM.\n\nMientras el renderizado del servidor no requiere Javascript, no solo React lo requiere, sino que crea este enorme objeto anidado en el proceso, y en tiempo de ejecución, React tiene que verificar continuamente los cambios, lo que es muy intensivo en la CPU.\n\n### Uso de Memoria\n\nDonde el alto uso de memoría entra en juego es de dos formas: almacenando el objeto grande y comparando continuamente el objeto grande. Además de extra si también estás almacenando el estado en la memoria y usando bibliotecas externas que también almacenan el estado en la memoria (lo que probablemente la mayoría de la gente hace, incluyéndome a mí).\n\nAlmacenando el objeto grande en sí es un problema en entornos con memoria limitada, porque los dispositivos móviles y/o más antiguos podrían no tener mucha RAM para empezar, y mucho menos para las pestañas del navegador que están aisladas con su propia cantidad pequeña y finita de memoria.\n\n> ¿Alguna vez has tenido que refrescar la pestaña de tu navegador porque estaba \"consumiendo demasiada energía\"? Eso probablemente fue una combinación de un alto uso de memoria más operaciones continuas de la CPU que tu dispositivo no podía manejar junto con la ejecución de estas otras operaciones como el sistema operativo, las actualizaciones de las aplicaciones en segundo plano, mantener otras pestañas del navegador abiertas, etc.\n\nTambién, hacer diffing al componente mas grande significa reemplazar los objetos viejos con nuevos objetos cada vez que la UI se actualiza junto con descartar los objetos viejos para que el recolector de basura los elimine, repitiendo el proceso constantemente a lo largo de la vida de la aplicación. Esto es especialmente cierto para aplicaciones más dinámicas e interactivas (también conocidas como el principal punto de venta de React).\n\n![Ejemplo del proceso de diffing de objetos en React](https://i.postimg.cc/q7JDzvFs/Example-Diff.png)\n_Como puedes ver, el proceso de diffing para un componente incluso simple donde solo cambias una palabra en un div significa un objeto para que el recolector de basura se deshaga de él. Pero ¿qué pasa si tienes miles de estos nodos en tu árbol de objetos y muchos de ellos dependen del estado dinámico?_\n\nEl objeto inmutable almacenado para la gestión del estado (como con Redux) grava aún más la memoria al agregar continuamente más y más nodos a su objeto Javascript.\n\nDebido a que este objeto de almacenamiento es inmutable, simplemente seguirá creciendo y creciendo, lo que limita aún más la memoria disponible para el resto de tu aplicación para usarla en cosas como la actualización del DOM. Todo esto puede crear una experiencia lenta y con errores para el usuario final.\n\n### V8 y la Recolección de Basura\n\nNavegadores modernos están optimizados para esto, ¿verdad? La recolección de basura de V8 está increíblemente optimizada y se ejecuta muy rápidamente, ¿así que ¿es esto realmente un problema?\n\nHay dos problemas con este enfoque.\n\n1. Incluso si la recolección de basura se ejecuta rápidamente, la recolección de basura es una operación de bloqueo, lo que significa que [introduce retrasos](https://javascript.info/garbage-collection#internal-algorithms) en el renderizado de Javascript posterior.\n\n- Cuanto más grandes sean los objetos que se deben recolectar, más tiempo tomarán estos retrasos. Eventualmente, llega un punto en el que hay tanta creación de objetos que la recolección de basura necesita ejecutarse una y otra vez para liberar memoria para estos nuevos objetos, lo que a menudo ocurre cuando tu aplicación React está abierta durante un tiempo decente.\n\n- Si alguna vez has trabajado en la optimización de una aplicación React y la has dejado abierta durante un par de horas, y haces clic en un botón solo para que tarde más de 10 segundos en responder, conoces este proceso.\n\n2. Inlcuso si V8 está altamente optimizado, las aplicaciones React a menudo no lo están, con los event listeners a menudo no desmontados, los componentes son demasiado grandes, las porciones estáticas de los componentes no se memorizan, etc.\n\n- Todos estos factores (incluso si a menudo son errores y/o errores de los desarrolladores) aumentan el uso de memoria, y algunos (como los event listeners no desmontados) incluso causan fugas de memoria. Sí, fugas de memoria. En un entorno de memoria administrada.\n\n![Benchmark de Dynatrace (Consumo de memoria de Node.js a lo largo del tiempo con fuga de memoria)](https://dt-cdn.net/wp-content/uploads/2015/11/DK_7.png)\n_Dynatrace tiene una gran visualización del uso de memoria de una aplicación Node JS a lo largo del tiempo cuando hay una fuga de memoria. Incluso con la recolección de basura (los movimientos hacia abajo de la línea amarilla) cada vez más agresiva hacia el final, el uso de memoria (y las asignaciones) sigue aumentando._\n\nIncluso Dan Abramov mencionó en un [podcast](https://www.youtube.com/watch?v=_gQ6oJb6SMg) que los ingenieros de Meta han escrito algunos códigos React muy malos, por lo que no es difícil escribir React \"malo\", especialmente dado lo fácil que es crear memoria en React con cosas como [closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#performance_considerations) (funciones escritas dentro de `useEffect()` y `useState()`), o la necesidad de `Array.prototype.map()` para recorrer una matriz en JSX, lo que crea un clon de la matriz original en la memoria.\n\nAsí que no es que tener rendimiento en React sea imposible, es solo que a menudo no es intuitivo cómo escribir el componente con mejor rendimiento, y el ciclo de retroalimentación de las pruebas de rendimiento a menudo tiene que esperar a los usuarios del mundo real con una variedad de navegadores y dispositivos.\n\n> Nota: el Javascript de alto rendimiento _es_ posible ([Recomiendo encarecidamente esta charla de Colt McAnlis](https://www.youtube.com/watch?v=Op52liUjvSk)), pero también es difícil de lograr, porque requiere cosas como [object pooling](https://en.wikipedia.org/wiki/Object_pool_pattern) y asignaciones estáticas de arraylist para llegar allí.\n>\n> Algunos de estás técnicas son difíciles de aprovechar en React que es componentizado por naturaleza y típicamente no promueve el uso de una gran lista de objetos globales reciclados (de ahí la gran store inmutable de un solo objeto de Redux, por ejemplo).\n>\n> Sin embargo, estas técnicas de optimización todavía se usan a menudo bajo el capó para cosas como [listas virtualizadas](/docs/virtualization) que reciclan nodos DOM en grandes listas cuyas filas salen de la vista. Puedes ver más de estos tipos de técnicas de optimización específicas de React (específicamente para dispositivos de gama baja como las TVs) en [esta charla de Seungho Park de LG](https://portal.gitnation.org/contents/overcoming-performance-limitations-in-react-components-for-embedded-devices).\n\n## React con Million\n\nTen en mente que aunque las restricciones de memoria son reales, los desarrolladores a menudo son conscientes de la cantidad de pestañas o aplicaciones abiertas mientras ejecutan su servidor de desarrollo, por lo que a menudo no los notamos aparte de algunas experiencias con errores que podrían provocar una actualización o un reinicio del servidor en desarrollo. Sin embargo, tus usuarios probablemente lo notarán más a menudo que tú, especialmente en teléfonos, tabletas, computadoras portátiles más antiguas, ya que no están limpiando sus aplicaciones/pestañas abiertas para tu aplicación.\n\n¿Entonces que hace Million de manera diferente que resuelve este problema?\n\nBueno, Million es un compilador, y aunque no entraré en detalle aquí (puedes leer más sobre el [block DOM](/blog/virtual-dom) y la función [`block()` de Million](/blog/behind-the-block) en estos enlaces), Million puede analizar estáticamente tu código de React y compilar automáticamente componentes de React en [Componentes de Orden Superior (HOC)](https://https://legacy.reactjs.org/docs/higher-order-components.html) que son renderizados por Million.\n\nMillion utiliza técnicas más cercanas a la reactividad de grano fino (un saludo a [Solid JS](https://solidjs.com)) donde los observadores se colocan directamente en los nodos DOM necesarios para rastrear los cambios de estado entre otras optimizaciones, en lugar de usar un DOM virtual.\n\nEsto le permite al rendimiento en memoria de Million estar cerca al de Javascript puro que está optimizado, incluso más que los virtual DOMs enfocados en el rendimiento como Preact o Inferno, pero sin tener una capa de abstracción sobre React. Es decir, usar Million no significa mover tu aplicación de React a usar librerías \"compatibles con React\". Es solo React puro que Million puede optimizar automáticamente a través de nuestra [CLI](/docs/install).\n\n> Ten en mente que, Million no es adecuado para todos los casos de uso. Hablaremos de dónde sí y dónde no en un momento.\n\n### Uso de memoria\n\nEn términos de uso de memoria, Million utiliza alrededor del 55% de la memoria que React utiliza en espera después de que la página se carga, lo que es una diferencia sustancial. Utiliza menos de la mitad de la memoria que React para cada operación única probada por [El Benchmark de Frameworks JS de Krausest](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_113.0.5672.63.html), incluso en Chrome 113 (actualmente estamos en 117).\n\n![benchmark de memoria para JS puro contra Million contra React](https://i.postimg.cc/3wz3Vt3t/Screenshot-2023-09-29-at-12-13-41-AM.png)\n\nLa memoria que tomarías usando Million comparado a utilizar Javascript puro sería a lo mucho un 28% más alta (15MB vs 11.9MB) al agregar 10,000 filas a una página (la operación más pesada en el benchmark), mientras que React usaría alrededor de un 303% para completar la misma tarea vs Javascript puro (36.1 MB vs 11.9 MB).\n\nCombina eso con las operaciones totales que tu aplicación tarde en completar a lo largo de su vida, y tanto el rendimiento como el uso de memoria variarán dramáticamente al usar un DOM virtual puro vs. un enfoque híbrido de DOM de bloques, especialmente una vez que consideres la gestión de estado, librerías/dependencias, etc. Por supuesto, en favor de Million.\n\n## Espera, ¿Pero que hay de \\_?\n\nComo todas las cosas, hay ventajas y desventajas al usar Million y el enfoque de DOM de bloques. Después de todo, hubo una razón por la que se inventó React y definitivamente todavía hay razones para usarlo.\n\n### Componentes Dinámicos\n\nDigamos que tienes un componente altamente dinámico en el que los datos cambian con frecuencia.\n\nPor ejemplo, tal vez tengas una aplicación la cual consume datos del mercado de valores, y tienes un componente que muestra los 1,000 intercambios de acciones más recientes. El componente en sí es una lista que varía el componente de elemento de lista que se renderiza por intercambio de acciones dependiendo de si fue una compra o una venta.\n\nPor simplicidad, asumiremos que ya está prellenado con 1,000 intercambios de acciones.\n\n```jsx\nimport { useState, useEffect } from \"react\";\nimport { BuyComponent, SellComponent } from \"@/components/recent-trades\"\n\nexport function RecentTrades() {\n    const [trades, setTrades] = useState([]);\n    useEffect(() => {\n        // coloca un contadar para que se actualice cada segundo\n        const tradeTimer = setInterval(() => {\n            let tradeRes = fetch(\"example.com/stocks/trades\");\n            // ¿errores? nunca he escuchado de ellos\n            tradeRes = JSON.parse(tradeRes);\n            setTrades(previousList => {\n                // remueve la cantidad de elementos que retorna\n                // nuestra petición para 1,000 elementos\n                previousList.slice(0, tradeRes.length);\n                // añade los elementos nuevos\n                for (i, i < tradeRes.length, i++) {\n                    previousList.push(tradeRes[i]);\n                };\n                return previousList;\n            });\n        }, 1000);\n\n        return () => clearInterval(tradeTimer);\n    }, [])\n\n    return (\n        <ul>\n            {trades.map((trade, index) => (\n                <li key={index}>\n                    {trade.includes(\"+\") ?\n                        <BuyComponent>COMPRA: {trade}</BuyComponent>\n                        : <SellComponent>VENTA: {trade}</SellComponent>\n                    }\n                </li>\n            ))}\n        </ul>\n    )\n}\n```\n\nIgnorando que probablemente hay maneras más eficientes de hacer esto, este es un gran ejemplo de donde Million _no_ funcionaría bien. Los datos cambian cada segundo, el componente que se renderiza depende de los datos mismos, y en general, no hay nada realmente estático acerca de este componente.\n\nSi miras el HTML retornado, podrías pensar \"¡Tener un componente `<For />` optimizado funcionaría genial aquí!\" Sin embargo, en términos del compilador de Million (a excepción del componente `<For />` de Million) no hay manera de analizar estáticamente la lista de elementos retornados, y de hecho, casos como estos son [por qué React fue creado en Facebook](<https://en.wikipedia.org/wiki/React_(software)#History>) (la sección de noticias de su UI, una lista altamente dinámica).\n\nEste es un gran caso de uso del entorno de ejecución de React, por que manipular el DOM directamente es costoso, y hacerlo cada segundo para una gran lista de elementos también es costoso.\n\nSin embargo, es más rápido cuando se usa algo _como_ React, porque solo difiere y vuelve a renderizar esta parte granular de la página vs. algo tradicionalmente renderizado del lado del servidor que podría reemplazar toda la página. Por esto, Million es mejor para manejar otras partes estáticas de la página para mantener el footprint de React más pequeño.\n\n¿Esto significa que solo los componentes mñas dinámicos deberían ser ignorados por Million y usar el entorno de ejecución de React? No necesariamente. Si tus componentes incluso se inclinan a este tipo de caso de uso donde el componente depende de aspectos altamente dinámicos como el estado que cambia constantemente, valores de retorno impulsados por ternarios, o cualquier cosa que no pueda encajar cómodamente en la caja de \"estático y/o cercano a estático\", entonces Million podría no funcionar bien.\n\nDe nuevo, hay una razón por la que React fue construido, y hay una razón por la que estamos eligiendo mejorarla, ¡no crear un nuevo framework!\n\n## ¿Dónde Million _Va a_ funcionar bien?\n\nDefinitivamente nos gustaría ver a Million empujado a los límites de donde puede ser usado, pero por ahora, hay ciertamente puntos dulces donde Million brilla.\n\nObviamente, los componentes estáticos son geniales para Million, y esos son fáciles de imaginar, así que no profundizaré demasiado en ellos. Estos podrían ser cosas como blogs, sitios web estáticos, aplicaciones con operaciones CRUD donde los datos no son demasiado dinámicos, etc.\n\nSin embargo, otros grandes casos de uso para Million son aplicaciones con datos anidados, es decir, objetos con listas de datos adentro. Esto es porque los datos anidados son típicamente un poco lentos de renderizar debido a la búsqueda de árbol (es decir, pasar por todo el árbol de datos para encontrar el punto de datos que tu aplicación necesita).\n\nMillion esta optimizado para este caso de uso con nuestro componente `<For />` el cual fué hecho para recorrer arreglos de datos de manera eficiente y reciclar nodos del DOM mientras te desplazas en lugar de crear y descartarlos.\n\nEste es uno de los ejemplos donde incluso con datos dinámicos, el rendimiento puede ser optimizado esencialmente sin costo solo usando `<For />` en lugar de `Array.prototype.map()` y creando nodos del DOM para cada elemento en el arreglo mapeado.\n\nPor ejemplo:\n\n```jsx\nimport { For } from 'million/react';\n\nexport default function App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Añadir elemento\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n```\n\nDe nuevo, este rendimiento puede ser ganado casi gratuitamente con el único requerimiento de saber cómo y cuándo usar `<For />`.\n\nPor ejemplo, el renderizado del servidor tiende a causar errores con la hidratación porque no estamos mapeando los elementos del arreglo 1:1 con los nodos del DOM, y nuestro algoritmo de renderizado del servidor difiere al del renderizado del cliente, pero ¡es un gran ejemplo de un componente dinámico y con estado que puede ser optimizado con Million con un poco de trabajo!\n\nY a pesar de que ese ejemplo utiliza un componente personalizado provisto por Million, este es solo un ejemplo de un caso de uso específico donde Million puede funcionar bien. Sin embargo, como mencionamos antes, los componentes no listados que pueden ser estatales y son relativamente estáticos funcionan increíblemente bien con el compilador de Million, como los componentes de estilo CRUD como formularios, componentes impulsados por CMS como bloques de texto, sitios web estáticos, etc. (también conocidos como la mayoría de las aplicaciones en las que trabajamos como desarrolladores frontend, o al menos yo).\n\n## ¿Vale la pena utilizar Million?\n\nDefinitivamente pensamos que sí. Muchas personas, al optimizar el rendimiento, miran las métricas más fáciles de rastrear: la velocidad de la página. Es lo que puedes medir de inmediato en [pagespeed.web.dev](https://pagespeed.web.dev), y aunque eso es ciertamente importante, el tiempo de carga inicial de la página generalmente no será un gran atractivo para la experiencia del usuario, especialmente al escribir una aplicación de una sola página que está optimizada para las transiciones entre páginas, no para las cargas completas de páginas.\n\nSin embargo, evitar y reducir el uso de memoria donde sea posible también es un caso de uso increíblemente convincente para usar Million JS.\n\nSi cada acción que el usuario realiza no toma tiempo en ser completada y les da retroalimentación instantánea, entonces la experiencia del usuario se siente más nativa, y eso es típicamente donde los problemas de rendimiento se cuelan si no tienes cuidado, porque el retraso de entrada típicamente está altamente influenciado por el uso de memoria.\n\nEntonces, ¿si es necesario usar el DOM virtual para lograr esto? Ciertamente _no_ pensamos que sea necesario. Especialmente si significa más Javascript para ejecutar, más objetos para crear y más sobrecarga de memoria para preocuparse en dispositivos de gama baja.\n\nEsto no significa que Million embona bien en todos los casos de uso, ni que resolverá todos los problemas de rendimiento. De hecho, recomendamos usarlo de manera granular, ya que en algunos casos (es decir, datos más dinámicos como discutimos), un DOM virtual será más eficiente.\n\nPero teniendo una herramienta en tu cinturón que requiere casi ningún tiempo de configuración o configuración ciertamente nos acerca a tener React como una biblioteca mucho más confiable y de alto rendimiento para alcanzar cuando se construye una aplicación que vivirá en cualquier lado, fuera de las máquinas de 8 núcleos y 32GB de RAM de otros desarrolladores.\n\nPronto, haremos benchmarks en plantillas comunes de React para ver cómo Million impacta la memoria y el rendimiento, ¡así que mantente atento!\n"
  },
  {
    "path": "website/pages/blog/million-beyond-speed.fr-FR.mdx",
    "content": "---\ntitle: 'Million au-delà de la \"Vitesse\"'\ndate: OCT 1, 2023\ndescription: Rendre les applications React plus efficaces en termes de mémoire\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million au-delà de la \"Vitesse\"\n\n  <small>[RICARDO NUNEZ](https://x.com/ricardonunez-io) OCT 1 2023</small>\n</div>\n\n---\n\nSi vous avez entendu parler de Million (d'[Aiden Bai](https://twitter.com/aidenybai), son créateur, ou des énigmes React de [Tobi Adedeji](https://twitter.com/toby_solutions) sur Twitter), vous avez probablement été intrigué par le titre : \"Rendez React 70% plus rapide\".\n\nLa plupart des développeurs ont l'idée que plus rapide est meilleur pour une multitude de raisons, notamment le référencement (SEO) et l'expérience utilisateur. Si je pouvais écrire du React pur et le rendre aussi rapide, voire plus rapide que de nombreux frameworks comme Svelte et Vue (dans certains cas), ce serait une victoire, n'est-ce pas ?\n\nCependant, il y a en réalité quelques autres raisons pour lesquelles Million optimise les applications React, qui ont moins à voir avec simplement la \"vitesse\" et davantage à voir avec la compatibilité, que ce soit avec d'anciens appareils, des ordinateurs portables lents, des téléphones aux ressources limitées, etc.\n\nFondamentalement, tout cela se résume à la mémoire.\n\n> Le vieux meme d'une fenêtre Chrome avec 10 onglets ouverts faisant ramer votre vieux ordinateur portable a beaucoup plus de fondement dans la réalité que ce que les gens réalisent.\n\nSi nous examinons les situations où une application s'exécute très lentement malgré une bonne connexion réseau, cela a généralement beaucoup moins à voir avec la bande passante et beaucoup plus à voir avec la mémoire, c'est ce que nous examinons dans cet article.\n\n<CarbonAds />{' '}\n\n## React sans Million\n\nLa manière dont les applications React classiques fonctionnent sans Million et sans un framework côté serveur comme Next.js est que, pour chaque composant dans votre JSX, un transpileur (Babel) appelle une fonction appelée `React.createElement()`, qui génère non pas des éléments HTML, mais des éléments _React_.\n\nCes éléments React créent en réalité des objets JavaScript, donc votre JSX :\n\n```jsx\n<div>Hello world</div>\n```\n\nse transforme en un appel JavaScript `React.createElement()` qui ressemble à ceci :\n\n```js\nReact.createElement('div', {}, 'Hello world');\n```\n\nCe qui vous donne un objet JavaScript qui ressemble à ceci :\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: { children: \"Hello world\" },\n    ref: null,\n    type: \"div\"\n}\n```\n\nMaintenant, en fonction de la complexité de votre arbre de composants, nous pouvons avoir des objets imbriqués (nœuds DOM) de plus en plus profonds, où la clé `props` de l'élément racine a des centaines ou des milliers d'enfants par page.\n\nCet objet _est_ le DOM virtuel, que ReactDOM transforme en des nœuds DOM réels.\n\nSupposons que nous ayons seulement trois divs imbriquées :\n\n```jsx\n<div>\n  <div>\n    <div>Hello world</div>\n  </div>\n</div>\n```\n\nCela deviendrait quelque chose qui ressemble davantage à ceci en interne :\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: {\n        children: {\n            {\n                $$typeof: Symbol(react.element),\n                key: null,\n                props: {\n                    children: {\n                        {\n                            $$typeof: Symbol(react.element),\n                            key: null,\n                            props: { children: \"Hello world\" },\n                            ref: null,\n                            type: \"div\"\n                        }\n                    },\n                ref: null,\n                type: \"div\"\n            }\n        }\n    },\n    ref: null,\n    type: \"div\"\n}\n```\n\nAssez volumineux, n'est-ce pas ? Gardez à l'esprit que cela concerne seulement un objet imbriqué avec trois éléments !\n\nÀ partir de là, lorsque l'objet (ou les objets) imbriqué(s) changent (c'est-à-dire lorsque l'état provoque le rendu d'une sortie différente pour votre composant), React comparera l'ancien DOM virtuel avec le nouveau DOM virtuel, mettra à jour le DOM réel pour qu'il corresponde au nouveau DOM virtuel, et éliminera tout objet obsolète de l'ancien arbre de composants.\n\n> Notez que c'est pourquoi la plupart des tutoriels React recommandent de déplacer votre `useState()` ou `useEffect()` aussi bas dans l'arborescence que possible, car plus le composant est petit et doit être rendu à nouveau, plus il est efficace d'accomplir ce processus de comparaison (différenciation).\n>\n> ![Schéma expliquant pourquoi déplacer l'état vers les feuilles de l'arbre de composants est plus efficace](https://i.postimg.cc/1R6kkLcQ/Screenshot-2023-09-28-at-10-44-28-PM.png)\n\nMaintenant, la différenciation (diffing) est incroyablement coûteuse par rapport au rendu côté serveur traditionnel où le navigateur reçoit simplement une chaîne HTML, l'analyse et l'insère dans le DOM.\n\nAlors que le rendu côté serveur ne nécessite pas JavaScript, non seulement React en a besoin, mais il crée ce vaste objet imbriqué dans le processus, et à l'exécution, React doit continuellement vérifier les changements, ce qui est très intensif en termes de CPU.\n\n### Utilisation de la mémoire\n\nLa consommation élevée de mémoire intervient de deux manières : stocker le grand objet et effectuer continuellement la différenciation sur ce grand objet. En plus, si vous stockez également l'état en mémoire et utilisez des bibliothèques externes qui stockent également l'état en mémoire (ce que font probablement la plupart des gens, moi y compris).\n\nStocker le grand objet lui-même pose problème dans des environnements à mémoire limitée, car les appareils mobiles et/ou plus anciens peuvent ne pas avoir beaucoup de RAM au départ, encore moins pour les onglets de navigateur qui sont isolés avec leur propre petite quantité de mémoire finie.\n\n> Avez-vous déjà vu votre onglet de navigateur se rafraîchir parce qu'il \"consommait trop d'énergie\" ? C'était probablement une combinaison à la fois d'une utilisation élevée de la mémoire et d'opérations continues du CPU que votre appareil ne pouvait pas gérer, en plus de l'exécution d'autres opérations telles que le système d'exploitation, les actualisations en arrière-plan des applications, le maintien d'autres onglets de navigateur ouverts, etc.\n\nDe plus, la différenciation de l'arbre de composants volumineux signifie remplacer les anciens objets par de nouveaux à chaque mise à jour de l'interface utilisateur, tout en jetant les anciens objets au collecteur de déchets, répétant le processus constamment tout au long de la durée de vie de l'application. Cela est particulièrement vrai pour les applications plus dynamiques et interactives (alias le principal argument de vente de React).\n\n![Exemple du processus de différenciation des objets dans React](https://i.postimg.cc/q7JDzvFs/Example-Diff.png)\n_Comme vous pouvez le voir, le processus de différenciation pour un composant aussi simple où vous changez simplement un mot dans une div signifie la création d'un objet à éliminer lors de la collecte des déchets. Mais que se passe-t-il si vous avez des milliers de ces nœuds dans votre arbre d'objets et que beaucoup d'entre eux dépendent de l'état dynamique ?_\n\nLes magasins d'objets immuables utilisés pour la gestion de l'état (comme avec Redux) surchargent encore davantage la mémoire en ajoutant continuellement de plus en plus de nœuds à leur objet JavaScript.\n\nÉtant donné que ce magasin d'objets est immuable, il continuera simplement à croître, limitant davantage la mémoire disponible pour le reste de votre application, notamment la mise à jour du DOM. Tout cela peut créer une expérience utilisateur lente et sujette à des erreurs.\n\n### V8 et la collecte des déchets\n\nLes navigateurs modernes sont optimisés pour cela, n'est-ce pas ? La collecte des déchets de V8 est incroyablement optimisée et s'exécute très rapidement, alors est-ce vraiment un problème ?\n\nIl y a deux problèmes avec cette affirmation.\n\n1. Même si la collecte des déchets s'exécute rapidement, c'est une opération bloquante, ce qui signifie qu'elle [introduit des retards](https://javascript.info/garbage-collection#internal-algorithms) dans le rendu JavaScript ultérieur.\n\n- Plus les objets à collecter sont volumineux, plus ces retards prennent de temps. Finalement, il arrive un moment où il y a tellement de création d'objets que la collecte des déchets doit s'exécuter encore et encore pour libérer de la mémoire pour ces nouveaux objets, ce qui est souvent le cas lorsque votre application React est ouverte pendant un certain temps.\n\n- Si vous avez déjà travaillé sur l'optimisation d'une application React et que vous l'avez laissée ouverte pendant quelques heures, et que vous cliquez sur un bouton pour constater qu'il met plus de 10 secondes à répondre, vous connaissez ce processus.\n\n2. Même si V8 est très optimisé, les applications React ne le sont souvent pas, avec des écouteurs d'événements qui ne sont souvent pas démontés, des composants trop volumineux, des parties statiques des composants qui ne sont pas mémorisées, etc.\n\n- Tous ces facteurs (même s'ils sont souvent des bogues et/ou des erreurs de développement) augmentent l'utilisation de la mémoire, et certains (comme les écouteurs d'événements non démontés) provoquent même des fuites de mémoire. Oui, des fuites de mémoire. Dans un environnement de mémoire gérée.\n\n![Benchmark Dynatrace (consommation de mémoire de Node.js au fil du temps avec fuite de mémoire)](https://dt-cdn.net/wp-content/uploads/2015/11/DK_7.png)\n_Dynatrace propose une excellente visualisation de l'utilisation de la mémoire d'une application Node.js au fil du temps en présence d'une fuite de mémoire. Même avec une collecte des déchets (les mouvements descendants de la ligne jaune) de plus en plus agressive vers la fin, l'utilisation de la mémoire (et les allocations) continue d'augmenter._\n\nMême Dan Abramov a mentionné dans un [podcast](https://www.youtube.com/watch?v=_gQ6oJb6SMg) que les ingénieurs de Meta ont écrit du code React très mauvais, donc il n'est pas difficile d'écrire du React \"mauvais\", d'autant plus qu'il est facile de créer des problèmes de mémoire en React avec des choses comme les [fermetures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#performance_considerations) (fonctions écrites à l'intérieur de `useEffect()` et `useState()`), ou la nécessité d'utiliser `Array.prototype.map()` pour boucler sur un tableau dans JSX, ce qui crée un clone du tableau original en mémoire.\n\nAinsi, ce n'est pas que React performant est impossible. C'est simplement que ce n'est souvent pas intuitif de savoir comment écrire le composant le plus performant, et la boucle de rétroaction des tests de performance doit souvent attendre les utilisateurs du monde réel avec une variété de navigateurs et d'appareils.\n\n> Remarque : des performances élevées en JavaScript _sont_ possibles ([je recommande vivement cette présentation de Colt McAnlis](https://www.youtube.com/watch?v=Op52liUjvSk)), mais c'est aussi difficile à atteindre, car cela nécessite des choses comme [le regroupement d'objets](https://en.wikipedia.org/wiki/Object_pool_pattern) et des allocations statiques de listes de tableaux pour y parvenir.\n>\n> Ces deux techniques sont difficiles à exploiter dans React, qui est par nature basé sur des composants et ne favorise généralement pas l'utilisation d'une grande liste d'objets globaux recyclés (d'où le grand magasin d'objets immuables _unique_ de Redux, par exemple).\n>\n> Cependant, ces techniques d'optimisation sont toujours souvent utilisées en interne pour des éléments tels que les [listes virtualisées](/docs/virtualization) qui recyclent les nœuds DOM dans de grandes listes dont les lignes sortent de la vue. Vous pouvez en savoir plus sur ces types de techniques d'optimisation spécifiques à React (notamment pour les appareils peu performants tels que les téléviseurs) dans [cette présentation de Seungho Park de LG](https://portal.gitnation.org/contents/overcoming-performance-limitations-in-react-components-for-embedded-devices).\n\n## React Avec Million\n\nGardez à l'esprit que même si les contraintes de mémoire sont réelles, les développeurs sont souvent conscients du nombre d'onglets ou d'applications ouvertes lorsqu'ils exécutent leur serveur de développement. Ainsi, nous ne les remarquerons souvent qu'à travers quelques expériences boguées qui pourraient inciter à un rafraîchissement ou un redémarrage du serveur en développement. Cependant, vos utilisateurs le remarqueront probablement plus souvent que vous, en particulier sur des téléphones, tablettes, ordinateurs portables plus anciens, car ils ne ferment pas nécessairement leurs applications/onglets ouverts pour votre application.\n\nAlors, qu'est-ce que Million fait différemment pour résoudre ce problème ?\n\nEh bien, Million est un compilateur, et même si je n'entrerai pas dans tous les détails ici (vous pouvez en savoir plus sur le [block DOM](/blog/virtual-dom) et la fonction [`block()` de Million](/blog/behind-the-block) sur ces liens), Million peut analyser statiquement votre code React et compiler automatiquement les composants React en composants Higher Order Components fortement optimisés qui sont ensuite rendus par Million.\n\nMillion utilise des techniques se rapprochant de la réactivité fine (clin d'œil à [Solid JS](https://solidjs.com)), où des observateurs sont placés directement sur les nœuds DOM nécessaires pour suivre les changements d'état, parmi d'autres optimisations, plutôt que d'utiliser un DOM virtuel.\n\nCela permet à la performance et à la surcharge mémoire de Million d'être plus proches de JavaScript vanilla optimisé que même les DOM virtuels axés sur la performance tels que Preact ou Inferno, mais sans avoir de couche d'abstraction au-dessus de React. Autrement dit, utiliser Million ne signifie pas déplacer votre application React vers des bibliothèques \"compatibles avec React\". C'est simplement du React pur que Million lui-même peut automatiquement optimiser via notre [CLI](/docs/install).\n\n> Gardez à l'esprit que Million ne convient pas à tous les cas d'utilisation. Nous aborderons où Million s'adapte ou ne s'adapte pas plus tard.\n\n### Utilisation de la mémoire\n\nEn termes d'utilisation de la mémoire, Million utilise environ 55% de la mémoire que React utilise en veille après le chargement de la page, ce qui représente une différence substantielle. Il utilise moins de la moitié de la mémoire que React utilise pour chaque opération individuelle autrement testée par le [JS Framework Benchmark de Krausest](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_113.0.5672.63.html), même sur Chrome 113 (nous sommes actuellement sur 117).\n\n![memory benchmark for vanilla JS versus Million versus React](https://i.postimg.cc/RZj3CgZK/Screenshot-2023-09-29-at-12-13-41-AM.png)\n\nL'impact mémoire que vous subiriez en utilisant Million par rapport à l'utilisation de JavaScript vanilla serait au maximum d'environ 28% supérieur (15 Mo contre 11,9 Mo) lors de l'ajout de 10 000 lignes à une page (l'opération la plus lourde dans le benchmark), tandis que React utiliserait environ 303% pour accomplir la même tâche par rapport à JavaScript vanilla (36,1 Mo contre 11,9 Mo).\n\nAjoutez à cela le nombre total d'opérations que votre application effectue au cours de sa durée de vie, et tant les performances que l'utilisation de la mémoire varieront considérablement lors de l'utilisation d'uniquement un DOM virtuel par rapport à une approche hybride block DOM, en particulier lorsque vous considérez la gestion de l'état, les bibliothèques/dépendances, etc. Bien sûr, c'est en faveur de Million.\n\n## Attendez, mais qu'en est-il de \\_ ?\n\nComme pour tout, il y a des compromis lorsque vous utilisez Million et l'approche block DOM. Après tout, il y avait une raison pour laquelle React a été inventé et il y a certainement encore des raisons de l'utiliser.\n\n### Composants dynamiques\n\nDisons que vous avez un composant hautement dynamique dans lequel les données changent fréquemment.\n\nPar exemple, peut-être avez-vous une application qui consomme des données boursières, et vous avez un composant qui affiche les 1 000 transactions boursières les plus récentes. Le composant lui-même est une liste qui varie le composant d'élément de liste qui est rendu par transaction boursière en fonction de s'il s'agissait d'un achat ou d'une vente.\n\nPour simplifier, nous supposerons qu'il est déjà prérempli avec 1000 transactions boursières.\n\n```jsx\nimport { useState, useEffect } from 'react';\nimport { BuyComponent, SellComponent } from '@/components/recent-trades';\n\nexport function RecentTrades() {\n  const [trades, setTrades] = useState([]);\n\n  useEffect(() => {\n    // Définir une minuterie pour exécuter cet événement toutes les secondes\n    const tradeTimer = setInterval(async () => {\n      try {\n        // Effectuer une requête pour obtenir les échanges récents\n        const tradeRes = await fetch('example.com/stocks/trades');\n        const tradeData = await tradeRes.json();\n\n        setTrades((previousList) => {\n          // Supprimer le nombre d'éléments retournés par\n          // notre appel fetch pour rester à 1 000 éléments\n          previousList.splice(0, tradeData.length);\n\n          // Ajouter les éléments les plus récents\n          for (let i = 0; i < tradeData.length; i++) {\n            previousList.push(tradeData[i]);\n          }\n\n          return [...previousList]; // Retourner une nouvelle liste pour déclencher le rendu\n        });\n      } catch (error) {\n        console.error('Erreur lors de la récupération des échanges :', error);\n      }\n    }, 1000);\n\n    // Nettoyer la minuterie lors du démontage du composant\n    return () => clearInterval(tradeTimer);\n  }, []); // Le tableau vide signifie que cet effet ne dépend d'aucune variable, il s'exécute une seule fois à la création du composant\n\n  return (\n    <ul>\n      {trades.map((trade, index) => (\n        <li key={index}>\n          {trade.includes('+') ? (\n            <BuyComponent>ACHAT : {trade}</BuyComponent>\n          ) : (\n            <SellComponent>VENTE : {trade}</SellComponent>\n          )}\n        </li>\n      ))}\n    </ul>\n  );\n}\n```\n\nEn faisant abstraction du fait qu'il existe probablement des moyens plus efficaces de le faire, c'est un excellent exemple de situation où Million ne performera pas bien. Les données changent toutes les secondes, le composant rendu dépend des données elles-mêmes, et dans l'ensemble, il n'y a rien de vraiment statique dans ce composant.\n\nSi vous examinez le HTML retourné, vous pourriez penser : \"Avoir un composant `<For />` optimisé fonctionnerait bien ici !\" Cependant, en termes de compilateur de Million (à l'exception du composant `<For />` de Million), il n'y a aucun moyen d'analyser statiquement la liste d'éléments retournée, et en fait, des cas comme celui-ci sont [la raison pour laquelle React a été développé pour la première fois chez Facebook](<https://en.wikipedia.org/wiki/React_(software)#History>) (la section des actualités de leur interface utilisateur, une liste très dynamique).\n\nC'est un excellent cas d'utilisation pour le runtime de React, car manipuler directement le DOM est coûteux, et le faire chaque seconde pour une grande liste d'éléments est également coûteux.\n\nCependant, c'est plus rapide lorsqu'on utilise quelque chose _comme_ React, car il ne fera que différer et rerendre cette partie granulaire de la page par rapport à quelque chose rendu traditionnellement côté serveur qui pourrait remplacer toute la page. En raison de cela, Million est mieux adapté pour gérer d'autres parties statiques de la page afin de réduire l'empreinte de React.\n\nCela signifie-t-il que seuls les composants extrêmes comme celui-ci devraient être ignorés par Million et utiliser le runtime de React ? Pas nécessairement. Si vos composants penchent même un peu vers ce type de cas d'utilisation où le composant dépend d'aspects hautement dynamiques comme un état constamment en évolution, des valeurs de retour basées sur des ternaires, ou toute chose qui ne peut pas confortablement entrer dans la boîte \"statique et/ou proche du statique\", alors Million pourrait ne pas bien fonctionner.\n\nEncore une fois, il y a une raison pour laquelle React a été construit, et il y a une raison pour laquelle nous choisissons de l'améliorer, plutôt que de créer un nouveau framework !\n\n## Sur quoi Million fonctionnera-t-il bien ?\n\nNous aimerions certainement voir Million poussé à ses limites, mais pour l'instant, il existe certainement des créneaux où Million excelle.\n\nÉvidemment, les composants statiques sont excellents pour Million, et ceux-ci sont faciles à imaginer, je ne m'étendrai donc pas trop sur le sujet. Il peut s'agir de choses comme des blogs, des pages de destination, des applications avec des opérations de type CRUD où les données ne sont pas trop dynamiques, etc.\n\nCependant, d'autres cas d'utilisation intéressants pour Million sont les applications avec des données imbriquées, c'est-à-dire des objets avec des listes de données à l'intérieur. Cela s'explique par le fait que les données imbriquées sont généralement un peu lentes à rendre en raison de la traversée de l'arbre (c'est-à-dire parcourir tout l'arbre de données pour trouver le point de données dont votre application a besoin).\n\nMillion est optimisé pour ce cas d'utilisation avec notre composant `<For />` qui est spécialement conçu pour parcourir les tableaux de la manière la plus efficace possible et (comme mentionné précédemment) recycler les nœuds DOM pendant le défilement plutôt que de les créer et de les jeter.\n\nC'est l'un des exemples où même avec des données dynamiques et étatiques, les performances peuvent être optimisées pratiquement gratuitement en utilisant simplement `<For />` plutôt que `Array.prototype.map()` et en créant des nœuds DOM pour chaque élément dans le tableau mappé.\n\nPar exemple :\n\n```jsx\nimport { For } from 'million/react';\n\nexport default function App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Add item\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n```\n\nEncore une fois, cette performance peut être obtenue presque gratuitement, la seule condition étant de savoir comment/quand utiliser `<For />`.\n\nPar exemple, le rendu côté serveur a tendance à provoquer des erreurs avec l'hydratation car nous ne mappions pas les éléments du tableau 1:1 avec les nœuds DOM, et notre algorithme de rendu côté serveur diffère de celui du rendu côté client, mais c'est un excellent exemple d'un composant dynamique et étatique qui peut être optimisé avec Million avec un peu de travail !\n\nEt bien que cet exemple utilise un composant personnalisé fourni par Million, il s'agit simplement d'un exemple de cas d'utilisation spécifique où Million peut bien fonctionner. Cependant, comme nous l'avons déjà mentionné, les composants non listes qui peuvent être étatiques et sont relativement statiques fonctionnent incroyablement bien avec le compilateur de Million, tels que les composants de style CRUD comme les formulaires, les composants pilotés par CMS comme les blocs de texte, les pages de destination, etc. (c'est-à-dire la plupart des applications sur lesquelles nous travaillons en tant que développeurs frontend, du moins c'est mon cas).\n\n## Est-il intéressant d'utiliser Million ?\n\nNous pensons certainement que oui. Beaucoup de gens, lorsqu'ils optimisent les performances, se concentrent sur les métriques les plus faciles à suivre : la vitesse de la page. C'est ce que vous pouvez mesurer immédiatement sur [pagespeed.web.dev](https://pagespeed.web.dev), et même si c'est certainement important, le temps de chargement initial de la page ne sera généralement pas un gros impact sur l'expérience utilisateur, surtout lors de l'écriture d'une application à page unique qui est optimisée pour les transitions entre pages, et non pour les chargements de page complets.\n\nCependant, éviter et réduire l'utilisation de la mémoire autant que possible constitue également un cas d'utilisation extrêmement convaincant pour l'utilisation de Million JS.\n\nSi chaque action effectuée par votre utilisateur ne prend pas de temps à s'achever et lui donne un retour instantané, alors l'expérience utilisateur semble plus naturelle, et c'est généralement là que les problèmes de performance surgissent si vous n'êtes pas prudent, car le délai d'entrée est généralement fortement influencé par l'utilisation de la mémoire.\n\nAlors, est-il nécessaire d'utiliser un DOM virtuel pour y parvenir ? Nous ne le pensons certainement pas. Surtout si cela signifie plus de JavaScript à exécuter, plus d'objets à créer et plus de surcharge mémoire à prendre en compte sur des appareils moins puissants.\n\nCela ne signifie pas que Million convient à tous les cas d'utilisation, ni qu'il résoudra tous les problèmes de performances. En fait, nous recommandons de l'utiliser de manière granulaire, car dans certains cas (par exemple, avec des données plus dynamiques comme nous l'avons discuté), un DOM virtuel sera en réalité plus performant.\n\nCependant, avoir un outil dans votre boîte à outils qui nécessite presque aucun temps de configuration ou de configuration nous rapprochera certainement du fait que React soit une bibliothèque beaucoup plus fiable et performante à utiliser lors de la création d'une application qui vivra dans la nature, en dehors des machines 8 cœurs et 32 Go d'autres développeurs.\n\nBientôt, nous réaliserons des benchmarks sur des modèles React courants pour voir comment Million impacte la mémoire et les performances, alors restez à l'écoute !\n"
  },
  {
    "path": "website/pages/blog/million-beyond-speed.zh-CN.mdx",
    "content": "---\ntitle: 'Million Beyond \"Speed\"'\ndate: OCT 1, 2023\ndescription: Making React apps memory efficient\n---\n\nimport Image from 'next/image';\nimport { Steps, Callout } from 'nextra-theme-docs';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million Beyond \"Speed\"\n\n  <small>[RICARDO NUNEZ](https://x.com/ricardonunez-io) OCT 1 2023</small>\n</div>\n\n---\n\nIf you've heard of Million (from [Aiden Bai](https://twitter.com/aidenybai), its creator, or [Tobi Adedeji](https://twitter.com/toby_solutions)'s React puzzles on Twitter), you've probably been intrigued by the headline: \"Make React 70% Faster\".\n\nMost developers have the mindset of faster being better for a multitude or reasons, namely SEO and user experience. If I could write plain React and make it as fast or faster than a lot of frameworks like Svelte and Vue (in some cases), then it's a win, right?\n\nHowever, there are actually a few other reasons why Million optimizes React applications that has less to do with just \"speed\" and more to do with compatibility, whether with old devices, slow laptops, resource-constrained phones, etc.\n\nUltimately, what all of this comes down to is memory.\n\n> The old meme of a Chrome window with 10 tabs open chugging your old laptop to a halt has a lot more basis in reality than people realize.\n\nIf we look at the situations where an app is running really slowly despite being on a good network, it typically has a lot less to do with bandwidth and a lot more to do with memory, and that's what we're taking a look at in this article.\n\n<CarbonAds />\n\n## React Without Million\n\nThe way that typical React applications work without Million and without a server-side framework like Next.js is that for every component in your JSX, a transpiler (Babel) calls a function called `React.createElement()` which outputs not HTML elements but *React* elements.\n\nThese React elements actually create Javascript objects, so your JSX:\n\n```jsx\n<div>Hello world</div>\n```\n\nturns into a `React.createElement()` Javascript call that look like this:\n\n```js\nReact.createElement('div', {}, 'Hello world')\n```\n\nWhich gets you a Javascript object that looks like this:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: { children: \"Hello world\" },\n    ref: null,\n    type: \"div\"\n}\n```\n\nNow, depending on how complex your component tree is, we can have nested objects (DOM Nodes) that go deeper and deeper where the root element's `props` key has hundreds or thousands of children per page.\n\nThis object *is* the virtual DOM, which ReactDOM creates actual DOM nodes out of.\n\nSo let's say we have only three nested divs:\n\n```jsx\n<div>\n    <div>\n        <div>\n            Hello world\n        </div>\n    </div>\n</div>\n```\n\nThis would become something that looks more like this under the hood:\n\n```js\n{\n    $$typeof: Symbol(react.element),\n    key: null,\n    props: {\n        children: {\n            {\n                $$typeof: Symbol(react.element),\n                key: null,\n                props: {\n                    children: {\n                        {\n                            $$typeof: Symbol(react.element),\n                            key: null,\n                            props: { children: \"Hello world\" },\n                            ref: null,\n                            type: \"div\"\n                        }\n                    },\n                ref: null,\n                type: \"div\"\n            }\n        }\n    },\n    ref: null,\n    type: \"div\"\n}\n```\n\nPretty large, right? Keep in mind, this is only for a nested object with three elements, too!\n\nFrom here, when the nested object(s) change (i.e. when state causes your component to render a different output), React will compare the old virtual DOM and new virtual DOM, update the actual DOM so that it matches the new virtual DOM, and discard of any stale objects from the old component tree.\n\n> Note, this is why most React tutorials will recommend moving your `useState()` or `useEffect()` as far down the tree as possible, because the smaller the component is that has to re-render, the more efficient it is to accomplish this comparing process (diffing).\n>\n> ![Diagram of why moving state to the component leaves of the tree is more efficient](https://i.postimg.cc/1R6kkLcQ/Screenshot-2023-09-28-at-10-44-28-PM.png)\n\nNow, diffing is incredibly expensive compared to traditional server-rendering where the browser just receives a string of HTML, parses it, and puts it in the DOM.\n\nWhile server-rendering doesn't require Javascript, not only does React require it, but it creates this huge nested object in the process, and at runtime, React has to continuously check for changes which is very CPU intensive.\n\n### Memory Usage\n\nWhere the high memory usage comes in is in two ways: storing the large object and continuously diffing the large object. Plus extra if you're also storing state in memory as well and using external libraries which also store state in memory (which most people probably are, myself included).\n\nStoring the large object itself is a problem in memory constrained environments, because mobile and/or older devices might not have much RAM to begin with, even less so for browser tabs which are sandboxed with their own small, finite amount of memory.\n\n> Ever had your browser tab refresh because it was \"consuming too much energy\"? That was likely a combination of both high memory usage plus continuous CPU operations that your device couldn't handle along with running these other operations like the OS, background app refreshes, keeping other browser tabs open, etc.\n\nAlso, diffing the large component tree means replacing old objects with new objects whenever the UI updates along with tossing the old objects away to the garbage collector, repeating the process constantly throughout the lifetime of the application. This is especially true for more dynamic, interactive applications (a.k.a. React's main selling point).\n\n![Object diffing process example in React](https://i.postimg.cc/q7JDzvFs/Example-Diff.png)\n*As you can see, the diffing process for even a simple component where you just change one word in a div means an object for garbage collection to get rid of. But what happens if you have thousands of these nodes in your object tree and many of them rely on dynamic state?*\n\nImmutable object stores used for state management (like with Redux) tax memory even more by continuously adding more and more nodes to their Javascript object.\n\nBecause this object store is immutable, it'll just continue to grow and grow, which further limits the memory available for the rest of your app to use for things like updating the DOM. All of this can create a sluggish, buggy-feeling experience for the end-user.\n\n### V8 and Garbage Collection\n\nModern browsers are optimized for this, though, right? V8's garbage collection is incredibly optimized and runs very quickly, so is this really a problem?\n\nThere are two problems with this take.\n\n1. Even if garbage collection runs quickly, garbage collection is a blocking operation, meaning it [introduces delays](https://javascript.info/garbage-collection#internal-algorithms) in subsequent Javascript rendering.\n\n  - The larger the objects are that have to be garbage collected, the longer these delays take. Eventually, there comes a point where there's so much object creation going on that garbage collection needs to run over and over again to free up memory for these new objects, which is often the case when your React app is open for a decent amount of time.\n\n  - If you've ever worked on optimizing a React app and left it open for a couple of hours, and you click a button only for it to take 10+ seconds to respond, you know this process.\n\n2. Even if V8 is highly optimized, React apps often aren't, with event listeners often not being unmounted, components being too large, static portions of components not being memoized, etc.\n\n  - All of these factors (even if they *are* often bugs and/or developer mishaps) increase memory usage, and some (like non-unmounted event listeners) even cause memory leaks. Yes, memory leaks. In a managed memory environment.\n\n![Dynatrace benchmark (Node.js memory consumption over time with memory leak)](https://dt-cdn.net/wp-content/uploads/2015/11/DK_7.png)\n*Dynatrace has a great visualization of a Node JS app's memory usage over time when there's a memory leak. Even with garbage collection (the downward movements of the yellow line) getting more and more aggressive towards the end, memory usage (and allocations) just keeps going up.*\n\nEven Dan Abramov mentioned in a [podcast](https://www.youtube.com/watch?v=_gQ6oJb6SMg) that Meta engineers have written some very bad React code, so it isn't difficult to write \"bad\" React, especially given how easy it is to create memory in React with things like [closures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#performance_considerations) (functions written inside of `useEffect()` and `useState()`), or the necessity for `Array.prototype.map()` to loop over an array in JSX, which creates a clone of the original array in memory.\n\nSo it's not that performant React is impossible. It's just that it's often not intuitive how to write the best performing component, and the feedback loop of performance testing often has to wait for real-world users with a variety of browsers and devices.\n\n> Note: high performance Javascript *is* possible ([I highly recommend this talk from Colt McAnlis](https://www.youtube.com/watch?v=Op52liUjvSk)), but it's also difficult to achieve, because it requires things like [object pooling](https://en.wikipedia.org/wiki/Object_pool_pattern) and static arraylist allocations to get there.\n>\n> Both of these techniques are hard to leverage in React which is componentized by nature and typically doesn't promote the usage of a large list of recycled global objects (hence Redux's large, immutable, *single* object store for example).\n>\n> However, these optimization techniques are still often used under the hood for things like [virtualized lists](/docs/virtualization) which recycle DOM nodes in large lists whose rows go out of view. You can see more of these types of React-specific optimization techniques (specifically for low-end devices like TVs) in [this talk by Seungho Park from LG](https://portal.gitnation.org/contents/overcoming-performance-limitations-in-react-components-for-embedded-devices).\n\n## React With Million\n\nKeep in mind that even though memory constraints are real, developers are often conscious of the amount of tabs or apps open while running their dev server, so we often won't notice them apart from a few buggy experiences that might prompt a refresh or a server restart in development. However, your users will probably notice more often than you, especially on older phones, tablets, laptops, since they aren't clearing their open apps/tabs for your app.\n\nSo what does Million do differently that solves this problem?\n\nWell, Million is a compiler, and while I won't go into everything here (you can read more about the [block DOM](/blog/virtual-dom) and Million's [`block()` function](/blog/behind-the-block) at these links), Million can statically analyze your React code and automatically compile React components into tightly optimized [Higher Order Components](https://https://legacy.reactjs.org/docs/higher-order-components.html) which are then rendered by Million.\n\nMillion uses techniques closer to fine-grained reactivity (shoutout [Solid JS](https://solidjs.com)) where observers are placed right on the necessary DOM nodes to track state changes among other optimizations, rather than using a virtual DOM.\n\nThis allows Million's performance and memory overhead to be closer to optimized vanilla Javascript than even performance focused virtual DOMs like Preact or Inferno, but without having an abstraction layer on top of React. That is to say using Million doesn't mean moving your React app to use \"React-compatible\" libraries. It's just plain React that Million itself can automatically optimize via our [CLI](/docs/install).\n\n> Keep in mind, Million isn't suitable for all use cases. We'll go into where Million does/doesn't fit in later on.\n\n### Memory Usage\n\nIn terms of memory usage, Million uses about 55% of the memory that React does on standby after the page loads, which is a substantial difference. It uses less than half the memory that React does for every single operation otherwise tested by [Krausest's JS Framework Benchmark](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_113.0.5672.63.html), even on Chrome 113 (we're currently on 117).\n\n![memory benchmark for vanilla JS versus Million versus React](https://i.postimg.cc/RZj3CgZK/Screenshot-2023-09-29-at-12-13-41-AM.png)\n\nThe memory hit you'd take by using Million compared to using vanilla Javascript would be at most about 28% higher (15MB vs. 11.9MB) when adding 10,000 rows to a page (the heaviest operation in the benchmark), whereas React would use about 303% to complete the same task vs. vanilla Javascript (36.1 MB vs. 11.9 MB).\n\nCouple that with the total operations your app is completing over its lifetime, and both performance and memory usage will vary dramatically when using purely a virtual DOM vs. a hybrid block DOM approach, especially once you consider state management, libraries/dependencies, etc. Of course, in Million's favor.\n\n## Wait, But What About _?\n\nAs with everything, there are tradeoffs when using Million and the block DOM approach. After all, there was a reason that React was invented and there are definitely still reasons to use it.\n\n### Dynamic Components\n\nLet's say you have a highly dynamic component in which data is frequently changed.\n\nFor example, maybe you have an application which is consuming stock market data, and you have a component that displays the most recent 1,000 stock trades. The component itself is a list that varies the list item component that's rendered per stock trade depending on whether it was a buy or sell.\n\nFor simplicity, we'll assume it's already prepopulated with 1000 stock trades.\n\n```jsx\nimport { useState, useEffect } from \"react\";\nimport { BuyComponent, SellComponent } from \"@/components/recent-trades\"\n\nexport function RecentTrades() {\n    const [trades, setTrades] = useState([]);\n    useEffect(() => {\n        // set a timer to make this event run every second\n        const tradeTimer = setInterval(() => {\n            let tradeRes = fetch(\"example.com/stocks/trades\");\n            // errors? never heard of them\n            tradeRes = JSON.parse(tradeRes);\n            setTrades(previousList => {\n                // remove the amount of elements returned from\n                // our fetch call to stay at 1,000 elements\n                previousList.slice(0, tradeRes.length);\n                // add the most recent elements\n                for (i, i < tradeRes.length, i++) {\n                    previousList.push(tradeRes[i]);\n                };\n                return previousList;\n            });\n        }, 1000);\n\n        return () => clearInterval(tradeTimer);\n    }, [])\n\n    return (\n        <ul>\n            {trades.map((trade, index) => (\n                <li key={index}>\n                    {trade.includes(\"+\") ?\n                        <BuyComponent>BUY: {trade}</BuyComponent>\n                        : <SellComponent>SELL: {trade}</SellComponent>\n                    }\n                </li>\n            ))}\n        </ul>\n    )\n}\n```\n\nIgnoring that there are probably more efficient ways to do this, this is a great example of where Million would *not* do well. The data is changing every second, the component being rendered depends on the data itself, and overall, there is nothing really static about this component.\n\nIf you look at the returned HTML, you might think \"Having an optimized `<For />` component would work great here!\" However, in terms of Million's compiler (barring Million's `<For />` component) there is no way to statically analyze the returned list of elements, and in fact, cases like these are [why React was first brought about at Facebook](https://en.wikipedia.org/wiki/React_(software)#History) (the news section of their UI, a highly dynamic list).\n\nThis is a great use case for React's runtime, because manipulating the DOM directly is expensive, and doing so every second for a large list of elements is expensive as well.\n\nHowever, it's quicker when using something *like* React, because it will only diff and rerender this granular part of the page vs. something traditionally server rendered which might replace the entire page. Because of this, Million is better suited to handle other static parts of the page to keep React's footprint smaller.\n\nDoes that mean only components this extreme should be ignored by Million and use React's runtime? Not necessarily. If your components even lean into this kind of use case where the component relies on highly dynamic aspects like constantly changing state, ternary-driven return values, or anything that can't comfortably fit in the \"static and/or close-to-static\" box, then Million might not work well.\n\nAgain, there's a reason React was built, and there's a reason we're choosing to improve it, not create a new framework!\n\n## What *Will* Million Work Well On?\n\nWe'd definitely like to see Million pushed to the limits of where it can be used, but as for right now, there are certainly sweet spots where Million shines.\n\nObviously, static components are great for Million, and those are easy to imagine, so I won't go too deep into them. These could be things like blogs, landing pages, applications with CRUD-type operations where the data isn't too dynamic, etc.\n\nHowever, other great use cases for Million are applications with nested data, i.e. objects with lists of data inside. This is because nested data is typically a bit slow to render due to tree traversal (i.e. going through the entire tree of data to find the datapoint your application needs).\n\nMillion is optimized for this use case with our `<For />` component which is made specifically for looping over arrays as efficiently as possible and (like we mentioned before) recycling DOM nodes as you scroll rather than creating and discarding them.\n\nThis is one of the examples where even with dynamic, stateful data, performance can be optimized essentially for free by just using `<For />` rather than `Array.prototype.map()` and creating DOM nodes for each item in the mapped array.\n\nFor example:\n\n```jsx\nimport { For } from 'million/react';\n\nexport default function App() {\n    const [items, setItems] = useState([1, 2, 3]);\n\n    return (\n        <>\n            <button onClick={() => setItems([...items, items.length + 1])}>\n                Add item\n            </button>\n            <ul>\n                <For each={items}>{(item) => <li>{item}</li>}</For>\n            </ul>\n        </>\n    );\n}\n```\n\nAgain, this performance can be gained almost for free with the only requirement being knowing how/when to use `<For />`.\n\nFor example, server rendering tends to cause errors with hydration because we're not mapping array elements 1:1 with DOM nodes, and our server rendering algorithm differs to that of client rendering, but it's a great example of a dynamic, stateful component that can be optimized with Million with a bit of work!\n\nAnd although this example uses a custom component provided by Million, this is just an example of a specific use cases where Million can work well. However, as we went over before, non-list components that can be stateful and are relatively static work incredibly well with Million's compiler, such as CRUD-style components like forms, CMS-driven components like text blocks, landing pages, etc. (a.k.a. most applications that we work on as frontend developers, or at least I do).\n\n## Is It Worth Using Million?\n\nWe certainly think so. Lots of people, when optimizing for performance look at the easiest metrics to track: page speed. It's what you can measure right away on [pagespeed.web.dev](https://pagespeed.web.dev), and while that is certainly important, initial page load time usually won't be a big draw on user experience, especially when writing a Single Page Application which is optimized for between-page transitions, not full page loads.\n\nHowever, avoiding and reducing memory usage where possible is also an incredibly compelling use-case for using Million JS.\n\nIf each action that your user performs takes no time to complete and gives them instant feedback, then user experience feels more native, and that's typically where performance issues creep up if you're not careful, because input delay is typically highly influenced by memory usage.\n\nSo is it necessary to use a virtual DOM to acheive this? We certainly *don't* think so. Especially if it means more Javascript to run, more objects to create, and more memory overhead to worry about on lower-end devices.\n\nThis doesn't mean Million is a good fit for all use cases, nor will it solve all performance problems. In fact, we recommend to use it granularly, as in some cases (i.e. more dynamic data like we discussed), a virtual DOM will actually be more performant.\n\nBut having a tool in your toolbelt that requires almost no setup time or config will certainly get us closer to having React be a much more reliable, performant library to reach for when building an app that will live in the wild, outside of other devs' 8 core, 32GB machines.\n\nSoon, we'll be doing benchmarks on common React templates to see how Million impacts memory and performance, so stay tuned!\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.1.en-US.mdx",
    "content": "---\ntitle: 'Million.js v2.5.1'\ndate: JUL 21, 2023\ndescription: Virtualizing the Virtual DOM\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.1\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 21 2023</small>\n</div>\n\n---\n\n<Bounties />\n\nMillion.js v2.5.1 brings a ton of new features and bug fixes! Make sure to upgrade your Million.js version to latest:\n\n<Tabs items={['npm', 'pnpm', 'yarn']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n</Tabs>\n\nLet's dig straight into it:\n\n<CarbonAds />\n\n## Virtualization\n\nLast week, I released a sneak peek of Million.js virtualizing in React. This week, I'm happy to announce that virtualization is now available in Million.js via TanStack Virtual! You can check out the virtualizing guide [here](/docs/virtualization) to get started.\n\n<Callout type=\"info\">\n  Want to compare Million.js vs React virtualization? Check out [this\n  demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n<Tweet id=\"1680005514821001216\" />\n\n## Analytics\n\nMillion.js supports a new `analytics` option, where you can hook into the compiler and get insight into blocks. Here's a basic example of how you can use it:\n\n```js\nconst ComponentBlock = block(Component, {\n  analytics: ({ traversals, data }) => {\n    const percentImprovement = Math.round(\n      ((traversals - data.traversals) / traversals) * 100,\n    );\n    console.log(\n      `Million.js is reducing reconciliation by ${percentImprovement}%`,\n    );\n  },\n});\n```\n\n## More\n\nYou can view the full release here: [https://github.com/aidenybai/million/releases/tag/v2.5.1](https://github.com/aidenybai/million/releases/tag/v2.5.1)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.1.es-ES.mdx",
    "content": "---\ntitle: 'Million.js v2.5.1'\ndate: 21 JUL, 2023\ndescription: Virtualizando el Virtual DOM\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.1\n\n  <small>[AIDEN BAI](https://aidenybai.com) 21 JUL 2023</small>\n</div>\n\n---\n\n<Bounties />\n\nMillion.js v2.5.1 trae un montón de nuevas características y correcciones de errores! Asegúrate de actualizar tu versión de Million.js a la última:\n\n<Tabs items={['npm', 'pnpm', 'yarn']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n</Tabs>\n\nVamos a profundizar en ello:\n\n<CarbonAds />\n\n## Virtualización\n\nLa semana pasada, publiqué un avance de Million.js virtualizando React. Esta semana, me complace anunciar que la virtualización ahora está disponible en Million.js a través de TanStack Virtual! Puedes consultar la guía de virtualización [aquí](/docs/virtualization) para comenzar.\n\n<Callout type=\"info\">\n  ¿Quieres comparar la virtualización de Million.js contra la de React? Echa un\n  vistazo a [¡esta demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n<Tweet id=\"1680005514821001216\" />\n\n## Analíticas\n\nMillion.js soporta una nueva opción de `analíticas`, donde puedes engancharte al compilador y obtener información sobre los bloques. Aquí tienes un ejemplo básico de cómo puedes usarlo:\n\n```js\nconst ComponentBlock = block(Component, {\n  analytics: ({ traversals, data }) => {\n    const percentImprovement = Math.round(\n      ((traversals - data.traversals) / traversals) * 100,\n    );\n    console.log(\n      `Million.js esta reduciendo la reconciliación en un ${percentImprovement}%`,\n    );\n  },\n});\n```\n\n## Más\n\nPuedes ver el lanzamiento completo aquí: [https://github.com/aidenybai/million/releases/tag/v2.5.1](https://github.com/aidenybai/million/releases/tag/v2.5.1)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.1.fr-FR.mdx",
    "content": "---\ntitle: 'Million.js v2.5.1'\ndate: JUL 21, 2023\ndescription: Virtualiser le DOM virtuel\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.1\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 21 2023</small>\n</div>\n\n---\n\n<Bounties />\n\nMillion.js v2.5.1 apporte de nombreuses nouvelles fonctionnalités et corrections de bugs ! Assurez-vous de mettre à jour votre version de Million.js vers la dernière :\n\n<Tabs items={['npm', 'pnpm', 'yarn']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n</Tabs>\n\nLet's dig straight into it:\n\n<CarbonAds />\n\n## Virtualisation\n\nLa semaine dernière, j'ai publié un aperçu de la virtualisation de Million.js dans React. Cette semaine, je suis heureux d'annoncer que la virtualisation est désormais disponible dans Million.js via TanStack Virtual ! Vous pouvez consulter le guide sur la virtualisation [ici](/docs/virtualization) pour commencer.\n\n<Callout type=\"info\">\n  Vous voulez comparer Million.js avec la virtualisation de React ? Consultez\n  [ce démo !](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n<Tweet id=\"1680005514821001216\" />\n\n## Analytique\n\nMillion.js prend en charge une nouvelle option `analytics`, qui vous permet de vous connecter au compilateur et d'obtenir un aperçu des blocs. Voici un exemple de base de la façon dont vous pouvez l'utiliser :\n\n```js\nconst ComponentBlock = block(Component, {\n  analytics: ({ traversals, data }) => {\n    const percentImprovement = Math.round(\n      ((traversals - data.traversals) / traversals) * 100,\n    );\n    console.log(\n      `Million.js is reducing reconciliation by ${percentImprovement}%`,\n    );\n  },\n});\n```\n\n## Plus\n\nVous pouvez consulter la version complète ici : [https://github.com/aidenybai/million/releases/tag/v2.5.1](https://github.com/aidenybai/million/releases/tag/v2.5.1)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.1.zh-CN.mdx",
    "content": "---\ntitle: 'Million.js v2.5.1'\ndate: JUL 21, 2023\ndescription: Virtualizing the Virtual DOM\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.1\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 21 2023</small>\n</div>\n\n---\n\n<Bounties />\n\nMillion.js v2.5.1 brings a ton of new features and bug fixes! Make sure to upgrade your Million.js version to latest:\n\n<Tabs items={['npm', 'pnpm', 'yarn']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n</Tabs>\n\nLet's dig straight into it:\n\n<CarbonAds />\n\n## Virtualization\n\nLast week, I released a sneak peek of Million.js virtualizing in React. This week, I'm happy to announce that virtualization is now available in Million.js via TanStack Virtual! You can check out the virtualizing guide [here](/docs/virtualization) to get started.\n\n<Callout type=\"info\">\n  Want to compare Million.js vs React virtualization? Check out [this\n  demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n<Tweet id=\"1680005514821001216\" />\n\n## Analytics\n\nMillion.js supports a new `analytics` option, where you can hook into the compiler and get insight into blocks. Here's a basic example of how you can use it:\n\n```js\nconst ComponentBlock = block(Component, {\n  analytics: ({ traversals, data }) => {\n    const percentImprovement = Math.round(\n      ((traversals - data.traversals) / traversals) * 100,\n    );\n    console.log(\n      `Million.js is reducing reconciliation by ${percentImprovement}%`,\n    );\n  },\n});\n```\n\n## More\n\nYou can view the full release here: [https://github.com/aidenybai/million/releases/tag/v2.5.1](https://github.com/aidenybai/million/releases/tag/v2.5.1)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.3.en-US.mdx",
    "content": "---\ntitle: 'Million.js v2.5.3'\ndate: JUL 31, 2023\ndescription: From manual to automatic\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.3\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 31 2023</small>\n</div>\n\n---\n\n<Bounties />\n\n## Automatic Mode\n\nThis week, we introduced [Automatic Mode](/docs/automatic), a new feature that automatically analyzes components for you and figures out which ones to optimize.\n\n<Tweet id=\"1685710432122593280\" />\n\n## More\n\nYou can view the full release here: [https://github.com/aidenybai/million/releases/tag/v2.5.3](https://github.com/aidenybai/million/releases/tag/v2.5.3)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.3.es-ES.mdx",
    "content": "---\ntitle: 'Million.js v2.5.3'\ndate: 31 JUL, 2023\ndescription: De manual a automático\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.3\n\n  <small>[AIDEN BAI](https://aidenybai.com) 31 JUL 2023</small>\n</div>\n\n---\n\n<Bounties />\n\n## Modo Automático\n\nEsta semana, introdujimos el [Modo Automático](/docs/automatic), una nueva función que analiza automáticamente los componentes y descubre cuáles optimizar.\n\n<Tweet id=\"1685710432122593280\" />\n\n## Más\n\nPuedes ver la lista completa de cambios aquí: [https://github.com/aidenybai/million/releases/tag/v2.5.3](https://github.com/aidenybai/million/releases/tag/v2.5.3)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.3.fr-FR.mdx",
    "content": "---\ntitle: 'Million.js v2.5.3'\ndate: JUL 31, 2023\ndescription: De manuel à automatique\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.3\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 31 2023</small>\n</div>\n\n---\n\n<Bounties />\n\n## Mode Automatique\n\nCette semaine, nous avons introduit le [Mode Automatique](/docs/automatic), une nouvelle fonctionnalité qui analyse automatiquement les composants pour vous et détermine lesquels optimiser.\n\n<Tweet id=\"1685710432122593280\" />\n\n## Plus\n\nVous pouvez consulter la version complète ici : [https://github.com/aidenybai/million/releases/tag/v2.5.3](https://github.com/aidenybai/million/releases/tag/v2.5.3)\n"
  },
  {
    "path": "website/pages/blog/million-v2.5.3.zh-CN.mdx",
    "content": "---\ntitle: 'Million.js v2.5.3'\ndate: JUL 31, 2023\ndescription: From manual to automatic\n---\n\nimport Image from 'next/image';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport { Tweet } from 'react-tweet';\nimport { CarbonAds } from '../../components/ad';\nimport { Bounties } from '../../components/bounties';\n\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Million.js v2.5.3\n\n  <small>[AIDEN BAI](https://aidenybai.com) JUL 31 2023</small>\n</div>\n\n---\n\n<Bounties />\n\n## Automatic Mode\n\nThis week, we introduced [Automatic Mode](/docs/automatic), a new feature that automatically analyzes components for you and figures out which ones to optimize.\n\n<Tweet id=\"1685710432122593280\" />\n\n## More\n\nYou can view the full release here: [https://github.com/aidenybai/million/releases/tag/v2.5.3](https://github.com/aidenybai/million/releases/tag/v2.5.3)\n"
  },
  {
    "path": "website/pages/blog/virtual-dom.en-US.mdx",
    "content": "---\ntitle: 'Virtual DOM: Back in Block'\ndate: MAY 1, 2023\ndescription: A deep dive into the block virtual DOM and how Million.js uses it.\n---\n\nimport Image from 'next/image';\nimport YouTube from 'react-youtube';\nimport { VDomExample } from '../../components/back-in-block/vdom';\nimport { StaticAnalysisExample } from '../../components/back-in-block/static-analysis';\nimport { BlockVDomExample } from '../../components/back-in-block/block-vdom';\nimport { CountExample } from '../../components/back-in-block/count';\nimport { Callout } from 'nextra-theme-docs';\nimport { Chart } from '../../components/chart';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <a href=\"https://www.youtube.com/watch?v=2-fR2rrmw3I\">\n    <Image src=\"/back-in-block.png\" width={350} height={130} />\n  </a>\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Virtual DOM: Back in Block\n\n  <small>[AIDEN BAI](https://aidenybai.com) MAY 1 2023</small>\n</div>\n\n---\n\n<Callout type=\"info\">\n  Want to watch a 30 second summary by Fireship? [**Watch it\n  here**](https://youtu.be/VkezQMb1DHw?t=73\">).\n</Callout>\n\n<br />\n\n<div className=\"lg:w-7/12 text-center mx-auto flex justify-center\">\n  <YouTube\n    className=\"youtubeContainer\"\n    videoId=\"VkezQMb1DHw\"\n    opts={{ start: 73 }}\n  />\n</div>\n\n---\n\nA little over four years ago, Rich Harris released [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead), analyzing the performance of traditional virtual DOM manipulation.<a href=\"#0\"><sup>[0]</sup></a>\n\n> <sup id=\"#0\">[0]</sup> \"you've probably heard the phrase 'the virtual DOM is fast',\n> often said to mean that it's faster than the real DOM. It's a surprisingly resilient\n> meme\" - Harris, 2018\n\nIn his article \"Virtual DOM is pure overhead,\" Rich Harris argues that the virtual DOM, a widely praised feature of frameworks like React, is not as efficient as many developers believe. He goes on to critique the way it works and presents an alternative approach.\n\nBut what followed years after was the emergence of a new meme: that the virtual DOM **is pure overhead**. The meme became so resilient that it turned the \"no virtual DOM\" framework movement from an iconoclastic subgroup to a fully fledged crusade.\n\nThus, the virtual DOM was relegated to the \"annoying cousin nobody likes but has to invite to family gatherings\" status. It became necessary evil, a performance tax that we had to pay for the convenience of declarative UIs.\n\nUntil now.\n\n<CarbonAds />\n\n## Origin story\n\nThe virtual DOM was created to address performance issues caused by frequent manipulation of the real DOM. It is a lightweight, in-memory representation of the real DOM, which can be later used as a reference to update the actual web page.\n\nWhen a component is rendered, the virtual DOM calculates the difference between the new state and the previous state (a process called \"diffing\") and makes the minimal set of changes to the real DOM to bring it in sync with the updated virtual DOM (a process called \"reconciliation\").\n\n### Visual Example\n\nLet's say we're given some React component `<Numbers />{:jsx}`:\n\n```jsx\nfunction Numbers() {\n  return (\n    <foo>\n      <bar>\n        <baz />\n      </bar>\n      <boo />\n    </foo>\n  );\n}\n```\n\nWhen React renders this component, it will go through the process of diffing (checking for changes) and reconciliation (updating the DOM). The process looks something like this:\n\n<VDomExample />\n\n### The problem\n\nIn the previous example, you can see that diffing depends on the size of the tree, ultimately resulting in the bottleneck of the virtual DOM. The more nodes you have, the more time it takes to diff.\n\nWith newer frameworks like Svelte, the virtual DOM isn't even used because of the performance overhead. Instead, Svelte uses a technique called \"dirty checking\" to determine what has changed. Fine-grained reactivity frameworks like SolidJS take this a step further by pinpointing exactly what has changed and updating only that part of the DOM.\n\n## The Block Virtual DOM\n\nIn 2022, [Blockdom](https://github.com/ged-odoo/blockdom) was released. Taking a fundamentally different approach, Blockdom introduced the idea of a \"block virtual DOM.\"\n\nThe Block virtual DOM takes a different approach to diffing, and can be broken down into two parts:\n\n1. **Static Analysis**: The virtual DOM is analyzed to extract dynamic parts of the tree into an \"Edit Map,\" or the list of the \"edits\" (mappings) of the dynamic parts of the virtual DOM to the state.\n\n2. **Dirty Checking**: The state (**not** the virtual DOM tree) is diffed to determine what has changed. If the state has changed, the DOM is updated directly via the Edit Map.\n\n<Callout type=\"info\">\n\n**TL;DR: Diff the data, not the DOM.**\n\nWhy? The size of the data is generally much smaller than the size of the DOM. It also can be much simpler to diff data values than to diff full DOM nodes.\n\n</Callout>\n\nSince Million.js takes a similar approach to Blockdom, we'll be using Million.js syntax for the rest of this article.\n\n### Counter Example\n\nLet's take a look at a simple counter example and how it would be handled with Million.js:\n\n```jsx {7-8,13-14}\nimport { useState } from 'react';\nimport { block } from 'million/react';\n\nfunction Count() {\n  const [count, setCount] = useState(0);\n\n  const node1 = count + 1;\n  const node2 = count + 2;\n\n  return (\n    <div>\n      <ul>\n        <li>{node1}</li>\n        <li>{node2}</li>\n      </ul>\n      <button\n        onClick={() => {\n          setCount(count + 1);\n        }}\n      >\n        Increment Count\n      </button>\n    </div>\n  );\n}\nconst CountBlock = block(Count);\n```\n\n<CountExample />\n\n### Static Analysis\n\nThe static analysis step can occur at compile time or the first thing at runtime, depending on whether you use Million.js' experimental compiler or not.\n\nThis step is responsible for extracting dynamic parts of the virtual DOM into the Edit Map.\n\n<StaticAnalysisExample />\n\n### Dirty Checking\n\nAfter the Edit Map is created, the dirty checking step can begin. This step is responsible for determining what has changed in the state, and updating the DOM accordingly.\n\n<BlockVDomExample />\n\nYou can see that the dirty checking example takes much less computation than the diffing step. This is because the dirty checking step is only concerned with the state, not the virtual DOM, as each virtual node might need many levels of recursion to determine if it has changed, state just needs a shallow equality check.\n\n## Is this technique effective?\n\n**Yes, but it's not a silver bullet.** [(View latest benchmark)](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html)\n\n<Chart />\n\nMillion.js sports pretty high performance and is able to outperform React in the JavaScript Framework Benchmark. But it's important to understand how Million.js can be fast in this case.\n\nThe JavaScript Framework Benchmark is a benchmark that tests the performance of frameworks by rendering a large table of rows and columns. The benchmark is designed to test the performance of highly unrealistic performance tests (like adding/replacing 1000 rows), and is not necessarily representative of real world applications.\n\nSo where can Million.js or the block virtual DOM be used?\n\n### Lots of static content with little dynamic content\n\nBlock virtual DOM is best used when there is a lot of static content with little dynamic content. The biggest advantage the block virtual DOM has is that it doesn't need to think about the static parts of the virtual DOM, so if it can skip over a lot of static content, it can be very fast.\n\nFor example, the block virtual DOM would be much faster than the regular virtual DOM in this case:\n\n```jsx {3}\n// ✅ Good\n<div>\n  <div>{dynamic}</div>\n  Lots and lots of static content...\n</div>\n```\n\nBut you may not see much difference between the block virtual DOM and the regular virtual DOM if you have a lot of dynamic content:\n\n```jsx {3-7}\n// ❌ Bad\n<div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n</div>\n```\n\nIf you're building an admin dashboard, or a website of components with lots of static content, the block virtual DOM might be a good fit for you. But if you're building a website where the computation it takes to diff the data is significantly greater than the computation it takes to diff the virtual DOM, you might not see much of a difference.\n\nFor example, this component would be a **bad** candidate for the block virtual DOM, since there are more data values to diff than there are virtual DOM nodes:\n\n```jsx\n// 5 data values to diff\nfunction Component({ a, b, c, d, e }) {\n  // 1 virtual DOM node to diff\n  return <div>{a + b + c + d + e}</div>;\n}\n```\n\n### \"Stable\" UI trees\n\nThe block virtual DOM is also good for \"stable\" UI trees, or UI trees that don't change much. This is because the Edit Map is only created once, and shouldn't need to be recreated on every render.\n\nFor example, the following component would be a good candidate for the block virtual DOM:\n\n```jsx\nfunction Component() {\n  // ✅ Good, because deterministic / stable return\n  return <div>{dynamic}</div>;\n}\n```\n\nBut this component might be _slower_ than the regular virtual DOM:\n\n```jsx\nfunction Component() {\n  // ❌ Bad, because non-deterministic / unstable return\n  return Math.random() > 0.5 ? <div>{dynamic}</div> : <p>sad</p>;\n}\n```\n\nIf you need to use undeterministic / unstable returns that follow a \"List-like\" shape, you can use the [`<For />{:jsx}`](/docs/quickstart#for-) component to help you:\n\n```jsx\nfunction Component() {\n  return <For each={items}>{(item) => <div>{item}</div>}</For>;\n}\n```\n\nNotice how there is a limitation on how the application UI can be structured. \"Stable\" returns mean that components with non-list-like dynamic shapes (like a conditional return in the same component) are not allowed.\n\n### Use granularly\n\nOne of the biggest mistakes beginners make is using the block virtual DOM everywhere. This is a bad idea, because the block virtual DOM is not a silver bullet, and is not always faster than the regular virtual DOM.\n\nInstead, you should recognize certain patterns where the block virtual DOM is faster, and use it only in those cases. For example, you might use the block virtual DOM for a large table, but use the regular virtual DOM for a small form with a little static content.\n\n## Closing Thoughts\n\nThe block virtual DOM offers a fresh perspective on the virtual DOM concept, providing an alternative approach to managing updates and minimizing overhead. Despite its potential, it is not a one-size-fits-all solution, and developers should evaluate the specific needs and performance requirements of their applications before deciding whether to adopt this approach.\n\nFor many applications, the conventional virtual DOM may be sufficient, and there may be no need to switch to the block virtual DOM or other performance-focused frameworks. If your application runs smoothly without performance issues on most devices, it might not be worth the time and effort to transition to a different framework. It's essential to carefully weigh the trade-offs and evaluate your application's unique requirements before making any major changes to your tech stack.\n\nThat said, I'm excited to see what the future holds for it. Are you too? ([Go build your own!](https://github.com/aidenybai/hundred#readme))\n\n[Discuss on Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fvirtual-dom) | [Edit on GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/virtual-dom.mdx)\n\n### Acknowledgements\n\n- [Seb Lorber](https://twitter.com/sebastienlorber) for suggesting this post idea\n- [Jesse Pense](https://twitter.com/JessePence5) for helping read and edit the post\n- [Dan Jutan](https://twitter.com/jutanium) for making the [fastest investment of 2023](https://twitter.com/jutanium/status/1652907080330665984)\n- [Rich Harris](https://twitter.com/Rich_Harris)'s \"Virtual DOM is pure overhead\"\n- [Dan Abramov](https://twitter.com/dan_abramov)'s \"React as a UI runtime\"\n- [Ryan Carniato](https://twitter.com/RyanCarniato)'s \"Components are Pure Overhead\"\n- [Chung Wu](https://twitter.com/chungwu)'s \"How React server components work: an in-depth guide\"\n"
  },
  {
    "path": "website/pages/blog/virtual-dom.es-ES.mdx",
    "content": "---\ntitle: 'Virtual DOM: Back in Block'\ndate: 1 MAY, 2023\ndescription: Un análisis a profundidad del block virtual DOM y como Million.js lo útiliza.\n---\n\nimport Image from 'next/image';\nimport YouTube from 'react-youtube';\nimport { VDomExample } from '../../components/back-in-block/vdom';\nimport { StaticAnalysisExample } from '../../components/back-in-block/static-analysis';\nimport { BlockVDomExample } from '../../components/back-in-block/block-vdom';\nimport { CountExample } from '../../components/back-in-block/count';\nimport { Callout } from 'nextra-theme-docs';\nimport { Chart } from '../../components/chart';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <a href=\"https://www.youtube.com/watch?v=2-fR2rrmw3I\">\n    <Image src=\"/back-in-block.png\" width={350} height={130} />\n  </a>\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Virtual DOM: Back in Block\n\n  <small>[AIDEN BAI](https://aidenybai.com) 1 MAY 2023</small>\n</div>\n\n---\n\n<Callout type=\"info\">\n  ¿Quieres ver un resumen de 30 segundos de Fireship? [**Míralo\n  aquí**](https://youtu.be/VkezQMb1DHw?t=73\">).\n</Callout>\n\n<br />\n\n<div className=\"lg:w-7/12 text-center mx-auto flex justify-center\">\n  <YouTube\n    className=\"youtubeContainer\"\n    videoId=\"VkezQMb1DHw\"\n    opts={{ start: 73 }}\n  />\n</div>\n\n---\n\nUn poco mas de cuatro años atrás, Rich Harris lanzó [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead), analizando el rendimiento de la manipulación tradicional del virtual DOM.<a href=\"#0\"><sup>[0]</sup></a>\n\n> <sup id=\"#0\">[0]</sup> \"probablemente hayas escuchado la frase 'el virtual DOM\n> es rápido', dicha a menudo para referirse a que es más rápido que el DOM real.\n> Es un meme sorprendentemente resilente\" - Harris, 2018\n\nEn este artículo \"Virtual DOM is pure overhead,\" Rich Harris argumenta que el virtual DOM, una característica ampliamente elogiada de frameworks como React, no es tan eficiente como muchos desarrolladores creen. Luego critica la forma en que funciona y presenta un enfoque alternativo.\n\nPero lo que siguió años después fue la aparición de un nuevo meme: que el virtual DOM **es pura sobrecarga**. El meme se volvió tan resilente que convirtió al movimiento de frameworks \"sin virtual DOM\" de un subgrupo iconoclasta a una cruzada plenamente desarrollada.\n\nAsí, el virtual DOM fue relegado al estatus de \"el primo molesto que a nadie le gusta pero tiene que invitar a las reuniones familiares\". Se convirtió en un mal necesario, un impuesto de rendimiento que teníamos que pagar por la comodidad de las interfaces de usuario declarativas.\n\nHasta ahora.\n\n<CarbonAds />\n\n## Historia de Origen\n\nEl virtual DOM fue creado para abordar los problemas de rendimiento causados por la manipulación frecuente del DOM real. Es una representación ligera en memoria del DOM real, que luego se puede usar como referencia para actualizar la página web real.\n\nCuando un componentes es renderizado, el virtual DOM calcula la diferencia entre el nuevo estado y el estado anterior (un proceso llamado \"diffing\") y hace el conjunto mínimo de cambios al DOM real para sincronizarlo con el virtual DOM actualizado (un proceso llamado \"reconciliación\").\n\n### Ejemplo Visual\n\nDigamos que tenemos un componente de React `<Numbers />{:jsx}`:\n\n```jsx\nfunction Numbers() {\n  return (\n    <foo>\n      <bar>\n        <baz />\n      </bar>\n      <boo />\n    </foo>\n  );\n}\n```\n\nCuando React renderiza este componente, pasará por el proceso de diffing (verificación de cambios) y reconciliación (actualización del DOM). El proceso se ve algo así:\n\n<VDomExample />\n\n### El problema\n\nEn el ejemplo anterior, puedes ver que el diffing depende del tamaño del árbol, lo que resulta en el cuello de botella del virtual DOM. Cuantos más nodos tengas, más tiempo tardará en diffing.\n\nCon nuevos frameworks como Svelte, el virtual DOM ni siquiera se usa debido a la sobrecarga de rendimiento. En su lugar, Svelte utiliza una técnica llamada \"dirty checking\" para determinar qué ha cambiado. Los frameworks de reactividad de granularidad fina como SolidJS llevan esto un paso más allá al señalar exactamente qué ha cambiado y actualizar solo esa parte del DOM.\n\n## El Block Virtual DOM\n\nEn 2022, [Blockdom](https://github.com/ged-odoo/blockdom) fué lanzado. Tomando un enfoque fundamentalmente diferente, Blockdom introdujo la idea de un \"block virtual DOM.\"\n\nEl Block virtual DOM toma un enfoque diferente al diffing, y se puede dividir en dos partes:\n\n1. **Análisis Estático**: El virtual DOM es analizado para extraer las partes dinámicas del árbol en un \"Edit Map\" o la lista de \"edits\" (mapeos) de las partes dinámicas del estado del virtual DOM.\n\n2. **Dirty Checking**: El estado (**no** el árbol del virtual DOM) es diferenciado para determinar qué ha cambiado. Si el estado ha cambiado, el DOM se actualiza directamente a través del Edit Map.\n\n<Callout type=\"info\">\n\n**TL;DR: Diferencia la información, no el DOM.**\n\n¿Por qué? el tamaño de los datos es generalmente mucho más pequeño que el tamaño del DOM. También puede ser mucho más simple diferenciar los valores de los datos que diferenciar los nodos DOM completos.\n\n</Callout>\n\nDesde que Million.js toma una aproximación similar al Blockdom, estaremos usando la sintáxis de Million.js por el resto de este artículo.\n\n### Ejemplo del contador\n\nDemos un vistazo a un ejemplo simple de contador y cómo sería manejado con Million.js:\n\n```jsx {7-8,13-14}\nimport { useState } from 'react';\nimport { block } from 'million/react';\n\nfunction Count() {\n  const [count, setCount] = useState(0);\n\n  const node1 = count + 1;\n  const node2 = count + 2;\n\n  return (\n    <div>\n      <ul>\n        <li>{node1}</li>\n        <li>{node2}</li>\n      </ul>\n      <button\n        onClick={() => {\n          setCount(count + 1);\n        }}\n      >\n        Incrementar Cuenta\n      </button>\n    </div>\n  );\n}\nconst CountBlock = block(Count);\n```\n\n<CountExample />\n\n### Análisis Estático\n\nEl paso del análisis estático puede ocurrir al compilar o al inicio de la ejecución, dependiendo de si usas el compilador experimental de Million.js o no.\n\nEste paso es responsable de extraer las partes dinámicas del virtual DOM en el Edit Map.\n\n<StaticAnalysisExample />\n\n### Dirty Checking\n\nDespués de que el Edit Map es creado, el paso de dirty checking puede comenzar. Este paso es responsable de determinar qué ha cambiado en el estado, y actualizar el DOM en consecuencia.\n\n<BlockVDomExample />\n\nPuedes ver que el dirty checking es mucho más rápido que el diffing. Esto es porque el dirty checking solo necesita verificar el estado, no el virtual DOM, ya que cada nodo virtual puede necesitar muchos niveles de recursión para determinar si ha cambiado, el estado solo necesita una verificación de igualdad superficial.\n\n## ¿Es esta técnica efectiva?\n\n**Si, pero no es una bala de plata.** [(Ver último benchmark)](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html)\n\n<Chart />\n\nMillion.js presenta un rendimiento bastante alto, y es capaz de superar a React en el Benchmarks de frameworks JavaScript Pero es importante entender cómo Million.js puede ser rápido en este caso.\n\nEl benchmark de frameworks JavaScript es un benchmark que prueba el rendimiento de los frameworks al renderizar una gran tabla de filas y columnas. El benchmark está diseñado para probar el rendimiento de pruebas de rendimiento altamente irreales (como agregar/reemplazar 1000 filas), y no es necesariamente representativo de aplicaciones del mundo real.\n\nEntonces, ¿donde puede Million.js o el block virtual DOM ser usado?\n\n### Mucho contenido estático con poco contenido dinámico\n\nBlock virtual DOM es mejor aprovechado cuando hay mucho contenido estático con poco contenido dinámico. La mayor ventaja del block virtual DOM es que no necesita pensar en las partes estáticas del virtual DOM, por lo que si puede saltarse mucho contenido estático, puede ser muy rápido.\n\nPor ejemplo, el block virtual DOM sería mucho más rápido que el regular virtual DOM en este caso:\n\n```jsx {3}\n// ✅ Bien\n<div>\n  <div>{dynamic}</div>\n  Mucho y muchos contenidos estático...\n</div>\n```\n\nPero no verías muchas diferencia entre el block virtual DOM y el virtual DOM regular si tienes mucho contenido dinámico:\n\n```jsx {3-7}\n// ❌ Mal\n<div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n</div>\n```\n\nSi estás construyendo un panel de administrador, o un sitio web de componentes con mucho contenido estático, el block virtual DOM podría ser una buena opción para ti. Pero si estás construyendo un sitio web donde el cálculo que toma diferenciar los datos es significativamente mayor que el cálculo que toma diferenciar el virtual DOM, es posible que no veas mucha diferencia.\n\nPor ejemplo, este componente sería un **mal** candidato para el block virtual DOM, ya que hay más nodos virtuales para diferenciar que valores de datos:\n\n```jsx\n// 5 valores de datos a diferenciar\nfunction Component({ a, b, c, d, e }) {\n  // 1 nodo de virtual DOM a diferenciar\n  return <div>{a + b + c + d + e}</div>;\n}\n```\n\n### Árboles UI \"Estables\"\n\nEl block virtual DOM es bueno para árboles UI \"estables\", o árboles UI que no cambian mucho. Esto se debe a que el Edit Map solo se crea una vez, y no debería necesitar recrearse en cada renderizado.\n\nPor ejemplo, el siguiente componente podría ser un buen candidato para el block virtual DOM:\n\n```jsx\nfunction Component() {\n  // ✅ Bien, por que returna algo determinístico / estable\n  return <div>{dynamic}</div>;\n}\n```\n\nPero este componente podrías ser _mas lento_ que el virtual DOM regular:\n\n```jsx\nfunction Component() {\n  // ❌ Malo, por no retornar algo determinístico / unstable\n  return Math.random() > 0.5 ? <div>{dynamic}</div> : <p>sad</p>;\n}\n```\n\nSi necesitas usar retornos no determinísticos / inestables que siguen una forma \"parecida a una lista\", puedes usar el componente [`<For />{:jsx}`](/docs/quickstart#for-) para ayudarte:\n\n```jsx\nfunction Component() {\n  return <For each={items}>{(item) => <div>{item}</div>}</For>;\n}\n```\n\nNota que hay una limitación en como la UI de la aplicación puede ser estructurada. \"Retornos estables\" significa que componentes con formas dinámicas no parecidas a una lista (como un retorno condicional en el mismo componente) no son permitidos.\n\n### Utilizar granularidad\n\nUno de los mayores errores que los principiantes cometen es usar el block virtual DOM en todas partes. Esto es una mala idea, porque el block virtual DOM no es una bala de plata, y no siempre es más rápido que el virtual DOM regular.\n\nEn lugar de eso, deberías reconocer ciertos patrones donde el block virtual DOM es más rápido, y usarlo solo en esos casos. Por ejemplo, podrías usar el block virtual DOM para una tabla grande, pero usar el virtual DOM regular para un pequeño formulario con un poco de contenido estático.\n\n## Reflexiones Finales\n\nEl block virtual DOM ofrece una perspectiva fresca sobre el concepto de virtual DOM, proporcionando un enfoque alternativo para administrar las actualizaciones y minimizar la sobrecarga. A pesar de su potencial, no es una solución única para todos, y los desarrolladores deben evaluar las necesidades específicas y los requisitos de rendimiento de sus aplicaciones antes de decidir si adoptar este enfoque.\n\nPara algunas aplicaciones, el virtual DOM convencional podría ser suficiente, y podrías no ser necesario cambiar al block virtual DOM u otros frameworks enfocados en el rendimiento. Si tu aplicación se ejecuta sin problemas sin problemas de rendimiento en la mayoría de los dispositivos, puede que no valga la pena el tiempo y el esfuerzo de cambiar a un framework diferente. Es esencial sopesar cuidadosamente los compromisos y evaluar los requisitos únicos de tu aplicación antes de realizar cambios importantes en tu stack tecnológico.\n\nDicho eso, Estoy emocionado de ver qué depara el futuro para el block virtual DOM. ¿Tú también? ([¡Construye el tuyo!](<(https://github.com/aidenybai/hundred#readme)>)\n\n[Discutirlo en Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fvirtual-dom) | [Editar en GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/virtual-dom.mdx)\n\n### Agradecimientos\n\n- [Seb Lorber](https://twitter.com/sebastienlorber) por sugerir la idea de este artículo\n- [Jesse Pense](https://twitter.com/JessePence5) por ayudar a leer y editar este artículo\n- [Dan Jutan](https://twitter.com/jutanium) por hacer la [inversión mas rápida de 2023](https://twitter.com/jutanium/status/1652907080330665984)\n- [Rich Harris](https://twitter.com/Rich_Harris) por su artículo \"Virtual DOM is pure overhead\"\n- [Dan Abramov](https://twitter.com/dan_abramov) por su artículo \"React as a UI runtime\"\n- [Ryan Carniato](https://twitter.com/RyanCarniato) por su artículo \"Components are Pure Overhead\"\n- [Chung Wu](https://twitter.com/chungwu) por su artículo \"How React server components work: an in-depth guide\"\n"
  },
  {
    "path": "website/pages/blog/virtual-dom.fr-FR.mdx",
    "content": "---\ntitle: 'Virtual DOM : Retour dans le Block'\ndate: MAY 1, 2023\ndescription: Un examen approfondi du virtual DOM de block et de son utilisation par Million.js\n---\n\nimport Image from 'next/image';\nimport YouTube from 'react-youtube';\nimport { VDomExample } from '../../components/back-in-block/vdom';\nimport { StaticAnalysisExample } from '../../components/back-in-block/static-analysis';\nimport { BlockVDomExample } from '../../components/back-in-block/block-vdom';\nimport { CountExample } from '../../components/back-in-block/count';\nimport { Callout } from 'nextra-theme-docs';\nimport { Chart } from '../../components/chart';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <a href=\"https://www.youtube.com/watch?v=2-fR2rrmw3I\">\n    <Image src=\"/back-in-block.png\" width={350} height={130} />\n  </a>\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Virtual DOM: Back in Block\n\n  <small>[AIDEN BAI](https://aidenybai.com) MAY 1 2023</small>\n</div>\n\n---\n\n<Callout type=\"info\">\n  Envie de voir un résumé de 30 secondes par Fireship ? [**Regardez-le\n  ici**](https://youtu.be/VkezQMb1DHw?t=73\">).\n</Callout>\n\n<br />\n\n<div className=\"lg:w-7/12 text-center mx-auto flex justify-center\">\n  <YouTube\n    className=\"youtubeContainer\"\n    videoId=\"VkezQMb1DHw\"\n    opts={{ start: 73 }}\n  />\n</div>\n\n---\n\nIl y a un peu plus de quatre ans, Rich Harris a publié [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead), analysant les performances de la manipulation traditionnelle du virtual DOM.<a href=\"#0\"><sup>[0]</sup></a>\n\n> <sup id=\"#0\">[0]</sup> \"vous avez probablement entendu l'expression 'le virtual\n> DOM est rapide', souvent utilisée pour signifier qu'il est plus rapide que le vrai\n> DOM. C'est un mème étonnamment résilient\" - Harris, 2018\n\nDans son article \"Virtual DOM is pure overhead\", Rich Harris soutient que le virtual DOM, une fonctionnalité largement saluée dans des frameworks comme React, n'est pas aussi efficace que beaucoup de développeurs le croient. Il critique la manière dont il fonctionne et propose une approche alternative.\n\nMais ce qui a suivi, quelques années plus tard, c'est l'émergence d'un nouveau mème : que le virtual DOM **est purement superflu**. Ce mème est devenu si résilient qu'il a transformé le mouvement des frameworks \"sans virtual DOM\" d'un sous-groupe iconoclaste en une croisade à part entière.\n\nAinsi, le virtual DOM a été relégué au statut de \"cousin ennuyeux que personne n'aime mais qu'il faut inviter aux réunions de famille\". Il est devenu un mal nécessaire, une taxe de performance que nous devions payer pour la commodité des interfaces utilisateur déclaratives.\n\nJusqu'à maintenant.\n\n<CarbonAds />\n\n## Histoire d'origine\n\nLe virtual DOM a été créé pour résoudre les problèmes de performances causés par la manipulation fréquente du vrai DOM. C'est une représentation légère et en mémoire du vrai DOM, qui peut être utilisée ultérieurement comme référence pour mettre à jour la page web réelle.\n\nLorsqu'un composant est rendu, le virtual DOM calcule la différence entre le nouvel état et l'état précédent (un processus appelé \"diffing\") et effectue le jeu minimal de modifications du vrai DOM pour le synchroniser avec le virtual DOM mis à jour (un processus appelé \"réconciliation\").\n\n### Exemple visuel\n\nSupposons que nous ayons un composant React `<Numbers />{:jsx}`:\n\n```jsx\nfunction Numbers() {\n  return (\n    <foo>\n      <bar>\n        <baz />\n      </bar>\n      <boo />\n    </foo>\n  );\n}\n```\n\nLorsque React rend ce composant, il passera par le processus de diffing (vérification des changements) et de réconciliation (mise à jour du DOM). Le processus ressemble à ceci :\n\n<VDomExample />\n\n### Le problème\n\nDans l'exemple précédent, vous pouvez voir que le diffing dépend de la taille de l'arbre, aboutissant finalement au goulot d'étranglement du virtual DOM. Plus vous avez de nœuds, plus il faut de temps pour le diffing.\n\nAvec les nouveaux frameworks comme Svelte, le virtual DOM n'est même pas utilisé en raison du surcoût en performances. Au lieu de cela, Svelte utilise une technique appelée \"dirty checking\" pour déterminer ce qui a changé. Les frameworks de réactivité granulaire comme SolidJS poussent cela encore plus loin en identifiant précisément ce qui a changé et en mettant à jour uniquement cette partie du DOM.\n\n## Le Block Virtual DOM\n\nEn 2022, [Blockdom](https://github.com/ged-odoo/blockdom) a été publié. Adoptant une approche fondamentalement différente, Blockdom a introduit l'idée d'un \"block virtual DOM\".\n\nLe Block virtual DOM adopte une approche différente du diffing et peut être décomposé en deux parties :\n\n1. **Analyse statique**: Le virtual DOM est analysé pour extraire les parties dynamiques de l'arbre dans une \"Edit Map\", ou la liste des \"éditions\" (correspondances) des parties dynamiques du virtual DOM à l'état.\n\n2. **Dirty Checking**: L'état (**pas** l'arbre du virtual DOM) est diff pour déterminer ce qui a changé. Si l'état a changé, le DOM est mis à jour directement via l'Edit Map.\n\n<Callout type=\"info\">\n\n**TL;DR : Diffusez les données, pas le DOM.**\n\nPourquoi ? La taille des données est généralement beaucoup plus petite que la taille du DOM. Il peut également être beaucoup plus simple de diffuser les valeurs des données que de diffuser des nœuds DOM complets.\n\n</Callout>\n\nÉtant donné que Million.js adopte une approche similaire à Blockdom, nous utiliserons la syntaxe Million.js pour le reste de cet article.\n\n### Exemple de compteur\n\nJetons un coup d'œil à un exemple simple de compteur et à la manière dont il serait géré avec Million.js :\n\n```jsx {7-8,13-14}\nimport { useState } from 'react';\nimport { block } from 'million/react';\n\nfunction Count() {\n  const [count, setCount] = useState(0);\n\n  const node1 = count + 1;\n  const node2 = count + 2;\n\n  return (\n    <div>\n      <ul>\n        <li>{node1}</li>\n        <li>{node2}</li>\n      </ul>\n      <button\n        onClick={() => {\n          setCount(count + 1);\n        }}\n      >\n        Incrementer le compteur\n      </button>\n    </div>\n  );\n}\nconst CountBlock = block(Count);\n```\n\n<CountExample />\n\n### Analyse statique\n\nL'étape d'analyse statique peut se produire lors de la compilation ou au début de l'exécution, selon que vous utilisez ou non le compilateur expérimental de Million.js.\n\nCette étape est responsable de l'extraction des parties dynamiques du virtual DOM dans l'Edit Map.\n\n<StaticAnalysisExample />\n\n### Dirty Checking\n\nAprès la création de l'Edit Map, l'étape de dirty checking peut commencer. Cette étape est responsable de déterminer ce qui a changé dans l'état et de mettre à jour le DOM en conséquence.\n\n<BlockVDomExample />\n\nVous pouvez voir que l'exemple de dirty checking nécessite beaucoup moins de calcul que l'étape de diffing. Cela s'explique par le fait que l'étape de dirty checking ne se préoccupe que de l'état, pas du virtual DOM, car chaque nœud virtuel pourrait nécessiter de nombreuses niveaux de récursion pour déterminer s'il a changé, tandis que l'état nécessite simplement une vérification de l'égalité superficielle.\n\n## Cette technique est-elle efficace ?\n\n**Oui, mais ce n'est pas une solution miracle.** [(Voir les\n\nderniers résultats des benchmarks)](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html)\n\n<Chart />\n\nMillion.js affiche des performances assez élevées et parvient à surpasser React dans le JavaScript Framework Benchmark. Mais il est important de comprendre comment Million.js peut être rapide dans ce cas.\n\nLe JavaScript Framework Benchmark est un benchmark qui teste les performances des frameworks en rendant un grand tableau de lignes et de colonnes. Le benchmark est conçu pour tester les performances de tests de performances très irréalistes (comme l'ajout/remplacement de 1000 lignes), et ne représente pas nécessairement les applications du monde réel.\n\nAlors, où Million.js ou le block virtual DOM peuvent-ils être utilisés ?\n\n### Beaucoup de contenu statique avec peu de contenu dynamique\n\nLe block virtual DOM est mieux utilisé lorsqu'il y a beaucoup de contenu statique avec peu de contenu dynamique. Le plus grand avantage du block virtual DOM est qu'il n'a pas besoin de penser aux parties statiques du virtual DOM, donc s'il peut sauter une grande partie de contenu statique, il peut être très rapide.\n\nPar exemple, le block virtual DOM serait bien plus rapide que le virtual DOM régulier dans ce cas :\n\n```jsx {3}\n// ✅ Bien\n<div>\n  <div>{dynamique}</div>\n  Beaucoup et beaucoup de contenu statique...\n</div>\n```\n\nMais vous ne verrez peut-être pas beaucoup de différence entre le block virtual DOM et le virtual DOM régulier si vous avez beaucoup de contenu dynamique :\n\n```jsx {3-7}\n// ❌ Mauvais\n<div>\n  <div>{dynamique}</div>\n  <div>{dynamique}</div>\n  <div>{dynamique}</div>\n  <div>{dynamique}</div>\n  <div>{dynamique}</div>\n</div>\n```\n\nSi vous construisez un tableau de bord d'administration ou un site web de composants avec beaucoup de contenu statique, le block virtual DOM pourrait être un bon choix pour vous. Mais si vous construisez un site web où le calcul nécessaire pour différencier les données est nettement supérieur au calcul nécessaire pour différencier le virtual DOM, vous ne verrez peut-être pas beaucoup de différence.\n\nPar exemple, ce composant serait un **mauvais** candidat pour le block virtual DOM, car il y a plus de valeurs de données à différencier que de nœuds virtual DOM :\n\n```jsx\n// 5 valeurs de données à diff\nfunction Composant({ a, b, c, d, e }) {\n  // 1 nœud virtual DOM à diff\n  return <div>{a + b + c + d + e}</div>;\n}\n```\n\n### Arbres d'UI \"stables\"\n\nLe block virtual DOM est également adapté pour les arbres d'UI \"stables\", c'est-à-dire des arbres d'UI qui ne changent pas beaucoup. Cela s'explique par le fait que l'Edit Map n'est créée qu'une fois et ne devrait pas avoir besoin d'être recréée à chaque rendu.\n\nPar exemple, le composant suivant serait un bon candidat pour le block virtual DOM :\n\n```jsx\nfunction Composant() {\n  // ✅ Bien, car le retour est déterministe / stable\n  return <div>{dynamique}</div>;\n}\n```\n\nMais ce composant pourrait être _plus lent_ que le virtual DOM régulier :\n\n```jsx\nfunction Composant() {\n  // ❌ Mauvais, car le retour est non déterministe / instable\n  return Math.random() > 0.5 ? <div>{dynamique}</div> : <p>triste</p>;\n}\n```\n\nSi vous avez besoin d'utiliser des retours indéterminés / instables qui suivent une forme \"List-like\", vous pouvez utiliser le composant [`<For />{:jsx}`](/docs/quickstart#for-) pour vous aider :\n\n```jsx\nfunction Composant() {\n  return <For each={items}>{(item) => <div>{item}</div>}</For>;\n}\n```\n\nNotez qu'il y a une limitation sur la façon dont l'UI de l'application peut être structurée. Les retours \"stables\" signifient que les composants avec des formes dynamiques non listiques (comme un retour conditionnel dans le même composant) ne sont pas autorisés.\n\n### Utilisez de manière ciblée\n\nL'une des plus grandes erreurs que font les débutants est d'utiliser le block virtual DOM partout. C'est une mauvaise idée, car le block virtual DOM n'est pas une solution miracle et n'est pas toujours plus rapide que le virtual DOM régulier.\n\nAu lieu de cela, vous devriez reconnaître certains schémas où le bloc de DOM virtuel est plus rapide et l'utiliser uniquement dans ces cas. Par exemple, vous pourriez utiliser le bloc de DOM virtuel pour une grande table, mais utiliser le DOM virtuel standard pour un petit formulaire avec un peu de contenu statique.\n\n## Réflexions finales\n\nLe bloc de DOM virtuel offre une nouvelle perspective sur le concept de DOM virtuel, proposant une approche alternative pour gérer les mises à jour et minimiser les surcharges. Malgré son potentiel, ce n'est pas une solution universelle, et les développeurs devraient évaluer les besoins spécifiques et les exigences de performance de leurs applications avant de décider d'adopter cette approche.\n\nPour de nombreuses applications, le DOM virtuel classique peut suffire, et il peut ne pas être nécessaire de passer au bloc de DOM virtuel ou à d'autres frameworks axés sur la performance. Si votre application fonctionne sans problème de performance sur la plupart des appareils, il pourrait ne pas être utile de passer à un framework différent. Il est essentiel de peser soigneusement les compromis et d'évaluer les besoins uniques de votre application avant d'apporter des changements importants à votre pile technologique.\n\nCela dit, je suis impatient de voir ce que l'avenir nous réserve. Et vous aussi ? ([Allez construire le vôtre !](https://github.com/aidenybai/hundred#readme))\n\n[Discutez sur Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fvirtual-dom) | [Modifier sur GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/virtual-dom.mdx)\n\n### Remerciements\n\n- [Seb Lorber](https://twitter.com/sebastienlorber) pour avoir suggéré cette idée de publication\n- [Jesse Pense](https://twitter.com/JessePence5) pour avoir aidé à lire et éditer la publication\n- [Dan Jutan](https://twitter.com/jutanium) pour avoir réalisé le [meilleur investissement de 2023](https://twitter.com/jutanium/status/1652907080330665984)\n- \"Le DOM virtuel est une surcharge pure\" de [Rich Harris](https://twitter.com/Rich_Harris)\n- \"React en tant que moteur d'interface utilisateur\" de [Dan Abramov](https://twitter.com/dan_abramov)\n- \"Les composants sont une surcharge pure\" de [Ryan Carniato](https://twitter.com/RyanCarniato)\n- \"Comment fonctionnent les composants serveur React : un guide approfondi\" de [Chung Wu](https://twitter.com/chungwu)\n"
  },
  {
    "path": "website/pages/blog/virtual-dom.zh-CN.mdx",
    "content": "---\ntitle: 'Virtual DOM: Back in Block'\ndate: MAY 1, 2023\ndescription: A deep dive into the block virtual DOM and how Million.js uses it.\n---\n\nimport Image from 'next/image';\nimport YouTube from 'react-youtube';\nimport { VDomExample } from '../../components/back-in-block/vdom';\nimport { StaticAnalysisExample } from '../../components/back-in-block/static-analysis';\nimport { BlockVDomExample } from '../../components/back-in-block/block-vdom';\nimport { CountExample } from '../../components/back-in-block/count';\nimport { Callout } from 'nextra-theme-docs';\nimport { Chart } from '../../components/chart';\nimport { CarbonAds } from '../../components/ad';\n\n<div className=\"flex justify-center\">\n  <a href=\"https://www.youtube.com/watch?v=2-fR2rrmw3I\">\n    <Image src=\"/back-in-block.png\" width={350} height={130} />\n  </a>\n</div>\n\n<div className=\"flex flex-col items-center gap-4\">\n\n# Virtual DOM: Back in Block\n\n  <small>[AIDEN BAI](https://aidenybai.com) MAY 1 2023</small>\n</div>\n\n---\n\n<Callout type=\"info\">\n  Want to watch a 30 second summary by Fireship? [**Watch it\n  here**](https://youtu.be/VkezQMb1DHw?t=73\">).\n</Callout>\n\n<br />\n\n<div className=\"lg:w-7/12 text-center mx-auto flex justify-center\">\n  <YouTube\n    className=\"youtubeContainer\"\n    videoId=\"VkezQMb1DHw\"\n    opts={{ start: 73 }}\n  />\n</div>\n\n---\n\nA little over four years ago, Rich Harris released [Virtual DOM is pure overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead), analyzing the performance of traditional virtual DOM manipulation.<a href=\"#0\"><sup>[0]</sup></a>\n\n> <sup id=\"#0\">[0]</sup> \"you've probably heard the phrase 'the virtual DOM is fast',\n> often said to mean that it's faster than the real DOM. It's a surprisingly resilient\n> meme\" - Harris, 2018\n\nIn his article \"Virtual DOM is pure overhead,\" Rich Harris argues that the virtual DOM, a widely praised feature of frameworks like React, is not as efficient as many developers believe. He goes on to critique the way it works and presents an alternative approach.\n\nBut what followed years after was the emergence of a new meme: that the virtual DOM **is pure overhead**. The meme became so resilient that it turned the \"no virtual DOM\" framework movement from an iconoclastic subgroup to a fully fledged crusade.\n\nThus, the virtual DOM was relegated to the \"annoying cousin nobody likes but has to invite to family gatherings\" status. It became necessary evil, a performance tax that we had to pay for the convenience of declarative UIs.\n\nUntil now.\n\n<CarbonAds />\n\n## Origin story\n\nThe virtual DOM was created to address performance issues caused by frequent manipulation of the real DOM. It is a lightweight, in-memory representation of the real DOM, which can be later used as a reference to update the actual web page.\n\nWhen a component is rendered, the virtual DOM calculates the difference between the new state and the previous state (a process called \"diffing\") and makes the minimal set of changes to the real DOM to bring it in sync with the updated virtual DOM (a process called \"reconciliation\").\n\n### Visual Example\n\nLet's say we're given some React component `<Numbers />{:jsx}`:\n\n```jsx\nfunction Numbers() {\n  return (\n    <foo>\n      <bar>\n        <baz />\n      </bar>\n      <boo />\n    </foo>\n  );\n}\n```\n\nWhen React renders this component, it will go through the process of diffing (checking for changes) and reconciliation (updating the DOM). The process looks something like this:\n\n<VDomExample />\n\n### The problem\n\nIn the previous example, you can see that diffing depends on the size of the tree, ultimately resulting in the bottleneck of the virtual DOM. The more nodes you have, the more time it takes to diff.\n\nWith newer frameworks like Svelte, the virtual DOM isn't even used because of the performance overhead. Instead, Svelte uses a technique called \"dirty checking\" to determine what has changed. Fine-grained reactivity frameworks like SolidJS take this a step further by pinpointing exactly what has changed and updating only that part of the DOM.\n\n## The Block Virtual DOM\n\nIn 2022, [Blockdom](https://github.com/ged-odoo/blockdom) was released. Taking a fundamentally different approach, Blockdom introduced the idea of a \"block virtual DOM.\"\n\nThe Block virtual DOM takes a different approach to diffing, and can be broken down into two parts:\n\n1. **Static Analysis**: The virtual DOM is analyzed to extract dynamic parts of the tree into an \"Edit Map,\" or the list of the \"edits\" (mappings) of the dynamic parts of the virtual DOM to the state.\n\n2. **Dirty Checking**: The state (**not** the virtual DOM tree) is diffed to determine what has changed. If the state has changed, the DOM is updated directly via the Edit Map.\n\n<Callout type=\"info\">\n\n**TL;DR: Diff the data, not the DOM.**\n\nWhy? The size of the data is generally much smaller than the size of the DOM. It also can be much simpler to diff data values than to diff full DOM nodes.\n\n</Callout>\n\nSince Million.js takes a similar approach to Blockdom, we'll be using Million.js syntax for the rest of this article.\n\n### Counter Example\n\nLet's take a look at a simple counter example and how it would be handled with Million.js:\n\n```jsx {7-8,13-14}\nimport { useState } from 'react';\nimport { block } from 'million/react';\n\nfunction Count() {\n  const [count, setCount] = useState(0);\n\n  const node1 = count + 1;\n  const node2 = count + 2;\n\n  return (\n    <div>\n      <ul>\n        <li>{node1}</li>\n        <li>{node2}</li>\n      </ul>\n      <button\n        onClick={() => {\n          setCount(count + 1);\n        }}\n      >\n        Increment Count\n      </button>\n    </div>\n  );\n}\nconst CountBlock = block(Count);\n```\n\n<CountExample />\n\n### Static Analysis\n\nThe static analysis step can occur at compile time or the first thing at runtime, depending on whether you use Million.js' experimental compiler or not.\n\nThis step is responsible for extracting dynamic parts of the virtual DOM into the Edit Map.\n\n<StaticAnalysisExample />\n\n### Dirty Checking\n\nAfter the Edit Map is created, the dirty checking step can begin. This step is responsible for determining what has changed in the state, and updating the DOM accordingly.\n\n<BlockVDomExample />\n\nYou can see that the dirty checking example takes much less computation than the diffing step. This is because the dirty checking step is only concerned with the state, not the virtual DOM, as each virtual node might need many levels of recursion to determine if it has changed, state just needs a shallow equality check.\n\n## Is this technique effective?\n\n**Yes, but it's not a silver bullet.** [(View latest benchmark)](https://krausest.github.io/js-framework-benchmark/2023/table_chrome_112.0.5615.49.html)\n\n<Chart />\n\nMillion.js sports pretty high performance and is able to outperform React in the JavaScript Framework Benchmark. But it's important to understand how Million.js can be fast in this case.\n\nThe JavaScript Framework Benchmark is a benchmark that tests the performance of frameworks by rendering a large table of rows and columns. The benchmark is designed to test the performance of highly unrealistic performance tests (like adding/replacing 1000 rows), and is not necessarily representative of real world applications.\n\nSo where can Million.js or the block virtual DOM be used?\n\n### Lots of static content with little dynamic content\n\nBlock virtual DOM is best used when there is a lot of static content with little dynamic content. The biggest advantage the block virtual DOM has is that it doesn't need to think about the static parts of the virtual DOM, so if it can skip over a lot of static content, it can be very fast.\n\nFor example, the block virtual DOM would be much faster than the regular virtual DOM in this case:\n\n```jsx {3}\n// ✅ Good\n<div>\n  <div>{dynamic}</div>\n  Lots and lots of static content...\n</div>\n```\n\nBut you may not see much difference between the block virtual DOM and the regular virtual DOM if you have a lot of dynamic content:\n\n```jsx {3-7}\n// ❌ Bad\n<div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n  <div>{dynamic}</div>\n</div>\n```\n\nIf you're building an admin dashboard, or a website of components with lots of static content, the block virtual DOM might be a good fit for you. But if you're building a website where the computation it takes to diff the data is significantly greater than the computation it takes to diff the virtual DOM, you might not see much of a difference.\n\nFor example, this component would be a **bad** candidate for the block virtual DOM, since there are more data values to diff than there are virtual DOM nodes:\n\n```jsx\n// 5 data values to diff\nfunction Component({ a, b, c, d, e }) {\n  // 1 virtual DOM node to diff\n  return <div>{a + b + c + d + e}</div>;\n}\n```\n\n### \"Stable\" UI trees\n\nThe block virtual DOM is also good for \"stable\" UI trees, or UI trees that don't change much. This is because the Edit Map is only created once, and shouldn't need to be recreated on every render.\n\nFor example, the following component would be a good candidate for the block virtual DOM:\n\n```jsx\nfunction Component() {\n  // ✅ Good, because deterministic / stable return\n  return <div>{dynamic}</div>;\n}\n```\n\nBut this component might be _slower_ than the regular virtual DOM:\n\n```jsx\nfunction Component() {\n  // ❌ Bad, because non-deterministic / unstable return\n  return Math.random() > 0.5 ? <div>{dynamic}</div> : <p>sad</p>;\n}\n```\n\nIf you need to use undeterministic / unstable returns that follow a \"List-like\" shape, you can use the [`<For />{:jsx}`](/docs/quickstart#for-) component to help you:\n\n```jsx\nfunction Component() {\n  return <For each={items}>{(item) => <div>{item}</div>}</For>;\n}\n```\n\nNotice how there is a limitation on how the application UI can be structured. \"Stable\" returns mean that components with non-list-like dynamic shapes (like a conditional return in the same component) are not allowed.\n\n### Use granularly\n\nOne of the biggest mistakes beginners make is using the block virtual DOM everywhere. This is a bad idea, because the block virtual DOM is not a silver bullet, and is not always faster than the regular virtual DOM.\n\nInstead, you should recognize certain patterns where the block virtual DOM is faster, and use it only in those cases. For example, you might use the block virtual DOM for a large table, but use the regular virtual DOM for a small form with a little static content.\n\n## Closing Thoughts\n\nThe block virtual DOM offers a fresh perspective on the virtual DOM concept, providing an alternative approach to managing updates and minimizing overhead. Despite its potential, it is not a one-size-fits-all solution, and developers should evaluate the specific needs and performance requirements of their applications before deciding whether to adopt this approach.\n\nFor many applications, the conventional virtual DOM may be sufficient, and there may be no need to switch to the block virtual DOM or other performance-focused frameworks. If your application runs smoothly without performance issues on most devices, it might not be worth the time and effort to transition to a different framework. It's essential to carefully weigh the trade-offs and evaluate your application's unique requirements before making any major changes to your tech stack.\n\nThat said, I'm excited to see what the future holds for it. Are you too? ([Go build your own!](https://github.com/aidenybai/hundred#readme))\n\n[Discuss on Twitter](https://twitter.com/search?q=https%3A%2F%2Fmillion.dev%2Fblog%2Fvirtual-dom) | [Edit on GitHub](https://github.com/aidenybai/million/blob/main/website/pages/blog/virtual-dom.mdx)\n\n### Acknowledgements\n\n- [Seb Lorber](https://twitter.com/sebastienlorber) for suggesting this post idea\n- [Jesse Pense](https://twitter.com/JessePence5) for helping read and edit the post\n- [Dan Jutan](https://twitter.com/jutanium) for making the [fastest investment of 2023](https://twitter.com/jutanium/status/1652907080330665984)\n- [Rich Harris](https://twitter.com/Rich_Harris)'s \"Virtual DOM is pure overhead\"\n- [Dan Abramov](https://twitter.com/dan_abramov)'s \"React as a UI runtime\"\n- [Ryan Carniato](https://twitter.com/RyanCarniato)'s \"Components are Pure Overhead\"\n- [Chung Wu](https://twitter.com/chungwu)'s \"How React server components work: an in-depth guide\"\n"
  },
  {
    "path": "website/pages/blog.en-US.mdx",
    "content": "---\ntitle: Blog\ndescription: The latest updates and releases from the Million.js team.\n---\n\nimport { getPagesUnderRoute } from 'nextra/context';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport filterRouteLocale from \"nextra/filter-route-locale\";\n\nexport function BlogHeader() {\n  return (\n    <div className=\"max-w-screen-lg mx-auto pt-4 pb-8 mb-16 border-b border-gray-400 border-opacity-20 text-center\">\n      <h1>\n        <span className=\"font-bold leading-tight lg:text-5xl\">Blog</span>\n      </h1>\n      <p className=\"text-center text-gray-500 dark:text-gray-400 font-space-grotesk\">\n        The latest updates and releases from the Million.js team.\n      </p>\n    </div>\n  );\n}\n\nexport function BlogIndex() {\n  // debug the function here\n  const { locale, defaultLocale } = useRouter();\n  const blogArticles = filterRouteLocale(\n    getPagesUnderRoute(\"/blog\"),\n    locale,\n    defaultLocale,\n  );\n\n  const sortedPages = blogArticles.sort((a, b) => {\n    return (\n      new Date(b.frontMatter?.date || 0).getTime() -\n      new Date(a.frontMatter?.date || 0).getTime()\n    );\n  });\n\n  const mapPages = sortedPages.map((page) => {\n    return (\n      <div key={page.route} className=\"mb-10\">\n        <Link\n          href={page.route}\n          style={{ color: \"inherit\", textDecoration: \"none\" }}\n          className=\"block font-semibold mt-8 text-2xl\"\n          tabIndex=\"0\"\n        >\n          {page.meta?.title || page.frontMatter?.title || page.name}\n        </Link>\n        <p className=\"opacity-80\" style={{ marginTop: \".5rem\" }}>\n          {page.frontMatter?.description}{\" \"}\n          <span className=\"inline-block nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font] font-bold\">\n            <Link href={page.route} tabIndex=\"-1\">\n              {\"Read more →\"}\n            </Link>\n          </span>\n        </p>\n        {page.frontMatter?.date ? (\n          <p className=\"opacity-50 text-sm mt-2\">{page.frontMatter.date}</p>\n        ) : null}\n      </div>\n    );\n  });\n\n\n  return mapPages;\n}\n\n<BlogHeader />\n<BlogIndex />\n"
  },
  {
    "path": "website/pages/blog.es-ES.mdx",
    "content": "---\ntitle: Blog\ndescription: Las últimas actualizaciones y lanzamientos del equipo de Million.js.\n---\n\nimport { getPagesUnderRoute } from 'nextra/context';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport filterRouteLocale from 'nextra/filter-route-locale';\n\nexport function BlogHeader() {\n  return (\n    <div className=\"max-w-screen-lg mx-auto pt-4 pb-8 mb-16 border-b border-gray-400 border-opacity-20 text-center\">\n      <h1>\n        <span className=\"font-bold leading-tight lg:text-5xl\">Blog</span>\n      </h1>\n      <p className=\"text-center text-gray-500 dark:text-gray-400 font-space-grotesk\">\n        Las últimas actualizaciones y lanzamientos del equipo de Million.js.\n      </p>\n    </div>\n  );\n}\n\nexport function BlogIndex() {\n  const { locale, defaultLocale } = useRouter();\n  const blogArticles = filterRouteLocale(\n    getPagesUnderRoute('/blog'),\n    locale,\n    defaultLocale,\n  )\n    .sort((a, b) => {\n      return (\n        new Date(b.frontMatter?.date || 0).getTime() -\n        new Date(a.frontMatter?.date || 0).getTime()\n      );\n    })\n    .map((page) => {\n      return (\n        <div key={page.route} className=\"mb-10\">\n          <Link\n            href={page.route}\n            style={{ color: 'inherit', textDecoration: 'none' }}\n            className=\"block font-semibold mt-8 text-2xl\"\n            tabIndex=\"0\"\n          >\n            {page.meta?.title || page.frontMatter?.title || page.name}\n          </Link>\n          <p className=\"opacity-80\" style={{ marginTop: '.5rem' }}>\n            {page.frontMatter?.description}{' '}\n            <span className=\"inline-block nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font] font-bold\">\n              <Link href={page.route} tabIndex=\"-1\">\n                {'Leer más →'}\n              </Link>\n            </span>\n          </p>\n          {page.frontMatter?.date ? (\n            <p className=\"opacity-50 text-sm mt-2\">{page.frontMatter.date}</p>\n          ) : null}\n        </div>\n      );\n    });\n  return blogArticles;\n}\n\n<BlogHeader />\n<BlogIndex />\n"
  },
  {
    "path": "website/pages/blog.fr-FR.mdx",
    "content": "---\ntitle: Blog\ndescription: Les dernières mises à jour et publications de l'équipe Million.js.\n---\n\nimport { getPagesUnderRoute } from 'nextra/context';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport filterRouteLocale from 'nextra/filter-route-locale';\n\nexport function BlogHeader() {\n  return (\n    <div className=\"max-w-screen-lg mx-auto pt-4 pb-8 mb-16 border-b border-gray-400 border-opacity-20 text-center\">\n      <h1>\n        <span className=\"font-bold leading-tight lg:text-5xl\">Blog</span>\n      </h1>\n      <p className=\"text-center text-gray-500 dark:text-gray-400 font-space-grotesk\">\n        \nLes dernières mises à jour et publications de l'équipe Million.js.\n      </p>\n    </div>\n  );\n}\n\nexport function BlogIndex() {\n  const { locale, defaultLocale } = useRouter();\n\nconst blogArticles = filterRouteLocale(\ngetPagesUnderRoute(\"/blog\"),\nlocale,\ndefaultLocale,\n)\n.sort((a, b) => {\nreturn (\nnew Date(b.frontMatter?.date || 0).getTime() -\nnew Date(a.frontMatter?.date || 0).getTime()\n);\n})\n.map((page) => {\nreturn (\n\n<div key={page.route} className=\"mb-10\">\n  <Link\n    href={page.route}\n    style={{ color: 'inherit', textDecoration: 'none' }}\n    className=\"block font-semibold mt-8 text-2xl\"\n    tabIndex=\"0\"\n  >\n    {page.frontMatter?.title || page.name}\n  </Link>\n  <p className=\"opacity-80\" style={{ marginTop: '.5rem' }}>\n    {page.frontMatter?.description}{' '}\n    <span className=\"inline-block nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font] font-bold\">\n      <Link href={page.route} tabIndex=\"-1\">\n        {'Voir plus →'}\n      </Link>\n    </span>\n  </p>\n  {page.frontMatter?.date ? (\n    <p className=\"opacity-50 text-sm mt-2\">{page.frontMatter.date}</p>\n  ) : null}\n</div>\n); }); return blogArticles; }\n\n<BlogHeader />\n<BlogIndex />\n"
  },
  {
    "path": "website/pages/blog.zh-CN.mdx",
    "content": "---\ntitle: Blog\ndescription: The latest updates and releases from the Million.js team.\n---\n\nimport { getPagesUnderRoute } from 'nextra/context';\nimport Link from 'next/link';\nimport { useRouter } from 'next/router';\nimport filterRouteLocale from 'nextra/filter-route-locale';\n\nexport function BlogHeader() {\n  return (\n    <div className=\"max-w-screen-lg mx-auto pt-4 pb-8 mb-16 border-b border-gray-400 border-opacity-20 text-center\">\n      <h1>\n        <span className=\"font-bold leading-tight lg:text-5xl\">Blog</span>\n      </h1>\n      <p className=\"text-center text-gray-500 dark:text-gray-400 font-space-grotesk\">\n        The latest updates and releases from the Million.js team.\n      </p>\n    </div>\n  );\n}\nexport function BlogIndex() {\n  const { locale, defaultLocale } = useRouter();\n\n  const blogArticles = filterRouteLocale(\n    getPagesUnderRoute(\"/blog\"),\n    locale,\n    defaultLocale,\n  )\n  .map((page) => {\n      return (\n        <div key={page.route} className=\"mb-10\">\n          <Link\n            href={page.route}\n            style={{ color: \"inherit\", textDecoration: \"none\" }}\n            className=\"block font-semibold mt-8 text-2xl\"\n            tabIndex=\"0\"\n          >\n            {page.meta?.title || page.frontMatter?.title || page.name}\n          </Link>\n          <p className=\"opacity-80\" style={{ marginTop: \".5rem\" }}>\n            {page.frontMatter?.description}{\" \"}\n            <span className=\"inline-block nx-text-primary-600 nx-underline nx-decoration-from-font [text-underline-position:from-font] font-bold\">\n              <Link href={page.route} tabIndex=\"-1\">\n                {\"Read more →\"}\n              </Link>\n            </span>\n          </p>\n          {page.frontMatter?.date ? (\n            <p className=\"opacity-50 text-sm mt-2\">{page.frontMatter.date}</p>\n          ) : null}\n        </div>\n      );\n    });\n  return blogArticles;\n}\n\n\n<BlogHeader />\n<BlogIndex />\n"
  },
  {
    "path": "website/pages/code-policy.en-US.mdx",
    "content": "---\ntitle: Code Policy\ndescription: Code Policy for Million.js\n---\n\n# Code Policy\n\n**Effective Date: February 2024**\n\nMillion Software, Inc. (“Million”) recognizes that its customers' code is their proprietary intellectual property, which could cause significant harm to their business if made public or shared with unauthorized parties. Accordingly, this Code Policy sets forth the steps taken by Million to safeguard the confidentiality of the code that is sent to Million servers in the course of using Million's products and services (the “Code Data”).\n\nThis policy refers specifically to the code that is uploaded to Million servers by official Million editor extensions. Other user data, including but not limited to customer emails, phone numbers, IP addresses, analytics data relating to use of the Million website, or general metadata collected about customers' usage and traffic patterns, is governed by the Privacy Policy, not the Code Policy.\n\nMillion cannot take responsibility for third-party software, even if it uses the Million name or is compatible with the Million API. For the Code Policy to apply, the extension used to access the Million service must be linked from Million's official website at https://million.dev\n\n1.  All Code Data is subject to a 7-day retention policy. Any Code Data that is uploaded to Million servers will be deleted from Million's internal systems within 7 days of the time of upload.\n2.  Million does not use Code Data to develop its products and services.\n3.  Million does not share Code Data with any third parties except as required by law or as necessary to provide its products and services. For example, Million's internal systems run on Amazon Web Services, and Code Data is stored using systems managed by Amazon. A list of all third party infrastructure providers who may have the ability to access Code Data is available to customers upon request.\n\nMillion reserves the right to modify this Code Policy at any time. If a revision is material, we will provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at our sole discretion. The latest version of the Code Policy can be found at [https://million.dev/code-policy](https://million.dev/code-policy).\n\nFor questions, please contact Million Software, Inc. at aiden@million.dev.\n"
  },
  {
    "path": "website/pages/docs/_meta.en-US.json",
    "content": "{\n  \"introduction\": \"Introduction\",\n  \"install\": \"Installation\",\n  \"automatic\": \"Automatic\",\n  \"manual-mode\": \"Manual Mode\",\n  \"internals\": \"Internals\"\n}\n"
  },
  {
    "path": "website/pages/docs/_meta.es-ES.json",
    "content": "{\n  \"introduction\": \"Introducción\",\n  \"install\": \"Instalación\",\n  \"automatic\": \"Automático\",\n  \"manual-mode\": \"Modo Manual\",\n  \"internals\": \"Internas\"\n}\n"
  },
  {
    "path": "website/pages/docs/_meta.fr-FR.json",
    "content": "{\n  \"introduction\": \"Introduction\",\n  \"install\": \"Installation\",\n  \"automatic\": \"Automatic\",\n  \"manual-mode\": \"Manual Mode\",\n  \"internals\": \"Internals\"\n}\n"
  },
  {
    "path": "website/pages/docs/_meta.zh-CN.json",
    "content": "{\n  \"introduction\": \"Introduction\",\n  \"install\": \"Installation\",\n  \"automatic\": \"Automatic\",\n  \"manual-mode\": \"Manual Mode\",\n  \"internals\": \"Internals\"\n}\n"
  },
  {
    "path": "website/pages/docs/automatic.en-US.mdx",
    "content": "---\ntitle: 'Automatic Mode'\ndescription: 'How to use Automatic Mode'\n---\n\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\n\n# Automatic Mode\n\nMillion.js uses Automatic Mode out of the box if you installed via CLI. This optimizes your React components, improving speed without any major code changes. This is the recommended way to use Million.js.\n\n### Advanced customization\n\nAutomatic mode provides customization options:\n\n- `threshold`: What is used to determine whether a component should be converted to Million.js.\n  When the threshold increases, fewer components will be optimized, and vice versa.\n- `skip`: An array of identifiers to indicate if a component should be skipped. You can add hook or variable names, function names, etc.\n\nThe `auto` object lets you configure options beyond the default ones set during installation:\n\n```js\nauto: {\n  threshold: 0.05, // default: 0.1,\n  skip: ['useBadHook', /badVariable/g], // default []\n}\n```\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n```js filename=\"next.config.mjs\"\nimport million from 'million/compiler';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n   reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: {\n    threshold: 0.05, // default: 0.1,\n    skip: ['useBadHook', /badVariable/g], // default []\n    // if you're using RSC: auto: { rsc: true },\n  }\n}\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [\n      million.vite({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [\n      million.webpack({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    react(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    remix(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: {\n      add: [\n        million.webpack({\n          auto: {\n            threshold: 0.05,\n            skip: [\"useBadHook\", /badVariable/g],\n          },\n        }),\n      ],\n    },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [\n    million.webpack({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [\n    million.rollup({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n</Tabs>\n\n### Ignoring components\n\nIf you encounter an error with a component during the Million.js runtime, it can be skipped using the `// million-ignore` comment.\n\n```js\n// million-ignore\nfunction App() {\n  return ...\n}\n````\n\n### Muting help messages\n\nTo avoid seeing help messages, you can pass the `mute: true{:js}` option to the compiler inside the `auto` object.\n"
  },
  {
    "path": "website/pages/docs/automatic.es-ES.mdx",
    "content": "---\ntitle: 'Modo Automático'\ndescription: 'Cómo usar Modo Automático'\n---\n\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\n\n# Modo Automático\n\nMillion.js utiliza el Modo Automático de forma predeterminada si lo has instalado a través de la CLI.\nEsto optimiza tus componentes de React, mejorando la velocidad sin necesidad de realizar cambios importantes en el código. Esta es la forma recomendada de utilizar Million.js.\n\n### Personalización avanzada\n\nEl modo automático proporciona opciones de personalización:\n\n- `threshold`: Se utiliza para determinar si un componente debe convertirse a Million.js. A medida que aumenta el `threshold`, se optimizarán menos componentes, y viceversa.\n- `skip`: Un array de identificadores que indica si un componente debe omitirse. Puedes agregar nombres de hooks, variables, nombres de funciones, etc.\n\nEl objeto `auto` te permite configurar opciones más allá de las predeterminadas establecidas durante la instalación:\n\n```js\nauto: {\n  threshold: 0.05, // default: 0.1,\n  skip: ['useBadHook', /badVariable/g], // default []\n}\n```\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n```js filename=\"next.config.mjs\"\nimport million from 'million/compiler';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n   reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: {\n    threshold: 0.05, // default: 0.1,\n    skip: ['useBadHook', /badVariable/g], // default []\n    // Si estas usando RSC: auto: { rsc: true },\n  }\n}\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [\n      million.vite({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [\n      million.webpack({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    react(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    remix(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  Si estas usando [Create React App (CRA)](https://create-react-app.dev/), necesitaras [configurar Craco](https://craco.js.org/docs/getting-started/) antes de proceder.\n</Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: {\n      add: [\n        million.webpack({\n          auto: {\n            threshold: 0.05,\n            skip: [\"useBadHook\", /badVariable/g],\n          },\n        }),\n      ],\n    },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [\n    million.webpack({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [\n    million.rollup({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n</Tabs>\n\n### Ignorando componentes\n\nSi te encuentras con algún error en un componente durante el tiempo de ejecución de Million.js, puedes omitirlo utilizando el comentario `// million-ignore`.\n\n```js\n// million-ignore\nfunction App() {\n  return ...\n}\n```\n\n### Silenciando mensajes de ayuda\n\nPara evitar ver mensajes de ayuda, puedes pasar la opción `mute: true{:js}` al compilador dentro del objeto `auto`.\n"
  },
  {
    "path": "website/pages/docs/automatic.fr-FR.mdx",
    "content": "---\ntitle: 'Automatic Mode'\ndescription: 'How to use Automatic Mode'\n---\n\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\n\n# Automatic Mode\n\nMillion.js uses Automatic Mode out of the box if you installed via CLI. This optimizes your React components, improving speed without any major code changes. This is the recommended way to use Million.js.\n\n### Advanced customization\n\nAutomatic mode provides customization options:\n\n- `threshold`: What is used to determine whether a component should be converted to Million.js.\n  When the threshold increases, fewer components will be optimized, and vice versa.\n- `skip`: An array of identifiers to indicate if a component should be skipped. You can add hook or variable names, function names, etc.\n\nThe `auto` object lets you configure options beyond the default ones set during installation:\n\n```js\nauto: {\n  threshold: 0.05, // default: 0.1,\n  skip: ['useBadHook', /badVariable/g], // default []\n}\n```\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n```js filename=\"next.config.mjs\"\nimport million from 'million/compiler';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n   reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: {\n    threshold: 0.05, // default: 0.1,\n    skip: ['useBadHook', /badVariable/g], // default []\n    // if you're using RSC: auto: { rsc: true },\n  }\n}\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [\n      million.vite({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [\n      million.webpack({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    react(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    remix(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: {\n      add: [\n        million.webpack({\n          auto: {\n            threshold: 0.05,\n            skip: [\"useBadHook\", /badVariable/g],\n          },\n        }),\n      ],\n    },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [\n    million.webpack({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [\n    million.rollup({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n</Tabs>\n\n### Ignoring components\n\nIf you encounter an error with a component during the Million.js runtime, it can be skipped using the `// million-ignore` comment.\n\n```js\n// million-ignore\nfunction App() {\n  return ...\n}\n````\n\n### Muting help messages\n\nTo avoid seeing help messages, you can pass the `mute: true{:js}` option to the compiler inside the `auto` object.\n"
  },
  {
    "path": "website/pages/docs/automatic.zh-CN.mdx",
    "content": "---\ntitle: 'Automatic Mode'\ndescription: 'How to use Automatic Mode'\n---\n\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\n\n# Automatic Mode\n\nMillion.js uses Automatic Mode out of the box if you installed via CLI. This optimizes your React components, improving speed without any major code changes. This is the recommended way to use Million.js.\n\n### Advanced customization\n\nAutomatic mode provides customization options:\n\n- `threshold`: What is used to determine whether a component should be converted to Million.js.\n  When the threshold increases, fewer components will be optimized, and vice versa.\n- `skip`: An array of identifiers to indicate if a component should be skipped. You can add hook or variable names, function names, etc.\n\nThe `auto` object lets you configure options beyond the default ones set during installation:\n\n```js\nauto: {\n  threshold: 0.05, // default: 0.1,\n  skip: ['useBadHook', /badVariable/g], // default []\n}\n```\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n```js filename=\"next.config.mjs\"\nimport million from 'million/compiler';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n   reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: {\n    threshold: 0.05, // default: 0.1,\n    skip: ['useBadHook', /badVariable/g], // default []\n    // if you're using RSC: auto: { rsc: true },\n  }\n}\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [\n      million.vite({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [\n      million.webpack({\n        mode: \"react\",\n        server: true,\n        auto: {\n          threshold: 0.05,\n          skip: [\"useBadHook\", /badVariable/g],\n        },\n      }),\n    ],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    react(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [\n    million.vite({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n    remix(),\n  ],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: {\n      add: [\n        million.webpack({\n          auto: {\n            threshold: 0.05,\n            skip: [\"useBadHook\", /badVariable/g],\n          },\n        }),\n      ],\n    },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [\n    million.webpack({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [\n    million.rollup({\n      auto: {\n        threshold: 0.05,\n        skip: [\"useBadHook\", /badVariable/g],\n      },\n    }),\n  ],\n};\n```\n</Tab>\n\n</Tabs>\n\n### Ignoring components\n\nIf you encounter an error with a component during the Million.js runtime, it can be skipped using the `// million-ignore` comment.\n\n```js\n// million-ignore\nfunction App() {\n  return ...\n}\n````\n\n### Muting help messages\n\nTo avoid seeing help messages, you can pass the `mute: true{:js}` option to the compiler inside the `auto` object.\n"
  },
  {
    "path": "website/pages/docs/experimental.en-US.mdx",
    "content": "---\ntitle: 'Experimental'\ndescription: 'Experimental features for Million'\n---\n\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\n\n# Experimental Options\n\nMillion.js has various experimental features that can be toggled through experimental flags. This is to ensure that these features are tested and provide a positive experience prior to their official release as stable features.\n\nAdditionally, these experimental options serve to evaluate whether a specific feature can be fully integrated and delivered as part of the complete package.\n\n## No `<slot />` \n\nMillion.js wraps blocks and their reactive props (portals) with [`<slot />`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) HTML tags so that it gets full control over the rendering! \n\nIn the case of props, each block has no responsibility over the props it takes since they come from a different source. What it does in this case is that it wraps those props with `<slot />` and passes the rendering of those props to React.js. It should be noted that this does not apply to any prop.   \n\nThis experimental flag tries to achieve the removal of slots so that users would not be bothered with unexpected broken styles and `<slot />` elements.\n\n### `block`\n\n> For now, only blocks are supported in `noSlot` mode. Props are yet to be supported.\n\nFor [auto](/docs/automatic) mode, `noSlot` mode can be activated simply by adding this to your entry file:\n\n\n```js\nimport { experimental_options } from 'million/experimental';\n\nexperimental_options.noSlot = true\n// now `noSlot` mode is activated across your application  \n\nfunction Lion() {\n  return <img src=\"https://million.dev/lion.svg\" />;\n}\n``` \n\nIn [manual](/docs/manual-mode/block) mode, the `experimental_noSlot` can be passed to the block function.\n\n```js\nimport { block } from 'million/react';\n \nconst LionBlock = block(\n  function Lion() {\n    return <img src=\"https://million.dev/lion.svg\" />;\n  },\n  { experimental_noSlot: true },\n);\t\n```\n\n<Callout type=\"warning\">\n`noSlot` blocks do not support having siblings in their parents because handling non-block elements and elements that Million.js does not have any control over is challenging.\n\n```jsx\n<div>\n  <span>first child</span>\n  <LionBlock /> {/* ❌ Wrong */}\n</div>\n\n// 👇👇👇\n\n<div>\n  <span>first child</span>\n  <div>\n    <LionBlock /> {/* ✅ Correct */}\n  </div>\n</div>\n```\n\n</Callout>\n"
  },
  {
    "path": "website/pages/docs/index.zh-CN.mdx",
    "content": "import { Disclosures } from '../../components/home/faq';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport Link from 'next/link';\nimport dynamic from 'next/dynamic';\n\nexport const Demo = dynamic(() =>\n  import('../../components/demo').then((mod) => mod.Demo),\n);\n\n# Chinese We\n\nMillion.js is an extremely fast and lightweight optimizing compiler that make [components](https://react.dev) up to [_**70% faster**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n**TL;DR:** Imagine [React](https://react.dev) components running at the speed of raw JavaScript.\n\n## Why Million.js?\n\nTo understand why to use Million.js, we need to understand how React updates interfaces. When an application's state or props change, React undergoes an update in two parts: rendering and reconciliation.\n\nTo show this, let's say this is our `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nIn this `App`, when I click on the button, the `count` state will update and the `<p>` tag will update to reflect the new value. Let's break this down.\n\n### Rendering\n\nThe first step is rendering. Rendering is the process of generating a snapshot of the current component. You can imagine it as simply \"calling\" the `App` function and storing the output in a variable. This is what the `App` snapshot would look like:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliation\n\nIn order to update the interface to reflect the new state, React needs to compare the previous snapshot to the new snapshot (_called \"diffing\"_). React's reconciler will go to each element in the previous snapshot and compare it to the new snapshot. If the element is the same, it will skip it. If the element is different, it will update it.\n\n- The `<div>` tag is the same, so it doesn't need to be updated. ✅\n  - The `<p>` tag is the same, so it doesn't needs to be updated. ✅\n    - The text inside the `<p>` tag is different, so it needs to be updated. ⚠ ️\n  - The `<button>` tag is the same, so it doesn't need to be updated. ✅\n    - The `onClick` prop is the same, so it doesn't need to be updated. ✅\n    - The text inside the `<button>` tag is the same, so it doesn't need to be updated. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nFrom here, we can see that the `<p>` tag needs to be updated. React will then update the `<p>` DOM node to reflect the new value.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### How Million.js makes this faster\n\nReact is slow.\n\nThe issue with React's reconciliation it becomes **exponentially slower** the more JSX elements you have. With this simple `App`, it only needs to diff a few elements. In a real world React app, you can easily have hundreds of elements, slowing down interface updates.\n\nMillion.js solves this by **skipping the diffing step entirely** and directly updating the DOM node.\n\nHere is a conceptual example of how Million.js reconciler works:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generated by compiler\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nNotice how when the `count` is updated, Million.js will directly update the DOM node. Million.js turns React reconciliation from `O(n^3)` (cubic time) to `O(1)` (constant time).\n\n> How fast is it? [**→ View the benchmarks**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Setup in seconds\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Million.js vs. React\n\nThe following is a comprehensive demo using [key-based\nrendering](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key)\nto show how Million.js performance compares to React.\n\n<br />\n\n<Demo />\n\n## Any questions?\n\nIf you have any questions or need support, please feel free to ask them in [Discord](https://million.dev/chat) or submit an issue on [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/docs/install.en-US.mdx",
    "content": "---\ntitle: 'Installation'\ndescription: 'How to install Million.js into your React project'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\n\n# Installation\n\nMillion.js assumes that you have an existing React project. To learn about how to create a React app, please see [React's documentation](https://react.dev).\n\n## Install via CLI\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n\n  You will also need to make sure you are on Node 18 and above.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Install manually\n\nIf you have issues [installing via the CLI](#install-via-cli), or you have a custom setup, you can\ninstall Million.js manually.\n\nNotice that there are two modes you can choose: **Automatic** and **Manual**:\n\n- **Automatic mode** will automatically configure, analyze, and optimize your project for you.\nThis is the recommended mode.\n\n- **Manual mode** will require you to write code to [optimize certain parts of\nyour project](/docs/manual-mode/manual-mode). This mode is recommended for advanced users who want to have more control over their project.\n\n<Tabs items={['Automatic', 'Manual']} storageKey=\"mode\">\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite','Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: true,// if you're using RSC: auto: { rsc: true },\n};\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n   vite: {\n     plugins: [million.vite({ mode: \"react\", server: true, auto: true })],\n   },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true, auto: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), remix()],\n});\n```\n</Tab>\n\n<Tab>\n  <Callout type=\"warning\">\n    If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n  </Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack({ auto: true })] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack({ auto: true })],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup({ auto: true })],\n};\n```\n</Tab>\n</Tabs>\n\n</Steps>\n</Tab>\n\n\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n{/* prettier-ignore */}\n<Tab>\n```bash copy\nnpm install million\n```\n\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nexport default million.next(nextConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [million.vite({ mode: \"react\", server: true })],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), remix()],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack()] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack()],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup()],\n};\n```\n</Tab>\n<Callout type=\"warning\">\n  The compiler will only try compiling `.jsx` or `.tsx` files and will not try doing any transformation to any other file. You either convert your file formats to those formats or use the [Manual Mode](/docs/manual-mode/manual-mode). \n</Callout>\n\n</Tabs>\n\n</Steps>\n\n</Tab>\n\n</Tabs>\n"
  },
  {
    "path": "website/pages/docs/install.es-ES.mdx",
    "content": "---\ntitle: 'Instalación'\ndescription: 'How to install Million.js into your React project'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\n\n# Instalación\n\nMillion.js asume que ya tienes un proyecto React existente. Para obtener información sobre cómo crear una aplicación con React, consulta la [documentación de React](https://react.dev).\n\n## Instalación via CLI\n\nLa interfaz de línea de comandos (CLI) de Million.js instalará automáticamente el paquete y configurará tu proyecto por ti.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n\n<Callout type=\"info\">\nMillion.js es compatible con React 16 y versiones posteriores. Si estás utilizando una versión más antigua de React, deberás realizar una actualización primero.\n\nTambién deberá asegurarse de tener Node.js 18 y superior.\n</Callout>\n\n¡Eso es todo! Tu proyecto ahora está en funcionamiento con Million.js 🎉\n\n## Instalar manualmente\n\nSi encuentras problemas al [instalar a través de la CLI](#install-via-cli), o si tienes una configuración personalizada, puedes instalar Million.js manualmente.\n\nTen en cuenta que hay dos modos entre los que puedes elegir: **Automático** y **Manual**:\n\n- El **modo automático** configurará, analizará y optimizará automáticamente tu proyecto por ti. Este es el modo recomendado.\n\n- El **modo Manual** requerirá que escribas código para [optimizar ciertas partes de tu proyecto](/docs/manual-mode/manual-mode).\nEste modo es recomendado para usuarios avanzados que deseen tener un mayor control sobre su proyecto.\n\n<Tabs items={['Automatic', 'Manual']} storageKey=\"mode\">\n\n<Tab>\n\n<Steps>\n\n### Instala Million.js\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Agrega el compilador a tu aplicación\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite','Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n\nMillion.js es compatible dentro de los directorios `/app` (solo componentes \"use client\") y `/pages`.\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: true,// Si estas usando RSC: auto: { rsc: true },\n};\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n   vite: {\n     plugins: [million.vite({ mode: \"react\", server: true, auto: true })],\n   },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true, auto: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), remix()],\n});\n```\n</Tab>\n\n<Tab>\n  <Callout type=\"warning\">\n    Si estas usando [Create React App (CRA)](https://create-react-app.dev/), necesitaras [configurar Craco](https://craco.js.org/docs/getting-started/) antes de proceder.\n  </Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack({ auto: true })] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack({ auto: true })],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup({ auto: true })],\n};\n```\n</Tab>\n</Tabs>\n\n</Steps>\n</Tab>\n\n\n\n<Tab>\n\n<Steps>\n\n### Instala Million.js\n\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n{/* prettier-ignore */}\n<Tab>\n```bash copy\nnpm install million\n```\n\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Agrega el compilador a tu aplicación\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\n\nMillion.js es compatible dentro de los directorios `/app` (solo componentes \"use client\") y `/pages`.\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nexport default million.next(nextConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [million.vite({ mode: \"react\", server: true })],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), remix()],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  Si estas usando [Create React App (CRA)](https://create-react-app.dev/), necesitaras [configurar Craco](https://craco.js.org/docs/getting-started/) antes de proceder.\n</Callout>\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack()] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack()],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup()],\n};\n```\n</Tab>\n\n</Tabs>\n\n</Steps>\n\n</Tab>\n\n</Tabs>\n"
  },
  {
    "path": "website/pages/docs/install.fr-FR.mdx",
    "content": "---\ntitle: 'Installation'\ndescription: 'How to install Million.js into your React project'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\n\n# Installation\n\nMillion.js assumes that you have an existing React project. To learn about how to create a React app, please see [React's documentation](https://react.dev).\n\n## Install via CLI\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Install manually\n\nIf you have issues [installing via the CLI](#install-via-cli), or you have a custom setup, you can\ninstall Million.js manually.\n\nNotice that there are two modes you can choose: **Automatic** and **Manual**:\n\n- **Automatic mode** will automatically configure, analyze, and optimize your project for you.\nThis is the recommended mode.\n\n- **Manual mode** will require you to write code to [optimize certain parts of\nyour project](/docs/manual-mode/manual-mode). This mode is recommended for advanced users who want to have more control over their project.\n\n<Tabs items={['Automatic', 'Manual']} storageKey=\"mode\">\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite','Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: true,// if you're using RSC: auto: { rsc: true },\n};\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n   vite: {\n     plugins: [million.vite({ mode: \"react\", server: true, auto: true })],\n   },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true, auto: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), remix()],\n});\n```\n</Tab>\n\n<Tab>\n  <Callout type=\"warning\">\n    If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n  </Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack({ auto: true })] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack({ auto: true })],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup({ auto: true })],\n};\n```\n</Tab>\n</Tabs>\n\n</Steps>\n</Tab>\n\n\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n{/* prettier-ignore */}\n<Tab>\n```bash copy\nnpm install million\n```\n\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nexport default million.next(nextConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [million.vite({ mode: \"react\", server: true })],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), remix()],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack()] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack()],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup()],\n};\n```\n</Tab>\n\n</Tabs>\n\n</Steps>\n\n</Tab>\n\n</Tabs>\n"
  },
  {
    "path": "website/pages/docs/install.zh-CN.mdx",
    "content": "---\ntitle: 'Installation'\ndescription: 'How to install Million.js into your React project'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\n\n# Installation\n\nMillion.js assumes that you have an existing React project. To learn about how to create a React app, please see [React's documentation](https://react.dev).\n\n## Install via CLI\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Install manually\n\nIf you have issues [installing via the CLI](#install-via-cli), or you have a custom setup, you can\ninstall Million.js manually.\n\nNotice that there are two modes you can choose: **Automatic** and **Manual**:\n\n- **Automatic mode** will automatically configure, analyze, and optimize your project for you.\nThis is the recommended mode.\n\n- **Manual mode** will require you to write code to [optimize certain parts of\nyour project](/docs/manual-mode/manual-mode). This mode is recommended for advanced users who want to have more control over their project.\n\n<Tabs items={['Automatic', 'Manual']} storageKey=\"mode\">\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite','Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nconst millionConfig = {\n  auto: true,// if you're using RSC: auto: { rsc: true },\n};\n\nexport default million.next(nextConfig, millionConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n   vite: {\n     plugins: [million.vite({ mode: \"react\", server: true, auto: true })],\n   },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true, auto: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite({ auto: true }), remix()],\n});\n```\n</Tab>\n\n<Tab>\n  <Callout type=\"warning\">\n    If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n  </Callout>\n\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\n\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack({ auto: true })] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack({ auto: true })],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup({ auto: true })],\n};\n```\n</Tab>\n</Tabs>\n\n</Steps>\n</Tab>\n\n\n\n<Tab>\n\n<Steps>\n\n### Install Million.js\n\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n{/* prettier-ignore */}\n<Tab>\n```bash copy\nnpm install million\n```\n\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add million\n  ```\n  </Tab>\n</Tabs>\n\n### Add the compiler to your application\n\n<Tabs items={['Next.js', 'Astro', 'Gatsby', 'Vite', 'Remix', 'Create React App', 'Webpack', 'Rollup']} storageKey=\"selected-bundler-compiler\">\n<Tab>\nMillion.js is supported within the `/app` (\"use client\" components only) and `/pages`\n\n```js filename=\"next.config.mjs\"\nimport million from \"million/compiler\";\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n};\n\nexport default million.next(nextConfig);\n```\n</Tab>\n\n<Tab>\n```js filename=\"astro.config.mjs\"\nimport { defineConfig } from \"astro/config\";\nimport million from \"million/compiler\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [million.vite({ mode: \"react\", server: true })],\n  },\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"gatsby-node.js\"\nconst million = require(\"million/compiler\");\n\nexports.onCreateWebpackConfig = ({ actions }) => {\n  actions.setWebpackConfig({\n    plugins: [million.webpack({ mode: \"react\", server: true })],\n  });\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport million from \"million/compiler\";\nimport react from \"@vitejs/plugin-react\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), react()],\n});\n```\n</Tab>\n\n<Tab>\n```js filename=\"vite.config.js\"\nimport { unstable_vitePlugin as remix } from \"@remix-run/dev\";\nimport million from \"million/compiler\";\nimport { defineConfig } from \"vite\";\n\nexport default defineConfig({\n  plugins: [million.vite(), remix()],\n});\n```\n</Tab>\n\n<Tab>\n<Callout type=\"warning\">\n  If you are using a [Create React App (CRA)](https://create-react-app.dev/) Setup, you will need to [configure Craco](https://craco.js.org/docs/getting-started/) before proceeding.\n</Callout>\n```js filename=\"craco.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  webpack: {\n    plugins: { add: [million.webpack()] },\n  },\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"webpack.config.js\"\nconst million = require(\"million/compiler\");\nmodule.exports = {\n  plugins: [million.webpack()],\n};\n```\n</Tab>\n\n<Tab>\n```js filename=\"rollup.config.js\"\nimport million from \"million/compiler\";\n\nexport default {\n  plugins: [million.rollup()],\n};\n```\n</Tab>\n\n</Tabs>\n\n</Steps>\n\n</Tab>\n\n</Tabs>\n"
  },
  {
    "path": "website/pages/docs/internals/_meta.en-US.json",
    "content": "{\n  \"block\": \"block()\",\n  \"mount\": \"mount()\",\n  \"patch\": \"patch()\",\n  \"map-array\": \"mapArray()\",\n  \"render-to-template\": \"renderToTemplate()\",\n  \"string-to-dom\": \"stringToDOM()\"\n}\n"
  },
  {
    "path": "website/pages/docs/internals/_meta.es-ES.json",
    "content": "{\n  \"block\": \"block()\",\n  \"mount\": \"mount()\",\n  \"patch\": \"patch()\",\n  \"map-array\": \"mapArray()\",\n  \"render-to-template\": \"renderToTemplate()\",\n  \"string-to-dom\": \"stringToDOM()\"\n}\n"
  },
  {
    "path": "website/pages/docs/internals/_meta.fr-FR.json",
    "content": "{\n  \"block\": \"block()\",\n  \"mount\": \"mount()\",\n  \"patch\": \"patch()\",\n  \"map-array\": \"mapArray()\",\n  \"render-to-template\": \"renderToTemplate()\",\n  \"string-to-dom\": \"stringToDOM()\"\n}\n"
  },
  {
    "path": "website/pages/docs/internals/_meta.zh-CN.json",
    "content": "{\n  \"block\": \"block()\",\n  \"mount\": \"mount()\",\n  \"patch\": \"patch()\",\n  \"map-array\": \"mapArray()\",\n  \"render-to-template\": \"renderToTemplate()\",\n  \"string-to-dom\": \"stringToDOM()\"\n}\n"
  },
  {
    "path": "website/pages/docs/internals/block.en-US.mdx",
    "content": "---\ntitle: \"block()\"\ndescription: \"A function that creates a stateless component.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n{' '}\n<Callout type=\"warning\">\n  **This function is part of the internal API.** You should only be using this\n  if you are making your own framework.\n</Callout>\n\n{' '}\n<br />\n\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nThe `block` function instantiates a `Block` (_a stateless \"component\"_). It accepts a function with a `props` object parameter that returns a `VNode`.\n\n### Rules of usage\n\n##### `props` is an immutable object with primitive or `Block` values.\n\n```jsx\nsomeBlock({\n  one: '1', // ✅\n  two: 1 + 1, // ✅\n  three: true, // ✅\n  four: Date.now(), // ✅\n  five: anotherBlock({ crewmate: true }), // ✅\n  six: { imposter: true }, // ❌\n  seven: new Date(), // ❌\n});\n```\n\n##### Top level values of `props` may not be interpolated with other values.\n\nThe `props` are filled with immutable `Hole` values. These values are replaced with the actual values when the `block(){:jsx}` is called.\n\n```jsx\n// Anatomy of a `Hole`\n{\n  $: 'prop';\n}\n\n// Example:\nblock((props) => {\n  console.log(props.foo); // { $: 'foo' } ✅\n  console.log(props.foo + ' bar'); // { $: 'foo' } + ' bar' ❌\n  return <div>{props.foo}</div>;\n});\n```\n\nThe following are examples of this rule:\n\n```jsx\nblock((props) => {\n  const { favorite } = props.favorite; // ❌\n  <div className={props.className /* ✅ */}>\n    {props.hello /* ✅ */}\n    {Date.now() /* ✅ */}\n    <button\n      onClick={() => {\n        console.log(props.world); /* ❌ (no holes inside listeners) */\n      }}\n    >\n      {props.count + 1 /* ❌ */}\n      {props.foo.toString() /* ❌ */}\n    </button>\n  </div>;\n});\n```"
  },
  {
    "path": "website/pages/docs/internals/block.es-ES.mdx",
    "content": "---\ntitle: \"block()\"\ndescription: \"Una función que crea un componente sin estado.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n{' '}\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*.\n</Callout>\n\n{' '}\n<br />\n\n\n# `block(){:jsx}`\n\n**Sintaxis:** `block((props) => vnode){:jsx}`\\\n**Ejemplo:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nLa función `block` (*bloque* en español) instancia un `Block` (un \"componente\" sin estado). Acepta una función que contiene un objeto `props` como parámetro y que devuelve un `VNode`.\n\n### Reglas de uso\n\n##### `props` es un objeto inmutable con valores primitivos o valores de tipo `Block`.\n\n```jsx\nsomeBlock({\n  one: '1', // ✅\n  two: 1 + 1, // ✅\n  three: true, // ✅\n  four: Date.now(), // ✅\n  five: anotherBlock({ crewmate: true }), // ✅\n  six: { imposter: true }, // ❌\n  seven: new Date(), // ❌\n});\n```\n\n##### Top level values of `props` may not be interpolated with other values.\n\nLos `props` son llenados con valores inmutables de tipo `Hole`. Estos valores se reemplazan con los valores reales cuando la función `block(){:jsx}` es llamada.\n\n```jsx\n// Anatomía de un `Hole`\n{\n  $: 'prop';\n}\n\n// Ejemplo:\nblock((props) => {\n  console.log(props.foo); // { $: 'foo' } ✅\n  console.log(props.foo + ' bar'); // { $: 'foo' } + ' bar' ❌\n  return <div>{props.foo}</div>;\n});\n```\n\nAlgunos ejemplos de esta regla:\n\n```jsx\nblock((props) => {\n  const { favorite } = props.favorite; // ❌\n  <div className={props.className /* ✅ */}>\n    {props.hello /* ✅ */}\n    {Date.now() /* ✅ */}\n    <button\n      onClick={() => {\n        console.log(props.world); /* ❌ (No se permiten \"holes\" dentro de eventos) */\n      }}\n    >\n      {props.count + 1 /* ❌ */}\n      {props.foo.toString() /* ❌ */}\n    </button>\n  </div>;\n});\n```"
  },
  {
    "path": "website/pages/docs/internals/block.fr-FR.mdx",
    "content": "---\ntitle: \"block()\"\ndescription: \"A function that creates a stateless component.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n{' '}\n<Callout type=\"warning\">\n  **This function is part of the internal API.** You should only be using this\n  if you are making your own framework.\n</Callout>\n\n{' '}\n<br />\n\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nThe `block` function instantiates a `Block` (_a stateless \"component\"_). It accepts a function with a `props` object parameter that returns a `VNode`.\n\n### Rules of usage\n\n##### `props` is an immutable object with primitive or `Block` values.\n\n```jsx\nsomeBlock({\n  one: '1', // ✅\n  two: 1 + 1, // ✅\n  three: true, // ✅\n  four: Date.now(), // ✅\n  five: anotherBlock({ crewmate: true }), // ✅\n  six: { imposter: true }, // ❌\n  seven: new Date(), // ❌\n});\n```\n\n##### Top level values of `props` may not be interpolated with other values.\n\nThe `props` are filled with immutable `Hole` values. These values are replaced with the actual values when the `block(){:jsx}` is called.\n\n```jsx\n// Anatomy of a `Hole`\n{\n  $: 'prop';\n}\n\n// Example:\nblock((props) => {\n  console.log(props.foo); // { $: 'foo' } ✅\n  console.log(props.foo + ' bar'); // { $: 'foo' } + ' bar' ❌\n  return <div>{props.foo}</div>;\n});\n```\n\nThe following are examples of this rule:\n\n```jsx\nblock((props) => {\n  const { favorite } = props.favorite; // ❌\n  <div className={props.className /* ✅ */}>\n    {props.hello /* ✅ */}\n    {Date.now() /* ✅ */}\n    <button\n      onClick={() => {\n        console.log(props.world); /* ❌ (no holes inside listeners) */\n      }}\n    >\n      {props.count + 1 /* ❌ */}\n      {props.foo.toString() /* ❌ */}\n    </button>\n  </div>;\n});\n```"
  },
  {
    "path": "website/pages/docs/internals/block.zh-CN.mdx",
    "content": "---\ntitle: \"block()\"\ndescription: \"A function that creates a stateless component.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n{' '}\n<Callout type=\"warning\">\n  **This function is part of the internal API.** You should only be using this\n  if you are making your own framework.\n</Callout>\n\n{' '}\n<br />\n\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nThe `block` function instantiates a `Block` (_a stateless \"component\"_). It accepts a function with a `props` object parameter that returns a `VNode`.\n\n### Rules of usage\n\n##### `props` is an immutable object with primitive or `Block` values.\n\n```jsx\nsomeBlock({\n  one: '1', // ✅\n  two: 1 + 1, // ✅\n  three: true, // ✅\n  four: Date.now(), // ✅\n  five: anotherBlock({ crewmate: true }), // ✅\n  six: { imposter: true }, // ❌\n  seven: new Date(), // ❌\n});\n```\n\n##### Top level values of `props` may not be interpolated with other values.\n\nThe `props` are filled with immutable `Hole` values. These values are replaced with the actual values when the `block(){:jsx}` is called.\n\n```jsx\n// Anatomy of a `Hole`\n{\n  $: 'prop';\n}\n\n// Example:\nblock((props) => {\n  console.log(props.foo); // { $: 'foo' } ✅\n  console.log(props.foo + ' bar'); // { $: 'foo' } + ' bar' ❌\n  return <div>{props.foo}</div>;\n});\n```\n\nThe following are examples of this rule:\n\n```jsx\nblock((props) => {\n  const { favorite } = props.favorite; // ❌\n  <div className={props.className /* ✅ */}>\n    {props.hello /* ✅ */}\n    {Date.now() /* ✅ */}\n    <button\n      onClick={() => {\n        console.log(props.world); /* ❌ (no holes inside listeners) */\n      }}\n    >\n      {props.count + 1 /* ❌ */}\n      {props.foo.toString() /* ❌ */}\n    </button>\n  </div>;\n});\n```"
  },
  {
    "path": "website/pages/docs/internals/map-array.en-US.mdx",
    "content": "---\ntitle: 'mapArray()'\ndescription: \"The mapArray function is used to create a Block list. It's the best way to loop over an array.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mapArray(){:jsx}`\n\n**Syntax:** `mapArray(Block[]){:jsx}`\\\n**Example:** `mapArray([block, block, block]){:jsx}`\n\nThe `mapArray` function is used to create a Block list. It's the best way to render a view that's derived from array-like data. As the array changes, `mapArray(){:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { block, patch, mapArray } from 'million';\n\nconst oldList = [1, 2, 3];\nconst newList = [3, 2, 1];\nconst list = block(({ item }) => {\n  return <div>{item}</div>;\n});\n\n// updates list efficiently (only 2 moves instead of 3 updates)\npatch(\n  document.body,\n  mapArray(oldList.map((item) => list({ item }))),\n  mapArray(newList.map((item) => list({ item }))),\n);\n```\n"
  },
  {
    "path": "website/pages/docs/internals/map-array.es-ES.mdx",
    "content": "---\ntitle: 'mapArray()'\ndescription: \"La función mapArray se utiliza para crear una lista de bloques. Es la mejor manera de recorrer un arreglo.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*. No es recomendada para uso general.\n</Callout>\n\n<br />\n\n# `mapArray(){:jsx}`\n\n**Sintaxis:** `mapArray(Block[]){:jsx}`\\\n**Ejemplo:** `mapArray([block, block, block]){:jsx}`\n\n\nLa función mapArray se utiliza para crear una lista de bloques (blocks). Es la mejor manera de renderizar una vista que se deriva de datos provenientes de un array. A medida que cambia el array, `mapArray(){:jsx}` actualiza o mueve elementos en el DOM en lugar de recrearlos. Veamos un ejemplo:\n\n```jsx\nimport { block, patch, mapArray } from 'million';\n\nconst oldList = [1, 2, 3];\nconst newList = [3, 2, 1];\nconst list = block(({ item }) => {\n  return <div>{item}</div>;\n});\n\n// actualiza la lista de manera eficiente (solo 2 movimientos en lugar de 3 actualizaciones)\npatch(\n  document.body,\n  mapArray(oldList.map((item) => list({ item }))),\n  mapArray(newList.map((item) => list({ item }))),\n);\n```\n"
  },
  {
    "path": "website/pages/docs/internals/map-array.fr-FR.mdx",
    "content": "---\ntitle: 'mapArray()'\ndescription: \"The mapArray function is used to create a Block list. It's the best way to loop over an array.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mapArray(){:jsx}`\n\n**Syntax:** `mapArray(Block[]){:jsx}`\\\n**Example:** `mapArray([block, block, block]){:jsx}`\n\nThe `mapArray` function is used to create a Block list. It's the best way to render a view that's derived from array-like data. As the array changes, `mapArray(){:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { block, patch, mapArray } from 'million';\n\nconst oldList = [1, 2, 3];\nconst newList = [3, 2, 1];\nconst list = block(({ item }) => {\n  return <div>{item}</div>;\n});\n\n// updates list efficiently (only 2 moves instead of 3 updates)\npatch(\n  document.body,\n  mapArray(oldList.map((item) => list({ item }))),\n  mapArray(newList.map((item) => list({ item }))),\n);\n```\n"
  },
  {
    "path": "website/pages/docs/internals/map-array.zh-CN.mdx",
    "content": "---\ntitle: 'mapArray()'\ndescription: \"The mapArray function is used to create a Block list. It's the best way to loop over an array.\"\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mapArray(){:jsx}`\n\n**Syntax:** `mapArray(Block[]){:jsx}`\\\n**Example:** `mapArray([block, block, block]){:jsx}`\n\nThe `mapArray` function is used to create a Block list. It's the best way to render a view that's derived from array-like data. As the array changes, `mapArray(){:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { block, patch, mapArray } from 'million';\n\nconst oldList = [1, 2, 3];\nconst newList = [3, 2, 1];\nconst list = block(({ item }) => {\n  return <div>{item}</div>;\n});\n\n// updates list efficiently (only 2 moves instead of 3 updates)\npatch(\n  document.body,\n  mapArray(oldList.map((item) => list({ item }))),\n  mapArray(newList.map((item) => list({ item }))),\n);\n```\n"
  },
  {
    "path": "website/pages/docs/internals/mount.en-US.mdx",
    "content": "---\ntitle: 'mount()'\ndescription: 'Mount a block to a DOM element.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mount(){:jsx}`\n\n**Syntax:** `mount(Block, el){:jsx}`\\\n**Example:** `mount(block, document.getElementById('root')){:jsx}`\n\nThe `mount` function is used to mount a block to a DOM element (imagine `ReactDOM.render()` in React). It takes two arguments: the block to mount and the DOM element to mount it to.\n\n```jsx\nimport { block, mount } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\nconst element = mount(display, document.getElementById('root'));\n```\n"
  },
  {
    "path": "website/pages/docs/internals/mount.es-ES.mdx",
    "content": "---\ntitle: 'mount()'\ndescription: 'Montar un bloque en un elemento del DOM.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*. No es recomendada para uso general.\n</Callout>\n\n<br />\n\n# `mount(){:jsx}`\n\n**Sintaxis:** `mount(Block, el){:jsx}`\\\n**Ejemplo:** `mount(block, document.getElementById('root')){:jsx}`\n\nLa función `mount` se utiliza para montar un bloque (block) en un elemento del DOM (imagina `ReactDOM.render()` en React). Toma dos argumentos: el bloque (block) que se va a montar y el elemento del DOM en el que se va a montar.\n\n```jsx\nimport { block, mount } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\nconst element = mount(display, document.getElementById('root'));\n```\n"
  },
  {
    "path": "website/pages/docs/internals/mount.fr-FR.mdx",
    "content": "---\ntitle: 'mount()'\ndescription: 'Mount a block to a DOM element.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mount(){:jsx}`\n\n**Syntax:** `mount(Block, el){:jsx}`\\\n**Example:** `mount(block, document.getElementById('root')){:jsx}`\n\nThe `mount` function is used to mount a block to a DOM element (imagine `ReactDOM.render()` in React). It takes two arguments: the block to mount and the DOM element to mount it to.\n\n```jsx\nimport { block, mount } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\nconst element = mount(display, document.getElementById('root'));\n```\n"
  },
  {
    "path": "website/pages/docs/internals/mount.zh-CN.mdx",
    "content": "---\ntitle: 'mount()'\ndescription: 'Mount a block to a DOM element.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `mount(){:jsx}`\n\n**Syntax:** `mount(Block, el){:jsx}`\\\n**Example:** `mount(block, document.getElementById('root')){:jsx}`\n\nThe `mount` function is used to mount a block to a DOM element (imagine `ReactDOM.render()` in React). It takes two arguments: the block to mount and the DOM element to mount it to.\n\n```jsx\nimport { block, mount } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\nconst element = mount(display, document.getElementById('root'));\n```\n"
  },
  {
    "path": "website/pages/docs/internals/patch.en-US.mdx",
    "content": "---\ntitle: 'patch()'\ndescription: 'The patch function is used to rerender a block with another block.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `patch(){:jsx}`\n\n**Syntax:** `patch(oldBlock, newBlock){:jsx}`\\\n**Example:** `patch(block1, block2){:jsx}`\n\nThe `patch` function is used to rerender a block with another block. The `oldBlock` is the block that will be rerendered, and the `newBlock` represents the new version of the DOM.\n\n<Callout>\n  Blocks must be derived from the same function when using `patch()`. This\n  ensures performance is not negatively impacted.\n</Callout>\n\n```jsx\nimport { block, mount, patch, fragment } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\n// we will patch against this block for updates\nconst main = display({ text: 'Hello' });\n\nmount(main, document.getElementById('root'));\n\npatch(main, display({ text: 'World' }));\n\nconst bigDisplay = block(({ text }) => {\n  return <h1 style={{ color: 'red' }}>{text}</h1>;\n});\n\npatch(main, bigDisplay({ text: 'World' })); // inefficient, but works\n```\n"
  },
  {
    "path": "website/pages/docs/internals/patch.es-ES.mdx",
    "content": "---\ntitle: 'patch()'\ndescription: 'The patch function is used to rerender a bloque with another bloque.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*. No es recomendada para uso general.\n</Callout>\n\n<br />\n\n# `patch(){:jsx}`\n\n**Sintaxis:** `patch(oldBlock, newBlock){:jsx}`\\\n**Ejemplo:** `patch(block1, block2){:jsx}`\n\nLa función `patch` se utiliza para volver a renderizar un bloque con otro bloque. El `oldBlock` (bloque viejo) es el block que se volverá a renderizar, y el `newBlock` (bloque nuevo) representa la nueva versión del DOM.\n\n<Callout>\n  Los bloques deben derivarse de la misma función al usar `patch()`. Esto asegura que el rendimiento no se vea afectado negativamente.\n</Callout>\n\n```jsx\nimport { block, mount, patch, fragment } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\n// Vamos a aplicar un \"patch\" a este bloque para las actualizaciones.\nconst main = display({ text: 'Hello' });\n\nmount(main, document.getElementById('root'));\n\npatch(main, display({ text: 'World' }));\n\nconst bigDisplay = block(({ text }) => {\n  return <h1 style={{ color: 'red' }}>{text}</h1>;\n});\n\npatch(main, bigDisplay({ text: 'World' })); // ineficiente, pero funciona.\n```\n"
  },
  {
    "path": "website/pages/docs/internals/patch.fr-FR.mdx",
    "content": "---\ntitle: 'patch()'\ndescription: 'The patch function is used to rerender a block with another block.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `patch(){:jsx}`\n\n**Syntax:** `patch(oldBlock, newBlock){:jsx}`\\\n**Example:** `patch(block1, block2){:jsx}`\n\nThe `patch` function is used to rerender a block with another block. The `oldBlock` is the block that will be rerendered, and the `newBlock` represents the new version of the DOM.\n\n<Callout>\n  Blocks must be derived from the same function when using `patch()`. This\n  ensures performance is not negatively impacted.\n</Callout>\n\n```jsx\nimport { block, mount, patch, fragment } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\n// we will patch against this block for updates\nconst main = display({ text: 'Hello' });\n\nmount(main, document.getElementById('root'));\n\npatch(main, display({ text: 'World' }));\n\nconst bigDisplay = block(({ text }) => {\n  return <h1 style={{ color: 'red' }}>{text}</h1>;\n});\n\npatch(main, bigDisplay({ text: 'World' })); // inefficient, but works\n```\n"
  },
  {
    "path": "website/pages/docs/internals/patch.zh-CN.mdx",
    "content": "---\ntitle: 'patch()'\ndescription: 'The patch function is used to rerender a block with another block.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `patch(){:jsx}`\n\n**Syntax:** `patch(oldBlock, newBlock){:jsx}`\\\n**Example:** `patch(block1, block2){:jsx}`\n\nThe `patch` function is used to rerender a block with another block. The `oldBlock` is the block that will be rerendered, and the `newBlock` represents the new version of the DOM.\n\n<Callout>\n  Blocks must be derived from the same function when using `patch()`. This\n  ensures performance is not negatively impacted.\n</Callout>\n\n```jsx\nimport { block, mount, patch, fragment } from 'million';\n\nconst display = block(({ text }) => {\n  return <p>{text}</p>;\n});\n\n// we will patch against this block for updates\nconst main = display({ text: 'Hello' });\n\nmount(main, document.getElementById('root'));\n\npatch(main, display({ text: 'World' }));\n\nconst bigDisplay = block(({ text }) => {\n  return <h1 style={{ color: 'red' }}>{text}</h1>;\n});\n\npatch(main, bigDisplay({ text: 'World' })); // inefficient, but works\n```\n"
  },
  {
    "path": "website/pages/docs/internals/render-to-template.en-US.mdx",
    "content": "---\ntitle: 'renderToTemplate()'\ndescription: 'The renderToTemplate function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with stringToDOM.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `renderToTemplate(){:jsx}`\n\n**Syntax:** `renderToTemplate(vnode, edits){:jsx}`\\\n**Example:** `renderToTemplate(<div>Hello World</div>, []){:jsx}`\n\nThe `renderToTemplate()` function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with [`stringToDOM(){:jsx}`](/docs/internals/string-to-dom).\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst template = renderToTemplate(<div>Hello World</div>, edits);\n\nconsole.log(template); // '<div>Hello World</div>'\n\nconsole.log(edits); // []\n```\n\n## Holes in templates\n\nYou can also pass in Holes to the `renderToTemplate()` function. This will return the template with edits.\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst hole = { $: 'hole' };\nconst template = renderToTemplate(<div>Hello {hole}</div>, edits);\n\nconsole.log(template); // '<div>Hello </div>'\n\nconsole.log(edits); // [{ type: 'child', index: 0, hole: 'hole' }]\n```\n"
  },
  {
    "path": "website/pages/docs/internals/render-to-template.es-ES.mdx",
    "content": "---\ntitle: 'renderToTemplate()'\ndescription: 'La función renderToTemplate se utiliza para renderizar un nodo del DOM virtual a una cadena de texto. Esto se utiliza para crear la plantilla para el bloque y funciona tangencialmente con stringToDOM.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*. No es recomendada para uso general.\n</Callout>\n\n<br />\n\n# `renderToTemplate(){:jsx}`\n\n**Sintaxis:** `renderToTemplate(vnode, edits){:jsx}`\\\n**Ejemplo:** `renderToTemplate(<div>Hola Mundo</div>, []){:jsx}`\n\nLa función `renderToTemplate()` se utiliza para renderizar un nodo del DOM virtual a una cadena de texto. Esto se emplea para crear la plantilla para el bloque y funciona de manera tangencial con [`stringToDOM(){:jsx}`](/docs/internals/string-to-dom).\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst template = renderToTemplate(<div>Hola Mundo</div>, edits);\n\nconsole.log(template); // '<div>Hola Mundo</div>'\n\nconsole.log(edits); // []\n```\n\n## \"Holes\" en plantillas.\n\nTambién puedes pasar \"Holes\" a la función `renderToTemplate()`. Esto devolverá la plantilla con las ediciones.\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst hole = { $: 'hole' };\nconst template = renderToTemplate(<div>Hola {hole}</div>, edits);\n\nconsole.log(template); // '<div>Hola </div>'\n\nconsole.log(edits); // [{ type: 'child', index: 0, hole: 'hole' }]\n```\n"
  },
  {
    "path": "website/pages/docs/internals/render-to-template.fr-FR.mdx",
    "content": "---\ntitle: 'renderToTemplate()'\ndescription: 'The renderToTemplate function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with stringToDOM.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `renderToTemplate(){:jsx}`\n\n**Syntax:** `renderToTemplate(vnode, edits){:jsx}`\\\n**Example:** `renderToTemplate(<div>Hello World</div>, []){:jsx}`\n\nThe `renderToTemplate()` function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with [`stringToDOM(){:jsx}`](/docs/internals/string-to-dom).\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst template = renderToTemplate(<div>Hello World</div>, edits);\n\nconsole.log(template); // '<div>Hello World</div>'\n\nconsole.log(edits); // []\n```\n\n## Holes in templates\n\nYou can also pass in Holes to the `renderToTemplate()` function. This will return the template with edits.\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst hole = { $: 'hole' };\nconst template = renderToTemplate(<div>Hello {hole}</div>, edits);\n\nconsole.log(template); // '<div>Hello </div>'\n\nconsole.log(edits); // [{ type: 'child', index: 0, hole: 'hole' }]\n```\n"
  },
  {
    "path": "website/pages/docs/internals/render-to-template.zh-CN.mdx",
    "content": "---\ntitle: 'renderToTemplate()'\ndescription: 'The renderToTemplate function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with stringToDOM.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `renderToTemplate(){:jsx}`\n\n**Syntax:** `renderToTemplate(vnode, edits){:jsx}`\\\n**Example:** `renderToTemplate(<div>Hello World</div>, []){:jsx}`\n\nThe `renderToTemplate()` function is used to render a virtual DOM node to a string. This is used to create the template for the block and works tangentially with [`stringToDOM(){:jsx}`](/docs/internals/string-to-dom).\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst template = renderToTemplate(<div>Hello World</div>, edits);\n\nconsole.log(template); // '<div>Hello World</div>'\n\nconsole.log(edits); // []\n```\n\n## Holes in templates\n\nYou can also pass in Holes to the `renderToTemplate()` function. This will return the template with edits.\n\n```jsx\nimport { renderToTemplate } from 'million';\n\nconst edits = [];\nconst hole = { $: 'hole' };\nconst template = renderToTemplate(<div>Hello {hole}</div>, edits);\n\nconsole.log(template); // '<div>Hello </div>'\n\nconsole.log(edits); // [{ type: 'child', index: 0, hole: 'hole' }]\n```\n"
  },
  {
    "path": "website/pages/docs/internals/string-to-dom.en-US.mdx",
    "content": "---\ntitle: 'stringToDOM()'\ndescription: 'Convert a string to a virtual DOM node.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `stringToDOM(){:jsx}`\n\n**Syntax:** `stringToDOM(content, svg){:jsx}`\\\n**Example:** `stringToDOM('<div>Hello World</div>'){:jsx}`\n\nThe `stringToDOM` function takes a string of HTML or SVG and returns a DOM object. This is useful for creating DOM elements from strings.\n\n```jsx\nimport { stringToDOM } from 'million';\n\nconst dom = stringToDOM('<div>Hello World</div>');\n\ndom.innerHTML; // 'Hello World'\ndom.tagName; // 'DIV'\n\nconst svg = stringToDOM('<g><rect /></g>'); // creates SVG!\n```\n"
  },
  {
    "path": "website/pages/docs/internals/string-to-dom.es-ES.mdx",
    "content": "---\ntitle: 'stringToDOM()'\ndescription: 'Convertir una cadena de texto en un nodo del DOM virtual.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  Esta función forma parte de la API interna. Deberías utilizarla **solo** si estás creando tu propio *framework*. No es recomendada para uso general.\n</Callout>\n\n<br />\n\n# `stringToDOM(){:jsx}`\n\n**Sintaxis:** `stringToDOM(content, svg){:jsx}`\\\n**Ejemplo:** `stringToDOM('<div>Hola Mundo</div>'){:jsx}`\n\n\nLa función `stringToDOM` toma una cadena de HTML o SVG y devuelve un objeto del DOM. Esto es útil para crear elementos del DOM a partir de cadenas de texto (string).\n\n```jsx\nimport { stringToDOM } from 'million';\n\nconst dom = stringToDOM('<div>Hola Mundo</div>');\n\ndom.innerHTML; // 'Hola Mundo'\ndom.tagName; // 'DIV'\n\nconst svg = stringToDOM('<g><rect /></g>'); // crea SVG!\n```\n"
  },
  {
    "path": "website/pages/docs/internals/string-to-dom.fr-FR.mdx",
    "content": "---\ntitle: 'stringToDOM()'\ndescription: 'Convert a string to a virtual DOM node.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `stringToDOM(){:jsx}`\n\n**Syntax:** `stringToDOM(content, svg){:jsx}`\\\n**Example:** `stringToDOM('<div>Hello World</div>'){:jsx}`\n\nThe `stringToDOM` function takes a string of HTML or SVG and returns a DOM object. This is useful for creating DOM elements from strings.\n\n```jsx\nimport { stringToDOM } from 'million';\n\nconst dom = stringToDOM('<div>Hello World</div>');\n\ndom.innerHTML; // 'Hello World'\ndom.tagName; // 'DIV'\n\nconst svg = stringToDOM('<g><rect /></g>'); // creates SVG!\n```\n"
  },
  {
    "path": "website/pages/docs/internals/string-to-dom.zh-CN.mdx",
    "content": "---\ntitle: 'stringToDOM()'\ndescription: 'Convert a string to a virtual DOM node.'\n---\n\nimport { Callout } from 'nextra-theme-docs';\n\n<Callout type=\"warning\">\n  **This function is part of the internal API.** It is intended for developers\n  creating their own frameworks. It is not recommended for general use.\n</Callout>\n\n<br />\n\n# `stringToDOM(){:jsx}`\n\n**Syntax:** `stringToDOM(content, svg){:jsx}`\\\n**Example:** `stringToDOM('<div>Hello World</div>'){:jsx}`\n\nThe `stringToDOM` function takes a string of HTML or SVG and returns a DOM object. This is useful for creating DOM elements from strings.\n\n```jsx\nimport { stringToDOM } from 'million';\n\nconst dom = stringToDOM('<div>Hello World</div>');\n\ndom.innerHTML; // 'Hello World'\ndom.tagName; // 'DIV'\n\nconst svg = stringToDOM('<g><rect /></g>'); // creates SVG!\n```\n"
  },
  {
    "path": "website/pages/docs/introduction.en-US.mdx",
    "content": "import { Disclosures } from '../../components/home/faq';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport Link from 'next/link';\nimport dynamic from 'next/dynamic';\n\nexport const Demo = dynamic(() =>\n  import('../../components/demo').then((mod) => mod.Demo),\n);\n\n# Introduction\n\nMillion.js is an extremely fast and lightweight optimizing compiler that make [components](https://react.dev) up to [_**70% faster**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n**TL;DR:** Imagine [React](https://react.dev) components running at the speed of raw JavaScript.\n\n## Why Million.js?\n\nTo understand why to use Million.js, we need to understand how React updates interfaces. When an application's state or props change, React undergoes an update in two parts: rendering and reconciliation.\n\nTo show this, let's say this is our `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nIn this `App`, when I click on the button, the `count` state will update and the `<p>` tag will update to reflect the new value. Let's break this down.\n\n### Rendering\n\nThe first step is rendering. Rendering is the process of generating a snapshot of the current component. You can imagine it as simply \"calling\" the `App` function and storing the output in a variable. This is what the `App` snapshot would look like:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliation\n\nIn order to update the interface to reflect the new state, React needs to compare the previous snapshot to the new snapshot (_called \"diffing\"_). React's reconciler will go to each element in the previous snapshot and compare it to the new snapshot. If the element is the same, it will skip it. If the element is different, it will update it.\n\n- The `<div>` tag is the same, so it doesn't need to be updated. ✅\n  - The `<p>` tag is the same, so it doesn't needs to be updated. ✅\n    - The text inside the `<p>` tag is different, so it needs to be updated. ⚠ ️\n  - The `<button>` tag is the same, so it doesn't need to be updated. ✅\n    - The `onClick` prop is the same, so it doesn't need to be updated. ✅\n    - The text inside the `<button>` tag is the same, so it doesn't need to be updated. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nFrom here, we can see that the `<p>` tag needs to be updated. React will then update the `<p>` DOM node to reflect the new value.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### How Million.js makes this faster\n\nReact is slow.\n\nThe issue with React's reconciliation it becomes **exponentially slower** the more JSX elements you have. With this simple `App`, it only needs to diff a few elements. In a real world React app, you can easily have hundreds of elements, slowing down interface updates.\n\nMillion.js solves this by **skipping the diffing step entirely** and directly updating the DOM node.\n\nHere is a conceptual example of how Million.js reconciler works:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generated by compiler\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nNotice how when the `count` is updated, Million.js will directly update the DOM node. Million.js turns React reconciliation from `O(n)` (linear) to `O(1)` (constant time).\n\n> How fast is it? [**→ View the benchmarks**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Setup in seconds\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Million.js vs. React\n\nThe following is a comprehensive demo using [key-based\nrendering](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key)\nto show how Million.js performance compares to React.\n\n<br />\n\n<Demo />\n\n## Any questions?\n\nIf you have any questions or need support, please feel free to ask them in [Discord](https://million.dev/chat) or submit an issue on [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/docs/introduction.es-ES.mdx",
    "content": "import { Disclosures } from '../../components/home/faq';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport Link from 'next/link';\nimport dynamic from 'next/dynamic';\n\nexport const Demo = dynamic(() =>\n  import('../../components/demo').then((mod) => mod.Demo),\n);\n\n# Introducción\n\nMillions.js es un compilador de optimización extremadamente rápido y liviano que hace que los [componentes](https://react.dev) sean hasta un [_**70% más rápidos**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n**En resumen:** Imagina componentes de [React](https://react.dev) ejecutándose a la velocidad de JavaScript puro.\n\n## ¿Por qué Million.js?\n\n\nPara entender por qué utilizar Million.js, necesitamos comprender cómo React actualiza interfaces. Cuando cambian el estado o las propiedades de una aplicación, React realiza una actualización en dos partes: renderización y reconciliación.\n\nPara ilustrar esto, supongamos que este es nuestro componente `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nEn este componente `App`, cuando hacemos clic en el botón, el estado `count` se actualizará y, consecuentemente, la etiqueta `<p>` se actualizará para reflejar el nuevo valor. Analicemos esto.\n\n### Renderización\n\nEl primer paso es la renderización. La renderización es el proceso de generar un *snapshot* del componente actual. Puedes imaginarlo como simplemente llamar a la función App y almacenar su resultado en una variable. Así es como se vería el *snapshot* de `App`:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliación\n\nPara actualizar la interfaz y reflejar el nuevo estado, React necesita comparar el *snapshot* anterior con el nuevo (llamado \"diffing\"). El *reconciliador* de React analizará cada elemento del *snapshot* anterior y lo comparará con el nuevo. Si el elemento es el mismo, lo omitirá. Si el elemento es diferente, lo actualizará.\n\n- La etiqueta `<div>` es la misma, así que no necesita ser actualizada. ✅\n  - La etiqueta `<p>` es la misma, así que no necesita ser actualizada. ✅\n    - El texto dentro de `<p>` es diferente, por lo que necesita ser actualizado. ⚠\n  - La etiqueta `<button>` es la misma, así que no necesita ser actualizada. ✅\n    - La propiedad `onClick` es la misma, así que no necesita ser actualizada. ✅\n    - El texto dentro de `<button>` es la mismo, así que no necesita ser actualizado. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nDesde aquí, podemos ver que la etiqueta `<p>` necesita ser actualizada. React, por lo tanto, actualizará el nodo de `<p>` en el DOM para reflejar el nuevo valor.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### Cómo Million.js acelera esto\n\nReact es lento.\n\n\nEl problema con la *reconciliación* de React es que se vuelve exponencialmente más lenta a medida que aumenta la cantidad de elementos JSX. Con este simple componente `App`, solo necesita comparar algunos elementos. En una aplicación React del mundo real, fácilmente puedes tener cientos de elementos, ralentizando las actualizaciones de la interfaz.\n\nMillion.js resuelve omitiendo completamente el paso de comparación y actualizando directamente el nodo del DOM.\n\nAquí tienes un ejemplo conceptual de cómo funciona el *reconciliador* de Million.js:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generado por el compilador\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nObserva que cuando `count` se actualiza, Million.js actualizará directamente el nodo DOM. Million.js transforma la *reconciliación* de React de `O(n^3)` (tiempo cúbico) a `O(1)` (tiempo constante).\n\n> ¿Qué tan rápido es? [**→ Ver las pruebas de rendimiento**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Configuración en segundos\n\nLa interfaz de línea de comandos (CLI) de Million.js instalará automáticamente el paquete y configurará tu proyecto por ti.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n<Callout type=\"info\">\nMillion.js es compatible con React 16 y versiones posteriores. Si estás utilizando una versión más antigua de React, deberás realizar una actualización primero.\n</Callout>\n\n¡Eso es todo! Tu proyecto ahora está en funcionamiento con Million.js 🎉\n\n## Million.js vs. React\n\n\nLo siguiente es una demostración que utiliza [*renderización basada en claves* (key-based\nrendering)](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key) para mostrar cómo se compara el rendimiento de Million.js con el de React.\n\n<br />\n\n<Demo />\n\n## ¿Alguna pregunta?\n\nSi tienes alguna pregunta o necesitas soporte, no dudes en hacerlas en [Discord](https://million.dev/chat) o abrir un *issue* en [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/docs/introduction.fr-FR.mdx",
    "content": "import { Disclosures } from '../../components/home/faq';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport Link from 'next/link';\nimport dynamic from 'next/dynamic';\n\nexport const Demo = dynamic(() =>\n  import('../../components/demo').then((mod) => mod.Demo),\n);\n\n# Introduction\n\nMillion.js is an extremely fast and lightweight optimizing compiler that make [components](https://react.dev) up to [_**70% faster**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n**TL;DR:** Imagine [React](https://react.dev) components running at the speed of raw JavaScript.\n\n## Why Million.js?\n\nTo understand why to use Million.js, we need to understand how React updates interfaces. When an application's state or props change, React undergoes an update in two parts: rendering and reconciliation.\n\nTo show this, let's say this is our `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nIn this `App`, when I click on the button, the `count` state will update and the `<p>` tag will update to reflect the new value. Let's break this down.\n\n### Rendering\n\nThe first step is rendering. Rendering is the process of generating a snapshot of the current component. You can imagine it as simply \"calling\" the `App` function and storing the output in a variable. This is what the `App` snapshot would look like:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliation\n\nIn order to update the interface to reflect the new state, React needs to compare the previous snapshot to the new snapshot (_called \"diffing\"_). React's reconciler will go to each element in the previous snapshot and compare it to the new snapshot. If the element is the same, it will skip it. If the element is different, it will update it.\n\n- The `<div>` tag is the same, so it doesn't need to be updated. ✅\n  - The `<p>` tag is the same, so it doesn't needs to be updated. ✅\n    - The text inside the `<p>` tag is different, so it needs to be updated. ⚠ ️\n  - The `<button>` tag is the same, so it doesn't need to be updated. ✅\n    - The `onClick` prop is the same, so it doesn't need to be updated. ✅\n    - The text inside the `<button>` tag is the same, so it doesn't need to be updated. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nFrom here, we can see that the `<p>` tag needs to be updated. React will then update the `<p>` DOM node to reflect the new value.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### How Million.js makes this faster\n\nReact is slow.\n\nThe issue with React's reconciliation it becomes **exponentially slower** the more JSX elements you have. With this simple `App`, it only needs to diff a few elements. In a real world React app, you can easily have hundreds of elements, slowing down interface updates.\n\nMillion.js solves this by **skipping the diffing step entirely** and directly updating the DOM node.\n\nHere is a conceptual example of how Million.js reconciler works:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generated by compiler\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nNotice how when the `count` is updated, Million.js will directly update the DOM node. Million.js turns React reconciliation from `O(n^3)` (cubic time) to `O(1)` (constant time).\n\n> How fast is it? [**→ View the benchmarks**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Setup in seconds\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Million.js vs. React\n\nThe following is a comprehensive demo using [key-based\nrendering](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key)\nto show how Million.js performance compares to React.\n\n<br />\n\n<Demo />\n\n## Any questions?\n\nIf you have any questions or need support, please feel free to ask them in [Discord](https://million.dev/chat) or submit an issue on [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/docs/introduction.zh-CN.mdx",
    "content": "import { Disclosures } from '../../components/home/faq';\nimport { Callout, Tab, Tabs } from 'nextra-theme-docs';\nimport Link from 'next/link';\nimport dynamic from 'next/dynamic';\n\nexport const Demo = dynamic(() =>\n  import('../../components/demo').then((mod) => mod.Demo),\n);\n\n# Introduction\n\nMillion.js is an extremely fast and lightweight optimizing compiler that make [components](https://react.dev) up to [_**70% faster**_](https://krausest.github.io/js-framework-benchmark/current.html).\n\n**TL;DR:** Imagine [React](https://react.dev) components running at the speed of raw JavaScript.\n\n## Why Million.js?\n\nTo understand why to use Million.js, we need to understand how React updates interfaces. When an application's state or props change, React undergoes an update in two parts: rendering and reconciliation.\n\nTo show this, let's say this is our `App`:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n  return (\n    <div>\n      <p>Count: {count}</p>\n      <button onClick={increment}>Increment</button>\n    </div>\n  );\n}\n```\n\nIn this `App`, when I click on the button, the `count` state will update and the `<p>` tag will update to reflect the new value. Let's break this down.\n\n### Rendering\n\nThe first step is rendering. Rendering is the process of generating a snapshot of the current component. You can imagine it as simply \"calling\" the `App` function and storing the output in a variable. This is what the `App` snapshot would look like:\n\n```jsx\nconst snapshot = App();\n\n// snapshot =\n<div>\n  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>;\n```\n\n### Reconciliation\n\nIn order to update the interface to reflect the new state, React needs to compare the previous snapshot to the new snapshot (_called \"diffing\"_). React's reconciler will go to each element in the previous snapshot and compare it to the new snapshot. If the element is the same, it will skip it. If the element is different, it will update it.\n\n- The `<div>` tag is the same, so it doesn't need to be updated. ✅\n  - The `<p>` tag is the same, so it doesn't needs to be updated. ✅\n    - The text inside the `<p>` tag is different, so it needs to be updated. ⚠ ️\n  - The `<button>` tag is the same, so it doesn't need to be updated. ✅\n    - The `onClick` prop is the same, so it doesn't need to be updated. ✅\n    - The text inside the `<button>` tag is the same, so it doesn't need to be updated. ✅\n\n_(total: 6 diff checks)_\n\n```diff\n<div>\n-  <p>Count: 0</p>\n+  <p>Count: 1</p>\n  <button onClick={increment}>Increment</button>\n</div>\n```\n\nFrom here, we can see that the `<p>` tag needs to be updated. React will then update the `<p>` DOM node to reflect the new value.\n\n```jsx\n<p>.innerHTML = `Count: ${count}`;\n```\n\n### How Million.js makes this faster\n\nReact is slow.\n\nThe issue with React's reconciliation it becomes **exponentially slower** the more JSX elements you have. With this simple `App`, it only needs to diff a few elements. In a real world React app, you can easily have hundreds of elements, slowing down interface updates.\n\nMillion.js solves this by **skipping the diffing step entirely** and directly updating the DOM node.\n\nHere is a conceptual example of how Million.js reconciler works:\n\n```jsx\nfunction App() {\n  const [count, setCount] = useState(0);\n  const increment = () => setCount(count + 1);\n\n  // generated by compiler\n  if (count !== prevCount) {\n    <p>.innerHTML = `Count: ${count}`;\n  }\n\n  <button>.onclick = increment;\n\n  // ...\n}\n```\n\nNotice how when the `count` is updated, Million.js will directly update the DOM node. Million.js turns React reconciliation from `O(n^3)` (cubic time) to `O(1)` (constant time).\n\n> How fast is it? [**→ View the benchmarks**](https://krausest.github.io/js-framework-benchmark/current.html)\n\n## Setup in seconds\n\nThe Million.js CLI will automatically install the package and configure your project for you.\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpx million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add million@latest\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bunx million@latest\n  ```\n  </Tab>\n</Tabs>\n\n<Callout type=\"info\">\n  Million.js is compatible with React 16 and above. If you're using an older\n  version of React, you'll need to upgrade first.\n</Callout>\n\nThat's it! Your project is now running on Million.js 🎉\n\n## Million.js vs. React\n\nThe following is a comprehensive demo using [key-based\nrendering](https://react.dev/learn/rendering-lists#keeping-list-items-in-order-with-key)\nto show how Million.js performance compares to React.\n\n<br />\n\n<Demo />\n\n## Any questions?\n\nIf you have any questions or need support, please feel free to ask them in [Discord](https://million.dev/chat) or submit an issue on [GitHub](https://github.com/aidenybai/million).\n"
  },
  {
    "path": "website/pages/docs/manual-mode/_meta.en-US.json",
    "content": "{\n  \"block\": \"block()\",\n  \"manual-mode\": \"Manual Mode Tutorial\",\n  \"for\": \"<For>\",\n  \"virtualization\": \"Virtualization\"\n}\n"
  },
  {
    "path": "website/pages/docs/manual-mode/_meta.es-ES.json",
    "content": "{\n  \"block\": \"block()\",\n  \"manual-mode\": \"Modo Manual - Tutorial\",\n  \"for\": \"<For>\",\n  \"virtualization\": \"Virtualización\"\n}\n"
  },
  {
    "path": "website/pages/docs/manual-mode/_meta.fr-FR.json",
    "content": "{\n  \"block\": \"block()\",\n  \"manual-mode\": \"Manual Mode Tutorial\",\n  \"for\": \"<For>\",\n  \"virtualization\": \"Virtualization\"\n}\n"
  },
  {
    "path": "website/pages/docs/manual-mode/_meta.zh-CN.json",
    "content": "{\n  \"block\": \"block()\",\n  \"manual-mode\": \"Manual Mode Tutorial\",\n  \"for\": \"<For>\",\n  \"virtualization\": \"Virtualization\"\n}\n"
  },
  {
    "path": "website/pages/docs/manual-mode/block.en-US.mdx",
    "content": "---\ntitle: 'block()'\ndescription: 'Million.js introduces the concept of a Block. Blocks are a way for React components to be rendered using the Million.js virtual DOM.'\n---\n\nimport { Callout, Tabs, Tab } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n<AutomaticModeWarning />\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nMillion.js is a library that enables you to create _blocks_. A block is a special [Higher Order Component (HOC)](https://legacy.reactjs.org/docs/higher-order-components.html) that can be used as a React component but is hyper-optimized for rendering speed.\n\nBlocks are essentially components wrapped by `block(){:jsx}`.\n\n<Tabs items={['Javascript', 'Typescript',]} storageKey=\"selected-language\">\n  <Tab>\n    ```jsx\n    import { block } from 'million/react';\n\n    const LionBlock = block(function Lion() {\n      return <img src=\"https://million.dev/lion.svg\" />;\n    });\n\n    export default LionBlock;\n    ```\n\n  </Tab>\n\n  <Tab>\n    <Callout type=\"info\">\n    You must make your Props use `type` instead of `interface`, as this is the [officially recognized\n    behavior](https://github.com/microsoft/TypeScript/issues/15300#issuecomment-332366024)\n    by the TypeScript team. Alternatively, if you want to use interfaces you can\n    add `[key: string]: any` as per [this Stack Overflow\n    comment](https://stackoverflow.com/questions/37006008/typescript-index-signature-is-missing-in-type/65473225#65473225).\n\n    </Callout>\n\n    ```jsx\n    type Props = {\n      name: string,\n    };\n\n    const Lion: React.FC<Props> = ({ name }) => {\n      return (\n        <div>Hello {name}</div>\n        <img src=\"https://million.dev/lion.svg\" />;\n      )\n    };\n    const LionBlock = block(Lion);\n\n    export default LionBlock;\n\n    ```\n\n  </Tab>\n</Tabs>\n\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\nimport { block } from 'million/react';\n\nconst LionBlock = block(\n  function Lion() {\n    return <img src=\"https://million.dev/lion.svg\" />;\n  },\n  { as: 'div' },\n);\n```\n\n## Using Block With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\nconst NoSSRBlock = block(\n  function NoSSR() {\n    return <div>{Math.random()}</div>;\n  },\n  { ssr: false },\n);\n```\n\n## Rules of blocks\n\n  <Callout type=\"warning\">\n    <code><strong>\\[Million.js\\]</strong> You did something wrong!</code>\n\n    ```jsx showLineNumbers filename=\"App.jsx\" {2}\n    <div>\n      <YourBlock>Uh oh...</YourBlock>\n                ^\n    </div>\n    ```\n\n  </Callout>\n\nThere are three common reasons you might be seeing it:\n\n1. Breaking [rules of blocks](/docs/manual-mode/block#breaking-rules-of-blocks)\n2. Not [adding the compiler](/docs/manual-mode/block#using-the-compiler)\n3. Encountering [unsupported behavior](/docs/manual-mode/block#unsupported-behavior)\n\n## Breaking Rules of Blocks\n\nYou may have heard of [\"progressive enhancement,\"](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement) which is the idea that tools progressively use features based on what is supported. Similarly, Million.js has \"progressive degradation,\" or the concept that if you use features that are not supported, it will degrade to default React rendering gracefully.\n\nThis section highlights some of the possible warnings you might encounter using blocks. Note that this is not an exhaustive list.\n\n{' '}\n<Callout type=\"info\">\n  This section presents idiomatic patterns to use blocks. It is not a list of\n  errors, your application will still work if you don't follow these patterns.\n</Callout>\n\n### Declaring blocks\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Block needs to be defined as a variable\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have a block that is not declared as a variable. This prevents the compiler from analyzing the block correctly.\n\n```jsx\nconsole.log(block(() => <div />)) // ❌ Wrong\nexport default block(() => <div />) // ❌ Wrong\n\n// 👇👇👇\n\nconst Block = block(() => <div />) // ✅ Correct\nconsole.log(Block);\nexport default Block;\n```\n\n### Calling `block()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Found unsupported argument for block. Make\n    sure blocks consume a reference to a component function or the direct\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have an actual JSX component like `<Component />{:jsx}` passed into the `block(){:jsx}` function instead of a reference to the Component itself.\n\n```jsx\nconst BadBlock = block(<Component />); // ❌ Wrong\n\nconst GoodBlock = block(App); // ✅ Correct\n```\n\n### Using `<For />` instead of `map()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Array.map() will degrade performance. We recommend removing the block on the\n    current component and using a `<For />` component instead\n  </code>\n</Callout>\n\nThe above will occur when you use `<Array>.map` within a block. This is not ideal, especially if the component that holds the list is a block. The right pattern is to remove the block on the current component and use a `<For />` component instead for the children.\n\n```jsx\n<div>\n  {items.map((item) => (\n    <div key={item}>{item}</div>\n  ))}\n</div>\n\n// 👇👇👇\n\n<For each={items}>\n  {(item) => <div key={item}>{item}</div>}\n</For>\n```\n\n### Deterministic returns\n\n  <div className=\"flex gap-3\">\n  <Callout type=\"warning\">\n    <code>\n    <strong>[Million.js]</strong>\n    Conditional expressions will degrade performance. We recommend using\n    deterministic returns instead.\n    </code>\n  </Callout>\n\n  <Callout type=\"error\">\n    <code>\n    Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\n    </code>\n  </Callout>\n  </div>\n\nReturns must be \"deterministic,\" meaning there can only be one return statement at the end of the block that returns a stable tree.\n\nSome examples of non-deterministic returns:\n\n```jsx\nfunction Component() {\n  const [count, setCount] = useState(initial.count);\n\n  if (count > 10) {\n    return <div>Too many clicks!</div>; // ❌ Wrong\n  }\n\n  // ❌ Wrong\n  return count > 5 ? 'Count is greater than 5' : <div>Count is {count}.</div>;\n}\n\nconst ComponentBlock = block(Component);\n```\n\n### UI Component libraries 🙅‍♀️\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Components will cause degraded performance. Ideally, you should use DOM elements\n    instead.\n  </code>\n</Callout>\n\nMany React applications use UI component libraries like Material UI, Chakra UI, or Tailwind UI. These libraries are great, but they are not optimized for Million.js.\n\nMillion.js requires that you use DOM elements instead of components. This is because components can introduce non-deterministic returns, which can cause degraded performance.\n\n```jsx\n// ❌ Bad\n<Stack>\n  <Text>What's up my fellow components</Text>\n</Stack>\n\n// 🤨 Maybe\n<div>\n  <Text>What's up my fellow components</Text>\n</div>\n\n// ✅ Good\n<div>\n  <p>What's up my fellow components</p>\n</div>\n```\n\n### Spread attributes/children\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Spread attributes/children are not fully supported\n  </code>\n</Callout>\n\nYou can't use spread attributes/children that change safely or reference a binding within the component inside Million.js, as they can introduce non-deterministic returns.\n\n```jsx\nconst arr = ['Hello'];\n\n<div>{...arr}</div>; // Ok if arr never changes\n\n// ❌ Bad\narr.push('World');\n```\n\n### Unsupported import\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>[Million.js]</strong>\n    Found unsupported import for block. Make sure blocks are imported from million/react.\n  </code>\n</Callout>\n\nThis may be caused by importing the block from the wrong place. Make sure you import the block from `million/react` instead of `million`.\n\n```jsx\nimport { block } from 'million'; // ❌ Wrong\n\nimport { block } from 'million/react'; // ✅ Correct\n```\n\n### Using the compiler\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>Warning: </strong>\n    Invalid Hook Call. Hooks can only be called inside of the body of a function\n    component.\n  </code>\n</Callout>\n\nYou may have forgot to use the compiler, a necessary part in ensuring that your JSX is compiled to Million.js compatible code. You can view the instructions at [the installation guide](/docs/getting-started/install).\n\nOn a side note, Million.js is technically usable without the compiler, but it's significantly more limited in scope, and there is a more limited set of features available. This is not recommended.\n\n### Unsupported behavior\n\n{' '}\n<Callout type=\"error\">\n  <code>Uncaught Error: ??? :(</code>\n</Callout>\n\nIf none of this worked, please [create an issue](https://github.com/aidenybai/million/issues/new?assignees=aidenybai&labels=bug&projects=&template=bug_report.md&title=bug%3A+) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.\n"
  },
  {
    "path": "website/pages/docs/manual-mode/block.es-ES.mdx",
    "content": "---\ntitle: 'block()'\ndescription: 'Million.js presenta el concepto de Bloque. Los Bloques son una forma de que los componentes de React se representen utilizando el DOM virtual de Million.js.'\n---\n\nimport { Callout, Tabs, Tab } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n<AutomaticModeWarning />\n\n# `block(){:jsx}`\n\n**Sintaxis:** `block((props) => vnode){:jsx}`\\\n**Ejemplo:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nMillion.js es una biblioteca que te permite crear _bloques_ (blocks). Un bloque es un [Componente de Orden Superior (HOC, por sus siglas en inglés)](https://legacy.reactjs.org/docs/higher-order-components.html) especial que se puede utilizar como un componente de React, pero está hiperoptimizado para la velocidad de renderización.\n\nLos bloques (blocks) son esencialmente componentes envueltos por `block(){:jsx}`.\n\n<Tabs items={['Javascript', 'Typescript',]} storageKey=\"selected-language\">\n  <Tab>\n    ```jsx\n    import { block } from 'million/react';\n\n    const LionBlock = block(function Lion() {\n      return <img src=\"https://million.dev/lion.svg\" />;\n    });\n\n    export default LionBlock;\n    ```\n\n  </Tab>\n\n  <Tab>\n    <Callout type=\"info\">\n      Debes hacer que tus Props utilicen `type` en lugar de `interface`, ya que este es el [comportamiento oficialmente reconocido](https://github.com/microsoft/TypeScript/issues/15300#issuecomment-332366024) por el equipo de TypeScript.\n      Como alternativa, si deseas utilizar interfaces, puedes agregar `[key: string]: any` según este [comentario en Stack Overflow](https://stackoverflow.com/questions/37006008/typescript-index-signature-is-missing-in-type/65473225#65473225).\n    </Callout>\n\n    ```jsx\n    type Props = {\n      nombre: string,\n    };\n\n    const Lion: React.FC<Props> = ({ nombre }) => {\n      return (\n        <div>Hola {nombre}</div>\n        <img src=\"https://million.dev/lion.svg\" />;\n      )\n    };\n    const LionBlock = block(Lion);\n\n    export default LionBlock;\n\n    ```\n\n  </Tab>\n</Tabs>\n\n\n## Etiquetas Personalizadas\n\nLa propiedad `as` se puede utilizar para especificar el nombre de la etiqueta de For. Por defecto, es `slot`.\n\n```jsx\nimport { block } from 'million/react';\n\nconst LionBlock = block(\n  function Lion() {\n    return <img src=\"https://million.dev/lion.svg\" />;\n  },\n  { as: 'div' },\n);\n```\n\n## Utilizando Block con SSR (Renderización del Lado del Servidor)\n\nSi estás utilizando Million.js en el servidor, es posible que te encuentres con un error de desincronización en la hidratación (hydration mismatch error).\nEsto se debe a que Million.js utiliza un algoritmo diferente para la representación en el servidor que en el cliente. Para solucionarlo, puedes desactivar la renderización del lado del servidor (SSR).\n\n```jsx\nconst NoSSRBlock = block(\n  function NoSSR() {\n    return <div>{Math.random()}</div>;\n  },\n  { ssr: false },\n);\n```\n\n## Reglas de los bloques\n\n  <Callout type=\"warning\">\n    <code><strong>\\[Million.js\\]</strong> You did something wrong!</code>\n\n    ```jsx showLineNumbers filename=\"App.jsx\" {2}\n    <div>\n      <YourBlock>Uh oh...</YourBlock>\n                ^\n    </div>\n    ```\n\n  </Callout>\n\nHay tres razones comunes por las que podrías estar viendo este error:\n\n1. Romper las [reglas de los bloques](/docs/manual-mode/block#breaking-rules-of-blocks)\n2. No [agregar el compilador](/docs/manual-mode/block#using-the-compiler)\n3. Encontrarse con [comportamientos no soportados](/docs/manual-mode/block#unsupported-behavior)\n\n## Rompiendo las reglas de los Bloques\n\n\nPuede que hayas oído hablar de [\"mejora progresiva\" (\"progressive enhancement\" en ingles)](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement), que es la idea de que las herramientas utilizan progresivamente funciones según lo que esté soportado. De manera similar, Million.js tiene \"degradación progresiva\" o el concepto de que si utilizas funciones que no están soportadas, se degradará a la renderización predeterminada de React.\n\nEsta sección destaca algunas de las posibles advertencias que podrías encontrar al utilizar bloques. Ten en cuenta que esta lista no es exhaustiva.\n\n{' '}\n<Callout type=\"info\">\n  Esta sección presenta patrones idiomáticos para usar bloques.\n  No es una lista de errores; tu aplicación seguirá funcionando aunque no sigas estos patrones.\n</Callout>\n\n### Declarando bloques\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Block needs to be defined as a variable\n    declaration.\n  </code>\n</Callout>\n\nLo anterior suele ocurrir cuando tienes un bloque que no está declarado como una variable. Esto evita que el compilador analice correctamente el bloque.\n\n```jsx\nconsole.log(block(() => <div />)) // ❌ Incorrecto\nexport default block(() => <div />) // ❌ Incorrecto\n\n// 👇👇👇\n\nconst Block = block(() => <div />) // ✅ Correcto\nconsole.log(Block);\nexport default Block;\n```\n\n### Llamando a `block()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Found unsupported argument for block. Make\n    sure blocks consume a reference to a component function or the direct\n    declaration.\n  </code>\n</Callout>\n\nLo anterior suele ocurrir cuando tienes un componente JSX real, como `<Component />{:jsx}`, pasado a la función `block(){:jsx}`, en lugar de pasar una referencia del propio componente.\n\n```jsx\nconst BadBlock = block(<Component />); // ❌ Incorrecto\n\nconst GoodBlock = block(App); // ✅ Correcto\n```\n\n### Usando `<For />` en vez de `map()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Array.map() will degrade performance. We recommend removing the block on the\n    current component and using a `<For />` component instead\n  </code>\n</Callout>\n\nLo anterior ocurrirá cuando uses `<Array>.map` dentro de un bloque. Esto no es ideal, especialmente si el componente que contiene la lista es un bloque. El patrón correcto es eliminar el bloque en el componente actual y, en su lugar, utilizar un componente `<For />` para los elementos hijos.\n\n```jsx\n<div>\n  {items.map((item) => (\n    <div key={item}>{item}</div>\n  ))}\n</div>\n\n// 👇👇👇\n\n<For each={items}>\n  {(item) => <div key={item}>{item}</div>}\n</For>\n```\n\n### Resultados determinísticos\n\n  <div className=\"flex gap-3\">\n  <Callout type=\"warning\">\n    <code>\n    <strong>[Million.js]</strong>\n    Conditional expressions will degrade performance. We recommend using\n    deterministic returns instead.\n    </code>\n  </Callout>\n\n  <Callout type=\"error\">\n    <code>\n    Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\n    </code>\n  </Callout>\n  </div>\n\n\nLas devoluciones (\"returns\" en inglés) deben ser \"determinísticas\", lo que significa que solo puede haber una declaración de retorno al final del bloque que devuelva un árbol estable.\n\nAlgunos ejemplos de devoluciones no determinísticas:\n\n```jsx\nfunction Component() {\n  const [count, setCount] = useState(initial.count);\n\n  if (count > 10) {\n    return <div>Too many clicks!</div>; // ❌ Incorrecto\n  }\n\n  // ❌ Incorrecto\n  return count > 5 ? 'Count is greater than 5' : <div>Count is {count}.</div>;\n}\n\nconst ComponentBlock = block(Component);\n```\n\n### Librerías de componentes UI 🙅‍♀️\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Components will cause degraded performance. Ideally, you should use DOM elements\n    instead.\n  </code>\n</Callout>\n\nMuchas aplicaciones de React utilizan librerías de componentes UI de usuario como Material UI, Chakra UI o Tailwind UI. Estas bibliotecas son excelentes, pero no están optimizadas para Million.js.\n\nMillion.js requiere que uses elementos del DOM en lugar de componentes. Esto se debe a que los componentes pueden introducir devoluciones no determinísticas, lo que puede provocar un rendimiento degradado.\n\n```jsx\n// ❌ Mal\n<Stack>\n  <Text>¡Hola! ¿Cómo están mis compañeros componentes?</Text>\n</Stack>\n\n// 🤨 Quizás\n<div>\n  <Text>¡Hola! ¿Cómo están mis compañeros componentes?</Text>\n</div>\n\n// ✅ Bien\n<div>\n  <p>¡Hola! ¿Cómo están mis compañeros componentes?</p>\n</div>\n```\n\n### Spread attributes/children\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Spread attributes/children are not fully supported\n  </code>\n</Callout>\n\nNo puedes utilizar atributos o elementos hijos que cambien de manera segura, ni hacer referencia a un enlace (\"binding\" en inglés) dentro del componente en Million.js, ya que pueden introducir devoluciones no determinísticas.\n\n```jsx\nconst arr = ['Hello'];\n\n<div>{...arr}</div>; // Bien si el array nunca cambia\n\n// ❌ Mal\narr.push('World');\n```\n\n### Importación no compatible\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>[Million.js]</strong>\n    Found unsupported import for block. Make sure blocks are imported from million/react.\n  </code>\n</Callout>\n\nEsto podría deberse a que estás importando el bloque desde el lugar incorrecto. Asegúrate de importar el bloque desde `million/react` en lugar de `million`.\n\n```jsx\nimport { block } from 'million'; // ❌ Incorrecto\n\nimport { block } from 'million/react'; // ✅ Correcto\n```\n\n### Using the compiler\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>Warning: </strong>\n    Invalid Hook Call. Hooks can only be called inside of the body of a function\n    component.\n  </code>\n</Callout>\n\nPuede que hayas olvidado usar el compilador, una parte necesaria para asegurarte de que tu JSX se compile a código compatible con Million.js. Puedes ver las instrucciones en la [guía de instalación](/docs/getting-started/install).\n\nCabe destacar que Million.js es técnicamente utilizable sin el compilador, pero su alcance es significativamente más limitado y hay un conjunto más reducido de funcionalidades disponibles. Por lo cual no es recomendado.\n\n### Comportamiento no compatible\n\n{' '}\n<Callout type=\"error\">\n  <code>Uncaught Error: ??? :(</code>\n</Callout>\n\n\nSi ninguno de estos pasos funcionó, por favor [crea un \"issue\"](https://github.com/aidenybai/million/issues/new?assignees=aidenybai&labels=bug&projects=&template=bug_report.md&title=bug%3A+) y trataremos de ayudarte. Intenta crear un ejemplo pequeño que reproduzca el problema; es posible que encuentres la solución mientras lo haces.\"\n"
  },
  {
    "path": "website/pages/docs/manual-mode/block.fr-FR.mdx",
    "content": "---\ntitle: 'block()'\ndescription: 'Million.js introduces the concept of a Block. Blocks are a way for React components to be rendered using the Million.js virtual DOM.'\n---\n\nimport { Callout, Tabs, Tab } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n<AutomaticModeWarning />\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nMillion.js is a library that enables you to create _blocks_. A block is a special [Higher Order Component (HOC)](https://legacy.reactjs.org/docs/higher-order-components.html) that can be used as a React component but is hyper-optimized for rendering speed.\n\nBlocks are essentially components wrapped by `block(){:jsx}`.\n\n<Tabs items={['Javascript', 'Typescript',]} storageKey=\"selected-language\">\n  <Tab>\n    ```jsx\n    import { block } from 'million/react';\n\n    const LionBlock = block(function Lion() {\n      return <img src=\"https://million.dev/lion.svg\" />;\n    });\n\n    export default LionBlock;\n    ```\n\n  </Tab>\n\n  <Tab>\n    <Callout type=\"info\">\n    You must make your Props use `type` instead of `interface`, as this is the [officially recognized\n    behavior](https://github.com/microsoft/TypeScript/issues/15300#issuecomment-332366024)\n    by the TypeScript team. Alternatively, if you want to use interfaces you can\n    add `[key: string]: any` as per [this Stack Overflow\n    comment](https://stackoverflow.com/questions/37006008/typescript-index-signature-is-missing-in-type/65473225#65473225).\n\n    </Callout>\n\n    ```jsx\n    type Props = {\n      name: string,\n    };\n\n    const Lion: React.FC<Props> = ({ name }) => {\n      return (\n        <div>Hello {name}</div>\n        <img src=\"https://million.dev/lion.svg\" />;\n      )\n    };\n    const LionBlock = block(Lion);\n\n    export default LionBlock;\n\n    ```\n\n  </Tab>\n</Tabs>\n\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\nimport { block } from 'million/react';\n\nconst LionBlock = block(\n  function Lion() {\n    return <img src=\"https://million.dev/lion.svg\" />;\n  },\n  { as: 'div' },\n);\n```\n\n## Using Block With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\nconst NoSSRBlock = block(\n  function NoSSR() {\n    return <div>{Math.random()}</div>;\n  },\n  { ssr: false },\n);\n```\n\n## Rules of blocks\n\n  <Callout type=\"warning\">\n    <code><strong>\\[Million.js\\]</strong> You did something wrong!</code>\n\n    ```jsx showLineNumbers filename=\"App.jsx\" {2}\n    <div>\n      <YourBlock>Uh oh...</YourBlock>\n                ^\n    </div>\n    ```\n\n  </Callout>\n\nThere are three common reasons you might be seeing it:\n\n1. Breaking [rules of blocks](/docs/manual-mode/block#breaking-rules-of-blocks)\n2. Not [adding the compiler](/docs/manual-mode/block#using-the-compiler)\n3. Encountering [unsupported behavior](/docs/manual-mode/block#unsupported-behavior)\n\n## Breaking Rules of Blocks\n\nYou may have heard of [\"progressive enhancement,\"](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement) which is the idea that tools progressively use features based on what is supported. Similarly, Million.js has \"progressive degradation,\" or the concept that if you use features that are not supported, it will degrade to default React rendering gracefully.\n\nThis section highlights some of the possible warnings you might encounter using blocks. Note that this is not an exhaustive list.\n\n{' '}\n<Callout type=\"info\">\n  This section presents idiomatic patterns to use blocks. It is not a list of\n  errors, your application will still work if you don't follow these patterns.\n</Callout>\n\n### Declaring blocks\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Block needs to be defined as a variable\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have a block that is not declared as a variable. This prevents the compiler from analyzing the block correctly.\n\n```jsx\nconsole.log(block(() => <div />)) // ❌ Wrong\nexport default block(() => <div />) // ❌ Wrong\n\n// 👇👇👇\n\nconst Block = block(() => <div />) // ✅ Correct\nconsole.log(Block);\nexport default Block;\n```\n\n### Calling `block()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Found unsupported argument for block. Make\n    sure blocks consume a reference to a component function or the direct\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have an actual JSX component like `<Component />{:jsx}` passed into the `block(){:jsx}` function instead of a reference to the Component itself.\n\n```jsx\nconst BadBlock = block(<Component />); // ❌ Wrong\n\nconst GoodBlock = block(App); // ✅ Correct\n```\n\n### Using `<For />` instead of `map()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Array.map() will degrade performance. We recommend removing the block on the\n    current component and using a `<For />` component instead\n  </code>\n</Callout>\n\nThe above will occur when you use `<Array>.map` within a block. This is not ideal, especially if the component that holds the list is a block. The right pattern is to remove the block on the current component and use a `<For />` component instead for the children.\n\n```jsx\n<div>\n  {items.map((item) => (\n    <div key={item}>{item}</div>\n  ))}\n</div>\n\n// 👇👇👇\n\n<For each={items}>\n  {(item) => <div key={item}>{item}</div>}\n</For>\n```\n\n### Deterministic returns\n\n  <div className=\"flex gap-3\">\n  <Callout type=\"warning\">\n    <code>\n    <strong>[Million.js]</strong>\n    Conditional expressions will degrade performance. We recommend using\n    deterministic returns instead.\n    </code>\n  </Callout>\n\n  <Callout type=\"error\">\n    <code>\n    Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\n    </code>\n  </Callout>\n  </div>\n\nReturns must be \"deterministic,\" meaning there can only be one return statement at the end of the block that returns a stable tree.\n\nSome examples of non-deterministic returns:\n\n```jsx\nfunction Component() {\n  const [count, setCount] = useState(initial.count);\n\n  if (count > 10) {\n    return <div>Too many clicks!</div>; // ❌ Wrong\n  }\n\n  // ❌ Wrong\n  return count > 5 ? 'Count is greater than 5' : <div>Count is {count}.</div>;\n}\n\nconst ComponentBlock = block(Component);\n```\n\n### UI Component libraries 🙅‍♀️\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Components will cause degraded performance. Ideally, you should use DOM elements\n    instead.\n  </code>\n</Callout>\n\nMany React applications use UI component libraries like Material UI, Chakra UI, or Tailwind UI. These libraries are great, but they are not optimized for Million.js.\n\nMillion.js requires that you use DOM elements instead of components. This is because components can introduce non-deterministic returns, which can cause degraded performance.\n\n```jsx\n// ❌ Bad\n<Stack>\n  <Text>What's up my fellow components</Text>\n</Stack>\n\n// 🤨 Maybe\n<div>\n  <Text>What's up my fellow components</Text>\n</div>\n\n// ✅ Good\n<div>\n  <p>What's up my fellow components</p>\n</div>\n```\n\n### Spread attributes/children\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Spread attributes/children are not fully supported\n  </code>\n</Callout>\n\nYou can't use spread attributes/children that change safely or reference a binding within the component inside Million.js, as they can introduce non-deterministic returns.\n\n```jsx\nconst arr = ['Hello'];\n\n<div>{...arr}</div>; // Ok if arr never changes\n\n// ❌ Bad\narr.push('World');\n```\n\n### Unsupported import\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>[Million.js]</strong>\n    Found unsupported import for block. Make sure blocks are imported from million/react.\n  </code>\n</Callout>\n\nThis may be caused by importing the block from the wrong place. Make sure you import the block from `million/react` instead of `million`.\n\n```jsx\nimport { block } from 'million'; // ❌ Wrong\n\nimport { block } from 'million/react'; // ✅ Correct\n```\n\n### Using the compiler\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>Warning: </strong>\n    Invalid Hook Call. Hooks can only be called inside of the body of a function\n    component.\n  </code>\n</Callout>\n\nYou may have forgot to use the compiler, a necessary part in ensuring that your JSX is compiled to Million.js compatible code. You can view the instructions at [the installation guide](/docs/getting-started/install).\n\nOn a side note, Million.js is technically usable without the compiler, but it's significantly more limited in scope, and there is a more limited set of features available. This is not recommended.\n\n### Unsupported behavior\n\n{' '}\n<Callout type=\"error\">\n  <code>Uncaught Error: ??? :(</code>\n</Callout>\n\nIf none of this worked, please [create an issue](https://github.com/aidenybai/million/issues/new?assignees=aidenybai&labels=bug&projects=&template=bug_report.md&title=bug%3A+) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.\n"
  },
  {
    "path": "website/pages/docs/manual-mode/block.zh-CN.mdx",
    "content": "---\ntitle: 'block()'\ndescription: 'Million.js introduces the concept of a Block. Blocks are a way for React components to be rendered using the Million.js virtual DOM.'\n---\n\nimport { Callout, Tabs, Tab } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n<AutomaticModeWarning />\n\n# `block(){:jsx}`\n\n**Syntax:** `block((props) => vnode){:jsx}`\\\n**Example:** `block((props) => <div>{props.foo}</div>){:jsx}`\n\nMillion.js is a library that enables you to create _blocks_. A block is a special [Higher Order Component (HOC)](https://legacy.reactjs.org/docs/higher-order-components.html) that can be used as a React component but is hyper-optimized for rendering speed.\n\nBlocks are essentially components wrapped by `block(){:jsx}`.\n\n<Tabs items={['Javascript', 'Typescript',]} storageKey=\"selected-language\">\n  <Tab>\n    ```jsx\n    import { block } from 'million/react';\n\n    const LionBlock = block(function Lion() {\n      return <img src=\"https://million.dev/lion.svg\" />;\n    });\n\n    export default LionBlock;\n    ```\n\n  </Tab>\n\n  <Tab>\n    <Callout type=\"info\">\n    You must make your Props use `type` instead of `interface`, as this is the [officially recognized\n    behavior](https://github.com/microsoft/TypeScript/issues/15300#issuecomment-332366024)\n    by the TypeScript team. Alternatively, if you want to use interfaces you can\n    add `[key: string]: any` as per [this Stack Overflow\n    comment](https://stackoverflow.com/questions/37006008/typescript-index-signature-is-missing-in-type/65473225#65473225).\n\n    </Callout>\n\n    ```jsx\n    type Props = {\n      name: string,\n    };\n\n    const Lion: React.FC<Props> = ({ name }) => {\n      return (\n        <div>Hello {name}</div>\n        <img src=\"https://million.dev/lion.svg\" />;\n      )\n    };\n    const LionBlock = block(Lion);\n\n    export default LionBlock;\n\n    ```\n\n  </Tab>\n</Tabs>\n\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\nimport { block } from 'million/react';\n\nconst LionBlock = block(\n  function Lion() {\n    return <img src=\"https://million.dev/lion.svg\" />;\n  },\n  { as: 'div' },\n);\n```\n\n## Using Block With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\nconst NoSSRBlock = block(\n  function NoSSR() {\n    return <div>{Math.random()}</div>;\n  },\n  { ssr: false },\n);\n```\n\n## Rules of blocks\n\n  <Callout type=\"warning\">\n    <code><strong>\\[Million.js\\]</strong> You did something wrong!</code>\n\n    ```jsx showLineNumbers filename=\"App.jsx\" {2}\n    <div>\n      <YourBlock>Uh oh...</YourBlock>\n                ^\n    </div>\n    ```\n\n  </Callout>\n\nThere are three common reasons you might be seeing it:\n\n1. Breaking [rules of blocks](/docs/manual-mode/block#breaking-rules-of-blocks)\n2. Not [adding the compiler](/docs/manual-mode/block#using-the-compiler)\n3. Encountering [unsupported behavior](/docs/manual-mode/block#unsupported-behavior)\n\n## Breaking Rules of Blocks\n\nYou may have heard of [\"progressive enhancement,\"](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement) which is the idea that tools progressively use features based on what is supported. Similarly, Million.js has \"progressive degradation,\" or the concept that if you use features that are not supported, it will degrade to default React rendering gracefully.\n\nThis section highlights some of the possible warnings you might encounter using blocks. Note that this is not an exhaustive list.\n\n{' '}\n<Callout type=\"info\">\n  This section presents idiomatic patterns to use blocks. It is not a list of\n  errors, your application will still work if you don't follow these patterns.\n</Callout>\n\n### Declaring blocks\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Block needs to be defined as a variable\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have a block that is not declared as a variable. This prevents the compiler from analyzing the block correctly.\n\n```jsx\nconsole.log(block(() => <div />)) // ❌ Wrong\nexport default block(() => <div />) // ❌ Wrong\n\n// 👇👇👇\n\nconst Block = block(() => <div />) // ✅ Correct\nconsole.log(Block);\nexport default Block;\n```\n\n### Calling `block()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong> Found unsupported argument for block. Make\n    sure blocks consume a reference to a component function or the direct\n    declaration.\n  </code>\n</Callout>\n\nThe above usually occurs when you have an actual JSX component like `<Component />{:jsx}` passed into the `block(){:jsx}` function instead of a reference to the Component itself.\n\n```jsx\nconst BadBlock = block(<Component />); // ❌ Wrong\n\nconst GoodBlock = block(App); // ✅ Correct\n```\n\n### Using `<For />` instead of `map()`\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Array.map() will degrade performance. We recommend removing the block on the\n    current component and using a `<For />` component instead\n  </code>\n</Callout>\n\nThe above will occur when you use `<Array>.map` within a block. This is not ideal, especially if the component that holds the list is a block. The right pattern is to remove the block on the current component and use a `<For />` component instead for the children.\n\n```jsx\n<div>\n  {items.map((item) => (\n    <div key={item}>{item}</div>\n  ))}\n</div>\n\n// 👇👇👇\n\n<For each={items}>\n  {(item) => <div key={item}>{item}</div>}\n</For>\n```\n\n### Deterministic returns\n\n  <div className=\"flex gap-3\">\n  <Callout type=\"warning\">\n    <code>\n    <strong>[Million.js]</strong>\n    Conditional expressions will degrade performance. We recommend using\n    deterministic returns instead.\n    </code>\n  </Callout>\n\n  <Callout type=\"error\">\n    <code>\n    Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\n    </code>\n  </Callout>\n  </div>\n\nReturns must be \"deterministic,\" meaning there can only be one return statement at the end of the block that returns a stable tree.\n\nSome examples of non-deterministic returns:\n\n```jsx\nfunction Component() {\n  const [count, setCount] = useState(initial.count);\n\n  if (count > 10) {\n    return <div>Too many clicks!</div>; // ❌ Wrong\n  }\n\n  // ❌ Wrong\n  return count > 5 ? 'Count is greater than 5' : <div>Count is {count}.</div>;\n}\n\nconst ComponentBlock = block(Component);\n```\n\n### UI Component libraries 🙅‍♀️\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Components will cause degraded performance. Ideally, you should use DOM elements\n    instead.\n  </code>\n</Callout>\n\nMany React applications use UI component libraries like Material UI, Chakra UI, or Tailwind UI. These libraries are great, but they are not optimized for Million.js.\n\nMillion.js requires that you use DOM elements instead of components. This is because components can introduce non-deterministic returns, which can cause degraded performance.\n\n```jsx\n// ❌ Bad\n<Stack>\n  <Text>What's up my fellow components</Text>\n</Stack>\n\n// 🤨 Maybe\n<div>\n  <Text>What's up my fellow components</Text>\n</div>\n\n// ✅ Good\n<div>\n  <p>What's up my fellow components</p>\n</div>\n```\n\n### Spread attributes/children\n\n{' '}\n<Callout type=\"warning\">\n  <code>\n    <strong>[Million.js]</strong>\n    Spread attributes/children are not fully supported\n  </code>\n</Callout>\n\nYou can't use spread attributes/children that change safely or reference a binding within the component inside Million.js, as they can introduce non-deterministic returns.\n\n```jsx\nconst arr = ['Hello'];\n\n<div>{...arr}</div>; // Ok if arr never changes\n\n// ❌ Bad\narr.push('World');\n```\n\n### Unsupported import\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>[Million.js]</strong>\n    Found unsupported import for block. Make sure blocks are imported from million/react.\n  </code>\n</Callout>\n\nThis may be caused by importing the block from the wrong place. Make sure you import the block from `million/react` instead of `million`.\n\n```jsx\nimport { block } from 'million'; // ❌ Wrong\n\nimport { block } from 'million/react'; // ✅ Correct\n```\n\n### Using the compiler\n\n{' '}\n<Callout type=\"error\">\n  <code>\n    <strong>Warning: </strong>\n    Invalid Hook Call. Hooks can only be called inside of the body of a function\n    component.\n  </code>\n</Callout>\n\nYou may have forgot to use the compiler, a necessary part in ensuring that your JSX is compiled to Million.js compatible code. You can view the instructions at [the installation guide](/docs/getting-started/install).\n\nOn a side note, Million.js is technically usable without the compiler, but it's significantly more limited in scope, and there is a more limited set of features available. This is not recommended.\n\n### Unsupported behavior\n\n{' '}\n<Callout type=\"error\">\n  <code>Uncaught Error: ??? :(</code>\n</Callout>\n\nIf none of this worked, please [create an issue](https://github.com/aidenybai/million/issues/new?assignees=aidenybai&labels=bug&projects=&template=bug_report.md&title=bug%3A+) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.\n"
  },
  {
    "path": "website/pages/docs/manual-mode/for.en-US.mdx",
    "content": "---\ntitle: '<For />'\ndescription: 'Learn how to render lists of blocks in Million.'\n---\n\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# `<For>{:jsx}`\n\n<AutomaticModeWarning />\n\n**Syntax:** `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\n**Example:** `<For each={[1, 2, 3]}>{(item) => myBlock({ item })}</For>{:jsx}`\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\nIt's the best way to loop over an array. As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { For } from 'million/react';\n\nfunction App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Add item\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n\nexport default App;\n```\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\n<For each={items} as=\"div\">\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n## Optimizing `<For />` With `memo`\n\nInternally, `<For />` will not reuse blocks in order to avoid unknown behavior. This means that if you have a `<For />` with 1000 items, it will recreate 1000 blocks.\n\nHowever, if you know that your items aren't dependent on any values except the `item` passed to the function, you can use the `memo` prop to tell Million to reuse blocks. This will improve performance and reduce memory usage.\n\n```jsx\n<For each={items} memo>\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n\n\n## Using For With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\n<For each={[Math.random(), Math.random(), Math.random()]} ssr={false}>\n  {(item) => <li>{item}</li>}\n</For>\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/for.es-ES.mdx",
    "content": "---\ntitle: '<For />'\ndescription: 'Aprende a renderizar listas de bloques en Million.'\n---\n\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# `<For>{:jsx}`\n\n<AutomaticModeWarning />\n\n**Sintaxis:** `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\n**Ejemplo:** `<For each={[1, 2, 3]}>{(item) => myBlock({ item })}</For>{:jsx}`\n\nEl componente `<For />{:jsx}` se utiliza para renderizar una lista de bloques (blocks). Acepta un array en la propiedad each y una función como \"elemento\" hijo. La función es llamada una vez por cada elemento (item) que hay en el array y recibe el elemento y su índice como argumentos.\n\nEs la mejor manera de iterar sobre un array. A medida que el array cambia, `<For />{:jsx}` actualiza o mueve los elementos (\"items\" en inglés) en el DOM en lugar de recrearlos. Veamos un ejemplo:\n\n```jsx\nimport { For } from 'million/react';\n\nfunction App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Add item\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n\nexport default App;\n```\n\n## Etiquetas personalizadas\n\nLa propiedad `as` se puede utilizar para especificar el nombre de la etiqueta (elemento HTML) para el componente For. Por defecto, es `slot`.\n\n```jsx\n<For each={items} as=\"div\">\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n## Optimizando `<For />` con `memo`\n\nInternamente, `<For />` no reutilizará bloques para evitar comportamientos desconocidos. Esto significa que si tienes un `<For />` con 1000 elementos, recreará 1000 bloques.\n\nSin embargo, si sabes que tus elementos no dependen de ningún valor excepto el `item` (elemento) pasado a la función, puedes utilizar la propiedad `memo` para indicarle a Million que reutilice bloques. Esto mejorará el rendimiento y reducirá el uso de memoria.\n\n```jsx\n<For each={items} memo>\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n## Usando For con SSR\n\nSi estás utilizando Million.js en el servidor, es posible que te encuentres con un error de inconsistencia en el proceso de hidratación (\"hydration mismatch error\" en inglés). Esto se debe a que Million.js utiliza un algoritmo diferente para renderizar en el servidor que en el cliente. Para solucionar esto, puedes desactivar la renderización del lado del servidor (SSR).\n\n```jsx\n<For each={[Math.random(), Math.random(), Math.random()]} ssr={false}>\n  {(item) => <li>{item}</li>}\n</For>\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/for.fr-FR.mdx",
    "content": "---\ntitle: '<For />'\ndescription: 'Learn how to render lists of blocks in Million.'\n---\n\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# `<For>{:jsx}`\n\n<AutomaticModeWarning />\n\n**Syntax:** `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\n**Example:** `<For each={[1, 2, 3]}>{(item) => myBlock({ item })}</For>{:jsx}`\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\nIt's the best way to loop over an array. As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { For } from 'million/react';\n\nfunction App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Add item\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n\nexport default App;\n```\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\n<For each={items} as=\"div\">\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n## Optimizing `<For />` With `memo`\n\nInternally, `<For />` will not reuse blocks in order to avoid unknown behavior. This means that if you have a `<For />` with 1000 items, it will recreate 1000 blocks.\n\nHowever, if you know that your items aren't dependent on any values except the `item` passed to the function, you can use the `memo` prop to tell Million to reuse blocks. This will improve performance and reduce memory usage.\n\n```jsx\n<For each={items} memo>\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n\n\n## Using For With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\n<For each={[Math.random(), Math.random(), Math.random()]} ssr={false}>\n  {(item) => <li>{item}</li>}\n</For>\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/for.zh-CN.mdx",
    "content": "---\ntitle: '<For />'\ndescription: 'Learn how to render lists of blocks in Million.'\n---\n\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# `<For>{:jsx}`\n\n<AutomaticModeWarning />\n\n**Syntax:** `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\n**Example:** `<For each={[1, 2, 3]}>{(item) => myBlock({ item })}</For>{:jsx}`\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\nIt's the best way to loop over an array. As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\n```jsx\nimport { For } from 'million/react';\n\nfunction App() {\n  const [items, setItems] = useState([1, 2, 3]);\n\n  return (\n    <>\n      <button onClick={() => setItems([...items, items.length + 1])}>\n        Add item\n      </button>\n      <ul>\n        <For each={items}>{(item) => <li>{item}</li>}</For>\n      </ul>\n    </>\n  );\n}\n\nexport default App;\n```\n\n## Custom Tags\n\nThe `as` prop can be used to specify the tag name of the For. By default, it is `slot`.\n\n```jsx\n<For each={items} as=\"div\">\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n## Optimizing `<For />` With `memo`\n\nInternally, `<For />` will not reuse blocks in order to avoid unknown behavior. This means that if you have a `<For />` with 1000 items, it will recreate 1000 blocks.\n\nHowever, if you know that your items aren't dependent on any values except the `item` passed to the function, you can use the `memo` prop to tell Million to reuse blocks. This will improve performance and reduce memory usage.\n\n```jsx\n<For each={items} memo>\n  {(item) => <li>{item}</li>}\n</For>\n```\n\n\n\n## Using For With SSR\n\nIf you are using Million.js on the server, you may encounter a hydration mismatch error. This is because Million.js uses a different algorithm for rendering on the server than it does on the client. To fix this, you can disable SSR.\n\n```jsx\n<For each={[Math.random(), Math.random(), Math.random()]} ssr={false}>\n  {(item) => <li>{item}</li>}\n</For>\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/manual-mode.en-US.mdx",
    "content": "---\ntitle: 'Manual Mode Tutorial'\ndescription: 'Learn how to use Million.js in Manual mode'\n---\n\nimport { Callout, Tabs, Tab, Cards, Card } from 'nextra-theme-docs';\nimport { Box } from '../../../components/box';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\nimport { BrowserView, MobileView } from 'react-device-detect';\nimport { VDomExample } from '../../../components/back-in-block/vdom';\nimport { CombinedBlockExample } from '../../../components/back-in-block/combined-block';\n\n<MobileView>\n\n<Callout type=\"warning\">\n  It is highly recommended you view this documentation on a desktop browser to\n  get access to interactive code examples.\n</Callout>\n\n</MobileView>\n\n# Manual mode Tutorial\n\n<AutomaticModeWarning />\n\nLet's learn how you can integrate Million.js into your React applications.\n\nMillion.js assumes that you're already familiar with and you're using React. If you're not, is is recommended you check out [react.dev](https://react.dev/) first.\n\n<Callout type=\"info\">\n**You will learn:**\n- How to use [`block(){:jsx}`](/docs/manual-mode/block) to convert React components into blocks\n- How to use `<For />{:jsx}` for efficiently rendering lists\n- When to use `block(){:jsx}` and `<For />{:jsx}`\n- The limitations of blocks\n</Callout>\n\nBlocks can be used just like a normal React component:\n\n```jsx {5}\nexport default function App() {\n  return (\n    <div>\n      <h1>mil + LION = million</h1>\n      <LionBlock />\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\nHave a look at the result:\n\n<Box previewOnly code={`\n  import { block } from 'million/react';\n\nfunction Lion() {\nreturn (\n   <img src=\"https://million.dev/lion.svg\" width={200} />\n);\n}\n\nconst LionBlock = block(Lion);\n\nexport default function App() {\nreturn (\n <div>\n    <h1>mil + LION = million</h1>\n    <LionBlock />\n </div>\n);\n}\n`} />\n\n</BrowserView>\n\nWith that in hand, let's build an app.\n\n## Data Grid Example\n\nOne use case of blocks is rendering lists of data efficiently. In this example, let's build a data grid in React.\n\nYou have access to the prebuilt components `<Table />{:jsx}` and `<Input />{:jsx}` from your fake user interface (UI) library. You can then store the number of rows you want to display in a `useState(){:jsx}` hook.\n\n```jsx\nfunction App() {\n  const [rows, setRows] = useState(1);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>// ...</Table>\n    </div>\n  );\n}\n```\n\nBut wait! You made a grid but you have no data. Let's say you can grab some array of arbitrary data from a function called `buildData(rows){:jsx}`:\n\n```jsx\nconst data = buildData(100);\n// returns [{ adjective: '...', color: '...', noun: '...' }, ... x100]\n```\n\nNow, you can render the data in our table using `Array.map(){:jsx}`:\n\n```jsx {3, 9-15}\nfunction App() {\n  const [rows, setRows] = useState(1);\n  const data = buildData(rows);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>\n        {data.map(({ adjective, color, noun }) => (\n          <tr>\n            <td>{adjective}</td>\n            <td>{color}</td>\n            <td>{noun}</td>\n          </tr>\n        ))}\n      </Table>\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\n<Box previewOnly code={`\n  import { useState } from 'react';\n  import { Table, Input } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\nYou can see that it performs pretty well. From 0-100, there's virtually no lag, but once you get higher than 500 or so, there's a noticable delay in rendering.\n\nReact is great because you can declaratively write great UI and get pretty good performance. But the data grid you just made is a rudimentary example, and is not necessarily representative of most React applications.\n\n### More realistic rendering\n\nIn the following example, you add `lotsOfElements` (an array of a lot of blank elements) to each row. you can also add a lag radar to monitor page performance.\n\nTry changing the input value up and down from 0 to 1000. Notice how React _really struggles_ when rendering a lot of elements.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n              <td>{...lotsOfElements}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n### Just `block` it\n\nIn the following example, you can use `block(){:jsx}` and `<For />{:jsx}` in order to optimize rendering.\n\nFirst, you need to abstract the `<tr>{:jsx}` into its own component.\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <tr>\n    <td>{adjective}</td>\n    <td>{color}</td>\n    <td>{noun}</td>\n    <td>{...lotsOfElements}</td>\n  </tr>\n));\n\n// 👇👇👇\n\nfunction Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n}\n```\n\nThen, you can wrap it with `block(){:jsx}` in order to optimize the `<Row />{:jsx}` component.\n\n```jsx {3, 14}\nimport { block } from 'million/react';\n\nconst RowBlock = block(function Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n});\n```\n\nOnce, you've optimized a row, you will need to render it as a list:\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <RowBlock adjective={adjective} color={color} noun={noun}>\n));\n```\n\n**BUT WAIT!** You can actually use Million.js' built-in rendering solution.\n\n### Optimized List Rendering\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\n<Callout type=\"info\">\n**`<For />{:jsx}` Component**\n\nSyntax: `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\nExample: `<For each={[1, 2, 3]}>{(item, index) => myBlock({ item, index })}</For>{:jsx}`\n\n</Callout>\n\nIt's the best way to loop over an array (uses [`mapArray(){:jsx}`](/docs/internals/map-array) under the hood). As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\nWith this in mind, you can rewrite your table to use `<For />{:jsx}`:\n\n```jsx {3, 4, 5, 6, 7}\nimport { For } from 'million/react';\n\n<For each={data}>\n  {({ adjective, color, noun }) => (\n    <RowBlock adjective={adjective} color={color} noun={noun} />\n  )}\n</For>;\n```\n\n<BrowserView>\n\nNow that we've integrated Million.js, let's check the new example out.\n\nNotice when you change the input value, the lag radar shows significantly less lag than the pure React example. With a [faster underlying virtual DOM](/blog/virtual-dom), Million.js can take a lot of the pain out of rendering large lists.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n  import { block, For } from 'million/react';\n\nconst RowBlock = block(\nfunction Row({ adjective, color, noun }) {\nreturn (\n<tr>\n<td>{adjective}</td>\n<td>{color}</td>\n<td>{noun}</td>\n{...lotsOfElements}\n</tr>\n);\n}\n);\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          <For each={data}>\n            {({ adjective, color, noun }) => (\n              <RowBlock adjective={adjective} color={color} noun={noun} />\n            )}\n          </For>\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n## Hitting the limit\n\n<Callout type=\"warning\">\n  This section is a bit more advanced. If you want a list of limitations, check\n  out the [Rules of Blocks](/docs/rules). Or, if you just want to start\n  integrating Million.js, check out the [installation guide](/docs/install).\n</Callout>\n\nBlocks are great for rendering large lists, data grids, and many other use cases. Under the hood, they render with the Million.js virtual DOM instead of React.\n\n<details>\n  <summary>\n    <strong>Deep Dive:</strong> How does it work?\n  </summary>\n  <Tabs items={['React', 'Million.js']}>\n    <Tab>\n      <VDomExample />\n    </Tab>\n    <Tab>\n      <CombinedBlockExample />\n    </Tab>\n  </Tabs>\n</details>\n\nUsing a block can allow us to capture potential performance gains. However, you should always use best judgement, as blocks are not a silver bullet. Here are some general guidelines to follow:\n\n- **Static views**: Blocks perform best when there's not that much dynamic data. Since static parts of the React tree need to be unnecessary rerendered when dynamic data changes by React, blocks can directly skip to what's dynamic.\n- **Nested data**: Blocks are great for rendering nested data. Million.js turns tree traversal from `O(tree)` to `O(1)`, allowing for fast access and changes.\n\nLooking for the full guidelines? Check out [Rules of Blocks](/docs/rules).\n\n## Next Steps\n\nBy now, you know the basics of how to integrate Million.js into your application!\n\nCheck out the [installation guide](/docs/install) to put them into practice and start using blocks.\n\n---\n\n_This page is directly inspired by [React's \"Quick Start\" page](https://react.dev/learn)._\n"
  },
  {
    "path": "website/pages/docs/manual-mode/manual-mode.es-ES.mdx",
    "content": "---\ntitle: 'Modo Manual - Tutorial'\ndescription: 'Aprende a usar Million.js en modo Manual'\n---\n\nimport { Callout, Tabs, Tab, Cards, Card } from 'nextra-theme-docs';\nimport { Box } from '../../../components/box';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\nimport { BrowserView, MobileView } from 'react-device-detect';\nimport { VDomExample } from '../../../components/back-in-block/vdom';\nimport { CombinedBlockExample } from '../../../components/back-in-block/combined-block';\n\n<MobileView>\n\n<Callout type=\"warning\">\n  Se recomienda encarecidamente que consultes esta documentación en un navegador de escritorio para tener acceso a los ejemplos de código interactivos.\n</Callout>\n\n</MobileView>\n\n# Modo Manual - Tutorial\n\n<AutomaticModeWarning />\n\nVeamos ahora cómo puedes integrar Million.js en tus aplicaciones de React.\n\nMillion.js asume que ya estás familiarizado y estás utilizando React. Si no es así, se recomienda que primero consultes [react.dev](https://react.dev/).\n\n<Callout type=\"info\">\n**Aprenderás:**\n- Cómo usar [`block(){:jsx}`](/docs/manual-mode/block) para convertir componentes de React en bloques.\n- Cuándo utilizar `<For />{:jsx}` para renderizar listas eficientemente.\n- When to use `block(){:jsx}` y `<For />{:jsx}`\n- Las limitaciones de los bloques (blocks).\n</Callout>\n\nLos bloques pueden utilizarse de la misma manera que un componente normal de React:\n\n```jsx {5}\nexport default function App() {\n  return (\n    <div>\n      <h1>mil + LION = million</h1>\n      <LionBlock />\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\nEcha un vistazo al resultado:\n\n<Box previewOnly code={`\n  import { block } from 'million/react';\n\nfunction Lion() {\nreturn (\n   <img src=\"https://million.dev/lion.svg\" width={200} />\n);\n}\n\nconst LionBlock = block(Lion);\n\nexport default function App() {\nreturn (\n <div>\n    <h1>mil + LION = million</h1>\n    <LionBlock />\n </div>\n);\n}\n`} />\n\n</BrowserView>\n\nCon eso en mano, construyamos una aplicación.\n\n## Ejemplo de Data Grid\n\nUn caso de uso de los bloques es renderizar listas de datos de manera eficiente. En este ejemplo, construyamos un data grid en React.\n\nSupongamos que tienes acceso a los componentes preconstruidos `<Table />{:jsx}` y `<Input />{:jsx}` de tu falsa librería UI. Luego, puedes almacenar el número de rows que deseas mostrar en un hook `useState(){:jsx}`.\n\n```jsx\nfunction App() {\n  const [rows, setRows] = useState(1);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>// ...</Table>\n    </div>\n  );\n}\n```\n\n¡Pero espera! Has creado un grid pero no tienes datos. Supongamos que puedes obtener un array de datos arbitrarios de una función llamada `buildData(rows){:jsx}`:\n\n```jsx\nconst data = buildData(100);\n// devuelve [{ adjective: '...', color: '...', noun: '...' }, ... x100]\n```\n\nAhora puedes renderizar los datos en nuestra tabla utilizando `Array.map(){:jsx}`:\n\n```jsx {3, 9-15}\nfunction App() {\n  const [rows, setRows] = useState(1);\n  const data = buildData(rows);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>\n        {data.map(({ adjective, color, noun }) => (\n          <tr>\n            <td>{adjective}</td>\n            <td>{color}</td>\n            <td>{noun}</td>\n          </tr>\n        ))}\n      </Table>\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\n<Box previewOnly code={`\n  import { useState } from 'react';\n  import { Table, Input } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\nPuedes ver que funciona bastante bien. Desde 0 hasta 100, prácticamente no hay retraso, pero una vez que superas los 500 o algo así, hay un retraso notable en la renderización.\n\nReact es genial porque puedes escribir declarativamente una excelente interfaz de usuario y obtener un rendimiento bastante bueno. Pero el data grid que acabas de crear es un ejemplo rudimentario y no necesariamente representa la mayoría de las aplicaciones React.\n\n### Renderización más realista\n\nEn el siguiente ejemplo, agregas `lotsOfElements` (un array de muchos elementos en blanco) a cada fila. También puedes agregar un radar de retraso para monitorizar el rendimiento de la página.\n\nIntenta cambiar el valor de entrada de arriba a abajo, de 0 a 1000. Observa cómo React _realmente tiene dificultades_ al renderizar una gran cantidad de elementos.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n              <td>{...lotsOfElements}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n### Simplemente \"bloquéalo\" (utiliza block).\n\nEn el siguiente ejemplo, puedes usar `block(){:jsx}` y `<For />{:jsx}` para optimizar la renderización.\n\nPrimero, necesitas abstraer el `<tr>{:jsx}` en su propio componente.\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <tr>\n    <td>{adjective}</td>\n    <td>{color}</td>\n    <td>{noun}</td>\n    <td>{...lotsOfElements}</td>\n  </tr>\n));\n\n// 👇👇👇\n\nfunction Fila({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n}\n```\n\nLuego, puedes envolverlo con `block(){:jsx}` para optimizar el componente `<Fila />{:jsx}`.\n\n```jsx {3, 14}\nimport { block } from 'million/react';\n\nconst RowBlock = block(function Fila({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n});\n```\n\nUna vez que hayas optimizado una fila, necesitarás renderizarla como una lista:\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <RowBlock adjective={adjective} color={color} noun={noun}>\n));\n```\n\n**¡PERO ESPERA!** En realidad, puedes usar la solución de renderizado incorporada en Million.js.\n\n### Renderización Optimizada de Listas\n\nEl componente `<For />{:jsx}` se utiliza para renderizar una lista de bloques. Toma un array en la propiedad `each` y una función como elemento hijo. La función es llamada una vez por cada elemento (item) que hay en el array y recibe el elemento y su índice como argumentos.\n\n<Callout type=\"info\">\n**Componente `<For />{:jsx}`**\n\nSintaxis: `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\nEjemplo: `<For each={[1, 2, 3]}>{(item, index) => myBlock({ item, index })}</For>{:jsx}`\n\n</Callout>\n\nEs la mejor manera de recorrer un array (utiliza [`mapArray(){:jsx}`](/docs/internals/map-array) internamente). A medida que cambia el array, `<For />{:jsx}` actualiza o mueve elementos en el DOM en lugar de recrearlos.\n\nCon esto en mente, puedes reescribir tu tabla para usar `<For />{:jsx}`:\n\n```jsx {3, 4, 5, 6, 7}\nimport { For } from 'million/react';\n\n<For each={data}>\n  {({ adjective, color, noun }) => (\n    <RowBlock adjective={adjective} color={color} noun={noun} />\n  )}\n</For>;\n```\n\n<BrowserView>\n\nAhora que hemos integrado Million.js, echemos un vistazo al nuevo ejemplo.\n\nObserva que cuando cambias el valor del \"input\", el radar muestra significativamente menos retraso que el ejemplo puro de React. Con un [DOM virtual subyacente más rápido](/blog/virtual-dom), Million.js puede eliminar gran parte de las dificultades al renderizar listas grandes.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n  import { block, For } from 'million/react';\n\nconst RowBlock = block(\nfunction Row({ adjective, color, noun }) {\nreturn (\n<tr>\n<td>{adjective}</td>\n<td>{color}</td>\n<td>{noun}</td>\n{...lotsOfElements}\n</tr>\n);\n}\n);\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          <For each={data}>\n            {({ adjective, color, noun }) => (\n              <RowBlock adjective={adjective} color={color} noun={noun} />\n            )}\n          </For>\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n## Alcanzando el límite\n\n<Callout type=\"warning\">\n  Esta sección es un poco más avanzada. Si deseas obtener una lista de limites, consulta [las Reglas de los Bloques](/docs/rules).\n  O, si simplemente quieres comenzar a integrar Million.js, echa un vistazo a [la guía de instalación](/docs/install).\n</Callout>\n\nLos bloques son excelentes para renderizar listas extensas, data grids y muchos otros casos de uso. Internamente, los bloques son renderizados con el DOM virtual de Million.js en lugar del de React.\n\n<details>\n  <summary>\n    <strong>Profundizando:</strong> ¿Cómo funciona?\n  </summary>\n  <Tabs items={['React', 'Million.js']}>\n    <Tab>\n      <VDomExample />\n    </Tab>\n    <Tab>\n      <CombinedBlockExample />\n    </Tab>\n  </Tabs>\n</details>\n\n\nEl uso de un bloque puede permitirnos capturar posibles mejoras de rendimiento. Sin embargo, siempre debes usar el mejor juicio, ya que los bloques no son una solución universal. Aquí tienes algunas pautas generales a seguir:\n\n- **Vistas estáticas**: Los bloques funcionan mejor cuando hay pocos datos dinámicos. Dado que las partes estáticas del árbol de React no necesitan ser renderizadas nuevamente cuando los datos dinámicos cambian por React, los bloques pueden saltar directamente a lo que es dinámico.\n- **Datos anidados**: Los bloques son ideales para renderizar datos anidados. Million.js convierte la travesía de árboles de `O(árbol)` a `O(1)`, permitiendo un acceso y cambios rápidos.\n\n¿Buscas la guía completa? Échale un vistazo a [las Reglas de los Bloques](/docs/rules).\n\n## Siguientes Pasos\n\nA estas alturas, conoces los conceptos básicos de cómo integrar Million.js en tu aplicación!\n\nConsulta la [guía de instalación](/docs/install) para ponerlo en práctica y comenzar a usar bloques.\n\n---\n\n_Esta página está directamente inspirada en [la página \"Quick Start\" de React.](https://react.dev/learn)._\n"
  },
  {
    "path": "website/pages/docs/manual-mode/manual-mode.fr-FR.mdx",
    "content": "---\ntitle: 'Manual Mode Tutorial'\ndescription: 'Learn how to use Million.js in Manual mode'\n---\n\nimport { Callout, Tabs, Tab, Cards, Card } from 'nextra-theme-docs';\nimport { Box } from '../../../components/box';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\nimport { BrowserView, MobileView } from 'react-device-detect';\nimport { VDomExample } from '../../../components/back-in-block/vdom';\nimport { CombinedBlockExample } from '../../../components/back-in-block/combined-block';\n\n<MobileView>\n\n<Callout type=\"warning\">\n  It is highly recommended you view this documentation on a desktop browser to\n  get access to interactive code examples.\n</Callout>\n\n</MobileView>\n\n# Manual mode Tutorial\n\n<AutomaticModeWarning />\n\nLet's learn how you can integrate Million.js into your React applications.\n\nMillion.js assumes that you're already familiar with and you're using React. If you're not, is is recommended you check out [react.dev](https://react.dev/) first.\n\n<Callout type=\"info\">\n**You will learn:**\n- How to use [`block(){:jsx}`](/docs/manual-mode/block) to convert React components into blocks\n- How to use `<For />{:jsx}` for efficiently rendering lists\n- When to use `block(){:jsx}` and `<For />{:jsx}`\n- The limitations of blocks\n</Callout>\n\nBlocks can be used just like a normal React component:\n\n```jsx {5}\nexport default function App() {\n  return (\n    <div>\n      <h1>mil + LION = million</h1>\n      <LionBlock />\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\nHave a look at the result:\n\n<Box previewOnly code={`\n  import { block } from 'million/react';\n\nfunction Lion() {\nreturn (\n   <img src=\"https://million.dev/lion.svg\" width={200} />\n);\n}\n\nconst LionBlock = block(Lion);\n\nexport default function App() {\nreturn (\n <div>\n    <h1>mil + LION = million</h1>\n    <LionBlock />\n </div>\n);\n}\n`} />\n\n</BrowserView>\n\nWith that in hand, let's build an app.\n\n## Data Grid Example\n\nOne use case of blocks is rendering lists of data efficiently. In this example, let's build a data grid in React.\n\nYou have access to the prebuilt components `<Table />{:jsx}` and `<Input />{:jsx}` from your fake user interface (UI) library. You can then store the number of rows you want to display in a `useState(){:jsx}` hook.\n\n```jsx\nfunction App() {\n  const [rows, setRows] = useState(1);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>// ...</Table>\n    </div>\n  );\n}\n```\n\nBut wait! You made a grid but you have no data. Let's say you can grab some array of arbitrary data from a function called `buildData(rows){:jsx}`:\n\n```jsx\nconst data = buildData(100);\n// returns [{ adjective: '...', color: '...', noun: '...' }, ... x100]\n```\n\nNow, you can render the data in our table using `Array.map(){:jsx}`:\n\n```jsx {3, 9-15}\nfunction App() {\n  const [rows, setRows] = useState(1);\n  const data = buildData(rows);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>\n        {data.map(({ adjective, color, noun }) => (\n          <tr>\n            <td>{adjective}</td>\n            <td>{color}</td>\n            <td>{noun}</td>\n          </tr>\n        ))}\n      </Table>\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\n<Box previewOnly code={`\n  import { useState } from 'react';\n  import { Table, Input } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\nYou can see that it performs pretty well. From 0-100, there's virtually no lag, but once you get higher than 500 or so, there's a noticable delay in rendering.\n\nReact is great because you can declaratively write great UI and get pretty good performance. But the data grid you just made is a rudimentary example, and is not necessarily representative of most React applications.\n\n### More realistic rendering\n\nIn the following example, you add `lotsOfElements` (an array of a lot of blank elements) to each row. you can also add a lag radar to monitor page performance.\n\nTry changing the input value up and down from 0 to 1000. Notice how React _really struggles_ when rendering a lot of elements.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n              <td>{...lotsOfElements}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n### Just `block` it\n\nIn the following example, you can use `block(){:jsx}` and `<For />{:jsx}` in order to optimize rendering.\n\nFirst, you need to abstract the `<tr>{:jsx}` into its own component.\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <tr>\n    <td>{adjective}</td>\n    <td>{color}</td>\n    <td>{noun}</td>\n    <td>{...lotsOfElements}</td>\n  </tr>\n));\n\n// 👇👇👇\n\nfunction Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n}\n```\n\nThen, you can wrap it with `block(){:jsx}` in order to optimize the `<Row />{:jsx}` component.\n\n```jsx {3, 14}\nimport { block } from 'million/react';\n\nconst RowBlock = block(function Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n});\n```\n\nOnce, you've optimized a row, you will need to render it as a list:\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <RowBlock adjective={adjective} color={color} noun={noun}>\n));\n```\n\n**BUT WAIT!** You can actually use Million.js' built-in rendering solution.\n\n### Optimized List Rendering\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\n<Callout type=\"info\">\n**`<For />{:jsx}` Component**\n\nSyntax: `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\nExample: `<For each={[1, 2, 3]}>{(item, index) => myBlock({ item, index })}</For>{:jsx}`\n\n</Callout>\n\nIt's the best way to loop over an array (uses [`mapArray(){:jsx}`](/docs/internals/map-array) under the hood). As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\nWith this in mind, you can rewrite your table to use `<For />{:jsx}`:\n\n```jsx {3, 4, 5, 6, 7}\nimport { For } from 'million/react';\n\n<For each={data}>\n  {({ adjective, color, noun }) => (\n    <RowBlock adjective={adjective} color={color} noun={noun} />\n  )}\n</For>;\n```\n\n<BrowserView>\n\nNow that we've integrated Million.js, let's check the new example out.\n\nNotice when you change the input value, the lag radar shows significantly less lag than the pure React example. With a [faster underlying virtual DOM](/blog/virtual-dom), Million.js can take a lot of the pain out of rendering large lists.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n  import { block, For } from 'million/react';\n\nconst RowBlock = block(\nfunction Row({ adjective, color, noun }) {\nreturn (\n<tr>\n<td>{adjective}</td>\n<td>{color}</td>\n<td>{noun}</td>\n{...lotsOfElements}\n</tr>\n);\n}\n);\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          <For each={data}>\n            {({ adjective, color, noun }) => (\n              <RowBlock adjective={adjective} color={color} noun={noun} />\n            )}\n          </For>\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n## Hitting the limit\n\n<Callout type=\"warning\">\n  This section is a bit more advanced. If you want a list of limitations, check\n  out the [Rules of Blocks](/docs/rules). Or, if you just want to start\n  integrating Million.js, check out the [installation guide](/docs/install).\n</Callout>\n\nBlocks are great for rendering large lists, data grids, and many other use cases. Under the hood, they render with the Million.js virtual DOM instead of React.\n\n<details>\n  <summary>\n    <strong>Deep Dive:</strong> How does it work?\n  </summary>\n  <Tabs items={['React', 'Million.js']}>\n    <Tab>\n      <VDomExample />\n    </Tab>\n    <Tab>\n      <CombinedBlockExample />\n    </Tab>\n  </Tabs>\n</details>\n\nUsing a block can allow us to capture potential performance gains. However, you should always use best judgement, as blocks are not a silver bullet. Here are some general guidelines to follow:\n\n- **Static views**: Blocks perform best when there's not that much dynamic data. Since static parts of the React tree need to be unnecessary rerendered when dynamic data changes by React, blocks can directly skip to what's dynamic.\n- **Nested data**: Blocks are great for rendering nested data. Million.js turns tree traversal from `O(tree)` to `O(1)`, allowing for fast access and changes.\n\nLooking for the full guidelines? Check out [Rules of Blocks](/docs/rules).\n\n## Next Steps\n\nBy now, you know the basics of how to integrate Million.js into your application!\n\nCheck out the [installation guide](/docs/install) to put them into practice and start using blocks.\n\n---\n\n_This page is directly inspired by [React's \"Quick Start\" page](https://react.dev/learn)._\n"
  },
  {
    "path": "website/pages/docs/manual-mode/manual-mode.zh-CN.mdx",
    "content": "---\ntitle: 'Manual Mode Tutorial'\ndescription: 'Learn how to use Million.js in Manual mode'\n---\n\nimport { Callout, Tabs, Tab, Cards, Card } from 'nextra-theme-docs';\nimport { Box } from '../../../components/box';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\nimport { BrowserView, MobileView } from 'react-device-detect';\nimport { VDomExample } from '../../../components/back-in-block/vdom';\nimport { CombinedBlockExample } from '../../../components/back-in-block/combined-block';\n\n<MobileView>\n\n<Callout type=\"warning\">\n  It is highly recommended you view this documentation on a desktop browser to\n  get access to interactive code examples.\n</Callout>\n\n</MobileView>\n\n# Manual mode Tutorial\n\n<AutomaticModeWarning />\n\nLet's learn how you can integrate Million.js into your React applications.\n\nMillion.js assumes that you're already familiar with and you're using React. If you're not, is is recommended you check out [react.dev](https://react.dev/) first.\n\n<Callout type=\"info\">\n**You will learn:**\n- How to use [`block(){:jsx}`](/docs/manual-mode/block) to convert React components into blocks\n- How to use `<For />{:jsx}` for efficiently rendering lists\n- When to use `block(){:jsx}` and `<For />{:jsx}`\n- The limitations of blocks\n</Callout>\n\nBlocks can be used just like a normal React component:\n\n```jsx {5}\nexport default function App() {\n  return (\n    <div>\n      <h1>mil + LION = million</h1>\n      <LionBlock />\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\nHave a look at the result:\n\n<Box previewOnly code={`\n  import { block } from 'million/react';\n\nfunction Lion() {\nreturn (\n   <img src=\"https://million.dev/lion.svg\" width={200} />\n);\n}\n\nconst LionBlock = block(Lion);\n\nexport default function App() {\nreturn (\n <div>\n    <h1>mil + LION = million</h1>\n    <LionBlock />\n </div>\n);\n}\n`} />\n\n</BrowserView>\n\nWith that in hand, let's build an app.\n\n## Data Grid Example\n\nOne use case of blocks is rendering lists of data efficiently. In this example, let's build a data grid in React.\n\nYou have access to the prebuilt components `<Table />{:jsx}` and `<Input />{:jsx}` from your fake user interface (UI) library. You can then store the number of rows you want to display in a `useState(){:jsx}` hook.\n\n```jsx\nfunction App() {\n  const [rows, setRows] = useState(1);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>// ...</Table>\n    </div>\n  );\n}\n```\n\nBut wait! You made a grid but you have no data. Let's say you can grab some array of arbitrary data from a function called `buildData(rows){:jsx}`:\n\n```jsx\nconst data = buildData(100);\n// returns [{ adjective: '...', color: '...', noun: '...' }, ... x100]\n```\n\nNow, you can render the data in our table using `Array.map(){:jsx}`:\n\n```jsx {3, 9-15}\nfunction App() {\n  const [rows, setRows] = useState(1);\n  const data = buildData(rows);\n\n  return (\n    <div>\n      <Input value={rows} setValue={setRows} />\n      <Table>\n        {data.map(({ adjective, color, noun }) => (\n          <tr>\n            <td>{adjective}</td>\n            <td>{color}</td>\n            <td>{noun}</td>\n          </tr>\n        ))}\n      </Table>\n    </div>\n  );\n}\n```\n\n<BrowserView>\n\n<Box previewOnly code={`\n  import { useState } from 'react';\n  import { Table, Input } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\nYou can see that it performs pretty well. From 0-100, there's virtually no lag, but once you get higher than 500 or so, there's a noticable delay in rendering.\n\nReact is great because you can declaratively write great UI and get pretty good performance. But the data grid you just made is a rudimentary example, and is not necessarily representative of most React applications.\n\n### More realistic rendering\n\nIn the following example, you add `lotsOfElements` (an array of a lot of blank elements) to each row. you can also add a lag radar to monitor page performance.\n\nTry changing the input value up and down from 0 to 1000. Notice how React _really struggles_ when rendering a lot of elements.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          {data.map(({ adjective, color, noun }) => (\n            <tr>\n              <td>{adjective}</td>\n              <td>{color}</td>\n              <td>{noun}</td>\n              <td>{...lotsOfElements}</td>\n            </tr>\n          ))}\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n### Just `block` it\n\nIn the following example, you can use `block(){:jsx}` and `<For />{:jsx}` in order to optimize rendering.\n\nFirst, you need to abstract the `<tr>{:jsx}` into its own component.\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <tr>\n    <td>{adjective}</td>\n    <td>{color}</td>\n    <td>{noun}</td>\n    <td>{...lotsOfElements}</td>\n  </tr>\n));\n\n// 👇👇👇\n\nfunction Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n}\n```\n\nThen, you can wrap it with `block(){:jsx}` in order to optimize the `<Row />{:jsx}` component.\n\n```jsx {3, 14}\nimport { block } from 'million/react';\n\nconst RowBlock = block(function Row({ adjective, color, noun }) {\n  return (\n    <tr>\n      <td>{adjective}</td>\n      <td>{color}</td>\n      <td>{noun}</td>\n      {...lotsOfElements}\n    </tr>\n  );\n});\n```\n\nOnce, you've optimized a row, you will need to render it as a list:\n\n```jsx\ndata.map(({ adjective, color, noun }) => (\n  <RowBlock adjective={adjective} color={color} noun={noun}>\n));\n```\n\n**BUT WAIT!** You can actually use Million.js' built-in rendering solution.\n\n### Optimized List Rendering\n\nThe `<For />{:jsx}` component is used to render a list of blocks. It takes an array as the `each` prop and a function as its children. The function is called for each item in the array and is passed the item and its index as arguments.\n\n<Callout type=\"info\">\n**`<For />{:jsx}` Component**\n\nSyntax: `<For each={array}>{(item, index) => Block}</For>{:jsx}`\\\nExample: `<For each={[1, 2, 3]}>{(item, index) => myBlock({ item, index })}</For>{:jsx}`\n\n</Callout>\n\nIt's the best way to loop over an array (uses [`mapArray(){:jsx}`](/docs/internals/map-array) under the hood). As the array changes, `<For />{:jsx}` updates or moves items in the DOM rather than recreating them. Let's look at an example:\n\nWith this in mind, you can rewrite your table to use `<For />{:jsx}`:\n\n```jsx {3, 4, 5, 6, 7}\nimport { For } from 'million/react';\n\n<For each={data}>\n  {({ adjective, color, noun }) => (\n    <RowBlock adjective={adjective} color={color} noun={noun} />\n  )}\n</For>;\n```\n\n<BrowserView>\n\nNow that we've integrated Million.js, let's check the new example out.\n\nNotice when you change the input value, the lag radar shows significantly less lag than the pure React example. With a [faster underlying virtual DOM](/blog/virtual-dom), Million.js can take a lot of the pain out of rendering large lists.\n\n<Box code={`\n  import { useState } from 'react';\n  import { Table, Input, lotsOfElements } from './ui';\n  import { buildData } from './data';\n  import { block, For } from 'million/react';\n\nconst RowBlock = block(\nfunction Row({ adjective, color, noun }) {\nreturn (\n<tr>\n<td>{adjective}</td>\n<td>{color}</td>\n<td>{noun}</td>\n{...lotsOfElements}\n</tr>\n);\n}\n);\n\nfunction App() {\nconst [rows, setRows] = useState(1);\nconst data = buildData(rows);\n\n    return (\n      <div>\n        <Input value={rows} setValue={setRows} />\n        <Table showRadar>\n          <For each={data}>\n            {({ adjective, color, noun }) => (\n              <RowBlock adjective={adjective} color={color} noun={noun} />\n            )}\n          </For>\n        </Table>\n      </div>\n    );\n\n}\n\nexport default App;\n`} />\n\n</BrowserView>\n\n## Hitting the limit\n\n<Callout type=\"warning\">\n  This section is a bit more advanced. If you want a list of limitations, check\n  out the [Rules of Blocks](/docs/rules). Or, if you just want to start\n  integrating Million.js, check out the [installation guide](/docs/install).\n</Callout>\n\nBlocks are great for rendering large lists, data grids, and many other use cases. Under the hood, they render with the Million.js virtual DOM instead of React.\n\n<details>\n  <summary>\n    <strong>Deep Dive:</strong> How does it work?\n  </summary>\n  <Tabs items={['React', 'Million.js']}>\n    <Tab>\n      <VDomExample />\n    </Tab>\n    <Tab>\n      <CombinedBlockExample />\n    </Tab>\n  </Tabs>\n</details>\n\nUsing a block can allow us to capture potential performance gains. However, you should always use best judgement, as blocks are not a silver bullet. Here are some general guidelines to follow:\n\n- **Static views**: Blocks perform best when there's not that much dynamic data. Since static parts of the React tree need to be unnecessary rerendered when dynamic data changes by React, blocks can directly skip to what's dynamic.\n- **Nested data**: Blocks are great for rendering nested data. Million.js turns tree traversal from `O(tree)` to `O(1)`, allowing for fast access and changes.\n\nLooking for the full guidelines? Check out [Rules of Blocks](/docs/rules).\n\n## Next Steps\n\nBy now, you know the basics of how to integrate Million.js into your application!\n\nCheck out the [installation guide](/docs/install) to put them into practice and start using blocks.\n\n---\n\n_This page is directly inspired by [React's \"Quick Start\" page](https://react.dev/learn)._\n"
  },
  {
    "path": "website/pages/docs/manual-mode/virtualization.en-US.mdx",
    "content": "---\ntitle: 'Virtualization'\ndescription: 'List virtualization allows you to render large lists without performance issues.'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# Virtualization\n\n<AutomaticModeWarning />\n\nMillion.js works with [TanStack Virtual](https://tanstack.com/virtual/v3/docs/guide/introduction). TanStack Virtual is a headless UI utility for virtualizing long lists of elements in React. Together, you can automatically use blocks within virtualized lists.\n\n## Why Virtualize?\n\nVirtualization is a technique for efficiently rendering large lists of items. It only renders the items that are currently visible to the user instead of rendering all of them. This dramatically reduces the number of DOM nodes that need to be created and updated which has a huge performance benefit.\n\n<Callout type=\"info\">\n  Want to compare Million.js vs React virtualization? Check out [this\n  demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n![Virtualization diagram](/virtualized.png)\n\n## Installation\n\nYou can easily install it via this command:\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n</Tabs>\n\n## Example\n\nHere is just a quick example of what it looks like to virtualize a long list within a `div` using TanStack Virtual with Million.js:\n\n```jsx\nimport { useRef } from 'react';\nimport { For } from 'million/react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nfunction App() {\n  const parentRef = useRef();\n\n  const rowVirtualizer = useVirtualizer({\n    count: 10000,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => 35,\n  });\n\n  return (\n    <>\n      <div ref={parentRef} style={{ height: `400px`, overflow: 'auto' }}>\n        <For\n          each={rowVirtualizer.getVirtualItems()}\n          style={{\n            height: `${rowVirtualizer.getTotalSize()}px`,\n            width: '100%',\n            position: 'relative',\n          }}\n          as=\"div\"\n        >\n          {(virtualItem) => (\n            <div\n              key={virtualItem.key}\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                fontSize: '20px',\n                height: `${virtualItem.size}px`,\n                transform: `translateY(${virtualItem.start}px)`,\n              }}\n            >\n              Row {virtualItem.index}\n            </div>\n          )}\n        </For>\n      </div>\n    </>\n  );\n}\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/virtualization.es-ES.mdx",
    "content": "---\ntitle: 'Virtualización'\ndescription: 'La virtualización de listas te permite renderizar listas grandes sin problemas de rendimiento.'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# Virtualización\n\n<AutomaticModeWarning />\n\nMillion.js funciona con [TanStack Virtual](https://tanstack.com/virtual/v3/docs/guide/introduction). TanStack Virtual es una utilidad de interfaz de usuario sin interfaz gráfica (headless UI) para virtualizar listas largas de elementos en React. Juntos, puedes utilizar automáticamente bloques dentro de listas virtualizadas.\n\n## ¿Por qué virtualizar?\n\nLa virtualización es una técnica para renderizar de manera eficiente grandes listas de elementos. Solo renderiza los elementos que están actualmente visibles para el usuario en lugar de renderizar todos. Esto reduce drásticamente la cantidad de nodos del DOM que deben crearse y actualizarse, lo que ofrece un gran beneficio en rendimiento.\n\n<Callout type=\"info\">\n  ¿Quieres comparar Million.js con la virtualización de React? [¡Echa un vistazo a esta demostración!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n![Diagrama de Virtualización](/virtualized.png)\n\n## Instalación\n\nPuedes instalarlo fácilmente mediante este comando:\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n</Tabs>\n\n## Ejemplo\n\nVeamos un ejemplo rápido de cómo sería virtualizar una larga lista dentro de un `div` usando TanStack Virtual con Million.js:\n\n```jsx\nimport { useRef } from 'react';\nimport { For } from 'million/react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nfunction App() {\n  const parentRef = useRef();\n\n  const rowVirtualizer = useVirtualizer({\n    count: 10000,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => 35,\n  });\n\n  return (\n    <>\n      <div ref={parentRef} style={{ height: `400px`, overflow: 'auto' }}>\n        <For\n          each={rowVirtualizer.getVirtualItems()}\n          style={{\n            height: `${rowVirtualizer.getTotalSize()}px`,\n            width: '100%',\n            position: 'relative',\n          }}\n          as=\"div\"\n        >\n          {(virtualItem) => (\n            <div\n              key={virtualItem.key}\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                fontSize: '20px',\n                height: `${virtualItem.size}px`,\n                transform: `translateY(${virtualItem.start}px)`,\n              }}\n            >\n              Row {virtualItem.index} {/* \"Row\" -> \"lista\" en español */}\n            </div>\n          )}\n        </For>\n      </div>\n    </>\n  );\n}\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/virtualization.fr-FR.mdx",
    "content": "---\ntitle: 'Virtualization'\ndescription: 'List virtualization allows you to render large lists without performance issues.'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# Virtualization\n\n<AutomaticModeWarning />\n\nMillion.js works with [TanStack Virtual](https://tanstack.com/virtual/v3/docs/guide/introduction). TanStack Virtual is a headless UI utility for virtualizing long lists of elements in React. Together, you can automatically use blocks within virtualized lists.\n\n## Why Virtualize?\n\nVirtualization is a technique for efficiently rendering large lists of items. It only renders the items that are currently visible to the user instead of rendering all of them. This dramatically reduces the number of DOM nodes that need to be created and updated which has a huge performance benefit.\n\n<Callout type=\"info\">\n  Want to compare Million.js vs React virtualization? Check out [this\n  demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n![Virtualization diagram](/virtualized.png)\n\n## Installation\n\nYou can easily install it via this command:\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n</Tabs>\n\n## Example\n\nHere is just a quick example of what it looks like to virtualize a long list within a `div` using TanStack Virtual with Million.js:\n\n```jsx\nimport { useRef } from 'react';\nimport { For } from 'million/react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nfunction App() {\n  const parentRef = useRef();\n\n  const rowVirtualizer = useVirtualizer({\n    count: 10000,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => 35,\n  });\n\n  return (\n    <>\n      <div ref={parentRef} style={{ height: `400px`, overflow: 'auto' }}>\n        <For\n          each={rowVirtualizer.getVirtualItems()}\n          style={{\n            height: `${rowVirtualizer.getTotalSize()}px`,\n            width: '100%',\n            position: 'relative',\n          }}\n          as=\"div\"\n        >\n          {(virtualItem) => (\n            <div\n              key={virtualItem.key}\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                fontSize: '20px',\n                height: `${virtualItem.size}px`,\n                transform: `translateY(${virtualItem.start}px)`,\n              }}\n            >\n              Row {virtualItem.index}\n            </div>\n          )}\n        </For>\n      </div>\n    </>\n  );\n}\n```\n"
  },
  {
    "path": "website/pages/docs/manual-mode/virtualization.zh-CN.mdx",
    "content": "---\ntitle: 'Virtualization'\ndescription: 'List virtualization allows you to render large lists without performance issues.'\n---\n\nimport { Callout, Tabs, Tab, Steps } from 'nextra-theme-docs';\nimport { AutomaticModeWarning } from '../../../components/automatic-mode-warning';\n\n# Virtualization\n\n<AutomaticModeWarning />\n\nMillion.js works with [TanStack Virtual](https://tanstack.com/virtual/v3/docs/guide/introduction). TanStack Virtual is a headless UI utility for virtualizing long lists of elements in React. Together, you can automatically use blocks within virtualized lists.\n\n## Why Virtualize?\n\nVirtualization is a technique for efficiently rendering large lists of items. It only renders the items that are currently visible to the user instead of rendering all of them. This dramatically reduces the number of DOM nodes that need to be created and updated which has a huge performance benefit.\n\n<Callout type=\"info\">\n  Want to compare Million.js vs React virtualization? Check out [this\n  demo!](https://million-tanstack-virtual.vercel.app/)\n</Callout>\n\n![Virtualization diagram](/virtualized.png)\n\n## Installation\n\nYou can easily install it via this command:\n\n<Tabs items={['npm', 'pnpm', 'yarn', 'bun']} storageKey=\"selected-pkg-manager\">\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  npm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  pnpm install @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  yarn add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n  {/* prettier-ignore */}\n  <Tab>\n  ```bash copy\n  bun add @tanstack/react-virtual@beta\n  ```\n  </Tab>\n</Tabs>\n\n## Example\n\nHere is just a quick example of what it looks like to virtualize a long list within a `div` using TanStack Virtual with Million.js:\n\n```jsx\nimport { useRef } from 'react';\nimport { For } from 'million/react';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nfunction App() {\n  const parentRef = useRef();\n\n  const rowVirtualizer = useVirtualizer({\n    count: 10000,\n    getScrollElement: () => parentRef.current,\n    estimateSize: () => 35,\n  });\n\n  return (\n    <>\n      <div ref={parentRef} style={{ height: `400px`, overflow: 'auto' }}>\n        <For\n          each={rowVirtualizer.getVirtualItems()}\n          style={{\n            height: `${rowVirtualizer.getTotalSize()}px`,\n            width: '100%',\n            position: 'relative',\n          }}\n          as=\"div\"\n        >\n          {(virtualItem) => (\n            <div\n              key={virtualItem.key}\n              style={{\n                position: 'absolute',\n                top: 0,\n                left: 0,\n                width: '100%',\n                fontSize: '20px',\n                height: `${virtualItem.size}px`,\n                transform: `translateY(${virtualItem.start}px)`,\n              }}\n            >\n              Row {virtualItem.index}\n            </div>\n          )}\n        </For>\n      </div>\n    </>\n  );\n}\n```\n"
  },
  {
    "path": "website/pages/faq.en-US.mdx",
    "content": "---\ntitle: 'FAQ'\ndescription: 'Frequently asked questions about Million.js'\n---\n\nimport { FAQ } from '../components/home/faq';\n\n<main className=\"my-[100px]\">\n  <FAQ />\n</main>\n"
  },
  {
    "path": "website/pages/faq.es-ES.mdx",
    "content": "---\ntitle: 'FAQ'\ndescription: 'Frequently asked questions about Million.js'\n---\n\nimport { FAQ } from '../components/home/faq';\n\n<main className=\"my-[100px]\">\n  <FAQ />\n</main>\n"
  },
  {
    "path": "website/pages/faq.fr-FR.mdx",
    "content": "---\ntitle: 'FAQ'\ndescription: 'Foire aux questions sur Million.js'\n---\n\nimport { FAQ } from '../components/home/faq';\n\n<main className=\"my-[100px]\">\n  <FAQ />\n</main>\n"
  },
  {
    "path": "website/pages/faq.zh-CN.mdx",
    "content": "---\ntitle: 'FAQ'\ndescription: 'Frequently asked questions about Million.js'\n---\n\nimport { FAQ } from '../components/home/faq';\n\n<main className=\"my-[100px]\">\n  <FAQ />\n</main>\n"
  },
  {
    "path": "website/pages/foundation.en-US.mdx",
    "content": "---\ntitle: Million.js Foundation\ndescription: The Million.js Foundation is an independent, non-profit organization dedicated to stewarding the Million.js project, nurturing the Million.js ecosystem, and supporting the set of maintainers governing and developing the project.\n---\n\nimport Image from 'next/image';\n\n# Million.js Foundation\n\nThe Million.js Foundation (Fiscally sponsored by Hack Club – EIN: 81-2908499) is an independent, non-profit organization dedicated to stewarding the Million.js project, nurturing the Million.js ecosystem, and supporting the set of maintainers governing and developing the project.\n\nIt's important to note that the Million.js Foundation is not legally associated with the Million.js project. The Million.js Foundation is a separate entity from the Million.js project.\n\nMillion.js was initially created by [Aiden Bai](https://aiden.mov) in 2021 as a [research project](https://dl.acm.org/doi/10.1145/3555776.3577683). Since then, it has grown into a community-driven project with over 40 contributors.\n\nLooking to join us? **Say hi 👋 to the Million.js crew:**\n\n<br />\n\n<a href=\"https://github.com/aidenybai/million/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=aidenybai/million\" />\n</a>\n\n## Design Assets\n\nFeel free to use the Million.js logo and other assets in your project. But please\ndon't modify the logo, and don't use the logo to represent your project or\nproduct.\n\n|    Name     |                   Description                    |                                       Preview                                       |\n| :---------: | :----------------------------------------------: | :---------------------------------------------------------------------------------: |\n|    Icon     | Useful for favicons, app icons, link icons, etc. | <Image className=\"m-5\" alt=\"favicon\" src=\"/favicon.svg\" width={150} height={150} /> |\n|    Logo     |               Full Million.js logo               | <Image className=\"m-5\" alt=\"logo\" src=\"/text-logo.svg\" width={300} height={100} />  |\n| Social Card |            The Million.js social card            |                          ![Million.js banner](/banner.png)                          |\n\n## Acknowledgments\n\nMillion takes heavy inspiration from the following projects:\n\n- [`blockdom`](https://github.com/ged-odoo/blockdom) ([Géry Debongnie](https://github.com/ged-odoo))\n  Thank you to Géry pioneering the concept of \"blocks\" in the virtual DOM. Many parts of the Million.js codebase either directly or indirectly derive from his work.\n- [`voby`](https://github.com/vobyjs/voby) ([Fabio Spampinato](https://github.com/fabiospampinato))\n  The Million.js \"template\" concept is derived from Voby's `template()` API.\n- [Hack the Wave](https://hackthewave.com) ([Melinda Chang](https://github.com/melindachang)) for their homepage.\n- [`react`](https://react.dev) and [`turbo`](https://turbo.build) for their documentation. Many parts of the current Million.js documentation are grokked and modified from theirs.\n- [`ivi`](https://github.com/localvoid/ivi), [Preact](https://github.com/preactjs/preact), [and more](https://krausest.github.io/js-framework-benchmark/2021/table_chrome_96.0.4664.45.html)\n\nMillion is being used at companies like [Wyze](https://wyze.com) and [Dimension](https://dimension.dev), as well as open source work like [Quartz](https://github.com/jackyzha0/quartz), [TinyPages](https://github.com/Borrus-sudo/tinypages), [and more](https://github.com/aidenybai/million/network/dependents).\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/aidenybai\">\n    <img src=\"https://raw.githubusercontent.com/aidenybai/aidenybai/master/sponsors.svg\" />\n  </a>\n  <a href=\"https://vercel.com?utm_source=millionjs&utm_campaign=oss\">\n    <img\n      height=\"30\"\n      src=\"https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg\"\n    />\n  </a>\n</p>\n\n## License\n\nMillion is MIT-licensed open-source software.\n"
  },
  {
    "path": "website/pages/foundation.es-ES.mdx",
    "content": "---\ntitle: Fundación Million.js\ndescription: La Fundación Million.js es una organización independiente sin ánimo de lucro, dedicada a la gestión del proyecto Million.js, nutrir el ecosistema de Million.js, y dar soporte al conjunto de mantenedores que rigen y desarrollan el proyecto.\n---\n\nimport Image from 'next/image';\n\n# Fundación Million.js\n\nLa Fundación Million.js (Fiscalmente patrocinado por Hack Club – EIN: 81-2908499) es una organización independiente sin ánimo de lucro, dedicada a la gestión del proyecto Million.js, nutrir el ecosistema de Million.js, y dar soporte al conjunto de mantenedores que rigen y desarrollan el proyecto.\n\nEs importante notar que la Fundación Million.js no está legalmente asociada con el proyecto Million.js. La Fundación Million.js es una entidad separada del proyecto Million.js.\n\nMillion.js fué creado inicialmente por [Aiden Bai](https://aiden.mov) en 2021 como un [proyecto de investigación](https://dl.acm.org/doi/10.1145/3555776.3577683). Desde entonces, ha crecido hasta convertirse en un proyecto impulsado por la comunidad con más de 40 contribuidores.\n\n¿Quieres unírtenos? **Di hola 👋 al equipo Million.js:**\n\n<br />\n\n<a href=\"https://github.com/aidenybai/million/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=aidenybai/million\" />\n</a>\n\n## Recursos de Diseño\n\nSientete libre de usar el logotipo de Million.js y otros recursos en tu proyecto. Pero por favor\nno lo modifiques o uses para representar tu proyecto o producto.\n\n|     Nombre     |                       Descripción                        |                                    Vista Previa                                     |\n| :------------: | :------------------------------------------------------: | :---------------------------------------------------------------------------------: |\n|     Icono      | Útil para favicons, iconos de app, iconos de links, etc. | <Image className=\"m-5\" alt=\"favicon\" src=\"/favicon.svg\" width={150} height={150} /> |\n|    Logotipo    |             Logotipo completo de Million.js              | <Image className=\"m-5\" alt=\"logo\" src=\"/text-logo.svg\" width={300} height={100} />  |\n| Tarjeta Social |               Tarjeta social de Million.js               |                          ![Million.js banner](/banner.png)                          |\n\n## Agradecimientos\n\nMillion está fuertemente inspirado en los siguientes proyectos:\n\n- [`blockdom`](https://github.com/ged-odoo/blockdom) ([Géry Debongnie](https://github.com/ged-odoo))\n  Gracias a Géry por ser el pionero del concepto de \"blocks\" en el virtual DOM. Mucho del código fuente de Million.js deriva directa o indirectamente de su trabajo.\n- [`voby`](https://github.com/vobyjs/voby) ([Fabio Spampinato](https://github.com/fabiospampinato))\n  El concepto de \"template\" de Million.js se deriva de la API `template()` de Voby.\n- [Hack the Wave](https://hackthewave.com) ([Melinda Chang](https://github.com/melindachang)) por su página principal.\n- [`react`](https://react.dev) y [`turbo`](https://turbo.build) por su documentación. Algunas partes de la documentación actual de Million.js son comprendidas y modificadas a partir de la suya.\n- [`ivi`](https://github.com/localvoid/ivi), [Preact](https://github.com/preactjs/preact), [y más](https://krausest.github.io/js-framework-benchmark/2021/table_chrome_96.0.4664.45.html)\n\nMillion esta siendo utilizado en compañías como [Wyze](https://wyze.com) y [Dimension](https://dimension.dev), así como en proyectos de código abierto como [Quartz](https://github.com/jackyzha0/quartz), [TinyPages](https://github.com/Borrus-sudo/tinypages), [y más](https://github.com/aidenybai/million/network/dependents).\n\n## Patrocinadores\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/aidenybai\">\n    <img src=\"https://raw.githubusercontent.com/aidenybai/aidenybai/master/sponsors.svg\" />\n  </a>\n  <a href=\"https://vercel.com?utm_source=millionjs&utm_campaign=oss\">\n    <img\n      height=\"30\"\n      src=\"https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg\"\n    />\n  </a>\n</p>\n\n## Licencia\n\nMillion es software de código abierto bajo la licencia MIT.\n"
  },
  {
    "path": "website/pages/foundation.fr-FR.mdx",
    "content": "---\ntitle: Fondation Million.js\ndescription: La Fondation Million.js est une organisation indépendante à but non lucratif dédiée à la gestion du projet Million.js, au développement de l'écosystème Million.js et au soutien de l'ensemble des mainteneurs qui gèrent et développent le projet.\n---\n\nimport Image from 'next/image';\n\n# Fondation Million.js\n\nLa Fondation Million.js (sponsorisée fiscalement par Hack Club - EIN : 81-2908499) est une organisation indépendante à but non lucratif dédiée à la gestion du projet Million.js, au développement de l'écosystème Million.js, et au soutien de l'ensemble des mainteneurs qui gouvernent et développent le projet.\n\nIl est important de noter que la Fondation Million.js n'est pas légalement associée au projet Million.js. La Fondation Million.js est une entité distincte du projet Million.js.\n\nMillion.js a été initialement créé par [Aiden Bai](https://aiden.mov) en 2021 en tant que [projet de recherche](https://dl.acm.org/doi/10.1145/3555776.3577683).. Depuis, il est devenu un projet communautaire avec plus de 40 contributeurs.\n\nVous souhaitez nous rejoindre? **Dites bonjour 👋 à l'équipe de Million.js:**\n\n<br />\n\n<a href=\"https://github.com/aidenybai/million/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=aidenybai/million\" />\n</a>\n\n## Eléments graphique\n\nN'hésitez pas à utiliser le logo Million.js et d'autres éléments dans votre projet. \nMais ne modifiez pas le logo et n'utilisez pas le logo pour représenter votre projet ou votre produit.\nUtile pour les favicons, les icônes d'applications, les icônes de liens, etc.\n|    Nom       |                   Description                                     |                                       Aperçu                                       |\n| :-----------: | :---------------------------------------------------------------: | :---------------------------------------------------------------------------------: |\n|    Icon       | Utile pour favicons, îcones d'applications, îcones de liens, etc. | <Image className=\"m-5\" alt=\"favicon\" src=\"/favicon.svg\" width={150} height={150} /> |\n|    Logo       |               Logo complet de Million.js                                | <Image className=\"m-5\" alt=\"logo\" src=\"/text-logo.svg\" width={300} height={100} />  |\n| Carte sociale |            La carte sociale Million.js                             |                          ![Million.js banner](/banner.png)                          |\n\n## Remerciements\n\nMillion s'inspire fortement des projets suivants :\n\n- [`blockdom`](https://github.com/ged-odoo/blockdom) ([Géry Debongnie](https://github.com/ged-odoo))\n  Merci à Géry d'avoir été le pionnier du concept de \"blocs\" dans le DOM virtuel. De nombreuses parties de la base de code Million.js dérivent directement ou indirectement de son travail.\n- [`voby`](https://github.com/vobyjs/voby) ([Fabio Spampinato](https://github.com/fabiospampinato))\n  Le concept de \"template\" de Million.js est dérivé de l'API `template()` de Voby.\n- [Hack the Wave](https://hackthewave.com) ([Melinda Chang](https://github.com/melindachang)) Pour leur page d'accueil.\n- [`react`](https://react.dev) et [`turbo`](https://turbo.build) pour leur documentation. De nombreuses parties de la documentation actuelle de Million.js sont inspirées et modifiées à partir de leur documentation.\n- [`ivi`](https://github.com/localvoid/ivi), [Preact](https://github.com/preactjs/preact), [et autres](https://krausest.github.io/js-framework-benchmark/2021/table_chrome_96.0.4664.45.html)\n\nMillion est utilisé par des entreprises telles que [Wyze](https://wyze.com) et [Dimension](https://dimension.dev), ainsi que par des entreprises open source telles que [Quartz](https://github.com/jackyzha0/quartz), [TinyPages](https://github.com/Borrus-sudo/tinypages), [et autres](https://github.com/aidenybai/million/network/dependents).\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/aidenybai\">\n    <img src=\"https://raw.githubusercontent.com/aidenybai/aidenybai/master/sponsors.svg\" />\n  </a>\n  <a href=\"https://vercel.com?utm_source=millionjs&utm_campaign=oss\">\n    <img\n      height=\"30\"\n      src=\"https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg\"\n    />\n  </a>\n</p>\n\n## Licence\n\nMillion est un logiciel libre sous licence MIT.\n"
  },
  {
    "path": "website/pages/foundation.zh-CN.mdx",
    "content": "---\ntitle: Million.js Foundation\ndescription: The Million.js Foundation is an independent, non-profit organization dedicated to stewarding the Million.js project, nurturing the Million.js ecosystem, and supporting the set of maintainers governing and developing the project.\n---\n\nimport Image from 'next/image';\n\n# Million.js Foundation\n\nThe Million.js Foundation (Fiscally sponsored by Hack Club – EIN: 81-2908499) is an independent, non-profit organization dedicated to stewarding the Million.js project, nurturing the Million.js ecosystem, and supporting the set of maintainers governing and developing the project.\n\nIt's important to note that the Million.js Foundation is not legally associated with the Million.js project. The Million.js Foundation is a separate entity from the Million.js project.\n\nMillion.js was initially created by [Aiden Bai](https://aiden.mov) in 2021 as a [research project](https://dl.acm.org/doi/10.1145/3555776.3577683). Since then, it has grown into a community-driven project with over 40 contributors.\n\nLooking to join us? **Say hi 👋 to the Million.js crew:**\n\n<br />\n\n<a href=\"https://github.com/aidenybai/million/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=aidenybai/million\" />\n</a>\n\n## Design Assets\n\nFeel free to use the Million.js logo and other assets in your project. But please\ndon't modify the logo, and don't use the logo to represent your project or\nproduct.\n\n|    Name     |                   Description                    |                                       Preview                                       |\n| :---------: | :----------------------------------------------: | :---------------------------------------------------------------------------------: |\n|    Icon     | Useful for favicons, app icons, link icons, etc. | <Image className=\"m-5\" alt=\"favicon\" src=\"/favicon.svg\" width={150} height={150} /> |\n|    Logo     |               Full Million.js logo               | <Image className=\"m-5\" alt=\"logo\" src=\"/text-logo.svg\" width={300} height={100} />  |\n| Social Card |            The Million.js social card            |                          ![Million.js banner](/banner.png)                          |\n\n## Acknowledgments\n\nMillion takes heavy inspiration from the following projects:\n\n- [`blockdom`](https://github.com/ged-odoo/blockdom) ([Géry Debongnie](https://github.com/ged-odoo))\n  Thank you to Géry pioneering the concept of \"blocks\" in the virtual DOM. Many parts of the Million.js codebase either directly or indirectly derive from his work.\n- [`voby`](https://github.com/vobyjs/voby) ([Fabio Spampinato](https://github.com/fabiospampinato))\n  The Million.js \"template\" concept is derived from Voby's `template()` API.\n- [Hack the Wave](https://hackthewave.com) ([Melinda Chang](https://github.com/melindachang)) for their homepage.\n- [`react`](https://react.dev) and [`turbo`](https://turbo.build) for their documentation. Many parts of the current Million.js documentation are grokked and modified from theirs.\n- [`ivi`](https://github.com/localvoid/ivi), [Preact](https://github.com/preactjs/preact), [and more](https://krausest.github.io/js-framework-benchmark/2021/table_chrome_96.0.4664.45.html)\n\nMillion is being used at companies like [Wyze](https://wyze.com) and [Dimension](https://dimension.dev), as well as open source work like [Quartz](https://github.com/jackyzha0/quartz), [TinyPages](https://github.com/Borrus-sudo/tinypages), [and more](https://github.com/aidenybai/million/network/dependents).\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://github.com/sponsors/aidenybai\">\n    <img src=\"https://raw.githubusercontent.com/aidenybai/aidenybai/master/sponsors.svg\" />\n  </a>\n  <a href=\"https://vercel.com?utm_source=millionjs&utm_campaign=oss\">\n    <img\n      height=\"30\"\n      src=\"https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg\"\n    />\n  </a>\n</p>\n\n## License\n\nMillion is MIT-licensed open-source software.\n"
  },
  {
    "path": "website/pages/index.en-US.mdx",
    "content": "---\ntitle: 'Million.js'\ndescription: 'The Virtual DOM Replacement for React'\n---\n\nimport { Home } from '../components/home';\n\n<Home />\n"
  },
  {
    "path": "website/pages/index.es-ES.mdx",
    "content": "---\ntitle: Biblioteca React Hooks para la obtención de datos\n---\n\nimport { Home } from '../components/home';\n\n<Home />\n"
  },
  {
    "path": "website/pages/index.fr-FR.mdx",
    "content": "---\ntitle: 'Million.js'\ndescription: 'Le DOM virtuel de Block'\n---\n\nimport { Home } from '../components/home';\n\n<Home />\n"
  },
  {
    "path": "website/pages/index.zh-CN.mdx",
    "content": "---\ntitle: React хуки для получения данных\n---\n\nimport { Home } from '../components/home';\n\n<Home />\n"
  },
  {
    "path": "website/pages/lint.en-US.mdx",
    "content": "---\ntitle: 'Million Lint'\ndescription: 'Find and fix slow React components'\n---\n\nimport Home from '../components/lint';\n\n<Home />\n"
  },
  {
    "path": "website/pages/privacy.en-US.mdx",
    "content": "---\ntitle: Privacy Policy\ndescription: Privacy Policy for Million.js\n---\n\n# Privacy Policy\n\n**Effective Date: February 2024**\n\nPlease note that the code you upload to Million servers is subject to the Code Policy.\n\nWelcome to Million, a product of Million Software, Inc. (\"we\", \"us\", \"our\"). We are committed to protecting your privacy and ensuring that your personal information is handled in a safe and responsible manner. This Privacy Policy outlines our practices regarding the collection, use, and sharing of your information through our software and services (collectively, the \"Services\").\n\n## 1. Information We Collect\n\n### a. Information You Provide to Us\n\n- **Account Information**: When you create an account, we may collect your name, email address, password, and other details necessary for registration.\n- **Payment Information**: For purchases, we collect payment details, which may include credit card numbers, billing addresses, and other financial information.\n- **Support and Communication**: If you contact us directly, we may receive additional information about you such as your name, email address, phone number, the contents of the message and/or attachments you may send us, and any other information you may choose to provide.\n\n### b. Information We Collect Automatically\n\n- **Usage Information**: We monitor user activity in connection with the Services and may collect information about the features you use, the time, frequency, and duration of your activities.\n- **Device Information**: We collect information about the device accessing the Services, including hardware model, operating system, unique device identifiers, and browser type.\n- **Cookies and Tracking Technologies**: We use cookies and similar tracking technologies to track activity on our Services and hold certain information.\n\n## 2. How We Use Your Information\n\nWe use the information we collect to:\n\n- Provide, operate, and maintain our Services\n- Improve, personalize, and expand our Services\n- Understand and analyze how you use our Services\n- Develop new products, services, features, and functionality\n- Communicate with you, either directly or through one of our partners, including for customer service, to provide you with updates and other information relating to the website, and for marketing and promotional purposes\n- Process your transactions\n- Find and prevent fraud\n\n## 3. Sharing Your Information\n\nWe may share your information with third parties in the following situations:\n\n- **With Your Consent**: We may disclose your personal information for any purpose with your consent.\n- **Service Providers**: We may share your information with third-party service providers that perform services for us or on our behalf, such as payment processing, data analysis, email delivery, hosting services, customer service, and marketing assistance.\n- **Legal Obligations**: We may disclose your information as required by law or in response to valid requests by public authorities (e.g., a court or a government agency).\n- **Business Transfers**: In connection with any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company, your information may be among the assets transferred.\n\n## 4. Your Data Protection Rights\n\nDepending on your location, you may have the right to:\n\n- Access, correct, update, or request deletion of your personal information.\n  Object to processing of your personal information, ask us to restrict processing of your personal information or request portability of your personal information.\n- Withdraw your consent at any time if we have collected and processed your personal information with your consent.\n- Complain to a data protection authority about our collection and use of your personal information. 5. Third-Party Services\n- Our Services may contain links to third-party websites or services that are not owned or controlled by Million, Inc. We are not responsible for the privacy practices or the content of third-party websites.\n\n## 6. Security\n\nWe strive to use commercially acceptable means to protect your personal information, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure.\n\n## 7. Changes to This Privacy Policy\n\nWe may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. You are advised to review this Privacy Policy periodically for any changes.\n\n## 8. Contact Us\n\nIf you have any questions about this Privacy Policy, please contact us at aiden@million.dev.\n"
  },
  {
    "path": "website/pages/showcase.en-US.mdx",
    "content": "---\ntitle: Showcase\n---\n\nimport { Card, Cards } from 'nextra/components';\n\n{<h1 className=\"mt-10 mb-4 text-center text-[2.5rem] font-bold tracking-tight\">Showcase</h1>}\n\n{<p className=\"mb-16 text-center text-lg text-gray-500 dark:text-gray-400\">Projects powered by Million.js.</p>}\n\n<Cards>\n  <ShowcaseCard title=\"Wyze\" href=\"https://wyze.com/\">\n    <>![Wyze preview](./showcase/wyze.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Metamask\" href=\"https://metamask.io/\">\n    <>![Metamask preview](./showcase/metamask.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Hack Club\" href=\"https://hackclub.com/\">\n    <>![Hack Club preview](./showcase/hackclub.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Texts\" href=\"https://texts.com/\">\n    <>![Texts preview](./showcase/texts.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"OpenSauced\" href=\"https://opensauced.pizza/\">\n    <>![OpenSauced preview](./showcase/opensauced.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Typehero\" href=\"https://typehero.dev/\">\n    <>![Typehero preview](./showcase/typehero.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"movie-web\" href=\"https://movie-web.app/\">\n    <>![movie-web preview](./showcase/movie-web.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LLM Report\" href=\"https://llm.report/\">\n    <>![LLM Report preview](./showcase/llm-report.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Supabox AI\" href=\"https://supaboxai.com/\">\n    <>![Supabox AI preview](./showcase/supabox.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Studio Freight\" href=\"https://studiofreight.com/\">\n    <>![Studio Freight preview](./showcase/studio-freight.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Dona AI\" href=\"https://dona.ai/\">\n    <>![Dona AI preview](./showcase/dona-ai.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"T4 Stack\" href=\"https://t4stack.com/\">\n    <>![T4 Stack preview](./showcase/t4stack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Veganify\" href=\"https://veganify.app/\">\n    <>![Veganify preview](./showcase/veganify.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard\n    title=\"Windows 11 Web\"\n    href=\"https://github.com/PiyushSuthar/Windows-11-Web\"\n  >\n    <>![Windows 11 Web preview](./showcase/windows-11-web.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"jahir.dev\" href=\"https://jahir.dev/\">\n    <>![jahir.dev preview](./showcase/jahir-dev.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LogLib\" href=\"https://www.loglib.io/\">\n    <>![LogLib preview](./showcase/loglib.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Comty\" href=\"https://github.com/ragestudio/comty\">\n    <>![Comty preview](./showcase/comty.svg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"4c\" href=\"https://4c.rocks\">\n    <>![4c preview](./showcase/4c.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LlmStack\" href=\"https://llmstack.ai/\">\n    <>![LlmStack preview](./showcase/llmstack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Penx\" href=\"https://www.penx.io/\">\n    <>![Penx preview](./showcase/penx.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Radon\" href=\"https://radon.games/\">\n    <>![Radon preview](./showcase/radon.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"JSON Crack\" href=\"https://jsoncrack.com/\">\n    <>![JSON Crack preview](./showcase/json-crack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Cap\" href=\"https://cap.so/\">\n    <>![Cap preview](./showcase/cap.png)</>\n  </ShowcaseCard>\n</Cards>\n\nexport const ShowcaseCard = Object.assign(\n  // Copy card component and add default props\n  Card.bind(),\n  {\n    displayName: 'ShowcaseCard',\n    defaultProps: {\n      image: true,\n      arrow: true,\n      target: '_blank',\n    },\n  },\n);\n\n<style global jsx>{`\n  img {\n    aspect-ratio: 12/6.3;\n    object-fit: cover;\n  }\n`}</style>\n"
  },
  {
    "path": "website/pages/showcase.es-ES.mdx",
    "content": "---\ntitle: Showcase\n---\n\nimport { Card, Cards } from 'nextra/components';\n\n{<h1 className=\"mt-10 mb-4 text-center text-[2.5rem] font-bold tracking-tight\">Showcase</h1>}\n\n{<p className=\"mb-16 text-center text-lg text-gray-500 dark:text-gray-400\">Projects powered by Million.js.</p>}\n\n<Cards>\n  <ShowcaseCard title=\"Wyze\" href=\"https://wyze.com/\">\n    <>![Wyze preview](./showcase/wyze.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Metamask\" href=\"https://metamask.io/\">\n    <>![Metamask preview](./showcase/metamask.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Hack Club\" href=\"https://hackclub.com/\">\n    <>![Hack Club preview](./showcase/hackclub.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Texts\" href=\"https://texts.com/\">\n    <>![Texts preview](./showcase/texts.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"OpenSauced\" href=\"https://opensauced.pizza/\">\n    <>![OpenSauced preview](./showcase/opensauced.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Typehero\" href=\"https://typehero.dev/\">\n    <>![Typehero preview](./showcase/typehero.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"movie-web\" href=\"https://movie-web.app/\">\n    <>![movie-web preview](./showcase/movie-web.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LLM Report\" href=\"https://llm.report/\">\n    <>![LLM Report preview](./showcase/llm-report.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Supabox AI\" href=\"https://supaboxai.com/\">\n    <>![Supabox AI preview](./showcase/supabox.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Studio Freight\" href=\"https://studiofreight.com/\">\n    <>![Studio Freight preview](./showcase/studio-freight.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Dona AI\" href=\"https://dona.ai/\">\n    <>![Dona AI preview](./showcase/dona-ai.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"T4 Stack\" href=\"https://t4stack.com/\">\n    <>![T4 Stack preview](./showcase/t4stack.png)</>\n  </ShowcaseCard>\n   <ShowcaseCard title=\"Veganify\" href=\"https://veganify.app/\">\n    <>![Veganify preview](./showcase/veganify.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard\n    title=\"Windows 11 Web\"\n    href=\"https://github.com/PiyushSuthar/Windows-11-Web\"\n  >\n    <>![Windows 11 Web preview](./showcase/windows-11-web.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"jahir.dev\" href=\"https://jahir.dev/\">\n    <>![jahir.dev preview](./showcase/jahir-dev.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LogLib\" href=\"https://www.loglib.io/\">\n    <>![LogLib preview](./showcase/loglib.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Comty\" href=\"https://github.com/ragestudio/comty\">\n    <>![Comty preview](./showcase/comty.svg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"4c\" href=\"https://4c.rocks\">\n    <>![4c preview](./showcase/4c.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LlmStack\" href=\"https://llmstack.ai/\">\n    <>![LlmStack preview](./showcase/llmstack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Penx\" href=\"https://www.penx.io/\">\n    <>![Penx preview](./showcase/penx.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Radon\" href=\"https://radon.games/\">\n    <>![Radon preview](./showcase/radon.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"JSON Crack\" href=\"https://jsoncrack.com/\">\n    <>![JSON Crack preview](./showcase/json-crack.png)</>\n  </ShowcaseCard>\n</Cards>\n\nexport const ShowcaseCard = Object.assign(\n  // Copy card component and add default props\n  Card.bind(),\n  {\n    displayName: 'ShowcaseCard',\n    defaultProps: {\n      image: true,\n      arrow: true,\n      target: '_blank',\n    },\n  },\n);\n\n<style global jsx>{`\n  img {\n    aspect-ratio: 12/6.3;\n    object-fit: cover;\n  }\n`}</style>\n"
  },
  {
    "path": "website/pages/showcase.fr-FR.mdx",
    "content": "---\ntitle: Showcase\n---\n\nimport { Card, Cards } from 'nextra/components';\n\n{<h1 className=\"mt-10 mb-4 text-center text-[2.5rem] font-bold tracking-tight\">Showcase</h1>}\n\n{<p className=\"mb-16 text-center text-lg text-gray-500 dark:text-gray-400\">Projects powered by Million.js.</p>}\n\n<Cards>\n  <ShowcaseCard title=\"Wyze\" href=\"https://wyze.com/\">\n    <>![Wyze preview](./showcase/wyze.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Metamask\" href=\"https://metamask.io/\">\n    <>![Metamask preview](./showcase/metamask.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Hack Club\" href=\"https://hackclub.com/\">\n    <>![Hack Club preview](./showcase/hackclub.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Texts\" href=\"https://texts.com/\">\n    <>![Texts preview](./showcase/texts.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"OpenSauced\" href=\"https://opensauced.pizza/\">\n    <>![OpenSauced preview](./showcase/opensauced.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Typehero\" href=\"https://typehero.dev/\">\n    <>![Typehero preview](./showcase/typehero.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"movie-web\" href=\"https://movie-web.app/\">\n    <>![movie-web preview](./showcase/movie-web.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LLM Report\" href=\"https://llm.report/\">\n    <>![LLM Report preview](./showcase/llm-report.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Supabox AI\" href=\"https://supaboxai.com/\">\n    <>![Supabox AI preview](./showcase/supabox.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Studio Freight\" href=\"https://studiofreight.com/\">\n    <>![Studio Freight preview](./showcase/studio-freight.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Dona AI\" href=\"https://dona.ai/\">\n    <>![Dona AI preview](./showcase/dona-ai.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"T4 Stack\" href=\"https://t4stack.com/\">\n    <>![T4 Stack preview](./showcase/t4stack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Veganify\" href=\"https://veganify.app/\">\n    <>![Veganify preview](./showcase/veganify.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard\n    title=\"Windows 11 Web\"\n    href=\"https://github.com/PiyushSuthar/Windows-11-Web\"\n  >\n    <>![Windows 11 Web preview](./showcase/windows-11-web.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"jahir.dev\" href=\"https://jahir.dev/\">\n    <>![jahir.dev preview](./showcase/jahir-dev.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LogLib\" href=\"https://www.loglib.io/\">\n    <>![LogLib preview](./showcase/loglib.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Comty\" href=\"https://github.com/ragestudio/comty\">\n    <>![Comty preview](./showcase/comty.svg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"4c\" href=\"https://4c.rocks\">\n    <>![4c preview](./showcase/4c.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LlmStack\" href=\"https://llmstack.ai/\">\n    <>![LlmStack preview](./showcase/llmstack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Penx\" href=\"https://www.penx.io/\">\n    <>![Penx preview](./showcase/penx.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Radon\" href=\"https://radon.games/\">\n    <>![Radon preview](./showcase/radon.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"JSON Crack\" href=\"https://jsoncrack.com/\">\n    <>![JSON Crack preview](./showcase/json-crack.png)</>\n  </ShowcaseCard>\n</Cards>\n\nexport const ShowcaseCard = Object.assign(\n  // Copy card component and add default props\n  Card.bind(),\n  {\n    displayName: 'ShowcaseCard',\n    defaultProps: {\n      image: true,\n      arrow: true,\n      target: '_blank',\n    },\n  },\n);\n\n<style global jsx>{`\n  img {\n    aspect-ratio: 12/6.3;\n    object-fit: cover;\n  }\n`}</style>\n"
  },
  {
    "path": "website/pages/showcase.zh-CN.mdx",
    "content": "---\ntitle: Showcase\n---\n\nimport { Card, Cards } from 'nextra/components';\n\n{<h1 className=\"mt-10 mb-4 text-center text-[2.5rem] font-bold tracking-tight\">Showcase</h1>}\n\n{<p className=\"mb-16 text-center text-lg text-gray-500 dark:text-gray-400\">Projects powered by Million.js.</p>}\n\n<Cards>\n  <ShowcaseCard title=\"Wyze\" href=\"https://wyze.com/\">\n    <>![Wyze preview](./showcase/wyze.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Metamask\" href=\"https://metamask.io/\">\n    <>![Metamask preview](./showcase/metamask.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Hack Club\" href=\"https://hackclub.com/\">\n    <>![Hack Club preview](./showcase/hackclub.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Texts\" href=\"https://texts.com/\">\n    <>![Texts preview](./showcase/texts.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"OpenSauced\" href=\"https://opensauced.pizza/\">\n    <>![OpenSauced preview](./showcase/opensauced.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Typehero\" href=\"https://typehero.dev/\">\n    <>![Typehero preview](./showcase/typehero.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"movie-web\" href=\"https://movie-web.app/\">\n    <>![movie-web preview](./showcase/movie-web.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LLM Report\" href=\"https://llm.report/\">\n    <>![LLM Report preview](./showcase/llm-report.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Supabox AI\" href=\"https://supaboxai.com/\">\n    <>![Supabox AI preview](./showcase/supabox.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Studio Freight\" href=\"https://studiofreight.com/\">\n    <>![Studio Freight preview](./showcase/studio-freight.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Dona AI\" href=\"https://dona.ai/\">\n    <>![Dona AI preview](./showcase/dona-ai.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"T4 Stack\" href=\"https://t4stack.com/\">\n    <>![T4 Stack preview](./showcase/t4stack.png)</>\n  </ShowcaseCard>\n   <ShowcaseCard title=\"Veganify\" href=\"https://veganify.app/\">\n    <>![Veganify preview](./showcase/veganify.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard\n    title=\"Windows 11 Web\"\n    href=\"https://github.com/PiyushSuthar/Windows-11-Web\"\n  >\n    <>![Windows 11 Web preview](./showcase/windows-11-web.jpeg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"jahir.dev\" href=\"https://jahir.dev/\">\n    <>![jahir.dev preview](./showcase/jahir-dev.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LogLib\" href=\"https://www.loglib.io/\">\n    <>![LogLib preview](./showcase/loglib.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Comty\" href=\"https://github.com/ragestudio/comty\">\n    <>![Comty preview](./showcase/comty.svg)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"4c\" href=\"https://4c.rocks\">\n    <>![4c preview](./showcase/4c.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"LlmStack\" href=\"https://llmstack.ai/\">\n    <>![LlmStack preview](./showcase/llmstack.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Penx\" href=\"https://www.penx.io/\">\n    <>![Penx preview](./showcase/penx.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"Radon\" href=\"https://radon.games/\">\n    <>![Radon preview](./showcase/radon.png)</>\n  </ShowcaseCard>\n  <ShowcaseCard title=\"JSON Crack\" href=\"https://jsoncrack.com/\">\n    <>![JSON Crack preview](./showcase/json-crack.png)</>\n  </ShowcaseCard>\n</Cards>\n\nexport const ShowcaseCard = Object.assign(\n  // Copy card component and add default props\n  Card.bind(),\n  {\n    displayName: 'ShowcaseCard',\n    defaultProps: {\n      image: true,\n      arrow: true,\n      target: '_blank',\n    },\n  },\n);\n\n<style global jsx>{`\n  img {\n    aspect-ratio: 12/6.3;\n    object-fit: cover;\n  }\n`}</style>\n"
  },
  {
    "path": "website/pages/telemetry.en-US.mdx",
    "content": "---\ntitle: Telemetry\ndescription: Million.js collects anonymous telemetry data about general usage. Participation is optional, and you may opt-out at any time.\n---\n\n# Telemetry\n\nMillion.js collects anonymous telemetry data about general usage. Participation is optional, and you may opt-out at any time.\n\nOur telemetry is directly <kbd>cmd-c</kbd> + <kbd>cmd-v</kbd> from Astro's amazing telemetry\nimplementation. You can read more about it{' '}<a href=\"https://astro.build/telemetry/\">here</a>.\n\n## Why is telemetry collected?\n\nAnonymous telemetry data makes up an important piece of our roadmap prioritization process. It gives our core team insight into broad trends in feature usage, pain points, and configuration which then helps us make more informed decisions about what to work on next.\n\n## What is being collected?\n\nWe track general usage information about Million.js and different configuration options that we support. Specifically, we track the following anonymous data:\n\n- Initializing a new project (`npx million@latest`)\n- Million.js version\n- General machine information (e.g. number of CPUs, macOS/Windows/Linux, CI environment, etc.)\n- General configuration information\n- Sanitized error information\n\nAn example telemetry event might look like this:\n\n```json\n{\n  \"event\": \"compile\",\n  \"payload\": {\n    \"framework\": \"vite\"\n  }\n}\n```\n\n## What about sensitive data?\n\nWe **do not** collect any metrics which may contain sensitive data. This includes, but is not limited to: environment variables, personally identifiable information, file paths, contents of files, logs, stack traces, git remote information, or unsanitized JavaScript error messages.\n\n## How is my data protected?\n\nThe data collected by Million.js is completely anonymous and only meaningful in aggregate form. The data that we store is not traceable to the source, and is only available to a small subset of the Million.js core maintainer team to help inform our roadmap prioritization.\n\nMillion.js does not track, collect, or store personally identifiable information (PII). The telemetry data that we do track has never and will never be sold or monetized in any form.\n\n## How do I opt out?\n\nYou can always opt-out by setting `telemetry: false` in the compiler config. This will disable telemetry across your entire machine, not just the project directory that you run it in:\n"
  },
  {
    "path": "website/pages/terms.en-US.mdx",
    "content": "---\ntitle: Code Policy\ndescription: Code Policy for Million.js\n---\n\n# Terms of Service Agreement for Million\n\n**Effective Date: February 2024**\n\nWelcome to Million, a software product developed and maintained by Million Software, Inc. (\"we\", \"us\", or \"our\"). By accessing or using Million (\"Software\"), you (\"User\" or \"you\") agree to be bound by these Terms of Service (\"Agreement\"). If you do not agree to the terms within this Agreement, please do not use or access the Software.\n\n## 1. Use of Software\n\nMillion is provided to you under a limited, non-exclusive, non-transferable, and revocable license for personal, commercial, or educational use, subject to the terms of this Agreement.\n\n## 2. User Accounts\n\nTo access certain features of the Software, you may be required to create an account. You are responsible for maintaining the confidentiality of your account information and are fully responsible for all activities that occur under your account.\n\n## 3. User Conduct\n\nYou agree not to use the Software in a manner that:\n\n- Violates any local, state, national, or international law or regulation.\n- Infringes on the rights of others, including but not limited to intellectual property rights.\n- Is harmful, fraudulent, deceptive, threatening, harassing, defamatory, obscene, or otherwise objectionable. ## 4. Intellectual Property\n  All rights, title, and interest in and to the Software (excluding content provided by users) are and will remain the exclusive property of Million Software, Inc. and its licensors.\n\n## 5. Termination\n\nWe may terminate or suspend your access to the Software immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms.\n\n## 6. Disclaimer of Warranties\n\nThe Software is provided \"as is\", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.\n\n## 7. Limitation of Liability\n\nIn no event shall Million, Software Inc., nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from (i) your access to or use of or inability to access or use the Software; (ii) any conduct or content of any third party on the Software; (iii) any content obtained from the Software; and (iv) unauthorized access, use or alteration of your transmissions or content, whether based on warranty, contract, tort (including negligence) or any other legal theory, whether or not we have been informed of the possibility of such damage, and even if a remedy set forth herein is found to have failed of its essential purpose.\n\n## 8. Indemnification\n\nYou agree to defend, indemnify and hold harmless Million Software, Inc. and its licensee and licensors, and their employees, contractors, agents, officers and directors, from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, and expenses (including but not limited to attorney's fees), resulting from or arising out of a) your use and access of the Software, by you or any person using your account and password, or b) a breach of these Terms.\n\n## 9. Modifications\n\nWe reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is material, we will provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at our sole discretion.\n\n## 10. Contact Us\n\n    If you have any questions about these Terms, please contact us at:\n\nMillion Software, Inc.\naiden@million.dev\n"
  },
  {
    "path": "website/pages/wrapped/[id].mdx",
    "content": "import Wrapped from '../../components/wrapped';\nimport { useData } from 'nextra/data';\n\nexport const getServerSideProps = (params) => {\n  return { props: { ssg: { id: params.query.id } } };\n};\n\nexport const Parent = () => {\n  const data = useData();\n  return <Wrapped {...data} />;\n};\n\n<Parent />\n"
  },
  {
    "path": "website/pages/wrapped/_meta.json",
    "content": "{\n  \"*\": {\n    \"display\": \"hidden\",\n    \"theme\": {\n      \"layout\": \"full\",\n      \"toc\": false,\n      \"sidebar\": false,\n      \"pagination\": false\n    }\n  }\n}\n"
  },
  {
    "path": "website/postcss.config.js",
    "content": "/** @type {import('postcss').Postcss} */\nmodule.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {}\n  }\n}"
  },
  {
    "path": "website/public/lint/demo.mp4.json",
    "content": "{\"status\":\"sourced\",\"originalFilePath\":\"public/lint/demo.mp4\",\"provider\":\"mux\",\"providerMetadata\":{},\"createdAt\":1710321745777,\"updatedAt\":1710321745777,\"size\":1725284}"
  },
  {
    "path": "website/styles/global.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer utilities {\n  .pause {\n    animation-play-state: paused;\n  }\n}\n\nhtml,\nbody {\n  font-family: Inter, -apple-system, BlinkMacSystemFont, avenir next, avenir,\n    segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial,\n    sans-serif;\n  color: #111;\n  background: #fff;\n  font-variant-numeric: tabular-nums;\n}\n\n#hero {\n  background: linear-gradient(to bottom, #fff 50%, #9e88d648 100%),\n    url(https://grainy-gradients.vercel.app/noise.svg);\n}\n\nhtml[class~='dark'] {\n  background: #111;\n}\n\nhtml[class~='dark'] #hero {\n  background: linear-gradient(to bottom, #111 50%, #2a2044af 100%),\n    url(https://grainy-gradients.vercel.app/noise.svg);\n}\n\n.gradient-bg {\n  background: linear-gradient(#a788ec, #8066b7);\n}\n\n.gradient-text {\n  --bg-size: 400%;\n  background: linear-gradient(90deg, #efa0a5, #a788ec, #efa0a5) 0 0 /\n    var(--bg-size) 100%;\n  background-clip: text;\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  filter: drop-shadow(0px 3.5px #c0beea8f);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .gradient-text {\n    animation: move-bg 16s linear infinite;\n  }\n  @keyframes move-bg {\n    to {\n      background-position: var(--bg-size) 0;\n    }\n  }\n}\n\nhtml[class~='dark'] .gradient-text {\n  filter: drop-shadow(0px 3.5px #54527b9f);\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n.animate-once {\n  -webkit-animation-iteration-count: 1;\n  animation-iteration-count: 1;\n}\n\n.animate-ping {\n  -webkit-animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n  animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n}\n\n@keyframes ping {\n  0% {\n    transform: scale(1);\n    opacity: 1;\n  }\n  75%,\n  100% {\n    transform: scale(2);\n    opacity: 0;\n  }\n}\n\narticle p a,\narticle li a,\narticle td a {\n  color: #9766e0 !important;\n  transition: color 0.2s ease;\n}\n\narticle p a:hover,\narticle li a:hover,\narticle td a:hover {\n  color: #ac8bde !important;\n}\n\nhtml.dark p a:hover,\nhtml.dark li a:hover {\n  color: #7445ba !important;\n}\n\nli > a {\n  white-space: nowrap;\n}\n\n.svg {\n  width: 100%;\n  height: 100%;\n}\n\n.fix-safari-tilt {\n  -webkit-transform: translateZ(0);\n}\n\n.fix-safari-blur {\n  transform: translate3d(0, 0, 0);\n}\n\n#carbonads * {\n  margin: initial;\n  padding: initial;\n  line-height: initial;\n}\n\n#carbonads {\n  --carbon-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n    Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Helvetica, Arial,\n    sans-serif;\n  --carbon-font-size: 14px;\n  --carbon-padding: 1.5ch;\n  --carbon-max-char: 20ch;\n  --carbon-bg-primary: hsl(0, 0%, 98%);\n  --carbon-bg-secondary: hsl(0, 0%, 92%);\n  --carbon-text-color: hsl(0, 0%, 20%);\n  z-index: 10;\n  font-size: var(--carbon-font-size);\n  font-family: var(--carbon-font-family);\n}\n\n#carbonads > span {\n  display: flex;\n  flex-direction: column;\n  min-inline-size: 130px;\n  max-inline-size: calc(130px + var(--carbon-max-char) + 8ch);\n  padding: var(--carbon-padding);\n  gap: var(--carbon-padding);\n  background-color: var(--carbon-bg-primary);\n  box-shadow: 0 0 1px hsl(0deg 0% 0% / 0.085), 0 0 2px hsl(0deg 0% 0% / 0.085),\n    0 0 4px hsl(0deg 0% 0% / 0.085), 0 0 8px hsl(0deg 0% 0% / 0.085);\n}\n\n#carbonads a {\n  color: var(--carbon-text-color);\n  text-decoration: none;\n}\n\n#carbonads a:hover {\n  color: var(--carbon-text-color);\n}\n\n#carbonads .carbon-wrap {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 1.5ex;\n}\n\n#carbonads .carbon-img {\n  flex: 0 0 130px;\n}\n\n#carbonads .carbon-img img {\n  display: block;\n}\n\n#carbonads .carbon-text {\n  flex-grow: 1;\n  flex-basis: var(--carbon-max-char);\n  line-height: 1.4;\n  text-align: left;\n}\n\n#carbonads .carbon-poweredby {\n  padding: 6px 8px;\n  background: var(--carbon-bg-secondary);\n  color: var(--carbon-text-color);\n  font-weight: 600;\n  font-size: 0.6em;\n  line-height: 1.4;\n  letter-spacing: 0.2ch;\n  text-align: center;\n  text-transform: uppercase;\n}\n\n.dark #carbonads {\n  --carbon-bg-primary: hsl(0, 0%, 12%);\n  --carbon-bg-secondary: hsl(0, 0%, 15%);\n  --carbon-text-color: hsl(0, 0%, 90%);\n}\n\n@keyframes scroll-5 {\n  0% {\n    transform: translateX(0);\n  }\n  100% {\n    transform: translateX(calc(-12rem * 5));\n  }\n}\n.slider {\n  position: relative;\n  overflow: hidden;\n}\n.slider::before,\n.slider::after {\n  background: linear-gradient(to right, #fff 0%, #ffffff00 100%);\n  content: '';\n  z-index: 2;\n  position: absolute;\n  height: 100%;\n  width: 10rem;\n  pointer-events: none;\n}\n.dark .slider::before,\n.dark .slider::after {\n  background: linear-gradient(to right, #111 0%, #11111100 50%);\n  content: '';\n  z-index: 2;\n  position: absolute;\n  height: 100%;\n  width: 10rem;\n  pointer-events: none;\n  /* background:transparent; */\n}\n.slider::after {\n  right: 0;\n  top: 0;\n  transform: rotateZ(180deg);\n}\n.slider::before {\n  left: 0;\n  top: 0;\n}\n.slider .slide-track-5 {\n  animation: scroll-5 30s linear infinite;\n  display: flex;\n  width: calc(12rem * 5 * 2);\n}\n.slider .slide-track-10 {\n  animation: scroll-5 30s linear infinite;\n  display: flex;\n  width: calc(12rem * 10 * 2);\n}\n\n.gw-mx-auto {\n  margin-left: auto;\n  margin-right: auto;\n}\n.gw-my-1 {\n  margin-top: 0.25rem;\n  margin-bottom: 0.25rem;\n}\n.gw-my-2 {\n  margin-top: 0.5rem;\n  margin-bottom: 0.5rem;\n}\n.gw-mb-4 {\n  margin-bottom: 1rem;\n}\n.gw-mb-2 {\n  margin-bottom: 0.5rem;\n}\n.gw-mt-2 {\n  margin-top: 0.5rem;\n}\n.gw-mt-1 {\n  margin-top: 0.25rem;\n}\n.gw-mr-3 {\n  margin-right: 0.75rem;\n}\n.gw-mt-3 {\n  margin-top: 0.75rem;\n}\n.gw-mr-2 {\n  margin-right: 0.5rem;\n}\n.gw-mt-4 {\n  margin-top: 1rem;\n}\n.gw-mb-3 {\n  margin-bottom: 0.75rem;\n}\n.gw-mr-4 {\n  margin-right: 1rem;\n}\n.gw-ml-1 {\n  margin-left: 0.25rem;\n}\n.gw-mr-1 {\n  margin-right: 0.25rem;\n}\n.gw-mb-1 {\n  margin-bottom: 0.25rem;\n}\n.gw-flex {\n  display: flex;\n}\n.gw-h-3 {\n  height: 0.75rem;\n}\n.gw-w-full {\n  width: 100%;\n}\n.gw-w-1\\/2 {\n  width: 50%;\n}\n.gw-w-1\\/3 {\n  width: 33.333333%;\n}\n.gw-w-1\\/4 {\n  width: 25%;\n}\n.gw-w-3 {\n  width: 0.75rem;\n}\n.gw-w-6 {\n  width: 1.5rem;\n}\n.gw-max-w-\\[600px\\] {\n  max-width: 600px;\n}\n.gw-flex-row {\n  flex-direction: row;\n}\n.gw-flex-col {\n  flex-direction: column;\n}\n.gw-items-center {\n  align-items: center;\n}\n.gw-justify-center {\n  justify-content: center;\n}\n.gw-justify-between {\n  justify-content: space-between;\n}\n.gw-space-x-4 > :not([hidden]) ~ :not([hidden]) {\n  --tw-space-x-reverse: 0;\n  margin-right: calc(1rem * var(--tw-space-x-reverse));\n  margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.gw-self-center {\n  align-self: center;\n}\n.gw-overflow-hidden {\n  overflow: hidden;\n}\n.gw-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.gw-rounded-md {\n  border-radius: 0.375rem;\n}\n.gw-rounded {\n  border-radius: 0.25rem;\n}\n.gw-rounded-3xl {\n  border-radius: 1.5rem;\n}\n.gw-border {\n  border-width: 1px;\n}\n.gw-border-x {\n  border-left-width: 1px;\n  border-right-width: 1px;\n}\n.gw-border-r {\n  border-right-width: 1px;\n}\n.gw-border-solid {\n  border-style: solid;\n}\n.gw-border-transparent {\n  border-color: transparent;\n}\n.gw-bg-transparent {\n  background-color: transparent;\n}\n.gw-bg-red-50 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(254 242 242 / var(--tw-bg-opacity));\n}\n.gw-p-7 {\n  padding: 1.75rem;\n}\n.gw-p-4 {\n  padding: 1rem;\n}\n.gw-p-2 {\n  padding: 0.5rem;\n}\n.gw-py-5 {\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n}\n.gw-px-4 {\n  padding-left: 1rem;\n  padding-right: 1rem;\n}\n.gw-px-1 {\n  padding-left: 0.25rem;\n  padding-right: 0.25rem;\n}\n.gw-py-1 {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n}\n.gw-py-2 {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.gw-pb-2 {\n  padding-bottom: 0.5rem;\n}\n.gw-pr-2 {\n  padding-right: 0.5rem;\n}\n.gw-pt-1 {\n  padding-top: 0.25rem;\n}\n.gw-pl-2 {\n  padding-left: 0.5rem;\n}\n.gw-pr-4 {\n  padding-right: 1rem;\n}\n.gw-text-left {\n  text-align: left;\n}\n.gw-text-center {\n  text-align: center;\n}\n.gw-text-right {\n  text-align: right;\n}\n.gw-align-middle {\n  vertical-align: middle;\n}\n.gw-text-2xl {\n  font-size: 1.5rem;\n}\n.gw-text-sm {\n  font-size: 0.875rem;\n}\n.gw-text-base {\n  font-size: 1rem;\n}\n.gw-text-3xl {\n  font-size: 1.875rem;\n}\n.gw-text-xs {\n  font-size: 0.75rem;\n}\n.gw-text-xl {\n  font-size: 1.25rem;\n}\n.gw-font-bold {\n  font-weight: 700;\n}\n.gw-font-semibold {\n  font-weight: 600;\n}\n.gw-font-medium {\n  font-weight: 500;\n}\n.gw-text-red-800 {\n  --tw-text-opacity: 1;\n  color: rgb(153 27 27 / var(--tw-text-opacity));\n}\n.gw-transition {\n  transition-property: color, background-color, border-color,\n    text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,\n    backdrop-filter, -webkit-backdrop-filter;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n.gw-duration-300 {\n  transition-duration: 0.3s;\n}\n#getWaitlistContainer {\n  line-height: 1.5;\n  -webkit-text-size-adjust: 100%;\n  -moz-tab-size: 4;\n  -o-tab-size: 4;\n  tab-size: 4;\n  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',\n    Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n    'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n  font-feature-settings: normal;\n  width: 100%;\n  display: flex;\n  align-items: center;\n}\n#getWaitlistContainer svg {\n  display: block;\n  vertical-align: middle;\n}\n#getWaitlistContainer a {\n  color: inherit;\n  text-decoration: inherit;\n  cursor: pointer;\n}\n#getWaitlistContainer input {\n  padding: 0.5rem 0.75rem;\n  line-height: 1.5rem;\n}\n#getWaitlistContainer select {\n  padding: 0.5rem 0.75rem;\n  line-height: 1.5rem;\n  text-transform: none;\n}\n#getWaitlistContainer :-moz-focusring {\n  outline: auto;\n}\n#getWaitlistContainer input::-moz-placeholder,\n#getWaitlistContainer textarea::-moz-placeholder {\n  opacity: 0.5;\n  color: inherit;\n}\n#getWaitlistContainer input::placeholder,\n#getWaitlistContainer textarea::placeholder {\n  opacity: 0.5;\n  color: inherit;\n}\n#getWaitlistContainer [role='button'],\n#getWaitlistContainer [type='button'],\n#getWaitlistContainer button {\n  white-space: nowrap;\n  cursor: pointer;\n  text-transform: none;\n}\n#getWaitlistContainer button,\n#getWaitlistContainer input,\n#getWaitlistContainer optgroup,\n#getWaitlistContainer select,\n#getWaitlistContainer textarea {\n  font-family: Inter, -apple-system, BlinkMacSystemFont, avenir next, avenir,\n    segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial,\n    sans-serif;\n  font-weight: semibold;\n  line-height: inherit;\n  color: inherit;\n}\n#getWaitlistContainer h1,\n#getWaitlistContainer h2,\n#getWaitlistContainer h3,\n#getWaitlistContainer h4,\n#getWaitlistContainer h5,\n#getWaitlistContainer h6 {\n  font-weight: inherit;\n  margin: 0;\n}\n#getWaitlistContainer dd {\n  margin: 0;\n}\n#getWaitlistContainer :disabled {\n  opacity: 0.8;\n  cursor: default;\n}\n#getWaitlistContainer .noselect {\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n#getWaitlistContainer .danger_select {\n  border: 1px solid #991b1b !important;\n}\n#getWaitlistContainer input:-webkit-autofill,\n#getWaitlistContainer input:-webkit-autofill:active,\n#getWaitlistContainer input:-webkit-autofill:focus,\n#getWaitlistContainer input:-webkit-autofill:hover {\n  -webkit-transition: background-color 9999s ease-in-out,\n    color 9999s ease-in-out;\n  transition: background-color 9999s ease-in-out, color 9999s ease-in-out;\n}\n#getWaitlistContainer .app-loading-spinner-svg {\n  color: #000;\n  transform-origin: 50% 50%;\n  transition-timing-function: ease;\n  transition-property: opacity, transform;\n  animation: 250ms AppLoadingSpinnerShow,\n    0.6s linear infinite SpinnerAnimationRotation;\n}\n@keyframes AppLoadingSpinnerShow {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n@keyframes SpinnerAnimationRotation {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.hover\\:gw-cursor-pointer:hover {\n  cursor: pointer;\n}\n.hover\\:gw-opacity-80:hover {\n  opacity: 0.8;\n}\n.focus\\:gw-ring-2:focus {\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0\n    var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0\n    calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),\n    var(--tw-shadow, 0 0 #0000);\n}\n@media (min-width: 640px) {\n  .sm\\:gw-mt-4 {\n    margin-top: 1rem;\n  }\n  .sm\\:gw-mt-0 {\n    margin-top: 0;\n  }\n  .sm\\:gw-w-1\\/2 {\n    width: 50%;\n  }\n  .sm\\:gw-flex-row {\n    flex-direction: row;\n  }\n  .sm\\:gw-space-x-4 > :not([hidden]) ~ :not([hidden]) {\n    --tw-space-x-reverse: 0;\n    margin-right: calc(1rem * var(--tw-space-x-reverse));\n    margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\n  }\n  .sm\\:gw-p-6 {\n    padding: 1.5rem;\n  }\n}\n\n.gw-text-xs {\n  display: none !important;\n  visibility: hidden !important;\n}\n\n.gw-flex {\n  display: flex;\n  justify-content: center;\n  width: 100%;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.gw-max-w-\\[600px\\] {\n  max-width: 400px;\n}\n\n.youtubeContainer {\n  position: relative;\n  width: 100%;\n  aspect-ratio: 16 / 9;\n  overflow: hidden;\n}\n\n.youtubeContainer iframe {\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n"
  },
  {
    "path": "website/styles/wrapped.css",
    "content": ".nextra-sidebar-container {\n  display: none;\n}\n\narticle > main {\n  padding: 0;\n}\n"
  },
  {
    "path": "website/tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\n    './pages/**/*.{js,ts,jsx,tsx,mdx}',\n    './components/**/*.{js,ts,jsx,tsx}',\n    './theme.config.tsx',\n  ],\n  theme: {\n    extend: {\n      animation: {\n        spin: 'spin calc(var(--speed) * 2) infinite linear',\n        slide: 'slide var(--speed) ease-in-out infinite alternate',\n        grid: 'grid 15s linear infinite',\n        'border-beam': 'border-beam calc(var(--duration)*1s) infinite linear',\n      },\n      backgroundImage: {\n        'blue-purple-gradient':\n          'linear-gradient(83.21deg,#3245FF 0%,#B845ED 100%)',\n      },\n      keyframes: {\n        grid: {\n          '0%': { transform: 'translateY(-50%)' },\n          '100%': { transform: 'translateY(0)' },\n        },\n        spin: {\n          '0%': {\n            rotate: '0deg',\n          },\n          '15%, 35%': {\n            rotate: '90deg',\n          },\n          '65%, 85%': {\n            rotate: '270deg',\n          },\n          '100%': {\n            rotate: '360deg',\n          },\n        },\n        slide: {\n          to: {\n            transform: 'translate(calc(100cqw - 100%), 0)',\n          },\n        },\n        'border-beam': {\n          '100%': {\n            'offset-distance': '100%',\n          },\n        },\n      },\n    },\n  },\n  plugins: [require('@tailwindcss/line-clamp')],\n  darkMode: 'class',\n};\n"
  },
  {
    "path": "website/theme.config.tsx",
    "content": "import React from 'react';\nimport { useRouter } from 'next/router';\nimport { type DocsThemeConfig, useConfig } from 'nextra-theme-docs';\nimport { GitHubIcon } from '@components/icons/github-icon';\nimport { DiscordIcon } from '@components/icons/discord-icon';\nimport { TwitterXIcon } from '@components/icons/twitter-x-icon';\nimport packageJson from '../package.json' assert { type: 'json' };\nimport { ExtraContent } from './components/extra-content';\n\nconst config: DocsThemeConfig = {\n  logo: () => {\n    return (\n      <span>\n        <svg style={{ height: '1.8rem' }} viewBox=\"0 0 566 119\" fill=\"none\">\n          <path\n            fillRule=\"evenodd\"\n            clipRule=\"evenodd\"\n            d=\"M43.2861 100.407C50.9973 89.3692 66.6897 81.813 84.794 81.813C102.898 81.813 118.591 89.3692 126.302 100.407C118.591 111.444 102.898 119 84.794 119C66.6897 119 50.9973 111.444 43.2861 100.407Z\"\n            fill=\"url(#paint0_radial_1449_2)\"\n          />\n          <path\n            d=\"M43.006 18.3961C50.7123 7.47595 66.3946 0 84.4874 0C102.58 0 118.263 7.47595 125.969 18.3961C118.263 29.3163 102.58 36.7922 84.4874 36.7922C66.3946 36.7922 50.7123 29.3163 43.006 18.3961Z\"\n            fill=\"url(#paint1_radial_1449_2)\"\n          />\n          <path\n            d=\"M85.2801 59.7175C74.0684 70.5465 58.8619 76.6302 43.006 76.6302C27.1502 76.6302 11.9437 70.5465 0.731934 59.7175L43.006 18.3961L85.2801 59.7175Z\"\n            fill=\"url(#paint2_radial_1449_2)\"\n          />\n          <path\n            d=\"M168.344 59.7378C157.132 70.5668 141.925 76.6505 126.07 76.6505C110.214 76.6505 95.0073 70.5668 83.7955 59.7378L126.07 18.3961L168.344 59.7378Z\"\n            fill=\"url(#paint3_radial_1449_2)\"\n          />\n          <path\n            d=\"M189.3 92V37.6H210.4L211.4 45.6H212.4C214.133 42.6667 216.533 40.4333 219.6 38.9C222.733 37.3667 226.367 36.6 230.5 36.6C234.9 36.6 238.733 37.5 242 39.3C245.267 41.0333 247.733 43.7667 249.4 47.5H250.4C252.6 43.5 255.433 40.7 258.9 39.1C262.367 37.4333 266.333 36.6 270.8 36.6C275.467 36.6 279.467 37.5333 282.8 39.4C286.2 41.2 288.8 44 290.6 47.8C292.4 51.5333 293.3 56.3667 293.3 62.3V92H271.2V65.1C271.2 62.7667 270.967 60.7 270.5 58.9C270.033 57.1 269.167 55.7 267.9 54.7C266.7 53.6333 264.933 53.1 262.6 53.1C260.4 53.1 258.533 53.5667 257 54.5C255.467 55.4333 254.3 56.7333 253.5 58.4C252.7 60 252.3 61.8667 252.3 64V92H230.3V64.9C230.3 62.6333 230.067 60.6333 229.6 58.9C229.2 57.1 228.367 55.7 227.1 54.7C225.833 53.6333 224 53.1 221.6 53.1C219.4 53.1 217.533 53.6 216 54.6C214.533 55.5333 213.4 56.8333 212.6 58.5C211.8 60.1 211.4 61.9333 211.4 64V92H189.3ZM301.898 92V37.6H323.998V92H301.898ZM301.898 32V19.1H323.998V32H301.898ZM332.659 92V19.1H354.759V92H332.659ZM363.421 92V19.1H385.521V92H363.421ZM394.183 92V37.6H416.283V92H394.183ZM394.183 32V19.1H416.283V32H394.183ZM456.545 93C451.478 93 446.878 92.4 442.745 91.2C438.611 89.9333 435.045 88.1 432.045 85.7C429.111 83.3 426.845 80.3667 425.245 76.9C423.645 73.3667 422.845 69.3333 422.845 64.8C422.845 58.8 424.245 53.7 427.045 49.5C429.845 45.3 433.745 42.1 438.745 39.9C443.811 37.7 449.745 36.6 456.545 36.6C461.611 36.6 466.211 37.2333 470.345 38.5C474.478 39.7 478.011 41.5 480.945 43.9C483.945 46.3 486.245 49.2667 487.845 52.8C489.445 56.2667 490.245 60.2667 490.245 64.8C490.245 70.7333 488.845 75.8333 486.045 80.1C483.311 84.3 479.411 87.5 474.345 89.7C469.345 91.9 463.411 93 456.545 93ZM456.545 76.3C459.145 76.3 461.311 75.8333 463.045 74.9C464.778 73.9667 466.078 72.6333 466.945 70.9C467.811 69.1667 468.245 67.1333 468.245 64.8C468.245 63 467.978 61.4 467.445 60C466.978 58.5333 466.245 57.3 465.245 56.3C464.311 55.3 463.111 54.5333 461.645 54C460.178 53.4667 458.478 53.2 456.545 53.2C454.011 53.2 451.878 53.6667 450.145 54.6C448.411 55.5333 447.111 56.8667 446.245 58.6C445.378 60.3333 444.945 62.4 444.945 64.8C444.945 66.6 445.178 68.2 445.645 69.6C446.178 71 446.911 72.2 447.845 73.2C448.845 74.2 450.045 74.9667 451.445 75.5C452.911 76.0333 454.611 76.3 456.545 76.3ZM496.722 92V37.6H518.022L518.822 45.5H519.822C521.422 42.7 523.922 40.5333 527.322 39C530.789 37.4 534.355 36.6 538.022 36.6C541.555 36.6 544.755 37.0333 547.622 37.9C550.489 38.7667 552.955 40.2 555.022 42.2C557.089 44.1333 558.689 46.7333 559.822 50C560.955 53.2667 561.522 57.3 561.522 62.1V92H539.422V66C539.422 63.4667 539.155 61.2333 538.622 59.3C538.155 57.3667 537.222 55.8667 535.822 54.8C534.489 53.6667 532.555 53.1 530.022 53.1C527.689 53.1 525.689 53.6333 524.022 54.7C522.355 55.7 521.055 57.1 520.122 58.9C519.255 60.6333 518.822 62.6333 518.822 64.9V92H496.722Z\"\n            fill=\"currentColor\"\n          />\n          <defs>\n            <radialGradient\n              id=\"paint0_radial_1449_2\"\n              cx=\"0\"\n              cy=\"0\"\n              r=\"1\"\n              gradientUnits=\"userSpaceOnUse\"\n              gradientTransform=\"translate(84.794 100.406) rotate(92.849) scale(12.0136 26.7792)\"\n            >\n              <stop stopColor=\"#845CE7\" />\n              <stop offset=\"1\" stopColor=\"#AF73D8\" />\n            </radialGradient>\n            <radialGradient\n              id=\"paint1_radial_1449_2\"\n              cx=\"0\"\n              cy=\"0\"\n              r=\"1\"\n              gradientUnits=\"userSpaceOnUse\"\n              gradientTransform=\"translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)\"\n            >\n              <stop stopColor=\"#845CE7\" />\n              <stop offset=\"1\" stopColor=\"#AF73D8\" />\n            </radialGradient>\n            <radialGradient\n              id=\"paint2_radial_1449_2\"\n              cx=\"0\"\n              cy=\"0\"\n              r=\"1\"\n              gradientUnits=\"userSpaceOnUse\"\n              gradientTransform=\"translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)\"\n            >\n              <stop stopColor=\"#845CE7\" />\n              <stop offset=\"1\" stopColor=\"#AF73D8\" />\n            </radialGradient>\n            <radialGradient\n              id=\"paint3_radial_1449_2\"\n              cx=\"0\"\n              cy=\"0\"\n              r=\"1\"\n              gradientUnits=\"userSpaceOnUse\"\n              gradientTransform=\"translate(84.5378 38.3252) rotate(92.7908) scale(24.7615 54.0709)\"\n            >\n              <stop stopColor=\"#845CE7\" />\n              <stop offset=\"1\" stopColor=\"#AF73D8\" />\n            </radialGradient>\n          </defs>\n        </svg>\n        <style jsx>{`\n          span {\n            padding: 0.5rem 0.5rem 0.5rem 0;\n            mask-image: linear-gradient(\n              60deg,\n              #bba0ff 25%,\n              rgba(187, 160, 255, 0.2) 50%,\n              #bba0ff 75%\n            );\n            mask-size: 400%;\n            mask-position: 0%;\n          }\n          span:hover {\n            mask-position: 100%;\n            transition:\n              mask-position 1s ease,\n              -webkit-mask-position 1s ease;\n          }\n        `}</style>\n      </span>\n    );\n  },\n  logoLink: 'https://million.dev',\n  project: {\n    link: 'https://github.com/aidenybai/million',\n    icon: <GitHubIcon />,\n  },\n  chat: {\n    link: 'https://million.dev/chat',\n    icon: <DiscordIcon />,\n  },\n  docsRepositoryBase: 'https://github.com/aidenybai/million/tree/main/website/',\n  footer: {\n    text: (\n      <div className=\"flex flex-col items-start gap-6 xl:flex-row   w-full justify-between\">\n        <div>© 2021-{new Date().getFullYear()} Million Software, Inc.</div>\n\n        <div>\n          <p className=\"text-base pb-2 text-white font-bold\">Resources</p>\n          <ul className=\"flex flex-col gap-2\">\n            <li>\n              <a href=\"https://million.dev/docs\" className=\"text-sm\">\n                Documentation\n              </a>\n            </li>\n          </ul>\n        </div>\n\n        <div>\n          <p className=\"text-base pb-2 text-white font-bold\">Ecosystem</p>\n          <ul className=\"flex flex-col gap-2\">\n            <li>\n              <a href=\"/showcase\" className=\"text-sm\">\n                Showcase\n              </a>\n            </li>\n            <li>\n              <a\n                href=\"https://github.com/aidenybai/million/blob/main/.github/CONTRIBUTING.md\"\n                className=\"text-sm\"\n              >\n                Contributing\n              </a>\n            </li>\n            <li>\n              <a href=\"https://million.dev/chat\" className=\"text-sm\">\n                Discord\n              </a>\n            </li>\n          </ul>\n        </div>\n\n        <div>\n          <p className=\"text-base pb-2 text-white font-bold\">About</p>\n          <ul className=\"flex flex-col gap-2\">\n            <li>\n              <a href=\"/foundation\" className=\"text-sm\">\n                Million Foundation\n              </a>\n            </li>\n          </ul>\n        </div>\n\n        <a\n          href=\"https://vercel.com?utm_source=millionjs\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            fill=\"none\"\n            viewBox=\"0 0 212 44\"\n            className=\"h-8\"\n            width=\"212\"\n          >\n            <rect width=\"212\" height=\"44\" fill=\"#000\" rx=\"8\"></rect>\n            <path\n              fill=\"#fff\"\n              d=\"M60.438 15.227V26.5h1.406v-4.023h2.836c2.117 0 3.625-1.493 3.625-3.602 0-2.148-1.477-3.648-3.61-3.648h-4.257zm1.406 1.25h2.484c1.633 0 2.531.851 2.531 2.398 0 1.492-.93 2.352-2.53 2.352h-2.485v-4.75zm11.5 10.171c2.399 0 3.883-1.656 3.883-4.359 0-2.71-1.484-4.36-3.883-4.36-2.398 0-3.883 1.65-3.883 4.36 0 2.703 1.485 4.36 3.883 4.36zm0-1.21c-1.594 0-2.492-1.157-2.492-3.149 0-2 .898-3.148 2.492-3.148 1.594 0 2.492 1.148 2.492 3.148 0 1.992-.898 3.148-2.492 3.148zm15.954-7.36h-1.352l-1.656 6.735h-.125l-1.883-6.735h-1.29l-1.882 6.735h-.125l-1.656-6.735h-1.36l2.36 8.422h1.36l1.874-6.516h.125l1.883 6.516h1.367l2.36-8.422zm4.523 1.04c1.336 0 2.227.984 2.258 2.476h-4.64c.101-1.492 1.039-2.477 2.382-2.477zm2.219 5.202c-.352.742-1.086 1.14-2.172 1.14-1.43 0-2.36-1.054-2.43-2.718v-.062h6.055v-.516c0-2.617-1.383-4.234-3.656-4.234-2.313 0-3.797 1.718-3.797 4.367 0 2.664 1.46 4.351 3.797 4.351 1.844 0 3.156-.89 3.547-2.328H96.04zm3.242 2.18h1.344v-5.219c0-1.187.93-2.047 2.211-2.047.266 0 .75.047.86.078V17.97a5.77 5.77 0 00-.672-.04c-1.117 0-2.086.579-2.336 1.4h-.125v-1.25h-1.281V26.5zm8.899-7.383c1.336 0 2.227.985 2.258 2.477h-4.641c.102-1.492 1.04-2.477 2.383-2.477zm2.219 5.203c-.352.742-1.086 1.14-2.172 1.14-1.43 0-2.359-1.054-2.43-2.718v-.062h6.055v-.516c0-2.617-1.383-4.234-3.656-4.234-2.313 0-3.797 1.718-3.797 4.367 0 2.664 1.461 4.351 3.797 4.351 1.844 0 3.156-.89 3.547-2.328H110.4zm6.36 2.328c1.164 0 2.164-.554 2.695-1.492h.125V26.5h1.281V14.734h-1.343v4.672h-.118c-.476-.922-1.468-1.476-2.64-1.476-2.141 0-3.539 1.718-3.539 4.36 0 2.648 1.382 4.358 3.539 4.358zm.312-7.507c1.524 0 2.477 1.218 2.477 3.148 0 1.945-.946 3.148-2.477 3.148-1.539 0-2.461-1.18-2.461-3.148 0-1.96.93-3.148 2.461-3.148zm14.462 7.507c2.133 0 3.531-1.726 3.531-4.359 0-2.648-1.391-4.36-3.531-4.36-1.156 0-2.18.571-2.641 1.477h-.125v-4.672h-1.344V26.5h1.282v-1.344h.125c.531.938 1.531 1.492 2.703 1.492zm-.313-7.507c1.539 0 2.453 1.18 2.453 3.148 0 1.969-.914 3.148-2.453 3.148-1.531 0-2.484-1.203-2.484-3.148s.953-3.148 2.484-3.148zm6.04 10.406c1.492 0 2.164-.578 2.882-2.531l3.29-8.938h-1.43l-2.305 6.93h-.125l-2.312-6.93h-1.453l3.117 8.43-.157.5c-.351 1.015-.773 1.383-1.546 1.383-.188 0-.399-.008-.563-.04V29.5c.188.031.422.047.602.047zm17.391-3.047l3.898-11.273h-2.148l-2.813 8.921h-.132l-2.836-8.921h-2.227l3.938 11.273h2.32zm8.016-7.18c1.164 0 1.93.813 1.969 2.078h-4.024c.086-1.25.899-2.078 2.055-2.078zm1.984 4.828c-.281.633-.945.985-1.906.985-1.273 0-2.094-.89-2.141-2.313v-.101h5.969v-.625c0-2.696-1.461-4.313-3.898-4.313-2.477 0-4.016 1.727-4.016 4.477s1.516 4.414 4.031 4.414c2.016 0 3.446-.969 3.797-2.524h-1.836zm3.547 2.352h1.938v-4.938c0-1.195.875-1.976 2.133-1.976.328 0 .843.055.992.11v-1.798c-.18-.054-.524-.085-.805-.085-1.101 0-2.023.625-2.258 1.468h-.132v-1.328h-1.868V26.5zm13.501-5.672c-.203-1.797-1.532-3.047-3.727-3.047-2.57 0-4.078 1.649-4.078 4.422 0 2.813 1.516 4.469 4.086 4.469 2.164 0 3.508-1.203 3.719-2.992h-1.844c-.203.89-.875 1.367-1.883 1.367-1.32 0-2.117-1.047-2.117-2.844 0-1.773.789-2.797 2.117-2.797 1.063 0 1.703.594 1.883 1.422h1.844zm5.117-1.508c1.164 0 1.93.813 1.969 2.078h-4.024c.086-1.25.899-2.078 2.055-2.078zm1.985 4.828c-.282.633-.946.985-1.907.985-1.273 0-2.093-.89-2.14-2.313v-.101h5.968v-.625c0-2.696-1.461-4.313-3.898-4.313-2.477 0-4.016 1.727-4.016 4.477s1.516 4.414 4.032 4.414c2.015 0 3.445-.969 3.796-2.524h-1.835zm3.625 2.352h1.937V14.648h-1.937V26.5zM23.325 13l9.325 16H14l9.325-16z\"\n            ></path>\n            <path stroke=\"#5E5E5E\" d=\"M43.5 0v44\"></path>\n          </svg>\n        </a>\n      </div>\n    ),\n  },\n  navbar: {\n    extraContent: <TwitterXIcon />,\n  },\n  head: () => {\n    const { asPath, pathname, query } = useRouter();\n    const id = String(query.id);\n    const name = String(query.name);\n    const { frontMatter } = useConfig();\n\n    const ogConfig = {\n      title: 'Million.js',\n      description: 'The Virtual DOM Replacement for React',\n      author: {\n        twitter: 'aidenybai',\n      },\n      favicon: '/favicon.svg',\n    };\n    const favicon = String(ogConfig.favicon);\n    let title = String(frontMatter.title || ogConfig.title);\n    const description = String(frontMatter.description || ogConfig.description);\n    const note =\n      (frontMatter.date as string | undefined) ?? pathname === '/'\n        ? 'million.dev'\n        : pathname;\n    const canonical = new URL(asPath, 'https://million.dev').toString();\n\n    let ogUrl = `https://million.dev/default-og.png`;\n\n    if (pathname.includes('million-3')) {\n      ogUrl = `https://million.dev/v3-thumbnail.png`;\n    } else {\n      ogUrl = `https://million.dev/api/og?title=${title}&description=${description}&note=${note}`;\n    }\n    const isWrapped = pathname.startsWith('/wrapped/');\n    if (isWrapped) {\n      const name = query?.name ?? 'My React app';\n      const id = (query.id as string).split('.')[0];\n      ogUrl = `https://telemetry.million.dev/api/v1/og/wrapped/${id}.mp4?name=${encodeURIComponent(\n        name as any,\n      )}`;\n      title = name + ' Wrapped | Million.js';\n    }\n\n    return (\n      <>\n        <meta property=\"og:url\" content={canonical} />\n        <link rel=\"canonical\" href={canonical} />\n\n        <meta name=\"description\" content={description} />\n        <meta property=\"og:description\" content={description} />\n        <meta name=\"twitter:site\" content={`@${ogConfig.author.twitter}`} />\n        <meta name=\"twitter:creator\" content={`@${ogConfig.author.twitter}`} />\n        <meta property=\"twitter:title\" content={title} />\n        <meta property=\"twitter:description\" content={description} />\n        <meta name=\"twitter:card\" content=\"summary_large_image\" />\n        <meta property=\"twitter:image\" content={ogUrl} />\n        <meta property=\"og:image\" content={ogUrl} />\n        <link rel=\"shortcut icon\" href={favicon} type=\"image/svg+xml\" />\n        <link rel=\"apple-touch-icon\" href={favicon} type=\"image/svg+xml\" />\n        <meta name=\"apple-mobile-web-app-title\" content={title} />\n\n        <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n        <link\n          rel=\"preconnect\"\n          href=\"https://fonts.gstatic.com\"\n          crossOrigin=\"anonymous\"\n        />\n      </>\n    );\n  },\n  sidebar: {\n    toggleButton: true,\n    defaultMenuCollapseLevel: 1,\n  },\n  search: {\n    placeholder: 'Search website...',\n  },\n  banner: {\n    dismissible: true,\n    key: `version-${packageJson.version}`,\n    text: (\n      <a href=\"https://million.dev/blog/lint\" target=\"_blank\">\n        Million Lint is in public beta →\n      </a>\n    ),\n  },\n  toc: {\n    float: true,\n    backToTop: true,\n    extraContent: ExtraContent,\n  },\n  nextThemes: {\n    defaultTheme: 'dark',\n    forcedTheme: 'dark',\n  },\n  themeSwitch: {\n    component: null,\n  },\n  i18n: [\n    { locale: 'en-US', text: 'English' },\n    // { locale: 'zh-CN', text: 'Chinese' },\n    { locale: 'es-ES', text: 'Español' },\n    // { locale: 'fr-FR', text: 'Français' },\n  ],\n  useNextSeoProps() {\n    const { asPath, pathname, query } = useRouter();\n\n    if (['/', '/docs'].includes(asPath)) {\n      return { titleTemplate: 'Million.js' };\n    }\n\n    if (pathname.startsWith('/wrapped/')) {\n      return {\n        title: (query?.name ?? 'My React app') + ' Wrapped | Million.js',\n      };\n    }\n\n    return { titleTemplate: `%s | Million.js` };\n  },\n  primarySaturation: 0,\n};\n\nexport function hash(str: string): number {\n  let hashy = 0;\n  for (let i = 0, len = str.length; i < len; i++) {\n    const chr = str.charCodeAt(i);\n    hashy = (hashy << 5) - hashy + chr;\n    hashy |= 0; // Convert to 32bit integer\n  }\n  return hashy;\n}\n\nexport default config;\n"
  },
  {
    "path": "website/translations.ts",
    "content": "export const translations = {\n  'en-US': {\n    hero: {\n      makeReact: 'Make React',\n      faster: 'faster',\n      the: 'The',\n      dropIn: 'drop-in optimizing compiler',\n      forReact:\n        'for React. Gain big performance wins for UI and data heavy React apps. Dead simple to use – try it out',\n      now: 'now',\n      getStarted: 'Get started →',\n      how: 'How?',\n      trustedBy: 'Trusted by companies who ship to',\n      users: 'users',\n    },\n    showCase: {\n      faster: 'Faster than the rest',\n      witness:\n        'Witness MillionJS in production where it creates a better user experiences.',\n      showCase: 'View the Million.js showcase',\n    },\n    about: {\n      whatsInMillionJS: \"What's in Million.js?\",\n      toolsToMakeReactFaster: 'The tools to make React faster, automatically.',\n      blockVirtualDom: 'Block Virtual DOM',\n      blockVirtualDomQuote: `\"block\" virtual DOM.`,\n      millionIntroduces: 'Million.js introduces a novel',\n      blockVirtualDomDescription:\n        \"It's significantly faster than React's virtual DOM, as it diffs data instead of the DOM.\",\n      superchargedCompiler: 'Supercharged Compiler',\n      millionUses: 'Million.js uses a',\n      customCompiler: 'custom compiler',\n      automaticallyOptimizes:\n        'that automatically optimizes your React components on the server.',\n      automaticMode: 'Automatic Mode',\n      tiredOf:\n        'Tired of learning new frameworks and big migrations? Million.js ships',\n      dropIn: 'a drop-in automatic mode',\n      makeReactFaster:\n        'to make your React apps faster, without any code changes.',\n      rawJs: 'React at the speed of raw JS',\n      rawJsDescription:\n        'Million.js optimizes React, improving its performance. It stands out as one of the top performers in the',\n      jsBenchmark: 'JS Framework Benchmark',\n      seventyPercent: 'Up to 70% faster* than React.',\n      benchmarkWarning:\n        '* - Benchmarks may not represent real-world performance.',\n      integrate: 'Integrate and ship in minutes.',\n      noNeedLearn:\n        'No need to learn a new framework. Works with your existing React components.',\n      benchmarkNote: `Note: Benchmarks (via JS Framework Benchmark) do not represent\n      real-life performance. Million.js does have some limitations.\n      Performance improvements may be more noticeable with apps that\n      include more data / UI components.`,\n      higherBetter: 'Geometric mean of all benchmarks (higher is better)',\n      basedOn: 'Based on',\n      benchmarkData: 'JS Framework Benchmark data',\n      chromeVersion: '(Chrome 102)',\n    },\n    cta: {\n      getStartedInSeconds: 'Get started in seconds',\n      welcome:\n        \"Welcome to the Million.js community. Let's build something great.\",\n      getStarted: 'Get started →',\n    },\n    faqs: {\n      frequently: 'Frequently asked questions',\n      description:\n        'You can find more specific information about the library by digging into the documentation and reading our blog articles.',\n      fast: 'How is it fast?',\n      novelApproach:\n        'It uses a novel approach to the virtual DOM called the block virtual DOM. You can read more on what the block virtual DOM is with',\n      virtualDom: 'Virtual DOM: Back in Block',\n      makeItHappen: 'and how we make it happen in React with',\n      block: 'Behind the block()',\n      compare: 'How does it compare to',\n      JSFramework: '[insert fast JS framework]',\n      depends:\n        \"Depends on what you're asking. If you're asking about performance, you can view a subjective truth with the\",\n      benchmark: 'JS Framework Benchmark',\n      useCase:\n        \"If you're asking about features, it depends. Million.js' main use case is for optimizing UI / data heavy React applications. Ultimately you should be choosing the framework that works best for you, your team, and  your project.\",\n      doesItWork: 'Does it work with Preact, Next.js, etc.?',\n      probably:\n        'If it uses React or Preact, then probably. You can reference the full list of supported tools on the',\n      guide: 'Installation Guide',\n      limitations: 'What are the limitations?',\n      viewList: 'You can view the list of current limitations in the',\n      rulesOfBlocks: 'Rules of Blocks',\n      importantNote:\n        \"We are actively working on removing these limitations. It's also  important to note that your application may not need Million.js – if your app is not UI heavy, you may not see much performance improvement.\",\n      isItMemo: 'Is this just memo?',\n      memoization:\n        ' While React provides memoization utilities, Million.js takes a drastically different approach. Instead of trying to reduce and avoid rerendering, it makes the render process faster. Because fundamentally, memoization is a band-aid, especially if you have a lot of dynamic data. You can check out our blog article',\n      backInBlock: 'Virtual DOM: Back in Block',\n      learnMore:\n        'to learn more about how Million works with React under the hood.',\n      logo: 'What is the logo supposed to be?',\n      he: \"He's\",\n      milTheLion: 'Mil the Lion!',\n      friendlyMascot: \"He's the friendly mascot of the Million.js project.\",\n      nobite: \"don't worry, he doesn't bite, but he will\",\n      byte: 'byte!',\n    },\n  },\n  'fr-FR': {\n    hero: {\n      makeReact: 'React',\n      faster: 'plus rapide',\n      the: 'le',\n      now: 'maintenant',\n      dropIn: \"compilateur d'optimisation\",\n      forReact:\n        'pour React. Gagne en performance pour tes applications React chargées en UI et données. Facile à utiliser - essayez-le',\n      getStarted: 'Commencer →',\n      how: 'Comment?',\n      trustedBy: 'Fait confiance par des entreprises qui livrent à plus de',\n      users: 'utilisateurs',\n    },\n    showCase: {\n      faster: 'Plus vite que les autres',\n      witness:\n        'Voyez comment MillionJS crée de meilleures expériences utilisateur en production.',\n      showCase: 'Voyez les examples',\n    },\n    about: {\n      whatsInMillionJS: \"C'est quoi Million.js?\",\n      toolsToMakeReactFaster:\n        'Les outils pour rendre React rapide, automatiquement.',\n      blockVirtualDom: 'DOM Virtuel de block',\n      blockVirtualDomQuote: `DOM virtuel de « block ».`,\n      millionIntroduces: 'Million.js introduit un nouveau',\n      blockVirtualDomDescription:\n        'Il est nettement plus rapide que le DOM virtuel de React, car il compare les données plutôt que le DOM.',\n      superchargedCompiler: 'Compileur Suralimentée',\n      millionUses: 'Million.js utilise un',\n      customCompiler: 'compileur sur mesure',\n      automaticallyOptimizes:\n        'qui optimise automatiquement vos composants React sur le serveur.',\n      automaticMode: 'Mode Automatique',\n      tiredOf:\n        \"Fatigué d'apprendre de nouveaux frameworks et de faire de grandes migrations ? Million.js propose\",\n      dropIn: 'un mode automatique',\n      makeReactFaster:\n        'qui améliore automatiquement la performance de votre application React',\n      rawJs: 'React à la vitesse du JS brut',\n      rawJsDescription:\n        \"Million.js optimise React, améliorant ses performances. Il se distingue comme l'un des meilleurs dans le\",\n      jsBenchmark: 'test « JS Framework Benchmark »',\n      seventyPercent: `Jusqu'à 70% plus rapide* que React.`,\n      benchmarkWarning:\n        '* - Les benchmarks peuvent ne pas représenter la performance dans le monde réel.',\n      integrate: 'Intégrez et déployez en quelques minutes.',\n      noNeedLearn:\n        \"Pas besoin d'apprendre un nouveau framework. Fonctionne avec vos composants React existants.\",\n      benchmarkNote: `Note: les tests (via « JS Framework Benchmark ») ne représentent pas la\n      performance réelle. Million.js a certaines limites. Les améliorations de performance peuvent être plus notables avec des applications qui incluent plus de données / composants d'interface utilisateur.`,\n      higherBetter:\n        'Moyenne géométrique de tous les tests (plus élevé est mieux)',\n      basedOn: 'basé sur les données ',\n      benchmarkData: ' « JS Framework Benchmark »',\n      chromeVersion: '(Chrome 102)',\n    },\n    cta: {\n      getStartedInSeconds: 'Commencer en quelque seconde',\n      welcome:\n        \"Bienvenue dans la communauté Million.js. Construisons quelque chose d'incroyable.\",\n      getStarted: 'Commencer →',\n    },\n    faqs: {\n      frequently: 'Foire aux questions',\n      description:\n        'Vous pouvez trouver des informations plus spécifiques sur la bibliothèque en creusant dans la documentation et en lisant nos articles de blog.',\n      fast: \"Comment est-ce que c'est rapide?\",\n      novelApproach:\n        \"Il utilise une nouvelle approche du DOM virtuel appelée DOM virtuel en bloc. Vous pouvez en savoir plus sur ce qu'est le bloc DOM virtuel avec\",\n      virtualDom: 'DOM virtuel : Retour dans le bloc',\n      makeItHappen: 'Et comment nous y parvenons dans React avec',\n      block: 'Derrière le bloc()',\n      compare: 'Comment se compare-t-il à',\n      JSFramework: '[Insérer un framework JS rapide]',\n      depends:\n        'Cela dépend de ce que vous demandez. Si vous posez des questions sur la performance, vous pouvez voir une vérité subjective avec le',\n      benchmark: 'JS Framework Benchmark.',\n      useCase:\n        \"Si vous posez des questions sur les fonctionnalités, cela dépend. Le principal cas d'utilisation de Million.js est d'optimiser l'interface utilisateur / les applications React lourdes de données. En fin de compte, vous devriez choisir le cadre qui fonctionne le mieux pour vous, votre équipe et votre projet.\",\n      doesItWork: 'Fonctionne-t-il avec Preact, Next.js, etc.?',\n      probably:\n        \"S'il utilise React ou Preact, alors probablement. Vous pouvez consulter la liste complète des outils pris en charge sur le\",\n      guide: \"Guide d'installation\",\n      limitations: 'Quelles sont les limites?',\n      viewList:\n        'Vous pouvez consulter la liste des limitations actuelles dans le',\n      rulesOfBlocks: 'Règles des blocs',\n      importantNote:\n        \"Nous travaillons activement à la suppression de ces limitations. Il est également important de noter que votre application peut ne pas avoir besoin de Million.js - si votre application n'est pas lourde en matière d'interface utilisateur, il se peut que vous ne voyiez pas beaucoup d'amélioration des performances.\",\n      isItMemo: 'Est-ce juste un mémo?',\n      memoization:\n        \"Alors que React fournit des utilitaires de mémorisation, Million.js adopte une approche radicalement différente. Au lieu d'essayer de réduire et d'éviter le rendu, cela rend le processus de rendu plus rapide. Parce que fondamentalement, la mémorisation est un bandement, surtout si vous avez beaucoup de données dynamiques. Vous pouvez consulter notre article de blog\",\n      backInBlock: 'DOM virtuel : Retour dans le bloc',\n      learnMore:\n        'Pour en savoir plus sur le fonctionnement de Million avec React sous le capot.',\n      logo: 'Quel est censé être le logo ?',\n      he: 'Il est',\n      milTheLion: 'Mil le Lion !',\n      friendlyMascot: \"C'est la mascotte amicale du projet Million.js\",\n      nobite: 'Ne vous inquiétez pas, il ne mord pas, mais il le fera',\n      byte: 'byte!',\n    },\n  },\n  'es-ES': {\n    hero: {\n      makeReact: 'Make React',\n      faster: 'faster',\n      the: 'the',\n      dropIn: 'drop-in optimizing compiler',\n      forReact:\n        'for React. Gain big performance wins for UI and data heavy React apps. Dead simple to use – try it out',\n      now: 'now',\n      getStarted: 'Get started →',\n      how: 'How?',\n      trustedBy: 'Trusted by companies who ship to',\n      users: 'users',\n    },\n    showCase: {\n      faster: 'Faster than the rest',\n      witness:\n        'Witness MillionJS in production where it creates a better user experiences.',\n      showCase: 'View the Million.js showcase',\n    },\n    about: {\n      whatsInMillionJS: \"What's in Million.js?\",\n      toolsToMakeReactFaster: 'The tools to make React faster, automatically.',\n      blockVirtualDom: 'Block Virtual DOM',\n      blockVirtualDomQuote: `\"block\" virtual DOM.`,\n      millionIntroduces: 'Million.js introduces a novel',\n      blockVirtualDomDescription:\n        \"It's significantly faster than React's virtual DOM, as it diffs data instead of the DOM.\",\n      superchargedCompiler: 'Supercharged Compiler',\n      millionUses: 'Million.js uses a',\n      customCompiler: 'custom compiler',\n      automaticallyOptimizes:\n        'that automatically optimizes your React components on the server.',\n      automaticMode: 'Automatic Mode',\n      tiredOf:\n        'Tired of learning new frameworks and big migrations? Million.js ships',\n      dropIn: 'a drop-in automatic mode',\n      makeReactFaster:\n        'to make your React apps faster, without any code changes.',\n      rawJs: 'React at the speed of raw JS',\n      rawJsDescription:\n        'Million.js optimizes React, improving its performance. It stands out as one of the top performers in the',\n      jsBenchmark: 'JS Framework Benchmark',\n      seventyPercent: 'Up to 70% faster* than React.',\n      benchmarkWarning:\n        '* - Benchmarks may not represent real-world performance.',\n      integrate: 'Integrate and ship in minutes.',\n      noNeedLearn:\n        'No need to learn a new framework. Works with your existing React components.',\n      benchmarkNote: `Note: Benchmarks (via JS Framework Benchmark) do not represent\n      real-life performance. Million.js does have some limitations.\n      Performance improvements may be more noticeable with apps that\n      include more data / UI components.`,\n      higherBetter: 'Geometric mean of all benchmarks (higher is better)',\n      basedOn: 'Based on',\n      benchmarkData: 'JS Framework Benchmark data',\n      chromeVersion: '(Chrome 102)',\n    },\n    cta: {\n      getStartedInSeconds: 'Get started in seconds',\n      welcome:\n        \"Welcome to the Million.js community. Let's build something great.\",\n      getStarted: 'Get started →',\n    },\n    faqs: {\n      frequently: 'Frequently asked questions',\n      description:\n        'You can find more specific information about the library by digging into the documentation and reading our blog articles.',\n      fast: 'How is it fast?',\n      novelApproach:\n        'It uses a novel approach to the virtual DOM called the block virtual DOM. You can read more on what the block virtual DOM is with',\n      virtualDom: 'Virtual DOM: Back in Block',\n      makeItHappen: 'and how we make it happen in React with',\n      block: 'Behind the block()',\n      compare: 'How does it compare to',\n      JSFramework: '[insert fast JS framework]',\n      depends:\n        \"Depends on what you're asking. If you're asking about performance, you can view a subjective truth with the\",\n      benchmark: 'JS Framework Benchmark',\n      useCase:\n        \"If you're asking about features, it depends. Million.js' main use case is for optimizing UI / data heavy React applications. Ultimately you should be choosing the framework that works best for you, your team, and  your project.\",\n      doesItWork: 'Does it work with Preact, Next.js, etc.?',\n      probably:\n        'If it uses React or Preact, then probably. You can reference the full list of supported tools on the',\n      guide: 'Installation Guide',\n      limitations: 'What are the limitations?',\n      viewList: 'You can view the list of current limitations in the',\n      rulesOfBlocks: 'Rules of Blocks',\n      importantNote:\n        \"We are actively working on removing these limitations. It's also  important to note that your application may not need Million.js – if your app is not UI heavy, you may not see much performance improvement.\",\n      isItMemo: 'Is this just memo?',\n      memoization:\n        ' While React provides memoization utilities, Million.js takes a drastically different approach. Instead of trying to reduce and avoid rerendering, it makes the render process faster. Because fundamentally, memoization is a band-aid, especially if you have a lot of dynamic data. You can check out our blog article',\n      backInBlock: 'Virtual DOM: Back in Block',\n      learnMore:\n        'to learn more about how Million works with React under the hood.',\n      logo: 'What is the logo supposed to be?',\n      he: \"He's\",\n      milTheLion: 'Mil the Lion!',\n      friendlyMascot: \"He's the friendly mascot of the Million.js project.\",\n      nobite: \"don't worry, he doesn't bite, but he will\",\n      byte: 'byte!',\n    },\n  },\n  'zh-CN': {\n    hero: {\n      makeReact: 'Make React',\n      faster: 'faster',\n      the: 'the',\n      dropIn: 'drop-in optimizing compiler',\n      forReact:\n        'for React. Gain big performance wins for UI and data heavy React apps. Dead simple to use – try it out',\n      now: 'now',\n      getStarted: 'Get started →',\n      how: 'How?',\n      trustedBy: 'Trusted by companies who ship to',\n      users: 'users',\n    },\n    showCase: {\n      faster: 'Faster than the rest',\n      witness:\n        'Witness MillionJS in production where it creates a better user experiences.',\n      showCase: 'View the Million.js showcase',\n    },\n    about: {\n      whatsInMillionJS: \"What's in Million.js?\",\n      toolsToMakeReactFaster: 'The tools to make React faster, automatically.',\n      blockVirtualDom: 'Block Virtual DOM',\n      blockVirtualDomQuote: `\"block\" virtual DOM.`,\n      millionIntroduces: 'Million.js introduces a novel',\n      blockVirtualDomDescription:\n        \"It's significantly faster than React's virtual DOM, as it diffs data instead of the DOM.\",\n      superchargedCompiler: 'Supercharged Compiler',\n      millionUses: 'Million.js uses a',\n      customCompiler: 'custom compiler',\n      automaticallyOptimizes:\n        'that automatically optimizes your React components on the server.',\n      automaticMode: 'Automatic Mode',\n      tiredOf:\n        'Tired of learning new frameworks and big migrations? Million.js ships',\n      dropIn: 'a drop-in automatic mode',\n      makeReactFaster:\n        'to make your React apps faster, without any code changes.',\n      rawJs: 'React at the speed of raw JS',\n      rawJsDescription:\n        'Million.js optimizes React, improving its performance. It stands out as one of the top performers in the',\n      jsBenchmark: 'JS Framework Benchmark',\n      seventyPercent: 'Up to 70% faster* than React.',\n      benchmarkWarning:\n        '* - Benchmarks may not represent real-world performance.',\n      integrate: 'Integrate and ship in minutes.',\n      noNeedLearn:\n        'No need to learn a new framework. Works with your existing React components.',\n      benchmarkNote: `Note: Benchmarks (via JS Framework Benchmark) do not represent\n      real-life performance. Million.js does have some limitations.\n      Performance improvements may be more noticeable with apps that\n      include more data / UI components.`,\n      higherBetter: 'Geometric mean of all benchmarks (higher is better)',\n      basedOn: 'Based on',\n      benchmarkData: 'JS Framework Benchmark data',\n      chromeVersion: '(Chrome 102)',\n    },\n    cta: {\n      getStartedInSeconds: 'Get started in seconds',\n      welcome:\n        \"Welcome to the Million.js community. Let's build something great.\",\n      getStarted: 'Get started →',\n    },\n    faqs: {\n      frequently: 'Frequently asked questions',\n      description:\n        'You can find more specific information about the library by digging into the documentation and reading our blog articles.',\n      fast: 'How is it fast?',\n      novelApproach:\n        'It uses a novel approach to the virtual DOM called the block virtual DOM. You can read more on what the block virtual DOM is with',\n      virtualDom: 'Virtual DOM: Back in Block',\n      makeItHappen: 'and how we make it happen in React with',\n      block: 'Behind the block()',\n      compare: 'How does it compare to',\n      JSFramework: '[insert fast JS framework]',\n      depends:\n        \"Depends on what you're asking. If you're asking about performance, you can view a subjective truth with the\",\n      benchmark: 'JS Framework Benchmark',\n      useCase:\n        \"If you're asking about features, it depends. Million.js' main use case is for optimizing UI / data heavy React applications. Ultimately you should be choosing the framework that works best for you, your team, and  your project.\",\n      doesItWork: 'Does it work with Preact, Next.js, etc.?',\n      probably:\n        'If it uses React or Preact, then probably. You can reference the full list of supported tools on the',\n      guide: 'Installation Guide',\n      limitations: 'What are the limitations?',\n      viewList: 'You can view the list of current limitations in the',\n      rulesOfBlocks: 'Rules of Blocks',\n      importantNote:\n        \"We are actively working on removing these limitations. It's also  important to note that your application may not need Million.js – if your app is not UI heavy, you may not see much performance improvement.\",\n      isItMemo: 'Is this just memo?',\n      memoization:\n        ' While React provides memoization utilities, Million.js takes a drastically different approach. Instead of trying to reduce and avoid rerendering, it makes the render process faster. Because fundamentally, memoization is a band-aid, especially if you have a lot of dynamic data. You can check out our blog article',\n      backInBlock: 'Virtual DOM: Back in Block',\n      learnMore:\n        'to learn more about how Million works with React under the hood.',\n      logo: 'What is the logo supposed to be?',\n      he: \"He's\",\n      milTheLion: 'Mil the Lion!',\n      friendlyMascot: \"He's the friendly mascot of the Million.js project.\",\n      nobite: \"don't worry, he doesn't bite, but he will\",\n      byte: 'byte!',\n    },\n  },\n} as const;\n"
  },
  {
    "path": "website/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"strictNullChecks\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"incremental\": true,\n    \"esModuleInterop\": true,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"node\",\n    \"jsx\": \"preserve\",\n    \"module\": \"esnext\",\n    \"resolveJsonModule\": true,\n    \"paths\": {\n      \"@components/*\": [\"components/*\"],\n      \"react\": [\"./node_modules/@types/react\"],\n      \"react-dom\": [\"./node_modules/@types/react-dom\"]\n    }\n  },\n  \"include\": [\"video.d.ts\", \"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"middleware.js\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "website/vercel.json",
    "content": "{\n  \"github\": {\n    \"silent\": true\n  },\n  \"redirects\": [\n    {\n      \"source\": \"/chat\",\n      \"destination\": \"https://discord.gg/X9yFbcV2rF\"\n    },\n    {\n      \"source\": \"/how\",\n      \"destination\": \"https://million.dev/blog/virtual-dom\"\n    },\n    {\n      \"source\": \"/fork\",\n      \"destination\": \"https://github.com/aidenybai/hundred\"\n    },\n    {\n      \"source\": \"/readme\",\n      \"destination\": \"/foundation\"\n    },\n    {\n      \"source\": \"/docs/automatic\",\n      \"destination\": \"https://million.dev/docs\"\n    },\n    {\n      \"source\": \"/kitchen-sink\",\n      \"destination\": \"https://github.com/aidenybai/million/blob/main/packages/kitchen-sink/README.md\"\n    },\n    {\n      \"source\": \"/stickers\",\n      \"destination\": \"https://forms.gle/QQ9njK9Z2YjqWPJk9\"\n    },\n    {\n      \"source\": \"/3\",\n      \"destination\": \"/blog/million-3\"\n    }\n  ]\n}\n"
  },
  {
    "path": "website/video.d.ts",
    "content": "/// <reference types=\"next-video/video-types/global\" />\n"
  }
]