Add Embedding Model Deployment and Model Deployment apps (#914)

This commit is contained in:
pollfly 2024-08-28 17:22:10 +03:00 committed by GitHub
parent 187cfcbc8a
commit cd97c6d615
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 363 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -0,0 +1,89 @@
---
title: Embedding Model Deployment
---
:::important Enterprise Feature
The Embedding Model Deployment App is available under the ClearML Enterprise plan.
:::
The Embedding Model Deployment app enables users to quickly deploy embedding models as networking services over a secure
endpoint. This application supports various model configurations and customizations, addressing a range of embedding use
cases. The Embedding Model Deployment application serves your model on a machine of your choice. Once an app instance is
running, it serves your embedding model through a secure, publicly accessible network endpoint. The app monitors
endpoint activity and shuts down if the model remains inactive for a specified maximum idle time.
:::info Task Traffic Router
The Embedding Model Deployment app relies on the ClearML Traffic Router which implements a secure, authenticated network
channel to the model
:::
After starting an Embedding Model Deployment instance, you can view the following information in its dashboard:
* Status indicator
* <img src="/docs/latest/icons/ico-embedding-model-active.svg" alt="Active instance" className="icon size-md space-sm" /> - App instance is running and is actively in use
* <img src="/docs/latest/icons/ico-embedding-model-loading.svg" alt="Loading instance" className="icon size-md space-sm" /> - App instance is setting up
* <img src="/docs/latest/icons/ico-embedding-model-idle.svg" alt="Idle instance" className="icon size-md space-sm" /> - App instance is idle
* <img src="/docs/latest/icons/ico-embedding-model-stopped.svg" alt="Stopped instance" className="icon size-md space-sm" /> - App instance is stopped
* Idle time - Time elapsed since last activity
* Endpoint - The publicly accessible URL of the model endpoint
* API base - The base URL for the model endpoint
* API key - The authentication key for the model endpoint
* Test Command - An example command line to test the deployed model
* Requests - Number of requests over time
* Latency - Request response time (ms) over time
* Endpoint resource monitoring metrics over time
* CPU usage
* Network throughput
* Disk performance
* Memory performance
* GPU utilization
* GPU memory usage
* GPU temperature
* Console log - The console log shows the app instance's console output: setup progress, status changes, error messages, etc.
![Embedding Model Deployment app](../../img/apps_embedding_model_deployment.png)
## Embedding Model Deployment Instance Configuration
When configuring a new Embedding Model Deployment instance, you can fill in the required parameters or reuse the
configuration of a previously launched instance.
Launch an app instance with the configuration of a previously launched instance using one of the following options:
* Cloning a previously launched app instance will open the instance launch form with the original instance's
configuration prefilled.
* Importing an app configuration file. You can export the configuration of a previously launched instance as a JSON file
when viewing its configuration.
The prefilled configuration form can be edited before launching the new app instance.
To configure a new app instance, click `Launch New` <img src="/docs/latest/icons/ico-add.svg" alt="Add new" className="icon size-md space-sm" />
to open the app's configuration form.
### Configuration Options
* Import Configuration - Import an app instance configuration file. This will fill the configuration form with the
values from the file, which can be modified before launching the app instance
* Project name - ClearML Project where your Embedding Model Deployment app instance will be stored
* Task name - Name of ClearML Task for your Embedding Model Deployment app instance
* Queue - The [ClearML Queue](../../fundamentals/agents_and_queues.md#what-is-a-queue) to which the Embedding Model
Deployment app instance task will be enqueued (make sure an agent is assigned to it)
* Model Configuration
* Model - A ClearML Model ID or a Hugging Face model name (e.g. `openai-community/gpt2`)
* Revision - The specific Hugging Face version of the model you want to use. You can use a specific commit ID or a
branch like `refs/pr/2`
* Tokenization Workers - Number of tokenizer workers used for payload tokenization, validation, and truncation.
Defaults to the number of CPU cores on the machine
* Dtype - The data type enforced on the model
* Pooling - Model pooling method. If `pooling` is not set, the pooling configuration will be parsed from the model
`1_Pooling/config.json` configuration. If `pooling` is set, it will override the model pooling configuration. Possible
values:
* `cls`: Use CLS token
* `mean`: Apply Mean pooling
* `splade`: Apply SPLADE (Sparse Lexical and Expansion) pooling. This option is only available for `ForMaskedLM`
Transformer models
* \+ Add item - Add another model endpoint. Each model will be accessible through the same base URL, with the model
name appended to the URL.
* Hugging Face Token - Token for accessing Hugging Face models that require authentication
* Idle Time Limit (Hours) - Maximum idle time after which the app instance will shut down
* Export Configuration - Export the app instance configuration as a JSON file, which you can later import to create a
new instance with the same configuration
![Embedding Model Deployment form](../../img/apps_embedding_model_deployment_form.png)

View File

@ -0,0 +1,143 @@
---
title: Model Deployment
---
:::important Enterprise Feature
The Model Deployment App is available under the ClearML Enterprise plan.
:::
The Model Deployment application enables users to quickly deploy LLM models as networking services over a secure
endpoint. This application supports various model configurations and customizations to optimize performance and resource
usage. The Model Deployment application serves your model on a machine of your choice. Once an app instance is running,
it serves your model through a secure, publicly accessible network endpoint. The app monitors endpoint activity and
shuts down if the model remains inactive for a specified maximum idle time.
:::info Task Traffic Router
The Model Deployment app relies on the ClearML Traffic Router which implements a secure, authenticated network channel
to the model
:::
Once you start a Model Deployment instance, you can view the following information in its dashboard:
* Status indicator
* <img src="/docs/latest/icons/ico-model-active.svg" alt="Active instance" className="icon size-md space-sm" /> - App instance is running and is actively in use
* <img src="/docs/latest/icons/ico-model-loading.svg" alt="Loading instance" className="icon size-md space-sm" /> - App instance is setting up
* <img src="/docs/latest/icons/ico-model-idle.svg" alt="Idle instance" className="icon size-md space-sm" /> - App instance is idle
* <img src="/docs/latest/icons/ico-model-stopped.svg" alt="Stopped instance" className="icon size-md space-sm" /> - App instance is stopped
* Idle time - Time elapsed since last activity
* Endpoint - The publicly accessible URL of the model endpoint
* API base - The base URL for the model endpoint
* API key - The authentication key for the model endpoint
* Test Command - An example command line to test the deployed model
* Requests - Number of requests over time
* Latency - Request response time (ms) over time
* Endpoint resource monitoring metrics over time
* CPU usage
* Network throughput
* Disk performance
* Memory performance
* GPU utilization
* GPU memory usage
* GPU temperature
* Console log - The console log shows the app instance's console output: setup progress, status changes, error messages,
etc.
![Model Deployment App](../../img/apps_model_deployment.png)
## Model Deployment Instance Configuration
When configuring a new Model Deployment instance, you can fill in the required parameters or reuse the
configuration of a previously launched instance.
Launch an app instance with the configuration of a previously launched instance using one of the following options:
* Cloning a previously launched app instance will open the instance launch form with the original instance's
configuration prefilled.
* Importing an app configuration file. You can export the configuration of a previously launched instance as a JSON file
when viewing its configuration.
The prefilled configuration form can be edited before launching the new app instance.
To configure a new app instance, click `Launch New` <img src="/docs/latest/icons/ico-add.svg" alt="Add new" className="icon size-md space-sm" />
to open the app's configuration form.
### Configuration Options
* Import Configuration - Import an app instance configuration file. This will fill the instance launch form with the
values from the file, which can be modified before launching the app instance
* Project name - ClearML Project Name
* Task name - Name of ClearML Task for your Model Deployment app instance
* Queue - The [ClearML Queue](../../fundamentals/agents_and_queues.md#what-is-a-queue) to which the Model Deployment app
instance task will be enqueued (make sure an agent is assigned to that queue)
* Model - A ClearML Model ID or a HuggingFace model name (e.g. `openai-community/gpt2`)
* Model Configuration
* Trust Remote Code - Select to set Hugging Face [`trust_remote_code`](https://huggingface.co/docs/text-generation-inference/main/en/reference/launcher#trustremotecode)
to `true`.
* Revision - The specific Hugging Face version of the model (i.e. weights) you want to use. You
can use a specific commit ID or a branch like `refs/pr/2`.
* Code Revision - The specific revision to use for the model code on HuggingFace Hub. It can be a branch name, a tag
name, or a commit ID. If unspecified, will use the default version.
* Max Model Length - Model context length. If unspecified, will be automatically derived from the model
* Tokenizer - A ClearML Model ID or a Hugging Face tokenizer
* Tokenizer Revision - The specific tokenizer Hugging Face version to use. It can be a branch name, a tag name, or a
commit ID. If unspecified, will use the default version.
* Tokenizer Mode - Select the tokenizer mode:
* `auto` - Uses the fast tokenizer if available
* `slow` - Uses the slow tokenizer.
* LoRA Configuration
* Enable LoRA - If checked, enable handling of [LoRA adapters](https://huggingface.co/docs/diffusers/en/training/lora#lora).
* LoRA Modules - LoRA module configurations in the format `name=path`. Multiple modules can be specified.
* Max LoRAs - Max number of LoRAs in a single batch.
* Max LoRA Rank
* LoRA Extra Vocabulary Size - Maximum size of extra vocabulary that can be present in a LoRA adapter (added to the base model vocabulary).
* LoRA Dtype - Select the data type for LoRA. Select one of the following:
* `auto` - If selected, will default to base model data type.
* `float16`
* `bfloat16`
* `float32`
* Max CPU LoRAs - Maximum number of LoRAs to store in CPU memory. Must be greater or equal to the
`Max Number of Sequences` field in the General section below. Defaults to `Max Number of Sequences`.
* General
* Disable Log Stats - Disable logging statistics
* Enforce Eager - Always use eager-mode PyTorch. If False, a hybrid of eager mode and CUDA graph will be used for
maximal performance and flexibility.
* Disable Custom All Reduce - See [vllm ParallelConfig](https://github.com/vllm-project/vllm/blob/main/vllm/config.py#L701)
* Disable Logging Requests
* Fixed API Access Key - Key to use for authenticating API access. Set a fixed API key if you've set up the server to
be accessible without authentication. Setting an API key ensures that only authorized users can access the endpoint.
* HuggingFace Token - Token for accessing HuggingFace models that require authentication
* Load Format - Select the model weights format to load:
* `auto` - Load the weights in the safetensors format and fall back to the pytorch bin format if safetensors format is not available.
* `pt` - Load the weights in the pytorch bin format.
* `safetensors` - Load the weights in the safetensors format.
* `npcache` - Load the weights in pytorch format and store a numpy cache to speed up the loading.
* `dummy` Initialize the weights with random values. Mainly used for profiling.
* Dtype - Select the data type for model weights and activations:
* `auto` - if selected, will use FP16 precision for FP32 and FP16 models, and BF16 precision for BF16 models.
* `half`
* `float16`
* `bfloat16`
* `float`
* `float32`
* KV Cache Type - Select data type for kv cache storage:
* `auto` - If selected, will use the model data type. Note FP8 is not supported when cuda version is lower than 11.8.
* `fp8_e5m2`
* Pipeline Parallel Size - Number of pipeline stages
* Tensor Parallel Size - Number of tensor parallel replicas
* Max Parallel Loading Workers - Load model sequentially in multiple batches, to avoid RAM OOM when using tensor
parallel and large models
* Token Block Size
* Random Seed
* Swap Space - CPU swap space size (GiB) per GPU
* GPU Memory Utilization - The fraction of GPU memory to be used for the model executor, which can range from 0 to 1
* Max Number of Batched Tokens - Maximum number of batched tokens per iteration
* Max Number of Sequences - Maximum number of sequences per iteration
* Max Number of Paddings - Maximum number of paddings in a batch
* Quantization - Method used to quantize the weights. If None, we first check the `quantization_config` attribute in
the model config file. If that is None, we assume the model weights are not quantized and use `dtype` to determine the
data type of the weights.
* Max Context Length to Capture - Maximum context length covered by CUDA graphs. When a sequence has context length
larger than this, we fall back to eager mode.
* Max Log Length - Max number of prompt characters or prompt ID numbers being printed in log. Default: unlimited
* Idle Time Limit (Hours) - Maximum idle time after which the app instance will shut down
* Export Configuration - Export the app instance configuration as a JSON file, which you can later import to create a
new instance with the same configuration
![Model Deployment app form](../../img/apps_model_deployment_form.png)

View File

@ -13,15 +13,21 @@ Use ClearML's GUI Applications to manage ML workloads and automatically run your
Configure and launch app instances, then track their execution from the app dashboard. Configure and launch app instances, then track their execution from the app dashboard.
ClearML provides the following applications: ClearML provides the following applications:
* General:
* [**Hyperparameter Optimization**](apps_hpo.md) - Find the parameter values that yield the best performing models * [**Hyperparameter Optimization**](apps_hpo.md) - Find the parameter values that yield the best performing models
* **Nvidia Clara** - Train models using Nvidia's Clara framework * **Nvidia Clara** - Train models using Nvidia's Clara framework
* [**Project Dashboard**](apps_dashboard.md) - High-level project monitoring with Slack alerts * [**Project Dashboard**](apps_dashboard.md) - High-level project monitoring with Slack alerts
* [**Task Scheduler**](apps_task_scheduler.md) - Schedule tasks for one-shot and/or periodic execution at specified times (available under ClearML Enterprise Plan) * [**Task Scheduler**](apps_task_scheduler.md) - Schedule tasks for one-shot and/or periodic execution at specified times (available under ClearML Enterprise Plan)
* [**Trigger Manager**](apps_trigger_manager.md) - Define tasks to be run when predefined events occur (available under ClearML Enterprise Plan) * [**Trigger Manager**](apps_trigger_manager.md) - Define tasks to be run when predefined events occur (available under ClearML Enterprise Plan)
* AI Dev:
* [**Jupyter Lab**](apps_jupyter_lab.md) - Launch a Jupyter Lab session on a remote machine (available under ClearML Enterprise Plan) * [**Jupyter Lab**](apps_jupyter_lab.md) - Launch a Jupyter Lab session on a remote machine (available under ClearML Enterprise Plan)
* [**VS Code**](apps_vscode.md) - Launch a VS Code session on a remote machine (available under ClearML Enterprise Plan) * [**VS Code**](apps_vscode.md) - Launch a VS Code session on a remote machine (available under ClearML Enterprise Plan)
* UI Dev:
* [**Gradio Launcher**](apps_gradio.md) - Create visual web interfaces for your models with Gradio (available under ClearML Enterprise Plan) * [**Gradio Launcher**](apps_gradio.md) - Create visual web interfaces for your models with Gradio (available under ClearML Enterprise Plan)
* [**Streamlit Launcher**](apps_streamlit.md) - Create visual web interfaces for your models with Streamlit (available under ClearML Enterprise Plan) * [**Streamlit Launcher**](apps_streamlit.md) - Create visual web interfaces for your models with Streamlit (available under ClearML Enterprise Plan)
* Deploy:
* [**Embedding Model Deployment**](apps_embed_model_deployment.md) Deploy embedding models as networking services over a secure endpoint (available under ClearML Enterprise Plan)
* [**Model Deployment**](apps_model_deployment.md) - Deploy LLM models as networking services over a secure endpoint (available under ClearML Enterprise Plan)
:::info Autoscalers :::info Autoscalers
Autoscaling ([AWS Autoscaler](apps_aws_autoscaler.md) and [GCP Autoscaler](apps_gcp_autoscaler.md)) Autoscaling ([AWS Autoscaler](apps_aws_autoscaler.md) and [GCP Autoscaler](apps_gcp_autoscaler.md))

View File

@ -147,15 +147,33 @@ module.exports = {
{ {
'ClearML Applications': [ 'ClearML Applications': [
'webapp/applications/apps_overview', 'webapp/applications/apps_overview',
{
"General": [
'webapp/applications/apps_hpo', 'webapp/applications/apps_hpo',
'webapp/applications/apps_dashboard', 'webapp/applications/apps_dashboard',
'webapp/applications/apps_task_scheduler', 'webapp/applications/apps_task_scheduler',
'webapp/applications/apps_trigger_manager', 'webapp/applications/apps_trigger_manager',
]
},
{
"AI Dev": [
'webapp/applications/apps_jupyter_lab', 'webapp/applications/apps_jupyter_lab',
'webapp/applications/apps_vscode', 'webapp/applications/apps_vscode',
]
},
{
"UI Dev": [
'webapp/applications/apps_gradio', 'webapp/applications/apps_gradio',
'webapp/applications/apps_streamlit' 'webapp/applications/apps_streamlit'
] ]
},
{
"Deploy": [
'webapp/applications/apps_embed_model_deployment',
'webapp/applications/apps_model_deployment'
]
},
]
}, },
'webapp/webapp_profile'] 'webapp/webapp_profile']

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M39.7,16.22c-.86-4.65-4.92-8.18-9.82-8.18-4.19,0-7.77,2.59-9.26,6.25-.56-.14-1.14-.25-1.74-.25-3.87,0-7,3.13-7,7,0,.55.08,1.08.2,1.59-2.65,1.16-4.45,3.91-4.17,7.06.33,3.66,3.61,6.68,7.28,6.68h22.25c5.39,0,10.14-4.41,10.42-9.8.27-5.14-3.35-9.47-8.17-10.35ZM31.15,30.52c-.86,0-1.7-.27-2.41-.76l-5.69-3.63c-2.27-2.1-2.4-5.65-.3-7.91,2.1-2.27,5.65-2.4,7.91-.3.1.1.2.19.3.3l3.63,5.69c.5.71.77,1.55.77,2.41,0,2.32-1.88,4.2-4.2,4.2ZM32.88,39.71l5,5h-3.33v1.67c0,.92-.75,1.67-1.67,1.67s-1.67-.75-1.67-1.67v-1.67h-3.33l5-5ZM27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM29.58,22.96l1.07-.38v-.76l-1.06-.38-.15-.38.46-.99-.54-.53-.99.46-.38-.15-.38-1.07h-.76l-.38,1.07-.38.15-.99-.46-.53.53.46.99-.15.38-1.07.38v.76l1.07.38.15.38-.46.99.53.53.99-.46.38.15.38,1.07h.76l.38-1.07.38-.15.99.45.53-.53-.46-.99.15-.38ZM27.18,23.44c-.64,0-1.17-.52-1.17-1.17s.52-1.17,1.17-1.17c.63.02,1.13.54,1.14,1.17,0,.63-.51,1.14-1.14,1.17ZM32.55,26.65c0,.59-.46,1.07-1.05,1.08-.57,0-1.03-.45-1.05-1.02-.01-.58.44-1.06,1.02-1.08s1.06.44,1.08,1.02Z" fill="#afe61e"/>
</g>
<path d="m49,39c-5.52,0-10,4.48-10,10s4.48,10,10,10,10-4.48,10-10-4.48-10-10-10Z" fill="#21b553"/>
<path d="m52.42,48.23l-4.06-3.38c-.65-.54-1.64-.08-1.64.77v6.76c0,.85.99,1.31,1.64.77l4.06-3.38c.48-.4.48-1.14,0-1.54Z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M39.7,16.22c-.86-4.65-4.92-8.18-9.82-8.18-4.19,0-7.77,2.59-9.26,6.25-.56-.14-1.14-.25-1.74-.25-3.87,0-7,3.13-7,7,0,.55.08,1.08.2,1.59-2.65,1.16-4.45,3.91-4.17,7.06.33,3.66,3.61,6.68,7.28,6.68h22.25c5.39,0,10.14-4.41,10.42-9.8.27-5.14-3.35-9.47-8.17-10.35ZM31.15,30.52c-.86,0-1.7-.27-2.41-.76l-5.69-3.63c-2.27-2.1-2.4-5.65-.3-7.91,2.1-2.27,5.65-2.4,7.91-.3.1.1.2.19.3.3l3.63,5.69c.5.71.77,1.55.77,2.41,0,2.32-1.88,4.2-4.2,4.2ZM32.88,39.71l5,5h-3.33v1.67c0,.92-.75,1.67-1.67,1.67s-1.67-.75-1.67-1.67v-1.67h-3.33l5-5ZM27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM29.58,22.96l1.07-.38v-.76l-1.06-.38-.15-.38.46-.99-.54-.53-.99.46-.38-.15-.38-1.07h-.76l-.38,1.07-.38.15-.99-.46-.53.53.46.99-.15.38-1.07.38v.76l1.07.38.15.38-.46.99.53.53.99-.46.38.15.38,1.07h.76l.38-1.07.38-.15.99.45.53-.53-.46-.99.15-.38ZM27.18,23.44c-.64,0-1.17-.52-1.17-1.17s.52-1.17,1.17-1.17c.63.02,1.13.54,1.14,1.17,0,.63-.51,1.14-1.14,1.17ZM32.55,26.65c0,.59-.46,1.07-1.05,1.08-.57,0-1.03-.45-1.05-1.02-.01-.58.44-1.06,1.02-1.08s1.06.44,1.08,1.02Z" fill="#afe61e"/>
</g>
<path d="m49,39c-5.52,0-10,4.48-10,10s4.48,10,10,10,10-4.48,10-10-4.48-10-10-10Z" fill="#50beff"/>
<path id="idle-s" d="m50.44,49.24v-4.48c0-.67-.55-1.22-1.22-1.22s-1.22.55-1.22,1.22v4.88s.01.04.01.05c-.01.33.1.66.35.91l4.31,3.61c.12.09.34.25.56.25.43,0,.77-.35.77-.77,0-.21-.1-.39-.23-.55l-3.33-3.91Z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<style>
@keyframes anim {
from {
r: 2px;
}
to {
r: 6px;
}
to {
r: 8px;
}
}
.circle {
animation-name: anim;
animation-duration: 1.2s;
animation-iteration-count: infinite;
}
</style>
<g>
<path d="M39.7,16.22c-.86-4.65-4.92-8.18-9.82-8.18-4.19,0-7.77,2.59-9.26,6.25-.56-.14-1.14-.25-1.74-.25-3.87,0-7,3.13-7,7,0,.55.08,1.08.2,1.59-2.65,1.16-4.45,3.91-4.17,7.06.33,3.66,3.61,6.68,7.28,6.68h22.25c5.39,0,10.14-4.41,10.42-9.8.27-5.14-3.35-9.47-8.17-10.35ZM31.15,30.52c-.86,0-1.7-.27-2.41-.76l-5.69-3.63c-2.27-2.1-2.4-5.65-.3-7.91,2.1-2.27,5.65-2.4,7.91-.3.1.1.2.19.3.3l3.63,5.69c.5.71.77,1.55.77,2.41,0,2.32-1.88,4.2-4.2,4.2ZM32.88,39.71l5,5h-3.33v1.67c0,.92-.75,1.67-1.67,1.67s-1.67-.75-1.67-1.67v-1.67h-3.33l5-5ZM27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM29.58,22.96l1.07-.38v-.76l-1.06-.38-.15-.38.46-.99-.54-.53-.99.46-.38-.15-.38-1.07h-.76l-.38,1.07-.38.15-.99-.46-.53.53.46.99-.15.38-1.07.38v.76l1.07.38.15.38-.46.99.53.53.99-.46.38.15.38,1.07h.76l.38-1.07.38-.15.99.45.53-.53-.46-.99.15-.38ZM27.18,23.44c-.64,0-1.17-.52-1.17-1.17s.52-1.17,1.17-1.17c.63.02,1.13.54,1.14,1.17,0,.63-.51,1.14-1.14,1.17ZM32.55,26.65c0,.59-.46,1.07-1.05,1.08-.57,0-1.03-.45-1.05-1.02-.01-.58.44-1.06,1.02-1.08s1.06.44,1.08,1.02Z" fill="#afe61e"/>
</g>
<circle class="circle" cx="16" cy="16" r="8" fill="#D3FF00" style="transform: translate(33px, 33px)" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M39.7,16.22c-.86-4.65-4.92-8.18-9.82-8.18-4.19,0-7.77,2.59-9.26,6.25-.56-.14-1.14-.25-1.74-.25-3.87,0-7,3.13-7,7,0,.55.08,1.08.2,1.59-2.65,1.16-4.45,3.91-4.17,7.06.33,3.66,3.61,6.68,7.28,6.68h22.25c5.39,0,10.14-4.41,10.42-9.8.27-5.14-3.35-9.47-8.17-10.35ZM31.15,30.52c-.86,0-1.7-.27-2.41-.76l-5.69-3.63c-2.27-2.1-2.4-5.65-.3-7.91,2.1-2.27,5.65-2.4,7.91-.3.1.1.2.19.3.3l3.63,5.69c.5.71.77,1.55.77,2.41,0,2.32-1.88,4.2-4.2,4.2ZM32.88,39.71l5,5h-3.33v1.67c0,.92-.75,1.67-1.67,1.67s-1.67-.75-1.67-1.67v-1.67h-3.33l5-5ZM27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM29.58,22.96l1.07-.38v-.76l-1.06-.38-.15-.38.46-.99-.54-.53-.99.46-.38-.15-.38-1.07h-.76l-.38,1.07-.38.15-.99-.46-.53.53.46.99-.15.38-1.07.38v.76l1.07.38.15.38-.46.99.53.53.99-.46.38.15.38,1.07h.76l.38-1.07.38-.15.99.45.53-.53-.46-.99.15-.38ZM27.18,23.44c-.64,0-1.17-.52-1.17-1.17s.52-1.17,1.17-1.17c.63.02,1.13.54,1.14,1.17,0,.63-.51,1.14-1.14,1.17ZM32.55,26.65c0,.59-.46,1.07-1.05,1.08-.57,0-1.03-.45-1.05-1.02-.01-.58.44-1.06,1.02-1.08s1.06.44,1.08,1.02Z" fill="#afe61e"/>
</g>
<path d="M49 39C43.48 39 39 43.48 39 49C39 54.52 43.48 59 49 59C54.52 59 59 54.52 59 49C59 43.48 54.52 39 49 39Z" fill="#50BEFF"/>
<rect x="45" y="45" width="8" height="8" rx="1" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM27.88,44.71h3.33v1.67c0,.92.75,1.67,1.67,1.67s1.67-.75,1.67-1.67v-1.67h3.33l-5-5-5,5ZM28.84,22.31c-.26-.15-.55-.23-.84-.23h0c-.28,0-.56.07-.81.21l-.08.05h0c-.51.32-.82.88-.81,1.49,0,.62.33,1.2.86,1.51h.01c.83.48,1.87.18,2.34-.66.47-.84.17-1.9-.65-2.38ZM47.87,26.58c-.28,5.38-5.03,9.8-10.42,9.8H15.19c-3.67,0-6.95-3.03-7.28-6.68-.28-3.14,1.52-5.89,4.17-7.06-.12-.51-.2-1.04-.2-1.59,0-3.87,3.13-7,7-7,.61,0,1.18.1,1.74.25,1.49-3.66,5.06-6.25,9.26-6.25,4.9,0,8.96,3.53,9.82,8.18,4.82.89,8.44,5.22,8.17,10.35ZM35.47,22.89c-.51-.3-1.16-.12-1.45.4l-.1.17h-3.5l-.06-.26s0,0,0,0c0,0,0,0,0,0,0,0,0-.02,0-.02l-.07-.25,3.02-1.77.16.1c.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54-.59,0-1.06.48-1.06,1.08v.19l-.16.1-2.87,1.69-.18-.2s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0h0s0,0,0,0l-.17-.18,1.74-3.07h.19c.59,0,1.06-.48,1.06-1.08,0-.6-.47-1.08-1.06-1.08-.19,0-.37.05-.53.15-.51.3-.68.96-.39,1.47l.09.17-1.74,3.08-.24-.07h0s0,0,0,0c0,0-.01,0-.02,0l-.25-.06v-3.55l.16-.1c.16-.09.3-.23.39-.39.29-.52.12-1.17-.39-1.47-.51-.3-1.15-.12-1.45.39-.29.52-.12,1.17.39,1.47l.16.1v3.56l-.25.06s0,0,0,0c0,0-.02,0-.02,0l-.25.08-1.75-3.08.09-.17c.19-.33.19-.74,0-1.08-.29-.52-.94-.69-1.45-.39-.51.3-.68.96-.39,1.47.19.33.54.54.92.54h.19l1.74,3.08-.19.19h0s-.01.02-.01.02l-.18.19-3.03-1.78v-.19c0-.39-.2-.74-.53-.93,0,0-.02-.01-.03-.01-.51-.29-1.16-.1-1.44.42-.29.52-.1,1.18.41,1.47.33.19.73.19,1.06,0l.16-.1,3.01,1.77-.06.24s0,.03-.01.05h0s-.07.26-.07.26h-3.49l-.1-.17c-.19-.33-.54-.54-.92-.54-.38,0-.73.21-.92.54-.29.52-.12,1.17.39,1.47.51.3,1.16.12,1.45-.4l.1-.17h3.5l.06.26s0,0,0,0c0,0,0,0,0,.01l.07.26-3.02,1.78-.16-.1c-.16-.1-.34-.15-.53-.14-.48,0-.9.33-1.03.8-.07.28-.03.57.11.82.19.33.54.54.92.54.59,0,1.06-.48,1.06-1.08v-.19l.16-.1,2.85-1.68.18.17h0s0,0,0,0c.01.01.02.02.04.03l.18.18-.13.22-1.62,2.85h-.19c-.38,0-.73.21-.92.54-.29.52-.12,1.18.39,1.47.33.19.74.19,1.06,0,.51-.3.68-.96.38-1.47l-.09-.17,1.74-3.07.26.07h.01s0,0,0,0h0s.25.07.25.07v3.55l-.16.1c-.33.19-.53.55-.53.93,0,.6.47,1.08,1.06,1.08h0c.38,0,.73-.21.92-.54.29-.52.12-1.18-.38-1.48l-.16-.1v-3.55l.26-.07h.02l.25-.08,1.75,3.08-.09.17c-.19.33-.19.75,0,1.08,0,0,0,0,0,0,.29.51.94.69,1.45.39.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54h-.19l-1.75-3.08.19-.18h0s0,0,0,0h0s.01-.02.02-.02h0s.18-.18.18-.18l.21.13,2.8,1.65v.19c0,.38.2.74.53.93.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.29-.52-.94-.69-1.45-.4l-.16.1-.16-.1-2.86-1.68.07-.25s0-.02,0-.02c0,0,0-.02,0-.03l.07-.24h3.49l.1.17c.09.16.23.3.39.4.51.3,1.16.12,1.45-.4.29-.52.12-1.18-.39-1.47Z" fill="#afe61e"/>
</g>
<path d="m49,39c-5.52,0-10,4.48-10,10s4.48,10,10,10,10-4.48,10-10-4.48-10-10-10Z" fill="#21b553"/>
<path d="m52.42,48.23l-4.06-3.38c-.65-.54-1.64-.08-1.64.77v6.76c0,.85.99,1.31,1.64.77l4.06-3.38c.48-.4.48-1.14,0-1.54Z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM27.88,44.71h3.33v1.67c0,.92.75,1.67,1.67,1.67s1.67-.75,1.67-1.67v-1.67h3.33l-5-5-5,5ZM28.84,22.31c-.26-.15-.55-.23-.84-.23h0c-.28,0-.56.07-.81.21l-.08.05h0c-.51.32-.82.88-.81,1.49,0,.62.33,1.2.86,1.51h.01c.83.48,1.87.18,2.34-.66.47-.84.17-1.9-.65-2.38ZM47.87,26.58c-.28,5.38-5.03,9.8-10.42,9.8H15.19c-3.67,0-6.95-3.03-7.28-6.68-.28-3.14,1.52-5.89,4.17-7.06-.12-.51-.2-1.04-.2-1.59,0-3.87,3.13-7,7-7,.61,0,1.18.1,1.74.25,1.49-3.66,5.06-6.25,9.26-6.25,4.9,0,8.96,3.53,9.82,8.18,4.82.89,8.44,5.22,8.17,10.35ZM35.47,22.89c-.51-.3-1.16-.12-1.45.4l-.1.17h-3.5l-.06-.26s0,0,0,0c0,0,0,0,0,0,0,0,0-.02,0-.02l-.07-.25,3.02-1.77.16.1c.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54-.59,0-1.06.48-1.06,1.08v.19l-.16.1-2.87,1.69-.18-.2s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0h0s0,0,0,0l-.17-.18,1.74-3.07h.19c.59,0,1.06-.48,1.06-1.08,0-.6-.47-1.08-1.06-1.08-.19,0-.37.05-.53.15-.51.3-.68.96-.39,1.47l.09.17-1.74,3.08-.24-.07h0s0,0,0,0c0,0-.01,0-.02,0l-.25-.06v-3.55l.16-.1c.16-.09.3-.23.39-.39.29-.52.12-1.17-.39-1.47-.51-.3-1.15-.12-1.45.39-.29.52-.12,1.17.39,1.47l.16.1v3.56l-.25.06s0,0,0,0c0,0-.02,0-.02,0l-.25.08-1.75-3.08.09-.17c.19-.33.19-.74,0-1.08-.29-.52-.94-.69-1.45-.39-.51.3-.68.96-.39,1.47.19.33.54.54.92.54h.19l1.74,3.08-.19.19h0s-.01.02-.01.02l-.18.19-3.03-1.78v-.19c0-.39-.2-.74-.53-.93,0,0-.02-.01-.03-.01-.51-.29-1.16-.1-1.44.42-.29.52-.1,1.18.41,1.47.33.19.73.19,1.06,0l.16-.1,3.01,1.77-.06.24s0,.03-.01.05h0s-.07.26-.07.26h-3.49l-.1-.17c-.19-.33-.54-.54-.92-.54-.38,0-.73.21-.92.54-.29.52-.12,1.17.39,1.47.51.3,1.16.12,1.45-.4l.1-.17h3.5l.06.26s0,0,0,0c0,0,0,0,0,.01l.07.26-3.02,1.78-.16-.1c-.16-.1-.34-.15-.53-.14-.48,0-.9.33-1.03.8-.07.28-.03.57.11.82.19.33.54.54.92.54.59,0,1.06-.48,1.06-1.08v-.19l.16-.1,2.85-1.68.18.17h0s0,0,0,0c.01.01.02.02.04.03l.18.18-.13.22-1.62,2.85h-.19c-.38,0-.73.21-.92.54-.29.52-.12,1.18.39,1.47.33.19.74.19,1.06,0,.51-.3.68-.96.38-1.47l-.09-.17,1.74-3.07.26.07h.01s0,0,0,0h0s.25.07.25.07v3.55l-.16.1c-.33.19-.53.55-.53.93,0,.6.47,1.08,1.06,1.08h0c.38,0,.73-.21.92-.54.29-.52.12-1.18-.38-1.48l-.16-.1v-3.55l.26-.07h.02l.25-.08,1.75,3.08-.09.17c-.19.33-.19.75,0,1.08,0,0,0,0,0,0,.29.51.94.69,1.45.39.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54h-.19l-1.75-3.08.19-.18h0s0,0,0,0h0s.01-.02.02-.02h0s.18-.18.18-.18l.21.13,2.8,1.65v.19c0,.38.2.74.53.93.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.29-.52-.94-.69-1.45-.4l-.16.1-.16-.1-2.86-1.68.07-.25s0-.02,0-.02c0,0,0-.02,0-.03l.07-.24h3.49l.1.17c.09.16.23.3.39.4.51.3,1.16.12,1.45-.4.29-.52.12-1.18-.39-1.47Z" fill="#afe61e"/>
</g>
<path d="m49,39c-5.52,0-10,4.48-10,10s4.48,10,10,10,10-4.48,10-10-4.48-10-10-10Z" fill="#50beff"/>
<path id="idle-s" d="m50.44,49.24v-4.48c0-.67-.55-1.22-1.22-1.22s-1.22.55-1.22,1.22v4.88s.01.04.01.05c-.01.33.1.66.35.91l4.31,3.61c.12.09.34.25.56.25.43,0,.77-.35.77-.77,0-.21-.1-.39-.23-.55l-3.33-3.91Z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<style>
@keyframes anim {
from {
r: 2px;
}
to {
r: 6px;
}
to {
r: 8px;
}
}
.circle {
animation-name: anim;
animation-duration: 1.2s;
animation-iteration-count: infinite;
}
</style>
<g>
<path d="M27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM27.88,44.71h3.33v1.67c0,.92.75,1.67,1.67,1.67s1.67-.75,1.67-1.67v-1.67h3.33l-5-5-5,5ZM28.84,22.31c-.26-.15-.55-.23-.84-.23h0c-.28,0-.56.07-.81.21l-.08.05h0c-.51.32-.82.88-.81,1.49,0,.62.33,1.2.86,1.51h.01c.83.48,1.87.18,2.34-.66.47-.84.17-1.9-.65-2.38ZM47.87,26.58c-.28,5.38-5.03,9.8-10.42,9.8H15.19c-3.67,0-6.95-3.03-7.28-6.68-.28-3.14,1.52-5.89,4.17-7.06-.12-.51-.2-1.04-.2-1.59,0-3.87,3.13-7,7-7,.61,0,1.18.1,1.74.25,1.49-3.66,5.06-6.25,9.26-6.25,4.9,0,8.96,3.53,9.82,8.18,4.82.89,8.44,5.22,8.17,10.35ZM35.47,22.89c-.51-.3-1.16-.12-1.45.4l-.1.17h-3.5l-.06-.26s0,0,0,0c0,0,0,0,0,0,0,0,0-.02,0-.02l-.07-.25,3.02-1.77.16.1c.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54-.59,0-1.06.48-1.06,1.08v.19l-.16.1-2.87,1.69-.18-.2s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0h0s0,0,0,0l-.17-.18,1.74-3.07h.19c.59,0,1.06-.48,1.06-1.08,0-.6-.47-1.08-1.06-1.08-.19,0-.37.05-.53.15-.51.3-.68.96-.39,1.47l.09.17-1.74,3.08-.24-.07h0s0,0,0,0c0,0-.01,0-.02,0l-.25-.06v-3.55l.16-.1c.16-.09.3-.23.39-.39.29-.52.12-1.17-.39-1.47-.51-.3-1.15-.12-1.45.39-.29.52-.12,1.17.39,1.47l.16.1v3.56l-.25.06s0,0,0,0c0,0-.02,0-.02,0l-.25.08-1.75-3.08.09-.17c.19-.33.19-.74,0-1.08-.29-.52-.94-.69-1.45-.39-.51.3-.68.96-.39,1.47.19.33.54.54.92.54h.19l1.74,3.08-.19.19h0s-.01.02-.01.02l-.18.19-3.03-1.78v-.19c0-.39-.2-.74-.53-.93,0,0-.02-.01-.03-.01-.51-.29-1.16-.1-1.44.42-.29.52-.1,1.18.41,1.47.33.19.73.19,1.06,0l.16-.1,3.01,1.77-.06.24s0,.03-.01.05h0s-.07.26-.07.26h-3.49l-.1-.17c-.19-.33-.54-.54-.92-.54-.38,0-.73.21-.92.54-.29.52-.12,1.17.39,1.47.51.3,1.16.12,1.45-.4l.1-.17h3.5l.06.26s0,0,0,0c0,0,0,0,0,.01l.07.26-3.02,1.78-.16-.1c-.16-.1-.34-.15-.53-.14-.48,0-.9.33-1.03.8-.07.28-.03.57.11.82.19.33.54.54.92.54.59,0,1.06-.48,1.06-1.08v-.19l.16-.1,2.85-1.68.18.17h0s0,0,0,0c.01.01.02.02.04.03l.18.18-.13.22-1.62,2.85h-.19c-.38,0-.73.21-.92.54-.29.52-.12,1.18.39,1.47.33.19.74.19,1.06,0,.51-.3.68-.96.38-1.47l-.09-.17,1.74-3.07.26.07h.01s0,0,0,0h0s.25.07.25.07v3.55l-.16.1c-.33.19-.53.55-.53.93,0,.6.47,1.08,1.06,1.08h0c.38,0,.73-.21.92-.54.29-.52.12-1.18-.38-1.48l-.16-.1v-3.55l.26-.07h.02l.25-.08,1.75,3.08-.09.17c-.19.33-.19.75,0,1.08,0,0,0,0,0,0,.29.51.94.69,1.45.39.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54h-.19l-1.75-3.08.19-.18h0s0,0,0,0h0s.01-.02.02-.02h0s.18-.18.18-.18l.21.13,2.8,1.65v.19c0,.38.2.74.53.93.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.29-.52-.94-.69-1.45-.4l-.16.1-.16-.1-2.86-1.68.07-.25s0-.02,0-.02c0,0,0-.02,0-.03l.07-.24h3.49l.1.17c.09.16.23.3.39.4.51.3,1.16.12,1.45-.4.29-.52.12-1.18-.39-1.47Z" fill="#afe61e"/>
</g>
<circle class="circle" cx="16" cy="16" r="8" fill="#D3FF00" style="transform: translate(33px, 33px)" />
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<g>
<path d="M27.88,43.04l-5,5-5-5h3.33v-1.67c0-.92.75-1.67,1.67-1.67s1.67.75,1.67,1.67v1.67h3.33ZM27.88,44.71h3.33v1.67c0,.92.75,1.67,1.67,1.67s1.67-.75,1.67-1.67v-1.67h3.33l-5-5-5,5ZM28.84,22.31c-.26-.15-.55-.23-.84-.23h0c-.28,0-.56.07-.81.21l-.08.05h0c-.51.32-.82.88-.81,1.49,0,.62.33,1.2.86,1.51h.01c.83.48,1.87.18,2.34-.66.47-.84.17-1.9-.65-2.38ZM47.87,26.58c-.28,5.38-5.03,9.8-10.42,9.8H15.19c-3.67,0-6.95-3.03-7.28-6.68-.28-3.14,1.52-5.89,4.17-7.06-.12-.51-.2-1.04-.2-1.59,0-3.87,3.13-7,7-7,.61,0,1.18.1,1.74.25,1.49-3.66,5.06-6.25,9.26-6.25,4.9,0,8.96,3.53,9.82,8.18,4.82.89,8.44,5.22,8.17,10.35ZM35.47,22.89c-.51-.3-1.16-.12-1.45.4l-.1.17h-3.5l-.06-.26s0,0,0,0c0,0,0,0,0,0,0,0,0-.02,0-.02l-.07-.25,3.02-1.77.16.1c.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54-.59,0-1.06.48-1.06,1.08v.19l-.16.1-2.87,1.69-.18-.2s0,0,0,0c0,0,0,0,0,0h0s0,0,0,0h0s0,0,0,0l-.17-.18,1.74-3.07h.19c.59,0,1.06-.48,1.06-1.08,0-.6-.47-1.08-1.06-1.08-.19,0-.37.05-.53.15-.51.3-.68.96-.39,1.47l.09.17-1.74,3.08-.24-.07h0s0,0,0,0c0,0-.01,0-.02,0l-.25-.06v-3.55l.16-.1c.16-.09.3-.23.39-.39.29-.52.12-1.17-.39-1.47-.51-.3-1.15-.12-1.45.39-.29.52-.12,1.17.39,1.47l.16.1v3.56l-.25.06s0,0,0,0c0,0-.02,0-.02,0l-.25.08-1.75-3.08.09-.17c.19-.33.19-.74,0-1.08-.29-.52-.94-.69-1.45-.39-.51.3-.68.96-.39,1.47.19.33.54.54.92.54h.19l1.74,3.08-.19.19h0s-.01.02-.01.02l-.18.19-3.03-1.78v-.19c0-.39-.2-.74-.53-.93,0,0-.02-.01-.03-.01-.51-.29-1.16-.1-1.44.42-.29.52-.1,1.18.41,1.47.33.19.73.19,1.06,0l.16-.1,3.01,1.77-.06.24s0,.03-.01.05h0s-.07.26-.07.26h-3.49l-.1-.17c-.19-.33-.54-.54-.92-.54-.38,0-.73.21-.92.54-.29.52-.12,1.17.39,1.47.51.3,1.16.12,1.45-.4l.1-.17h3.5l.06.26s0,0,0,0c0,0,0,0,0,.01l.07.26-3.02,1.78-.16-.1c-.16-.1-.34-.15-.53-.14-.48,0-.9.33-1.03.8-.07.28-.03.57.11.82.19.33.54.54.92.54.59,0,1.06-.48,1.06-1.08v-.19l.16-.1,2.85-1.68.18.17h0s0,0,0,0c.01.01.02.02.04.03l.18.18-.13.22-1.62,2.85h-.19c-.38,0-.73.21-.92.54-.29.52-.12,1.18.39,1.47.33.19.74.19,1.06,0,.51-.3.68-.96.38-1.47l-.09-.17,1.74-3.07.26.07h.01s0,0,0,0h0s.25.07.25.07v3.55l-.16.1c-.33.19-.53.55-.53.93,0,.6.47,1.08,1.06,1.08h0c.38,0,.73-.21.92-.54.29-.52.12-1.18-.38-1.48l-.16-.1v-3.55l.26-.07h.02l.25-.08,1.75,3.08-.09.17c-.19.33-.19.75,0,1.08,0,0,0,0,0,0,.29.51.94.69,1.45.39.51-.3.68-.96.39-1.47-.19-.33-.54-.54-.92-.54h-.19l-1.75-3.08.19-.18h0s0,0,0,0h0s.01-.02.02-.02h0s.18-.18.18-.18l.21.13,2.8,1.65v.19c0,.38.2.74.53.93.33.19.73.19,1.06,0,.51-.3.68-.96.39-1.47-.29-.52-.94-.69-1.45-.4l-.16.1-.16-.1-2.86-1.68.07-.25s0-.02,0-.02c0,0,0-.02,0-.03l.07-.24h3.49l.1.17c.09.16.23.3.39.4.51.3,1.16.12,1.45-.4.29-.52.12-1.18-.39-1.47Z" fill="#afe61e"/>
</g>
<path d="M49 39C43.48 39 39 43.48 39 49C39 54.52 43.48 59 49 59C54.52 59 59 54.52 59 49C59 43.48 54.52 39 49 39Z" fill="#50BEFF"/>
<rect x="45" y="45" width="8" height="8" rx="1" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB