Compare commits

..

9 Commits

Author SHA1 Message Date
sweep-ai[bot] c09bf01551 Merge main into sweep/fix-env-variable-loading 2023-11-15 23:56:48 +00:00
sweep-ai[bot] 3170fcc216 Merge main into sweep/fix-env-variable-loading 2023-11-15 04:55:25 +00:00
sweep-ai[bot] 9a622d3aaa Merge main into sweep/fix-env-variable-loading 2023-11-15 04:49:33 +00:00
sweep-ai[bot] a69de1f89f Merge main into sweep/fix-env-variable-loading 2023-11-15 01:24:47 +00:00
sweep-ai[bot] 8a998ceb38 Merge main into sweep/fix-env-variable-loading 2023-11-15 00:21:38 +00:00
sweep-ai[bot] 718806df11 Merge main into sweep/fix-env-variable-loading 2023-11-15 00:18:16 +00:00
sweep-ai[bot] e7db00e4b3 Merge main into sweep/fix-env-variable-loading 2023-11-14 23:05:48 +00:00
sweep-ai[bot] ec0b149a90 Merge main into sweep/fix-env-variable-loading 2023-11-14 20:08:15 +00:00
sweep-ai[bot] bce1694df7 feat: Updated packages/create-llama/templates/inde 2023-11-14 19:37:42 +00:00
1565 changed files with 29516 additions and 239944 deletions
-16
View File
@@ -1,16 +0,0 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"decorators": true
},
"target": "esnext",
"transform": {
"decoratorVersion": "2022-03"
}
},
"module": {
"type": "commonjs",
"ignoreDynamic": true
}
}
+10
View File
@@ -0,0 +1,10 @@
module.exports = {
root: true,
// This tells ESLint to load the config from the package `eslint-config-custom`
extends: ["custom"],
settings: {
next: {
rootDir: ["apps/*/"],
},
},
};
-2
View File
@@ -1,2 +0,0 @@
examples/readers/data/** binary
examples/data/** binary
-46
View File
@@ -1,46 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: bug
assignees: ""
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Code to reproduce the behavior:
```ts
// paste the code here
```
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. macOS, Linux]
- JS Runtime / Framework / Bundler (select all applicable)
- [ ] Node.js
- [ ] Deno
- [ ] Bun
- [ ] Next.js
- [ ] ESBuild
- [ ] Rollup
- [ ] Webpack
- [ ] Turbopack
- [ ] Vite
- [ ] Waku
- [ ] Edge Runtime
- [ ] AWS Lambda
- [ ] Cloudflare Worker
- [ ] Others (please elaborate on this)
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
@@ -1,6 +1,7 @@
name: Bugfix
title: ""
description: Write something like "We notice ... behavior when ... happens instead of ..." If you would like to use sweep.dev prefix with "Sweep:"
title: "Sweep: "
description: Write something like "We notice ... behavior when ... happens instead of ...""
labels: sweep
body:
- type: textarea
id: description
@@ -1,10 +1,11 @@
name: Feature Request
title: ""
description: Write something like "Write an api endpoint that does "..." in the "..." file". If you would like to use sweep.dev prefix with "Sweep:"
title: "Sweep: "
description: Write something like "Write an api endpoint that does "..." in the "..." file"
labels: sweep
body:
- type: textarea
id: description
attributes:
label: Details
description: More details
description: More details for Sweep
placeholder: The new endpoint should use the ... class from ... file because it contains ... logic
@@ -1,10 +1,11 @@
name: Refactor
title: ""
description: Write something like "Modify the ... api endpoint to use ... version and ... framework" If you would like to use sweep.dev prefix with "Sweep:"
title: "Sweep: "
description: Write something like "Modify the ... api endpoint to use ... version and ... framework"
labels: sweep
body:
- type: textarea
id: description
attributes:
label: Details
description: More details
description: More details for Sweep
placeholder: We are migrating this function to ... version because ...
+7 -9
View File
@@ -12,16 +12,14 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Checkout code
uses: actions/checkout@v2
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Run lint
run: pnpm run lint
- name: Run Prettier
run: pnpm run format
-28
View File
@@ -1,28 +0,0 @@
name: Publish Preview
on: [pull_request]
jobs:
pre_release:
name: Pre Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Pre Release
run: pnpx pkg-pr-new publish --pnpm ./packages/* ./packages/providers/* ./packages/providers/storage/*
-37
View File
@@ -1,37 +0,0 @@
name: Publish to GitHub Releases
on:
push:
tags:
- "llamaindex@*"
jobs:
build-and-publish:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build tarball
run: |
pnpm pack
working-directory: packages/llamaindex
- name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: "packages/llamaindex/llamaindex-*.tgz"
name: Release ${{ github.ref }}
bodyFile: "packages/llamaindex/CHANGELOG.md"
token: ${{ secrets.GITHUB_TOKEN }}
-70
View File
@@ -1,70 +0,0 @@
name: Release
on:
push:
branches:
- main
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Add auth token to .npmrc file
run: |
cat << EOF >> ".npmrc"
//registry.npmjs.org/:_authToken=$NPM_TOKEN
EOF
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Get changeset status
id: get-changeset-status
run: |
pnpm changeset status --output .changeset/status.json
new_version=$(jq -r '.releases[] | select(.name == "llamaindex") | .newVersion' < .changeset/status.json)
rm -v .changeset/status.json
echo "new-version=${new_version}" >> "$GITHUB_OUTPUT"
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
commit: Release ${{ steps.get-changeset-status.outputs.new-version }}
title: Release ${{ steps.get-changeset-status.outputs.new-version }}
# update version PR with the latest changesets
version: pnpm new-version
# build package and call changeset publish
publish: pnpm release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# Refs: https://github.com/changesets/changesets/issues/421
- name: Update lock file
continue-on-error: true
run: pnpm install --lockfile-only
- name: Commit lock file
continue-on-error: true
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: update lock file"
branch: changeset-release/main
file_pattern: "pnpm-lock.yaml"
+12 -181
View File
@@ -1,193 +1,24 @@
name: Run Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
POSTGRES_HOST_AUTH_METHOD: trust
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
TURBO_REMOTE_ONLY: true
on: [push, pull_request]
jobs:
e2e:
strategy:
fail-fast: false
matrix:
node-version: [18.x, 20.x, 22.x, 23.x]
name: E2E on Node.js ${{ matrix.node-version }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ankane/setup-postgres@v1
with:
database: llamaindex_node_test
dev-files: true
- run: |
cd /tmp
git clone --branch v0.7.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Run E2E Tests
run: pnpm run e2e
test:
strategy:
fail-fast: false
matrix:
node-version: [18.x, 20.x, 22.x, 23.x]
name: Test on Node.js ${{ matrix.node-version }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
node-version: "18"
- name: Install dependencies
run: pnpm install
run: |
npm i -g pnpm
pnpm install
- name: Run tests
run: pnpm run test
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Run Type Check
run: pnpm run type-check
- name: Run Circular Dependency Check
run: pnpm run circular-check
e2e-llamaindex-examples:
strategy:
fail-fast: false
matrix:
packages:
- cloudflare-worker-agent
- nextjs-agent
- nextjs-edge-runtime
- nextjs-node-runtime
- waku-query-engine
- llama-parse-browser
- vite-import-llamaindex
runs-on: ubuntu-latest
name: Build LlamaIndex Example (${{ matrix.packages }})
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build llamaindex
run: pnpm run build
- name: Build ${{ matrix.packages }}
run: pnpm run build
working-directory: e2e/examples/${{ matrix.packages }}
size-limit:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
name: Size Limit
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build llamaindex
run: pnpm run build
- uses: andresz1/size-limit-action@94bc357df29c36c8f8d50ea497c3e225c3c95d1d
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
directory: e2e/examples/vite-import-llamaindex
skip_step: "install"
build_script: build
package_manager: pnpm
typecheck-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Copy examples
run: rsync -rv --exclude=node_modules ./examples ${{ runner.temp }}
- name: Pack packages
run: |
for dir in packages/*; do
if [ -d "$dir" ] && [ -f "$dir/package.json" ] && [[ ! "$dir" =~ autotool ]]; then
echo "Packing $dir"
pnpm pack --pack-destination ${{ runner.temp }} -C $dir
else
echo "Skipping $dir, no package.json found"
fi
done
- name: Pack provider packages
run: |
for dir in packages/providers/* packages/providers/storage/*; do
if [ -d "$dir" ] && [ -f "$dir/package.json" ]; then
echo "Packing $dir"
pnpm pack --pack-destination ${{ runner.temp }} -C $dir
else
echo "Skipping $dir, no package.json found"
fi
done
- name: Install
run: npm add ${{ runner.temp }}/*.tgz
working-directory: ${{ runner.temp }}/examples
- name: Run Type Check
run: npx tsc --project ./tsconfig.json
working-directory: ${{ runner.temp }}/examples
- uses: actions/upload-artifact@v4
if: failure()
with:
name: build-dist
path: |
${{ runner.temp }}/*.tgz
if-no-files-found: error
+2 -13
View File
@@ -37,17 +37,6 @@ yarn-error.log*
.vercel
dist/
lib/
.cache
test-results/
playwright-report/
blob-report/
playwright/.cache/
.tsbuildinfo
# intellij
**/.idea
# generated API
packages/cloud/src/client
# vs code
.vscode/launch.json
+5 -1
View File
@@ -1 +1,5 @@
pnpm run lint-staged
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm lint
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm test
-4
View File
@@ -1,5 +1 @@
auto-install-peers = true
enable-pre-post-scripts = true
prefer-workspace-packages = true
save-workspace-protocol = true
link-workspace-packages = true
-1
View File
@@ -1 +0,0 @@
20
-9
View File
@@ -1,9 +0,0 @@
apps/docs/i18n
apps/docs/docs/api
pnpm-lock.yaml
lib/
dist/
.docusaurus/
.source/
# prttier doesn't support mdx3 we are using
*.mdx
-12
View File
@@ -1,12 +0,0 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"decorators": true
},
"target": "esnext",
"transform": {
"decoratorVersion": "2022-03"
}
}
}
-18
View File
@@ -1,18 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Example",
"skipFiles": ["<node_internals>/**"],
"runtimeExecutable": "pnpm",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}/examples",
"runtimeArgs": ["npx", "tsx", "${file}"]
}
]
}
-1
View File
@@ -1 +0,0 @@
LlamaIndexTS
+1 -12
View File
@@ -4,16 +4,5 @@
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[xml]": {
"editor.defaultFormatter": "redhat.vscode-xml"
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"prettier.prettierPath": "./node_modules/prettier",
"prettier.configPath": "prettier.config.mjs"
}
}
+53 -52
View File
@@ -2,78 +2,79 @@
## Structure
LlamaIndex.TS uses pnpm monorepo.
This is a monorepo built with Turborepo
We recommend you to understand the basics of Node.js, TypeScript, pnpm, and of course, LLM before contributing.
Right now there are two packages of importance:
There are some important folders in the repository:
packages/core which is the main NPM library llamaindex
- `packages/*`: Contains the source code of the packages. Each package is a separate npm package.
- `llamaindex`: The starter package for LlamaIndex.TS, which contains the all sub-packages.
- `core`: The core package of LlamaIndex.TS, which contains the abstract classes and interfaces. It is designed for
all JS runtime environments.
- `env`: The environment package of LlamaIndex.TS, which contains the environment-specific classes and interfaces. It
includes compatibility layers for Node.js, Deno, Vercel Edge Runtime, Cloudflare Workers...
- `apps/*`: The applications based on LlamaIndex.TS.
- `next`: Our documentation website based on Next.js.
- `examples`: The code examples of LlamaIndex.TS using Node.js.
apps/simple is where the demo code lives
### Turborepo docs
You can checkout how Turborepo works using the default [README-turborepo.md](/README-turborepo.md)
## Getting Started
Make sure you have Node.js LIS (Long-term Support) installed. You can check your Node.js version by running:
Install NodeJS. Preferably v18 using nvm or n.
Inside the LlamaIndexTS directory:
```shell
node -v
# v20.x.x
```
### Use pnpm
```shell
corepack enable
```
### Install dependencies
```shell
npm i -g pnpm ts-node
pnpm install
```
### Build the packages
Note: we use pnpm in this repo, which has a lot of the same functionality and CLI options as npm but it does do some things better in a monorepo, like centralizing dependencies and caching.
You'll need Turbo to build the packages. If you don't have it, you can run it with `pnpx`.
PNPM's has documentation on its [workspace feature](https://pnpm.io/workspaces) and Turborepo had some [useful documentation also](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks).
To build all packages, run:
### Running Typescript
```shell
# Build all packages
pnpx turbo build --filter "./packages/*"
When we publish to NPM we will have a tsc compiled version of the library in JS. For now, the easiest thing to do is use ts-node.
# Or if you have turbo installed, you can run:
turbo build --filter "./packages/*"
### Test cases
To run them, run
```
pnpm run test
```
To write new test cases write them in [packages/core/src/tests](/packages/core/src/tests)
We use Jest https://jestjs.io/ to write our test cases. Jest comes with a bunch of built in assertions using the expect function: https://jestjs.io/docs/expect
### Demo applications
There is an existing ["simple"](/apps/simple/README.md) demos folder with mainly NodeJS scripts. Feel free to add additional demos to that folder. If you would like to try out your changes in the core package with a new demo, you need to run the build command in the README.
You can create new demo applications in the apps folder. Just run pnpm init in the folder after you create it to create its own package.json
### Installing packages
To install packages for a specific package or demo application, run
```
pnpm add [NPM Package] --filter [package or application i.e. core or simple]
```
To install packages for every package or application run
```
pnpm add -w [NPM Package]
```
### Docs
See the [docs](./apps/next/README.md) for more information.
To contribute to the docs, go to the docs website folder and run the Docusaurus instance.
## Changeset
We use [changesets](https://github.com/changesets/changesets) for managing versions and changelogs. To create a new
changeset, run in the root folder:
```
pnpm changeset
```bash
cd apps/docs
pnpm install
pnpm start
```
Please send a descriptive changeset for each PR.
That should start a webserver which will serve the docs on https://localhost:3000
## Publishing (maintainers only)
The [Release Github Action](.github/workflows/release.yml) is automatically generating and updating a
PR called "Release {version}".
This PR will update the `package.json` and `CHANGELOG.md` files of each package according to
the current changesets in the [.changeset](.changeset) folder.
If this PR is merged it will automatically add version tags to the repository and publish the updated packages to NPM.
Any changes you make should be reflected in the browser. If you need to regenerate the API docs and find that your TSDoc isn't getting the updates, feel free to remove apps/docs/api. It will automatically regenerate itself when you run pnpm start again.
+81
View File
@@ -0,0 +1,81 @@
# Turborepo starter
This is an official starter Turborepo.
## Using this example
Run the following command:
```sh
npx create-turbo@latest
```
## What's inside?
This Turborepo includes the following packages/apps:
### Apps and Packages
- `docs`: a [Next.js](https://nextjs.org/) app
- `web`: another [Next.js](https://nextjs.org/) app
- `ui`: a stub React component library shared by both `web` and `docs` applications
- `eslint-config-custom`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
- `tsconfig`: `tsconfig.json`s used throughout the monorepo
Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).
### Utilities
This Turborepo has some additional tools already setup for you:
- [TypeScript](https://www.typescriptlang.org/) for static type checking
- [ESLint](https://eslint.org/) for code linting
- [Prettier](https://prettier.io) for code formatting
### Build
To build all apps and packages, run the following command:
```
cd my-turborepo
pnpm build
```
### Develop
To develop all apps and packages, run the following command:
```
cd my-turborepo
pnpm dev
```
### Remote Caching
Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands:
```
cd my-turborepo
npx turbo login
```
This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
```
npx turbo link
```
## Useful Links
Learn more about the power of Turborepo:
- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks)
- [Caching](https://turbo.build/repo/docs/core-concepts/caching)
- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching)
- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering)
- [Configuration Options](https://turbo.build/repo/docs/reference/configuration)
- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference)
+79 -67
View File
@@ -1,80 +1,67 @@
<p align="center">
<img height="100" width="100" alt="LlamaIndex logo" src="https://ts.llamaindex.ai/square.svg" />
</p>
<h1 align="center">LlamaIndex.TS</h1>
<h3 align="center">
Data framework for your LLM application.
</h3>
# LlamaIndex.TS
[![NPM Version](https://img.shields.io/npm/v/llamaindex)](https://www.npmjs.com/package/llamaindex)
[![NPM License](https://img.shields.io/npm/l/llamaindex)](https://www.npmjs.com/package/llamaindex)
[![NPM Downloads](https://img.shields.io/npm/dm/llamaindex)](https://www.npmjs.com/package/llamaindex)
[![Discord](https://img.shields.io/discord/1059199217496772688)](https://discord.com/invite/eN6D2HQ4aX)
LlamaIndex is a data framework for your LLM application.
Use your own data with large language models (LLMs, OpenAI ChatGPT and others) in JS runtime environments with TypeScript support.
Use your own data with large language models (LLMs, OpenAI ChatGPT and others) in Typescript and Javascript.
Documentation: https://ts.llamaindex.ai/
Try examples online:
[![Open in Stackblitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/run-llama/LlamaIndexTS/tree/main/examples)
## What is LlamaIndex.TS?
LlamaIndex.TS aims to be a lightweight, easy to use set of libraries to help you integrate large language models into your applications with your own data.
## Compatibility
## Getting started with an example:
### Multiple JS Environment Support
LlamaIndex.TS requries Node v18 or higher. You can download it from https://nodejs.org or use https://nvm.sh (our preferred option).
LlamaIndex.TS supports multiple JS environments, including:
In a new folder:
- Node.js >= 20 ✅
- Deno ✅
- Bun ✅
- Nitro ✅
- Vercel Edge Runtime ✅ (with some limitations)
- Cloudflare Workers ✅ (with some limitations)
For now, browser support is limited due to the lack of support for [AsyncLocalStorage-like APIs](https://github.com/tc39/proposal-async-context)
### Supported LLMs:
- OpenAI LLms
- Anthropic LLms
- Groq LLMs
- Llama2, Llama3, Llama3.1 LLMs
- MistralAI LLMs
- Fireworks LLMs
- DeepSeek LLMs
- ReplicateAI LLMs
- TogetherAI LLMs
- HuggingFace LLms
- DeepInfra LLMs
- Gemini LLMs
## Getting started
```shell
npm install llamaindex
```bash
export OPENAI_API_KEY="sk-......" # Replace with your key from https://platform.openai.com/account/api-keys
pnpm init
pnpm install typescript
pnpm exec tsc --init # if needed
pnpm install llamaindex
yarn add llamaindex
pnpm install @types/node
```
### Setup in Node.js, Deno, Bun, TypeScript...?
Create the file example.ts
See our official document: <https://ts.llamaindex.ai/docs/llamaindex/getting_started/>
```ts
// example.ts
import fs from "fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
### Adding provider packages
async function main() {
// Load essay from abramov.txt in Node
const essay = await fs.readFile(
"node_modules/llamaindex/examples/abramov.txt",
"utf-8",
);
In most cases, you'll also need to install provider packages to use LlamaIndexTS. These are for adding AI models, file readers for ingestion or storing documents, e.g. in vector databases.
// Create Document object with essay
const document = new Document({ text: essay });
For example, to use the OpenAI LLM, you would install the following package:
// Split text and create embeddings. Store them in a VectorStoreIndex
const index = await VectorStoreIndex.fromDocuments([document]);
```shell
npm install @llamaindex/openai
pnpm install @llamaindex/openai
yarn add @llamaindex/openai
// Query the index
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query(
"What did the author do in college?",
);
// Output response
console.log(response.toString());
}
main();
```
Then you can run it using
```bash
pnpx ts-node example.ts
```
## Playground
@@ -83,25 +70,50 @@ Check out our NextJS playground at https://llama-playground.vercel.app/. The sou
## Core concepts for getting started:
- [Document](/packages/llamaindex/src/Node.ts): A document represents a text file, PDF file or other contiguous piece of data.
- [Document](/packages/core/src/Node.ts): A document represents a text file, PDF file or other contiguous piece of data.
- [Node](/packages/llamaindex/src/Node.ts): The basic data building block. Most commonly, these are parts of the document split into manageable pieces that are small enough to be fed into an embedding model and LLM.
- [Node](/packages/core/src/Node.ts): The basic data building block. Most commonly, these are parts of the document split into manageable pieces that are small enough to be fed into an embedding model and LLM.
- [Embedding](/packages/llamaindex/src/embeddings/OpenAIEmbedding.ts): Embeddings are sets of floating point numbers which represent the data in a Node. By comparing the similarity of embeddings, we can derive an understanding of the similarity of two pieces of data. One use case is to compare the embedding of a question with the embeddings of our Nodes to see which Nodes may contain the data needed to answer that question. Because the default service context is OpenAI, the default embedding is `OpenAIEmbedding`. If using different models, say through Ollama, use this [Embedding](/packages/llamaindex/src/embeddings/OllamaEmbedding.ts) (see all [here](/packages/llamaindex/src/embeddings)).
- [Embedding](/packages/core/src/Embedding.ts): Embeddings are sets of floating point numbers which represent the data in a Node. By comparing the similarity of embeddings, we can derive an understanding of the similarity of two pieces of data. One use case is to compare the embedding of a question with the embeddings of our Nodes to see which Nodes may contain the data needed to answer that quesiton.
- [Indices](/packages/llamaindex/src/indices/): Indices store the Nodes and the embeddings of those nodes. QueryEngines retrieve Nodes from these Indices using embedding similarity.
- [Indices](/packages/core/src/indices/): Indices store the Nodes and the embeddings of those nodes. QueryEngines retrieve Nodes from these Indices using embedding similarity.
- [QueryEngine](/packages/llamaindex/src/engines/query/RetrieverQueryEngine.ts): Query engines are what generate the query you put in and give you back the result. Query engines generally combine a pre-built prompt with selected Nodes from your Index to give the LLM the context it needs to answer your query. To build a query engine from your Index (recommended), use the [`asQueryEngine`](/packages/llamaindex/src/indices/BaseIndex.ts) method on your Index. See all query engines [here](/packages/llamaindex/src/engines/query).
- [QueryEngine](/packages/core/src/QueryEngine.ts): Query engines are what generate the query you put in and give you back the result. Query engines generally combine a pre-built prompt with selected Nodes from your Index to give the LLM the context it needs to answer your query.
- [ChatEngine](/packages/llamaindex/src/engines/chat/SimpleChatEngine.ts): A ChatEngine helps you build a chatbot that will interact with your Indices. See all chat engines [here](/packages/llamaindex/src/engines/chat).
- [ChatEngine](/packages/core/src/ChatEngine.ts): A ChatEngine helps you build a chatbot that will interact with your Indices.
- [SimplePrompt](/packages/llamaindex/src/Prompt.ts): A simple standardized function call definition that takes in inputs and formats them in a template literal. SimplePrompts can be specialized using currying and combined using other SimplePrompt functions.
- [SimplePrompt](/packages/core/src/Prompt.ts): A simple standardized function call definition that takes in inputs and formats them in a template literal. SimplePrompts can be specialized using currying and combined using other SimplePrompt functions.
## Note: NextJS:
If you're using NextJS App Router, you'll need to use the NodeJS runtime (default) and add the follow config to your next.config.js to have it use imports/exports in the same way Node does.
```js
export const runtime = "nodejs"; // default
```
```js
// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
serverComponentsExternalPackages: ["pdf-parse"], // Puts pdf-parse in actual NodeJS mode with NextJS App Router
},
};
module.exports = nextConfig;
```
## Supported LLMs:
- OpenAI GPT-3.5-turbo and GPT-4
- Anthropic Claude Instant and Claude 2
- Llama2 Chat LLMs (70B, 13B, and 7B parameters)
## Contributing:
Please see our [contributing guide](CONTRIBUTING.md) for more information.
You are highly encouraged to contribute to LlamaIndex.TS!
We are in the very early days of LlamaIndex.TS. If youre interested in hacking on it with us check out our [contributing guide](/CONTRIBUTING.md)
## Community
## Bugs? Questions?
Please join our Discord! https://discord.com/invite/eN6D2HQ4aX
+20
View File
@@ -0,0 +1,20 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+47
View File
@@ -0,0 +1,47 @@
# Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ pnpm
```
### Local Development
```
$ pnpm start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
However, the searchbar may not function with `yarn start`. Instead, run `yarn build` and launch a server:
```
$ npx http-server ./build
```
### Build
```
$ pnpm build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true pnpm deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> pnpm deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve("@docusaurus/core/lib/babel/preset")],
};
+1
View File
@@ -0,0 +1 @@
api/

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

@@ -1,7 +1,9 @@
---
title: Concepts
sidebar_position: 3
---
# High-Level Concepts
LlamaIndex.TS helps you build LLM-powered applications (e.g. Q&A, chatbot) over custom data.
In this high-level concepts guide, you will learn:
@@ -16,7 +18,7 @@ LlamaIndex uses a two stage method when using an LLM with your data:
1. **indexing stage**: preparing a knowledge base, and
2. **querying stage**: retrieving relevant context from the knowledge to assist the LLM in responding to a question
![](../_static/concepts/rag.jpg)
![](./_static/concepts/rag.jpg)
This process is also known as Retrieval Augmented Generation (RAG).
@@ -28,14 +30,14 @@ Let's explore each stage in detail.
LlamaIndex.TS help you prepare the knowledge base with a suite of data connectors and indexes.
![](../_static/concepts/indexing.jpg)
![](./_static/concepts/indexing.jpg)
[**Data Loaders**](/docs/llamaindex/modules/data_loaders/index):
[**Data Loaders**](./modules/high_level/data_loader.md):
A data connector (i.e. `Reader`) ingest data from different data sources and data formats into a simple `Document` representation (text and simple metadata).
[**Documents / Nodes**](/docs/llamaindex/modules/documents_and_nodes/index): A `Document` is a generic container around any data source - for instance, a PDF, an API output, or retrieved data from a database. A `Node` is the atomic unit of data in LlamaIndex and represents a "chunk" of a source `Document`. It's a rich representation that includes metadata and relationships (to other nodes) to enable accurate and expressive retrieval operations.
[**Documents / Nodes**](./modules/high_level/documents_and_nodes.md): A `Document` is a generic container around any data source - for instance, a PDF, an API output, or retrieved data from a database. A `Node` is the atomic unit of data in LlamaIndex and represents a "chunk" of a source `Document`. It's a rich representation that includes metadata and relationships (to other nodes) to enable accurate and expressive retrieval operations.
[**Data Indexes**](/docs/llamaindex/modules/data_index):
[**Data Indexes**](./modules/high_level/data_index.md):
Once you've ingested your data, LlamaIndex helps you index data into a format that's easy to retrieve.
Under the hood, LlamaIndex parses the raw documents into intermediate representations, calculates vector embeddings, and stores your data in-memory or to disk.
@@ -54,23 +56,23 @@ LlamaIndex provides composable modules that help you build and integrate RAG pip
These building blocks can be customized to reflect ranking preferences, as well as composed to reason over multiple knowledge bases in a structured way.
![](../_static/concepts/querying.jpg)
![](./_static/concepts/querying.jpg)
#### Building Blocks
[**Retrievers**](/docs/llamaindex/modules/retriever):
[**Retrievers**](./modules/low_level/retriever.md):
A retriever defines how to efficiently retrieve relevant context from a knowledge base (i.e. index) when given a query.
The specific retrieval logic differs for different indices, the most popular being dense retrieval against a vector index.
The specific retrieval logic differs for difference indices, the most popular being dense retrieval against a vector index.
[**Response Synthesizers**](/docs/llamaindex/modules/response_synthesizer):
[**Response Synthesizers**](./modules/low_level/response_synthesizer.md):
A response synthesizer generates a response from an LLM, using a user query and a given set of retrieved text chunks.
#### Pipelines
[**Query Engines**](/docs/llamaindex/modules/query_engines):
[**Query Engines**](./modules/high_level/query_engine.md):
A query engine is an end-to-end pipeline that allow you to ask question over your data.
It takes in a natural language query, and returns a response, along with reference context retrieved and passed to the LLM.
[**Chat Engines**](/docs/llamaindex/modules/chat_engine):
[**Chat Engines**](./modules/high_level/chat_engine.md):
A chat engine is an end-to-end pipeline for having a conversation with your data
(multiple back-and-forth instead of a single question & answer).
+45
View File
@@ -0,0 +1,45 @@
---
sidebar_position: 4
---
# End to End Examples
We include several end-to-end examples using LlamaIndex.TS in the repository
Check out the examples below or try them out and complete them in minutes with interactive Github Codespace tutorials provided by Dev-Docs [here](https://codespaces.new/team-dev-docs/lits-dev-docs-playground?devcontainer_path=.devcontainer%2Fjavascript_ltsquickstart%2Fdevcontainer.json):
## [Chat Engine](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/chatEngine.ts)
Read a file and chat about it with the LLM.
## [Vector Index](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/vectorIndex.ts)
Create a vector index and query it. The vector index will use embeddings to fetch the top k most relevant nodes. By default, the top k is 2.
## [Summary Index](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/summaryIndex.ts)
Create a list index and query it. This example also use the `LLMRetriever`, which will use the LLM to select the best nodes to use when generating answer.
## [Save / Load an Index](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/storageContext.ts)
Create and load a vector index. Persistance to disk in LlamaIndex.TS happens automatically once a storage context object is created.
## [Customized Vector Index](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/vectorIndexCustomize.ts)
Create a vector index and query it, while also configuring the the `LLM`, the `ServiceContext`, and the `similarity_top_k`.
## [OpenAI LLM](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/openai.ts)
Create an OpenAI LLM and directly use it for chat.
## [Llama2 DeuceLLM](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/llamadeuce.ts)
Create a Llama-2 LLM and directly use it for chat.
## [SubQuestionQueryEngine](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/subquestion.ts)
Uses the `SubQuestionQueryEngine`, which breaks complex queries into multiple questions, and then aggreates a response across the answers to all sub-questions.
## [Low Level Modules](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/lowlevel.ts)
This example uses several low-level components, which removes the need for an actual query engine. These components can be used anywhere, in any application, or customized and sub-classed to meet your own needs.
+29
View File
@@ -0,0 +1,29 @@
---
sidebar_position: 5
---
# Environments
LlamaIndex currently officially supports NodeJS 18 and NodeJS 20.
## NextJS App Router
If you're using NextJS App Router route handlers/serverless functions, you'll need to use the NodeJS mode:
```js
export const runtime = "nodejs"; // default
```
and you'll need to add an exception for pdf-parse in your next.config.js
```js
// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
serverComponentsExternalPackages: ["pdf-parse"], // Puts pdf-parse in actual NodeJS mode with NextJS App Router
},
};
module.exports = nextConfig;
```
+25
View File
@@ -0,0 +1,25 @@
---
sidebar_position: 1
---
# Installation and Setup
## Installation from NPM
Make sure you have NodeJS v18 or higher.
```bash npm2yarn
npm install llamaindex
```
## Environment variables
Our examples use OpenAI by default. You'll need to set up your Open AI key like so:
```bash
export OPENAI_API_KEY="sk-......" # Replace with your key from https://platform.openai.com/account/api-keys
```
If you want to have it automatically loaded every time, add it to your .zshrc/.bashrc.
WARNING: do not check in your OpenAI key into version control.
+56
View File
@@ -0,0 +1,56 @@
---
sidebar_position: 0
slug: /
---
# What is LlamaIndex.TS?
LlamaIndex.TS is a data framework for LLM applications to ingest, structure, and access private or domain-specific data. While a python package is also available (see [here](https://gpt-index.readthedocs.io/en/latest/)), LlamaIndex.TS offers core features in a simple package, optimized for usage with TypeScript.
## 🚀 Why LlamaIndex.TS?
At their core, LLMs offer a natural language interface between humans and inferred data. Widely available models come pre-trained on huge amounts of publicly available data, from Wikipedia and mailing lists to textbooks and source code.
Applications built on top of LLMs often require augmenting these models with private or domain-specific data. Unfortunately, that data can be distributed across siloed applications and data stores. It's behind APIs, in SQL databases, or trapped in PDFs and slide decks.
That's where **LlamaIndex.TS** comes in.
## 🦙 How can LlamaIndex.TS help?
LlamaIndex.TS provides the following tools:
- **Data loading** ingest your existing `.txt`, `.pdf`, `.csv`, `.md` and `.docx` data directly
- **Data indexes** structure your data in intermediate representations that are easy and performant for LLMs to consume.
- **Engines** provide natural language access to your data. For example:
- Query engines are powerful retrieval interfaces for knowledge-augmented output.
- Chat engines are conversational interfaces for multi-message, "back and forth" interactions with your data.
## 👨‍👩‍👧‍👦 Who is LlamaIndex for?
LlamaIndex.TS provides a core set of tools, essential for anyone building LLM apps with JavaScript and TypeScript.
Our high-level API allows beginner users to use LlamaIndex.TS to ingest and query their data.
For more complex applications, our lower-level APIs allow advanced users to customize and extend any module—data connectors, indices, retrievers, and query engines, to fit their needs.
## Getting Started
`npm install llamaindex`
Our documentation includes [Installation Instructions](./installation.md) and a [Starter Tutorial](./starter.md) to build your first application.
Once you're up and running, [High-Level Concepts](./concepts.md) has an overview of LlamaIndex's modular architecture. For more hands-on practical examples, look through our [End-to-End Tutorials](./end_to_end.md).
## 🗺️ Ecosystem
To download or contribute, find LlamaIndex on:
- Github: https://github.com/run-llama/LlamaIndexTS
- NPM: https://www.npmjs.com/package/llamaindex
## Community
Need help? Have a feature suggestion? Join the LlamaIndex community:
- Twitter: https://twitter.com/llama_index
- Discord https://discord.gg/dGcwcsnxhU
+3
View File
@@ -0,0 +1,3 @@
label: "Modules"
collapsed: false
position: 5
@@ -0,0 +1 @@
label: High-Level Modules
@@ -0,0 +1,20 @@
---
sidebar_position: 4
---
# ChatEngine
The chat engine is a quick and simple way to chat with the data in your index.
```typescript
const retriever = index.asRetriever();
const chatEngine = new ContextChatEngine({ retriever });
// start chatting
const response = await chatEngine.chat(query);
```
## Api References
- [ContextChatEngine](../../api/classes/ContextChatEngine.md)
- [CondenseQuestionChatEngine](../../api/classes/ContextChatEngine.md)
@@ -1,12 +1,13 @@
---
title: Index
sidebar_position: 2
---
# Index
An index is the basic container and organization for your data. LlamaIndex.TS supports two indexes:
- `VectorStoreIndex` - will send the top-k `Node`s to the LLM when generating a response. The default top-k is 2.
- `SummaryIndex` - will send every `Node` in the index to the LLM in order to generate a response
- `KeywordTableIndex` extracts and provides keywords from `Node`s to the LLM
```typescript
import { Document, VectorStoreIndex } from "llamaindex";
@@ -18,6 +19,5 @@ const index = await VectorStoreIndex.fromDocuments([document]);
## API Reference
- [SummaryIndex](/docs/api/classes/SummaryIndex)
- [VectorStoreIndex](/docs/api/classes/VectorStoreIndex)
- [KeywordTableIndex](/docs/api/classes/KeywordTableIndex)
- [SummaryIndex](../../api/classes/SummaryIndex.md)
- [VectorStoreIndex](../../api/classes/VectorStoreIndex.md)
@@ -0,0 +1,17 @@
---
sidebar_position: 1
---
# Reader / Loader
LlamaIndex.TS supports easy loading of files from folders using the `SimpleDirectoryReader` class. Currently, `.txt`, `.pdf`, `.csv`, `.md` and `.docx` files are supported, with more planned in the future!
```typescript
import { SimpleDirectoryReader } from "llamaindex";
documents = new SimpleDirectoryReader().loadData("./data");
```
## API Reference
- [SimpleDirectoryReader](../../api/classes/SimpleDirectoryReader.md)
@@ -1,7 +1,9 @@
---
title: Documents and Nodes
sidebar_position: 0
---
# Documents and Nodes
`Document`s and `Node`s are the basic building blocks of any index. While the API for these objects is similar, `Document` objects represent entire files, while `Node`s are smaller pieces of that original document, that are suitable for an LLM and Q&A.
```typescript
@@ -12,5 +14,5 @@ document = new Document({ text: "text", metadata: { key: "val" } });
## API Reference
- [Document](/docs/api/classes/Document)
- [TextNode](/docs/api/classes/TextNode)
- [Document](../../api/classes/Document.md)
- [TextNode](../../api/classes/TextNode.md)
@@ -1,21 +1,14 @@
---
title: QueryEngine
sidebar_position: 3
---
A query engine wraps a `Retriever` and a `ResponseSynthesizer` into a pipeline, that will use the query string to fetch nodes and then send them to the LLM to generate a response.
# QueryEngine
A query engine wraps a `Retriever` and a `ResponseSynthesizer` into a pipeline, that will use the query string to fetech nodes and then send them to the LLM to generate a response.
```typescript
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query({ query: "query string" });
```
The `query` function also supports streaming, just add `stream: true` as an option:
```typescript
const stream = await queryEngine.query({ query: "query string", stream: true });
for await (const chunk of stream) {
process.stdout.write(chunk.response);
}
const response = await queryEngine.query("query string");
```
## Sub Question Query Engine
@@ -24,7 +17,7 @@ The basic concept of the Sub Question Query Engine is that it splits a single qu
### Getting Started
The easiest way to start trying the Sub Question Query Engine is running the subquestion.ts file in [examples](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts).
The easiest way to start trying the Sub Question Query Engine is running the subquestion.ts file in [apps/simple](https://github.com/run-llama/LlamaIndexTS/blob/main/apps/simple/subquestion.ts).
```bash
npx ts-node subquestion.ts
@@ -38,6 +31,6 @@ You can learn more about Tools by taking a look at the LlamaIndex Python documen
## API Reference
- [RetrieverQueryEngine](/docs/api/classes/RetrieverQueryEngine)
- [SubQuestionQueryEngine](/docs/api/classes/SubQuestionQueryEngine)
- [QueryEngineTool](/docs/api/classes/QueryEngineTool)
- [RetrieverQueryEngine](../../api/classes/RetrieverQueryEngine.md)
- [SubQuestionQueryEngine](../../api/classes/SubQuestionQueryEngine.md)
- [QueryEngineTool](../../api/interfaces/QueryEngineTool.md)
+31
View File
@@ -0,0 +1,31 @@
# Core Modules
LlamaIndex.TS offers several core modules, seperated into high-level modules for quickly getting started, and low-level modules for customizing key components as you need.
## High-Level Modules
- [**Document**](./high_level/documents_and_nodes.md): A document represents a text file, PDF file or other contiguous piece of data.
- [**Node**](./high_level/documents_and_nodes.md): The basic data building block. Most commonly, these are parts of the document split into manageable pieces that are small enough to be fed into an embedding model and LLM.
- [**Reader/Loader**](./high_level/data_loader.md): A reader or loader is something that takes in a document in the real world and transforms into a Document class that can then be used in your Index and queries. We currently support plain text files and PDFs with many many more to come.
- [**Indexes**](./high_level/data_index.md): indexes store the Nodes and the embeddings of those nodes.
- [**QueryEngine**](./high_level/query_engine.md): Query engines are what generate the query you put in and give you back the result. Query engines generally combine a pre-built prompt with selected nodes from your Index to give the LLM the context it needs to answer your query.
- [**ChatEngine**](./high_level/chat_engine.md): A ChatEngine helps you build a chatbot that will interact with your Indexes.
## Low Level Module
- [**LLM**](./low_level/llm.md): The LLM class is a unified interface over a large language model provider such as OpenAI GPT-4, Anthropic Claude, or Meta LLaMA. You can subclass it to write a connector to your own large language model.
- [**Embedding**](./low_level/embedding.md): An embedding is represented as a vector of floating point numbers. OpenAI's text-embedding-ada-002 is our default embedding model and each embedding it generates consists of 1,536 floating point numbers. Another popular embedding model is BERT which uses 768 floating point numbers to represent each Node. We provide a number of utilities to work with embeddings including 3 similarity calculation options and Maximum Marginal Relevance
- [**TextSplitter/NodeParser**](./low_level/node_parser.md): Text splitting strategies are incredibly important to the overall efficacy of the embedding search. Currently, while we do have a default, there's no one size fits all solution. Depending on the source documents, you may want to use different splitting sizes and strategies. Currently we support spliltting by fixed size, splitting by fixed size with overlapping sections, splitting by sentence, and splitting by paragraph. The text splitter is used by the NodeParser when splitting `Document`s into `Node`s.
- [**Retriever**](./low_level/retriever.md): The Retriever is what actually chooses the Nodes to retrieve from the index. Here, you may wish to try retrieving more or fewer Nodes per query, changing your similarity function, or creating your own retriever for each individual use case in your application. For example, you may wish to have a separate retriever for code content vs. text content.
- [**ResponseSynthesizer**](./low_level/response_synthesizer.md): The ResponseSynthesizer is responsible for taking a query string, and using a list of `Node`s to generate a response. This can take many forms, like iterating over all the context and refining an answer, or building a tree of summaries and returning the root summary.
- [**Storage**](./low_level/storage.md): At some point you're going to want to store your indexes, data and vectors instead of re-running the embedding models every time. IndexStore, DocStore, VectorStore, and KVStore are abstractions that let you do that. Combined, they form the StorageContext. Currently, we allow you to persist your embeddings in files on the filesystem (or a virtual in memory file system), but we are also actively adding integrations to Vector Databases.
@@ -0,0 +1 @@
label: Low-Level Modules
@@ -0,0 +1,22 @@
---
sidebar_position: 1
---
# Embedding
The embedding model in LlamaIndex is responsible for creating numerical representations of text. By default, LlamaIndex will use the `text-embedding-ada-002` model from OpenAI.
This can be explicitly set in the `ServiceContext` object.
```typescript
import { OpenAIEmbedding, serviceContextFromDefaults } from "llamaindex";
const openaiEmbeds = new OpenAIEmbedding();
const serviceContext = serviceContextFromDefaults({ embedModel: openaiEmbeds });
```
## API Reference
- [OpenAIEmbedding](../../api/classes/OpenAIEmbedding.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
+22
View File
@@ -0,0 +1,22 @@
---
sidebar_position: 0
---
# LLM
The LLM is responsible for reading text and generating natural language responses to queries. By default, LlamaIndex.TS uses `gpt-3.5-turbo`.
The LLM can be explicitly set in the `ServiceContext` object.
```typescript
import { OpenAI, serviceContextFromDefaults } from "llamaindex";
const openaiLLM = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
const serviceContext = serviceContextFromDefaults({ llm: openaiLLM });
```
## API Reference
- [OpenAI](../../api/classes/OpenAI.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
@@ -0,0 +1,33 @@
---
sidebar_position: 3
---
# NodeParser
The `NodeParser` in LlamaIndex is responbile for splitting `Document` objects into more manageable `Node` objects. When you call `.fromDocuments()`, the `NodeParser` from the `ServiceContext` is used to do this automatically for you. Alternatively, you can use it to split documents ahead of time.
```typescript
import { Document, SimpleNodeParser } from "llamaindex";
const nodeParser = new SimpleNodeParser();
const nodes = nodeParser.getNodesFromDocuments([
new Document({ text: "I am 10 years old. John is 20 years old." }),
]);
```
## TextSplitter
The underlying text splitter will split text by sentences. It can also be used as a standalone module for splitting raw text.
```typescript
import { SentenceSplitter } from "llamaindex";
const splitter = new SentenceSplitter({ chunkSize: 1 });
const textSplits = splitter.splitText("Hello World");
```
## API Reference
- [SimpleNodeParser](../../api/classes/SimpleNodeParser.md)
- [SentenceSplitter](../../api/classes/SentenceSplitter.md)
@@ -1,7 +1,9 @@
---
title: ResponseSynthesizer
sidebar_position: 6
---
# ResponseSynthesizer
The ResponseSynthesizer is responsible for sending the query, nodes, and prompt templates to the LLM to generate a response. There are a few key modes for generating a response:
- `Refine`: "create and refine" an answer by sequentially going through each retrieved text chunk.
@@ -18,7 +20,7 @@ The ResponseSynthesizer is responsible for sending the query, nodes, and prompt
chunk.
```typescript
import { NodeWithScore, TextNode, ResponseSynthesizer } from "llamaindex";
import { NodeWithScore, ResponseSynthesizer, TextNode } from "llamaindex";
const responseSynthesizer = new ResponseSynthesizer();
@@ -33,30 +35,17 @@ const nodesWithScore: NodeWithScore[] = [
},
];
const response = await responseSynthesizer.synthesize({
query: "What age am I?",
const response = await responseSynthesizer.synthesize(
"What age am I?",
nodesWithScore,
});
);
console.log(response.response);
```
The `synthesize` function also supports streaming, just add `stream: true` as an option:
```typescript
const stream = await responseSynthesizer.synthesize({
query: "What age am I?",
nodesWithScore,
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.response);
}
```
## API Reference
- [ResponseSynthesizer](/docs/api/classes/ResponseSynthesizer)
- [Refine](/docs/api/classes/Refine)
- [CompactAndRefine](/docs/api/classes/CompactAndRefine)
- [TreeSummarize](/docs/api/classes/TreeSummarize)
- [SimpleResponseBuilder](/docs/api/classes/SimpleResponseBuilder)
- [ResponseSynthesizer](../../api/classes/ResponseSynthesizer.md)
- [Refine](../../api/classes/Refine.md)
- [CompactAndRefine](../../api/classes/CompactAndRefine.md)
- [TreeSummarize](../../api/classes/TreeSummarize.md)
- [SimpleResponseBuilder](../../api/classes/SimpleResponseBuilder.md)
@@ -0,0 +1,21 @@
---
sidebar_position: 5
---
# Retriever
A retriever in LlamaIndex is what is used to fetch `Node`s from an index using a query string. Aa `VectorIndexRetriever` will fetch the top-k most similar nodes. Meanwhile, a `SummaryIndexRetriever` will fetch all nodes no matter the query.
```typescript
const retriever = vector_index.asRetriever();
retriever.similarityTopK = 3;
// Fetch nodes!
const nodesWithScore = await retriever.retrieve("query string");
```
## API Reference
- [SummaryIndexRetriever](../../api/classes/SummaryIndexRetriever.md)
- [SummaryIndexLLMRetriever](../../api/classes/SummaryIndexLLMRetriever.md)
- [VectorIndexRetriever](../../api/classes/VectorIndexRetriever.md)
@@ -0,0 +1,26 @@
---
sidebar_position: 7
---
# Storage
Storage in LlamaIndex.TS works automatically once you've configured a `StorageContext` object. Just configure the `persistDir` and attach it to an index.
Right now, only saving and loading from disk is supported, with future integrations planned!
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "./src";
const storageContext = await storageContextFromDefaults({
persistDir: "./storage",
});
const document = new Document({ text: "Test Text" });
const index = await VectorStoreIndex.fromDocuments([document], {
storageContext,
});
```
## API Reference
- [StorageContext](../../api/interfaces/StorageContext.md)
+56
View File
@@ -0,0 +1,56 @@
---
sidebar_position: 2
---
# Starter Tutorial
Once you have [installed LlamaIndex.TS using NPM](installation.md) and set up your OpenAI key, you're ready to start your first app:
In a new folder:
```bash npm2yarn
npm install typescript
npm install @types/node
npx tsc --init # if needed
```
Create the file `example.ts`. This code will load some example data, create a document, index it (which creates embeddings using OpenAI), and then creates query engine to answer questions about the data.
```ts
// example.ts
import fs from "fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
async function main() {
// Load essay from abramov.txt in Node
const essay = await fs.readFile(
"node_modules/llamaindex/examples/abramov.txt",
"utf-8",
);
// Create Document object with essay
const document = new Document({ text: essay });
// Split text and create embeddings. Store them in a VectorStoreIndex
const index = await VectorStoreIndex.fromDocuments([document]);
// Query the index
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query(
"What did the author do in college?",
);
// Output response
console.log(response.toString());
}
main();
```
Then you can run it using
```bash
npx ts-node example.ts
```
Ready to learn more? Check out our NextJS playground at https://llama-playground.vercel.app/. The source is available at https://github.com/run-llama/ts-playground
+152
View File
@@ -0,0 +1,152 @@
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
const lightCodeTheme = require("prism-react-renderer/themes/github");
const darkCodeTheme = require("prism-react-renderer/themes/dracula");
/** @type {import('@docusaurus/types').Config} */
const config = {
title: "LlamaIndex.TS",
tagline: "Unleash the power of LLMs over your data in TypeScript",
favicon: "img/favicon.png",
// Set the production url of your site here
url: "https://ts.llamaindex.ai",
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: "/",
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: "run-llama", // Usually your GitHub org/user name.
projectName: "LlamaIndex.TS", // Usually your repo name.
onBrokenLinks: "warn",
onBrokenMarkdownLinks: "warn",
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
locales: ["en"],
},
presets: [
[
"classic",
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
routeBasePath: "/",
sidebarPath: require.resolve("./sidebars.js"),
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
// editUrl:
// "https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/",
remarkPlugins: [
[require("@docusaurus/remark-plugin-npm2yarn"), { sync: true }],
],
},
blog: false,
}),
],
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// Replace with your project's social card
image: "img/favicon.png", // TODO change this
navbar: {
title: "LlamaIndex.TS",
logo: {
alt: "LlamaIndex.TS",
src: "img/favicon.png",
},
items: [
{
type: "docSidebar",
sidebarId: "mySidebar",
position: "left",
label: "Docs",
},
{
href: "https://github.com/run-llama/LlamaIndexTS",
label: "GitHub",
position: "right",
},
],
},
footer: {
style: "dark",
links: [
{
title: "Docs",
items: [
{
label: "API",
to: "/api",
},
],
},
{
title: "Community",
items: [
{
label: "Discord",
href: "https://discord.com/invite/eN6D2HQ4aX",
},
{
label: "Twitter",
href: "https://twitter.com/LlamaIndex",
},
],
},
{
title: "More",
items: [
{
label: "GitHub",
href: "https://github.com/run-llama/LlamaIndexTS",
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} LlamaIndex. Built with Docusaurus.`,
},
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
},
algolia: {
// The application ID provided by Algolia
appId: "DYKPM6G4CX",
// Public API key: it is safe to commit it
apiKey: "c4ff3789f20bb72a5d735082aef17719",
indexName: "ts-llamaindex",
// Optional: see doc section below
contextualSearch: true,
},
}),
plugins: [
[
"docusaurus-plugin-typedoc",
{
entryPoints: ["../../packages/core/src/index.ts"],
tsconfig: "../../packages/core/tsconfig.json",
readme: "none",
sourceLinkTemplate:
"https://github.com/run-llama/LlamaIndexTS/blob/{gitRevision}/{path}#L{line}",
sidebar: {
position: 6,
},
},
],
],
};
module.exports = config;
+53
View File
@@ -0,0 +1,53 @@
{
"name": "docs",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "2.4.3",
"@docusaurus/preset-classic": "2.4.3",
"@docusaurus/remark-plugin-npm2yarn": "^2.4.3",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.2.1",
"postcss": "^8.4.31",
"prism-react-renderer": "^1.3.5",
"raw-loader": "^4.0.2",
"react": "^17.0.2",
"react-dom": "^17.0.2"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "2.4.3",
"@docusaurus/types": "^2.4.3",
"@tsconfig/docusaurus": "^2.0.1",
"docusaurus-plugin-typedoc": "^0.19.2",
"typedoc": "^0.24.8",
"typedoc-plugin-markdown": "^3.16.0",
"typescript": "^4.9.5"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"engines": {
"node": ">=16.14"
}
}
+33
View File
@@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
mySidebar: [{ type: "autogenerated", dirName: "." }],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
module.exports = sidebars;
@@ -0,0 +1,59 @@
import clsx from "clsx";
import React from "react";
import styles from "./styles.module.css";
type FeatureItem = {
title: string;
Svg: React.ComponentType<React.ComponentProps<"svg">>;
description: JSX.Element;
};
const FeatureList: FeatureItem[] = [
{
title: "Data Driven",
Svg: require("@site/static/img/undraw_docusaurus_mountain.svg").default,
description: <>LlamaIndex.TS is all about using your data with LLMs.</>,
},
{
title: "Typescript Native",
Svg: require("@site/static/img/undraw_docusaurus_tree.svg").default,
description: <>We Typescript, and so do our users.</>,
},
{
title: "Built by the Community",
Svg: require("@site/static/img/undraw_docusaurus_react.svg").default,
description: (
<>
LlamaIndex.TS is a community project, and we welcome your contributions!
</>
),
},
];
function Feature({ title, Svg, description }: FeatureItem) {
return (
<div className={clsx("col col--4")}>
<div className="text--center">
<Svg className={styles.featureSvg} role="img" />
</div>
<div className="text--center padding-horiz--md">
<h3>{title}</h3>
<p>{description}</p>
</div>
</div>
);
}
export default function HomepageFeatures(): JSX.Element {
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}
@@ -0,0 +1,11 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}
+30
View File
@@ -0,0 +1,30 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #2e8555;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme="dark"] {
--ifm-color-primary: #25c2a0;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}
+23
View File
@@ -0,0 +1,23 @@
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 996px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}
+7
View File
@@ -0,0 +1,7 @@
---
title: Markdown page example
---
# Markdown page example
You don't need React to write simple standalone pages.
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

+37
View File
@@ -0,0 +1,37 @@
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path fill="#FFF" d="M99 52h84v34H99z" />
<path
d="M23 163c-7.398 0-13.843-4.027-17.303-10A19.886 19.886 0 0 0 3 163c0 11.046 8.954 20 20 20h20v-20H23z"
fill="#3ECC5F" />
<path
d="M112.98 57.376L183 53V43c0-11.046-8.954-20-20-20H73l-2.5-4.33c-1.112-1.925-3.889-1.925-5 0L63 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L53 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L43 23c-.022 0-.042.003-.065.003l-4.142-4.141c-1.57-1.571-4.252-.853-4.828 1.294l-1.369 5.104-5.192-1.392c-2.148-.575-4.111 1.389-3.535 3.536l1.39 5.193-5.102 1.367c-2.148.576-2.867 3.259-1.296 4.83l4.142 4.142c0 .021-.003.042-.003.064l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 53l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 63l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 73l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 83l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 93l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 103l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 113l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 123l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 133l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 143l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 153l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 163c0 11.046 8.954 20 20 20h120c11.046 0 20-8.954 20-20V83l-70.02-4.376A10.645 10.645 0 0 1 103 68c0-5.621 4.37-10.273 9.98-10.624"
fill="#3ECC5F" />
<path fill="#3ECC5F" d="M143 183h30v-40h-30z" />
<path
d="M193 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 190.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5"
fill="#44D860" />
<path fill="#3ECC5F" d="M153 123h30v-20h-30z" />
<path
d="M193 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 183 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032"
fill="#44D860" />
<path
d="M63 55.5a2.5 2.5 0 0 1-2.5-2.5c0-4.136-3.364-7.5-7.5-7.5s-7.5 3.364-7.5 7.5a2.5 2.5 0 1 1-5 0c0-6.893 5.607-12.5 12.5-12.5S65.5 46.107 65.5 53a2.5 2.5 0 0 1-2.5 2.5"
fill="#000" />
<path d="M103 183h60c11.046 0 20-8.954 20-20V93h-60c-11.046 0-20 8.954-20 20v70z" fill="#FFFF50" />
<path
d="M168.02 124h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0-49.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 19.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2M183 61.611c-.012 0-.022-.006-.034-.005-3.09.105-4.552 3.196-5.842 5.923-1.346 2.85-2.387 4.703-4.093 4.647-1.889-.068-2.969-2.202-4.113-4.46-1.314-2.594-2.814-5.536-5.963-5.426-3.046.104-4.513 2.794-5.807 5.167-1.377 2.528-2.314 4.065-4.121 3.994-1.927-.07-2.951-1.805-4.136-3.813-1.321-2.236-2.848-4.75-5.936-4.664-2.994.103-4.465 2.385-5.763 4.4-1.373 2.13-2.335 3.428-4.165 3.351-1.973-.07-2.992-1.51-4.171-3.177-1.324-1.873-2.816-3.993-5.895-3.89-2.928.1-4.399 1.97-5.696 3.618-1.232 1.564-2.194 2.802-4.229 2.724a1 1 0 0 0-.072 2c3.017.101 4.545-1.8 5.872-3.487 1.177-1.496 2.193-2.787 4.193-2.855 1.926-.082 2.829 1.115 4.195 3.045 1.297 1.834 2.769 3.914 5.731 4.021 3.103.104 4.596-2.215 5.918-4.267 1.182-1.834 2.202-3.417 4.15-3.484 1.793-.067 2.769 1.35 4.145 3.681 1.297 2.197 2.766 4.686 5.787 4.796 3.125.108 4.634-2.62 5.949-5.035 1.139-2.088 2.214-4.06 4.119-4.126 1.793-.042 2.728 1.595 4.111 4.33 1.292 2.553 2.757 5.445 5.825 5.556l.169.003c3.064 0 4.518-3.075 5.805-5.794 1.139-2.41 2.217-4.68 4.067-4.773v-2z"
fill="#000" />
<path fill="#3ECC5F" d="M83 183h40v-40H83z" />
<path
d="M143 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 140.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5"
fill="#44D860" />
<path fill="#3ECC5F" d="M83 123h40v-20H83z" />
<path
d="M133 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 123 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032"
fill="#44D860" />
<path
d="M143 41.75c-.16 0-.33-.02-.49-.05a2.52 2.52 0 0 1-.47-.14c-.15-.06-.29-.14-.431-.23-.13-.09-.259-.2-.38-.31-.109-.12-.219-.24-.309-.38s-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.16.02-.33.05-.49.03-.16.08-.31.139-.47.061-.15.141-.29.231-.43.09-.13.2-.26.309-.38.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.65-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.11.12.22.25.31.38.09.14.17.28.23.43.06.16.11.31.14.47.029.16.05.33.05.49 0 .66-.271 1.31-.73 1.77-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19m20-1.25c-.66 0-1.3-.27-1.771-.73a3.802 3.802 0 0 1-.309-.38c-.09-.14-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.66.27-1.3.729-1.77.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.66-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.459.47.73 1.11.73 1.77 0 .16-.021.33-.05.49-.03.16-.08.32-.14.47-.07.15-.14.29-.23.43-.09.13-.2.26-.31.38-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19"
fill="#000" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

+171
View File
@@ -0,0 +1,171 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
<title>Easy to Use</title>
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
<path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
<path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
<path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
<circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
<circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
<circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
<circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
<circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
<circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
<path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
<path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
<path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
<path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
<path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
<rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
<path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(312.271 493.733)">
<path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
<path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
<path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

+170
View File
@@ -0,0 +1,170 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
<title>Powered by React</title>
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
<path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
<path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
<path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
<rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
<rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
<path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
<path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
<path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
<path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
<path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
<path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
<circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
<path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
<path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
<path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
<path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
<path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
<path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(670.271 615.768)">
<path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
<path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
<path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
</g>
<g id="React-icon" transform="translate(906.3 541.56)">
<path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
<path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
<circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
<path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

+40
View File
@@ -0,0 +1,40 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
<title>Focus on What Matters</title>
<circle cx="321" cy="321" r="321" fill="#f2f2f2" />
<ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
<ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
<rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
<path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
<circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
<rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
<rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
<rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
<path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
<path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
<path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
<path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

+7
View File
@@ -0,0 +1,7 @@
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@tsconfig/docusaurus/tsconfig.json",
"compilerOptions": {
"baseUrl": "."
}
}
-33
View File
@@ -1,33 +0,0 @@
# deps
/node_modules
# generated content
.contentlayer
.content-collections
.source
# test & build
/coverage
/.next/
/out/
/build
*.tsbuildinfo
# misc
.DS_Store
*.pem
/.pnp
.pnp.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# others
.env*.local
.vercel
next-env.d.ts
# build
/src/content/docs/cloud/api
/src/content/docs/api
./types
-578
View File
@@ -1,578 +0,0 @@
# @llamaindex/doc
## 0.1.9
### Patch Changes
- 4bac71d: Support binding additional argument to function tool
- Updated dependencies [4bac71d]
- @llamaindex/core@0.5.7
- @llamaindex/cloud@3.0.8
- llamaindex@0.9.9
- @llamaindex/node-parser@1.0.7
- @llamaindex/openai@0.1.59
- @llamaindex/readers@2.0.7
- @llamaindex/workflow@0.0.15
## 0.1.8
### Patch Changes
- Updated dependencies [4b49428]
- Updated dependencies [bbc8c87]
- @llamaindex/workflow@0.0.14
- llamaindex@0.9.8
## 0.1.7
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/core@0.5.6
- llamaindex@0.9.7
- @llamaindex/cloud@3.0.7
- @llamaindex/node-parser@1.0.6
- @llamaindex/openai@0.1.58
- @llamaindex/readers@2.0.6
- @llamaindex/workflow@0.0.13
## 0.1.6
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
- @llamaindex/workflow@0.0.12
- @llamaindex/cloud@3.0.6
- llamaindex@0.9.6
- @llamaindex/node-parser@1.0.5
- @llamaindex/openai@0.1.57
- @llamaindex/readers@2.0.5
## 0.1.5
### Patch Changes
- Updated dependencies [ad3c7f1]
- @llamaindex/core@0.5.4
- @llamaindex/cloud@3.0.5
- llamaindex@0.9.5
- @llamaindex/node-parser@1.0.4
- @llamaindex/openai@0.1.56
- @llamaindex/readers@2.0.4
## 0.1.4
### Patch Changes
- Updated dependencies [cb256f2]
- Updated dependencies [cb021e7]
- @llamaindex/openai@0.1.55
- @llamaindex/core@0.5.3
- llamaindex@0.9.4
- @llamaindex/cloud@3.0.4
- @llamaindex/node-parser@1.0.3
- @llamaindex/readers@2.0.3
## 0.1.3
### Patch Changes
- Updated dependencies [d952e68]
- @llamaindex/core@0.5.2
- @llamaindex/cloud@3.0.3
- llamaindex@0.9.3
- @llamaindex/node-parser@1.0.2
- @llamaindex/openai@0.1.54
- @llamaindex/readers@2.0.2
## 0.1.2
### Patch Changes
- Updated dependencies [c902fcb]
- Updated dependencies [88d776f]
- @llamaindex/cloud@3.0.2
- llamaindex@0.9.2
## 0.1.1
### Patch Changes
- Updated dependencies [6d37d44]
- llamaindex@0.9.1
- @llamaindex/cloud@3.0.1
- @llamaindex/core@0.5.1
- @llamaindex/node-parser@1.0.1
- @llamaindex/openai@0.1.53
- @llamaindex/readers@2.0.1
- @llamaindex/workflow@0.0.11
## 0.1.0
### Minor Changes
- 6a4a737: Remove re-exports from llamaindex main package
- f4588bc: Remove readers package from llamaindex
### Patch Changes
- c7c0800: fix: fumadoc build fail
- a87efb9: docs: update chat engine docs
- 7bd5d93: docs: update workflow doc
- Updated dependencies [6a4a737]
- Updated dependencies [d924c63]
- Updated dependencies [b490376]
- Updated dependencies [f4588bc]
- llamaindex@0.9.0
- @llamaindex/core@0.5.0
- @llamaindex/cloud@3.0.0
- @llamaindex/node-parser@1.0.0
- @llamaindex/openai@0.1.52
- @llamaindex/readers@2.0.0
## 0.0.41
### Patch Changes
- Updated dependencies [1c908fd]
- @llamaindex/openai@0.1.51
- @llamaindex/node-parser@0.0.24
- @llamaindex/workflow@0.0.10
- @llamaindex/readers@1.0.25
- @llamaindex/cloud@2.0.24
- @llamaindex/core@0.4.23
- llamaindex@0.8.37
## 0.0.40
### Patch Changes
- Updated dependencies [cb608b5]
- @llamaindex/openai@0.1.50
- @llamaindex/node-parser@0.0.23
- @llamaindex/workflow@0.0.9
- @llamaindex/readers@1.0.24
- @llamaindex/cloud@2.0.23
- @llamaindex/core@0.4.22
- llamaindex@0.8.36
## 0.0.39
### Patch Changes
- 6d4d96f: chore: update examples and docs to use unified imports
- Updated dependencies [15563a0]
- @llamaindex/openai@0.1.49
- llamaindex@0.8.35
## 0.0.38
### Patch Changes
- Updated dependencies [9f8ad37]
- Updated dependencies [7265f74]
- llamaindex@0.8.34
- @llamaindex/openai@0.1.48
## 0.0.37
### Patch Changes
- Updated dependencies [2019a04]
- @llamaindex/openai@0.1.47
- llamaindex@0.8.33
## 0.0.36
### Patch Changes
- f02621e: Fix internal links between chapters
- Updated dependencies [34faf48]
- Updated dependencies [4df1fe6]
- Updated dependencies [9456616]
- Updated dependencies [d6c270e]
- Updated dependencies [1892e1c]
- Updated dependencies [1931bbc]
- llamaindex@0.8.32
- @llamaindex/core@0.4.21
- @llamaindex/cloud@2.0.22
- @llamaindex/openai@0.1.46
- @llamaindex/node-parser@0.0.22
- @llamaindex/readers@1.0.23
## 0.0.35
### Patch Changes
- Updated dependencies [5dec9f9]
- Updated dependencies [fd9c829]
- Updated dependencies [d211b7a]
- Updated dependencies [0ebbfc1]
- @llamaindex/cloud@2.0.21
- llamaindex@0.8.31
- @llamaindex/core@0.4.20
- @llamaindex/node-parser@0.0.21
- @llamaindex/openai@0.1.45
- @llamaindex/readers@1.0.22
## 0.0.34
### Patch Changes
- Updated dependencies [012495b]
- @llamaindex/cloud@2.0.20
- llamaindex@0.8.30
## 0.0.33
### Patch Changes
- Updated dependencies [dd596a0]
- llamaindex@0.8.29
## 0.0.32
### Patch Changes
- a9b5b99: feat: build api reference pages for new documentation site
- Updated dependencies [a9b5b99]
- @llamaindex/core@0.4.19
- @llamaindex/readers@1.0.21
- @llamaindex/cloud@2.0.19
- llamaindex@0.8.28
- @llamaindex/node-parser@0.0.20
- @llamaindex/openai@0.1.44
## 0.0.31
### Patch Changes
- Updated dependencies [b504303]
- Updated dependencies [e0f6cc3]
- Updated dependencies [a0e6f57]
- llamaindex@0.8.27
- @llamaindex/core@0.4.18
- @llamaindex/cloud@2.0.18
- @llamaindex/node-parser@0.0.19
- @llamaindex/openai@0.1.43
- @llamaindex/readers@1.0.20
- @llamaindex/workflow@0.0.8
## 0.0.30
### Patch Changes
- Updated dependencies [3d1808b]
- @llamaindex/core@0.4.17
- llamaindex@0.8.26
- @llamaindex/openai@0.1.42
- @llamaindex/cloud@2.0.17
- @llamaindex/node-parser@0.0.18
- @llamaindex/readers@1.0.19
## 0.0.29
### Patch Changes
- Updated dependencies [7e8230b]
- Updated dependencies [8be4589]
- @llamaindex/readers@1.0.18
- @llamaindex/cloud@2.0.16
- @llamaindex/core@0.4.16
- @llamaindex/node-parser@0.0.17
- @llamaindex/openai@0.1.41
- @llamaindex/workflow@0.0.7
- llamaindex@0.8.25
## 0.0.28
### Patch Changes
- fd38a25: Add vercel tool adapter to use query engine tool
## 0.0.27
### Patch Changes
- Updated dependencies [515f2c1]
- llamaindex@0.8.24
## 0.0.26
### Patch Changes
- @llamaindex/cloud@2.0.15
- @llamaindex/core@0.4.15
- llamaindex@0.8.23
- @llamaindex/node-parser@0.0.16
- @llamaindex/openai@0.1.40
- @llamaindex/readers@1.0.17
## 0.0.25
### Patch Changes
- Updated dependencies [819af45]
- llamaindex@0.8.22
- @llamaindex/cloud@2.0.14
- @llamaindex/core@0.4.14
- @llamaindex/node-parser@0.0.15
- @llamaindex/openai@0.1.39
- @llamaindex/readers@1.0.16
## 0.0.24
### Patch Changes
- Updated dependencies [83c3897]
- Updated dependencies [efa2211]
- llamaindex@0.8.21
## 0.0.23
### Patch Changes
- Updated dependencies [02b22da]
- llamaindex@0.8.20
## 0.0.22
### Patch Changes
- Updated dependencies [90d265c]
- @llamaindex/cloud@2.0.13
- @llamaindex/core@0.4.13
- llamaindex@0.8.19
- @llamaindex/node-parser@0.0.14
- @llamaindex/readers@1.0.15
- @llamaindex/openai@0.1.38
## 0.0.21
### Patch Changes
- Updated dependencies [d17450f]
- Updated dependencies [ef4f63d]
- llamaindex@0.8.18
- @llamaindex/core@0.4.12
- @llamaindex/cloud@2.0.12
- @llamaindex/node-parser@0.0.13
- @llamaindex/openai@0.1.37
- @llamaindex/readers@1.0.14
## 0.0.20
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
- @llamaindex/cloud@2.0.11
- llamaindex@0.8.17
- @llamaindex/node-parser@0.0.12
- @llamaindex/openai@0.1.36
- @llamaindex/readers@1.0.13
## 0.0.19
### Patch Changes
- Updated dependencies [e60328b]
- @llamaindex/readers@1.0.12
- llamaindex@0.8.16
## 0.0.18
### Patch Changes
- Updated dependencies [3d503cb]
- Updated dependencies [5dae534]
- llamaindex@0.8.15
## 0.0.17
### Patch Changes
- Updated dependencies [630b425]
- llamaindex@0.8.14
## 0.0.16
### Patch Changes
- Updated dependencies [a7b0ac3]
- Updated dependencies [ee20c44]
- Updated dependencies [c69605f]
- @llamaindex/core@0.4.10
- @llamaindex/workflow@0.0.6
- llamaindex@0.8.13
- @llamaindex/cloud@2.0.10
- @llamaindex/node-parser@0.0.11
- @llamaindex/openai@0.1.35
- @llamaindex/readers@1.0.11
## 0.0.15
### Patch Changes
- Updated dependencies [ea92b69]
- Updated dependencies [fadc8b8]
- @llamaindex/workflow@0.0.5
## 0.0.14
### Patch Changes
- Updated dependencies [7ae6eaa]
- @llamaindex/core@0.4.9
- @llamaindex/openai@0.1.34
- @llamaindex/cloud@2.0.9
- llamaindex@0.8.12
- @llamaindex/node-parser@0.0.10
- @llamaindex/readers@1.0.10
## 0.0.13
### Patch Changes
- Updated dependencies [f865c98]
- @llamaindex/core@0.4.8
- @llamaindex/cloud@2.0.8
- llamaindex@0.8.11
- @llamaindex/node-parser@0.0.9
- @llamaindex/openai@0.1.33
- @llamaindex/readers@1.0.9
## 0.0.12
### Patch Changes
- Updated dependencies [f066e50]
- Updated dependencies [d89ebe0]
- Updated dependencies [fd8c882]
- Updated dependencies [fd8c882]
- llamaindex@0.8.10
- @llamaindex/core@0.4.7
- @llamaindex/workflow@0.0.4
- @llamaindex/cloud@2.0.7
- @llamaindex/node-parser@0.0.8
- @llamaindex/openai@0.1.32
- @llamaindex/readers@1.0.8
## 0.0.11
### Patch Changes
- Updated dependencies [4fc001c]
- Updated dependencies [4d4cd8a]
- llamaindex@0.8.9
- @llamaindex/cloud@2.0.6
- @llamaindex/core@0.4.6
- @llamaindex/node-parser@0.0.7
- @llamaindex/openai@0.1.31
- @llamaindex/readers@1.0.7
## 0.0.10
### Patch Changes
- Updated dependencies [ad85bd0]
- @llamaindex/core@0.4.5
- llamaindex@0.8.8
- @llamaindex/node-parser@0.0.6
- @llamaindex/workflow@0.0.3
- @llamaindex/cloud@2.0.5
- @llamaindex/openai@0.1.30
- @llamaindex/readers@1.0.6
## 0.0.9
### Patch Changes
- @llamaindex/cloud@2.0.4
- @llamaindex/core@0.4.4
- llamaindex@0.8.7
- @llamaindex/node-parser@0.0.5
- @llamaindex/openai@0.1.29
- @llamaindex/readers@1.0.5
## 0.0.8
### Patch Changes
- Updated dependencies [95a5cc6]
- @llamaindex/core@0.4.3
- llamaindex@0.8.6
- @llamaindex/cloud@2.0.3
- @llamaindex/node-parser@0.0.4
- @llamaindex/openai@0.1.28
- @llamaindex/readers@1.0.4
## 0.0.7
### Patch Changes
- Updated dependencies [14cc9eb]
- Updated dependencies [a6db5dd]
- Updated dependencies [396b1e1]
- llamaindex@0.8.5
- @llamaindex/cloud@2.0.2
- @llamaindex/core@0.4.2
- @llamaindex/node-parser@0.0.3
- @llamaindex/openai@0.1.27
- @llamaindex/readers@1.0.3
## 0.0.6
### Patch Changes
- Updated dependencies [35430d3]
- llamaindex@0.8.4
- @llamaindex/readers@1.0.2
## 0.0.5
### Patch Changes
- Updated dependencies [2ff0a89]
- @llamaindex/node-parser@0.0.2
- llamaindex@0.8.3
## 0.0.4
### Patch Changes
- Updated dependencies [0765742]
- @llamaindex/workflow@0.0.2
## 0.0.3
### Patch Changes
- Updated dependencies [c7a918c]
- llamaindex@0.8.2
## 0.0.2
### Patch Changes
- Updated dependencies [9c73f0a]
- @llamaindex/core@0.4.1
- @llamaindex/cloud@2.0.1
- llamaindex@0.8.1
- @llamaindex/openai@0.1.26
- @llamaindex/readers@1.0.1
## 0.0.1
### Patch Changes
- Updated dependencies [359fd33]
- Updated dependencies [efb7e1b]
- Updated dependencies [98ba1e7]
- Updated dependencies [620c63c]
- @llamaindex/core@0.4.0
- llamaindex@0.8.0
- @llamaindex/cloud@2.0.0
- @llamaindex/openai@0.1.25
- @llamaindex/readers@1.0.0
-21
View File
@@ -1,21 +0,0 @@
# Docs
This is a Next.js application generated with
[Create Fumadocs](https://github.com/fuma-nama/fumadocs).
Run development server:
```bash
turbo run dev
# turbo will build all required packages before running the dev server
```
## Learn More
To learn more about Next.js and Fumadocs, take a look at the following
resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js
features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs
-20
View File
@@ -1,20 +0,0 @@
{
"$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york",
"rsc": true,
"tsx": true,
"tailwind": {
"config": "tailwind.config.js",
"css": "app/global.css",
"baseColor": "neutral",
"cssVariables": true,
"prefix": ""
},
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
}
}
-35
View File
@@ -1,35 +0,0 @@
import { createMDX } from "fumadocs-mdx/next";
import MonacoWebpackPlugin from "monaco-editor-webpack-plugin";
const withMDX = createMDX();
/** @type {import('next').NextConfig} */
const config = {
reactStrictMode: true,
transpilePackages: ["monaco-editor"],
serverExternalPackages: ["@huggingface/transformers"],
webpack: (config, { isServer }) => {
if (Array.isArray(config.target) && config.target.includes("web")) {
config.target = ["web", "es2020"];
}
config.resolve.alias = {
...config.resolve.alias,
sharp$: false,
"onnxruntime-node$": false,
};
config.resolve.fallback ??= {};
config.resolve.fallback.fs = false;
if (!isServer) {
config.plugins.push(
new MonacoWebpackPlugin({
languages: ["typescript"],
filename: "static/[name].worker.js",
}),
);
}
config.resolve.alias["replicate"] = false;
return config;
},
};
export default withMDX(config);
-93
View File
@@ -1,93 +0,0 @@
{
"name": "@llamaindex/doc",
"version": "0.1.9",
"private": true,
"scripts": {
"build": "pnpm run build:docs && next build",
"dev": "next dev",
"start": "next start",
"postdev": "fumadocs-mdx",
"postbuild": "fumadocs-mdx && tsx scripts/post-build.mts",
"build:docs": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" typedoc && node ./scripts/generate-docs.mjs"
},
"dependencies": {
"@icons-pack/react-simple-icons": "^10.1.0",
"@llamaindex/chat-ui": "0.0.9",
"@llamaindex/cloud": "workspace:*",
"@llamaindex/core": "workspace:*",
"@llamaindex/node-parser": "workspace:*",
"@llamaindex/openai": "workspace:*",
"@llamaindex/readers": "workspace:*",
"@llamaindex/workflow": "workspace:*",
"@mdx-js/mdx": "^3.1.0",
"@number-flow/react": "^0.3.4",
"@radix-ui/react-dialog": "^1.1.2",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-label": "^2.1.0",
"@radix-ui/react-slider": "^1.2.1",
"@radix-ui/react-slot": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.4",
"@vercel/functions": "^1.5.0",
"@scalar/api-client-react": "^1.1.25",
"ai": "^3.4.33",
"class-variance-authority": "^0.7.0",
"clsx": "2.1.1",
"foxact": "^0.2.41",
"framer-motion": "^11.11.17",
"fumadocs-core": "^14.7.7",
"fumadocs-docgen": "^1.3.7",
"fumadocs-mdx": "^11.5.3",
"fumadocs-openapi": "^5.12.0",
"fumadocs-twoslash": "^2.0.3",
"fumadocs-typescript": "^3.0.3",
"fumadocs-ui": "^14.7.7",
"hast-util-to-jsx-runtime": "^2.3.2",
"llamaindex": "workspace:*",
"lucide-react": "^0.460.0",
"next": "15.1.7",
"next-themes": "^0.4.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-icons": "^5.3.0",
"react-monaco-editor": "^0.56.2",
"react-text-transition": "^3.1.0",
"react-use-measure": "^2.1.1",
"rehype-katex": "^7.0.1",
"remark-math": "^6.0.0",
"rimraf": "^6.0.1",
"shiki": "^2.3.2",
"shiki-magic-move": "^1.0.0",
"swr": "^2.2.5",
"tailwind-merge": "^2.5.2",
"tailwindcss-animate": "^1.0.7",
"tree-sitter": "^0.22.1",
"tree-sitter-typescript": "^0.23.2",
"use-stick-to-bottom": "^1.0.42",
"web-tree-sitter": "^0.24.4",
"zod": "^3.23.8"
},
"devDependencies": {
"@next/env": "^15.0.3",
"@types/mdx": "^2.0.13",
"@types/node": "22.9.0",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"autoprefixer": "^10.4.20",
"cross-env": "^7.0.3",
"fast-glob": "^3.3.2",
"gray-matter": "^4.0.3",
"monaco-editor-webpack-plugin": "^7.1.0",
"postcss": "^8.4.49",
"raw-loader": "^4.0.2",
"remark": "^15.0.1",
"remark-gfm": "^4.0.0",
"remark-mdx": "^3.1.0",
"remark-stringify": "^11.0.0",
"tailwindcss": "^3.4.15",
"tsx": "^4.19.2",
"typedoc": "0.27.4",
"typedoc-plugin-markdown": "^4.3.1",
"typedoc-plugin-merge-modules": "^6.1.0",
"typescript": "^5.7.2"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 304 182" style="enable-background:new 0 0 304 182;" xml:space="preserve">
<style type="text/css">
.st0{fill:#252F3E;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
</style>
<g>
<path class="st0" d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2
c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8
c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8
c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4
c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1
c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6
c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7
c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6
C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4
c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1
h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5
c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1
c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8
c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3
c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5
c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1
c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1
c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2
c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1
c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6
c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z"/>
<g>
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4
c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5
c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.6 KiB

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 272 92" width="272" height="92"><path fill="#EA4335" d="M115.75 47.18c0 12.77-9.99 22.18-22.25 22.18s-22.25-9.41-22.25-22.18C71.25 34.32 81.24 25 93.5 25s22.25 9.32 22.25 22.18zm-9.74 0c0-7.98-5.79-13.44-12.51-13.44S80.99 39.2 80.99 47.18c0 7.9 5.79 13.44 12.51 13.44s12.51-5.55 12.51-13.44z"/><path fill="#FBBC05" d="M163.75 47.18c0 12.77-9.99 22.18-22.25 22.18s-22.25-9.41-22.25-22.18c0-12.85 9.99-22.18 22.25-22.18s22.25 9.32 22.25 22.18zm-9.74 0c0-7.98-5.79-13.44-12.51-13.44s-12.51 5.46-12.51 13.44c0 7.9 5.79 13.44 12.51 13.44s12.51-5.55 12.51-13.44z"/><path fill="#4285F4" d="M209.75 26.34v39.82c0 16.38-9.66 23.07-21.08 23.07-10.75 0-17.22-7.19-19.66-13.07l8.48-3.53c1.51 3.61 5.21 7.87 11.17 7.87 7.31 0 11.84-4.51 11.84-13v-3.19h-.34c-2.18 2.69-6.38 5.04-11.68 5.04-11.09 0-21.25-9.66-21.25-22.09 0-12.52 10.16-22.26 21.25-22.26 5.29 0 9.49 2.35 11.68 4.96h.34v-3.61h9.25zm-8.56 20.92c0-7.81-5.21-13.52-11.84-13.52-6.72 0-12.35 5.71-12.35 13.52 0 7.73 5.63 13.36 12.35 13.36 6.63 0 11.84-5.63 11.84-13.36z"/><path fill="#34A853" d="M225 3v65h-9.5V3h9.5z"/><path fill="#EA4335" d="M262.02 54.48l7.56 5.04c-2.44 3.61-8.32 9.83-18.48 9.83-12.6 0-22.01-9.74-22.01-22.18 0-13.19 9.49-22.18 20.92-22.18 11.51 0 17.14 9.16 18.98 14.11l1.01 2.52-29.65 12.28c2.27 4.45 5.8 6.72 10.75 6.72 4.96 0 8.4-2.44 10.92-6.14zm-23.27-7.98l19.82-8.23c-1.09-2.77-4.37-4.7-8.23-4.7-4.95 0-11.84 4.37-11.59 12.93z"/><path fill="#4285F4" d="M35.29 41.41V32H67c.31 1.64.47 3.58.47 5.68 0 7.06-1.93 15.79-8.15 22.01-6.05 6.3-13.78 9.66-24.02 9.66C16.32 69.35.36 53.89.36 34.91.36 15.93 16.32.47 35.3.47c10.5 0 17.98 4.12 23.6 9.49l-6.64 6.64c-4.03-3.78-9.49-6.72-16.97-6.72-13.86 0-24.7 11.17-24.7 25.03 0 13.86 10.84 25.03 24.7 25.03 8.99 0 14.11-3.61 17.39-6.89 2.66-2.66 4.41-6.46 5.1-11.65l-22.49.01z"/></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

-654
View File
@@ -1,654 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg [
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
]>
<svg version="1.2" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 341.5"
overflow="visible" xml:space="preserve">
<switch>
<foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
<i:aipgfRef xlink:href="#adobe_illustrator_pgf">
</i:aipgfRef>
</foreignObject>
<g i:extraneous="self">
<path d="M556,7.1c-62.1,0-112.4,50.3-112.4,112.4S493.9,232,556,232s112.4-50.3,112.4-112.4c0,0,0,0,0,0
C668.3,57.5,618,7.2,556,7.1z M556,189.8c-38.8,0-70.3-31.5-70.3-70.3c0-38.8,31.5-70.3,70.3-70.3c38.8,0,70.3,31.5,70.3,70.3
C626.2,158.3,594.7,189.8,556,189.8L556,189.8z"/>
<path d="M131.6,6.5C69.5,6,18.7,55.8,18.1,117.9C17.5,180,67.4,230.8,129.5,231.4c0.7,0,1.4,0,2.1,0h37v-42.1h-37
c-38.8,0.5-70.6-30.6-71.1-69.4s30.6-70.6,69.4-71.1c0.5,0,1.1,0,1.6,0c38.7,0,70.4,31.5,70.4,70.3l0,0v103.5l0,0
c0,38.5-31.3,69.8-69.7,70.3c-18.4-0.2-35.9-7.5-48.9-20.6L53.5,302c20.7,20.8,48.7,32.6,78,32.9l0,0h1.5l0,0
c61.3-0.9,110.6-50.6,110.9-111.9V116.2C242.4,55.2,192.5,6.6,131.6,6.5z"/>
<path d="M918.6,330.1V116.8c-1.5-61-51.4-109.6-112.4-109.7c-62.1-0.6-112.9,49.3-113.5,111.4S742.1,231.4,804.2,232
c0.7,0,1.4,0,2.1,0h37v-42.1h-37c-38.8,0.5-70.6-30.6-71.1-69.4s30.6-70.6,69.4-71.1c0.5,0,1.1,0,1.6,0
c38.7,0,70.4,31.5,70.4,70.3l0,0v210.1l0,0L918.6,330.1z"/>
<path d="M276.1,232h42V119.6c0-38.8,31.5-70.3,70.3-70.3c12.8,0,24.7,3.4,35.1,9.4l21.1-36.5c-16.5-9.5-35.7-15-56.1-15
c-62.1,0-112.4,50.3-112.4,112.4L276.1,232z"/>
<g>
<path d="M950.3,10c3.2,1.8,5.7,4.3,7.5,7.5c1.8,3.2,2.7,6.7,2.7,10.6c0,3.9-0.9,7.4-2.8,10.7c-1.9,3.2-4.4,5.8-7.6,7.6
c-3.2,1.9-6.8,2.8-10.6,2.8s-7.4-0.9-10.6-2.8c-3.2-1.9-5.7-4.4-7.5-7.6c-1.8-3.2-2.8-6.7-2.8-10.6c0-3.8,0.9-7.4,2.8-10.6
c1.8-3.2,4.4-5.7,7.6-7.6s6.8-2.8,10.7-2.8C943.6,7.2,947.1,8.1,950.3,10z M948.2,43c2.6-1.5,4.6-3.6,6.1-6.2
c1.5-2.6,2.2-5.5,2.2-8.7c0-3.2-0.7-6.1-2.2-8.7s-3.5-4.6-6-6.1c-2.6-1.5-5.5-2.2-8.7-2.2c-3.2,0-6.1,0.8-8.7,2.3
c-2.6,1.5-4.6,3.6-6.1,6.2c-1.5,2.6-2.2,5.5-2.2,8.7c0,3.2,0.7,6.1,2.2,8.7c1.5,2.6,3.5,4.7,6,6.2c2.6,1.5,5.4,2.3,8.6,2.3
C942.7,45.3,945.6,44.5,948.2,43z M949.5,29.2c-0.7,1.2-1.8,2.1-3.2,2.8l5,7.7h-6.2l-4.3-6.7h-0.2h-3.9v6.7h-6.2v-23h10
c3.1,0,5.6,0.7,7.4,2.2c1.8,1.5,2.7,3.5,2.7,6C950.6,26.5,950.2,28,949.5,29.2z M940.1,28.4c1.4,0,2.5-0.3,3.2-0.9
c0.8-0.6,1.2-1.5,1.2-2.6c0-1.1-0.4-2-1.2-2.7s-1.9-0.9-3.2-0.9h-3.5v7.2H940.1z"/>
</g>
</g>
</switch>
<i:aipgf id="adobe_illustrator_pgf" i:pgfEncoding="zstd/base64" i:pgfVersion="24">
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
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
]]>
<![CDATA[
Z5Bw3N6JMPVsubV7rZuvyxlp9+hYH9SXIzyvkRRrbk86ijfvrNSUn/vXReobrezsZbTkXS0TGfeo
nryyV3SYStebspdrkkuprLZsstj/3EIy/dgu/aiOZpoqJx0Jh9ndJeqllf9KHSxf79lfTc/JpdaY
drb69e7m60dSj2XSURB/Ncz9oc1WUcxU+u2pb8qk13JqfhbL8VTLpldNaZ1S5n3wylmZYvqu/eAW
tebV0e2ijlq5W/OU7KRdL1I6R618j1efl4sp1SoVIZVnreCPaFXPwqF0sbXa3SM63ZDq/mSqpdxR
uyPhKE/yrVppbf7CVCs77T/Gl0Tn6Wlu7piul6q5S/uhtBrRuFzQDvGchHqlvGrimc+ZhlR2abbp
tSqtS3fxVUR17x0lOYk83lK3eLv8tP9U1eqUaAgrz3UmQ9xz7hrd0Yaw3H3T5r3TubrYplmmpqF3
CIuW8SqfhWkyQpMpmuV8k45iPqlRpj+/jtOq6Y1cN4qI50U77+lQufjommpDOqkdeqiccJSywpMa
TemWlOymTpu9CyKd7PseDtmlDnMVrUqzJrFoolqp1GhjdLFrWslmSTfphKPccNeuurupv/jXVd2k
K426rH7tV6qGc/pyrSNDdeLhqAuqd6kq1zdXRWaq37NZTEwUNHtvS2e6at/83bhcF3GBgggmiJBk
kHRwlDy8f/NmGulZ6fx8ZlKSuqz4t5aLZlNFLRthevCYcBS7j063cOnIhZg3W7iJR/mnhYg2v+55
ty0WWs7VFrNMs13+NVVV1M8vFpl6Xptfm+Xt2u4s6+Ylwn+d5qTDnDuu3nlIky80TVs01NOpF9bu
kp4Ph16OkHTRm/eky6NcnlftMPVTtladMNfMZqnKHstf7/WuqXezvhmP0G5WLCIbf0seJpnUSWS3
tk/9+bsysruc+49r+ruzHX0anmaiUnl+5K+uDXGuNvG46d3R7uxma8s9NVUT11VIezVlW9DoPrUv
q3hTry7uoG3iUfS26pHtuX2xKsqzrE0P3ZZ0IabmOndwX/BwK+tkWlO3ZansT1P0ze6LlppKSdE7
d0tIlvaynFOVW5/VeNfEosQypOfOUZXXKdNqZaUsz36zlHgUq6OkTEKyKaPxmESnn/Q+ia5Dr1J1
RYTWI87eJh4lvXdPNSUae5Uvnc/wyHTytlyt1yet9eSr2CGeyqWmwduyr1KfiChnX8VuZt2fEX4V
S9c3ripWope17DV06xUZJB0c5e5LdaKqns7lkbYucz34Sjy08DBNa426SonHylEyu6vV0Vcpa95X
85Z0FNsrdZl8Neuq3KdtzCzhKKq4iU5T0rm+rFURa+pWfKqYo/qCtEVnuxtN2W59V3rSmCzxuNd+
VKvci151fqnNWhXX2apXy+pkibSaSh3Wq+6tdBp1JSbKZe2VXiruN2+kwbzeeiOk9KZOnoQIxUID
hEVNTLzD9sdUM9OxOxKOcjJC7/i1pHcv4uGWVpHql3Iw1XdDIjo6zVmlL+9eVrlpeddS9Vqa0VkN
VY1Xfmnh0UuYY/xV71PpHGYxPRbp5q7O3outDymLtHKsEun+K3rJpZVOoq9NT5WsV3qffUu6ZzhX
WRStvHZ+jWpLm8R0mp3OOsPxdTzvTmdH+CnDuqLioerNkZYratJTj1SptK5rq2OkCUexxKs1/Y2Y
pmdWpk+JhQcqQCAQSEKixAUbLOCEBikKiY8TKlKQ+ChRSJS4YAMSKi4oJBRwQYoSyQcJBBTggg8J
JEjoeAcPxQJCwWSEhwk6XmVms7xCjvKyuvrQy94sPpPIqJ9dpBca7Q9Hf/ZdtjEnn1nGy6PNOc1u
DP9To9IbcxW02qr8+jxmdUZUL+61kkjvNKtupbTXXfl2iao+wrnt7Vb+xmeXtaVVVHO/lUTmIdtM
Mkg8ypa+fFPO/Hd/t7pFt2OJB+6ZvfckHx71COn2bD8sxePS2Lj/KZnuUu96c3zpyf+W9W5XDZH2
Pi0P2trU6ieV4lQh6tlmtzT0DVX+ZoqWtThYu5d3N5R0IuvtbKNUpbCojPCbQ2tLN1LpPWebdBR8
nanPDHNMVZKIEGvvqMa3CUcx8+KNhIq2iqlXex+01Pvm+dLS9H6Kk7Ylf6RLY1fJtHVtLkwTJQ19
dzOkmrtK+VRrs1QFsdCWubfdm575+t6cqWKhc26beJx0vWj12rVZg7VFnbsnV9VSqaazcLUya3/S
PURVvCL6bWf3qXlastF60XFvojkt3n1H4xhhmutWU/9JKqu4ZHlfe4jK9q6wzgZdJY1UOf8W39OK
bFZ7mHiXF80+/vRob8evYkhktotVO/Yta0mkuOe8RLsx8bo1+C1FTsMvUuHgv2uLaht94g8JrbDw
tXnWtd2h2qJ4o7zeVpGV0MoQb6pQ7bR4NlibeGTWyXRvDb20rMipc9vypeva13LN+NMZc878s6XV
oW1PTVUzq0Zti6+orqdNHHwVzMpU25d2yOWjKx9qGtl3ruijJLVMmr+K6W0S1g/1WHSzLhOlkXWO
1lTmMg4aqt4OuUqSJWbRXR1q1p7ZZdUkVdk6zSt7s+5elGNUBRU3q+pJNXZb0lY3yXQrl6rqOr8t
Vibbq6Pd1xLW4pWmieLSRDrcRBs9slPbVI/aJhSKM0g8yFqqdPuRaSHSlictrc5ksoPrqFJUEBmE
iCHIkAyRSJukAwIJEgTFOJCFWVDqagcSgHBhjOQ4iGIYZJBCyBBCCCGGEBGRmZGSaQ7IgbM34Fg6
sHL0H4jTx46jwl9Q6yWYj+3NFc2buSd3fUOhKa+7L5cElQ6UBqES+/066BF5/BO8hZuN4hYZ/862
2TtSnsSfeOGkOlJba0l1reDIiRm9FHYq4dNGDSK/YkKj2aZASa+Z4TvZzcuKchVCfsk81NXLqC8p
xkP9pSLmc6j+4dh7EEeu139NTurQPRjWiSc6L45UFy0bZuP0ypOuCfZnUBbsS4psnKwzcpUAOvQC
xAD8VGS5tanOLxzUgc0yDGrSbRkC2zvPUJ4OSkOFfDvhjDShju0FR9Ha70a5hF66C2Peh4LHQl2M
b4PjZXrCraZ7yKI3Lvh/SSNO92j5fUkJupGa6LXq2QUESqH1AHhJVsGLahk+xVHavGewIWHKUMEY
Bf3GrdCc3BDnHlr0WK5jtm6cR8LZdBAsIwxCkhUfKGpcvVpFp4IUmmWgXTwQHZ9Acbux1eR0aacD
6QuUMrCGbDwJC5FadZlO5tYGL4pBgMPGqqPxNCrcgQZPTciRldDEG1JJOMWzPEajqUqOrGZFLQIN
yE4aclJ78j+uZuBzP1AGQyNNGUEzUVdRqSFYfvqpBznDkXnQT4erDRj2l0k6FD2bVlL9UkI8D1AF
CC1VSBm1Laz8Vq3Yi8WV1La+wZ5rQmGszK7SY6gOovkzkNOeGCrKNH83/BaDynkytctGaq2SE6Ev
CcWj0Yn4l8DZJCInIhXnApGKtghZUBIqyd7yjcySAFLGbhe6UiQSzNyiZBHaNZyEw8wFkTBYHA7p
aFSqe6Rt1EF1xqbIegrkiAozqug+BzqotzwbOFbPUsV7RJVrOM0BBGeYoc0A/Z/0w1GbjCRoiKli
Cu9jLUK0l6C4oA4HKLMv+BfE4XfG8ziOM6HUWA/ycaSq+aEkCWfA8RLJECetpLoUJAIkS/HbmUR5
L54tbc86JMSB6RDSaS8uycvp9fvQfHVaYFMfUmPjAz3DOZjjGirVc7bolCzHMzsrznVFiIUOxENL
u5h/oSB6VtGrdia1CmfLMWN9hncyhAM7ZCUY87rACBRnvMYiSLhO3gGT5yg/TihbaOY6lUvPeUvh
A0L8BLJ+E5bwNIIOq1tzmDVu/bSzlprsTRmSR7czhyvHFicF8ZBhw/SXOVH/jsyReqbykweTirzV
f1mqLRGcGAguO3T6UeVSM9d3D5s8x2NIZs05t4Mrotj4yJf72TtWZai1999lhbXjQd9cvqOdI2q3
JvfFcYQD3gP8HEVljF3UhZHOPK5YyWhbxiieZtYU9EDD71RXTaIqKbgCpKE2fOipH/G+XEbeSSYO
mzs1hNFaaT0YgoRKp1wOS5R0y/JXXLLSJpY55JxgNR6GyVOaxSpozDUs6KeuWHMFNhBsiILuMnrV
hlVFxZLWoB19G5TPHUOroQzNt4k1MLQX9to7D2ag7YjyRStA+0hY0WGO9wICA/UAM9q7L7Tc5+7S
wDAOO8P4qDSXM/xmE0n3JpQuJgVJt2DvU46UbvxbTFHSnQ2lu11GVUn3nFK65BURUpV0tUHpuuLj
Gkq6cUDp9qPoqirpZkvpMuf34J0spZKuYyjd0kyfki7JUbp7e4tTJV04SheVgrN+K6qFa1hJ7p5Q
ugifPeK2TmKqhoRaCQOMe6aSLsWaxlC6T7G6oqRrFkp3MQsI6RBSuneNiZRuUSXdbFC6uXvYppLu
eNfoOIvSPUzPm0q6y9zimsppGdYKwfMixleFRcaSLvU01B03QOV+SbpPKm0hpRvNCWjGhEXSNcFw
C6VLc+ZVJ5m8fVZak7CQMMEzUDFNB9dHKN18zhxFSQwHqOxhtmhJtykuv/FM6Tr0TFajwbHySVye
nfwM8+S9UtI9DaV73djrJt/taABErjyW78UOe2GJNpMJnB7FAsHCGpWdHgRVUfYAxbGi6r7x8Z2S
LlBLe5rSHUgZYHWwKizkfqlVsTQhF54K2Ta0CZ0oAC1uiD3MbvT4fDDyraDDv7K/1MnI3iBiKcdn
Bki6/2Gmz4BzCZTuzFexjSeiH5/HpEG7mvhmfKYXNj7M4i3pUtzwzMKrVbDQUiOl20pJN46UbqCv
2JSBCBCl+5eJpBv2Y9uvlK6/8KBaSVfI52kjy+s8J5tciaHIAqP5REPpqjf1yCSkdFMpAyldECVd
7ChdKiZIIQtQk9WSBvp6P4vYM2a7rFLMvnC+Z2FfUN4Uu1leS0FGW8CvtoKpFmaMrH2Jq/Bo9okc
qmZrfwoeLeYiWmkHHKMORN9t1TE2PcjS8EcPIKTNOAxqCm3WTrlVxlXsL6oKwe+v4eOWFnwfMR9U
m2a4+wBFAx+WCgks9fp7Vt9y6SO5rCyv9ynPREsQ2hHDDbHRvFfQTcTZJ7M1bChot6ItyO/giB21
C6PQBd9erRq11war7y0oM8y6lmvEUk9wxmxJ9T7rmT3vx7VAMD8yktUDSsJD84E/5gmHjbPAfWY6
F7etOJcGLZsc7he/c39rn88tHWlTYbmJxbHyxW//kKtMLuEIjNoyrJg+EKFq6TCIWjljpWKlGRFh
Cohd6crZg/2Ocopb5l7wzpiP9sLUqF5vt5CMjM08cgbqa8DbP+0vaJlybTZ8C8qaWWf83Mb1IGlU
ajEygVaXxBiiFYte5HHDTPKUwk0qFh9MezX35OB6LJMeyTcNdLxVZa52Vip7q9NZ+PgnAGZUPCxN
+FKO50/U03Z/8H+BlFYurFQR9VAerar8Aup/hhMdj4G2yn3oMVtItOwFV1WqmP8/iw==
]]>
<![CDATA[
30u5gMQXtCf0pGs8eMi17B3Z4KTmwnmndi8JWA/E6YYPdiemkI782cC/SE0tWoNvjKBDejvvcPvs
JTV+XPuEr1zoJTFgk3YUJ/S+L1ypo7Y3NvjI/rpWr7kf3amtW2p0NoRGD3lvozrdcmaKq/5pGEth
oUdbquGOWwx2v7S5KshtZmgmVz5AlUwcAVe1SGoNEvBf1P3fLKDbc6IcR/QtG6pn7jlxpQ49NWlD
qr7w9o9v/A868sOZINyLoUsRAVnuhpYhNGgKFaTO74NWlCg8AkV6/ru7CKbfjkWMwbYP9LplJR6e
QKu4tpHhQdfaMNHKoH8U0SEtLWTlzXJMKm6xLG5Gow1RSp8ifGQMYoTGILVLHOpNjqwoxy2RWERW
zYqspItT0f4JrSgWlRZ4JPAiYJd4WwdkZ8K2BFZRaCj+U0i3V7P9mQ8c/nhAiwzHqOqbCdEOeyx3
l09R0/ZjYBu8tfqxBxD30P78QwM1M0gEniyKkKMfxh8BGu2MC6j47MHViG11wv3urpcqhx3qDznI
g1hLpF6JcK6OtxvuNm6RViaIT6Z53L1bjhuZhhwJkWMjeccnS6IDbKCBtwNQq7L5F0K6u3vwJor2
NKO704E328Ont4DGvzDL7LK17tjoMDcy9Nht3iepGkCFPmmALmx/iNC2F33EdPcHTKrzg3b8lQHc
XrUBQNu+4BTyc+C2CWnBfzxQ2vGx2TOjbXNIi+jfQ56z936nTESjV+altrfzrVXsEi9qG4/cntzZ
rM2TW0c2hEwLhmhbEq73LREyH2jzr0t0NNerpLZpU4BlMrWTz796Q9v2ZNBsV78sGUSUh/0i8UPX
Aw==
]]>
</i:aipgf>
</svg>

Before

Width:  |  Height:  |  Size: 48 KiB

@@ -1,23 +0,0 @@
<svg width="150" height="150" viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="e399c19f-b68f-429d-b176-18c2117ff73c" x1="-1032.172" x2="-1059.213" y1="145.312" y2="65.426" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#114a8b"/>
<stop offset="1" stop-color="#0669bc"/>
</linearGradient>
<linearGradient id="ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15" x1="-1023.725" x2="-1029.98" y1="108.083" y2="105.968" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-opacity=".3"/>
<stop offset=".071" stop-opacity=".2"/>
<stop offset=".321" stop-opacity=".1"/>
<stop offset=".623" stop-opacity=".05"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<linearGradient id="a7fee970-a784-4bb1-af8d-63d18e5f7db9" x1="-1027.165" x2="-997.482" y1="147.642" y2="68.561" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#3ccbf4"/>
<stop offset="1" stop-color="#2892df"/>
</linearGradient>
</defs>
<path fill="url(#e399c19f-b68f-429d-b176-18c2117ff73c)" d="M33.338 6.544h26.038l-27.03 80.087a4.152 4.152 0 0 1-3.933 2.824H8.149a4.145 4.145 0 0 1-3.928-5.47L29.404 9.368a4.152 4.152 0 0 1 3.934-2.825z"/>
<path fill="#0078d4" d="M71.175 60.261h-41.29a1.911 1.911 0 0 0-1.305 3.309l26.532 24.764a4.171 4.171 0 0 0 2.846 1.121h23.38z"/>
<path fill="url(#ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15)" d="M33.338 6.544a4.118 4.118 0 0 0-3.943 2.879L4.252 83.917a4.14 4.14 0 0 0 3.908 5.538h20.787a4.443 4.443 0 0 0 3.41-2.9l5.014-14.777 17.91 16.705a4.237 4.237 0 0 0 2.666.972H81.24L71.024 60.261l-29.781.007L59.47 6.544z"/>
<path fill="url(#a7fee970-a784-4bb1-af8d-63d18e5f7db9)" d="M66.595 9.364a4.145 4.145 0 0 0-3.928-2.82H33.648a4.146 4.146 0 0 1 3.928 2.82l25.184 74.62a4.146 4.146 0 0 1-3.928 5.472h29.02a4.146 4.146 0 0 0 3.927-5.472z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

-7
View File
@@ -1,7 +0,0 @@
<svg width="209" height="135" viewBox="0 0 209 135" fill="none" xmlns="http://www.w3.org/2000/svg">
<ellipse cx="136.019" cy="67.2304" rx="66.6667" ry="64" fill="#FFDE2D"/>
<ellipse cx="69.352" cy="67.2304" rx="66.6667" ry="64" fill="#327EFF"/>
<path d="M2.68528 67.2304C2.68527 31.8842 32.5329 3.23047 69.3519 3.23047L69.3519 67.2304L2.68528 67.2304Z" fill="#327EFF"/>
<path d="M136.019 67.2305C136.019 102.577 106.171 131.23 69.3519 131.23L69.3519 67.2305L136.019 67.2305Z" fill="#FF6446"/>
<path d="M69.352 67.2304C69.352 31.8842 99.1997 3.23047 136.019 3.23047L136.019 67.2304L69.352 67.2304Z" fill="#FF6446"/>
</svg>

Before

Width:  |  Height:  |  Size: 622 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

-27
View File
@@ -1,27 +0,0 @@
<svg width="167" height="56" viewBox="0 0 167 56" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_4688_32443)">
<path d="M78.6387 42.6243C78.6387 44.6538 76.9936 46.2992 74.9641 46.2992H72.4522V43.4301H72.3626C72.0936 43.8185 71.7349 44.222 71.2866 44.6402C70.8681 45.0289 70.3603 45.3876 69.7624 45.7164C69.1947 46.0449 68.5521 46.3139 67.8348 46.5234C67.1473 46.7325 66.43 46.8368 65.683 46.8368C64.0691 46.8368 62.6048 46.5678 61.2897 46.0299C59.9746 45.4622 58.8391 44.685 57.8827 43.6988C56.9563 42.6827 56.239 41.4874 55.7309 40.1128C55.2227 38.7378 54.9688 37.2286 54.9688 35.585C54.9688 34.0608 55.1929 32.6112 55.6412 31.2362C56.1192 29.8318 56.777 28.5912 57.6137 27.5153C58.4805 26.4396 59.5263 25.5879 60.7517 24.9602C61.9772 24.3028 63.3669 23.974 64.9209 23.974C66.3257 23.974 67.6257 24.1981 68.821 24.6464C70.0465 25.0649 71.0474 25.7971 71.8246 26.8433H71.9143V16.0827C71.9143 14.0533 73.5594 12.4082 75.5888 12.4082H78.6387V42.6243ZM72.4522 35.4053C72.4522 33.7617 71.9742 32.4319 71.0177 31.4155C70.0913 30.3995 68.7762 29.8913 67.0727 29.8913C65.3692 29.8913 64.0394 30.3995 63.0829 31.4155C62.1565 32.4319 61.6932 33.7617 61.6932 35.4053C61.6932 37.0493 62.1565 38.3791 63.0829 39.3951C64.0394 40.4115 65.3692 40.9197 67.0727 40.9197C68.7762 40.9197 70.0913 40.4115 71.0177 39.3951C71.9742 38.3791 72.4522 37.0493 72.4522 35.4053Z" fill="#DC244C"/>
<path d="M82.9893 28.1863C82.9893 26.1571 84.6344 24.512 86.6639 24.512H89.7137V28.0085H89.8034C90.5207 26.6638 91.3724 25.6626 92.3587 25.0051C93.3449 24.3177 94.5851 23.974 96.0795 23.974C96.4679 23.974 96.8563 23.989 97.2451 24.0188C97.6335 24.0487 97.9921 24.1085 98.321 24.1982V30.3398C97.8426 30.1902 97.3645 30.0855 96.8864 30.0256C96.4381 29.9359 95.9597 29.8911 95.4519 29.8911C94.1665 29.8911 93.1505 30.0704 92.4035 30.4291C91.6561 30.7877 91.0733 31.2959 90.6552 31.9533C90.2664 32.5809 90.0125 33.343 89.8931 34.2396C89.7733 35.1365 89.7137 36.1224 89.7137 37.1983V42.6241C89.7137 44.6536 88.0686 46.299 86.0392 46.299H82.9893V28.1863Z" fill="#DC244C"/>
<path d="M114.631 43.565H114.541C113.794 44.7306 112.793 45.5673 111.538 46.0754C110.312 46.5833 109.012 46.8372 107.637 46.8372C106.621 46.8372 105.635 46.688 104.679 46.3893C103.752 46.1203 102.93 45.7017 102.213 45.134C101.496 44.5659 100.928 43.8637 100.51 43.0267C100.091 42.19 99.8819 41.2188 99.8819 40.1131C99.8819 38.8579 100.106 37.7967 100.554 36.9303C101.033 36.0634 101.66 35.3462 102.437 34.7784C103.244 34.2104 104.156 33.7771 105.172 33.4784C106.188 33.1495 107.234 32.9103 108.31 32.7607C109.416 32.6116 110.506 32.5219 111.582 32.4918C112.688 32.462 113.704 32.4473 114.631 32.4473C114.631 31.2516 114.198 30.3102 113.331 29.6227C112.494 28.9054 111.493 28.5468 110.327 28.5468C109.222 28.5468 108.205 28.786 107.279 29.2641C106.382 29.7127 105.575 30.3403 104.858 31.1469L101.272 27.4709C102.527 26.3055 103.992 25.4388 105.665 24.871C107.339 24.2732 109.072 23.9744 110.865 23.9744C112.838 23.9744 114.451 24.2284 115.707 24.7365C116.992 25.2146 118.008 25.9319 118.755 26.8881C119.532 27.8446 120.07 29.0252 120.369 30.4296C120.668 31.8046 120.817 33.4034 120.817 35.2264V42.6251C120.817 44.6541 119.172 46.2996 117.143 46.2996H114.631V43.565ZM112.972 36.7506C112.464 36.7506 111.822 36.7807 111.044 36.8402C110.297 36.8704 109.565 36.9898 108.848 37.1989C108.161 37.4083 107.563 37.7221 107.055 38.1403C106.577 38.5588 106.337 39.1416 106.337 39.889C106.337 40.6959 106.681 41.2934 107.368 41.6818C108.056 42.0706 108.773 42.2646 109.52 42.2646C110.178 42.2646 110.806 42.1749 111.403 41.9956C112.031 41.8163 112.584 41.5624 113.062 41.2335C113.54 40.905 113.914 40.4865 114.183 39.9783C114.482 39.4705 114.631 38.8726 114.631 38.1855V36.7506H112.972Z" fill="#DC244C"/>
<path d="M125.485 28.1863C125.485 26.1571 127.13 24.512 129.16 24.512H131.941V27.4705H132.03C132.24 27.0524 132.538 26.6339 132.927 26.2155C133.315 25.7971 133.779 25.4235 134.317 25.0947C134.855 24.766 135.467 24.497 136.155 24.2878C136.842 24.0786 137.589 23.974 138.396 23.974C140.1 23.974 141.474 24.243 142.521 24.7809C143.566 25.289 144.373 26.0063 144.941 26.9326C145.539 27.8593 145.942 28.9499 146.152 30.2051C146.361 31.4603 146.466 32.8203 146.466 34.2849V42.6243C146.466 44.6538 144.82 46.2992 142.791 46.2992H139.741V35.6295C139.741 35.0019 139.711 34.3595 139.651 33.7018C139.621 33.0147 139.487 32.3871 139.248 31.8193C139.039 31.2512 138.695 30.7879 138.217 30.4293C137.769 30.0706 137.111 29.8913 136.244 29.8913C135.378 29.8913 134.675 30.0559 134.137 30.3844C133.6 30.6835 133.181 31.1017 132.882 31.6397C132.613 32.1478 132.434 32.7306 132.344 33.388C132.255 34.0457 132.21 34.7329 132.21 35.4501V42.6243C132.21 44.6538 130.565 46.2992 128.535 46.2992H125.485V28.1863Z" fill="#DC244C"/>
<path d="M166.515 26.2168C166.515 28.246 164.87 29.8911 162.841 29.8911H160.598V37.1538C160.598 37.7513 160.628 38.3043 160.687 38.8122C160.747 39.2906 160.882 39.7088 161.091 40.0674C161.3 40.426 161.614 40.7101 162.032 40.9195C162.481 41.0988 163.063 41.1881 163.781 41.1881C164.139 41.1881 164.603 41.1584 165.17 41.0985C165.768 41.0088 166.217 40.8299 166.515 40.5609V43.7666C166.515 45.2051 165.614 46.5434 164.184 46.7021C163.377 46.7918 162.585 46.8366 161.808 46.8366C160.673 46.8366 159.627 46.7172 158.67 46.478C157.714 46.2392 156.877 45.8654 156.16 45.3576C155.442 44.8197 154.875 44.1322 154.456 43.2951C154.068 42.4584 153.873 41.4424 153.873 40.2471V29.8911H149.57V28.1861C149.57 26.1569 151.215 24.5118 153.244 24.5118H153.873V21.7309C153.873 19.7015 155.519 18.0563 157.548 18.0563H160.598V24.5118H166.515V26.2168Z" fill="#DC244C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.6234 51.4767L37.5067 20.6899L35.4844 12.5732L48.9828 14.0022V51.2437L40.7371 56.0026L38.6234 51.4767Z" fill="#24386C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.9815 14L40.7359 18.7622L23.7198 15.0296L3.80271 23.139L0.484375 14L12.6067 7L24.7327 0L36.8553 7L48.9815 14Z" fill="#7589BE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.484375 13.9994L8.73004 18.7616L13.5099 32.9769L29.6488 45.89L24.733 55.9994L12.6071 48.999L0.484375 41.999V13.9994Z" fill="#B2BFE8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M30.201 38.4209L24.7344 46.4799V56.0006L32.4913 51.525L36.4881 45.5569" fill="#24386C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.7368 36.9622L16.9766 23.5262L18.6481 19.0731L25.0025 15.9922L32.4904 23.5265L24.7368 36.9622Z" fill="#7589BE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.9756 23.5254L24.7326 28.001V36.9595L17.5584 37.2682L13.2188 31.727L16.9756 23.5254Z" fill="#B2BFE8"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.7344 27.9996L32.4913 23.5244L37.7705 32.3147L31.382 37.5931L24.7344 36.9585V27.9996Z" fill="#24386C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.49 51.524L40.7357 56V18.7622L32.7326 14.1433L24.7331 9.52441L16.7299 14.1433L8.73047 18.7622V37.2411L16.7299 41.86L24.7331 46.4793L32.49 41.9996V51.524ZM32.49 32.4789L24.7331 36.9582L16.9761 32.4789V23.524L24.7331 19.0448L32.49 23.524V32.4789Z" fill="#DC244C"/>
<path d="M24.7361 46.4828V36.9606L17.0195 32.5195V42.0259L24.7361 46.4828Z" fill="url(#paint0_linear_4688_32443)"/>
</g>
<defs>
<linearGradient id="paint0_linear_4688_32443" x1="23.3133" y1="38.7809" x2="15.6239" y2="38.7809" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF3364"/>
<stop offset="1" stop-color="#C91540" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_4688_32443">
<rect width="166.03" height="56" fill="white" transform="translate(0.484375)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 114 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.
Binary file not shown.
-86
View File
@@ -1,86 +0,0 @@
import * as OpenAPI from "fumadocs-openapi";
import { generateFiles } from "fumadocs-typescript";
import fs from "node:fs";
import * as path from "node:path";
import { fileURLToPath } from "node:url";
import { rimrafSync } from "rimraf";
const out = "./src/content/docs/cloud/api";
const apiRefOut = "./src/content/docs/api";
// clean generated files
rimrafSync(out, {
filter(v) {
return !v.endsWith("index.mdx") && !v.endsWith("meta.json");
},
});
void OpenAPI.generateFiles({
input: [
fileURLToPath(
new URL("../../../packages/cloud/openapi.json", import.meta.url),
),
],
output: out,
groupBy: "tag",
});
void generateFiles({
input: ["./src/content/docs/api/**/*.mdx"],
output: (file) => path.resolve(path.dirname(file), path.basename(file)),
transformOutput,
});
function transformOutput(filePath, content) {
const fileName = path.basename(filePath);
let title = fileName.split(".")[0];
let pageContent = content;
if (title === "index") title = "LlamaIndex API Reference";
return `---\ntitle: ${title}\n---\n\n${transformAbsoluteUrl(pageContent, filePath)}`;
}
/**
* Transforms the content by converting relative MDX links to absolute docs API links
* Example: [text](../type-aliases/TaskHandler.mdx) -> [text](/docs/api/type-aliases/TaskHandler)
* [text](BaseChatEngine.mdx) -> [text](/docs/api/classes/BaseChatEngine)
* [text](BaseVectorStore.mdx#constructors) -> [text](/docs/api/classes/BaseVectorStore#constructors)
* [text](TaskStep.mdx) -> [text](/docs/api/type-aliases/TaskStep)
*/
function transformAbsoluteUrl(content, filePath) {
const group = path.dirname(filePath).split(path.sep).pop();
return content.replace(
/\]\(([^)]+)\.mdx([^)]*)\)/g,
(match, slug, anchor) => {
const slugParts = slug.split("/");
const fileName = slugParts[slugParts.length - 1];
const fileGroup = slugParts[slugParts.length - 2] ?? group;
const result = ["/docs/api", fileGroup, fileName, anchor]
.filter(Boolean)
.join("/");
return `](${result})`;
},
);
}
// append meta.json for API page
fs.writeFileSync(
path.resolve(apiRefOut, "meta.json"),
JSON.stringify(
{
title: "API Reference",
description: "LlamaIndex API Reference",
root: true,
pages: [
"index",
"classes",
"enumerations",
"functions",
"interfaces",
"type-aliases",
"variables",
],
},
null,
2,
),
);
-7
View File
@@ -1,7 +0,0 @@
import env from "@next/env";
import { updateLlamaCloud } from "./update-llamacloud.mjs";
env.loadEnvConfig(process.cwd());
await updateLlamaCloud();

Some files were not shown because too many files have changed in this diff Show More