1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

lws_sequencer

This commit is contained in:
Andy Green 2019-06-24 07:15:50 +01:00
parent 477d50bf56
commit b3d6e28bc7
16 changed files with 2190 additions and 6 deletions

View file

@ -909,6 +909,7 @@ if (LWS_WITH_NETWORK)
lib/core-net/network.c
lib/core-net/vhost.c
lib/core-net/pollfd.c
lib/core-net/sequencer.c
lib/core-net/service.c
lib/core-net/stats.c
lib/core-net/wsi.c

View file

@ -0,0 +1,112 @@
# `lws_sequencer_t` introduction
Often a single network action like a client GET is just part of a
larger series of actions, perhaps involving different connections.
Since lws operates inside an event loop, if the outer sequencing
does not, it can be awkward to synchronize these steps with what's
happening on the network with a particular connection on the event
loop thread.
![lws_sequencer](/doc-assets/lws_sequencer.svg)
`lws_sequencer_t` provides a generic way to stage multi-step
operations from inside the event loop. Because it participates
in the event loop similar to a wsi, it always operates from the
service thread context and can access structures that share the
service thread without locking. It can also provide its own
higher-level timeout handling.
Naturally you can have many of them running in the same event
loop operating independently.
Sequencers themselves bind to a pt (per-thread) service thread,
by default there's only one of these and it's the same as saying
they bind to an `lws_context`. The sequencer callback may create
wsi which in turn are bound to a vhost, but the sequencer itself
is above all that.
## Sequencer timeouts
The sequencer additionally maintains its own second-resolution timeout
checked by lws for the step being sequenced... this is independent of
any lws wsi timeouts which tend to be set and reset for very short-term
timeout protection inside one transaction.
The sequencer timeout operates separately and above any wsi timeout, and
is typically only reset by the sequencer callback when it receives an
event indicating a step completed or failed, or it sets up the next sequence
step.
If the sequencer timeout expires, then the sequencer receives a queued
`LWSSEQ_TIMED_OUT` message informing it, and it can take corrective action
or schedule a retry of the step. This message is queued and sent normally
under the service thread context and in order of receipt.
Unlike lws timeouts which force the wsi to close, the sequencer timeout
only sends the message. This allows the timeout to be used to, eg, wait
out a retry cooloff period and then start the retry when the
`LWSSEQ_TIMED_OUT` is received, according to the state of the sequencer.
## Creating an `lws_sequencer_t`
```
lws_sequencer_t *
lws_sequencer_create(struct lws_context *context, int tsi, void *user_data,
lws_seq_event_cb cb);
```
When created, in lws the sequencer objects are bound to a 'per-thread',
which is by default the same as to say bound to the `lws_context`. You
can tag them with an opaque user data pointer, and they are also bound to
a user-specified callback which handles sequencer events
```
typedef int (*lws_seq_event_cb)(struct lws_sequencer *seq, void *user_data,
lws_seq_events_t event, void *data);
```
`lws_sequencer_t` objects are private to lws and opaque to the user. A small
set of apis lets you perform operations on the pointer returned by the
create api.
## Queueing events on a sequencer
Each sequencer object can be passed "events", which are held on a per-sequencer
queue and handled strictly in the order they arrived on subsequent event loops.
`LWSSEQ_CREATED` and `LWSSEQ_DESTROYED` events are produced by lws reflecting
the sequencer's lifecycle, but otherwise the event indexes have a user-defined
meaning and are queued on the sequencer by user code for eventual consumption
by user code in the sequencer callback.
Pending events are removed from the sequencer queues and sent to the sequencer
callback from inside the event loop at a rate of one per event loop wait.
## Destroying sequencers
`lws_sequencer_t` objects are cleaned up during context destruction if they are
still around.
Normally the sequencer callback receives a queued message that
informs it that it's either failed at the current step, or succeeded and that
was the last step, and requests that it should be destroyed by returning
`LWSSEQ_RET_DESTROY` from the sequencer callback.
## Lifecycle considerations
Sequencers may spawn additional assets like client wsi as part of the sequenced
actions... the lifecycle of the sequencer and the assets overlap but do not
necessarily depend on each other... that is a wsi created by the sequencer may
outlive the sequencer.
It's important therefore to detach assets from the sequencer and the sequencer
from the assets when each step is over and the asset is "out of scope" for the
sequencer. It doesn't necessarily mean closing the assets, just making sure
pointers are invalidated. For example, if a client wsi held a pointer to the
sequencer as its `.user_data`, when the wsi is out of scope for the sequencer
it can set it to NULL, eg, `lws_set_wsi_user(wsi, NULL);`.
Under some conditions wsi may want to hang around a bit to see if there is a
subsequent client wsi transaction they can be reused on. They will clean
themselves up when they time out.

View file

@ -0,0 +1,955 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="179.03mm" height="156.88mm" version="1.1" viewBox="0 0 179.03 156.88" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<defs>
<marker id="marker9266-0-2-5" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="marker34759" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="marker9266-0-2" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="marker9266-0" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<marker id="marker35789" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<clipPath id="clipPath32169">
<rect x="-54.933" y="230.95" width="79.112" height="39.021" fill="#b3b3b3"/>
</clipPath>
<linearGradient id="linearGradient11357-7" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8597 1051 -923.88)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11375-1" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8598 1040.3 -928.53)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11735-6" x2="1" gradientTransform="matrix(-636.8 1466.5 -7.592 -3.2967 1017.3 -938.51)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11771-1" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8598 1002.5 -944.94)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11789-0" x2="1" gradientTransform="matrix(-636.8 1466.5 -7.5923 -3.2969 1006.6 -943.16)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11825-1" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8598 1029.6 -933.17)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient11843-3" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8598 1018.9 -937.81)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient12131-2" x2="1" gradientTransform="matrix(-636.8 1466.5 -7.592 -3.2967 979.46 -954.93)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient12221-8" x2="1" gradientTransform="matrix(-636.8 1466.5 -15.797 -6.8598 991.77 -949.58)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient13921-1" x2="1" gradientTransform="matrix(-11.223 135.93 -98.154 -8.1044 502.25 289.31)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient13939-6" x2="1" gradientTransform="matrix(-9.7265 54.751 -55.467 -9.8538 543.81 291.93)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient13957-9" x2="1" gradientTransform="matrix(-5.6174 13.258 -6.2951 -2.6671 502.44 306.56)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient13975-8" x2="1" gradientTransform="matrix(-9.6681 22.819 -2.7255 -1.1548 481.47 310.7)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient13993-9" x2="1" gradientTransform="matrix(-9.1296 21.548 -2.3134 -.98017 530.55 301.83)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14011-4" x2="1" gradientTransform="matrix(-3.4589 8.1639 -8.1917 -3.4707 428.4 329.67)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14029-0" x2="1" gradientTransform="matrix(-1.8567 71.399 -5.2548 -.13665 500.06 265.73)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14047-1" x2="1" gradientTransform="matrix(-1.3053e-5 79.162 -4.2642 -7.0556e-7 498.32 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14065-8" x2="1" gradientTransform="matrix(-5.2906 12.487 -9.4796 -4.0164 497.3 319.25)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14083-3" x2="1" gradientTransform="matrix(8.1136 75.133 -5.4303 .58642 476.4 289.65)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14101-3" x2="1" gradientTransform="matrix(-1.8567 71.399 -3.9987 -.10399 529.88 266.51)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14119-8" x2="1" gradientTransform="matrix(-4.7822 11.287 -6.4102 -2.7159 500.9 321.02)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14137-5" x2="1" gradientTransform="matrix(76.07 77.87 -5.5448 5.4166 470.83 293.71)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14155-3" x2="1" gradientTransform="matrix(-1.3053e-5 79.161 -4.5952 -7.0556e-7 529.2 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14173-0" x2="1" gradientTransform="matrix(-21.83 -125.58 7.7055 -1.3395 435.69 438.02)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14191-5" x2="1" gradientTransform="matrix(-22.955 121.3 -6.924 -1.3103 431.76 257.51)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14209-6" x2="1" gradientTransform="matrix(-1.5169e-5 92.676 -10.559 -1.7639e-6 539.04 242.39)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14227-4" x2="1" gradientTransform="matrix(-1.8568 71.401 -11.17 -.29046 496.45 265.64)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14245-6" x2="1" gradientTransform="matrix(-10.538 24.872 -6.814 -2.887 498.23 322.7)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14263-8" x2="1" gradientTransform="matrix(-8.5818 20.255 -2.9111 -1.2334 532.31 316.6)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14281-5" x2="1" gradientTransform="matrix(-1.3053e-5 79.171 -9.6911 -1.4111e-6 493.87 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14299-9" x2="1" gradientTransform="matrix(2.8695 75.957 -8.3324 .31478 513.58 266.6)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14317-6" x2="1" gradientTransform="matrix(-5.4725 12.916 -10.664 -4.5181 420.06 346.72)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14335-3" x2="1" gradientTransform="matrix(-6.9203 56.037 -7.186 -.88742 502.74 282.75)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14353-1" x2="1" gradientTransform="matrix(-1.0936e-5 67.349 -4.6128 -7.0556e-7 496.96 290.5)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14371-1" x2="1" gradientTransform="matrix(-1.8567 71.4 -10.794 -.28069 541.23 266.8)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14389-0" x2="1" gradientTransform="matrix(-6.9202 56.037 -4.8661 -.60093 534.54 286.68)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14407-7" x2="1" gradientTransform="matrix(-7.4823 98.268 -10.279 -.78264 497.57 275.32)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14425-3" x2="1" gradientTransform="matrix(-1.0936e-5 67.346 -5.0159 -7.0556e-7 531.16 290.5)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14443-6" x2="1" gradientTransform="matrix(-24.981 162.38 -53.719 -8.2645 542.15 286.35)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14461-7" x2="1" gradientTransform="matrix(1.5192 85.248 -10.941 .19498 502.5 266.35)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14479-0" x2="1" gradientTransform="matrix(-1.5169e-5 92.665 -6.982 -1.0583e-6 509.23 242.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14497-2" x2="1" gradientTransform="matrix(-1.5169e-5 92.658 -7.2814 -1.0583e-6 521.52 242.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14515-7" x2="1" gradientTransform="matrix(1.5191 85.238 -11.644 .20752 530.49 265.86)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14533-4" x2="1" gradientTransform="matrix(-1.3053e-5 79.169 -10.771 -1.7639e-6 540.23 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14551-1" x2="1" gradientTransform="matrix(-80.31 110.24 -11.498 -8.3765 544.26 260.36)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14569-3" x2="1" gradientTransform="matrix(-6.9206 56.04 -9.831 -1.2141 520.91 285)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14587-5" x2="1" gradientTransform="matrix(-21.83 -125.58 13.737 -2.3879 418.91 440.94)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14605-7" x2="1" gradientTransform="matrix(-7.6229 17.992 -8.6558 -3.6673 518.12 308.23)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14623-8" x2="1" gradientTransform="matrix(-1.4464e-5 89.626 -12.383 -2.1167e-6 503.66 266.7)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14641-5" x2="1" gradientTransform="matrix(-1.8567 71.399 -8.0716 -.2099 510.83 266.01)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14659-8" x2="1" gradientTransform="matrix(-22.956 121.3 -11.204 -2.1202 425.84 256.39)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14677-7" x2="1" gradientTransform="matrix(-8.8194e-6 54.688 -7.6788 -1.4111e-6 508.71 283.07)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14695-9" x2="1" gradientTransform="matrix(-1.3053e-5 79.163 -11.515 -1.7639e-6 502.79 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14713-2" x2="1" gradientTransform="matrix(-20.618 48.663 -10.559 -4.4739 499.56 313.04)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14731-7" x2="1" gradientTransform="matrix(-1.4464e-5 89.625 -12.384 -2.1167e-6 532.4 266.7)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14749-8" x2="1" gradientTransform="matrix(-1.8567 71.398 -7.7998 -.20283 523.14 266.33)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14767-9" x2="1" gradientTransform="matrix(-40.171 125.24 -5.9737 -1.9161 498.07 291.41)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14785-6" x2="1" gradientTransform="matrix(54.015 81.697 -8.9165 5.8952 450.76 281.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14803-0" x2="1" gradientTransform="matrix(-3.1507 112.53 -4.4752 -.1253 500.08 270.03)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14821-3" x2="1" gradientTransform="matrix(-8.8194e-6 54.687 -7.7308 -1.4111e-6 521.82 283.07)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14839-5" x2="1" gradientTransform="matrix(-1.3053e-5 79.163 -12.187 -2.1167e-6 532.4 282.4)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14857-1" x2="1" gradientTransform="matrix(-21.942 130.98 -11.668 -1.9546 496.31 280.71)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14875-3" x2="1" gradientTransform="matrix(-24.306 79.331 -19.483 -5.9692 455.32 299.19)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14893-0" x2="1" gradientTransform="matrix(-40.172 125.24 -8.2904 -2.6592 496.95 291.05)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14911-5" x2="1" gradientTransform="matrix(-40.172 125.24 -12.987 -4.1656 453.6 277.15)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14929-6" x2="1" gradientTransform="matrix(-24.981 162.38 -92.236 -14.19 502.3 280.22)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14947-0" x2="1" gradientTransform="matrix(-17.329 86.872 -7.1895 -1.4342 495.63 298.01)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14965-1" x2="1" gradientTransform="matrix(-4.9506 109.82 -12.164 -.54836 430.76 287.49)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient14983-6" x2="1" gradientTransform="matrix(-17.328 86.866 -12.868 -2.567 452.47 289.41)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15001-7" x2="1" gradientTransform="matrix(-17.329 86.872 -13.628 -2.7186 478.52 294.6)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15019-6" x2="1" gradientTransform="matrix(8.1137 75.134 -11.902 1.2853 488.46 288.35)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15037-9" x2="1" gradientTransform="matrix(-19.129 99.247 -6.6693 -1.2855 506.13 297.54)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15055-5" x2="1" gradientTransform="matrix(39.637 -119.91 12.795 4.2295 460.64 391.33)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15073-2" x2="1" gradientTransform="matrix(-13.953 109.6 -5.0541 -.64344 500.6 296.65)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15091-2" x2="1" gradientTransform="matrix(-19.13 99.25 -17.602 -3.3927 432.7 283.39)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15109-5" x2="1" gradientTransform="matrix(-208 87.292 -6.3852 -15.215 563.7 306.81)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15127-3" x2="1" gradientTransform="matrix(54.01 81.691 -3.1178 2.0613 423.26 299.59)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15145-1" x2="1" gradientTransform="matrix(-3.1505 112.52 -14.011 -.39228 485.04 269.61)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15163-1" x2="1" gradientTransform="matrix(-3.1503 112.51 -16.554 -.46349 450.87 268.66)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15181-9" x2="1" gradientTransform="matrix(-4.951 109.83 -5.8077 -.26181 455.48 288.6)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15199-2" x2="1" gradientTransform="matrix(-13.953 109.6 -9.555 -1.2164 418.36 286.18)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15217-3" x2="1" gradientTransform="matrix(-142.91 -61.441 5.2383 -12.184 502.42 396.73)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15235-9" x2="1" gradientTransform="matrix(-24.306 79.331 -19.17 -5.8732 480.63 306.95)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15253-3" x2="1" gradientTransform="matrix(-40.174 125.25 -14.457 -4.6372 480.24 285.69)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15271-9" x2="1" gradientTransform="matrix(108.19 -41.016 8.1434 21.481 383.12 378.64)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15289-0" x2="1" gradientTransform="matrix(-19.13 99.249 -23.633 -4.5552 463.8 289.38)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15307-1" x2="1" gradientTransform="matrix(-171.09 82.304 -9.1941 -19.113 546.48 328.34)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15325-6" x2="1" gradientTransform="matrix(94.741 -111.17 10.193 8.6868 396.93 417.47)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15343-8" x2="1" gradientTransform="matrix(-13.954 109.61 -17.602 -2.2409 451.2 290.36)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15361-6" x2="1" gradientTransform="matrix(-142.9 -61.438 5.5636 -12.941 504.93 390.88)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15379-3" x2="1" gradientTransform="matrix(5.0712 -20.634 23.394 5.7496 498.22 303.38)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15397-8" x2="1" gradientTransform="matrix(-3.1476 12.59 -18.216 -4.5541 521.79 299.08)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15415-7" x2="1" gradientTransform="matrix(46.248 -48.949 29.351 27.732 415.4 328.26)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15433-5" x2="1" gradientTransform="matrix(-24.981 162.38 -44.4 -6.8308 478.29 276.53)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15451-4" x2="1" gradientTransform="matrix(-8.918 29.552 -33.772 -10.191 468.37 319.58)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15469-3" x2="1" gradientTransform="matrix(-24.981 162.38 -25.03 -3.8509 467.36 274.85)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15487-8" x2="1" gradientTransform="matrix(8.8828 -3.3035 2.4608 6.6169 441.41 321.12)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15505-3" x2="1" gradientTransform="matrix(-24.982 162.38 -11.779 -1.8121 519.91 282.93)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15523-5" x2="1" gradientTransform="matrix(3.7385 -1.1554 1.1691 3.7829 508.72 298.98)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15541-2" x2="1" gradientTransform="matrix(-19.13 99.25 -18.198 -3.5075 495.36 295.47)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient15559-0" x2="1" gradientTransform="matrix(-13.953 109.6 -15.2 -1.9351 486.83 294.9)" gradientUnits="userSpaceOnUse">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#8ca0b2" offset=".5"/>
<stop stop-color="#14212f" offset="1"/>
</linearGradient>
<marker id="marker9266" overflow="visible" orient="auto">
<path transform="matrix(-.2 0 0 -.2 -1.2 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/>
</marker>
<filter id="filter37725" x="-.031866" y="-.041367" width="1.0637" height="1.0827" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="4.3768498"/>
</filter>
</defs>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(391.05 132.94)">
<path transform="matrix(.51055 0 0 .5706 -377.19 -236.69)" d="m-16.656 192.33h329.65v253.93h-329.65z" filter="url(#filter37725)"/>
<path d="m-386.36-127.7h168.3v144.9h-168.3z" fill="#fff"/>
<path d="m-342.59-102.46h87.058v73.507h-87.058z" fill="#ececec"/>
<path d="m-265.26-8.1289a14.859 16.607 0 0 1-14.859 16.607 14.859 16.607 0 0 1-14.859-16.607 14.859 16.607 0 0 1 14.859-16.607 14.859 16.607 0 0 1 14.859 16.607z" fill="#00f"/>
<path d="m-357.67-122.28h102.06v15.25h-102.06z" fill="#008000"/>
<path d="m-353.72-114.8h35.711v15.25h-35.711z" fill="#b3b3b3"/>
<path d="m-334.28-89.41h40.391v18.06h-40.391z" fill="#b3b3b3"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" fill="#fff" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_context">
<path d="m-295.49-110.85q0 0.19993 0.0514 0.28561 0.0571 0.0857 0.15423 0.0857 0.11996 0 0.2799-0.0628l0.04 0.33132q-0.0743 0.0457-0.21136 0.0742-0.13138 0.0286-0.23991 0.0286-0.21707 0-0.35416-0.13139-0.13139-0.13709-0.13139-0.47411v-3.4559h0.41129z"/>
<path d="m-293.07-113.03 0.50839 1.668 0.10282 0.54838h0.0114l0.0857-0.55981 0.38843-1.6566h0.38844l-0.75974 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78258-2.919h0.43984l0.43985 1.6623 0.0685 0.55409h0.0114l0.10282-0.56552 0.46841-1.6508z"/>
<path d="m-291.28-110.64q0.11424 0.0686 0.26848 0.11996 0.15994 0.0457 0.3256 0.0457 0.1885 0 0.31988-0.0914 0.13139-0.0971 0.13139-0.30846 0-0.17708-0.08-0.29132-0.08-0.11425-0.20564-0.20565-0.11996-0.0914-0.26276-0.16565-0.14281-0.08-0.26848-0.18851-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.04 0.29704 0.11424l-0.10853 0.34274q-0.10854-0.0571-0.25134-0.0914-0.14281-0.04-0.29133-0.04-0.20564 0-0.30275 0.0857-0.0914 0.0857-0.0914 0.26848 0 0.1428 0.08 0.24562 0.08 0.0971 0.19993 0.1828 0.12567 0.08 0.26848 0.16565 0.14281 0.0857 0.26277 0.20564 0.12567 0.11425 0.20564 0.27991 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.1428-0.15995 0.25134-0.10282 0.10282-0.26276 0.16565-0.15423 0.0628-0.36559 0.0628-0.25134 0-0.43413-0.0514-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-289.64-109.37h1.9079v0.3713h-1.9079z"/>
<path d="m-285.82-110.32q-0.14281 0.10854-0.3256 0.15995-0.18279 0.0514-0.38272 0.0514-0.27419 0-0.4627-0.10282-0.1885-0.10854-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.04 0.15995 0.04 0.27419 0.10282l-0.11424 0.35988q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.46841 0.27418-0.15423 0.26848-0.15423 0.85113 0 0.23421 0.0343 0.43985t0.11424 0.35987q0.08 0.14852 0.20564 0.23992 0.12567 0.0857 0.31418 0.0857 0.14852 0 0.27419-0.0514 0.13138-0.0514 0.21135-0.11996z"/>
<path d="m-285.59-111.6q0-0.77115 0.26277-1.131 0.26848-0.36558 0.75973-0.36558 0.52553 0 0.77116 0.3713 0.25134 0.37129 0.25134 1.1253 0 0.77687-0.26848 1.1368-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20565 0.10282 0.35417 0.0743 0.14851 0.1885 0.2342 0.11425 0.08 0.27419 0.08 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86256 0-0.24562-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11425-0.0857-0.27419-0.0857-0.29132 0-0.44556 0.26847-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-281.53-110.17v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19421-0.35416-0.19421-0.22849 0-0.37701 0.13709t-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30276h0.0171q0.10853-0.15424 0.29132-0.26277 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.0514 0.1428 0.0514 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51981v1.8508z"/>
<path d="m-280.77-113.03h0.34844v-0.56551l0.41129-0.13138v0.69689h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.0229 0.0857-0.0286 0.18279-0.0686l0.08 0.3256q-0.12567 0.0628-0.2799 0.0971-0.14852 0.04-0.31417 0.04-0.28562 0-0.41129-0.1828-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34844z"/>
<path d="m-277.25-110.37q-0.1371 0.12567-0.34845 0.19422-0.21136 0.0686-0.44556 0.0686-0.26848 0-0.46841-0.10282-0.19421-0.10854-0.32559-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.04 0.15995 0.04 0.28562 0.15995t0.19992 0.33702q0.08 0.21707 0.08 0.56552 0 0.0971-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34273q0.0857 0.1371 0.21707 0.21707 0.13709 0.0743 0.33702 0.0743 0.15424 0 0.30275-0.0571 0.15424-0.0571 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19992-0.35987-0.19992-0.26277 0-0.417 0.19992-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-276.12-111.63-0.75402-1.3938h0.49126l0.4227 0.81686 0.11425 0.31989 0.11996-0.31989 0.43413-0.81686h0.45127l-0.75973 1.371 0.80543 1.4852h-0.46841l-0.47983-0.89683-0.12567-0.34273-0.13138 0.34273-0.47983 0.89683h-0.45127z"/>
<path d="m-274.64-113.03h0.34844v-0.56551l0.41129-0.13138v0.69689h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.0229 0.0857-0.0286 0.18279-0.0686l0.08 0.3256q-0.12567 0.0628-0.2799 0.0971-0.14852 0.04-0.31417 0.04-0.28562 0-0.41129-0.1828-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34844z"/>
</g>
<g stroke-width=".14281">
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="per-thread">
<path d="m-373.02-106.11h0.29132l0.0628 0.30846h0.0229q0.21135-0.37701 0.66262-0.37701t0.67405 0.33702q0.22849 0.33703 0.22849 1.1025 0 0.35987-0.0743 0.6512-0.0743 0.28561-0.21135 0.49126-0.1371 0.19992-0.33703 0.30846-0.19421 0.10282-0.43413 0.10282-0.16566 0-0.26276-0.0229-0.0971-0.0171-0.21136-0.08v1.1767h-0.41128zm0.41128 2.4049q0.08 0.0686 0.17708 0.10854 0.10282 0.04 0.26848 0.04 0.30275 0 0.47983-0.30846t0.17708-0.87969q0-0.23992-0.0343-0.43413-0.0286-0.19422-0.0971-0.33132-0.0685-0.1428-0.17708-0.21706-0.10282-0.08-0.25705-0.08-0.417 0-0.53696 0.50839z"/>
<path d="m-368.83-103.45q-0.13709 0.12567-0.34845 0.19422-0.21135 0.0686-0.44556 0.0686-0.26847 0-0.4684-0.10282-0.19422-0.10854-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.04 0.15995 0.04 0.28562 0.15995 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.0971-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34274q0.0857 0.13709 0.21706 0.21706 0.1371 0.0743 0.33703 0.0743 0.15423 0 0.30275-0.0571 0.15423-0.0571 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42843-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19992-0.1828 0.62835z"/>
<path d="m-368.18-106.11h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20565-0.25706 0.13138-0.0971 0.31417-0.0971 0.13138 0 0.29704 0.0514l-0.08 0.41699q-0.14852-0.0514-0.26277-0.0514-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14851 0.27991v2.1021h-0.41129z"/>
<path d="m-366.69-105.09h1.1253v0.39415h-1.1253z"/>
<path d="m-365.24-106.11h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.37129h-0.61693v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.0229 0.0857-0.0286 0.18279-0.0686l0.08 0.3256q-0.12567 0.0628-0.2799 0.0971-0.14852 0.04-0.31417 0.04-0.28562 0-0.41129-0.1828-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-361.92-103.26v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.1428-0.15995 0.14281-0.21707 0.35988v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23991 0.17137-0.0971 0.42271-0.0971 0.1885 0 0.3256 0.0514 0.1428 0.0514 0.2342 0.17708 0.0914 0.12567 0.13709 0.33702 0.0457 0.20564 0.0457 0.51411v1.8451z"/>
<path d="m-360.87-106.11h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25706 0.13138-0.0971 0.31417-0.0971 0.13139 0 0.29704 0.0514l-0.08 0.41699q-0.14852-0.0514-0.26276-0.0514-0.1828 0-0.29704 0.10853-0.11425 0.10282-0.14852 0.27991v2.1021h-0.41129z"/>
<path d="m-357.6-103.45q-0.13709 0.12567-0.34845 0.19422-0.21135 0.0686-0.44555 0.0686-0.26848 0-0.46841-0.10282-0.19422-0.10854-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139t0.75973-0.38272q0.15995 0 0.31418 0.04 0.15994 0.04 0.28561 0.15995 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.0971-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34274q0.0857 0.13709 0.21707 0.21706 0.13709 0.0743 0.33702 0.0743 0.15423 0 0.30275-0.0571 0.15423-0.0571 0.2342-0.1371zm-0.31988-1.5309q0.0114-0.42843-0.11996-0.62835-0.13138-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19992-0.18279 0.62835z"/>
<path d="m-356.99-105.94q0.16566-0.10282 0.39986-0.15994 0.23992-0.0571 0.50268-0.0571 0.23992 0 0.38273 0.0743 0.14851 0.0685 0.22849 0.19421 0.0857 0.11996 0.10853 0.27991 0.0286 0.15423 0.0286 0.32559 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21706 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33703h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10854-0.44555 0.10854-0.30847 0-0.5084-0.21136-0.19421-0.21706-0.19421-0.59407 0-0.24563 0.08-0.41129 0.0857-0.16565 0.2342-0.26847 0.15423-0.10282 0.35988-0.14281 0.21135-0.0457 0.4684-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11995 6e-3 0.0171-0.17708 0.0171-0.31417 0-0.3256-0.0971-0.45698-0.0971-0.13139-0.35416-0.13139-0.15994 0-0.34845 0.0514-0.1885 0.0457-0.31417 0.11995zm1.2396 1.3824q-0.0571-6e-3 -0.11425-6e-3 -0.0571-6e-3 -0.11424-6e-3 -0.1371 0-0.26848 0.0228-0.13138 0.0229-0.2342 0.08t-0.16566 0.15423q-0.0571 0.0971-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11425 0.12567 0.29133 0.12567 0.23991 0 0.37129-0.11425 0.13139-0.11424 0.1828-0.25134z"/>
<path d="m-352.87-104.24q0 0.29133 6e-3 0.53124 6e-3 0.23421 0.04 0.4627h-0.2799l-0.0914-0.34274h-0.0229q-0.08 0.17137-0.25134 0.28561-0.17137 0.11425-0.41128 0.11425-0.4627 0-0.69119-0.35987-0.22277-0.35988-0.22277-1.131 0-0.73118 0.27418-1.1082 0.27991-0.37701 0.76545-0.37701 0.16565 0 0.26276 0.0229 0.0971 0.0171 0.21136 0.0628v-1.1767h0.41128zm-0.41128-1.4224q-0.08-0.0685-0.1828-0.0971-0.0971-0.0343-0.26276-0.0343-0.30275 0-0.47412 0.27419-0.16565 0.27419-0.16565 0.84542 0 0.25134 0.0286 0.45698 0.0343 0.19993 0.0971 0.34845 0.0685 0.14852 0.17136 0.22849 0.10854 0.08 0.26277 0.08 0.41128 0 0.52553-0.48554z"/>
</g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="event loop">
<path d="m-292.25-90.727q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21136-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-291.01-91.716 0.11425 0.56552h0.0114l0.10282-0.57694 0.50268-1.6623h0.43414l-0.9768 2.919h-0.19993l-0.99394-2.919h0.46841z"/>
<path d="m-287.77-90.727q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21136-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-285.66-90.533v-1.7422q0-0.42842-0.10282-0.61692-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10854-0.15423 0.29133-0.26276 0.1885-0.10853 0.44556-0.10853 0.18279 0 0.31988 0.05141 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-284.9-93.389h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.3713h-0.61693v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19421-0.02285 0.0857-0.02856 0.1828-0.06855l0.08 0.3256q-0.12567 0.06284-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-281.39-91.213q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11995 0 0.2799-0.06284l0.04 0.33131q-0.0743 0.0457-0.21135 0.07426-0.13138 0.02856-0.23992 0.02856-0.21706 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-280.63-91.961q0-0.77116 0.26276-1.131 0.26848-0.36558 0.75973-0.36558 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367-0.26847 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24562-0.3713-0.24562-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.1828-0.22849-0.11424-0.08568-0.27419-0.08568-0.29132 0-0.44555 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-278.16-91.961q0-0.77116 0.26276-1.131 0.26848-0.36558 0.75973-0.36558 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367-0.26847 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24562-0.3713-0.24562-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10283-0.35987-0.0685-0.14852-0.18279-0.22849-0.11424-0.08568-0.27419-0.08568-0.29132 0-0.44555 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-275.57-93.389h0.29133l0.0628 0.30846h0.0228q0.21136-0.37701 0.66263-0.37701t0.67405 0.33702q0.22849 0.33702 0.22849 1.1025 0 0.35987-0.0743 0.6512-0.0743 0.28561-0.21136 0.49126-0.13709 0.19993-0.33702 0.30846-0.19422 0.10282-0.43413 0.10282-0.16566 0-0.26277-0.02285-0.0971-0.01714-0.21135-0.07997v1.1767h-0.41129zm0.41129 2.4049q0.08 0.06855 0.17708 0.10853 0.10282 0.03999 0.26848 0.03999 0.30275 0 0.47983-0.30846 0.17708-0.30846 0.17708-0.87969 0-0.23992-0.0343-0.43413-0.0286-0.19422-0.0971-0.33131-0.0685-0.14281-0.17708-0.21707-0.10282-0.07997-0.25705-0.07997-0.41699 0-0.53695 0.50839z"/>
</g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_sequencer">
<path d="m-350.73-80.685q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06283l0.04 0.33131q-0.0743 0.0457-0.21136 0.07426-0.13138 0.02856-0.23991 0.02856-0.21707 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-348.31-82.861 0.50839 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38844l-0.75973 2.919h-0.23421l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.55981 1.8679h-0.2342l-0.78258-2.919h0.43984l0.43985 1.6623 0.0686 0.55409h0.0114l0.10282-0.56552 0.46841-1.6508z"/>
<path d="m-346.51-80.473q0.11425 0.06855 0.26848 0.11996 0.15994 0.0457 0.3256 0.0457 0.1885 0 0.31988-0.0914 0.13139-0.09711 0.13139-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11995-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11425l-0.10853 0.34274q-0.10854-0.05712-0.25134-0.0914-0.14281-0.03999-0.29133-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26847 0.16566 0.14281 0.08568 0.26277 0.20564 0.12567 0.11424 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15994 0.25134q-0.10282 0.10282-0.26277 0.16566-0.15423 0.06283-0.36558 0.06283-0.25134 0-0.43414-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-344.88-79.205h1.9079v0.3713h-1.9079z"/>
<path d="m-342.68-80.473q0.11425 0.06855 0.26848 0.11996 0.15994 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40558 0.0457 0.17136 0.03999 0.29703 0.11425l-0.10853 0.34274q-0.10853-0.05712-0.25134-0.0914-0.14281-0.03999-0.29133-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11424 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15994 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15424 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.1828-0.0457-0.30847-0.12567z"/>
<path d="m-338.99-80.199q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-336.59-78.862h-0.41129v-1.3767h-0.0228q-0.0914 0.14281-0.2342 0.22278-0.13709 0.07997-0.35987 0.07997-0.45127 0-0.67405-0.35987-0.22278-0.36559-0.22278-1.1253 0-0.73688 0.29133-1.1139 0.29132-0.37701 0.84541-0.37701 0.23992 0 0.45698 0.05712 0.21707 0.05712 0.33132 0.11996zm-0.41129-3.5816q-0.15994-0.09711-0.45127-0.09711-0.29704 0-0.4684 0.27419-0.16566 0.27419-0.16566 0.8397 0 0.23992 0.0286 0.44556t0.0914 0.35987q0.0685 0.14852 0.17137 0.2342 0.10853 0.07997 0.26276 0.07997 0.21707 0 0.34274-0.12567t0.1885-0.36558z"/>
<path d="m-335.55-82.861v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21135-0.0457 0.0971-0.05141 0.17137-0.13138 0.0743-0.07997 0.13138-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41128v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.2799 0.33131-0.18279 0.1371-0.45698 0.1371-0.18279 0-0.31989-0.0457-0.13709-0.0457-0.2342-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-331.74-80.199q-0.13709 0.12567-0.34844 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-329.63-80.005v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29703l0.0743 0.30275h0.0171q0.10853-0.15423 0.29133-0.26276 0.1885-0.10853 0.44555-0.10853 0.1828 0 0.31989 0.05141 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-327.01-80.148q-0.14281 0.10853-0.3256 0.15994t-0.38272 0.05141q-0.27419 0-0.4627-0.10282-0.1885-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999 0.15995 0.03999 0.27419 0.10282l-0.11424 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11424 0.35987 0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31418 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-324.95-80.199q-0.13709 0.12567-0.34844 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.23421-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-324.3-82.861h0.29132l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.09711 0.31417-0.09711 0.13139 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26276-0.05141-0.1828 0-0.29704 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
</g>
</g>
<path d="m-254-78.922h30.293v15.25h-30.293z" fill="#999"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_vhost">
<path d="m-266.88-70.861q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11995 0 0.2799-0.06284l0.04 0.33131q-0.0743 0.0457-0.21135 0.07426-0.13138 0.02856-0.23992 0.02856-0.21706 0-0.35416-0.13138-0.13138-0.1371-0.13138-0.47412v-3.4559h0.41129z"/>
<path d="m-264.47-73.038 0.5084 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38844l-0.75974 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78259-2.919h0.43985l0.43984 1.6623 0.0686 0.55409h0.0114l0.10282-0.56552 0.4684-1.6508z"/>
<path d="m-262.67-70.65q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26276 0.20564 0.12567 0.11425 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06284-0.36559 0.06284-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-261.03-69.382h1.9079v0.3713h-1.9079z"/>
<path d="m-258.1-71.364 0.11425 0.56552h0.0114l0.10283-0.57694 0.50268-1.6623h0.43413l-0.9768 2.919h-0.19993l-0.99394-2.919h0.46841z"/>
<path d="m-255.1-70.182v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15994 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.09711 0.42271-0.09711 0.1885 0 0.3256 0.05141 0.14281 0.05141 0.2342 0.17708 0.0914 0.12567 0.1371 0.33702 0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-254.18-71.61q0-0.77116 0.26277-1.131 0.26848-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42843 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11424-0.08568-0.27419-0.08568-0.29132 0-0.44556 0.26848-0.14851 0.26848-0.14851 0.85684z"/>
<path d="m-251.64-70.65q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20565 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06284-0.36559 0.06284-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-249.95-73.038h0.34845v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19421-0.02285 0.0857-0.02856 0.1828-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
</g>
<path d="m-289.99-53.117h17.739v15.25h-17.739z" fill="#b3b3b3"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="wsi">
<path d="m-304.13-47.763 0.5084 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38844l-0.75974 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78259-2.919h0.43985l0.43984 1.6623 0.0685 0.55409h0.0114l0.10282-0.56552 0.4684-1.6508z"/>
<path d="m-302.33-45.375q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133t-0.20564-0.20564q-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26276 0.20564 0.12567 0.11424 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-300.29-47.763h0.41128v2.8561h-0.41128zm-0.0743-0.86826q0-0.1371 0.0743-0.22278 0.08-0.08568 0.20564-0.08568 0.12567 0 0.20564 0.08568 0.0857 0.07997 0.0857 0.22278 0 0.13709-0.0857 0.21707-0.08 0.07426-0.20564 0.07426-0.12567 0-0.20564-0.07997-0.0743-0.07997-0.0743-0.21135z"/>
</g>
<path d="m-304.45-67.223c-9.1033 20.34-0.25477 39.141 20.741 26.536" fill="none" marker-end="url(#marker9266)" stroke="#000" stroke-dasharray="1.00661946, 1.00661946" stroke-width="1.0066"/>
<g transform="matrix(.51055 0 0 .5706 -305.23 -226.24)" clip-path="url(#clipPath32169)">
<g transform="matrix(.28118 0 0 .28118 -172.38 171.04)">
<path d="m508.9 300.55-8.6184 2.2398 8.6184 2.2398 8.6191-2.2398-8.6191-2.2398" fill="url(#linearGradient11357-7)"/>
<path d="m486.44 323.02-8.6187 2.2401 8.6187 2.2394 8.6191-2.2394-8.6191-2.2401" fill="url(#linearGradient11375-1)"/>
<path d="m461.73 325.26 2.2401 8.6191 2.2398-8.6191-2.2398-8.6187-2.2401 8.6187" fill="url(#linearGradient11735-6)"/>
<path d="m441.51 323.02-8.6184 2.2401 8.6184 2.2394 8.6191-2.2394-8.6191-2.2401" fill="url(#linearGradient11771-1)"/>
<path d="m439.27 347.72 2.2398 8.6187 2.2398-8.6187-2.2398-8.6191-2.2398 8.6191" fill="url(#linearGradient11789-0)"/>
<path d="m463.97 345.48-8.6187 2.2398 8.6187 2.2394 8.6191-2.2394-8.6191-2.2398" fill="url(#linearGradient11825-1)"/>
<path d="m441.51 367.95-8.6184 2.2398 8.6184 2.2398 8.6191-2.2398-8.6191-2.2398" fill="url(#linearGradient11843-3)"/>
<path d="m416.8 325.26 2.2401 8.6191 2.2398-8.6191-2.2398-8.6187-2.2401 8.6187" fill="url(#linearGradient12131-2)"/>
<path d="m419.04 345.48-8.6184 2.2398 8.6184 2.2394 8.6191-2.2394-8.6191-2.2398" fill="url(#linearGradient12221-8)"/>
<path d="m496.2 325.6-1.1352-2.9718-0.23354-0.043-0.88371-9.0135-1.1345-3.2318-5.0102-5.4543-8.4751 2.1654-2.3304-1.1324-0.66216-4.0499-1.1853-2.7326-9.1087-1.3797-5.0952 3.9751-9.7335 0.48119-1.8457-3.5553-10.056 2.3336-0.76764 4.1808-9.3772 3.991-5.9828-1.4192-8.4272 5.5316 0.47977 2.9556 1.1518 2.674-3.4844 3.8848-8.9213 1.9509-3.4087 7.6429 0.77996 3.4191 3.7976 7.1226-3.3158 2.3576 0.79442 3.15 6.8851 12.302 6.1288 7.4408 1.7872 1.893 9.1331-5.0839 0.77999 0.30869 4.6895 9.7973 2.105 2.0923 12.976 0.56338 4.0287-8.552 12.41-3.1591 6.2819 5.8833 11.521-6.7899 0.38136-2.6871-1.4111-7.5452 4.1247-4.4394 9.5934 0.31856 2.9065-8.7323 0.49283-3.1411-1.2425-13.301" fill="url(#linearGradient13921-1)"/>
<path d="m539.07 301.71-1.1871-5.485-8.7076-0.16264-0.81174-0.57538 0.12805-3.0371-0.60148-2.9259-8.7055-1.759-4.7082 3.2075-6.4696 0.37712-4.6122-2.6106-8.2169 2.7192-0.42051 2.8734 0.23918 2.7263-0.96732 0.82056-7.8765 0.9839-1.0171 5.2649-0.25012 3.3793 1.6602 12.531 0.96202 2.3816 5.232 0.35207 0.62689 5.8424 1.0664 2.5936 8.5707 3.2576 5.3344-4.3653 6.9286-0.0942 5.5442 4.3049 9.0685-3.5514 1.0096-2.7347 0.36195-6.0907 6.1436-0.66711 0.93733-2.5728 1.1899-13.418-0.45191-3.5655" fill="url(#linearGradient13939-6)"/>
<path d="m498.19 310.2 0.80433 2.6681-2.3096-3.6897-0.86572-2.7238 2.371 3.7454" fill="url(#linearGradient13957-9)"/>
<path d="m478.32 314.01-0.22225 2.8437-2.6286 4.6715 0.14993-2.7908 2.7009-4.7244" fill="url(#linearGradient13975-8)"/>
<path d="m527.96 305.12-0.79586 2.8914-2.4155 3.9853 0.71966-2.8056 2.4917-4.0711" fill="url(#linearGradient13993-9)"/>
<path d="m424.32 331.06 1.7064 2.388-3.9938-3.151-1.7776-2.4148 4.0651 3.1778" fill="url(#linearGradient14011-4)"/>
<path d="m497.22 297.86 0.97826 12.341-2.371-3.7454-1.0629-12.125 2.4557 3.5302" fill="url(#linearGradient14029-0)"/>
<path d="m497.61 294.84-0.39758 3.0208-2.4557-3.5302 0.42051-2.8734 2.4328 3.3828" fill="url(#linearGradient14047-1)"/>
<path d="m494.32 320.53 0.6604 2.3929-7.4651-0.50236-0.96202-2.3816 7.7668 0.49107" fill="url(#linearGradient14065-8)"/>
<path d="m476.34 301.87 1.9844 12.138-2.7009 4.7244-2.1897-12.284 2.9062-4.5787" fill="url(#linearGradient14083-3)"/>
<path d="m528.49 292.45-0.5334 12.671-2.4917 4.0711 0.41769-12.807 2.6074-3.9356" fill="url(#linearGradient14101-3)"/>
<path d="m496.98 323.64 0.89993 2.716-2.9005-3.4308-0.6604-2.3929 2.661 3.1076" fill="url(#linearGradient14119-8)"/>
<path d="m475.15 299.14 1.1853 2.7326-2.9062 4.5787-1.2054-2.8483 2.9263-4.463" fill="url(#linearGradient14137-5)"/>
<path d="m527.89 289.53 0.60148 2.9259-2.6074 3.9356-0.57679-3.067 2.5827-3.7945" fill="url(#linearGradient14155-3)"/>
<path d="m419.37 319.23 4.9551 11.836-4.0651-3.1778-5.0197-11.655 4.1296 2.9965" fill="url(#linearGradient14173-0)"/>
<path d="m418.85 316.17 0.51999 3.0632-4.1296-2.9965-0.47977-2.9556 4.0894 2.8889" fill="url(#linearGradient14191-5)"/>
<path d="m538.34 318.7-0.93733 2.5728-8.2106 0.89183 0.57467-2.5206 8.5732-0.94403" fill="url(#linearGradient14209-6)"/>
<path d="m493.05 307.84 1.2619 12.689-7.7668-0.49107-1.6602-12.531 8.165 0.33337" fill="url(#linearGradient14227-4)"/>
<path d="m495.21 326.49-0.49071 2.6843-7.1762 3.5754 0.26035-2.6049 7.4066-3.6548" fill="url(#linearGradient14245-6)"/>
<path d="m529.76 319.64-0.57467 2.5206-3.0706 3.6777 0.81597-2.8427 2.8293-3.3556" fill="url(#linearGradient14263-8)"/>
<path d="m493.17 304.41-0.115 3.4346-8.165-0.33337 0.25012-3.3793 8.0299 0.27799" fill="url(#linearGradient14281-5)"/>
<path d="m514.94 327.57 0.32597 2.4405-6.9286 0.0942 0.18274-2.4292 6.4198-0.10548" fill="url(#linearGradient14299-9)"/>
<path d="m416.14 347.69 1.8369 2.1466-8.1118 0.13264-2.0906-2.1223 8.3654-0.15698" fill="url(#linearGradient14317-6)"/>
<path d="m495.83 310.79 1.1458 12.848-2.661-3.1076-1.2619-12.689 2.7771 2.9485" fill="url(#linearGradient14335-3)"/>
<path d="m496.26 307.58-0.42475 3.2082-2.7771-2.9485 0.115-3.4346 3.0868 3.175" fill="url(#linearGradient14353-1)"/>
<path d="m539.52 305.28-1.1899 13.418-8.5732 0.94403 0.69709-13.297 9.066-1.0657" fill="url(#linearGradient14371-1)"/>
<path d="m530.46 306.34-0.69709 13.297-2.8293 3.3556 0.54646-13.36 2.9799-3.2918" fill="url(#linearGradient14389-0)"/>
<path d="m492.81 310.34 1.1345 3.2318-7.8535 3.6689-1.0968-3.3066 7.8158-3.5941" fill="url(#linearGradient14407-7)"/>
<path d="m530.17 302.78 0.29351 3.5662-2.9799 3.2918-0.62513-3.284 3.3115-3.574" fill="url(#linearGradient14425-3)"/>
<path d="m529.18 296.06 8.7076 0.16264 1.1871 5.485-8.9076 1.065-3.3115 3.574 4.1296 4.5985-9.8707 3.6368-6.0367-3.9783-7.5219 0.26952-5.8219 4.3106-9.2572-2.8956 3.7804-4.7103-3.0868-3.175-8.0299-0.27799 1.0171-5.2649 7.8765-0.9839 3.5814-3.0374-2.4328-3.3828 8.2169-2.7192 4.6122 2.6106 6.4696-0.37712 4.7082-3.2075 8.7055 1.759-2.5827 3.7945 3.8679 2.7439" fill="url(#linearGradient14443-6)"/>
<path d="m502.95 332.18 0.054 2.2864-8.5707-3.2576-1.0664-2.5936 9.5832 3.5648" fill="url(#linearGradient14461-7)"/>
<path d="m508.52 327.67-0.18274 2.4292-5.3344 4.3653-0.054-2.2864 5.5711-4.5082" fill="url(#linearGradient14479-0)"/>
<path d="m520.73 331.98 0.0878 2.3336-5.5442-4.3049-0.32597-2.4405 5.7824 4.4118" fill="url(#linearGradient14497-2)"/>
<path d="m530.89 328.03-1.0096 2.7347-9.0685 3.5514-0.0878-2.3336 10.166-3.9525" fill="url(#linearGradient14515-7)"/>
<path d="m539.07 301.71 0.45191 3.5655-9.066 1.0657-0.29351-3.5662 8.9076-1.065" fill="url(#linearGradient14533-4)"/>
<path d="m493.95 313.57 1.2668 12.913-7.4066 3.6548-1.7138-12.899 7.8535-3.6689" fill="url(#linearGradient14551-1)"/>
<path d="m514.79 314.27 0.15063 13.294-6.4198 0.10548-0.52387-13.185 6.7931-0.21484" fill="url(#linearGradient14569-3)"/>
<path d="m410.15 335.52 5.9891 12.171-8.3654 0.15698-6.4196-12.04 8.796-0.28752" fill="url(#linearGradient14587-5)"/>
<path d="m515.08 310.61-0.28292 3.6647-6.7931 0.21484-0.44591-3.61 7.5219-0.26952" fill="url(#linearGradient14605-7)"/>
<path d="m502.08 318.96 0.86783 13.221-9.5832-3.5648-1.3882-12.949 10.104 3.2921" fill="url(#linearGradient14623-8)"/>
<path d="m508 314.49 0.52387 13.185-5.5711 4.5082-0.86783-13.221 5.915-4.4718" fill="url(#linearGradient14641-5)"/>
<path d="m409.3 332.07 0.85019 3.4505-8.796 0.28752-0.77996-3.4191 8.7257-0.31891" fill="url(#linearGradient14659-8)"/>
<path d="m507.55 310.88 0.44591 3.61-5.915 4.4718-0.35278-3.7712 5.8219-4.3106" fill="url(#linearGradient14677-7)"/>
<path d="m501.73 315.19 0.35278 3.7712-10.104-3.2921 0.49354-3.3747 9.2572 2.8956" fill="url(#linearGradient14695-9)"/>
<path d="m486.09 317.24 1.7138 12.899 0.86431 6.7952-1.7424-13.105-0.83573-6.5892" fill="url(#linearGradient14713-2)"/>
<path d="m531.7 314.44-0.80716 13.588-10.166 3.9525 0.19721-13.522 10.776-4.0185" fill="url(#linearGradient14731-7)"/>
<path d="m520.92 318.46-0.19721 13.522-5.7824-4.4118-0.15063-13.294 6.1302 4.1843" fill="url(#linearGradient14749-8)"/>
<path d="m485 313.94 1.0968 3.3066 0.83573 6.5892-1.0806-2.8967-0.85196-6.9991" fill="url(#linearGradient14767-9)"/>
<path d="m494.24 348.44-0.19544 2.3361-9.5934-0.31856-0.15381-2.3178 9.9427 0.30022" fill="url(#linearGradient14785-6)"/>
<path d="m497.44 338.9-0.49283 3.1411-2.9065 8.7323 0.19544-2.3361 3.2039-9.5374" fill="url(#linearGradient14803-0)"/>
<path d="m521.11 314.59-0.18944 3.8707-6.1302-4.1843 0.28292-3.6647 6.0367 3.9783" fill="url(#linearGradient14821-3)"/>
<path d="m530.98 310.95 0.71579 3.489-10.776 4.0185 0.18944-3.8707 9.8707-3.6368" fill="url(#linearGradient14839-5)"/>
<path d="m482.15 334.87 2.1445 13.275-6.8809 7.3212-2.6854-13.277 7.4217-7.3187" fill="url(#linearGradient14857-1)"/>
<path d="m428.31 353.67 5.6755 12.727-8.8434-3.4579-6.0836-12.563 9.2516 3.2946" fill="url(#linearGradient14875-3)"/>
<path d="m481.3 331.09 0.8509 3.7733-7.4217 7.3187-1.5335-3.2865 8.1044-7.8056" fill="url(#linearGradient14893-0)"/>
<path d="m427.73 350.1 0.57608 3.5754-9.2516-3.2946-1.3349-3.7342 10.01 3.4533" fill="url(#linearGradient14911-5)"/>
<path d="m485 313.94 0.85196 6.9991 9.2156 1.6951-3.2875 8.5432-10.477-0.0808-8.1044 7.8056 4.4072 6.6626-12.848 6.9931-6.7179-5.6981-13.707 3.4011-4.7763 8.5979-14.21-0.28822 2.3904-8.4681-10.01-3.4533-10.22 5.2144-5.6694-6.5751 8.6048-6.1182-1.1409-7.1-8.7257 0.31891 3.4087-7.6429 8.9213-1.9509 5.9422-6.6255-4.0894-2.8889 8.4272-5.5316 5.9828 1.4192 9.3772-3.991 0.76764-4.1808 10.056-2.3336 1.8457 3.5553 9.7335-0.48119 5.0952-3.9751 9.1087 1.3797-2.9263 4.463 7.1042 3.4519 8.4751-2.1654 5.0102 5.4543-7.8158 3.5941" fill="url(#linearGradient14929-6)"/>
<path d="m484.3 348.14 0.15381 2.3178-7.2577 7.8119 0.22296-2.8085 6.8809-7.3212" fill="url(#linearGradient14947-0)"/>
<path d="m425.14 362.94 1.421 2.0433-9.1331 5.0839-1.7872-1.893 9.4992-5.2342" fill="url(#linearGradient14965-1)"/>
<path d="m433.99 366.4 1.9505 2.2959-9.373-3.7105-1.421-2.0433 8.8434 3.4579" fill="url(#linearGradient14983-6)"/>
<path d="m462.44 363.91 1.1144 2.1294-12.41 3.1591-0.49459-2.2962 11.79-2.9923" fill="url(#linearGradient15001-7)"/>
<path d="m492.72 335 1.5233 13.441-9.9427-0.30022-2.1445-13.275 10.564 0.1337" fill="url(#linearGradient15019-6)"/>
<path d="m496.2 325.6 1.2425 13.301-3.2039 9.5374-1.5233-13.441 3.4847-9.3976" fill="url(#linearGradient15037-9)"/>
<path d="m491.78 331.17 0.93804 3.8262-10.564-0.1337-0.8509-3.7733 10.477 0.0808" fill="url(#linearGradient15055-5)"/>
<path d="m495.07 322.63 1.1352 2.9718-3.4847 9.3976-0.93804-3.8262 3.2875-8.5432" fill="url(#linearGradient15073-2)"/>
<path d="m408.8 355.71 6.8481 12.47-6.1288-7.4408-6.8851-12.302 6.1658 7.2725" fill="url(#linearGradient15091-2)"/>
<path d="m419.06 350.38 6.0836 12.563-9.4992 5.2342-6.8481-12.47 10.264-5.3276" fill="url(#linearGradient15109-5)"/>
<path d="m468.92 369.93 0.91686 1.9872-6.2819-5.8833-1.1144-2.1294 6.4795 6.0254" fill="url(#linearGradient15127-3)"/>
<path d="m481.74 362.44-0.38136 2.6871-11.521 6.7899-0.91686-1.9872 12.819-7.4898" fill="url(#linearGradient15145-1)"/>
<path d="m446.44 375.68 0.67028 2.0666-12.976-0.56338-2.105-2.0923 14.41 0.58914" fill="url(#linearGradient15163-1)"/>
<path d="m450.65 366.9 0.49459 2.2962-4.0287 8.552-0.67028-2.0666 4.2044-8.7817" fill="url(#linearGradient15181-9)"/>
<path d="m407.5 351.86 1.2908 3.8474-6.1658-7.2725-0.79442-3.15 5.6694 6.5751" fill="url(#linearGradient15199-2)"/>
<path d="m417.72 346.65 1.3349 3.7342-10.264 5.3276-1.2908-3.8474 10.22-5.2144" fill="url(#linearGradient15217-3)"/>
<path d="m458.63 350.77 3.8104 13.133-11.79 2.9923-4.6447-12.976 12.624-3.1492" fill="url(#linearGradient15235-9)"/>
<path d="m458.04 346.86 0.58984 3.9186-12.624 3.1492-1.6725-3.6668 13.707-3.4011" fill="url(#linearGradient15253-3)"/>
<path d="m465.41 356.67 3.5056 13.258-6.4795-6.0254-3.8104-13.133 6.7843 5.8999" fill="url(#linearGradient15271-9)"/>
<path d="m441.28 362.74 5.1661 12.94-14.41-0.58914-6.096-12.736 15.34 0.38488" fill="url(#linearGradient15289-0)"/>
<path d="m446 353.92 4.6447 12.976-4.2044 8.7817-5.1661-12.94 4.7258-8.8173" fill="url(#linearGradient15307-1)"/>
<path d="m464.76 352.55 0.65617 4.1204-6.7843-5.8999-0.58984-3.9186 6.7179 5.6981" fill="url(#linearGradient15325-6)"/>
<path d="m439.55 358.85 1.723 3.8862-15.34-0.38488-0.59302-3.7895 14.21 0.28822" fill="url(#linearGradient15343-8)"/>
<path d="m444.33 350.26 1.6725 3.6668-4.7258 8.8173-1.723-3.8862 4.7763-8.5979" fill="url(#linearGradient15361-6)"/>
<path d="m522.23 299.69c0.2219 3.0783-4.476 5.9267-10.49 6.3585-6.0163 0.43215-11.071-1.7142-11.293-4.7925-0.22048-3.0808 4.475-5.927 10.49-6.3592 6.0138-0.43216 11.071 1.7131 11.292 4.7932" fill="url(#linearGradient15379-3)"/>
<path d="m519.78 301.18c0.17004 2.358-3.4272 4.5385-8.0335 4.8694-4.6062 0.33091-8.4772-1.3123-8.6473-3.6699-0.16969-2.359 3.4265-4.5388 8.0328-4.8701 4.6059-0.33091 8.4787 1.3123 8.648 3.6706" fill="url(#linearGradient15397-8)"/>
<path d="m471.26 316.95c2.2172 7.6101-6.7317 16.912-19.982 20.769-13.252 3.8559-25.789 0.81068-28.007-6.8023-2.2144-7.6165 6.7303-16.913 19.982-20.77 13.248-3.8559 25.789-0.81209 28.008 6.8037" fill="url(#linearGradient15415-7)"/>
<path d="m468 320.34c1.8552 6.3687-5.6324 14.151-16.719 17.378-11.088 3.2262-21.578 0.67804-23.434-5.6917-1.8528-6.3726 5.6307-14.151 16.719-17.379 11.084-3.2262 21.578-0.6798 23.434 5.6921" fill="url(#linearGradient15433-5)"/>
<path d="m464.21 320.95c1.4831 5.0666-4.5237 11.284-13.412 13.883-8.8896 2.5986-17.295 0.59655-18.779-4.4704-1.481-5.0701 4.523-11.284 13.412-13.883 8.8875-2.5978 17.296-0.59831 18.779 4.4708" fill="url(#linearGradient15451-4)"/>
<path d="m458.22 319.51c1.0167 3.4763-3.1037 7.7417-9.2022 9.5246-6.0992 1.7826-11.866 0.40958-12.884-3.067-1.0156-3.478 3.103-7.7414 9.2019-9.525 6.0971-1.7829 11.867-0.41028 12.884 3.0674" fill="url(#linearGradient15469-3)"/>
<path d="m451.64 321.44c0.41028 1.403-1.2527 3.1246-3.714 3.8442-2.462 0.71932-4.79 0.1651-5.2006-1.2375-0.40993-1.4041 1.2527-3.1249 3.7144-3.8449 2.4606-0.71966 4.7897-0.1658 5.2003 1.2383" fill="url(#linearGradient15487-8)"/>
<path d="m516.25 299.93c0.10266 1.4277-2.075 2.7488-4.862 2.9492-2.7887 0.20003-5.1315-0.7948-5.2345-2.2236-0.10265-1.4288 2.074-2.7485 4.862-2.9489 2.7873-0.20003 5.1315 0.79516 5.2345 2.2232" fill="url(#linearGradient15505-3)"/>
<path d="m513.24 300.14c0.0409 0.57573-0.83785 1.1088-1.9629 1.1899-1.1257 0.0808-2.0708-0.32103-2.1124-0.89747-0.0416-0.57644 0.83679-1.1091 1.9622-1.1903 1.1254-0.0804 2.0712 0.32067 2.1131 0.89782" fill="url(#linearGradient15523-5)"/>
<path d="m479.23 349.03 2.5086 13.414-12.819 7.4898-3.5056-13.258 13.816-7.645" fill="url(#linearGradient15541-2)"/>
<path d="m477.6 345.56 1.6242 3.4685-13.816 7.645-0.65617-4.1204 12.848-6.9931" fill="url(#linearGradient15559-0)"/>
</g>
</g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" fill="#00f" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Sequencers exist in the event loop">
<path d="m-399.91-79.355q0.10854 0.07426 0.30275 0.14281 0.19993 0.06284 0.45127 0.06284 0.31989 0 0.51982-0.15423 0.19993-0.15994 0.19993-0.49697 0-0.22278-0.11425-0.38843-0.11424-0.16566-0.28561-0.30275-0.17137-0.14281-0.3713-0.27419-0.19422-0.13709-0.36558-0.29704-0.17137-0.16566-0.28562-0.37701-0.11424-0.21135-0.11424-0.50839 0-0.47983 0.28561-0.70832 0.29133-0.2342 0.75402-0.2342 0.28561 0 0.50839 0.05141t0.35988 0.13138l-0.1371 0.37701q-0.10282-0.06284-0.29704-0.11425-0.1885-0.05141-0.43984-0.05141-0.30846 0-0.45698 0.15423-0.14852 0.14852-0.14852 0.37701 0 0.19993 0.11424 0.35416 0.11425 0.15423 0.28562 0.29133t0.36558 0.2799q0.19993 0.1371 0.3713 0.30846t0.28561 0.38844q0.11425 0.21707 0.11425 0.5141 0 0.50268-0.29704 0.78829-0.29704 0.28561-0.8397 0.28561-0.34274 0-0.56552-0.06283-0.21706-0.06284-0.34845-0.14281z"/>
<path d="m-395.75-79.018q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19992 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.1371 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-393.35-77.681h-0.41129v-1.3767h-0.0228q-0.0914 0.14281-0.23421 0.22278-0.13709 0.07997-0.35987 0.07997-0.45127 0-0.67405-0.35987-0.22278-0.36558-0.22278-1.1253 0-0.73688 0.29133-1.1139 0.29132-0.37701 0.84541-0.37701 0.23992 0 0.45699 0.05712 0.21706 0.05712 0.33131 0.11996zm-0.41129-3.5816q-0.15994-0.09711-0.45127-0.09711-0.29703 0-0.4684 0.27419-0.16566 0.27419-0.16566 0.8397 0 0.23992 0.0286 0.44556 0.0286 0.20564 0.0914 0.35987 0.0686 0.14852 0.17137 0.2342 0.10853 0.07997 0.26276 0.07997 0.21707 0 0.34274-0.12567t0.1885-0.36559z"/>
<path d="m-392.32-81.68v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21136-0.0457 0.0971-0.05141 0.17136-0.13138 0.0743-0.07997 0.13139-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41129v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.27991 0.33131-0.18279 0.13709-0.45698 0.13709-0.18279 0-0.31988-0.0457-0.1371-0.0457-0.23421-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-388.5-79.018q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-386.39-78.824v-1.7422q0-0.42842-0.10282-0.61692-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.1371-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10854-0.15423 0.29133-0.26276 0.1885-0.10853 0.44556-0.10853 0.18279 0 0.31988 0.05141 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-383.77-78.966q-0.14281 0.10853-0.3256 0.15994-0.18279 0.05141-0.38272 0.05141-0.27419 0-0.4627-0.10282-0.1885-0.10853-0.30846-0.30275-0.11424-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25706-1.1139 0.26276-0.38272 0.7483-0.38272 0.22278 0 0.38273 0.03999 0.15994 0.03999 0.27418 0.10282l-0.11424 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.4684 0.27419-0.15424 0.26848-0.15424 0.85113 0 0.2342 0.0343 0.43984t0.11424 0.35987q0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31418 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-381.71-79.018q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.32559-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19992 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-381.06-81.68h0.29132l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.09711 0.31418-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26276-0.05141-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
<path d="m-379.55-79.292q0.11424 0.06855 0.26848 0.11996 0.15994 0.0457 0.32559 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19992-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26276 0.20564 0.12567 0.11425 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15995 0.25134-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-374.65-79.018q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-373.52-80.286-0.75402-1.3938h0.49126l0.42271 0.81686 0.11424 0.31989 0.11996-0.31989 0.43413-0.81686h0.45127l-0.75973 1.3709 0.80543 1.4852h-0.46841l-0.47983-0.89683-0.12567-0.34274-0.13138 0.34274-0.47983 0.89683h-0.45127z"/>
<path d="m-371.68-81.68h0.41128v2.8561h-0.41128zm-0.0743-0.86827q0-0.13709 0.0743-0.22278 0.08-0.08568 0.20564-0.08568 0.12567 0 0.20564 0.08568 0.0857 0.07997 0.0857 0.22278 0 0.1371-0.0857 0.21707-0.08 0.07426-0.20564 0.07426-0.12567 0-0.20564-0.07997-0.0743-0.07997-0.0743-0.21135z"/>
<path d="m-370.55-79.292q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40558 0.0457 0.17136 0.03999 0.29703 0.11424l-0.10853 0.34274q-0.10853-0.05712-0.25134-0.0914-0.14281-0.03999-0.29132-0.03999-0.20565 0-0.30276 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15994 0.25134-0.10282 0.10282-0.26276 0.16566-0.15424 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-368.86-81.68h0.34845v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-399.84-74.539h0.41128v2.8561h-0.41128zm-0.0743-0.86827q0-0.13709 0.0743-0.22278 0.08-0.08569 0.20564-0.08569 0.12567 0 0.20564 0.08569 0.0857 0.07997 0.0857 0.22278 0 0.1371-0.0857 0.21707-0.08 0.07426-0.20564 0.07426-0.12567 0-0.20564-0.07997-0.0743-0.07997-0.0743-0.21135z"/>
<path d="m-397.2-71.683v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.2285 0-0.37701 0.1371-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29703l0.0743 0.30275h0.0171q0.10853-0.15423 0.29133-0.26276 0.1885-0.10853 0.44555-0.10853 0.1828 0 0.31989 0.05141 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-395.23-74.539h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06284-0.2799 0.09711-0.14852 0.03999-0.31417 0.03999-0.28562 0-0.41129-0.18279-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-391.91-71.683v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15995 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.09711 0.42271-0.09711 0.1885 0 0.3256 0.05141 0.1428 0.05141 0.2342 0.17708t0.13709 0.33702q0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-389.15-71.877q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44555 0.06855-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-385.58-71.877q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44555 0.06855-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-384.34-72.866 0.11424 0.56552h0.0114l0.10282-0.57694 0.50268-1.6623h0.43413l-0.9768 2.919h-0.19993l-0.99393-2.919h0.4684z"/>
<path d="m-381.11-71.877q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44555 0.06855-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15994 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.1828 0.62835z"/>
<path d="m-379-71.683v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35417-0.19422-0.22849 0-0.37701 0.1371-0.14851 0.13709-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.05141 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-378.23-74.539h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.3713h-0.61693v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06284-0.2799 0.09711-0.14852 0.03999-0.31417 0.03999-0.28562 0-0.41129-0.18279-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-374.72-72.363q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06284l0.04 0.33131q-0.0743 0.0457-0.21135 0.07426-0.13139 0.02856-0.23992 0.02856-0.21707 0-0.35416-0.13138-0.13138-0.1371-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-373.96-73.111q0-0.77116 0.26277-1.131 0.26847-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10283 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11425-0.08568-0.27419-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-371.49-73.111q0-0.77116 0.26277-1.131 0.26847-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14851-0.26848 0.14851-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08568-0.27419-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-368.9-74.539h0.29133l0.0628 0.30846h0.0229q0.21135-0.37701 0.66262-0.37701t0.67405 0.33702q0.22849 0.33702 0.22849 1.1025 0 0.35987-0.0743 0.6512-0.0743 0.28561-0.21135 0.49126-0.1371 0.19993-0.33702 0.30846-0.19422 0.10282-0.43414 0.10282-0.16565 0-0.26276-0.02285-0.0971-0.01714-0.21136-0.07997v1.1767h-0.41128zm0.41128 2.4049q0.08 0.06855 0.17708 0.10853 0.10283 0.03998 0.26848 0.03998 0.30275 0 0.47983-0.30846 0.17708-0.30846 0.17708-0.87969 0-0.23992-0.0343-0.43413-0.0286-0.19422-0.0971-0.33131-0.0685-0.14281-0.17708-0.21707-0.10282-0.07997-0.25705-0.07997-0.417 0-0.53696 0.50839z"/>
</g>
<path d="m-312.92-79.119h17.739v15.25h-17.739z" fill="#0f0"/>
<g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="callback">
<path d="m-328.31-69.645q-0.14281 0.10853-0.3256 0.15994-0.1828 0.05141-0.38273 0.05141-0.27418 0-0.46269-0.10282-0.1885-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999 0.15995 0.03999 0.27419 0.10282l-0.11424 0.35987q-0.2285-0.13138-0.49697-0.13138-0.30847 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984t0.11425 0.35987q0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31418 0.08568 0.14851 0 0.27418-0.05141 0.13139-0.05141 0.21136-0.11996z"/>
<path d="m-327.89-72.187q0.16566-0.10282 0.39986-0.15994 0.23992-0.05712 0.50268-0.05712 0.23992 0 0.38272 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44555 0.10853-0.30847 0-0.5084-0.21135-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.0457 0.46841-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11995 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698-0.0971-0.13138-0.35416-0.13138-0.15994 0-0.34845 0.05141-0.1885 0.0457-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11425-0.0057-0.0571-0.0057-0.11425-0.0057-0.13709 0-0.26847 0.02285t-0.23421 0.07997q-0.10282 0.05712-0.16565 0.15423-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29133 0.12567 0.23991 0 0.37129-0.11424 0.13139-0.11425 0.1828-0.25134z"/>
<path d="m-325.13-70.182q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06284l0.04 0.33131q-0.0743 0.0457-0.21136 0.07426-0.13138 0.02856-0.23991 0.02856-0.21707 0-0.35416-0.13138-0.13138-0.1371-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-323.81-70.182q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06284l0.04 0.33131q-0.0743 0.0457-0.21136 0.07426-0.13138 0.02856-0.23991 0.02856-0.21707 0-0.35417-0.13138-0.13138-0.1371-0.13138-0.47412v-3.4559h0.41129z"/>
<path d="m-322.92-73.501h0.41128v1.3595h0.0171q0.2342-0.28561 0.62264-0.28561 0.43984 0 0.65691 0.34845 0.22278 0.34845 0.22278 1.1025 0 0.77116-0.29704 1.1482-0.29133 0.37701-0.82828 0.37701-0.26277 0-0.47983-0.05712-0.21707-0.06284-0.3256-0.14281zm0.41128 3.5816q0.08 0.0457 0.19422 0.07426 0.11996 0.02285 0.25134 0.02285 0.29704 0 0.46841-0.2799 0.17708-0.28561 0.17708-0.87398 0-0.24563-0.0343-0.43984-0.0286-0.19993-0.0971-0.34274-0.0628-0.14281-0.17136-0.21707-0.10283-0.07997-0.25134-0.07997-0.20565 0-0.34274 0.12567-0.13138 0.11996-0.19422 0.33131z"/>
<path d="m-320.47-72.187q0.16566-0.10282 0.39986-0.15994 0.23992-0.05712 0.50268-0.05712 0.23992 0 0.38272 0.07426 0.14852 0.06855 0.2285 0.19422 0.0857 0.11996 0.10853 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44555 0.10853-0.30847 0-0.5084-0.21135-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.0457 0.46841-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11995 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698-0.0971-0.13138-0.35416-0.13138-0.15994 0-0.34845 0.05141-0.1885 0.0457-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11425-0.0057-0.0571-0.0057-0.11424-0.0057-0.1371 0-0.26848 0.02285t-0.2342 0.07997q-0.10283 0.05712-0.16566 0.15423-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11425 0.12567 0.29133 0.12567 0.23991 0 0.37129-0.11424 0.13139-0.11425 0.1828-0.25134z"/>
<path d="m-316.58-69.645q-0.14281 0.10853-0.3256 0.15994-0.18279 0.05141-0.38272 0.05141-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30847-0.30275-0.11424-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25706-1.1139 0.26276-0.38272 0.7483-0.38272 0.22278 0 0.38273 0.03999 0.15994 0.03999 0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.4684 0.27419-0.15424 0.26848-0.15424 0.85113 0 0.2342 0.0343 0.43984t0.11424 0.35987q0.08 0.14852 0.20565 0.23992 0.12567 0.08568 0.31417 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-315.5-70.788h-0.21136v1.2853h-0.41128v-3.9986h0.41128v2.4334l0.18851-0.07997 0.66833-1.211h0.47412l-0.67405 1.1539-0.19993 0.18279 0.23421 0.22278 0.73688 1.2967h-0.49697z"/>
</g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" fill="#00f" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Sequencers may create one or more wsi and synchronize with events on them">
<path d="m-383.41-52.29q0.10854 0.07426 0.30275 0.14281 0.19993 0.06283 0.45127 0.06283 0.31989 0 0.51982-0.15423 0.19993-0.15994 0.19993-0.49697 0-0.22278-0.11425-0.38843-0.11424-0.16566-0.28561-0.30275-0.17137-0.14281-0.3713-0.27419-0.19421-0.13709-0.36558-0.29704-0.17137-0.16566-0.28562-0.37701-0.11424-0.21135-0.11424-0.50839 0-0.47983 0.28561-0.70832 0.29133-0.2342 0.75402-0.2342 0.28562 0 0.50839 0.05141 0.22278 0.05141 0.35988 0.13138l-0.1371 0.37701q-0.10282-0.06283-0.29704-0.11425-0.1885-0.05141-0.43984-0.05141-0.30846 0-0.45698 0.15423-0.14852 0.14852-0.14852 0.37701 0 0.19993 0.11424 0.35416 0.11425 0.15423 0.28562 0.29133 0.17137 0.13709 0.36558 0.2799 0.19993 0.1371 0.3713 0.30846t0.28561 0.38844q0.11425 0.21707 0.11425 0.5141 0 0.50268-0.29704 0.78829-0.29704 0.28561-0.8397 0.28561-0.34274 0-0.56552-0.06283-0.21706-0.06283-0.34845-0.14281z"/>
<path d="m-379.26-51.953q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-376.86-50.616h-0.41128v-1.3767h-0.0228q-0.0914 0.14281-0.23421 0.22278-0.13709 0.07997-0.35987 0.07997-0.45127 0-0.67405-0.35987-0.22278-0.36558-0.22278-1.1253 0-0.73688 0.29133-1.1139 0.29132-0.37701 0.84542-0.37701 0.23991 0 0.45698 0.05712 0.21706 0.05712 0.33131 0.11996zm-0.41128-3.5816q-0.15995-0.09711-0.45127-0.09711-0.29704 0-0.46841 0.27419-0.16566 0.27419-0.16566 0.8397 0 0.23992 0.0286 0.44556 0.0286 0.20564 0.0914 0.35987 0.0686 0.14852 0.17137 0.2342 0.10853 0.07997 0.26276 0.07997 0.21707 0 0.34274-0.12567t0.18851-0.36559z"/>
<path d="m-375.82-54.615v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21136-0.0457 0.0971-0.05141 0.17137-0.13138 0.0743-0.07997 0.13138-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41129v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.2799 0.33131-0.1828 0.13709-0.45699 0.13709-0.18279 0-0.31988-0.0457-0.1371-0.0457-0.23421-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-372.01-51.953q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-369.9-51.759v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.1371-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10854-0.15423 0.29133-0.26276 0.1885-0.10853 0.44556-0.10853 0.18279 0 0.31988 0.05141 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-367.27-51.902q-0.14281 0.10853-0.3256 0.15994-0.18279 0.05141-0.38272 0.05141-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30847-0.30275-0.11424-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25706-1.1139 0.26276-0.38272 0.7483-0.38272 0.22278 0 0.38273 0.03999 0.15994 0.03999 0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.4684 0.27419-0.15424 0.26848-0.15424 0.85113 0 0.2342 0.0343 0.43984t0.11424 0.35987q0.08 0.14852 0.20565 0.23992 0.12567 0.08568 0.31417 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-365.21-51.953q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-364.57-54.615h0.29132l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13139-0.09711 0.31418-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14851-0.05141-0.26276-0.05141-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
<path d="m-363.05-52.227q0.11424 0.06855 0.26848 0.11996 0.15994 0.0457 0.3256 0.0457 0.1885 0 0.31988-0.0914 0.13139-0.09711 0.13139-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10853 0.34274q-0.10854-0.05712-0.25134-0.0914-0.14281-0.03999-0.29133-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26277 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15995 0.25134-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-358.52-51.759v-1.6965q0-0.22849-0.0171-0.38843-0.0114-0.16566-0.0571-0.26848t-0.12567-0.14852q-0.08-0.05141-0.21135-0.05141-0.19422 0-0.33131 0.15423-0.13138 0.14852-0.1828 0.34274v2.0564h-0.41128v-2.8561h0.29133l0.0743 0.30275h0.0171q0.11996-0.16566 0.28562-0.26848 0.16565-0.10282 0.42271-0.10282 0.21706 0 0.35416 0.09711 0.1428 0.0914 0.22277 0.33131 0.10283-0.19993 0.29133-0.31418 0.19422-0.11425 0.42271-0.11425 0.1885 0 0.31989 0.05141 0.13709 0.0457 0.21706 0.17137 0.0857 0.11996 0.12567 0.3256 0.04 0.19993 0.04 0.50839v1.8679h-0.41129v-1.8165q0-0.3713-0.0742-0.55409-0.0686-0.18279-0.3256-0.18279-0.21707 0-0.34845 0.1371-0.12567 0.13138-0.17708 0.35987v2.0564z"/>
<path d="m-356.17-54.444q0.16565-0.10282 0.39986-0.15994 0.23991-0.05712 0.50268-0.05712 0.23991 0 0.38272 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10853 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16566 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19422-0.21707-0.19422-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.23421-0.26848 0.15423-0.10282 0.35987-0.14281 0.21135-0.0457 0.46841-0.0457 0.0571 0 0.11424 0 0.0571 0 0.11996 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698-0.0971-0.13138-0.35416-0.13138-0.15995 0-0.34845 0.05141-0.18851 0.0457-0.31418 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11424-0.0057-0.0571-0.0057-0.11425-0.0057-0.13709 0-0.26848 0.02285-0.13138 0.02285-0.2342 0.07997t-0.16566 0.15423q-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11425 0.12567 0.29133 0.12567 0.23992 0 0.3713-0.11424 0.13138-0.11425 0.18279-0.25134z"/>
<path d="m-353.15-52.77 0.11996 0.55409h0.0286l0.0857-0.55409 0.43413-1.8451h0.41699l-0.67976 2.5648q-0.08 0.30846-0.15994 0.57694-0.08 0.26848-0.17708 0.46269-0.0914 0.19993-0.21135 0.30846-0.11425 0.11424-0.27419 0.11424-0.15995 0-0.2799-0.05141l0.0685-0.38844q0.08 0.02856 0.15995 0.01143 0.08-0.01714 0.14852-0.09711 0.0743-0.07997 0.13138-0.23992 0.0628-0.15423 0.10853-0.40557l-0.92539-2.8561h0.46841z"/>
<path d="m-349.08-51.902q-0.1428 0.10853-0.3256 0.15994-0.18279 0.05141-0.38272 0.05141-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25705-1.1139 0.26276-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999t0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.4684 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984t0.11425 0.35987q0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31417 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21136-0.11996z"/>
<path d="m-348.62-54.615h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13139-0.09711 0.31418-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26277-0.05141-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
<path d="m-345.35-51.953q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-344.74-54.444q0.16566-0.10282 0.39986-0.15994 0.23991-0.05712 0.50268-0.05712 0.23991 0 0.38272 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10853 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16566 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19422-0.21707-0.19422-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.23421-0.26848 0.15423-0.10282 0.35987-0.14281 0.21135-0.0457 0.46841-0.0457 0.0571 0 0.11424 0 0.0571 0 0.11996 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698-0.0971-0.13138-0.35416-0.13138-0.15995 0-0.34845 0.05141-0.18851 0.0457-0.31418 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11424-0.0057-0.0571-0.0057-0.11425-0.0057-0.13709 0-0.26848 0.02285-0.13138 0.02285-0.2342 0.07997t-0.16565 0.15423q-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10854 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11424 0.13138-0.11425 0.18279-0.25134z"/>
<path d="m-342.71-54.615h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31417 0.03999-0.28562 0-0.41129-0.18279-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-339.18-51.953q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-383.54-46.047q0-0.77116 0.26277-1.131 0.26847-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08568-0.27419-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-379.48-44.619v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.1371-0.14852 0.13709-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.05141 0.1428 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-376.73-44.813q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-374.99-46.047q0-0.77116 0.26276-1.131 0.26848-0.36559 0.75974-0.36559 0.52552 0 0.77115 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26847 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.07997 0.27419 0.07997 0.29703 0 0.44555-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.1828-0.22849-0.11424-0.08568-0.27418-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-372.4-47.475h0.29132l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.09711 0.31418-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26276-0.05141-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
<path d="m-368.28-44.619v-1.6965q0-0.22849-0.0171-0.38844-0.0114-0.16566-0.0571-0.26848-0.0457-0.10282-0.12567-0.14852-0.08-0.05141-0.21135-0.05141-0.19422 0-0.33132 0.15423-0.13138 0.14852-0.18279 0.34274v2.0564h-0.41128v-2.8561h0.29132l0.0743 0.30275h0.0171q0.11996-0.16566 0.28561-0.26848 0.16566-0.10282 0.42271-0.10282 0.21707 0 0.35416 0.09711 0.14281 0.0914 0.22278 0.33131 0.10282-0.19993 0.29133-0.31418 0.19421-0.11425 0.4227-0.11425 0.18851 0 0.31989 0.05141 0.1371 0.0457 0.21707 0.17137 0.0857 0.11996 0.12567 0.3256 0.04 0.19993 0.04 0.50839v1.8679h-0.41128v-1.8165q0-0.3713-0.0743-0.55409-0.0686-0.18279-0.3256-0.18279-0.21706 0-0.34845 0.1371-0.12567 0.13138-0.17708 0.35987v2.0564z"/>
<path d="m-366.03-46.047q0-0.77116 0.26277-1.131 0.26848-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42843 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11424-0.08568-0.27419-0.08568-0.29132 0-0.44556 0.26848-0.14851 0.26848-0.14851 0.85684z"/>
<path d="m-363.44-47.475h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.09711 0.31417-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26277-0.05141-0.18279 0-0.29703 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41129z"/>
<path d="m-360.17-44.813q-0.13709 0.12567-0.34845 0.19422-0.21135 0.06855-0.44555 0.06855-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-356.78-47.475 0.50839 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38844-1.6566h0.38843l-0.75973 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.23421l-0.78258-2.919h0.43985l0.43984 1.6623 0.0686 0.55409h0.0114l0.10282-0.56552 0.46841-1.6508z"/>
<path d="m-354.98-45.087q0.11425 0.06855 0.26848 0.11996 0.15994 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.14281-0.07997-0.26848-0.1885-0.11995-0.10853-0.19992-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11425l-0.10853 0.34274q-0.10853-0.05712-0.25134-0.0914-0.14281-0.03999-0.29133-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15994 0.25134q-0.10282 0.10282-0.26277 0.16566-0.15423 0.06283-0.36558 0.06283-0.25134 0-0.43413-0.05141-0.1828-0.0457-0.30847-0.12567z"/>
<path d="m-352.94-47.475h0.41129v2.8561h-0.41129zm-0.0743-0.86827q0-0.13709 0.0743-0.22278 0.08-0.08568 0.20564-0.08568 0.12567 0 0.20565 0.08568 0.0857 0.07997 0.0857 0.22278 0 0.1371-0.0857 0.21707-0.08 0.07426-0.20565 0.07426-0.12567 0-0.20564-0.07997-0.0743-0.07997-0.0743-0.21135z"/>
<path d="m-350.58-47.303q0.16565-0.10282 0.39985-0.15994 0.23992-0.05712 0.50268-0.05712 0.23992 0 0.38273 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10853 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61692 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33702h-0.0228q-0.0857 0.14852-0.25134 0.25705-0.16566 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19422-0.21707-0.19422-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15424-0.10282 0.35988-0.14281 0.21135-0.0457 0.4684-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11996 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698-0.0971-0.13138-0.35416-0.13138-0.15994 0-0.34844 0.05141-0.18851 0.0457-0.31418 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11425-0.0057-0.0571-0.0057-0.11424-0.0057-0.1371 0-0.26848 0.02285t-0.2342 0.07997-0.16566 0.15423q-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11425 0.12567 0.29133 0.12567 0.23991 0 0.3713-0.11424 0.13138-0.11425 0.18279-0.25134z"/>
<path d="m-346.8-44.619v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.1371-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0742 0.30275h0.0171q0.10853-0.15423 0.29133-0.26276 0.1885-0.10853 0.44555-0.10853 0.1828 0 0.31989 0.05141 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-343.96-45.601q0 0.29133 6e-3 0.53124 6e-3 0.2342 0.04 0.46269h-0.2799l-0.0914-0.34274h-0.0229q-0.08 0.17137-0.25134 0.28561-0.17137 0.11424-0.41128 0.11424-0.4627 0-0.69119-0.35987-0.22278-0.35987-0.22278-1.131 0-0.73117 0.27419-1.1082 0.2799-0.37701 0.76545-0.37701 0.16565 0 0.26276 0.02285 0.0971 0.01714 0.21136 0.06283v-1.1767h0.41128zm-0.41128-1.4224q-0.08-0.06855-0.1828-0.09711-0.0971-0.03427-0.26276-0.03427-0.30275 0-0.47412 0.27419-0.16566 0.27419-0.16566 0.84542 0 0.25134 0.0286 0.45698 0.0343 0.19993 0.0971 0.34845 0.0686 0.14852 0.17137 0.22849 0.10854 0.07997 0.26277 0.07997 0.41128 0 0.52553-0.48554z"/>
<path d="m-383.46-37.947q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40558 0.0457 0.17136 0.03999 0.29703 0.11425l-0.10853 0.34274q-0.10853-0.05712-0.25134-0.0914-0.14281-0.03999-0.29132-0.03999-0.20565 0-0.30276 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11424 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15994 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15424 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-380.77-38.489 0.11996 0.55409h0.0286l0.0857-0.55409 0.43413-1.8451h0.417l-0.67976 2.5648q-0.08 0.30846-0.15994 0.57694-0.08 0.26848-0.17708 0.46269-0.0914 0.19993-0.21136 0.30846-0.11424 0.11425-0.27419 0.11425-0.15994 0-0.2799-0.05141l0.0686-0.38843q0.08 0.02856 0.15994 0.01142 0.08-0.01714 0.14852-0.09711 0.0743-0.07997 0.13138-0.23992 0.0628-0.15423 0.10854-0.40557l-0.92539-2.8561h0.4684z"/>
<path d="m-377.86-37.478v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29703l0.0743 0.30275h0.0171q0.10853-0.15423 0.29133-0.26276 0.1885-0.10853 0.44555-0.10853 0.1828 0 0.31989 0.05141 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-375.24-37.621q-0.14281 0.10853-0.3256 0.15994-0.18279 0.05141-0.38272 0.05141-0.27419 0-0.4627-0.10282-0.1885-0.10853-0.30846-0.30275-0.11424-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61692 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999 0.15995 0.03999 0.27419 0.10282l-0.11424 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11424 0.35987 0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31418 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-373.32-37.478v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15995 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.09711 0.42271-0.09711 0.1885 0 0.3256 0.05141 0.1428 0.05141 0.2342 0.17708t0.13709 0.33702q0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-372.28-40.334h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20565-0.25705 0.13138-0.09711 0.31417-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26277-0.05141-0.18279 0-0.29703 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41129z"/>
<path d="m-370.84-38.906q0-0.77116 0.26277-1.131 0.26847-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367t-0.75402 0.35987q-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08568-0.27419-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-366.79-37.478v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.05141 0.1428 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-365.67-40.334h0.41129v2.8561h-0.41129zm-0.0742-0.86826q0-0.1371 0.0742-0.22278 0.08-0.08568 0.20565-0.08568 0.12567 0 0.20564 0.08568 0.0857 0.07997 0.0857 0.22278 0 0.13709-0.0857 0.21707-0.08 0.07426-0.20564 0.07426-0.12567 0-0.20565-0.07997-0.0742-0.07997-0.0742-0.21135z"/>
<path d="m-364.65-37.849 1.0625-1.8679 0.19993-0.24563h-1.2624v-0.3713h1.668v0.3713l-1.0682 1.885-0.19422 0.22849h1.2624v0.3713h-1.668z"/>
<path d="m-360.81-37.672q-0.1371 0.12567-0.34845 0.19422-0.21136 0.06855-0.44556 0.06855-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.32559-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19992 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34274q0.0857 0.1371 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15424 0 0.30275-0.05712 0.15424-0.05712 0.23421-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-357.42-40.334 0.5084 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38843l-0.75973 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78259-2.919h0.43985l0.43984 1.6623 0.0686 0.55409h0.0114l0.10282-0.56552 0.4684-1.6508z"/>
<path d="m-355.51-40.334h0.41129v2.8561h-0.41129zm-0.0743-0.86826q0-0.1371 0.0743-0.22278 0.08-0.08568 0.20564-0.08568 0.12567 0 0.20565 0.08568 0.0857 0.07997 0.0857 0.22278 0 0.13709-0.0857 0.21707-0.08 0.07426-0.20565 0.07426-0.12567 0-0.20564-0.07997-0.0743-0.07997-0.0743-0.21135z"/>
<path d="m-354.62-40.334h0.34844v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31417 0.03999-0.28562 0-0.41129-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34844z"/>
<path d="m-351.3-37.478v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15995 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.09711 0.42271-0.09711 0.1885 0 0.3256 0.05141 0.1428 0.05141 0.2342 0.17708t0.13709 0.33702q0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-347.33-37.672q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34274q0.0857 0.1371 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-346.09-38.661 0.11425 0.56552h0.0114l0.10283-0.57694 0.50268-1.6623h0.43413l-0.9768 2.919h-0.19993l-0.99394-2.919h0.46841z"/>
<path d="m-342.85-37.672q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61692 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556t0.12567 0.34274q0.0857 0.1371 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.1371zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-340.75-37.478v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10854-0.15423 0.29133-0.26276 0.1885-0.10853 0.44556-0.10853 0.18279 0 0.31988 0.05141 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-339.98-40.334h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.3713h-0.61693v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19421-0.02285 0.0857-0.02856 0.1828-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-338.17-37.947q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11424-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36558 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11425l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20565 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11424 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-383.54-31.766q0-0.77116 0.26277-1.131 0.26847-0.36558 0.75973-0.36558 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.07997 0.27419 0.07997 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08568-0.27419-0.08568-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-379.48-30.338v-1.7422q0-0.42842-0.10282-0.61692-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.1371-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.05141 0.1428 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-377.5-33.194h0.34845v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-374.18-30.338v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36559 0.14281-0.15994 0.14281-0.21706 0.35987v2.0507h-0.41129v-3.9986h0.41129v1.4109h0.0171q0.11425-0.14852 0.27991-0.23992 0.17136-0.09711 0.4227-0.09711 0.18851 0 0.3256 0.05141 0.14281 0.05141 0.23421 0.17708 0.0914 0.12567 0.13709 0.33702 0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-371.43-30.532q-0.1371 0.12567-0.34845 0.19422-0.21135 0.06855-0.44556 0.06855-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.03999 0.15995 0.03999 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.1371 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.05712 0.15423-0.05712 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-369.44-30.338v-1.6965q0-0.22849-0.0171-0.38844-0.0114-0.16566-0.0571-0.26848t-0.12567-0.14852q-0.08-0.05141-0.21135-0.05141-0.19422 0-0.33131 0.15423-0.13138 0.14852-0.1828 0.34274v2.0564h-0.41128v-2.8561h0.29133l0.0743 0.30275h0.0171q0.11996-0.16566 0.28562-0.26848 0.16565-0.10282 0.4227-0.10282 0.21707 0 0.35417 0.09711 0.1428 0.0914 0.22277 0.33131 0.10283-0.19993 0.29133-0.31418 0.19422-0.11424 0.42271-0.11424 0.1885 0 0.31989 0.05141 0.13709 0.0457 0.21706 0.17137 0.0857 0.11996 0.12567 0.3256 0.04 0.19993 0.04 0.50839v1.8679h-0.41129v-1.8165q0-0.3713-0.0743-0.55409-0.0685-0.18279-0.32559-0.18279-0.21707 0-0.34845 0.13709-0.12567 0.13138-0.17708 0.35987v2.0564z"/>
</g>
<path d="m-277.42-52.773c6.3682-12.725 27.017-14.019 27.017-14.019" fill="none" marker-end="url(#marker35789)" stroke="#000" stroke-width="1.0795"/>
</g>
<path d="m-253.39-51.772h30.293v15.25h-30.293z" fill="#999"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_protocols">
<path d="m-266.23-45.179q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11995 0 0.2799-0.06283l0.04 0.33131q-0.0743 0.0457-0.21135 0.07426-0.13138 0.02856-0.23992 0.02856-0.21706 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-263.82-47.356 0.5084 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38843l-0.75973 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78259-2.919h0.43985l0.43984 1.6623 0.0686 0.55409h0.0114l0.10282-0.56552 0.4684-1.6508z"/>
<path d="m-262.02-44.968q0.11424 0.06855 0.26847 0.11996 0.15995 0.0457 0.3256 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26277-0.16566-0.1428-0.07997-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20565 0-0.30275 0.08569-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.1428 0.08568 0.26276 0.20564 0.12567 0.11424 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
<path d="m-260.38-43.7h1.9079v0.3713h-1.9079z"/>
<path d="m-258.14-47.356h0.29132l0.0628 0.30846h0.0229q0.21135-0.37701 0.66262-0.37701t0.67405 0.33702q0.22849 0.33702 0.22849 1.1025 0 0.35987-0.0743 0.6512-0.0743 0.28561-0.21135 0.49126-0.1371 0.19993-0.33703 0.30846-0.19421 0.10282-0.43413 0.10282-0.16566 0-0.26276-0.02285-0.0971-0.01714-0.21136-0.07997v1.1767h-0.41128zm0.41128 2.4049q0.08 0.06855 0.17708 0.10853 0.10282 0.03999 0.26848 0.03999 0.30275 0 0.47983-0.30846t0.17708-0.87969q0-0.23992-0.0343-0.43413-0.0286-0.19422-0.0971-0.33131-0.0686-0.14281-0.17708-0.21707-0.10282-0.07997-0.25705-0.07997-0.417 0-0.53696 0.50839z"/>
<path d="m-255.65-47.356h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20565-0.25705 0.13138-0.09711 0.31417-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26277-0.05141-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
<path d="m-254.21-45.928q0-0.77116 0.26276-1.131 0.26848-0.36558 0.75974-0.36558 0.52553 0 0.77115 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26847 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.07997 0.27419 0.07997 0.29703 0 0.44555-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11425-0.08569-0.27419-0.08569-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-251.91-47.356h0.34845v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36558 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19422-0.02285 0.0857-0.02856 0.18279-0.06855l0.08 0.3256q-0.12567 0.06283-0.2799 0.09711-0.14852 0.03999-0.31418 0.03999-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-250.22-45.928q0-0.77116 0.26276-1.131 0.26848-0.36558 0.75974-0.36558 0.52553 0 0.77115 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26847 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.07997 0.27419 0.07997 0.29703 0 0.44555-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08569-0.27419-0.08569-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-246.05-44.643q-0.14281 0.10853-0.3256 0.15994-0.1828 0.05141-0.38273 0.05141-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25705-1.1139 0.26276-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999t0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49696-0.13138-0.30847 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984t0.11425 0.35987q0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31417 0.08568 0.14852 0 0.27419-0.05141 0.13139-0.05141 0.21136-0.11996z"/>
<path d="m-245.82-45.928q0-0.77116 0.26276-1.131 0.26848-0.36558 0.75974-0.36558 0.52553 0 0.77115 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26847 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.07997 0.27419 0.07997 0.29704 0 0.44555-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.08569-0.27419-0.08569-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-242.79-45.179q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15424 0.08568 0.11995 0 0.2799-0.06283l0.04 0.33131q-0.0743 0.0457-0.21135 0.07426-0.13138 0.02856-0.23992 0.02856-0.21706 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-241.95-44.968q0.11424 0.06855 0.26848 0.11996 0.15994 0.0457 0.32559 0.0457 0.18851 0 0.31989-0.0914 0.13138-0.09711 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19992-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20564 0-0.30275 0.08569-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26276 0.20564 0.12567 0.11424 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15995 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15423 0.06283-0.36559 0.06283-0.25134 0-0.43413-0.05141-0.18279-0.0457-0.30846-0.12567z"/>
</g>
<path d="m-268.53-45.948h17.739v15.25h-17.739z" fill="#0f0"/>
<g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="callback">
<path d="m-281.39-38.269q-0.14281 0.10853-0.3256 0.15994-0.1828 0.05141-0.38273 0.05141-0.27418 0-0.46269-0.10282-0.1885-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999 0.15995 0.03999 0.27419 0.10282l-0.11424 0.35987q-0.2285-0.13138-0.49697-0.13138-0.30847 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11425 0.35987 0.08 0.14852 0.20564 0.23992 0.12567 0.08568 0.31418 0.08568 0.14851 0 0.27418-0.05141 0.13139-0.05141 0.21136-0.11996z"/>
<path d="m-280.97-40.811q0.16566-0.10282 0.39986-0.15994 0.23992-0.05712 0.50268-0.05712 0.23992 0 0.38272 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61692 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21136-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.0457 0.46841-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11995 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.05141-0.1885 0.0457-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11425-0.0057-0.0571-0.0057-0.11425-0.0057-0.13709 0-0.26847 0.02285t-0.23421 0.07997q-0.10282 0.05712-0.16565 0.15423-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11425 0.13138-0.11424 0.1828-0.25134z"/>
<path d="m-278.21-38.806q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06283l0.04 0.33131q-0.0743 0.0457-0.21136 0.07426-0.13138 0.02856-0.23991 0.02856-0.21707 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-276.89-38.806q0 0.19993 0.0514 0.28561 0.0571 0.08568 0.15423 0.08568 0.11996 0 0.2799-0.06283l0.04 0.33131q-0.0743 0.0457-0.21136 0.07426-0.13138 0.02856-0.23991 0.02856-0.21707 0-0.35417-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41129z"/>
<path d="m-276-42.125h0.41128v1.3595h0.0171q0.2342-0.28561 0.62264-0.28561 0.43984 0 0.65691 0.34845 0.22278 0.34845 0.22278 1.1025 0 0.77116-0.29704 1.1482-0.29133 0.37701-0.82828 0.37701-0.26277 0-0.47983-0.05712-0.21707-0.06283-0.3256-0.14281zm0.41128 3.5816q0.08 0.0457 0.19422 0.07426 0.11996 0.02285 0.25134 0.02285 0.29704 0 0.46841-0.2799 0.17708-0.28561 0.17708-0.87398 0-0.24563-0.0343-0.43984-0.0286-0.19993-0.0971-0.34274-0.0628-0.14281-0.17136-0.21707-0.10283-0.07997-0.25134-0.07997-0.20565 0-0.34274 0.12567-0.13138 0.11996-0.19422 0.33131z"/>
<path d="m-273.55-40.811q0.16566-0.10282 0.39986-0.15994 0.23992-0.05712 0.50268-0.05712 0.23992 0 0.38272 0.07426 0.14852 0.06855 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61692 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44555 0.10853-0.30847 0-0.5084-0.21136-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.0457 0.46841-0.0457 0.0571 0 0.11425 0 0.0571 0 0.11995 0.0057 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.05141-0.1885 0.0457-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.0057-0.11425-0.0057-0.0571-0.0057-0.11425-0.0057-0.13709 0-0.26847 0.02285t-0.23421 0.07997q-0.10282 0.05712-0.16565 0.15423-0.0571 0.09711-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29133 0.12567 0.23991 0 0.37129-0.11425 0.13139-0.11424 0.1828-0.25134z"/>
<path d="m-269.66-38.269q-0.14281 0.10853-0.3256 0.15994t-0.38272 0.05141q-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30847-0.30275-0.11424-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25706-1.1139 0.26276-0.38272 0.7483-0.38272 0.22278 0 0.38273 0.03999 0.15994 0.03999 0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.4684 0.27419-0.15424 0.26848-0.15424 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11424 0.35987 0.08 0.14852 0.20565 0.23992 0.12567 0.08568 0.31417 0.08568 0.14852 0 0.27419-0.05141 0.13138-0.05141 0.21135-0.11996z"/>
<path d="m-268.58-39.411h-0.21136v1.2853h-0.41128v-3.9986h0.41128v2.4334l0.18851-0.07997 0.66833-1.211h0.47412l-0.67405 1.1539-0.19993 0.18279 0.23421 0.22278 0.73688 1.2967h-0.49697z"/>
</g>
<path d="m-295.2-8.4861c-7.9454-5.7561-27.85-23.836-15.924-58.871" fill="none" marker-end="url(#marker9266-0)" stroke="#000" stroke-dasharray="1.00661947, 1.00661947" stroke-width="1.0066"/>
<path d="m-261.52-33.429c-2.542 4.1649 0.71012 7.868-7.2404 14.027" fill="none" marker-end="url(#marker9266-0-2)" stroke="#000" stroke-dasharray="1.00661948, 1.00661948" stroke-width="1.0066"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" fill="#fff" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_sequencer event api">
<path d="m-309.23-9.797q0 0.19993 0.0514 0.28561 0.0571 0.085684 0.15423 0.085684 0.11996 0 0.2799-0.062835l0.04 0.33131q-0.0743 0.045698-0.21135 0.07426-0.13138 0.028561-0.23991 0.028561-0.21707 0-0.35417-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41129z"/>
<path d="m-306.82-11.973 0.5084 1.668 0.10282 0.54838h0.0114l0.0857-0.5598 0.38843-1.6566h0.38844l-0.75974 2.919h-0.2342l-0.57694-1.8736-0.08-0.47983h-0.0114l-0.08 0.48554-0.5598 1.8679h-0.2342l-0.78259-2.919h0.43985l0.43984 1.6623 0.0686 0.55409h0.0114l0.10282-0.56551 0.4684-1.6508z"/>
<path d="m-305.02-9.5857q0.11424 0.068547 0.26847 0.11996 0.15995 0.045698 0.3256 0.045698 0.18851 0 0.31989-0.091396 0.13138-0.097109 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10854 0.34274q-0.10853-0.05712-0.25134-0.0914-0.1428-0.03999-0.29132-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26848 0.16566 0.14281 0.08568 0.26276 0.20564 0.12567 0.11425 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15995 0.25134-0.10282 0.10282-0.26276 0.16566-0.15423 0.062835-0.36559 0.062835-0.25134 0-0.43413-0.051411-0.18279-0.045698-0.30846-0.12567z"/>
<path d="m-303.38-8.3176h1.9079v0.3713h-1.9079z"/>
<path d="m-301.18-9.5857q0.11425 0.068547 0.26848 0.11996 0.15994 0.045698 0.3256 0.045698 0.1885 0 0.31988-0.091396 0.13139-0.097109 0.13139-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20565-0.20564-0.11995-0.0914-0.26276-0.16566-0.14281-0.07997-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.0457 0.17137 0.03999 0.29704 0.11424l-0.10853 0.34274q-0.10854-0.05712-0.25134-0.0914-0.14281-0.03999-0.29133-0.03999-0.20564 0-0.30275 0.08568-0.0914 0.08568-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.09711 0.19993 0.18279 0.12567 0.07997 0.26847 0.16566 0.14281 0.08568 0.26277 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15994 0.25134-0.10282 0.10282-0.26277 0.16566-0.15423 0.062835-0.36558 0.062835-0.25134 0-0.43414-0.051411-0.18279-0.045698-0.30846-0.12567z"/>
<path d="m-297.5-9.3115q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44555 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-295.1-7.9748h-0.41128v-1.3767h-0.0229q-0.0914 0.14281-0.2342 0.22278-0.1371 0.079972-0.35988 0.079972-0.45127 0-0.67404-0.35987-0.22278-0.36559-0.22278-1.1253 0-0.73688 0.29132-1.1139 0.29133-0.37701 0.84542-0.37701 0.23991 0 0.45698 0.05712t0.33131 0.11996zm-0.41128-3.5816q-0.15994-0.09711-0.45127-0.09711-0.29704 0-0.46841 0.27419-0.16565 0.27419-0.16565 0.8397 0 0.23992 0.0286 0.44556 0.0286 0.20564 0.0914 0.35987 0.0686 0.14852 0.17137 0.2342 0.10854 0.079972 0.26277 0.079972 0.21706 0 0.34273-0.12567t0.18851-0.36559z"/>
<path d="m-294.06-11.973v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11995 0 0.21135-0.045698 0.0971-0.051411 0.17137-0.13138 0.0743-0.079972 0.13138-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41128v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29132l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.2799 0.33131-0.18279 0.13709-0.45698 0.13709-0.1828 0-0.31989-0.045698t-0.2342-0.16566q-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-290.24-9.3115q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44556 0.068547-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.1828 0.62835z"/>
<path d="m-288.14-9.1173v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.1371-0.14852 0.13709-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.05141 0.1428 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-285.51-9.2601q-0.14281 0.10853-0.3256 0.15994-0.1828 0.051411-0.38273 0.051411-0.27419 0-0.46269-0.10282-0.18851-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25705-1.1139 0.26276-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.03999t0.27419 0.10282l-0.11425 0.35987q-0.22849-0.13138-0.49696-0.13138-0.30847 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11425 0.35987 0.08 0.14852 0.20564 0.23992 0.12567 0.085684 0.31417 0.085684 0.14852 0 0.27419-0.05141 0.13139-0.05141 0.21136-0.11996z"/>
<path d="m-283.45-9.3115q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44555 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.03999 0.15994 0.03999 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.09711-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-282.8-11.973h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20565-0.25705 0.13138-0.09711 0.31417-0.09711 0.13138 0 0.29704 0.05141l-0.08 0.417q-0.14852-0.05141-0.26277-0.05141-0.18279 0-0.29703 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41129z"/>
<path d="m-307.96-2.1712q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44556 0.068547-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.039986 0.15995 0.039986 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-306.72-3.1594 0.11424 0.56551h0.0114l0.10282-0.57694 0.50268-1.6623h0.43413l-0.9768 2.919h-0.19993l-0.99393-2.919h0.4684z"/>
<path d="m-303.49-2.1712q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44556 0.068547-0.26847 0-0.4684-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26847-0.38272 0.75973-0.38272 0.15994 0 0.31417 0.039986 0.15995 0.039986 0.28562 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26276 0-0.41699 0.19993-0.15424 0.19993-0.1828 0.62835z"/>
<path d="m-301.38-1.9769v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.13709-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.051411 0.1428 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-300.62-4.8331h0.34845v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11424 0 0.19422-0.022849 0.0857-0.028561 0.18279-0.068547l0.08 0.3256q-0.12567 0.062835-0.2799 0.097109-0.14852 0.039986-0.31418 0.039986-0.28561 0-0.41128-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34845z"/>
<path d="m-297.57-4.6617q0.16566-0.10282 0.39986-0.15994 0.23992-0.057123 0.50268-0.057123 0.23992 0 0.38272 0.07426 0.14852 0.068547 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19422-0.21707-0.19422-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.045698 0.46841-0.045698 0.0571 0 0.11424 0 0.0571 0 0.11996 0.00571 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.05141-0.1885 0.045698-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.00571-0.11424-0.00571-0.0571-0.00571-0.11425-0.00571-0.13709 0-0.26847 0.022849-0.13139 0.022849-0.23421 0.079972t-0.16565 0.15423q-0.0571 0.097109-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11425 0.13138-0.11425 0.18279-0.25134z"/>
<path d="m-295.25-4.8331h0.29133l0.0628 0.30846h0.0229q0.21136-0.37701 0.66263-0.37701t0.67405 0.33702q0.22849 0.33702 0.22849 1.1025 0 0.35987-0.0743 0.6512-0.0743 0.28561-0.21136 0.49126-0.13709 0.19993-0.33702 0.30846-0.19422 0.10282-0.43413 0.10282-0.16566 0-0.26277-0.022849-0.0971-0.017137-0.21135-0.079972v1.1767h-0.41129zm0.41129 2.4049q0.08 0.068547 0.17708 0.10853 0.10282 0.039986 0.26847 0.039986 0.30276 0 0.47984-0.30846t0.17708-0.87969q0-0.23992-0.0343-0.43413-0.0286-0.19422-0.0971-0.33131-0.0685-0.14281-0.17708-0.21707-0.10282-0.079972-0.25705-0.079972-0.41699 0-0.53695 0.50839z"/>
<path d="m-292.7-4.8331h0.41129v2.8561h-0.41129zm-0.0743-0.86827q0-0.13709 0.0743-0.22278 0.08-0.085684 0.20564-0.085684 0.12567 0 0.20565 0.085684 0.0857 0.079972 0.0857 0.22278 0 0.13709-0.0857 0.21707-0.08 0.07426-0.20565 0.07426-0.12567 0-0.20564-0.079972-0.0743-0.079972-0.0743-0.21135z"/>
</g>
</g>
<path d="m-272.24-51.911c9.9557-4.1084 12.477-3.125 16.982 0.43134" fill="none" marker-end="url(#marker34759)" stroke="#000" stroke-width="1.0795"/>
<g>
<path d="m-333.15 3.8989c24.927-4.2464 23.412 6.1426 38.503-4.3056" fill="none" marker-end="url(#marker9266-0-2-5)" stroke="#000" stroke-dasharray="1.00661949, 1.00661949" stroke-width="1.0066"/>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" fill="#00f" stroke-width=".14281" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="Other threads may also queue events on a sequencer">
<path d="m-356.69-8.3282q0-1.0168 0.3256-1.5423 0.3256-0.52553 0.99393-0.52553 0.35988 0 0.61122 0.14852 0.25134 0.14281 0.40557 0.41128 0.15994 0.26848 0.2342 0.6512 0.0743 0.38272 0.0743 0.85684 0 1.0168-0.33131 1.5423-0.3256 0.52553-0.99394 0.52553-0.35416 0-0.6055-0.14281-0.25134-0.14852-0.41128-0.417-0.15995-0.26848-0.23421-0.6512-0.0685-0.38272-0.0685-0.85684zm0.45127 0q0 0.33702 0.0457 0.63977 0.0514 0.30275 0.15424 0.53124 0.10282 0.22849 0.26847 0.36559 0.16566 0.13709 0.39986 0.13709 0.42842 0 0.6512-0.41128 0.22278-0.41128 0.22278-1.2624 0-0.33131-0.0514-0.63406-0.0457-0.30275-0.14852-0.53124-0.10282-0.2342-0.26848-0.3713-0.16565-0.13709-0.40557-0.13709-0.42271 0-0.64548 0.41128-0.22278 0.41128-0.22278 1.2624z"/>
<path d="m-353.75-9.185h0.34844v-0.56552l0.41129-0.13138v0.6969h0.61692v0.3713h-0.61692v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.022849 0.0857-0.028561 0.18279-0.068547l0.08 0.3256q-0.12567 0.062835-0.2799 0.097109-0.14852 0.039986-0.31417 0.039986-0.28562 0-0.41129-0.18279-0.11996-0.1885-0.11996-0.6055v-1.7594h-0.34844z"/>
<path d="m-350.43-6.3289v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15995 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.097109 0.42271-0.097109 0.1885 0 0.3256 0.05141 0.1428 0.05141 0.2342 0.17708 0.0914 0.12567 0.13709 0.33702 0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-347.67-6.5231q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44555 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.18851-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15994 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21706 0.21707 0.1371 0.07426 0.33703 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11995-0.62835-0.13139-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.1828 0.62835z"/>
<path d="m-347.03-9.185h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.097109 0.31417-0.097109 0.13138 0 0.29704 0.051411l-0.08 0.417q-0.14852-0.051411-0.26277-0.051411-0.18279 0-0.29703 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41129z"/>
<path d="m-344.53-9.185h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.3713h-0.61693v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.022849 0.0857-0.028561 0.18279-0.068547l0.08 0.3256q-0.12567 0.062835-0.2799 0.097109-0.14852 0.039986-0.31417 0.039986-0.28562 0-0.41129-0.18279-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-341.21-6.3289v-1.7365q0-0.39986-0.0971-0.6055-0.0914-0.21135-0.3713-0.21135-0.19993 0-0.36558 0.14281-0.15995 0.14281-0.21707 0.35987v2.0507h-0.41128v-3.9986h0.41128v1.4109h0.0171q0.11424-0.14852 0.2799-0.23992 0.17137-0.097109 0.42271-0.097109 0.1885 0 0.3256 0.05141 0.1428 0.05141 0.2342 0.17708 0.0914 0.12567 0.13709 0.33702 0.0457 0.20564 0.0457 0.5141v1.8451z"/>
<path d="m-340.16-9.185h0.29133l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.097109 0.31417-0.097109 0.13139 0 0.29704 0.051411l-0.08 0.417q-0.14852-0.051411-0.26276-0.051411-0.1828 0-0.29704 0.10853-0.11425 0.10282-0.14852 0.2799v2.1021h-0.41129z"/>
<path d="m-336.89-6.5231q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44555 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-336.28-9.0136q0.16566-0.10282 0.39986-0.15994 0.23992-0.057123 0.50268-0.057123 0.23992 0 0.38273 0.07426 0.14851 0.068547 0.22849 0.19422 0.0857 0.11996 0.10853 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31418l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44555 0.10853-0.30847 0-0.5084-0.21135-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35988-0.14281 0.21135-0.045698 0.4684-0.045698 0.0571 0 0.11425 0 0.0571 0 0.11995 0.00571 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.05141-0.1885 0.045698-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.00571-0.11425-0.00571-0.0571-0.00571-0.11424-0.00571-0.1371 0-0.26848 0.022849t-0.2342 0.079972-0.16566 0.15423q-0.0571 0.097109-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11425 0.12567 0.29133 0.12567 0.23991 0 0.37129-0.11425 0.13139-0.11425 0.1828-0.25134z"/>
<path d="m-332.16-7.3114q0 0.29133 6e-3 0.53124 6e-3 0.2342 0.04 0.46269h-0.2799l-0.0914-0.34274h-0.0229q-0.08 0.17137-0.25134 0.28561-0.17137 0.11425-0.41128 0.11425-0.4627 0-0.69119-0.35987-0.22277-0.35987-0.22277-1.131 0-0.73117 0.27418-1.1082 0.27991-0.37701 0.76545-0.37701 0.16565 0 0.26276 0.022849 0.0971 0.017137 0.21136 0.062835v-1.1767h0.41128zm-0.41128-1.4224q-0.08-0.068547-0.1828-0.097109-0.0971-0.034274-0.26276-0.034274-0.30275 0-0.47412 0.27419-0.16565 0.27419-0.16565 0.84542 0 0.25134 0.0286 0.45698 0.0343 0.19993 0.0971 0.34845 0.0685 0.14852 0.17136 0.22849 0.10854 0.079972 0.26277 0.079972 0.41128 0 0.52553-0.48554z"/>
<path d="m-331.53-6.7973q0.11425 0.068547 0.26848 0.11996 0.15994 0.045698 0.3256 0.045698 0.1885 0 0.31989-0.091396 0.13138-0.097109 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20565-0.20564-0.11995-0.091396-0.26276-0.16566-0.14281-0.079972-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.2342 0 0.40557 0.045698 0.17137 0.039986 0.29704 0.11425l-0.10853 0.34274q-0.10854-0.057123-0.25134-0.091396-0.14281-0.039986-0.29133-0.039986-0.20564 0-0.30275 0.085684-0.0914 0.085684-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.097109 0.19993 0.18279 0.12567 0.079972 0.26847 0.16566 0.14281 0.085684 0.26277 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15994 0.25134-0.10282 0.10282-0.26277 0.16566-0.15423 0.062835-0.36558 0.062835-0.25134 0-0.43414-0.05141-0.18279-0.045698-0.30846-0.12567z"/>
<path d="m-327-6.3289v-1.6965q0-0.22849-0.0171-0.38843-0.0114-0.16566-0.0571-0.26848t-0.12567-0.14852q-0.08-0.051411-0.21136-0.051411-0.19422 0-0.33131 0.15423-0.13138 0.14852-0.18279 0.34274v2.0564h-0.41129v-2.8561h0.29133l0.0743 0.30275h0.0171q0.11995-0.16566 0.28561-0.26848t0.42271-0.10282q0.21706 0 0.35416 0.097109 0.14281 0.091396 0.22278 0.33131 0.10282-0.19993 0.29132-0.31417 0.19422-0.11425 0.42271-0.11425 0.18851 0 0.31989 0.05141 0.13709 0.045698 0.21706 0.17137 0.0857 0.11996 0.12567 0.3256 0.04 0.19993 0.04 0.50839v1.8679h-0.41128v-1.8165q0-0.3713-0.0743-0.55409-0.0685-0.18279-0.3256-0.18279-0.21707 0-0.34845 0.13709-0.12567 0.13138-0.17708 0.35987v2.0564z"/>
<path d="m-324.65-9.0136q0.16566-0.10282 0.39986-0.15994 0.23991-0.057123 0.50268-0.057123 0.23991 0 0.38272 0.07426 0.14852 0.068547 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16566 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19422-0.21707-0.19422-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.045698 0.46841-0.045698 0.0571 0 0.11424 0 0.0571 0 0.11996 0.00571 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15995 0-0.34845 0.05141-0.18851 0.045698-0.31418 0.11996zm1.2396 1.3824q-0.0571-0.00571-0.11424-0.00571-0.0571-0.00571-0.11425-0.00571-0.13709 0-0.26847 0.022849-0.13139 0.022849-0.23421 0.079972t-0.16565 0.15423q-0.0571 0.097109-0.0571 0.24563 0 0.22849 0.10854 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11425 0.13138-0.11425 0.18279-0.25134z"/>
<path d="m-321.63-7.3399 0.11996 0.55409h0.0286l0.0857-0.55409 0.43413-1.8451h0.417l-0.67977 2.5648q-0.08 0.30846-0.15994 0.57694-0.08 0.26848-0.17708 0.46269-0.0914 0.19993-0.21135 0.30846-0.11425 0.11425-0.27419 0.11425-0.15995 0-0.2799-0.051411l0.0685-0.38843q0.08 0.028561 0.15995 0.011424 0.08-0.017137 0.14852-0.097109 0.0743-0.079972 0.13138-0.23992 0.0628-0.15423 0.10853-0.40557l-0.92539-2.8561h0.46841z"/>
<path d="m-356.63-1.8733q0.16566-0.10282 0.39986-0.15994 0.23992-0.057123 0.50268-0.057123 0.23992 0 0.38272 0.07426 0.14852 0.068547 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.045698 0.46841-0.045698 0.0571 0 0.11425 0 0.0571 0 0.11995 0.005712 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.051411-0.1885 0.045698-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.005712-0.11425-0.005712-0.0571-0.005712-0.11425-0.005712-0.13709 0-0.26847 0.022849t-0.23421 0.079972q-0.10282 0.057123-0.16565 0.15423-0.0571 0.097109-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11425 0.13138-0.11425 0.1828-0.25134z"/>
<path d="m-353.87 0.13172q0 0.19993 0.0514 0.28561 0.0571 0.085684 0.15423 0.085684 0.11996 0 0.2799-0.062835l0.04 0.33131q-0.0743 0.045698-0.21136 0.07426-0.13138 0.028561-0.23991 0.028561-0.21707 0-0.35416-0.13138-0.13138-0.13709-0.13138-0.47412v-3.4559h0.41128z"/>
<path d="m-353.03 0.34307q0.11425 0.068547 0.26848 0.11996 0.15994 0.045698 0.3256 0.045698 0.1885 0 0.31989-0.091396 0.13138-0.097109 0.13138-0.30846 0-0.17708-0.08-0.29133t-0.20564-0.20564q-0.11996-0.091396-0.26277-0.16566-0.14281-0.079972-0.26848-0.1885-0.11995-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40557 0.045698 0.17137 0.039986 0.29704 0.11425l-0.10853 0.34274q-0.10853-0.057123-0.25134-0.091396-0.14281-0.039986-0.29133-0.039986-0.20564 0-0.30275 0.085684-0.0914 0.085684-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.097109 0.19993 0.18279 0.12567 0.079972 0.26847 0.16566 0.14281 0.085684 0.26277 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15994 0.25134-0.10282 0.10282-0.26277 0.16566-0.15423 0.062835-0.36558 0.062835-0.25134 0-0.43413-0.05141-0.1828-0.045698-0.30847-0.12567z"/>
<path d="m-351.18-0.61659q0-0.77116 0.26277-1.131 0.26848-0.36559 0.75973-0.36559 0.52553 0 0.77116 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26848 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.1885 0.2342 0.11425 0.079972 0.27419 0.079972 0.29704 0 0.44556-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0685-0.14852-0.18279-0.22849-0.11425-0.085684-0.27419-0.085684-0.29132 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-345.57 1.9539h-0.41129v-1.3767h-0.0228q-0.0914 0.14281-0.23421 0.22278-0.13709 0.079972-0.35987 0.079972-0.45127 0-0.67405-0.35987-0.22278-0.36559-0.22278-1.1253 0-0.73688 0.29133-1.1139 0.29132-0.37701 0.84541-0.37701 0.23992 0 0.45699 0.057123 0.21706 0.057123 0.33131 0.11996zm-0.41129-3.5816q-0.15994-0.097109-0.45126-0.097109-0.29704 0-0.46841 0.27419-0.16566 0.27419-0.16566 0.8397 0 0.23992 0.0286 0.44556 0.0286 0.20564 0.0914 0.35987 0.0685 0.14852 0.17137 0.2342 0.10853 0.079972 0.26276 0.079972 0.21707 0 0.34274-0.12567t0.1885-0.36559z"/>
<path d="m-344.54-2.0447v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21136-0.045698 0.0971-0.05141 0.17136-0.13138 0.0743-0.079972 0.13139-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41129v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.27991 0.33131-0.18279 0.13709-0.45698 0.13709-0.18279 0-0.31988-0.045698-0.1371-0.045698-0.23421-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-340.72 0.61726q-0.1371 0.12567-0.34845 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15424-0.057123 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-339.7-2.0447v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21135-0.045698 0.0971-0.05141 0.17137-0.13138 0.0743-0.079972 0.13138-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41128v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.2799 0.33131-0.18279 0.13709-0.45698 0.13709-0.18279 0-0.31989-0.045698-0.13709-0.045698-0.2342-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-335.89 0.61726q-0.13709 0.12567-0.34845 0.19422-0.21135 0.068547-0.44555 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35988-0.19993-0.26276 0-0.41699 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-332.32 0.61726q-0.13709 0.12567-0.34844 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.23421-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-331.08-0.37096 0.11425 0.56551h0.0114l0.10282-0.57694 0.50268-1.6623h0.43413l-0.9768 2.919h-0.19992l-0.99394-2.919h0.46841z"/>
<path d="m-327.85 0.61726q-0.13709 0.12567-0.34844 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19422-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26848-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994 0.12567 0.11996 0.19993 0.33702 0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.2342-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-325.74 0.81148v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35417-0.19422-0.22849 0-0.37701 0.13709-0.14851 0.13709-0.21706 0.33702v2.0793h-0.41129v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10853-0.15423 0.29132-0.26276 0.18851-0.10853 0.44556-0.10853 0.18279 0 0.31989 0.051411 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-324.98-2.0447h0.34845v-0.56552l0.41128-0.13138v0.6969h0.61693v0.3713h-0.61693v1.7023q0 0.25134 0.0571 0.36559 0.0628 0.10853 0.19993 0.10853 0.11425 0 0.19422-0.022849 0.0857-0.028561 0.18279-0.068547l0.08 0.3256q-0.12567 0.062835-0.2799 0.097109-0.14852 0.039986-0.31417 0.039986-0.28562 0-0.41129-0.18279-0.11995-0.1885-0.11995-0.6055v-1.7594h-0.34845z"/>
<path d="m-323.16 0.34307q0.11424 0.068547 0.26847 0.11996 0.15995 0.045698 0.3256 0.045698 0.18851 0 0.31989-0.091396 0.13138-0.097109 0.13138-0.30846 0-0.17708-0.08-0.29133t-0.20564-0.20564q-0.11996-0.091396-0.26276-0.16566-0.14281-0.079972-0.26848-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19421-0.54838 0.19993-0.1885 0.55981-0.1885 0.2342 0 0.40557 0.045698 0.17137 0.039986 0.29704 0.11425l-0.10854 0.34274q-0.10853-0.057123-0.25134-0.091396-0.1428-0.039986-0.29132-0.039986-0.20564 0-0.30275 0.085684-0.0914 0.085684-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.097109 0.19993 0.18279 0.12567 0.079972 0.26848 0.16566 0.14281 0.085684 0.26276 0.20564 0.12567 0.11425 0.20565 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275-0.0514 0.14281-0.15995 0.25134-0.10282 0.10282-0.26276 0.16566-0.15423 0.062835-0.36559 0.062835-0.25134 0-0.43413-0.05141-0.18279-0.045698-0.30846-0.12567z"/>
<path d="m-320.1-0.61659q0-0.77116 0.26276-1.131 0.26848-0.36559 0.75974-0.36559 0.52553 0 0.77115 0.3713 0.25134 0.3713 0.25134 1.1253 0 0.77687-0.26847 1.1367-0.26848 0.35987-0.75402 0.35987-0.52553 0-0.77687-0.3713-0.24563-0.3713-0.24563-1.1253zm0.42842 0q0 0.25134 0.0286 0.45698 0.0343 0.20564 0.10282 0.35416 0.0743 0.14852 0.18851 0.2342 0.11424 0.079972 0.27419 0.079972 0.29703 0 0.44555-0.26276 0.14852-0.26848 0.14852-0.86255 0-0.24563-0.0343-0.45127-0.0286-0.21135-0.10282-0.35987-0.0686-0.14852-0.18279-0.22849-0.11425-0.085684-0.27419-0.085684-0.29133 0-0.44556 0.26848-0.14852 0.26848-0.14852 0.85684z"/>
<path d="m-316.04 0.81148v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29704l0.0743 0.30275h0.0171q0.10854-0.15423 0.29133-0.26276 0.1885-0.10853 0.44556-0.10853 0.18279 0 0.31988 0.051411 0.14281 0.05141 0.23421 0.17708 0.0971 0.11996 0.1428 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-356.63 5.2671q0.16566-0.10282 0.39986-0.15994 0.23992-0.057123 0.50268-0.057123 0.23992 0 0.38272 0.07426 0.14852 0.068547 0.22849 0.19422 0.0857 0.11996 0.10854 0.2799 0.0286 0.15423 0.0286 0.3256 0 0.34274-0.0171 0.66834-0.0114 0.3256-0.0114 0.61693 0 0.21707 0.0114 0.40557 0.0171 0.18279 0.0571 0.34845h-0.31417l-0.0971-0.33702h-0.0229q-0.0857 0.14852-0.25134 0.25705-0.16565 0.10853-0.44556 0.10853-0.30846 0-0.50839-0.21135-0.19421-0.21707-0.19421-0.59408 0-0.24563 0.08-0.41128 0.0857-0.16566 0.2342-0.26848 0.15423-0.10282 0.35987-0.14281 0.21136-0.045698 0.46841-0.045698 0.0571 0 0.11425 0 0.0571 0 0.11995 0.00571 0.0171-0.17708 0.0171-0.31418 0-0.3256-0.0971-0.45698t-0.35416-0.13138q-0.15994 0-0.34845 0.051411-0.1885 0.045698-0.31417 0.11996zm1.2396 1.3824q-0.0571-0.00571-0.11425-0.00571-0.0571-0.00571-0.11425-0.00571-0.13709 0-0.26847 0.022849t-0.23421 0.079972q-0.10282 0.057123-0.16565 0.15423-0.0571 0.097109-0.0571 0.24563 0 0.22849 0.10853 0.35416 0.11424 0.12567 0.29132 0.12567 0.23992 0 0.3713-0.11425 0.13138-0.11425 0.1828-0.25134z"/>
<path d="m-353.14 7.4834q0.11424 0.068547 0.26847 0.11996 0.15995 0.045698 0.3256 0.045698 0.18851 0 0.31989-0.091396 0.13138-0.097109 0.13138-0.30846 0-0.17708-0.08-0.29133-0.08-0.11425-0.20564-0.20564-0.11996-0.091396-0.26277-0.16566-0.1428-0.079972-0.26847-0.1885-0.11996-0.10853-0.19993-0.25705-0.08-0.14852-0.08-0.37701 0-0.36559 0.19422-0.54838 0.19993-0.1885 0.5598-0.1885 0.23421 0 0.40558 0.045698 0.17136 0.039986 0.29703 0.11425l-0.10853 0.34274q-0.10853-0.057123-0.25134-0.091396-0.14281-0.039986-0.29132-0.039986-0.20565 0-0.30276 0.085684-0.0914 0.085684-0.0914 0.26848 0 0.14281 0.08 0.24563 0.08 0.097109 0.19993 0.18279 0.12567 0.079972 0.26848 0.16566 0.1428 0.085684 0.26276 0.20564 0.12567 0.11425 0.20564 0.2799 0.08 0.15994 0.08 0.40557 0 0.15994-0.0514 0.30275t-0.15994 0.25134q-0.10282 0.10282-0.26276 0.16566-0.15424 0.062835-0.36559 0.062835-0.25134 0-0.43413-0.051411-0.18279-0.045698-0.30846-0.12567z"/>
<path d="m-349.46 7.7576q-0.1371 0.12567-0.34845 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75974-0.38272 0.15994 0 0.31417 0.039986 0.15994 0.039986 0.28561 0.15994t0.19993 0.33702q0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15424-0.057123 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-347.06 9.0943h-0.41129v-1.3767h-0.0229q-0.0914 0.14281-0.2342 0.22278-0.13709 0.079972-0.35987 0.079972-0.45127 0-0.67405-0.35987-0.22278-0.36559-0.22278-1.1253 0-0.73688 0.29133-1.1139 0.29132-0.37701 0.84541-0.37701 0.23992 0 0.45698 0.057123 0.21707 0.057123 0.33132 0.11996zm-0.41129-3.5816q-0.15994-0.097109-0.45127-0.097109-0.29703 0-0.4684 0.27419-0.16566 0.27419-0.16566 0.8397 0 0.23992 0.0286 0.44556t0.0914 0.35987q0.0686 0.14852 0.17137 0.2342 0.10853 0.079972 0.26276 0.079972 0.21707 0 0.34274-0.12567t0.1885-0.36559z"/>
<path d="m-346.02 5.0957v1.748q0 0.43413 0.0857 0.62264 0.0914 0.18279 0.3256 0.18279 0.11996 0 0.21136-0.045698 0.0971-0.051411 0.17136-0.13138 0.0743-0.079972 0.13139-0.18279 0.0571-0.10282 0.0914-0.21135v-1.9822h0.41129v2.045q0 0.20564 0.0114 0.42842 0.0171 0.21707 0.0457 0.38272h-0.29133l-0.10282-0.39986h-0.0171q-0.0971 0.1885-0.2799 0.33131-0.18279 0.13709-0.45698 0.13709-0.18279 0-0.31989-0.045698-0.13709-0.045698-0.2342-0.16566-0.0971-0.11996-0.14852-0.3256-0.0457-0.21135-0.0457-0.53695v-1.8508z"/>
<path d="m-342.21 7.7576q-0.13709 0.12567-0.34844 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994t0.19993 0.33702q0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.23421-0.13709zm-0.31988-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-340.1 7.9518v-1.7422q0-0.42842-0.10282-0.61693-0.0971-0.19422-0.35416-0.19422-0.22849 0-0.37701 0.13709-0.14852 0.13709-0.21707 0.33702v2.0793h-0.41128v-2.8561h0.29703l0.0743 0.30275h0.0171q0.10853-0.15423 0.29133-0.26276 0.1885-0.10853 0.44555-0.10853 0.1828 0 0.31989 0.051411 0.14281 0.05141 0.2342 0.17708 0.0971 0.11996 0.14281 0.3256 0.0514 0.20564 0.0514 0.51982v1.8508z"/>
<path d="m-337.47 7.809q-0.14281 0.10853-0.3256 0.15994-0.18279 0.051411-0.38272 0.051411-0.27419 0-0.4627-0.10282-0.1885-0.10853-0.30846-0.30275-0.11425-0.19993-0.17137-0.47412-0.0514-0.2799-0.0514-0.61693 0-0.73117 0.25705-1.1139 0.26277-0.38272 0.74831-0.38272 0.22278 0 0.38272 0.039986 0.15995 0.039986 0.27419 0.10282l-0.11424 0.35987q-0.22849-0.13138-0.49697-0.13138-0.30846 0-0.46841 0.27419-0.15423 0.26848-0.15423 0.85113 0 0.2342 0.0343 0.43984 0.0343 0.20564 0.11424 0.35987 0.08 0.14852 0.20564 0.23992 0.12567 0.085684 0.31418 0.085684 0.14852 0 0.27419-0.051411 0.13138-0.051411 0.21135-0.11996z"/>
<path d="m-335.41 7.7576q-0.1371 0.12567-0.34845 0.19422-0.21136 0.068547-0.44556 0.068547-0.26848 0-0.46841-0.10282-0.19421-0.10853-0.3256-0.30275-0.12567-0.19993-0.1885-0.47412-0.0571-0.27419-0.0571-0.61693 0-0.73117 0.26847-1.1139 0.26848-0.38272 0.75973-0.38272 0.15995 0 0.31418 0.039986 0.15994 0.039986 0.28561 0.15994t0.19993 0.33702q0.08 0.21707 0.08 0.56552 0 0.097109-0.0114 0.21135-6e-3 0.10853-0.0171 0.22849h-1.4509q0 0.24563 0.04 0.44556 0.04 0.19993 0.12567 0.34274 0.0857 0.13709 0.21707 0.21707 0.13709 0.07426 0.33702 0.07426 0.15423 0 0.30275-0.057123 0.15423-0.057123 0.23421-0.13709zm-0.31989-1.5309q0.0114-0.42842-0.11996-0.62835-0.13138-0.19993-0.35987-0.19993-0.26277 0-0.417 0.19993-0.15423 0.19993-0.18279 0.62835z"/>
<path d="m-334.76 5.0957h0.29132l0.0743 0.30275h0.0171q0.08-0.16566 0.20564-0.25705 0.13138-0.097109 0.31418-0.097109 0.13138 0 0.29704 0.051411l-0.08 0.417q-0.14852-0.051411-0.26276-0.051411-0.18279 0-0.29704 0.10853-0.11424 0.10282-0.14852 0.2799v2.1021h-0.41128z"/>
</g>
<g transform="scale(.94592 1.0572)" dominant-baseline="auto" stroke-width=".20412" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal" aria-label="lws_sequencer">
<path d="m-273.25 9.9991q0 0.28576 0.0735 0.40823 0.0817 0.12247 0.22045 0.12247 0.17145 0 0.40006-0.08981l0.0572 0.47355q-0.10614 0.06532-0.3021 0.10614-0.18778 0.04082-0.34291 0.04082-0.31026 0-0.50621-0.18779-0.18779-0.19595-0.18779-0.67766v-4.9396h0.58786z"/>
<path d="m-269.8 6.8884 0.72666 2.3841 0.14696 0.78381h0.0163l0.12247-0.80014 0.5552-2.3677h0.55519l-1.0859 4.1721h-0.33475l-0.82463-2.678-0.1143-0.68583h-0.0163l-0.1143 0.694-0.80014 2.6698h-0.33475l-1.1186-4.1721h0.62868l0.62868 2.3759 0.098 0.79197h0.0163l0.14697-0.8083 0.6695-2.3596z"/>
<path d="m-267.23 10.301q0.1633 0.09798 0.38374 0.17146 0.22861 0.06532 0.46539 0.06532 0.26943 0 0.45722-0.13064 0.18778-0.1388 0.18778-0.44089 0-0.2531-0.1143-0.4164-0.11431-0.16329-0.29393-0.29393-0.17146-0.13063-0.37557-0.23677-0.20412-0.11431-0.38374-0.26943-0.17146-0.15513-0.28576-0.36741-0.11431-0.21228-0.11431-0.53887 0-0.52254 0.2776-0.78381 0.28576-0.26943 0.80014-0.26943 0.33475 0 0.57969 0.065317 0.24494 0.057152 0.42456 0.16329l-0.15513 0.48988q-0.15513-0.081646-0.35925-0.13063-0.20411-0.057153-0.41639-0.057153-0.29393 0-0.43273 0.12247-0.13063 0.12247-0.13063 0.38374 0 0.20412 0.1143 0.35108 0.11431 0.1388 0.28576 0.26127 0.17963 0.11431 0.38374 0.23677 0.20412 0.12247 0.37558 0.29393 0.17962 0.16329 0.29392 0.40007 0.11431 0.22861 0.11431 0.57969 0 0.22861-0.0735 0.43273-0.0735 0.20412-0.22861 0.35924-0.14697 0.14696-0.37558 0.23678-0.22044 0.08981-0.52253 0.08981-0.35925 0-0.62052-0.07348-0.26127-0.06532-0.44089-0.17962z"/>
<path d="m-264.89 12.114h2.727v0.5307h-2.727z"/>
<path d="m-261.74 10.301q0.16329 0.09798 0.38374 0.17146 0.22861 0.06532 0.46538 0.06532 0.26944 0 0.45722-0.13064 0.18779-0.1388 0.18779-0.44089 0-0.2531-0.11431-0.4164-0.1143-0.16329-0.29392-0.29393-0.17146-0.13063-0.37558-0.23677-0.20411-0.11431-0.38374-0.26943-0.17145-0.15513-0.28576-0.36741-0.1143-0.21228-0.1143-0.53887 0-0.52254 0.27759-0.78381 0.28577-0.26943 0.80014-0.26943 0.33475 0 0.57969 0.065317 0.24494 0.057152 0.42456 0.16329l-0.15513 0.48988q-0.15512-0.081646-0.35924-0.13063-0.20412-0.057153-0.4164-0.057153-0.29393 0-0.43272 0.12247-0.13064 0.12247-0.13064 0.38374 0 0.20412 0.11431 0.35108 0.1143 0.1388 0.28576 0.26127 0.17962 0.11431 0.38374 0.23677 0.20411 0.12247 0.37557 0.29393 0.17962 0.16329 0.29393 0.40007 0.1143 0.22861 0.1143 0.57969 0 0.22861-0.0735 0.43273-0.0735 0.20412-0.22861 0.35924-0.14696 0.14696-0.37557 0.23678-0.22045 0.08981-0.52254 0.08981-0.35924 0-0.62051-0.07348-0.26127-0.06532-0.44089-0.17962z"/>
<path d="m-256.48 10.693q-0.19595 0.17962-0.49804 0.2776-0.30209 0.09798-0.63684 0.09798-0.38374 0-0.6695-0.14696-0.2776-0.15513-0.46539-0.43273-0.17962-0.28576-0.26943-0.67767-0.0817-0.3919-0.0817-0.88178 0-1.0451 0.38374-1.5921 0.38374-0.54703 1.0859-0.54703 0.22861 0 0.44905 0.057152 0.22861 0.057153 0.40824 0.22861 0.17962 0.17146 0.28576 0.48171 0.1143 0.31026 0.1143 0.8083 0 0.1388-0.0163 0.30209-8e-3 0.15513-0.0245 0.32659h-2.0738q0 0.35108 0.0571 0.63684 0.0572 0.28576 0.17963 0.48988 0.12247 0.19595 0.31025 0.31026 0.19595 0.10614 0.48172 0.10614 0.22044 0 0.43272-0.08165 0.22045-0.08165 0.33475-0.19595zm-0.45722-2.1881q0.0163-0.61235-0.17145-0.89811-0.18779-0.28576-0.51438-0.28576-0.37557 0-0.59602 0.28576-0.22044 0.28576-0.26126 0.89811z"/>
<path d="m-253.05 12.604h-0.58785v-1.9677h-0.0327q-0.13064 0.20412-0.33475 0.31842-0.19595 0.1143-0.51438 0.1143-0.645 0-0.96342-0.51437-0.31843-0.52254-0.31843-1.6084 0-1.0532 0.4164-1.5921t1.2084-0.53887q0.34291 0 0.65317 0.081646 0.31026 0.081647 0.47355 0.17146zm-0.58785-5.1192q-0.22861-0.1388-0.64501-0.1388-0.42456 0-0.6695 0.3919-0.23678 0.3919-0.23678 1.2002 0 0.34292 0.0408 0.63684t0.13063 0.51437q0.098 0.21228 0.24494 0.33475 0.15513 0.1143 0.37557 0.1143 0.31026 0 0.48988-0.17962 0.17963-0.17962 0.26944-0.52254z"/>
<path d="m-251.57 6.8884v2.4984q0 0.62051 0.12247 0.88995 0.13064 0.26127 0.46539 0.26127 0.17146 0 0.30209-0.06532 0.1388-0.07348 0.24494-0.18779 0.10614-0.1143 0.18779-0.26127 0.0816-0.14696 0.13063-0.30209v-2.8331h0.58786v2.9229q0 0.29393 0.0163 0.61235 0.0245 0.31026 0.0653 0.54703h-0.41639l-0.14697-0.57152h-0.0245q-0.1388 0.26943-0.40007 0.47355-0.26127 0.19595-0.65317 0.19595-0.26127 0-0.45722-0.06532t-0.33475-0.23678q-0.1388-0.17146-0.21228-0.46538-0.0653-0.30209-0.0653-0.76748v-2.6453z"/>
<path d="m-246.11 10.693q-0.19595 0.17962-0.49804 0.2776-0.30209 0.09798-0.63684 0.09798-0.38374 0-0.66951-0.14696-0.27759-0.15513-0.46538-0.43273-0.17962-0.28576-0.26943-0.67767-0.0817-0.3919-0.0817-0.88178 0-1.0451 0.38374-1.5921 0.38374-0.54703 1.0859-0.54703 0.22861 0 0.44905 0.057152 0.22861 0.057153 0.40823 0.22861 0.17963 0.17146 0.28577 0.48171 0.1143 0.31026 0.1143 0.8083 0 0.1388-0.0163 0.30209-8e-3 0.15513-0.0245 0.32659h-2.0738q0 0.35108 0.0572 0.63684 0.0571 0.28576 0.17962 0.48988 0.12247 0.19595 0.31026 0.31026 0.19595 0.10614 0.48171 0.10614 0.22045 0 0.43273-0.08165 0.22045-0.08165 0.33475-0.19595zm-0.45722-2.1881q0.0163-0.61235-0.17146-0.89811-0.18778-0.28576-0.51437-0.28576-0.37557 0-0.59602 0.28576-0.22044 0.28576-0.26127 0.89811z"/>
<path d="m-243.1 10.971v-2.4902q0-0.61235-0.14696-0.88178-0.1388-0.2776-0.50621-0.2776-0.32659 0-0.53887 0.19595t-0.31025 0.48171v2.9719h-0.58786v-4.0823h0.42456l0.10614 0.43273h0.0245q0.15512-0.22045 0.41639-0.37557 0.26944-0.15513 0.63685-0.15513 0.26127 0 0.45722 0.073482 0.20411 0.073482 0.33475 0.2531 0.1388 0.17146 0.20411 0.46538 0.0735 0.29393 0.0735 0.74298v2.6453z"/>
<path d="m-239.35 10.767q-0.20412 0.15513-0.46539 0.22861-0.26127 0.07348-0.54703 0.07348-0.3919 0-0.66134-0.14696-0.26943-0.15513-0.44089-0.43273-0.16329-0.28576-0.24494-0.67767-0.0735-0.40007-0.0735-0.88178 0-1.0451 0.36741-1.5921 0.37557-0.54703 1.0696-0.54703 0.31842 0 0.54703 0.057152 0.22861 0.057153 0.3919 0.14696l-0.16329 0.51437q-0.32659-0.18779-0.71032-0.18779-0.4409 0-0.66951 0.3919-0.22044 0.38374-0.22044 1.2165 0 0.33475 0.049 0.62868t0.16329 0.51437q0.1143 0.21228 0.29393 0.34292 0.17962 0.12247 0.44905 0.12247 0.21228 0 0.39191-0.07348 0.18778-0.07348 0.30209-0.17146z"/>
<path d="m-236.4 10.693q-0.19595 0.17962-0.49804 0.2776-0.30209 0.09798-0.63685 0.09798-0.38373 0-0.6695-0.14696-0.27759-0.15513-0.46538-0.43273-0.17962-0.28576-0.26943-0.67767-0.0816-0.3919-0.0816-0.88178 0-1.0451 0.38374-1.5921 0.38374-0.54703 1.0859-0.54703 0.22861 0 0.44905 0.057152 0.22861 0.057153 0.40823 0.22861 0.17963 0.17146 0.28577 0.48171 0.1143 0.31026 0.1143 0.8083 0 0.1388-0.0163 0.30209-8e-3 0.15513-0.0245 0.32659h-2.0738q0 0.35108 0.0572 0.63684 0.0572 0.28576 0.17962 0.48988 0.12247 0.19595 0.31026 0.31026 0.19595 0.10614 0.48171 0.10614 0.22045 0 0.43273-0.08165 0.22045-0.08165 0.33475-0.19595zm-0.45722-2.1881q0.0163-0.61235-0.17146-0.89811-0.18778-0.28576-0.51437-0.28576-0.37557 0-0.59602 0.28576-0.22044 0.28576-0.26127 0.89811z"/>
<path d="m-235.48 6.8884h0.4164l0.10614 0.43273h0.0245q0.1143-0.23677 0.29393-0.36741 0.18778-0.1388 0.44905-0.1388 0.18779 0 0.42456 0.073482l-0.1143 0.59602q-0.21228-0.073482-0.37557-0.073482-0.26127 0-0.42457 0.15513-0.16329 0.14696-0.21228 0.40007v3.0046h-0.58785z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 189 KiB

View file

@ -530,6 +530,7 @@ struct lws;
#include <libwebsockets/lws-lwsac.h>
#include <libwebsockets/lws-fts.h>
#include <libwebsockets/lws-diskcache.h>
#include <libwebsockets/lws-sequencer.h>
#include <libwebsockets/abstract/transports.h>
#include <libwebsockets/abstract/smtp.h>

View file

@ -285,6 +285,9 @@ lws_dll2_clear(struct lws_dll2 *d);
LWS_VISIBLE LWS_EXTERN void
lws_dll2_owner_clear(struct lws_dll2_owner *d);
void
lws_dll2_add_before(struct lws_dll2 *d, struct lws_dll2 *after);
/*
* these are safe against the current container object getting deleted,
* since the hold his next in a temp and go to that next. ___tmp is
@ -485,7 +488,7 @@ LWS_VISIBLE LWS_EXTERN void *
lws_wsi_user(struct lws *wsi);
/**
* lws_wsi_set_user() - set the user data associated with the client connection
* lws_set_wsi_user() - set the user data associated with the client connection
* \param wsi: lws connection
* \param user: user data
*

View file

@ -0,0 +1,173 @@
/*
* libwebsockets - small server side websockets and web server implementation
*
* Copyright (C) 2010-2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*
* included from libwebsockets.h
*
* lws_sequencer is intended to help implement sequences that:
*
* - outlive a single connection lifetime,
* - are not associated with a particular protocol,
* - are not associated with a particular vhost,
* - must receive and issue events inside the event loop
*
* lws_sequencer-s are bound to a pt (per-thread) which for the default case of
* one service thread is the same as binding to an lws_context.
*/
typedef enum {
LWSSEQ_CREATED, /* sequencer created */
LWSSEQ_DESTROYED, /* sequencer destroyed */
LWSSEQ_TIMED_OUT, /* sequencer timeout */
LWSSEQ_USER_BASE = 100 /* define your events from here */
} lws_seq_events_t;
typedef enum lws_seq_cb_return {
LWSSEQ_RET_CONTINUE,
LWSSEQ_RET_DESTROY
} lws_seq_cb_return_t;
typedef struct lws_sequencer lws_sequencer_t; /* opaque */
/*
* handler for this sequencer. Return 0 if OK else nonzero to destroy the
* sequencer. LWSSEQ_DESTROYED will be called back to the handler so it can
* close / destroy any private assets associated with the sequence.
*
* The callback may return either LWSSEQ_RET_CONTINUE for the sequencer to
* resume or LWSSEQ_RET_DESTROY to indicate the sequence is finished.
*
* Event indexes consist of some generic ones but mainly user-defined ones
* starting from LWSSEQ_USER_BASE.
*/
typedef lws_seq_cb_return_t (*lws_seq_event_cb)(struct lws_sequencer *seq,
void *user, int event, void *data);
/**
* lws_sequencer_create() - create and bind sequencer to a pt
*
* \param context: lws_context
* \param tsi: thread service index, 0 is safe anything else depends
* multiple service threads being set up
* \param user_size: size of the additional heap allocation to allocate after
* the lws sequencer object to hold user data associated
* with the sequence. The start of this extra allocation
* is passed to the sequencer callback and in \p *puser
* \param puser: pointer to a void * that will be set to the start of the
* extra user heap allocation whose size was set by
* user_size. The user area pointed to here is all zeroed
* after successful sequencer creation.
* \param cb: callback for events on this sequencer
*
* This binds an abstract sequencer to a per-thread (by default, the single
* event loop of an lws_context). After the event loop starts, the sequencer
* will receive an LWSSEQ_CREATED event on its callback from the event loop
* context, where it can begin its sequence flow.
*
* Lws itself will only call the callback subsequently with LWSSEQ_DESTROYED
* when the sequencer is being destroyed.
*
* pt locking is used to protect the related data structures.
*/
LWS_VISIBLE LWS_EXTERN lws_sequencer_t *
lws_sequencer_create(struct lws_context *context, int tsi, size_t user_size,
void **puser, lws_seq_event_cb cb);
/**
* lws_sequencer_destroy() - destroy the sequencer
*
* \param seq: pointer to the the opaque sequencer pointer returned by
* lws_sequencer_create()
*
* This proceeds to destroy the sequencer, calling LWSSEQ_DESTROYED and then
* freeing the sequencer object itself. The pointed-to seq pointer will be
* set to NULL.
*/
LWS_VISIBLE LWS_EXTERN void
lws_sequencer_destroy(lws_sequencer_t **seq);
/**
* lws_sequencer_event() - queue an event on the given sequencer
*
* \param seq: the opaque sequencer pointer returned by lws_sequencer_create()
* \param e: the event index to queue
* \param data: associated opaque (to lws) data to provide the callback
*
* This queues the event on a given sequencer. Queued events are delivered one
* per sequencer each subsequent time around the event loop, so the cb is called
* from the event loop thread context.
*/
LWS_VISIBLE LWS_EXTERN int
lws_sequencer_event(lws_sequencer_t *seq, lws_seq_events_t e, void *data);
/**
* lws_sequencer_timeout() - set a timeout by which the sequence must have
* completed by a different event or inform the
* sequencer
*
* \param seq: The sequencer to set the timeout on
* \param secs: How many seconds in the future to fire the timeout (0 = disable)
*
* This api allows the sequencer to ask to be informed if it has not completed
* or disabled its timeout after secs seconds. Lws will send a LWSSEQ_TIMED_OUT
* event to the sequencer if the timeout expires.
*
* Typically the sequencer sets the timeout when starting a step, then waits to
* hear a queued event informing it the step completed or failed. The timeout
* provides a way to deal with the case the step neither completed nor failed
* within the timeout period.
*
* Lws wsi timeouts are not really suitable for this since they are focused on
* short-term protocol timeout protection and may be set and reset many times
* in one transaction. Wsi timeouts also enforce closure of the wsi when they
* trigger, sequencer timeouts have no side effect except to queue the
* LWSSEQ_TIMED_OUT message and leave it to the sequencer to decide how to
* react appropriately.
*/
LWS_VISIBLE LWS_EXTERN int
lws_sequencer_timeout(lws_sequencer_t *seq, int secs);
/**
* lws_sequencer_from_user(): get the lws_sequencer_t pointer from the user ptr
*
* \param u: the sequencer user allocation returned by lws_sequencer_create() or
* provided in the sequencer callback
*
* This gets the lws_sequencer_t * from the sequencer user allocation pointer.
* Actually these are allocated at the same time in one step, with the user
* allocation immediately after the lws_sequencer_t, so lws can compute where
* the lws_sequencer_t is from having the user allocation pointer. Since the
* size of the lws_sequencer_t is unknown to user code, this helper does it for
* you.
*/
LWS_VISIBLE LWS_EXTERN lws_sequencer_t *
lws_sequencer_from_user(void *u);
/**
* lws_sequencer_secs_since_creation(): elapsed seconds since sequencer created
*
* \param seq: pointer to the lws_sequencer_t
*
* Returns the number of seconds elapsed since the lws_sequencer_t was
* created. This is useful to calculate sequencer timeouts for the current
* step considering a global sequencer lifetime limit.
*/
LWS_VISIBLE LWS_EXTERN int
lws_sequencer_secs_since_creation(lws_sequencer_t *seq);

View file

@ -279,7 +279,10 @@ struct lws_context_per_thread {
struct lws_dll dll_timeout_head;
struct lws_dll dll_hrtimer_head;
struct lws_dll2_owner dll_buflist_owner; /* guys with pending rxflow */
struct lws_dll2_owner dll_buflist_owner; /* guys with pending rxflow */
struct lws_dll2_owner seq_owner; /* list of lws_sequencer-s */
struct lws_dll2_owner seq_pend_owner; /* lws_seq-s with pending evts */
struct lws_dll2_owner seq_to_owner; /* lws_seq-s with sorted timeout */
#if defined(LWS_WITH_TLS)
struct lws_pt_tls tls;
@ -914,6 +917,9 @@ lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len);
LWS_EXTERN void
lws_remove_from_timeout_list(struct lws *wsi);
LWS_EXTERN int
lws_sequencer_timeout_check(struct lws_context_per_thread *pt, time_t now);
LWS_EXTERN struct lws * LWS_WARN_UNUSED_RESULT
lws_client_connect_2(struct lws *wsi);
@ -1026,6 +1032,9 @@ __lws_same_vh_protocol_remove(struct lws *wsi);
LWS_EXTERN void
lws_same_vh_protocol_insert(struct lws *wsi, int n);
int
lws_pt_do_pending_sequencer_events(struct lws_context_per_thread *pt);
LWS_EXTERN int
lws_broadcast(struct lws_context *context, int reason, void *in, size_t len);

311
lib/core-net/sequencer.c Normal file
View file

@ -0,0 +1,311 @@
/*
* libwebsockets - lib/core-net/sequencer.c
*
* Copyright (C) 2019 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation:
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
*/
#include "core/private.h"
/*
* per pending event
*/
typedef struct lws_seq_event {
struct lws_dll2 seq_event_list;
void *data;
lws_seq_events_t e;
} lws_seq_event_t;
/*
* per sequencer
*/
typedef struct lws_sequencer {
struct lws_dll2 seq_list;
struct lws_dll2 seq_pend_list;
struct lws_dll2 seq_to_list;
struct lws_dll2_owner seq_event_owner;
struct lws_context_per_thread *pt;
lws_seq_event_cb cb;
time_t time_created;
time_t timeout; /* 0 or time we timeout */
char going_down;
} lws_sequencer_t;
#define QUEUE_SANITY_LIMIT 10
lws_sequencer_t *
lws_sequencer_create(struct lws_context *context, int tsi, size_t user_size,
void **puser, lws_seq_event_cb cb)
{
struct lws_context_per_thread *pt = &context->pt[tsi];
lws_sequencer_t *seq = lws_zalloc(sizeof(*seq) + user_size, __func__);
if (!seq)
return NULL;
seq->cb = cb;
seq->pt = pt;
*puser = (void *)&seq[1];
/* add the sequencer to the pt */
lws_pt_lock(pt, __func__); /* ---------------------------------- pt { */
lws_dll2_add_tail(&seq->seq_list, &pt->seq_owner);
lws_pt_unlock(pt); /* } pt ------------------------------------------ */
time(&seq->time_created);
/* try to queue the creation cb */
if (lws_sequencer_event(seq, LWSSEQ_CREATED, NULL)) {
lws_dll2_remove(&seq->seq_list);
lws_free(seq);
return NULL;
}
return seq;
}
static int
seq_ev_destroy(struct lws_dll2 *d, void *user)
{
lws_seq_event_t *seqe = lws_container_of(d, lws_seq_event_t,
seq_event_list);
lws_dll2_remove(&seqe->seq_event_list);
lws_free(seqe);
return 0;
}
void
lws_sequencer_destroy(lws_sequencer_t **pseq)
{
lws_sequencer_t *seq = *pseq;
/* defeat another thread racing to add events while we are destroying */
seq->going_down = 1;
lws_pt_lock(seq->pt, __func__); /* -------------------------- pt { */
lws_dll2_remove(&seq->seq_to_list);
lws_dll2_remove(&seq->seq_pend_list);
/* remove and destroy any pending events */
lws_dll2_foreach_safe(&seq->seq_event_owner, NULL, seq_ev_destroy);
lws_pt_unlock(seq->pt); /* } pt ---------------------------------- */
seq->cb(seq, (void *)&seq[1], LWSSEQ_DESTROYED, NULL);
lws_free_set_NULL(seq);
}
int
lws_sequencer_event(lws_sequencer_t *seq, lws_seq_events_t e, void *data)
{
lws_seq_event_t *seqe = lws_zalloc(sizeof(*seqe), __func__);
if (!seqe || seq->going_down)
return 1;
seqe->e = e;
seqe->data = data;
lws_pt_lock(seq->pt, __func__); /* ----------------------------- pt { */
if (seq->seq_event_owner.count > QUEUE_SANITY_LIMIT) {
lwsl_err("%s: more than %d events queued\n", __func__,
QUEUE_SANITY_LIMIT);
}
lws_dll2_add_tail(&seqe->seq_event_list, &seq->seq_event_owner);
/* if not already on the pending list, add us */
if (lws_dll2_is_detached(&seq->seq_pend_list))
lws_dll2_add_tail(&seq->seq_pend_list, &seq->pt->seq_pend_owner);
lws_pt_unlock(seq->pt); /* } pt ------------------------------------- */
return 0;
}
/*
* seq should have at least one pending event (he was on the pt's list of
* sequencers with pending events). Send the top event in the queue.
*/
static int
lws_sequencer_next_event(struct lws_dll2 *d, void *user)
{
lws_sequencer_t *seq = lws_container_of(d, lws_sequencer_t,
seq_pend_list);
lws_seq_event_t *seqe;
struct lws_dll2 *dh;
int n;
/* we should be on the pending list, right? */
assert(seq->seq_event_owner.count);
/* events are only added at tail, so no race possible yet... */
dh = lws_dll2_get_head(&seq->seq_event_owner);
seqe = lws_container_of(dh, lws_seq_event_t, seq_event_list);
n = seq->cb(seq, (void *)&seq[1], seqe->e, seqe->data);
/* ... have to lock here though, because we will change the list */
lws_pt_lock(seq->pt, __func__); /* ----------------------------- pt { */
/* detach event from sequencer event list and free it */
lws_dll2_remove(&seqe->seq_event_list);
lws_free(seqe);
/*
* if seq has no more pending, remove from pt's list of sequencers
* with pending events
*/
if (!seq->seq_event_owner.count)
lws_dll2_remove(&seq->seq_pend_list);
lws_pt_unlock(seq->pt); /* } pt ------------------------------------- */
if (n) {
lwsl_info("%s: destroying seq by request\n", __func__);
lws_sequencer_destroy(&seq);
return LWSSEQ_RET_DESTROY;
}
return LWSSEQ_RET_CONTINUE;
}
/*
* nonpublic helper for the pt to call one event per pending sequencer, if any
* are pending
*/
int
lws_pt_do_pending_sequencer_events(struct lws_context_per_thread *pt)
{
if (!pt->seq_pend_owner.count)
return 0;
return lws_dll2_foreach_safe(&pt->seq_pend_owner, NULL,
lws_sequencer_next_event);
}
/* set secs to zero to remove timeout */
int
lws_sequencer_timeout(lws_sequencer_t *seq, int secs)
{
lws_dll2_remove(&seq->seq_to_list);
if (!secs) {
/* we are clearing the timeout */
seq->timeout = 0;
return 0;
}
time(&seq->timeout);
seq->timeout += secs;
/*
* we sort the pt's list of sequencers with pending timeouts, so it's
* cheap to check it every second
*/
lws_start_foreach_dll_safe(struct lws_dll2 *, p, tp,
seq->pt->seq_to_owner.head) {
lws_sequencer_t *s = lws_container_of(p, lws_sequencer_t,
seq_to_list);
assert(s->timeout); /* shouldn't be on the list otherwise */
if (s->timeout >= seq->timeout) {
/* drop us in before this guy */
lws_dll2_add_before(&seq->seq_to_list,
&s->seq_to_list);
return 0;
}
} lws_end_foreach_dll_safe(p, tp);
/*
* Either nobody on the list yet to compare him to, or he's the
* longest timeout... stick him at the tail end
*/
lws_dll2_add_tail(&seq->seq_to_list, &seq->pt->seq_to_owner);
return 0;
}
/*
* nonpublic helper to check for and handle sequencer timeouts for a whole pt
*/
int
lws_sequencer_timeout_check(struct lws_context_per_thread *pt, time_t now)
{
lws_start_foreach_dll_safe(struct lws_dll2 *, p, tp,
pt->seq_to_owner.head) {
lws_sequencer_t *s = lws_container_of(p, lws_sequencer_t,
seq_to_list);
assert(s->timeout); /* shouldn't be on the list otherwise */
if (s->timeout <= now) {
/* seq has timed out... remove him from timeout list */
lws_sequencer_timeout(s, 0);
/* queue the message to inform the sequencer */
lws_sequencer_event(s, LWSSEQ_TIMED_OUT, NULL);
} else
/*
* No need to look further if we met one later than now:
* the list is sorted in ascending time order
*/
return 0;
} lws_end_foreach_dll_safe(p, tp);
return 0;
}
lws_sequencer_t *
lws_sequencer_from_user(void *u)
{
return &((lws_sequencer_t *)u)[-1];
}
int
lws_sequencer_secs_since_creation(lws_sequencer_t *seq)
{
time_t now;
time(&now);
return now - seq->time_created;
}

View file

@ -368,7 +368,14 @@ lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi)
#endif
/*
* 3) If there is any wsi with rxflow buffered and in a state to process
* 3) If any pending sequencer events, do not wait in poll
*/
if (pt->seq_pend_owner.count)
return 0;
/*
* 4) If there is any wsi with rxflow buffered and in a state to process
* it, we should not wait in poll
*/
@ -380,7 +387,7 @@ lws_service_adjust_timeout(struct lws_context *context, int timeout_ms, int tsi)
return 0;
/*
* 4) If any guys with http compression to spill, we shouldn't wait in
* 5) If any guys with http compression to spill, we shouldn't wait in
* poll but hurry along and service them
*/
@ -639,6 +646,9 @@ lws_service_periodic_checks(struct lws_context *context,
context->last_timeout_check_s = now - 1;
}
lws_sequencer_timeout_check(pt, now);
lws_pt_do_pending_sequencer_events(pt);
if (!lws_compare_time_t(context, context->last_timeout_check_s, now))
return 0;

View file

@ -366,8 +366,10 @@ lws_protocol_init(struct lws_context *context)
if (vh->protocols[n].callback(&wsi,
LWS_CALLBACK_PROTOCOL_INIT, NULL,
(void *)pvo, 0)) {
lws_free(vh->protocol_vh_privs[n]);
vh->protocol_vh_privs[n] = NULL;
if (vh->protocol_vh_privs[n]) {
lws_free(vh->protocol_vh_privs[n]);
vh->protocol_vh_privs[n] = NULL;
}
lwsl_err("%s: protocol %s failed init\n",
__func__, vh->protocols[n].name);

View file

@ -65,6 +65,40 @@ lws_dll2_add_head(struct lws_dll2 *d, struct lws_dll2_owner *owner)
owner->count++;
}
/*
* add us to the list that 'after' is in, just before him
*/
void
lws_dll2_add_before(struct lws_dll2 *d, struct lws_dll2 *after)
{
lws_dll2_owner_t *owner = after->owner;
if (!lws_dll2_is_detached(d)) {
assert(0); /* only wholly detached things can be added */
return;
}
d->owner = owner;
/* we need to point to after */
d->next = after;
/* guy that used to point to after, needs to point to us */
if (after->prev)
after->prev->next = d;
else
owner->head = d;
/* then after needs to point back to us */
after->prev = d;
owner->count++;
}
void
lws_dll2_add_tail(struct lws_dll2 *d, struct lws_dll2_owner *owner)
{

View file

@ -134,6 +134,13 @@ _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
lws_pt_unlock(pt);
/*
* if there are any pending sequencer events, handle the next one
* for all sequencers with pending events. If nothing to do returns
* immediately.
*/
lws_pt_do_pending_sequencer_events(pt);
m = 0;
#if defined(LWS_ROLE_WS) && !defined(LWS_WITHOUT_EXTENSIONS)
m |= !!pt->ws.rx_draining_ext_list;

View file

@ -815,6 +815,11 @@ lws_client_reset(struct lws **pwsi, int ssl, const char *address, int port,
if (p)
lws_strncpy(alpn, p, sizeof(alpn));
if (!port) {
port = 443;
ssl = 1;
}
lwsl_info("redirect ads='%s', port=%d, path='%s', ssl = %d\n",
address, port, path, ssl);

View file

@ -0,0 +1,77 @@
cmake_minimum_required(VERSION 2.8)
include(CheckCSourceCompiles)
set(SAMP lws-api-test-lws_sequencer)
set(SRCS main.c)
# If we are being built as part of lws, confirm current build config supports
# reqconfig, else skip building ourselves.
#
# If we are being built externally, confirm installed lws was configured to
# support reqconfig, else error out with a helpful message about the problem.
#
MACRO(require_lws_config reqconfig _val result)
if (DEFINED ${reqconfig})
if (${reqconfig})
set (rq 1)
else()
set (rq 0)
endif()
else()
set(rq 0)
endif()
if (${_val} EQUAL ${rq})
set(SAME 1)
else()
set(SAME 0)
endif()
if (LWS_WITH_MINIMAL_EXAMPLES AND NOT ${SAME})
if (${_val})
message("${SAMP}: skipping as lws being built without ${reqconfig}")
else()
message("${SAMP}: skipping as lws built with ${reqconfig}")
endif()
set(${result} 0)
else()
if (LWS_WITH_MINIMAL_EXAMPLES)
set(MET ${SAME})
else()
CHECK_C_SOURCE_COMPILES("#include <libwebsockets.h>\nint main(void) {\n#if defined(${reqconfig})\n return 0;\n#else\n fail;\n#endif\n return 0;\n}\n" HAS_${reqconfig})
if (NOT DEFINED HAS_${reqconfig} OR NOT HAS_${reqconfig})
set(HAS_${reqconfig} 0)
else()
set(HAS_${reqconfig} 1)
endif()
if ((HAS_${reqconfig} AND ${_val}) OR (NOT HAS_${reqconfig} AND NOT ${_val}))
set(MET 1)
else()
set(MET 0)
endif()
endif()
if (NOT MET)
if (${_val})
message(FATAL_ERROR "This project requires lws must have been configured with ${reqconfig}")
else()
message(FATAL_ERROR "Lws configuration of ${reqconfig} is incompatible with this project")
endif()
endif()
endif()
ENDMACRO()
set(requirements 1)
require_lws_config(LWS_ROLE_H1 1 requirements)
require_lws_config(LWS_WITHOUT_CLIENT 0 requirements)
if (requirements)
add_executable(${SAMP} ${SRCS})
if (websockets_shared)
target_link_libraries(${SAMP} websockets_shared)
add_dependencies(${SAMP} websockets_shared)
else()
target_link_libraries(${SAMP} websockets)
endif()
endif()

View file

@ -0,0 +1,92 @@
-----BEGIN CERTIFICATE-----
MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
+AZxAeKCINT+b72x
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
pu/xO28QOG8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----

View file

@ -0,0 +1,392 @@
/*
* lws-api-test-lws_sequencer
*
* Written in 2019 by Andy Green <andy@warmcat.com>
*
* This file is made available under the Creative Commons CC0 1.0
* Universal Public Domain Dedication.
*
* This api test uses the lws_sequencer api to make five http client requests
* to libwebsockets.org in sequence, from inside the event loop. The fourth
* fourth http client request is directed to port 22 where it stalls
* triggering the lws_sequencer timeout flow. The fifth is given a nonexistant
* dns name and is expected to fail.
*/
#include <libwebsockets.h>
#include <signal.h>
static int interrupted, test_good = 0;
enum {
SEQ1,
SEQ2,
SEQ3_404,
SEQ4_TIMEOUT, /* we expect to timeout */
SEQ5_BAD_ADDRESS /* we expect the connection to fail */
};
/*
* This is the user defined struct whose space is allocated along with the
* sequencer when that is created.
*
* You'd put everything your sequencer needs to do its job in here.
*/
struct myseq {
struct lws_context *context;
struct lws_vhost *vhost;
struct lws *cwsi; /* client wsi for current step if any */
int state; /* which test we're on */
int http_resp;
};
/* sequencer messages specific to this sequencer */
enum {
SEQ_MSG_CLIENT_FAILED = LWSSEQ_USER_BASE,
SEQ_MSG_CLIENT_DONE,
};
/* this is the sequence of GETs we will do */
static const char *url_paths[] = {
"https://libwebsockets.org/index.html",
"https://libwebsockets.org/lws.css",
"https://libwebsockets.org/404.html",
"https://libwebsockets.org:22", /* this causes us to time out */
"https://doesntexist.invalid/" /* fail early in connect */
};
static void
sigint_handler(int sig)
{
interrupted = 1;
}
/*
* This is the sequencer-aware http protocol handler. It monitors the client
* http action and queues messages for the sequencer when something definitive
* happens.
*/
static int
callback_http(struct lws *wsi, enum lws_callback_reasons reason, void *user,
void *in, size_t len)
{
struct myseq *s = (struct myseq *)user;
int seq_msg = SEQ_MSG_CLIENT_FAILED;
switch (reason) {
/* because we are protocols[0] ... */
case LWS_CALLBACK_CLIENT_CONNECTION_ERROR:
lwsl_notice("CLIENT_CONNECTION_ERROR: %s\n",
in ? (char *)in : "(null)");
goto notify;
case LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP:
if (!s)
return 1;
s->http_resp = lws_http_client_http_response(wsi);
lwsl_info("Connected with server response: %d\n", s->http_resp);
break;
/* chunks of chunked content, with header removed */
case LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ:
lwsl_info("RECEIVE_CLIENT_HTTP_READ: read %d\n", (int)len);
#if 0 /* enable to dump the html */
{
const char *p = in;
while (len--)
if (*p < 0x7f)
putchar(*p++);
else
putchar('.');
}
#endif
return 0; /* don't passthru */
/* uninterpreted http content */
case LWS_CALLBACK_RECEIVE_CLIENT_HTTP:
{
char buffer[1024 + LWS_PRE];
char *px = buffer + LWS_PRE;
int lenx = sizeof(buffer) - LWS_PRE;
if (lws_http_client_read(wsi, &px, &lenx) < 0)
return -1;
}
return 0; /* don't passthru */
case LWS_CALLBACK_COMPLETED_CLIENT_HTTP:
lwsl_notice("LWS_CALLBACK_COMPLETED_CLIENT_HTTP: wsi %p\n",
wsi);
if (!s)
return 1;
/*
* We got a definitive transaction completion
*/
seq_msg = SEQ_MSG_CLIENT_DONE;
goto notify;
case LWS_CALLBACK_CLOSED_CLIENT_HTTP:
lwsl_info("LWS_CALLBACK_CLOSED_CLIENT_HTTP\n");
if (!s)
return 1;
lwsl_user("%s: wsi %p: seq failed at CLOSED_CLIENT_HTTP\n",
__func__, wsi);
goto notify;
default:
break;
}
return lws_callback_http_dummy(wsi, reason, user, in, len);
notify:
/*
* We only inform the sequencer of a definitive outcome for our step.
*
* So once we have informed it, we detach ourselves from the sequencer
* and the sequencer from ourselves. Wsi may want to live on but after
* we got our result and moved on to the next test or completed, the
* sequencer doesn't want to hear from it again.
*/
if (!s)
return 1;
lws_set_wsi_user(wsi, NULL);
s->cwsi = NULL;
lws_sequencer_event(lws_sequencer_from_user(s), seq_msg, NULL);
return 0;
}
static const struct lws_protocols protocols[] = {
{ "seq-test-http", callback_http, 0, 0, },
{ NULL, NULL, 0, 0 }
};
static int
sequencer_start_client(struct myseq *s)
{
struct lws_client_connect_info i;
const char *prot, *path1;
char uri[128], path[128];
int n;
lws_strncpy(uri, url_paths[s->state], sizeof(uri));
memset(&i, 0, sizeof i);
i.context = s->context;
if (lws_parse_uri(uri, &prot, &i.address, &i.port, &path1)) {
lwsl_err("%s: uri error %s\n", __func__, uri);
}
if (!strcmp(prot, "https"))
i.ssl_connection = LCCSCF_USE_SSL;
path[0] = '/';
n = 1;
if (path1[0] == '/')
n = 0;
lws_strncpy(&path[n], path1, sizeof(path) - 1);
i.path = path;
i.host = i.address;
i.origin = i.address;
i.method = "GET";
i.vhost = s->vhost;
i.userdata = s;
i.protocol = protocols[0].name;
i.local_protocol_name = protocols[0].name;
i.pwsi = &s->cwsi;
if (!lws_client_connect_via_info(&i)) {
lwsl_notice("%s: connecting to %s://%s:%d%s failed\n",
__func__, prot, i.address, i.port, path);
/* we couldn't even get started with the client connection */
lws_sequencer_event(lws_sequencer_from_user(s),
SEQ_MSG_CLIENT_FAILED, NULL);
return 1;
}
lws_sequencer_timeout(lws_sequencer_from_user(s), 3);
lwsl_notice("%s: wsi %p: connecting to %s://%s:%d%s\n", __func__,
s->cwsi, prot, i.address, i.port, path);
return 0;
}
/*
* The sequencer callback handles queued sequencer messages in the order they
* were queued. The messages are presented from the event loop thread context
* even if they were queued from a different thread.
*/
static lws_seq_cb_return_t
sequencer_cb(struct lws_sequencer *seq, void *user, int event, void *data)
{
struct myseq *s = (struct myseq *)user;
switch ((int)event) {
case LWSSEQ_CREATED: /* our sequencer just got started */
s->state = SEQ1; /* first thing we'll do is the first url */
goto step;
case LWSSEQ_DESTROYED:
/*
* This sequencer is about to be destroyed. If we have any
* other assets in play, detach them from us.
*/
if (s->cwsi)
lws_set_wsi_user(s->cwsi, NULL);
interrupted = 1;
break;
case LWSSEQ_TIMED_OUT: /* current step timed out */
if (s->state == SEQ4_TIMEOUT) {
lwsl_user("%s: test %d got expected timeout\n",
__func__, s->state);
goto done;
}
lwsl_user("%s: seq timed out at step %d\n", __func__, s->state);
return LWSSEQ_RET_DESTROY;
case SEQ_MSG_CLIENT_FAILED:
if (s->state == SEQ5_BAD_ADDRESS) {
/*
* in this specific case, we expect to fail
*/
lwsl_user("%s: test %d failed as expected\n",
__func__, s->state);
goto done;
}
lwsl_user("%s: seq failed at step %d\n", __func__, s->state);
return LWSSEQ_RET_DESTROY;
case SEQ_MSG_CLIENT_DONE:
if (s->state >= SEQ4_TIMEOUT) {
/*
* In these specific cases, done would be a failure,
* we expected to timeout or fail
*/
lwsl_user("%s: seq failed at step %d\n", __func__,
s->state);
return LWSSEQ_RET_DESTROY;
}
lwsl_user("%s: seq done step %d (resp %d)\n", __func__,
s->state, s->http_resp);
done:
lws_sequencer_timeout(lws_sequencer_from_user(s), 0);
s->state++;
if (s->state == LWS_ARRAY_SIZE(url_paths)) {
/* the sequence has completed */
lwsl_user("%s: sequence completed OK\n", __func__);
test_good = 1;
return LWSSEQ_RET_DESTROY;
}
step:
sequencer_start_client(s);
break;
default:
break;
}
return LWSSEQ_RET_CONTINUE;
}
int
main(int argc, const char **argv)
{
int n = 1, logs = LLL_USER | LLL_ERR | LLL_WARN | LLL_NOTICE;
struct lws_context_creation_info info;
struct lws_context *context;
lws_sequencer_t *seq;
struct lws_vhost *vh;
struct myseq *s;
const char *p;
/* the normal lws init */
signal(SIGINT, sigint_handler);
if ((p = lws_cmdline_option(argc, argv, "-d")))
logs = atoi(p);
lws_set_log_level(logs, NULL);
lwsl_user("LWS API selftest: lws_sequencer\n");
memset(&info, 0, sizeof info); /* otherwise uninitialized garbage */
info.port = CONTEXT_PORT_NO_LISTEN;
info.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT |
LWS_SERVER_OPTION_EXPLICIT_VHOSTS;
info.protocols = protocols;
#if defined(LWS_WITH_MBEDTLS)
/*
* OpenSSL uses the system trust store. mbedTLS has to be told which
* CA to trust explicitly.
*/
info.client_ssl_ca_filepath = "./libwebsockets.org.cer";
#endif
context = lws_create_context(&info);
if (!context) {
lwsl_err("lws init failed\n");
return 1;
}
vh = lws_create_vhost(context, &info);
if (!vh) {
lwsl_err("Failed to create first vhost\n");
goto bail1;
}
/*
* Create the sequencer... when the event loop starts, it will
* receive the LWSSEQ_CREATED callback
*/
seq = lws_sequencer_create(context, 0, sizeof(struct myseq),
(void **)&s, sequencer_cb);
if (!seq) {
lwsl_err("%s: unable to create sequencer\n", __func__);
goto bail1;
}
s->context = context;
s->vhost = vh;
/* the usual lws event loop */
while (n >= 0 && !interrupted)
n = lws_service(context, 1000);
bail1:
lwsl_user("Completed: %s\n", !test_good ? "FAIL" : "PASS");
lws_context_destroy(context);
return !test_good;
}