update README.md

This commit is contained in:
root
2024-07-15 21:02:58 +08:00
parent 6edf083d4f
commit 0760882aae
9 changed files with 2082 additions and 14 deletions

182
README.md
View File

@@ -36,27 +36,167 @@ TensorNEAT is a JAX-based libaray for NeuroEvolution of Augmenting Topologies (N
- Compatible with **EvoX** for multi-device and distributed support. - Compatible with **EvoX** for multi-device and distributed support.
- Test neuroevolution algorithms on advanced **RL tasks** (Brax, Gymnax). - Test neuroevolution algorithms on advanced **RL tasks** (Brax, Gymnax).
## Installation ## Examples
### Solving RL Tasks
Using the NEAT algorithm to solve RL tasks. Here are some results:
1. Install the correct version of [JAX](https://github.com/google/jax). We recommend `jax >= 0.4.28`. The following animations show the behaviors in Brax environments:
<div style="display: flex; justify-content: space-around; align-items: center;">
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/halfcheetah_animation_200.gif" alt="halfcheetah_animation" width="200">
<figcaption>halfcheetah</figcaption>
</figure>
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/hopper_animation_200.gif" alt="hopper" width="200">
<figcaption>hopper</figcaption>
</figure>
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/walker2d_animation_200.gif" alt="walker2d" width="200">
<figcaption>walker2d</figcaption>
</figure>
</div>
For cpu version only, you may use: The following graphs show the network of the control policy generated by the NEAT algorithm:
<div style="display: flex; justify-content: space-around; align-items: center;">
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/halfcheetah_network.svg" alt="halfcheetah_network">
<figcaption>halfcheetah</figcaption>
</figure>
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/hopper_network.svg" alt="hopper_network">
<figcaption>hopper</figcaption>
</figure>
<figure style="text-align: center; margin: 10px;">
<img src="./imgs/walker2d_network.svg" alt="walker2d_network">
<figcaption>walker2d</figcaption>
</figure>
</div>
You can use these codes for running RL task (Brax Hopper) in TensorNEAT:
```python
# Import necessary modules
from tensorneat.pipeline import Pipeline
from tensorneat.algorithm.neat import NEAT
from tensorneat.genome import DefaultGenome, BiasNode
from tensorneat.problem.rl import BraxEnv
from tensorneat.common import ACT, AGG
# define the pipeline
pipeline = Pipeline(
algorithm=NEAT(
pop_size=1000,
species_size=20,
survival_threshold=0.1,
compatibility_threshold=1.0,
genome=DefaultGenome(
num_inputs=11,
num_outputs=3,
init_hidden_layers=(),
node_gene=BiasNode(
activation_options=ACT.tanh,
aggregation_options=AGG.sum,
),
output_transform=ACT.tanh,
),
),
problem=BraxEnv(
env_name="hopper",
max_step=1000,
),
seed=42,
generation_limit=100,
fitness_target=5000,
)
# initialize state
state = pipeline.setup()
# run until terminate
state, best = pipeline.auto_run(state)
``` ```
pip install -U jax More example about RL tasks in TensorNEAT are shown in `./examples/brax` and `./examples/gymnax`.
## Solving Function Fitting Tasks (Symbolic Regression)
You can define your custom function and use the NEAT algorithm to solve the function fitting task.
1. Import necessary modules.
```python
import jax, jax.numpy as jnp
from tensorneat.pipeline import Pipeline
from tensorneat.algorithm.neat import NEAT
from tensorneat.genome import DefaultGenome, BiasNode
from tensorneat.problem.func_fit import CustomFuncFit
from tensorneat.common import ACT, AGG
``` ```
For nvidia gpus, you may use: 2. Define a custom function to be fit, and then create the function fitting problem.
``` ```python
pip install -U "jax[cuda12]" def pagie_polynomial(inputs):
``` x, y = inputs
For details of installing jax, please check https://github.com/google/jax. res = 1 / (1 + jnp.pow(x, -4)) + 1 / (1 + jnp.pow(y, -4))
# important! returns an array with one item, NOT a scalar
return jnp.array([res])
2. Install `tensorneat` from the GitHub source code: custom_problem = CustomFuncFit(
func=pagie_polynomial,
low_bounds=[-1, -1],
upper_bounds=[1, 1],
method="sample",
num_samples=100,
)
``` ```
pip install git+https://github.com/EMI-Group/tensorneat.git
3. Define custom activation function for the NEAT algorithm:
```python
def square(x):
return x ** 2
ACT.add_func("square", square)
``` ```
4. Define the NEAT algorithm:
```python
algorithm=NEAT(
pop_size=10000,
species_size=20,
survival_threshold=0.01,
genome=DefaultGenome(
num_inputs=2,
num_outputs=1,
init_hidden_layers=(),
node_gene=BiasNode(
# using (identity, inversion, squre)
# as possible activation funcion
activation_options=[ACT.identity, ACT.inv, ACT.square],
# using (sum, product) as possible aggregation funcion
aggregation_options=[AGG.sum, AGG.product],
),
output_transform=ACT.identity,
),
)
```
5. Define the Pipeline and then run it!
```python
pipeline = Pipeline(
algorithm=algorithm,
problem=custom_problem,
generation_limit=50,
fitness_target=-1e-4,
seed=42,
)
# initialize state
state = pipeline.setup()
# run until terminate
state, best = pipeline.auto_run(state)
# show result
pipeline.show(state, best)
```
More example about function fitting tasks in TensorNEAT are shown in `./examples/func_fit`.
## Basic API Usage ## Basic API Usage
Start your journey with TensorNEAT in a few simple steps: Start your journey with TensorNEAT in a few simple steps:
@@ -189,6 +329,26 @@ Using this code, you can run the NEAT algorithm within EvoX and leverage EvoX's
For a complete example, see `./example/with_evox/walker2d_evox.py`, which demonstrates EvoX's multi-device functionality. For a complete example, see `./example/with_evox/walker2d_evox.py`, which demonstrates EvoX's multi-device functionality.
## Installation
1. Install the correct version of [JAX](https://github.com/google/jax). We recommend `jax >= 0.4.28`.
For cpu version only, you may use:
```
pip install -U jax
```
For nvidia gpus, you may use:
```
pip install -U "jax[cuda12]"
```
For details of installing jax, please check https://github.com/google/jax.
2. Install `tensorneat` from the GitHub source code:
```
pip install git+https://github.com/EMI-Group/tensorneat.git
```
## Community & Support ## Community & Support

39
examples/brax/hopper.py Normal file
View File

@@ -0,0 +1,39 @@
from tensorneat.pipeline import Pipeline
from tensorneat.algorithm.neat import NEAT
from tensorneat.genome import DefaultGenome, BiasNode
from tensorneat.problem.rl import BraxEnv
from tensorneat.common import ACT, AGG
if __name__ == "__main__":
pipeline = Pipeline(
algorithm=NEAT(
pop_size=1000,
species_size=20,
survival_threshold=0.1,
compatibility_threshold=1.0,
genome=DefaultGenome(
num_inputs=11,
num_outputs=3,
init_hidden_layers=(),
node_gene=BiasNode(
activation_options=ACT.tanh,
aggregation_options=AGG.sum,
),
output_transform=ACT.tanh,
),
),
problem=BraxEnv(
env_name="hopper",
max_step=1000,
),
seed=42,
generation_limit=100,
fitness_target=5000,
)
# initialize state
state = pipeline.setup()
# print(state)
# run until terminate
state, best = pipeline.auto_run(state)

View File

@@ -2,7 +2,7 @@ import jax.numpy as jnp
from tensorneat.pipeline import Pipeline from tensorneat.pipeline import Pipeline
from tensorneat.algorithm.neat import NEAT from tensorneat.algorithm.neat import NEAT
from tensorneat.genome import DefaultGenome, DefaultNode, DefaultMutation, BiasNode from tensorneat.genome import DefaultGenome, BiasNode
from tensorneat.problem.func_fit import CustomFuncFit from tensorneat.problem.func_fit import CustomFuncFit
from tensorneat.common import ACT, AGG from tensorneat.common import ACT, AGG
@@ -55,5 +55,4 @@ if __name__ == "__main__":
# run until terminate # run until terminate
state, best = pipeline.auto_run(state) state, best = pipeline.auto_run(state)
# show result # show result
# pipeline.show(state, best) pipeline.show(state, best)
print(pipeline.algorithm.genome.repr(state, *best))

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

View File

@@ -0,0 +1,623 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="460.8pt" height="345.6pt" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2024-07-15T20:16:30.367839</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.9.0, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 345.6
L 460.8 345.6
L 460.8 0
L 0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 47.206883 310.831906
Q 135.193305 252.605597 222.247362 194.996295
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 220.915524 195.158176
L 222.247362 194.996295
L 221.577764 196.158894
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_3">
<path d="M 46.480514 276.277816
Q 87.589542 240.005144 127.860227 204.472187
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 126.563448 204.81623
L 127.860227 204.472187
L 127.357394 205.716036
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_4">
<path d="M 45.434543 258.476824
Q 87.589809 206.402672 129.04161 155.197506
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 127.820225 155.752681
L 129.04161 155.197506
L 128.752919 156.507719
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_5">
<path d="M 47.061609 260.212418
Q 87.589371 231.604586 127.203736 203.641505
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 125.877365 203.843344
L 127.203736 203.641505
L 126.569384 204.823705
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_6">
<path d="M 48.297889 245.960806
Q 182.799136 206.401615 316.227779 167.157897
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 314.907241 166.920877
L 316.227779 167.157897
L 315.245841 168.072116
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_7">
<path d="M 47.642704 244.352112
Q 87.590643 223.203204 126.550477 202.577409
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 125.209199 202.608602
L 126.550477 202.577409
L 125.770664 203.669147
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_8">
<path d="M 48.154068 228.72151
Q 87.589776 214.803025 125.971188 201.256644
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 124.639908 201.090234
L 125.971188 201.256644
L 125.039292 202.221823
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_9">
<path d="M 48.514347 213.298052
Q 87.588427 206.402626 125.561486 199.701498
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 124.275474 199.31917
L 125.561486 199.701498
L 124.484017 200.50091
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_10">
<path d="M 48.647998 198.00175
Q 87.590519 198.00175 125.415005 198.00175
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 124.215005 197.40175
L 125.415005 198.00175
L 124.215005 198.60175
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_11">
<path d="M 48.647998 181.200583
Q 87.590519 181.200583 125.415005 181.200583
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 124.215005 180.600583
L 125.415005 181.200583
L 124.215005 181.800583
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_12">
<path d="M 48.154068 167.28199
Q 87.589776 181.200475 125.971188 194.746856
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 125.039292 193.781678
L 125.971188 194.746856
L 124.639908 194.913266
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_13">
<path d="M 47.061609 135.791082
Q 87.589371 164.398915 127.203736 192.361995
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 126.569384 191.179795
L 127.203736 192.361995
L 125.877365 192.160156
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_14">
<path d="M 48.444615 132.662783
Q 135.19521 151.798943 220.854018 170.694269
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.811435 169.849863
L 220.854018 170.694269
L 219.552944 171.021691
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_15">
<path d="M 46.480514 119.725684
Q 87.589542 155.998357 127.860227 191.531313
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 127.357394 190.287464
L 127.860227 191.531313
L 126.563448 191.18727
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_16">
<path d="M 46.480514 86.123351
Q 87.589542 122.396023 127.860227 157.92898
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 127.357394 156.685131
L 127.860227 157.92898
L 126.563448 157.584936
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_17">
<path d="M 48.149709 66.473451
Q 182.794799 113.995247 316.385593 161.14494
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 315.453697 160.179761
L 316.385593 161.14494
L 315.054313 161.31135
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_18">
<path d="M 44.602124 54.121507
Q 87.589985 122.396344 129.982142 189.725065
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 129.850506 188.389897
L 129.982142 189.725065
L 128.835026 189.029273
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_19">
<path d="M 44.256373 37.524663
Q 87.590075 113.995903 130.372573 189.494429
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 130.302971 188.154595
L 130.372573 189.494429
L 129.258945 188.74621
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_20">
<path d="M 143.819744 198.762899
Q 182.796448 202.20202 220.659446 205.542873
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.516826 204.839722
L 220.659446 205.542873
L 219.411353 206.035078
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_21">
<path d="M 142.558768 193.452545
Q 182.79476 168.600903 222.07953 144.33678
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 220.743277 144.456893
L 222.07953 144.33678
L 221.373868 145.477851
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_22">
<path d="M 143.116619 194.506207
Q 182.79609 177.000558 221.452651 159.946193
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 220.112565 159.881611
L 221.452651 159.946193
L 220.596933 160.979512
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_23">
<path d="M 143.819744 197.240601
Q 182.796448 193.80148 220.659446 190.460627
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.411353 189.968422
L 220.659446 190.460627
L 219.516826 191.163778
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_24">
<path d="M 143.818292 197.240729
Q 278.002505 185.400946 411.073011 173.659431
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.824919 173.167225
L 411.073011 173.659431
L 409.930391 174.362581
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_25">
<path d="M 143.564062 195.785983
Q 182.796321 185.400974 220.94777 175.302061
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.634188 175.029109
L 220.94777 175.302061
L 219.941259 176.189155
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_26">
<path d="M 142.558768 152.147455
Q 182.79476 176.999097 222.07953 201.26322
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 221.373868 200.122149
L 222.07953 201.26322
L 220.743277 201.143107
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_27">
<path d="M 239.026356 156.759982
Q 278.00306 160.199103 315.866057 163.539956
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 314.723438 162.836805
L 315.866057 163.539956
L 314.617965 164.032161
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_28">
<path d="M 238.323231 142.69321
Q 278.002701 160.198858 316.659262 177.253223
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 315.803545 176.219904
L 316.659262 177.253223
L 315.319177 177.317806
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_29">
<path d="M 334.232967 180.439434
Q 373.209672 177.000313 411.072669 173.659461
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.824577 173.167255
L 411.072669 173.659461
L 409.930049 174.362611
" clip-path="url(#p9c7e32ac4e)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="PathCollection_1">
<path d="M 39.986777 324.270171
C 42.283503 324.270171 44.486471 323.357672 46.110501 321.733642
C 47.734532 320.109611 48.647031 317.906644 48.647031 315.609917
C 48.647031 313.313191 47.734532 311.110224 46.110501 309.486193
C 44.486471 307.862162 42.283503 306.949663 39.986777 306.949663
C 37.690051 306.949663 35.487083 307.862162 33.863053 309.486193
C 32.239022 311.110224 31.326523 313.313191 31.326523 315.609917
C 31.326523 317.906644 32.239022 320.109611 33.863053 321.733642
C 35.487083 323.357672 37.690051 324.270171 39.986777 324.270171
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 307.469005
C 42.283503 307.469005 44.486471 306.556506 46.110501 304.932475
C 47.734532 303.308444 48.647031 301.105477 48.647031 298.808751
C 48.647031 296.512024 47.734532 294.309057 46.110501 292.685026
C 44.486471 291.060996 42.283503 290.148497 39.986777 290.148497
C 37.690051 290.148497 35.487083 291.060996 33.863053 292.685026
C 32.239022 294.309057 31.326523 296.512024 31.326523 298.808751
C 31.326523 301.105477 32.239022 303.308444 33.863053 304.932475
C 35.487083 306.556506 37.690051 307.469005 39.986777 307.469005
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 290.667838
C 42.283503 290.667838 44.486471 289.755339 46.110501 288.131308
C 47.734532 286.507278 48.647031 284.30431 48.647031 282.007584
C 48.647031 279.710858 47.734532 277.50789 46.110501 275.88386
C 44.486471 274.259829 42.283503 273.34733 39.986777 273.34733
C 37.690051 273.34733 35.487083 274.259829 33.863053 275.88386
C 32.239022 277.50789 31.326523 279.710858 31.326523 282.007584
C 31.326523 284.30431 32.239022 286.507278 33.863053 288.131308
C 35.487083 289.755339 37.690051 290.667838 39.986777 290.667838
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 273.866671
C 42.283503 273.866671 44.486471 272.954172 46.110501 271.330141
C 47.734532 269.706111 48.647031 267.503143 48.647031 265.206417
C 48.647031 262.909691 47.734532 260.706723 46.110501 259.082693
C 44.486471 257.458662 42.283503 256.546163 39.986777 256.546163
C 37.690051 256.546163 35.487083 257.458662 33.863053 259.082693
C 32.239022 260.706723 31.326523 262.909691 31.326523 265.206417
C 31.326523 267.503143 32.239022 269.706111 33.863053 271.330141
C 35.487083 272.954172 37.690051 273.866671 39.986777 273.866671
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 257.065504
C 42.283503 257.065504 44.486471 256.153005 46.110501 254.528975
C 47.734532 252.904944 48.647031 250.701977 48.647031 248.40525
C 48.647031 246.108524 47.734532 243.905557 46.110501 242.281526
C 44.486471 240.657495 42.283503 239.744996 39.986777 239.744996
C 37.690051 239.744996 35.487083 240.657495 33.863053 242.281526
C 32.239022 243.905557 31.326523 246.108524 31.326523 248.40525
C 31.326523 250.701977 32.239022 252.904944 33.863053 254.528975
C 35.487083 256.153005 37.690051 257.065504 39.986777 257.065504
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 240.264338
C 42.283503 240.264338 44.486471 239.351839 46.110501 237.727808
C 47.734532 236.103777 48.647031 233.90081 48.647031 231.604084
C 48.647031 229.307357 47.734532 227.10439 46.110501 225.480359
C 44.486471 223.856329 42.283503 222.94383 39.986777 222.94383
C 37.690051 222.94383 35.487083 223.856329 33.863053 225.480359
C 32.239022 227.10439 31.326523 229.307357 31.326523 231.604084
C 31.326523 233.90081 32.239022 236.103777 33.863053 237.727808
C 35.487083 239.351839 37.690051 240.264338 39.986777 240.264338
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 223.463171
C 42.283503 223.463171 44.486471 222.550672 46.110501 220.926641
C 47.734532 219.302611 48.647031 217.099643 48.647031 214.802917
C 48.647031 212.506191 47.734532 210.303223 46.110501 208.679193
C 44.486471 207.055162 42.283503 206.142663 39.986777 206.142663
C 37.690051 206.142663 35.487083 207.055162 33.863053 208.679193
C 32.239022 210.303223 31.326523 212.506191 31.326523 214.802917
C 31.326523 217.099643 32.239022 219.302611 33.863053 220.926641
C 35.487083 222.550672 37.690051 223.463171 39.986777 223.463171
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 206.662004
C 42.283503 206.662004 44.486471 205.749505 46.110501 204.125474
C 47.734532 202.501444 48.647031 200.298476 48.647031 198.00175
C 48.647031 195.705024 47.734532 193.502056 46.110501 191.878026
C 44.486471 190.253995 42.283503 189.341496 39.986777 189.341496
C 37.690051 189.341496 35.487083 190.253995 33.863053 191.878026
C 32.239022 193.502056 31.326523 195.705024 31.326523 198.00175
C 31.326523 200.298476 32.239022 202.501444 33.863053 204.125474
C 35.487083 205.749505 37.690051 206.662004 39.986777 206.662004
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 189.860837
C 42.283503 189.860837 44.486471 188.948338 46.110501 187.324308
C 47.734532 185.700277 48.647031 183.49731 48.647031 181.200583
C 48.647031 178.903857 47.734532 176.70089 46.110501 175.076859
C 44.486471 173.452828 42.283503 172.540329 39.986777 172.540329
C 37.690051 172.540329 35.487083 173.452828 33.863053 175.076859
C 32.239022 176.70089 31.326523 178.903857 31.326523 181.200583
C 31.326523 183.49731 32.239022 185.700277 33.863053 187.324308
C 35.487083 188.948338 37.690051 189.860837 39.986777 189.860837
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 173.059671
C 42.283503 173.059671 44.486471 172.147172 46.110501 170.523141
C 47.734532 168.89911 48.647031 166.696143 48.647031 164.399417
C 48.647031 162.10269 47.734532 159.899723 46.110501 158.275692
C 44.486471 156.651662 42.283503 155.739163 39.986777 155.739163
C 37.690051 155.739163 35.487083 156.651662 33.863053 158.275692
C 32.239022 159.899723 31.326523 162.10269 31.326523 164.399417
C 31.326523 166.696143 32.239022 168.89911 33.863053 170.523141
C 35.487083 172.147172 37.690051 173.059671 39.986777 173.059671
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 156.258504
C 42.283503 156.258504 44.486471 155.346005 46.110501 153.721974
C 47.734532 152.097944 48.647031 149.894976 48.647031 147.59825
C 48.647031 145.301524 47.734532 143.098556 46.110501 141.474526
C 44.486471 139.850495 42.283503 138.937996 39.986777 138.937996
C 37.690051 138.937996 35.487083 139.850495 33.863053 141.474526
C 32.239022 143.098556 31.326523 145.301524 31.326523 147.59825
C 31.326523 149.894976 32.239022 152.097944 33.863053 153.721974
C 35.487083 155.346005 37.690051 156.258504 39.986777 156.258504
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 139.457337
C 42.283503 139.457337 44.486471 138.544838 46.110501 136.920807
C 47.734532 135.296777 48.647031 133.093809 48.647031 130.797083
C 48.647031 128.500357 47.734532 126.297389 46.110501 124.673359
C 44.486471 123.049328 42.283503 122.136829 39.986777 122.136829
C 37.690051 122.136829 35.487083 123.049328 33.863053 124.673359
C 32.239022 126.297389 31.326523 128.500357 31.326523 130.797083
C 31.326523 133.093809 32.239022 135.296777 33.863053 136.920807
C 35.487083 138.544838 37.690051 139.457337 39.986777 139.457337
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 122.65617
C 42.283503 122.65617 44.486471 121.743671 46.110501 120.119641
C 47.734532 118.49561 48.647031 116.292643 48.647031 113.995916
C 48.647031 111.69919 47.734532 109.496223 46.110501 107.872192
C 44.486471 106.248161 42.283503 105.335662 39.986777 105.335662
C 37.690051 105.335662 35.487083 106.248161 33.863053 107.872192
C 32.239022 109.496223 31.326523 111.69919 31.326523 113.995916
C 31.326523 116.292643 32.239022 118.49561 33.863053 120.119641
C 35.487083 121.743671 37.690051 122.65617 39.986777 122.65617
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 105.855004
C 42.283503 105.855004 44.486471 104.942505 46.110501 103.318474
C 47.734532 101.694443 48.647031 99.491476 48.647031 97.19475
C 48.647031 94.898023 47.734532 92.695056 46.110501 91.071025
C 44.486471 89.446995 42.283503 88.534496 39.986777 88.534496
C 37.690051 88.534496 35.487083 89.446995 33.863053 91.071025
C 32.239022 92.695056 31.326523 94.898023 31.326523 97.19475
C 31.326523 99.491476 32.239022 101.694443 33.863053 103.318474
C 35.487083 104.942505 37.690051 105.855004 39.986777 105.855004
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 89.053837
C 42.283503 89.053837 44.486471 88.141338 46.110501 86.517307
C 47.734532 84.893277 48.647031 82.690309 48.647031 80.393583
C 48.647031 78.096857 47.734532 75.893889 46.110501 74.269859
C 44.486471 72.645828 42.283503 71.733329 39.986777 71.733329
C 37.690051 71.733329 35.487083 72.645828 33.863053 74.269859
C 32.239022 75.893889 31.326523 78.096857 31.326523 80.393583
C 31.326523 82.690309 32.239022 84.893277 33.863053 86.517307
C 35.487083 88.141338 37.690051 89.053837 39.986777 89.053837
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 72.25267
C 42.283503 72.25267 44.486471 71.340171 46.110501 69.71614
C 47.734532 68.09211 48.647031 65.889142 48.647031 63.592416
C 48.647031 61.29569 47.734532 59.092722 46.110501 57.468692
C 44.486471 55.844661 42.283503 54.932162 39.986777 54.932162
C 37.690051 54.932162 35.487083 55.844661 33.863053 57.468692
C 32.239022 59.092722 31.326523 61.29569 31.326523 63.592416
C 31.326523 65.889142 32.239022 68.09211 33.863053 69.71614
C 35.487083 71.340171 37.690051 72.25267 39.986777 72.25267
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 55.451503
C 42.283503 55.451503 44.486471 54.539004 46.110501 52.914974
C 47.734532 51.290943 48.647031 49.087976 48.647031 46.791249
C 48.647031 44.494523 47.734532 42.291556 46.110501 40.667525
C 44.486471 39.043494 42.283503 38.130995 39.986777 38.130995
C 37.690051 38.130995 35.487083 39.043494 33.863053 40.667525
C 32.239022 42.291556 31.326523 44.494523 31.326523 46.791249
C 31.326523 49.087976 32.239022 51.290943 33.863053 52.914974
C 35.487083 54.539004 37.690051 55.451503 39.986777 55.451503
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 38.650337
C 42.283503 38.650337 44.486471 37.737838 46.110501 36.113807
C 47.734532 34.489776 48.647031 32.286809 48.647031 29.990083
C 48.647031 27.693356 47.734532 25.490389 46.110501 23.866358
C 44.486471 22.242328 42.283503 21.329829 39.986777 21.329829
C 37.690051 21.329829 35.487083 22.242328 33.863053 23.866358
C 32.239022 25.490389 31.326523 27.693356 31.326523 29.990083
C 31.326523 32.286809 32.239022 34.489776 33.863053 36.113807
C 35.487083 37.737838 37.690051 38.650337 39.986777 38.650337
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 135.193388 206.662004
C 137.490115 206.662004 139.693082 205.749505 141.317113 204.125474
C 142.941143 202.501444 143.853642 200.298476 143.853642 198.00175
C 143.853642 195.705024 142.941143 193.502056 141.317113 191.878026
C 139.693082 190.253995 137.490115 189.341496 135.193388 189.341496
C 132.896662 189.341496 130.693695 190.253995 129.069664 191.878026
C 127.445633 193.502056 126.533134 195.705024 126.533134 198.00175
C 126.533134 200.298476 127.445633 202.501444 129.069664 204.125474
C 130.693695 205.749505 132.896662 206.662004 135.193388 206.662004
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 135.193388 189.860837
C 137.490115 189.860837 139.693082 188.948338 141.317113 187.324308
C 142.941143 185.700277 143.853642 183.49731 143.853642 181.200583
C 143.853642 178.903857 142.941143 176.70089 141.317113 175.076859
C 139.693082 173.452828 137.490115 172.540329 135.193388 172.540329
C 132.896662 172.540329 130.693695 173.452828 129.069664 175.076859
C 127.445633 176.70089 126.533134 178.903857 126.533134 181.200583
C 126.533134 183.49731 127.445633 185.700277 129.069664 187.324308
C 130.693695 188.948338 132.896662 189.860837 135.193388 189.860837
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 135.193388 173.059671
C 137.490115 173.059671 139.693082 172.147172 141.317113 170.523141
C 142.941143 168.89911 143.853642 166.696143 143.853642 164.399417
C 143.853642 162.10269 142.941143 159.899723 141.317113 158.275692
C 139.693082 156.651662 137.490115 155.739163 135.193388 155.739163
C 132.896662 155.739163 130.693695 156.651662 129.069664 158.275692
C 127.445633 159.899723 126.533134 162.10269 126.533134 164.399417
C 126.533134 166.696143 127.445633 168.89911 129.069664 170.523141
C 130.693695 172.147172 132.896662 173.059671 135.193388 173.059671
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 135.193388 156.258504
C 137.490115 156.258504 139.693082 155.346005 141.317113 153.721974
C 142.941143 152.097944 143.853642 149.894976 143.853642 147.59825
C 143.853642 145.301524 142.941143 143.098556 141.317113 141.474526
C 139.693082 139.850495 137.490115 138.937996 135.193388 138.937996
C 132.896662 138.937996 130.693695 139.850495 129.069664 141.474526
C 127.445633 143.098556 126.533134 145.301524 126.533134 147.59825
C 126.533134 149.894976 127.445633 152.097944 129.069664 153.721974
C 130.693695 155.346005 132.896662 156.258504 135.193388 156.258504
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 230.4 215.062588
C 232.696726 215.062588 234.899694 214.150089 236.523724 212.526058
C 238.147755 210.902027 239.060254 208.69906 239.060254 206.402333
C 239.060254 204.105607 238.147755 201.90264 236.523724 200.278609
C 234.899694 198.654578 232.696726 197.742079 230.4 197.742079
C 228.103274 197.742079 225.900306 198.654578 224.276276 200.278609
C 222.652245 201.90264 221.739746 204.105607 221.739746 206.402333
C 221.739746 208.69906 222.652245 210.902027 224.276276 212.526058
C 225.900306 214.150089 228.103274 215.062588 230.4 215.062588
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 230.4 198.261421
C 232.696726 198.261421 234.899694 197.348922 236.523724 195.724891
C 238.147755 194.10086 239.060254 191.897893 239.060254 189.601167
C 239.060254 187.304441 238.147755 185.101473 236.523724 183.477442
C 234.899694 181.853412 232.696726 180.940913 230.4 180.940913
C 228.103274 180.940913 225.900306 181.853412 224.276276 183.477442
C 222.652245 185.101473 221.739746 187.304441 221.739746 189.601167
C 221.739746 191.897893 222.652245 194.10086 224.276276 195.724891
C 225.900306 197.348922 228.103274 198.261421 230.4 198.261421
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 230.4 181.460254
C 232.696726 181.460254 234.899694 180.547755 236.523724 178.923724
C 238.147755 177.299694 239.060254 175.096726 239.060254 172.8
C 239.060254 170.503274 238.147755 168.300306 236.523724 166.676276
C 234.899694 165.052245 232.696726 164.139746 230.4 164.139746
C 228.103274 164.139746 225.900306 165.052245 224.276276 166.676276
C 222.652245 168.300306 221.739746 170.503274 221.739746 172.8
C 221.739746 175.096726 222.652245 177.299694 224.276276 178.923724
C 225.900306 180.547755 228.103274 181.460254 230.4 181.460254
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 230.4 164.659087
C 232.696726 164.659087 234.899694 163.746588 236.523724 162.122558
C 238.147755 160.498527 239.060254 158.295559 239.060254 155.998833
C 239.060254 153.702107 238.147755 151.49914 236.523724 149.875109
C 234.899694 148.251078 232.696726 147.338579 230.4 147.338579
C 228.103274 147.338579 225.900306 148.251078 224.276276 149.875109
C 222.652245 151.49914 221.739746 153.702107 221.739746 155.998833
C 221.739746 158.295559 222.652245 160.498527 224.276276 162.122558
C 225.900306 163.746588 228.103274 164.659087 230.4 164.659087
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 230.4 147.857921
C 232.696726 147.857921 234.899694 146.945422 236.523724 145.321391
C 238.147755 143.69736 239.060254 141.494393 239.060254 139.197667
C 239.060254 136.90094 238.147755 134.697973 236.523724 133.073942
C 234.899694 131.449911 232.696726 130.537412 230.4 130.537412
C 228.103274 130.537412 225.900306 131.449911 224.276276 133.073942
C 222.652245 134.697973 221.739746 136.90094 221.739746 139.197667
C 221.739746 141.494393 222.652245 143.69736 224.276276 145.321391
C 225.900306 146.945422 228.103274 147.857921 230.4 147.857921
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 325.606612 189.860837
C 327.903338 189.860837 330.106305 188.948338 331.730336 187.324308
C 333.354367 185.700277 334.266866 183.49731 334.266866 181.200583
C 334.266866 178.903857 333.354367 176.70089 331.730336 175.076859
C 330.106305 173.452828 327.903338 172.540329 325.606612 172.540329
C 323.309885 172.540329 321.106918 173.452828 319.482887 175.076859
C 317.858857 176.70089 316.946358 178.903857 316.946358 181.200583
C 316.946358 183.49731 317.858857 185.700277 319.482887 187.324308
C 321.106918 188.948338 323.309885 189.860837 325.606612 189.860837
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 325.606612 173.059671
C 327.903338 173.059671 330.106305 172.147172 331.730336 170.523141
C 333.354367 168.89911 334.266866 166.696143 334.266866 164.399417
C 334.266866 162.10269 333.354367 159.899723 331.730336 158.275692
C 330.106305 156.651662 327.903338 155.739163 325.606612 155.739163
C 323.309885 155.739163 321.106918 156.651662 319.482887 158.275692
C 317.858857 159.899723 316.946358 162.10269 316.946358 164.399417
C 316.946358 166.696143 317.858857 168.89911 319.482887 170.523141
C 321.106918 172.147172 323.309885 173.059671 325.606612 173.059671
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 420.813223 181.460254
C 423.109949 181.460254 425.312917 180.547755 426.936947 178.923724
C 428.560978 177.299694 429.473477 175.096726 429.473477 172.8
C 429.473477 170.503274 428.560978 168.300306 426.936947 166.676276
C 425.312917 165.052245 423.109949 164.139746 420.813223 164.139746
C 418.516497 164.139746 416.313529 165.052245 414.689499 166.676276
C 413.065468 168.300306 412.152969 170.503274 412.152969 172.8
C 412.152969 175.096726 413.065468 177.299694 414.689499 178.923724
C 416.313529 180.547755 418.516497 181.460254 420.813223 181.460254
z
" clip-path="url(#p9c7e32ac4e)" style="fill: #0000ff; stroke: #000000"/>
</g>
</g>
</g>
<defs>
<clipPath id="p9c7e32ac4e">
<rect x="0" y="0" width="460.8" height="345.6"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

439
imgs/hopper_network.svg Normal file
View File

@@ -0,0 +1,439 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="460.8pt" height="345.6pt" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2024-07-15T19:39:34.749207</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.9.0, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 345.6
L 460.8 345.6
L 460.8 0
L 0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 47.804926 314.085855
Q 198.663939 242.282767 348.513434 170.960171
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 347.172046 170.934124
L 348.513434 170.960171
L 347.687764 172.017653
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_3">
<path d="M 48.241232 284.978001
Q 230.398498 227.178099 411.490092 169.716343
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 410.164825 169.50738
L 411.490092 169.716343
L 410.527761 170.651179
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_4">
<path d="M 44.013765 279.930436
Q 71.723076 227.176172 98.912491 175.411709
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 97.823296 176.195071
L 98.912491 175.411709
L 98.885663 176.753082
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_5">
<path d="M 43.342601 279.610987
Q 71.72251 212.072261 99.669303 145.564267
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 98.651285 146.438132
L 99.669303 145.564267
L 99.757584 146.903001
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_6">
<path d="M 48.141477 254.47642
Q 166.928655 212.072824 284.662877 170.045103
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 283.331009 169.883459
L 284.662877 170.045103
L 283.734441 171.01361
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_7">
<path d="M 48.241232 224.55842
Q 135.194415 196.967506 221.081926 169.714738
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.756659 169.505775
L 221.081926 169.714738
L 220.119595 170.649575
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_8">
<path d="M 48.412655 225.172425
Q 166.930164 196.967537 284.360015 169.021491
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 283.053709 168.715611
L 284.360015 169.021491
L 283.331527 169.883008
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_9">
<path d="M 48.58311 195.944951
Q 166.928489 181.862989 284.163667 167.91313
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 282.901179 167.459121
L 284.163667 167.91313
L 283.042967 168.650715
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_10">
<path d="M 48.618944 196.283069
Q 230.398446 181.86306 411.063415 167.531464
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.819726 167.028237
L 411.063415 167.531464
L 409.91462 168.224479
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_11">
<path d="M 48.649935 166.758042
Q 198.664949 166.758042 347.561929 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 346.361929 166.158042
L 347.561929 166.758042
L 346.361929 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_12">
<path d="M 48.645093 136.548252
Q 71.720716 136.548252 93.678304 136.548252
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 92.478304 135.948252
L 93.678304 136.548252
L 92.478304 137.148252
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_13">
<path d="M 48.412655 108.343658
Q 166.930164 136.548547 284.360015 164.494593
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 283.331527 163.633076
L 284.360015 164.494593
L 283.053709 164.800473
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_14">
<path d="M 44.955139 113.43271
Q 71.722165 151.652935 97.847834 188.957375
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 97.650919 187.630264
L 97.847834 188.957375
L 96.667996 188.318641
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_15">
<path d="M 46.260666 82.100931
Q 71.72256 106.338696 96.374658 129.805597
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 95.919182 128.543637
L 96.374658 129.805597
L 95.091805 129.412801
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_16">
<path d="M 112.054184 195.944951
Q 230.399564 181.862989 347.634741 167.91313
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 346.372253 167.459121
L 347.634741 167.91313
L 346.514041 168.650715
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_17">
<path d="M 111.27939 193.24508
Q 135.192998 181.863123 158.097088 170.961657
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 156.7557 170.935611
L 158.097088 170.961657
L 157.271418 172.01914
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_18">
<path d="M 175.587242 166.758042
Q 198.662864 166.758042 220.620453 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 219.420453 166.158042
L 220.620453 166.758042
L 219.420453 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_19">
<path d="M 239.058316 166.758042
Q 262.133939 166.758042 284.091527 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 282.891527 166.158042
L 284.091527 166.758042
L 282.891527 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_20">
<path d="M 302.52939 166.758042
Q 357.341428 166.758042 411.035432 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.835432 166.158042
L 411.035432 166.758042
L 409.835432 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_21">
<path d="M 302.52939 166.758042
Q 325.605013 166.758042 347.562602 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 346.362602 166.158042
L 347.562602 166.758042
L 346.362602 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_22">
<path d="M 366.000465 166.758042
Q 389.076087 166.758042 411.033676 166.758042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.833676 166.158042
L 411.033676 166.758042
L 409.833676 167.358042
" clip-path="url(#pf50cda3298)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="PathCollection_1">
<path d="M 39.986777 326.467247
C 42.283503 326.467247 44.486471 325.554748 46.110501 323.930717
C 47.734532 322.306687 48.647031 320.103719 48.647031 317.806993
C 48.647031 315.510267 47.734532 313.307299 46.110501 311.683269
C 44.486471 310.059238 42.283503 309.146739 39.986777 309.146739
C 37.690051 309.146739 35.487083 310.059238 33.863053 311.683269
C 32.239022 313.307299 31.326523 315.510267 31.326523 317.806993
C 31.326523 320.103719 32.239022 322.306687 33.863053 323.930717
C 35.487083 325.554748 37.690051 326.467247 39.986777 326.467247
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 296.257457
C 42.283503 296.257457 44.486471 295.344958 46.110501 293.720927
C 47.734532 292.096896 48.647031 289.893929 48.647031 287.597203
C 48.647031 285.300477 47.734532 283.097509 46.110501 281.473478
C 44.486471 279.849448 42.283503 278.936949 39.986777 278.936949
C 37.690051 278.936949 35.487083 279.849448 33.863053 281.473478
C 32.239022 283.097509 31.326523 285.300477 31.326523 287.597203
C 31.326523 289.893929 32.239022 292.096896 33.863053 293.720927
C 35.487083 295.344958 37.690051 296.257457 39.986777 296.257457
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 266.047667
C 42.283503 266.047667 44.486471 265.135168 46.110501 263.511137
C 47.734532 261.887106 48.647031 259.684139 48.647031 257.387413
C 48.647031 255.090686 47.734532 252.887719 46.110501 251.263688
C 44.486471 249.639658 42.283503 248.727159 39.986777 248.727159
C 37.690051 248.727159 35.487083 249.639658 33.863053 251.263688
C 32.239022 252.887719 31.326523 255.090686 31.326523 257.387413
C 31.326523 259.684139 32.239022 261.887106 33.863053 263.511137
C 35.487083 265.135168 37.690051 266.047667 39.986777 266.047667
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 235.837876
C 42.283503 235.837876 44.486471 234.925377 46.110501 233.301347
C 47.734532 231.677316 48.647031 229.474349 48.647031 227.177622
C 48.647031 224.880896 47.734532 222.677929 46.110501 221.053898
C 44.486471 219.429867 42.283503 218.517368 39.986777 218.517368
C 37.690051 218.517368 35.487083 219.429867 33.863053 221.053898
C 32.239022 222.677929 31.326523 224.880896 31.326523 227.177622
C 31.326523 229.474349 32.239022 231.677316 33.863053 233.301347
C 35.487083 234.925377 37.690051 235.837876 39.986777 235.837876
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 205.628086
C 42.283503 205.628086 44.486471 204.715587 46.110501 203.091557
C 47.734532 201.467526 48.647031 199.264558 48.647031 196.967832
C 48.647031 194.671106 47.734532 192.468138 46.110501 190.844108
C 44.486471 189.220077 42.283503 188.307578 39.986777 188.307578
C 37.690051 188.307578 35.487083 189.220077 33.863053 190.844108
C 32.239022 192.468138 31.326523 194.671106 31.326523 196.967832
C 31.326523 199.264558 32.239022 201.467526 33.863053 203.091557
C 35.487083 204.715587 37.690051 205.628086 39.986777 205.628086
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 175.418296
C 42.283503 175.418296 44.486471 174.505797 46.110501 172.881766
C 47.734532 171.257736 48.647031 169.054768 48.647031 166.758042
C 48.647031 164.461316 47.734532 162.258348 46.110501 160.634318
C 44.486471 159.010287 42.283503 158.097788 39.986777 158.097788
C 37.690051 158.097788 35.487083 159.010287 33.863053 160.634318
C 32.239022 162.258348 31.326523 164.461316 31.326523 166.758042
C 31.326523 169.054768 32.239022 171.257736 33.863053 172.881766
C 35.487083 174.505797 37.690051 175.418296 39.986777 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 145.208506
C 42.283503 145.208506 44.486471 144.296007 46.110501 142.671976
C 47.734532 141.047945 48.647031 138.844978 48.647031 136.548252
C 48.647031 134.251526 47.734532 132.048558 46.110501 130.424527
C 44.486471 128.800497 42.283503 127.887998 39.986777 127.887998
C 37.690051 127.887998 35.487083 128.800497 33.863053 130.424527
C 32.239022 132.048558 31.326523 134.251526 31.326523 136.548252
C 31.326523 138.844978 32.239022 141.047945 33.863053 142.671976
C 35.487083 144.296007 37.690051 145.208506 39.986777 145.208506
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 114.998716
C 42.283503 114.998716 44.486471 114.086217 46.110501 112.462186
C 47.734532 110.838155 48.647031 108.635188 48.647031 106.338462
C 48.647031 104.041735 47.734532 101.838768 46.110501 100.214737
C 44.486471 98.590706 42.283503 97.678208 39.986777 97.678208
C 37.690051 97.678208 35.487083 98.590706 33.863053 100.214737
C 32.239022 101.838768 31.326523 104.041735 31.326523 106.338462
C 31.326523 108.635188 32.239022 110.838155 33.863053 112.462186
C 35.487083 114.086217 37.690051 114.998716 39.986777 114.998716
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 84.788925
C 42.283503 84.788925 44.486471 83.876426 46.110501 82.252396
C 47.734532 80.628365 48.647031 78.425398 48.647031 76.128671
C 48.647031 73.831945 47.734532 71.628978 46.110501 70.004947
C 44.486471 68.380916 42.283503 67.468417 39.986777 67.468417
C 37.690051 67.468417 35.487083 68.380916 33.863053 70.004947
C 32.239022 71.628978 31.326523 73.831945 31.326523 76.128671
C 31.326523 78.425398 32.239022 80.628365 33.863053 82.252396
C 35.487083 83.876426 37.690051 84.788925 39.986777 84.788925
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 54.579135
C 42.283503 54.579135 44.486471 53.666636 46.110501 52.042605
C 47.734532 50.418575 48.647031 48.215607 48.647031 45.918881
C 48.647031 43.622155 47.734532 41.419187 46.110501 39.795157
C 44.486471 38.171126 42.283503 37.258627 39.986777 37.258627
C 37.690051 37.258627 35.487083 38.171126 33.863053 39.795157
C 32.239022 41.419187 31.326523 43.622155 31.326523 45.918881
C 31.326523 48.215607 32.239022 50.418575 33.863053 52.042605
C 35.487083 53.666636 37.690051 54.579135 39.986777 54.579135
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 24.369345
C 42.283503 24.369345 44.486471 23.456846 46.110501 21.832815
C 47.734532 20.208785 48.647031 18.005817 48.647031 15.709091
C 48.647031 13.412365 47.734532 11.209397 46.110501 9.585367
C 44.486471 7.961336 42.283503 7.048837 39.986777 7.048837
C 37.690051 7.048837 35.487083 7.961336 33.863053 9.585367
C 32.239022 11.209397 31.326523 13.412365 31.326523 15.709091
C 31.326523 18.005817 32.239022 20.208785 33.863053 21.832815
C 35.487083 23.456846 37.690051 24.369345 39.986777 24.369345
z
" clip-path="url(#pf50cda3298)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 103.457851 145.208506
C 105.754577 145.208506 107.957545 144.296007 109.581576 142.671976
C 111.205606 141.047945 112.118105 138.844978 112.118105 136.548252
C 112.118105 134.251526 111.205606 132.048558 109.581576 130.424527
C 107.957545 128.800497 105.754577 127.887998 103.457851 127.887998
C 101.161125 127.887998 98.958158 128.800497 97.334127 130.424527
C 95.710096 132.048558 94.797597 134.251526 94.797597 136.548252
C 94.797597 138.844978 95.710096 141.047945 97.334127 142.671976
C 98.958158 144.296007 101.161125 145.208506 103.457851 145.208506
z
" clip-path="url(#pf50cda3298)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 103.457851 205.628086
C 105.754577 205.628086 107.957545 204.715587 109.581576 203.091557
C 111.205606 201.467526 112.118105 199.264558 112.118105 196.967832
C 112.118105 194.671106 111.205606 192.468138 109.581576 190.844108
C 107.957545 189.220077 105.754577 188.307578 103.457851 188.307578
C 101.161125 188.307578 98.958158 189.220077 97.334127 190.844108
C 95.710096 192.468138 94.797597 194.671106 94.797597 196.967832
C 94.797597 199.264558 95.710096 201.467526 97.334127 203.091557
C 98.958158 204.715587 101.161125 205.628086 103.457851 205.628086
z
" clip-path="url(#pf50cda3298)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 103.457851 175.418296
C 105.754577 175.418296 107.957545 174.505797 109.581576 172.881766
C 111.205606 171.257736 112.118105 169.054768 112.118105 166.758042
C 112.118105 164.461316 111.205606 162.258348 109.581576 160.634318
C 107.957545 159.010287 105.754577 158.097788 103.457851 158.097788
C 101.161125 158.097788 98.958158 159.010287 97.334127 160.634318
C 95.710096 162.258348 94.797597 164.461316 94.797597 166.758042
C 94.797597 169.054768 95.710096 171.257736 97.334127 172.881766
C 98.958158 174.505797 101.161125 175.418296 103.457851 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 166.928926 175.418296
C 169.225652 175.418296 171.428619 174.505797 173.05265 172.881766
C 174.676681 171.257736 175.58918 169.054768 175.58918 166.758042
C 175.58918 164.461316 174.676681 162.258348 173.05265 160.634318
C 171.428619 159.010287 169.225652 158.097788 166.928926 158.097788
C 164.632199 158.097788 162.429232 159.010287 160.805201 160.634318
C 159.181171 162.258348 158.268672 164.461316 158.268672 166.758042
C 158.268672 169.054768 159.181171 171.257736 160.805201 172.881766
C 162.429232 174.505797 164.632199 175.418296 166.928926 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 230.4 175.418296
C 232.696726 175.418296 234.899694 174.505797 236.523724 172.881766
C 238.147755 171.257736 239.060254 169.054768 239.060254 166.758042
C 239.060254 164.461316 238.147755 162.258348 236.523724 160.634318
C 234.899694 159.010287 232.696726 158.097788 230.4 158.097788
C 228.103274 158.097788 225.900306 159.010287 224.276276 160.634318
C 222.652245 162.258348 221.739746 164.461316 221.739746 166.758042
C 221.739746 169.054768 222.652245 171.257736 224.276276 172.881766
C 225.900306 174.505797 228.103274 175.418296 230.4 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 293.871074 175.418296
C 296.167801 175.418296 298.370768 174.505797 299.994799 172.881766
C 301.618829 171.257736 302.531328 169.054768 302.531328 166.758042
C 302.531328 164.461316 301.618829 162.258348 299.994799 160.634318
C 298.370768 159.010287 296.167801 158.097788 293.871074 158.097788
C 291.574348 158.097788 289.371381 159.010287 287.74735 160.634318
C 286.123319 162.258348 285.21082 164.461316 285.21082 166.758042
C 285.21082 169.054768 286.123319 171.257736 287.74735 172.881766
C 289.371381 174.505797 291.574348 175.418296 293.871074 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 357.342149 175.418296
C 359.638875 175.418296 361.841842 174.505797 363.465873 172.881766
C 365.089904 171.257736 366.002403 169.054768 366.002403 166.758042
C 366.002403 164.461316 365.089904 162.258348 363.465873 160.634318
C 361.841842 159.010287 359.638875 158.097788 357.342149 158.097788
C 355.045423 158.097788 352.842455 159.010287 351.218424 160.634318
C 349.594394 162.258348 348.681895 164.461316 348.681895 166.758042
C 348.681895 169.054768 349.594394 171.257736 351.218424 172.881766
C 352.842455 174.505797 355.045423 175.418296 357.342149 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 420.813223 175.418296
C 423.109949 175.418296 425.312917 174.505797 426.936947 172.881766
C 428.560978 171.257736 429.473477 169.054768 429.473477 166.758042
C 429.473477 164.461316 428.560978 162.258348 426.936947 160.634318
C 425.312917 159.010287 423.109949 158.097788 420.813223 158.097788
C 418.516497 158.097788 416.313529 159.010287 414.689499 160.634318
C 413.065468 162.258348 412.152969 164.461316 412.152969 166.758042
C 412.152969 169.054768 413.065468 171.257736 414.689499 172.881766
C 416.313529 174.505797 418.516497 175.418296 420.813223 175.418296
z
" clip-path="url(#pf50cda3298)" style="fill: #0000ff; stroke: #000000"/>
</g>
</g>
</g>
<defs>
<clipPath id="pf50cda3298">
<rect x="0" y="0" width="460.8" height="345.6"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

808
imgs/walker2d_network.svg Normal file
View File

@@ -0,0 +1,808 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="460.8pt" height="345.6pt" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2024-07-15T20:07:34.485627</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.9.0, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 345.6
L 460.8 345.6
L 460.8 0
L 0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 42.658984 307.5342
Q 67.188776 231.929386 91.37353 157.388032
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 90.432484 158.344292
L 91.37353 157.388032
L 91.57391 158.714625
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_3">
<path d="M 46.713367 292.663807
Q 121.592568 231.929623 195.603451 171.899729
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 194.293513 172.189663
L 195.603451 171.899729
L 195.049435 173.12164
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_4">
<path d="M 46.192872 274.428567
Q 94.389069 227.518504 141.784079 181.388249
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 140.505666 181.795264
L 141.784079 181.388249
L 141.342643 182.655188
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_5">
<path d="M 47.248805 240.455564
Q 94.388081 209.868 140.589467 179.88901
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 139.256223 180.038876
L 140.589467 179.88901
L 139.909414 181.045525
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_6">
<path d="M 48.536345 208.479491
Q 121.593356 196.628248 193.54676 184.956032
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.266169 184.555925
L 193.54676 184.956032
L 192.45832 185.740441
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_7">
<path d="M 48.537175 190.828692
Q 94.393015 183.389999 139.145247 176.130332
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 137.864655 175.730226
L 139.145247 176.130332
L 138.056806 176.914742
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_8">
<path d="M 48.225044 189.542922
Q 94.38938 174.565448 139.490252 159.933002
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 138.163661 159.73261
L 139.490252 159.933002
L 138.533984 160.87404
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_9">
<path d="M 48.638452 191.747908
Q 121.595347 187.802907 193.435838 183.918274
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.205192 183.383942
L 193.435838 183.918274
L 192.269985 184.582192
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_10">
<path d="M 48.650074 174.565066
Q 94.393152 174.565066 139.018197 174.565066
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 137.818197 173.965066
L 139.018197 174.565066
L 137.818197 175.165066
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_11">
<path d="M 48.536345 173.178163
Q 121.593356 161.32692 193.54676 149.654704
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.266169 149.254597
L 193.54676 149.654704
L 192.45832 150.439113
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_12">
<path d="M 47.77345 160.703844
Q 67.188234 170.15219 85.59771 179.111296
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 84.781254 178.046683
L 85.59771 179.111296
L 84.256146 179.125693
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_13">
<path d="M 48.225044 141.936547
Q 94.38938 156.914021 139.490252 171.546467
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 138.533984 170.605429
L 139.490252 171.546467
L 138.163661 171.746858
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_14">
<path d="M 46.710877 127.066962
Q 67.188053 143.675907 86.796911 159.580564
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 86.242895 158.358653
L 86.796911 159.580564
L 85.486973 159.29063
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_15">
<path d="M 47.248805 108.674569
Q 94.388081 139.262133 140.589467 169.241123
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 139.909414 168.084608
L 140.589467 169.241123
L 139.256223 169.091256
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_16">
<path d="M 47.774281 107.752256
Q 121.593248 143.676796 194.406908 179.112095
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 193.590452 178.047482
L 194.406908 179.112095
L 193.065344 179.126492
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_17">
<path d="M 46.710877 91.765634
Q 94.389595 130.437628 141.199996 168.405334
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 140.64598 167.183423
L 141.199996 168.405334
L 139.890058 168.1154
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_18">
<path d="M 48.088072 71.727514
Q 121.592328 99.549701 194.050948 126.976103
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 193.141055 125.990155
L 194.050948 126.976103
L 192.716254 127.112449
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_19">
<path d="M 47.248805 55.722577
Q 148.793534 121.612556 249.400373 186.89396
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 248.720319 185.737445
L 249.400373 186.89396
L 248.067129 186.744094
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_20">
<path d="M 47.774281 54.800264
Q 121.593248 90.724804 194.406908 126.160103
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 193.590452 125.095491
L 194.406908 126.160103
L 193.065344 126.1745
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_21">
<path d="M 46.026015 39.564393
Q 121.59146 117.199397 196.377086 194.033225
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 195.970053 192.754819
L 196.377086 194.033225
L 195.110141 193.591808
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_22">
<path d="M 103.020646 165.039752
Q 203.197037 156.91449 302.259053 148.879614
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 301.014475 148.378591
L 302.259053 148.879614
L 301.111487 149.574663
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_23">
<path d="M 102.940953 167.126772
Q 121.592677 170.152438 139.140794 172.999078
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 138.052354 172.214669
L 139.140794 172.999078
L 137.860203 173.399185
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_24">
<path d="M 102.628822 163.066926
Q 148.793158 148.089452 193.89403 133.457006
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.567439 133.256614
L 193.89403 133.457006
L 192.937762 134.398044
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_25">
<path d="M 103.04223 148.556893
Q 257.605021 156.914572 411.051409 165.211884
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.885556 164.547966
L 411.051409 165.211884
L 409.820763 165.746215
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_26">
<path d="M 102.177228 179.600957
Q 121.592012 170.152611 140.001488 161.193505
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 138.659924 161.179108
L 140.001488 161.193505
L 139.185032 162.258118
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_27">
<path d="M 156.581006 170.775625
Q 175.99579 161.327279 194.405266 152.368173
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 193.063702 152.353776
L 194.405266 152.368173
L 193.58881 153.432786
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_28">
<path d="M 156.581006 178.354508
Q 175.99579 187.802854 194.405266 196.76196
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 193.58881 195.697347
L 194.405266 196.76196
L 193.063702 196.776357
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_29">
<path d="M 157.446008 174.097244
Q 230.402903 170.152243 302.243394 166.26761
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 301.012748 165.733278
L 302.243394 166.26761
L 301.077541 166.931528
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_30">
<path d="M 155.518433 169.111179
Q 175.995609 152.502234 195.604467 136.597577
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 194.294529 136.887511
L 195.604467 136.597577
L 195.050451 137.819488
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_31">
<path d="M 157.344731 175.952104
Q 175.996456 178.97777 193.544572 181.82441
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.456132 181.040001
L 193.544572 181.82441
L 192.263981 182.224517
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_32">
<path d="M 157.344731 173.178028
Q 175.996456 170.152363 193.544572 167.305723
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 192.263981 166.905616
L 193.544572 167.305723
L 192.456132 168.090132
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_33">
<path d="M 211.748509 164.352696
Q 230.400234 161.327031 247.94835 158.480391
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 246.667759 158.080284
L 247.94835 158.480391
L 246.85991 159.2648
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_34">
<path d="M 209.922211 153.542958
Q 230.399387 170.151903 250.008245 186.05656
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 249.454229 184.834649
L 250.008245 186.05656
L 248.698307 185.766626
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_35">
<path d="M 211.748509 131.825444
Q 230.400234 134.85111 247.94835 137.69775
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 246.85991 136.913341
L 247.94835 137.69775
L 246.667759 138.097857
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_36">
<path d="M 210.984785 197.251621
Q 230.399568 187.803275 248.809044 178.844169
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 247.46748 178.829772
L 248.809044 178.844169
L 247.992588 179.908782
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_37">
<path d="M 266.152287 158.30144
Q 284.804012 161.327106 302.352128 164.173746
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 301.263688 163.389337
L 302.352128 164.173746
L 301.071537 164.573853
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_38">
<path d="M 265.388563 160.703844
Q 284.803346 170.15219 303.212822 179.111296
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 302.396366 178.046683
L 303.212822 179.111296
L 301.871258 179.125693
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_39">
<path d="M 264.325989 186.761843
Q 284.803165 170.152898 304.412023 154.248241
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 303.102085 154.538175
L 304.412023 154.248241
L 303.858007 155.470152
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_40">
<path d="M 320.243934 150.761879
Q 339.208593 156.914739 357.109788 162.72257
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 356.153521 161.781533
L 357.109788 162.72257
L 355.783197 162.922962
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="patch_41">
<path d="M 375.072742 165.739734
Q 393.61154 165.739734 411.032304 165.739734
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
<path d="M 409.832304 165.139734
L 411.032304 165.739734
L 409.832304 166.339734
" clip-path="url(#p46e46c26f6)" style="fill: none; stroke: #4c4c4c; stroke-linecap: round"/>
</g>
<g id="PathCollection_1">
<path d="M 39.986777 324.430632
C 42.283503 324.430632 44.486471 323.518133 46.110501 321.894102
C 47.734532 320.270072 48.647031 318.067104 48.647031 315.770378
C 48.647031 313.473652 47.734532 311.270684 46.110501 309.646654
C 44.486471 308.022623 42.283503 307.110124 39.986777 307.110124
C 37.690051 307.110124 35.487083 308.022623 33.863053 309.646654
C 32.239022 311.270684 31.326523 313.473652 31.326523 315.770378
C 31.326523 318.067104 32.239022 320.270072 33.863053 321.894102
C 35.487083 323.518133 37.690051 324.430632 39.986777 324.430632
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 306.779968
C 42.283503 306.779968 44.486471 305.867469 46.110501 304.243438
C 47.734532 302.619408 48.647031 300.41644 48.647031 298.119714
C 48.647031 295.822988 47.734532 293.62002 46.110501 291.99599
C 44.486471 290.371959 42.283503 289.45946 39.986777 289.45946
C 37.690051 289.45946 35.487083 290.371959 33.863053 291.99599
C 32.239022 293.62002 31.326523 295.822988 31.326523 298.119714
C 31.326523 300.41644 32.239022 302.619408 33.863053 304.243438
C 35.487083 305.867469 37.690051 306.779968 39.986777 306.779968
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 289.129304
C 42.283503 289.129304 44.486471 288.216805 46.110501 286.592774
C 47.734532 284.968744 48.647031 282.765776 48.647031 280.46905
C 48.647031 278.172324 47.734532 275.969356 46.110501 274.345326
C 44.486471 272.721295 42.283503 271.808796 39.986777 271.808796
C 37.690051 271.808796 35.487083 272.721295 33.863053 274.345326
C 32.239022 275.969356 31.326523 278.172324 31.326523 280.46905
C 31.326523 282.765776 32.239022 284.968744 33.863053 286.592774
C 35.487083 288.216805 37.690051 289.129304 39.986777 289.129304
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 271.47864
C 42.283503 271.47864 44.486471 270.566141 46.110501 268.94211
C 47.734532 267.31808 48.647031 265.115112 48.647031 262.818386
C 48.647031 260.52166 47.734532 258.318692 46.110501 256.694662
C 44.486471 255.070631 42.283503 254.158132 39.986777 254.158132
C 37.690051 254.158132 35.487083 255.070631 33.863053 256.694662
C 32.239022 258.318692 31.326523 260.52166 31.326523 262.818386
C 31.326523 265.115112 32.239022 267.31808 33.863053 268.94211
C 35.487083 270.566141 37.690051 271.47864 39.986777 271.47864
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 253.827976
C 42.283503 253.827976 44.486471 252.915477 46.110501 251.291447
C 47.734532 249.667416 48.647031 247.464448 48.647031 245.167722
C 48.647031 242.870996 47.734532 240.668028 46.110501 239.043998
C 44.486471 237.419967 42.283503 236.507468 39.986777 236.507468
C 37.690051 236.507468 35.487083 237.419967 33.863053 239.043998
C 32.239022 240.668028 31.326523 242.870996 31.326523 245.167722
C 31.326523 247.464448 32.239022 249.667416 33.863053 251.291447
C 35.487083 252.915477 37.690051 253.827976 39.986777 253.827976
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 236.177312
C 42.283503 236.177312 44.486471 235.264813 46.110501 233.640783
C 47.734532 232.016752 48.647031 229.813784 48.647031 227.517058
C 48.647031 225.220332 47.734532 223.017365 46.110501 221.393334
C 44.486471 219.769303 42.283503 218.856804 39.986777 218.856804
C 37.690051 218.856804 35.487083 219.769303 33.863053 221.393334
C 32.239022 223.017365 31.326523 225.220332 31.326523 227.517058
C 31.326523 229.813784 32.239022 232.016752 33.863053 233.640783
C 35.487083 235.264813 37.690051 236.177312 39.986777 236.177312
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 218.526648
C 42.283503 218.526648 44.486471 217.614149 46.110501 215.990119
C 47.734532 214.366088 48.647031 212.16312 48.647031 209.866394
C 48.647031 207.569668 47.734532 205.366701 46.110501 203.74267
C 44.486471 202.118639 42.283503 201.20614 39.986777 201.20614
C 37.690051 201.20614 35.487083 202.118639 33.863053 203.74267
C 32.239022 205.366701 31.326523 207.569668 31.326523 209.866394
C 31.326523 212.16312 32.239022 214.366088 33.863053 215.990119
C 35.487083 217.614149 37.690051 218.526648 39.986777 218.526648
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 200.875984
C 42.283503 200.875984 44.486471 199.963485 46.110501 198.339455
C 47.734532 196.715424 48.647031 194.512457 48.647031 192.21573
C 48.647031 189.919004 47.734532 187.716037 46.110501 186.092006
C 44.486471 184.467975 42.283503 183.555476 39.986777 183.555476
C 37.690051 183.555476 35.487083 184.467975 33.863053 186.092006
C 32.239022 187.716037 31.326523 189.919004 31.326523 192.21573
C 31.326523 194.512457 32.239022 196.715424 33.863053 198.339455
C 35.487083 199.963485 37.690051 200.875984 39.986777 200.875984
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 183.22532
C 42.283503 183.22532 44.486471 182.312821 46.110501 180.688791
C 47.734532 179.06476 48.647031 176.861793 48.647031 174.565066
C 48.647031 172.26834 47.734532 170.065373 46.110501 168.441342
C 44.486471 166.817311 42.283503 165.904812 39.986777 165.904812
C 37.690051 165.904812 35.487083 166.817311 33.863053 168.441342
C 32.239022 170.065373 31.326523 172.26834 31.326523 174.565066
C 31.326523 176.861793 32.239022 179.06476 33.863053 180.688791
C 35.487083 182.312821 37.690051 183.22532 39.986777 183.22532
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 165.574656
C 42.283503 165.574656 44.486471 164.662157 46.110501 163.038127
C 47.734532 161.414096 48.647031 159.211129 48.647031 156.914402
C 48.647031 154.617676 47.734532 152.414709 46.110501 150.790678
C 44.486471 149.166647 42.283503 148.254148 39.986777 148.254148
C 37.690051 148.254148 35.487083 149.166647 33.863053 150.790678
C 32.239022 152.414709 31.326523 154.617676 31.326523 156.914402
C 31.326523 159.211129 32.239022 161.414096 33.863053 163.038127
C 35.487083 164.662157 37.690051 165.574656 39.986777 165.574656
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 147.923993
C 42.283503 147.923993 44.486471 147.011494 46.110501 145.387463
C 47.734532 143.763432 48.647031 141.560465 48.647031 139.263739
C 48.647031 136.967012 47.734532 134.764045 46.110501 133.140014
C 44.486471 131.515983 42.283503 130.603484 39.986777 130.603484
C 37.690051 130.603484 35.487083 131.515983 33.863053 133.140014
C 32.239022 134.764045 31.326523 136.967012 31.326523 139.263739
C 31.326523 141.560465 32.239022 143.763432 33.863053 145.387463
C 35.487083 147.011494 37.690051 147.923993 39.986777 147.923993
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 130.273329
C 42.283503 130.273329 44.486471 129.36083 46.110501 127.736799
C 47.734532 126.112768 48.647031 123.909801 48.647031 121.613075
C 48.647031 119.316348 47.734532 117.113381 46.110501 115.48935
C 44.486471 113.86532 42.283503 112.952821 39.986777 112.952821
C 37.690051 112.952821 35.487083 113.86532 33.863053 115.48935
C 32.239022 117.113381 31.326523 119.316348 31.326523 121.613075
C 31.326523 123.909801 32.239022 126.112768 33.863053 127.736799
C 35.487083 129.36083 37.690051 130.273329 39.986777 130.273329
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 112.622665
C 42.283503 112.622665 44.486471 111.710166 46.110501 110.086135
C 47.734532 108.462104 48.647031 106.259137 48.647031 103.962411
C 48.647031 101.665684 47.734532 99.462717 46.110501 97.838686
C 44.486471 96.214656 42.283503 95.302157 39.986777 95.302157
C 37.690051 95.302157 35.487083 96.214656 33.863053 97.838686
C 32.239022 99.462717 31.326523 101.665684 31.326523 103.962411
C 31.326523 106.259137 32.239022 108.462104 33.863053 110.086135
C 35.487083 111.710166 37.690051 112.622665 39.986777 112.622665
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 94.972001
C 42.283503 94.972001 44.486471 94.059502 46.110501 92.435471
C 47.734532 90.81144 48.647031 88.608473 48.647031 86.311747
C 48.647031 84.01502 47.734532 81.812053 46.110501 80.188022
C 44.486471 78.563992 42.283503 77.651493 39.986777 77.651493
C 37.690051 77.651493 35.487083 78.563992 33.863053 80.188022
C 32.239022 81.812053 31.326523 84.01502 31.326523 86.311747
C 31.326523 88.608473 32.239022 90.81144 33.863053 92.435471
C 35.487083 94.059502 37.690051 94.972001 39.986777 94.972001
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 77.321337
C 42.283503 77.321337 44.486471 76.408838 46.110501 74.784807
C 47.734532 73.160776 48.647031 70.957809 48.647031 68.661083
C 48.647031 66.364357 47.734532 64.161389 46.110501 62.537358
C 44.486471 60.913328 42.283503 60.000829 39.986777 60.000829
C 37.690051 60.000829 35.487083 60.913328 33.863053 62.537358
C 32.239022 64.161389 31.326523 66.364357 31.326523 68.661083
C 31.326523 70.957809 32.239022 73.160776 33.863053 74.784807
C 35.487083 76.408838 37.690051 77.321337 39.986777 77.321337
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 59.670673
C 42.283503 59.670673 44.486471 58.758174 46.110501 57.134143
C 47.734532 55.510112 48.647031 53.307145 48.647031 51.010419
C 48.647031 48.713693 47.734532 46.510725 46.110501 44.886694
C 44.486471 43.262664 42.283503 42.350165 39.986777 42.350165
C 37.690051 42.350165 35.487083 43.262664 33.863053 44.886694
C 32.239022 46.510725 31.326523 48.713693 31.326523 51.010419
C 31.326523 53.307145 32.239022 55.510112 33.863053 57.134143
C 35.487083 58.758174 37.690051 59.670673 39.986777 59.670673
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 42.020009
C 42.283503 42.020009 44.486471 41.10751 46.110501 39.483479
C 47.734532 37.859449 48.647031 35.656481 48.647031 33.359755
C 48.647031 31.063029 47.734532 28.860061 46.110501 27.23603
C 44.486471 25.612 42.283503 24.699501 39.986777 24.699501
C 37.690051 24.699501 35.487083 25.612 33.863053 27.23603
C 32.239022 28.860061 31.326523 31.063029 31.326523 33.359755
C 31.326523 35.656481 32.239022 37.859449 33.863053 39.483479
C 35.487083 41.10751 37.690051 42.020009 39.986777 42.020009
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffff00; stroke: #000000"/>
<path d="M 39.986777 24.369345
C 42.283503 24.369345 44.486471 23.456846 46.110501 21.832815
C 47.734532 20.208785 48.647031 18.005817 48.647031 15.709091
C 48.647031 13.412365 47.734532 11.209397 46.110501 9.585367
C 44.486471 7.961336 42.283503 7.048837 39.986777 7.048837
C 37.690051 7.048837 35.487083 7.961336 33.863053 9.585367
C 32.239022 11.209397 31.326523 13.412365 31.326523 15.709091
C 31.326523 18.005817 32.239022 20.208785 33.863053 21.832815
C 35.487083 23.456846 37.690051 24.369345 39.986777 24.369345
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 94.390555 174.399988
C 96.687281 174.399988 98.890249 173.487489 100.514279 171.863459
C 102.13831 170.239428 103.050809 168.036461 103.050809 165.739734
C 103.050809 163.443008 102.13831 161.240041 100.514279 159.61601
C 98.890249 157.991979 96.687281 157.07948 94.390555 157.07948
C 92.093829 157.07948 89.890861 157.991979 88.266831 159.61601
C 86.6428 161.240041 85.730301 163.443008 85.730301 165.739734
C 85.730301 168.036461 86.6428 170.239428 88.266831 171.863459
C 89.890861 173.487489 92.093829 174.399988 94.390555 174.399988
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 94.390555 156.749325
C 96.687281 156.749325 98.890249 155.836826 100.514279 154.212795
C 102.13831 152.588764 103.050809 150.385797 103.050809 148.08907
C 103.050809 145.792344 102.13831 143.589377 100.514279 141.965346
C 98.890249 140.341315 96.687281 139.428816 94.390555 139.428816
C 92.093829 139.428816 89.890861 140.341315 88.266831 141.965346
C 86.6428 143.589377 85.730301 145.792344 85.730301 148.08907
C 85.730301 150.385797 86.6428 152.588764 88.266831 154.212795
C 89.890861 155.836826 92.093829 156.749325 94.390555 156.749325
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 94.390555 192.050652
C 96.687281 192.050652 98.890249 191.138153 100.514279 189.514123
C 102.13831 187.890092 103.050809 185.687125 103.050809 183.390398
C 103.050809 181.093672 102.13831 178.890705 100.514279 177.266674
C 98.890249 175.642643 96.687281 174.730144 94.390555 174.730144
C 92.093829 174.730144 89.890861 175.642643 88.266831 177.266674
C 86.6428 178.890705 85.730301 181.093672 85.730301 183.390398
C 85.730301 185.687125 86.6428 187.890092 88.266831 189.514123
C 89.890861 191.138153 92.093829 192.050652 94.390555 192.050652
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 148.794333 183.22532
C 151.091059 183.22532 153.294027 182.312821 154.918057 180.688791
C 156.542088 179.06476 157.454587 176.861793 157.454587 174.565066
C 157.454587 172.26834 156.542088 170.065373 154.918057 168.441342
C 153.294027 166.817311 151.091059 165.904812 148.794333 165.904812
C 146.497607 165.904812 144.294639 166.817311 142.670609 168.441342
C 141.046578 170.065373 140.134079 172.26834 140.134079 174.565066
C 140.134079 176.861793 141.046578 179.06476 142.670609 180.688791
C 144.294639 182.312821 146.497607 183.22532 148.794333 183.22532
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 148.794333 165.574656
C 151.091059 165.574656 153.294027 164.662157 154.918057 163.038127
C 156.542088 161.414096 157.454587 159.211129 157.454587 156.914402
C 157.454587 154.617676 156.542088 152.414709 154.918057 150.790678
C 153.294027 149.166647 151.091059 148.254148 148.794333 148.254148
C 146.497607 148.254148 144.294639 149.166647 142.670609 150.790678
C 141.046578 152.414709 140.134079 154.617676 140.134079 156.914402
C 140.134079 159.211129 141.046578 161.414096 142.670609 163.038127
C 144.294639 164.662157 146.497607 165.574656 148.794333 165.574656
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 203.198111 192.050652
C 205.494837 192.050652 207.697805 191.138153 209.321835 189.514123
C 210.945866 187.890092 211.858365 185.687125 211.858365 183.390398
C 211.858365 181.093672 210.945866 178.890705 209.321835 177.266674
C 207.697805 175.642643 205.494837 174.730144 203.198111 174.730144
C 200.901385 174.730144 198.698417 175.642643 197.074387 177.266674
C 195.450356 178.890705 194.537857 181.093672 194.537857 183.390398
C 194.537857 185.687125 195.450356 187.890092 197.074387 189.514123
C 198.698417 191.138153 200.901385 192.050652 203.198111 192.050652
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 203.198111 174.399988
C 205.494837 174.399988 207.697805 173.487489 209.321835 171.863459
C 210.945866 170.239428 211.858365 168.036461 211.858365 165.739734
C 211.858365 163.443008 210.945866 161.240041 209.321835 159.61601
C 207.697805 157.991979 205.494837 157.07948 203.198111 157.07948
C 200.901385 157.07948 198.698417 157.991979 197.074387 159.61601
C 195.450356 161.240041 194.537857 163.443008 194.537857 165.739734
C 194.537857 168.036461 195.450356 170.239428 197.074387 171.863459
C 198.698417 173.487489 200.901385 174.399988 203.198111 174.399988
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 203.198111 156.749325
C 205.494837 156.749325 207.697805 155.836826 209.321835 154.212795
C 210.945866 152.588764 211.858365 150.385797 211.858365 148.08907
C 211.858365 145.792344 210.945866 143.589377 209.321835 141.965346
C 207.697805 140.341315 205.494837 139.428816 203.198111 139.428816
C 200.901385 139.428816 198.698417 140.341315 197.074387 141.965346
C 195.450356 143.589377 194.537857 145.792344 194.537857 148.08907
C 194.537857 150.385797 195.450356 152.588764 197.074387 154.212795
C 198.698417 155.836826 200.901385 156.749325 203.198111 156.749325
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 203.198111 139.098661
C 205.494837 139.098661 207.697805 138.186162 209.321835 136.562131
C 210.945866 134.9381 211.858365 132.735133 211.858365 130.438407
C 211.858365 128.14168 210.945866 125.938713 209.321835 124.314682
C 207.697805 122.690651 205.494837 121.778152 203.198111 121.778152
C 200.901385 121.778152 198.698417 122.690651 197.074387 124.314682
C 195.450356 125.938713 194.537857 128.14168 194.537857 130.438407
C 194.537857 132.735133 195.450356 134.9381 197.074387 136.562131
C 198.698417 138.186162 200.901385 139.098661 203.198111 139.098661
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 203.198111 209.701316
C 205.494837 209.701316 207.697805 208.788817 209.321835 207.164787
C 210.945866 205.540756 211.858365 203.337789 211.858365 201.041062
C 211.858365 198.744336 210.945866 196.541369 209.321835 194.917338
C 207.697805 193.293307 205.494837 192.380808 203.198111 192.380808
C 200.901385 192.380808 198.698417 193.293307 197.074387 194.917338
C 195.450356 196.541369 194.537857 198.744336 194.537857 201.041062
C 194.537857 203.337789 195.450356 205.540756 197.074387 207.164787
C 198.698417 208.788817 200.901385 209.701316 203.198111 209.701316
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 257.601889 183.22532
C 259.898615 183.22532 262.101583 182.312821 263.725613 180.688791
C 265.349644 179.06476 266.262143 176.861793 266.262143 174.565066
C 266.262143 172.26834 265.349644 170.065373 263.725613 168.441342
C 262.101583 166.817311 259.898615 165.904812 257.601889 165.904812
C 255.305163 165.904812 253.102195 166.817311 251.478165 168.441342
C 249.854134 170.065373 248.941635 172.26834 248.941635 174.565066
C 248.941635 176.861793 249.854134 179.06476 251.478165 180.688791
C 253.102195 182.312821 255.305163 183.22532 257.601889 183.22532
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 257.601889 147.923993
C 259.898615 147.923993 262.101583 147.011494 263.725613 145.387463
C 265.349644 143.763432 266.262143 141.560465 266.262143 139.263739
C 266.262143 136.967012 265.349644 134.764045 263.725613 133.140014
C 262.101583 131.515983 259.898615 130.603484 257.601889 130.603484
C 255.305163 130.603484 253.102195 131.515983 251.478165 133.140014
C 249.854134 134.764045 248.941635 136.967012 248.941635 139.263739
C 248.941635 141.560465 249.854134 143.763432 251.478165 145.387463
C 253.102195 147.011494 255.305163 147.923993 257.601889 147.923993
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 257.601889 165.574656
C 259.898615 165.574656 262.101583 164.662157 263.725613 163.038127
C 265.349644 161.414096 266.262143 159.211129 266.262143 156.914402
C 266.262143 154.617676 265.349644 152.414709 263.725613 150.790678
C 262.101583 149.166647 259.898615 148.254148 257.601889 148.254148
C 255.305163 148.254148 253.102195 149.166647 251.478165 150.790678
C 249.854134 152.414709 248.941635 154.617676 248.941635 156.914402
C 248.941635 159.211129 249.854134 161.414096 251.478165 163.038127
C 253.102195 164.662157 255.305163 165.574656 257.601889 165.574656
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 257.601889 200.875984
C 259.898615 200.875984 262.101583 199.963485 263.725613 198.339455
C 265.349644 196.715424 266.262143 194.512457 266.262143 192.21573
C 266.262143 189.919004 265.349644 187.716037 263.725613 186.092006
C 262.101583 184.467975 259.898615 183.555476 257.601889 183.555476
C 255.305163 183.555476 253.102195 184.467975 251.478165 186.092006
C 249.854134 187.716037 248.941635 189.919004 248.941635 192.21573
C 248.941635 194.512457 249.854134 196.715424 251.478165 198.339455
C 253.102195 199.963485 255.305163 200.875984 257.601889 200.875984
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 312.005667 174.399988
C 314.302393 174.399988 316.505361 173.487489 318.129391 171.863459
C 319.753422 170.239428 320.665921 168.036461 320.665921 165.739734
C 320.665921 163.443008 319.753422 161.240041 318.129391 159.61601
C 316.505361 157.991979 314.302393 157.07948 312.005667 157.07948
C 309.708941 157.07948 307.505973 157.991979 305.881943 159.61601
C 304.257912 161.240041 303.345413 163.443008 303.345413 165.739734
C 303.345413 168.036461 304.257912 170.239428 305.881943 171.863459
C 307.505973 173.487489 309.708941 174.399988 312.005667 174.399988
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
<path d="M 312.005667 192.050652
C 314.302393 192.050652 316.505361 191.138153 318.129391 189.514123
C 319.753422 187.890092 320.665921 185.687125 320.665921 183.390398
C 320.665921 181.093672 319.753422 178.890705 318.129391 177.266674
C 316.505361 175.642643 314.302393 174.730144 312.005667 174.730144
C 309.708941 174.730144 307.505973 175.642643 305.881943 177.266674
C 304.257912 178.890705 303.345413 181.093672 303.345413 183.390398
C 303.345413 185.687125 304.257912 187.890092 305.881943 189.514123
C 307.505973 191.138153 309.708941 192.050652 312.005667 192.050652
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 312.005667 156.749325
C 314.302393 156.749325 316.505361 155.836826 318.129391 154.212795
C 319.753422 152.588764 320.665921 150.385797 320.665921 148.08907
C 320.665921 145.792344 319.753422 143.589377 318.129391 141.965346
C 316.505361 140.341315 314.302393 139.428816 312.005667 139.428816
C 309.708941 139.428816 307.505973 140.341315 305.881943 141.965346
C 304.257912 143.589377 303.345413 145.792344 303.345413 148.08907
C 303.345413 150.385797 304.257912 152.588764 305.881943 154.212795
C 307.505973 155.836826 309.708941 156.749325 312.005667 156.749325
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 366.409445 174.399988
C 368.706171 174.399988 370.909139 173.487489 372.533169 171.863459
C 374.1572 170.239428 375.069699 168.036461 375.069699 165.739734
C 375.069699 163.443008 374.1572 161.240041 372.533169 159.61601
C 370.909139 157.991979 368.706171 157.07948 366.409445 157.07948
C 364.112719 157.07948 361.909751 157.991979 360.285721 159.61601
C 358.66169 161.240041 357.749191 163.443008 357.749191 165.739734
C 357.749191 168.036461 358.66169 170.239428 360.285721 171.863459
C 361.909751 173.487489 364.112719 174.399988 366.409445 174.399988
z
" clip-path="url(#p46e46c26f6)" style="fill: #ffffff; stroke: #000000"/>
<path d="M 420.813223 174.399988
C 423.109949 174.399988 425.312917 173.487489 426.936947 171.863459
C 428.560978 170.239428 429.473477 168.036461 429.473477 165.739734
C 429.473477 163.443008 428.560978 161.240041 426.936947 159.61601
C 425.312917 157.991979 423.109949 157.07948 420.813223 157.07948
C 418.516497 157.07948 416.313529 157.991979 414.689499 159.61601
C 413.065468 161.240041 412.152969 163.443008 412.152969 165.739734
C 412.152969 168.036461 413.065468 170.239428 414.689499 171.863459
C 416.313529 173.487489 418.516497 174.399988 420.813223 174.399988
z
" clip-path="url(#p46e46c26f6)" style="fill: #0000ff; stroke: #000000"/>
</g>
</g>
</g>
<defs>
<clipPath id="p46e46c26f6">
<rect x="0" y="0" width="460.8" height="345.6"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB