Compare commits
	
		
			114 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | ac00bb9029 | ||
|   | 67cb444d82 | ||
|   | 1914a29163 | ||
|   | 11201bc7c7 | ||
|   | 3a8b5257c0 | ||
|   | 00bb4e92dc | ||
|   | 7481c2ba0e | ||
|   | 9d336e257c | ||
|   | 2027171cb9 | ||
|   | e06baf0d29 | ||
|   | 5d6a68a5bb | ||
|   | 41a5bb70bf | ||
|   | c2ec62ba08 | ||
|   | 64361fc9ec | ||
|   | ec55024734 | ||
|   | df5c451a12 | ||
|   | 16c39a0a28 | ||
|   | 5e45b2cdd2 | ||
|   | 39210cf0c6 | ||
|   | 2e0e801533 | ||
|   | 0b9785a5d4 | ||
|   | 9070597c17 | ||
|   | a5f986f145 | ||
|   | 1911afe3ee | ||
|   | 8b2145913c | ||
|   | e75878d248 | ||
|   | 154d7cca78 | ||
|   | 3c018295b0 | ||
|   | c8b8a4df11 | ||
|   | edf74dc110 | ||
|   | f128e708a0 | ||
|   | 8d67fab958 | ||
|   | ba355d7f62 | ||
|   | 0d0e322af8 | ||
|   | 9eb2ba57fd | ||
|   | 44e4d6f8b0 | ||
|   | b5a647ea30 | ||
|   | 14c6efb761 | ||
|   | 2ea8faeea8 | ||
|   | 9f79dfa936 | ||
|   | 1fb2258a77 | ||
|   | 5a46e08759 | ||
|   | 885fe14309 | ||
|   | 94d043d0fd | ||
|   | 981a033a1d | ||
|   | e3a8f1e153 | ||
|   | 2cefc1e80a | ||
|   | 275649329a | ||
|   | 581400d44d | ||
|   | b0733dcd87 | ||
|   | 148b748efb | ||
|   | 9c52368ab2 | ||
|   | 729dd9c41f | ||
|   | 4b49d6004c | ||
|   | 7fd27634d4 | ||
|   | ea64fc4677 | ||
|   | 376cd28e0c | ||
|   | 31c47c6468 | ||
|   | 2e34a1514c | ||
|   | dae99e839d | ||
|   | 877901ccff | ||
|   | 0fec81eef7 | ||
|   | 4dd27b3e1a | ||
|   | a06ededd46 | ||
|   | 1c687831d1 | ||
|   | 2c2750b3e1 | ||
|   | 809efa9053 | ||
|   | 4a7e9ac7f0 | ||
|   | 04f9e77149 | ||
|   | 553e7dab41 | ||
|   | 3a75cd7e92 | ||
|   | c45b5de3ea | ||
|   | 6c2b3ca206 | ||
|   | 1ff5fbfc9f | ||
|   | 929242cc26 | ||
|   | d854f82966 | ||
|   | 585858a99a | ||
|   | 95fa72c1ec | ||
|   | 59015dff8f | ||
|   | d601ce0e1e | ||
|   | 9820248115 | ||
|   | 7ff040f706 | ||
|   | f4b83c2860 | ||
|   | 082b708927 | ||
|   | 8a895e02fb | ||
|   | b878fb7b3f | ||
|   | 5c66d8df5f | ||
|   | ebd34a536d | ||
|   | f2c7169aca | ||
|   | 875d1c50b0 | ||
|   | 8c4533b704 | ||
|   | bb50a66d80 | ||
|   | e8dccd9b6a | ||
|   | cc1d2c4dc1 | ||
|   | 8e93e580cd | ||
|   | 97e3df4f44 | ||
|   | 8b2dccdae1 | ||
|   | 7486016e85 | ||
|   | 1b4ad78acf | ||
|   | 9936200dcc | ||
|   | 5bd3573123 | ||
|   | 761f82f321 | ||
|   | 9ec8e5155b | ||
|   | 47c014968d | ||
|   | e50b978aa0 | ||
|   | 51a57384e1 | ||
|   | 4425226439 | ||
|   | 80f9f6c370 | ||
|   | 28b8877477 | ||
|   | c40e9999ab | ||
|   | d21c331b6e | ||
|   | 6ac6c09693 | ||
|   | d18148241c | ||
|   | 9e9b3bbb43 | 
							
								
								
									
										27
									
								
								.github/workflows/maven-publish.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -5,7 +5,7 @@ name: Test and Publish Package | ||||
|  | ||||
| #on: | ||||
| #  release: | ||||
| #    types: [created] | ||||
| #    types: [ "created" ] | ||||
|  | ||||
| on: | ||||
|   push: | ||||
| @@ -14,12 +14,10 @@ on: | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|  | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: write | ||||
|       packages: write | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Set up JDK 11 | ||||
| @@ -29,13 +27,8 @@ jobs: | ||||
|           distribution: 'adopt-hotspot' | ||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||
|  | ||||
|       #      - name: Run Tests | ||||
|       #        run: mvn -U clean verify --file pom.xml | ||||
|  | ||||
|       - name: Build with Maven | ||||
|         run: mvn --file pom.xml -U clean package -Punit-tests | ||||
|  | ||||
|       - name: Set up Apache Maven Central (Overwrite settings.xml) | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: # running setup-java again overwrites the settings.xml | ||||
| @@ -47,14 +40,24 @@ jobs: | ||||
|           server-password: MAVEN_PASSWORD | ||||
|           gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} | ||||
|           gpg-passphrase: MAVEN_GPG_PASSPHRASE | ||||
|  | ||||
|       - name: Set up Maven cache | ||||
|         uses: actions/cache@v3 | ||||
|         with: | ||||
|           path: ~/.m2/repository | ||||
|           key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | ||||
|           restore-keys: | | ||||
|             ${{ runner.os }}-maven- | ||||
|       - name: Build | ||||
|         run: mvn -B -ntp clean install | ||||
|       - name: Publish to GitHub Packages Apache Maven | ||||
|         #        if: > | ||||
|         #          github.event_name != 'pull_request' && | ||||
|         #          github.ref_name == 'main' && | ||||
|         #          contains(github.event.head_commit.message, 'release') | ||||
|         run: | | ||||
|           git config --global user.email "koujalgi.amith@gmail.com" | ||||
|           git config --global user.name "amithkoujalgi" | ||||
|           mvn clean -Punit-tests release:clean release:prepare release:perform -B -Darguments="-DskipTests -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}" | ||||
|         #        run: mvn clean deploy -Punit-tests -Dgpg.passphrase="${{ secrets.GPG_PASSPHRASE }}" | ||||
|  | ||||
|           mvn -B -ntp -DskipTests -Pci-cd -Darguments="-DskipTests -Pci-cd" release:clean release:prepare release:perform | ||||
|         env: | ||||
|           MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} | ||||
|           MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} | ||||
|   | ||||
							
								
								
									
										62
									
								
								.github/workflows/publish-docs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,62 @@ | ||||
| # Simple workflow for deploying static content to GitHub Pages | ||||
| name: Deploy Docs to GH Pages | ||||
|  | ||||
| on: | ||||
|   # Runs on pushes targeting the default branch | ||||
|   push: | ||||
|     branches: [ "main" ] | ||||
|  | ||||
|   # Allows you to run this workflow manually from the Actions tab | ||||
|   workflow_dispatch: | ||||
|  | ||||
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | ||||
| permissions: | ||||
|   contents: read | ||||
|   pages: write | ||||
|   id-token: write | ||||
|   packages: write | ||||
| # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. | ||||
| # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. | ||||
| concurrency: | ||||
|   group: "pages" | ||||
|   cancel-in-progress: false | ||||
|  | ||||
| jobs: | ||||
|   # Single deploy job since we're just deploying | ||||
|   deploy: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     environment: | ||||
|       name: github-pages | ||||
|       url: ${{ steps.deployment.outputs.page_url }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Set up JDK 11 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           java-version: '11' | ||||
|           distribution: 'adopt-hotspot' | ||||
|           server-id: github # Value of the distributionManagement/repository/id field of the pom.xml | ||||
|           settings-path: ${{ github.workspace }} # location for the settings.xml file | ||||
|  | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Use Node.js | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: '20.x' | ||||
|       - run: cd docs && npm ci | ||||
|       - run: cd docs && npm run build | ||||
|  | ||||
|       - name: Build with Maven | ||||
|         run: mvn --file pom.xml -U clean package && cp -r ./target/apidocs/. ./docs/build/apidocs | ||||
|  | ||||
|       - name: Setup Pages | ||||
|         uses: actions/configure-pages@v3 | ||||
|       - name: Upload artifact | ||||
|         uses: actions/upload-pages-artifact@v2 | ||||
|         with: | ||||
|           # Upload entire repository | ||||
|           path: './docs/build/.' | ||||
|       - name: Deploy to GitHub Pages | ||||
|         id: deployment | ||||
|         uses: actions/deploy-pages@v2 | ||||
							
								
								
									
										2
									
								
								.github/workflows/publish-javadoc.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -4,7 +4,7 @@ name: Deploy Javadoc content to Pages | ||||
| on: | ||||
|   # Runs on pushes targeting the default branch | ||||
|   push: | ||||
|     branches: [ "main" ] | ||||
|     branches: [ "none" ] | ||||
|  | ||||
|   # Allows you to run this workflow manually from the Actions tab | ||||
|   workflow_dispatch: | ||||
|   | ||||
							
								
								
									
										18
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						| @@ -1,17 +1,13 @@ | ||||
| build: | ||||
| 	mvn -B clean install | ||||
|  | ||||
| ut: | ||||
| 	mvn clean test -Punit-tests | ||||
|  | ||||
| it: | ||||
| 	mvn clean verify -Pintegration-tests | ||||
|  | ||||
| build: | ||||
| 	mvn clean test install -Punit-tests | ||||
|  | ||||
| release: | ||||
| 	mvn clean -Punit-tests release:clean release:prepare release:perform -B | ||||
|  | ||||
| update-version: | ||||
| 	mvn versions:set -DnewVersion=1.0.1 | ||||
|  | ||||
| deploy: | ||||
| 	mvn clean deploy -Punit-tests -Dgpg.passphrase="$GPG_PASSPHRASE" -e | ||||
| list-releases: | ||||
| 	curl 'https://central.sonatype.com/api/internal/browse/component/versions?sortField=normalizedVersion&sortDirection=asc&page=0&size=12&filter=namespace%3Aio.github.amithkoujalgi%2Cname%3Aollama4j' \ | ||||
|       --compressed \ | ||||
|       --silent | jq '.components[].version' | ||||
							
								
								
									
										20
									
								
								docs/.gitignore
									
									
									
									
										vendored
									
									
										Normal 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* | ||||
							
								
								
									
										41
									
								
								docs/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,41 @@ | ||||
| # Website | ||||
|  | ||||
| This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator. | ||||
|  | ||||
| ### Installation | ||||
|  | ||||
| ``` | ||||
| $ yarn | ||||
| ``` | ||||
|  | ||||
| ### Local Development | ||||
|  | ||||
| ``` | ||||
| $ yarn 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. | ||||
|  | ||||
| ### Build | ||||
|  | ||||
| ``` | ||||
| $ yarn 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 yarn deploy | ||||
| ``` | ||||
|  | ||||
| Not using SSH: | ||||
|  | ||||
| ``` | ||||
| $ GIT_USER=<Your GitHub username> yarn 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
									
								
								docs/babel.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| module.exports = { | ||||
|   presets: [require.resolve('@docusaurus/core/lib/babel/preset')], | ||||
| }; | ||||
							
								
								
									
										9
									
								
								docs/blog/2023-12-01-welcome/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,9 @@ | ||||
| --- | ||||
| slug: welcome | ||||
| title: Welcome | ||||
| authors: [ amith ] | ||||
| tags: [ Java, AI, LLM, GenAI, GenerativeAI, Ollama, Ollama4J, OpenSource, Developers | ||||
| ] | ||||
| --- | ||||
|  | ||||
| Welcome Java Developers! | ||||
							
								
								
									
										66
									
								
								docs/blog/2023-12-22-release-post.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,66 @@ | ||||
| --- | ||||
| slug: release-post | ||||
| title: Release | ||||
| authors: [ amith ] | ||||
| tags: [ Java, AI, LLM, GenAI, GenerativeAI, Ollama, Ollama4j, OpenSource, Developers | ||||
| ] | ||||
| --- | ||||
|  | ||||
| Hey there, my fellow Java Developers! 🚀 | ||||
|  | ||||
| I am glad to announce the release of Ollama4j, a library that unites Ollama (an LLM manager and runner) and your Java | ||||
| applications! 🌐🚀 | ||||
|  | ||||
| 👉 GitHub Repository: Ollama4j on GitHub (https://github.com/amithkoujalgi/ollama4j) | ||||
|  | ||||
| 🌟 Key Features: | ||||
|  | ||||
| - Easy integration with Ollama, enabling the execution of large language models locally. | ||||
| - Clean and simple APIs, focused on seamless interaction with Ollama. | ||||
| - Empowers Java developers to harness the full capabilities of Ollama. | ||||
| - Provides APIs to perform operations such as listing, pulling, deleting models, and creating custom models. | ||||
| - Provides APIs to ask questions (generate completions) to the LLMs in synchronous and asynchronous modes. | ||||
| - Ability to ask questions along with image files or image URLs! 🤩 | ||||
| - Open-source and primed for collaborative contributions from the community! | ||||
|  | ||||
| 🦙 What is Ollama? | ||||
|  | ||||
| Ollama is an advanced AI tool that allows users to easily set up and run large language models locally (in CPU and GPU | ||||
| modes). With Ollama, users can leverage powerful language models such as Llama 2 and even customize and create their own | ||||
| models. | ||||
|  | ||||
| For more details about Ollama, check these out: | ||||
|  | ||||
| - https://ollama.ai/ | ||||
| - https://www.linkedin.com/company/ollama/ | ||||
|  | ||||
| 👨💻 Why Ollama4j? | ||||
|  | ||||
| As a Java developer passionate about harnessing the latest advancements in AI, I realized the need for a simple and | ||||
| efficient way to integrate Ollama into Java applications. That's why I authored Ollama4j! | ||||
|  | ||||
| 🔧 How to Get Started: | ||||
|  | ||||
| Visit the GitHub repository: Ollama4j on GitHub. | ||||
|  | ||||
| Follow the easy setup instructions in the README to integrate Ollama into your Java projects. | ||||
|  | ||||
| Start unlocking the potential of large language models in your applications! | ||||
|  | ||||
| 🙏 Contributions Welcome: | ||||
|  | ||||
| I invite the Java developer community to explore, use, and contribute to Ollama4j. Your feedback, suggestions, and | ||||
| contributions will help this library get better. | ||||
|  | ||||
| I am excited about the possibilities that Ollama4j opens up for Java developers. Whether you're working on natural | ||||
| language processing, chatbots, or any application that can benefit from advanced language models, Ollama4j is here to | ||||
| elevate your projects. | ||||
|  | ||||
| I look forward to seeing the incredible applications/projects you'll build with Ollama4j! 🌟 | ||||
|  | ||||
| Find the full API spec here: https://amithkoujalgi.github.io/ollama4j/ | ||||
|  | ||||
| Find the Javadoc here: https://amithkoujalgi.github.io/ollama4j/apidocs/ | ||||
|  | ||||
| Ollama4j Docs is powered by [Docusaurus](https://docusaurus.io). | ||||
|  | ||||
							
								
								
									
										5
									
								
								docs/blog/authors.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| amith: | ||||
|   name: Amith Koujalgi | ||||
|   title: Maintainer of Ollama4j | ||||
|   url: https://github.com/amithkoujalgi | ||||
|   image_url: https://github.com/amithkoujalgi.png | ||||
							
								
								
									
										3
									
								
								docs/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| #!/usr/bin/env bash | ||||
| npm i | ||||
| npm run build | ||||
							
								
								
									
										8
									
								
								docs/docs/apis-ask/_category_.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "label": "APIs - Ask", | ||||
|   "position": 10, | ||||
|   "link": { | ||||
|     "type": "generated-index", | ||||
|     "description": "Details of APIs to interact with LLMs." | ||||
|   } | ||||
| } | ||||
							
								
								
									
										42
									
								
								docs/docs/apis-ask/ask-async.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,42 @@ | ||||
| --- | ||||
| sidebar_position: 2 | ||||
| --- | ||||
|  | ||||
| # Ask - Async | ||||
|  | ||||
| This API lets you ask questions to the LLMs in a asynchronous way. | ||||
| These APIs correlate to | ||||
| the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         String prompt = "Who are you?"; | ||||
|  | ||||
|         OllamaAsyncResultCallback callback = ollamaAPI.askAsync(OllamaModelType.LLAMA2, prompt); | ||||
|  | ||||
|         while (!callback.isComplete() || !callback.getStream().isEmpty()) { | ||||
|             // poll for data from the response stream | ||||
|             String result = callback.getStream().poll(); | ||||
|             if (response != null) { | ||||
|                 System.out.print(result.getResponse()); | ||||
|             } | ||||
|             Thread.sleep(100); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You will get a response similar to: | ||||
|  | ||||
| > I am LLaMA, an AI assistant developed by Meta AI that can understand and respond to human input in a conversational | ||||
| > manner. I am trained on a massive dataset of text from the internet and can generate human-like responses to a wide | ||||
| > range of topics and questions. I can be used to create chatbots, virtual assistants, and other applications that | ||||
| > require | ||||
| > natural language understanding and generation capabilities. | ||||
							
								
								
									
										44
									
								
								docs/docs/apis-ask/ask-with-image-files.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,44 @@ | ||||
| --- | ||||
| sidebar_position: 3 | ||||
| --- | ||||
|  | ||||
| # Ask - With Image Files | ||||
|  | ||||
| This API lets you ask questions along with the image files to the LLMs. | ||||
| These APIs correlate to | ||||
| the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs. | ||||
|  | ||||
| :::caution | ||||
|  | ||||
| Executing this on Ollama server running in CPU-mode will take longer to generate response. Hence, GPU-mode is | ||||
| recommended. | ||||
|  | ||||
| ::: | ||||
|  | ||||
| ## Ask (Sync) | ||||
|  | ||||
| If you have this image downloaded and you pass the path to the downloaded image to the following code: | ||||
|  | ||||
|  | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String host = "http://localhost:11434/"; | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|         ollamaAPI.setRequestTimeoutSeconds(10); | ||||
|  | ||||
|         OllamaResult result = ollamaAPI.askWithImageFiles(OllamaModelType.LLAVA, | ||||
|                 "What's in this image?", | ||||
|                 List.of( | ||||
|                         new File("/path/to/image"))); | ||||
|         System.out.println(result.getResponse()); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You will get a response similar to: | ||||
|  | ||||
| > This image features a white boat with brown cushions, where a dog is sitting on the back of the boat. The dog seems to | ||||
| > be enjoying its time outdoors, perhaps on a lake. | ||||
							
								
								
									
										44
									
								
								docs/docs/apis-ask/ask-with-image-urls.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,44 @@ | ||||
| --- | ||||
| sidebar_position: 4 | ||||
| --- | ||||
|  | ||||
| # Ask - With Image URLs | ||||
|  | ||||
| This API lets you ask questions along with the image files to the LLMs. | ||||
| These APIs correlate to | ||||
| the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs. | ||||
|  | ||||
| :::caution | ||||
|  | ||||
| Executing this on Ollama server running in CPU-mode will take longer to generate response. Hence, GPU-mode is | ||||
| recommended. | ||||
|  | ||||
| ::: | ||||
|  | ||||
| ## Ask (Sync) | ||||
|  | ||||
| Passing the link of this image the following code: | ||||
|  | ||||
|  | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String host = "http://localhost:11434/"; | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|         ollamaAPI.setRequestTimeoutSeconds(10); | ||||
|  | ||||
|         OllamaResult result = ollamaAPI.askWithImageURLs(OllamaModelType.LLAVA, | ||||
|                 "What's in this image?", | ||||
|                 List.of( | ||||
|                         "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg")); | ||||
|         System.out.println(result.getResponse()); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You will get a response similar to: | ||||
|  | ||||
| > This image features a white boat with brown cushions, where a dog is sitting on the back of the boat. The dog seems to | ||||
| > be enjoying its time outdoors, perhaps on a lake. | ||||
							
								
								
									
										106
									
								
								docs/docs/apis-ask/ask.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,106 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Ask - Sync | ||||
|  | ||||
| This API lets you ask questions to the LLMs in a synchronous way. | ||||
| These APIs correlate to | ||||
| the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs. | ||||
|  | ||||
| ## Try asking a question about the model. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         OllamaResult result = ollamaAPI.ask(OllamaModelType.LLAMA2, "Who are you?"); | ||||
|  | ||||
|         System.out.println(result.getResponse()); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You will get a response similar to: | ||||
|  | ||||
| > I am LLaMA, an AI assistant developed by Meta AI that can understand and respond to human input in a conversational | ||||
| > manner. I am trained on a massive dataset of text from the internet and can generate human-like responses to a wide | ||||
| > range of topics and questions. I can be used to create chatbots, virtual assistants, and other applications that | ||||
| > require | ||||
| > natural language understanding and generation capabilities. | ||||
|  | ||||
| ## Try asking a question from general topics. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         String prompt = "List all cricket world cup teams of 2019."; | ||||
|  | ||||
|         OllamaResult result = ollamaAPI.ask(OllamaModelType.LLAMA2, prompt); | ||||
|  | ||||
|         System.out.println(result.getResponse()); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You'd then get a response from the model: | ||||
|  | ||||
| > The 2019 ICC Cricket World Cup was held in England and Wales from May 30 to July 14, 2019. The | ||||
| > following teams | ||||
| > participated in the tournament: | ||||
| > | ||||
| > 1. Afghanistan | ||||
| > 2. Australia | ||||
| > 3. Bangladesh | ||||
| > 4. England | ||||
| > 5. India | ||||
| > 6. New Zealand | ||||
| > 7. Pakistan | ||||
| > 8. South Africa | ||||
| > 9. Sri Lanka | ||||
| > 10. West Indies | ||||
| > | ||||
| > These teams competed in a round-robin format, with the top four teams advancing to the | ||||
| > semi-finals. The tournament was | ||||
| > won by the England cricket team, who defeated New Zealand in the final. | ||||
|  | ||||
| ## Try asking for a Database query for your data schema. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String host = "http://localhost:11434/"; | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         String prompt = SamplePrompts.getSampleDatabasePromptWithQuestion( | ||||
|                 "List all customer names who have bought one or more products"); | ||||
|         OllamaResult result = ollamaAPI.ask(OllamaModelType.SQLCODER, prompt); | ||||
|         System.out.println(result.getResponse()); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| _Note: Here I've used | ||||
| a [sample prompt](https://github.com/amithkoujalgi/ollama4j/blob/main/src/main/resources/sample-db-prompt-template.txt) | ||||
| containing a database schema from within this library for demonstration purposes._ | ||||
|  | ||||
| You'd then get a response from the model: | ||||
|  | ||||
| ```sql | ||||
| SELECT customers.name | ||||
| FROM sales | ||||
|          JOIN customers ON sales.customer_id = customers.customer_id | ||||
| GROUP BY customers.name; | ||||
| ``` | ||||
							
								
								
									
										46
									
								
								docs/docs/apis-ask/generate-embeddings.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,46 @@ | ||||
| --- | ||||
| sidebar_position: 5 | ||||
| --- | ||||
|  | ||||
| # Generate Embeddings | ||||
|  | ||||
| Generate embeddings from a model. | ||||
|  | ||||
| Parameters: | ||||
|  | ||||
| - `model`: name of model to generate embeddings from | ||||
| - `prompt`: text to generate embeddings for | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         List<Double> embeddings = ollamaAPI.generateEmbeddings(OllamaModelType.LLAMA2, | ||||
|                 "Here is an article about llamas..."); | ||||
|  | ||||
|         embeddings.forEach(System.out::println); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| You will get a response similar to: | ||||
|  | ||||
| ```json | ||||
|  [ | ||||
|   0.5670403838157654, | ||||
|   0.009260174818336964, | ||||
|   0.23178744316101074, | ||||
|   -0.2916173040866852, | ||||
|   -0.8924556970596313, | ||||
|   0.8785552978515625, | ||||
|   -0.34576427936553955, | ||||
|   0.5742510557174683, | ||||
|   -0.04222835972905159, | ||||
|   -0.137906014919281 | ||||
| ] | ||||
| ``` | ||||
							
								
								
									
										8
									
								
								docs/docs/apis-extras/_category_.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "label": "APIs - Extras", | ||||
|   "position": 10, | ||||
|   "link": { | ||||
|     "type": "generated-index", | ||||
|     "description": "Details of APIs to handle bunch of extra stuff." | ||||
|   } | ||||
| } | ||||
							
								
								
									
										20
									
								
								docs/docs/apis-extras/ping.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| --- | ||||
| sidebar_position: 3 | ||||
| --- | ||||
|  | ||||
| # Ping | ||||
|  | ||||
| This API lets you check the reachability of Ollama server. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String host = "http://localhost:11434/"; | ||||
|          | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|          | ||||
|         ollamaAPI.ping(); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
							
								
								
									
										21
									
								
								docs/docs/apis-extras/request-timeout.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | ||||
| --- | ||||
| sidebar_position: 2 | ||||
| --- | ||||
|  | ||||
| # Set Request Timeout | ||||
|  | ||||
| This API lets you set the request timeout for the Ollama client. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|   public static void main(String[] args) { | ||||
|  | ||||
|     String host = "http://localhost:11434/"; | ||||
|  | ||||
|     OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|     ollamaAPI.setRequestTimeoutSeconds(10); | ||||
|   } | ||||
| } | ||||
| ``` | ||||
							
								
								
									
										23
									
								
								docs/docs/apis-extras/verbosity.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Set Verbosity | ||||
|  | ||||
| This API lets you set the verbosity of the Ollama client. | ||||
|  | ||||
| ## Try asking a question about the model. | ||||
|  | ||||
| ```java | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         ollamaAPI.setVerbose(true); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
							
								
								
									
										8
									
								
								docs/docs/apis-model-management/_category_.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | ||||
| { | ||||
|   "label": "APIs - Model Management", | ||||
|   "position": 4, | ||||
|   "link": { | ||||
|     "type": "generated-index", | ||||
|     "description": "Details of APIs to manage LLMs." | ||||
|   } | ||||
| } | ||||
							
								
								
									
										23
									
								
								docs/docs/apis-model-management/create-model.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| --- | ||||
| sidebar_position: 4 | ||||
| --- | ||||
|  | ||||
| # Create Model | ||||
|  | ||||
| This API lets you create a custom model on the Ollama server. | ||||
|  | ||||
| ```java title="CreateModel.java" | ||||
| public class CreateModel { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         ollamaAPI.createModel("mycustommodel", "/path/to/modelfile/on/ollama-server"); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| Once created, you can see it when you use [list models](./list-models) API. | ||||
							
								
								
									
										26
									
								
								docs/docs/apis-model-management/delete-model.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | ||||
| --- | ||||
| sidebar_position: 5 | ||||
| --- | ||||
|  | ||||
| # Delete Model | ||||
|  | ||||
| This API lets you create a delete a model from the Ollama server. | ||||
|  | ||||
| ```java title="DeleteModel.java" | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         ollamaAPI.setVerbose(false); | ||||
|  | ||||
|         ollamaAPI.deleteModel("mycustommodel", true); | ||||
|     } | ||||
| } | ||||
|  | ||||
| ``` | ||||
|  | ||||
| Once deleted, you can verify it using [list models](./list-models) API. | ||||
							
								
								
									
										34
									
								
								docs/docs/apis-model-management/get-model-details.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										30
									
								
								docs/docs/apis-model-management/list-models.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # List Models | ||||
|  | ||||
| This API lets you list available models on the Ollama server. | ||||
|  | ||||
| ```java title="ListModels.java" | ||||
| public class ListModels { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|  | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         List<Model> models = ollamaAPI.listModels(); | ||||
|  | ||||
|         models.forEach(model -> System.out.println(model.getName())); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| If you have any models already downloaded on Ollama server, you would have them listed as follows: | ||||
|  | ||||
| ```bash | ||||
| llama2:latest | ||||
| sqlcoder:latest | ||||
| ``` | ||||
							
								
								
									
										23
									
								
								docs/docs/apis-model-management/pull-model.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,23 @@ | ||||
| --- | ||||
| sidebar_position: 2 | ||||
| --- | ||||
|  | ||||
| # Pull Model | ||||
|  | ||||
| This API lets you pull a model on the Ollama server. | ||||
|  | ||||
| ```java title="PullModel.java" | ||||
| public class Main { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|          | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         ollamaAPI.pullModel(OllamaModelType.LLAMA2); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| Once downloaded, you can see them when you use [list models](./list-models) API. | ||||
							
								
								
									
										105
									
								
								docs/docs/intro.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,105 @@ | ||||
| --- | ||||
| sidebar_position: 1 | ||||
| --- | ||||
|  | ||||
| # Intro | ||||
|  | ||||
| Let's get started with **Ollama4j**. | ||||
|  | ||||
| ## Getting Started | ||||
|  | ||||
| ### What you'll need | ||||
|  | ||||
| - **[Ollama](https://ollama.ai/download)** | ||||
| - **[Oracle JDK](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)** or | ||||
|   **[Open JDK](https://jdk.java.net/archive/)** 11.0 or above. | ||||
| - **[Maven](https://maven.apache.org/download.cgi)** | ||||
|  | ||||
| ### Start Ollama server | ||||
|  | ||||
| The easiest way of getting started with Ollama server is with [Docker](https://docs.docker.com/get-started/overview/). | ||||
| But if you choose to run the | ||||
| Ollama server directly, **[download](https://ollama.ai/download)** the distribution of your choice | ||||
| and follow the installation process. | ||||
|  | ||||
| #### With Docker | ||||
|  | ||||
| ##### Run in CPU mode: | ||||
|  | ||||
| ```bash | ||||
| docker run -it -v ~/ollama:/root/.ollama -p 11434:11434 ollama/ollama | ||||
| ``` | ||||
|  | ||||
| ##### Run in GPU mode: | ||||
|  | ||||
| ```bash | ||||
| docker run -it --gpus=all -v ~/ollama:/root/.ollama -p 11434:11434 ollama/ollama | ||||
| ``` | ||||
|  | ||||
| You can type this command into Command Prompt, Powershell, Terminal, or any other integrated | ||||
| terminal of your code editor. | ||||
|  | ||||
| The command runs the Ollama server locally at **http://localhost:11434/**. | ||||
|  | ||||
| ### Setup your project | ||||
|  | ||||
| Get started by **creating a new Maven project** on your favorite IDE. | ||||
|  | ||||
| Add the dependency to your project's `pom.xml`. | ||||
|  | ||||
| ```xml | ||||
|  | ||||
| <dependency> | ||||
|     <groupId>io.github.amithkoujalgi</groupId> | ||||
|     <artifactId>ollama4j</artifactId> | ||||
|     <version>1.0.27</version> | ||||
| </dependency> | ||||
| ``` | ||||
|  | ||||
| Find the latest version of the library [here](https://central.sonatype.com/artifact/io.github.amithkoujalgi/ollama4j). | ||||
|  | ||||
| You might want to include an implementation of [SL4J](https://www.slf4j.org/) logger in your `pom.xml` file. For | ||||
| example, | ||||
|  | ||||
| Use `slf4j-jdk14` implementation: | ||||
|  | ||||
| ```xml | ||||
|  | ||||
| <dependency> | ||||
|     <groupId>org.slf4j</groupId> | ||||
|     <artifactId>slf4j-jdk14</artifactId> | ||||
|     <version>2.0.9</version> <!--Replace with appropriate version--> | ||||
| </dependency> | ||||
| ``` | ||||
|  | ||||
| or use `logback-classic` implementation: | ||||
|  | ||||
| ```xml | ||||
|  | ||||
| <dependency> | ||||
|     <groupId>ch.qos.logback</groupId> | ||||
|     <artifactId>logback-classic</artifactId> | ||||
|     <version>1.3.11</version> <!--Replace with appropriate version--> | ||||
| </dependency> | ||||
| ``` | ||||
|  | ||||
| or use other suitable implementations. | ||||
|  | ||||
| Create a new Java class in your project and add this code. | ||||
|  | ||||
| ```java | ||||
| public class OllamaAPITest { | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String host = "http://localhost:11434/"; | ||||
|  | ||||
|         OllamaAPI ollamaAPI = new OllamaAPI(host); | ||||
|  | ||||
|         ollamaAPI.setVerbose(true); | ||||
|  | ||||
|         boolean isOllamaServerReachable = ollamaAPI.ping(); | ||||
|  | ||||
|         System.out.println("Is Ollama server alive: " + isOllamaServerReachable); | ||||
|     } | ||||
| } | ||||
| ``` | ||||
							
								
								
									
										138
									
								
								docs/docusaurus.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,138 @@ | ||||
| // @ts-check | ||||
| // `@type` JSDoc annotations allow editor autocompletion and type checking | ||||
| // (when paired with `@ts-check`). | ||||
| // There are various equivalent ways to declare your Docusaurus config. | ||||
| // See: https://docusaurus.io/docs/api/docusaurus-config | ||||
|  | ||||
| import {themes as prismThemes} from 'prism-react-renderer'; | ||||
|  | ||||
| /** @type {import('@docusaurus/types').Config} */ | ||||
| const config = { | ||||
|     title: 'Ollama4j', | ||||
|     tagline: 'Java library for interacting with Ollama.', | ||||
|     favicon: 'img/favicon.ico', | ||||
|  | ||||
|     // Set the production url of your site here | ||||
|     url: 'https://your-docusaurus-site.example.com', | ||||
|     // Set the /<baseUrl>/ pathname under which your site is served | ||||
|     // For GitHub pages deployment, it is often '/<projectName>/' | ||||
|     baseUrl: '/ollama4j/', | ||||
|  | ||||
|     // GitHub pages deployment config. | ||||
|     // If you aren't using GitHub pages, you don't need these. | ||||
|     organizationName: 'amithkoujalgi', // Usually your GitHub org/user name. | ||||
|     projectName: 'ollama4j', // Usually your repo name. | ||||
|  | ||||
|     onBrokenLinks: 'throw', | ||||
|     onBrokenMarkdownLinks: 'warn', | ||||
|  | ||||
|     // Even if you don't use internationalization, 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: { | ||||
|                     sidebarPath: './sidebars.js', | ||||
|                     // Please change this to your repo. | ||||
|                     // Remove this to remove the "edit this page" links. | ||||
|                     editUrl: | ||||
|                         'https://github.com/amithkoujalgi/ollama4j/blob/main/docs', | ||||
|                 }, | ||||
|                 blog: { | ||||
|                     showReadingTime: true, | ||||
|                     // Please change this to your repo. | ||||
|                     // Remove this to remove the "edit this page" links. | ||||
|                     editUrl: | ||||
|                         'https://github.com/amithkoujalgi/ollama4j/blob/main/docs', | ||||
|                 }, | ||||
|                 theme: { | ||||
|                     customCss: './src/css/custom.css', | ||||
|                 }, | ||||
|             }), | ||||
|         ], | ||||
|     ], | ||||
|  | ||||
|     themeConfig: | ||||
|     /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ | ||||
|         ({ | ||||
|             // Replace with your project's social card | ||||
|             image: 'img/docusaurus-social-card.jpg', | ||||
|             navbar: { | ||||
|                 title: 'Ollama4j', | ||||
|                 logo: { | ||||
|                     alt: 'Ollama4j Logo', | ||||
|                     src: 'img/logo.svg', | ||||
|                 }, | ||||
|                 items: [ | ||||
|                     { | ||||
|                         type: 'docSidebar', | ||||
|                         sidebarId: 'tutorialSidebar', | ||||
|                         position: 'left', | ||||
|                         label: 'Usage', | ||||
|                     }, | ||||
|                     {to: 'https://amithkoujalgi.github.io/ollama4j/apidocs/', label: 'Javadoc', position: 'left'}, | ||||
|                     {to: '/blog', label: 'Blog', position: 'left'}, | ||||
|                     { | ||||
|                         href: 'https://github.com/amithkoujalgi/ollama4j', | ||||
|                         label: 'GitHub', | ||||
|                         position: 'right', | ||||
|                     }, | ||||
|                 ], | ||||
|             }, | ||||
|             footer: { | ||||
|                 style: 'dark', | ||||
|                 links: [ | ||||
|                     { | ||||
|                         title: 'Docs', | ||||
|                         items: [ | ||||
|                             { | ||||
|                                 label: 'Tutorial', | ||||
|                                 to: '/docs/intro', | ||||
|                             }, | ||||
|                         ], | ||||
|                     }, | ||||
|                     { | ||||
|                         title: 'Community', | ||||
|                         items: [ | ||||
|                             { | ||||
|                                 label: 'Stack Overflow', | ||||
|                                 href: 'https://stackoverflow.com/questions/tagged/ollama4j', | ||||
|                             }, | ||||
|                             { | ||||
|                                 label: 'Twitter', | ||||
|                                 href: 'https://twitter.com/ollama4j', | ||||
|                             }, | ||||
|                         ], | ||||
|                     }, | ||||
|                     { | ||||
|                         title: 'More', | ||||
|                         items: [ | ||||
|                             { | ||||
|                                 label: 'Blog', | ||||
|                                 to: '/blog', | ||||
|                             }, | ||||
|                             { | ||||
|                                 label: 'GitHub', | ||||
|                                 href: 'https://github.com/amithkoujalgi/ollama4j', | ||||
|                             }, | ||||
|                         ], | ||||
|                     }, | ||||
|                 ], | ||||
|                 copyright: `Ollama4j Documentation ${new Date().getFullYear()}. Built with Docusaurus.`, | ||||
|             }, | ||||
|             prism: { | ||||
|                 theme: prismThemes.github, | ||||
|                 darkTheme: prismThemes.dracula, | ||||
|             }, | ||||
|         }), | ||||
| }; | ||||
|  | ||||
| export default config; | ||||
							
								
								
									
										14640
									
								
								docs/package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										44
									
								
								docs/package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,44 @@ | ||||
| { | ||||
|   "name": "ollama-4-j", | ||||
|   "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" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@docusaurus/core": "3.0.1", | ||||
|     "@docusaurus/preset-classic": "3.0.1", | ||||
|     "@mdx-js/react": "^3.0.0", | ||||
|     "clsx": "^2.0.0", | ||||
|     "prism-react-renderer": "^2.3.0", | ||||
|     "react": "^18.0.0", | ||||
|     "react-dom": "^18.0.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@docusaurus/module-type-aliases": "3.0.1", | ||||
|     "@docusaurus/types": "3.0.1" | ||||
|   }, | ||||
|   "browserslist": { | ||||
|     "production": [ | ||||
|       ">0.5%", | ||||
|       "not dead", | ||||
|       "not op_mini all" | ||||
|     ], | ||||
|     "development": [ | ||||
|       "last 3 chrome version", | ||||
|       "last 3 firefox version", | ||||
|       "last 5 safari version" | ||||
|     ] | ||||
|   }, | ||||
|   "engines": { | ||||
|     "node": ">=18.0" | ||||
|   } | ||||
| } | ||||
| @@ -1,36 +0,0 @@ | ||||
| Understanding publishing: | ||||
| https://dzone.com/articles/how-to-publish-artifacts-to-maven-central | ||||
|  | ||||
| GPG Signing setup | ||||
|  | ||||
| ## GPG Setup | ||||
|  | ||||
| https://central.sonatype.org/publish/requirements/gpg/#listing-keys | ||||
|  | ||||
| ### Steps | ||||
|  | ||||
| - Create key: `gpg --gen-key` and then list keys to verify: `gpg --list-keys` | ||||
| - Distributing Your Public Key: | ||||
|  | ||||
| ``` | ||||
| gpg --keyserver pool.sks-keyservers.net --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98 | ||||
| gpg --keyserver pgp.key-server.io --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98 | ||||
| gpg --keyserver keyserver.ubuntu.com --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98 | ||||
| gpg --keyserver pgp.mit.edu --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98 | ||||
| gpg --keyserver keys.gnupg.net --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98 | ||||
| ``` | ||||
|  | ||||
| - Now other people can import your public key from the key server to their local | ||||
|   machines: `gpg --keyserver keyserver.ubuntu.com --recv-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98` | ||||
|  | ||||
| Export for later use: | ||||
|  | ||||
| ```shell | ||||
| gpg --armor --export-secret-keys 88AA0C903A513340A0F3094326257A6F6F5F24A9 > ~/ollama4j/mvn-publish/private.gpg | ||||
| ``` | ||||
|  | ||||
| ## Maven publish | ||||
|  | ||||
| https://central.sonatype.org/publish/publish-maven/ | ||||
|  | ||||
| ### Steps | ||||
							
								
								
									
										5
									
								
								docs/run.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| #!/usr/bin/env bash | ||||
| npm i | ||||
|  | ||||
| # dev mode | ||||
| npm run start | ||||
							
								
								
									
										33
									
								
								docs/sidebars.js
									
									
									
									
									
										Normal 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 | ||||
|   tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], | ||||
|  | ||||
|   // But you can create a sidebar manually | ||||
|   /* | ||||
|   tutorialSidebar: [ | ||||
|     'intro', | ||||
|     'hello', | ||||
|     { | ||||
|       type: 'category', | ||||
|       label: 'Tutorial', | ||||
|       items: ['tutorial-basics/create-a-document'], | ||||
|     }, | ||||
|   ], | ||||
|    */ | ||||
| }; | ||||
|  | ||||
| export default sidebars; | ||||
							
								
								
									
										62
									
								
								docs/src/components/HomepageFeatures/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,62 @@ | ||||
| import clsx from 'clsx'; | ||||
| import Heading from '@theme/Heading'; | ||||
| import styles from './styles.module.css'; | ||||
|  | ||||
| const FeatureList = [ | ||||
|   { | ||||
|     title: 'Easy LLM Integration', | ||||
|     Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, | ||||
|     description: ( | ||||
|       <> | ||||
|         Easy integration with Ollama, enabling the execution of large language models locally. | ||||
|  | ||||
|       </> | ||||
|     ), | ||||
|   }, | ||||
|   { | ||||
|     title: 'Developer-Friendly', | ||||
|     Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, | ||||
|     description: ( | ||||
|       <> | ||||
|         Clean and simple <code>APIs</code>, focused on seamless interaction with Ollama. | ||||
|       </> | ||||
|     ), | ||||
|   }, | ||||
|   { | ||||
|     title: 'Powered by Java', | ||||
|     Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, | ||||
|     description: ( | ||||
|       <> | ||||
|         Empowers Java developers to harness the full capabilities of Ollama. | ||||
|       </> | ||||
|     ), | ||||
|   }, | ||||
| ]; | ||||
|  | ||||
| function Feature({Svg, title, description}) { | ||||
|   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"> | ||||
|         <Heading as="h3">{title}</Heading> | ||||
|         <p>{description}</p> | ||||
|       </div> | ||||
|     </div> | ||||
|   ); | ||||
| } | ||||
|  | ||||
| export default function HomepageFeatures() { | ||||
|   return ( | ||||
|     <section className={styles.features}> | ||||
|       <div className="container"> | ||||
|         <div className="row"> | ||||
|           {FeatureList.map((props, idx) => ( | ||||
|             <Feature key={idx} {...props} /> | ||||
|           ))} | ||||
|         </div> | ||||
|       </div> | ||||
|     </section> | ||||
|   ); | ||||
| } | ||||
							
								
								
									
										11
									
								
								docs/src/components/HomepageFeatures/styles.module.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,11 @@ | ||||
| .features { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   padding: 2rem 0; | ||||
|   width: 100%; | ||||
| } | ||||
|  | ||||
| .featureSvg { | ||||
|   height: 200px; | ||||
|   width: 200px; | ||||
| } | ||||
							
								
								
									
										30
									
								
								docs/src/css/custom.css
									
									
									
									
									
										Normal 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); | ||||
| } | ||||
							
								
								
									
										40
									
								
								docs/src/pages/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,40 @@ | ||||
| import clsx from 'clsx'; | ||||
| import Link from '@docusaurus/Link'; | ||||
| import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; | ||||
| import Layout from '@theme/Layout'; | ||||
| import HomepageFeatures from '@site/src/components/HomepageFeatures'; | ||||
|  | ||||
| import Heading from '@theme/Heading'; | ||||
| import styles from './index.module.css'; | ||||
|  | ||||
| function HomepageHeader() { | ||||
|     const {siteConfig} = useDocusaurusContext(); | ||||
|     return (<header className={clsx('hero hero--primary', styles.heroBanner)}> | ||||
|         <div className="container"> | ||||
|             <Heading as="h1" className="hero__title"> | ||||
|                 {siteConfig.title} | ||||
|             </Heading> | ||||
|             <img src="img/logo.svg" alt="Ollama4j Logo" className={styles.logo} style={{maxWidth: '20vh'}}/> | ||||
|             <p className="hero__subtitle">{siteConfig.tagline}</p> | ||||
|             <div className={styles.buttons}> | ||||
|                 <Link | ||||
|                     className="button button--secondary button--lg" | ||||
|                     to="/docs/intro"> | ||||
|                     Getting Started | ||||
|                 </Link> | ||||
|             </div> | ||||
|         </div> | ||||
|     </header>); | ||||
| } | ||||
|  | ||||
| export default function Home() { | ||||
|     const {siteConfig} = useDocusaurusContext(); | ||||
|     return (<Layout | ||||
|         title={`Hello from ${siteConfig.title}`} | ||||
|         description="Description will go into a meta tag in <head />"> | ||||
|         <HomepageHeader/> | ||||
|         <main> | ||||
|             <HomepageFeatures/> | ||||
|         </main> | ||||
|     </Layout>); | ||||
| } | ||||
							
								
								
									
										23
									
								
								docs/src/pages/index.module.css
									
									
									
									
									
										Normal 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
									
								
								docs/src/pages/markdown-page.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,7 @@ | ||||
| --- | ||||
| title: Markdown page example | ||||
| --- | ||||
|  | ||||
| # Markdown page example | ||||
|  | ||||
| You don't need React to write simple standalone pages. | ||||
							
								
								
									
										0
									
								
								docs/static/.nojekyll
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								docs/static/img/docusaurus-social-card.jpg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 54 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/static/img/docusaurus.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/static/img/favicon.ico
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 15 KiB | 
							
								
								
									
										997
									
								
								docs/static/img/logo.svg
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,997 @@ | ||||
| <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" | ||||
|   width="100%" viewBox="0 0 452 626" enable-background="new 0 0 452 626" xml:space="preserve"> | ||||
| <path fill="#FEFEFE" opacity="1.000000" stroke="none" | ||||
|   d=" | ||||
| M453.000000,172.000000 | ||||
| 	C453.000000,324.000000 453.000000,475.500000 453.000000,627.000000 | ||||
| 	C302.333344,627.000000 151.666672,627.000000 1.000000,627.000000 | ||||
| 	C1.000000,418.333344 1.000000,209.666672 1.000000,1.000000 | ||||
| 	C151.666672,1.000000 302.333344,1.000000 453.000000,1.000000 | ||||
| 	C453.000000,57.833332 453.000000,114.666664 453.000000,172.000000 | ||||
| M84.028053,393.322449 | ||||
| 	C83.384384,392.190155 82.740715,391.057831 81.674141,389.388641 | ||||
| 	C80.802788,387.589966 79.931435,385.791290 78.979706,383.217987 | ||||
| 	C78.830223,382.193207 78.680740,381.168457 79.211594,379.870819 | ||||
| 	C78.441444,377.938232 77.671303,376.005676 76.812462,374.215210 | ||||
| 	C76.812462,374.215210 76.647430,374.186401 76.973671,373.285034 | ||||
| 	C76.590546,365.645538 75.618927,357.981232 75.940254,350.371460 | ||||
| 	C76.741119,331.405548 82.253365,313.830963 92.617485,297.769623 | ||||
| 	C97.025253,290.938904 96.475342,283.876709 91.198715,279.005066 | ||||
| 	C78.423065,267.209961 74.109749,251.716476 73.139450,235.444382 | ||||
| 	C71.973801,215.896286 78.028862,197.982742 90.090782,182.428818 | ||||
| 	C101.315453,167.954514 115.670410,158.157211 134.178162,155.874054 | ||||
| 	C140.515533,155.092270 147.056351,155.788574 153.494400,156.050644 | ||||
| 	C158.244003,156.243958 162.395172,155.137680 164.161224,150.445236 | ||||
| 	C176.456848,117.775826 220.521179,96.778435 254.951309,110.592094 | ||||
| 	C273.242065,117.930511 287.870972,129.076309 296.642670,147.071106 | ||||
| 	C300.826782,155.654663 302.852386,156.998413 312.043640,155.662018 | ||||
| 	C329.400574,153.138351 344.629944,158.319366 358.222992,168.651062 | ||||
| 	C374.417389,180.959961 384.232941,197.541626 387.604309,217.457413 | ||||
| 	C391.342957,239.542877 387.681763,260.251465 372.873718,277.966705 | ||||
| 	C366.868317,285.151154 365.754486,290.128052 370.589783,297.820068 | ||||
| 	C380.456207,313.515564 386.038513,330.472168 387.060211,348.944763 | ||||
| 	C388.203552,369.616760 384.423615,388.963318 371.701721,405.929657 | ||||
| 	C370.582031,407.422852 370.128693,409.415680 369.156036,412.067352 | ||||
| 	C369.234100,417.265717 369.312134,422.464111 369.125854,428.423218 | ||||
| 	C369.307739,429.397766 369.221893,430.540802 369.712799,431.320862 | ||||
| 	C374.792511,439.392426 379.126221,447.784576 380.224609,457.409882 | ||||
| 	C381.159149,465.599304 382.514496,473.851654 382.264130,482.032715 | ||||
| 	C382.034668,489.531799 379.894287,496.970642 378.621002,504.440308 | ||||
| 	C377.993927,508.119110 379.174957,510.172180 383.319550,510.096436 | ||||
| 	C390.650452,509.962463 397.988953,510.171967 405.315948,509.955780 | ||||
| 	C406.834259,509.911011 408.971466,509.024048 409.670166,507.842957 | ||||
| 	C410.891266,505.778839 411.484070,503.228821 411.878296,500.807190 | ||||
| 	C416.261047,473.884644 413.699829,447.906311 401.345032,423.216827 | ||||
| 	C400.580872,421.689758 400.674408,419.193756 401.362976,417.570099 | ||||
| 	C404.909973,409.205811 409.605743,401.243958 412.367218,392.649017 | ||||
| 	C417.975433,375.193695 419.173767,357.238953 416.897278,338.910950 | ||||
| 	C414.929382,323.067810 410.664154,308.053436 403.543945,293.858185 | ||||
| 	C402.309479,291.397034 402.337830,289.947479 403.717407,287.668213 | ||||
| 	C409.853485,277.530884 414.585663,266.829285 417.023132,255.099640 | ||||
| 	C419.414673,243.590927 419.981537,232.134415 418.800720,220.438522 | ||||
| 	C417.038361,202.982010 412.465454,186.307236 402.514008,171.942856 | ||||
| 	C395.960114,162.482651 386.950592,154.743759 379.320160,145.990402 | ||||
| 	C377.973846,144.445969 377.363831,141.657150 377.507690,139.516495 | ||||
| 	C378.297546,127.766296 380.238586,116.036354 380.200470,104.304604 | ||||
| 	C380.166199,93.761627 378.195129,83.211807 376.884613,72.689156 | ||||
| 	C374.864380,56.468525 369.322693,41.604122 359.447601,28.447065 | ||||
| 	C347.885315,13.042048 328.695618,9.548378 313.728760,20.546566 | ||||
| 	C302.718689,28.637171 296.367950,40.255608 292.319153,52.873642 | ||||
| 	C288.495239,64.790840 285.972961,77.125694 282.786560,89.636307 | ||||
| 	C281.728912,89.149498 280.086487,88.476044 278.519012,87.658875 | ||||
| 	C267.387054,81.855431 255.631439,77.483955 243.179901,76.411026 | ||||
| 	C228.426987,75.139786 213.532364,75.173859 199.477219,81.187950 | ||||
| 	C195.445267,82.913185 191.609116,85.096024 187.039963,87.409706 | ||||
| 	C185.517532,88.139969 183.995117,88.870232 181.640503,89.273247 | ||||
| 	C181.076416,89.449928 180.512344,89.626617 179.750717,89.104050 | ||||
| 	C179.286575,88.562805 178.822433,88.021568 178.403229,86.779953 | ||||
| 	C178.280228,85.854477 178.157227,84.928993 178.395538,83.604683 | ||||
| 	C177.896805,83.088760 177.398056,82.572838 176.685577,81.409119 | ||||
| 	C176.630936,80.730492 176.576294,80.051865 176.960648,78.797684 | ||||
| 	C176.709839,78.204300 176.459030,77.610916 176.007385,76.414719 | ||||
| 	C175.954910,75.995293 175.902451,75.575867 176.264999,74.490211 | ||||
| 	C175.849304,73.660492 175.433609,72.830765 174.768875,71.298279 | ||||
| 	C174.466293,69.580925 174.163727,67.863571 174.227936,65.526169 | ||||
| 	C173.850906,65.019577 173.473877,64.512985 172.854462,63.470425 | ||||
| 	C172.785080,63.085686 172.715714,62.700943 173.010712,61.661789 | ||||
| 	C172.314041,60.005325 171.617386,58.348862 170.556885,56.037312 | ||||
| 	C170.337494,55.061695 170.118103,54.086079 170.186188,52.404636 | ||||
| 	C169.183838,49.916843 168.181473,47.429050 167.112350,44.178394 | ||||
| 	C163.580078,34.403221 157.690826,26.242882 149.180649,20.384657 | ||||
| 	C141.991806,15.436010 134.072617,11.946379 124.898354,14.326028 | ||||
| 	C110.770477,17.990557 102.129440,27.828142 95.971077,40.326843 | ||||
| 	C90.741524,50.940479 87.607124,62.120296 85.745552,73.876877 | ||||
| 	C82.927361,91.674881 80.890259,109.365974 83.908562,127.320709 | ||||
| 	C84.783783,132.527115 87.079094,138.393234 85.540413,142.860626 | ||||
| 	C83.920807,147.562973 78.674400,151.149567 74.692162,154.881668 | ||||
| 	C57.430939,171.058670 47.458839,190.959152 44.085915,214.243805 | ||||
| 	C40.320992,240.234619 43.917156,264.894196 58.092773,287.427032 | ||||
| 	C59.942730,290.367645 59.926754,292.492737 58.494541,295.553497 | ||||
| 	C46.295830,321.623016 41.936687,348.865662 46.780624,377.406982 | ||||
| 	C49.218697,391.772522 54.294636,405.131378 61.580219,417.735687 | ||||
| 	C62.395935,419.146942 62.137901,421.651398 61.518700,423.332397 | ||||
| 	C59.528576,428.735168 56.721302,433.857391 54.976612,439.326263 | ||||
| 	C49.929848,455.145660 48.280193,471.459442 49.268887,487.994568 | ||||
| 	C49.472752,491.403992 50.940212,494.737854 52.000786,498.037598 | ||||
| 	C52.000786,498.037598 52.141964,497.912567 51.786953,498.590393 | ||||
| 	C52.425430,500.407654 53.063911,502.224915 53.701969,504.834595 | ||||
| 	C53.903355,505.870911 54.104740,506.907196 53.721775,508.035797 | ||||
| 	C53.851608,508.542664 53.981441,509.049500 54.111290,509.556396 | ||||
| 	C54.425308,509.285828 54.739330,509.015259 55.882069,508.977844 | ||||
| 	C63.945946,509.104126 72.009705,509.277893 80.073845,509.297089 | ||||
| 	C81.092964,509.299530 82.114014,508.490265 83.835052,507.995300 | ||||
| 	C83.619720,506.305725 83.404381,504.616119 82.922226,502.331299 | ||||
| 	C82.889275,501.900543 82.856323,501.469818 83.443771,500.751770 | ||||
| 	C82.643730,499.158417 81.843697,497.565094 80.906509,496.075348 | ||||
| 	C80.906509,496.075348 80.745781,496.136322 81.050255,495.397430 | ||||
| 	C81.003296,494.600006 80.956337,493.802582 81.371849,492.650238 | ||||
| 	C81.077583,491.692230 80.783318,490.734253 80.320518,489.195831 | ||||
| 	C80.291107,488.794952 80.261703,488.394104 80.764938,487.362152 | ||||
| 	C80.576195,481.576630 80.387451,475.791077 80.183067,469.395386 | ||||
| 	C80.256805,468.995850 80.330544,468.596313 81.007416,467.926117 | ||||
| 	C80.996033,466.283783 80.984657,464.641418 80.988174,462.201477 | ||||
| 	C80.886604,461.427216 80.785034,460.652924 80.878166,459.454620 | ||||
| 	C80.878166,459.454620 81.088028,459.037811 81.792862,458.971375 | ||||
| 	C82.090530,456.960693 82.388206,454.950012 82.661469,452.204620 | ||||
| 	C82.859047,451.501251 83.056625,450.797913 83.944946,450.005859 | ||||
| 	C84.995773,446.779480 86.046600,443.553101 87.184296,439.777924 | ||||
| 	C87.391747,439.478699 87.599197,439.179474 88.500618,438.983063 | ||||
| 	C89.243309,437.307098 89.986000,435.631134 90.871284,433.308929 | ||||
| 	C91.099716,432.935242 91.328140,432.561584 92.156654,432.273102 | ||||
| 	C92.402473,431.507263 92.648293,430.741455 93.007027,429.327637 | ||||
| 	C93.231262,428.956329 93.455498,428.585022 94.367706,428.216797 | ||||
| 	C95.515411,424.498169 97.368416,420.812531 97.544228,417.048492 | ||||
| 	C97.648399,414.818268 95.105270,412.464417 93.426132,410.056519 | ||||
| 	C93.426132,410.056519 93.105278,409.931610 93.296898,409.263428 | ||||
| 	C92.675713,408.682281 92.054527,408.101135 91.289909,406.986969 | ||||
| 	C91.041679,406.495941 90.793449,406.004913 90.807411,404.793732 | ||||
| 	C89.187851,402.545105 87.568283,400.296448 85.548523,397.551147 | ||||
| 	C85.006523,396.387878 84.464523,395.224640 84.028053,393.322449 | ||||
| M238.704788,430.769623 | ||||
| 	C225.614304,415.102051 211.716629,400.304688 193.951843,388.365540 | ||||
| 	C194.397675,392.088226 194.996338,394.719116 194.981903,397.346619 | ||||
| 	C194.880341,415.820526 194.728973,434.294952 194.444962,452.766907 | ||||
| 	C194.115402,474.202911 190.144241,494.365631 175.516769,511.381409 | ||||
| 	C172.988541,514.322327 172.781799,519.793396 172.680847,524.123291 | ||||
| 	C172.594635,527.821350 174.081863,531.590942 175.080978,535.272461 | ||||
| 	C177.421707,543.897827 176.378571,551.729858 170.212524,558.583130 | ||||
| 	C168.437653,560.555786 166.729553,562.654541 165.373871,564.924194 | ||||
| 	C162.840958,569.164673 164.322479,573.284607 169.046417,574.770142 | ||||
| 	C171.258484,575.465759 173.765152,575.224609 175.950989,575.393616 | ||||
| 	C175.950989,580.094604 175.795319,585.251099 175.985687,590.394775 | ||||
| 	C176.310593,599.173157 181.884720,602.863953 189.833038,599.048218 | ||||
| 	C194.566330,596.775818 198.751190,593.311340 203.054657,590.205444 | ||||
| 	C208.854935,586.019409 214.232239,581.167786 220.322083,577.478271 | ||||
| 	C234.627289,568.811646 246.313293,571.031738 256.815735,584.070618 | ||||
| 	C260.987000,589.249207 264.495270,594.957397 268.574249,600.215942 | ||||
| 	C272.782379,605.640869 277.620483,606.983093 283.359100,603.309326 | ||||
| 	C286.582703,601.245544 289.721069,597.563171 290.808685,593.976562 | ||||
| 	C292.712677,587.697815 293.627930,580.953857 293.868591,574.365051 | ||||
| 	C294.863953,547.117310 288.966675,521.135132 278.468567,496.108521 | ||||
| 	C274.422760,486.463593 275.001465,477.135834 279.253845,467.597565 | ||||
| 	C281.355743,462.882965 282.522644,457.622284 283.297943,452.485748 | ||||
| 	C283.936432,448.255554 283.334015,443.843964 283.354462,439.513092 | ||||
| 	C283.379517,434.208038 285.202240,429.833008 289.716736,426.652985 | ||||
| 	C295.510742,422.571716 297.029449,416.534576 296.497925,409.903992 | ||||
| 	C296.233734,406.608063 295.403839,403.340729 294.640045,400.105255 | ||||
| 	C293.097107,393.569122 293.417755,387.245361 296.245911,381.081055 | ||||
| 	C297.144135,379.123383 297.960480,377.096710 298.522583,375.022552 | ||||
| 	C299.846466,370.137695 297.229156,367.162811 292.208710,367.749664 | ||||
| 	C287.076477,368.349579 284.355347,371.765656 282.760803,376.259735 | ||||
| 	C281.377350,380.158875 280.210754,384.135010 278.948334,388.077118 | ||||
| 	C278.493713,388.077820 278.039124,388.078522 277.584503,388.079254 | ||||
| 	C276.526917,384.292572 275.421356,380.518463 274.425690,376.715576 | ||||
| 	C273.501343,373.185089 273.035675,369.493347 271.742432,366.111877 | ||||
| 	C270.365845,362.512512 266.838562,360.993866 263.557739,362.364105 | ||||
| 	C261.530121,363.210938 259.387695,366.264893 259.189301,368.496277 | ||||
| 	C258.768158,373.233368 259.487274,378.089325 259.928894,382.879028 | ||||
| 	C260.192261,385.735413 260.815979,388.558624 261.277679,391.396729 | ||||
| 	C260.828674,391.558228 260.379639,391.719727 259.930634,391.881195 | ||||
| 	C257.462006,387.085114 255.028595,382.270416 252.511154,377.500061 | ||||
| 	C251.067886,374.765198 249.422287,372.070312 245.619095,373.292999 | ||||
| 	C241.971878,374.465485 239.393066,376.840057 239.672379,380.920197 | ||||
| 	C239.862701,383.700409 240.338394,386.659271 241.524673,389.136902 | ||||
| 	C245.430740,397.294739 249.718521,405.269745 253.747864,413.097748 | ||||
| 	C250.644165,414.562683 246.317841,415.800598 243.145325,418.430420 | ||||
| 	C241.479568,419.811279 240.915283,423.897827 241.602615,426.251862 | ||||
| 	C242.053848,427.797363 246.071442,429.779144 247.730911,429.236908 | ||||
| 	C254.664597,426.971069 260.430786,428.599213 266.054321,432.611725 | ||||
| 	C267.495361,433.640015 269.588715,433.739441 271.066010,434.735046 | ||||
| 	C273.126404,436.123566 276.170074,437.708557 276.539459,439.640381 | ||||
| 	C277.648865,445.442352 278.310760,451.497650 277.907013,457.368866 | ||||
| 	C277.575287,462.192261 273.777802,465.197876 268.928558,466.225769 | ||||
| 	C264.201569,467.227722 262.276031,463.903351 260.005219,460.611725 | ||||
| 	C253.199844,450.746674 246.123001,441.068878 238.704788,430.769623 | ||||
| M154.621170,247.411545 | ||||
| 	C156.249237,239.272903 153.315323,232.959564 146.511917,228.594666 | ||||
| 	C135.823425,221.737289 122.780060,227.430878 118.151245,240.764862 | ||||
| 	C115.191765,249.290085 117.906853,257.811768 124.995628,262.246887 | ||||
| 	C132.876831,267.177795 141.256744,266.470551 147.597290,259.504211 | ||||
| 	C150.507172,256.307129 152.173431,251.978165 154.621170,247.411545 | ||||
| M342.601624,235.803604 | ||||
| 	C336.956207,226.722107 326.795410,223.281433 318.256866,227.559906 | ||||
| 	C309.340973,232.027466 306.012299,241.199265 309.653748,251.264969 | ||||
| 	C312.956024,260.393127 322.273987,266.535522 330.407257,264.945709 | ||||
| 	C344.775848,262.137024 350.027557,250.146881 342.601624,235.803604 | ||||
| M234.497452,342.851105 | ||||
| 	C253.566727,343.657532 271.469879,340.207092 287.171722,328.559448 | ||||
| 	C310.519226,311.240326 316.081909,280.706909 300.605438,256.338226 | ||||
| 	C288.073700,236.606140 269.423523,226.137390 247.238831,222.487762 | ||||
| 	C222.618088,218.437363 199.244995,222.800171 178.870041,238.376236 | ||||
| 	C163.531158,250.102356 153.864807,265.409180 153.691620,284.912689 | ||||
| 	C153.411209,316.492493 179.166718,337.251831 207.131546,341.601624 | ||||
| 	C215.776138,342.946228 224.701584,342.485168 234.497452,342.851105 | ||||
| z"/> | ||||
|   <path fill="#040404" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M81.088028,459.037811 | ||||
| 	C81.088028,459.037811 80.878166,459.454620 80.426918,459.758057 | ||||
| 	C79.577690,463.537842 79.179718,467.014221 78.755219,470.918884 | ||||
| 	C78.786705,476.904144 78.844734,482.461151 78.638916,488.255005 | ||||
| 	C79.165306,491.040039 79.955544,493.588196 80.745789,496.136322 | ||||
| 	C80.745781,496.136322 80.906509,496.075348 80.820312,496.340576 | ||||
| 	C80.764984,497.074768 80.795845,497.543762 80.614609,498.175201 | ||||
| 	C80.846085,498.944885 81.289658,499.552124 81.864838,500.383362 | ||||
| 	C82.272087,500.751251 82.547729,500.895142 82.823372,501.039062 | ||||
| 	C82.856323,501.469818 82.889275,501.900543 82.864288,503.024963 | ||||
| 	C82.915634,505.164795 83.024902,506.610931 83.134178,508.057068 | ||||
| 	C82.114014,508.490265 81.092964,509.299530 80.073845,509.297089 | ||||
| 	C72.009705,509.277893 63.945946,509.104126 55.541321,508.602112 | ||||
| 	C54.902428,508.132111 54.604279,508.037811 54.306129,507.943512 | ||||
| 	C54.104740,506.907196 53.903355,505.870911 54.018414,504.290222 | ||||
| 	C53.603893,501.801422 52.872929,499.856995 52.141964,497.912567 | ||||
| 	C52.141964,497.912567 52.000786,498.037598 52.083740,497.622467 | ||||
| 	C52.093033,486.219025 51.317581,475.179047 52.121506,464.255310 | ||||
| 	C53.150429,450.274414 56.220573,436.570068 63.658657,424.366791 | ||||
| 	C65.526611,421.302124 65.433167,419.138184 63.544727,416.253418 | ||||
| 	C54.717529,402.768921 49.744976,387.735748 48.103249,371.881927 | ||||
| 	C45.307518,344.884155 48.776821,318.757507 61.291477,294.222534 | ||||
| 	C62.084080,292.668640 61.991234,289.819855 61.066147,288.364105 | ||||
| 	C52.251549,274.493134 46.808193,259.574677 45.248268,243.132401 | ||||
| 	C42.852757,217.882736 47.534954,194.193985 61.992100,173.306381 | ||||
| 	C68.736389,163.562241 77.874924,155.485794 85.780846,146.523407 | ||||
| 	C86.925201,145.226135 88.094681,143.039856 87.813805,141.533173 | ||||
| 	C83.612144,118.994171 83.886810,96.443306 87.584114,73.926888 | ||||
| 	C89.888298,59.894482 94.077393,46.452618 101.668411,34.208534 | ||||
| 	C116.050591,11.010487 142.423965,10.012201 158.193069,32.259693 | ||||
| 	C161.068115,36.315899 163.428421,40.736950 166.008514,45.367081 | ||||
| 	C167.293350,48.199883 168.596024,50.655174 169.898697,53.110466 | ||||
| 	C170.118103,54.086079 170.337494,55.061695 170.516022,56.656281 | ||||
| 	C171.198898,58.955570 171.922623,60.635887 172.646332,62.316200 | ||||
| 	C172.715714,62.700943 172.785080,63.085686 172.705475,63.822990 | ||||
| 	C172.991394,64.832443 173.426270,65.489326 173.861160,66.146217 | ||||
| 	C174.163727,67.863571 174.466293,69.580925 174.618439,71.788315 | ||||
| 	C174.928665,73.237709 175.389328,74.197075 175.849991,75.156441 | ||||
| 	C175.902451,75.575867 175.954910,75.995293 175.846039,76.773323 | ||||
| 	C175.963669,77.879028 176.242661,78.626129 176.521637,79.373238 | ||||
| 	C176.576294,80.051865 176.630936,80.730492 176.591492,82.007233 | ||||
| 	C176.576050,83.044731 176.654709,83.484108 176.576355,84.245636 | ||||
| 	C176.527023,85.869171 176.424057,87.236214 176.803345,88.452919 | ||||
| 	C177.161438,89.601616 178.111786,91.518448 178.651947,91.468811 | ||||
| 	C179.971619,91.347542 181.204727,90.284454 182.472687,89.600502 | ||||
| 	C183.995117,88.870232 185.517532,88.139969 187.682526,87.421600 | ||||
| 	C199.862427,82.564972 211.695221,78.741302 224.268723,77.799339 | ||||
| 	C244.137772,76.310799 262.499237,81.442329 279.876282,90.738556 | ||||
| 	C284.705017,93.321793 285.663574,92.699104 286.591431,87.283226 | ||||
| 	C288.048218,78.779991 289.343262,70.212616 291.482635,61.871384 | ||||
| 	C294.604065,49.701283 299.713043,38.361351 307.894592,28.601389 | ||||
| 	C321.889679,11.906353 344.252258,12.365029 357.757874,29.431511 | ||||
| 	C365.912079,39.735626 370.523163,51.638264 373.411957,64.135040 | ||||
| 	C379.017395,88.383919 380.067780,112.966293 375.620728,137.494095 | ||||
| 	C374.579224,143.238708 376.206207,146.487579 380.126709,149.736679 | ||||
| 	C400.188812,166.362946 411.718201,187.683655 415.828918,213.379791 | ||||
| 	C420.016449,239.556335 415.923798,263.955994 402.109955,286.707825 | ||||
| 	C401.013214,288.514221 400.408813,291.716217 401.261047,293.432892 | ||||
| 	C407.217255,305.430206 411.527740,317.885925 413.647644,331.131470 | ||||
| 	C417.956573,358.055206 416.688477,384.467468 403.418610,408.774658 | ||||
| 	C398.867920,417.110443 398.507538,422.926819 402.683075,431.558014 | ||||
| 	C412.522888,451.897675 412.483154,474.064392 410.774536,496.141907 | ||||
| 	C410.521210,499.415100 409.471771,502.678253 408.392456,505.808807 | ||||
| 	C407.997925,506.953125 406.467255,508.473480 405.418396,508.502502 | ||||
| 	C397.329834,508.726166 389.232300,508.625641 380.583740,508.625641 | ||||
| 	C380.751251,505.841766 380.335083,503.517059 381.094543,501.677795 | ||||
| 	C385.174316,491.798065 385.213715,481.471588 384.451660,471.169434 | ||||
| 	C383.285370,455.402435 379.373352,440.444733 369.390198,427.662476 | ||||
| 	C369.312134,422.464111 369.234100,417.265717 369.591858,411.585693 | ||||
| 	C378.529846,401.643585 383.981934,390.485779 386.750061,378.250336 | ||||
| 	C391.087433,359.078522 390.324127,339.872467 383.795532,321.287689 | ||||
| 	C380.908813,313.070160 376.545563,305.342773 372.531128,297.558655 | ||||
| 	C369.061798,290.831512 369.099243,284.694824 373.451782,279.933136 | ||||
| 	C385.207153,267.072601 390.345306,251.555588 390.990601,234.540543 | ||||
| 	C391.698395,215.876160 386.211761,198.788010 375.462585,183.588516 | ||||
| 	C366.633759,171.104446 354.927002,162.243713 340.503571,156.683228 | ||||
| 	C329.846130,152.574600 319.002258,152.920975 308.040192,153.393570 | ||||
| 	C303.576660,153.585983 300.326080,152.697845 299.000610,147.683426 | ||||
| 	C298.257538,144.872162 296.497681,142.276016 294.936188,139.743042 | ||||
| 	C279.399597,114.540398 242.774384,96.847366 211.309784,107.230194 | ||||
| 	C190.407791,114.127548 173.315369,125.894386 163.943314,146.311646 | ||||
| 	C161.179047,152.333710 157.892578,153.781937 152.206726,153.371094 | ||||
| 	C142.886841,152.697678 133.562439,152.564117 124.542236,155.585190 | ||||
| 	C94.260124,165.727325 76.557159,191.353058 72.041077,220.073395 | ||||
| 	C70.376244,230.660965 70.916847,241.205658 73.803696,251.693512 | ||||
| 	C76.625580,261.945374 80.586334,271.384705 88.392426,278.884735 | ||||
| 	C93.718521,284.001953 94.731979,290.720947 90.756561,296.967590 | ||||
| 	C77.313744,318.090393 72.271309,341.206696 74.216591,365.965424 | ||||
| 	C74.435547,368.752228 75.809227,371.448273 76.647430,374.186401 | ||||
| 	C76.647430,374.186401 76.812462,374.215210 76.697754,374.486023 | ||||
| 	C76.660233,375.504852 76.737404,376.252869 76.596680,377.204956 | ||||
| 	C76.873169,378.311310 77.367561,379.213654 78.023911,380.252869 | ||||
| 	C78.185860,380.389740 78.531258,380.143677 78.531258,380.143677 | ||||
| 	C78.680740,381.168457 78.830223,382.193207 78.722519,383.768188 | ||||
| 	C79.531815,386.969818 80.598312,389.621246 81.737183,392.632812 | ||||
| 	C83.174011,395.357147 84.538460,397.721344 85.972809,400.431213 | ||||
| 	C87.543549,402.355896 89.044395,403.934875 90.545227,405.513885 | ||||
| 	C90.793449,406.004913 91.041679,406.495941 91.224251,407.604248 | ||||
| 	C91.807487,408.791534 92.456383,409.361572 93.105286,409.931610 | ||||
| 	C93.105278,409.931610 93.426132,410.056519 93.553352,410.530670 | ||||
| 	C96.694374,416.741272 95.423264,422.477478 93.679718,428.213684 | ||||
| 	C93.455498,428.585022 93.231262,428.956329 92.626465,429.662476 | ||||
| 	C92.016121,430.727539 91.786346,431.457703 91.556564,432.187897 | ||||
| 	C91.328140,432.561584 91.099716,432.935242 90.458389,433.668884 | ||||
| 	C89.299217,435.645966 88.552940,437.263123 87.806664,438.880249 | ||||
| 	C87.599197,439.179474 87.391747,439.478699 86.830666,440.128723 | ||||
| 	C85.880585,441.595398 85.284126,442.711304 84.389313,443.909637 | ||||
| 	C83.728355,445.328064 83.365753,446.664062 82.957626,448.363831 | ||||
| 	C83.026131,449.183258 83.140167,449.638916 83.254196,450.094543 | ||||
| 	C83.056625,450.797913 82.859047,451.501251 82.415634,452.566895 | ||||
| 	C81.983971,453.217468 81.798141,453.505768 81.344223,453.843994 | ||||
| 	C81.031883,454.595093 80.987633,455.296234 80.905113,456.385132 | ||||
| 	C80.940575,457.527832 81.014305,458.282837 81.088028,459.037811 | ||||
| M346.639221,70.840302 | ||||
| 	C344.635559,65.215714 343.129150,59.339684 340.456360,54.053432 | ||||
| 	C338.622345,50.426132 335.167023,47.618595 332.436462,44.444618 | ||||
| 	C329.659210,47.612175 326.095215,50.377460 324.235626,54.014240 | ||||
| 	C314.115509,73.805855 312.400696,95.373947 312.214203,117.085426 | ||||
| 	C312.183044,120.713676 313.497894,125.205994 318.707092,125.839920 | ||||
| 	C328.550537,127.037773 338.395508,128.223099 348.769745,129.477722 | ||||
| 	C349.020416,128.056488 349.429626,126.150459 349.685059,124.224052 | ||||
| 	C352.032440,106.522598 350.351135,89.039009 346.639221,70.840302 | ||||
| M113.492012,89.731453 | ||||
| 	C111.794785,103.116592 111.746040,116.437302 114.398529,129.551453 | ||||
| 	C123.742180,128.277740 132.434082,126.908836 141.171570,125.959351 | ||||
| 	C148.311752,125.183441 151.529449,122.364624 150.970123,115.314209 | ||||
| 	C149.971970,102.732277 149.011307,90.101509 146.990555,77.660789 | ||||
| 	C145.313797,67.337700 141.982315,57.297325 135.651627,48.651859 | ||||
| 	C131.469238,42.940208 129.319321,43.092106 125.336067,49.049961 | ||||
| 	C124.967010,49.601967 124.647690,50.188084 124.319611,50.766495 | ||||
| 	C117.620155,62.578022 114.967781,75.529541 113.492012,89.731453 | ||||
| z"/> | ||||
|   <path fill="#090808" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M238.928452,431.043823 | ||||
| 	C246.123001,441.068878 253.199844,450.746674 260.005219,460.611725 | ||||
| 	C262.276031,463.903351 264.201569,467.227722 268.928558,466.225769 | ||||
| 	C273.777802,465.197876 277.575287,462.192261 277.907013,457.368866 | ||||
| 	C278.310760,451.497650 277.648865,445.442352 276.539459,439.640381 | ||||
| 	C276.170074,437.708557 273.126404,436.123566 271.066010,434.735046 | ||||
| 	C269.588715,433.739441 267.495361,433.640015 266.054321,432.611725 | ||||
| 	C260.430786,428.599213 254.664597,426.971069 247.730911,429.236908 | ||||
| 	C246.071442,429.779144 242.053848,427.797363 241.602615,426.251862 | ||||
| 	C240.915283,423.897827 241.479568,419.811279 243.145325,418.430420 | ||||
| 	C246.317841,415.800598 250.644165,414.562683 253.747864,413.097748 | ||||
| 	C249.718521,405.269745 245.430740,397.294739 241.524673,389.136902 | ||||
| 	C240.338394,386.659271 239.862701,383.700409 239.672379,380.920197 | ||||
| 	C239.393066,376.840057 241.971878,374.465485 245.619095,373.292999 | ||||
| 	C249.422287,372.070312 251.067886,374.765198 252.511154,377.500061 | ||||
| 	C255.028595,382.270416 257.462006,387.085114 259.930634,391.881195 | ||||
| 	C260.379639,391.719727 260.828674,391.558228 261.277679,391.396729 | ||||
| 	C260.815979,388.558624 260.192261,385.735413 259.928894,382.879028 | ||||
| 	C259.487274,378.089325 258.768158,373.233368 259.189301,368.496277 | ||||
| 	C259.387695,366.264893 261.530121,363.210938 263.557739,362.364105 | ||||
| 	C266.838562,360.993866 270.365845,362.512512 271.742432,366.111877 | ||||
| 	C273.035675,369.493347 273.501343,373.185089 274.425690,376.715576 | ||||
| 	C275.421356,380.518463 276.526917,384.292572 277.584503,388.079254 | ||||
| 	C278.039124,388.078522 278.493713,388.077820 278.948334,388.077118 | ||||
| 	C280.210754,384.135010 281.377350,380.158875 282.760803,376.259735 | ||||
| 	C284.355347,371.765656 287.076477,368.349579 292.208710,367.749664 | ||||
| 	C297.229156,367.162811 299.846466,370.137695 298.522583,375.022552 | ||||
| 	C297.960480,377.096710 297.144135,379.123383 296.245911,381.081055 | ||||
| 	C293.417755,387.245361 293.097107,393.569122 294.640045,400.105255 | ||||
| 	C295.403839,403.340729 296.233734,406.608063 296.497925,409.903992 | ||||
| 	C297.029449,416.534576 295.510742,422.571716 289.716736,426.652985 | ||||
| 	C285.202240,429.833008 283.379517,434.208038 283.354462,439.513092 | ||||
| 	C283.334015,443.843964 283.936432,448.255554 283.297943,452.485748 | ||||
| 	C282.522644,457.622284 281.355743,462.882965 279.253845,467.597565 | ||||
| 	C275.001465,477.135834 274.422760,486.463593 278.468567,496.108521 | ||||
| 	C288.966675,521.135132 294.863953,547.117310 293.868591,574.365051 | ||||
| 	C293.627930,580.953857 292.712677,587.697815 290.808685,593.976562 | ||||
| 	C289.721069,597.563171 286.582703,601.245544 283.359100,603.309326 | ||||
| 	C277.620483,606.983093 272.782379,605.640869 268.574249,600.215942 | ||||
| 	C264.495270,594.957397 260.987000,589.249207 256.815735,584.070618 | ||||
| 	C246.313293,571.031738 234.627289,568.811646 220.322083,577.478271 | ||||
| 	C214.232239,581.167786 208.854935,586.019409 203.054657,590.205444 | ||||
| 	C198.751190,593.311340 194.566330,596.775818 189.833038,599.048218 | ||||
| 	C181.884720,602.863953 176.310593,599.173157 175.985687,590.394775 | ||||
| 	C175.795319,585.251099 175.950989,580.094604 175.950989,575.393616 | ||||
| 	C173.765152,575.224609 171.258484,575.465759 169.046417,574.770142 | ||||
| 	C164.322479,573.284607 162.840958,569.164673 165.373871,564.924194 | ||||
| 	C166.729553,562.654541 168.437653,560.555786 170.212524,558.583130 | ||||
| 	C176.378571,551.729858 177.421707,543.897827 175.080978,535.272461 | ||||
| 	C174.081863,531.590942 172.594635,527.821350 172.680847,524.123291 | ||||
| 	C172.781799,519.793396 172.988541,514.322327 175.516769,511.381409 | ||||
| 	C190.144241,494.365631 194.115402,474.202911 194.444962,452.766907 | ||||
| 	C194.728973,434.294952 194.880341,415.820526 194.981903,397.346619 | ||||
| 	C194.996338,394.719116 194.397675,392.088226 193.951843,388.365540 | ||||
| 	C211.716629,400.304688 225.614304,415.102051 238.928452,431.043823 | ||||
| M228.385803,451.264862 | ||||
| 	C227.576050,451.480164 226.766312,451.695465 225.209366,451.841797 | ||||
| 	C222.756439,452.743103 220.303528,453.644409 217.170731,454.740448 | ||||
| 	C214.683762,456.731873 212.196808,458.723328 209.074677,461.086914 | ||||
| 	C206.395721,465.039581 204.903061,469.203491 206.694351,474.645966 | ||||
| 	C207.032074,475.455811 207.369797,476.265686 207.787186,477.773773 | ||||
| 	C209.189240,479.510315 210.591293,481.246826 212.329575,483.592102 | ||||
| 	C215.219910,484.719025 218.110245,485.845917 221.635101,487.394684 | ||||
| 	C233.391190,488.519379 243.870499,481.443024 246.378113,470.686554 | ||||
| 	C248.007095,463.699005 245.677322,457.613983 239.541641,453.452820 | ||||
| 	C237.706635,452.909149 235.871628,452.365509 233.414749,451.425751 | ||||
| 	C231.940811,451.435333 230.466873,451.444916 228.385803,451.264862 | ||||
| M284.566986,538.144775 | ||||
| 	C278.475800,509.657806 267.102570,483.400177 251.528656,458.795929 | ||||
| 	C253.722275,472.870728 249.048874,483.612915 236.402206,489.670532 | ||||
| 	C223.666412,495.770905 212.155731,493.309204 202.572876,480.632416 | ||||
| 	C200.825073,483.607727 198.779495,485.716156 198.288864,488.139435 | ||||
| 	C193.799515,510.313446 189.164429,532.473022 185.458435,554.784119 | ||||
| 	C183.615967,565.876221 183.302872,577.265198 182.940918,588.540527 | ||||
| 	C182.783112,593.456177 185.634399,594.863464 189.859650,592.215210 | ||||
| 	C194.192657,589.499329 197.933914,585.853333 202.021713,582.728943 | ||||
| 	C207.955765,578.193481 213.564606,573.035156 220.032074,569.436279 | ||||
| 	C233.242828,562.085083 246.359818,564.229187 256.986389,574.989197 | ||||
| 	C261.165375,579.220703 264.537445,584.255859 268.212250,588.975464 | ||||
| 	C269.948364,591.205139 271.362610,593.702515 273.221008,595.816284 | ||||
| 	C276.735901,599.814148 282.047241,598.916016 283.939178,593.945984 | ||||
| 	C284.933655,591.333618 285.557251,588.500061 285.850372,585.713928 | ||||
| 	C287.493530,570.096130 287.983032,554.486694 284.566986,538.144775 | ||||
| M177.712799,523.615601 | ||||
| 	C178.496674,527.143372 179.280563,530.671082 180.064453,534.198853 | ||||
| 	C180.681747,534.152527 181.299042,534.106262 181.916336,534.059998 | ||||
| 	C183.261337,526.415588 184.606323,518.771179 185.951324,511.126770 | ||||
| 	C185.390701,510.972260 184.830093,510.817749 184.269485,510.663269 | ||||
| 	C180.384155,513.683533 178.762192,518.027527 177.712799,523.615601 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M369.258026,428.042847 | ||||
| 	C379.373352,440.444733 383.285370,455.402435 384.451660,471.169434 | ||||
| 	C385.213715,481.471588 385.174316,491.798065 381.094543,501.677795 | ||||
| 	C380.335083,503.517059 380.751251,505.841766 380.583740,508.625641 | ||||
| 	C389.232300,508.625641 397.329834,508.726166 405.418396,508.502502 | ||||
| 	C406.467255,508.473480 407.997925,506.953125 408.392456,505.808807 | ||||
| 	C409.471771,502.678253 410.521210,499.415100 410.774536,496.141907 | ||||
| 	C412.483154,474.064392 412.522888,451.897675 402.683075,431.558014 | ||||
| 	C398.507538,422.926819 398.867920,417.110443 403.418610,408.774658 | ||||
| 	C416.688477,384.467468 417.956573,358.055206 413.647644,331.131470 | ||||
| 	C411.527740,317.885925 407.217255,305.430206 401.261047,293.432892 | ||||
| 	C400.408813,291.716217 401.013214,288.514221 402.109955,286.707825 | ||||
| 	C415.923798,263.955994 420.016449,239.556335 415.828918,213.379791 | ||||
| 	C411.718201,187.683655 400.188812,166.362946 380.126709,149.736679 | ||||
| 	C376.206207,146.487579 374.579224,143.238708 375.620728,137.494095 | ||||
| 	C380.067780,112.966293 379.017395,88.383919 373.411957,64.135040 | ||||
| 	C370.523163,51.638264 365.912079,39.735626 357.757874,29.431511 | ||||
| 	C344.252258,12.365029 321.889679,11.906353 307.894592,28.601389 | ||||
| 	C299.713043,38.361351 294.604065,49.701283 291.482635,61.871384 | ||||
| 	C289.343262,70.212616 288.048218,78.779991 286.591431,87.283226 | ||||
| 	C285.663574,92.699104 284.705017,93.321793 279.876282,90.738556 | ||||
| 	C262.499237,81.442329 244.137772,76.310799 224.268723,77.799339 | ||||
| 	C211.695221,78.741302 199.862427,82.564972 188.004135,87.251266 | ||||
| 	C191.609116,85.096024 195.445267,82.913185 199.477219,81.187950 | ||||
| 	C213.532364,75.173859 228.426987,75.139786 243.179901,76.411026 | ||||
| 	C255.631439,77.483955 267.387054,81.855431 278.519012,87.658875 | ||||
| 	C280.086487,88.476044 281.728912,89.149498 282.786560,89.636307 | ||||
| 	C285.972961,77.125694 288.495239,64.790840 292.319153,52.873642 | ||||
| 	C296.367950,40.255608 302.718689,28.637171 313.728760,20.546566 | ||||
| 	C328.695618,9.548378 347.885315,13.042048 359.447601,28.447065 | ||||
| 	C369.322693,41.604122 374.864380,56.468525 376.884613,72.689156 | ||||
| 	C378.195129,83.211807 380.166199,93.761627 380.200470,104.304604 | ||||
| 	C380.238586,116.036354 378.297546,127.766296 377.507690,139.516495 | ||||
| 	C377.363831,141.657150 377.973846,144.445969 379.320160,145.990402 | ||||
| 	C386.950592,154.743759 395.960114,162.482651 402.514008,171.942856 | ||||
| 	C412.465454,186.307236 417.038361,202.982010 418.800720,220.438522 | ||||
| 	C419.981537,232.134415 419.414673,243.590927 417.023132,255.099640 | ||||
| 	C414.585663,266.829285 409.853485,277.530884 403.717407,287.668213 | ||||
| 	C402.337830,289.947479 402.309479,291.397034 403.543945,293.858185 | ||||
| 	C410.664154,308.053436 414.929382,323.067810 416.897278,338.910950 | ||||
| 	C419.173767,357.238953 417.975433,375.193695 412.367218,392.649017 | ||||
| 	C409.605743,401.243958 404.909973,409.205811 401.362976,417.570099 | ||||
| 	C400.674408,419.193756 400.580872,421.689758 401.345032,423.216827 | ||||
| 	C413.699829,447.906311 416.261047,473.884644 411.878296,500.807190 | ||||
| 	C411.484070,503.228821 410.891266,505.778839 409.670166,507.842957 | ||||
| 	C408.971466,509.024048 406.834259,509.911011 405.315948,509.955780 | ||||
| 	C397.988953,510.171967 390.650452,509.962463 383.319550,510.096436 | ||||
| 	C379.174957,510.172180 377.993927,508.119110 378.621002,504.440308 | ||||
| 	C379.894287,496.970642 382.034668,489.531799 382.264130,482.032715 | ||||
| 	C382.514496,473.851654 381.159149,465.599304 380.224609,457.409882 | ||||
| 	C379.126221,447.784576 374.792511,439.392426 369.712799,431.320862 | ||||
| 	C369.221893,430.540802 369.307739,429.397766 369.258026,428.042847 | ||||
| z"/> | ||||
|   <path fill="#626262" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M76.810547,373.735718 | ||||
| 	C75.809227,371.448273 74.435547,368.752228 74.216591,365.965424 | ||||
| 	C72.271309,341.206696 77.313744,318.090393 90.756561,296.967590 | ||||
| 	C94.731979,290.720947 93.718521,284.001953 88.392426,278.884735 | ||||
| 	C80.586334,271.384705 76.625580,261.945374 73.803696,251.693512 | ||||
| 	C70.916847,241.205658 70.376244,230.660965 72.041077,220.073395 | ||||
| 	C76.557159,191.353058 94.260124,165.727325 124.542236,155.585190 | ||||
| 	C133.562439,152.564117 142.886841,152.697678 152.206726,153.371094 | ||||
| 	C157.892578,153.781937 161.179047,152.333710 163.943314,146.311646 | ||||
| 	C173.315369,125.894386 190.407791,114.127548 211.309784,107.230194 | ||||
| 	C242.774384,96.847366 279.399597,114.540398 294.936188,139.743042 | ||||
| 	C296.497681,142.276016 298.257538,144.872162 299.000610,147.683426 | ||||
| 	C300.326080,152.697845 303.576660,153.585983 308.040192,153.393570 | ||||
| 	C319.002258,152.920975 329.846130,152.574600 340.503571,156.683228 | ||||
| 	C354.927002,162.243713 366.633759,171.104446 375.462585,183.588516 | ||||
| 	C386.211761,198.788010 391.698395,215.876160 390.990601,234.540543 | ||||
| 	C390.345306,251.555588 385.207153,267.072601 373.451782,279.933136 | ||||
| 	C369.099243,284.694824 369.061798,290.831512 372.531128,297.558655 | ||||
| 	C376.545563,305.342773 380.908813,313.070160 383.795532,321.287689 | ||||
| 	C390.324127,339.872467 391.087433,359.078522 386.750061,378.250336 | ||||
| 	C383.981934,390.485779 378.529846,401.643585 369.696777,411.140228 | ||||
| 	C370.128693,409.415680 370.582031,407.422852 371.701721,405.929657 | ||||
| 	C384.423615,388.963318 388.203552,369.616760 387.060211,348.944763 | ||||
| 	C386.038513,330.472168 380.456207,313.515564 370.589783,297.820068 | ||||
| 	C365.754486,290.128052 366.868317,285.151154 372.873718,277.966705 | ||||
| 	C387.681763,260.251465 391.342957,239.542877 387.604309,217.457413 | ||||
| 	C384.232941,197.541626 374.417389,180.959961 358.222992,168.651062 | ||||
| 	C344.629944,158.319366 329.400574,153.138351 312.043640,155.662018 | ||||
| 	C302.852386,156.998413 300.826782,155.654663 296.642670,147.071106 | ||||
| 	C287.870972,129.076309 273.242065,117.930511 254.951309,110.592094 | ||||
| 	C220.521179,96.778435 176.456848,117.775826 164.161224,150.445236 | ||||
| 	C162.395172,155.137680 158.244003,156.243958 153.494400,156.050644 | ||||
| 	C147.056351,155.788574 140.515533,155.092270 134.178162,155.874054 | ||||
| 	C115.670410,158.157211 101.315453,167.954514 90.090782,182.428818 | ||||
| 	C78.028862,197.982742 71.973801,215.896286 73.139450,235.444382 | ||||
| 	C74.109749,251.716476 78.423065,267.209961 91.198715,279.005066 | ||||
| 	C96.475342,283.876709 97.025253,290.938904 92.617485,297.769623 | ||||
| 	C82.253365,313.830963 76.741119,331.405548 75.940254,350.371460 | ||||
| 	C75.618927,357.981232 76.590546,365.645538 76.810547,373.735718 | ||||
| z"/> | ||||
|   <path fill="#ACACAC" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M166.026367,44.989571 | ||||
| 	C163.428421,40.736950 161.068115,36.315899 158.193069,32.259693 | ||||
| 	C142.423965,10.012201 116.050591,11.010487 101.668411,34.208534 | ||||
| 	C94.077393,46.452618 89.888298,59.894482 87.584114,73.926888 | ||||
| 	C83.886810,96.443306 83.612144,118.994171 87.813805,141.533173 | ||||
| 	C88.094681,143.039856 86.925201,145.226135 85.780846,146.523407 | ||||
| 	C77.874924,155.485794 68.736389,163.562241 61.992100,173.306381 | ||||
| 	C47.534954,194.193985 42.852757,217.882736 45.248268,243.132401 | ||||
| 	C46.808193,259.574677 52.251549,274.493134 61.066147,288.364105 | ||||
| 	C61.991234,289.819855 62.084080,292.668640 61.291477,294.222534 | ||||
| 	C48.776821,318.757507 45.307518,344.884155 48.103249,371.881927 | ||||
| 	C49.744976,387.735748 54.717529,402.768921 63.544727,416.253418 | ||||
| 	C65.433167,419.138184 65.526611,421.302124 63.658657,424.366791 | ||||
| 	C56.220573,436.570068 53.150429,450.274414 52.121506,464.255310 | ||||
| 	C51.317581,475.179047 52.093033,486.219025 51.995979,497.656921 | ||||
| 	C50.940212,494.737854 49.472752,491.403992 49.268887,487.994568 | ||||
| 	C48.280193,471.459442 49.929848,455.145660 54.976612,439.326263 | ||||
| 	C56.721302,433.857391 59.528576,428.735168 61.518700,423.332397 | ||||
| 	C62.137901,421.651398 62.395935,419.146942 61.580219,417.735687 | ||||
| 	C54.294636,405.131378 49.218697,391.772522 46.780624,377.406982 | ||||
| 	C41.936687,348.865662 46.295830,321.623016 58.494541,295.553497 | ||||
| 	C59.926754,292.492737 59.942730,290.367645 58.092773,287.427032 | ||||
| 	C43.917156,264.894196 40.320992,240.234619 44.085915,214.243805 | ||||
| 	C47.458839,190.959152 57.430939,171.058670 74.692162,154.881668 | ||||
| 	C78.674400,151.149567 83.920807,147.562973 85.540413,142.860626 | ||||
| 	C87.079094,138.393234 84.783783,132.527115 83.908562,127.320709 | ||||
| 	C80.890259,109.365974 82.927361,91.674881 85.745552,73.876877 | ||||
| 	C87.607124,62.120296 90.741524,50.940479 95.971077,40.326843 | ||||
| 	C102.129440,27.828142 110.770477,17.990557 124.898354,14.326028 | ||||
| 	C134.072617,11.946379 141.991806,15.436010 149.180649,20.384657 | ||||
| 	C157.690826,26.242882 163.580078,34.403221 166.857208,44.575039 | ||||
| 	C166.410172,44.977642 166.218277,44.983604 166.026367,44.989571 | ||||
| z"/> | ||||
|   <path fill="#0D0D0D" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M154.512405,247.787018 | ||||
| 	C152.173431,251.978165 150.507172,256.307129 147.597290,259.504211 | ||||
| 	C141.256744,266.470551 132.876831,267.177795 124.995628,262.246887 | ||||
| 	C117.906853,257.811768 115.191765,249.290085 118.151245,240.764862 | ||||
| 	C122.780060,227.430878 135.823425,221.737289 146.511917,228.594666 | ||||
| 	C153.315323,232.959564 156.249237,239.272903 154.512405,247.787018 | ||||
| z"/> | ||||
|   <path fill="#0D0D0D" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M342.733887,236.152222 | ||||
| 	C350.027557,250.146881 344.775848,262.137024 330.407257,264.945709 | ||||
| 	C322.273987,266.535522 312.956024,260.393127 309.653748,251.264969 | ||||
| 	C306.012299,241.199265 309.340973,232.027466 318.256866,227.559906 | ||||
| 	C326.795410,223.281433 336.956207,226.722107 342.733887,236.152222 | ||||
| z"/> | ||||
|   <path fill="#939393" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M233.997955,342.850952 | ||||
| 	C224.701584,342.485168 215.776138,342.946228 207.131546,341.601624 | ||||
| 	C179.166718,337.251831 153.411209,316.492493 153.691620,284.912689 | ||||
| 	C153.864807,265.409180 163.531158,250.102356 178.870041,238.376236 | ||||
| 	C199.244995,222.800171 222.618088,218.437363 247.238831,222.487762 | ||||
| 	C269.423523,226.137390 288.073700,236.606140 300.605438,256.338226 | ||||
| 	C316.081909,280.706909 310.519226,311.240326 287.171722,328.559448 | ||||
| 	C271.469879,340.207092 253.566727,343.657532 233.997955,342.850952 | ||||
| M217.649796,340.900574 | ||||
| 	C224.975922,340.903290 232.309677,340.693848 239.626434,340.957001 | ||||
| 	C251.496933,341.383942 262.651642,338.810181 273.593201,334.334290 | ||||
| 	C307.750580,320.361511 318.189636,278.916809 294.385864,250.807678 | ||||
| 	C281.701477,235.829117 265.409271,227.414459 246.041260,224.447693 | ||||
| 	C217.175339,220.026001 191.864212,226.942841 171.237839,248.000687 | ||||
| 	C153.900864,265.700348 149.830078,293.490631 164.846436,314.248718 | ||||
| 	C177.571472,331.839386 195.669067,339.293976 217.649796,340.900574 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M78.902763,488.018127 | ||||
| 	C78.844734,482.461151 78.786705,476.904144 78.993301,470.829102 | ||||
| 	C79.571526,470.209229 79.885117,470.107391 80.198715,470.005554 | ||||
| 	C80.387451,475.791077 80.576195,481.576630 80.166168,487.682251 | ||||
| 	C79.345848,488.007599 79.124306,488.012848 78.902763,488.018127 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M94.023712,428.215240 | ||||
| 	C95.423264,422.477478 96.694374,416.741272 93.716537,410.585480 | ||||
| 	C95.105270,412.464417 97.648399,414.818268 97.544228,417.048492 | ||||
| 	C97.368416,420.812531 95.515411,424.498169 94.023712,428.215240 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M182.056595,89.436874 | ||||
| 	C181.204727,90.284454 179.971619,91.347542 178.651947,91.468811 | ||||
| 	C178.111786,91.518448 177.161438,89.601616 176.803345,88.452919 | ||||
| 	C176.424057,87.236214 176.527023,85.869171 176.901520,84.266769 | ||||
| 	C177.600555,83.978340 177.817383,83.990929 178.034225,84.003517 | ||||
| 	C178.157227,84.928993 178.280228,85.854477 178.301117,87.440895 | ||||
| 	C178.782089,88.668991 179.365173,89.236145 179.948257,89.803299 | ||||
| 	C180.512344,89.626617 181.076416,89.449928 182.056595,89.436874 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M83.599571,450.050201 | ||||
| 	C83.140167,449.638916 83.026131,449.183258 83.255493,448.196777 | ||||
| 	C83.961807,446.386353 84.324730,445.106750 84.687653,443.827179 | ||||
| 	C85.284126,442.711304 85.880585,441.595398 86.787231,440.403107 | ||||
| 	C86.046600,443.553101 84.995773,446.779480 83.599571,450.050201 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M80.190887,469.700470 | ||||
| 	C79.885117,470.107391 79.571526,470.209229 79.019836,470.400818 | ||||
| 	C79.179718,467.014221 79.577690,463.537842 80.329567,459.970062 | ||||
| 	C80.785034,460.652924 80.886604,461.427216 80.740387,462.898987 | ||||
| 	C80.463165,465.129944 80.433723,466.663361 80.404282,468.196777 | ||||
| 	C80.330544,468.596313 80.256805,468.995850 80.190887,469.700470 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M90.676323,405.153809 | ||||
| 	C89.044395,403.934875 87.543549,402.355896 86.039352,400.094543 | ||||
| 	C86.006905,398.957367 85.977814,398.502594 85.948715,398.047821 | ||||
| 	C87.568283,400.296448 89.187851,402.545105 90.676323,405.153809 | ||||
| z"/> | ||||
|   <path fill="#626262" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M81.664810,392.272705 | ||||
| 	C80.598312,389.621246 79.531815,386.969818 78.762703,384.155487 | ||||
| 	C79.931435,385.791290 80.802788,387.589966 81.833023,389.974182 | ||||
| 	C82.073318,390.979858 82.154747,391.399994 82.093407,391.933350 | ||||
| 	C81.950645,392.046600 81.664810,392.272705 81.664810,392.272705 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M78.638916,488.255005 | ||||
| 	C79.124306,488.012848 79.345848,488.007599 79.899841,487.997772 | ||||
| 	C80.261703,488.394104 80.291107,488.794952 80.237816,489.803101 | ||||
| 	C80.406540,491.275299 80.657959,492.140228 80.909378,493.005157 | ||||
| 	C80.956337,493.802582 81.003296,494.600006 80.898026,495.766876 | ||||
| 	C79.955544,493.588196 79.165306,491.040039 78.638916,488.255005 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M166.008514,45.367081 | ||||
| 	C166.218277,44.983604 166.410172,44.977642 166.890594,44.956467 | ||||
| 	C168.181473,47.429050 169.183838,49.916843 170.042450,52.757553 | ||||
| 	C168.596024,50.655174 167.293350,48.199883 166.008514,45.367081 | ||||
| z"/> | ||||
|   <path fill="#626262" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M85.748627,397.799500 | ||||
| 	C85.977814,398.502594 86.006905,398.957367 85.969452,399.748840 | ||||
| 	C84.538460,397.721344 83.174011,395.357147 81.737183,392.632812 | ||||
| 	C81.664810,392.272705 81.950645,392.046600 82.271973,392.159119 | ||||
| 	C83.036377,392.868225 83.479454,393.464813 83.922531,394.061371 | ||||
| 	C84.464523,395.224640 85.006523,396.387878 85.748627,397.799500 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M81.440445,459.004578 | ||||
| 	C81.014305,458.282837 80.940575,457.527832 81.176331,456.203644 | ||||
| 	C81.527969,455.020966 81.570137,454.407532 81.612305,453.794067 | ||||
| 	C81.798141,453.505768 81.983971,453.217468 82.427841,452.934265 | ||||
| 	C82.388206,454.950012 82.090530,456.960693 81.440445,459.004578 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M76.814575,377.000916 | ||||
| 	C76.737404,376.252869 76.660233,375.504852 76.742111,374.414948 | ||||
| 	C77.671303,376.005676 78.441444,377.938232 78.871429,380.007263 | ||||
| 	C78.531258,380.143677 78.185860,380.389740 78.109619,379.901398 | ||||
| 	C77.627113,378.609009 77.220848,377.804962 76.814575,377.000916 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M51.964458,498.251465 | ||||
| 	C52.872929,499.856995 53.603893,501.801422 54.018623,503.894012 | ||||
| 	C53.063911,502.224915 52.425430,500.407654 51.964458,498.251465 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M88.153641,438.931641 | ||||
| 	C88.552940,437.263123 89.299217,435.645966 90.387085,433.992004 | ||||
| 	C89.986000,435.631134 89.243309,437.307098 88.153641,438.931641 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M83.484619,508.026184 | ||||
| 	C83.024902,506.610931 82.915634,505.164795 82.997704,503.322601 | ||||
| 	C83.404381,504.616119 83.619720,506.305725 83.484619,508.026184 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M80.826706,498.012756 | ||||
| 	C80.795845,497.543762 80.764984,497.074768 80.888893,496.288757 | ||||
| 	C81.843697,497.565094 82.643730,499.158417 83.133575,500.895416 | ||||
| 	C82.547729,500.895142 82.272087,500.751251 81.943939,500.067261 | ||||
| 	C81.536530,499.022369 81.181618,498.517578 80.826706,498.012756 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M80.705849,468.061462 | ||||
| 	C80.433723,466.663361 80.463165,465.129944 80.732941,463.297791 | ||||
| 	C80.984657,464.641418 80.996033,466.283783 80.705849,468.061462 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M172.828522,61.988998 | ||||
| 	C171.922623,60.635887 171.198898,58.955570 170.697952,56.983826 | ||||
| 	C171.617386,58.348862 172.314041,60.005325 172.828522,61.988998 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M176.057495,74.823326 | ||||
| 	C175.389328,74.197075 174.928665,73.237709 174.742981,72.139694 | ||||
| 	C175.433609,72.830765 175.849304,73.660492 176.057495,74.823326 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M83.975296,393.691895 | ||||
| 	C83.479454,393.464813 83.036377,392.868225 82.414734,392.045898 | ||||
| 	C82.154747,391.399994 82.073318,390.979858 82.044464,390.242615 | ||||
| 	C82.740715,391.057831 83.384384,392.190155 83.975296,393.691895 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M81.140617,492.827698 | ||||
| 	C80.657959,492.140228 80.406540,491.275299 80.322083,490.093323 | ||||
| 	C80.783318,490.734253 81.077583,491.692230 81.140617,492.827698 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M91.856613,432.230499 | ||||
| 	C91.786346,431.457703 92.016121,430.727539 92.570007,429.986481 | ||||
| 	C92.648293,430.741455 92.402473,431.507263 91.856613,432.230499 | ||||
| z"/> | ||||
|   <path fill="#ACACAC" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M179.849487,89.453674 | ||||
| 	C179.365173,89.236145 178.782089,88.668991 178.278656,87.791084 | ||||
| 	C178.822433,88.021568 179.286575,88.562805 179.849487,89.453674 | ||||
| z"/> | ||||
|   <path fill="#B6B6B6" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M54.013954,507.989655 | ||||
| 	C54.604279,508.037811 54.902428,508.132111 55.126961,508.485535 | ||||
| 	C54.739330,509.015259 54.425308,509.285828 54.111282,509.556396 | ||||
| 	C53.981441,509.049500 53.851608,508.542664 54.013954,507.989655 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M176.741150,79.085464 | ||||
| 	C176.242661,78.626129 175.963669,77.879028 175.946442,77.074722 | ||||
| 	C176.459030,77.610916 176.709839,78.204300 176.741150,79.085464 | ||||
| z"/> | ||||
|   <path fill="#ACACAC" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M178.214874,83.804100 | ||||
| 	C177.817383,83.990929 177.600555,83.978340 177.058533,83.944611 | ||||
| 	C176.654709,83.484108 176.576050,83.044731 176.698349,82.331131 | ||||
| 	C177.398056,82.572838 177.896805,83.088760 178.214874,83.804100 | ||||
| z"/> | ||||
|   <path fill="#9C9C9C" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M174.044556,65.836197 | ||||
| 	C173.426270,65.489326 172.991394,64.832443 172.826675,64.090973 | ||||
| 	C173.473877,64.512985 173.850906,65.019577 174.044556,65.836197 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M93.201096,409.597534 | ||||
| 	C92.456383,409.361572 91.807487,408.791534 91.295967,407.870728 | ||||
| 	C92.054527,408.101135 92.675713,408.682281 93.201096,409.597534 | ||||
| z"/> | ||||
|   <path fill="#F4F4F4" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M346.713715,71.250641 | ||||
| 	C350.351135,89.039009 352.032440,106.522598 349.685059,124.224052 | ||||
| 	C349.429626,126.150459 349.020416,128.056488 348.769745,129.477722 | ||||
| 	C338.395508,128.223099 328.550537,127.037773 318.707092,125.839920 | ||||
| 	C313.497894,125.205994 312.183044,120.713676 312.214203,117.085426 | ||||
| 	C312.400696,95.373947 314.115509,73.805855 324.235626,54.014240 | ||||
| 	C326.095215,50.377460 329.659210,47.612175 332.436462,44.444618 | ||||
| 	C335.167023,47.618595 338.622345,50.426132 340.456360,54.053432 | ||||
| 	C343.129150,59.339684 344.635559,65.215714 346.713715,71.250641 | ||||
| z"/> | ||||
|   <path fill="#F5F5F5" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M113.545265,89.286819 | ||||
| 	C114.967781,75.529541 117.620155,62.578022 124.319611,50.766495 | ||||
| 	C124.647690,50.188084 124.967010,49.601967 125.336067,49.049961 | ||||
| 	C129.319321,43.092106 131.469238,42.940208 135.651627,48.651859 | ||||
| 	C141.982315,57.297325 145.313797,67.337700 146.990555,77.660789 | ||||
| 	C149.011307,90.101509 149.971970,102.732277 150.970123,115.314209 | ||||
| 	C151.529449,122.364624 148.311752,125.183441 141.171570,125.959351 | ||||
| 	C132.434082,126.908836 123.742180,128.277740 114.398529,129.551453 | ||||
| 	C111.746040,116.437302 111.794785,103.116592 113.545265,89.286819 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M84.389297,443.909637 | ||||
| 	C84.324730,445.106750 83.961807,446.386353 83.301018,447.832977 | ||||
| 	C83.365753,446.664062 83.728355,445.328064 84.389297,443.909637 | ||||
| z"/> | ||||
|   <path fill="#626262" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M76.596680,377.204956 | ||||
| 	C77.220848,377.804962 77.627113,378.609009 77.947670,379.764526 | ||||
| 	C77.367561,379.213654 76.873169,378.311310 76.596680,377.204956 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M80.614609,498.175201 | ||||
| 	C81.181618,498.517578 81.536530,499.022369 81.812332,499.843292 | ||||
| 	C81.289658,499.552124 80.846085,498.944885 80.614609,498.175201 | ||||
| z"/> | ||||
|   <path fill="#505050" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M81.344223,453.843994 | ||||
| 	C81.570137,454.407532 81.527969,455.020966 81.214584,455.815918 | ||||
| 	C80.987633,455.296234 81.031883,454.595093 81.344223,453.843994 | ||||
| z"/> | ||||
|   <path fill="#FDFDFD" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M284.667389,538.559143 | ||||
| 	C287.983032,554.486694 287.493530,570.096130 285.850372,585.713928 | ||||
| 	C285.557251,588.500061 284.933655,591.333618 283.939178,593.945984 | ||||
| 	C282.047241,598.916016 276.735901,599.814148 273.221008,595.816284 | ||||
| 	C271.362610,593.702515 269.948364,591.205139 268.212250,588.975464 | ||||
| 	C264.537445,584.255859 261.165375,579.220703 256.986389,574.989197 | ||||
| 	C246.359818,564.229187 233.242828,562.085083 220.032074,569.436279 | ||||
| 	C213.564606,573.035156 207.955765,578.193481 202.021713,582.728943 | ||||
| 	C197.933914,585.853333 194.192657,589.499329 189.859650,592.215210 | ||||
| 	C185.634399,594.863464 182.783112,593.456177 182.940918,588.540527 | ||||
| 	C183.302872,577.265198 183.615967,565.876221 185.458435,554.784119 | ||||
| 	C189.164429,532.473022 193.799515,510.313446 198.288864,488.139435 | ||||
| 	C198.779495,485.716156 200.825073,483.607727 202.572876,480.632416 | ||||
| 	C212.155731,493.309204 223.666412,495.770905 236.402206,489.670532 | ||||
| 	C249.048874,483.612915 253.722275,472.870728 251.528656,458.795929 | ||||
| 	C267.102570,483.400177 278.475800,509.657806 284.667389,538.559143 | ||||
| z"/> | ||||
|   <path fill="#F16A65" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M217.850616,454.545746 | ||||
| 	C220.303528,453.644409 222.756439,452.743103 225.625885,452.242401 | ||||
| 	C230.153702,457.789215 231.345139,463.211853 227.357086,468.967224 | ||||
| 	C223.059250,475.169708 217.140869,476.274628 210.240158,474.236084 | ||||
| 	C209.155441,473.915619 207.937622,474.045776 206.781342,473.967560 | ||||
| 	C204.903061,469.203491 206.395721,465.039581 209.469391,461.291656 | ||||
| 	C210.149719,462.418610 210.271347,463.437653 210.748856,464.246582 | ||||
| 	C213.005554,468.069458 216.324860,469.191132 219.188370,467.207428 | ||||
| 	C222.364349,465.007294 222.758316,461.198639 220.171570,457.683838 | ||||
| 	C219.400406,456.635986 218.624405,455.591675 217.850616,454.545746 | ||||
| z"/> | ||||
|   <path fill="#E21F26" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M239.990173,454.002136 | ||||
| 	C245.677322,457.613983 248.007095,463.699005 246.378113,470.686554 | ||||
| 	C243.870499,481.443024 233.391190,488.519379 221.516464,486.914001 | ||||
| 	C223.222702,485.306030 225.020966,484.132812 226.877121,483.059692 | ||||
| 	C233.948486,478.971313 239.137390,473.498993 239.816376,464.923248 | ||||
| 	C240.103165,461.300995 239.945709,457.643585 239.990173,454.002136 | ||||
| z"/> | ||||
|   <path fill="#EB2A30" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M239.765900,453.727478 | ||||
| 	C239.945709,457.643585 240.103165,461.300995 239.816376,464.923248 | ||||
| 	C239.137390,473.498993 233.948486,478.971313 226.877121,483.059692 | ||||
| 	C225.020966,484.132812 223.222702,485.306030 221.199219,486.703064 | ||||
| 	C218.110245,485.845917 215.219910,484.719025 212.330795,482.976013 | ||||
| 	C213.176376,481.952057 214.043335,481.150146 214.861618,481.197113 | ||||
| 	C223.512863,481.693146 231.724442,477.024109 233.686325,468.804993 | ||||
| 	C234.971054,463.422729 233.998291,457.501617 234.036621,451.821838 | ||||
| 	C235.871628,452.365509 237.706635,452.909149 239.765900,453.727478 | ||||
| z"/> | ||||
|   <path fill="#E9383B" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M233.725693,451.623779 | ||||
| 	C233.998291,457.501617 234.971054,463.422729 233.686325,468.804993 | ||||
| 	C231.724442,477.024109 223.512863,481.693146 214.861618,481.197113 | ||||
| 	C214.043335,481.150146 213.176376,481.952057 212.162689,482.671631 | ||||
| 	C210.591293,481.246826 209.189240,479.510315 208.159653,477.437561 | ||||
| 	C219.158279,480.797668 228.066940,476.250122 231.498383,467.134491 | ||||
| 	C233.722183,461.226990 231.914169,456.343781 228.992935,451.454498 | ||||
| 	C230.466873,451.444916 231.940811,451.435333 233.725693,451.623779 | ||||
| z"/> | ||||
|   <path fill="#EA4848" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M228.689362,451.359680 | ||||
| 	C231.914169,456.343781 233.722183,461.226990 231.498383,467.134491 | ||||
| 	C228.066940,476.250122 219.158279,480.797668 208.119812,477.088440 | ||||
| 	C207.369797,476.265686 207.032074,475.455811 206.737854,474.306763 | ||||
| 	C207.937622,474.045776 209.155441,473.915619 210.240158,474.236084 | ||||
| 	C217.140869,476.274628 223.059250,475.169708 227.357086,468.967224 | ||||
| 	C231.345139,463.211853 230.153702,457.789215 225.999481,452.276886 | ||||
| 	C226.766312,451.695465 227.576050,451.480164 228.689362,451.359680 | ||||
| z"/> | ||||
|   <path fill="#E7E7E7" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M177.753693,523.184937 | ||||
| 	C178.762192,518.027527 180.384155,513.683533 184.269485,510.663269 | ||||
| 	C184.830093,510.817749 185.390701,510.972260 185.951324,511.126770 | ||||
| 	C184.606323,518.771179 183.261337,526.415588 181.916336,534.059998 | ||||
| 	C181.299042,534.106262 180.681747,534.152527 180.064453,534.198853 | ||||
| 	C179.280563,530.671082 178.496674,527.143372 177.753693,523.184937 | ||||
| z"/> | ||||
|   <path fill="#F9B5A4" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M217.510681,454.643097 | ||||
| 	C218.624405,455.591675 219.400406,456.635986 220.171570,457.683838 | ||||
| 	C222.758316,461.198639 222.364349,465.007294 219.188370,467.207428 | ||||
| 	C216.324860,469.191132 213.005554,468.069458 210.748856,464.246582 | ||||
| 	C210.271347,463.437653 210.149719,462.418610 209.786987,461.105591 | ||||
| 	C212.196808,458.723328 214.683762,456.731873 217.510681,454.643097 | ||||
| z"/> | ||||
|   <path fill="#090909" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M217.173126,340.895081 | ||||
| 	C195.669067,339.293976 177.571472,331.839386 164.846436,314.248718 | ||||
| 	C149.830078,293.490631 153.900864,265.700348 171.237839,248.000687 | ||||
| 	C191.864212,226.942841 217.175339,220.026001 246.041260,224.447693 | ||||
| 	C265.409271,227.414459 281.701477,235.829117 294.385864,250.807678 | ||||
| 	C318.189636,278.916809 307.750580,320.361511 273.593201,334.334290 | ||||
| 	C262.651642,338.810181 251.496933,341.383942 239.626434,340.957001 | ||||
| 	C232.309677,340.693848 224.975922,340.903290 217.173126,340.895081 | ||||
| M248.863983,243.486237 | ||||
| 	C246.738068,243.088089 244.624680,242.598099 242.484299,242.305939 | ||||
| 	C220.435745,239.296371 200.650711,244.157486 184.905121,260.469727 | ||||
| 	C167.044998,278.972595 171.675644,304.356171 194.527725,316.211639 | ||||
| 	C204.709946,321.494049 215.542725,322.906158 226.895706,322.683563 | ||||
| 	C239.516617,322.436096 252.097687,323.301788 264.241119,318.319489 | ||||
| 	C291.865479,306.985626 297.394165,278.226868 275.686523,257.827209 | ||||
| 	C268.235504,250.825119 259.322937,246.585129 248.863983,243.486237 | ||||
| z"/> | ||||
|   <path fill="#F7F7F7" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M249.265869,243.579742 | ||||
| 	C259.322937,246.585129 268.235504,250.825119 275.686523,257.827209 | ||||
| 	C297.394165,278.226868 291.865479,306.985626 264.241119,318.319489 | ||||
| 	C252.097687,323.301788 239.516617,322.436096 226.895706,322.683563 | ||||
| 	C215.542725,322.906158 204.709946,321.494049 194.527725,316.211639 | ||||
| 	C171.675644,304.356171 167.044998,278.972595 184.905121,260.469727 | ||||
| 	C200.650711,244.157486 220.435745,239.296371 242.484299,242.305939 | ||||
| 	C244.624680,242.598099 246.738068,243.088089 249.265869,243.579742 | ||||
| M215.929169,269.461121 | ||||
| 	C212.866943,274.500000 213.005280,278.213623 217.885361,281.533173 | ||||
| 	C222.707077,284.812988 224.323486,288.051453 222.631241,293.867249 | ||||
| 	C221.097626,299.137817 224.643890,302.876923 230.113647,303.217468 | ||||
| 	C237.223434,303.660065 240.553314,300.322723 239.261734,293.231262 | ||||
| 	C238.356491,288.260956 238.673706,284.395416 243.843781,282.114655 | ||||
| 	C244.840103,281.675140 246.108597,280.619324 246.248154,279.696136 | ||||
| 	C246.714813,276.609406 247.945084,272.656799 246.567413,270.550079 | ||||
| 	C245.205322,268.467194 241.091278,267.946442 238.064728,267.306610 | ||||
| 	C236.857285,267.051361 235.371307,268.605194 233.936417,268.813110 | ||||
| 	C232.033310,269.088806 229.788010,269.449341 228.163483,268.719299 | ||||
| 	C224.105011,266.895447 220.314651,265.927124 215.929169,269.461121 | ||||
| z"/> | ||||
|   <path fill="#121212" opacity="1.000000" stroke="none" | ||||
|     d=" | ||||
| M216.173950,269.151733 | ||||
| 	C220.314651,265.927124 224.105011,266.895447 228.163483,268.719299 | ||||
| 	C229.788010,269.449341 232.033310,269.088806 233.936417,268.813110 | ||||
| 	C235.371307,268.605194 236.857285,267.051361 238.064728,267.306610 | ||||
| 	C241.091278,267.946442 245.205322,268.467194 246.567413,270.550079 | ||||
| 	C247.945084,272.656799 246.714813,276.609406 246.248154,279.696136 | ||||
| 	C246.108597,280.619324 244.840103,281.675140 243.843781,282.114655 | ||||
| 	C238.673706,284.395416 238.356491,288.260956 239.261734,293.231262 | ||||
| 	C240.553314,300.322723 237.223434,303.660065 230.113647,303.217468 | ||||
| 	C224.643890,302.876923 221.097626,299.137817 222.631241,293.867249 | ||||
| 	C224.323486,288.051453 222.707077,284.812988 217.885361,281.533173 | ||||
| 	C213.005280,278.213623 212.866943,274.500000 216.173950,269.151733 | ||||
| z"/> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 55 KiB | 
							
								
								
									
										171
									
								
								docs/static/img/undraw_docusaurus_mountain.svg
									
									
									
									
										vendored
									
									
										Normal 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
									
								
								docs/static/img/undraw_docusaurus_react.svg
									
									
									
									
										vendored
									
									
										Normal 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
									
								
								docs/static/img/undraw_docusaurus_tree.svg
									
									
									
									
										vendored
									
									
										Normal 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 | 
							
								
								
									
										107
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						| @@ -4,7 +4,7 @@ | ||||
|  | ||||
|     <groupId>io.github.amithkoujalgi</groupId> | ||||
|     <artifactId>ollama4j</artifactId> | ||||
|     <version>1.0.3</version> | ||||
|     <version>1.0.31</version> | ||||
|  | ||||
|     <name>Ollama4j</name> | ||||
|     <description>Java library for interacting with Ollama API.</description> | ||||
| @@ -39,22 +39,11 @@ | ||||
|         <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection> | ||||
|         <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection> | ||||
|         <url>https://github.com/amithkoujalgi/ollama4j</url> | ||||
|         <tag>v1.0.3</tag> | ||||
|         <tag>v1.0.31</tag> | ||||
|     </scm> | ||||
|  | ||||
|     <build> | ||||
|         <plugins> | ||||
|             <plugin> | ||||
|                 <groupId>org.sonatype.plugins</groupId> | ||||
|                 <artifactId>nexus-staging-maven-plugin</artifactId> | ||||
|                 <version>1.6.13</version> | ||||
|                 <extensions>true</extensions> | ||||
|                 <configuration> | ||||
|                     <serverId>ossrh</serverId> | ||||
|                     <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> | ||||
|                     <autoReleaseAfterClose>true</autoReleaseAfterClose> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-source-plugin</artifactId> | ||||
| @@ -81,27 +70,27 @@ | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
|                 <artifactId>maven-gpg-plugin</artifactId> | ||||
|                 <version>1.5</version> | ||||
|                 <executions> | ||||
|                     <execution> | ||||
|                         <id>sign-artifacts</id> | ||||
|                         <phase>verify</phase> | ||||
|                         <goals> | ||||
|                             <goal>sign</goal> | ||||
|                         </goals> | ||||
|                         <configuration> | ||||
|                             <!-- This is necessary for gpg to not try to use the pinentry programs --> | ||||
|                             <gpgArguments> | ||||
|                                 <arg>--pinentry-mode</arg> | ||||
|                                 <arg>loopback</arg> | ||||
|                             </gpgArguments> | ||||
|                         </configuration> | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </plugin> | ||||
|             <!--            <plugin>--> | ||||
|             <!--                <groupId>org.apache.maven.plugins</groupId>--> | ||||
|             <!--                <artifactId>maven-gpg-plugin</artifactId>--> | ||||
|             <!--                <version>1.5</version>--> | ||||
|             <!--                <executions>--> | ||||
|             <!--                    <execution>--> | ||||
|             <!--                        <id>sign-artifacts</id>--> | ||||
|             <!--                        <phase>verify</phase>--> | ||||
|             <!--                        <goals>--> | ||||
|             <!--                            <goal>sign</goal>--> | ||||
|             <!--                        </goals>--> | ||||
|             <!--                        <configuration>--> | ||||
|             <!--                            <!– This is necessary for gpg to not try to use the pinentry programs –>--> | ||||
|             <!--                            <gpgArguments>--> | ||||
|             <!--                                <arg>--pinentry-mode</arg>--> | ||||
|             <!--                                <arg>loopback</arg>--> | ||||
|             <!--                            </gpgArguments>--> | ||||
|             <!--                        </configuration>--> | ||||
|             <!--                    </execution>--> | ||||
|             <!--                </executions>--> | ||||
|             <!--            </plugin>--> | ||||
|             <!-- Surefire Plugin for Unit Tests --> | ||||
|             <plugin> | ||||
|                 <groupId>org.apache.maven.plugins</groupId> | ||||
| @@ -143,7 +132,7 @@ | ||||
|                 <artifactId>maven-release-plugin</artifactId> | ||||
|                 <version>3.0.1</version> | ||||
|                 <configuration> | ||||
|                     <goals>install</goals> | ||||
|                     <!--                    <goals>install</goals>--> | ||||
|                     <tagNameFormat>v@{project.version}</tagNameFormat> | ||||
|                 </configuration> | ||||
|             </plugin> | ||||
| @@ -206,6 +195,9 @@ | ||||
|                 <skipUnitTests>false</skipUnitTests> | ||||
|                 <skipIntegrationTests>true</skipIntegrationTests> | ||||
|             </properties> | ||||
|             <activation> | ||||
|                 <activeByDefault>true</activeByDefault> | ||||
|             </activation> | ||||
|         </profile> | ||||
|         <profile> | ||||
|             <id>integration-tests</id> | ||||
| @@ -215,6 +207,51 @@ | ||||
|                 <skipIntegrationTests>false</skipIntegrationTests> | ||||
|             </properties> | ||||
|         </profile> | ||||
|         <profile> | ||||
|             <id>ci-cd</id> | ||||
|             <properties> | ||||
|                 <test.env>unit</test.env> | ||||
|                 <skipUnitTests>true</skipUnitTests> | ||||
|                 <skipIntegrationTests>true</skipIntegrationTests> | ||||
|             </properties> | ||||
|             <build> | ||||
|                 <plugins> | ||||
|                     <plugin> | ||||
|                         <groupId>org.apache.maven.plugins</groupId> | ||||
|                         <artifactId>maven-gpg-plugin</artifactId> | ||||
|                         <version>3.1.0</version> | ||||
|                         <executions> | ||||
|                             <execution> | ||||
|                                 <id>sign-artifacts</id> | ||||
|                                 <phase>verify</phase> | ||||
|                                 <goals> | ||||
|                                     <goal>sign</goal> | ||||
|                                 </goals> | ||||
|                                 <configuration> | ||||
|                                     <!-- Prevent gpg from using pinentry programs. Fixes: | ||||
|                                          gpg: signing failed: Inappropriate ioctl for device --> | ||||
|                                     <gpgArguments> | ||||
|                                         <arg>--pinentry-mode</arg> | ||||
|                                         <arg>loopback</arg> | ||||
|                                     </gpgArguments> | ||||
|                                 </configuration> | ||||
|                             </execution> | ||||
|                         </executions> | ||||
|                     </plugin> | ||||
|                     <plugin> | ||||
|                         <groupId>org.sonatype.plugins</groupId> | ||||
|                         <artifactId>nexus-staging-maven-plugin</artifactId> | ||||
|                         <version>1.6.13</version> | ||||
|                         <extensions>true</extensions> | ||||
|                         <configuration> | ||||
|                             <serverId>ossrh</serverId> | ||||
|                             <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> | ||||
|                             <autoReleaseAfterClose>true</autoReleaseAfterClose> | ||||
|                         </configuration> | ||||
|                     </plugin> | ||||
|                 </plugins> | ||||
|             </build> | ||||
|         </profile> | ||||
|     </profiles> | ||||
|  | ||||
| </project> | ||||
| @@ -17,6 +17,7 @@ import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
| import java.net.URL; | ||||
| import java.net.http.HttpClient; | ||||
| import java.net.http.HttpConnectTimeoutException; | ||||
| import java.net.http.HttpRequest; | ||||
| import java.net.http.HttpResponse; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| @@ -36,6 +37,8 @@ public class OllamaAPI { | ||||
|   private final String host; | ||||
|   private long requestTimeoutSeconds = 3; | ||||
|   private boolean verbose = true; | ||||
|   private String username; | ||||
|   private String password; | ||||
|  | ||||
|   /** | ||||
|    * Instantiates the Ollama API. | ||||
| @@ -63,6 +66,47 @@ public class OllamaAPI { | ||||
|     this.verbose = verbose; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * | ||||
|    */ | ||||
|   public void setBasicAuth(String username, String password) { | ||||
|     this.username = username; | ||||
|     this.password = password; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * API to check the reachability of Ollama server. | ||||
|    * | ||||
|    * @return true if the server is reachable, false otherwise. | ||||
|    */ | ||||
|   public boolean ping() { | ||||
|     String url = this.host + "/api/tags"; | ||||
|     HttpClient httpClient = HttpClient.newHttpClient(); | ||||
|     HttpRequest httpRequest = null; | ||||
|     try { | ||||
|       httpRequest = | ||||
|           HttpRequest.newBuilder() | ||||
|               .uri(new URI(url)) | ||||
|               .header("Accept", "application/json") | ||||
|               .header("Content-type", "application/json") | ||||
|               .timeout(Duration.ofSeconds(requestTimeoutSeconds)) | ||||
|               .GET() | ||||
|               .build(); | ||||
|     } catch (URISyntaxException e) { | ||||
|       throw new RuntimeException(e); | ||||
|     } | ||||
|     HttpResponse<String> response = null; | ||||
|     try { | ||||
|       response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); | ||||
|     } catch (HttpConnectTimeoutException e) { | ||||
|       return false; | ||||
|     } catch (IOException | InterruptedException e) { | ||||
|       throw new RuntimeException(e); | ||||
|     } | ||||
|     int statusCode = response.statusCode(); | ||||
|     return statusCode == 200; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * List available models from Ollama server. | ||||
|    * | ||||
| @@ -272,17 +316,13 @@ public class OllamaAPI { | ||||
|    */ | ||||
|   public List<Double> generateEmbeddings(String model, String prompt) | ||||
|       throws IOException, InterruptedException, OllamaBaseException { | ||||
|     String url = this.host + "/api/embeddings"; | ||||
|     URI uri = URI.create(this.host + "/api/embeddings"); | ||||
|     String jsonData = new ModelEmbeddingsRequest(model, prompt).toString(); | ||||
|     HttpClient httpClient = HttpClient.newHttpClient(); | ||||
|     HttpRequest request = | ||||
|         HttpRequest.newBuilder() | ||||
|             .uri(URI.create(url)) | ||||
|     HttpRequest.Builder requestBuilder = getRequestBuilderDefault(uri) | ||||
|             .header("Accept", "application/json") | ||||
|             .header("Content-type", "application/json") | ||||
|             .timeout(Duration.ofSeconds(requestTimeoutSeconds)) | ||||
|             .POST(HttpRequest.BodyPublishers.ofString(jsonData)) | ||||
|             .build(); | ||||
|             .POST(HttpRequest.BodyPublishers.ofString(jsonData)); | ||||
|     HttpRequest request = requestBuilder.build(); | ||||
|     HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); | ||||
|     int statusCode = response.statusCode(); | ||||
|     String responseBody = response.body(); | ||||
| @@ -392,14 +432,12 @@ public class OllamaAPI { | ||||
|     long startTime = System.currentTimeMillis(); | ||||
|     HttpClient httpClient = HttpClient.newHttpClient(); | ||||
|     URI uri = URI.create(this.host + "/api/generate"); | ||||
|     HttpRequest request = | ||||
|         HttpRequest.newBuilder(uri) | ||||
|     HttpRequest.Builder requestBuilder = getRequestBuilderDefault(uri) | ||||
|             .POST( | ||||
|                 HttpRequest.BodyPublishers.ofString( | ||||
|                     Utils.getObjectMapper().writeValueAsString(ollamaRequestModel))) | ||||
|             .header("Content-Type", "application/json") | ||||
|             .timeout(Duration.ofSeconds(requestTimeoutSeconds)) | ||||
|             .build(); | ||||
|                     Utils.getObjectMapper().writeValueAsString(ollamaRequestModel))); | ||||
|     HttpRequest request = requestBuilder.build(); | ||||
|     logger.debug("Ask model '" + ollamaRequestModel + "' ..."); | ||||
|     HttpResponse<InputStream> response = | ||||
|         httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()); | ||||
|     int statusCode = response.statusCode(); | ||||
| @@ -410,10 +448,16 @@ public class OllamaAPI { | ||||
|       String line; | ||||
|       while ((line = reader.readLine()) != null) { | ||||
|         if (statusCode == 404) { | ||||
|           logger.warn("Status code: 404 (Not Found)"); | ||||
|           OllamaErrorResponseModel ollamaResponseModel = | ||||
|               Utils.getObjectMapper().readValue(line, OllamaErrorResponseModel.class); | ||||
|           responseBuffer.append(ollamaResponseModel.getError()); | ||||
|         } else { | ||||
|         } else if (statusCode == 401) { | ||||
|           logger.warn("Status code: 401 (Unauthorized)"); | ||||
|           OllamaErrorResponseModel ollamaResponseModel = | ||||
|                   Utils.getObjectMapper().readValue("{\"error\":\"Unauthorized\"}", OllamaErrorResponseModel.class); | ||||
|           responseBuffer.append(ollamaResponseModel.getError()); | ||||
|         }else { | ||||
|           OllamaResponseModel ollamaResponseModel = | ||||
|               Utils.getObjectMapper().readValue(line, OllamaResponseModel.class); | ||||
|           if (!ollamaResponseModel.isDone()) { | ||||
| @@ -423,10 +467,44 @@ public class OllamaAPI { | ||||
|       } | ||||
|     } | ||||
|     if (statusCode != 200) { | ||||
|       logger.error("Status code " + statusCode + " instead 200"); | ||||
|       throw new OllamaBaseException(responseBuffer.toString()); | ||||
|     } else { | ||||
|       long endTime = System.currentTimeMillis(); | ||||
|       return new OllamaResult(responseBuffer.toString().trim(), endTime - startTime, statusCode); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * | ||||
|    */ | ||||
|   private HttpRequest.Builder getRequestBuilderDefault(URI uri) { | ||||
|     HttpRequest.Builder requestBuilder = | ||||
|             HttpRequest.newBuilder(uri) | ||||
|                     .header("Content-Type", "application/json") | ||||
|                     .timeout(Duration.ofSeconds(requestTimeoutSeconds)); | ||||
|     if (basicAuthCredentialsSet()) { | ||||
|       requestBuilder.header("Authorization", getBasicAuthHeaderValue()); | ||||
|     } | ||||
|     return requestBuilder; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @return basic authentication header value (encoded credentials) | ||||
|    */ | ||||
|   private String getBasicAuthHeaderValue() { | ||||
|     String credentialsToEncode = username + ":" + password; | ||||
|     return "Basic " + Base64.getEncoder().encodeToString(credentialsToEncode.getBytes()); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * @return true when Basic Auth credentials set | ||||
|    */ | ||||
|   private boolean basicAuthCredentialsSet() { | ||||
|     if (username != null && password !=  null) { | ||||
|       return true; | ||||
|     } else { | ||||
|       return false; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||