diff --git a/.travis.yml b/.travis.yml index 731354f..c9e1716 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,88 +1,92 @@ language: cpp dist: trusty env: matrix: fast_finish: true include: - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.9 - libeigen3-dev env: COMPILER=gcc GCC=4.9 - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-5 - libeigen3-dev env: COMPILER=gcc GCC=5 - os: linux addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-6 - libeigen3-dev env: COMPILER=gcc GCC=6 env: global: - MINCONDA_VERSION="latest" - MINCONDA_LINUX="Linux-x86_64" - MINCONDA_OSX="MacOSX-x86_64" before_install: - | # Configure build variables if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then if [[ "$COMPILER" == "gcc" ]]; then export CXX=g++-$GCC CC=gcc-$GCC; fi if [[ "$COMPILER" == "clang" ]]; then export CXX=clang++-$CLANG CC=clang-$CLANG; fi elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export CXX=clang++ CC=clang; fi install: # Define the version of miniconda to download - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then MINCONDA_OS=$MINCONDA_LINUX; elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then MINCONDA_OS=$MINCONDA_OSX; fi - wget "http://repo.continuum.io/miniconda/Miniconda3-$MINCONDA_VERSION-$MINCONDA_OS.sh" -O miniconda.sh; - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:${PATH}" - export INCLUDE_PATH="$HOME/miniconda/include:${INCLUDE_PATH}" - hash -r - conda config --set always_yes yes --set changeps1 no - conda update -q conda - conda install cmake -c conda-forge - conda install xtl -c conda-forge - conda install xsimd -c conda-forge - conda install xtensor -c conda-forge + # store relevant + - build_dir="${PWD}/build" + - example_dir="${PWD}/docs/examples" # build path - - mkdir build - - cd build + - mkdir "${build_dir}" + - cd "${build_dir}" # install catch - git clone https://github.com/catchorg/Catch2.git - cd Catch2 - mkdir build - cd build - mkdir opt - cmake .. -DCATCH_BUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX:PATH="${PWD}"/opt - make install - export INCLUDE_PATH="${PWD}"/opt/include:"${INCLUDE_PATH}" - - cd ../.. # make test-cases + - cd "${build_dir}" - cmake .. -DBUILD_TESTS=ON - make - - cd test script: + # run tests + - cd "${build_dir}/test" - ./test diff --git a/docs/conventions/allocation.rst b/docs/conventions/allocation.rst index a5b7210..882bb31 100644 --- a/docs/conventions/allocation.rst +++ b/docs/conventions/allocation.rst @@ -1,22 +1,22 @@ .. _conventions_allocation: Data allocation =============== Most of GooseFEM's functions provided an interface to: 1. Allocate output arrays: names start with a **upper-case** letter. For example: .. code-block:: cpp ue = GooseFEM::Vector::AsElement(disp); 2. Directly write to output arrays, without allocation them and copying them, by taking a pointer the externally allocated array as the last input argument(s): names start with a **lower-case** letter. For example: .. code-block:: cpp GooseFEM::Vector::asElement(disp, ue); .. note:: - The Python API only option 1. Option 2 is only available in the C++ API. + The Python API only provides option 1. Option 2 is only available in the C++ API. diff --git a/docs/conventions/matrix.rst b/docs/conventions/matrix.rst index 7c96130..2747c74 100644 --- a/docs/conventions/matrix.rst +++ b/docs/conventions/matrix.rst @@ -1,40 +1,42 @@ .. _conventions_matrix: Matrix representation ===================== Element system matrix --------------------- The element system matrix collects individual system matrices as a multi-dimensional array of shape :math:`\left[ n_\text{elements} \times n_\text{nodes-per-element} n_\text{dim} \times n_\text{nodes-per-element} n_\text{dim} \right]``. An element system matrix .. code-block:: python Ke = K[e,:,:] obeys the following convention: .. math:: \underline{f} = \underline{\underline{K}} \underline{u} where - \underline{f_(n + i d)} = f_i^{(n)} +.. math:: + + f_{(n + i d)} \equiv f_i^{(n)} with :math:`n` the node number, :math:`i` the dimension, and :math:`d` the number of dimensions. For example for a two-dimensional quadrilateral element .. math:: \underline{f} = \big[ f_x^{(0)}, f_y^{(0)}, f_x^{(1)}, f_y^{(1)}, f_x^{(2)}, f_y^{(2)}, f_x^{(3)}, f_y^{(3)} \big]^T diff --git a/docs/conventions/storage.rst b/docs/conventions/storage.rst index 8078aaf..c770c17 100644 --- a/docs/conventions/storage.rst +++ b/docs/conventions/storage.rst @@ -1,77 +1,77 @@ .. _conventions_storage: Data storage ============ Glossary -------- +---------+-------------------------------+-------------------------------------+ | Alias | Shape | Description | +=========+===============================+=====================================+ | dofval | [ndof] | degrees of freedom | +---------+-------------------------------+-------------------------------------+ | nodevec | [nnode, ndim] | nodal vector | +---------+-------------------------------+-------------------------------------+ | elemvec | [nelem, nne, ndim] | nodal vector stored per element | +---------+-------------------------------+-------------------------------------+ | elemmat | [nelem, nne*ndim, nne*ndim] | matrix stored per element | +---------+-------------------------------+-------------------------------------+ | qscalar | [nelem, nip] | scalar stored per integration point | +---------+-------------------------------+-------------------------------------+ | qtensor | [nelem, nip, tdim, tdim, ...] | tensor stored per integration point | +---------+-------------------------------+-------------------------------------+ dofval ------ * Degrees-of-freedom -* [ndof] +* Shape [ndof] * :code:`xt::xtensor<double,1>` nodevec ------- * Nodal vectors -* [nnode, ndim] +* Shape [nnode, ndim] * :code:`xt::xtensor<double,2>` elemvec ------- * Nodal vectors stored per element * Allows treatment of all elements independently, no connectivity needed -* [nelem, nne, ndim] +* Shape [nelem, nne, ndim] * :code:`xt::xtensor<double,3>` elemmat ------- * Matrices stored per element -* [nelem, nne*ndim, nne*ndim] +* Shape [nelem, nne*ndim, nne*ndim] * :code:`xt::xtensor<double,3>` qscalar ------- * Scalars stored per integration point -* [nelem, nip] +* Shape [nelem, nip] * :code:`xt::xtensor<double,2>` qtensor (2nd order) ------------------- * 2nd-order tensors stored per integration point -* For certain element the number of dimensions of the tensor can be larger than the number of dimensions of the element -* [nelem, nip, tdim, tdim] +* For certain elements, the number of dimensions of the tensor can be larger than the number of dimensions of the element (tdim >= ndim) +* Shape [nelem, nip, tdim, tdim] * :code:`xt::xtensor<double,4>` qtensor (4th order) ------------------- * 4th-order tensors stored per integration point -* For certain element the number of dimensions of the tensor can be larger than the number of dimensions of the element -* [nelem, nip, tdim, tdim, tdim, tdim] +* For certain elements, the number of dimensions of the tensor can be larger than the number of dimensions of the element (tdim >= ndim) +* Shape [nelem, nip, tdim, tdim, tdim, tdim] * :code:`xt::xtensor<double,4>` diff --git a/docs/conventions/terminology.rst b/docs/conventions/terminology.rst index 8d4b4da..f25226a 100644 --- a/docs/conventions/terminology.rst +++ b/docs/conventions/terminology.rst @@ -1,81 +1,81 @@ .. _conventions_terminology: Terminology =========== Glossary -------- +---------+---------+-------------------------------------+ | Alias | Type | Description | +=========+=========+=====================================+ | nnode | size | number of nodes | +---------+---------+-------------------------------------+ | ndim | size | number of dimensions | +---------+---------+-------------------------------------+ | nelem | size | number of elements | +---------+---------+-------------------------------------+ | nne | size | number of nodes per element | +---------+---------+-------------------------------------+ -| tdim | size | number of dimensions of tensor | +| tdim | size | number of dimensions of a tensor | +---------+---------+-------------------------------------+ | --- | --- | --- | +---------+---------+-------------------------------------+ | dofval | array | degrees of freedom | +---------+---------+-------------------------------------+ | nodevec | array | nodal vector | +---------+---------+-------------------------------------+ | elemvec | array | nodal vector stored per element | +---------+---------+-------------------------------------+ | elemmat | array | matrix stored per element | +---------+---------+-------------------------------------+ | qscalar | array | scalar stored per integration point | +---------+---------+-------------------------------------+ | qtensor | array | tensor stored per integration point | +---------+---------+-------------------------------------+ | --- | --- | --- | +---------+---------+-------------------------------------+ | coor | name | nodal coordinates | +---------+---------+-------------------------------------+ | conn | name | connectivity | +---------+---------+-------------------------------------+ | --- | --- | --- | +---------+---------+-------------------------------------+ | Tri3 | element | 2-d triangular element (3 nodes) | +---------+---------+-------------------------------------+ | Quad4 | element | 2-d quadrilateral element (4 nodes) | +---------+---------+-------------------------------------+ | Hex8 | element | 3-d hexahedral element (8 nodes) | +---------+---------+-------------------------------------+ Coordinates ----------- * Nodal coordinates: each node has one row -* Shape :math:`\left[ n_\text{node} \times n_\text{dim} \right]` +* Shape [nnode, ndim] * Denoted: *coor* Connectivity ------------ * Node numbers per element: each element has one row -* Shape :math:`\left[ n_\text{elem} \times n_\text{nodes-per-element} \right]` +* Shape [nelem, nne] * Denoted: *conn* Sizes ----- -+-------+---------------------------------+------------------------------------+ -| Alias | Description | | -+=======+=================================+====================================+ -| nnode | number of nodes | :math:`n_\text{nodes}` | -+-------+---------------------------------+------------------------------------+ -| ndim | number of dimensions | :math:`n_\text{ndim}` | -+-------+---------------------------------+------------------------------------+ -| nelem | number of elements | :math:`n_\text{elements}` | -+-------+---------------------------------+------------------------------------+ -| nne | number of nodes per element | :math:`n_\text{nodes-per-element}` | -+-------+---------------------------------+------------------------------------+ -| tdim | number of dimensions of tensor | :math:`n_\text{ndim}` | -+-------+---------------------------------+------------------------------------+ ++-------+---------------------------------+ +| Alias | Description | ++=======+=================================+ +| nnode | number of nodes | ++-------+---------------------------------+ +| ndim | number of dimensions | ++-------+---------------------------------+ +| nelem | number of elements | ++-------+---------------------------------+ +| nne | number of nodes per element | ++-------+---------------------------------+ +| tdim | number of dimensions of tensor | ++-------+---------------------------------+ diff --git a/docs/conventions/vector.rst b/docs/conventions/vector.rst index ab86cbc..1dae11d 100644 --- a/docs/conventions/vector.rst +++ b/docs/conventions/vector.rst @@ -1,238 +1,241 @@ .. _conventions_vector: Vector representation ===================== In GooseFEM there are three ways to represent vectors. In particular, a vector field (e.g. the displacement) can be collected: * per node (denoted "nodevec", :ref:`see below <conventions_storage>`), * per degree-of-freedom (denoted "dofval", :ref:`see below <conventions_storage>`), * per element (denoted "elemvec", :ref:`see below <conventions_storage>`). .. warning:: - Care has to be taken in the conversion from one representation to the other as 'down-sizing' can be done in more than one way, see :ref:`conventions_vector_conversion`. + Watch out with the conversion from one representation to the other as downsizing can be done in more than one way, see :ref:`conventions_vector_conversion`. Consider a simple two-dimensional mesh of just two elements, and a displacement vector per node: .. image:: figures/data-representation.svg :width: 400px :align: center | -Collected per node ------------------- +Collected per node (nodevec) +---------------------------- .. math:: \texttt{disp} = \begin{bmatrix} u_x^{(0)} & u_y^{(0)} \\ u_x^{(1)} & u_y^{(1)} \\ u_x^{(2)} & u_y^{(2)} \\ u_x^{(3)} & u_y^{(3)} \\ u_x^{(4)} & u_y^{(4)} \\ u_x^{(5)} & u_y^{(5)} \end{bmatrix} -Collected per degree-of-freedom -------------------------------- +Collected per degree-of-freedom (dofval) +---------------------------------------- The following definition .. math:: \texttt{dofs} = \begin{bmatrix} 0 & 1 \\ 2 & 3 \\ 4 & 5 \\ 6 & 7 \\ 8 & 9 \\ 10 & 11 \end{bmatrix} gives: .. math:: \texttt{u} = \big[ u_x^{(0)} \, u_y^{(0)} \, u_x^{(1)} \, u_y^{(1)} \, u_x^{(2)} \, u_y^{(2)} \, u_x^{(3)} \, u_y^{(3)} \, u_x^{(4)} \, u_y^{(4)} \, u_x^{(5)} \, u_y^{(5)} \big]^T Whereby "dofs" can be used to: * **Reorder** "u" such that is can be easily (even directly) partitioned. For example, consider that all :math:`x`-coordinates are *Prescribed* and all :math:`y`-coordinates are *Unknown*. In particular, .. math:: \texttt{dofs} = \begin{bmatrix} 6 & 0 \\ 7 & 1 \\ 8 & 2 \\ 9 & 3 \\ 10 & 4 \\ 11 & 5 \end{bmatrix} gives .. math:: \texttt{u} = \big[ u_y^{(0)} \, u_y^{(1)} \, u_y^{(2)} \, u_y^{(3)} \, u_y^{(4)} \, u_y^{(5)} \, \; u_x^{(0)} \, u_x^{(1)} \, u_x^{(2)} \, u_x^{(3)} \, u_x^{(4)} \, u_x^{(5)} \big]^T = \big[ \texttt{u}_u \, \; \texttt{u}_p \big]^T which allows .. math:: \texttt{u}_u &= \texttt{u[:6]} \\ \texttt{u}_p &= \texttt{u[6:]} | * **Eliminate** dependent nodes. For example, suppose that the displacement of all top nodes is equal to that of the bottom nodes. In this one could: .. math:: \texttt{dofs} = \begin{bmatrix} 0 & 1 \\ 2 & 3 \\ 4 & 5 \\ 0 & 1 \\ 2 & 3 \\ 4 & 5 \end{bmatrix} \qquad \rightarrow \qquad \texttt{u} = \begin{bmatrix} u_0 \\ u_1 \\ u_2 \\ u_3 \\ u_4 \\ u_5 \end{bmatrix} \quad \leftrightarrow \quad \texttt{disp} = \begin{bmatrix} u_0 & u_1 \\ u_2 & u_3 \\ u_4 & u_5 \\ u_0 & u_1 \\ u_2 & u_3 \\ u_4 & u_5 \end{bmatrix} +.. note:: + + :ref:`Vector` applies the reordering itself. One does not need to change "dofs", but one simply supplies "iip". -Collected per element ---------------------- +Collected per element (elemvec) +------------------------------- For this example: .. math:: \texttt{conn} = \begin{bmatrix} 0 & 1 & 4 & 3 \\ 1 & 2 & 5 & 4 \end{bmatrix} The storage per node proceeds in .. math:: \texttt{shape(ue)} &= \left[ n_\text{elements} \times n_\text{nodes-per-element} \times n_\text{dim} \right] \\ &= \left[ 2 \times 4 \times 2 \right] In particular: .. math:: \texttt{ue[0,:,:]} = \begin{bmatrix} u_x^{(0)} & u_y^{(0)} \\ u_x^{(1)} & u_y^{(1)} \\ u_x^{(4)} & u_y^{(4)} \\ u_x^{(3)} & u_y^{(3)} \\ \end{bmatrix} and .. math:: \texttt{ue[1,:,:]} = \begin{bmatrix} u_x^{(1)} & u_y^{(1)} \\ u_x^{(2)} & u_y^{(2)} \\ u_x^{(5)} & u_y^{(5)} \\ u_x^{(4)} & u_y^{(4)} \\ \end{bmatrix} .. _conventions_vector_conversion: Conversion ---------- -Conversion to a larger representation (up-sizing) can always be done uniquely, however, conversion to a more compact representation (down-sizing) can be done in two ways. In particular: +Conversion to a larger representation (upsizing) can always be done uniquely, however, conversion to a more compact representation (downsizing) can be done in two ways. In particular: +---------+---------+-------------------+------------------------------+ | From | To | Function | Remarks | +=========+=========+===================+==============================+ | dofval | nodevec | asNode(...) | unique | +---------+---------+-------------------+------------------------------+ | dofval | elemvec | asElement(...) | unique | +---------+---------+-------------------+------------------------------+ | nodevec | elemvec | asElement(...) | unique | +---------+---------+-------------------+------------------------------+ | nodevec | dofval | asDofs(...) | overwrites reoccurring items | +---------+---------+-------------------+------------------------------+ | elemvec | dofval | asDofs(...) | overwrites reoccurring items | +---------+---------+-------------------+------------------------------+ | elemvec | nodevec | asNode(...) | overwrites reoccurring items | +---------+---------+-------------------+------------------------------+ | nodevec | dofval | assembleDofs(...) | adds reoccurring items | +---------+---------+-------------------+------------------------------+ | elemvec | dofval | assembleDofs(...) | adds reoccurring items | +---------+---------+-------------------+------------------------------+ | elemvec | nodevec | assembleNode(...) | adds reoccurring items | +---------+---------+-------------------+------------------------------+ diff --git a/docs/details/Element.rst b/docs/details/Element.rst index 5273490..00bbfd4 100644 --- a/docs/details/Element.rst +++ b/docs/details/Element.rst @@ -1,47 +1,28 @@ +.. _Element: ******* Element ******* | :download:`GooseFEM/Element.h <../../include/GooseFEM/Element.h>` | :download:`GooseFEM/Element.hpp <../../include/GooseFEM/Element.hpp>` -.. tip:: - - To take the gradients and integral with respect to updated coordinates (i.e. to do updated Lagrange), use the ".update_x(...)" method to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes. - Element::asElementVector ======================== Convert nodal vector "[nnode, ndim]" to nodal vector stored per element "[nelem, nne, ndim]". -.. todo:: - - Describe. - Element::assembleNodeVector =========================== Assemble nodal vector stored per element "[nelem, nne, ndim]" to nodal vector "[nnode, ndim]". -.. todo:: - - Describe. - Element::isSequential ===================== Check that DOFs leave no holes. -.. todo:: - - Describe. - Element::isDiagonal =================== -Check structure of the matrices stored per element "[nelem, nne*ndim, nne*ndim]". - -.. todo:: - - Describe. +Check structure of the matrices stored per element "[nelem, nne*ndim, nne*ndim]" to be diagonal (check that all off-diagonal entries have a value lower than a small numerical tolerance). diff --git a/docs/details/ElementHex8.rst b/docs/details/ElementHex8.rst index 5d71404..68d102f 100644 --- a/docs/details/ElementHex8.rst +++ b/docs/details/ElementHex8.rst @@ -1,35 +1,188 @@ +.. _ElementHex8: ************* Element::Hex8 ************* | :download:`GooseFEM/ElementHex8.h <../../include/GooseFEM/ElementHex8.h>` | :download:`GooseFEM/ElementHex8.hpp <../../include/GooseFEM/ElementHex8.hpp>` Element::Hex8::Quadrature -========================== +========================= -Element definition. +Element definition to numerically interpolate and integrate. -.. todo:: +.. note:: - Describe. + This function evaluates the shape function gradients upon construction, they are not recomputed upon evaluation. To evaluate them with respect to updated coordinates (e.g. to do updated Lagrange), use ".update_x(...)" to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes. + +.. note:: + + By default integration is done using Gauss points. To use a different scheme one has to supply the position (in isoparametric coordinates) and weight of the integration points (their number is inferred from the input). + +.. note:: + + Most functions take the output as the last input-argument, as to write directly to a pre-allocated array, avoiding their re-allocation. All these functions have a wrapper that does the allocation for you (and thus returns the output rather than taking it as input). All function of this kind are indicated here with a * + +Element::Hex8::Quadrature::update_x(...) +---------------------------------------- + +Update the nodal coordinates (elemvec: [nelem, nne, ndim]). + +Element::Hex8::Quadrature::nelem() +---------------------------------- + +Number of elements. + +Element::Hex8::Quadrature::nne() +-------------------------------- + +Number of nodes per element. + +Element::Hex8::Quadrature::ndim() +--------------------------------- + +Number of dimensions. + +Element::Hex8::Quadrature::nip() +-------------------------------- + +Number of integration points. + +Element::Hex8::Quadrature::GradN() +---------------------------------- + +(Current) Shape function gradient (w.r.t. real coordinates): [nelem, nip, nne, ndim] + +Element::Hex8::Quadrature::dV(...)* +----------------------------------- + +(Current) Volume of each integration point (qscalar: [nelem, nip]). An overload is available to get the same result as a tensor per integration point (qtensor: [nelem, nip, tdim, tdim]) with all tensor-components having the same value. + +Element::Hex8::Quadrature::gradN_vector(...)* +--------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \vec{\nabla} N_m \vec{u}_m + +or in index notation + +.. math:: + + \varepsilon_{ij} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Hex8::Quadrature::gradN_vector_T(...)* +----------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \left( \vec{\nabla} N_m \vec{u}_m \right)^T + +or in index notation + +.. math:: + + \varepsilon_{ji} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Hex8::Quadrature::symGradN_vector(...)* +------------------------------------------------ + +Implementation of + +.. math:: + + \bm{\varepsilon} = \tfrac{1}{2} \left( + \vec{\nabla} N_m \vec{u}_m + \left( \vec{\nabla} N_m \vec{u}_m \right)^T + \right) + +Element::Hex8::Quadrature::int_N_scalar_NT_dV(...)* +--------------------------------------------------- + +Implementation of + +.. math:: + + M_{mn} + = + \int\limits_{\Omega^h} N_m \; \rho \; N_n \; \mathrm{d}\Omega^h + \equiv + \sum\limits_q \; N_m \; \rho \; N_n \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. This implies that all dimensions are the same. + +Element::Hex8::Quadrature::int_gradN_dot_tensor2_dV(...)* +--------------------------------------------------------- + +Implementation of: + +.. math:: + + \vec{f}_m = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \bm{\sigma} \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + f_{mj} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} \sigma_{ij} \; \delta\Omega_q + +Element::Hex8::Quadrature::int_gradN_dot_tensor4_dot_gradNT_dV(...)* +-------------------------------------------------------------------- + +Implementation of: + +.. math:: + + \bm{K}_{mn} = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \mathbb{C} \cdot \vec{\nabla} N_n \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + K_{m+id, n+kd} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} C_{ijkl} \frac{\partial N_n}{\partial x_l} \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. Element::Hex8::Gauss -===================== +==================== -Integration definition. +Integration points according to exact integration using Gauss points. -.. todo:: +Element::Hex8::Gauss::nip() +--------------------------- - Describe. +Returns the number of integration points. + +Element::Hex8::Gauss::xi() +-------------------------- + +Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3). + +Element::Hex8::Gauss::w() +------------------------- + +Returns the weights of the integration points [nip]. Element::Hex8::Nodal -===================== +==================== + +Integration points that coincide with the nodes (equally weight). This scheme can for example be used to obtain a diagonal mass matrix. + +Element::Hex8::Nodal::nip() +--------------------------- + +Returns the number of integration points. -Integration definition. +Element::Hex8::Nodal::xi() +-------------------------- -.. todo:: +Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3). - Describe. +Element::Hex8::Nodal::w() +------------------------- +Returns the weights of the integration points [nip]. diff --git a/docs/details/ElementQuad4.rst b/docs/details/ElementQuad4.rst index 2a73ccb..0b705c1 100644 --- a/docs/details/ElementQuad4.rst +++ b/docs/details/ElementQuad4.rst @@ -1,66 +1,492 @@ +.. _ElementQuad4: ************** Element::Quad4 ************** | :download:`GooseFEM/ElementQuad4.h <../../include/GooseFEM/ElementQuad4.h>` | :download:`GooseFEM/ElementQuad4.hpp <../../include/GooseFEM/ElementQuad4.hpp>` | :download:`GooseFEM/ElementQuad4Planar.h <../../include/GooseFEM/ElementQuad4Planar.h>` | :download:`GooseFEM/ElementQuad4Planar.hpp <../../include/GooseFEM/ElementQuad4Planar.hpp>` | :download:`GooseFEM/ElementQuad4Axisymmetric.h <../../include/GooseFEM/ElementQuad4Axisymmetric.h>` | :download:`GooseFEM/ElementQuad4Axisymmetric.hpp <../../include/GooseFEM/ElementQuad4Axisymmetric.hpp>` Element::Quad4::Quadrature ========================== -Element definition. +Element definition to numerically interpolate and integrate. -.. todo:: +.. note:: - Describe. + This function evaluates the shape function gradients upon construction, they are not recomputed upon evaluation. To evaluate them with respect to updated coordinates (e.g. to do updated Lagrange), use ".update_x(...)" to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes. -Element::Quad4::QuadratureAxisymmetric -====================================== +.. note:: + + By default integration is done using Gauss points. To use a different scheme one has to supply the position (in isoparametric coordinates) and weight of the integration points (their number is inferred from the input). + +.. note:: + + Most functions take the output as the last input-argument, as to write directly to a pre-allocated array, avoiding their re-allocation. All these functions have a wrapper that does the allocation for you (and thus returns the output rather than taking it as input). All function of this kind are indicated here with a * + +Element::Quad4::Quadrature::update_x(...) +----------------------------------------- + +Update the nodal coordinates (elemvec: [nelem, nne, ndim]). + +Element::Quad4::Quadrature::nelem() +----------------------------------- + +Number of elements. + +Element::Quad4::Quadrature::nne() +--------------------------------- + +Number of nodes per element. + +Element::Quad4::Quadrature::ndim() +---------------------------------- + +Number of dimensions. + +Element::Quad4::Quadrature::nip() +--------------------------------- + +Number of integration points. + +Element::Quad4::Quadrature::GradN() +----------------------------------- + +(Current) Shape function gradient (w.r.t. real coordinates): [nelem, nip, nne, ndim] + +Element::Quad4::Quadrature::dV(...)* +------------------------------------ + +(Current) Volume of each integration point (qscalar: [nelem, nip]). An overload is available to get the same result as a tensor per integration point (qtensor: [nelem, nip, tdim, tdim]) with all tensor-components having the same value. + +Element::Quad4::Quadrature::gradN_vector(...)* +---------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \vec{\nabla} N_m \vec{u}_m + +or in index notation + +.. math:: + + \varepsilon_{ij} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::Quadrature::gradN_vector_T(...)* +------------------------------------------------ + +Implementation of + +.. math:: + + \bm{\varepsilon} = \left( \vec{\nabla} N_m \vec{u}_m \right)^T + +or in index notation + +.. math:: + + \varepsilon_{ji} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::Quadrature::symGradN_vector(...)* +------------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \tfrac{1}{2} \left( + \vec{\nabla} N_m \vec{u}_m + \left( \vec{\nabla} N_m \vec{u}_m \right)^T + \right) + +Element::Quad4::Quadrature::int_N_scalar_NT_dV(...)* +---------------------------------------------------- + +Implementation of + +.. math:: + + M_{mn} + = + \int\limits_{\Omega^h} N_m \; \rho \; N_n \; \mathrm{d}\Omega^h + \equiv + \sum\limits_q \; N_m \; \rho \; N_n \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. This implies that all dimensions are the same. + +Element::Quad4::Quadrature::int_gradN_dot_tensor2_dV(...)* +---------------------------------------------------------- + +Implementation of: + +.. math:: + + \vec{f}_m = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \bm{\sigma} \; \mathrm{d}\Omega^h -Element definition. +or in index notation -.. todo:: +.. math:: - Describe. + f_{mj} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} \sigma_{ij} \; \delta\Omega_q +Element::Quad4::Quadrature::int_gradN_dot_tensor4_dot_gradNT_dV(...)* +--------------------------------------------------------------------- + +Implementation of: + +.. math:: + + \bm{K}_{mn} = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \mathbb{C} \cdot \vec{\nabla} N_n \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + K_{m+id, n+kd} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} C_{ijkl} \frac{\partial N_n}{\partial x_l} \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. Element::Quad4::QuadraturePlanar ================================ -Element definition. +Element definition to numerically interpolate and integrate under a planar assumption. This implies that all the tensors are 3-d, but that the third dimension is ignored by all functions (although for output these components are zero-initialised). + +.. note:: + + This function evaluates the shape function gradients upon construction, they are not recomputed upon evaluation. To evaluate them with respect to updated coordinates (e.g. to do updated Lagrange), use ".update_x(...)" to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes. + +.. note:: + + By default integration is done using Gauss points. To use a different scheme one has to supply the position (in isoparametric coordinates) and weight of the integration points (their number is inferred from the input). + +.. note:: + + Most functions take the output as the last input-argument, as to write directly to a pre-allocated array, avoiding their re-allocation. All these functions have a wrapper that does the allocation for you (and thus returns the output rather than taking it as input). All function of this kind are indicated here with a * + +Element::Quad4::QuadraturePlanar::update_x(...) +----------------------------------------------- + +Update the nodal coordinates (elemvec: [nelem, nne, ndim]). + +Element::Quad4::QuadraturePlanar::nelem() +----------------------------------------- + +Number of elements. + +Element::Quad4::QuadraturePlanar::nne() +--------------------------------------- + +Number of nodes per element. + +Element::Quad4::QuadraturePlanar::ndim() +---------------------------------------- + +Number of dimensions. + +Element::Quad4::QuadraturePlanar::nip() +--------------------------------------- + +Number of integration points. + +Element::Quad4::QuadraturePlanar::GradN() +----------------------------------------- + +(Current) Shape function gradient (w.r.t. real coordinates): [nelem, nip, nne, ndim] + +Element::Quad4::QuadraturePlanar::dV(...)* +------------------------------------------ + +(Current) Volume of each integration point (qscalar: [nelem, nip]). An overload is available to get the same result as a tensor per integration point (qtensor: [nelem, nip, tdim, tdim]) with all tensor-components having the same value. + +Element::Quad4::QuadraturePlanar::gradN_vector(...)* +---------------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \vec{\nabla} N_m \vec{u}_m + +or in index notation + +.. math:: + + \varepsilon_{ij} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::QuadraturePlanar::gradN_vector_T(...)* +------------------------------------------------------ + +Implementation of + +.. math:: + + \bm{\varepsilon} = \left( \vec{\nabla} N_m \vec{u}_m \right)^T + +or in index notation + +.. math:: + + \varepsilon_{ji} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::QuadraturePlanar::symGradN_vector(...)* +------------------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \tfrac{1}{2} \left( + \vec{\nabla} N_m \vec{u}_m + \left( \vec{\nabla} N_m \vec{u}_m \right)^T + \right) + +Element::Quad4::QuadraturePlanar::int_N_scalar_NT_dV(...)* +---------------------------------------------------------- -.. todo:: +Implementation of - Describe. +.. math:: + + M_{mn} + = + \int\limits_{\Omega^h} N_m \; \rho \; N_n \; \mathrm{d}\Omega^h + \equiv + \sum\limits_q \; N_m \; \rho \; N_n \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. This implies that all dimensions are the same. + +Element::Quad4::QuadraturePlanar::int_gradN_dot_tensor2_dV(...)* +---------------------------------------------------------------- + +Implementation of: + +.. math:: + + \vec{f}_m = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \bm{\sigma} \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + f_{mj} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} \sigma_{ij} \; \delta\Omega_q + +Element::Quad4::QuadraturePlanar::int_gradN_dot_tensor4_dot_gradNT_dV(...)* +--------------------------------------------------------------------------- + +Implementation of: + +.. math:: + + \bm{K}_{mn} = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \mathbb{C} \cdot \vec{\nabla} N_n \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + K_{m+id, n+kd} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} C_{ijkl} \frac{\partial N_n}{\partial x_l} \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. + +Element::Quad4::QuadratureAxisymmetric +====================================== + +Element definition to numerically interpolate and integrate in an axisymmetric cylindrical coordinate system. This implies that all tensors (stress, strain, stiffness, ...) are fully three dimensional, but the discretisation is two-dimensional. + +.. note:: + + This function evaluates the shape function gradients upon construction, they are not recomputed upon evaluation. To evaluate them with respect to updated coordinates (e.g. to do updated Lagrange), use ".update_x(...)" to update the nodal coordinates and re-evaluate the shape function gradients and integration volumes. + +.. note:: + + By default integration is done using Gauss points. To use a different scheme one has to supply the position (in isoparametric coordinates) and weight of the integration points (their number is inferred from the input). + +.. note:: + + Most functions take the output as the last input-argument, as to write directly to a pre-allocated array, avoiding their re-allocation. All these functions have a wrapper that does the allocation for you (and thus returns the output rather than taking it as input). All function of this kind are indicated here with a * + +Element::Quad4::QuadratureAxisymmetric::update_x(...) +----------------------------------------------------- + +Update the nodal coordinates (elemvec: [nelem, nne, ndim]). + +Element::Quad4::QuadratureAxisymmetric::nelem() +----------------------------------------------- + +Number of elements. + +Element::Quad4::QuadratureAxisymmetric::nne() +--------------------------------------------- + +Number of nodes per element. + +Element::Quad4::QuadratureAxisymmetric::ndim() +---------------------------------------------- + +Number of dimensions. + +Element::Quad4::QuadratureAxisymmetric::nip() +--------------------------------------------- + +Number of integration points. + +Element::Quad4::QuadratureAxisymmetric::GradN() +----------------------------------------------- + +(Current) Shape function gradient (w.r.t. real coordinates): [nelem, nip, nne, ndim] + +Element::Quad4::QuadratureAxisymmetric::dV(...)* +------------------------------------------------ + +(Current) Volume of each integration point (qscalar: [nelem, nip]). An overload is available to get the same result as a tensor per integration point (qtensor: [nelem, nip, tdim, tdim]) with all tensor-components having the same value. + +Element::Quad4::QuadratureAxisymmetric::gradN_vector(...)* +---------------------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \vec{\nabla} N_m \vec{u}_m + +or in index notation + +.. math:: + + \varepsilon_{ij} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::QuadratureAxisymmetric::gradN_vector_T(...)* +------------------------------------------------------------ + +Implementation of + +.. math:: + + \bm{\varepsilon} = \left( \vec{\nabla} N_m \vec{u}_m \right)^T + +or in index notation + +.. math:: + + \varepsilon_{ji} = \frac{\partial N_m}{\partial x_i} u_{mj} + +Element::Quad4::QuadratureAxisymmetric::symGradN_vector(...)* +------------------------------------------------------------- + +Implementation of + +.. math:: + + \bm{\varepsilon} = \tfrac{1}{2} \left( + \vec{\nabla} N_m \vec{u}_m + \left( \vec{\nabla} N_m \vec{u}_m \right)^T + \right) + +Element::Quad4::QuadratureAxisymmetric::int_N_scalar_NT_dV(...)* +---------------------------------------------------------------- + +Implementation of + +.. math:: + + M_{mn} + = + \int\limits_{\Omega^h} N_m \; \rho \; N_n \; \mathrm{d}\Omega^h + \equiv + \sum\limits_q \; N_m \; \rho \; N_n \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. This implies that all dimensions are the same. + +Element::Quad4::QuadratureAxisymmetric::int_gradN_dot_tensor2_dV(...)* +---------------------------------------------------------------------- + +Implementation of: + +.. math:: + + \vec{f}_m = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \bm{\sigma} \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + f_{mj} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} \sigma_{ij} \; \delta\Omega_q + +Element::Quad4::QuadratureAxisymmetric::int_gradN_dot_tensor4_dot_gradNT_dV(...)* +--------------------------------------------------------------------------------- + +Implementation of: + +.. math:: + + \bm{K}_{mn} = \int\limits_{\Omega^h} ( \vec{\nabla} N_m ) \cdot \mathbb{C} \cdot \vec{\nabla} N_n \; \mathrm{d}\Omega^h + +or in index notation + +.. math:: + + K_{m+id, n+kd} = \sum\limits_q \; \frac{\partial N_m}{\partial x_i} C_{ijkl} \frac{\partial N_n}{\partial x_l} \; \delta\Omega_q + +Note that the output is an "elemmat", which has shape [nelem, nne*ndim, nne*ndim]. Element::Quad4::Gauss ===================== -Integration definition. +Integration points according to exact integration using Gauss points. + +Element::Quad4::Gauss::nip() +---------------------------- -.. todo:: +Returns the number of integration points. - Describe. +Element::Quad4::Gauss::xi() +--------------------------- + +Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3). + +Element::Quad4::Gauss::w() +-------------------------- + +Returns the weights of the integration points [nip]. Element::Quad4::Nodal ===================== -Integration definition. +Integration points that coincide with the nodes (equally weight). This scheme can for example be used to obtain a diagonal mass matrix. + +Element::Quad4::Nodal::nip() +---------------------------- + +Returns the number of integration points. + +Element::Quad4::Nodal::xi() +--------------------------- -.. todo:: +Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3). - Describe. +Element::Quad4::Nodal::w() +-------------------------- + +Returns the weights of the integration points [nip]. Element::Quad4::MidPoint ======================== -Integration definition. +Single integration point in the middle of the element. + +Element::Quad4::MidPoint::nip() +------------------------------- + +Returns the number of integration points. + +Element::Quad4::MidPoint::xi() +------------------------------ + +Returns the position of the integration points in isoparametric coordinates [nip, ndim] (with ndim = 3). -.. todo:: +Element::Quad4::MidPoint::w() +----------------------------- - Describe. +Returns the weights of the integration points [nip]. diff --git a/docs/details/Iterate.rst b/docs/details/Iterate.rst index de2cc4f..e44af6c 100644 --- a/docs/details/Iterate.rst +++ b/docs/details/Iterate.rst @@ -1,12 +1,23 @@ +.. _Iterate: + ******* Iterate ******* +| :download:`GooseFEM/Iterate.h <../../include/GooseFEM/Iterate.h>` +| :download:`GooseFEM/Iterate.hpp <../../include/GooseFEM/Iterate.hpp>` + Iterate::StopList ================= -Convergence check. +Convergence check to check that a residual is smaller than a certain value of a certain number of consecutive steps. The class is constructed with the number of consecutive to enforce the residual. + +Iterate::StopList::reset(...) +----------------------------- + +Reset all residuals to infinity. -.. todo:: +Iterate::StopList::stop(...) +---------------------------- - Complete. +Append the list with residuals, return "true" if all residuals are below the tolerance (argument). diff --git a/docs/details/Matrix.rst b/docs/details/Matrix.rst index 469653b..08ecd53 100644 --- a/docs/details/Matrix.rst +++ b/docs/details/Matrix.rst @@ -1,108 +1,474 @@ +.. _Matrix: + ****** Matrix ****** -.. _sparse: +| :download:`GooseFEM/Matrix.h <../../include/GooseFEM/Matrix.h>` +| :download:`GooseFEM/Matrix.hpp <../../include/GooseFEM/Matrix.hpp>` +| :download:`GooseFEM/MatrixPartitioned.h <../../include/GooseFEM/MatrixPartitioned.h>` +| :download:`GooseFEM/MatrixPartitioned.hpp <../../include/GooseFEM/MatrixPartitioned.hpp>` +| :download:`GooseFEM/MatrixPartitionedTyings.h <../../include/GooseFEM/MatrixPartitionedTyings.h>` +| :download:`GooseFEM/MatrixPartitionedTyings.hpp <../../include/GooseFEM/MatrixPartitionedTyings.hpp>` +| :download:`GooseFEM/MatrixDiagonal.h <../../include/GooseFEM/MatrixDiagonal.h>` +| :download:`GooseFEM/MatrixDiagonal.hpp <../../include/GooseFEM/MatrixDiagonal.hpp>` +| :download:`GooseFEM/MatrixDiagonalPartitioned.h <../../include/GooseFEM/MatrixDiagonalPartitioned.h>` +| :download:`GooseFEM/MatrixDiagonalPartitioned.hpp <../../include/GooseFEM/MatrixDiagonalPartitioned.hpp>` Matrix ====== Matrix definition. -.. todo:: +.. note:: + + A solver has to be chosen, see :ref:`linear_solver`. + +Matrix::nelem() +--------------- + +Return the number of elements. + +Matrix::nne() +------------- + +Return the number of nodes-per-element. + +Matrix::nnode() +--------------- + +Return the number of nodes. + +Matrix::ndim() +-------------- - Complete. +Return the number of dimensions. + +Matrix::ndof() +-------------- + +Return the number of DOFs. + +Matrix::dofs() +-------------- + +Return the DOF-numbers per node [nnode, ndim]. + +Matrix::assemble(...) +--------------------- + +Assemble matrix from element matrices stored as "elemmat". + +Matrix::solve(...) +------------------ + +Solve linear system. MatrixPartitioned ================= Partitioned matrix definition. -.. todo:: +.. note:: + + A solver has to be chosen, see :ref:`linear_solver`. + +MatrixPartitioned::nelem() +-------------------------- + +Return the number of elements. + +MatrixPartitioned::nne() +------------------------ + +Return the number of nodes-per-element. + +MatrixPartitioned::nnode() +-------------------------- + +Return the number of nodes. + +MatrixPartitioned::ndim() +------------------------- + +Return the number of dimensions. + +MatrixPartitioned::ndof() +------------------------- + +Return the number of DOFs. + +MatrixPartitioned::nnu() +------------------------ + +Return the number of unknown DOFs. + +MatrixPartitioned::nnp() +------------------------ + +Return the number of prescribed DOFs. + +MatrixPartitioned::dofs() +------------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +MatrixPartitioned::iiu() +------------------------ + +Return the unknown DOF-numbers per node [nnu]. - Complete. +MatrixPartitioned::iip() +------------------------ + +Return the prescribed DOF-numbers per node [nnp]. + +MatrixPartitioned::assemble(...) +-------------------------------- + +Assemble matrix from element matrices stored as "elemmat". + +MatrixPartitioned::solve(...) +----------------------------- + +Solve linear system. + +MatrixPartitioned::solve_u(...) +------------------------------- + +Solve linear system. + +MatrixPartitioned::reaction(...) +-------------------------------- + +Compute reaction forces (part of "b" that corresponds to "x_p"). + +MatrixPartitioned::reaction_p(...) +---------------------------------- + +Compute reaction forces (part of "b" that corresponds to "x_p"). MatrixPartitionedTyings ======================= Partitioned matrix definition with nodal tyings. -.. todo:: +.. note:: + + A solver has to be chosen, see :ref:`linear_solver`. + +MatrixPartitionedTyings::nelem() +-------------------------------- + +Return the number of elements. + +MatrixPartitionedTyings::nne() +------------------------------ + +Return the number of nodes-per-element. + +MatrixPartitionedTyings::nnode() +-------------------------------- + +Return the number of nodes. + +MatrixPartitionedTyings::ndim() +------------------------------- + +Return the number of dimensions. + +MatrixPartitionedTyings::ndof() +------------------------------- + +Return the number of DOFs. + +MatrixPartitionedTyings::nnu() +------------------------------ + +Return the number of unknown DOFs. + +MatrixPartitionedTyings::nnp() +------------------------------ + +Return the number of prescribed DOFs. + +MatrixPartitionedTyings::nni() +------------------------------ + +Return the number of independent DOFs. + +MatrixPartitionedTyings::nnd() +------------------------------ + +Return the number of dependent DOFs. + +MatrixPartitionedTyings::dofs() +------------------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +MatrixPartitionedTyings::iiu() +------------------------------ + +Return the unknown DOF-numbers per node [nnu]. + +MatrixPartitionedTyings::iip() +------------------------------ + +Return the prescribed DOF-numbers per node [nnp]. - Complete. +MatrixPartitionedTyings::iii() +------------------------------ + +Return the independent DOF-numbers per node [nni]. + +MatrixPartitionedTyings::iid() +------------------------------ + +Return the dependent DOF-numbers per node [nnd]. + +MatrixPartitionedTyings::assemble(...) +-------------------------------------- + +Assemble matrix from element matrices stored as "elemmat". + +MatrixPartitionedTyings::solve(...) +----------------------------------- + +Solve linear system. + +MatrixPartitionedTyings::solve_u(...) +------------------------------------- + +Solve linear system. MatrixDiagonal ============== Diagonal matrix definition. -.. todo:: +MatrixDiagonal::nelem() +----------------------- + +Return the number of elements. + +MatrixDiagonal::nne() +--------------------- + +Return the number of nodes-per-element. + +MatrixDiagonal::nnode() +----------------------- + +Return the number of nodes. + +MatrixDiagonal::ndim() +---------------------- + +Return the number of dimensions. + +MatrixDiagonal::ndof() +---------------------- + +Return the number of DOFs. - Complete. +MatrixDiagonal::dofs() +---------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +MatrixDiagonal::assemble(...) +----------------------------- + +Assemble matrix from element matrices stored as "elemmat". + +MatrixDiagonal::dot(...) +------------------------ + +Dot-product: + +.. math:: + + b_i = A_{ij} x_j + +MatrixDiagonal::solve(...) +-------------------------- + +Solve linear system. + +MatrixDiagonal::AsDiagonal(...) +------------------------------- + +Return matrix as diagonal matrix (column) MatrixDiagonalPartitioned ========================= Diagonal and partitioned matrix definition. -.. todo:: +MatrixDiagonalPartitioned::nelem() +---------------------------------- + +Return the number of elements. + +MatrixDiagonalPartitioned::nne() +-------------------------------- + +Return the number of nodes-per-element. + +MatrixDiagonalPartitioned::nnode() +---------------------------------- + +Return the number of nodes. + +MatrixDiagonalPartitioned::ndim() +--------------------------------- + +Return the number of dimensions. + +MatrixDiagonalPartitioned::ndof() +--------------------------------- + +Return the number of DOFs. + +MatrixDiagonalPartitioned::nnu() +-------------------------------- + +Return the number of unknown DOFs. + +MatrixDiagonalPartitioned::nnp() +-------------------------------- + +Return the number of prescribed DOFs. + +MatrixDiagonalPartitioned::dofs() +--------------------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +MatrixDiagonalPartitioned::iiu() +-------------------------------- + +Return the unknown DOF-numbers per node [nnu]. + +MatrixDiagonalPartitioned::iip() +-------------------------------- + +Return the prescribed DOF-numbers per node [nnp]. + +MatrixDiagonalPartitioned::assemble(...) +---------------------------------------- + +Assemble matrix from element matrices stored as "elemmat". + +MatrixDiagonalPartitioned::dot(...) +----------------------------------- + +Dot-product: + +.. math:: + + b_i = A_{ij} x_j + +MatrixDiagonalPartitioned::dot_u(...) +------------------------------------- + +Dot-product: + +.. math:: + + b_i = A_{ij} x_j + +MatrixDiagonalPartitioned::dot_p(...) +------------------------------------- + +Dot-product: + +.. math:: + + b_i = A_{ij} x_j + +MatrixDiagonalPartitioned::solve(...) +------------------------------------- + +Solve linear system. + +MatrixDiagonalPartitioned::solve_u(...) +--------------------------------------- + +Solve linear system. + +MatrixDiagonalPartitioned::reaction(...) +---------------------------------------- + +Compute reaction forces (part of "b" that corresponds to "x_p"). + +MatrixDiagonalPartitioned::reaction_p(...) +------------------------------------------ + +Compute reaction forces (part of "b" that corresponds to "x_p"). + +MatrixDiagonalPartitioned::AsDiagonal(...) +------------------------------------------ + +Return matrix as diagonal matrix (column) - Complete. +.. _linear_solver: Linear solver ============= The classes ``GooseFEM:::MatrixPartitioned`` and ``GooseFEM:::MatrixPartitionedTyings`` make use of a library to solver the linear system (stored as a sparse matrix). In particular the Eigen library and its plug-ins are used. To use the library's default solver: .. code-block:: cpp #include <Eigen/Eigen> #include <GooseFEM/GooseFEM.h> int main() { ... GooseFEM::MatrixPartitioned<> K(...); ... return 0; } The default solver can, however, be quite slow. Therefore Eigen has quite some `plug-ins <http://eigen.tuxfamily.org/dox/group__TopicSparseSystems.html>`_ for the solver. GooseFEM allows the use of Eigen's Sparse Solver Concept to use such plug-ins. For example, to use SuiteSparse: .. code-block:: cpp #include <Eigen/Eigen> #include <Eigen/CholmodSupport> #include <GooseFEM/GooseFEM.h> int main() { ... GooseFEM::MatrixPartitioned<Eigen::CholmodSupernodalLLT<Eigen::SparseMatrix<double>>> K(...); ... return 0; } .. todo:: 1. `Download SuiteSparse <http://faculty.cse.tamu.edu/davis/suitesparse.html>`_. 2. Extract the downloaded ``SuiteSparse-X.X.X.tar.gz```. 3. Compile the library by: .. code-block:: bash cd /path/to/SuiteSparse make .. code-block:: bash clang++ -I/path/to/include/eigen3 -I/path/to/lapack/include -L/path/to/lapack/lib -I/path/to/openblas/include -L/path/to/openblas/lib -lopenblas -I/path/to/SuiteSparse/include -L/path/to/SuiteSparse/lib -lumfpack -lamd -lcholmod -lsuitesparseconfig -lm -std=c++14 -Wall -Wextra -pedantic -march=native -O3 -o example example.cpp diff --git a/docs/details/Mesh.rst b/docs/details/Mesh.rst index eeb2954..6d8450f 100644 --- a/docs/details/Mesh.rst +++ b/docs/details/Mesh.rst @@ -1,100 +1,101 @@ +.. _Mesh: **** Mesh **** | :download:`GooseFEM/Mesh.h <../../include/GooseFEM/Mesh.h>` | :download:`GooseFEM/Mesh.hpp <../../include/GooseFEM/Mesh.hpp>` Mesh::dofs ---------- Get a sequential list of DOF-numbers for each vector-component of each node. For example for 3 nodes in 2 dimensions the output is .. math:: \begin{bmatrix} 0 & 1 \\ 2 & 3 \\ 4 & 5 \end{bmatrix} Mesh::Renumber -------------- Renumber (DOF) indices to lowest possible indices. For example: .. math:: \begin{bmatrix} 0 & 1 \\ 5 & 4 \end{bmatrix} is renumbered to .. math:: \begin{bmatrix} 0 & 1 \\ 3 & 2 \end{bmatrix} Or, in pseudo-code, the result of this function is that: .. code-block:: python dofs = renumber(dofs) sort(unique(dofs[:])) == range(max(dofs+1)) .. tip:: One can use the wrapper function "GooseFEM::reorder" or the class "Mesh::Reorder" to get more advanced features. Mesh::Reorder ------------- Reorder (DOF) indices such to the lowest possible indices, such that some items are at the beginning or the end. For example: .. math:: \mathrm{dofs} = \begin{bmatrix} 0 & 1 \\ 2 & 3 \\ 4 & 5 \end{bmatrix} with .. math:: \mathrm{idx} = \begin{bmatrix} 0 & 1 \end{bmatrix} Implies that ``dofs`` is renumbered such that 0 becomes the one-before-last index (:math:`0 \rightarrow 4`), and the 1 becomes the last index (:math:`1 \rightarrow 5`). The remaining items are renumbered to the lowest index while keeping the same order. The result: .. math:: \begin{bmatrix} 4 & 5 \\ 0 & 1 \\ 2 & 3 \end{bmatrix} .. tip:: One can use the wrapper function "GooseFEM::reorder" or the class "Mesh::Reorder" to get more advanced features. Mesh::coordination ------------------ Get the number of elements connected to each node. Mesh::elem2node --------------- Get the element numbers (columns) that are connected to each node (rows). diff --git a/docs/details/MeshHex8.rst b/docs/details/MeshHex8.rst index 7f124df..f390cad 100644 --- a/docs/details/MeshHex8.rst +++ b/docs/details/MeshHex8.rst @@ -1,69 +1,216 @@ +.. _MeshHex8: ********** Mesh::Hex8 ********** | :download:`GooseFEM/MeshHex8.h <../../include/GooseFEM/MeshHex8.h>` | :download:`GooseFEM/MeshHex8.hpp <../../include/GooseFEM/MeshHex8.hpp>` Naming convention ================= The following naming convention is used: * **Front**: all nodes whose coordinates :math:`0 \leq x \leq L_x`, :math:`0 \leq y \leq L_y`, :math:`z = 0`. * **Back**: all nodes whose coordinates :math:`0 \leq x \leq L_x`, :math:`0 \leq y \leq L_y`, :math:`z = L_z`. * **Bottom**: all nodes whose coordinates :math:`0 \leq x \leq L_x`, :math:`0 \leq z \leq L_z`, :math:`y = 0`. * **Top**: all nodes whose coordinates :math:`0 \leq x \leq L_x`, :math:`0 \leq z \leq L_z`, :math:`y = L_y`. * **Left**: all nodes whose coordinates :math:`0 \leq y \leq L_y`, :math:`0 \leq z \leq L_z`, :math:`x = 0`. * **Right**: all nodes whose coordinates :math:`0 \leq y \leq L_y`, :math:`0 \leq z \leq L_z`, :math:`x = L_x`. The edges and corners follow from the intersections, i.e. * **FrontBottomEdge**: all nodes whose coordinates :math:`0 \leq x \leq L_x`, :math:`y = 0`, :math:`z = 0`. * ... * **FrontBottomLeftCorner**: the node whose coordinate :math:`x = 0`, :math:`y = 0`, :math:`z = 0`. * ... .. image:: figures/MeshHex8/naming_convention.svg :width: 350px :align: center Mesh::Hex8::Regular =================== Regular mesh. -.. todo:: +.. seealso:: - Describe, illustrate + | :download:`Python/ParaView - example <figures/MeshHex8/Regular/paraview.py>` + | :download:`Python/ParaView - nodesets <figures/MeshHex8/Regular/paraview_nodesets.py>` -.. todo:: +Mesh::Hex8::Regular::nelem() +---------------------------- - More methods and classes +Return number of elements. -.. todo:: +Mesh::Hex8::Regular::nnode() +---------------------------- - figures/MeshHex8/Regular/example... +Return number of nodes. -.. todo:: +Mesh::Hex8::Regular::nne() +-------------------------- - figures/MeshHex8/Regular/nodes... +Return number of nodes-per-element (= 3). +Mesh::Hex8::Regular::ndim() +--------------------------- + +Return number of dimensions (= 2). + +Mesh::Hex8::Regular::getElementType() +------------------------------------- + +Return element-type. For example used in the :ref:`ParaView` module. + +Mesh::Hex8::Regular::coor() +--------------------------- + +Return nodal coordinates [nnode, ndim]. + +Mesh::Hex8::Regular::conn() +--------------------------- + +Return connectivity [nelem, nne]. + +Mesh::Hex8::Regular::nodesXXXEdge() +----------------------------------- + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge. + +Mesh::Hex8::Regular::nodesXXXOpenEdge() +--------------------------------------- + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge, excluding the corners. + +Mesh::Hex8::Regular::nodesXXXCorner() +------------------------------------- + +Node number of one of the corners (e.g. "BottomLeft"). + +Mesh::Hex8::Regular::nodesPeriodic() +------------------------------------ + +Periodic node pairs. Each row contains on pair of (independent, dependent) node numbers. The output shape is thus [n_pairs, 2]. + +Mesh::Hex8::Regular::nodesOrigin() +---------------------------------- + +Bottom-left node, used as reference for periodicity. + +Mesh::Hex8::Regular::dofs() +--------------------------- + +DOF-numbers for each component of each node (sequential). The output shape is thus [nnode, ndim]. + +Mesh::Hex8::Regular::dofsPeriodic() +----------------------------------- + +DOF-numbers for each component of each node, for the case that the periodicity if fully eliminated. The output shape is thus [nnode, ndim]. + +Mesh::Hex8::Regular::elementMatrix() +------------------------------------ + +Return element numbers as matrix [nely, nelx]. Mesh::Hex8::FineLayer ===================== -Mesh with a middle plane that is fine the middle, and becomes course away from this plane. +Mesh with a fine layer in the middle, and that becomes course away from this plane (see image below). Note coursening can only be done if the number of elements in x- and y-direction is dividable by 3, and that it is only optimal if the number of elements in x- and y-direction is a factor of 3. Note that the number of elements in the vertical direction is specified as the number of times the unit element (the number of times "h" the height should be), and that this number is only a target: the algorithm chooses in accordance with the applied coursing. + +.. seealso:: + + | :download:`Python/ParaView - example <figures/MeshHex8/FineLayer/paraview.py>` + | :download:`Python/ParaView - nodesets <figures/MeshHex8/FineLayer/paraview_nodesets.py>` + +Mesh::Hex8::FineLayer::nelem() +------------------------------ + +Return number of elements. + +Mesh::Hex8::FineLayer::nnode() +------------------------------ + +Return number of nodes. + +Mesh::Hex8::FineLayer::nne() +---------------------------- + +Return number of nodes-per-element (= 3). + +Mesh::Hex8::FineLayer::ndim() +----------------------------- + +Return number of dimensions (= 2). + +Mesh::Hex8::FineLayer::nelx() +----------------------------- + +Number of elements in horizontal direction (along the weak layer) (matches input). + +Mesh::Hex8::FineLayer::nely() +----------------------------- + +Actual number of elements unit elements in vertical direction (actual number of times "h" the mesh is heigh). + +Mesh::Hex8::FineLayer::h() +-------------------------- + +Unit edge size (matches input). + +Mesh::Hex8::FineLayer::getElementType() +--------------------------------------- + +Return element-type. For example used in the :ref:`ParaView` module. + +Mesh::Hex8::FineLayer::coor() +----------------------------- + +Return nodal coordinates [nnode, ndim]. + +Mesh::Hex8::FineLayer::conn() +----------------------------- + +Return connectivity [nelem, nne]. + +Mesh::Hex8::FineLayer::nodesXXXEdge() +------------------------------------- + +Node numbers along the "Bottom", "Top", "Left", "Right", "Front", or "Back" edge. + +Mesh::Hex8::FineLayer::nodesXXXOpenEdge() +----------------------------------------- + +Node numbers along the "Bottom", "Top", "Left", "Right", "Front", or "Back" edge, excluding the corners. + +Mesh::Hex8::FineLayer::nodesXXXCorner() +--------------------------------------- + +Node number of one of the corners (e.g. "FrontBottomLeft"). + +Mesh::Hex8::FineLayer::nodesPeriodic() +-------------------------------------- + +Periodic node pairs. Each row contains on pair of (independent, dependent) node numbers. The output shape is thus [n_pairs, 2]. + +Mesh::Hex8::FineLayer::nodesOrigin() +------------------------------------ + +Bottom-left node, used as reference for periodicity. -.. todo:: +Mesh::Hex8::FineLayer::dofs() +----------------------------- - Describe, illustrate +DOF-numbers for each component of each node (sequential). The output shape is thus [nnode, ndim]. -.. todo:: +Mesh::Hex8::FineLayer::dofsPeriodic() +------------------------------------- - figures/MeshHex8/FineLayer/example... +DOF-numbers for each component of each node, for the case that the periodicity if fully eliminated. The output shape is thus [nnode, ndim]. -.. todo:: +Mesh::Hex8::FineLayer::elementsMiddleLayer() +-------------------------------------------- - figures/MeshHex8/FineLayer/nodes... +Element numbers of the middle, fine, layer diff --git a/docs/details/MeshQuad4.rst b/docs/details/MeshQuad4.rst index a3e5989..0ab51eb 100644 --- a/docs/details/MeshQuad4.rst +++ b/docs/details/MeshQuad4.rst @@ -1,96 +1,289 @@ +.. _MeshQuad4: *********** Mesh::Quad4 *********** | :download:`GooseFEM/MeshQuad4.h <../../include/GooseFEM/MeshQuad4.h>` | :download:`GooseFEM/MeshQuad4.hpp <../../include/GooseFEM/MeshQuad4.hpp>` Naming convention ================= -.. todo:: - - Finish - .. image:: figures/MeshQuad4/naming_convention.svg :width: 350px :align: center Mesh::Quad4::Regular ==================== Regular mesh. -.. todo:: +.. seealso:: + + | :download:`Python - example <figures/MeshQuad4/Regular/example.py>` + | :download:`Python/ParaView - example <figures/MeshQuad4/Regular/paraview.py>` + | :download:`Python/ParaView - nodesets <figures/MeshQuad4/Regular/paraview_nodesets.py>` + +Mesh::Quad4::Regular::nelem() +----------------------------- + +Return number of elements. + +Mesh::Quad4::Regular::nnode() +----------------------------- + +Return number of nodes. + +Mesh::Quad4::Regular::nne() +--------------------------- + +Return number of nodes-per-element (= 3). + +Mesh::Quad4::Regular::ndim() +---------------------------- + +Return number of dimensions (= 2). + +Mesh::Quad4::Regular::getElementType() +-------------------------------------- + +Return element-type. For example used in the :ref:`ParaView` module. + +Mesh::Quad4::Regular::coor() +---------------------------- + +Return nodal coordinates [nnode, ndim]. + +Mesh::Quad4::Regular::conn() +---------------------------- + +Return connectivity [nelem, nne]. + +Mesh::Quad4::Regular::nodesXXXEdge() +------------------------------------ - Describe, illustrate +Node numbers along the "Bottom", "Top", "Left", or "Right" edge. -.. todo:: +Mesh::Quad4::Regular::nodesXXXOpenEdge() +---------------------------------------- - figures/MeshQuad4/Regular/example... +Node numbers along the "Bottom", "Top", "Left", or "Right" edge, excluding the corners. -.. todo:: +Mesh::Quad4::Regular::nodesXXXCorner() +-------------------------------------- - figures/MeshQuad4/Regular/example2... +Node number of one of the corners (e.g. "BottomLeft"). -.. todo:: +Mesh::Quad4::Regular::nodesPeriodic() +------------------------------------- - figures/MeshQuad4/Regular/nodes... +Periodic node pairs. Each row contains on pair of (independent, dependent) node numbers. The output shape is thus [n_pairs, 2]. + +Mesh::Quad4::Regular::nodesOrigin() +----------------------------------- + +Bottom-left node, used as reference for periodicity. + +Mesh::Quad4::Regular::dofs() +---------------------------- + +DOF-numbers for each component of each node (sequential). The output shape is thus [nnode, ndim]. + +Mesh::Quad4::Regular::dofsPeriodic() +------------------------------------ + +DOF-numbers for each component of each node, for the case that the periodicity if fully eliminated. The output shape is thus [nnode, ndim]. + +Mesh::Quad4::Regular::elementMatrix() +------------------------------------- + +Return element numbers as matrix [nely, nelx]. Mesh::Quad4::FineLayer ====================== -Mesh with a middle plane that is fine the middle, and becomes course away from this plane. +Mesh with a fine layer in the middle, and that becomes course away from this plane (see image below). Note coursening can only be done if the number of elements in horizontal direction is dividable by 3, and that it is only optimal if the number of elements in horizontal direction is a factor of 3. Note that the number of elements in the vertical direction is specified as the number of times the unit element (the number of times "h" the height should be), and that this number is only a target: the algorithm chooses in accordance with the applied coursing. + +.. image:: figures/MeshQuad4/FineLayer/behaviour.svg + :width: 800px + :align: center + +.. seealso:: + + | :download:`Python - example <figures/MeshQuad4/FineLayer/example.py>` + | :download:`Python/ParaView - example <figures/MeshQuad4/FineLayer/paraview.py>` + | :download:`Python/ParaView - nodesets <figures/MeshQuad4/FineLayer/paraview_nodesets.py>` + | :download:`Python - behaviour 'nx' <figures/MeshQuad4/FineLayer/behaviour.py>` + | :download:`Python - element numbers <figures/MeshQuad4/FineLayer/element-numbers.py>` + +Mesh::Quad4::FineLayer::nelem() +------------------------------- + +Return number of elements. + +Mesh::Quad4::FineLayer::nnode() +------------------------------- + +Return number of nodes. + +Mesh::Quad4::FineLayer::nne() +----------------------------- + +Return number of nodes-per-element (= 3). -.. todo:: +Mesh::Quad4::FineLayer::ndim() +------------------------------ - Describe, illustrate +Return number of dimensions (= 2). -.. todo:: +Mesh::Quad4::FineLayer::nelx() +------------------------------ - figures/MeshQuad4/FineLayer/behaviour... +Number of elements in horizontal direction (along the weak layer) (matches input). -.. todo:: +Mesh::Quad4::FineLayer::nely() +------------------------------ - figures/MeshQuad4/FineLayer/element-numbers... +Actual number of elements unit elements in vertical direction (actual number of times "h" the mesh is heigh). -.. todo:: +Mesh::Quad4::FineLayer::h() +--------------------------- - figures/MeshQuad4/FineLayer/example... +Unit edge size (matches input). -.. todo:: +Mesh::Quad4::FineLayer::getElementType() +---------------------------------------- - figures/MeshQuad4/FineLayer/example2... +Return element-type. For example used in the :ref:`ParaView` module. -.. todo:: +Mesh::Quad4::FineLayer::coor() +------------------------------ - figures/MeshQuad4/FineLayer/nodes... +Return nodal coordinates [nnode, ndim]. +Mesh::Quad4::FineLayer::conn() +------------------------------ +Return connectivity [nelem, nne]. + +Mesh::Quad4::FineLayer::nodesXXXEdge() +-------------------------------------- + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge. + +Mesh::Quad4::FineLayer::nodesXXXOpenEdge() +------------------------------------------ + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge, excluding the corners. + +Mesh::Quad4::FineLayer::nodesXXXCorner() +---------------------------------------- + +Node number of one of the corners (e.g. "BottomLeft"). + +Mesh::Quad4::FineLayer::nodesPeriodic() +--------------------------------------- + +Periodic node pairs. Each row contains on pair of (independent, dependent) node numbers. The output shape is thus [n_pairs, 2]. + +Mesh::Quad4::FineLayer::nodesOrigin() +------------------------------------- + +Bottom-left node, used as reference for periodicity. + +Mesh::Quad4::FineLayer::dofs() +------------------------------ + +DOF-numbers for each component of each node (sequential). The output shape is thus [nnode, ndim]. + +Mesh::Quad4::FineLayer::dofsPeriodic() +-------------------------------------- + +DOF-numbers for each component of each node, for the case that the periodicity if fully eliminated. The output shape is thus [nnode, ndim]. + +Mesh::Quad4::FineLayer::elementsMiddleLayer() +--------------------------------------------- + +Element numbers of the middle, fine, layer Mesh::Quad4::Map::RefineRegular =============================== -Refine mesh. +Refine a "Regular" mesh. + +Mesh::Quad4::Map::RefineRegular::getCoarseMesh() +------------------------------------------------ + +Return course mesh as "Mesh::Quad4::Regular". -.. todo:: +Mesh::Quad4::Map::RefineRegular::getFineMesh() +---------------------------------------------- - Describe, illustrate +Return fine mesh as "Mesh::Quad4::Regular". + +Mesh::Quad4::Map::RefineRegular::getMap() +----------------------------------------- + +Elements of the fine mesh per element of the coarse mesh (rows). + +Mesh::Quad4::Map::RefineRegular::mapToCoarse(...) +------------------------------------------------- + +Map field to the course mesh: + +* Scalar per element. +* Scalar per integration point. +* Tensor per integration point. + +Mesh::Quad4::Map::RefineRegular::mapToFine(...) +----------------------------------------------- + +Map field to the fine mesh: + +* Scalar per element. +* Scalar per integration point. +* Tensor per integration point. Mesh::Quad4::Map::FineLayer2Regular =================================== Map "Regular" mesh to "FineLayer" mesh. -.. todo:: +.. image:: figures/MeshQuad4/Map/FineLayer2Regular/map.svg + :width: 350px + :align: center + +.. seealso:: + + | :download:`Python - map <figures/MeshQuad4/Map/FineLayer2Regular/map.py>` + | :download:`Python - element numbers <figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.py>` + +Mesh::Quad4::Map::FineLayer2Regular::getCoarseMesh() +---------------------------------------------------- + +Return course mesh as "Mesh::Quad4::Regular". + +Mesh::Quad4::Map::FineLayer2Regular::getFineMesh() +-------------------------------------------------- + +Return fine mesh as "Mesh::Quad4::Regular". + +Mesh::Quad4::Map::FineLayer2Regular::getMap() +--------------------------------------------- + +Elements of the fine mesh per element of the coarse mesh (rows). - Describe, illustrate +Mesh::Quad4::Map::FineLayer2Regular::getMapFraction() +----------------------------------------------------- -.. todo:: +Get the fraction of overlap for the output of "getMap()". - figures/MeshQuad4/FineLayer2Regular/element-numbers... +Mesh::Quad4::Map::FineLayer2Regular::mapToRegular(...) +------------------------------------------------------ -.. todo:: +Map field to the course mesh: - figures/MeshQuad4/FineLayer2Regular/map... +* Scalar per element. +* Scalar per integration point. +* Tensor per integration point. diff --git a/docs/details/MeshTri3.rst b/docs/details/MeshTri3.rst index c5f8f02..14d199e 100644 --- a/docs/details/MeshTri3.rst +++ b/docs/details/MeshTri3.rst @@ -1,46 +1,106 @@ +.. _MeshTri3: ********** Mesh::Tri3 ********** | :download:`GooseFEM/MeshTri3.h <../../include/GooseFEM/MeshTri3.h>` | :download:`GooseFEM/MeshTri3.hpp <../../include/GooseFEM/MeshTri3.hpp>` +Naming convention +================= + +.. image:: figures/MeshTri3/naming_convention.svg + :width: 350px + :align: center + Mesh::Tri3::Regular -------------------- +=================== Regular mesh. -.. todo:: +.. seealso:: + + | :download:`Python - example <figures/MeshTri3/Regular/example.py>` + | :download:`Python/ParaView - example <figures/MeshTri3/Regular/paraview.py>` + | :download:`Python/ParaView - nodesets <figures/MeshTri3/Regular/paraview_nodesets.py>` - Describe, illustrate +Mesh::Tri3::Regular::nelem() +---------------------------- -.. todo:: +Return number of elements. - figures/MeshTri3/Regular/example... +Mesh::Tri3::Regular::nnode() +---------------------------- -.. todo:: +Return number of nodes. - figures/MeshTri3/Regular/example2... +Mesh::Tri3::Regular::nne() +-------------------------- -.. todo:: +Return number of nodes-per-element (= 3). - figures/MeshTri3/Regular/nodes... +Mesh::Tri3::Regular::ndim() +--------------------------- -Mesh::Tri3::getOrientation --------------------------- +Return number of dimensions (= 2). -Get the orientation of all triangles. +Mesh::Tri3::Regular::getElementType() +------------------------------------- -.. todo:: +Return element-type. For example used in the :ref:`ParaView` module. - Describe +Mesh::Tri3::Regular::coor() +--------------------------- -Mesh::Tri3::setOrientation --------------------------- +Return nodal coordinates [nnode, ndim]. + +Mesh::Tri3::Regular::conn() +--------------------------- + +Return connectivity [nelem, nne]. + +Mesh::Tri3::Regular::nodesXXXEdge() +----------------------------------- + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge. + +Mesh::Tri3::Regular::nodesXXXOpenEdge() +--------------------------------------- + +Node numbers along the "Bottom", "Top", "Left", or "Right" edge, excluding the corners. + +Mesh::Tri3::Regular::nodesXXXCorner() +------------------------------------- + +Node number of one of the corners (e.g. "BottomLeft"). + +Mesh::Tri3::Regular::nodesPeriodic() +------------------------------------ + +Periodic node pairs. Each row contains on pair of (independent, dependent) node numbers. The output shape is thus [n_pairs, 2]. + +Mesh::Tri3::Regular::nodesOrigin() +---------------------------------- + +Bottom-left node, used as reference for periodicity. + +Mesh::Tri3::Regular::dofs() +--------------------------- + +DOF-numbers for each component of each node (sequential). The output shape is thus [nnode, ndim]. + +Mesh::Tri3::Regular::dofsPeriodic() +----------------------------------- + +DOF-numbers for each component of each node, for the case that the periodicity if fully eliminated. The output shape is thus [nnode, ndim]. + +Mesh::Tri3::getOrientation(...) +=============================== -Modify the orientation of all triangles. +Get the orientation (-1 or +1) of all the elements. -.. todo:: +Mesh::Tri3::setOrientation(...) +=============================== - Describe +Set the orientation (-1 or +1) of all the elements. diff --git a/docs/details/ParaView.rst b/docs/details/ParaView.rst index 24137bc..89b0dbb 100644 --- a/docs/details/ParaView.rst +++ b/docs/details/ParaView.rst @@ -1,48 +1,47 @@ +.. _ParaView: ******** ParaView ******** -.. seealso:: - - | :download:`GooseFEM/ParaView.h <../../include/GooseFEM/ParaView.h>` - | :download:`GooseFEM/ParaView.hpp <../../include/GooseFEM/ParaView.hpp>` +| :download:`GooseFEM/ParaView.h <../../include/GooseFEM/ParaView.h>` +| :download:`GooseFEM/ParaView.hpp <../../include/GooseFEM/ParaView.hpp>` .. note:: This header relies on HDF5 and HighFive as dependencies. If you wish to use ParaView support without making use of HDF5 and HighFive, you have to define ``GOOSEFEM_NO_HIGHFIVE`` before including ``ParaView.h`` for the first time: .. code-block:: cpp #define GOOSEFEM_NO_HIGHFIVE #include <GooseFEM/ParaView.h> In this case the library does not automatically read the shapes of the datasets. Instead you'll have to provide them as ``std::vector<size_t>``. HDF5 ---- TimeSeries ^^^^^^^^^^ A TimeSeries is constructed from a number of Increments. The consecutive Increments are added to the TimeSeries using push_back. The order in which this is done will define the order of the TimeSeries. Each Increment is constructed from a mesh (using Connectivity and Coordinates) and a number of nodal or cell Attributes. Consider this example :download:`figures/ParaView/HDF5/main.cpp <figures/ParaView/HDF5/main.cpp>` .. literalinclude:: figures/ParaView/HDF5/main.cpp :language: cpp .. tip:: A displacement vector in must be always 3-d in ParaView, even when the mesh is in 2-d. Use the ``GooseFEM::ParaView::HDF5::as3d(...)`` function to convert a matrix of 2-d displacements to a matrix of 3-d displacements. .. note:: The Python interface avoids the HDF5 and HighFive dependencies. One therefore has to provide the datasets' shapes. Consider the following Python example: :download:`figures/ParaView/HDF5/main.py <figures/ParaView/HDF5/main.py>` .. literalinclude:: figures/ParaView/HDF5/main.py :language: python diff --git a/docs/details/Tyings.rst b/docs/details/Tyings.rst index 3a6763c..3861cfe 100644 --- a/docs/details/Tyings.rst +++ b/docs/details/Tyings.rst @@ -1,22 +1,121 @@ +.. _Tyings: ****** Tyings ****** +| :download:`GooseFEM/TyingsPeriodic.h <../../include/GooseFEM/TyingsPeriodic.h>` +| :download:`GooseFEM/TyingsPeriodic.hpp <../../include/GooseFEM/TyingsPeriodic.hpp>` + Tyings::Periodic ================ -Periodic nodal tyings. +Periodic nodal tyings: partition the system (renumber the DOFs) in the following order [iii, iid]: first the independent DOFs and the the dependent DOFs. If, in addition, independent DOFs are prescribed the partitioning is [iiu, iip, iid], where iii = [iiu, iip]: first the unknown and then the prescribed DOFs. + +Tyings::Periodic::nnd() +----------------------- + +Return the dependent DOF-numbers. + +Tyings::Periodic::nni() +----------------------- + +Return the independent DOF-numbers. + +Tyings::Periodic::nnu() +----------------------- + +Return the unknown DOF-numbers. + +Tyings::Periodic::nnp() +----------------------- + +Return the prescribed DOF-numbers. + +Tyings::Periodic::dofs() +------------------------ + +Renumbered DOFs per node [nnode, ndim]. + +Tyings::Periodic::control() +--------------------------- + +Control DOF, that should be fixed [ndim]. + +Tyings::Periodic::iid() +----------------------- + +Return the dependent DOFs. + +Tyings::Periodic::iii() +----------------------- + +Return the independent DOFs. + +Tyings::Periodic::iiu() +----------------------- + +Return the unknown DOFs. + +Tyings::Periodic::iip() +----------------------- -.. todo:: +Return the prescribed DOFs. - Complete. +Tyings::Periodic::Cdi() +----------------------- + +Return the tying matrix, such that + +.. math:: + + u_d = C_{di} u_i + +In addition, the tying matrix in terms of the partitioned system can be obtained: + +.. math:: + + u_d = [C_{du}, C_{dp}]^T [u_u, u_p] = C_{du} u_u + C_{dp} u_p + +Tyings::Periodic::Cdu() +----------------------- + +Return the tying matrix, such that: + +.. math:: + + u_d = [C_{du}, C_{dp}]^T [u_u, u_p] = C_{du} u_u + C_{dp} u_p + +Tyings::Periodic::Cdp() +----------------------- + +Return the tying matrix, such that: + +.. math:: + + u_d = [C_{du}, C_{dp}]^T [u_u, u_p] = C_{du} u_u + C_{dp} u_p Tyings::Control =============== -Control nodes and degrees-of-freedom. +Add virtual control nodes to the system. + +Tyings::Control::coor() +----------------------- + +Nodal coordinates, including the virtual control nodes [nnode, ndim]. + +Tyings::Control::dofs() +----------------------- + +DOFs, including the virtual control nodes [nnode, ndim]. + +Tyings::Control::controlDofs() +------------------------------ + +Virtual control DOFs [ndim, ndim]. -.. todo:: +Tyings::Control::controlNodes() +------------------------------- - Complete. +Virtual control nodes [ndim]. diff --git a/docs/details/Vector.rst b/docs/details/Vector.rst index 1f98a06..a6e0f97 100644 --- a/docs/details/Vector.rst +++ b/docs/details/Vector.rst @@ -1,49 +1,384 @@ - -.. _vector: +.. _Vector: ****** Vector ****** +| :download:`GooseFEM/Vector.h <../../include/GooseFEM/Vector.h>` +| :download:`GooseFEM/Vector.hpp <../../include/GooseFEM/Vector.hpp>` +| :download:`GooseFEM/VectorPartitioned.h <../../include/GooseFEM/VectorPartitioned.h>` +| :download:`GooseFEM/VectorPartitioned.hpp <../../include/GooseFEM/VectorPartitioned.hpp>` +| :download:`GooseFEM/VectorPartitionedTyings.h <../../include/GooseFEM/VectorPartitionedTyings.h>` +| :download:`GooseFEM/VectorPartitionedTyings.hpp <../../include/GooseFEM/VectorPartitionedTyings.hpp>` + Vector ====== -Vector definition. +Vector definition allowing transforming between "dofval", "nodevec", and "elemvec" representations. See :ref:`conventions_vector`. + +Vector::nelem() +--------------- + +Return the number of elements. + +Vector::nne() +------------- + +Return the number of nodes-per-element. + +Vector::nnode() +--------------- + +Return the number of nodes. + +Vector::ndim() +-------------- + +Return the number of dimensions. + +Vector::ndof() +-------------- + +Return the number of DOFs. + +Vector::dofs() +-------------- + +Return the DOF-numbers per node [nnode, ndim]. + +Vector::copy(...) +----------------- + +Copy "nodevec" to "nodevec". + +Vector::asDofs(...) +------------------- + +Convert "nodevec" or "elemvec" to "dofval". -.. todo:: +.. warning:: - Describe + Verify that you don't need "assembleDofs(...)" -.. todo:: +Vector::asNode(...) +------------------- - details/figures/Vector/mesh... +Convert "dofval" or "elemvec" to "nodevec". -.. todo:: +.. warning:: - details/figures/Vector/mesh_dofs-a... + Verify that you don't need "assembleNode(...)" -.. todo:: +Vector::asElement(...) +---------------------- - details/figures/Vector/mesh_dofs-b... +Convert "dofval" or "nodevec" to "elemvec". -.. todo:: +Vector::assembleDofs(...) +------------------------- - Complete. +Convert "nodevec" or "elemvec" to "dofval". + +.. warning:: + + Verify that you don't need "asDofs(...)" + +Vector::assembleNode(...) +------------------------- + +Convert "dofval" or "elemvec" to "nodevec". + +.. warning:: + + Verify that you don't need "asNode(...)" VectorPartitioned ================= -Partitioned vector definition. +Partitioned vector definition allowing transforming between "dofval", "nodevec", and "elemvec" representations. See :ref:`conventions_vector`. The partitioning is such that the DOFs are ordered as "[iiu, iip]" with "iiu" the unknown DOFs and "iip" the prescribed DOFs. + +VectorPartitioned::nelem() +-------------------------- + +Return the number of elements. + +VectorPartitioned::nne() +------------------------ + +Return the number of nodes-per-element. + +VectorPartitioned::nnode() +-------------------------- + +Return the number of nodes. + +VectorPartitioned::ndim() +------------------------- + +Return the number of dimensions. + +VectorPartitioned::ndof() +------------------------- + +Return the number of DOFs. + +VectorPartitioned::nnu() +------------------------ + +Return the number of unknown DOFs. + +VectorPartitioned::nnp() +------------------------ + +Return the number of prescribed DOFs. + +VectorPartitioned::dofs() +------------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +VectorPartitioned::iiu() +------------------------ + +Return the unknown DOF-numbers per node [nnu]. + +VectorPartitioned::iip() +------------------------ + +Return the prescribed DOF-numbers per node [nnp]. + +VectorPartitioned::copy(...) +---------------------------- + +Copy "nodevec" to "nodevec". + +VectorPartitioned::copy_u(...) +------------------------------ + +Copy the unknown DOFs from a "nodevec" to the unknown DOFs from another "nodevec". + +VectorPartitioned::copy_p(...) +------------------------------ + +Copy the prescribed DOFs from a "nodevec" to the prescribed DOFs from another "nodevec". + +VectorPartitioned::asDofs(...) +------------------------------ + +Convert "nodevec" or "elemvec" to "dofval". + +.. warning:: + + Verify that you don't need "assembleDofs(...)" + +VectorPartitioned::asDofs_u(...) +-------------------------------- + +Convert "nodevec" or "elemvec" to "dofval" and extract the unknown DOFs "iiu". + +.. warning:: + + Verify that you don't need "assembleDofs(...)" + +VectorPartitioned::asDofs_p(...) +-------------------------------- + +Convert "nodevec" or "elemvec" to "dofval" and extract the prescribed DOFs "iip". + +.. warning:: + + Verify that you don't need "assembleDofs(...)" + +VectorPartitioned::asNode(...) +------------------------------ + +Convert "dofval" or "elemvec" to "nodevec". + +.. warning:: + + Verify that you don't need "assembleNode(...)" + +VectorPartitioned::asElement(...) +--------------------------------- + +Convert "dofval" or "nodevec" to "elemvec". + +VectorPartitioned::assembleDofs(...) +------------------------------------ -.. todo:: +Convert "nodevec" or "elemvec" to "dofval". - Complete. +.. warning:: + + Verify that you don't need "asDofs(...)" + +VectorPartitioned::assembleDofs_u(...) +-------------------------------------- + +Convert "nodevec" or "elemvec" to "dofval" and extract the unknown DOFs "iiu". + +.. warning:: + + Verify that you don't need "asDofs(...)" + +VectorPartitioned::assembleDofs_p(...) +-------------------------------------- + +Convert "nodevec" or "elemvec" to "dofval" and extract the prescribed DOFs "iip". + +.. warning:: + + Verify that you don't need "asDofs(...)" + +VectorPartitioned::assembleNode(...) +------------------------------------ + +Convert "dofval" or "elemvec" to "nodevec". + +.. warning:: + + Verify that you don't need "asNode(...)" VectorPartitionedTyings ======================= -Partitioned vector definition with nodal tyings. +Partitioned vector definition with nodal tyings allowing transforming between "dofval", "nodevec", and "elemvec" representations. See :ref:`conventions_vector`. The partitioning is such that the DOFs are ordered as "[iiu, iip, iid]" with "iiu" the unknown DOFs and "iip" the prescribed DOFs and "iid" the dependent DOFs. + +VectorPartitionedTyings::nelem() +-------------------------------- + +Return the number of elements. + +VectorPartitionedTyings::nne() +------------------------------ + +Return the number of nodes-per-element. + +VectorPartitionedTyings::nnode() +-------------------------------- + +Return the number of nodes. + +VectorPartitionedTyings::ndim() +------------------------------- + +Return the number of dimensions. + +VectorPartitionedTyings::ndof() +------------------------------- + +Return the number of DOFs. + +VectorPartitionedTyings::nnu() +------------------------------ + +Return the number of unknown DOFs. + +VectorPartitionedTyings::nnp() +------------------------------ + +Return the number of prescribed DOFs. + +VectorPartitionedTyings::nni() +------------------------------ + +Return the number of independent DOFs. + +VectorPartitionedTyings::nnd() +------------------------------ + +Return the number of dependent DOFs. + +VectorPartitionedTyings::dofs() +------------------------------- + +Return the DOF-numbers per node [nnode, ndim]. + +VectorPartitionedTyings::iiu() +------------------------------ + +Return the unknown DOF-numbers per node [nnu]. + +VectorPartitionedTyings::iip() +------------------------------ + +Return the prescribed DOF-numbers per node [nnp]. + +VectorPartitionedTyings::iii() +------------------------------ + +Return the independent DOF-numbers per node [nni]. + +VectorPartitionedTyings::iid() +------------------------------ + +Return the dependent DOF-numbers per node [nnd]. + +VectorPartitionedTyings::copy(...) +---------------------------------- + +Copy "nodevec" to "nodevec". + +VectorPartitionedTyings::copy_u(...) +------------------------------------ + +Copy the unknown DOFs from a "nodevec" to the unknown DOFs from another "nodevec". + +VectorPartitionedTyings::copy_p(...) +------------------------------------ + +Copy the prescribed DOFs from a "nodevec" to the prescribed DOFs from another "nodevec". + +VectorPartitionedTyings::asDofs(...) +------------------------------------ + +Convert "nodevec" or "elemvec" to "dofval". + +.. warning:: + + Verify that you don't need "assembleDofs(...)" + +VectorPartitionedTyings::asDofs_i(...) +-------------------------------------- + +Convert "nodevec" or "elemvec" to "dofval" and extract the independent DOFs "iii". Choose to apply the tyings: + +.. math:: + + u_i = C_{di}^T u_d + +.. warning:: + + Verify that you don't need "assembleDofs(...)" + +VectorPartitionedTyings::asNode(...) +------------------------------------ + +Convert "dofval" or "elemvec" to "nodevec". + +.. warning:: + + Verify that you don't need "assembleNode(...)" + +VectorPartitionedTyings::asElement(...) +--------------------------------------- + +Convert "dofval" or "nodevec" to "elemvec". + +VectorPartitionedTyings::assembleDofs(...) +------------------------------------------ + +Convert "nodevec" or "elemvec" to "dofval". + +.. warning:: + + Verify that you don't need "asDofs(...)" + +VectorPartitionedTyings::assembleNode(...) +------------------------------------------ + +Convert "dofval" or "elemvec" to "nodevec". -.. todo:: +.. warning:: - Complete. + Verify that you don't need "asNode(...)" diff --git a/docs/details/figures/MeshHex8/FineLayer/example.py b/docs/details/figures/MeshHex8/FineLayer/paraview.py similarity index 72% rename from docs/details/figures/MeshHex8/FineLayer/example.py rename to docs/details/figures/MeshHex8/FineLayer/paraview.py index 80be274..57574bb 100644 --- a/docs/details/figures/MeshHex8/FineLayer/example.py +++ b/docs/details/figures/MeshHex8/FineLayer/paraview.py @@ -1,34 +1,36 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Hex8.FineLayer(9,17,27) # filename of the HDF5-file -fname = 'MeshHex8-FineLayer.hdf5' +fname = 'paraview.hdf5' # define element set elementsMiddleLayer = np.zeros((mesh.nelem()),dtype='int') elementsMiddleLayer[mesh.elementsMiddleLayer()] = 1 # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data['coor'] = mesh.coor() data['conn'] = mesh.conn() data['elementsMiddleLayer'] = elementsMiddleLayer # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Hexahedron, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) -xdmf.push_back(pv.Attribute(fname, "/elementsMiddleLayer", "elementsMiddleLayer", pv.AttributeType.Cell, elementsMiddleLayer.shape)) +xdmf.push_back(pv.Attribute( + fname, + "/elementsMiddleLayer", + "elementsMiddleLayer", + pv.AttributeType.Cell, + elementsMiddleLayer.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshHex8/FineLayer/nodes.py b/docs/details/figures/MeshHex8/FineLayer/paraview_nodesets.py similarity index 98% rename from docs/details/figures/MeshHex8/FineLayer/nodes.py rename to docs/details/figures/MeshHex8/FineLayer/paraview_nodesets.py index 0664db4..c073d37 100644 --- a/docs/details/figures/MeshHex8/FineLayer/nodes.py +++ b/docs/details/figures/MeshHex8/FineLayer/paraview_nodesets.py @@ -1,130 +1,127 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Hex8.FineLayer(9,17,27) # initialize all node sets nodesets = dict( nodesFront = np.zeros((mesh.nnode()),dtype='int'), nodesBack = np.zeros((mesh.nnode()),dtype='int'), nodesLeft = np.zeros((mesh.nnode()),dtype='int'), nodesRight = np.zeros((mesh.nnode()),dtype='int'), nodesBottom = np.zeros((mesh.nnode()),dtype='int'), nodesTop = np.zeros((mesh.nnode()),dtype='int'), nodesFrontFace = np.zeros((mesh.nnode()),dtype='int'), nodesBackFace = np.zeros((mesh.nnode()),dtype='int'), nodesLeftFace = np.zeros((mesh.nnode()),dtype='int'), nodesRightFace = np.zeros((mesh.nnode()),dtype='int'), nodesBottomFace = np.zeros((mesh.nnode()),dtype='int'), nodesTopFace = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), ) # define node-sets nodesets['nodesFront' ][mesh.nodesFront() ] = 1 nodesets['nodesBack' ][mesh.nodesBack() ] = 1 nodesets['nodesLeft' ][mesh.nodesLeft() ] = 1 nodesets['nodesRight' ][mesh.nodesRight() ] = 1 nodesets['nodesBottom' ][mesh.nodesBottom() ] = 1 nodesets['nodesTop' ][mesh.nodesTop() ] = 1 nodesets['nodesFrontFace' ][mesh.nodesFrontFace() ] = 1 nodesets['nodesBackFace' ][mesh.nodesBackFace() ] = 1 nodesets['nodesLeftFace' ][mesh.nodesLeftFace() ] = 1 nodesets['nodesRightFace' ][mesh.nodesRightFace() ] = 1 nodesets['nodesBottomFace' ][mesh.nodesBottomFace() ] = 1 nodesets['nodesTopFace' ][mesh.nodesTopFace() ] = 1 nodesets['nodesFrontBottomEdge' ][mesh.nodesFrontBottomEdge() ] = 1 nodesets['nodesFrontTopEdge' ][mesh.nodesFrontTopEdge() ] = 1 nodesets['nodesFrontLeftEdge' ][mesh.nodesFrontLeftEdge() ] = 1 nodesets['nodesFrontRightEdge' ][mesh.nodesFrontRightEdge() ] = 1 nodesets['nodesBackBottomEdge' ][mesh.nodesBackBottomEdge() ] = 1 nodesets['nodesBackTopEdge' ][mesh.nodesBackTopEdge() ] = 1 nodesets['nodesBackLeftEdge' ][mesh.nodesBackLeftEdge() ] = 1 nodesets['nodesBackRightEdge' ][mesh.nodesBackRightEdge() ] = 1 nodesets['nodesBottomLeftEdge' ][mesh.nodesBottomLeftEdge() ] = 1 nodesets['nodesBottomRightEdge' ][mesh.nodesBottomRightEdge() ] = 1 nodesets['nodesTopLeftEdge' ][mesh.nodesTopLeftEdge() ] = 1 nodesets['nodesTopRightEdge' ][mesh.nodesTopRightEdge() ] = 1 nodesets['nodesFrontBottomOpenEdge' ][mesh.nodesFrontBottomOpenEdge() ] = 1 nodesets['nodesFrontTopOpenEdge' ][mesh.nodesFrontTopOpenEdge() ] = 1 nodesets['nodesFrontLeftOpenEdge' ][mesh.nodesFrontLeftOpenEdge() ] = 1 nodesets['nodesFrontRightOpenEdge' ][mesh.nodesFrontRightOpenEdge() ] = 1 nodesets['nodesBackBottomOpenEdge' ][mesh.nodesBackBottomOpenEdge() ] = 1 nodesets['nodesBackTopOpenEdge' ][mesh.nodesBackTopOpenEdge() ] = 1 nodesets['nodesBackLeftOpenEdge' ][mesh.nodesBackLeftOpenEdge() ] = 1 nodesets['nodesBackRightOpenEdge' ][mesh.nodesBackRightOpenEdge() ] = 1 nodesets['nodesBottomLeftOpenEdge' ][mesh.nodesBottomLeftOpenEdge() ] = 1 nodesets['nodesBottomRightOpenEdge' ][mesh.nodesBottomRightOpenEdge() ] = 1 nodesets['nodesTopLeftOpenEdge' ][mesh.nodesTopLeftOpenEdge() ] = 1 nodesets['nodesTopRightOpenEdge' ][mesh.nodesTopRightOpenEdge() ] = 1 nodesets['nodesFrontBottomLeftCorner' ][mesh.nodesFrontBottomLeftCorner() ] = 1 nodesets['nodesFrontBottomRightCorner'][mesh.nodesFrontBottomRightCorner()] = 1 nodesets['nodesFrontTopLeftCorner' ][mesh.nodesFrontTopLeftCorner() ] = 1 nodesets['nodesFrontTopRightCorner' ][mesh.nodesFrontTopRightCorner() ] = 1 nodesets['nodesBackBottomLeftCorner' ][mesh.nodesBackBottomLeftCorner() ] = 1 nodesets['nodesBackBottomRightCorner' ][mesh.nodesBackBottomRightCorner() ] = 1 nodesets['nodesBackTopLeftCorner' ][mesh.nodesBackTopLeftCorner() ] = 1 nodesets['nodesBackTopRightCorner' ][mesh.nodesBackTopRightCorner() ] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:,0] # filename of the HDF5-file -fname = 'MeshHex8-FineLayer-nodes.hdf5' +fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Hexahedron, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back(pv.Attribute(fname, "/"+key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshHex8/Regular/example.py b/docs/details/figures/MeshHex8/Regular/paraview.py similarity index 79% rename from docs/details/figures/MeshHex8/Regular/example.py rename to docs/details/figures/MeshHex8/Regular/paraview.py index 9ecd659..ba7313d 100644 --- a/docs/details/figures/MeshHex8/Regular/example.py +++ b/docs/details/figures/MeshHex8/Regular/paraview.py @@ -1,25 +1,22 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Hex8.Regular(6,8,12) # filename of the HDF5-file -fname = 'MeshHex8-Regular.hdf5' +fname = 'paraview.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data['coor'] = mesh.coor() data['conn'] = mesh.conn() # write XDMF-file with metadata - pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Hexahedron, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ).write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshHex8/Regular/nodes.py b/docs/details/figures/MeshHex8/Regular/paraview_nodesets.py similarity index 98% rename from docs/details/figures/MeshHex8/Regular/nodes.py rename to docs/details/figures/MeshHex8/Regular/paraview_nodesets.py index 81b78b2..2d039a3 100644 --- a/docs/details/figures/MeshHex8/Regular/nodes.py +++ b/docs/details/figures/MeshHex8/Regular/paraview_nodesets.py @@ -1,130 +1,127 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Hex8.Regular(6,8,12) # initialize all node sets nodesets = dict( nodesFront = np.zeros((mesh.nnode()),dtype='int'), nodesBack = np.zeros((mesh.nnode()),dtype='int'), nodesLeft = np.zeros((mesh.nnode()),dtype='int'), nodesRight = np.zeros((mesh.nnode()),dtype='int'), nodesBottom = np.zeros((mesh.nnode()),dtype='int'), nodesTop = np.zeros((mesh.nnode()),dtype='int'), nodesFrontFace = np.zeros((mesh.nnode()),dtype='int'), nodesBackFace = np.zeros((mesh.nnode()),dtype='int'), nodesLeftFace = np.zeros((mesh.nnode()),dtype='int'), nodesRightFace = np.zeros((mesh.nnode()),dtype='int'), nodesBottomFace = np.zeros((mesh.nnode()),dtype='int'), nodesTopFace = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBackRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesFrontTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBackTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), ) # define node-sets nodesets['nodesFront' ][mesh.nodesFront() ] = 1 nodesets['nodesBack' ][mesh.nodesBack() ] = 1 nodesets['nodesLeft' ][mesh.nodesLeft() ] = 1 nodesets['nodesRight' ][mesh.nodesRight() ] = 1 nodesets['nodesBottom' ][mesh.nodesBottom() ] = 1 nodesets['nodesTop' ][mesh.nodesTop() ] = 1 nodesets['nodesFrontFace' ][mesh.nodesFrontFace() ] = 1 nodesets['nodesBackFace' ][mesh.nodesBackFace() ] = 1 nodesets['nodesLeftFace' ][mesh.nodesLeftFace() ] = 1 nodesets['nodesRightFace' ][mesh.nodesRightFace() ] = 1 nodesets['nodesBottomFace' ][mesh.nodesBottomFace() ] = 1 nodesets['nodesTopFace' ][mesh.nodesTopFace() ] = 1 nodesets['nodesFrontBottomEdge' ][mesh.nodesFrontBottomEdge() ] = 1 nodesets['nodesFrontTopEdge' ][mesh.nodesFrontTopEdge() ] = 1 nodesets['nodesFrontLeftEdge' ][mesh.nodesFrontLeftEdge() ] = 1 nodesets['nodesFrontRightEdge' ][mesh.nodesFrontRightEdge() ] = 1 nodesets['nodesBackBottomEdge' ][mesh.nodesBackBottomEdge() ] = 1 nodesets['nodesBackTopEdge' ][mesh.nodesBackTopEdge() ] = 1 nodesets['nodesBackLeftEdge' ][mesh.nodesBackLeftEdge() ] = 1 nodesets['nodesBackRightEdge' ][mesh.nodesBackRightEdge() ] = 1 nodesets['nodesBottomLeftEdge' ][mesh.nodesBottomLeftEdge() ] = 1 nodesets['nodesBottomRightEdge' ][mesh.nodesBottomRightEdge() ] = 1 nodesets['nodesTopLeftEdge' ][mesh.nodesTopLeftEdge() ] = 1 nodesets['nodesTopRightEdge' ][mesh.nodesTopRightEdge() ] = 1 nodesets['nodesFrontBottomOpenEdge' ][mesh.nodesFrontBottomOpenEdge() ] = 1 nodesets['nodesFrontTopOpenEdge' ][mesh.nodesFrontTopOpenEdge() ] = 1 nodesets['nodesFrontLeftOpenEdge' ][mesh.nodesFrontLeftOpenEdge() ] = 1 nodesets['nodesFrontRightOpenEdge' ][mesh.nodesFrontRightOpenEdge() ] = 1 nodesets['nodesBackBottomOpenEdge' ][mesh.nodesBackBottomOpenEdge() ] = 1 nodesets['nodesBackTopOpenEdge' ][mesh.nodesBackTopOpenEdge() ] = 1 nodesets['nodesBackLeftOpenEdge' ][mesh.nodesBackLeftOpenEdge() ] = 1 nodesets['nodesBackRightOpenEdge' ][mesh.nodesBackRightOpenEdge() ] = 1 nodesets['nodesBottomLeftOpenEdge' ][mesh.nodesBottomLeftOpenEdge() ] = 1 nodesets['nodesBottomRightOpenEdge' ][mesh.nodesBottomRightOpenEdge() ] = 1 nodesets['nodesTopLeftOpenEdge' ][mesh.nodesTopLeftOpenEdge() ] = 1 nodesets['nodesTopRightOpenEdge' ][mesh.nodesTopRightOpenEdge() ] = 1 nodesets['nodesFrontBottomLeftCorner' ][mesh.nodesFrontBottomLeftCorner() ] = 1 nodesets['nodesFrontBottomRightCorner'][mesh.nodesFrontBottomRightCorner()] = 1 nodesets['nodesFrontTopLeftCorner' ][mesh.nodesFrontTopLeftCorner() ] = 1 nodesets['nodesFrontTopRightCorner' ][mesh.nodesFrontTopRightCorner() ] = 1 nodesets['nodesBackBottomLeftCorner' ][mesh.nodesBackBottomLeftCorner() ] = 1 nodesets['nodesBackBottomRightCorner' ][mesh.nodesBackBottomRightCorner() ] = 1 nodesets['nodesBackTopLeftCorner' ][mesh.nodesBackTopLeftCorner() ] = 1 nodesets['nodesBackTopRightCorner' ][mesh.nodesBackTopRightCorner() ] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:,0] # filename of the HDF5-file -fname = 'MeshHex8-Regular-nodes.hdf5' +fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Hexahedron, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back(pv.Attribute(fname, "/"+key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshQuad4/FineLayer/behaviour.py b/docs/details/figures/MeshQuad4/FineLayer/behaviour.py index d1e4b62..581ea48 100644 --- a/docs/details/figures/MeshQuad4/FineLayer/behaviour.py +++ b/docs/details/figures/MeshQuad4/FineLayer/behaviour.py @@ -1,77 +1,74 @@ import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- fig, axes = plt.subplots(figsize=(18,6), ncols=3) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.FineLayer(6*9, 51) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6*9, 51) +coor = mesh.coor() +conn = mesh.conn() -print(mesh.nelem()) +cindex = np.arange(mesh.nelem()) # -------------------------------------------------------------------------------------------------- ax = axes[0] im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) -ax.set_title(r'$n_x = 6 \times 9$') +ax.set_title(r'$n_x = 6 \times 9; n_{elem} = %d$' % mesh.nelem()) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.FineLayer(6*9+3, 51) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6*9+3, 51) +coor = mesh.coor() +conn = mesh.conn() -print(mesh.nelem()) +cindex = np.arange(mesh.nelem()) # -------------------------------------------------------------------------------------------------- ax = axes[1] im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) -ax.set_title(r'$n_x = 6 \times 9 + 3$') +ax.set_title(r'$n_x = 6 \times 9 + 3; n_{elem} = %d$' % mesh.nelem()) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.FineLayer(6*9+1, 51) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6*9+1, 51) +coor = mesh.coor() +conn = mesh.conn() -print(mesh.nelem()) +cindex = np.arange(mesh.nelem()) # -------------------------------------------------------------------------------------------------- ax = axes[2] im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) -ax.set_title(r'$n_x = 6 \times 9 + 1$') +ax.set_title(r'$n_x = 6 \times 9 + 1; n_{elem} = %d$' % mesh.nelem()) plt.savefig('behaviour.svg') plt.show() diff --git a/docs/details/figures/MeshQuad4/FineLayer/element-numbers.py b/docs/details/figures/MeshQuad4/FineLayer/element-numbers.py index 62d8049..2e93989 100644 --- a/docs/details/figures/MeshQuad4/FineLayer/element-numbers.py +++ b/docs/details/figures/MeshQuad4/FineLayer/element-numbers.py @@ -1,32 +1,33 @@ import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.FineLayer(6, 18) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6, 18) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.arange(mesh.nelem()) # -------------------------------------------------------------------------------------------------- -fig,ax = plt.subplots(figsize=(10,10)) +fig, ax = plt.subplots(figsize=(10,10)) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet') for e in range(conn.shape[0]): x = np.mean(coor[conn[e,:], 0]) y = np.mean(coor[conn[e,:], 1]) ax.text(x, y, str(e), ha='center', va='center') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) plt.savefig('element_numbers.svg') -plt.show() +plt.close() diff --git a/docs/details/figures/MeshQuad4/FineLayer/element-numbers.svg b/docs/details/figures/MeshQuad4/FineLayer/element-numbers.svg deleted file mode 100644 index fe80d8d..0000000 --- a/docs/details/figures/MeshQuad4/FineLayer/element-numbers.svg +++ /dev/null @@ -1,1009 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with matplotlib (https://matplotlib.org/) --> -<svg height="720pt" version="1.1" viewBox="0 0 720 720" width="720pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <style type="text/css"> -*{stroke-linecap:butt;stroke-linejoin:round;} - </style> - </defs> - <g id="figure_1"> - <g id="patch_1"> - <path d="M 0 720 -L 720 720 -L 720 0 -L 0 0 -z -" style="fill:none;"/> - </g> - <g id="axes_1"> - <g id="patch_2"> - <path d="M 262.08 702.72 -L 457.92 702.72 -L 457.92 17.28 -L 262.08 17.28 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_1"> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 645.6 -L 360 645.6 -L 360 564 -L 278.4 564 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 645.6 -L 441.6 645.6 -L 441.6 564 -L 360 564 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 564 -L 360 564 -L 360 482.4 -L 278.4 482.4 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 564 -L 441.6 564 -L 441.6 482.4 -L 360 482.4 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 482.4 -L 360 482.4 -L 332.8 455.2 -L 305.6 455.2 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 482.4 -L 360 428 -L 332.8 428 -L 332.8 455.2 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 455.2 -L 332.8 455.2 -L 332.8 428 -L 305.6 428 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 482.4 -L 305.6 455.2 -L 305.6 428 -L 278.4 428 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 482.4 -L 441.6 482.4 -L 414.4 455.2 -L 387.2 455.2 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 441.6 482.4 -L 441.6 428 -L 414.4 428 -L 414.4 455.2 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 455.2 -L 414.4 455.2 -L 414.4 428 -L 387.2 428 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 482.4 -L 387.2 455.2 -L 387.2 428 -L 360 428 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 428 -L 305.6 428 -L 305.6 400.8 -L 278.4 400.8 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 428 -L 332.8 428 -L 332.8 400.8 -L 305.6 400.8 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 428 -L 360 428 -L 360 400.8 -L 332.8 400.8 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 428 -L 387.2 428 -L 387.2 400.8 -L 360 400.8 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 428 -L 414.4 428 -L 414.4 400.8 -L 387.2 400.8 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 428 -L 441.6 428 -L 441.6 400.8 -L 414.4 400.8 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 400.8 -L 305.6 400.8 -L 305.6 373.6 -L 278.4 373.6 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 400.8 -L 332.8 400.8 -L 332.8 373.6 -L 305.6 373.6 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 400.8 -L 360 400.8 -L 360 373.6 -L 332.8 373.6 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 400.8 -L 387.2 400.8 -L 387.2 373.6 -L 360 373.6 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 400.8 -L 414.4 400.8 -L 414.4 373.6 -L 387.2 373.6 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 400.8 -L 441.6 400.8 -L 441.6 373.6 -L 414.4 373.6 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 373.6 -L 305.6 373.6 -L 305.6 346.4 -L 278.4 346.4 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 373.6 -L 332.8 373.6 -L 332.8 346.4 -L 305.6 346.4 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 373.6 -L 360 373.6 -L 360 346.4 -L 332.8 346.4 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 373.6 -L 387.2 373.6 -L 387.2 346.4 -L 360 346.4 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 373.6 -L 414.4 373.6 -L 414.4 346.4 -L 387.2 346.4 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 373.6 -L 441.6 373.6 -L 441.6 346.4 -L 414.4 346.4 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 346.4 -L 305.6 346.4 -L 305.6 319.2 -L 278.4 319.2 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 346.4 -L 332.8 346.4 -L 332.8 319.2 -L 305.6 319.2 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 346.4 -L 360 346.4 -L 360 319.2 -L 332.8 319.2 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 346.4 -L 387.2 346.4 -L 387.2 319.2 -L 360 319.2 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 346.4 -L 414.4 346.4 -L 414.4 319.2 -L 387.2 319.2 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 346.4 -L 441.6 346.4 -L 441.6 319.2 -L 414.4 319.2 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 319.2 -L 305.6 319.2 -L 305.6 292 -L 278.4 292 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 319.2 -L 332.8 319.2 -L 332.8 292 -L 305.6 292 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 319.2 -L 360 319.2 -L 360 292 -L 332.8 292 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 319.2 -L 387.2 319.2 -L 387.2 292 -L 360 292 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 319.2 -L 414.4 319.2 -L 414.4 292 -L 387.2 292 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 319.2 -L 441.6 319.2 -L 441.6 292 -L 414.4 292 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 292 -L 305.6 292 -L 305.6 264.8 -L 278.4 237.6 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 292 -L 332.8 292 -L 332.8 264.8 -L 305.6 264.8 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 332.8 292 -L 360 292 -L 360 237.6 -L 332.8 264.8 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 305.6 264.8 -L 332.8 264.8 -L 360 237.6 -L 278.4 237.6 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 292 -L 387.2 292 -L 387.2 264.8 -L 360 237.6 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 292 -L 414.4 292 -L 414.4 264.8 -L 387.2 264.8 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 414.4 292 -L 441.6 292 -L 441.6 237.6 -L 414.4 264.8 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 387.2 264.8 -L 414.4 264.8 -L 441.6 237.6 -L 360 237.6 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 237.6 -L 360 237.6 -L 360 156 -L 278.4 156 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 237.6 -L 441.6 237.6 -L 441.6 156 -L 360 156 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 278.4 156 -L 360 156 -L 360 74.4 -L 278.4 74.4 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p5b66d1c2f9)" d="M 360 156 -L 441.6 156 -L 441.6 74.4 -L 360 74.4 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="patch_3"> - <path d="M 262.08 702.72 -L 262.08 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_4"> - <path d="M 457.92 702.72 -L 457.92 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_5"> - <path d="M 262.08 702.72 -L 457.92 702.72 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_6"> - <path d="M 262.08 17.28 -L 457.92 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="text_1"> - <!-- 0 --> - <defs> - <path d="M 31.78125 66.40625 -Q 24.171875 66.40625 20.328125 58.90625 -Q 16.5 51.421875 16.5 36.375 -Q 16.5 21.390625 20.328125 13.890625 -Q 24.171875 6.390625 31.78125 6.390625 -Q 39.453125 6.390625 43.28125 13.890625 -Q 47.125 21.390625 47.125 36.375 -Q 47.125 51.421875 43.28125 58.90625 -Q 39.453125 66.40625 31.78125 66.40625 -z -M 31.78125 74.21875 -Q 44.046875 74.21875 50.515625 64.515625 -Q 56.984375 54.828125 56.984375 36.375 -Q 56.984375 17.96875 50.515625 8.265625 -Q 44.046875 -1.421875 31.78125 -1.421875 -Q 19.53125 -1.421875 13.0625 8.265625 -Q 6.59375 17.96875 6.59375 36.375 -Q 6.59375 54.828125 13.0625 64.515625 -Q 19.53125 74.21875 31.78125 74.21875 -z -" id="DejaVuSans-48"/> - </defs> - <g transform="translate(314.11 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_2"> - <!-- 1 --> - <defs> - <path d="M 12.40625 8.296875 -L 28.515625 8.296875 -L 28.515625 63.921875 -L 10.984375 60.40625 -L 10.984375 69.390625 -L 28.421875 72.90625 -L 38.28125 72.90625 -L 38.28125 8.296875 -L 54.390625 8.296875 -L 54.390625 0 -L 12.40625 0 -z -" id="DejaVuSans-49"/> - </defs> - <g transform="translate(395.71 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_3"> - <!-- 2 --> - <defs> - <path d="M 19.1875 8.296875 -L 53.609375 8.296875 -L 53.609375 0 -L 7.328125 0 -L 7.328125 8.296875 -Q 12.9375 14.109375 22.625 23.890625 -Q 32.328125 33.6875 34.8125 36.53125 -Q 39.546875 41.84375 41.421875 45.53125 -Q 43.3125 49.21875 43.3125 52.78125 -Q 43.3125 58.59375 39.234375 62.25 -Q 35.15625 65.921875 28.609375 65.921875 -Q 23.96875 65.921875 18.8125 64.3125 -Q 13.671875 62.703125 7.8125 59.421875 -L 7.8125 69.390625 -Q 13.765625 71.78125 18.9375 73 -Q 24.125 74.21875 28.421875 74.21875 -Q 39.75 74.21875 46.484375 68.546875 -Q 53.21875 62.890625 53.21875 53.421875 -Q 53.21875 48.921875 51.53125 44.890625 -Q 49.859375 40.875 45.40625 35.40625 -Q 44.1875 33.984375 37.640625 27.21875 -Q 31.109375 20.453125 19.1875 8.296875 -z -" id="DejaVuSans-50"/> - </defs> - <g transform="translate(314.11 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_4"> - <!-- 3 --> - <defs> - <path d="M 40.578125 39.3125 -Q 47.65625 37.796875 51.625 33 -Q 55.609375 28.21875 55.609375 21.1875 -Q 55.609375 10.40625 48.1875 4.484375 -Q 40.765625 -1.421875 27.09375 -1.421875 -Q 22.515625 -1.421875 17.65625 -0.515625 -Q 12.796875 0.390625 7.625 2.203125 -L 7.625 11.71875 -Q 11.71875 9.328125 16.59375 8.109375 -Q 21.484375 6.890625 26.8125 6.890625 -Q 36.078125 6.890625 40.9375 10.546875 -Q 45.796875 14.203125 45.796875 21.1875 -Q 45.796875 27.640625 41.28125 31.265625 -Q 36.765625 34.90625 28.71875 34.90625 -L 20.21875 34.90625 -L 20.21875 43.015625 -L 29.109375 43.015625 -Q 36.375 43.015625 40.234375 45.921875 -Q 44.09375 48.828125 44.09375 54.296875 -Q 44.09375 59.90625 40.109375 62.90625 -Q 36.140625 65.921875 28.71875 65.921875 -Q 24.65625 65.921875 20.015625 65.03125 -Q 15.375 64.15625 9.8125 62.3125 -L 9.8125 71.09375 -Q 15.4375 72.65625 20.34375 73.4375 -Q 25.25 74.21875 29.59375 74.21875 -Q 40.828125 74.21875 47.359375 69.109375 -Q 53.90625 64.015625 53.90625 55.328125 -Q 53.90625 49.265625 50.4375 45.09375 -Q 46.96875 40.921875 40.578125 39.3125 -z -" id="DejaVuSans-51"/> - </defs> - <g transform="translate(395.71 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_5"> - <!-- 4 --> - <defs> - <path d="M 37.796875 64.3125 -L 12.890625 25.390625 -L 37.796875 25.390625 -z -M 35.203125 72.90625 -L 47.609375 72.90625 -L 47.609375 25.390625 -L 58.015625 25.390625 -L 58.015625 17.1875 -L 47.609375 17.1875 -L 47.609375 0 -L 37.796875 0 -L 37.796875 17.1875 -L 4.890625 17.1875 -L 4.890625 26.703125 -z -" id="DejaVuSans-52"/> - </defs> - <g transform="translate(314.11 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_6"> - <!-- 5 --> - <defs> - <path d="M 10.796875 72.90625 -L 49.515625 72.90625 -L 49.515625 64.59375 -L 19.828125 64.59375 -L 19.828125 46.734375 -Q 21.96875 47.46875 24.109375 47.828125 -Q 26.265625 48.1875 28.421875 48.1875 -Q 40.625 48.1875 47.75 41.5 -Q 54.890625 34.8125 54.890625 23.390625 -Q 54.890625 11.625 47.5625 5.09375 -Q 40.234375 -1.421875 26.90625 -1.421875 -Q 22.3125 -1.421875 17.546875 -0.640625 -Q 12.796875 0.140625 7.71875 1.703125 -L 7.71875 11.625 -Q 12.109375 9.234375 16.796875 8.0625 -Q 21.484375 6.890625 26.703125 6.890625 -Q 35.15625 6.890625 40.078125 11.328125 -Q 45.015625 15.765625 45.015625 23.390625 -Q 45.015625 31 40.078125 35.4375 -Q 35.15625 39.890625 26.703125 39.890625 -Q 22.75 39.890625 18.8125 39.015625 -Q 14.890625 38.140625 10.796875 36.28125 -z -" id="DejaVuSans-53"/> - </defs> - <g transform="translate(341.31 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_7"> - <!-- 6 --> - <defs> - <path d="M 33.015625 40.375 -Q 26.375 40.375 22.484375 35.828125 -Q 18.609375 31.296875 18.609375 23.390625 -Q 18.609375 15.53125 22.484375 10.953125 -Q 26.375 6.390625 33.015625 6.390625 -Q 39.65625 6.390625 43.53125 10.953125 -Q 47.40625 15.53125 47.40625 23.390625 -Q 47.40625 31.296875 43.53125 35.828125 -Q 39.65625 40.375 33.015625 40.375 -z -M 52.59375 71.296875 -L 52.59375 62.3125 -Q 48.875 64.0625 45.09375 64.984375 -Q 41.3125 65.921875 37.59375 65.921875 -Q 27.828125 65.921875 22.671875 59.328125 -Q 17.53125 52.734375 16.796875 39.40625 -Q 19.671875 43.65625 24.015625 45.921875 -Q 28.375 48.1875 33.59375 48.1875 -Q 44.578125 48.1875 50.953125 41.515625 -Q 57.328125 34.859375 57.328125 23.390625 -Q 57.328125 12.15625 50.6875 5.359375 -Q 44.046875 -1.421875 33.015625 -1.421875 -Q 20.359375 -1.421875 13.671875 8.265625 -Q 6.984375 17.96875 6.984375 36.375 -Q 6.984375 53.65625 15.1875 63.9375 -Q 23.390625 74.21875 37.203125 74.21875 -Q 40.921875 74.21875 44.703125 73.484375 -Q 48.484375 72.75 52.59375 71.296875 -z -" id="DejaVuSans-54"/> - </defs> - <g transform="translate(314.11 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_8"> - <!-- 7 --> - <defs> - <path d="M 8.203125 72.90625 -L 55.078125 72.90625 -L 55.078125 68.703125 -L 28.609375 0 -L 18.3125 0 -L 43.21875 64.59375 -L 8.203125 64.59375 -z -" id="DejaVuSans-55"/> - </defs> - <g transform="translate(286.91 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_9"> - <!-- 8 --> - <defs> - <path d="M 31.78125 34.625 -Q 24.75 34.625 20.71875 30.859375 -Q 16.703125 27.09375 16.703125 20.515625 -Q 16.703125 13.921875 20.71875 10.15625 -Q 24.75 6.390625 31.78125 6.390625 -Q 38.8125 6.390625 42.859375 10.171875 -Q 46.921875 13.96875 46.921875 20.515625 -Q 46.921875 27.09375 42.890625 30.859375 -Q 38.875 34.625 31.78125 34.625 -z -M 21.921875 38.8125 -Q 15.578125 40.375 12.03125 44.71875 -Q 8.5 49.078125 8.5 55.328125 -Q 8.5 64.0625 14.71875 69.140625 -Q 20.953125 74.21875 31.78125 74.21875 -Q 42.671875 74.21875 48.875 69.140625 -Q 55.078125 64.0625 55.078125 55.328125 -Q 55.078125 49.078125 51.53125 44.71875 -Q 48 40.375 41.703125 38.8125 -Q 48.828125 37.15625 52.796875 32.3125 -Q 56.78125 27.484375 56.78125 20.515625 -Q 56.78125 9.90625 50.3125 4.234375 -Q 43.84375 -1.421875 31.78125 -1.421875 -Q 19.734375 -1.421875 13.25 4.234375 -Q 6.78125 9.90625 6.78125 20.515625 -Q 6.78125 27.484375 10.78125 32.3125 -Q 14.796875 37.15625 21.921875 38.8125 -z -M 18.3125 54.390625 -Q 18.3125 48.734375 21.84375 45.5625 -Q 25.390625 42.390625 31.78125 42.390625 -Q 38.140625 42.390625 41.71875 45.5625 -Q 45.3125 48.734375 45.3125 54.390625 -Q 45.3125 60.0625 41.71875 63.234375 -Q 38.140625 66.40625 31.78125 66.40625 -Q 25.390625 66.40625 21.84375 63.234375 -Q 18.3125 60.0625 18.3125 54.390625 -z -" id="DejaVuSans-56"/> - </defs> - <g transform="translate(395.71 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_10"> - <!-- 9 --> - <defs> - <path d="M 10.984375 1.515625 -L 10.984375 10.5 -Q 14.703125 8.734375 18.5 7.8125 -Q 22.3125 6.890625 25.984375 6.890625 -Q 35.75 6.890625 40.890625 13.453125 -Q 46.046875 20.015625 46.78125 33.40625 -Q 43.953125 29.203125 39.59375 26.953125 -Q 35.25 24.703125 29.984375 24.703125 -Q 19.046875 24.703125 12.671875 31.3125 -Q 6.296875 37.9375 6.296875 49.421875 -Q 6.296875 60.640625 12.9375 67.421875 -Q 19.578125 74.21875 30.609375 74.21875 -Q 43.265625 74.21875 49.921875 64.515625 -Q 56.59375 54.828125 56.59375 36.375 -Q 56.59375 19.140625 48.40625 8.859375 -Q 40.234375 -1.421875 26.421875 -1.421875 -Q 22.703125 -1.421875 18.890625 -0.6875 -Q 15.09375 0.046875 10.984375 1.515625 -z -M 30.609375 32.421875 -Q 37.25 32.421875 41.125 36.953125 -Q 45.015625 41.5 45.015625 49.421875 -Q 45.015625 57.28125 41.125 61.84375 -Q 37.25 66.40625 30.609375 66.40625 -Q 23.96875 66.40625 20.09375 61.84375 -Q 16.21875 57.28125 16.21875 49.421875 -Q 16.21875 41.5 20.09375 36.953125 -Q 23.96875 32.421875 30.609375 32.421875 -z -" id="DejaVuSans-57"/> - </defs> - <g transform="translate(422.91 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_11"> - <!-- 10 --> - <g transform="translate(390.62 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_12"> - <!-- 11 --> - <g transform="translate(363.42 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_13"> - <!-- 12 --> - <g transform="translate(281.82 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_14"> - <!-- 13 --> - <g transform="translate(309.02 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_15"> - <!-- 14 --> - <g transform="translate(336.22 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_16"> - <!-- 15 --> - <g transform="translate(363.42 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_17"> - <!-- 16 --> - <g transform="translate(390.62 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_18"> - <!-- 17 --> - <g transform="translate(417.82 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_19"> - <!-- 18 --> - <g transform="translate(281.82 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_20"> - <!-- 19 --> - <g transform="translate(309.02 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_21"> - <!-- 20 --> - <g transform="translate(336.22 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_22"> - <!-- 21 --> - <g transform="translate(363.42 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_23"> - <!-- 22 --> - <g transform="translate(390.62 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_24"> - <!-- 23 --> - <g transform="translate(417.82 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_25"> - <!-- 24 --> - <g transform="translate(281.82 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_26"> - <!-- 25 --> - <g transform="translate(309.02 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_27"> - <!-- 26 --> - <g transform="translate(336.22 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_28"> - <!-- 27 --> - <g transform="translate(363.42 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_29"> - <!-- 28 --> - <g transform="translate(390.62 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_30"> - <!-- 29 --> - <g transform="translate(417.82 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_31"> - <!-- 30 --> - <g transform="translate(281.82 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_32"> - <!-- 31 --> - <g transform="translate(309.02 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_33"> - <!-- 32 --> - <g transform="translate(336.22 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_34"> - <!-- 33 --> - <g transform="translate(363.42 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_35"> - <!-- 34 --> - <g transform="translate(390.62 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_36"> - <!-- 35 --> - <g transform="translate(417.82 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_37"> - <!-- 36 --> - <g transform="translate(281.82 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_38"> - <!-- 37 --> - <g transform="translate(309.02 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_39"> - <!-- 38 --> - <g transform="translate(336.22 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_40"> - <!-- 39 --> - <g transform="translate(363.42 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_41"> - <!-- 40 --> - <g transform="translate(390.62 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_42"> - <!-- 41 --> - <g transform="translate(417.82 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_43"> - <!-- 42 --> - <g transform="translate(281.82 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_44"> - <!-- 43 --> - <g transform="translate(309.02 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_45"> - <!-- 44 --> - <g transform="translate(336.22 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_46"> - <!-- 45 --> - <g transform="translate(309.02 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_47"> - <!-- 46 --> - <g transform="translate(363.42 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_48"> - <!-- 47 --> - <g transform="translate(390.62 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_49"> - <!-- 48 --> - <g transform="translate(417.82 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_50"> - <!-- 49 --> - <g transform="translate(390.62 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_51"> - <!-- 50 --> - <g transform="translate(309.02 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_52"> - <!-- 51 --> - <g transform="translate(390.62 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_53"> - <!-- 52 --> - <g transform="translate(309.02 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_54"> - <!-- 53 --> - <g transform="translate(390.62 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - </g> - </g> - <defs> - <clipPath id="p5b66d1c2f9"> - <rect height="685.44" width="195.84" x="262.08" y="17.28"/> - </clipPath> - </defs> -</svg> diff --git a/docs/details/figures/MeshQuad4/FineLayer/example.py b/docs/details/figures/MeshQuad4/FineLayer/example.py index ced43fd..849eb2c 100644 --- a/docs/details/figures/MeshQuad4/FineLayer/example.py +++ b/docs/details/figures/MeshQuad4/FineLayer/example.py @@ -1,44 +1,40 @@ +import numpy as np import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt -import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.FineLayer(6*9, 51) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6*9, 51) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.arange(mesh.nelem()) + +Left = mesh.nodesLeftEdge() +Right = mesh.nodesRightEdge() +Bottom = mesh.nodesBottomEdge() +Top = mesh.nodesTopEdge() # -------------------------------------------------------------------------------------------------- fig, ax = plt.subplots(figsize=(10,10)) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet') ax.plot(coor[:,0], coor[:,1], marker='o', linestyle='none') -lft = mesh.nodesLeftOpenEdge() -rgt = mesh.nodesRightOpenEdge() -bot = mesh.nodesBottomEdge() -top = mesh.nodesTopEdge() - -ax.plot(coor[lft,0], coor[lft,1], marker='o', linestyle='none', color='g', label='nodesLeftOpenEdge') -ax.plot(coor[rgt,0], coor[rgt,1], marker='o', linestyle='none', color='b', label='nodesRightOpenEdge') -ax.plot(coor[bot,0], coor[bot,1], marker='o', linestyle='none', color='r', label='nodesBottomEdge') -ax.plot(coor[top,0], coor[top,1], marker='o', linestyle='none', color='y', label='nodesTopEdge') +ax.plot(coor[Left ,0], coor[Left ,1], marker='o', linestyle='none', color='g') +ax.plot(coor[Right ,0], coor[Right ,1], marker='o', linestyle='none', color='b') +ax.plot(coor[Bottom,0], coor[Bottom,1], marker='o', linestyle='none', color='r') +ax.plot(coor[Top ,0], coor[Top ,1], marker='o', linestyle='none', color='y') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) -ax.set_xlim([-1, 55]) -ax.set_ylim([-1, 58]) - -ax.legend(ncol=2, loc='upper center') - plt.savefig('example.svg') -plt.show() +plt.close() diff --git a/docs/details/figures/MeshQuad4/FineLayer/example.svg b/docs/details/figures/MeshQuad4/FineLayer/example.svg deleted file mode 100644 index c8c8359..0000000 --- a/docs/details/figures/MeshQuad4/FineLayer/example.svg +++ /dev/null @@ -1,4547 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with matplotlib (https://matplotlib.org/) --> -<svg height="720pt" version="1.1" viewBox="0 0 720 720" width="720pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <style type="text/css"> -*{stroke-linecap:butt;stroke-linejoin:round;} - </style> - </defs> - <g id="figure_1"> - <g id="patch_1"> - <path d="M 0 720 -L 720 720 -L 720 0 -L 0 0 -z -" style="fill:none;"/> - </g> - <g id="axes_1"> - <g id="patch_2"> - <path d="M 34.706441 702.72 -L 685.293559 702.72 -L 685.293559 17.28 -L 34.706441 17.28 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_1"> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 691.102373 -L 150.882712 691.102373 -L 150.882712 586.543729 -L 46.324068 586.543729 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 691.102373 -L 255.441356 691.102373 -L 255.441356 586.543729 -L 150.882712 586.543729 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 691.102373 -L 360 691.102373 -L 360 586.543729 -L 255.441356 586.543729 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 691.102373 -L 464.558644 691.102373 -L 464.558644 586.543729 -L 360 586.543729 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 691.102373 -L 569.117288 691.102373 -L 569.117288 586.543729 -L 464.558644 586.543729 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 691.102373 -L 673.675932 691.102373 -L 673.675932 586.543729 -L 569.117288 586.543729 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 586.543729 -L 150.882712 586.543729 -L 116.029831 551.690847 -L 81.176949 551.690847 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 586.543729 -L 150.882712 516.837966 -L 116.029831 516.837966 -L 116.029831 551.690847 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 551.690847 -L 116.029831 551.690847 -L 116.029831 516.837966 -L 81.176949 516.837966 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 586.543729 -L 81.176949 551.690847 -L 81.176949 516.837966 -L 46.324068 516.837966 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 586.543729 -L 255.441356 586.543729 -L 220.588475 551.690847 -L 185.735593 551.690847 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 586.543729 -L 255.441356 516.837966 -L 220.588475 516.837966 -L 220.588475 551.690847 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 551.690847 -L 220.588475 551.690847 -L 220.588475 516.837966 -L 185.735593 516.837966 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 586.543729 -L 185.735593 551.690847 -L 185.735593 516.837966 -L 150.882712 516.837966 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 586.543729 -L 360 586.543729 -L 325.147119 551.690847 -L 290.294237 551.690847 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 586.543729 -L 360 516.837966 -L 325.147119 516.837966 -L 325.147119 551.690847 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 551.690847 -L 325.147119 551.690847 -L 325.147119 516.837966 -L 290.294237 516.837966 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 586.543729 -L 290.294237 551.690847 -L 290.294237 516.837966 -L 255.441356 516.837966 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 586.543729 -L 464.558644 586.543729 -L 429.705763 551.690847 -L 394.852881 551.690847 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 586.543729 -L 464.558644 516.837966 -L 429.705763 516.837966 -L 429.705763 551.690847 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 551.690847 -L 429.705763 551.690847 -L 429.705763 516.837966 -L 394.852881 516.837966 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 586.543729 -L 394.852881 551.690847 -L 394.852881 516.837966 -L 360 516.837966 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 586.543729 -L 569.117288 586.543729 -L 534.264407 551.690847 -L 499.411525 551.690847 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 586.543729 -L 569.117288 516.837966 -L 534.264407 516.837966 -L 534.264407 551.690847 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 551.690847 -L 534.264407 551.690847 -L 534.264407 516.837966 -L 499.411525 516.837966 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 586.543729 -L 499.411525 551.690847 -L 499.411525 516.837966 -L 464.558644 516.837966 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 586.543729 -L 673.675932 586.543729 -L 638.823051 551.690847 -L 603.970169 551.690847 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 673.675932 586.543729 -L 673.675932 516.837966 -L 638.823051 516.837966 -L 638.823051 551.690847 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 551.690847 -L 638.823051 551.690847 -L 638.823051 516.837966 -L 603.970169 516.837966 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 586.543729 -L 603.970169 551.690847 -L 603.970169 516.837966 -L 569.117288 516.837966 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 516.837966 -L 81.176949 516.837966 -L 81.176949 481.985085 -L 46.324068 481.985085 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 516.837966 -L 116.029831 516.837966 -L 116.029831 481.985085 -L 81.176949 481.985085 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 516.837966 -L 150.882712 516.837966 -L 150.882712 481.985085 -L 116.029831 481.985085 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 516.837966 -L 185.735593 516.837966 -L 185.735593 481.985085 -L 150.882712 481.985085 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 516.837966 -L 220.588475 516.837966 -L 220.588475 481.985085 -L 185.735593 481.985085 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 516.837966 -L 255.441356 516.837966 -L 255.441356 481.985085 -L 220.588475 481.985085 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 516.837966 -L 290.294237 516.837966 -L 290.294237 481.985085 -L 255.441356 481.985085 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 516.837966 -L 325.147119 516.837966 -L 325.147119 481.985085 -L 290.294237 481.985085 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 516.837966 -L 360 516.837966 -L 360 481.985085 -L 325.147119 481.985085 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 516.837966 -L 394.852881 516.837966 -L 394.852881 481.985085 -L 360 481.985085 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 516.837966 -L 429.705763 516.837966 -L 429.705763 481.985085 -L 394.852881 481.985085 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 516.837966 -L 464.558644 516.837966 -L 464.558644 481.985085 -L 429.705763 481.985085 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 516.837966 -L 499.411525 516.837966 -L 499.411525 481.985085 -L 464.558644 481.985085 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 516.837966 -L 534.264407 516.837966 -L 534.264407 481.985085 -L 499.411525 481.985085 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 516.837966 -L 569.117288 516.837966 -L 569.117288 481.985085 -L 534.264407 481.985085 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 516.837966 -L 603.970169 516.837966 -L 603.970169 481.985085 -L 569.117288 481.985085 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 516.837966 -L 638.823051 516.837966 -L 638.823051 481.985085 -L 603.970169 481.985085 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 516.837966 -L 673.675932 516.837966 -L 673.675932 481.985085 -L 638.823051 481.985085 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 481.985085 -L 81.176949 481.985085 -L 81.176949 447.132203 -L 46.324068 447.132203 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 481.985085 -L 116.029831 481.985085 -L 116.029831 447.132203 -L 81.176949 447.132203 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 481.985085 -L 150.882712 481.985085 -L 150.882712 447.132203 -L 116.029831 447.132203 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 481.985085 -L 185.735593 481.985085 -L 185.735593 447.132203 -L 150.882712 447.132203 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 481.985085 -L 220.588475 481.985085 -L 220.588475 447.132203 -L 185.735593 447.132203 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 481.985085 -L 255.441356 481.985085 -L 255.441356 447.132203 -L 220.588475 447.132203 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 481.985085 -L 290.294237 481.985085 -L 290.294237 447.132203 -L 255.441356 447.132203 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 481.985085 -L 325.147119 481.985085 -L 325.147119 447.132203 -L 290.294237 447.132203 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 481.985085 -L 360 481.985085 -L 360 447.132203 -L 325.147119 447.132203 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 481.985085 -L 394.852881 481.985085 -L 394.852881 447.132203 -L 360 447.132203 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 481.985085 -L 429.705763 481.985085 -L 429.705763 447.132203 -L 394.852881 447.132203 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 481.985085 -L 464.558644 481.985085 -L 464.558644 447.132203 -L 429.705763 447.132203 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 481.985085 -L 499.411525 481.985085 -L 499.411525 447.132203 -L 464.558644 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 481.985085 -L 534.264407 481.985085 -L 534.264407 447.132203 -L 499.411525 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 481.985085 -L 569.117288 481.985085 -L 569.117288 447.132203 -L 534.264407 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 481.985085 -L 603.970169 481.985085 -L 603.970169 447.132203 -L 569.117288 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 481.985085 -L 638.823051 481.985085 -L 638.823051 447.132203 -L 603.970169 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 481.985085 -L 673.675932 481.985085 -L 673.675932 447.132203 -L 638.823051 447.132203 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 447.132203 -L 81.176949 447.132203 -L 69.559322 435.514576 -L 57.941695 435.514576 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 447.132203 -L 81.176949 423.896949 -L 69.559322 423.896949 -L 69.559322 435.514576 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 435.514576 -L 69.559322 435.514576 -L 69.559322 423.896949 -L 57.941695 423.896949 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 447.132203 -L 57.941695 435.514576 -L 57.941695 423.896949 -L 46.324068 423.896949 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 447.132203 -L 116.029831 447.132203 -L 104.412203 435.514576 -L 92.794576 435.514576 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 447.132203 -L 116.029831 423.896949 -L 104.412203 423.896949 -L 104.412203 435.514576 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 435.514576 -L 104.412203 435.514576 -L 104.412203 423.896949 -L 92.794576 423.896949 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 447.132203 -L 92.794576 435.514576 -L 92.794576 423.896949 -L 81.176949 423.896949 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 447.132203 -L 150.882712 447.132203 -L 139.265085 435.514576 -L 127.647458 435.514576 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 447.132203 -L 150.882712 423.896949 -L 139.265085 423.896949 -L 139.265085 435.514576 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 435.514576 -L 139.265085 435.514576 -L 139.265085 423.896949 -L 127.647458 423.896949 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 447.132203 -L 127.647458 435.514576 -L 127.647458 423.896949 -L 116.029831 423.896949 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 447.132203 -L 185.735593 447.132203 -L 174.117966 435.514576 -L 162.500339 435.514576 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 447.132203 -L 185.735593 423.896949 -L 174.117966 423.896949 -L 174.117966 435.514576 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 435.514576 -L 174.117966 435.514576 -L 174.117966 423.896949 -L 162.500339 423.896949 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 447.132203 -L 162.500339 435.514576 -L 162.500339 423.896949 -L 150.882712 423.896949 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 447.132203 -L 220.588475 447.132203 -L 208.970847 435.514576 -L 197.35322 435.514576 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 447.132203 -L 220.588475 423.896949 -L 208.970847 423.896949 -L 208.970847 435.514576 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 435.514576 -L 208.970847 435.514576 -L 208.970847 423.896949 -L 197.35322 423.896949 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 447.132203 -L 197.35322 435.514576 -L 197.35322 423.896949 -L 185.735593 423.896949 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 447.132203 -L 255.441356 447.132203 -L 243.823729 435.514576 -L 232.206102 435.514576 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 447.132203 -L 255.441356 423.896949 -L 243.823729 423.896949 -L 243.823729 435.514576 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 435.514576 -L 243.823729 435.514576 -L 243.823729 423.896949 -L 232.206102 423.896949 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 447.132203 -L 232.206102 435.514576 -L 232.206102 423.896949 -L 220.588475 423.896949 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 447.132203 -L 290.294237 447.132203 -L 278.67661 435.514576 -L 267.058983 435.514576 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 447.132203 -L 290.294237 423.896949 -L 278.67661 423.896949 -L 278.67661 435.514576 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 435.514576 -L 278.67661 435.514576 -L 278.67661 423.896949 -L 267.058983 423.896949 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 447.132203 -L 267.058983 435.514576 -L 267.058983 423.896949 -L 255.441356 423.896949 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 447.132203 -L 325.147119 447.132203 -L 313.529492 435.514576 -L 301.911864 435.514576 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 447.132203 -L 325.147119 423.896949 -L 313.529492 423.896949 -L 313.529492 435.514576 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 435.514576 -L 313.529492 435.514576 -L 313.529492 423.896949 -L 301.911864 423.896949 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 447.132203 -L 301.911864 435.514576 -L 301.911864 423.896949 -L 290.294237 423.896949 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 447.132203 -L 360 447.132203 -L 348.382373 435.514576 -L 336.764746 435.514576 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 447.132203 -L 360 423.896949 -L 348.382373 423.896949 -L 348.382373 435.514576 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 435.514576 -L 348.382373 435.514576 -L 348.382373 423.896949 -L 336.764746 423.896949 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 447.132203 -L 336.764746 435.514576 -L 336.764746 423.896949 -L 325.147119 423.896949 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 447.132203 -L 394.852881 447.132203 -L 383.235254 435.514576 -L 371.617627 435.514576 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 447.132203 -L 394.852881 423.896949 -L 383.235254 423.896949 -L 383.235254 435.514576 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 435.514576 -L 383.235254 435.514576 -L 383.235254 423.896949 -L 371.617627 423.896949 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 447.132203 -L 371.617627 435.514576 -L 371.617627 423.896949 -L 360 423.896949 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 447.132203 -L 429.705763 447.132203 -L 418.088136 435.514576 -L 406.470508 435.514576 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 447.132203 -L 429.705763 423.896949 -L 418.088136 423.896949 -L 418.088136 435.514576 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 435.514576 -L 418.088136 435.514576 -L 418.088136 423.896949 -L 406.470508 423.896949 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 447.132203 -L 406.470508 435.514576 -L 406.470508 423.896949 -L 394.852881 423.896949 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 447.132203 -L 464.558644 447.132203 -L 452.941017 435.514576 -L 441.32339 435.514576 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 447.132203 -L 464.558644 423.896949 -L 452.941017 423.896949 -L 452.941017 435.514576 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 435.514576 -L 452.941017 435.514576 -L 452.941017 423.896949 -L 441.32339 423.896949 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 447.132203 -L 441.32339 435.514576 -L 441.32339 423.896949 -L 429.705763 423.896949 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 447.132203 -L 499.411525 447.132203 -L 487.793898 435.514576 -L 476.176271 435.514576 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 447.132203 -L 499.411525 423.896949 -L 487.793898 423.896949 -L 487.793898 435.514576 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 435.514576 -L 487.793898 435.514576 -L 487.793898 423.896949 -L 476.176271 423.896949 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 447.132203 -L 476.176271 435.514576 -L 476.176271 423.896949 -L 464.558644 423.896949 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 447.132203 -L 534.264407 447.132203 -L 522.64678 435.514576 -L 511.029153 435.514576 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 447.132203 -L 534.264407 423.896949 -L 522.64678 423.896949 -L 522.64678 435.514576 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 435.514576 -L 522.64678 435.514576 -L 522.64678 423.896949 -L 511.029153 423.896949 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 447.132203 -L 511.029153 435.514576 -L 511.029153 423.896949 -L 499.411525 423.896949 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 447.132203 -L 569.117288 447.132203 -L 557.499661 435.514576 -L 545.882034 435.514576 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 447.132203 -L 569.117288 423.896949 -L 557.499661 423.896949 -L 557.499661 435.514576 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 435.514576 -L 557.499661 435.514576 -L 557.499661 423.896949 -L 545.882034 423.896949 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 447.132203 -L 545.882034 435.514576 -L 545.882034 423.896949 -L 534.264407 423.896949 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 447.132203 -L 603.970169 447.132203 -L 592.352542 435.514576 -L 580.734915 435.514576 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 447.132203 -L 603.970169 423.896949 -L 592.352542 423.896949 -L 592.352542 435.514576 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 435.514576 -L 592.352542 435.514576 -L 592.352542 423.896949 -L 580.734915 423.896949 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 447.132203 -L 580.734915 435.514576 -L 580.734915 423.896949 -L 569.117288 423.896949 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 447.132203 -L 638.823051 447.132203 -L 627.205424 435.514576 -L 615.587797 435.514576 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 447.132203 -L 638.823051 423.896949 -L 627.205424 423.896949 -L 627.205424 435.514576 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 435.514576 -L 627.205424 435.514576 -L 627.205424 423.896949 -L 615.587797 423.896949 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 447.132203 -L 615.587797 435.514576 -L 615.587797 423.896949 -L 603.970169 423.896949 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 447.132203 -L 673.675932 447.132203 -L 662.058305 435.514576 -L 650.440678 435.514576 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 673.675932 447.132203 -L 673.675932 423.896949 -L 662.058305 423.896949 -L 662.058305 435.514576 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 435.514576 -L 662.058305 435.514576 -L 662.058305 423.896949 -L 650.440678 423.896949 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 447.132203 -L 650.440678 435.514576 -L 650.440678 423.896949 -L 638.823051 423.896949 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 423.896949 -L 57.941695 423.896949 -L 57.941695 412.279322 -L 46.324068 412.279322 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 423.896949 -L 69.559322 423.896949 -L 69.559322 412.279322 -L 57.941695 412.279322 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 423.896949 -L 81.176949 423.896949 -L 81.176949 412.279322 -L 69.559322 412.279322 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 423.896949 -L 92.794576 423.896949 -L 92.794576 412.279322 -L 81.176949 412.279322 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 423.896949 -L 104.412203 423.896949 -L 104.412203 412.279322 -L 92.794576 412.279322 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 423.896949 -L 116.029831 423.896949 -L 116.029831 412.279322 -L 104.412203 412.279322 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 423.896949 -L 127.647458 423.896949 -L 127.647458 412.279322 -L 116.029831 412.279322 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 423.896949 -L 139.265085 423.896949 -L 139.265085 412.279322 -L 127.647458 412.279322 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 423.896949 -L 150.882712 423.896949 -L 150.882712 412.279322 -L 139.265085 412.279322 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 423.896949 -L 162.500339 423.896949 -L 162.500339 412.279322 -L 150.882712 412.279322 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 423.896949 -L 174.117966 423.896949 -L 174.117966 412.279322 -L 162.500339 412.279322 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 423.896949 -L 185.735593 423.896949 -L 185.735593 412.279322 -L 174.117966 412.279322 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 423.896949 -L 197.35322 423.896949 -L 197.35322 412.279322 -L 185.735593 412.279322 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 423.896949 -L 208.970847 423.896949 -L 208.970847 412.279322 -L 197.35322 412.279322 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 423.896949 -L 220.588475 423.896949 -L 220.588475 412.279322 -L 208.970847 412.279322 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 423.896949 -L 232.206102 423.896949 -L 232.206102 412.279322 -L 220.588475 412.279322 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 423.896949 -L 243.823729 423.896949 -L 243.823729 412.279322 -L 232.206102 412.279322 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 423.896949 -L 255.441356 423.896949 -L 255.441356 412.279322 -L 243.823729 412.279322 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 423.896949 -L 267.058983 423.896949 -L 267.058983 412.279322 -L 255.441356 412.279322 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 423.896949 -L 278.67661 423.896949 -L 278.67661 412.279322 -L 267.058983 412.279322 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 423.896949 -L 290.294237 423.896949 -L 290.294237 412.279322 -L 278.67661 412.279322 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 423.896949 -L 301.911864 423.896949 -L 301.911864 412.279322 -L 290.294237 412.279322 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 423.896949 -L 313.529492 423.896949 -L 313.529492 412.279322 -L 301.911864 412.279322 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 423.896949 -L 325.147119 423.896949 -L 325.147119 412.279322 -L 313.529492 412.279322 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 423.896949 -L 336.764746 423.896949 -L 336.764746 412.279322 -L 325.147119 412.279322 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 423.896949 -L 348.382373 423.896949 -L 348.382373 412.279322 -L 336.764746 412.279322 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 423.896949 -L 360 423.896949 -L 360 412.279322 -L 348.382373 412.279322 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 423.896949 -L 371.617627 423.896949 -L 371.617627 412.279322 -L 360 412.279322 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 423.896949 -L 383.235254 423.896949 -L 383.235254 412.279322 -L 371.617627 412.279322 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 423.896949 -L 394.852881 423.896949 -L 394.852881 412.279322 -L 383.235254 412.279322 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 423.896949 -L 406.470508 423.896949 -L 406.470508 412.279322 -L 394.852881 412.279322 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 423.896949 -L 418.088136 423.896949 -L 418.088136 412.279322 -L 406.470508 412.279322 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 423.896949 -L 429.705763 423.896949 -L 429.705763 412.279322 -L 418.088136 412.279322 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 423.896949 -L 441.32339 423.896949 -L 441.32339 412.279322 -L 429.705763 412.279322 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 423.896949 -L 452.941017 423.896949 -L 452.941017 412.279322 -L 441.32339 412.279322 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 423.896949 -L 464.558644 423.896949 -L 464.558644 412.279322 -L 452.941017 412.279322 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 423.896949 -L 476.176271 423.896949 -L 476.176271 412.279322 -L 464.558644 412.279322 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 423.896949 -L 487.793898 423.896949 -L 487.793898 412.279322 -L 476.176271 412.279322 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 423.896949 -L 499.411525 423.896949 -L 499.411525 412.279322 -L 487.793898 412.279322 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 423.896949 -L 511.029153 423.896949 -L 511.029153 412.279322 -L 499.411525 412.279322 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 423.896949 -L 522.64678 423.896949 -L 522.64678 412.279322 -L 511.029153 412.279322 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 423.896949 -L 534.264407 423.896949 -L 534.264407 412.279322 -L 522.64678 412.279322 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 423.896949 -L 545.882034 423.896949 -L 545.882034 412.279322 -L 534.264407 412.279322 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 423.896949 -L 557.499661 423.896949 -L 557.499661 412.279322 -L 545.882034 412.279322 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 423.896949 -L 569.117288 423.896949 -L 569.117288 412.279322 -L 557.499661 412.279322 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 423.896949 -L 580.734915 423.896949 -L 580.734915 412.279322 -L 569.117288 412.279322 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 423.896949 -L 592.352542 423.896949 -L 592.352542 412.279322 -L 580.734915 412.279322 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 423.896949 -L 603.970169 423.896949 -L 603.970169 412.279322 -L 592.352542 412.279322 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 423.896949 -L 615.587797 423.896949 -L 615.587797 412.279322 -L 603.970169 412.279322 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 423.896949 -L 627.205424 423.896949 -L 627.205424 412.279322 -L 615.587797 412.279322 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 423.896949 -L 638.823051 423.896949 -L 638.823051 412.279322 -L 627.205424 412.279322 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 423.896949 -L 650.440678 423.896949 -L 650.440678 412.279322 -L 638.823051 412.279322 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 423.896949 -L 662.058305 423.896949 -L 662.058305 412.279322 -L 650.440678 412.279322 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 423.896949 -L 673.675932 423.896949 -L 673.675932 412.279322 -L 662.058305 412.279322 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 412.279322 -L 57.941695 412.279322 -L 57.941695 400.661695 -L 46.324068 400.661695 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 412.279322 -L 69.559322 412.279322 -L 69.559322 400.661695 -L 57.941695 400.661695 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 412.279322 -L 81.176949 412.279322 -L 81.176949 400.661695 -L 69.559322 400.661695 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 412.279322 -L 92.794576 412.279322 -L 92.794576 400.661695 -L 81.176949 400.661695 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 412.279322 -L 104.412203 412.279322 -L 104.412203 400.661695 -L 92.794576 400.661695 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 412.279322 -L 116.029831 412.279322 -L 116.029831 400.661695 -L 104.412203 400.661695 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 412.279322 -L 127.647458 412.279322 -L 127.647458 400.661695 -L 116.029831 400.661695 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 412.279322 -L 139.265085 412.279322 -L 139.265085 400.661695 -L 127.647458 400.661695 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 412.279322 -L 150.882712 412.279322 -L 150.882712 400.661695 -L 139.265085 400.661695 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 412.279322 -L 162.500339 412.279322 -L 162.500339 400.661695 -L 150.882712 400.661695 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 412.279322 -L 174.117966 412.279322 -L 174.117966 400.661695 -L 162.500339 400.661695 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 412.279322 -L 185.735593 412.279322 -L 185.735593 400.661695 -L 174.117966 400.661695 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 412.279322 -L 197.35322 412.279322 -L 197.35322 400.661695 -L 185.735593 400.661695 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 412.279322 -L 208.970847 412.279322 -L 208.970847 400.661695 -L 197.35322 400.661695 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 412.279322 -L 220.588475 412.279322 -L 220.588475 400.661695 -L 208.970847 400.661695 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 412.279322 -L 232.206102 412.279322 -L 232.206102 400.661695 -L 220.588475 400.661695 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 412.279322 -L 243.823729 412.279322 -L 243.823729 400.661695 -L 232.206102 400.661695 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 412.279322 -L 255.441356 412.279322 -L 255.441356 400.661695 -L 243.823729 400.661695 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 412.279322 -L 267.058983 412.279322 -L 267.058983 400.661695 -L 255.441356 400.661695 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 412.279322 -L 278.67661 412.279322 -L 278.67661 400.661695 -L 267.058983 400.661695 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 412.279322 -L 290.294237 412.279322 -L 290.294237 400.661695 -L 278.67661 400.661695 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 412.279322 -L 301.911864 412.279322 -L 301.911864 400.661695 -L 290.294237 400.661695 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 412.279322 -L 313.529492 412.279322 -L 313.529492 400.661695 -L 301.911864 400.661695 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 412.279322 -L 325.147119 412.279322 -L 325.147119 400.661695 -L 313.529492 400.661695 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 412.279322 -L 336.764746 412.279322 -L 336.764746 400.661695 -L 325.147119 400.661695 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 412.279322 -L 348.382373 412.279322 -L 348.382373 400.661695 -L 336.764746 400.661695 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 412.279322 -L 360 412.279322 -L 360 400.661695 -L 348.382373 400.661695 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 412.279322 -L 371.617627 412.279322 -L 371.617627 400.661695 -L 360 400.661695 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 412.279322 -L 383.235254 412.279322 -L 383.235254 400.661695 -L 371.617627 400.661695 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 412.279322 -L 394.852881 412.279322 -L 394.852881 400.661695 -L 383.235254 400.661695 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 412.279322 -L 406.470508 412.279322 -L 406.470508 400.661695 -L 394.852881 400.661695 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 412.279322 -L 418.088136 412.279322 -L 418.088136 400.661695 -L 406.470508 400.661695 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 412.279322 -L 429.705763 412.279322 -L 429.705763 400.661695 -L 418.088136 400.661695 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 412.279322 -L 441.32339 412.279322 -L 441.32339 400.661695 -L 429.705763 400.661695 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 412.279322 -L 452.941017 412.279322 -L 452.941017 400.661695 -L 441.32339 400.661695 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 412.279322 -L 464.558644 412.279322 -L 464.558644 400.661695 -L 452.941017 400.661695 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 412.279322 -L 476.176271 412.279322 -L 476.176271 400.661695 -L 464.558644 400.661695 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 412.279322 -L 487.793898 412.279322 -L 487.793898 400.661695 -L 476.176271 400.661695 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 412.279322 -L 499.411525 412.279322 -L 499.411525 400.661695 -L 487.793898 400.661695 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 412.279322 -L 511.029153 412.279322 -L 511.029153 400.661695 -L 499.411525 400.661695 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 412.279322 -L 522.64678 412.279322 -L 522.64678 400.661695 -L 511.029153 400.661695 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 412.279322 -L 534.264407 412.279322 -L 534.264407 400.661695 -L 522.64678 400.661695 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 412.279322 -L 545.882034 412.279322 -L 545.882034 400.661695 -L 534.264407 400.661695 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 412.279322 -L 557.499661 412.279322 -L 557.499661 400.661695 -L 545.882034 400.661695 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 412.279322 -L 569.117288 412.279322 -L 569.117288 400.661695 -L 557.499661 400.661695 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 412.279322 -L 580.734915 412.279322 -L 580.734915 400.661695 -L 569.117288 400.661695 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 412.279322 -L 592.352542 412.279322 -L 592.352542 400.661695 -L 580.734915 400.661695 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 412.279322 -L 603.970169 412.279322 -L 603.970169 400.661695 -L 592.352542 400.661695 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 412.279322 -L 615.587797 412.279322 -L 615.587797 400.661695 -L 603.970169 400.661695 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 412.279322 -L 627.205424 412.279322 -L 627.205424 400.661695 -L 615.587797 400.661695 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 412.279322 -L 638.823051 412.279322 -L 638.823051 400.661695 -L 627.205424 400.661695 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 412.279322 -L 650.440678 412.279322 -L 650.440678 400.661695 -L 638.823051 400.661695 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 412.279322 -L 662.058305 412.279322 -L 662.058305 400.661695 -L 650.440678 400.661695 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 412.279322 -L 673.675932 412.279322 -L 673.675932 400.661695 -L 662.058305 400.661695 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 400.661695 -L 57.941695 400.661695 -L 57.941695 389.044068 -L 46.324068 389.044068 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 400.661695 -L 69.559322 400.661695 -L 69.559322 389.044068 -L 57.941695 389.044068 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 400.661695 -L 81.176949 400.661695 -L 81.176949 389.044068 -L 69.559322 389.044068 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 400.661695 -L 92.794576 400.661695 -L 92.794576 389.044068 -L 81.176949 389.044068 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 400.661695 -L 104.412203 400.661695 -L 104.412203 389.044068 -L 92.794576 389.044068 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 400.661695 -L 116.029831 400.661695 -L 116.029831 389.044068 -L 104.412203 389.044068 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 400.661695 -L 127.647458 400.661695 -L 127.647458 389.044068 -L 116.029831 389.044068 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 400.661695 -L 139.265085 400.661695 -L 139.265085 389.044068 -L 127.647458 389.044068 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 400.661695 -L 150.882712 400.661695 -L 150.882712 389.044068 -L 139.265085 389.044068 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 400.661695 -L 162.500339 400.661695 -L 162.500339 389.044068 -L 150.882712 389.044068 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 400.661695 -L 174.117966 400.661695 -L 174.117966 389.044068 -L 162.500339 389.044068 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 400.661695 -L 185.735593 400.661695 -L 185.735593 389.044068 -L 174.117966 389.044068 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 400.661695 -L 197.35322 400.661695 -L 197.35322 389.044068 -L 185.735593 389.044068 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 400.661695 -L 208.970847 400.661695 -L 208.970847 389.044068 -L 197.35322 389.044068 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 400.661695 -L 220.588475 400.661695 -L 220.588475 389.044068 -L 208.970847 389.044068 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 400.661695 -L 232.206102 400.661695 -L 232.206102 389.044068 -L 220.588475 389.044068 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 400.661695 -L 243.823729 400.661695 -L 243.823729 389.044068 -L 232.206102 389.044068 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 400.661695 -L 255.441356 400.661695 -L 255.441356 389.044068 -L 243.823729 389.044068 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 400.661695 -L 267.058983 400.661695 -L 267.058983 389.044068 -L 255.441356 389.044068 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 400.661695 -L 278.67661 400.661695 -L 278.67661 389.044068 -L 267.058983 389.044068 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 400.661695 -L 290.294237 400.661695 -L 290.294237 389.044068 -L 278.67661 389.044068 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 400.661695 -L 301.911864 400.661695 -L 301.911864 389.044068 -L 290.294237 389.044068 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 400.661695 -L 313.529492 400.661695 -L 313.529492 389.044068 -L 301.911864 389.044068 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 400.661695 -L 325.147119 400.661695 -L 325.147119 389.044068 -L 313.529492 389.044068 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 400.661695 -L 336.764746 400.661695 -L 336.764746 389.044068 -L 325.147119 389.044068 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 400.661695 -L 348.382373 400.661695 -L 348.382373 389.044068 -L 336.764746 389.044068 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 400.661695 -L 360 400.661695 -L 360 389.044068 -L 348.382373 389.044068 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 400.661695 -L 371.617627 400.661695 -L 371.617627 389.044068 -L 360 389.044068 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 400.661695 -L 383.235254 400.661695 -L 383.235254 389.044068 -L 371.617627 389.044068 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 400.661695 -L 394.852881 400.661695 -L 394.852881 389.044068 -L 383.235254 389.044068 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 400.661695 -L 406.470508 400.661695 -L 406.470508 389.044068 -L 394.852881 389.044068 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 400.661695 -L 418.088136 400.661695 -L 418.088136 389.044068 -L 406.470508 389.044068 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 400.661695 -L 429.705763 400.661695 -L 429.705763 389.044068 -L 418.088136 389.044068 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 400.661695 -L 441.32339 400.661695 -L 441.32339 389.044068 -L 429.705763 389.044068 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 400.661695 -L 452.941017 400.661695 -L 452.941017 389.044068 -L 441.32339 389.044068 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 400.661695 -L 464.558644 400.661695 -L 464.558644 389.044068 -L 452.941017 389.044068 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 400.661695 -L 476.176271 400.661695 -L 476.176271 389.044068 -L 464.558644 389.044068 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 400.661695 -L 487.793898 400.661695 -L 487.793898 389.044068 -L 476.176271 389.044068 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 400.661695 -L 499.411525 400.661695 -L 499.411525 389.044068 -L 487.793898 389.044068 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 400.661695 -L 511.029153 400.661695 -L 511.029153 389.044068 -L 499.411525 389.044068 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 400.661695 -L 522.64678 400.661695 -L 522.64678 389.044068 -L 511.029153 389.044068 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 400.661695 -L 534.264407 400.661695 -L 534.264407 389.044068 -L 522.64678 389.044068 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 400.661695 -L 545.882034 400.661695 -L 545.882034 389.044068 -L 534.264407 389.044068 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 400.661695 -L 557.499661 400.661695 -L 557.499661 389.044068 -L 545.882034 389.044068 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 400.661695 -L 569.117288 400.661695 -L 569.117288 389.044068 -L 557.499661 389.044068 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 400.661695 -L 580.734915 400.661695 -L 580.734915 389.044068 -L 569.117288 389.044068 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 400.661695 -L 592.352542 400.661695 -L 592.352542 389.044068 -L 580.734915 389.044068 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 400.661695 -L 603.970169 400.661695 -L 603.970169 389.044068 -L 592.352542 389.044068 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 400.661695 -L 615.587797 400.661695 -L 615.587797 389.044068 -L 603.970169 389.044068 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 400.661695 -L 627.205424 400.661695 -L 627.205424 389.044068 -L 615.587797 389.044068 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 400.661695 -L 638.823051 400.661695 -L 638.823051 389.044068 -L 627.205424 389.044068 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 400.661695 -L 650.440678 400.661695 -L 650.440678 389.044068 -L 638.823051 389.044068 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 400.661695 -L 662.058305 400.661695 -L 662.058305 389.044068 -L 650.440678 389.044068 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 400.661695 -L 673.675932 400.661695 -L 673.675932 389.044068 -L 662.058305 389.044068 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 389.044068 -L 57.941695 389.044068 -L 57.941695 377.426441 -L 46.324068 377.426441 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 389.044068 -L 69.559322 389.044068 -L 69.559322 377.426441 -L 57.941695 377.426441 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 389.044068 -L 81.176949 389.044068 -L 81.176949 377.426441 -L 69.559322 377.426441 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 389.044068 -L 92.794576 389.044068 -L 92.794576 377.426441 -L 81.176949 377.426441 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 389.044068 -L 104.412203 389.044068 -L 104.412203 377.426441 -L 92.794576 377.426441 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 389.044068 -L 116.029831 389.044068 -L 116.029831 377.426441 -L 104.412203 377.426441 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 389.044068 -L 127.647458 389.044068 -L 127.647458 377.426441 -L 116.029831 377.426441 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 389.044068 -L 139.265085 389.044068 -L 139.265085 377.426441 -L 127.647458 377.426441 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 389.044068 -L 150.882712 389.044068 -L 150.882712 377.426441 -L 139.265085 377.426441 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 389.044068 -L 162.500339 389.044068 -L 162.500339 377.426441 -L 150.882712 377.426441 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 389.044068 -L 174.117966 389.044068 -L 174.117966 377.426441 -L 162.500339 377.426441 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 389.044068 -L 185.735593 389.044068 -L 185.735593 377.426441 -L 174.117966 377.426441 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 389.044068 -L 197.35322 389.044068 -L 197.35322 377.426441 -L 185.735593 377.426441 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 389.044068 -L 208.970847 389.044068 -L 208.970847 377.426441 -L 197.35322 377.426441 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 389.044068 -L 220.588475 389.044068 -L 220.588475 377.426441 -L 208.970847 377.426441 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 389.044068 -L 232.206102 389.044068 -L 232.206102 377.426441 -L 220.588475 377.426441 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 389.044068 -L 243.823729 389.044068 -L 243.823729 377.426441 -L 232.206102 377.426441 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 389.044068 -L 255.441356 389.044068 -L 255.441356 377.426441 -L 243.823729 377.426441 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 389.044068 -L 267.058983 389.044068 -L 267.058983 377.426441 -L 255.441356 377.426441 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 389.044068 -L 278.67661 389.044068 -L 278.67661 377.426441 -L 267.058983 377.426441 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 389.044068 -L 290.294237 389.044068 -L 290.294237 377.426441 -L 278.67661 377.426441 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 389.044068 -L 301.911864 389.044068 -L 301.911864 377.426441 -L 290.294237 377.426441 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 389.044068 -L 313.529492 389.044068 -L 313.529492 377.426441 -L 301.911864 377.426441 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 389.044068 -L 325.147119 389.044068 -L 325.147119 377.426441 -L 313.529492 377.426441 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 389.044068 -L 336.764746 389.044068 -L 336.764746 377.426441 -L 325.147119 377.426441 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 389.044068 -L 348.382373 389.044068 -L 348.382373 377.426441 -L 336.764746 377.426441 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 389.044068 -L 360 389.044068 -L 360 377.426441 -L 348.382373 377.426441 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 389.044068 -L 371.617627 389.044068 -L 371.617627 377.426441 -L 360 377.426441 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 389.044068 -L 383.235254 389.044068 -L 383.235254 377.426441 -L 371.617627 377.426441 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 389.044068 -L 394.852881 389.044068 -L 394.852881 377.426441 -L 383.235254 377.426441 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 389.044068 -L 406.470508 389.044068 -L 406.470508 377.426441 -L 394.852881 377.426441 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 389.044068 -L 418.088136 389.044068 -L 418.088136 377.426441 -L 406.470508 377.426441 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 389.044068 -L 429.705763 389.044068 -L 429.705763 377.426441 -L 418.088136 377.426441 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 389.044068 -L 441.32339 389.044068 -L 441.32339 377.426441 -L 429.705763 377.426441 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 389.044068 -L 452.941017 389.044068 -L 452.941017 377.426441 -L 441.32339 377.426441 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 389.044068 -L 464.558644 389.044068 -L 464.558644 377.426441 -L 452.941017 377.426441 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 389.044068 -L 476.176271 389.044068 -L 476.176271 377.426441 -L 464.558644 377.426441 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 389.044068 -L 487.793898 389.044068 -L 487.793898 377.426441 -L 476.176271 377.426441 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 389.044068 -L 499.411525 389.044068 -L 499.411525 377.426441 -L 487.793898 377.426441 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 389.044068 -L 511.029153 389.044068 -L 511.029153 377.426441 -L 499.411525 377.426441 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 389.044068 -L 522.64678 389.044068 -L 522.64678 377.426441 -L 511.029153 377.426441 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 389.044068 -L 534.264407 389.044068 -L 534.264407 377.426441 -L 522.64678 377.426441 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 389.044068 -L 545.882034 389.044068 -L 545.882034 377.426441 -L 534.264407 377.426441 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 389.044068 -L 557.499661 389.044068 -L 557.499661 377.426441 -L 545.882034 377.426441 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 389.044068 -L 569.117288 389.044068 -L 569.117288 377.426441 -L 557.499661 377.426441 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 389.044068 -L 580.734915 389.044068 -L 580.734915 377.426441 -L 569.117288 377.426441 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 389.044068 -L 592.352542 389.044068 -L 592.352542 377.426441 -L 580.734915 377.426441 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 389.044068 -L 603.970169 389.044068 -L 603.970169 377.426441 -L 592.352542 377.426441 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 389.044068 -L 615.587797 389.044068 -L 615.587797 377.426441 -L 603.970169 377.426441 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 389.044068 -L 627.205424 389.044068 -L 627.205424 377.426441 -L 615.587797 377.426441 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 389.044068 -L 638.823051 389.044068 -L 638.823051 377.426441 -L 627.205424 377.426441 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 389.044068 -L 650.440678 389.044068 -L 650.440678 377.426441 -L 638.823051 377.426441 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 389.044068 -L 662.058305 389.044068 -L 662.058305 377.426441 -L 650.440678 377.426441 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 389.044068 -L 673.675932 389.044068 -L 673.675932 377.426441 -L 662.058305 377.426441 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 377.426441 -L 57.941695 377.426441 -L 57.941695 365.808814 -L 46.324068 365.808814 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 377.426441 -L 69.559322 377.426441 -L 69.559322 365.808814 -L 57.941695 365.808814 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 377.426441 -L 81.176949 377.426441 -L 81.176949 365.808814 -L 69.559322 365.808814 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 377.426441 -L 92.794576 377.426441 -L 92.794576 365.808814 -L 81.176949 365.808814 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 377.426441 -L 104.412203 377.426441 -L 104.412203 365.808814 -L 92.794576 365.808814 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 377.426441 -L 116.029831 377.426441 -L 116.029831 365.808814 -L 104.412203 365.808814 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 377.426441 -L 127.647458 377.426441 -L 127.647458 365.808814 -L 116.029831 365.808814 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 377.426441 -L 139.265085 377.426441 -L 139.265085 365.808814 -L 127.647458 365.808814 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 377.426441 -L 150.882712 377.426441 -L 150.882712 365.808814 -L 139.265085 365.808814 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 377.426441 -L 162.500339 377.426441 -L 162.500339 365.808814 -L 150.882712 365.808814 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 377.426441 -L 174.117966 377.426441 -L 174.117966 365.808814 -L 162.500339 365.808814 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 377.426441 -L 185.735593 377.426441 -L 185.735593 365.808814 -L 174.117966 365.808814 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 377.426441 -L 197.35322 377.426441 -L 197.35322 365.808814 -L 185.735593 365.808814 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 377.426441 -L 208.970847 377.426441 -L 208.970847 365.808814 -L 197.35322 365.808814 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 377.426441 -L 220.588475 377.426441 -L 220.588475 365.808814 -L 208.970847 365.808814 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 377.426441 -L 232.206102 377.426441 -L 232.206102 365.808814 -L 220.588475 365.808814 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 377.426441 -L 243.823729 377.426441 -L 243.823729 365.808814 -L 232.206102 365.808814 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 377.426441 -L 255.441356 377.426441 -L 255.441356 365.808814 -L 243.823729 365.808814 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 377.426441 -L 267.058983 377.426441 -L 267.058983 365.808814 -L 255.441356 365.808814 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 377.426441 -L 278.67661 377.426441 -L 278.67661 365.808814 -L 267.058983 365.808814 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 377.426441 -L 290.294237 377.426441 -L 290.294237 365.808814 -L 278.67661 365.808814 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 377.426441 -L 301.911864 377.426441 -L 301.911864 365.808814 -L 290.294237 365.808814 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 377.426441 -L 313.529492 377.426441 -L 313.529492 365.808814 -L 301.911864 365.808814 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 377.426441 -L 325.147119 377.426441 -L 325.147119 365.808814 -L 313.529492 365.808814 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 377.426441 -L 336.764746 377.426441 -L 336.764746 365.808814 -L 325.147119 365.808814 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 377.426441 -L 348.382373 377.426441 -L 348.382373 365.808814 -L 336.764746 365.808814 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 377.426441 -L 360 377.426441 -L 360 365.808814 -L 348.382373 365.808814 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 377.426441 -L 371.617627 377.426441 -L 371.617627 365.808814 -L 360 365.808814 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 377.426441 -L 383.235254 377.426441 -L 383.235254 365.808814 -L 371.617627 365.808814 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 377.426441 -L 394.852881 377.426441 -L 394.852881 365.808814 -L 383.235254 365.808814 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 377.426441 -L 406.470508 377.426441 -L 406.470508 365.808814 -L 394.852881 365.808814 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 377.426441 -L 418.088136 377.426441 -L 418.088136 365.808814 -L 406.470508 365.808814 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 377.426441 -L 429.705763 377.426441 -L 429.705763 365.808814 -L 418.088136 365.808814 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 377.426441 -L 441.32339 377.426441 -L 441.32339 365.808814 -L 429.705763 365.808814 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 377.426441 -L 452.941017 377.426441 -L 452.941017 365.808814 -L 441.32339 365.808814 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 377.426441 -L 464.558644 377.426441 -L 464.558644 365.808814 -L 452.941017 365.808814 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 377.426441 -L 476.176271 377.426441 -L 476.176271 365.808814 -L 464.558644 365.808814 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 377.426441 -L 487.793898 377.426441 -L 487.793898 365.808814 -L 476.176271 365.808814 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 377.426441 -L 499.411525 377.426441 -L 499.411525 365.808814 -L 487.793898 365.808814 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 377.426441 -L 511.029153 377.426441 -L 511.029153 365.808814 -L 499.411525 365.808814 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 377.426441 -L 522.64678 377.426441 -L 522.64678 365.808814 -L 511.029153 365.808814 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 377.426441 -L 534.264407 377.426441 -L 534.264407 365.808814 -L 522.64678 365.808814 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 377.426441 -L 545.882034 377.426441 -L 545.882034 365.808814 -L 534.264407 365.808814 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 377.426441 -L 557.499661 377.426441 -L 557.499661 365.808814 -L 545.882034 365.808814 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 377.426441 -L 569.117288 377.426441 -L 569.117288 365.808814 -L 557.499661 365.808814 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 377.426441 -L 580.734915 377.426441 -L 580.734915 365.808814 -L 569.117288 365.808814 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 377.426441 -L 592.352542 377.426441 -L 592.352542 365.808814 -L 580.734915 365.808814 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 377.426441 -L 603.970169 377.426441 -L 603.970169 365.808814 -L 592.352542 365.808814 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 377.426441 -L 615.587797 377.426441 -L 615.587797 365.808814 -L 603.970169 365.808814 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 377.426441 -L 627.205424 377.426441 -L 627.205424 365.808814 -L 615.587797 365.808814 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 377.426441 -L 638.823051 377.426441 -L 638.823051 365.808814 -L 627.205424 365.808814 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 377.426441 -L 650.440678 377.426441 -L 650.440678 365.808814 -L 638.823051 365.808814 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 377.426441 -L 662.058305 377.426441 -L 662.058305 365.808814 -L 650.440678 365.808814 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 377.426441 -L 673.675932 377.426441 -L 673.675932 365.808814 -L 662.058305 365.808814 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 365.808814 -L 57.941695 365.808814 -L 57.941695 354.191186 -L 46.324068 342.573559 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 365.808814 -L 69.559322 365.808814 -L 69.559322 354.191186 -L 57.941695 354.191186 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 69.559322 365.808814 -L 81.176949 365.808814 -L 81.176949 342.573559 -L 69.559322 354.191186 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 57.941695 354.191186 -L 69.559322 354.191186 -L 81.176949 342.573559 -L 46.324068 342.573559 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 365.808814 -L 92.794576 365.808814 -L 92.794576 354.191186 -L 81.176949 342.573559 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 365.808814 -L 104.412203 365.808814 -L 104.412203 354.191186 -L 92.794576 354.191186 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 104.412203 365.808814 -L 116.029831 365.808814 -L 116.029831 342.573559 -L 104.412203 354.191186 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 92.794576 354.191186 -L 104.412203 354.191186 -L 116.029831 342.573559 -L 81.176949 342.573559 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 365.808814 -L 127.647458 365.808814 -L 127.647458 354.191186 -L 116.029831 342.573559 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 365.808814 -L 139.265085 365.808814 -L 139.265085 354.191186 -L 127.647458 354.191186 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 139.265085 365.808814 -L 150.882712 365.808814 -L 150.882712 342.573559 -L 139.265085 354.191186 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 127.647458 354.191186 -L 139.265085 354.191186 -L 150.882712 342.573559 -L 116.029831 342.573559 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 365.808814 -L 162.500339 365.808814 -L 162.500339 354.191186 -L 150.882712 342.573559 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 365.808814 -L 174.117966 365.808814 -L 174.117966 354.191186 -L 162.500339 354.191186 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 174.117966 365.808814 -L 185.735593 365.808814 -L 185.735593 342.573559 -L 174.117966 354.191186 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 162.500339 354.191186 -L 174.117966 354.191186 -L 185.735593 342.573559 -L 150.882712 342.573559 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 365.808814 -L 197.35322 365.808814 -L 197.35322 354.191186 -L 185.735593 342.573559 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 365.808814 -L 208.970847 365.808814 -L 208.970847 354.191186 -L 197.35322 354.191186 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 208.970847 365.808814 -L 220.588475 365.808814 -L 220.588475 342.573559 -L 208.970847 354.191186 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 197.35322 354.191186 -L 208.970847 354.191186 -L 220.588475 342.573559 -L 185.735593 342.573559 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 365.808814 -L 232.206102 365.808814 -L 232.206102 354.191186 -L 220.588475 342.573559 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 365.808814 -L 243.823729 365.808814 -L 243.823729 354.191186 -L 232.206102 354.191186 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 243.823729 365.808814 -L 255.441356 365.808814 -L 255.441356 342.573559 -L 243.823729 354.191186 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 232.206102 354.191186 -L 243.823729 354.191186 -L 255.441356 342.573559 -L 220.588475 342.573559 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 365.808814 -L 267.058983 365.808814 -L 267.058983 354.191186 -L 255.441356 342.573559 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 365.808814 -L 278.67661 365.808814 -L 278.67661 354.191186 -L 267.058983 354.191186 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 278.67661 365.808814 -L 290.294237 365.808814 -L 290.294237 342.573559 -L 278.67661 354.191186 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 267.058983 354.191186 -L 278.67661 354.191186 -L 290.294237 342.573559 -L 255.441356 342.573559 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 365.808814 -L 301.911864 365.808814 -L 301.911864 354.191186 -L 290.294237 342.573559 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 365.808814 -L 313.529492 365.808814 -L 313.529492 354.191186 -L 301.911864 354.191186 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 313.529492 365.808814 -L 325.147119 365.808814 -L 325.147119 342.573559 -L 313.529492 354.191186 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 301.911864 354.191186 -L 313.529492 354.191186 -L 325.147119 342.573559 -L 290.294237 342.573559 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 365.808814 -L 336.764746 365.808814 -L 336.764746 354.191186 -L 325.147119 342.573559 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 365.808814 -L 348.382373 365.808814 -L 348.382373 354.191186 -L 336.764746 354.191186 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 348.382373 365.808814 -L 360 365.808814 -L 360 342.573559 -L 348.382373 354.191186 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 336.764746 354.191186 -L 348.382373 354.191186 -L 360 342.573559 -L 325.147119 342.573559 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 365.808814 -L 371.617627 365.808814 -L 371.617627 354.191186 -L 360 342.573559 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 365.808814 -L 383.235254 365.808814 -L 383.235254 354.191186 -L 371.617627 354.191186 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 383.235254 365.808814 -L 394.852881 365.808814 -L 394.852881 342.573559 -L 383.235254 354.191186 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 371.617627 354.191186 -L 383.235254 354.191186 -L 394.852881 342.573559 -L 360 342.573559 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 365.808814 -L 406.470508 365.808814 -L 406.470508 354.191186 -L 394.852881 342.573559 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 365.808814 -L 418.088136 365.808814 -L 418.088136 354.191186 -L 406.470508 354.191186 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 418.088136 365.808814 -L 429.705763 365.808814 -L 429.705763 342.573559 -L 418.088136 354.191186 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 406.470508 354.191186 -L 418.088136 354.191186 -L 429.705763 342.573559 -L 394.852881 342.573559 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 365.808814 -L 441.32339 365.808814 -L 441.32339 354.191186 -L 429.705763 342.573559 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 365.808814 -L 452.941017 365.808814 -L 452.941017 354.191186 -L 441.32339 354.191186 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 452.941017 365.808814 -L 464.558644 365.808814 -L 464.558644 342.573559 -L 452.941017 354.191186 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 441.32339 354.191186 -L 452.941017 354.191186 -L 464.558644 342.573559 -L 429.705763 342.573559 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 365.808814 -L 476.176271 365.808814 -L 476.176271 354.191186 -L 464.558644 342.573559 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 365.808814 -L 487.793898 365.808814 -L 487.793898 354.191186 -L 476.176271 354.191186 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 487.793898 365.808814 -L 499.411525 365.808814 -L 499.411525 342.573559 -L 487.793898 354.191186 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 476.176271 354.191186 -L 487.793898 354.191186 -L 499.411525 342.573559 -L 464.558644 342.573559 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 365.808814 -L 511.029153 365.808814 -L 511.029153 354.191186 -L 499.411525 342.573559 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 365.808814 -L 522.64678 365.808814 -L 522.64678 354.191186 -L 511.029153 354.191186 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 522.64678 365.808814 -L 534.264407 365.808814 -L 534.264407 342.573559 -L 522.64678 354.191186 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 511.029153 354.191186 -L 522.64678 354.191186 -L 534.264407 342.573559 -L 499.411525 342.573559 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 365.808814 -L 545.882034 365.808814 -L 545.882034 354.191186 -L 534.264407 342.573559 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 365.808814 -L 557.499661 365.808814 -L 557.499661 354.191186 -L 545.882034 354.191186 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 557.499661 365.808814 -L 569.117288 365.808814 -L 569.117288 342.573559 -L 557.499661 354.191186 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 545.882034 354.191186 -L 557.499661 354.191186 -L 569.117288 342.573559 -L 534.264407 342.573559 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 365.808814 -L 580.734915 365.808814 -L 580.734915 354.191186 -L 569.117288 342.573559 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 365.808814 -L 592.352542 365.808814 -L 592.352542 354.191186 -L 580.734915 354.191186 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 592.352542 365.808814 -L 603.970169 365.808814 -L 603.970169 342.573559 -L 592.352542 354.191186 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 580.734915 354.191186 -L 592.352542 354.191186 -L 603.970169 342.573559 -L 569.117288 342.573559 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 365.808814 -L 615.587797 365.808814 -L 615.587797 354.191186 -L 603.970169 342.573559 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 365.808814 -L 627.205424 365.808814 -L 627.205424 354.191186 -L 615.587797 354.191186 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 627.205424 365.808814 -L 638.823051 365.808814 -L 638.823051 342.573559 -L 627.205424 354.191186 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 615.587797 354.191186 -L 627.205424 354.191186 -L 638.823051 342.573559 -L 603.970169 342.573559 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 365.808814 -L 650.440678 365.808814 -L 650.440678 354.191186 -L 638.823051 342.573559 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 365.808814 -L 662.058305 365.808814 -L 662.058305 354.191186 -L 650.440678 354.191186 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 662.058305 365.808814 -L 673.675932 365.808814 -L 673.675932 342.573559 -L 662.058305 354.191186 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 650.440678 354.191186 -L 662.058305 354.191186 -L 673.675932 342.573559 -L 638.823051 342.573559 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 342.573559 -L 81.176949 342.573559 -L 81.176949 307.720678 -L 46.324068 307.720678 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 342.573559 -L 116.029831 342.573559 -L 116.029831 307.720678 -L 81.176949 307.720678 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 342.573559 -L 150.882712 342.573559 -L 150.882712 307.720678 -L 116.029831 307.720678 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 342.573559 -L 185.735593 342.573559 -L 185.735593 307.720678 -L 150.882712 307.720678 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 342.573559 -L 220.588475 342.573559 -L 220.588475 307.720678 -L 185.735593 307.720678 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 342.573559 -L 255.441356 342.573559 -L 255.441356 307.720678 -L 220.588475 307.720678 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 342.573559 -L 290.294237 342.573559 -L 290.294237 307.720678 -L 255.441356 307.720678 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 342.573559 -L 325.147119 342.573559 -L 325.147119 307.720678 -L 290.294237 307.720678 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 342.573559 -L 360 342.573559 -L 360 307.720678 -L 325.147119 307.720678 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 342.573559 -L 394.852881 342.573559 -L 394.852881 307.720678 -L 360 307.720678 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 342.573559 -L 429.705763 342.573559 -L 429.705763 307.720678 -L 394.852881 307.720678 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 342.573559 -L 464.558644 342.573559 -L 464.558644 307.720678 -L 429.705763 307.720678 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 342.573559 -L 499.411525 342.573559 -L 499.411525 307.720678 -L 464.558644 307.720678 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 342.573559 -L 534.264407 342.573559 -L 534.264407 307.720678 -L 499.411525 307.720678 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 342.573559 -L 569.117288 342.573559 -L 569.117288 307.720678 -L 534.264407 307.720678 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 342.573559 -L 603.970169 342.573559 -L 603.970169 307.720678 -L 569.117288 307.720678 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 342.573559 -L 638.823051 342.573559 -L 638.823051 307.720678 -L 603.970169 307.720678 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 342.573559 -L 673.675932 342.573559 -L 673.675932 307.720678 -L 638.823051 307.720678 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 307.720678 -L 81.176949 307.720678 -L 81.176949 272.867797 -L 46.324068 272.867797 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 307.720678 -L 116.029831 307.720678 -L 116.029831 272.867797 -L 81.176949 272.867797 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 307.720678 -L 150.882712 307.720678 -L 150.882712 272.867797 -L 116.029831 272.867797 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 307.720678 -L 185.735593 307.720678 -L 185.735593 272.867797 -L 150.882712 272.867797 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 307.720678 -L 220.588475 307.720678 -L 220.588475 272.867797 -L 185.735593 272.867797 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 307.720678 -L 255.441356 307.720678 -L 255.441356 272.867797 -L 220.588475 272.867797 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 307.720678 -L 290.294237 307.720678 -L 290.294237 272.867797 -L 255.441356 272.867797 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 307.720678 -L 325.147119 307.720678 -L 325.147119 272.867797 -L 290.294237 272.867797 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 307.720678 -L 360 307.720678 -L 360 272.867797 -L 325.147119 272.867797 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 307.720678 -L 394.852881 307.720678 -L 394.852881 272.867797 -L 360 272.867797 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 307.720678 -L 429.705763 307.720678 -L 429.705763 272.867797 -L 394.852881 272.867797 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 307.720678 -L 464.558644 307.720678 -L 464.558644 272.867797 -L 429.705763 272.867797 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 307.720678 -L 499.411525 307.720678 -L 499.411525 272.867797 -L 464.558644 272.867797 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 307.720678 -L 534.264407 307.720678 -L 534.264407 272.867797 -L 499.411525 272.867797 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 307.720678 -L 569.117288 307.720678 -L 569.117288 272.867797 -L 534.264407 272.867797 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 307.720678 -L 603.970169 307.720678 -L 603.970169 272.867797 -L 569.117288 272.867797 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 307.720678 -L 638.823051 307.720678 -L 638.823051 272.867797 -L 603.970169 272.867797 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 307.720678 -L 673.675932 307.720678 -L 673.675932 272.867797 -L 638.823051 272.867797 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 272.867797 -L 81.176949 272.867797 -L 81.176949 238.014915 -L 46.324068 203.162034 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 272.867797 -L 116.029831 272.867797 -L 116.029831 238.014915 -L 81.176949 238.014915 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 116.029831 272.867797 -L 150.882712 272.867797 -L 150.882712 203.162034 -L 116.029831 238.014915 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 81.176949 238.014915 -L 116.029831 238.014915 -L 150.882712 203.162034 -L 46.324068 203.162034 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 272.867797 -L 185.735593 272.867797 -L 185.735593 238.014915 -L 150.882712 203.162034 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 272.867797 -L 220.588475 272.867797 -L 220.588475 238.014915 -L 185.735593 238.014915 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 220.588475 272.867797 -L 255.441356 272.867797 -L 255.441356 203.162034 -L 220.588475 238.014915 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 185.735593 238.014915 -L 220.588475 238.014915 -L 255.441356 203.162034 -L 150.882712 203.162034 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 272.867797 -L 290.294237 272.867797 -L 290.294237 238.014915 -L 255.441356 203.162034 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 272.867797 -L 325.147119 272.867797 -L 325.147119 238.014915 -L 290.294237 238.014915 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 325.147119 272.867797 -L 360 272.867797 -L 360 203.162034 -L 325.147119 238.014915 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 290.294237 238.014915 -L 325.147119 238.014915 -L 360 203.162034 -L 255.441356 203.162034 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 272.867797 -L 394.852881 272.867797 -L 394.852881 238.014915 -L 360 203.162034 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 272.867797 -L 429.705763 272.867797 -L 429.705763 238.014915 -L 394.852881 238.014915 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 429.705763 272.867797 -L 464.558644 272.867797 -L 464.558644 203.162034 -L 429.705763 238.014915 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 394.852881 238.014915 -L 429.705763 238.014915 -L 464.558644 203.162034 -L 360 203.162034 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 272.867797 -L 499.411525 272.867797 -L 499.411525 238.014915 -L 464.558644 203.162034 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 272.867797 -L 534.264407 272.867797 -L 534.264407 238.014915 -L 499.411525 238.014915 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 534.264407 272.867797 -L 569.117288 272.867797 -L 569.117288 203.162034 -L 534.264407 238.014915 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 499.411525 238.014915 -L 534.264407 238.014915 -L 569.117288 203.162034 -L 464.558644 203.162034 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 272.867797 -L 603.970169 272.867797 -L 603.970169 238.014915 -L 569.117288 203.162034 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 272.867797 -L 638.823051 272.867797 -L 638.823051 238.014915 -L 603.970169 238.014915 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 638.823051 272.867797 -L 673.675932 272.867797 -L 673.675932 203.162034 -L 638.823051 238.014915 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 603.970169 238.014915 -L 638.823051 238.014915 -L 673.675932 203.162034 -L 569.117288 203.162034 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 46.324068 203.162034 -L 150.882712 203.162034 -L 150.882712 98.60339 -L 46.324068 98.60339 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 150.882712 203.162034 -L 255.441356 203.162034 -L 255.441356 98.60339 -L 150.882712 98.60339 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 255.441356 203.162034 -L 360 203.162034 -L 360 98.60339 -L 255.441356 98.60339 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 360 203.162034 -L 464.558644 203.162034 -L 464.558644 98.60339 -L 360 98.60339 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 464.558644 203.162034 -L 569.117288 203.162034 -L 569.117288 98.60339 -L 464.558644 98.60339 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#pbe5fa4e5ef)" d="M 569.117288 203.162034 -L 673.675932 203.162034 -L 673.675932 98.60339 -L 569.117288 98.60339 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="line2d_1"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m2c33ab8aaf" style="stroke:#000000;"/> - </defs> - <g clip-path="url(#pbe5fa4e5ef)"> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="691.102373"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="586.543729"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="551.690847"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="516.837966"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="481.985085"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="447.132203"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="435.514576"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="423.896949"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="412.279322"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="400.661695"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="389.044068"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="377.426441"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="365.808814"/> - <use style="stroke:#000000;" x="57.941695" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="69.559322" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="92.794576" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="104.412203" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="127.647458" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="139.265085" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="162.500339" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="174.117966" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="197.35322" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="208.970847" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="232.206102" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="243.823729" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="267.058983" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="278.67661" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="301.911864" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="313.529492" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="336.764746" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="348.382373" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="371.617627" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="383.235254" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="406.470508" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="418.088136" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="441.32339" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="452.941017" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="476.176271" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="487.793898" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="511.029153" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="522.64678" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="545.882034" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="557.499661" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="580.734915" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="592.352542" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="615.587797" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="627.205424" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="650.440678" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="662.058305" xlink:href="#m2c33ab8aaf" y="354.191186"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="342.573559"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="307.720678"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="272.867797"/> - <use style="stroke:#000000;" x="81.176949" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="116.029831" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="185.735593" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="220.588475" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="290.294237" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="325.147119" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="394.852881" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="429.705763" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="499.411525" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="534.264407" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="603.970169" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="638.823051" xlink:href="#m2c33ab8aaf" y="238.014915"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="203.162034"/> - <use style="stroke:#000000;" x="46.324068" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="150.882712" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="255.441356" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="360" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="464.558644" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="569.117288" xlink:href="#m2c33ab8aaf" y="98.60339"/> - <use style="stroke:#000000;" x="673.675932" xlink:href="#m2c33ab8aaf" y="98.60339"/> - </g> - </g> - <g id="line2d_2"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m8c6e6812a6" style="stroke:#008000;"/> - </defs> - <g clip-path="url(#pbe5fa4e5ef)"> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="586.543729"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="516.837966"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="481.985085"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="447.132203"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="423.896949"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="412.279322"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="400.661695"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="389.044068"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="377.426441"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="365.808814"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="342.573559"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="307.720678"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="272.867797"/> - <use style="fill:#008000;stroke:#008000;" x="46.324068" xlink:href="#m8c6e6812a6" y="203.162034"/> - </g> - </g> - <g id="line2d_3"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m02f24808b7" style="stroke:#0000ff;"/> - </defs> - <g clip-path="url(#pbe5fa4e5ef)"> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="586.543729"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="516.837966"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="481.985085"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="447.132203"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="423.896949"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="412.279322"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="400.661695"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="389.044068"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="377.426441"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="365.808814"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="342.573559"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="307.720678"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="272.867797"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="673.675932" xlink:href="#m02f24808b7" y="203.162034"/> - </g> - </g> - <g id="line2d_4"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="mdfd1eed868" style="stroke:#ff0000;"/> - </defs> - <g clip-path="url(#pbe5fa4e5ef)"> - <use style="fill:#ff0000;stroke:#ff0000;" x="46.324068" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="150.882712" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="255.441356" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="360" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="464.558644" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="569.117288" xlink:href="#mdfd1eed868" y="691.102373"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="673.675932" xlink:href="#mdfd1eed868" y="691.102373"/> - </g> - </g> - <g id="line2d_5"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="me8765757ee" style="stroke:#bfbf00;"/> - </defs> - <g clip-path="url(#pbe5fa4e5ef)"> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="46.324068" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="150.882712" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="255.441356" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="360" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="464.558644" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="569.117288" xlink:href="#me8765757ee" y="98.60339"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="673.675932" xlink:href="#me8765757ee" y="98.60339"/> - </g> - </g> - <g id="patch_3"> - <path d="M 34.706441 702.72 -L 34.706441 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_4"> - <path d="M 685.293559 702.72 -L 685.293559 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_5"> - <path d="M 34.706441 702.72 -L 685.293559 702.72 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_6"> - <path d="M 34.706441 17.28 -L 685.293559 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="legend_1"> - <g id="patch_7"> - <path d="M 153.28375 77.05 -L 566.71625 77.05 -Q 569.91625 77.05 569.91625 73.85 -L 569.91625 28.48 -Q 569.91625 25.28 566.71625 25.28 -L 153.28375 25.28 -Q 150.08375 25.28 150.08375 28.48 -L 150.08375 73.85 -Q 150.08375 77.05 153.28375 77.05 -z -" style="fill:none;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;"/> - </g> - <g id="line2d_6"/> - <g id="line2d_7"> - <g> - <use style="fill:#008000;stroke:#008000;" x="172.48375" xlink:href="#m8c6e6812a6" y="38.2375"/> - </g> - </g> - <g id="text_1"> - <!-- nodesLeftOpenEdge --> - <defs> - <path d="M 54.890625 33.015625 -L 54.890625 0 -L 45.90625 0 -L 45.90625 32.71875 -Q 45.90625 40.484375 42.875 44.328125 -Q 39.84375 48.1875 33.796875 48.1875 -Q 26.515625 48.1875 22.3125 43.546875 -Q 18.109375 38.921875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.1875 -Q 21.34375 51.125 25.703125 53.5625 -Q 30.078125 56 35.796875 56 -Q 45.21875 56 50.046875 50.171875 -Q 54.890625 44.34375 54.890625 33.015625 -z -" id="DejaVuSans-110"/> - <path d="M 30.609375 48.390625 -Q 23.390625 48.390625 19.1875 42.75 -Q 14.984375 37.109375 14.984375 27.296875 -Q 14.984375 17.484375 19.15625 11.84375 -Q 23.34375 6.203125 30.609375 6.203125 -Q 37.796875 6.203125 41.984375 11.859375 -Q 46.1875 17.53125 46.1875 27.296875 -Q 46.1875 37.015625 41.984375 42.703125 -Q 37.796875 48.390625 30.609375 48.390625 -z -M 30.609375 56 -Q 42.328125 56 49.015625 48.375 -Q 55.71875 40.765625 55.71875 27.296875 -Q 55.71875 13.875 49.015625 6.21875 -Q 42.328125 -1.421875 30.609375 -1.421875 -Q 18.84375 -1.421875 12.171875 6.21875 -Q 5.515625 13.875 5.515625 27.296875 -Q 5.515625 40.765625 12.171875 48.375 -Q 18.84375 56 30.609375 56 -z -" id="DejaVuSans-111"/> - <path d="M 45.40625 46.390625 -L 45.40625 75.984375 -L 54.390625 75.984375 -L 54.390625 0 -L 45.40625 0 -L 45.40625 8.203125 -Q 42.578125 3.328125 38.25 0.953125 -Q 33.9375 -1.421875 27.875 -1.421875 -Q 17.96875 -1.421875 11.734375 6.484375 -Q 5.515625 14.40625 5.515625 27.296875 -Q 5.515625 40.1875 11.734375 48.09375 -Q 17.96875 56 27.875 56 -Q 33.9375 56 38.25 53.625 -Q 42.578125 51.265625 45.40625 46.390625 -z -M 14.796875 27.296875 -Q 14.796875 17.390625 18.875 11.75 -Q 22.953125 6.109375 30.078125 6.109375 -Q 37.203125 6.109375 41.296875 11.75 -Q 45.40625 17.390625 45.40625 27.296875 -Q 45.40625 37.203125 41.296875 42.84375 -Q 37.203125 48.484375 30.078125 48.484375 -Q 22.953125 48.484375 18.875 42.84375 -Q 14.796875 37.203125 14.796875 27.296875 -z -" id="DejaVuSans-100"/> - <path d="M 56.203125 29.59375 -L 56.203125 25.203125 -L 14.890625 25.203125 -Q 15.484375 15.921875 20.484375 11.0625 -Q 25.484375 6.203125 34.421875 6.203125 -Q 39.59375 6.203125 44.453125 7.46875 -Q 49.3125 8.734375 54.109375 11.28125 -L 54.109375 2.78125 -Q 49.265625 0.734375 44.1875 -0.34375 -Q 39.109375 -1.421875 33.890625 -1.421875 -Q 20.796875 -1.421875 13.15625 6.1875 -Q 5.515625 13.8125 5.515625 26.8125 -Q 5.515625 40.234375 12.765625 48.109375 -Q 20.015625 56 32.328125 56 -Q 43.359375 56 49.78125 48.890625 -Q 56.203125 41.796875 56.203125 29.59375 -z -M 47.21875 32.234375 -Q 47.125 39.59375 43.09375 43.984375 -Q 39.0625 48.390625 32.421875 48.390625 -Q 24.90625 48.390625 20.390625 44.140625 -Q 15.875 39.890625 15.1875 32.171875 -z -" id="DejaVuSans-101"/> - <path d="M 44.28125 53.078125 -L 44.28125 44.578125 -Q 40.484375 46.53125 36.375 47.5 -Q 32.28125 48.484375 27.875 48.484375 -Q 21.1875 48.484375 17.84375 46.4375 -Q 14.5 44.390625 14.5 40.28125 -Q 14.5 37.15625 16.890625 35.375 -Q 19.28125 33.59375 26.515625 31.984375 -L 29.59375 31.296875 -Q 39.15625 29.25 43.1875 25.515625 -Q 47.21875 21.78125 47.21875 15.09375 -Q 47.21875 7.46875 41.1875 3.015625 -Q 35.15625 -1.421875 24.609375 -1.421875 -Q 20.21875 -1.421875 15.453125 -0.5625 -Q 10.6875 0.296875 5.421875 2 -L 5.421875 11.28125 -Q 10.40625 8.6875 15.234375 7.390625 -Q 20.0625 6.109375 24.8125 6.109375 -Q 31.15625 6.109375 34.5625 8.28125 -Q 37.984375 10.453125 37.984375 14.40625 -Q 37.984375 18.0625 35.515625 20.015625 -Q 33.0625 21.96875 24.703125 23.78125 -L 21.578125 24.515625 -Q 13.234375 26.265625 9.515625 29.90625 -Q 5.8125 33.546875 5.8125 39.890625 -Q 5.8125 47.609375 11.28125 51.796875 -Q 16.75 56 26.8125 56 -Q 31.78125 56 36.171875 55.265625 -Q 40.578125 54.546875 44.28125 53.078125 -z -" id="DejaVuSans-115"/> - <path d="M 9.8125 72.90625 -L 19.671875 72.90625 -L 19.671875 8.296875 -L 55.171875 8.296875 -L 55.171875 0 -L 9.8125 0 -z -" id="DejaVuSans-76"/> - <path d="M 37.109375 75.984375 -L 37.109375 68.5 -L 28.515625 68.5 -Q 23.6875 68.5 21.796875 66.546875 -Q 19.921875 64.59375 19.921875 59.515625 -L 19.921875 54.6875 -L 34.71875 54.6875 -L 34.71875 47.703125 -L 19.921875 47.703125 -L 19.921875 0 -L 10.890625 0 -L 10.890625 47.703125 -L 2.296875 47.703125 -L 2.296875 54.6875 -L 10.890625 54.6875 -L 10.890625 58.5 -Q 10.890625 67.625 15.140625 71.796875 -Q 19.390625 75.984375 28.609375 75.984375 -z -" id="DejaVuSans-102"/> - <path d="M 18.3125 70.21875 -L 18.3125 54.6875 -L 36.8125 54.6875 -L 36.8125 47.703125 -L 18.3125 47.703125 -L 18.3125 18.015625 -Q 18.3125 11.328125 20.140625 9.421875 -Q 21.96875 7.515625 27.59375 7.515625 -L 36.8125 7.515625 -L 36.8125 0 -L 27.59375 0 -Q 17.1875 0 13.234375 3.875 -Q 9.28125 7.765625 9.28125 18.015625 -L 9.28125 47.703125 -L 2.6875 47.703125 -L 2.6875 54.6875 -L 9.28125 54.6875 -L 9.28125 70.21875 -z -" id="DejaVuSans-116"/> - <path d="M 39.40625 66.21875 -Q 28.65625 66.21875 22.328125 58.203125 -Q 16.015625 50.203125 16.015625 36.375 -Q 16.015625 22.609375 22.328125 14.59375 -Q 28.65625 6.59375 39.40625 6.59375 -Q 50.140625 6.59375 56.421875 14.59375 -Q 62.703125 22.609375 62.703125 36.375 -Q 62.703125 50.203125 56.421875 58.203125 -Q 50.140625 66.21875 39.40625 66.21875 -z -M 39.40625 74.21875 -Q 54.734375 74.21875 63.90625 63.9375 -Q 73.09375 53.65625 73.09375 36.375 -Q 73.09375 19.140625 63.90625 8.859375 -Q 54.734375 -1.421875 39.40625 -1.421875 -Q 24.03125 -1.421875 14.8125 8.828125 -Q 5.609375 19.09375 5.609375 36.375 -Q 5.609375 53.65625 14.8125 63.9375 -Q 24.03125 74.21875 39.40625 74.21875 -z -" id="DejaVuSans-79"/> - <path d="M 18.109375 8.203125 -L 18.109375 -20.796875 -L 9.078125 -20.796875 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.390625 -Q 20.953125 51.265625 25.265625 53.625 -Q 29.59375 56 35.59375 56 -Q 45.5625 56 51.78125 48.09375 -Q 58.015625 40.1875 58.015625 27.296875 -Q 58.015625 14.40625 51.78125 6.484375 -Q 45.5625 -1.421875 35.59375 -1.421875 -Q 29.59375 -1.421875 25.265625 0.953125 -Q 20.953125 3.328125 18.109375 8.203125 -z -M 48.6875 27.296875 -Q 48.6875 37.203125 44.609375 42.84375 -Q 40.53125 48.484375 33.40625 48.484375 -Q 26.265625 48.484375 22.1875 42.84375 -Q 18.109375 37.203125 18.109375 27.296875 -Q 18.109375 17.390625 22.1875 11.75 -Q 26.265625 6.109375 33.40625 6.109375 -Q 40.53125 6.109375 44.609375 11.75 -Q 48.6875 17.390625 48.6875 27.296875 -z -" id="DejaVuSans-112"/> - <path d="M 9.8125 72.90625 -L 55.90625 72.90625 -L 55.90625 64.59375 -L 19.671875 64.59375 -L 19.671875 43.015625 -L 54.390625 43.015625 -L 54.390625 34.71875 -L 19.671875 34.71875 -L 19.671875 8.296875 -L 56.78125 8.296875 -L 56.78125 0 -L 9.8125 0 -z -" id="DejaVuSans-69"/> - <path d="M 45.40625 27.984375 -Q 45.40625 37.75 41.375 43.109375 -Q 37.359375 48.484375 30.078125 48.484375 -Q 22.859375 48.484375 18.828125 43.109375 -Q 14.796875 37.75 14.796875 27.984375 -Q 14.796875 18.265625 18.828125 12.890625 -Q 22.859375 7.515625 30.078125 7.515625 -Q 37.359375 7.515625 41.375 12.890625 -Q 45.40625 18.265625 45.40625 27.984375 -z -M 54.390625 6.78125 -Q 54.390625 -7.171875 48.1875 -13.984375 -Q 42 -20.796875 29.203125 -20.796875 -Q 24.46875 -20.796875 20.265625 -20.09375 -Q 16.0625 -19.390625 12.109375 -17.921875 -L 12.109375 -9.1875 -Q 16.0625 -11.328125 19.921875 -12.34375 -Q 23.78125 -13.375 27.78125 -13.375 -Q 36.625 -13.375 41.015625 -8.765625 -Q 45.40625 -4.15625 45.40625 5.171875 -L 45.40625 9.625 -Q 42.625 4.78125 38.28125 2.390625 -Q 33.9375 0 27.875 0 -Q 17.828125 0 11.671875 7.65625 -Q 5.515625 15.328125 5.515625 27.984375 -Q 5.515625 40.671875 11.671875 48.328125 -Q 17.828125 56 27.875 56 -Q 33.9375 56 38.28125 53.609375 -Q 42.625 51.21875 45.40625 46.390625 -L 45.40625 54.6875 -L 54.390625 54.6875 -z -" id="DejaVuSans-103"/> - </defs> - <g transform="translate(191.68375 43.8375)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-76"/> - <use x="357.357422" xlink:href="#DejaVuSans-101"/> - <use x="418.880859" xlink:href="#DejaVuSans-102"/> - <use x="454.070312" xlink:href="#DejaVuSans-116"/> - <use x="493.279297" xlink:href="#DejaVuSans-79"/> - <use x="571.990234" xlink:href="#DejaVuSans-112"/> - <use x="635.466797" xlink:href="#DejaVuSans-101"/> - <use x="696.990234" xlink:href="#DejaVuSans-110"/> - <use x="760.369141" xlink:href="#DejaVuSans-69"/> - <use x="823.552734" xlink:href="#DejaVuSans-100"/> - <use x="887.029297" xlink:href="#DejaVuSans-103"/> - <use x="950.505859" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_8"/> - <g id="line2d_9"> - <g> - <use style="fill:#0000ff;stroke:#0000ff;" x="172.48375" xlink:href="#m02f24808b7" y="61.7225"/> - </g> - </g> - <g id="text_2"> - <!-- nodesRightOpenEdge --> - <defs> - <path d="M 44.390625 34.1875 -Q 47.5625 33.109375 50.5625 29.59375 -Q 53.5625 26.078125 56.59375 19.921875 -L 66.609375 0 -L 56 0 -L 46.6875 18.703125 -Q 43.0625 26.03125 39.671875 28.421875 -Q 36.28125 30.8125 30.421875 30.8125 -L 19.671875 30.8125 -L 19.671875 0 -L 9.8125 0 -L 9.8125 72.90625 -L 32.078125 72.90625 -Q 44.578125 72.90625 50.734375 67.671875 -Q 56.890625 62.453125 56.890625 51.90625 -Q 56.890625 45.015625 53.6875 40.46875 -Q 50.484375 35.9375 44.390625 34.1875 -z -M 19.671875 64.796875 -L 19.671875 38.921875 -L 32.078125 38.921875 -Q 39.203125 38.921875 42.84375 42.21875 -Q 46.484375 45.515625 46.484375 51.90625 -Q 46.484375 58.296875 42.84375 61.546875 -Q 39.203125 64.796875 32.078125 64.796875 -z -" id="DejaVuSans-82"/> - <path d="M 9.421875 54.6875 -L 18.40625 54.6875 -L 18.40625 0 -L 9.421875 0 -z -M 9.421875 75.984375 -L 18.40625 75.984375 -L 18.40625 64.59375 -L 9.421875 64.59375 -z -" id="DejaVuSans-105"/> - <path d="M 54.890625 33.015625 -L 54.890625 0 -L 45.90625 0 -L 45.90625 32.71875 -Q 45.90625 40.484375 42.875 44.328125 -Q 39.84375 48.1875 33.796875 48.1875 -Q 26.515625 48.1875 22.3125 43.546875 -Q 18.109375 38.921875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 75.984375 -L 18.109375 75.984375 -L 18.109375 46.1875 -Q 21.34375 51.125 25.703125 53.5625 -Q 30.078125 56 35.796875 56 -Q 45.21875 56 50.046875 50.171875 -Q 54.890625 44.34375 54.890625 33.015625 -z -" id="DejaVuSans-104"/> - </defs> - <g transform="translate(191.68375 67.3225)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-82"/> - <use x="371.142578" xlink:href="#DejaVuSans-105"/> - <use x="398.925781" xlink:href="#DejaVuSans-103"/> - <use x="462.402344" xlink:href="#DejaVuSans-104"/> - <use x="525.78125" xlink:href="#DejaVuSans-116"/> - <use x="564.990234" xlink:href="#DejaVuSans-79"/> - <use x="643.701172" xlink:href="#DejaVuSans-112"/> - <use x="707.177734" xlink:href="#DejaVuSans-101"/> - <use x="768.701172" xlink:href="#DejaVuSans-110"/> - <use x="832.080078" xlink:href="#DejaVuSans-69"/> - <use x="895.263672" xlink:href="#DejaVuSans-100"/> - <use x="958.740234" xlink:href="#DejaVuSans-103"/> - <use x="1022.216797" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_10"/> - <g id="line2d_11"> - <g> - <use style="fill:#ff0000;stroke:#ff0000;" x="397.09125" xlink:href="#mdfd1eed868" y="38.2375"/> - </g> - </g> - <g id="text_3"> - <!-- nodesBottomEdge --> - <defs> - <path d="M 19.671875 34.8125 -L 19.671875 8.109375 -L 35.5 8.109375 -Q 43.453125 8.109375 47.28125 11.40625 -Q 51.125 14.703125 51.125 21.484375 -Q 51.125 28.328125 47.28125 31.5625 -Q 43.453125 34.8125 35.5 34.8125 -z -M 19.671875 64.796875 -L 19.671875 42.828125 -L 34.28125 42.828125 -Q 41.5 42.828125 45.03125 45.53125 -Q 48.578125 48.25 48.578125 53.8125 -Q 48.578125 59.328125 45.03125 62.0625 -Q 41.5 64.796875 34.28125 64.796875 -z -M 9.8125 72.90625 -L 35.015625 72.90625 -Q 46.296875 72.90625 52.390625 68.21875 -Q 58.5 63.53125 58.5 54.890625 -Q 58.5 48.1875 55.375 44.234375 -Q 52.25 40.28125 46.1875 39.3125 -Q 53.46875 37.75 57.5 32.78125 -Q 61.53125 27.828125 61.53125 20.40625 -Q 61.53125 10.640625 54.890625 5.3125 -Q 48.25 0 35.984375 0 -L 9.8125 0 -z -" id="DejaVuSans-66"/> - <path d="M 52 44.1875 -Q 55.375 50.25 60.0625 53.125 -Q 64.75 56 71.09375 56 -Q 79.640625 56 84.28125 50.015625 -Q 88.921875 44.046875 88.921875 33.015625 -L 88.921875 0 -L 79.890625 0 -L 79.890625 32.71875 -Q 79.890625 40.578125 77.09375 44.375 -Q 74.3125 48.1875 68.609375 48.1875 -Q 61.625 48.1875 57.5625 43.546875 -Q 53.515625 38.921875 53.515625 30.90625 -L 53.515625 0 -L 44.484375 0 -L 44.484375 32.71875 -Q 44.484375 40.625 41.703125 44.40625 -Q 38.921875 48.1875 33.109375 48.1875 -Q 26.21875 48.1875 22.15625 43.53125 -Q 18.109375 38.875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.1875 -Q 21.1875 51.21875 25.484375 53.609375 -Q 29.78125 56 35.6875 56 -Q 41.65625 56 45.828125 52.96875 -Q 50 49.953125 52 44.1875 -z -" id="DejaVuSans-109"/> - </defs> - <g transform="translate(416.29125 43.8375)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-66"/> - <use x="370.263672" xlink:href="#DejaVuSans-111"/> - <use x="431.445312" xlink:href="#DejaVuSans-116"/> - <use x="470.654297" xlink:href="#DejaVuSans-116"/> - <use x="509.863281" xlink:href="#DejaVuSans-111"/> - <use x="571.044922" xlink:href="#DejaVuSans-109"/> - <use x="668.457031" xlink:href="#DejaVuSans-69"/> - <use x="731.640625" xlink:href="#DejaVuSans-100"/> - <use x="795.117188" xlink:href="#DejaVuSans-103"/> - <use x="858.59375" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_12"/> - <g id="line2d_13"> - <g> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="397.09125" xlink:href="#me8765757ee" y="61.7225"/> - </g> - </g> - <g id="text_4"> - <!-- nodesTopEdge --> - <defs> - <path d="M -0.296875 72.90625 -L 61.375 72.90625 -L 61.375 64.59375 -L 35.5 64.59375 -L 35.5 0 -L 25.59375 0 -L 25.59375 64.59375 -L -0.296875 64.59375 -z -" id="DejaVuSans-84"/> - </defs> - <g transform="translate(416.29125 67.3225)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-84"/> - <use x="362.478516" xlink:href="#DejaVuSans-111"/> - <use x="423.660156" xlink:href="#DejaVuSans-112"/> - <use x="487.136719" xlink:href="#DejaVuSans-69"/> - <use x="550.320312" xlink:href="#DejaVuSans-100"/> - <use x="613.796875" xlink:href="#DejaVuSans-103"/> - <use x="677.273438" xlink:href="#DejaVuSans-101"/> - </g> - </g> - </g> - </g> - </g> - <defs> - <clipPath id="pbe5fa4e5ef"> - <rect height="685.44" width="650.587119" x="34.706441" y="17.28"/> - </clipPath> - </defs> -</svg> diff --git a/docs/details/figures/MeshQuad4/FineLayer/example2.py b/docs/details/figures/MeshQuad4/FineLayer/paraview.py similarity index 71% rename from docs/details/figures/MeshQuad4/FineLayer/example2.py rename to docs/details/figures/MeshQuad4/FineLayer/paraview.py index a8a3dcc..9534d6f 100644 --- a/docs/details/figures/MeshQuad4/FineLayer/example2.py +++ b/docs/details/figures/MeshQuad4/FineLayer/paraview.py @@ -1,34 +1,36 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Quad4.FineLayer(9,17) # filename of the HDF5-file -fname = 'MeshQuad4-FineLayer.hdf5' +fname = 'paraview.hdf5' # define element set elementsMiddleLayer = np.zeros((mesh.nelem()),dtype='int') elementsMiddleLayer[mesh.elementsMiddleLayer()] = 1 # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data['coor'] = mesh.coor() data['conn'] = mesh.conn() data['elementsMiddleLayer'] = elementsMiddleLayer # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Quadrilateral, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) -xdmf.push_back(pv.Attribute(fname, "/elementsMiddleLayer", "elementsMiddleLayer", pv.AttributeType.Cell, elementsMiddleLayer.shape)) +xdmf.push_back(pv.Attribute( + fname, + "/elementsMiddleLayer", + "elementsMiddleLayer", + pv.AttributeType.Cell, + elementsMiddleLayer.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshQuad4/FineLayer/nodes.py b/docs/details/figures/MeshQuad4/FineLayer/paraview_nodesets.py similarity index 95% rename from docs/details/figures/MeshQuad4/FineLayer/nodes.py rename to docs/details/figures/MeshQuad4/FineLayer/paraview_nodesets.py index 0f18200..de3c9ad 100644 --- a/docs/details/figures/MeshQuad4/FineLayer/nodes.py +++ b/docs/details/figures/MeshQuad4/FineLayer/paraview_nodesets.py @@ -1,66 +1,63 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Quad4.FineLayer(9,17) # initialize all node sets nodesets = dict( nodesBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), ) # define node-sets nodesets['nodesBottomEdge' ][mesh.nodesBottomEdge() ] = 1 nodesets['nodesTopEdge' ][mesh.nodesTopEdge() ] = 1 nodesets['nodesLeftEdge' ][mesh.nodesLeftEdge() ] = 1 nodesets['nodesRightEdge' ][mesh.nodesRightEdge() ] = 1 nodesets['nodesBottomOpenEdge' ][mesh.nodesBottomOpenEdge() ] = 1 nodesets['nodesTopOpenEdge' ][mesh.nodesTopOpenEdge() ] = 1 nodesets['nodesLeftOpenEdge' ][mesh.nodesLeftOpenEdge() ] = 1 nodesets['nodesRightOpenEdge' ][mesh.nodesRightOpenEdge() ] = 1 nodesets['nodesBottomLeftCorner' ][mesh.nodesBottomLeftCorner() ] = 1 nodesets['nodesBottomRightCorner'][mesh.nodesBottomRightCorner()] = 1 nodesets['nodesTopLeftCorner' ][mesh.nodesTopLeftCorner() ] = 1 nodesets['nodesTopRightCorner' ][mesh.nodesTopRightCorner() ] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:,0] # filename of the HDF5-file -fname = 'MeshQuad4-FineLayer-nodes.hdf5' +fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Quadrilateral, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back(pv.Attribute(fname, "/"+key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.py b/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.py index 6842569..043f0ac 100644 --- a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.py +++ b/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.py @@ -1,57 +1,59 @@ import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- fig, axes = plt.subplots(figsize=(10,10), ncols=2) # --- ax = axes[0] -mesh = gf.Mesh.Quad4.FineLayer(6, 18) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6, 18) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.arange(mesh.nelem()) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) -for e in range(conn.shape[0]): +for e in range(mesh.nelem()): x = np.mean(coor[conn[e,:], 0]) y = np.mean(coor[conn[e,:], 1]) ax.text(x, y, str(e), ha='center', va='center') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) # --- ax = axes[1] -new_mesh = gf.Mesh.Quad4.Regular(mesh.shape(0), mesh.shape(1)) +new_mesh = gf.Mesh.Quad4.Regular(mesh.nelx(), mesh.nely()) + +coor = new_mesh.coor() +conn = new_mesh.conn() -coor = new_mesh.coor() -conn = new_mesh.conn() -cindex = np.arange(conn.shape[0]) +cindex = np.arange(new_mesh.nelem()) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) -for e in range(conn.shape[0]): +for e in range(new_mesh.nelem()): x = np.mean(coor[conn[e,:], 0]) y = np.mean(coor[conn[e,:], 1]) ax.text(x, y, str(e), ha='center', va='center') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) # --- plt.savefig('element-numbers.svg') plt.show() diff --git a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.svg b/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.svg deleted file mode 100644 index a0022d2..0000000 --- a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/element-numbers.svg +++ /dev/null @@ -1,2698 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with matplotlib (https://matplotlib.org/) --> -<svg height="720pt" version="1.1" viewBox="0 0 720 720" width="720pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <style type="text/css"> -*{stroke-linecap:butt;stroke-linejoin:round;} - </style> - </defs> - <g id="figure_1"> - <g id="patch_1"> - <path d="M 0 720 -L 720 720 -L 720 0 -L 0 0 -z -" style="fill:none;"/> - </g> - <g id="axes_1"> - <g id="patch_2"> - <path d="M 110.209091 702.72 -L 306.049091 702.72 -L 306.049091 17.28 -L 110.209091 17.28 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_1"> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 645.6 -L 208.129091 645.6 -L 208.129091 564 -L 126.529091 564 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 645.6 -L 289.729091 645.6 -L 289.729091 564 -L 208.129091 564 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 564 -L 208.129091 564 -L 208.129091 482.4 -L 126.529091 482.4 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 564 -L 289.729091 564 -L 289.729091 482.4 -L 208.129091 482.4 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 482.4 -L 208.129091 482.4 -L 180.929091 455.2 -L 153.729091 455.2 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 482.4 -L 208.129091 428 -L 180.929091 428 -L 180.929091 455.2 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 455.2 -L 180.929091 455.2 -L 180.929091 428 -L 153.729091 428 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 482.4 -L 153.729091 455.2 -L 153.729091 428 -L 126.529091 428 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 482.4 -L 289.729091 482.4 -L 262.529091 455.2 -L 235.329091 455.2 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 289.729091 482.4 -L 289.729091 428 -L 262.529091 428 -L 262.529091 455.2 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 455.2 -L 262.529091 455.2 -L 262.529091 428 -L 235.329091 428 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 482.4 -L 235.329091 455.2 -L 235.329091 428 -L 208.129091 428 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 428 -L 153.729091 428 -L 153.729091 400.8 -L 126.529091 400.8 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 428 -L 180.929091 428 -L 180.929091 400.8 -L 153.729091 400.8 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 428 -L 208.129091 428 -L 208.129091 400.8 -L 180.929091 400.8 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 428 -L 235.329091 428 -L 235.329091 400.8 -L 208.129091 400.8 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 428 -L 262.529091 428 -L 262.529091 400.8 -L 235.329091 400.8 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 428 -L 289.729091 428 -L 289.729091 400.8 -L 262.529091 400.8 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 400.8 -L 153.729091 400.8 -L 153.729091 373.6 -L 126.529091 373.6 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 400.8 -L 180.929091 400.8 -L 180.929091 373.6 -L 153.729091 373.6 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 400.8 -L 208.129091 400.8 -L 208.129091 373.6 -L 180.929091 373.6 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 400.8 -L 235.329091 400.8 -L 235.329091 373.6 -L 208.129091 373.6 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 400.8 -L 262.529091 400.8 -L 262.529091 373.6 -L 235.329091 373.6 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 400.8 -L 289.729091 400.8 -L 289.729091 373.6 -L 262.529091 373.6 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 373.6 -L 153.729091 373.6 -L 153.729091 346.4 -L 126.529091 346.4 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 373.6 -L 180.929091 373.6 -L 180.929091 346.4 -L 153.729091 346.4 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 373.6 -L 208.129091 373.6 -L 208.129091 346.4 -L 180.929091 346.4 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 373.6 -L 235.329091 373.6 -L 235.329091 346.4 -L 208.129091 346.4 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 373.6 -L 262.529091 373.6 -L 262.529091 346.4 -L 235.329091 346.4 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 373.6 -L 289.729091 373.6 -L 289.729091 346.4 -L 262.529091 346.4 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 346.4 -L 153.729091 346.4 -L 153.729091 319.2 -L 126.529091 319.2 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 346.4 -L 180.929091 346.4 -L 180.929091 319.2 -L 153.729091 319.2 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 346.4 -L 208.129091 346.4 -L 208.129091 319.2 -L 180.929091 319.2 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 346.4 -L 235.329091 346.4 -L 235.329091 319.2 -L 208.129091 319.2 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 346.4 -L 262.529091 346.4 -L 262.529091 319.2 -L 235.329091 319.2 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 346.4 -L 289.729091 346.4 -L 289.729091 319.2 -L 262.529091 319.2 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 319.2 -L 153.729091 319.2 -L 153.729091 292 -L 126.529091 292 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 319.2 -L 180.929091 319.2 -L 180.929091 292 -L 153.729091 292 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 319.2 -L 208.129091 319.2 -L 208.129091 292 -L 180.929091 292 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 319.2 -L 235.329091 319.2 -L 235.329091 292 -L 208.129091 292 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 319.2 -L 262.529091 319.2 -L 262.529091 292 -L 235.329091 292 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 319.2 -L 289.729091 319.2 -L 289.729091 292 -L 262.529091 292 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 292 -L 153.729091 292 -L 153.729091 264.8 -L 126.529091 237.6 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 292 -L 180.929091 292 -L 180.929091 264.8 -L 153.729091 264.8 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 180.929091 292 -L 208.129091 292 -L 208.129091 237.6 -L 180.929091 264.8 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 153.729091 264.8 -L 180.929091 264.8 -L 208.129091 237.6 -L 126.529091 237.6 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 292 -L 235.329091 292 -L 235.329091 264.8 -L 208.129091 237.6 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 292 -L 262.529091 292 -L 262.529091 264.8 -L 235.329091 264.8 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 262.529091 292 -L 289.729091 292 -L 289.729091 237.6 -L 262.529091 264.8 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 235.329091 264.8 -L 262.529091 264.8 -L 289.729091 237.6 -L 208.129091 237.6 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 237.6 -L 208.129091 237.6 -L 208.129091 156 -L 126.529091 156 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 237.6 -L 289.729091 237.6 -L 289.729091 156 -L 208.129091 156 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 126.529091 156 -L 208.129091 156 -L 208.129091 74.4 -L 126.529091 74.4 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#pd9562cdf1e)" d="M 208.129091 156 -L 289.729091 156 -L 289.729091 74.4 -L 208.129091 74.4 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="patch_3"> - <path d="M 110.209091 702.72 -L 110.209091 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_4"> - <path d="M 306.049091 702.72 -L 306.049091 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_5"> - <path d="M 110.209091 702.72 -L 306.049091 702.72 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_6"> - <path d="M 110.209091 17.28 -L 306.049091 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="text_1"> - <!-- 0 --> - <defs> - <path d="M 31.78125 66.40625 -Q 24.171875 66.40625 20.328125 58.90625 -Q 16.5 51.421875 16.5 36.375 -Q 16.5 21.390625 20.328125 13.890625 -Q 24.171875 6.390625 31.78125 6.390625 -Q 39.453125 6.390625 43.28125 13.890625 -Q 47.125 21.390625 47.125 36.375 -Q 47.125 51.421875 43.28125 58.90625 -Q 39.453125 66.40625 31.78125 66.40625 -z -M 31.78125 74.21875 -Q 44.046875 74.21875 50.515625 64.515625 -Q 56.984375 54.828125 56.984375 36.375 -Q 56.984375 17.96875 50.515625 8.265625 -Q 44.046875 -1.421875 31.78125 -1.421875 -Q 19.53125 -1.421875 13.0625 8.265625 -Q 6.59375 17.96875 6.59375 36.375 -Q 6.59375 54.828125 13.0625 64.515625 -Q 19.53125 74.21875 31.78125 74.21875 -z -" id="DejaVuSans-48"/> - </defs> - <g transform="translate(162.239091 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_2"> - <!-- 1 --> - <defs> - <path d="M 12.40625 8.296875 -L 28.515625 8.296875 -L 28.515625 63.921875 -L 10.984375 60.40625 -L 10.984375 69.390625 -L 28.421875 72.90625 -L 38.28125 72.90625 -L 38.28125 8.296875 -L 54.390625 8.296875 -L 54.390625 0 -L 12.40625 0 -z -" id="DejaVuSans-49"/> - </defs> - <g transform="translate(243.839091 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_3"> - <!-- 2 --> - <defs> - <path d="M 19.1875 8.296875 -L 53.609375 8.296875 -L 53.609375 0 -L 7.328125 0 -L 7.328125 8.296875 -Q 12.9375 14.109375 22.625 23.890625 -Q 32.328125 33.6875 34.8125 36.53125 -Q 39.546875 41.84375 41.421875 45.53125 -Q 43.3125 49.21875 43.3125 52.78125 -Q 43.3125 58.59375 39.234375 62.25 -Q 35.15625 65.921875 28.609375 65.921875 -Q 23.96875 65.921875 18.8125 64.3125 -Q 13.671875 62.703125 7.8125 59.421875 -L 7.8125 69.390625 -Q 13.765625 71.78125 18.9375 73 -Q 24.125 74.21875 28.421875 74.21875 -Q 39.75 74.21875 46.484375 68.546875 -Q 53.21875 62.890625 53.21875 53.421875 -Q 53.21875 48.921875 51.53125 44.890625 -Q 49.859375 40.875 45.40625 35.40625 -Q 44.1875 33.984375 37.640625 27.21875 -Q 31.109375 20.453125 19.1875 8.296875 -z -" id="DejaVuSans-50"/> - </defs> - <g transform="translate(162.239091 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_4"> - <!-- 3 --> - <defs> - <path d="M 40.578125 39.3125 -Q 47.65625 37.796875 51.625 33 -Q 55.609375 28.21875 55.609375 21.1875 -Q 55.609375 10.40625 48.1875 4.484375 -Q 40.765625 -1.421875 27.09375 -1.421875 -Q 22.515625 -1.421875 17.65625 -0.515625 -Q 12.796875 0.390625 7.625 2.203125 -L 7.625 11.71875 -Q 11.71875 9.328125 16.59375 8.109375 -Q 21.484375 6.890625 26.8125 6.890625 -Q 36.078125 6.890625 40.9375 10.546875 -Q 45.796875 14.203125 45.796875 21.1875 -Q 45.796875 27.640625 41.28125 31.265625 -Q 36.765625 34.90625 28.71875 34.90625 -L 20.21875 34.90625 -L 20.21875 43.015625 -L 29.109375 43.015625 -Q 36.375 43.015625 40.234375 45.921875 -Q 44.09375 48.828125 44.09375 54.296875 -Q 44.09375 59.90625 40.109375 62.90625 -Q 36.140625 65.921875 28.71875 65.921875 -Q 24.65625 65.921875 20.015625 65.03125 -Q 15.375 64.15625 9.8125 62.3125 -L 9.8125 71.09375 -Q 15.4375 72.65625 20.34375 73.4375 -Q 25.25 74.21875 29.59375 74.21875 -Q 40.828125 74.21875 47.359375 69.109375 -Q 53.90625 64.015625 53.90625 55.328125 -Q 53.90625 49.265625 50.4375 45.09375 -Q 46.96875 40.921875 40.578125 39.3125 -z -" id="DejaVuSans-51"/> - </defs> - <g transform="translate(243.839091 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_5"> - <!-- 4 --> - <defs> - <path d="M 37.796875 64.3125 -L 12.890625 25.390625 -L 37.796875 25.390625 -z -M 35.203125 72.90625 -L 47.609375 72.90625 -L 47.609375 25.390625 -L 58.015625 25.390625 -L 58.015625 17.1875 -L 47.609375 17.1875 -L 47.609375 0 -L 37.796875 0 -L 37.796875 17.1875 -L 4.890625 17.1875 -L 4.890625 26.703125 -z -" id="DejaVuSans-52"/> - </defs> - <g transform="translate(162.239091 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_6"> - <!-- 5 --> - <defs> - <path d="M 10.796875 72.90625 -L 49.515625 72.90625 -L 49.515625 64.59375 -L 19.828125 64.59375 -L 19.828125 46.734375 -Q 21.96875 47.46875 24.109375 47.828125 -Q 26.265625 48.1875 28.421875 48.1875 -Q 40.625 48.1875 47.75 41.5 -Q 54.890625 34.8125 54.890625 23.390625 -Q 54.890625 11.625 47.5625 5.09375 -Q 40.234375 -1.421875 26.90625 -1.421875 -Q 22.3125 -1.421875 17.546875 -0.640625 -Q 12.796875 0.140625 7.71875 1.703125 -L 7.71875 11.625 -Q 12.109375 9.234375 16.796875 8.0625 -Q 21.484375 6.890625 26.703125 6.890625 -Q 35.15625 6.890625 40.078125 11.328125 -Q 45.015625 15.765625 45.015625 23.390625 -Q 45.015625 31 40.078125 35.4375 -Q 35.15625 39.890625 26.703125 39.890625 -Q 22.75 39.890625 18.8125 39.015625 -Q 14.890625 38.140625 10.796875 36.28125 -z -" id="DejaVuSans-53"/> - </defs> - <g transform="translate(189.439091 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_7"> - <!-- 6 --> - <defs> - <path d="M 33.015625 40.375 -Q 26.375 40.375 22.484375 35.828125 -Q 18.609375 31.296875 18.609375 23.390625 -Q 18.609375 15.53125 22.484375 10.953125 -Q 26.375 6.390625 33.015625 6.390625 -Q 39.65625 6.390625 43.53125 10.953125 -Q 47.40625 15.53125 47.40625 23.390625 -Q 47.40625 31.296875 43.53125 35.828125 -Q 39.65625 40.375 33.015625 40.375 -z -M 52.59375 71.296875 -L 52.59375 62.3125 -Q 48.875 64.0625 45.09375 64.984375 -Q 41.3125 65.921875 37.59375 65.921875 -Q 27.828125 65.921875 22.671875 59.328125 -Q 17.53125 52.734375 16.796875 39.40625 -Q 19.671875 43.65625 24.015625 45.921875 -Q 28.375 48.1875 33.59375 48.1875 -Q 44.578125 48.1875 50.953125 41.515625 -Q 57.328125 34.859375 57.328125 23.390625 -Q 57.328125 12.15625 50.6875 5.359375 -Q 44.046875 -1.421875 33.015625 -1.421875 -Q 20.359375 -1.421875 13.671875 8.265625 -Q 6.984375 17.96875 6.984375 36.375 -Q 6.984375 53.65625 15.1875 63.9375 -Q 23.390625 74.21875 37.203125 74.21875 -Q 40.921875 74.21875 44.703125 73.484375 -Q 48.484375 72.75 52.59375 71.296875 -z -" id="DejaVuSans-54"/> - </defs> - <g transform="translate(162.239091 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_8"> - <!-- 7 --> - <defs> - <path d="M 8.203125 72.90625 -L 55.078125 72.90625 -L 55.078125 68.703125 -L 28.609375 0 -L 18.3125 0 -L 43.21875 64.59375 -L 8.203125 64.59375 -z -" id="DejaVuSans-55"/> - </defs> - <g transform="translate(135.039091 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_9"> - <!-- 8 --> - <defs> - <path d="M 31.78125 34.625 -Q 24.75 34.625 20.71875 30.859375 -Q 16.703125 27.09375 16.703125 20.515625 -Q 16.703125 13.921875 20.71875 10.15625 -Q 24.75 6.390625 31.78125 6.390625 -Q 38.8125 6.390625 42.859375 10.171875 -Q 46.921875 13.96875 46.921875 20.515625 -Q 46.921875 27.09375 42.890625 30.859375 -Q 38.875 34.625 31.78125 34.625 -z -M 21.921875 38.8125 -Q 15.578125 40.375 12.03125 44.71875 -Q 8.5 49.078125 8.5 55.328125 -Q 8.5 64.0625 14.71875 69.140625 -Q 20.953125 74.21875 31.78125 74.21875 -Q 42.671875 74.21875 48.875 69.140625 -Q 55.078125 64.0625 55.078125 55.328125 -Q 55.078125 49.078125 51.53125 44.71875 -Q 48 40.375 41.703125 38.8125 -Q 48.828125 37.15625 52.796875 32.3125 -Q 56.78125 27.484375 56.78125 20.515625 -Q 56.78125 9.90625 50.3125 4.234375 -Q 43.84375 -1.421875 31.78125 -1.421875 -Q 19.734375 -1.421875 13.25 4.234375 -Q 6.78125 9.90625 6.78125 20.515625 -Q 6.78125 27.484375 10.78125 32.3125 -Q 14.796875 37.15625 21.921875 38.8125 -z -M 18.3125 54.390625 -Q 18.3125 48.734375 21.84375 45.5625 -Q 25.390625 42.390625 31.78125 42.390625 -Q 38.140625 42.390625 41.71875 45.5625 -Q 45.3125 48.734375 45.3125 54.390625 -Q 45.3125 60.0625 41.71875 63.234375 -Q 38.140625 66.40625 31.78125 66.40625 -Q 25.390625 66.40625 21.84375 63.234375 -Q 18.3125 60.0625 18.3125 54.390625 -z -" id="DejaVuSans-56"/> - </defs> - <g transform="translate(243.839091 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_10"> - <!-- 9 --> - <defs> - <path d="M 10.984375 1.515625 -L 10.984375 10.5 -Q 14.703125 8.734375 18.5 7.8125 -Q 22.3125 6.890625 25.984375 6.890625 -Q 35.75 6.890625 40.890625 13.453125 -Q 46.046875 20.015625 46.78125 33.40625 -Q 43.953125 29.203125 39.59375 26.953125 -Q 35.25 24.703125 29.984375 24.703125 -Q 19.046875 24.703125 12.671875 31.3125 -Q 6.296875 37.9375 6.296875 49.421875 -Q 6.296875 60.640625 12.9375 67.421875 -Q 19.578125 74.21875 30.609375 74.21875 -Q 43.265625 74.21875 49.921875 64.515625 -Q 56.59375 54.828125 56.59375 36.375 -Q 56.59375 19.140625 48.40625 8.859375 -Q 40.234375 -1.421875 26.421875 -1.421875 -Q 22.703125 -1.421875 18.890625 -0.6875 -Q 15.09375 0.046875 10.984375 1.515625 -z -M 30.609375 32.421875 -Q 37.25 32.421875 41.125 36.953125 -Q 45.015625 41.5 45.015625 49.421875 -Q 45.015625 57.28125 41.125 61.84375 -Q 37.25 66.40625 30.609375 66.40625 -Q 23.96875 66.40625 20.09375 61.84375 -Q 16.21875 57.28125 16.21875 49.421875 -Q 16.21875 41.5 20.09375 36.953125 -Q 23.96875 32.421875 30.609375 32.421875 -z -" id="DejaVuSans-57"/> - </defs> - <g transform="translate(271.039091 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_11"> - <!-- 10 --> - <g transform="translate(238.749091 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_12"> - <!-- 11 --> - <g transform="translate(211.549091 452.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_13"> - <!-- 12 --> - <g transform="translate(129.949091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_14"> - <!-- 13 --> - <g transform="translate(157.149091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_15"> - <!-- 14 --> - <g transform="translate(184.349091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_16"> - <!-- 15 --> - <g transform="translate(211.549091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_17"> - <!-- 16 --> - <g transform="translate(238.749091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_18"> - <!-- 17 --> - <g transform="translate(265.949091 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_19"> - <!-- 18 --> - <g transform="translate(129.949091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_20"> - <!-- 19 --> - <g transform="translate(157.149091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_21"> - <!-- 20 --> - <g transform="translate(184.349091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_22"> - <!-- 21 --> - <g transform="translate(211.549091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_23"> - <!-- 22 --> - <g transform="translate(238.749091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_24"> - <!-- 23 --> - <g transform="translate(265.949091 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_25"> - <!-- 24 --> - <g transform="translate(129.949091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_26"> - <!-- 25 --> - <g transform="translate(157.149091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_27"> - <!-- 26 --> - <g transform="translate(184.349091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_28"> - <!-- 27 --> - <g transform="translate(211.549091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_29"> - <!-- 28 --> - <g transform="translate(238.749091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_30"> - <!-- 29 --> - <g transform="translate(265.949091 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_31"> - <!-- 30 --> - <g transform="translate(129.949091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_32"> - <!-- 31 --> - <g transform="translate(157.149091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_33"> - <!-- 32 --> - <g transform="translate(184.349091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_34"> - <!-- 33 --> - <g transform="translate(211.549091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_35"> - <!-- 34 --> - <g transform="translate(238.749091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_36"> - <!-- 35 --> - <g transform="translate(265.949091 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_37"> - <!-- 36 --> - <g transform="translate(129.949091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_38"> - <!-- 37 --> - <g transform="translate(157.149091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_39"> - <!-- 38 --> - <g transform="translate(184.349091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_40"> - <!-- 39 --> - <g transform="translate(211.549091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_41"> - <!-- 40 --> - <g transform="translate(238.749091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_42"> - <!-- 41 --> - <g transform="translate(265.949091 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_43"> - <!-- 42 --> - <g transform="translate(129.949091 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_44"> - <!-- 43 --> - <g transform="translate(157.149091 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_45"> - <!-- 44 --> - <g transform="translate(184.349091 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_46"> - <!-- 45 --> - <g transform="translate(157.149091 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_47"> - <!-- 46 --> - <g transform="translate(211.549091 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_48"> - <!-- 47 --> - <g transform="translate(238.749091 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_49"> - <!-- 48 --> - <g transform="translate(265.949091 276.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_50"> - <!-- 49 --> - <g transform="translate(238.749091 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_51"> - <!-- 50 --> - <g transform="translate(157.149091 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_52"> - <!-- 51 --> - <g transform="translate(238.749091 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_53"> - <!-- 52 --> - <g transform="translate(157.149091 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_54"> - <!-- 53 --> - <g transform="translate(238.749091 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - </g> - <g id="axes_2"> - <g id="patch_7"> - <path d="M 413.950909 702.72 -L 609.790909 702.72 -L 609.790909 17.28 -L 413.950909 17.28 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_2"> - <path clip-path="url(#pab9a750994)" d="M 430.270909 645.6 -L 457.470909 645.6 -L 457.470909 618.4 -L 430.270909 618.4 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 645.6 -L 484.670909 645.6 -L 484.670909 618.4 -L 457.470909 618.4 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 645.6 -L 511.870909 645.6 -L 511.870909 618.4 -L 484.670909 618.4 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 645.6 -L 539.070909 645.6 -L 539.070909 618.4 -L 511.870909 618.4 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 645.6 -L 566.270909 645.6 -L 566.270909 618.4 -L 539.070909 618.4 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 645.6 -L 593.470909 645.6 -L 593.470909 618.4 -L 566.270909 618.4 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 618.4 -L 457.470909 618.4 -L 457.470909 591.2 -L 430.270909 591.2 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 618.4 -L 484.670909 618.4 -L 484.670909 591.2 -L 457.470909 591.2 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 618.4 -L 511.870909 618.4 -L 511.870909 591.2 -L 484.670909 591.2 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 618.4 -L 539.070909 618.4 -L 539.070909 591.2 -L 511.870909 591.2 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 618.4 -L 566.270909 618.4 -L 566.270909 591.2 -L 539.070909 591.2 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 618.4 -L 593.470909 618.4 -L 593.470909 591.2 -L 566.270909 591.2 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 591.2 -L 457.470909 591.2 -L 457.470909 564 -L 430.270909 564 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 591.2 -L 484.670909 591.2 -L 484.670909 564 -L 457.470909 564 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 591.2 -L 511.870909 591.2 -L 511.870909 564 -L 484.670909 564 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 591.2 -L 539.070909 591.2 -L 539.070909 564 -L 511.870909 564 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 591.2 -L 566.270909 591.2 -L 566.270909 564 -L 539.070909 564 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 591.2 -L 593.470909 591.2 -L 593.470909 564 -L 566.270909 564 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 564 -L 457.470909 564 -L 457.470909 536.8 -L 430.270909 536.8 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 564 -L 484.670909 564 -L 484.670909 536.8 -L 457.470909 536.8 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 564 -L 511.870909 564 -L 511.870909 536.8 -L 484.670909 536.8 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 564 -L 539.070909 564 -L 539.070909 536.8 -L 511.870909 536.8 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 564 -L 566.270909 564 -L 566.270909 536.8 -L 539.070909 536.8 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 564 -L 593.470909 564 -L 593.470909 536.8 -L 566.270909 536.8 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 536.8 -L 457.470909 536.8 -L 457.470909 509.6 -L 430.270909 509.6 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 536.8 -L 484.670909 536.8 -L 484.670909 509.6 -L 457.470909 509.6 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 536.8 -L 511.870909 536.8 -L 511.870909 509.6 -L 484.670909 509.6 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 536.8 -L 539.070909 536.8 -L 539.070909 509.6 -L 511.870909 509.6 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 536.8 -L 566.270909 536.8 -L 566.270909 509.6 -L 539.070909 509.6 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 536.8 -L 593.470909 536.8 -L 593.470909 509.6 -L 566.270909 509.6 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 509.6 -L 457.470909 509.6 -L 457.470909 482.4 -L 430.270909 482.4 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 509.6 -L 484.670909 509.6 -L 484.670909 482.4 -L 457.470909 482.4 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 509.6 -L 511.870909 509.6 -L 511.870909 482.4 -L 484.670909 482.4 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 509.6 -L 539.070909 509.6 -L 539.070909 482.4 -L 511.870909 482.4 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 509.6 -L 566.270909 509.6 -L 566.270909 482.4 -L 539.070909 482.4 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 509.6 -L 593.470909 509.6 -L 593.470909 482.4 -L 566.270909 482.4 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 482.4 -L 457.470909 482.4 -L 457.470909 455.2 -L 430.270909 455.2 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 482.4 -L 484.670909 482.4 -L 484.670909 455.2 -L 457.470909 455.2 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 482.4 -L 511.870909 482.4 -L 511.870909 455.2 -L 484.670909 455.2 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 482.4 -L 539.070909 482.4 -L 539.070909 455.2 -L 511.870909 455.2 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 482.4 -L 566.270909 482.4 -L 566.270909 455.2 -L 539.070909 455.2 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 482.4 -L 593.470909 482.4 -L 593.470909 455.2 -L 566.270909 455.2 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 455.2 -L 457.470909 455.2 -L 457.470909 428 -L 430.270909 428 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 455.2 -L 484.670909 455.2 -L 484.670909 428 -L 457.470909 428 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 455.2 -L 511.870909 455.2 -L 511.870909 428 -L 484.670909 428 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 455.2 -L 539.070909 455.2 -L 539.070909 428 -L 511.870909 428 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 455.2 -L 566.270909 455.2 -L 566.270909 428 -L 539.070909 428 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 455.2 -L 593.470909 455.2 -L 593.470909 428 -L 566.270909 428 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 428 -L 457.470909 428 -L 457.470909 400.8 -L 430.270909 400.8 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 428 -L 484.670909 428 -L 484.670909 400.8 -L 457.470909 400.8 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 428 -L 511.870909 428 -L 511.870909 400.8 -L 484.670909 400.8 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 428 -L 539.070909 428 -L 539.070909 400.8 -L 511.870909 400.8 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 428 -L 566.270909 428 -L 566.270909 400.8 -L 539.070909 400.8 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 428 -L 593.470909 428 -L 593.470909 400.8 -L 566.270909 400.8 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 400.8 -L 457.470909 400.8 -L 457.470909 373.6 -L 430.270909 373.6 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 400.8 -L 484.670909 400.8 -L 484.670909 373.6 -L 457.470909 373.6 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 400.8 -L 511.870909 400.8 -L 511.870909 373.6 -L 484.670909 373.6 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 400.8 -L 539.070909 400.8 -L 539.070909 373.6 -L 511.870909 373.6 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 400.8 -L 566.270909 400.8 -L 566.270909 373.6 -L 539.070909 373.6 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 400.8 -L 593.470909 400.8 -L 593.470909 373.6 -L 566.270909 373.6 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 373.6 -L 457.470909 373.6 -L 457.470909 346.4 -L 430.270909 346.4 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 373.6 -L 484.670909 373.6 -L 484.670909 346.4 -L 457.470909 346.4 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 373.6 -L 511.870909 373.6 -L 511.870909 346.4 -L 484.670909 346.4 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 373.6 -L 539.070909 373.6 -L 539.070909 346.4 -L 511.870909 346.4 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 373.6 -L 566.270909 373.6 -L 566.270909 346.4 -L 539.070909 346.4 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 373.6 -L 593.470909 373.6 -L 593.470909 346.4 -L 566.270909 346.4 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 346.4 -L 457.470909 346.4 -L 457.470909 319.2 -L 430.270909 319.2 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 346.4 -L 484.670909 346.4 -L 484.670909 319.2 -L 457.470909 319.2 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 346.4 -L 511.870909 346.4 -L 511.870909 319.2 -L 484.670909 319.2 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 346.4 -L 539.070909 346.4 -L 539.070909 319.2 -L 511.870909 319.2 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 346.4 -L 566.270909 346.4 -L 566.270909 319.2 -L 539.070909 319.2 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 346.4 -L 593.470909 346.4 -L 593.470909 319.2 -L 566.270909 319.2 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 319.2 -L 457.470909 319.2 -L 457.470909 292 -L 430.270909 292 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 319.2 -L 484.670909 319.2 -L 484.670909 292 -L 457.470909 292 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 319.2 -L 511.870909 319.2 -L 511.870909 292 -L 484.670909 292 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 319.2 -L 539.070909 319.2 -L 539.070909 292 -L 511.870909 292 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 319.2 -L 566.270909 319.2 -L 566.270909 292 -L 539.070909 292 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 319.2 -L 593.470909 319.2 -L 593.470909 292 -L 566.270909 292 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 292 -L 457.470909 292 -L 457.470909 264.8 -L 430.270909 264.8 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 292 -L 484.670909 292 -L 484.670909 264.8 -L 457.470909 264.8 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 292 -L 511.870909 292 -L 511.870909 264.8 -L 484.670909 264.8 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 292 -L 539.070909 292 -L 539.070909 264.8 -L 511.870909 264.8 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 292 -L 566.270909 292 -L 566.270909 264.8 -L 539.070909 264.8 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 292 -L 593.470909 292 -L 593.470909 264.8 -L 566.270909 264.8 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 264.8 -L 457.470909 264.8 -L 457.470909 237.6 -L 430.270909 237.6 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 264.8 -L 484.670909 264.8 -L 484.670909 237.6 -L 457.470909 237.6 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 264.8 -L 511.870909 264.8 -L 511.870909 237.6 -L 484.670909 237.6 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 264.8 -L 539.070909 264.8 -L 539.070909 237.6 -L 511.870909 237.6 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 264.8 -L 566.270909 264.8 -L 566.270909 237.6 -L 539.070909 237.6 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 264.8 -L 593.470909 264.8 -L 593.470909 237.6 -L 566.270909 237.6 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 237.6 -L 457.470909 237.6 -L 457.470909 210.4 -L 430.270909 210.4 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 237.6 -L 484.670909 237.6 -L 484.670909 210.4 -L 457.470909 210.4 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 237.6 -L 511.870909 237.6 -L 511.870909 210.4 -L 484.670909 210.4 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 237.6 -L 539.070909 237.6 -L 539.070909 210.4 -L 511.870909 210.4 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 237.6 -L 566.270909 237.6 -L 566.270909 210.4 -L 539.070909 210.4 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 237.6 -L 593.470909 237.6 -L 593.470909 210.4 -L 566.270909 210.4 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 210.4 -L 457.470909 210.4 -L 457.470909 183.2 -L 430.270909 183.2 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 210.4 -L 484.670909 210.4 -L 484.670909 183.2 -L 457.470909 183.2 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 210.4 -L 511.870909 210.4 -L 511.870909 183.2 -L 484.670909 183.2 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 210.4 -L 539.070909 210.4 -L 539.070909 183.2 -L 511.870909 183.2 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 210.4 -L 566.270909 210.4 -L 566.270909 183.2 -L 539.070909 183.2 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 210.4 -L 593.470909 210.4 -L 593.470909 183.2 -L 566.270909 183.2 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 183.2 -L 457.470909 183.2 -L 457.470909 156 -L 430.270909 156 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 183.2 -L 484.670909 183.2 -L 484.670909 156 -L 457.470909 156 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 183.2 -L 511.870909 183.2 -L 511.870909 156 -L 484.670909 156 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 183.2 -L 539.070909 183.2 -L 539.070909 156 -L 511.870909 156 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 183.2 -L 566.270909 183.2 -L 566.270909 156 -L 539.070909 156 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 183.2 -L 593.470909 183.2 -L 593.470909 156 -L 566.270909 156 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 156 -L 457.470909 156 -L 457.470909 128.8 -L 430.270909 128.8 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 156 -L 484.670909 156 -L 484.670909 128.8 -L 457.470909 128.8 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 156 -L 511.870909 156 -L 511.870909 128.8 -L 484.670909 128.8 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 156 -L 539.070909 156 -L 539.070909 128.8 -L 511.870909 128.8 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 156 -L 566.270909 156 -L 566.270909 128.8 -L 539.070909 128.8 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 156 -L 593.470909 156 -L 593.470909 128.8 -L 566.270909 128.8 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 128.8 -L 457.470909 128.8 -L 457.470909 101.6 -L 430.270909 101.6 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 128.8 -L 484.670909 128.8 -L 484.670909 101.6 -L 457.470909 101.6 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 128.8 -L 511.870909 128.8 -L 511.870909 101.6 -L 484.670909 101.6 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 128.8 -L 539.070909 128.8 -L 539.070909 101.6 -L 511.870909 101.6 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 128.8 -L 566.270909 128.8 -L 566.270909 101.6 -L 539.070909 101.6 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 128.8 -L 593.470909 128.8 -L 593.470909 101.6 -L 566.270909 101.6 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 430.270909 101.6 -L 457.470909 101.6 -L 457.470909 74.4 -L 430.270909 74.4 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 457.470909 101.6 -L 484.670909 101.6 -L 484.670909 74.4 -L 457.470909 74.4 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 484.670909 101.6 -L 511.870909 101.6 -L 511.870909 74.4 -L 484.670909 74.4 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 511.870909 101.6 -L 539.070909 101.6 -L 539.070909 74.4 -L 511.870909 74.4 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 539.070909 101.6 -L 566.270909 101.6 -L 566.270909 74.4 -L 539.070909 74.4 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#pab9a750994)" d="M 566.270909 101.6 -L 593.470909 101.6 -L 593.470909 74.4 -L 566.270909 74.4 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="patch_8"> - <path d="M 413.950909 702.72 -L 413.950909 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_9"> - <path d="M 609.790909 702.72 -L 609.790909 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_10"> - <path d="M 413.950909 702.72 -L 609.790909 702.72 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_11"> - <path d="M 413.950909 17.28 -L 609.790909 17.28 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="text_55"> - <!-- 0 --> - <g transform="translate(438.780909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_56"> - <!-- 1 --> - <g transform="translate(465.980909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_57"> - <!-- 2 --> - <g transform="translate(493.180909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_58"> - <!-- 3 --> - <g transform="translate(520.380909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_59"> - <!-- 4 --> - <g transform="translate(547.580909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_60"> - <!-- 5 --> - <g transform="translate(574.780909 636.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_61"> - <!-- 6 --> - <g transform="translate(438.780909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_62"> - <!-- 7 --> - <g transform="translate(465.980909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_63"> - <!-- 8 --> - <g transform="translate(493.180909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_64"> - <!-- 9 --> - <g transform="translate(520.380909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_65"> - <!-- 10 --> - <g transform="translate(542.490909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_66"> - <!-- 11 --> - <g transform="translate(569.690909 609.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_67"> - <!-- 12 --> - <g transform="translate(433.690909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_68"> - <!-- 13 --> - <g transform="translate(460.890909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_69"> - <!-- 14 --> - <g transform="translate(488.090909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_70"> - <!-- 15 --> - <g transform="translate(515.290909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_71"> - <!-- 16 --> - <g transform="translate(542.490909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_72"> - <!-- 17 --> - <g transform="translate(569.690909 582.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_73"> - <!-- 18 --> - <g transform="translate(433.690909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_74"> - <!-- 19 --> - <g transform="translate(460.890909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_75"> - <!-- 20 --> - <g transform="translate(488.090909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_76"> - <!-- 21 --> - <g transform="translate(515.290909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_77"> - <!-- 22 --> - <g transform="translate(542.490909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_78"> - <!-- 23 --> - <g transform="translate(569.690909 554.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_79"> - <!-- 24 --> - <g transform="translate(433.690909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_80"> - <!-- 25 --> - <g transform="translate(460.890909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_81"> - <!-- 26 --> - <g transform="translate(488.090909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_82"> - <!-- 27 --> - <g transform="translate(515.290909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_83"> - <!-- 28 --> - <g transform="translate(542.490909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_84"> - <!-- 29 --> - <g transform="translate(569.690909 527.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-50"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_85"> - <!-- 30 --> - <g transform="translate(433.690909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_86"> - <!-- 31 --> - <g transform="translate(460.890909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_87"> - <!-- 32 --> - <g transform="translate(488.090909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_88"> - <!-- 33 --> - <g transform="translate(515.290909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_89"> - <!-- 34 --> - <g transform="translate(542.490909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_90"> - <!-- 35 --> - <g transform="translate(569.690909 500.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_91"> - <!-- 36 --> - <g transform="translate(433.690909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_92"> - <!-- 37 --> - <g transform="translate(460.890909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_93"> - <!-- 38 --> - <g transform="translate(488.090909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_94"> - <!-- 39 --> - <g transform="translate(515.290909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-51"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_95"> - <!-- 40 --> - <g transform="translate(542.490909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_96"> - <!-- 41 --> - <g transform="translate(569.690909 473.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_97"> - <!-- 42 --> - <g transform="translate(433.690909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_98"> - <!-- 43 --> - <g transform="translate(460.890909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_99"> - <!-- 44 --> - <g transform="translate(488.090909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_100"> - <!-- 45 --> - <g transform="translate(515.290909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_101"> - <!-- 46 --> - <g transform="translate(542.490909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_102"> - <!-- 47 --> - <g transform="translate(569.690909 446.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_103"> - <!-- 48 --> - <g transform="translate(433.690909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_104"> - <!-- 49 --> - <g transform="translate(460.890909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-52"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_105"> - <!-- 50 --> - <g transform="translate(488.090909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_106"> - <!-- 51 --> - <g transform="translate(515.290909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_107"> - <!-- 52 --> - <g transform="translate(542.490909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_108"> - <!-- 53 --> - <g transform="translate(569.690909 418.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_109"> - <!-- 54 --> - <g transform="translate(433.690909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_110"> - <!-- 55 --> - <g transform="translate(460.890909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_111"> - <!-- 56 --> - <g transform="translate(488.090909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_112"> - <!-- 57 --> - <g transform="translate(515.290909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_113"> - <!-- 58 --> - <g transform="translate(542.490909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_114"> - <!-- 59 --> - <g transform="translate(569.690909 391.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-53"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_115"> - <!-- 60 --> - <g transform="translate(433.690909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_116"> - <!-- 61 --> - <g transform="translate(460.890909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_117"> - <!-- 62 --> - <g transform="translate(488.090909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_118"> - <!-- 63 --> - <g transform="translate(515.290909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_119"> - <!-- 64 --> - <g transform="translate(542.490909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_120"> - <!-- 65 --> - <g transform="translate(569.690909 364.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_121"> - <!-- 66 --> - <g transform="translate(433.690909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_122"> - <!-- 67 --> - <g transform="translate(460.890909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_123"> - <!-- 68 --> - <g transform="translate(488.090909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_124"> - <!-- 69 --> - <g transform="translate(515.290909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-54"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_125"> - <!-- 70 --> - <g transform="translate(542.490909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_126"> - <!-- 71 --> - <g transform="translate(569.690909 337.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_127"> - <!-- 72 --> - <g transform="translate(433.690909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_128"> - <!-- 73 --> - <g transform="translate(460.890909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_129"> - <!-- 74 --> - <g transform="translate(488.090909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_130"> - <!-- 75 --> - <g transform="translate(515.290909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_131"> - <!-- 76 --> - <g transform="translate(542.490909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_132"> - <!-- 77 --> - <g transform="translate(569.690909 310.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_133"> - <!-- 78 --> - <g transform="translate(433.690909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_134"> - <!-- 79 --> - <g transform="translate(460.890909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-55"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_135"> - <!-- 80 --> - <g transform="translate(488.090909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_136"> - <!-- 81 --> - <g transform="translate(515.290909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_137"> - <!-- 82 --> - <g transform="translate(542.490909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_138"> - <!-- 83 --> - <g transform="translate(569.690909 282.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_139"> - <!-- 84 --> - <g transform="translate(433.690909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_140"> - <!-- 85 --> - <g transform="translate(460.890909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_141"> - <!-- 86 --> - <g transform="translate(488.090909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_142"> - <!-- 87 --> - <g transform="translate(515.290909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_143"> - <!-- 88 --> - <g transform="translate(542.490909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_144"> - <!-- 89 --> - <g transform="translate(569.690909 255.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-56"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_145"> - <!-- 90 --> - <g transform="translate(433.690909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_146"> - <!-- 91 --> - <g transform="translate(460.890909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_147"> - <!-- 92 --> - <g transform="translate(488.090909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_148"> - <!-- 93 --> - <g transform="translate(515.290909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_149"> - <!-- 94 --> - <g transform="translate(542.490909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_150"> - <!-- 95 --> - <g transform="translate(569.690909 228.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_151"> - <!-- 96 --> - <g transform="translate(433.690909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_152"> - <!-- 97 --> - <g transform="translate(460.890909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_153"> - <!-- 98 --> - <g transform="translate(488.090909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_154"> - <!-- 99 --> - <g transform="translate(515.290909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-57"/> - <use x="63.623047" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_155"> - <!-- 100 --> - <g transform="translate(537.400909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_156"> - <!-- 101 --> - <g transform="translate(564.600909 201.215)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_157"> - <!-- 102 --> - <g transform="translate(428.600909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_158"> - <!-- 103 --> - <g transform="translate(455.800909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_159"> - <!-- 104 --> - <g transform="translate(483.000909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_160"> - <!-- 105 --> - <g transform="translate(510.200909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_161"> - <!-- 106 --> - <g transform="translate(537.400909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_162"> - <!-- 107 --> - <g transform="translate(564.600909 174.015)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_163"> - <!-- 108 --> - <g transform="translate(428.600909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_164"> - <!-- 109 --> - <g transform="translate(455.800909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-48"/> - <use x="127.246094" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_165"> - <!-- 110 --> - <g transform="translate(483.000909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_166"> - <!-- 111 --> - <g transform="translate(510.200909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_167"> - <!-- 112 --> - <g transform="translate(537.400909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_168"> - <!-- 113 --> - <g transform="translate(564.600909 146.815)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_169"> - <!-- 114 --> - <g transform="translate(428.600909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_170"> - <!-- 115 --> - <g transform="translate(455.800909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-53"/> - </g> - </g> - <g id="text_171"> - <!-- 116 --> - <g transform="translate(483.000909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-54"/> - </g> - </g> - <g id="text_172"> - <!-- 117 --> - <g transform="translate(510.200909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-55"/> - </g> - </g> - <g id="text_173"> - <!-- 118 --> - <g transform="translate(537.400909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-56"/> - </g> - </g> - <g id="text_174"> - <!-- 119 --> - <g transform="translate(564.600909 119.615)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-49"/> - <use x="127.246094" xlink:href="#DejaVuSans-57"/> - </g> - </g> - <g id="text_175"> - <!-- 120 --> - <g transform="translate(428.600909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-48"/> - </g> - </g> - <g id="text_176"> - <!-- 121 --> - <g transform="translate(455.800909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-49"/> - </g> - </g> - <g id="text_177"> - <!-- 122 --> - <g transform="translate(483.000909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-50"/> - </g> - </g> - <g id="text_178"> - <!-- 123 --> - <g transform="translate(510.200909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-51"/> - </g> - </g> - <g id="text_179"> - <!-- 124 --> - <g transform="translate(537.400909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-52"/> - </g> - </g> - <g id="text_180"> - <!-- 125 --> - <g transform="translate(564.600909 92.415)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-49"/> - <use x="63.623047" xlink:href="#DejaVuSans-50"/> - <use x="127.246094" xlink:href="#DejaVuSans-53"/> - </g> - </g> - </g> - </g> - <defs> - <clipPath id="pd9562cdf1e"> - <rect height="685.44" width="195.84" x="110.209091" y="17.28"/> - </clipPath> - <clipPath id="pab9a750994"> - <rect height="685.44" width="195.84" x="413.950909" y="17.28"/> - </clipPath> - </defs> -</svg> diff --git a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/map.py b/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/map.py index a391020..0386999 100644 --- a/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/map.py +++ b/docs/details/figures/MeshQuad4/Map/FineLayer2Regular/map.py @@ -1,50 +1,51 @@ import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- fig, axes = plt.subplots(figsize=(10,10), ncols=2) # --- ax = axes[0] -mesh = gf.Mesh.Quad4.FineLayer(6*3, 18*2) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.random.random(conn.shape[0]) +mesh = gf.Mesh.Quad4.FineLayer(6*3, 18*2) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.random.random(mesh.nelem()) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet', axis=ax) ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) # --- ax = axes[1] mapping = gf.Mesh.Quad4.Map.FineLayer2Regular(mesh) -new_mesh = mapping.getRegular() +new_mesh = mapping.getRegularMesh() -coor = new_mesh.coor() -conn = new_mesh.conn() +coor = new_mesh.coor() +conn = new_mesh.conn() -c = mapping.map(cindex) +c = mapping.mapToRegular(cindex) im = gplt.patch(coor=coor, conn=conn, cindex=c, cmap='jet', axis=ax) ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) # --- plt.savefig('map.svg') plt.show() diff --git a/docs/details/figures/MeshQuad4/Regular/example.py b/docs/details/figures/MeshQuad4/Regular/example.py index cdcee34..8e25228 100644 --- a/docs/details/figures/MeshQuad4/Regular/example.py +++ b/docs/details/figures/MeshQuad4/Regular/example.py @@ -1,44 +1,40 @@ +import numpy as np import GooseFEM as gf import matplotlib.pyplot as plt import GooseMPL as gplt -import numpy as np plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Quad4.Regular(21,11) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Quad4.Regular(5, 6) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.arange(mesh.nelem()) + +Left = mesh.nodesLeftEdge() +Right = mesh.nodesRightEdge() +Bottom = mesh.nodesBottomEdge() +Top = mesh.nodesTopEdge() # -------------------------------------------------------------------------------------------------- fig, ax = plt.subplots(figsize=(10,10)) im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet') ax.plot(coor[:,0], coor[:,1], marker='o', linestyle='none') -lft = mesh.nodesLeftOpenEdge() -rgt = mesh.nodesRightOpenEdge() -bot = mesh.nodesBottomEdge() -top = mesh.nodesTopEdge() - -ax.plot(coor[lft,0], coor[lft,1], marker='o', linestyle='none', color='g', label='nodesLeftOpenEdge') -ax.plot(coor[rgt,0], coor[rgt,1], marker='o', linestyle='none', color='b', label='nodesRightOpenEdge') -ax.plot(coor[bot,0], coor[bot,1], marker='o', linestyle='none', color='r', label='nodesBottomEdge') -ax.plot(coor[top,0], coor[top,1], marker='o', linestyle='none', color='y', label='nodesTopEdge') +ax.plot(coor[Left ,0], coor[Left ,1], marker='o', linestyle='none', color='g') +ax.plot(coor[Right ,0], coor[Right ,1], marker='o', linestyle='none', color='b') +ax.plot(coor[Bottom,0], coor[Bottom,1], marker='o', linestyle='none', color='r') +ax.plot(coor[Top ,0], coor[Top ,1], marker='o', linestyle='none', color='y') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) -ax.set_xlim([-1, 22]) -ax.set_ylim([-1, 14]) - -ax.legend(ncol=2, loc='upper center') - plt.savefig('example.svg') -plt.show() +plt.close() diff --git a/docs/details/figures/MeshQuad4/Regular/example.svg b/docs/details/figures/MeshQuad4/Regular/example.svg deleted file mode 100644 index 5cdc3fa..0000000 --- a/docs/details/figures/MeshQuad4/Regular/example.svg +++ /dev/null @@ -1,2375 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with matplotlib (https://matplotlib.org/) --> -<svg height="720pt" version="1.1" viewBox="0 0 720 720" width="720pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <style type="text/css"> -*{stroke-linecap:butt;stroke-linejoin:round;} - </style> - </defs> - <g id="figure_1"> - <g id="patch_1"> - <path d="M 0 720 -L 720 720 -L 720 0 -L 0 0 -z -" style="fill:none;"/> - </g> - <g id="axes_1"> - <g id="patch_2"> - <path d="M 17.28 583.513043 -L 702.72 583.513043 -L 702.72 136.486957 -L 17.28 136.486957 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_1"> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 553.711304 -L 76.883478 553.711304 -L 76.883478 523.909565 -L 47.081739 523.909565 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 553.711304 -L 106.685217 553.711304 -L 106.685217 523.909565 -L 76.883478 523.909565 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 553.711304 -L 136.486957 553.711304 -L 136.486957 523.909565 -L 106.685217 523.909565 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 553.711304 -L 166.288696 553.711304 -L 166.288696 523.909565 -L 136.486957 523.909565 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 553.711304 -L 196.090435 553.711304 -L 196.090435 523.909565 -L 166.288696 523.909565 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 553.711304 -L 225.892174 553.711304 -L 225.892174 523.909565 -L 196.090435 523.909565 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 553.711304 -L 255.693913 553.711304 -L 255.693913 523.909565 -L 225.892174 523.909565 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 553.711304 -L 285.495652 553.711304 -L 285.495652 523.909565 -L 255.693913 523.909565 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 553.711304 -L 315.297391 553.711304 -L 315.297391 523.909565 -L 285.495652 523.909565 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 553.711304 -L 345.09913 553.711304 -L 345.09913 523.909565 -L 315.297391 523.909565 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 553.711304 -L 374.90087 553.711304 -L 374.90087 523.909565 -L 345.09913 523.909565 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 553.711304 -L 404.702609 553.711304 -L 404.702609 523.909565 -L 374.90087 523.909565 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 553.711304 -L 434.504348 553.711304 -L 434.504348 523.909565 -L 404.702609 523.909565 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 553.711304 -L 464.306087 553.711304 -L 464.306087 523.909565 -L 434.504348 523.909565 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 553.711304 -L 494.107826 553.711304 -L 494.107826 523.909565 -L 464.306087 523.909565 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 553.711304 -L 523.909565 553.711304 -L 523.909565 523.909565 -L 494.107826 523.909565 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 553.711304 -L 553.711304 553.711304 -L 553.711304 523.909565 -L 523.909565 523.909565 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 553.711304 -L 583.513043 553.711304 -L 583.513043 523.909565 -L 553.711304 523.909565 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 553.711304 -L 613.314783 553.711304 -L 613.314783 523.909565 -L 583.513043 523.909565 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 553.711304 -L 643.116522 553.711304 -L 643.116522 523.909565 -L 613.314783 523.909565 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 553.711304 -L 672.918261 553.711304 -L 672.918261 523.909565 -L 643.116522 523.909565 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 523.909565 -L 76.883478 523.909565 -L 76.883478 494.107826 -L 47.081739 494.107826 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 523.909565 -L 106.685217 523.909565 -L 106.685217 494.107826 -L 76.883478 494.107826 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 523.909565 -L 136.486957 523.909565 -L 136.486957 494.107826 -L 106.685217 494.107826 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 523.909565 -L 166.288696 523.909565 -L 166.288696 494.107826 -L 136.486957 494.107826 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 523.909565 -L 196.090435 523.909565 -L 196.090435 494.107826 -L 166.288696 494.107826 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 523.909565 -L 225.892174 523.909565 -L 225.892174 494.107826 -L 196.090435 494.107826 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 523.909565 -L 255.693913 523.909565 -L 255.693913 494.107826 -L 225.892174 494.107826 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 523.909565 -L 285.495652 523.909565 -L 285.495652 494.107826 -L 255.693913 494.107826 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 523.909565 -L 315.297391 523.909565 -L 315.297391 494.107826 -L 285.495652 494.107826 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 523.909565 -L 345.09913 523.909565 -L 345.09913 494.107826 -L 315.297391 494.107826 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 523.909565 -L 374.90087 523.909565 -L 374.90087 494.107826 -L 345.09913 494.107826 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 523.909565 -L 404.702609 523.909565 -L 404.702609 494.107826 -L 374.90087 494.107826 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 523.909565 -L 434.504348 523.909565 -L 434.504348 494.107826 -L 404.702609 494.107826 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 523.909565 -L 464.306087 523.909565 -L 464.306087 494.107826 -L 434.504348 494.107826 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 523.909565 -L 494.107826 523.909565 -L 494.107826 494.107826 -L 464.306087 494.107826 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 523.909565 -L 523.909565 523.909565 -L 523.909565 494.107826 -L 494.107826 494.107826 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 523.909565 -L 553.711304 523.909565 -L 553.711304 494.107826 -L 523.909565 494.107826 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 523.909565 -L 583.513043 523.909565 -L 583.513043 494.107826 -L 553.711304 494.107826 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 523.909565 -L 613.314783 523.909565 -L 613.314783 494.107826 -L 583.513043 494.107826 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 523.909565 -L 643.116522 523.909565 -L 643.116522 494.107826 -L 613.314783 494.107826 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 523.909565 -L 672.918261 523.909565 -L 672.918261 494.107826 -L 643.116522 494.107826 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 494.107826 -L 76.883478 494.107826 -L 76.883478 464.306087 -L 47.081739 464.306087 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 494.107826 -L 106.685217 494.107826 -L 106.685217 464.306087 -L 76.883478 464.306087 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 494.107826 -L 136.486957 494.107826 -L 136.486957 464.306087 -L 106.685217 464.306087 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 494.107826 -L 166.288696 494.107826 -L 166.288696 464.306087 -L 136.486957 464.306087 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 494.107826 -L 196.090435 494.107826 -L 196.090435 464.306087 -L 166.288696 464.306087 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 494.107826 -L 225.892174 494.107826 -L 225.892174 464.306087 -L 196.090435 464.306087 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 494.107826 -L 255.693913 494.107826 -L 255.693913 464.306087 -L 225.892174 464.306087 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 494.107826 -L 285.495652 494.107826 -L 285.495652 464.306087 -L 255.693913 464.306087 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 494.107826 -L 315.297391 494.107826 -L 315.297391 464.306087 -L 285.495652 464.306087 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 494.107826 -L 345.09913 494.107826 -L 345.09913 464.306087 -L 315.297391 464.306087 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 494.107826 -L 374.90087 494.107826 -L 374.90087 464.306087 -L 345.09913 464.306087 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 494.107826 -L 404.702609 494.107826 -L 404.702609 464.306087 -L 374.90087 464.306087 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 494.107826 -L 434.504348 494.107826 -L 434.504348 464.306087 -L 404.702609 464.306087 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 494.107826 -L 464.306087 494.107826 -L 464.306087 464.306087 -L 434.504348 464.306087 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 494.107826 -L 494.107826 494.107826 -L 494.107826 464.306087 -L 464.306087 464.306087 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 494.107826 -L 523.909565 494.107826 -L 523.909565 464.306087 -L 494.107826 464.306087 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 494.107826 -L 553.711304 494.107826 -L 553.711304 464.306087 -L 523.909565 464.306087 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 494.107826 -L 583.513043 494.107826 -L 583.513043 464.306087 -L 553.711304 464.306087 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 494.107826 -L 613.314783 494.107826 -L 613.314783 464.306087 -L 583.513043 464.306087 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 494.107826 -L 643.116522 494.107826 -L 643.116522 464.306087 -L 613.314783 464.306087 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 494.107826 -L 672.918261 494.107826 -L 672.918261 464.306087 -L 643.116522 464.306087 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 464.306087 -L 76.883478 464.306087 -L 76.883478 434.504348 -L 47.081739 434.504348 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 464.306087 -L 106.685217 464.306087 -L 106.685217 434.504348 -L 76.883478 434.504348 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 464.306087 -L 136.486957 464.306087 -L 136.486957 434.504348 -L 106.685217 434.504348 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 464.306087 -L 166.288696 464.306087 -L 166.288696 434.504348 -L 136.486957 434.504348 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 464.306087 -L 196.090435 464.306087 -L 196.090435 434.504348 -L 166.288696 434.504348 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 464.306087 -L 225.892174 464.306087 -L 225.892174 434.504348 -L 196.090435 434.504348 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 464.306087 -L 255.693913 464.306087 -L 255.693913 434.504348 -L 225.892174 434.504348 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 464.306087 -L 285.495652 464.306087 -L 285.495652 434.504348 -L 255.693913 434.504348 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 464.306087 -L 315.297391 464.306087 -L 315.297391 434.504348 -L 285.495652 434.504348 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 464.306087 -L 345.09913 464.306087 -L 345.09913 434.504348 -L 315.297391 434.504348 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 464.306087 -L 374.90087 464.306087 -L 374.90087 434.504348 -L 345.09913 434.504348 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 464.306087 -L 404.702609 464.306087 -L 404.702609 434.504348 -L 374.90087 434.504348 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 464.306087 -L 434.504348 464.306087 -L 434.504348 434.504348 -L 404.702609 434.504348 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 464.306087 -L 464.306087 464.306087 -L 464.306087 434.504348 -L 434.504348 434.504348 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 464.306087 -L 494.107826 464.306087 -L 494.107826 434.504348 -L 464.306087 434.504348 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 464.306087 -L 523.909565 464.306087 -L 523.909565 434.504348 -L 494.107826 434.504348 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 464.306087 -L 553.711304 464.306087 -L 553.711304 434.504348 -L 523.909565 434.504348 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 464.306087 -L 583.513043 464.306087 -L 583.513043 434.504348 -L 553.711304 434.504348 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 464.306087 -L 613.314783 464.306087 -L 613.314783 434.504348 -L 583.513043 434.504348 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 464.306087 -L 643.116522 464.306087 -L 643.116522 434.504348 -L 613.314783 434.504348 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 464.306087 -L 672.918261 464.306087 -L 672.918261 434.504348 -L 643.116522 434.504348 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 434.504348 -L 76.883478 434.504348 -L 76.883478 404.702609 -L 47.081739 404.702609 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 434.504348 -L 106.685217 434.504348 -L 106.685217 404.702609 -L 76.883478 404.702609 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 434.504348 -L 136.486957 434.504348 -L 136.486957 404.702609 -L 106.685217 404.702609 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 434.504348 -L 166.288696 434.504348 -L 166.288696 404.702609 -L 136.486957 404.702609 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 434.504348 -L 196.090435 434.504348 -L 196.090435 404.702609 -L 166.288696 404.702609 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 434.504348 -L 225.892174 434.504348 -L 225.892174 404.702609 -L 196.090435 404.702609 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 434.504348 -L 255.693913 434.504348 -L 255.693913 404.702609 -L 225.892174 404.702609 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 434.504348 -L 285.495652 434.504348 -L 285.495652 404.702609 -L 255.693913 404.702609 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 434.504348 -L 315.297391 434.504348 -L 315.297391 404.702609 -L 285.495652 404.702609 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 434.504348 -L 345.09913 434.504348 -L 345.09913 404.702609 -L 315.297391 404.702609 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 434.504348 -L 374.90087 434.504348 -L 374.90087 404.702609 -L 345.09913 404.702609 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 434.504348 -L 404.702609 434.504348 -L 404.702609 404.702609 -L 374.90087 404.702609 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 434.504348 -L 434.504348 434.504348 -L 434.504348 404.702609 -L 404.702609 404.702609 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 434.504348 -L 464.306087 434.504348 -L 464.306087 404.702609 -L 434.504348 404.702609 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 434.504348 -L 494.107826 434.504348 -L 494.107826 404.702609 -L 464.306087 404.702609 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 434.504348 -L 523.909565 434.504348 -L 523.909565 404.702609 -L 494.107826 404.702609 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 434.504348 -L 553.711304 434.504348 -L 553.711304 404.702609 -L 523.909565 404.702609 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 434.504348 -L 583.513043 434.504348 -L 583.513043 404.702609 -L 553.711304 404.702609 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 434.504348 -L 613.314783 434.504348 -L 613.314783 404.702609 -L 583.513043 404.702609 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 434.504348 -L 643.116522 434.504348 -L 643.116522 404.702609 -L 613.314783 404.702609 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 434.504348 -L 672.918261 434.504348 -L 672.918261 404.702609 -L 643.116522 404.702609 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 404.702609 -L 76.883478 404.702609 -L 76.883478 374.90087 -L 47.081739 374.90087 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 404.702609 -L 106.685217 404.702609 -L 106.685217 374.90087 -L 76.883478 374.90087 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 404.702609 -L 136.486957 404.702609 -L 136.486957 374.90087 -L 106.685217 374.90087 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 404.702609 -L 166.288696 404.702609 -L 166.288696 374.90087 -L 136.486957 374.90087 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 404.702609 -L 196.090435 404.702609 -L 196.090435 374.90087 -L 166.288696 374.90087 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 404.702609 -L 225.892174 404.702609 -L 225.892174 374.90087 -L 196.090435 374.90087 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 404.702609 -L 255.693913 404.702609 -L 255.693913 374.90087 -L 225.892174 374.90087 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 404.702609 -L 285.495652 404.702609 -L 285.495652 374.90087 -L 255.693913 374.90087 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 404.702609 -L 315.297391 404.702609 -L 315.297391 374.90087 -L 285.495652 374.90087 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 404.702609 -L 345.09913 404.702609 -L 345.09913 374.90087 -L 315.297391 374.90087 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 404.702609 -L 374.90087 404.702609 -L 374.90087 374.90087 -L 345.09913 374.90087 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 404.702609 -L 404.702609 404.702609 -L 404.702609 374.90087 -L 374.90087 374.90087 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 404.702609 -L 434.504348 404.702609 -L 434.504348 374.90087 -L 404.702609 374.90087 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 404.702609 -L 464.306087 404.702609 -L 464.306087 374.90087 -L 434.504348 374.90087 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 404.702609 -L 494.107826 404.702609 -L 494.107826 374.90087 -L 464.306087 374.90087 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 404.702609 -L 523.909565 404.702609 -L 523.909565 374.90087 -L 494.107826 374.90087 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 404.702609 -L 553.711304 404.702609 -L 553.711304 374.90087 -L 523.909565 374.90087 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 404.702609 -L 583.513043 404.702609 -L 583.513043 374.90087 -L 553.711304 374.90087 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 404.702609 -L 613.314783 404.702609 -L 613.314783 374.90087 -L 583.513043 374.90087 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 404.702609 -L 643.116522 404.702609 -L 643.116522 374.90087 -L 613.314783 374.90087 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 404.702609 -L 672.918261 404.702609 -L 672.918261 374.90087 -L 643.116522 374.90087 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 374.90087 -L 76.883478 374.90087 -L 76.883478 345.09913 -L 47.081739 345.09913 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 374.90087 -L 106.685217 374.90087 -L 106.685217 345.09913 -L 76.883478 345.09913 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 374.90087 -L 136.486957 374.90087 -L 136.486957 345.09913 -L 106.685217 345.09913 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 374.90087 -L 166.288696 374.90087 -L 166.288696 345.09913 -L 136.486957 345.09913 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 374.90087 -L 196.090435 374.90087 -L 196.090435 345.09913 -L 166.288696 345.09913 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 374.90087 -L 225.892174 374.90087 -L 225.892174 345.09913 -L 196.090435 345.09913 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 374.90087 -L 255.693913 374.90087 -L 255.693913 345.09913 -L 225.892174 345.09913 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 374.90087 -L 285.495652 374.90087 -L 285.495652 345.09913 -L 255.693913 345.09913 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 374.90087 -L 315.297391 374.90087 -L 315.297391 345.09913 -L 285.495652 345.09913 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 374.90087 -L 345.09913 374.90087 -L 345.09913 345.09913 -L 315.297391 345.09913 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 374.90087 -L 374.90087 374.90087 -L 374.90087 345.09913 -L 345.09913 345.09913 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 374.90087 -L 404.702609 374.90087 -L 404.702609 345.09913 -L 374.90087 345.09913 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 374.90087 -L 434.504348 374.90087 -L 434.504348 345.09913 -L 404.702609 345.09913 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 374.90087 -L 464.306087 374.90087 -L 464.306087 345.09913 -L 434.504348 345.09913 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 374.90087 -L 494.107826 374.90087 -L 494.107826 345.09913 -L 464.306087 345.09913 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 374.90087 -L 523.909565 374.90087 -L 523.909565 345.09913 -L 494.107826 345.09913 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 374.90087 -L 553.711304 374.90087 -L 553.711304 345.09913 -L 523.909565 345.09913 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 374.90087 -L 583.513043 374.90087 -L 583.513043 345.09913 -L 553.711304 345.09913 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 374.90087 -L 613.314783 374.90087 -L 613.314783 345.09913 -L 583.513043 345.09913 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 374.90087 -L 643.116522 374.90087 -L 643.116522 345.09913 -L 613.314783 345.09913 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 374.90087 -L 672.918261 374.90087 -L 672.918261 345.09913 -L 643.116522 345.09913 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 345.09913 -L 76.883478 345.09913 -L 76.883478 315.297391 -L 47.081739 315.297391 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 345.09913 -L 106.685217 345.09913 -L 106.685217 315.297391 -L 76.883478 315.297391 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 345.09913 -L 136.486957 345.09913 -L 136.486957 315.297391 -L 106.685217 315.297391 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 345.09913 -L 166.288696 345.09913 -L 166.288696 315.297391 -L 136.486957 315.297391 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 345.09913 -L 196.090435 345.09913 -L 196.090435 315.297391 -L 166.288696 315.297391 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 345.09913 -L 225.892174 345.09913 -L 225.892174 315.297391 -L 196.090435 315.297391 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 345.09913 -L 255.693913 345.09913 -L 255.693913 315.297391 -L 225.892174 315.297391 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 345.09913 -L 285.495652 345.09913 -L 285.495652 315.297391 -L 255.693913 315.297391 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 345.09913 -L 315.297391 345.09913 -L 315.297391 315.297391 -L 285.495652 315.297391 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 345.09913 -L 345.09913 345.09913 -L 345.09913 315.297391 -L 315.297391 315.297391 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 345.09913 -L 374.90087 345.09913 -L 374.90087 315.297391 -L 345.09913 315.297391 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 345.09913 -L 404.702609 345.09913 -L 404.702609 315.297391 -L 374.90087 315.297391 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 345.09913 -L 434.504348 345.09913 -L 434.504348 315.297391 -L 404.702609 315.297391 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 345.09913 -L 464.306087 345.09913 -L 464.306087 315.297391 -L 434.504348 315.297391 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 345.09913 -L 494.107826 345.09913 -L 494.107826 315.297391 -L 464.306087 315.297391 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 345.09913 -L 523.909565 345.09913 -L 523.909565 315.297391 -L 494.107826 315.297391 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 345.09913 -L 553.711304 345.09913 -L 553.711304 315.297391 -L 523.909565 315.297391 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 345.09913 -L 583.513043 345.09913 -L 583.513043 315.297391 -L 553.711304 315.297391 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 345.09913 -L 613.314783 345.09913 -L 613.314783 315.297391 -L 583.513043 315.297391 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 345.09913 -L 643.116522 345.09913 -L 643.116522 315.297391 -L 613.314783 315.297391 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 345.09913 -L 672.918261 345.09913 -L 672.918261 315.297391 -L 643.116522 315.297391 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 315.297391 -L 76.883478 315.297391 -L 76.883478 285.495652 -L 47.081739 285.495652 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 315.297391 -L 106.685217 315.297391 -L 106.685217 285.495652 -L 76.883478 285.495652 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 315.297391 -L 136.486957 315.297391 -L 136.486957 285.495652 -L 106.685217 285.495652 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 315.297391 -L 166.288696 315.297391 -L 166.288696 285.495652 -L 136.486957 285.495652 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 315.297391 -L 196.090435 315.297391 -L 196.090435 285.495652 -L 166.288696 285.495652 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 315.297391 -L 225.892174 315.297391 -L 225.892174 285.495652 -L 196.090435 285.495652 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 315.297391 -L 255.693913 315.297391 -L 255.693913 285.495652 -L 225.892174 285.495652 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 315.297391 -L 285.495652 315.297391 -L 285.495652 285.495652 -L 255.693913 285.495652 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 315.297391 -L 315.297391 315.297391 -L 315.297391 285.495652 -L 285.495652 285.495652 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 315.297391 -L 345.09913 315.297391 -L 345.09913 285.495652 -L 315.297391 285.495652 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 315.297391 -L 374.90087 315.297391 -L 374.90087 285.495652 -L 345.09913 285.495652 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 315.297391 -L 404.702609 315.297391 -L 404.702609 285.495652 -L 374.90087 285.495652 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 315.297391 -L 434.504348 315.297391 -L 434.504348 285.495652 -L 404.702609 285.495652 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 315.297391 -L 464.306087 315.297391 -L 464.306087 285.495652 -L 434.504348 285.495652 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 315.297391 -L 494.107826 315.297391 -L 494.107826 285.495652 -L 464.306087 285.495652 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 315.297391 -L 523.909565 315.297391 -L 523.909565 285.495652 -L 494.107826 285.495652 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 315.297391 -L 553.711304 315.297391 -L 553.711304 285.495652 -L 523.909565 285.495652 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 315.297391 -L 583.513043 315.297391 -L 583.513043 285.495652 -L 553.711304 285.495652 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 315.297391 -L 613.314783 315.297391 -L 613.314783 285.495652 -L 583.513043 285.495652 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 315.297391 -L 643.116522 315.297391 -L 643.116522 285.495652 -L 613.314783 285.495652 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 315.297391 -L 672.918261 315.297391 -L 672.918261 285.495652 -L 643.116522 285.495652 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 285.495652 -L 76.883478 285.495652 -L 76.883478 255.693913 -L 47.081739 255.693913 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 285.495652 -L 106.685217 285.495652 -L 106.685217 255.693913 -L 76.883478 255.693913 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 285.495652 -L 136.486957 285.495652 -L 136.486957 255.693913 -L 106.685217 255.693913 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 285.495652 -L 166.288696 285.495652 -L 166.288696 255.693913 -L 136.486957 255.693913 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 285.495652 -L 196.090435 285.495652 -L 196.090435 255.693913 -L 166.288696 255.693913 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 285.495652 -L 225.892174 285.495652 -L 225.892174 255.693913 -L 196.090435 255.693913 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 285.495652 -L 255.693913 285.495652 -L 255.693913 255.693913 -L 225.892174 255.693913 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 285.495652 -L 285.495652 285.495652 -L 285.495652 255.693913 -L 255.693913 255.693913 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 285.495652 -L 315.297391 285.495652 -L 315.297391 255.693913 -L 285.495652 255.693913 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 285.495652 -L 345.09913 285.495652 -L 345.09913 255.693913 -L 315.297391 255.693913 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 285.495652 -L 374.90087 285.495652 -L 374.90087 255.693913 -L 345.09913 255.693913 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 285.495652 -L 404.702609 285.495652 -L 404.702609 255.693913 -L 374.90087 255.693913 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 285.495652 -L 434.504348 285.495652 -L 434.504348 255.693913 -L 404.702609 255.693913 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 285.495652 -L 464.306087 285.495652 -L 464.306087 255.693913 -L 434.504348 255.693913 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 285.495652 -L 494.107826 285.495652 -L 494.107826 255.693913 -L 464.306087 255.693913 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 285.495652 -L 523.909565 285.495652 -L 523.909565 255.693913 -L 494.107826 255.693913 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 285.495652 -L 553.711304 285.495652 -L 553.711304 255.693913 -L 523.909565 255.693913 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 285.495652 -L 583.513043 285.495652 -L 583.513043 255.693913 -L 553.711304 255.693913 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 285.495652 -L 613.314783 285.495652 -L 613.314783 255.693913 -L 583.513043 255.693913 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 285.495652 -L 643.116522 285.495652 -L 643.116522 255.693913 -L 613.314783 255.693913 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 285.495652 -L 672.918261 285.495652 -L 672.918261 255.693913 -L 643.116522 255.693913 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 47.081739 255.693913 -L 76.883478 255.693913 -L 76.883478 225.892174 -L 47.081739 225.892174 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 76.883478 255.693913 -L 106.685217 255.693913 -L 106.685217 225.892174 -L 76.883478 225.892174 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 106.685217 255.693913 -L 136.486957 255.693913 -L 136.486957 225.892174 -L 106.685217 225.892174 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 136.486957 255.693913 -L 166.288696 255.693913 -L 166.288696 225.892174 -L 136.486957 225.892174 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 166.288696 255.693913 -L 196.090435 255.693913 -L 196.090435 225.892174 -L 166.288696 225.892174 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 196.090435 255.693913 -L 225.892174 255.693913 -L 225.892174 225.892174 -L 196.090435 225.892174 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 225.892174 255.693913 -L 255.693913 255.693913 -L 255.693913 225.892174 -L 225.892174 225.892174 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 255.693913 255.693913 -L 285.495652 255.693913 -L 285.495652 225.892174 -L 255.693913 225.892174 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 285.495652 255.693913 -L 315.297391 255.693913 -L 315.297391 225.892174 -L 285.495652 225.892174 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 315.297391 255.693913 -L 345.09913 255.693913 -L 345.09913 225.892174 -L 315.297391 225.892174 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 345.09913 255.693913 -L 374.90087 255.693913 -L 374.90087 225.892174 -L 345.09913 225.892174 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 374.90087 255.693913 -L 404.702609 255.693913 -L 404.702609 225.892174 -L 374.90087 225.892174 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 404.702609 255.693913 -L 434.504348 255.693913 -L 434.504348 225.892174 -L 404.702609 225.892174 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 434.504348 255.693913 -L 464.306087 255.693913 -L 464.306087 225.892174 -L 434.504348 225.892174 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 464.306087 255.693913 -L 494.107826 255.693913 -L 494.107826 225.892174 -L 464.306087 225.892174 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 494.107826 255.693913 -L 523.909565 255.693913 -L 523.909565 225.892174 -L 494.107826 225.892174 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 523.909565 255.693913 -L 553.711304 255.693913 -L 553.711304 225.892174 -L 523.909565 225.892174 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 553.711304 255.693913 -L 583.513043 255.693913 -L 583.513043 225.892174 -L 553.711304 225.892174 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 583.513043 255.693913 -L 613.314783 255.693913 -L 613.314783 225.892174 -L 583.513043 225.892174 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 613.314783 255.693913 -L 643.116522 255.693913 -L 643.116522 225.892174 -L 613.314783 225.892174 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p0a6b4a0e06)" d="M 643.116522 255.693913 -L 672.918261 255.693913 -L 672.918261 225.892174 -L 643.116522 225.892174 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="line2d_1"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="md3453bb52b" style="stroke:#000000;"/> - </defs> - <g clip-path="url(#p0a6b4a0e06)"> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="553.711304"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="523.909565"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="494.107826"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="464.306087"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="434.504348"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="404.702609"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="374.90087"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="345.09913"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="315.297391"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="285.495652"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="255.693913"/> - <use style="stroke:#000000;" x="47.081739" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="76.883478" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="106.685217" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="136.486957" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="166.288696" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="196.090435" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="225.892174" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="255.693913" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="285.495652" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="315.297391" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="345.09913" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="374.90087" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="404.702609" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="434.504348" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="464.306087" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="494.107826" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="523.909565" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="553.711304" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="583.513043" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="613.314783" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="643.116522" xlink:href="#md3453bb52b" y="225.892174"/> - <use style="stroke:#000000;" x="672.918261" xlink:href="#md3453bb52b" y="225.892174"/> - </g> - </g> - <g id="line2d_2"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="mee6e022865" style="stroke:#008000;"/> - </defs> - <g clip-path="url(#p0a6b4a0e06)"> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="523.909565"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="494.107826"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="464.306087"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="434.504348"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="404.702609"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="374.90087"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="345.09913"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="315.297391"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="285.495652"/> - <use style="fill:#008000;stroke:#008000;" x="47.081739" xlink:href="#mee6e022865" y="255.693913"/> - </g> - </g> - <g id="line2d_3"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m695fe68be4" style="stroke:#0000ff;"/> - </defs> - <g clip-path="url(#p0a6b4a0e06)"> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="523.909565"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="494.107826"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="464.306087"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="434.504348"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="404.702609"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="374.90087"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="345.09913"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="315.297391"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="285.495652"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="672.918261" xlink:href="#m695fe68be4" y="255.693913"/> - </g> - </g> - <g id="line2d_4"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m70d20ef9f1" style="stroke:#ff0000;"/> - </defs> - <g clip-path="url(#p0a6b4a0e06)"> - <use style="fill:#ff0000;stroke:#ff0000;" x="47.081739" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="76.883478" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="106.685217" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="136.486957" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="166.288696" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="196.090435" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="225.892174" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="255.693913" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="285.495652" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="315.297391" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="345.09913" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="374.90087" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="404.702609" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="434.504348" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="464.306087" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="494.107826" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="523.909565" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="553.711304" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="583.513043" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="613.314783" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="643.116522" xlink:href="#m70d20ef9f1" y="553.711304"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="672.918261" xlink:href="#m70d20ef9f1" y="553.711304"/> - </g> - </g> - <g id="line2d_5"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m5118030c98" style="stroke:#bfbf00;"/> - </defs> - <g clip-path="url(#p0a6b4a0e06)"> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="47.081739" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="76.883478" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="106.685217" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="136.486957" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="166.288696" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="196.090435" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="225.892174" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="255.693913" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="285.495652" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="315.297391" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="345.09913" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="374.90087" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="404.702609" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="434.504348" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="464.306087" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="494.107826" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="523.909565" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="553.711304" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="583.513043" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="613.314783" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="643.116522" xlink:href="#m5118030c98" y="225.892174"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="672.918261" xlink:href="#m5118030c98" y="225.892174"/> - </g> - </g> - <g id="patch_3"> - <path d="M 17.28 583.513043 -L 17.28 136.486957 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_4"> - <path d="M 702.72 583.513043 -L 702.72 136.486957 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_5"> - <path d="M 17.28 583.513043 -L 702.72 583.513043 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_6"> - <path d="M 17.28 136.486957 -L 702.72 136.486957 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="legend_1"> - <g id="patch_7"> - <path d="M 153.28375 196.256957 -L 566.71625 196.256957 -Q 569.91625 196.256957 569.91625 193.056957 -L 569.91625 147.686957 -Q 569.91625 144.486957 566.71625 144.486957 -L 153.28375 144.486957 -Q 150.08375 144.486957 150.08375 147.686957 -L 150.08375 193.056957 -Q 150.08375 196.256957 153.28375 196.256957 -z -" style="fill:none;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;"/> - </g> - <g id="line2d_6"/> - <g id="line2d_7"> - <g> - <use style="fill:#008000;stroke:#008000;" x="172.48375" xlink:href="#mee6e022865" y="157.444457"/> - </g> - </g> - <g id="text_1"> - <!-- nodesLeftOpenEdge --> - <defs> - <path d="M 54.890625 33.015625 -L 54.890625 0 -L 45.90625 0 -L 45.90625 32.71875 -Q 45.90625 40.484375 42.875 44.328125 -Q 39.84375 48.1875 33.796875 48.1875 -Q 26.515625 48.1875 22.3125 43.546875 -Q 18.109375 38.921875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.1875 -Q 21.34375 51.125 25.703125 53.5625 -Q 30.078125 56 35.796875 56 -Q 45.21875 56 50.046875 50.171875 -Q 54.890625 44.34375 54.890625 33.015625 -z -" id="DejaVuSans-110"/> - <path d="M 30.609375 48.390625 -Q 23.390625 48.390625 19.1875 42.75 -Q 14.984375 37.109375 14.984375 27.296875 -Q 14.984375 17.484375 19.15625 11.84375 -Q 23.34375 6.203125 30.609375 6.203125 -Q 37.796875 6.203125 41.984375 11.859375 -Q 46.1875 17.53125 46.1875 27.296875 -Q 46.1875 37.015625 41.984375 42.703125 -Q 37.796875 48.390625 30.609375 48.390625 -z -M 30.609375 56 -Q 42.328125 56 49.015625 48.375 -Q 55.71875 40.765625 55.71875 27.296875 -Q 55.71875 13.875 49.015625 6.21875 -Q 42.328125 -1.421875 30.609375 -1.421875 -Q 18.84375 -1.421875 12.171875 6.21875 -Q 5.515625 13.875 5.515625 27.296875 -Q 5.515625 40.765625 12.171875 48.375 -Q 18.84375 56 30.609375 56 -z -" id="DejaVuSans-111"/> - <path d="M 45.40625 46.390625 -L 45.40625 75.984375 -L 54.390625 75.984375 -L 54.390625 0 -L 45.40625 0 -L 45.40625 8.203125 -Q 42.578125 3.328125 38.25 0.953125 -Q 33.9375 -1.421875 27.875 -1.421875 -Q 17.96875 -1.421875 11.734375 6.484375 -Q 5.515625 14.40625 5.515625 27.296875 -Q 5.515625 40.1875 11.734375 48.09375 -Q 17.96875 56 27.875 56 -Q 33.9375 56 38.25 53.625 -Q 42.578125 51.265625 45.40625 46.390625 -z -M 14.796875 27.296875 -Q 14.796875 17.390625 18.875 11.75 -Q 22.953125 6.109375 30.078125 6.109375 -Q 37.203125 6.109375 41.296875 11.75 -Q 45.40625 17.390625 45.40625 27.296875 -Q 45.40625 37.203125 41.296875 42.84375 -Q 37.203125 48.484375 30.078125 48.484375 -Q 22.953125 48.484375 18.875 42.84375 -Q 14.796875 37.203125 14.796875 27.296875 -z -" id="DejaVuSans-100"/> - <path d="M 56.203125 29.59375 -L 56.203125 25.203125 -L 14.890625 25.203125 -Q 15.484375 15.921875 20.484375 11.0625 -Q 25.484375 6.203125 34.421875 6.203125 -Q 39.59375 6.203125 44.453125 7.46875 -Q 49.3125 8.734375 54.109375 11.28125 -L 54.109375 2.78125 -Q 49.265625 0.734375 44.1875 -0.34375 -Q 39.109375 -1.421875 33.890625 -1.421875 -Q 20.796875 -1.421875 13.15625 6.1875 -Q 5.515625 13.8125 5.515625 26.8125 -Q 5.515625 40.234375 12.765625 48.109375 -Q 20.015625 56 32.328125 56 -Q 43.359375 56 49.78125 48.890625 -Q 56.203125 41.796875 56.203125 29.59375 -z -M 47.21875 32.234375 -Q 47.125 39.59375 43.09375 43.984375 -Q 39.0625 48.390625 32.421875 48.390625 -Q 24.90625 48.390625 20.390625 44.140625 -Q 15.875 39.890625 15.1875 32.171875 -z -" id="DejaVuSans-101"/> - <path d="M 44.28125 53.078125 -L 44.28125 44.578125 -Q 40.484375 46.53125 36.375 47.5 -Q 32.28125 48.484375 27.875 48.484375 -Q 21.1875 48.484375 17.84375 46.4375 -Q 14.5 44.390625 14.5 40.28125 -Q 14.5 37.15625 16.890625 35.375 -Q 19.28125 33.59375 26.515625 31.984375 -L 29.59375 31.296875 -Q 39.15625 29.25 43.1875 25.515625 -Q 47.21875 21.78125 47.21875 15.09375 -Q 47.21875 7.46875 41.1875 3.015625 -Q 35.15625 -1.421875 24.609375 -1.421875 -Q 20.21875 -1.421875 15.453125 -0.5625 -Q 10.6875 0.296875 5.421875 2 -L 5.421875 11.28125 -Q 10.40625 8.6875 15.234375 7.390625 -Q 20.0625 6.109375 24.8125 6.109375 -Q 31.15625 6.109375 34.5625 8.28125 -Q 37.984375 10.453125 37.984375 14.40625 -Q 37.984375 18.0625 35.515625 20.015625 -Q 33.0625 21.96875 24.703125 23.78125 -L 21.578125 24.515625 -Q 13.234375 26.265625 9.515625 29.90625 -Q 5.8125 33.546875 5.8125 39.890625 -Q 5.8125 47.609375 11.28125 51.796875 -Q 16.75 56 26.8125 56 -Q 31.78125 56 36.171875 55.265625 -Q 40.578125 54.546875 44.28125 53.078125 -z -" id="DejaVuSans-115"/> - <path d="M 9.8125 72.90625 -L 19.671875 72.90625 -L 19.671875 8.296875 -L 55.171875 8.296875 -L 55.171875 0 -L 9.8125 0 -z -" id="DejaVuSans-76"/> - <path d="M 37.109375 75.984375 -L 37.109375 68.5 -L 28.515625 68.5 -Q 23.6875 68.5 21.796875 66.546875 -Q 19.921875 64.59375 19.921875 59.515625 -L 19.921875 54.6875 -L 34.71875 54.6875 -L 34.71875 47.703125 -L 19.921875 47.703125 -L 19.921875 0 -L 10.890625 0 -L 10.890625 47.703125 -L 2.296875 47.703125 -L 2.296875 54.6875 -L 10.890625 54.6875 -L 10.890625 58.5 -Q 10.890625 67.625 15.140625 71.796875 -Q 19.390625 75.984375 28.609375 75.984375 -z -" id="DejaVuSans-102"/> - <path d="M 18.3125 70.21875 -L 18.3125 54.6875 -L 36.8125 54.6875 -L 36.8125 47.703125 -L 18.3125 47.703125 -L 18.3125 18.015625 -Q 18.3125 11.328125 20.140625 9.421875 -Q 21.96875 7.515625 27.59375 7.515625 -L 36.8125 7.515625 -L 36.8125 0 -L 27.59375 0 -Q 17.1875 0 13.234375 3.875 -Q 9.28125 7.765625 9.28125 18.015625 -L 9.28125 47.703125 -L 2.6875 47.703125 -L 2.6875 54.6875 -L 9.28125 54.6875 -L 9.28125 70.21875 -z -" id="DejaVuSans-116"/> - <path d="M 39.40625 66.21875 -Q 28.65625 66.21875 22.328125 58.203125 -Q 16.015625 50.203125 16.015625 36.375 -Q 16.015625 22.609375 22.328125 14.59375 -Q 28.65625 6.59375 39.40625 6.59375 -Q 50.140625 6.59375 56.421875 14.59375 -Q 62.703125 22.609375 62.703125 36.375 -Q 62.703125 50.203125 56.421875 58.203125 -Q 50.140625 66.21875 39.40625 66.21875 -z -M 39.40625 74.21875 -Q 54.734375 74.21875 63.90625 63.9375 -Q 73.09375 53.65625 73.09375 36.375 -Q 73.09375 19.140625 63.90625 8.859375 -Q 54.734375 -1.421875 39.40625 -1.421875 -Q 24.03125 -1.421875 14.8125 8.828125 -Q 5.609375 19.09375 5.609375 36.375 -Q 5.609375 53.65625 14.8125 63.9375 -Q 24.03125 74.21875 39.40625 74.21875 -z -" id="DejaVuSans-79"/> - <path d="M 18.109375 8.203125 -L 18.109375 -20.796875 -L 9.078125 -20.796875 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.390625 -Q 20.953125 51.265625 25.265625 53.625 -Q 29.59375 56 35.59375 56 -Q 45.5625 56 51.78125 48.09375 -Q 58.015625 40.1875 58.015625 27.296875 -Q 58.015625 14.40625 51.78125 6.484375 -Q 45.5625 -1.421875 35.59375 -1.421875 -Q 29.59375 -1.421875 25.265625 0.953125 -Q 20.953125 3.328125 18.109375 8.203125 -z -M 48.6875 27.296875 -Q 48.6875 37.203125 44.609375 42.84375 -Q 40.53125 48.484375 33.40625 48.484375 -Q 26.265625 48.484375 22.1875 42.84375 -Q 18.109375 37.203125 18.109375 27.296875 -Q 18.109375 17.390625 22.1875 11.75 -Q 26.265625 6.109375 33.40625 6.109375 -Q 40.53125 6.109375 44.609375 11.75 -Q 48.6875 17.390625 48.6875 27.296875 -z -" id="DejaVuSans-112"/> - <path d="M 9.8125 72.90625 -L 55.90625 72.90625 -L 55.90625 64.59375 -L 19.671875 64.59375 -L 19.671875 43.015625 -L 54.390625 43.015625 -L 54.390625 34.71875 -L 19.671875 34.71875 -L 19.671875 8.296875 -L 56.78125 8.296875 -L 56.78125 0 -L 9.8125 0 -z -" id="DejaVuSans-69"/> - <path d="M 45.40625 27.984375 -Q 45.40625 37.75 41.375 43.109375 -Q 37.359375 48.484375 30.078125 48.484375 -Q 22.859375 48.484375 18.828125 43.109375 -Q 14.796875 37.75 14.796875 27.984375 -Q 14.796875 18.265625 18.828125 12.890625 -Q 22.859375 7.515625 30.078125 7.515625 -Q 37.359375 7.515625 41.375 12.890625 -Q 45.40625 18.265625 45.40625 27.984375 -z -M 54.390625 6.78125 -Q 54.390625 -7.171875 48.1875 -13.984375 -Q 42 -20.796875 29.203125 -20.796875 -Q 24.46875 -20.796875 20.265625 -20.09375 -Q 16.0625 -19.390625 12.109375 -17.921875 -L 12.109375 -9.1875 -Q 16.0625 -11.328125 19.921875 -12.34375 -Q 23.78125 -13.375 27.78125 -13.375 -Q 36.625 -13.375 41.015625 -8.765625 -Q 45.40625 -4.15625 45.40625 5.171875 -L 45.40625 9.625 -Q 42.625 4.78125 38.28125 2.390625 -Q 33.9375 0 27.875 0 -Q 17.828125 0 11.671875 7.65625 -Q 5.515625 15.328125 5.515625 27.984375 -Q 5.515625 40.671875 11.671875 48.328125 -Q 17.828125 56 27.875 56 -Q 33.9375 56 38.28125 53.609375 -Q 42.625 51.21875 45.40625 46.390625 -L 45.40625 54.6875 -L 54.390625 54.6875 -z -" id="DejaVuSans-103"/> - </defs> - <g transform="translate(191.68375 163.044457)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-76"/> - <use x="357.357422" xlink:href="#DejaVuSans-101"/> - <use x="418.880859" xlink:href="#DejaVuSans-102"/> - <use x="454.070312" xlink:href="#DejaVuSans-116"/> - <use x="493.279297" xlink:href="#DejaVuSans-79"/> - <use x="571.990234" xlink:href="#DejaVuSans-112"/> - <use x="635.466797" xlink:href="#DejaVuSans-101"/> - <use x="696.990234" xlink:href="#DejaVuSans-110"/> - <use x="760.369141" xlink:href="#DejaVuSans-69"/> - <use x="823.552734" xlink:href="#DejaVuSans-100"/> - <use x="887.029297" xlink:href="#DejaVuSans-103"/> - <use x="950.505859" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_8"/> - <g id="line2d_9"> - <g> - <use style="fill:#0000ff;stroke:#0000ff;" x="172.48375" xlink:href="#m695fe68be4" y="180.929457"/> - </g> - </g> - <g id="text_2"> - <!-- nodesRightOpenEdge --> - <defs> - <path d="M 44.390625 34.1875 -Q 47.5625 33.109375 50.5625 29.59375 -Q 53.5625 26.078125 56.59375 19.921875 -L 66.609375 0 -L 56 0 -L 46.6875 18.703125 -Q 43.0625 26.03125 39.671875 28.421875 -Q 36.28125 30.8125 30.421875 30.8125 -L 19.671875 30.8125 -L 19.671875 0 -L 9.8125 0 -L 9.8125 72.90625 -L 32.078125 72.90625 -Q 44.578125 72.90625 50.734375 67.671875 -Q 56.890625 62.453125 56.890625 51.90625 -Q 56.890625 45.015625 53.6875 40.46875 -Q 50.484375 35.9375 44.390625 34.1875 -z -M 19.671875 64.796875 -L 19.671875 38.921875 -L 32.078125 38.921875 -Q 39.203125 38.921875 42.84375 42.21875 -Q 46.484375 45.515625 46.484375 51.90625 -Q 46.484375 58.296875 42.84375 61.546875 -Q 39.203125 64.796875 32.078125 64.796875 -z -" id="DejaVuSans-82"/> - <path d="M 9.421875 54.6875 -L 18.40625 54.6875 -L 18.40625 0 -L 9.421875 0 -z -M 9.421875 75.984375 -L 18.40625 75.984375 -L 18.40625 64.59375 -L 9.421875 64.59375 -z -" id="DejaVuSans-105"/> - <path d="M 54.890625 33.015625 -L 54.890625 0 -L 45.90625 0 -L 45.90625 32.71875 -Q 45.90625 40.484375 42.875 44.328125 -Q 39.84375 48.1875 33.796875 48.1875 -Q 26.515625 48.1875 22.3125 43.546875 -Q 18.109375 38.921875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 75.984375 -L 18.109375 75.984375 -L 18.109375 46.1875 -Q 21.34375 51.125 25.703125 53.5625 -Q 30.078125 56 35.796875 56 -Q 45.21875 56 50.046875 50.171875 -Q 54.890625 44.34375 54.890625 33.015625 -z -" id="DejaVuSans-104"/> - </defs> - <g transform="translate(191.68375 186.529457)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-82"/> - <use x="371.142578" xlink:href="#DejaVuSans-105"/> - <use x="398.925781" xlink:href="#DejaVuSans-103"/> - <use x="462.402344" xlink:href="#DejaVuSans-104"/> - <use x="525.78125" xlink:href="#DejaVuSans-116"/> - <use x="564.990234" xlink:href="#DejaVuSans-79"/> - <use x="643.701172" xlink:href="#DejaVuSans-112"/> - <use x="707.177734" xlink:href="#DejaVuSans-101"/> - <use x="768.701172" xlink:href="#DejaVuSans-110"/> - <use x="832.080078" xlink:href="#DejaVuSans-69"/> - <use x="895.263672" xlink:href="#DejaVuSans-100"/> - <use x="958.740234" xlink:href="#DejaVuSans-103"/> - <use x="1022.216797" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_10"/> - <g id="line2d_11"> - <g> - <use style="fill:#ff0000;stroke:#ff0000;" x="397.09125" xlink:href="#m70d20ef9f1" y="157.444457"/> - </g> - </g> - <g id="text_3"> - <!-- nodesBottomEdge --> - <defs> - <path d="M 19.671875 34.8125 -L 19.671875 8.109375 -L 35.5 8.109375 -Q 43.453125 8.109375 47.28125 11.40625 -Q 51.125 14.703125 51.125 21.484375 -Q 51.125 28.328125 47.28125 31.5625 -Q 43.453125 34.8125 35.5 34.8125 -z -M 19.671875 64.796875 -L 19.671875 42.828125 -L 34.28125 42.828125 -Q 41.5 42.828125 45.03125 45.53125 -Q 48.578125 48.25 48.578125 53.8125 -Q 48.578125 59.328125 45.03125 62.0625 -Q 41.5 64.796875 34.28125 64.796875 -z -M 9.8125 72.90625 -L 35.015625 72.90625 -Q 46.296875 72.90625 52.390625 68.21875 -Q 58.5 63.53125 58.5 54.890625 -Q 58.5 48.1875 55.375 44.234375 -Q 52.25 40.28125 46.1875 39.3125 -Q 53.46875 37.75 57.5 32.78125 -Q 61.53125 27.828125 61.53125 20.40625 -Q 61.53125 10.640625 54.890625 5.3125 -Q 48.25 0 35.984375 0 -L 9.8125 0 -z -" id="DejaVuSans-66"/> - <path d="M 52 44.1875 -Q 55.375 50.25 60.0625 53.125 -Q 64.75 56 71.09375 56 -Q 79.640625 56 84.28125 50.015625 -Q 88.921875 44.046875 88.921875 33.015625 -L 88.921875 0 -L 79.890625 0 -L 79.890625 32.71875 -Q 79.890625 40.578125 77.09375 44.375 -Q 74.3125 48.1875 68.609375 48.1875 -Q 61.625 48.1875 57.5625 43.546875 -Q 53.515625 38.921875 53.515625 30.90625 -L 53.515625 0 -L 44.484375 0 -L 44.484375 32.71875 -Q 44.484375 40.625 41.703125 44.40625 -Q 38.921875 48.1875 33.109375 48.1875 -Q 26.21875 48.1875 22.15625 43.53125 -Q 18.109375 38.875 18.109375 30.90625 -L 18.109375 0 -L 9.078125 0 -L 9.078125 54.6875 -L 18.109375 54.6875 -L 18.109375 46.1875 -Q 21.1875 51.21875 25.484375 53.609375 -Q 29.78125 56 35.6875 56 -Q 41.65625 56 45.828125 52.96875 -Q 50 49.953125 52 44.1875 -z -" id="DejaVuSans-109"/> - </defs> - <g transform="translate(416.29125 163.044457)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-66"/> - <use x="370.263672" xlink:href="#DejaVuSans-111"/> - <use x="431.445312" xlink:href="#DejaVuSans-116"/> - <use x="470.654297" xlink:href="#DejaVuSans-116"/> - <use x="509.863281" xlink:href="#DejaVuSans-111"/> - <use x="571.044922" xlink:href="#DejaVuSans-109"/> - <use x="668.457031" xlink:href="#DejaVuSans-69"/> - <use x="731.640625" xlink:href="#DejaVuSans-100"/> - <use x="795.117188" xlink:href="#DejaVuSans-103"/> - <use x="858.59375" xlink:href="#DejaVuSans-101"/> - </g> - </g> - <g id="line2d_12"/> - <g id="line2d_13"> - <g> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="397.09125" xlink:href="#m5118030c98" y="180.929457"/> - </g> - </g> - <g id="text_4"> - <!-- nodesTopEdge --> - <defs> - <path d="M -0.296875 72.90625 -L 61.375 72.90625 -L 61.375 64.59375 -L 35.5 64.59375 -L 35.5 0 -L 25.59375 0 -L 25.59375 64.59375 -L -0.296875 64.59375 -z -" id="DejaVuSans-84"/> - </defs> - <g transform="translate(416.29125 186.529457)scale(0.16 -0.16)"> - <use xlink:href="#DejaVuSans-110"/> - <use x="63.378906" xlink:href="#DejaVuSans-111"/> - <use x="124.560547" xlink:href="#DejaVuSans-100"/> - <use x="188.037109" xlink:href="#DejaVuSans-101"/> - <use x="249.560547" xlink:href="#DejaVuSans-115"/> - <use x="301.660156" xlink:href="#DejaVuSans-84"/> - <use x="362.478516" xlink:href="#DejaVuSans-111"/> - <use x="423.660156" xlink:href="#DejaVuSans-112"/> - <use x="487.136719" xlink:href="#DejaVuSans-69"/> - <use x="550.320312" xlink:href="#DejaVuSans-100"/> - <use x="613.796875" xlink:href="#DejaVuSans-103"/> - <use x="677.273438" xlink:href="#DejaVuSans-101"/> - </g> - </g> - </g> - </g> - </g> - <defs> - <clipPath id="p0a6b4a0e06"> - <rect height="447.026087" width="685.44" x="17.28" y="136.486957"/> - </clipPath> - </defs> -</svg> diff --git a/docs/details/figures/MeshQuad4/Regular/example2.py b/docs/details/figures/MeshQuad4/Regular/paraview.py similarity index 79% rename from docs/details/figures/MeshQuad4/Regular/example2.py rename to docs/details/figures/MeshQuad4/Regular/paraview.py index 013ca73..752bd4c 100644 --- a/docs/details/figures/MeshQuad4/Regular/example2.py +++ b/docs/details/figures/MeshQuad4/Regular/paraview.py @@ -1,25 +1,22 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Quad4.Regular(9,11) # filename of the HDF5-file -fname = 'MeshQuad4-Regular.hdf5' +fname = 'paraview.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data['coor'] = mesh.coor() data['conn'] = mesh.conn() # write XDMF-file with metadata - pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Quadrilateral, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ).write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshQuad4/Regular/nodes.py b/docs/details/figures/MeshQuad4/Regular/paraview_nodesets.py similarity index 95% rename from docs/details/figures/MeshQuad4/Regular/nodes.py rename to docs/details/figures/MeshQuad4/Regular/paraview_nodesets.py index 746bb34..4ccb477 100644 --- a/docs/details/figures/MeshQuad4/Regular/nodes.py +++ b/docs/details/figures/MeshQuad4/Regular/paraview_nodesets.py @@ -1,66 +1,63 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Quad4.Regular(9,11) # initialize all node sets nodesets = dict( nodesBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), ) # define node-sets nodesets['nodesBottomEdge' ][mesh.nodesBottomEdge() ] = 1 nodesets['nodesTopEdge' ][mesh.nodesTopEdge() ] = 1 nodesets['nodesLeftEdge' ][mesh.nodesLeftEdge() ] = 1 nodesets['nodesRightEdge' ][mesh.nodesRightEdge() ] = 1 nodesets['nodesBottomOpenEdge' ][mesh.nodesBottomOpenEdge() ] = 1 nodesets['nodesTopOpenEdge' ][mesh.nodesTopOpenEdge() ] = 1 nodesets['nodesLeftOpenEdge' ][mesh.nodesLeftOpenEdge() ] = 1 nodesets['nodesRightOpenEdge' ][mesh.nodesRightOpenEdge() ] = 1 nodesets['nodesBottomLeftCorner' ][mesh.nodesBottomLeftCorner() ] = 1 nodesets['nodesBottomRightCorner'][mesh.nodesBottomRightCorner()] = 1 nodesets['nodesTopLeftCorner' ][mesh.nodesTopLeftCorner() ] = 1 nodesets['nodesTopRightCorner' ][mesh.nodesTopRightCorner() ] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:,0] # filename of the HDF5-file -fname = 'MeshQuad4-Regular-nodes.hdf5' +fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Quadrilateral, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back(pv.Attribute(fname, "/"+key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshTri3/Regular/example.py b/docs/details/figures/MeshTri3/Regular/example.py index 7474094..c272f80 100644 --- a/docs/details/figures/MeshTri3/Regular/example.py +++ b/docs/details/figures/MeshTri3/Regular/example.py @@ -1,33 +1,40 @@ +import numpy as np import GooseFEM as gf import matplotlib.pyplot as plt -import goosempl as gplt -import numpy as np +import GooseMPL as gplt plt.style.use(['goose']) # -------------------------------------------------------------------------------------------------- -mesh = gf.Mesh.Tri3.Regular(6*9,51) -coor = mesh.coor() -conn = mesh.conn() -cindex = np.arange(conn.shape[0]) +mesh = gf.Mesh.Tri3.Regular(5, 6) +coor = mesh.coor() +conn = mesh.conn() + +cindex = np.arange(mesh.nelem()) + +Left = mesh.nodesLeftEdge() +Right = mesh.nodesRightEdge() +Bottom = mesh.nodesBottomEdge() +Top = mesh.nodesTopEdge() # -------------------------------------------------------------------------------------------------- -fig,ax = plt.subplots(figsize=(10,10)) +fig, ax = plt.subplots(figsize=(10,10)) + +im = gplt.patch(coor=coor, conn=conn, cindex=cindex, cmap='jet') -im = gplt.patch(coor=coor,conn=conn,cindex=cindex,cmap='jet') +ax.plot(coor[:,0], coor[:,1], marker='o', linestyle='none') -ax.plot(coor[: ,0],coor[: ,1],marker='o',linestyle='none') -ax.plot(coor[mesh.nodesLeft (),0],coor[mesh.nodesLeft (),1],marker='o',linestyle='none',color='g') -ax.plot(coor[mesh.nodesRight (),0],coor[mesh.nodesRight (),1],marker='o',linestyle='none',color='b') -ax.plot(coor[mesh.nodesBottom(),0],coor[mesh.nodesBottom(),1],marker='o',linestyle='none',color='r') -ax.plot(coor[mesh.nodesTop (),0],coor[mesh.nodesTop (),1],marker='o',linestyle='none',color='y') +ax.plot(coor[Left ,0], coor[Left ,1], marker='o', linestyle='none', color='g') +ax.plot(coor[Right ,0], coor[Right ,1], marker='o', linestyle='none', color='b') +ax.plot(coor[Bottom,0], coor[Bottom,1], marker='o', linestyle='none', color='r') +ax.plot(coor[Top ,0], coor[Top ,1], marker='o', linestyle='none', color='y') ax.set_aspect('equal') ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) plt.savefig('example.svg') -plt.show() +plt.close() diff --git a/docs/details/figures/MeshTri3/Regular/example.svg b/docs/details/figures/MeshTri3/Regular/example.svg deleted file mode 100644 index 3427b99..0000000 --- a/docs/details/figures/MeshTri3/Regular/example.svg +++ /dev/null @@ -1,30757 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" - "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with matplotlib (http://matplotlib.org/) --> -<svg height="720pt" version="1.1" viewBox="0 0 720 720" width="720pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <style type="text/css"> -*{stroke-linecap:butt;stroke-linejoin:round;} - </style> - </defs> - <g id="figure_1"> - <g id="patch_1"> - <path d="M 0 720 -L 720 720 -L 720 0 -L 0 0 -z -" style="fill:none;"/> - </g> - <g id="axes_1"> - <g id="patch_2"> - <path d="M 20.78 680.374444 -L 699.22 680.374444 -L 699.22 39.625556 -L 20.78 39.625556 -z -" style="fill:none;"/> - </g> - <g id="PatchCollection_1"> - <path clip-path="url(#p849c29c794)" d="M 77.316667 626.978704 -L 87.78642 626.978704 -L 77.316667 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 626.978704 -L 87.78642 616.508951 -L 77.316667 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 626.978704 -L 98.256173 626.978704 -L 87.78642 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 626.978704 -L 98.256173 616.508951 -L 87.78642 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 626.978704 -L 108.725926 626.978704 -L 98.256173 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 626.978704 -L 108.725926 616.508951 -L 98.256173 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 626.978704 -L 119.195679 626.978704 -L 108.725926 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 626.978704 -L 119.195679 616.508951 -L 108.725926 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 626.978704 -L 129.665432 626.978704 -L 119.195679 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 626.978704 -L 129.665432 616.508951 -L 119.195679 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 626.978704 -L 140.135185 626.978704 -L 129.665432 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 626.978704 -L 140.135185 616.508951 -L 129.665432 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 626.978704 -L 150.604938 626.978704 -L 140.135185 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 626.978704 -L 150.604938 616.508951 -L 140.135185 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 626.978704 -L 161.074691 626.978704 -L 150.604938 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 626.978704 -L 161.074691 616.508951 -L 150.604938 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 626.978704 -L 171.544444 626.978704 -L 161.074691 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 626.978704 -L 171.544444 616.508951 -L 161.074691 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 626.978704 -L 182.014198 626.978704 -L 171.544444 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 626.978704 -L 182.014198 616.508951 -L 171.544444 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 626.978704 -L 192.483951 626.978704 -L 182.014198 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 626.978704 -L 192.483951 616.508951 -L 182.014198 616.508951 -z -" style="fill:#000080;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 626.978704 -L 202.953704 626.978704 -L 192.483951 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 626.978704 -L 202.953704 616.508951 -L 192.483951 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 626.978704 -L 213.423457 626.978704 -L 202.953704 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 626.978704 -L 213.423457 616.508951 -L 202.953704 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 626.978704 -L 223.89321 626.978704 -L 213.423457 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 626.978704 -L 223.89321 616.508951 -L 213.423457 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 626.978704 -L 234.362963 626.978704 -L 223.89321 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 626.978704 -L 234.362963 616.508951 -L 223.89321 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 626.978704 -L 244.832716 626.978704 -L 234.362963 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 626.978704 -L 244.832716 616.508951 -L 234.362963 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 626.978704 -L 255.302469 626.978704 -L 244.832716 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 626.978704 -L 255.302469 616.508951 -L 244.832716 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 626.978704 -L 265.772222 626.978704 -L 255.302469 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 626.978704 -L 265.772222 616.508951 -L 255.302469 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 626.978704 -L 276.241975 626.978704 -L 265.772222 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 626.978704 -L 276.241975 616.508951 -L 265.772222 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 626.978704 -L 286.711728 626.978704 -L 276.241975 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 626.978704 -L 286.711728 616.508951 -L 276.241975 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 626.978704 -L 297.181481 626.978704 -L 286.711728 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 626.978704 -L 297.181481 616.508951 -L 286.711728 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 626.978704 -L 307.651235 626.978704 -L 297.181481 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 626.978704 -L 307.651235 616.508951 -L 297.181481 616.508951 -z -" style="fill:#000084;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 626.978704 -L 318.120988 626.978704 -L 307.651235 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 626.978704 -L 318.120988 616.508951 -L 307.651235 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 626.978704 -L 328.590741 626.978704 -L 318.120988 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 626.978704 -L 328.590741 616.508951 -L 318.120988 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 626.978704 -L 339.060494 626.978704 -L 328.590741 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 626.978704 -L 339.060494 616.508951 -L 328.590741 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 626.978704 -L 349.530247 626.978704 -L 339.060494 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 626.978704 -L 349.530247 616.508951 -L 339.060494 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 626.978704 -L 360 626.978704 -L 349.530247 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 626.978704 -L 360 616.508951 -L 349.530247 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 626.978704 -L 370.469753 626.978704 -L 360 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 626.978704 -L 370.469753 616.508951 -L 360 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 626.978704 -L 380.939506 626.978704 -L 370.469753 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 626.978704 -L 380.939506 616.508951 -L 370.469753 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 626.978704 -L 391.409259 626.978704 -L 380.939506 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 626.978704 -L 391.409259 616.508951 -L 380.939506 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 626.978704 -L 401.879012 626.978704 -L 391.409259 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 626.978704 -L 401.879012 616.508951 -L 391.409259 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 626.978704 -L 412.348765 626.978704 -L 401.879012 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 626.978704 -L 412.348765 616.508951 -L 401.879012 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 626.978704 -L 422.818519 626.978704 -L 412.348765 616.508951 -z -" style="fill:#000089;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 626.978704 -L 422.818519 616.508951 -L 412.348765 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 626.978704 -L 433.288272 626.978704 -L 422.818519 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 626.978704 -L 433.288272 616.508951 -L 422.818519 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 626.978704 -L 443.758025 626.978704 -L 433.288272 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 626.978704 -L 443.758025 616.508951 -L 433.288272 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 626.978704 -L 454.227778 626.978704 -L 443.758025 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 626.978704 -L 454.227778 616.508951 -L 443.758025 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 626.978704 -L 464.697531 626.978704 -L 454.227778 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 626.978704 -L 464.697531 616.508951 -L 454.227778 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 626.978704 -L 475.167284 626.978704 -L 464.697531 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 626.978704 -L 475.167284 616.508951 -L 464.697531 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 626.978704 -L 485.637037 626.978704 -L 475.167284 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 626.978704 -L 485.637037 616.508951 -L 475.167284 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 626.978704 -L 496.10679 626.978704 -L 485.637037 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 626.978704 -L 496.10679 616.508951 -L 485.637037 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 626.978704 -L 506.576543 626.978704 -L 496.10679 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 626.978704 -L 506.576543 616.508951 -L 496.10679 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 626.978704 -L 517.046296 626.978704 -L 506.576543 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 626.978704 -L 517.046296 616.508951 -L 506.576543 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 626.978704 -L 527.516049 626.978704 -L 517.046296 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 626.978704 -L 527.516049 616.508951 -L 517.046296 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 626.978704 -L 537.985802 626.978704 -L 527.516049 616.508951 -z -" style="fill:#00008d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 626.978704 -L 537.985802 616.508951 -L 527.516049 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 626.978704 -L 548.455556 626.978704 -L 537.985802 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 626.978704 -L 548.455556 616.508951 -L 537.985802 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 626.978704 -L 558.925309 626.978704 -L 548.455556 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 626.978704 -L 558.925309 616.508951 -L 548.455556 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 626.978704 -L 569.395062 626.978704 -L 558.925309 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 626.978704 -L 569.395062 616.508951 -L 558.925309 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 626.978704 -L 579.864815 626.978704 -L 569.395062 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 626.978704 -L 579.864815 616.508951 -L 569.395062 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 626.978704 -L 590.334568 626.978704 -L 579.864815 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 626.978704 -L 590.334568 616.508951 -L 579.864815 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 626.978704 -L 600.804321 626.978704 -L 590.334568 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 626.978704 -L 600.804321 616.508951 -L 590.334568 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 626.978704 -L 611.274074 626.978704 -L 600.804321 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 626.978704 -L 611.274074 616.508951 -L 600.804321 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 626.978704 -L 621.743827 626.978704 -L 611.274074 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 626.978704 -L 621.743827 616.508951 -L 611.274074 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 626.978704 -L 632.21358 626.978704 -L 621.743827 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 626.978704 -L 632.21358 616.508951 -L 621.743827 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 626.978704 -L 642.683333 626.978704 -L 632.21358 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 626.978704 -L 642.683333 616.508951 -L 632.21358 616.508951 -z -" style="fill:#000092;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 616.508951 -L 87.78642 616.508951 -L 77.316667 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 616.508951 -L 87.78642 606.039198 -L 77.316667 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 616.508951 -L 98.256173 616.508951 -L 87.78642 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 616.508951 -L 98.256173 606.039198 -L 87.78642 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 616.508951 -L 108.725926 616.508951 -L 98.256173 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 616.508951 -L 108.725926 606.039198 -L 98.256173 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 616.508951 -L 119.195679 616.508951 -L 108.725926 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 616.508951 -L 119.195679 606.039198 -L 108.725926 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 616.508951 -L 129.665432 616.508951 -L 119.195679 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 616.508951 -L 129.665432 606.039198 -L 119.195679 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 616.508951 -L 140.135185 616.508951 -L 129.665432 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 616.508951 -L 140.135185 606.039198 -L 129.665432 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 616.508951 -L 150.604938 616.508951 -L 140.135185 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 616.508951 -L 150.604938 606.039198 -L 140.135185 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 616.508951 -L 161.074691 616.508951 -L 150.604938 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 616.508951 -L 161.074691 606.039198 -L 150.604938 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 616.508951 -L 171.544444 616.508951 -L 161.074691 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 616.508951 -L 171.544444 606.039198 -L 161.074691 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 616.508951 -L 182.014198 616.508951 -L 171.544444 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 616.508951 -L 182.014198 606.039198 -L 171.544444 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 616.508951 -L 192.483951 616.508951 -L 182.014198 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 616.508951 -L 192.483951 606.039198 -L 182.014198 606.039198 -z -" style="fill:#000096;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 616.508951 -L 202.953704 616.508951 -L 192.483951 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 616.508951 -L 202.953704 606.039198 -L 192.483951 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 616.508951 -L 213.423457 616.508951 -L 202.953704 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 616.508951 -L 213.423457 606.039198 -L 202.953704 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 616.508951 -L 223.89321 616.508951 -L 213.423457 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 616.508951 -L 223.89321 606.039198 -L 213.423457 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 616.508951 -L 234.362963 616.508951 -L 223.89321 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 616.508951 -L 234.362963 606.039198 -L 223.89321 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 616.508951 -L 244.832716 616.508951 -L 234.362963 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 616.508951 -L 244.832716 606.039198 -L 234.362963 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 616.508951 -L 255.302469 616.508951 -L 244.832716 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 616.508951 -L 255.302469 606.039198 -L 244.832716 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 616.508951 -L 265.772222 616.508951 -L 255.302469 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 616.508951 -L 265.772222 606.039198 -L 255.302469 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 616.508951 -L 276.241975 616.508951 -L 265.772222 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 616.508951 -L 276.241975 606.039198 -L 265.772222 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 616.508951 -L 286.711728 616.508951 -L 276.241975 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 616.508951 -L 286.711728 606.039198 -L 276.241975 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 616.508951 -L 297.181481 616.508951 -L 286.711728 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 616.508951 -L 297.181481 606.039198 -L 286.711728 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 616.508951 -L 307.651235 616.508951 -L 297.181481 606.039198 -z -" style="fill:#00009b;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 616.508951 -L 307.651235 606.039198 -L 297.181481 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 616.508951 -L 318.120988 616.508951 -L 307.651235 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 616.508951 -L 318.120988 606.039198 -L 307.651235 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 616.508951 -L 328.590741 616.508951 -L 318.120988 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 616.508951 -L 328.590741 606.039198 -L 318.120988 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 616.508951 -L 339.060494 616.508951 -L 328.590741 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 616.508951 -L 339.060494 606.039198 -L 328.590741 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 616.508951 -L 349.530247 616.508951 -L 339.060494 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 616.508951 -L 349.530247 606.039198 -L 339.060494 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 616.508951 -L 360 616.508951 -L 349.530247 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 616.508951 -L 360 606.039198 -L 349.530247 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 616.508951 -L 370.469753 616.508951 -L 360 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 616.508951 -L 370.469753 606.039198 -L 360 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 616.508951 -L 380.939506 616.508951 -L 370.469753 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 616.508951 -L 380.939506 606.039198 -L 370.469753 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 616.508951 -L 391.409259 616.508951 -L 380.939506 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 616.508951 -L 391.409259 606.039198 -L 380.939506 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 616.508951 -L 401.879012 616.508951 -L 391.409259 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 616.508951 -L 401.879012 606.039198 -L 391.409259 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 616.508951 -L 412.348765 616.508951 -L 401.879012 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 616.508951 -L 412.348765 606.039198 -L 401.879012 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 616.508951 -L 422.818519 616.508951 -L 412.348765 606.039198 -z -" style="fill:#00009f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 616.508951 -L 422.818519 606.039198 -L 412.348765 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 616.508951 -L 433.288272 616.508951 -L 422.818519 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 616.508951 -L 433.288272 606.039198 -L 422.818519 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 616.508951 -L 443.758025 616.508951 -L 433.288272 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 616.508951 -L 443.758025 606.039198 -L 433.288272 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 616.508951 -L 454.227778 616.508951 -L 443.758025 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 616.508951 -L 454.227778 606.039198 -L 443.758025 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 616.508951 -L 464.697531 616.508951 -L 454.227778 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 616.508951 -L 464.697531 606.039198 -L 454.227778 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 616.508951 -L 475.167284 616.508951 -L 464.697531 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 616.508951 -L 475.167284 606.039198 -L 464.697531 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 616.508951 -L 485.637037 616.508951 -L 475.167284 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 616.508951 -L 485.637037 606.039198 -L 475.167284 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 616.508951 -L 496.10679 616.508951 -L 485.637037 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 616.508951 -L 496.10679 606.039198 -L 485.637037 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 616.508951 -L 506.576543 616.508951 -L 496.10679 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 616.508951 -L 506.576543 606.039198 -L 496.10679 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 616.508951 -L 517.046296 616.508951 -L 506.576543 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 616.508951 -L 517.046296 606.039198 -L 506.576543 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 616.508951 -L 527.516049 616.508951 -L 517.046296 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 616.508951 -L 527.516049 606.039198 -L 517.046296 606.039198 -z -" style="fill:#0000a4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 616.508951 -L 537.985802 616.508951 -L 527.516049 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 616.508951 -L 537.985802 606.039198 -L 527.516049 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 616.508951 -L 548.455556 616.508951 -L 537.985802 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 616.508951 -L 548.455556 606.039198 -L 537.985802 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 616.508951 -L 558.925309 616.508951 -L 548.455556 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 616.508951 -L 558.925309 606.039198 -L 548.455556 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 616.508951 -L 569.395062 616.508951 -L 558.925309 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 616.508951 -L 569.395062 606.039198 -L 558.925309 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 616.508951 -L 579.864815 616.508951 -L 569.395062 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 616.508951 -L 579.864815 606.039198 -L 569.395062 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 616.508951 -L 590.334568 616.508951 -L 579.864815 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 616.508951 -L 590.334568 606.039198 -L 579.864815 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 616.508951 -L 600.804321 616.508951 -L 590.334568 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 616.508951 -L 600.804321 606.039198 -L 590.334568 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 616.508951 -L 611.274074 616.508951 -L 600.804321 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 616.508951 -L 611.274074 606.039198 -L 600.804321 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 616.508951 -L 621.743827 616.508951 -L 611.274074 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 616.508951 -L 621.743827 606.039198 -L 611.274074 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 616.508951 -L 632.21358 616.508951 -L 621.743827 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 616.508951 -L 632.21358 606.039198 -L 621.743827 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 616.508951 -L 642.683333 616.508951 -L 632.21358 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 616.508951 -L 642.683333 606.039198 -L 632.21358 606.039198 -z -" style="fill:#0000a8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 606.039198 -L 87.78642 606.039198 -L 77.316667 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 606.039198 -L 87.78642 595.569444 -L 77.316667 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 606.039198 -L 98.256173 606.039198 -L 87.78642 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 606.039198 -L 98.256173 595.569444 -L 87.78642 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 606.039198 -L 108.725926 606.039198 -L 98.256173 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 606.039198 -L 108.725926 595.569444 -L 98.256173 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 606.039198 -L 119.195679 606.039198 -L 108.725926 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 606.039198 -L 119.195679 595.569444 -L 108.725926 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 606.039198 -L 129.665432 606.039198 -L 119.195679 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 606.039198 -L 129.665432 595.569444 -L 119.195679 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 606.039198 -L 140.135185 606.039198 -L 129.665432 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 606.039198 -L 140.135185 595.569444 -L 129.665432 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 606.039198 -L 150.604938 606.039198 -L 140.135185 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 606.039198 -L 150.604938 595.569444 -L 140.135185 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 606.039198 -L 161.074691 606.039198 -L 150.604938 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 606.039198 -L 161.074691 595.569444 -L 150.604938 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 606.039198 -L 171.544444 606.039198 -L 161.074691 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 606.039198 -L 171.544444 595.569444 -L 161.074691 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 606.039198 -L 182.014198 606.039198 -L 171.544444 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 606.039198 -L 182.014198 595.569444 -L 171.544444 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 606.039198 -L 192.483951 606.039198 -L 182.014198 595.569444 -z -" style="fill:#0000ad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 606.039198 -L 192.483951 595.569444 -L 182.014198 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 606.039198 -L 202.953704 606.039198 -L 192.483951 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 606.039198 -L 202.953704 595.569444 -L 192.483951 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 606.039198 -L 213.423457 606.039198 -L 202.953704 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 606.039198 -L 213.423457 595.569444 -L 202.953704 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 606.039198 -L 223.89321 606.039198 -L 213.423457 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 606.039198 -L 223.89321 595.569444 -L 213.423457 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 606.039198 -L 234.362963 606.039198 -L 223.89321 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 606.039198 -L 234.362963 595.569444 -L 223.89321 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 606.039198 -L 244.832716 606.039198 -L 234.362963 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 606.039198 -L 244.832716 595.569444 -L 234.362963 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 606.039198 -L 255.302469 606.039198 -L 244.832716 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 606.039198 -L 255.302469 595.569444 -L 244.832716 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 606.039198 -L 265.772222 606.039198 -L 255.302469 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 606.039198 -L 265.772222 595.569444 -L 255.302469 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 606.039198 -L 276.241975 606.039198 -L 265.772222 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 606.039198 -L 276.241975 595.569444 -L 265.772222 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 606.039198 -L 286.711728 606.039198 -L 276.241975 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 606.039198 -L 286.711728 595.569444 -L 276.241975 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 606.039198 -L 297.181481 606.039198 -L 286.711728 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 606.039198 -L 297.181481 595.569444 -L 286.711728 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 606.039198 -L 307.651235 606.039198 -L 297.181481 595.569444 -z -" style="fill:#0000b2;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 606.039198 -L 307.651235 595.569444 -L 297.181481 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 606.039198 -L 318.120988 606.039198 -L 307.651235 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 606.039198 -L 318.120988 595.569444 -L 307.651235 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 606.039198 -L 328.590741 606.039198 -L 318.120988 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 606.039198 -L 328.590741 595.569444 -L 318.120988 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 606.039198 -L 339.060494 606.039198 -L 328.590741 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 606.039198 -L 339.060494 595.569444 -L 328.590741 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 606.039198 -L 349.530247 606.039198 -L 339.060494 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 606.039198 -L 349.530247 595.569444 -L 339.060494 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 606.039198 -L 360 606.039198 -L 349.530247 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 606.039198 -L 360 595.569444 -L 349.530247 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 606.039198 -L 370.469753 606.039198 -L 360 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 606.039198 -L 370.469753 595.569444 -L 360 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 606.039198 -L 380.939506 606.039198 -L 370.469753 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 606.039198 -L 380.939506 595.569444 -L 370.469753 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 606.039198 -L 391.409259 606.039198 -L 380.939506 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 606.039198 -L 391.409259 595.569444 -L 380.939506 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 606.039198 -L 401.879012 606.039198 -L 391.409259 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 606.039198 -L 401.879012 595.569444 -L 391.409259 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 606.039198 -L 412.348765 606.039198 -L 401.879012 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 606.039198 -L 412.348765 595.569444 -L 401.879012 595.569444 -z -" style="fill:#0000b6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 606.039198 -L 422.818519 606.039198 -L 412.348765 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 606.039198 -L 422.818519 595.569444 -L 412.348765 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 606.039198 -L 433.288272 606.039198 -L 422.818519 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 606.039198 -L 433.288272 595.569444 -L 422.818519 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 606.039198 -L 443.758025 606.039198 -L 433.288272 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 606.039198 -L 443.758025 595.569444 -L 433.288272 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 606.039198 -L 454.227778 606.039198 -L 443.758025 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 606.039198 -L 454.227778 595.569444 -L 443.758025 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 606.039198 -L 464.697531 606.039198 -L 454.227778 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 606.039198 -L 464.697531 595.569444 -L 454.227778 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 606.039198 -L 475.167284 606.039198 -L 464.697531 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 606.039198 -L 475.167284 595.569444 -L 464.697531 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 606.039198 -L 485.637037 606.039198 -L 475.167284 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 606.039198 -L 485.637037 595.569444 -L 475.167284 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 606.039198 -L 496.10679 606.039198 -L 485.637037 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 606.039198 -L 496.10679 595.569444 -L 485.637037 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 606.039198 -L 506.576543 606.039198 -L 496.10679 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 606.039198 -L 506.576543 595.569444 -L 496.10679 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 606.039198 -L 517.046296 606.039198 -L 506.576543 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 606.039198 -L 517.046296 595.569444 -L 506.576543 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 606.039198 -L 527.516049 606.039198 -L 517.046296 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 606.039198 -L 527.516049 595.569444 -L 517.046296 595.569444 -z -" style="fill:#0000bb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 606.039198 -L 537.985802 606.039198 -L 527.516049 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 606.039198 -L 537.985802 595.569444 -L 527.516049 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 606.039198 -L 548.455556 606.039198 -L 537.985802 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 606.039198 -L 548.455556 595.569444 -L 537.985802 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 606.039198 -L 558.925309 606.039198 -L 548.455556 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 606.039198 -L 558.925309 595.569444 -L 548.455556 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 606.039198 -L 569.395062 606.039198 -L 558.925309 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 606.039198 -L 569.395062 595.569444 -L 558.925309 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 606.039198 -L 579.864815 606.039198 -L 569.395062 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 606.039198 -L 579.864815 595.569444 -L 569.395062 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 606.039198 -L 590.334568 606.039198 -L 579.864815 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 606.039198 -L 590.334568 595.569444 -L 579.864815 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 606.039198 -L 600.804321 606.039198 -L 590.334568 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 606.039198 -L 600.804321 595.569444 -L 590.334568 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 606.039198 -L 611.274074 606.039198 -L 600.804321 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 606.039198 -L 611.274074 595.569444 -L 600.804321 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 606.039198 -L 621.743827 606.039198 -L 611.274074 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 606.039198 -L 621.743827 595.569444 -L 611.274074 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 606.039198 -L 632.21358 606.039198 -L 621.743827 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 606.039198 -L 632.21358 595.569444 -L 621.743827 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 606.039198 -L 642.683333 606.039198 -L 632.21358 595.569444 -z -" style="fill:#0000bf;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 606.039198 -L 642.683333 595.569444 -L 632.21358 595.569444 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 595.569444 -L 87.78642 595.569444 -L 77.316667 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 595.569444 -L 87.78642 585.099691 -L 77.316667 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 595.569444 -L 98.256173 595.569444 -L 87.78642 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 595.569444 -L 98.256173 585.099691 -L 87.78642 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 595.569444 -L 108.725926 595.569444 -L 98.256173 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 595.569444 -L 108.725926 585.099691 -L 98.256173 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 595.569444 -L 119.195679 595.569444 -L 108.725926 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 595.569444 -L 119.195679 585.099691 -L 108.725926 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 595.569444 -L 129.665432 595.569444 -L 119.195679 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 595.569444 -L 129.665432 585.099691 -L 119.195679 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 595.569444 -L 140.135185 595.569444 -L 129.665432 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 595.569444 -L 140.135185 585.099691 -L 129.665432 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 595.569444 -L 150.604938 595.569444 -L 140.135185 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 595.569444 -L 150.604938 585.099691 -L 140.135185 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 595.569444 -L 161.074691 595.569444 -L 150.604938 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 595.569444 -L 161.074691 585.099691 -L 150.604938 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 595.569444 -L 171.544444 595.569444 -L 161.074691 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 595.569444 -L 171.544444 585.099691 -L 161.074691 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 595.569444 -L 182.014198 595.569444 -L 171.544444 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 595.569444 -L 182.014198 585.099691 -L 171.544444 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 595.569444 -L 192.483951 595.569444 -L 182.014198 585.099691 -z -" style="fill:#0000c4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 595.569444 -L 192.483951 585.099691 -L 182.014198 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 595.569444 -L 202.953704 595.569444 -L 192.483951 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 595.569444 -L 202.953704 585.099691 -L 192.483951 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 595.569444 -L 213.423457 595.569444 -L 202.953704 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 595.569444 -L 213.423457 585.099691 -L 202.953704 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 595.569444 -L 223.89321 595.569444 -L 213.423457 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 595.569444 -L 223.89321 585.099691 -L 213.423457 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 595.569444 -L 234.362963 595.569444 -L 223.89321 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 595.569444 -L 234.362963 585.099691 -L 223.89321 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 595.569444 -L 244.832716 595.569444 -L 234.362963 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 595.569444 -L 244.832716 585.099691 -L 234.362963 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 595.569444 -L 255.302469 595.569444 -L 244.832716 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 595.569444 -L 255.302469 585.099691 -L 244.832716 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 595.569444 -L 265.772222 595.569444 -L 255.302469 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 595.569444 -L 265.772222 585.099691 -L 255.302469 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 595.569444 -L 276.241975 595.569444 -L 265.772222 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 595.569444 -L 276.241975 585.099691 -L 265.772222 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 595.569444 -L 286.711728 595.569444 -L 276.241975 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 595.569444 -L 286.711728 585.099691 -L 276.241975 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 595.569444 -L 297.181481 595.569444 -L 286.711728 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 595.569444 -L 297.181481 585.099691 -L 286.711728 585.099691 -z -" style="fill:#0000c8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 595.569444 -L 307.651235 595.569444 -L 297.181481 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 595.569444 -L 307.651235 585.099691 -L 297.181481 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 595.569444 -L 318.120988 595.569444 -L 307.651235 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 595.569444 -L 318.120988 585.099691 -L 307.651235 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 595.569444 -L 328.590741 595.569444 -L 318.120988 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 595.569444 -L 328.590741 585.099691 -L 318.120988 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 595.569444 -L 339.060494 595.569444 -L 328.590741 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 595.569444 -L 339.060494 585.099691 -L 328.590741 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 595.569444 -L 349.530247 595.569444 -L 339.060494 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 595.569444 -L 349.530247 585.099691 -L 339.060494 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 595.569444 -L 360 595.569444 -L 349.530247 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 595.569444 -L 360 585.099691 -L 349.530247 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 595.569444 -L 370.469753 595.569444 -L 360 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 595.569444 -L 370.469753 585.099691 -L 360 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 595.569444 -L 380.939506 595.569444 -L 370.469753 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 595.569444 -L 380.939506 585.099691 -L 370.469753 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 595.569444 -L 391.409259 595.569444 -L 380.939506 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 595.569444 -L 391.409259 585.099691 -L 380.939506 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 595.569444 -L 401.879012 595.569444 -L 391.409259 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 595.569444 -L 401.879012 585.099691 -L 391.409259 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 595.569444 -L 412.348765 595.569444 -L 401.879012 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 595.569444 -L 412.348765 585.099691 -L 401.879012 585.099691 -z -" style="fill:#0000cd;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 595.569444 -L 422.818519 595.569444 -L 412.348765 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 595.569444 -L 422.818519 585.099691 -L 412.348765 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 595.569444 -L 433.288272 595.569444 -L 422.818519 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 595.569444 -L 433.288272 585.099691 -L 422.818519 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 595.569444 -L 443.758025 595.569444 -L 433.288272 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 595.569444 -L 443.758025 585.099691 -L 433.288272 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 595.569444 -L 454.227778 595.569444 -L 443.758025 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 595.569444 -L 454.227778 585.099691 -L 443.758025 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 595.569444 -L 464.697531 595.569444 -L 454.227778 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 595.569444 -L 464.697531 585.099691 -L 454.227778 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 595.569444 -L 475.167284 595.569444 -L 464.697531 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 595.569444 -L 475.167284 585.099691 -L 464.697531 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 595.569444 -L 485.637037 595.569444 -L 475.167284 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 595.569444 -L 485.637037 585.099691 -L 475.167284 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 595.569444 -L 496.10679 595.569444 -L 485.637037 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 595.569444 -L 496.10679 585.099691 -L 485.637037 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 595.569444 -L 506.576543 595.569444 -L 496.10679 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 595.569444 -L 506.576543 585.099691 -L 496.10679 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 595.569444 -L 517.046296 595.569444 -L 506.576543 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 595.569444 -L 517.046296 585.099691 -L 506.576543 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 595.569444 -L 527.516049 595.569444 -L 517.046296 585.099691 -z -" style="fill:#0000d1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 595.569444 -L 527.516049 585.099691 -L 517.046296 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 595.569444 -L 537.985802 595.569444 -L 527.516049 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 595.569444 -L 537.985802 585.099691 -L 527.516049 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 595.569444 -L 548.455556 595.569444 -L 537.985802 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 595.569444 -L 548.455556 585.099691 -L 537.985802 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 595.569444 -L 558.925309 595.569444 -L 548.455556 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 595.569444 -L 558.925309 585.099691 -L 548.455556 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 595.569444 -L 569.395062 595.569444 -L 558.925309 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 595.569444 -L 569.395062 585.099691 -L 558.925309 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 595.569444 -L 579.864815 595.569444 -L 569.395062 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 595.569444 -L 579.864815 585.099691 -L 569.395062 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 595.569444 -L 590.334568 595.569444 -L 579.864815 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 595.569444 -L 590.334568 585.099691 -L 579.864815 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 595.569444 -L 600.804321 595.569444 -L 590.334568 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 595.569444 -L 600.804321 585.099691 -L 590.334568 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 595.569444 -L 611.274074 595.569444 -L 600.804321 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 595.569444 -L 611.274074 585.099691 -L 600.804321 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 595.569444 -L 621.743827 595.569444 -L 611.274074 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 595.569444 -L 621.743827 585.099691 -L 611.274074 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 595.569444 -L 632.21358 595.569444 -L 621.743827 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 595.569444 -L 632.21358 585.099691 -L 621.743827 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 595.569444 -L 642.683333 595.569444 -L 632.21358 585.099691 -z -" style="fill:#0000d6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 595.569444 -L 642.683333 585.099691 -L 632.21358 585.099691 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 585.099691 -L 87.78642 585.099691 -L 77.316667 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 585.099691 -L 87.78642 574.629938 -L 77.316667 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 585.099691 -L 98.256173 585.099691 -L 87.78642 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 585.099691 -L 98.256173 574.629938 -L 87.78642 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 585.099691 -L 108.725926 585.099691 -L 98.256173 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 585.099691 -L 108.725926 574.629938 -L 98.256173 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 585.099691 -L 119.195679 585.099691 -L 108.725926 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 585.099691 -L 119.195679 574.629938 -L 108.725926 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 585.099691 -L 129.665432 585.099691 -L 119.195679 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 585.099691 -L 129.665432 574.629938 -L 119.195679 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 585.099691 -L 140.135185 585.099691 -L 129.665432 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 585.099691 -L 140.135185 574.629938 -L 129.665432 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 585.099691 -L 150.604938 585.099691 -L 140.135185 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 585.099691 -L 150.604938 574.629938 -L 140.135185 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 585.099691 -L 161.074691 585.099691 -L 150.604938 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 585.099691 -L 161.074691 574.629938 -L 150.604938 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 585.099691 -L 171.544444 585.099691 -L 161.074691 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 585.099691 -L 171.544444 574.629938 -L 161.074691 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 585.099691 -L 182.014198 585.099691 -L 171.544444 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 585.099691 -L 182.014198 574.629938 -L 171.544444 574.629938 -z -" style="fill:#0000da;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 585.099691 -L 192.483951 585.099691 -L 182.014198 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 585.099691 -L 192.483951 574.629938 -L 182.014198 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 585.099691 -L 202.953704 585.099691 -L 192.483951 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 585.099691 -L 202.953704 574.629938 -L 192.483951 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 585.099691 -L 213.423457 585.099691 -L 202.953704 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 585.099691 -L 213.423457 574.629938 -L 202.953704 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 585.099691 -L 223.89321 585.099691 -L 213.423457 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 585.099691 -L 223.89321 574.629938 -L 213.423457 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 585.099691 -L 234.362963 585.099691 -L 223.89321 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 585.099691 -L 234.362963 574.629938 -L 223.89321 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 585.099691 -L 244.832716 585.099691 -L 234.362963 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 585.099691 -L 244.832716 574.629938 -L 234.362963 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 585.099691 -L 255.302469 585.099691 -L 244.832716 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 585.099691 -L 255.302469 574.629938 -L 244.832716 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 585.099691 -L 265.772222 585.099691 -L 255.302469 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 585.099691 -L 265.772222 574.629938 -L 255.302469 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 585.099691 -L 276.241975 585.099691 -L 265.772222 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 585.099691 -L 276.241975 574.629938 -L 265.772222 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 585.099691 -L 286.711728 585.099691 -L 276.241975 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 585.099691 -L 286.711728 574.629938 -L 276.241975 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 585.099691 -L 297.181481 585.099691 -L 286.711728 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 585.099691 -L 297.181481 574.629938 -L 286.711728 574.629938 -z -" style="fill:#0000df;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 585.099691 -L 307.651235 585.099691 -L 297.181481 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 585.099691 -L 307.651235 574.629938 -L 297.181481 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 585.099691 -L 318.120988 585.099691 -L 307.651235 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 585.099691 -L 318.120988 574.629938 -L 307.651235 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 585.099691 -L 328.590741 585.099691 -L 318.120988 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 585.099691 -L 328.590741 574.629938 -L 318.120988 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 585.099691 -L 339.060494 585.099691 -L 328.590741 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 585.099691 -L 339.060494 574.629938 -L 328.590741 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 585.099691 -L 349.530247 585.099691 -L 339.060494 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 585.099691 -L 349.530247 574.629938 -L 339.060494 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 585.099691 -L 360 585.099691 -L 349.530247 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 585.099691 -L 360 574.629938 -L 349.530247 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 585.099691 -L 370.469753 585.099691 -L 360 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 585.099691 -L 370.469753 574.629938 -L 360 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 585.099691 -L 380.939506 585.099691 -L 370.469753 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 585.099691 -L 380.939506 574.629938 -L 370.469753 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 585.099691 -L 391.409259 585.099691 -L 380.939506 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 585.099691 -L 391.409259 574.629938 -L 380.939506 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 585.099691 -L 401.879012 585.099691 -L 391.409259 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 585.099691 -L 401.879012 574.629938 -L 391.409259 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 585.099691 -L 412.348765 585.099691 -L 401.879012 574.629938 -z -" style="fill:#0000e3;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 585.099691 -L 412.348765 574.629938 -L 401.879012 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 585.099691 -L 422.818519 585.099691 -L 412.348765 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 585.099691 -L 422.818519 574.629938 -L 412.348765 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 585.099691 -L 433.288272 585.099691 -L 422.818519 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 585.099691 -L 433.288272 574.629938 -L 422.818519 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 585.099691 -L 443.758025 585.099691 -L 433.288272 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 585.099691 -L 443.758025 574.629938 -L 433.288272 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 585.099691 -L 454.227778 585.099691 -L 443.758025 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 585.099691 -L 454.227778 574.629938 -L 443.758025 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 585.099691 -L 464.697531 585.099691 -L 454.227778 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 585.099691 -L 464.697531 574.629938 -L 454.227778 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 585.099691 -L 475.167284 585.099691 -L 464.697531 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 585.099691 -L 475.167284 574.629938 -L 464.697531 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 585.099691 -L 485.637037 585.099691 -L 475.167284 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 585.099691 -L 485.637037 574.629938 -L 475.167284 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 585.099691 -L 496.10679 585.099691 -L 485.637037 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 585.099691 -L 496.10679 574.629938 -L 485.637037 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 585.099691 -L 506.576543 585.099691 -L 496.10679 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 585.099691 -L 506.576543 574.629938 -L 496.10679 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 585.099691 -L 517.046296 585.099691 -L 506.576543 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 585.099691 -L 517.046296 574.629938 -L 506.576543 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 585.099691 -L 527.516049 585.099691 -L 517.046296 574.629938 -z -" style="fill:#0000e8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 585.099691 -L 527.516049 574.629938 -L 517.046296 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 585.099691 -L 537.985802 585.099691 -L 527.516049 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 585.099691 -L 537.985802 574.629938 -L 527.516049 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 585.099691 -L 548.455556 585.099691 -L 537.985802 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 585.099691 -L 548.455556 574.629938 -L 537.985802 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 585.099691 -L 558.925309 585.099691 -L 548.455556 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 585.099691 -L 558.925309 574.629938 -L 548.455556 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 585.099691 -L 569.395062 585.099691 -L 558.925309 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 585.099691 -L 569.395062 574.629938 -L 558.925309 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 585.099691 -L 579.864815 585.099691 -L 569.395062 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 585.099691 -L 579.864815 574.629938 -L 569.395062 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 585.099691 -L 590.334568 585.099691 -L 579.864815 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 585.099691 -L 590.334568 574.629938 -L 579.864815 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 585.099691 -L 600.804321 585.099691 -L 590.334568 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 585.099691 -L 600.804321 574.629938 -L 590.334568 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 585.099691 -L 611.274074 585.099691 -L 600.804321 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 585.099691 -L 611.274074 574.629938 -L 600.804321 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 585.099691 -L 621.743827 585.099691 -L 611.274074 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 585.099691 -L 621.743827 574.629938 -L 611.274074 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 585.099691 -L 632.21358 585.099691 -L 621.743827 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 585.099691 -L 632.21358 574.629938 -L 621.743827 574.629938 -z -" style="fill:#0000ed;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 585.099691 -L 642.683333 585.099691 -L 632.21358 574.629938 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 585.099691 -L 642.683333 574.629938 -L 632.21358 574.629938 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 574.629938 -L 87.78642 574.629938 -L 77.316667 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 574.629938 -L 87.78642 564.160185 -L 77.316667 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 574.629938 -L 98.256173 574.629938 -L 87.78642 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 574.629938 -L 98.256173 564.160185 -L 87.78642 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 574.629938 -L 108.725926 574.629938 -L 98.256173 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 574.629938 -L 108.725926 564.160185 -L 98.256173 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 574.629938 -L 119.195679 574.629938 -L 108.725926 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 574.629938 -L 119.195679 564.160185 -L 108.725926 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 574.629938 -L 129.665432 574.629938 -L 119.195679 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 574.629938 -L 129.665432 564.160185 -L 119.195679 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 574.629938 -L 140.135185 574.629938 -L 129.665432 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 574.629938 -L 140.135185 564.160185 -L 129.665432 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 574.629938 -L 150.604938 574.629938 -L 140.135185 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 574.629938 -L 150.604938 564.160185 -L 140.135185 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 574.629938 -L 161.074691 574.629938 -L 150.604938 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 574.629938 -L 161.074691 564.160185 -L 150.604938 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 574.629938 -L 171.544444 574.629938 -L 161.074691 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 574.629938 -L 171.544444 564.160185 -L 161.074691 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 574.629938 -L 182.014198 574.629938 -L 171.544444 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 574.629938 -L 182.014198 564.160185 -L 171.544444 564.160185 -z -" style="fill:#0000f1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 574.629938 -L 192.483951 574.629938 -L 182.014198 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 574.629938 -L 192.483951 564.160185 -L 182.014198 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 574.629938 -L 202.953704 574.629938 -L 192.483951 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 574.629938 -L 202.953704 564.160185 -L 192.483951 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 574.629938 -L 213.423457 574.629938 -L 202.953704 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 574.629938 -L 213.423457 564.160185 -L 202.953704 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 574.629938 -L 223.89321 574.629938 -L 213.423457 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 574.629938 -L 223.89321 564.160185 -L 213.423457 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 574.629938 -L 234.362963 574.629938 -L 223.89321 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 574.629938 -L 234.362963 564.160185 -L 223.89321 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 574.629938 -L 244.832716 574.629938 -L 234.362963 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 574.629938 -L 244.832716 564.160185 -L 234.362963 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 574.629938 -L 255.302469 574.629938 -L 244.832716 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 574.629938 -L 255.302469 564.160185 -L 244.832716 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 574.629938 -L 265.772222 574.629938 -L 255.302469 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 574.629938 -L 265.772222 564.160185 -L 255.302469 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 574.629938 -L 276.241975 574.629938 -L 265.772222 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 574.629938 -L 276.241975 564.160185 -L 265.772222 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 574.629938 -L 286.711728 574.629938 -L 276.241975 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 574.629938 -L 286.711728 564.160185 -L 276.241975 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 574.629938 -L 297.181481 574.629938 -L 286.711728 564.160185 -z -" style="fill:#0000f6;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 574.629938 -L 297.181481 564.160185 -L 286.711728 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 574.629938 -L 307.651235 574.629938 -L 297.181481 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 574.629938 -L 307.651235 564.160185 -L 297.181481 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 574.629938 -L 318.120988 574.629938 -L 307.651235 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 574.629938 -L 318.120988 564.160185 -L 307.651235 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 574.629938 -L 328.590741 574.629938 -L 318.120988 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 574.629938 -L 328.590741 564.160185 -L 318.120988 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 574.629938 -L 339.060494 574.629938 -L 328.590741 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 574.629938 -L 339.060494 564.160185 -L 328.590741 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 574.629938 -L 349.530247 574.629938 -L 339.060494 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 574.629938 -L 349.530247 564.160185 -L 339.060494 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 574.629938 -L 360 574.629938 -L 349.530247 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 574.629938 -L 360 564.160185 -L 349.530247 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 574.629938 -L 370.469753 574.629938 -L 360 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 574.629938 -L 370.469753 564.160185 -L 360 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 574.629938 -L 380.939506 574.629938 -L 370.469753 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 574.629938 -L 380.939506 564.160185 -L 370.469753 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 574.629938 -L 391.409259 574.629938 -L 380.939506 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 574.629938 -L 391.409259 564.160185 -L 380.939506 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 574.629938 -L 401.879012 574.629938 -L 391.409259 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 574.629938 -L 401.879012 564.160185 -L 391.409259 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 574.629938 -L 412.348765 574.629938 -L 401.879012 564.160185 -z -" style="fill:#0000fa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 574.629938 -L 412.348765 564.160185 -L 401.879012 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 574.629938 -L 422.818519 574.629938 -L 412.348765 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 574.629938 -L 422.818519 564.160185 -L 412.348765 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 574.629938 -L 433.288272 574.629938 -L 422.818519 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 574.629938 -L 433.288272 564.160185 -L 422.818519 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 574.629938 -L 443.758025 574.629938 -L 433.288272 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 574.629938 -L 443.758025 564.160185 -L 433.288272 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 574.629938 -L 454.227778 574.629938 -L 443.758025 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 574.629938 -L 454.227778 564.160185 -L 443.758025 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 574.629938 -L 464.697531 574.629938 -L 454.227778 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 574.629938 -L 464.697531 564.160185 -L 454.227778 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 574.629938 -L 475.167284 574.629938 -L 464.697531 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 574.629938 -L 475.167284 564.160185 -L 464.697531 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 574.629938 -L 485.637037 574.629938 -L 475.167284 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 574.629938 -L 485.637037 564.160185 -L 475.167284 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 574.629938 -L 496.10679 574.629938 -L 485.637037 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 574.629938 -L 496.10679 564.160185 -L 485.637037 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 574.629938 -L 506.576543 574.629938 -L 496.10679 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 574.629938 -L 506.576543 564.160185 -L 496.10679 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 574.629938 -L 517.046296 574.629938 -L 506.576543 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 574.629938 -L 517.046296 564.160185 -L 506.576543 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 574.629938 -L 527.516049 574.629938 -L 517.046296 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 574.629938 -L 527.516049 564.160185 -L 517.046296 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 574.629938 -L 537.985802 574.629938 -L 527.516049 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 574.629938 -L 537.985802 564.160185 -L 527.516049 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 574.629938 -L 548.455556 574.629938 -L 537.985802 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 574.629938 -L 548.455556 564.160185 -L 537.985802 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 574.629938 -L 558.925309 574.629938 -L 548.455556 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 574.629938 -L 558.925309 564.160185 -L 548.455556 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 574.629938 -L 569.395062 574.629938 -L 558.925309 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 574.629938 -L 569.395062 564.160185 -L 558.925309 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 574.629938 -L 579.864815 574.629938 -L 569.395062 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 574.629938 -L 579.864815 564.160185 -L 569.395062 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 574.629938 -L 590.334568 574.629938 -L 579.864815 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 574.629938 -L 590.334568 564.160185 -L 579.864815 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 574.629938 -L 600.804321 574.629938 -L 590.334568 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 574.629938 -L 600.804321 564.160185 -L 590.334568 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 574.629938 -L 611.274074 574.629938 -L 600.804321 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 574.629938 -L 611.274074 564.160185 -L 600.804321 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 574.629938 -L 621.743827 574.629938 -L 611.274074 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 574.629938 -L 621.743827 564.160185 -L 611.274074 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 574.629938 -L 632.21358 574.629938 -L 621.743827 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 574.629938 -L 632.21358 564.160185 -L 621.743827 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 574.629938 -L 642.683333 574.629938 -L 632.21358 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 574.629938 -L 642.683333 564.160185 -L 632.21358 564.160185 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 564.160185 -L 87.78642 564.160185 -L 77.316667 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 564.160185 -L 87.78642 553.690432 -L 77.316667 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 564.160185 -L 98.256173 564.160185 -L 87.78642 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 564.160185 -L 98.256173 553.690432 -L 87.78642 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 564.160185 -L 108.725926 564.160185 -L 98.256173 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 564.160185 -L 108.725926 553.690432 -L 98.256173 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 564.160185 -L 119.195679 564.160185 -L 108.725926 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 564.160185 -L 119.195679 553.690432 -L 108.725926 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 564.160185 -L 129.665432 564.160185 -L 119.195679 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 564.160185 -L 129.665432 553.690432 -L 119.195679 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 564.160185 -L 140.135185 564.160185 -L 129.665432 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 564.160185 -L 140.135185 553.690432 -L 129.665432 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 564.160185 -L 150.604938 564.160185 -L 140.135185 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 564.160185 -L 150.604938 553.690432 -L 140.135185 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 564.160185 -L 161.074691 564.160185 -L 150.604938 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 564.160185 -L 161.074691 553.690432 -L 150.604938 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 564.160185 -L 171.544444 564.160185 -L 161.074691 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 564.160185 -L 171.544444 553.690432 -L 161.074691 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 564.160185 -L 182.014198 564.160185 -L 171.544444 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 564.160185 -L 182.014198 553.690432 -L 171.544444 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 564.160185 -L 192.483951 564.160185 -L 182.014198 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 564.160185 -L 192.483951 553.690432 -L 182.014198 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 564.160185 -L 202.953704 564.160185 -L 192.483951 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 564.160185 -L 202.953704 553.690432 -L 192.483951 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 564.160185 -L 213.423457 564.160185 -L 202.953704 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 564.160185 -L 213.423457 553.690432 -L 202.953704 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 564.160185 -L 223.89321 564.160185 -L 213.423457 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 564.160185 -L 223.89321 553.690432 -L 213.423457 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 564.160185 -L 234.362963 564.160185 -L 223.89321 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 564.160185 -L 234.362963 553.690432 -L 223.89321 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 564.160185 -L 244.832716 564.160185 -L 234.362963 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 564.160185 -L 244.832716 553.690432 -L 234.362963 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 564.160185 -L 255.302469 564.160185 -L 244.832716 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 564.160185 -L 255.302469 553.690432 -L 244.832716 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 564.160185 -L 265.772222 564.160185 -L 255.302469 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 564.160185 -L 265.772222 553.690432 -L 255.302469 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 564.160185 -L 276.241975 564.160185 -L 265.772222 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 564.160185 -L 276.241975 553.690432 -L 265.772222 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 564.160185 -L 286.711728 564.160185 -L 276.241975 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 564.160185 -L 286.711728 553.690432 -L 276.241975 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 564.160185 -L 297.181481 564.160185 -L 286.711728 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 564.160185 -L 297.181481 553.690432 -L 286.711728 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 564.160185 -L 307.651235 564.160185 -L 297.181481 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 564.160185 -L 307.651235 553.690432 -L 297.181481 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 564.160185 -L 318.120988 564.160185 -L 307.651235 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 564.160185 -L 318.120988 553.690432 -L 307.651235 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 564.160185 -L 328.590741 564.160185 -L 318.120988 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 564.160185 -L 328.590741 553.690432 -L 318.120988 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 564.160185 -L 339.060494 564.160185 -L 328.590741 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 564.160185 -L 339.060494 553.690432 -L 328.590741 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 564.160185 -L 349.530247 564.160185 -L 339.060494 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 564.160185 -L 349.530247 553.690432 -L 339.060494 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 564.160185 -L 360 564.160185 -L 349.530247 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 564.160185 -L 360 553.690432 -L 349.530247 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 564.160185 -L 370.469753 564.160185 -L 360 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 564.160185 -L 370.469753 553.690432 -L 360 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 564.160185 -L 380.939506 564.160185 -L 370.469753 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 564.160185 -L 380.939506 553.690432 -L 370.469753 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 564.160185 -L 391.409259 564.160185 -L 380.939506 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 564.160185 -L 391.409259 553.690432 -L 380.939506 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 564.160185 -L 401.879012 564.160185 -L 391.409259 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 564.160185 -L 401.879012 553.690432 -L 391.409259 553.690432 -z -" style="fill:#0000ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 564.160185 -L 412.348765 564.160185 -L 401.879012 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 564.160185 -L 412.348765 553.690432 -L 401.879012 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 564.160185 -L 422.818519 564.160185 -L 412.348765 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 564.160185 -L 422.818519 553.690432 -L 412.348765 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 564.160185 -L 433.288272 564.160185 -L 422.818519 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 564.160185 -L 433.288272 553.690432 -L 422.818519 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 564.160185 -L 443.758025 564.160185 -L 433.288272 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 564.160185 -L 443.758025 553.690432 -L 433.288272 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 564.160185 -L 454.227778 564.160185 -L 443.758025 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 564.160185 -L 454.227778 553.690432 -L 443.758025 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 564.160185 -L 464.697531 564.160185 -L 454.227778 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 564.160185 -L 464.697531 553.690432 -L 454.227778 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 564.160185 -L 475.167284 564.160185 -L 464.697531 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 564.160185 -L 475.167284 553.690432 -L 464.697531 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 564.160185 -L 485.637037 564.160185 -L 475.167284 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 564.160185 -L 485.637037 553.690432 -L 475.167284 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 564.160185 -L 496.10679 564.160185 -L 485.637037 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 564.160185 -L 496.10679 553.690432 -L 485.637037 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 564.160185 -L 506.576543 564.160185 -L 496.10679 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 564.160185 -L 506.576543 553.690432 -L 496.10679 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 564.160185 -L 517.046296 564.160185 -L 506.576543 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 564.160185 -L 517.046296 553.690432 -L 506.576543 553.690432 -z -" style="fill:#0004ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 564.160185 -L 527.516049 564.160185 -L 517.046296 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 564.160185 -L 527.516049 553.690432 -L 517.046296 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 564.160185 -L 537.985802 564.160185 -L 527.516049 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 564.160185 -L 537.985802 553.690432 -L 527.516049 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 564.160185 -L 548.455556 564.160185 -L 537.985802 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 564.160185 -L 548.455556 553.690432 -L 537.985802 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 564.160185 -L 558.925309 564.160185 -L 548.455556 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 564.160185 -L 558.925309 553.690432 -L 548.455556 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 564.160185 -L 569.395062 564.160185 -L 558.925309 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 564.160185 -L 569.395062 553.690432 -L 558.925309 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 564.160185 -L 579.864815 564.160185 -L 569.395062 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 564.160185 -L 579.864815 553.690432 -L 569.395062 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 564.160185 -L 590.334568 564.160185 -L 579.864815 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 564.160185 -L 590.334568 553.690432 -L 579.864815 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 564.160185 -L 600.804321 564.160185 -L 590.334568 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 564.160185 -L 600.804321 553.690432 -L 590.334568 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 564.160185 -L 611.274074 564.160185 -L 600.804321 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 564.160185 -L 611.274074 553.690432 -L 600.804321 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 564.160185 -L 621.743827 564.160185 -L 611.274074 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 564.160185 -L 621.743827 553.690432 -L 611.274074 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 564.160185 -L 632.21358 564.160185 -L 621.743827 553.690432 -z -" style="fill:#0008ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 564.160185 -L 632.21358 553.690432 -L 621.743827 553.690432 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 564.160185 -L 642.683333 564.160185 -L 632.21358 553.690432 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 564.160185 -L 642.683333 553.690432 -L 632.21358 553.690432 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 553.690432 -L 87.78642 553.690432 -L 77.316667 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 553.690432 -L 87.78642 543.220679 -L 77.316667 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 553.690432 -L 98.256173 553.690432 -L 87.78642 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 553.690432 -L 98.256173 543.220679 -L 87.78642 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 553.690432 -L 108.725926 553.690432 -L 98.256173 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 553.690432 -L 108.725926 543.220679 -L 98.256173 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 553.690432 -L 119.195679 553.690432 -L 108.725926 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 553.690432 -L 119.195679 543.220679 -L 108.725926 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 553.690432 -L 129.665432 553.690432 -L 119.195679 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 553.690432 -L 129.665432 543.220679 -L 119.195679 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 553.690432 -L 140.135185 553.690432 -L 129.665432 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 553.690432 -L 140.135185 543.220679 -L 129.665432 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 553.690432 -L 150.604938 553.690432 -L 140.135185 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 553.690432 -L 150.604938 543.220679 -L 140.135185 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 553.690432 -L 161.074691 553.690432 -L 150.604938 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 553.690432 -L 161.074691 543.220679 -L 150.604938 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 553.690432 -L 171.544444 553.690432 -L 161.074691 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 553.690432 -L 171.544444 543.220679 -L 161.074691 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 553.690432 -L 182.014198 553.690432 -L 171.544444 543.220679 -z -" style="fill:#000cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 553.690432 -L 182.014198 543.220679 -L 171.544444 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 553.690432 -L 192.483951 553.690432 -L 182.014198 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 553.690432 -L 192.483951 543.220679 -L 182.014198 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 553.690432 -L 202.953704 553.690432 -L 192.483951 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 553.690432 -L 202.953704 543.220679 -L 192.483951 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 553.690432 -L 213.423457 553.690432 -L 202.953704 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 553.690432 -L 213.423457 543.220679 -L 202.953704 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 553.690432 -L 223.89321 553.690432 -L 213.423457 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 553.690432 -L 223.89321 543.220679 -L 213.423457 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 553.690432 -L 234.362963 553.690432 -L 223.89321 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 553.690432 -L 234.362963 543.220679 -L 223.89321 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 553.690432 -L 244.832716 553.690432 -L 234.362963 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 553.690432 -L 244.832716 543.220679 -L 234.362963 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 553.690432 -L 255.302469 553.690432 -L 244.832716 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 553.690432 -L 255.302469 543.220679 -L 244.832716 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 553.690432 -L 265.772222 553.690432 -L 255.302469 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 553.690432 -L 265.772222 543.220679 -L 255.302469 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 553.690432 -L 276.241975 553.690432 -L 265.772222 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 553.690432 -L 276.241975 543.220679 -L 265.772222 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 553.690432 -L 286.711728 553.690432 -L 276.241975 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 553.690432 -L 286.711728 543.220679 -L 276.241975 543.220679 -z -" style="fill:#0010ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 553.690432 -L 297.181481 553.690432 -L 286.711728 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 553.690432 -L 297.181481 543.220679 -L 286.711728 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 553.690432 -L 307.651235 553.690432 -L 297.181481 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 553.690432 -L 307.651235 543.220679 -L 297.181481 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 553.690432 -L 318.120988 553.690432 -L 307.651235 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 553.690432 -L 318.120988 543.220679 -L 307.651235 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 553.690432 -L 328.590741 553.690432 -L 318.120988 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 553.690432 -L 328.590741 543.220679 -L 318.120988 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 553.690432 -L 339.060494 553.690432 -L 328.590741 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 553.690432 -L 339.060494 543.220679 -L 328.590741 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 553.690432 -L 349.530247 553.690432 -L 339.060494 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 553.690432 -L 349.530247 543.220679 -L 339.060494 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 553.690432 -L 360 553.690432 -L 349.530247 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 553.690432 -L 360 543.220679 -L 349.530247 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 553.690432 -L 370.469753 553.690432 -L 360 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 553.690432 -L 370.469753 543.220679 -L 360 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 553.690432 -L 380.939506 553.690432 -L 370.469753 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 553.690432 -L 380.939506 543.220679 -L 370.469753 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 553.690432 -L 391.409259 553.690432 -L 380.939506 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 553.690432 -L 391.409259 543.220679 -L 380.939506 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 553.690432 -L 401.879012 553.690432 -L 391.409259 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 553.690432 -L 401.879012 543.220679 -L 391.409259 543.220679 -z -" style="fill:#0014ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 553.690432 -L 412.348765 553.690432 -L 401.879012 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 553.690432 -L 412.348765 543.220679 -L 401.879012 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 553.690432 -L 422.818519 553.690432 -L 412.348765 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 553.690432 -L 422.818519 543.220679 -L 412.348765 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 553.690432 -L 433.288272 553.690432 -L 422.818519 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 553.690432 -L 433.288272 543.220679 -L 422.818519 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 553.690432 -L 443.758025 553.690432 -L 433.288272 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 553.690432 -L 443.758025 543.220679 -L 433.288272 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 553.690432 -L 454.227778 553.690432 -L 443.758025 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 553.690432 -L 454.227778 543.220679 -L 443.758025 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 553.690432 -L 464.697531 553.690432 -L 454.227778 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 553.690432 -L 464.697531 543.220679 -L 454.227778 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 553.690432 -L 475.167284 553.690432 -L 464.697531 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 553.690432 -L 475.167284 543.220679 -L 464.697531 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 553.690432 -L 485.637037 553.690432 -L 475.167284 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 553.690432 -L 485.637037 543.220679 -L 475.167284 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 553.690432 -L 496.10679 553.690432 -L 485.637037 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 553.690432 -L 496.10679 543.220679 -L 485.637037 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 553.690432 -L 506.576543 553.690432 -L 496.10679 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 553.690432 -L 506.576543 543.220679 -L 496.10679 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 553.690432 -L 517.046296 553.690432 -L 506.576543 543.220679 -z -" style="fill:#0018ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 553.690432 -L 517.046296 543.220679 -L 506.576543 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 553.690432 -L 527.516049 553.690432 -L 517.046296 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 553.690432 -L 527.516049 543.220679 -L 517.046296 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 553.690432 -L 537.985802 553.690432 -L 527.516049 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 553.690432 -L 537.985802 543.220679 -L 527.516049 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 553.690432 -L 548.455556 553.690432 -L 537.985802 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 553.690432 -L 548.455556 543.220679 -L 537.985802 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 553.690432 -L 558.925309 553.690432 -L 548.455556 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 553.690432 -L 558.925309 543.220679 -L 548.455556 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 553.690432 -L 569.395062 553.690432 -L 558.925309 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 553.690432 -L 569.395062 543.220679 -L 558.925309 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 553.690432 -L 579.864815 553.690432 -L 569.395062 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 553.690432 -L 579.864815 543.220679 -L 569.395062 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 553.690432 -L 590.334568 553.690432 -L 579.864815 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 553.690432 -L 590.334568 543.220679 -L 579.864815 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 553.690432 -L 600.804321 553.690432 -L 590.334568 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 553.690432 -L 600.804321 543.220679 -L 590.334568 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 553.690432 -L 611.274074 553.690432 -L 600.804321 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 553.690432 -L 611.274074 543.220679 -L 600.804321 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 553.690432 -L 621.743827 553.690432 -L 611.274074 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 553.690432 -L 621.743827 543.220679 -L 611.274074 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 553.690432 -L 632.21358 553.690432 -L 621.743827 543.220679 -z -" style="fill:#001cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 553.690432 -L 632.21358 543.220679 -L 621.743827 543.220679 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 553.690432 -L 642.683333 553.690432 -L 632.21358 543.220679 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 553.690432 -L 642.683333 543.220679 -L 632.21358 543.220679 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 543.220679 -L 87.78642 543.220679 -L 77.316667 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 543.220679 -L 87.78642 532.750926 -L 77.316667 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 543.220679 -L 98.256173 543.220679 -L 87.78642 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 543.220679 -L 98.256173 532.750926 -L 87.78642 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 543.220679 -L 108.725926 543.220679 -L 98.256173 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 543.220679 -L 108.725926 532.750926 -L 98.256173 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 543.220679 -L 119.195679 543.220679 -L 108.725926 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 543.220679 -L 119.195679 532.750926 -L 108.725926 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 543.220679 -L 129.665432 543.220679 -L 119.195679 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 543.220679 -L 129.665432 532.750926 -L 119.195679 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 543.220679 -L 140.135185 543.220679 -L 129.665432 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 543.220679 -L 140.135185 532.750926 -L 129.665432 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 543.220679 -L 150.604938 543.220679 -L 140.135185 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 543.220679 -L 150.604938 532.750926 -L 140.135185 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 543.220679 -L 161.074691 543.220679 -L 150.604938 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 543.220679 -L 161.074691 532.750926 -L 150.604938 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 543.220679 -L 171.544444 543.220679 -L 161.074691 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 543.220679 -L 171.544444 532.750926 -L 161.074691 532.750926 -z -" style="fill:#0020ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 543.220679 -L 182.014198 543.220679 -L 171.544444 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 543.220679 -L 182.014198 532.750926 -L 171.544444 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 543.220679 -L 192.483951 543.220679 -L 182.014198 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 543.220679 -L 192.483951 532.750926 -L 182.014198 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 543.220679 -L 202.953704 543.220679 -L 192.483951 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 543.220679 -L 202.953704 532.750926 -L 192.483951 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 543.220679 -L 213.423457 543.220679 -L 202.953704 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 543.220679 -L 213.423457 532.750926 -L 202.953704 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 543.220679 -L 223.89321 543.220679 -L 213.423457 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 543.220679 -L 223.89321 532.750926 -L 213.423457 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 543.220679 -L 234.362963 543.220679 -L 223.89321 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 543.220679 -L 234.362963 532.750926 -L 223.89321 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 543.220679 -L 244.832716 543.220679 -L 234.362963 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 543.220679 -L 244.832716 532.750926 -L 234.362963 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 543.220679 -L 255.302469 543.220679 -L 244.832716 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 543.220679 -L 255.302469 532.750926 -L 244.832716 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 543.220679 -L 265.772222 543.220679 -L 255.302469 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 543.220679 -L 265.772222 532.750926 -L 255.302469 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 543.220679 -L 276.241975 543.220679 -L 265.772222 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 543.220679 -L 276.241975 532.750926 -L 265.772222 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 543.220679 -L 286.711728 543.220679 -L 276.241975 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 543.220679 -L 286.711728 532.750926 -L 276.241975 532.750926 -z -" style="fill:#0024ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 543.220679 -L 297.181481 543.220679 -L 286.711728 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 543.220679 -L 297.181481 532.750926 -L 286.711728 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 543.220679 -L 307.651235 543.220679 -L 297.181481 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 543.220679 -L 307.651235 532.750926 -L 297.181481 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 543.220679 -L 318.120988 543.220679 -L 307.651235 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 543.220679 -L 318.120988 532.750926 -L 307.651235 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 543.220679 -L 328.590741 543.220679 -L 318.120988 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 543.220679 -L 328.590741 532.750926 -L 318.120988 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 543.220679 -L 339.060494 543.220679 -L 328.590741 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 543.220679 -L 339.060494 532.750926 -L 328.590741 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 543.220679 -L 349.530247 543.220679 -L 339.060494 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 543.220679 -L 349.530247 532.750926 -L 339.060494 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 543.220679 -L 360 543.220679 -L 349.530247 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 543.220679 -L 360 532.750926 -L 349.530247 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 543.220679 -L 370.469753 543.220679 -L 360 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 543.220679 -L 370.469753 532.750926 -L 360 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 543.220679 -L 380.939506 543.220679 -L 370.469753 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 543.220679 -L 380.939506 532.750926 -L 370.469753 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 543.220679 -L 391.409259 543.220679 -L 380.939506 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 543.220679 -L 391.409259 532.750926 -L 380.939506 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 543.220679 -L 401.879012 543.220679 -L 391.409259 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 543.220679 -L 401.879012 532.750926 -L 391.409259 532.750926 -z -" style="fill:#0028ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 543.220679 -L 412.348765 543.220679 -L 401.879012 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 543.220679 -L 412.348765 532.750926 -L 401.879012 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 543.220679 -L 422.818519 543.220679 -L 412.348765 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 543.220679 -L 422.818519 532.750926 -L 412.348765 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 543.220679 -L 433.288272 543.220679 -L 422.818519 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 543.220679 -L 433.288272 532.750926 -L 422.818519 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 543.220679 -L 443.758025 543.220679 -L 433.288272 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 543.220679 -L 443.758025 532.750926 -L 433.288272 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 543.220679 -L 454.227778 543.220679 -L 443.758025 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 543.220679 -L 454.227778 532.750926 -L 443.758025 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 543.220679 -L 464.697531 543.220679 -L 454.227778 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 543.220679 -L 464.697531 532.750926 -L 454.227778 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 543.220679 -L 475.167284 543.220679 -L 464.697531 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 543.220679 -L 475.167284 532.750926 -L 464.697531 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 543.220679 -L 485.637037 543.220679 -L 475.167284 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 543.220679 -L 485.637037 532.750926 -L 475.167284 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 543.220679 -L 496.10679 543.220679 -L 485.637037 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 543.220679 -L 496.10679 532.750926 -L 485.637037 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 543.220679 -L 506.576543 543.220679 -L 496.10679 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 543.220679 -L 506.576543 532.750926 -L 496.10679 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 543.220679 -L 517.046296 543.220679 -L 506.576543 532.750926 -z -" style="fill:#002cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 543.220679 -L 517.046296 532.750926 -L 506.576543 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 543.220679 -L 527.516049 543.220679 -L 517.046296 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 543.220679 -L 527.516049 532.750926 -L 517.046296 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 543.220679 -L 537.985802 543.220679 -L 527.516049 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 543.220679 -L 537.985802 532.750926 -L 527.516049 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 543.220679 -L 548.455556 543.220679 -L 537.985802 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 543.220679 -L 548.455556 532.750926 -L 537.985802 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 543.220679 -L 558.925309 543.220679 -L 548.455556 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 543.220679 -L 558.925309 532.750926 -L 548.455556 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 543.220679 -L 569.395062 543.220679 -L 558.925309 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 543.220679 -L 569.395062 532.750926 -L 558.925309 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 543.220679 -L 579.864815 543.220679 -L 569.395062 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 543.220679 -L 579.864815 532.750926 -L 569.395062 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 543.220679 -L 590.334568 543.220679 -L 579.864815 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 543.220679 -L 590.334568 532.750926 -L 579.864815 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 543.220679 -L 600.804321 543.220679 -L 590.334568 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 543.220679 -L 600.804321 532.750926 -L 590.334568 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 543.220679 -L 611.274074 543.220679 -L 600.804321 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 543.220679 -L 611.274074 532.750926 -L 600.804321 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 543.220679 -L 621.743827 543.220679 -L 611.274074 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 543.220679 -L 621.743827 532.750926 -L 611.274074 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 543.220679 -L 632.21358 543.220679 -L 621.743827 532.750926 -z -" style="fill:#0030ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 543.220679 -L 632.21358 532.750926 -L 621.743827 532.750926 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 543.220679 -L 642.683333 543.220679 -L 632.21358 532.750926 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 543.220679 -L 642.683333 532.750926 -L 632.21358 532.750926 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 532.750926 -L 87.78642 532.750926 -L 77.316667 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 532.750926 -L 87.78642 522.281173 -L 77.316667 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 532.750926 -L 98.256173 532.750926 -L 87.78642 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 532.750926 -L 98.256173 522.281173 -L 87.78642 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 532.750926 -L 108.725926 532.750926 -L 98.256173 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 532.750926 -L 108.725926 522.281173 -L 98.256173 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 532.750926 -L 119.195679 532.750926 -L 108.725926 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 532.750926 -L 119.195679 522.281173 -L 108.725926 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 532.750926 -L 129.665432 532.750926 -L 119.195679 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 532.750926 -L 129.665432 522.281173 -L 119.195679 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 532.750926 -L 140.135185 532.750926 -L 129.665432 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 532.750926 -L 140.135185 522.281173 -L 129.665432 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 532.750926 -L 150.604938 532.750926 -L 140.135185 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 532.750926 -L 150.604938 522.281173 -L 140.135185 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 532.750926 -L 161.074691 532.750926 -L 150.604938 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 532.750926 -L 161.074691 522.281173 -L 150.604938 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 532.750926 -L 171.544444 532.750926 -L 161.074691 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 532.750926 -L 171.544444 522.281173 -L 161.074691 522.281173 -z -" style="fill:#0034ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 532.750926 -L 182.014198 532.750926 -L 171.544444 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 532.750926 -L 182.014198 522.281173 -L 171.544444 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 532.750926 -L 192.483951 532.750926 -L 182.014198 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 532.750926 -L 192.483951 522.281173 -L 182.014198 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 532.750926 -L 202.953704 532.750926 -L 192.483951 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 532.750926 -L 202.953704 522.281173 -L 192.483951 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 532.750926 -L 213.423457 532.750926 -L 202.953704 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 532.750926 -L 213.423457 522.281173 -L 202.953704 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 532.750926 -L 223.89321 532.750926 -L 213.423457 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 532.750926 -L 223.89321 522.281173 -L 213.423457 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 532.750926 -L 234.362963 532.750926 -L 223.89321 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 532.750926 -L 234.362963 522.281173 -L 223.89321 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 532.750926 -L 244.832716 532.750926 -L 234.362963 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 532.750926 -L 244.832716 522.281173 -L 234.362963 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 532.750926 -L 255.302469 532.750926 -L 244.832716 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 532.750926 -L 255.302469 522.281173 -L 244.832716 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 532.750926 -L 265.772222 532.750926 -L 255.302469 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 532.750926 -L 265.772222 522.281173 -L 255.302469 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 532.750926 -L 276.241975 532.750926 -L 265.772222 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 532.750926 -L 276.241975 522.281173 -L 265.772222 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 532.750926 -L 286.711728 532.750926 -L 276.241975 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 532.750926 -L 286.711728 522.281173 -L 276.241975 522.281173 -z -" style="fill:#0038ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 532.750926 -L 297.181481 532.750926 -L 286.711728 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 532.750926 -L 297.181481 522.281173 -L 286.711728 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 532.750926 -L 307.651235 532.750926 -L 297.181481 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 532.750926 -L 307.651235 522.281173 -L 297.181481 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 532.750926 -L 318.120988 532.750926 -L 307.651235 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 532.750926 -L 318.120988 522.281173 -L 307.651235 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 532.750926 -L 328.590741 532.750926 -L 318.120988 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 532.750926 -L 328.590741 522.281173 -L 318.120988 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 532.750926 -L 339.060494 532.750926 -L 328.590741 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 532.750926 -L 339.060494 522.281173 -L 328.590741 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 532.750926 -L 349.530247 532.750926 -L 339.060494 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 532.750926 -L 349.530247 522.281173 -L 339.060494 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 532.750926 -L 360 532.750926 -L 349.530247 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 532.750926 -L 360 522.281173 -L 349.530247 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 532.750926 -L 370.469753 532.750926 -L 360 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 532.750926 -L 370.469753 522.281173 -L 360 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 532.750926 -L 380.939506 532.750926 -L 370.469753 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 532.750926 -L 380.939506 522.281173 -L 370.469753 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 532.750926 -L 391.409259 532.750926 -L 380.939506 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 532.750926 -L 391.409259 522.281173 -L 380.939506 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 532.750926 -L 401.879012 532.750926 -L 391.409259 522.281173 -z -" style="fill:#003cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 532.750926 -L 401.879012 522.281173 -L 391.409259 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 532.750926 -L 412.348765 532.750926 -L 401.879012 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 532.750926 -L 412.348765 522.281173 -L 401.879012 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 532.750926 -L 422.818519 532.750926 -L 412.348765 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 532.750926 -L 422.818519 522.281173 -L 412.348765 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 532.750926 -L 433.288272 532.750926 -L 422.818519 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 532.750926 -L 433.288272 522.281173 -L 422.818519 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 532.750926 -L 443.758025 532.750926 -L 433.288272 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 532.750926 -L 443.758025 522.281173 -L 433.288272 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 532.750926 -L 454.227778 532.750926 -L 443.758025 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 532.750926 -L 454.227778 522.281173 -L 443.758025 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 532.750926 -L 464.697531 532.750926 -L 454.227778 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 532.750926 -L 464.697531 522.281173 -L 454.227778 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 532.750926 -L 475.167284 532.750926 -L 464.697531 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 532.750926 -L 475.167284 522.281173 -L 464.697531 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 532.750926 -L 485.637037 532.750926 -L 475.167284 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 532.750926 -L 485.637037 522.281173 -L 475.167284 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 532.750926 -L 496.10679 532.750926 -L 485.637037 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 532.750926 -L 496.10679 522.281173 -L 485.637037 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 532.750926 -L 506.576543 532.750926 -L 496.10679 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 532.750926 -L 506.576543 522.281173 -L 496.10679 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 532.750926 -L 517.046296 532.750926 -L 506.576543 522.281173 -z -" style="fill:#0040ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 532.750926 -L 517.046296 522.281173 -L 506.576543 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 532.750926 -L 527.516049 532.750926 -L 517.046296 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 532.750926 -L 527.516049 522.281173 -L 517.046296 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 532.750926 -L 537.985802 532.750926 -L 527.516049 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 532.750926 -L 537.985802 522.281173 -L 527.516049 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 532.750926 -L 548.455556 532.750926 -L 537.985802 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 532.750926 -L 548.455556 522.281173 -L 537.985802 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 532.750926 -L 558.925309 532.750926 -L 548.455556 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 532.750926 -L 558.925309 522.281173 -L 548.455556 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 532.750926 -L 569.395062 532.750926 -L 558.925309 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 532.750926 -L 569.395062 522.281173 -L 558.925309 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 532.750926 -L 579.864815 532.750926 -L 569.395062 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 532.750926 -L 579.864815 522.281173 -L 569.395062 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 532.750926 -L 590.334568 532.750926 -L 579.864815 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 532.750926 -L 590.334568 522.281173 -L 579.864815 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 532.750926 -L 600.804321 532.750926 -L 590.334568 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 532.750926 -L 600.804321 522.281173 -L 590.334568 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 532.750926 -L 611.274074 532.750926 -L 600.804321 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 532.750926 -L 611.274074 522.281173 -L 600.804321 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 532.750926 -L 621.743827 532.750926 -L 611.274074 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 532.750926 -L 621.743827 522.281173 -L 611.274074 522.281173 -z -" style="fill:#0044ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 532.750926 -L 632.21358 532.750926 -L 621.743827 522.281173 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 532.750926 -L 632.21358 522.281173 -L 621.743827 522.281173 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 532.750926 -L 642.683333 532.750926 -L 632.21358 522.281173 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 532.750926 -L 642.683333 522.281173 -L 632.21358 522.281173 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 522.281173 -L 87.78642 522.281173 -L 77.316667 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 522.281173 -L 87.78642 511.81142 -L 77.316667 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 522.281173 -L 98.256173 522.281173 -L 87.78642 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 522.281173 -L 98.256173 511.81142 -L 87.78642 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 522.281173 -L 108.725926 522.281173 -L 98.256173 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 522.281173 -L 108.725926 511.81142 -L 98.256173 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 522.281173 -L 119.195679 522.281173 -L 108.725926 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 522.281173 -L 119.195679 511.81142 -L 108.725926 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 522.281173 -L 129.665432 522.281173 -L 119.195679 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 522.281173 -L 129.665432 511.81142 -L 119.195679 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 522.281173 -L 140.135185 522.281173 -L 129.665432 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 522.281173 -L 140.135185 511.81142 -L 129.665432 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 522.281173 -L 150.604938 522.281173 -L 140.135185 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 522.281173 -L 150.604938 511.81142 -L 140.135185 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 522.281173 -L 161.074691 522.281173 -L 150.604938 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 522.281173 -L 161.074691 511.81142 -L 150.604938 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 522.281173 -L 171.544444 522.281173 -L 161.074691 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 522.281173 -L 171.544444 511.81142 -L 161.074691 511.81142 -z -" style="fill:#0048ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 522.281173 -L 182.014198 522.281173 -L 171.544444 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 522.281173 -L 182.014198 511.81142 -L 171.544444 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 522.281173 -L 192.483951 522.281173 -L 182.014198 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 522.281173 -L 192.483951 511.81142 -L 182.014198 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 522.281173 -L 202.953704 522.281173 -L 192.483951 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 522.281173 -L 202.953704 511.81142 -L 192.483951 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 522.281173 -L 213.423457 522.281173 -L 202.953704 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 522.281173 -L 213.423457 511.81142 -L 202.953704 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 522.281173 -L 223.89321 522.281173 -L 213.423457 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 522.281173 -L 223.89321 511.81142 -L 213.423457 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 522.281173 -L 234.362963 522.281173 -L 223.89321 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 522.281173 -L 234.362963 511.81142 -L 223.89321 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 522.281173 -L 244.832716 522.281173 -L 234.362963 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 522.281173 -L 244.832716 511.81142 -L 234.362963 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 522.281173 -L 255.302469 522.281173 -L 244.832716 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 522.281173 -L 255.302469 511.81142 -L 244.832716 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 522.281173 -L 265.772222 522.281173 -L 255.302469 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 522.281173 -L 265.772222 511.81142 -L 255.302469 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 522.281173 -L 276.241975 522.281173 -L 265.772222 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 522.281173 -L 276.241975 511.81142 -L 265.772222 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 522.281173 -L 286.711728 522.281173 -L 276.241975 511.81142 -z -" style="fill:#004cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 522.281173 -L 286.711728 511.81142 -L 276.241975 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 522.281173 -L 297.181481 522.281173 -L 286.711728 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 522.281173 -L 297.181481 511.81142 -L 286.711728 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 522.281173 -L 307.651235 522.281173 -L 297.181481 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 522.281173 -L 307.651235 511.81142 -L 297.181481 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 522.281173 -L 318.120988 522.281173 -L 307.651235 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 522.281173 -L 318.120988 511.81142 -L 307.651235 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 522.281173 -L 328.590741 522.281173 -L 318.120988 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 522.281173 -L 328.590741 511.81142 -L 318.120988 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 522.281173 -L 339.060494 522.281173 -L 328.590741 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 522.281173 -L 339.060494 511.81142 -L 328.590741 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 522.281173 -L 349.530247 522.281173 -L 339.060494 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 522.281173 -L 349.530247 511.81142 -L 339.060494 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 522.281173 -L 360 522.281173 -L 349.530247 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 522.281173 -L 360 511.81142 -L 349.530247 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 522.281173 -L 370.469753 522.281173 -L 360 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 522.281173 -L 370.469753 511.81142 -L 360 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 522.281173 -L 380.939506 522.281173 -L 370.469753 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 522.281173 -L 380.939506 511.81142 -L 370.469753 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 522.281173 -L 391.409259 522.281173 -L 380.939506 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 522.281173 -L 391.409259 511.81142 -L 380.939506 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 522.281173 -L 401.879012 522.281173 -L 391.409259 511.81142 -z -" style="fill:#0050ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 522.281173 -L 401.879012 511.81142 -L 391.409259 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 522.281173 -L 412.348765 522.281173 -L 401.879012 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 522.281173 -L 412.348765 511.81142 -L 401.879012 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 522.281173 -L 422.818519 522.281173 -L 412.348765 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 522.281173 -L 422.818519 511.81142 -L 412.348765 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 522.281173 -L 433.288272 522.281173 -L 422.818519 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 522.281173 -L 433.288272 511.81142 -L 422.818519 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 522.281173 -L 443.758025 522.281173 -L 433.288272 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 522.281173 -L 443.758025 511.81142 -L 433.288272 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 522.281173 -L 454.227778 522.281173 -L 443.758025 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 522.281173 -L 454.227778 511.81142 -L 443.758025 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 522.281173 -L 464.697531 522.281173 -L 454.227778 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 522.281173 -L 464.697531 511.81142 -L 454.227778 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 522.281173 -L 475.167284 522.281173 -L 464.697531 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 522.281173 -L 475.167284 511.81142 -L 464.697531 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 522.281173 -L 485.637037 522.281173 -L 475.167284 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 522.281173 -L 485.637037 511.81142 -L 475.167284 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 522.281173 -L 496.10679 522.281173 -L 485.637037 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 522.281173 -L 496.10679 511.81142 -L 485.637037 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 522.281173 -L 506.576543 522.281173 -L 496.10679 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 522.281173 -L 506.576543 511.81142 -L 496.10679 511.81142 -z -" style="fill:#0054ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 522.281173 -L 517.046296 522.281173 -L 506.576543 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 522.281173 -L 517.046296 511.81142 -L 506.576543 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 522.281173 -L 527.516049 522.281173 -L 517.046296 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 522.281173 -L 527.516049 511.81142 -L 517.046296 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 522.281173 -L 537.985802 522.281173 -L 527.516049 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 522.281173 -L 537.985802 511.81142 -L 527.516049 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 522.281173 -L 548.455556 522.281173 -L 537.985802 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 522.281173 -L 548.455556 511.81142 -L 537.985802 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 522.281173 -L 558.925309 522.281173 -L 548.455556 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 522.281173 -L 558.925309 511.81142 -L 548.455556 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 522.281173 -L 569.395062 522.281173 -L 558.925309 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 522.281173 -L 569.395062 511.81142 -L 558.925309 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 522.281173 -L 579.864815 522.281173 -L 569.395062 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 522.281173 -L 579.864815 511.81142 -L 569.395062 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 522.281173 -L 590.334568 522.281173 -L 579.864815 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 522.281173 -L 590.334568 511.81142 -L 579.864815 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 522.281173 -L 600.804321 522.281173 -L 590.334568 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 522.281173 -L 600.804321 511.81142 -L 590.334568 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 522.281173 -L 611.274074 522.281173 -L 600.804321 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 522.281173 -L 611.274074 511.81142 -L 600.804321 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 522.281173 -L 621.743827 522.281173 -L 611.274074 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 522.281173 -L 621.743827 511.81142 -L 611.274074 511.81142 -z -" style="fill:#0058ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 522.281173 -L 632.21358 522.281173 -L 621.743827 511.81142 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 522.281173 -L 632.21358 511.81142 -L 621.743827 511.81142 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 522.281173 -L 642.683333 522.281173 -L 632.21358 511.81142 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 522.281173 -L 642.683333 511.81142 -L 632.21358 511.81142 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 511.81142 -L 87.78642 511.81142 -L 77.316667 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 511.81142 -L 87.78642 501.341667 -L 77.316667 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 511.81142 -L 98.256173 511.81142 -L 87.78642 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 511.81142 -L 98.256173 501.341667 -L 87.78642 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 511.81142 -L 108.725926 511.81142 -L 98.256173 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 511.81142 -L 108.725926 501.341667 -L 98.256173 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 511.81142 -L 119.195679 511.81142 -L 108.725926 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 511.81142 -L 119.195679 501.341667 -L 108.725926 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 511.81142 -L 129.665432 511.81142 -L 119.195679 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 511.81142 -L 129.665432 501.341667 -L 119.195679 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 511.81142 -L 140.135185 511.81142 -L 129.665432 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 511.81142 -L 140.135185 501.341667 -L 129.665432 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 511.81142 -L 150.604938 511.81142 -L 140.135185 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 511.81142 -L 150.604938 501.341667 -L 140.135185 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 511.81142 -L 161.074691 511.81142 -L 150.604938 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 511.81142 -L 161.074691 501.341667 -L 150.604938 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 511.81142 -L 171.544444 511.81142 -L 161.074691 501.341667 -z -" style="fill:#005cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 511.81142 -L 171.544444 501.341667 -L 161.074691 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 511.81142 -L 182.014198 511.81142 -L 171.544444 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 511.81142 -L 182.014198 501.341667 -L 171.544444 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 511.81142 -L 192.483951 511.81142 -L 182.014198 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 511.81142 -L 192.483951 501.341667 -L 182.014198 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 511.81142 -L 202.953704 511.81142 -L 192.483951 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 511.81142 -L 202.953704 501.341667 -L 192.483951 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 511.81142 -L 213.423457 511.81142 -L 202.953704 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 511.81142 -L 213.423457 501.341667 -L 202.953704 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 511.81142 -L 223.89321 511.81142 -L 213.423457 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 511.81142 -L 223.89321 501.341667 -L 213.423457 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 511.81142 -L 234.362963 511.81142 -L 223.89321 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 511.81142 -L 234.362963 501.341667 -L 223.89321 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 511.81142 -L 244.832716 511.81142 -L 234.362963 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 511.81142 -L 244.832716 501.341667 -L 234.362963 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 511.81142 -L 255.302469 511.81142 -L 244.832716 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 511.81142 -L 255.302469 501.341667 -L 244.832716 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 511.81142 -L 265.772222 511.81142 -L 255.302469 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 511.81142 -L 265.772222 501.341667 -L 255.302469 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 511.81142 -L 276.241975 511.81142 -L 265.772222 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 511.81142 -L 276.241975 501.341667 -L 265.772222 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 511.81142 -L 286.711728 511.81142 -L 276.241975 501.341667 -z -" style="fill:#0060ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 511.81142 -L 286.711728 501.341667 -L 276.241975 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 511.81142 -L 297.181481 511.81142 -L 286.711728 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 511.81142 -L 297.181481 501.341667 -L 286.711728 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 511.81142 -L 307.651235 511.81142 -L 297.181481 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 511.81142 -L 307.651235 501.341667 -L 297.181481 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 511.81142 -L 318.120988 511.81142 -L 307.651235 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 511.81142 -L 318.120988 501.341667 -L 307.651235 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 511.81142 -L 328.590741 511.81142 -L 318.120988 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 511.81142 -L 328.590741 501.341667 -L 318.120988 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 511.81142 -L 339.060494 511.81142 -L 328.590741 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 511.81142 -L 339.060494 501.341667 -L 328.590741 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 511.81142 -L 349.530247 511.81142 -L 339.060494 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 511.81142 -L 349.530247 501.341667 -L 339.060494 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 511.81142 -L 360 511.81142 -L 349.530247 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 511.81142 -L 360 501.341667 -L 349.530247 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 511.81142 -L 370.469753 511.81142 -L 360 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 511.81142 -L 370.469753 501.341667 -L 360 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 511.81142 -L 380.939506 511.81142 -L 370.469753 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 511.81142 -L 380.939506 501.341667 -L 370.469753 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 511.81142 -L 391.409259 511.81142 -L 380.939506 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 511.81142 -L 391.409259 501.341667 -L 380.939506 501.341667 -z -" style="fill:#0064ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 511.81142 -L 401.879012 511.81142 -L 391.409259 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 511.81142 -L 401.879012 501.341667 -L 391.409259 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 511.81142 -L 412.348765 511.81142 -L 401.879012 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 511.81142 -L 412.348765 501.341667 -L 401.879012 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 511.81142 -L 422.818519 511.81142 -L 412.348765 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 511.81142 -L 422.818519 501.341667 -L 412.348765 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 511.81142 -L 433.288272 511.81142 -L 422.818519 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 511.81142 -L 433.288272 501.341667 -L 422.818519 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 511.81142 -L 443.758025 511.81142 -L 433.288272 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 511.81142 -L 443.758025 501.341667 -L 433.288272 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 511.81142 -L 454.227778 511.81142 -L 443.758025 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 511.81142 -L 454.227778 501.341667 -L 443.758025 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 511.81142 -L 464.697531 511.81142 -L 454.227778 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 511.81142 -L 464.697531 501.341667 -L 454.227778 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 511.81142 -L 475.167284 511.81142 -L 464.697531 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 511.81142 -L 475.167284 501.341667 -L 464.697531 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 511.81142 -L 485.637037 511.81142 -L 475.167284 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 511.81142 -L 485.637037 501.341667 -L 475.167284 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 511.81142 -L 496.10679 511.81142 -L 485.637037 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 511.81142 -L 496.10679 501.341667 -L 485.637037 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 511.81142 -L 506.576543 511.81142 -L 496.10679 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 511.81142 -L 506.576543 501.341667 -L 496.10679 501.341667 -z -" style="fill:#0068ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 511.81142 -L 517.046296 511.81142 -L 506.576543 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 511.81142 -L 517.046296 501.341667 -L 506.576543 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 511.81142 -L 527.516049 511.81142 -L 517.046296 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 511.81142 -L 527.516049 501.341667 -L 517.046296 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 511.81142 -L 537.985802 511.81142 -L 527.516049 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 511.81142 -L 537.985802 501.341667 -L 527.516049 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 511.81142 -L 548.455556 511.81142 -L 537.985802 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 511.81142 -L 548.455556 501.341667 -L 537.985802 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 511.81142 -L 558.925309 511.81142 -L 548.455556 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 511.81142 -L 558.925309 501.341667 -L 548.455556 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 511.81142 -L 569.395062 511.81142 -L 558.925309 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 511.81142 -L 569.395062 501.341667 -L 558.925309 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 511.81142 -L 579.864815 511.81142 -L 569.395062 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 511.81142 -L 579.864815 501.341667 -L 569.395062 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 511.81142 -L 590.334568 511.81142 -L 579.864815 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 511.81142 -L 590.334568 501.341667 -L 579.864815 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 511.81142 -L 600.804321 511.81142 -L 590.334568 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 511.81142 -L 600.804321 501.341667 -L 590.334568 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 511.81142 -L 611.274074 511.81142 -L 600.804321 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 511.81142 -L 611.274074 501.341667 -L 600.804321 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 511.81142 -L 621.743827 511.81142 -L 611.274074 501.341667 -z -" style="fill:#006cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 511.81142 -L 621.743827 501.341667 -L 611.274074 501.341667 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 511.81142 -L 632.21358 511.81142 -L 621.743827 501.341667 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 511.81142 -L 632.21358 501.341667 -L 621.743827 501.341667 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 511.81142 -L 642.683333 511.81142 -L 632.21358 501.341667 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 511.81142 -L 642.683333 501.341667 -L 632.21358 501.341667 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 501.341667 -L 87.78642 501.341667 -L 77.316667 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 501.341667 -L 87.78642 490.871914 -L 77.316667 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 501.341667 -L 98.256173 501.341667 -L 87.78642 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 501.341667 -L 98.256173 490.871914 -L 87.78642 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 501.341667 -L 108.725926 501.341667 -L 98.256173 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 501.341667 -L 108.725926 490.871914 -L 98.256173 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 501.341667 -L 119.195679 501.341667 -L 108.725926 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 501.341667 -L 119.195679 490.871914 -L 108.725926 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 501.341667 -L 129.665432 501.341667 -L 119.195679 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 501.341667 -L 129.665432 490.871914 -L 119.195679 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 501.341667 -L 140.135185 501.341667 -L 129.665432 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 501.341667 -L 140.135185 490.871914 -L 129.665432 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 501.341667 -L 150.604938 501.341667 -L 140.135185 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 501.341667 -L 150.604938 490.871914 -L 140.135185 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 501.341667 -L 161.074691 501.341667 -L 150.604938 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 501.341667 -L 161.074691 490.871914 -L 150.604938 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 501.341667 -L 171.544444 501.341667 -L 161.074691 490.871914 -z -" style="fill:#0070ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 501.341667 -L 171.544444 490.871914 -L 161.074691 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 501.341667 -L 182.014198 501.341667 -L 171.544444 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 501.341667 -L 182.014198 490.871914 -L 171.544444 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 501.341667 -L 192.483951 501.341667 -L 182.014198 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 501.341667 -L 192.483951 490.871914 -L 182.014198 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 501.341667 -L 202.953704 501.341667 -L 192.483951 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 501.341667 -L 202.953704 490.871914 -L 192.483951 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 501.341667 -L 213.423457 501.341667 -L 202.953704 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 501.341667 -L 213.423457 490.871914 -L 202.953704 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 501.341667 -L 223.89321 501.341667 -L 213.423457 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 501.341667 -L 223.89321 490.871914 -L 213.423457 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 501.341667 -L 234.362963 501.341667 -L 223.89321 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 501.341667 -L 234.362963 490.871914 -L 223.89321 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 501.341667 -L 244.832716 501.341667 -L 234.362963 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 501.341667 -L 244.832716 490.871914 -L 234.362963 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 501.341667 -L 255.302469 501.341667 -L 244.832716 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 501.341667 -L 255.302469 490.871914 -L 244.832716 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 501.341667 -L 265.772222 501.341667 -L 255.302469 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 501.341667 -L 265.772222 490.871914 -L 255.302469 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 501.341667 -L 276.241975 501.341667 -L 265.772222 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 501.341667 -L 276.241975 490.871914 -L 265.772222 490.871914 -z -" style="fill:#0074ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 501.341667 -L 286.711728 501.341667 -L 276.241975 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 501.341667 -L 286.711728 490.871914 -L 276.241975 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 501.341667 -L 297.181481 501.341667 -L 286.711728 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 501.341667 -L 297.181481 490.871914 -L 286.711728 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 501.341667 -L 307.651235 501.341667 -L 297.181481 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 501.341667 -L 307.651235 490.871914 -L 297.181481 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 501.341667 -L 318.120988 501.341667 -L 307.651235 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 501.341667 -L 318.120988 490.871914 -L 307.651235 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 501.341667 -L 328.590741 501.341667 -L 318.120988 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 501.341667 -L 328.590741 490.871914 -L 318.120988 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 501.341667 -L 339.060494 501.341667 -L 328.590741 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 501.341667 -L 339.060494 490.871914 -L 328.590741 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 501.341667 -L 349.530247 501.341667 -L 339.060494 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 501.341667 -L 349.530247 490.871914 -L 339.060494 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 501.341667 -L 360 501.341667 -L 349.530247 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 501.341667 -L 360 490.871914 -L 349.530247 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 501.341667 -L 370.469753 501.341667 -L 360 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 501.341667 -L 370.469753 490.871914 -L 360 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 501.341667 -L 380.939506 501.341667 -L 370.469753 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 501.341667 -L 380.939506 490.871914 -L 370.469753 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 501.341667 -L 391.409259 501.341667 -L 380.939506 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 501.341667 -L 391.409259 490.871914 -L 380.939506 490.871914 -z -" style="fill:#0078ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 501.341667 -L 401.879012 501.341667 -L 391.409259 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 501.341667 -L 401.879012 490.871914 -L 391.409259 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 501.341667 -L 412.348765 501.341667 -L 401.879012 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 501.341667 -L 412.348765 490.871914 -L 401.879012 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 501.341667 -L 422.818519 501.341667 -L 412.348765 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 501.341667 -L 422.818519 490.871914 -L 412.348765 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 501.341667 -L 433.288272 501.341667 -L 422.818519 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 501.341667 -L 433.288272 490.871914 -L 422.818519 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 501.341667 -L 443.758025 501.341667 -L 433.288272 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 501.341667 -L 443.758025 490.871914 -L 433.288272 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 501.341667 -L 454.227778 501.341667 -L 443.758025 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 501.341667 -L 454.227778 490.871914 -L 443.758025 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 501.341667 -L 464.697531 501.341667 -L 454.227778 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 501.341667 -L 464.697531 490.871914 -L 454.227778 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 501.341667 -L 475.167284 501.341667 -L 464.697531 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 501.341667 -L 475.167284 490.871914 -L 464.697531 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 501.341667 -L 485.637037 501.341667 -L 475.167284 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 501.341667 -L 485.637037 490.871914 -L 475.167284 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 501.341667 -L 496.10679 501.341667 -L 485.637037 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 501.341667 -L 496.10679 490.871914 -L 485.637037 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 501.341667 -L 506.576543 501.341667 -L 496.10679 490.871914 -z -" style="fill:#007cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 501.341667 -L 506.576543 490.871914 -L 496.10679 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 501.341667 -L 517.046296 501.341667 -L 506.576543 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 501.341667 -L 517.046296 490.871914 -L 506.576543 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 501.341667 -L 527.516049 501.341667 -L 517.046296 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 501.341667 -L 527.516049 490.871914 -L 517.046296 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 501.341667 -L 537.985802 501.341667 -L 527.516049 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 501.341667 -L 537.985802 490.871914 -L 527.516049 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 501.341667 -L 548.455556 501.341667 -L 537.985802 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 501.341667 -L 548.455556 490.871914 -L 537.985802 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 501.341667 -L 558.925309 501.341667 -L 548.455556 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 501.341667 -L 558.925309 490.871914 -L 548.455556 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 501.341667 -L 569.395062 501.341667 -L 558.925309 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 501.341667 -L 569.395062 490.871914 -L 558.925309 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 501.341667 -L 579.864815 501.341667 -L 569.395062 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 501.341667 -L 579.864815 490.871914 -L 569.395062 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 501.341667 -L 590.334568 501.341667 -L 579.864815 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 501.341667 -L 590.334568 490.871914 -L 579.864815 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 501.341667 -L 600.804321 501.341667 -L 590.334568 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 501.341667 -L 600.804321 490.871914 -L 590.334568 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 501.341667 -L 611.274074 501.341667 -L 600.804321 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 501.341667 -L 611.274074 490.871914 -L 600.804321 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 501.341667 -L 621.743827 501.341667 -L 611.274074 490.871914 -z -" style="fill:#0080ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 501.341667 -L 621.743827 490.871914 -L 611.274074 490.871914 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 501.341667 -L 632.21358 501.341667 -L 621.743827 490.871914 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 501.341667 -L 632.21358 490.871914 -L 621.743827 490.871914 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 501.341667 -L 642.683333 501.341667 -L 632.21358 490.871914 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 501.341667 -L 642.683333 490.871914 -L 632.21358 490.871914 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 490.871914 -L 87.78642 490.871914 -L 77.316667 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 490.871914 -L 87.78642 480.40216 -L 77.316667 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 490.871914 -L 98.256173 490.871914 -L 87.78642 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 490.871914 -L 98.256173 480.40216 -L 87.78642 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 490.871914 -L 108.725926 490.871914 -L 98.256173 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 490.871914 -L 108.725926 480.40216 -L 98.256173 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 490.871914 -L 119.195679 490.871914 -L 108.725926 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 490.871914 -L 119.195679 480.40216 -L 108.725926 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 490.871914 -L 129.665432 490.871914 -L 119.195679 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 490.871914 -L 129.665432 480.40216 -L 119.195679 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 490.871914 -L 140.135185 490.871914 -L 129.665432 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 490.871914 -L 140.135185 480.40216 -L 129.665432 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 490.871914 -L 150.604938 490.871914 -L 140.135185 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 490.871914 -L 150.604938 480.40216 -L 140.135185 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 490.871914 -L 161.074691 490.871914 -L 150.604938 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 490.871914 -L 161.074691 480.40216 -L 150.604938 480.40216 -z -" style="fill:#0084ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 490.871914 -L 171.544444 490.871914 -L 161.074691 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 490.871914 -L 171.544444 480.40216 -L 161.074691 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 490.871914 -L 182.014198 490.871914 -L 171.544444 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 490.871914 -L 182.014198 480.40216 -L 171.544444 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 490.871914 -L 192.483951 490.871914 -L 182.014198 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 490.871914 -L 192.483951 480.40216 -L 182.014198 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 490.871914 -L 202.953704 490.871914 -L 192.483951 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 490.871914 -L 202.953704 480.40216 -L 192.483951 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 490.871914 -L 213.423457 490.871914 -L 202.953704 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 490.871914 -L 213.423457 480.40216 -L 202.953704 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 490.871914 -L 223.89321 490.871914 -L 213.423457 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 490.871914 -L 223.89321 480.40216 -L 213.423457 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 490.871914 -L 234.362963 490.871914 -L 223.89321 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 490.871914 -L 234.362963 480.40216 -L 223.89321 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 490.871914 -L 244.832716 490.871914 -L 234.362963 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 490.871914 -L 244.832716 480.40216 -L 234.362963 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 490.871914 -L 255.302469 490.871914 -L 244.832716 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 490.871914 -L 255.302469 480.40216 -L 244.832716 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 490.871914 -L 265.772222 490.871914 -L 255.302469 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 490.871914 -L 265.772222 480.40216 -L 255.302469 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 490.871914 -L 276.241975 490.871914 -L 265.772222 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 490.871914 -L 276.241975 480.40216 -L 265.772222 480.40216 -z -" style="fill:#0088ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 490.871914 -L 286.711728 490.871914 -L 276.241975 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 490.871914 -L 286.711728 480.40216 -L 276.241975 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 490.871914 -L 297.181481 490.871914 -L 286.711728 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 490.871914 -L 297.181481 480.40216 -L 286.711728 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 490.871914 -L 307.651235 490.871914 -L 297.181481 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 490.871914 -L 307.651235 480.40216 -L 297.181481 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 490.871914 -L 318.120988 490.871914 -L 307.651235 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 490.871914 -L 318.120988 480.40216 -L 307.651235 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 490.871914 -L 328.590741 490.871914 -L 318.120988 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 490.871914 -L 328.590741 480.40216 -L 318.120988 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 490.871914 -L 339.060494 490.871914 -L 328.590741 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 490.871914 -L 339.060494 480.40216 -L 328.590741 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 490.871914 -L 349.530247 490.871914 -L 339.060494 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 490.871914 -L 349.530247 480.40216 -L 339.060494 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 490.871914 -L 360 490.871914 -L 349.530247 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 490.871914 -L 360 480.40216 -L 349.530247 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 490.871914 -L 370.469753 490.871914 -L 360 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 490.871914 -L 370.469753 480.40216 -L 360 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 490.871914 -L 380.939506 490.871914 -L 370.469753 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 490.871914 -L 380.939506 480.40216 -L 370.469753 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 490.871914 -L 391.409259 490.871914 -L 380.939506 480.40216 -z -" style="fill:#008cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 490.871914 -L 391.409259 480.40216 -L 380.939506 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 490.871914 -L 401.879012 490.871914 -L 391.409259 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 490.871914 -L 401.879012 480.40216 -L 391.409259 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 490.871914 -L 412.348765 490.871914 -L 401.879012 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 490.871914 -L 412.348765 480.40216 -L 401.879012 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 490.871914 -L 422.818519 490.871914 -L 412.348765 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 490.871914 -L 422.818519 480.40216 -L 412.348765 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 490.871914 -L 433.288272 490.871914 -L 422.818519 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 490.871914 -L 433.288272 480.40216 -L 422.818519 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 490.871914 -L 443.758025 490.871914 -L 433.288272 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 490.871914 -L 443.758025 480.40216 -L 433.288272 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 490.871914 -L 454.227778 490.871914 -L 443.758025 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 490.871914 -L 454.227778 480.40216 -L 443.758025 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 490.871914 -L 464.697531 490.871914 -L 454.227778 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 490.871914 -L 464.697531 480.40216 -L 454.227778 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 490.871914 -L 475.167284 490.871914 -L 464.697531 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 490.871914 -L 475.167284 480.40216 -L 464.697531 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 490.871914 -L 485.637037 490.871914 -L 475.167284 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 490.871914 -L 485.637037 480.40216 -L 475.167284 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 490.871914 -L 496.10679 490.871914 -L 485.637037 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 490.871914 -L 496.10679 480.40216 -L 485.637037 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 490.871914 -L 506.576543 490.871914 -L 496.10679 480.40216 -z -" style="fill:#0090ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 490.871914 -L 506.576543 480.40216 -L 496.10679 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 490.871914 -L 517.046296 490.871914 -L 506.576543 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 490.871914 -L 517.046296 480.40216 -L 506.576543 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 490.871914 -L 527.516049 490.871914 -L 517.046296 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 490.871914 -L 527.516049 480.40216 -L 517.046296 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 490.871914 -L 537.985802 490.871914 -L 527.516049 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 490.871914 -L 537.985802 480.40216 -L 527.516049 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 490.871914 -L 548.455556 490.871914 -L 537.985802 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 490.871914 -L 548.455556 480.40216 -L 537.985802 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 490.871914 -L 558.925309 490.871914 -L 548.455556 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 490.871914 -L 558.925309 480.40216 -L 548.455556 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 490.871914 -L 569.395062 490.871914 -L 558.925309 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 490.871914 -L 569.395062 480.40216 -L 558.925309 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 490.871914 -L 579.864815 490.871914 -L 569.395062 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 490.871914 -L 579.864815 480.40216 -L 569.395062 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 490.871914 -L 590.334568 490.871914 -L 579.864815 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 490.871914 -L 590.334568 480.40216 -L 579.864815 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 490.871914 -L 600.804321 490.871914 -L 590.334568 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 490.871914 -L 600.804321 480.40216 -L 590.334568 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 490.871914 -L 611.274074 490.871914 -L 600.804321 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 490.871914 -L 611.274074 480.40216 -L 600.804321 480.40216 -z -" style="fill:#0094ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 490.871914 -L 621.743827 490.871914 -L 611.274074 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 490.871914 -L 621.743827 480.40216 -L 611.274074 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 490.871914 -L 632.21358 490.871914 -L 621.743827 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 490.871914 -L 632.21358 480.40216 -L 621.743827 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 490.871914 -L 642.683333 490.871914 -L 632.21358 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 490.871914 -L 642.683333 480.40216 -L 632.21358 480.40216 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 480.40216 -L 87.78642 480.40216 -L 77.316667 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 480.40216 -L 87.78642 469.932407 -L 77.316667 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 480.40216 -L 98.256173 480.40216 -L 87.78642 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 480.40216 -L 98.256173 469.932407 -L 87.78642 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 480.40216 -L 108.725926 480.40216 -L 98.256173 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 480.40216 -L 108.725926 469.932407 -L 98.256173 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 480.40216 -L 119.195679 480.40216 -L 108.725926 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 480.40216 -L 119.195679 469.932407 -L 108.725926 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 480.40216 -L 129.665432 480.40216 -L 119.195679 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 480.40216 -L 129.665432 469.932407 -L 119.195679 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 480.40216 -L 140.135185 480.40216 -L 129.665432 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 480.40216 -L 140.135185 469.932407 -L 129.665432 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 480.40216 -L 150.604938 480.40216 -L 140.135185 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 480.40216 -L 150.604938 469.932407 -L 140.135185 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 480.40216 -L 161.074691 480.40216 -L 150.604938 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 480.40216 -L 161.074691 469.932407 -L 150.604938 469.932407 -z -" style="fill:#0098ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 480.40216 -L 171.544444 480.40216 -L 161.074691 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 480.40216 -L 171.544444 469.932407 -L 161.074691 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 480.40216 -L 182.014198 480.40216 -L 171.544444 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 480.40216 -L 182.014198 469.932407 -L 171.544444 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 480.40216 -L 192.483951 480.40216 -L 182.014198 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 480.40216 -L 192.483951 469.932407 -L 182.014198 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 480.40216 -L 202.953704 480.40216 -L 192.483951 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 480.40216 -L 202.953704 469.932407 -L 192.483951 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 480.40216 -L 213.423457 480.40216 -L 202.953704 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 480.40216 -L 213.423457 469.932407 -L 202.953704 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 480.40216 -L 223.89321 480.40216 -L 213.423457 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 480.40216 -L 223.89321 469.932407 -L 213.423457 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 480.40216 -L 234.362963 480.40216 -L 223.89321 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 480.40216 -L 234.362963 469.932407 -L 223.89321 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 480.40216 -L 244.832716 480.40216 -L 234.362963 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 480.40216 -L 244.832716 469.932407 -L 234.362963 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 480.40216 -L 255.302469 480.40216 -L 244.832716 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 480.40216 -L 255.302469 469.932407 -L 244.832716 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 480.40216 -L 265.772222 480.40216 -L 255.302469 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 480.40216 -L 265.772222 469.932407 -L 255.302469 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 480.40216 -L 276.241975 480.40216 -L 265.772222 469.932407 -z -" style="fill:#009cff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 480.40216 -L 276.241975 469.932407 -L 265.772222 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 480.40216 -L 286.711728 480.40216 -L 276.241975 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 480.40216 -L 286.711728 469.932407 -L 276.241975 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 480.40216 -L 297.181481 480.40216 -L 286.711728 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 480.40216 -L 297.181481 469.932407 -L 286.711728 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 480.40216 -L 307.651235 480.40216 -L 297.181481 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 480.40216 -L 307.651235 469.932407 -L 297.181481 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 480.40216 -L 318.120988 480.40216 -L 307.651235 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 480.40216 -L 318.120988 469.932407 -L 307.651235 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 480.40216 -L 328.590741 480.40216 -L 318.120988 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 480.40216 -L 328.590741 469.932407 -L 318.120988 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 480.40216 -L 339.060494 480.40216 -L 328.590741 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 480.40216 -L 339.060494 469.932407 -L 328.590741 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 480.40216 -L 349.530247 480.40216 -L 339.060494 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 480.40216 -L 349.530247 469.932407 -L 339.060494 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 480.40216 -L 360 480.40216 -L 349.530247 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 480.40216 -L 360 469.932407 -L 349.530247 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 480.40216 -L 370.469753 480.40216 -L 360 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 480.40216 -L 370.469753 469.932407 -L 360 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 480.40216 -L 380.939506 480.40216 -L 370.469753 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 480.40216 -L 380.939506 469.932407 -L 370.469753 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 480.40216 -L 391.409259 480.40216 -L 380.939506 469.932407 -z -" style="fill:#00a0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 480.40216 -L 391.409259 469.932407 -L 380.939506 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 480.40216 -L 401.879012 480.40216 -L 391.409259 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 480.40216 -L 401.879012 469.932407 -L 391.409259 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 480.40216 -L 412.348765 480.40216 -L 401.879012 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 480.40216 -L 412.348765 469.932407 -L 401.879012 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 480.40216 -L 422.818519 480.40216 -L 412.348765 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 480.40216 -L 422.818519 469.932407 -L 412.348765 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 480.40216 -L 433.288272 480.40216 -L 422.818519 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 480.40216 -L 433.288272 469.932407 -L 422.818519 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 480.40216 -L 443.758025 480.40216 -L 433.288272 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 480.40216 -L 443.758025 469.932407 -L 433.288272 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 480.40216 -L 454.227778 480.40216 -L 443.758025 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 480.40216 -L 454.227778 469.932407 -L 443.758025 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 480.40216 -L 464.697531 480.40216 -L 454.227778 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 480.40216 -L 464.697531 469.932407 -L 454.227778 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 480.40216 -L 475.167284 480.40216 -L 464.697531 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 480.40216 -L 475.167284 469.932407 -L 464.697531 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 480.40216 -L 485.637037 480.40216 -L 475.167284 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 480.40216 -L 485.637037 469.932407 -L 475.167284 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 480.40216 -L 496.10679 480.40216 -L 485.637037 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 480.40216 -L 496.10679 469.932407 -L 485.637037 469.932407 -z -" style="fill:#00a4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 480.40216 -L 506.576543 480.40216 -L 496.10679 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 480.40216 -L 506.576543 469.932407 -L 496.10679 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 480.40216 -L 517.046296 480.40216 -L 506.576543 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 480.40216 -L 517.046296 469.932407 -L 506.576543 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 480.40216 -L 527.516049 480.40216 -L 517.046296 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 480.40216 -L 527.516049 469.932407 -L 517.046296 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 480.40216 -L 537.985802 480.40216 -L 527.516049 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 480.40216 -L 537.985802 469.932407 -L 527.516049 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 480.40216 -L 548.455556 480.40216 -L 537.985802 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 480.40216 -L 548.455556 469.932407 -L 537.985802 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 480.40216 -L 558.925309 480.40216 -L 548.455556 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 480.40216 -L 558.925309 469.932407 -L 548.455556 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 480.40216 -L 569.395062 480.40216 -L 558.925309 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 480.40216 -L 569.395062 469.932407 -L 558.925309 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 480.40216 -L 579.864815 480.40216 -L 569.395062 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 480.40216 -L 579.864815 469.932407 -L 569.395062 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 480.40216 -L 590.334568 480.40216 -L 579.864815 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 480.40216 -L 590.334568 469.932407 -L 579.864815 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 480.40216 -L 600.804321 480.40216 -L 590.334568 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 480.40216 -L 600.804321 469.932407 -L 590.334568 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 480.40216 -L 611.274074 480.40216 -L 600.804321 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 480.40216 -L 611.274074 469.932407 -L 600.804321 469.932407 -z -" style="fill:#00a8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 480.40216 -L 621.743827 480.40216 -L 611.274074 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 480.40216 -L 621.743827 469.932407 -L 611.274074 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 480.40216 -L 632.21358 480.40216 -L 621.743827 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 480.40216 -L 632.21358 469.932407 -L 621.743827 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 480.40216 -L 642.683333 480.40216 -L 632.21358 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 480.40216 -L 642.683333 469.932407 -L 632.21358 469.932407 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 469.932407 -L 87.78642 469.932407 -L 77.316667 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 469.932407 -L 87.78642 459.462654 -L 77.316667 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 469.932407 -L 98.256173 469.932407 -L 87.78642 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 469.932407 -L 98.256173 459.462654 -L 87.78642 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 469.932407 -L 108.725926 469.932407 -L 98.256173 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 469.932407 -L 108.725926 459.462654 -L 98.256173 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 469.932407 -L 119.195679 469.932407 -L 108.725926 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 469.932407 -L 119.195679 459.462654 -L 108.725926 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 469.932407 -L 129.665432 469.932407 -L 119.195679 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 469.932407 -L 129.665432 459.462654 -L 119.195679 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 469.932407 -L 140.135185 469.932407 -L 129.665432 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 469.932407 -L 140.135185 459.462654 -L 129.665432 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 469.932407 -L 150.604938 469.932407 -L 140.135185 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 469.932407 -L 150.604938 459.462654 -L 140.135185 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 469.932407 -L 161.074691 469.932407 -L 150.604938 459.462654 -z -" style="fill:#00acff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 469.932407 -L 161.074691 459.462654 -L 150.604938 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 469.932407 -L 171.544444 469.932407 -L 161.074691 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 469.932407 -L 171.544444 459.462654 -L 161.074691 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 469.932407 -L 182.014198 469.932407 -L 171.544444 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 469.932407 -L 182.014198 459.462654 -L 171.544444 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 469.932407 -L 192.483951 469.932407 -L 182.014198 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 469.932407 -L 192.483951 459.462654 -L 182.014198 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 469.932407 -L 202.953704 469.932407 -L 192.483951 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 469.932407 -L 202.953704 459.462654 -L 192.483951 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 469.932407 -L 213.423457 469.932407 -L 202.953704 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 469.932407 -L 213.423457 459.462654 -L 202.953704 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 469.932407 -L 223.89321 469.932407 -L 213.423457 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 469.932407 -L 223.89321 459.462654 -L 213.423457 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 469.932407 -L 234.362963 469.932407 -L 223.89321 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 469.932407 -L 234.362963 459.462654 -L 223.89321 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 469.932407 -L 244.832716 469.932407 -L 234.362963 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 469.932407 -L 244.832716 459.462654 -L 234.362963 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 469.932407 -L 255.302469 469.932407 -L 244.832716 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 469.932407 -L 255.302469 459.462654 -L 244.832716 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 469.932407 -L 265.772222 469.932407 -L 255.302469 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 469.932407 -L 265.772222 459.462654 -L 255.302469 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 469.932407 -L 276.241975 469.932407 -L 265.772222 459.462654 -z -" style="fill:#00b0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 469.932407 -L 276.241975 459.462654 -L 265.772222 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 469.932407 -L 286.711728 469.932407 -L 276.241975 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 469.932407 -L 286.711728 459.462654 -L 276.241975 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 469.932407 -L 297.181481 469.932407 -L 286.711728 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 469.932407 -L 297.181481 459.462654 -L 286.711728 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 469.932407 -L 307.651235 469.932407 -L 297.181481 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 469.932407 -L 307.651235 459.462654 -L 297.181481 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 469.932407 -L 318.120988 469.932407 -L 307.651235 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 469.932407 -L 318.120988 459.462654 -L 307.651235 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 469.932407 -L 328.590741 469.932407 -L 318.120988 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 469.932407 -L 328.590741 459.462654 -L 318.120988 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 469.932407 -L 339.060494 469.932407 -L 328.590741 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 469.932407 -L 339.060494 459.462654 -L 328.590741 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 469.932407 -L 349.530247 469.932407 -L 339.060494 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 469.932407 -L 349.530247 459.462654 -L 339.060494 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 469.932407 -L 360 469.932407 -L 349.530247 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 469.932407 -L 360 459.462654 -L 349.530247 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 469.932407 -L 370.469753 469.932407 -L 360 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 469.932407 -L 370.469753 459.462654 -L 360 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 469.932407 -L 380.939506 469.932407 -L 370.469753 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 469.932407 -L 380.939506 459.462654 -L 370.469753 459.462654 -z -" style="fill:#00b4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 469.932407 -L 391.409259 469.932407 -L 380.939506 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 469.932407 -L 391.409259 459.462654 -L 380.939506 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 469.932407 -L 401.879012 469.932407 -L 391.409259 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 469.932407 -L 401.879012 459.462654 -L 391.409259 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 469.932407 -L 412.348765 469.932407 -L 401.879012 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 469.932407 -L 412.348765 459.462654 -L 401.879012 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 469.932407 -L 422.818519 469.932407 -L 412.348765 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 469.932407 -L 422.818519 459.462654 -L 412.348765 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 469.932407 -L 433.288272 469.932407 -L 422.818519 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 469.932407 -L 433.288272 459.462654 -L 422.818519 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 469.932407 -L 443.758025 469.932407 -L 433.288272 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 469.932407 -L 443.758025 459.462654 -L 433.288272 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 469.932407 -L 454.227778 469.932407 -L 443.758025 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 469.932407 -L 454.227778 459.462654 -L 443.758025 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 469.932407 -L 464.697531 469.932407 -L 454.227778 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 469.932407 -L 464.697531 459.462654 -L 454.227778 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 469.932407 -L 475.167284 469.932407 -L 464.697531 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 469.932407 -L 475.167284 459.462654 -L 464.697531 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 469.932407 -L 485.637037 469.932407 -L 475.167284 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 469.932407 -L 485.637037 459.462654 -L 475.167284 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 469.932407 -L 496.10679 469.932407 -L 485.637037 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 469.932407 -L 496.10679 459.462654 -L 485.637037 459.462654 -z -" style="fill:#00b8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 469.932407 -L 506.576543 469.932407 -L 496.10679 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 469.932407 -L 506.576543 459.462654 -L 496.10679 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 469.932407 -L 517.046296 469.932407 -L 506.576543 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 469.932407 -L 517.046296 459.462654 -L 506.576543 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 469.932407 -L 527.516049 469.932407 -L 517.046296 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 469.932407 -L 527.516049 459.462654 -L 517.046296 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 469.932407 -L 537.985802 469.932407 -L 527.516049 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 469.932407 -L 537.985802 459.462654 -L 527.516049 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 469.932407 -L 548.455556 469.932407 -L 537.985802 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 469.932407 -L 548.455556 459.462654 -L 537.985802 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 469.932407 -L 558.925309 469.932407 -L 548.455556 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 469.932407 -L 558.925309 459.462654 -L 548.455556 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 469.932407 -L 569.395062 469.932407 -L 558.925309 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 469.932407 -L 569.395062 459.462654 -L 558.925309 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 469.932407 -L 579.864815 469.932407 -L 569.395062 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 469.932407 -L 579.864815 459.462654 -L 569.395062 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 469.932407 -L 590.334568 469.932407 -L 579.864815 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 469.932407 -L 590.334568 459.462654 -L 579.864815 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 469.932407 -L 600.804321 469.932407 -L 590.334568 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 469.932407 -L 600.804321 459.462654 -L 590.334568 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 469.932407 -L 611.274074 469.932407 -L 600.804321 459.462654 -z -" style="fill:#00bcff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 469.932407 -L 611.274074 459.462654 -L 600.804321 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 469.932407 -L 621.743827 469.932407 -L 611.274074 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 469.932407 -L 621.743827 459.462654 -L 611.274074 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 469.932407 -L 632.21358 469.932407 -L 621.743827 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 469.932407 -L 632.21358 459.462654 -L 621.743827 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 469.932407 -L 642.683333 469.932407 -L 632.21358 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 469.932407 -L 642.683333 459.462654 -L 632.21358 459.462654 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 459.462654 -L 87.78642 459.462654 -L 77.316667 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 459.462654 -L 87.78642 448.992901 -L 77.316667 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 459.462654 -L 98.256173 459.462654 -L 87.78642 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 459.462654 -L 98.256173 448.992901 -L 87.78642 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 459.462654 -L 108.725926 459.462654 -L 98.256173 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 459.462654 -L 108.725926 448.992901 -L 98.256173 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 459.462654 -L 119.195679 459.462654 -L 108.725926 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 459.462654 -L 119.195679 448.992901 -L 108.725926 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 459.462654 -L 129.665432 459.462654 -L 119.195679 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 459.462654 -L 129.665432 448.992901 -L 119.195679 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 459.462654 -L 140.135185 459.462654 -L 129.665432 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 459.462654 -L 140.135185 448.992901 -L 129.665432 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 459.462654 -L 150.604938 459.462654 -L 140.135185 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 459.462654 -L 150.604938 448.992901 -L 140.135185 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 459.462654 -L 161.074691 459.462654 -L 150.604938 448.992901 -z -" style="fill:#00c0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 459.462654 -L 161.074691 448.992901 -L 150.604938 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 459.462654 -L 171.544444 459.462654 -L 161.074691 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 459.462654 -L 171.544444 448.992901 -L 161.074691 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 459.462654 -L 182.014198 459.462654 -L 171.544444 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 459.462654 -L 182.014198 448.992901 -L 171.544444 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 459.462654 -L 192.483951 459.462654 -L 182.014198 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 459.462654 -L 192.483951 448.992901 -L 182.014198 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 459.462654 -L 202.953704 459.462654 -L 192.483951 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 459.462654 -L 202.953704 448.992901 -L 192.483951 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 459.462654 -L 213.423457 459.462654 -L 202.953704 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 459.462654 -L 213.423457 448.992901 -L 202.953704 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 459.462654 -L 223.89321 459.462654 -L 213.423457 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 459.462654 -L 223.89321 448.992901 -L 213.423457 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 459.462654 -L 234.362963 459.462654 -L 223.89321 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 459.462654 -L 234.362963 448.992901 -L 223.89321 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 459.462654 -L 244.832716 459.462654 -L 234.362963 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 459.462654 -L 244.832716 448.992901 -L 234.362963 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 459.462654 -L 255.302469 459.462654 -L 244.832716 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 459.462654 -L 255.302469 448.992901 -L 244.832716 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 459.462654 -L 265.772222 459.462654 -L 255.302469 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 459.462654 -L 265.772222 448.992901 -L 255.302469 448.992901 -z -" style="fill:#00c4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 459.462654 -L 276.241975 459.462654 -L 265.772222 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 459.462654 -L 276.241975 448.992901 -L 265.772222 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 459.462654 -L 286.711728 459.462654 -L 276.241975 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 459.462654 -L 286.711728 448.992901 -L 276.241975 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 459.462654 -L 297.181481 459.462654 -L 286.711728 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 459.462654 -L 297.181481 448.992901 -L 286.711728 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 459.462654 -L 307.651235 459.462654 -L 297.181481 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 459.462654 -L 307.651235 448.992901 -L 297.181481 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 459.462654 -L 318.120988 459.462654 -L 307.651235 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 459.462654 -L 318.120988 448.992901 -L 307.651235 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 459.462654 -L 328.590741 459.462654 -L 318.120988 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 459.462654 -L 328.590741 448.992901 -L 318.120988 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 459.462654 -L 339.060494 459.462654 -L 328.590741 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 459.462654 -L 339.060494 448.992901 -L 328.590741 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 459.462654 -L 349.530247 459.462654 -L 339.060494 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 459.462654 -L 349.530247 448.992901 -L 339.060494 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 459.462654 -L 360 459.462654 -L 349.530247 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 459.462654 -L 360 448.992901 -L 349.530247 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 459.462654 -L 370.469753 459.462654 -L 360 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 459.462654 -L 370.469753 448.992901 -L 360 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 459.462654 -L 380.939506 459.462654 -L 370.469753 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 459.462654 -L 380.939506 448.992901 -L 370.469753 448.992901 -z -" style="fill:#00c8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 459.462654 -L 391.409259 459.462654 -L 380.939506 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 459.462654 -L 391.409259 448.992901 -L 380.939506 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 459.462654 -L 401.879012 459.462654 -L 391.409259 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 459.462654 -L 401.879012 448.992901 -L 391.409259 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 459.462654 -L 412.348765 459.462654 -L 401.879012 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 459.462654 -L 412.348765 448.992901 -L 401.879012 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 459.462654 -L 422.818519 459.462654 -L 412.348765 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 459.462654 -L 422.818519 448.992901 -L 412.348765 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 459.462654 -L 433.288272 459.462654 -L 422.818519 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 459.462654 -L 433.288272 448.992901 -L 422.818519 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 459.462654 -L 443.758025 459.462654 -L 433.288272 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 459.462654 -L 443.758025 448.992901 -L 433.288272 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 459.462654 -L 454.227778 459.462654 -L 443.758025 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 459.462654 -L 454.227778 448.992901 -L 443.758025 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 459.462654 -L 464.697531 459.462654 -L 454.227778 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 459.462654 -L 464.697531 448.992901 -L 454.227778 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 459.462654 -L 475.167284 459.462654 -L 464.697531 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 459.462654 -L 475.167284 448.992901 -L 464.697531 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 459.462654 -L 485.637037 459.462654 -L 475.167284 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 459.462654 -L 485.637037 448.992901 -L 475.167284 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 459.462654 -L 496.10679 459.462654 -L 485.637037 448.992901 -z -" style="fill:#00ccff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 459.462654 -L 496.10679 448.992901 -L 485.637037 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 459.462654 -L 506.576543 459.462654 -L 496.10679 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 459.462654 -L 506.576543 448.992901 -L 496.10679 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 459.462654 -L 517.046296 459.462654 -L 506.576543 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 459.462654 -L 517.046296 448.992901 -L 506.576543 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 459.462654 -L 527.516049 459.462654 -L 517.046296 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 459.462654 -L 527.516049 448.992901 -L 517.046296 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 459.462654 -L 537.985802 459.462654 -L 527.516049 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 459.462654 -L 537.985802 448.992901 -L 527.516049 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 459.462654 -L 548.455556 459.462654 -L 537.985802 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 459.462654 -L 548.455556 448.992901 -L 537.985802 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 459.462654 -L 558.925309 459.462654 -L 548.455556 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 459.462654 -L 558.925309 448.992901 -L 548.455556 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 459.462654 -L 569.395062 459.462654 -L 558.925309 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 459.462654 -L 569.395062 448.992901 -L 558.925309 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 459.462654 -L 579.864815 459.462654 -L 569.395062 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 459.462654 -L 579.864815 448.992901 -L 569.395062 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 459.462654 -L 590.334568 459.462654 -L 579.864815 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 459.462654 -L 590.334568 448.992901 -L 579.864815 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 459.462654 -L 600.804321 459.462654 -L 590.334568 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 459.462654 -L 600.804321 448.992901 -L 590.334568 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 459.462654 -L 611.274074 459.462654 -L 600.804321 448.992901 -z -" style="fill:#00d0ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 459.462654 -L 611.274074 448.992901 -L 600.804321 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 459.462654 -L 621.743827 459.462654 -L 611.274074 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 459.462654 -L 621.743827 448.992901 -L 611.274074 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 459.462654 -L 632.21358 459.462654 -L 621.743827 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 459.462654 -L 632.21358 448.992901 -L 621.743827 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 459.462654 -L 642.683333 459.462654 -L 632.21358 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 459.462654 -L 642.683333 448.992901 -L 632.21358 448.992901 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 448.992901 -L 87.78642 448.992901 -L 77.316667 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 448.992901 -L 87.78642 438.523148 -L 77.316667 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 448.992901 -L 98.256173 448.992901 -L 87.78642 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 448.992901 -L 98.256173 438.523148 -L 87.78642 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 448.992901 -L 108.725926 448.992901 -L 98.256173 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 448.992901 -L 108.725926 438.523148 -L 98.256173 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 448.992901 -L 119.195679 448.992901 -L 108.725926 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 448.992901 -L 119.195679 438.523148 -L 108.725926 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 448.992901 -L 129.665432 448.992901 -L 119.195679 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 448.992901 -L 129.665432 438.523148 -L 119.195679 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 448.992901 -L 140.135185 448.992901 -L 129.665432 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 448.992901 -L 140.135185 438.523148 -L 129.665432 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 448.992901 -L 150.604938 448.992901 -L 140.135185 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 448.992901 -L 150.604938 438.523148 -L 140.135185 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 448.992901 -L 161.074691 448.992901 -L 150.604938 438.523148 -z -" style="fill:#00d4ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 448.992901 -L 161.074691 438.523148 -L 150.604938 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 448.992901 -L 171.544444 448.992901 -L 161.074691 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 448.992901 -L 171.544444 438.523148 -L 161.074691 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 448.992901 -L 182.014198 448.992901 -L 171.544444 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 448.992901 -L 182.014198 438.523148 -L 171.544444 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 448.992901 -L 192.483951 448.992901 -L 182.014198 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 448.992901 -L 192.483951 438.523148 -L 182.014198 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 448.992901 -L 202.953704 448.992901 -L 192.483951 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 448.992901 -L 202.953704 438.523148 -L 192.483951 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 448.992901 -L 213.423457 448.992901 -L 202.953704 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 448.992901 -L 213.423457 438.523148 -L 202.953704 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 448.992901 -L 223.89321 448.992901 -L 213.423457 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 448.992901 -L 223.89321 438.523148 -L 213.423457 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 448.992901 -L 234.362963 448.992901 -L 223.89321 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 448.992901 -L 234.362963 438.523148 -L 223.89321 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 448.992901 -L 244.832716 448.992901 -L 234.362963 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 448.992901 -L 244.832716 438.523148 -L 234.362963 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 448.992901 -L 255.302469 448.992901 -L 244.832716 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 448.992901 -L 255.302469 438.523148 -L 244.832716 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 448.992901 -L 265.772222 448.992901 -L 255.302469 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 448.992901 -L 265.772222 438.523148 -L 255.302469 438.523148 -z -" style="fill:#00d8ff;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 448.992901 -L 276.241975 448.992901 -L 265.772222 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 448.992901 -L 276.241975 438.523148 -L 265.772222 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 448.992901 -L 286.711728 448.992901 -L 276.241975 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 448.992901 -L 286.711728 438.523148 -L 276.241975 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 448.992901 -L 297.181481 448.992901 -L 286.711728 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 448.992901 -L 297.181481 438.523148 -L 286.711728 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 448.992901 -L 307.651235 448.992901 -L 297.181481 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 448.992901 -L 307.651235 438.523148 -L 297.181481 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 448.992901 -L 318.120988 448.992901 -L 307.651235 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 448.992901 -L 318.120988 438.523148 -L 307.651235 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 448.992901 -L 328.590741 448.992901 -L 318.120988 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 448.992901 -L 328.590741 438.523148 -L 318.120988 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 448.992901 -L 339.060494 448.992901 -L 328.590741 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 448.992901 -L 339.060494 438.523148 -L 328.590741 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 448.992901 -L 349.530247 448.992901 -L 339.060494 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 448.992901 -L 349.530247 438.523148 -L 339.060494 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 448.992901 -L 360 448.992901 -L 349.530247 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 448.992901 -L 360 438.523148 -L 349.530247 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 448.992901 -L 370.469753 448.992901 -L 360 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 448.992901 -L 370.469753 438.523148 -L 360 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 448.992901 -L 380.939506 448.992901 -L 370.469753 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 448.992901 -L 380.939506 438.523148 -L 370.469753 438.523148 -z -" style="fill:#00dcfe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 448.992901 -L 391.409259 448.992901 -L 380.939506 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 448.992901 -L 391.409259 438.523148 -L 380.939506 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 448.992901 -L 401.879012 448.992901 -L 391.409259 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 448.992901 -L 401.879012 438.523148 -L 391.409259 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 448.992901 -L 412.348765 448.992901 -L 401.879012 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 448.992901 -L 412.348765 438.523148 -L 401.879012 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 448.992901 -L 422.818519 448.992901 -L 412.348765 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 448.992901 -L 422.818519 438.523148 -L 412.348765 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 448.992901 -L 433.288272 448.992901 -L 422.818519 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 448.992901 -L 433.288272 438.523148 -L 422.818519 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 448.992901 -L 443.758025 448.992901 -L 433.288272 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 448.992901 -L 443.758025 438.523148 -L 433.288272 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 448.992901 -L 454.227778 448.992901 -L 443.758025 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 448.992901 -L 454.227778 438.523148 -L 443.758025 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 448.992901 -L 464.697531 448.992901 -L 454.227778 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 448.992901 -L 464.697531 438.523148 -L 454.227778 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 448.992901 -L 475.167284 448.992901 -L 464.697531 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 448.992901 -L 475.167284 438.523148 -L 464.697531 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 448.992901 -L 485.637037 448.992901 -L 475.167284 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 448.992901 -L 485.637037 438.523148 -L 475.167284 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 448.992901 -L 496.10679 448.992901 -L 485.637037 438.523148 -z -" style="fill:#00e0fb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 448.992901 -L 496.10679 438.523148 -L 485.637037 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 448.992901 -L 506.576543 448.992901 -L 496.10679 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 448.992901 -L 506.576543 438.523148 -L 496.10679 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 448.992901 -L 517.046296 448.992901 -L 506.576543 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 448.992901 -L 517.046296 438.523148 -L 506.576543 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 448.992901 -L 527.516049 448.992901 -L 517.046296 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 448.992901 -L 527.516049 438.523148 -L 517.046296 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 448.992901 -L 537.985802 448.992901 -L 527.516049 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 448.992901 -L 537.985802 438.523148 -L 527.516049 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 448.992901 -L 548.455556 448.992901 -L 537.985802 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 448.992901 -L 548.455556 438.523148 -L 537.985802 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 448.992901 -L 558.925309 448.992901 -L 548.455556 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 448.992901 -L 558.925309 438.523148 -L 548.455556 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 448.992901 -L 569.395062 448.992901 -L 558.925309 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 448.992901 -L 569.395062 438.523148 -L 558.925309 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 448.992901 -L 579.864815 448.992901 -L 569.395062 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 448.992901 -L 579.864815 438.523148 -L 569.395062 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 448.992901 -L 590.334568 448.992901 -L 579.864815 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 448.992901 -L 590.334568 438.523148 -L 579.864815 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 448.992901 -L 600.804321 448.992901 -L 590.334568 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 448.992901 -L 600.804321 438.523148 -L 590.334568 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 448.992901 -L 611.274074 448.992901 -L 600.804321 438.523148 -z -" style="fill:#00e4f8;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 448.992901 -L 611.274074 438.523148 -L 600.804321 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 448.992901 -L 621.743827 448.992901 -L 611.274074 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 448.992901 -L 621.743827 438.523148 -L 611.274074 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 448.992901 -L 632.21358 448.992901 -L 621.743827 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 448.992901 -L 632.21358 438.523148 -L 621.743827 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 448.992901 -L 642.683333 448.992901 -L 632.21358 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 448.992901 -L 642.683333 438.523148 -L 632.21358 438.523148 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 438.523148 -L 87.78642 438.523148 -L 77.316667 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 438.523148 -L 87.78642 428.053395 -L 77.316667 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 438.523148 -L 98.256173 438.523148 -L 87.78642 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 438.523148 -L 98.256173 428.053395 -L 87.78642 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 438.523148 -L 108.725926 438.523148 -L 98.256173 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 438.523148 -L 108.725926 428.053395 -L 98.256173 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 438.523148 -L 119.195679 438.523148 -L 108.725926 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 438.523148 -L 119.195679 428.053395 -L 108.725926 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 438.523148 -L 129.665432 438.523148 -L 119.195679 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 438.523148 -L 129.665432 428.053395 -L 119.195679 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 438.523148 -L 140.135185 438.523148 -L 129.665432 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 438.523148 -L 140.135185 428.053395 -L 129.665432 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 438.523148 -L 150.604938 438.523148 -L 140.135185 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 438.523148 -L 150.604938 428.053395 -L 140.135185 428.053395 -z -" style="fill:#02e8f4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 438.523148 -L 161.074691 438.523148 -L 150.604938 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 438.523148 -L 161.074691 428.053395 -L 150.604938 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 438.523148 -L 171.544444 438.523148 -L 161.074691 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 438.523148 -L 171.544444 428.053395 -L 161.074691 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 438.523148 -L 182.014198 438.523148 -L 171.544444 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 438.523148 -L 182.014198 428.053395 -L 171.544444 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 438.523148 -L 192.483951 438.523148 -L 182.014198 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 438.523148 -L 192.483951 428.053395 -L 182.014198 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 438.523148 -L 202.953704 438.523148 -L 192.483951 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 438.523148 -L 202.953704 428.053395 -L 192.483951 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 438.523148 -L 213.423457 438.523148 -L 202.953704 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 438.523148 -L 213.423457 428.053395 -L 202.953704 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 438.523148 -L 223.89321 438.523148 -L 213.423457 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 438.523148 -L 223.89321 428.053395 -L 213.423457 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 438.523148 -L 234.362963 438.523148 -L 223.89321 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 438.523148 -L 234.362963 428.053395 -L 223.89321 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 438.523148 -L 244.832716 438.523148 -L 234.362963 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 438.523148 -L 244.832716 428.053395 -L 234.362963 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 438.523148 -L 255.302469 438.523148 -L 244.832716 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 438.523148 -L 255.302469 428.053395 -L 244.832716 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 438.523148 -L 265.772222 438.523148 -L 255.302469 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 438.523148 -L 265.772222 428.053395 -L 255.302469 428.053395 -z -" style="fill:#06ecf1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 438.523148 -L 276.241975 438.523148 -L 265.772222 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 438.523148 -L 276.241975 428.053395 -L 265.772222 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 438.523148 -L 286.711728 438.523148 -L 276.241975 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 438.523148 -L 286.711728 428.053395 -L 276.241975 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 438.523148 -L 297.181481 438.523148 -L 286.711728 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 438.523148 -L 297.181481 428.053395 -L 286.711728 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 438.523148 -L 307.651235 438.523148 -L 297.181481 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 438.523148 -L 307.651235 428.053395 -L 297.181481 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 438.523148 -L 318.120988 438.523148 -L 307.651235 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 438.523148 -L 318.120988 428.053395 -L 307.651235 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 438.523148 -L 328.590741 438.523148 -L 318.120988 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 438.523148 -L 328.590741 428.053395 -L 318.120988 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 438.523148 -L 339.060494 438.523148 -L 328.590741 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 438.523148 -L 339.060494 428.053395 -L 328.590741 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 438.523148 -L 349.530247 438.523148 -L 339.060494 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 438.523148 -L 349.530247 428.053395 -L 339.060494 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 438.523148 -L 360 438.523148 -L 349.530247 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 438.523148 -L 360 428.053395 -L 349.530247 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 438.523148 -L 370.469753 438.523148 -L 360 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 438.523148 -L 370.469753 428.053395 -L 360 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 438.523148 -L 380.939506 438.523148 -L 370.469753 428.053395 -z -" style="fill:#09f0ee;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 438.523148 -L 380.939506 428.053395 -L 370.469753 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 438.523148 -L 391.409259 438.523148 -L 380.939506 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 438.523148 -L 391.409259 428.053395 -L 380.939506 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 438.523148 -L 401.879012 438.523148 -L 391.409259 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 438.523148 -L 401.879012 428.053395 -L 391.409259 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 438.523148 -L 412.348765 438.523148 -L 401.879012 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 438.523148 -L 412.348765 428.053395 -L 401.879012 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 438.523148 -L 422.818519 438.523148 -L 412.348765 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 438.523148 -L 422.818519 428.053395 -L 412.348765 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 438.523148 -L 433.288272 438.523148 -L 422.818519 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 438.523148 -L 433.288272 428.053395 -L 422.818519 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 438.523148 -L 443.758025 438.523148 -L 433.288272 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 438.523148 -L 443.758025 428.053395 -L 433.288272 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 438.523148 -L 454.227778 438.523148 -L 443.758025 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 438.523148 -L 454.227778 428.053395 -L 443.758025 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 438.523148 -L 464.697531 438.523148 -L 454.227778 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 438.523148 -L 464.697531 428.053395 -L 454.227778 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 438.523148 -L 475.167284 438.523148 -L 464.697531 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 438.523148 -L 475.167284 428.053395 -L 464.697531 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 438.523148 -L 485.637037 438.523148 -L 475.167284 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 438.523148 -L 485.637037 428.053395 -L 475.167284 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 438.523148 -L 496.10679 438.523148 -L 485.637037 428.053395 -z -" style="fill:#0cf4eb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 438.523148 -L 496.10679 428.053395 -L 485.637037 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 438.523148 -L 506.576543 438.523148 -L 496.10679 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 438.523148 -L 506.576543 428.053395 -L 496.10679 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 438.523148 -L 517.046296 438.523148 -L 506.576543 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 438.523148 -L 517.046296 428.053395 -L 506.576543 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 438.523148 -L 527.516049 438.523148 -L 517.046296 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 438.523148 -L 527.516049 428.053395 -L 517.046296 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 438.523148 -L 537.985802 438.523148 -L 527.516049 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 438.523148 -L 537.985802 428.053395 -L 527.516049 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 438.523148 -L 548.455556 438.523148 -L 537.985802 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 438.523148 -L 548.455556 428.053395 -L 537.985802 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 438.523148 -L 558.925309 438.523148 -L 548.455556 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 438.523148 -L 558.925309 428.053395 -L 548.455556 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 438.523148 -L 569.395062 438.523148 -L 558.925309 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 438.523148 -L 569.395062 428.053395 -L 558.925309 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 438.523148 -L 579.864815 438.523148 -L 569.395062 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 438.523148 -L 579.864815 428.053395 -L 569.395062 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 438.523148 -L 590.334568 438.523148 -L 579.864815 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 438.523148 -L 590.334568 428.053395 -L 579.864815 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 438.523148 -L 600.804321 438.523148 -L 590.334568 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 438.523148 -L 600.804321 428.053395 -L 590.334568 428.053395 -z -" style="fill:#0ff8e7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 438.523148 -L 611.274074 438.523148 -L 600.804321 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 438.523148 -L 611.274074 428.053395 -L 600.804321 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 438.523148 -L 621.743827 438.523148 -L 611.274074 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 438.523148 -L 621.743827 428.053395 -L 611.274074 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 438.523148 -L 632.21358 438.523148 -L 621.743827 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 438.523148 -L 632.21358 428.053395 -L 621.743827 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 438.523148 -L 642.683333 438.523148 -L 632.21358 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 438.523148 -L 642.683333 428.053395 -L 632.21358 428.053395 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 428.053395 -L 87.78642 428.053395 -L 77.316667 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 428.053395 -L 87.78642 417.583642 -L 77.316667 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 428.053395 -L 98.256173 428.053395 -L 87.78642 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 428.053395 -L 98.256173 417.583642 -L 87.78642 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 428.053395 -L 108.725926 428.053395 -L 98.256173 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 428.053395 -L 108.725926 417.583642 -L 98.256173 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 428.053395 -L 119.195679 428.053395 -L 108.725926 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 428.053395 -L 119.195679 417.583642 -L 108.725926 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 428.053395 -L 129.665432 428.053395 -L 119.195679 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 428.053395 -L 129.665432 417.583642 -L 119.195679 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 428.053395 -L 140.135185 428.053395 -L 129.665432 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 428.053395 -L 140.135185 417.583642 -L 129.665432 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 428.053395 -L 150.604938 428.053395 -L 140.135185 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 428.053395 -L 150.604938 417.583642 -L 140.135185 417.583642 -z -" style="fill:#13fce4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 428.053395 -L 161.074691 428.053395 -L 150.604938 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 428.053395 -L 161.074691 417.583642 -L 150.604938 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 428.053395 -L 171.544444 428.053395 -L 161.074691 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 428.053395 -L 171.544444 417.583642 -L 161.074691 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 428.053395 -L 182.014198 428.053395 -L 171.544444 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 428.053395 -L 182.014198 417.583642 -L 171.544444 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 428.053395 -L 192.483951 428.053395 -L 182.014198 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 428.053395 -L 192.483951 417.583642 -L 182.014198 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 428.053395 -L 202.953704 428.053395 -L 192.483951 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 428.053395 -L 202.953704 417.583642 -L 192.483951 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 428.053395 -L 213.423457 428.053395 -L 202.953704 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 428.053395 -L 213.423457 417.583642 -L 202.953704 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 428.053395 -L 223.89321 428.053395 -L 213.423457 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 428.053395 -L 223.89321 417.583642 -L 213.423457 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 428.053395 -L 234.362963 428.053395 -L 223.89321 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 428.053395 -L 234.362963 417.583642 -L 223.89321 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 428.053395 -L 244.832716 428.053395 -L 234.362963 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 428.053395 -L 244.832716 417.583642 -L 234.362963 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 428.053395 -L 255.302469 428.053395 -L 244.832716 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 428.053395 -L 255.302469 417.583642 -L 244.832716 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 428.053395 -L 265.772222 428.053395 -L 255.302469 417.583642 -z -" style="fill:#16ffe1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 428.053395 -L 265.772222 417.583642 -L 255.302469 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 428.053395 -L 276.241975 428.053395 -L 265.772222 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 428.053395 -L 276.241975 417.583642 -L 265.772222 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 428.053395 -L 286.711728 428.053395 -L 276.241975 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 428.053395 -L 286.711728 417.583642 -L 276.241975 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 428.053395 -L 297.181481 428.053395 -L 286.711728 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 428.053395 -L 297.181481 417.583642 -L 286.711728 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 428.053395 -L 307.651235 428.053395 -L 297.181481 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 428.053395 -L 307.651235 417.583642 -L 297.181481 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 428.053395 -L 318.120988 428.053395 -L 307.651235 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 428.053395 -L 318.120988 417.583642 -L 307.651235 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 428.053395 -L 328.590741 428.053395 -L 318.120988 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 428.053395 -L 328.590741 417.583642 -L 318.120988 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 428.053395 -L 339.060494 428.053395 -L 328.590741 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 428.053395 -L 339.060494 417.583642 -L 328.590741 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 428.053395 -L 349.530247 428.053395 -L 339.060494 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 428.053395 -L 349.530247 417.583642 -L 339.060494 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 428.053395 -L 360 428.053395 -L 349.530247 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 428.053395 -L 360 417.583642 -L 349.530247 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 428.053395 -L 370.469753 428.053395 -L 360 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 428.053395 -L 370.469753 417.583642 -L 360 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 428.053395 -L 380.939506 428.053395 -L 370.469753 417.583642 -z -" style="fill:#19ffde;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 428.053395 -L 380.939506 417.583642 -L 370.469753 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 428.053395 -L 391.409259 428.053395 -L 380.939506 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 428.053395 -L 391.409259 417.583642 -L 380.939506 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 428.053395 -L 401.879012 428.053395 -L 391.409259 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 428.053395 -L 401.879012 417.583642 -L 391.409259 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 428.053395 -L 412.348765 428.053395 -L 401.879012 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 428.053395 -L 412.348765 417.583642 -L 401.879012 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 428.053395 -L 422.818519 428.053395 -L 412.348765 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 428.053395 -L 422.818519 417.583642 -L 412.348765 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 428.053395 -L 433.288272 428.053395 -L 422.818519 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 428.053395 -L 433.288272 417.583642 -L 422.818519 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 428.053395 -L 443.758025 428.053395 -L 433.288272 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 428.053395 -L 443.758025 417.583642 -L 433.288272 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 428.053395 -L 454.227778 428.053395 -L 443.758025 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 428.053395 -L 454.227778 417.583642 -L 443.758025 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 428.053395 -L 464.697531 428.053395 -L 454.227778 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 428.053395 -L 464.697531 417.583642 -L 454.227778 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 428.053395 -L 475.167284 428.053395 -L 464.697531 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 428.053395 -L 475.167284 417.583642 -L 464.697531 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 428.053395 -L 485.637037 428.053395 -L 475.167284 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 428.053395 -L 485.637037 417.583642 -L 475.167284 417.583642 -z -" style="fill:#1cffdb;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 428.053395 -L 496.10679 428.053395 -L 485.637037 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 428.053395 -L 496.10679 417.583642 -L 485.637037 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 428.053395 -L 506.576543 428.053395 -L 496.10679 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 428.053395 -L 506.576543 417.583642 -L 496.10679 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 428.053395 -L 517.046296 428.053395 -L 506.576543 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 428.053395 -L 517.046296 417.583642 -L 506.576543 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 428.053395 -L 527.516049 428.053395 -L 517.046296 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 428.053395 -L 527.516049 417.583642 -L 517.046296 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 428.053395 -L 537.985802 428.053395 -L 527.516049 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 428.053395 -L 537.985802 417.583642 -L 527.516049 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 428.053395 -L 548.455556 428.053395 -L 537.985802 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 428.053395 -L 548.455556 417.583642 -L 537.985802 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 428.053395 -L 558.925309 428.053395 -L 548.455556 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 428.053395 -L 558.925309 417.583642 -L 548.455556 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 428.053395 -L 569.395062 428.053395 -L 558.925309 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 428.053395 -L 569.395062 417.583642 -L 558.925309 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 428.053395 -L 579.864815 428.053395 -L 569.395062 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 428.053395 -L 579.864815 417.583642 -L 569.395062 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 428.053395 -L 590.334568 428.053395 -L 579.864815 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 428.053395 -L 590.334568 417.583642 -L 579.864815 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 428.053395 -L 600.804321 428.053395 -L 590.334568 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 428.053395 -L 600.804321 417.583642 -L 590.334568 417.583642 -z -" style="fill:#1fffd7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 428.053395 -L 611.274074 428.053395 -L 600.804321 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 428.053395 -L 611.274074 417.583642 -L 600.804321 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 428.053395 -L 621.743827 428.053395 -L 611.274074 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 428.053395 -L 621.743827 417.583642 -L 611.274074 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 428.053395 -L 632.21358 428.053395 -L 621.743827 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 428.053395 -L 632.21358 417.583642 -L 621.743827 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 428.053395 -L 642.683333 428.053395 -L 632.21358 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 428.053395 -L 642.683333 417.583642 -L 632.21358 417.583642 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 417.583642 -L 87.78642 417.583642 -L 77.316667 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 417.583642 -L 87.78642 407.113889 -L 77.316667 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 417.583642 -L 98.256173 417.583642 -L 87.78642 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 417.583642 -L 98.256173 407.113889 -L 87.78642 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 417.583642 -L 108.725926 417.583642 -L 98.256173 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 417.583642 -L 108.725926 407.113889 -L 98.256173 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 417.583642 -L 119.195679 417.583642 -L 108.725926 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 417.583642 -L 119.195679 407.113889 -L 108.725926 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 417.583642 -L 129.665432 417.583642 -L 119.195679 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 417.583642 -L 129.665432 407.113889 -L 119.195679 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 417.583642 -L 140.135185 417.583642 -L 129.665432 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 417.583642 -L 140.135185 407.113889 -L 129.665432 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 417.583642 -L 150.604938 417.583642 -L 140.135185 407.113889 -z -" style="fill:#23ffd4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 417.583642 -L 150.604938 407.113889 -L 140.135185 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 417.583642 -L 161.074691 417.583642 -L 150.604938 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 417.583642 -L 161.074691 407.113889 -L 150.604938 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 417.583642 -L 171.544444 417.583642 -L 161.074691 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 417.583642 -L 171.544444 407.113889 -L 161.074691 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 417.583642 -L 182.014198 417.583642 -L 171.544444 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 417.583642 -L 182.014198 407.113889 -L 171.544444 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 417.583642 -L 192.483951 417.583642 -L 182.014198 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 417.583642 -L 192.483951 407.113889 -L 182.014198 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 417.583642 -L 202.953704 417.583642 -L 192.483951 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 417.583642 -L 202.953704 407.113889 -L 192.483951 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 417.583642 -L 213.423457 417.583642 -L 202.953704 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 417.583642 -L 213.423457 407.113889 -L 202.953704 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 417.583642 -L 223.89321 417.583642 -L 213.423457 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 417.583642 -L 223.89321 407.113889 -L 213.423457 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 417.583642 -L 234.362963 417.583642 -L 223.89321 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 417.583642 -L 234.362963 407.113889 -L 223.89321 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 417.583642 -L 244.832716 417.583642 -L 234.362963 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 417.583642 -L 244.832716 407.113889 -L 234.362963 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 417.583642 -L 255.302469 417.583642 -L 244.832716 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 417.583642 -L 255.302469 407.113889 -L 244.832716 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 417.583642 -L 265.772222 417.583642 -L 255.302469 407.113889 -z -" style="fill:#26ffd1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 417.583642 -L 265.772222 407.113889 -L 255.302469 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 417.583642 -L 276.241975 417.583642 -L 265.772222 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 417.583642 -L 276.241975 407.113889 -L 265.772222 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 417.583642 -L 286.711728 417.583642 -L 276.241975 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 417.583642 -L 286.711728 407.113889 -L 276.241975 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 417.583642 -L 297.181481 417.583642 -L 286.711728 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 417.583642 -L 297.181481 407.113889 -L 286.711728 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 417.583642 -L 307.651235 417.583642 -L 297.181481 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 417.583642 -L 307.651235 407.113889 -L 297.181481 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 417.583642 -L 318.120988 417.583642 -L 307.651235 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 417.583642 -L 318.120988 407.113889 -L 307.651235 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 417.583642 -L 328.590741 417.583642 -L 318.120988 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 417.583642 -L 328.590741 407.113889 -L 318.120988 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 417.583642 -L 339.060494 417.583642 -L 328.590741 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 417.583642 -L 339.060494 407.113889 -L 328.590741 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 417.583642 -L 349.530247 417.583642 -L 339.060494 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 417.583642 -L 349.530247 407.113889 -L 339.060494 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 417.583642 -L 360 417.583642 -L 349.530247 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 417.583642 -L 360 407.113889 -L 349.530247 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 417.583642 -L 370.469753 417.583642 -L 360 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 417.583642 -L 370.469753 407.113889 -L 360 407.113889 -z -" style="fill:#29ffce;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 417.583642 -L 380.939506 417.583642 -L 370.469753 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 417.583642 -L 380.939506 407.113889 -L 370.469753 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 417.583642 -L 391.409259 417.583642 -L 380.939506 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 417.583642 -L 391.409259 407.113889 -L 380.939506 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 417.583642 -L 401.879012 417.583642 -L 391.409259 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 417.583642 -L 401.879012 407.113889 -L 391.409259 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 417.583642 -L 412.348765 417.583642 -L 401.879012 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 417.583642 -L 412.348765 407.113889 -L 401.879012 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 417.583642 -L 422.818519 417.583642 -L 412.348765 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 417.583642 -L 422.818519 407.113889 -L 412.348765 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 417.583642 -L 433.288272 417.583642 -L 422.818519 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 417.583642 -L 433.288272 407.113889 -L 422.818519 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 417.583642 -L 443.758025 417.583642 -L 433.288272 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 417.583642 -L 443.758025 407.113889 -L 433.288272 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 417.583642 -L 454.227778 417.583642 -L 443.758025 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 417.583642 -L 454.227778 407.113889 -L 443.758025 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 417.583642 -L 464.697531 417.583642 -L 454.227778 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 417.583642 -L 464.697531 407.113889 -L 454.227778 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 417.583642 -L 475.167284 417.583642 -L 464.697531 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 417.583642 -L 475.167284 407.113889 -L 464.697531 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 417.583642 -L 485.637037 417.583642 -L 475.167284 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 417.583642 -L 485.637037 407.113889 -L 475.167284 407.113889 -z -" style="fill:#2cffca;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 417.583642 -L 496.10679 417.583642 -L 485.637037 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 417.583642 -L 496.10679 407.113889 -L 485.637037 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 417.583642 -L 506.576543 417.583642 -L 496.10679 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 417.583642 -L 506.576543 407.113889 -L 496.10679 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 417.583642 -L 517.046296 417.583642 -L 506.576543 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 417.583642 -L 517.046296 407.113889 -L 506.576543 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 417.583642 -L 527.516049 417.583642 -L 517.046296 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 417.583642 -L 527.516049 407.113889 -L 517.046296 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 417.583642 -L 537.985802 417.583642 -L 527.516049 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 417.583642 -L 537.985802 407.113889 -L 527.516049 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 417.583642 -L 548.455556 417.583642 -L 537.985802 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 417.583642 -L 548.455556 407.113889 -L 537.985802 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 417.583642 -L 558.925309 417.583642 -L 548.455556 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 417.583642 -L 558.925309 407.113889 -L 548.455556 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 417.583642 -L 569.395062 417.583642 -L 558.925309 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 417.583642 -L 569.395062 407.113889 -L 558.925309 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 417.583642 -L 579.864815 417.583642 -L 569.395062 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 417.583642 -L 579.864815 407.113889 -L 569.395062 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 417.583642 -L 590.334568 417.583642 -L 579.864815 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 417.583642 -L 590.334568 407.113889 -L 579.864815 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 417.583642 -L 600.804321 417.583642 -L 590.334568 407.113889 -z -" style="fill:#30ffc7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 417.583642 -L 600.804321 407.113889 -L 590.334568 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 417.583642 -L 611.274074 417.583642 -L 600.804321 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 417.583642 -L 611.274074 407.113889 -L 600.804321 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 417.583642 -L 621.743827 417.583642 -L 611.274074 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 417.583642 -L 621.743827 407.113889 -L 611.274074 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 417.583642 -L 632.21358 417.583642 -L 621.743827 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 417.583642 -L 632.21358 407.113889 -L 621.743827 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 417.583642 -L 642.683333 417.583642 -L 632.21358 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 417.583642 -L 642.683333 407.113889 -L 632.21358 407.113889 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 407.113889 -L 87.78642 407.113889 -L 77.316667 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 407.113889 -L 87.78642 396.644136 -L 77.316667 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 407.113889 -L 98.256173 407.113889 -L 87.78642 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 407.113889 -L 98.256173 396.644136 -L 87.78642 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 407.113889 -L 108.725926 407.113889 -L 98.256173 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 407.113889 -L 108.725926 396.644136 -L 98.256173 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 407.113889 -L 119.195679 407.113889 -L 108.725926 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 407.113889 -L 119.195679 396.644136 -L 108.725926 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 407.113889 -L 129.665432 407.113889 -L 119.195679 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 407.113889 -L 129.665432 396.644136 -L 119.195679 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 407.113889 -L 140.135185 407.113889 -L 129.665432 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 407.113889 -L 140.135185 396.644136 -L 129.665432 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 407.113889 -L 150.604938 407.113889 -L 140.135185 396.644136 -z -" style="fill:#33ffc4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 407.113889 -L 150.604938 396.644136 -L 140.135185 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 407.113889 -L 161.074691 407.113889 -L 150.604938 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 407.113889 -L 161.074691 396.644136 -L 150.604938 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 407.113889 -L 171.544444 407.113889 -L 161.074691 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 407.113889 -L 171.544444 396.644136 -L 161.074691 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 407.113889 -L 182.014198 407.113889 -L 171.544444 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 407.113889 -L 182.014198 396.644136 -L 171.544444 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 407.113889 -L 192.483951 407.113889 -L 182.014198 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 407.113889 -L 192.483951 396.644136 -L 182.014198 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 407.113889 -L 202.953704 407.113889 -L 192.483951 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 407.113889 -L 202.953704 396.644136 -L 192.483951 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 407.113889 -L 213.423457 407.113889 -L 202.953704 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 407.113889 -L 213.423457 396.644136 -L 202.953704 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 407.113889 -L 223.89321 407.113889 -L 213.423457 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 407.113889 -L 223.89321 396.644136 -L 213.423457 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 407.113889 -L 234.362963 407.113889 -L 223.89321 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 407.113889 -L 234.362963 396.644136 -L 223.89321 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 407.113889 -L 244.832716 407.113889 -L 234.362963 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 407.113889 -L 244.832716 396.644136 -L 234.362963 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 407.113889 -L 255.302469 407.113889 -L 244.832716 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 407.113889 -L 255.302469 396.644136 -L 244.832716 396.644136 -z -" style="fill:#36ffc1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 407.113889 -L 265.772222 407.113889 -L 255.302469 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 407.113889 -L 265.772222 396.644136 -L 255.302469 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 407.113889 -L 276.241975 407.113889 -L 265.772222 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 407.113889 -L 276.241975 396.644136 -L 265.772222 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 407.113889 -L 286.711728 407.113889 -L 276.241975 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 407.113889 -L 286.711728 396.644136 -L 276.241975 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 407.113889 -L 297.181481 407.113889 -L 286.711728 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 407.113889 -L 297.181481 396.644136 -L 286.711728 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 407.113889 -L 307.651235 407.113889 -L 297.181481 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 407.113889 -L 307.651235 396.644136 -L 297.181481 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 407.113889 -L 318.120988 407.113889 -L 307.651235 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 407.113889 -L 318.120988 396.644136 -L 307.651235 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 407.113889 -L 328.590741 407.113889 -L 318.120988 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 407.113889 -L 328.590741 396.644136 -L 318.120988 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 407.113889 -L 339.060494 407.113889 -L 328.590741 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 407.113889 -L 339.060494 396.644136 -L 328.590741 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 407.113889 -L 349.530247 407.113889 -L 339.060494 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 407.113889 -L 349.530247 396.644136 -L 339.060494 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 407.113889 -L 360 407.113889 -L 349.530247 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 407.113889 -L 360 396.644136 -L 349.530247 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 407.113889 -L 370.469753 407.113889 -L 360 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 407.113889 -L 370.469753 396.644136 -L 360 396.644136 -z -" style="fill:#39ffbe;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 407.113889 -L 380.939506 407.113889 -L 370.469753 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 407.113889 -L 380.939506 396.644136 -L 370.469753 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 407.113889 -L 391.409259 407.113889 -L 380.939506 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 407.113889 -L 391.409259 396.644136 -L 380.939506 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 407.113889 -L 401.879012 407.113889 -L 391.409259 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 407.113889 -L 401.879012 396.644136 -L 391.409259 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 407.113889 -L 412.348765 407.113889 -L 401.879012 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 407.113889 -L 412.348765 396.644136 -L 401.879012 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 407.113889 -L 422.818519 407.113889 -L 412.348765 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 407.113889 -L 422.818519 396.644136 -L 412.348765 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 407.113889 -L 433.288272 407.113889 -L 422.818519 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 407.113889 -L 433.288272 396.644136 -L 422.818519 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 407.113889 -L 443.758025 407.113889 -L 433.288272 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 407.113889 -L 443.758025 396.644136 -L 433.288272 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 407.113889 -L 454.227778 407.113889 -L 443.758025 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 407.113889 -L 454.227778 396.644136 -L 443.758025 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 407.113889 -L 464.697531 407.113889 -L 454.227778 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 407.113889 -L 464.697531 396.644136 -L 454.227778 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 407.113889 -L 475.167284 407.113889 -L 464.697531 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 407.113889 -L 475.167284 396.644136 -L 464.697531 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 407.113889 -L 485.637037 407.113889 -L 475.167284 396.644136 -z -" style="fill:#3cffba;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 407.113889 -L 485.637037 396.644136 -L 475.167284 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 407.113889 -L 496.10679 407.113889 -L 485.637037 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 407.113889 -L 496.10679 396.644136 -L 485.637037 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 407.113889 -L 506.576543 407.113889 -L 496.10679 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 407.113889 -L 506.576543 396.644136 -L 496.10679 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 407.113889 -L 517.046296 407.113889 -L 506.576543 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 407.113889 -L 517.046296 396.644136 -L 506.576543 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 407.113889 -L 527.516049 407.113889 -L 517.046296 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 407.113889 -L 527.516049 396.644136 -L 517.046296 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 407.113889 -L 537.985802 407.113889 -L 527.516049 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 407.113889 -L 537.985802 396.644136 -L 527.516049 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 407.113889 -L 548.455556 407.113889 -L 537.985802 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 407.113889 -L 548.455556 396.644136 -L 537.985802 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 407.113889 -L 558.925309 407.113889 -L 548.455556 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 407.113889 -L 558.925309 396.644136 -L 548.455556 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 407.113889 -L 569.395062 407.113889 -L 558.925309 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 407.113889 -L 569.395062 396.644136 -L 558.925309 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 407.113889 -L 579.864815 407.113889 -L 569.395062 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 407.113889 -L 579.864815 396.644136 -L 569.395062 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 407.113889 -L 590.334568 407.113889 -L 579.864815 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 407.113889 -L 590.334568 396.644136 -L 579.864815 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 407.113889 -L 600.804321 407.113889 -L 590.334568 396.644136 -z -" style="fill:#40ffb7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 407.113889 -L 600.804321 396.644136 -L 590.334568 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 407.113889 -L 611.274074 407.113889 -L 600.804321 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 407.113889 -L 611.274074 396.644136 -L 600.804321 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 407.113889 -L 621.743827 407.113889 -L 611.274074 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 407.113889 -L 621.743827 396.644136 -L 611.274074 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 407.113889 -L 632.21358 407.113889 -L 621.743827 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 407.113889 -L 632.21358 396.644136 -L 621.743827 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 407.113889 -L 642.683333 407.113889 -L 632.21358 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 407.113889 -L 642.683333 396.644136 -L 632.21358 396.644136 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 396.644136 -L 87.78642 396.644136 -L 77.316667 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 396.644136 -L 87.78642 386.174383 -L 77.316667 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 396.644136 -L 98.256173 396.644136 -L 87.78642 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 396.644136 -L 98.256173 386.174383 -L 87.78642 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 396.644136 -L 108.725926 396.644136 -L 98.256173 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 396.644136 -L 108.725926 386.174383 -L 98.256173 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 396.644136 -L 119.195679 396.644136 -L 108.725926 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 396.644136 -L 119.195679 386.174383 -L 108.725926 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 396.644136 -L 129.665432 396.644136 -L 119.195679 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 396.644136 -L 129.665432 386.174383 -L 119.195679 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 396.644136 -L 140.135185 396.644136 -L 129.665432 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 396.644136 -L 140.135185 386.174383 -L 129.665432 386.174383 -z -" style="fill:#43ffb4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 396.644136 -L 150.604938 396.644136 -L 140.135185 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 396.644136 -L 150.604938 386.174383 -L 140.135185 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 396.644136 -L 161.074691 396.644136 -L 150.604938 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 396.644136 -L 161.074691 386.174383 -L 150.604938 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 396.644136 -L 171.544444 396.644136 -L 161.074691 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 396.644136 -L 171.544444 386.174383 -L 161.074691 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 396.644136 -L 182.014198 396.644136 -L 171.544444 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 396.644136 -L 182.014198 386.174383 -L 171.544444 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 396.644136 -L 192.483951 396.644136 -L 182.014198 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 396.644136 -L 192.483951 386.174383 -L 182.014198 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 396.644136 -L 202.953704 396.644136 -L 192.483951 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 396.644136 -L 202.953704 386.174383 -L 192.483951 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 396.644136 -L 213.423457 396.644136 -L 202.953704 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 396.644136 -L 213.423457 386.174383 -L 202.953704 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 396.644136 -L 223.89321 396.644136 -L 213.423457 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 396.644136 -L 223.89321 386.174383 -L 213.423457 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 396.644136 -L 234.362963 396.644136 -L 223.89321 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 396.644136 -L 234.362963 386.174383 -L 223.89321 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 396.644136 -L 244.832716 396.644136 -L 234.362963 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 396.644136 -L 244.832716 386.174383 -L 234.362963 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 396.644136 -L 255.302469 396.644136 -L 244.832716 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 396.644136 -L 255.302469 386.174383 -L 244.832716 386.174383 -z -" style="fill:#46ffb1;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 396.644136 -L 265.772222 396.644136 -L 255.302469 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 396.644136 -L 265.772222 386.174383 -L 255.302469 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 396.644136 -L 276.241975 396.644136 -L 265.772222 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 396.644136 -L 276.241975 386.174383 -L 265.772222 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 396.644136 -L 286.711728 396.644136 -L 276.241975 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 396.644136 -L 286.711728 386.174383 -L 276.241975 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 396.644136 -L 297.181481 396.644136 -L 286.711728 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 396.644136 -L 297.181481 386.174383 -L 286.711728 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 396.644136 -L 307.651235 396.644136 -L 297.181481 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 396.644136 -L 307.651235 386.174383 -L 297.181481 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 396.644136 -L 318.120988 396.644136 -L 307.651235 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 396.644136 -L 318.120988 386.174383 -L 307.651235 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 396.644136 -L 328.590741 396.644136 -L 318.120988 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 396.644136 -L 328.590741 386.174383 -L 318.120988 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 396.644136 -L 339.060494 396.644136 -L 328.590741 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 396.644136 -L 339.060494 386.174383 -L 328.590741 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 396.644136 -L 349.530247 396.644136 -L 339.060494 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 396.644136 -L 349.530247 386.174383 -L 339.060494 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 396.644136 -L 360 396.644136 -L 349.530247 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 396.644136 -L 360 386.174383 -L 349.530247 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 396.644136 -L 370.469753 396.644136 -L 360 386.174383 -z -" style="fill:#49ffad;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 396.644136 -L 370.469753 386.174383 -L 360 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 396.644136 -L 380.939506 396.644136 -L 370.469753 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 396.644136 -L 380.939506 386.174383 -L 370.469753 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 396.644136 -L 391.409259 396.644136 -L 380.939506 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 396.644136 -L 391.409259 386.174383 -L 380.939506 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 396.644136 -L 401.879012 396.644136 -L 391.409259 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 396.644136 -L 401.879012 386.174383 -L 391.409259 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 396.644136 -L 412.348765 396.644136 -L 401.879012 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 396.644136 -L 412.348765 386.174383 -L 401.879012 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 396.644136 -L 422.818519 396.644136 -L 412.348765 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 396.644136 -L 422.818519 386.174383 -L 412.348765 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 396.644136 -L 433.288272 396.644136 -L 422.818519 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 396.644136 -L 433.288272 386.174383 -L 422.818519 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 396.644136 -L 443.758025 396.644136 -L 433.288272 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 396.644136 -L 443.758025 386.174383 -L 433.288272 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 396.644136 -L 454.227778 396.644136 -L 443.758025 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 396.644136 -L 454.227778 386.174383 -L 443.758025 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 396.644136 -L 464.697531 396.644136 -L 454.227778 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 396.644136 -L 464.697531 386.174383 -L 454.227778 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 396.644136 -L 475.167284 396.644136 -L 464.697531 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 396.644136 -L 475.167284 386.174383 -L 464.697531 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 396.644136 -L 485.637037 396.644136 -L 475.167284 386.174383 -z -" style="fill:#4dffaa;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 396.644136 -L 485.637037 386.174383 -L 475.167284 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 396.644136 -L 496.10679 396.644136 -L 485.637037 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 396.644136 -L 496.10679 386.174383 -L 485.637037 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 396.644136 -L 506.576543 396.644136 -L 496.10679 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 396.644136 -L 506.576543 386.174383 -L 496.10679 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 396.644136 -L 517.046296 396.644136 -L 506.576543 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 396.644136 -L 517.046296 386.174383 -L 506.576543 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 396.644136 -L 527.516049 396.644136 -L 517.046296 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 396.644136 -L 527.516049 386.174383 -L 517.046296 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 396.644136 -L 537.985802 396.644136 -L 527.516049 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 396.644136 -L 537.985802 386.174383 -L 527.516049 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 396.644136 -L 548.455556 396.644136 -L 537.985802 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 396.644136 -L 548.455556 386.174383 -L 537.985802 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 396.644136 -L 558.925309 396.644136 -L 548.455556 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 396.644136 -L 558.925309 386.174383 -L 548.455556 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 396.644136 -L 569.395062 396.644136 -L 558.925309 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 396.644136 -L 569.395062 386.174383 -L 558.925309 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 396.644136 -L 579.864815 396.644136 -L 569.395062 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 396.644136 -L 579.864815 386.174383 -L 569.395062 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 396.644136 -L 590.334568 396.644136 -L 579.864815 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 396.644136 -L 590.334568 386.174383 -L 579.864815 386.174383 -z -" style="fill:#50ffa7;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 396.644136 -L 600.804321 396.644136 -L 590.334568 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 396.644136 -L 600.804321 386.174383 -L 590.334568 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 396.644136 -L 611.274074 396.644136 -L 600.804321 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 396.644136 -L 611.274074 386.174383 -L 600.804321 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 396.644136 -L 621.743827 396.644136 -L 611.274074 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 396.644136 -L 621.743827 386.174383 -L 611.274074 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 396.644136 -L 632.21358 396.644136 -L 621.743827 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 396.644136 -L 632.21358 386.174383 -L 621.743827 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 396.644136 -L 642.683333 396.644136 -L 632.21358 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 396.644136 -L 642.683333 386.174383 -L 632.21358 386.174383 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 386.174383 -L 87.78642 386.174383 -L 77.316667 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 386.174383 -L 87.78642 375.70463 -L 77.316667 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 386.174383 -L 98.256173 386.174383 -L 87.78642 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 386.174383 -L 98.256173 375.70463 -L 87.78642 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 386.174383 -L 108.725926 386.174383 -L 98.256173 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 386.174383 -L 108.725926 375.70463 -L 98.256173 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 386.174383 -L 119.195679 386.174383 -L 108.725926 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 386.174383 -L 119.195679 375.70463 -L 108.725926 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 386.174383 -L 129.665432 386.174383 -L 119.195679 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 386.174383 -L 129.665432 375.70463 -L 119.195679 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 386.174383 -L 140.135185 386.174383 -L 129.665432 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 386.174383 -L 140.135185 375.70463 -L 129.665432 375.70463 -z -" style="fill:#53ffa4;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 386.174383 -L 150.604938 386.174383 -L 140.135185 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 386.174383 -L 150.604938 375.70463 -L 140.135185 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 386.174383 -L 161.074691 386.174383 -L 150.604938 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 386.174383 -L 161.074691 375.70463 -L 150.604938 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 386.174383 -L 171.544444 386.174383 -L 161.074691 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 386.174383 -L 171.544444 375.70463 -L 161.074691 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 386.174383 -L 182.014198 386.174383 -L 171.544444 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 386.174383 -L 182.014198 375.70463 -L 171.544444 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 386.174383 -L 192.483951 386.174383 -L 182.014198 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 386.174383 -L 192.483951 375.70463 -L 182.014198 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 386.174383 -L 202.953704 386.174383 -L 192.483951 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 386.174383 -L 202.953704 375.70463 -L 192.483951 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 386.174383 -L 213.423457 386.174383 -L 202.953704 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 386.174383 -L 213.423457 375.70463 -L 202.953704 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 386.174383 -L 223.89321 386.174383 -L 213.423457 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 386.174383 -L 223.89321 375.70463 -L 213.423457 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 386.174383 -L 234.362963 386.174383 -L 223.89321 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 386.174383 -L 234.362963 375.70463 -L 223.89321 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 386.174383 -L 244.832716 386.174383 -L 234.362963 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 386.174383 -L 244.832716 375.70463 -L 234.362963 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 386.174383 -L 255.302469 386.174383 -L 244.832716 375.70463 -z -" style="fill:#56ffa0;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 386.174383 -L 255.302469 375.70463 -L 244.832716 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 386.174383 -L 265.772222 386.174383 -L 255.302469 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 386.174383 -L 265.772222 375.70463 -L 255.302469 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 386.174383 -L 276.241975 386.174383 -L 265.772222 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 386.174383 -L 276.241975 375.70463 -L 265.772222 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 386.174383 -L 286.711728 386.174383 -L 276.241975 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 386.174383 -L 286.711728 375.70463 -L 276.241975 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 386.174383 -L 297.181481 386.174383 -L 286.711728 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 386.174383 -L 297.181481 375.70463 -L 286.711728 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 386.174383 -L 307.651235 386.174383 -L 297.181481 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 386.174383 -L 307.651235 375.70463 -L 297.181481 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 386.174383 -L 318.120988 386.174383 -L 307.651235 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 386.174383 -L 318.120988 375.70463 -L 307.651235 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 386.174383 -L 328.590741 386.174383 -L 318.120988 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 386.174383 -L 328.590741 375.70463 -L 318.120988 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 386.174383 -L 339.060494 386.174383 -L 328.590741 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 386.174383 -L 339.060494 375.70463 -L 328.590741 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 386.174383 -L 349.530247 386.174383 -L 339.060494 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 386.174383 -L 349.530247 375.70463 -L 339.060494 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 386.174383 -L 360 386.174383 -L 349.530247 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 386.174383 -L 360 375.70463 -L 349.530247 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 386.174383 -L 370.469753 386.174383 -L 360 375.70463 -z -" style="fill:#5aff9d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 386.174383 -L 370.469753 375.70463 -L 360 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 386.174383 -L 380.939506 386.174383 -L 370.469753 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 386.174383 -L 380.939506 375.70463 -L 370.469753 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 386.174383 -L 391.409259 386.174383 -L 380.939506 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 386.174383 -L 391.409259 375.70463 -L 380.939506 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 386.174383 -L 401.879012 386.174383 -L 391.409259 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 386.174383 -L 401.879012 375.70463 -L 391.409259 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 386.174383 -L 412.348765 386.174383 -L 401.879012 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 386.174383 -L 412.348765 375.70463 -L 401.879012 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 386.174383 -L 422.818519 386.174383 -L 412.348765 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 386.174383 -L 422.818519 375.70463 -L 412.348765 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 386.174383 -L 433.288272 386.174383 -L 422.818519 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 386.174383 -L 433.288272 375.70463 -L 422.818519 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 386.174383 -L 443.758025 386.174383 -L 433.288272 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 386.174383 -L 443.758025 375.70463 -L 433.288272 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 386.174383 -L 454.227778 386.174383 -L 443.758025 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 386.174383 -L 454.227778 375.70463 -L 443.758025 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 386.174383 -L 464.697531 386.174383 -L 454.227778 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 386.174383 -L 464.697531 375.70463 -L 454.227778 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 386.174383 -L 475.167284 386.174383 -L 464.697531 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 386.174383 -L 475.167284 375.70463 -L 464.697531 375.70463 -z -" style="fill:#5dff9a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 386.174383 -L 485.637037 386.174383 -L 475.167284 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 386.174383 -L 485.637037 375.70463 -L 475.167284 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 386.174383 -L 496.10679 386.174383 -L 485.637037 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 386.174383 -L 496.10679 375.70463 -L 485.637037 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 386.174383 -L 506.576543 386.174383 -L 496.10679 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 386.174383 -L 506.576543 375.70463 -L 496.10679 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 386.174383 -L 517.046296 386.174383 -L 506.576543 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 386.174383 -L 517.046296 375.70463 -L 506.576543 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 386.174383 -L 527.516049 386.174383 -L 517.046296 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 386.174383 -L 527.516049 375.70463 -L 517.046296 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 386.174383 -L 537.985802 386.174383 -L 527.516049 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 386.174383 -L 537.985802 375.70463 -L 527.516049 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 386.174383 -L 548.455556 386.174383 -L 537.985802 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 386.174383 -L 548.455556 375.70463 -L 537.985802 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 386.174383 -L 558.925309 386.174383 -L 548.455556 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 386.174383 -L 558.925309 375.70463 -L 548.455556 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 386.174383 -L 569.395062 386.174383 -L 558.925309 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 386.174383 -L 569.395062 375.70463 -L 558.925309 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 386.174383 -L 579.864815 386.174383 -L 569.395062 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 386.174383 -L 579.864815 375.70463 -L 569.395062 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 386.174383 -L 590.334568 386.174383 -L 579.864815 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 386.174383 -L 590.334568 375.70463 -L 579.864815 375.70463 -z -" style="fill:#60ff97;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 386.174383 -L 600.804321 386.174383 -L 590.334568 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 386.174383 -L 600.804321 375.70463 -L 590.334568 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 386.174383 -L 611.274074 386.174383 -L 600.804321 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 386.174383 -L 611.274074 375.70463 -L 600.804321 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 386.174383 -L 621.743827 386.174383 -L 611.274074 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 386.174383 -L 621.743827 375.70463 -L 611.274074 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 386.174383 -L 632.21358 386.174383 -L 621.743827 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 386.174383 -L 632.21358 375.70463 -L 621.743827 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 386.174383 -L 642.683333 386.174383 -L 632.21358 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 386.174383 -L 642.683333 375.70463 -L 632.21358 375.70463 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 375.70463 -L 87.78642 375.70463 -L 77.316667 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 375.70463 -L 87.78642 365.234877 -L 77.316667 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 375.70463 -L 98.256173 375.70463 -L 87.78642 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 375.70463 -L 98.256173 365.234877 -L 87.78642 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 375.70463 -L 108.725926 375.70463 -L 98.256173 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 375.70463 -L 108.725926 365.234877 -L 98.256173 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 375.70463 -L 119.195679 375.70463 -L 108.725926 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 375.70463 -L 119.195679 365.234877 -L 108.725926 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 375.70463 -L 129.665432 375.70463 -L 119.195679 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 375.70463 -L 129.665432 365.234877 -L 119.195679 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 375.70463 -L 140.135185 375.70463 -L 129.665432 365.234877 -z -" style="fill:#63ff94;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 375.70463 -L 140.135185 365.234877 -L 129.665432 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 375.70463 -L 150.604938 375.70463 -L 140.135185 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 375.70463 -L 150.604938 365.234877 -L 140.135185 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 375.70463 -L 161.074691 375.70463 -L 150.604938 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 375.70463 -L 161.074691 365.234877 -L 150.604938 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 375.70463 -L 171.544444 375.70463 -L 161.074691 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 375.70463 -L 171.544444 365.234877 -L 161.074691 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 375.70463 -L 182.014198 375.70463 -L 171.544444 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 375.70463 -L 182.014198 365.234877 -L 171.544444 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 375.70463 -L 192.483951 375.70463 -L 182.014198 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 375.70463 -L 192.483951 365.234877 -L 182.014198 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 375.70463 -L 202.953704 375.70463 -L 192.483951 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 375.70463 -L 202.953704 365.234877 -L 192.483951 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 375.70463 -L 213.423457 375.70463 -L 202.953704 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 375.70463 -L 213.423457 365.234877 -L 202.953704 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 375.70463 -L 223.89321 375.70463 -L 213.423457 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 375.70463 -L 223.89321 365.234877 -L 213.423457 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 375.70463 -L 234.362963 375.70463 -L 223.89321 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 375.70463 -L 234.362963 365.234877 -L 223.89321 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 375.70463 -L 244.832716 375.70463 -L 234.362963 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 375.70463 -L 244.832716 365.234877 -L 234.362963 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 375.70463 -L 255.302469 375.70463 -L 244.832716 365.234877 -z -" style="fill:#66ff90;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 375.70463 -L 255.302469 365.234877 -L 244.832716 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 375.70463 -L 265.772222 375.70463 -L 255.302469 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 375.70463 -L 265.772222 365.234877 -L 255.302469 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 375.70463 -L 276.241975 375.70463 -L 265.772222 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 375.70463 -L 276.241975 365.234877 -L 265.772222 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 375.70463 -L 286.711728 375.70463 -L 276.241975 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 375.70463 -L 286.711728 365.234877 -L 276.241975 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 375.70463 -L 297.181481 375.70463 -L 286.711728 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 375.70463 -L 297.181481 365.234877 -L 286.711728 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 375.70463 -L 307.651235 375.70463 -L 297.181481 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 375.70463 -L 307.651235 365.234877 -L 297.181481 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 375.70463 -L 318.120988 375.70463 -L 307.651235 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 375.70463 -L 318.120988 365.234877 -L 307.651235 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 375.70463 -L 328.590741 375.70463 -L 318.120988 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 375.70463 -L 328.590741 365.234877 -L 318.120988 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 375.70463 -L 339.060494 375.70463 -L 328.590741 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 375.70463 -L 339.060494 365.234877 -L 328.590741 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 375.70463 -L 349.530247 375.70463 -L 339.060494 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 375.70463 -L 349.530247 365.234877 -L 339.060494 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 375.70463 -L 360 375.70463 -L 349.530247 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 375.70463 -L 360 365.234877 -L 349.530247 365.234877 -z -" style="fill:#6aff8d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 375.70463 -L 370.469753 375.70463 -L 360 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 375.70463 -L 370.469753 365.234877 -L 360 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 375.70463 -L 380.939506 375.70463 -L 370.469753 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 375.70463 -L 380.939506 365.234877 -L 370.469753 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 375.70463 -L 391.409259 375.70463 -L 380.939506 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 375.70463 -L 391.409259 365.234877 -L 380.939506 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 375.70463 -L 401.879012 375.70463 -L 391.409259 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 375.70463 -L 401.879012 365.234877 -L 391.409259 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 375.70463 -L 412.348765 375.70463 -L 401.879012 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 375.70463 -L 412.348765 365.234877 -L 401.879012 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 375.70463 -L 422.818519 375.70463 -L 412.348765 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 375.70463 -L 422.818519 365.234877 -L 412.348765 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 375.70463 -L 433.288272 375.70463 -L 422.818519 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 375.70463 -L 433.288272 365.234877 -L 422.818519 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 375.70463 -L 443.758025 375.70463 -L 433.288272 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 375.70463 -L 443.758025 365.234877 -L 433.288272 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 375.70463 -L 454.227778 375.70463 -L 443.758025 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 375.70463 -L 454.227778 365.234877 -L 443.758025 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 375.70463 -L 464.697531 375.70463 -L 454.227778 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 375.70463 -L 464.697531 365.234877 -L 454.227778 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 375.70463 -L 475.167284 375.70463 -L 464.697531 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 375.70463 -L 475.167284 365.234877 -L 464.697531 365.234877 -z -" style="fill:#6dff8a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 375.70463 -L 485.637037 375.70463 -L 475.167284 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 375.70463 -L 485.637037 365.234877 -L 475.167284 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 375.70463 -L 496.10679 375.70463 -L 485.637037 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 375.70463 -L 496.10679 365.234877 -L 485.637037 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 375.70463 -L 506.576543 375.70463 -L 496.10679 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 375.70463 -L 506.576543 365.234877 -L 496.10679 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 375.70463 -L 517.046296 375.70463 -L 506.576543 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 375.70463 -L 517.046296 365.234877 -L 506.576543 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 375.70463 -L 527.516049 375.70463 -L 517.046296 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 375.70463 -L 527.516049 365.234877 -L 517.046296 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 375.70463 -L 537.985802 375.70463 -L 527.516049 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 375.70463 -L 537.985802 365.234877 -L 527.516049 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 375.70463 -L 548.455556 375.70463 -L 537.985802 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 375.70463 -L 548.455556 365.234877 -L 537.985802 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 375.70463 -L 558.925309 375.70463 -L 548.455556 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 375.70463 -L 558.925309 365.234877 -L 548.455556 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 375.70463 -L 569.395062 375.70463 -L 558.925309 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 375.70463 -L 569.395062 365.234877 -L 558.925309 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 375.70463 -L 579.864815 375.70463 -L 569.395062 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 375.70463 -L 579.864815 365.234877 -L 569.395062 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 375.70463 -L 590.334568 375.70463 -L 579.864815 365.234877 -z -" style="fill:#70ff87;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 375.70463 -L 590.334568 365.234877 -L 579.864815 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 375.70463 -L 600.804321 375.70463 -L 590.334568 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 375.70463 -L 600.804321 365.234877 -L 590.334568 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 375.70463 -L 611.274074 375.70463 -L 600.804321 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 375.70463 -L 611.274074 365.234877 -L 600.804321 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 375.70463 -L 621.743827 375.70463 -L 611.274074 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 375.70463 -L 621.743827 365.234877 -L 611.274074 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 375.70463 -L 632.21358 375.70463 -L 621.743827 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 375.70463 -L 632.21358 365.234877 -L 621.743827 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 375.70463 -L 642.683333 375.70463 -L 632.21358 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 375.70463 -L 642.683333 365.234877 -L 632.21358 365.234877 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 365.234877 -L 87.78642 365.234877 -L 77.316667 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 365.234877 -L 87.78642 354.765123 -L 77.316667 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 365.234877 -L 98.256173 365.234877 -L 87.78642 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 365.234877 -L 98.256173 354.765123 -L 87.78642 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 365.234877 -L 108.725926 365.234877 -L 98.256173 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 365.234877 -L 108.725926 354.765123 -L 98.256173 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 365.234877 -L 119.195679 365.234877 -L 108.725926 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 365.234877 -L 119.195679 354.765123 -L 108.725926 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 365.234877 -L 129.665432 365.234877 -L 119.195679 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 365.234877 -L 129.665432 354.765123 -L 119.195679 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 365.234877 -L 140.135185 365.234877 -L 129.665432 354.765123 -z -" style="fill:#73ff83;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 365.234877 -L 140.135185 354.765123 -L 129.665432 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 365.234877 -L 150.604938 365.234877 -L 140.135185 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 365.234877 -L 150.604938 354.765123 -L 140.135185 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 365.234877 -L 161.074691 365.234877 -L 150.604938 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 365.234877 -L 161.074691 354.765123 -L 150.604938 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 365.234877 -L 171.544444 365.234877 -L 161.074691 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 365.234877 -L 171.544444 354.765123 -L 161.074691 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 365.234877 -L 182.014198 365.234877 -L 171.544444 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 365.234877 -L 182.014198 354.765123 -L 171.544444 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 365.234877 -L 192.483951 365.234877 -L 182.014198 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 365.234877 -L 192.483951 354.765123 -L 182.014198 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 365.234877 -L 202.953704 365.234877 -L 192.483951 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 365.234877 -L 202.953704 354.765123 -L 192.483951 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 365.234877 -L 213.423457 365.234877 -L 202.953704 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 365.234877 -L 213.423457 354.765123 -L 202.953704 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 365.234877 -L 223.89321 365.234877 -L 213.423457 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 365.234877 -L 223.89321 354.765123 -L 213.423457 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 365.234877 -L 234.362963 365.234877 -L 223.89321 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 365.234877 -L 234.362963 354.765123 -L 223.89321 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 365.234877 -L 244.832716 365.234877 -L 234.362963 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 365.234877 -L 244.832716 354.765123 -L 234.362963 354.765123 -z -" style="fill:#77ff80;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 365.234877 -L 255.302469 365.234877 -L 244.832716 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 365.234877 -L 255.302469 354.765123 -L 244.832716 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 365.234877 -L 265.772222 365.234877 -L 255.302469 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 365.234877 -L 265.772222 354.765123 -L 255.302469 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 365.234877 -L 276.241975 365.234877 -L 265.772222 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 365.234877 -L 276.241975 354.765123 -L 265.772222 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 365.234877 -L 286.711728 365.234877 -L 276.241975 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 365.234877 -L 286.711728 354.765123 -L 276.241975 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 365.234877 -L 297.181481 365.234877 -L 286.711728 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 365.234877 -L 297.181481 354.765123 -L 286.711728 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 365.234877 -L 307.651235 365.234877 -L 297.181481 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 365.234877 -L 307.651235 354.765123 -L 297.181481 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 365.234877 -L 318.120988 365.234877 -L 307.651235 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 365.234877 -L 318.120988 354.765123 -L 307.651235 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 365.234877 -L 328.590741 365.234877 -L 318.120988 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 365.234877 -L 328.590741 354.765123 -L 318.120988 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 365.234877 -L 339.060494 365.234877 -L 328.590741 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 365.234877 -L 339.060494 354.765123 -L 328.590741 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 365.234877 -L 349.530247 365.234877 -L 339.060494 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 365.234877 -L 349.530247 354.765123 -L 339.060494 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 365.234877 -L 360 365.234877 -L 349.530247 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 365.234877 -L 360 354.765123 -L 349.530247 354.765123 -z -" style="fill:#7aff7d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 365.234877 -L 370.469753 365.234877 -L 360 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 365.234877 -L 370.469753 354.765123 -L 360 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 365.234877 -L 380.939506 365.234877 -L 370.469753 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 365.234877 -L 380.939506 354.765123 -L 370.469753 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 365.234877 -L 391.409259 365.234877 -L 380.939506 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 365.234877 -L 391.409259 354.765123 -L 380.939506 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 365.234877 -L 401.879012 365.234877 -L 391.409259 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 365.234877 -L 401.879012 354.765123 -L 391.409259 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 365.234877 -L 412.348765 365.234877 -L 401.879012 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 365.234877 -L 412.348765 354.765123 -L 401.879012 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 365.234877 -L 422.818519 365.234877 -L 412.348765 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 365.234877 -L 422.818519 354.765123 -L 412.348765 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 365.234877 -L 433.288272 365.234877 -L 422.818519 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 365.234877 -L 433.288272 354.765123 -L 422.818519 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 365.234877 -L 443.758025 365.234877 -L 433.288272 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 365.234877 -L 443.758025 354.765123 -L 433.288272 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 365.234877 -L 454.227778 365.234877 -L 443.758025 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 365.234877 -L 454.227778 354.765123 -L 443.758025 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 365.234877 -L 464.697531 365.234877 -L 454.227778 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 365.234877 -L 464.697531 354.765123 -L 454.227778 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 365.234877 -L 475.167284 365.234877 -L 464.697531 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 365.234877 -L 475.167284 354.765123 -L 464.697531 354.765123 -z -" style="fill:#7dff7a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 365.234877 -L 485.637037 365.234877 -L 475.167284 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 365.234877 -L 485.637037 354.765123 -L 475.167284 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 365.234877 -L 496.10679 365.234877 -L 485.637037 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 365.234877 -L 496.10679 354.765123 -L 485.637037 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 365.234877 -L 506.576543 365.234877 -L 496.10679 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 365.234877 -L 506.576543 354.765123 -L 496.10679 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 365.234877 -L 517.046296 365.234877 -L 506.576543 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 365.234877 -L 517.046296 354.765123 -L 506.576543 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 365.234877 -L 527.516049 365.234877 -L 517.046296 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 365.234877 -L 527.516049 354.765123 -L 517.046296 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 365.234877 -L 537.985802 365.234877 -L 527.516049 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 365.234877 -L 537.985802 354.765123 -L 527.516049 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 365.234877 -L 548.455556 365.234877 -L 537.985802 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 365.234877 -L 548.455556 354.765123 -L 537.985802 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 365.234877 -L 558.925309 365.234877 -L 548.455556 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 365.234877 -L 558.925309 354.765123 -L 548.455556 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 365.234877 -L 569.395062 365.234877 -L 558.925309 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 365.234877 -L 569.395062 354.765123 -L 558.925309 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 365.234877 -L 579.864815 365.234877 -L 569.395062 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 365.234877 -L 579.864815 354.765123 -L 569.395062 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 365.234877 -L 590.334568 365.234877 -L 579.864815 354.765123 -z -" style="fill:#80ff77;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 365.234877 -L 590.334568 354.765123 -L 579.864815 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 365.234877 -L 600.804321 365.234877 -L 590.334568 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 365.234877 -L 600.804321 354.765123 -L 590.334568 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 365.234877 -L 611.274074 365.234877 -L 600.804321 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 365.234877 -L 611.274074 354.765123 -L 600.804321 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 365.234877 -L 621.743827 365.234877 -L 611.274074 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 365.234877 -L 621.743827 354.765123 -L 611.274074 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 365.234877 -L 632.21358 365.234877 -L 621.743827 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 365.234877 -L 632.21358 354.765123 -L 621.743827 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 365.234877 -L 642.683333 365.234877 -L 632.21358 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 365.234877 -L 642.683333 354.765123 -L 632.21358 354.765123 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 354.765123 -L 87.78642 354.765123 -L 77.316667 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 354.765123 -L 87.78642 344.29537 -L 77.316667 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 354.765123 -L 98.256173 354.765123 -L 87.78642 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 354.765123 -L 98.256173 344.29537 -L 87.78642 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 354.765123 -L 108.725926 354.765123 -L 98.256173 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 354.765123 -L 108.725926 344.29537 -L 98.256173 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 354.765123 -L 119.195679 354.765123 -L 108.725926 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 354.765123 -L 119.195679 344.29537 -L 108.725926 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 354.765123 -L 129.665432 354.765123 -L 119.195679 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 354.765123 -L 129.665432 344.29537 -L 119.195679 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 354.765123 -L 140.135185 354.765123 -L 129.665432 344.29537 -z -" style="fill:#83ff73;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 354.765123 -L 140.135185 344.29537 -L 129.665432 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 354.765123 -L 150.604938 354.765123 -L 140.135185 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 354.765123 -L 150.604938 344.29537 -L 140.135185 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 354.765123 -L 161.074691 354.765123 -L 150.604938 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 354.765123 -L 161.074691 344.29537 -L 150.604938 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 354.765123 -L 171.544444 354.765123 -L 161.074691 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 354.765123 -L 171.544444 344.29537 -L 161.074691 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 354.765123 -L 182.014198 354.765123 -L 171.544444 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 354.765123 -L 182.014198 344.29537 -L 171.544444 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 354.765123 -L 192.483951 354.765123 -L 182.014198 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 354.765123 -L 192.483951 344.29537 -L 182.014198 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 354.765123 -L 202.953704 354.765123 -L 192.483951 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 354.765123 -L 202.953704 344.29537 -L 192.483951 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 354.765123 -L 213.423457 354.765123 -L 202.953704 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 354.765123 -L 213.423457 344.29537 -L 202.953704 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 354.765123 -L 223.89321 354.765123 -L 213.423457 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 354.765123 -L 223.89321 344.29537 -L 213.423457 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 354.765123 -L 234.362963 354.765123 -L 223.89321 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 354.765123 -L 234.362963 344.29537 -L 223.89321 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 354.765123 -L 244.832716 354.765123 -L 234.362963 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 354.765123 -L 244.832716 344.29537 -L 234.362963 344.29537 -z -" style="fill:#87ff70;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 354.765123 -L 255.302469 354.765123 -L 244.832716 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 354.765123 -L 255.302469 344.29537 -L 244.832716 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 354.765123 -L 265.772222 354.765123 -L 255.302469 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 354.765123 -L 265.772222 344.29537 -L 255.302469 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 354.765123 -L 276.241975 354.765123 -L 265.772222 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 354.765123 -L 276.241975 344.29537 -L 265.772222 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 354.765123 -L 286.711728 354.765123 -L 276.241975 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 354.765123 -L 286.711728 344.29537 -L 276.241975 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 354.765123 -L 297.181481 354.765123 -L 286.711728 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 354.765123 -L 297.181481 344.29537 -L 286.711728 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 354.765123 -L 307.651235 354.765123 -L 297.181481 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 354.765123 -L 307.651235 344.29537 -L 297.181481 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 354.765123 -L 318.120988 354.765123 -L 307.651235 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 354.765123 -L 318.120988 344.29537 -L 307.651235 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 354.765123 -L 328.590741 354.765123 -L 318.120988 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 354.765123 -L 328.590741 344.29537 -L 318.120988 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 354.765123 -L 339.060494 354.765123 -L 328.590741 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 354.765123 -L 339.060494 344.29537 -L 328.590741 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 354.765123 -L 349.530247 354.765123 -L 339.060494 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 354.765123 -L 349.530247 344.29537 -L 339.060494 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 354.765123 -L 360 354.765123 -L 349.530247 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 354.765123 -L 360 344.29537 -L 349.530247 344.29537 -z -" style="fill:#8aff6d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 354.765123 -L 370.469753 354.765123 -L 360 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 354.765123 -L 370.469753 344.29537 -L 360 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 354.765123 -L 380.939506 354.765123 -L 370.469753 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 354.765123 -L 380.939506 344.29537 -L 370.469753 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 354.765123 -L 391.409259 354.765123 -L 380.939506 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 354.765123 -L 391.409259 344.29537 -L 380.939506 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 354.765123 -L 401.879012 354.765123 -L 391.409259 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 354.765123 -L 401.879012 344.29537 -L 391.409259 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 354.765123 -L 412.348765 354.765123 -L 401.879012 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 354.765123 -L 412.348765 344.29537 -L 401.879012 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 354.765123 -L 422.818519 354.765123 -L 412.348765 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 354.765123 -L 422.818519 344.29537 -L 412.348765 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 354.765123 -L 433.288272 354.765123 -L 422.818519 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 354.765123 -L 433.288272 344.29537 -L 422.818519 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 354.765123 -L 443.758025 354.765123 -L 433.288272 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 354.765123 -L 443.758025 344.29537 -L 433.288272 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 354.765123 -L 454.227778 354.765123 -L 443.758025 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 354.765123 -L 454.227778 344.29537 -L 443.758025 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 354.765123 -L 464.697531 354.765123 -L 454.227778 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 354.765123 -L 464.697531 344.29537 -L 454.227778 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 354.765123 -L 475.167284 354.765123 -L 464.697531 344.29537 -z -" style="fill:#8dff6a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 354.765123 -L 475.167284 344.29537 -L 464.697531 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 354.765123 -L 485.637037 354.765123 -L 475.167284 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 354.765123 -L 485.637037 344.29537 -L 475.167284 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 354.765123 -L 496.10679 354.765123 -L 485.637037 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 354.765123 -L 496.10679 344.29537 -L 485.637037 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 354.765123 -L 506.576543 354.765123 -L 496.10679 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 354.765123 -L 506.576543 344.29537 -L 496.10679 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 354.765123 -L 517.046296 354.765123 -L 506.576543 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 354.765123 -L 517.046296 344.29537 -L 506.576543 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 354.765123 -L 527.516049 354.765123 -L 517.046296 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 354.765123 -L 527.516049 344.29537 -L 517.046296 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 354.765123 -L 537.985802 354.765123 -L 527.516049 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 354.765123 -L 537.985802 344.29537 -L 527.516049 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 354.765123 -L 548.455556 354.765123 -L 537.985802 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 354.765123 -L 548.455556 344.29537 -L 537.985802 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 354.765123 -L 558.925309 354.765123 -L 548.455556 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 354.765123 -L 558.925309 344.29537 -L 548.455556 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 354.765123 -L 569.395062 354.765123 -L 558.925309 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 354.765123 -L 569.395062 344.29537 -L 558.925309 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 354.765123 -L 579.864815 354.765123 -L 569.395062 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 354.765123 -L 579.864815 344.29537 -L 569.395062 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 354.765123 -L 590.334568 354.765123 -L 579.864815 344.29537 -z -" style="fill:#90ff66;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 354.765123 -L 590.334568 344.29537 -L 579.864815 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 354.765123 -L 600.804321 354.765123 -L 590.334568 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 354.765123 -L 600.804321 344.29537 -L 590.334568 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 354.765123 -L 611.274074 354.765123 -L 600.804321 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 354.765123 -L 611.274074 344.29537 -L 600.804321 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 354.765123 -L 621.743827 354.765123 -L 611.274074 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 354.765123 -L 621.743827 344.29537 -L 611.274074 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 354.765123 -L 632.21358 354.765123 -L 621.743827 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 354.765123 -L 632.21358 344.29537 -L 621.743827 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 354.765123 -L 642.683333 354.765123 -L 632.21358 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 354.765123 -L 642.683333 344.29537 -L 632.21358 344.29537 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 344.29537 -L 87.78642 344.29537 -L 77.316667 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 344.29537 -L 87.78642 333.825617 -L 77.316667 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 344.29537 -L 98.256173 344.29537 -L 87.78642 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 344.29537 -L 98.256173 333.825617 -L 87.78642 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 344.29537 -L 108.725926 344.29537 -L 98.256173 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 344.29537 -L 108.725926 333.825617 -L 98.256173 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 344.29537 -L 119.195679 344.29537 -L 108.725926 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 344.29537 -L 119.195679 333.825617 -L 108.725926 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 344.29537 -L 129.665432 344.29537 -L 119.195679 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 344.29537 -L 129.665432 333.825617 -L 119.195679 333.825617 -z -" style="fill:#94ff63;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 344.29537 -L 140.135185 344.29537 -L 129.665432 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 344.29537 -L 140.135185 333.825617 -L 129.665432 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 344.29537 -L 150.604938 344.29537 -L 140.135185 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 344.29537 -L 150.604938 333.825617 -L 140.135185 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 344.29537 -L 161.074691 344.29537 -L 150.604938 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 344.29537 -L 161.074691 333.825617 -L 150.604938 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 344.29537 -L 171.544444 344.29537 -L 161.074691 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 344.29537 -L 171.544444 333.825617 -L 161.074691 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 344.29537 -L 182.014198 344.29537 -L 171.544444 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 344.29537 -L 182.014198 333.825617 -L 171.544444 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 344.29537 -L 192.483951 344.29537 -L 182.014198 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 344.29537 -L 192.483951 333.825617 -L 182.014198 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 344.29537 -L 202.953704 344.29537 -L 192.483951 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 344.29537 -L 202.953704 333.825617 -L 192.483951 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 344.29537 -L 213.423457 344.29537 -L 202.953704 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 344.29537 -L 213.423457 333.825617 -L 202.953704 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 344.29537 -L 223.89321 344.29537 -L 213.423457 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 344.29537 -L 223.89321 333.825617 -L 213.423457 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 344.29537 -L 234.362963 344.29537 -L 223.89321 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 344.29537 -L 234.362963 333.825617 -L 223.89321 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 344.29537 -L 244.832716 344.29537 -L 234.362963 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 344.29537 -L 244.832716 333.825617 -L 234.362963 333.825617 -z -" style="fill:#97ff60;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 344.29537 -L 255.302469 344.29537 -L 244.832716 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 344.29537 -L 255.302469 333.825617 -L 244.832716 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 344.29537 -L 265.772222 344.29537 -L 255.302469 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 344.29537 -L 265.772222 333.825617 -L 255.302469 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 344.29537 -L 276.241975 344.29537 -L 265.772222 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 344.29537 -L 276.241975 333.825617 -L 265.772222 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 344.29537 -L 286.711728 344.29537 -L 276.241975 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 344.29537 -L 286.711728 333.825617 -L 276.241975 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 344.29537 -L 297.181481 344.29537 -L 286.711728 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 344.29537 -L 297.181481 333.825617 -L 286.711728 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 344.29537 -L 307.651235 344.29537 -L 297.181481 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 344.29537 -L 307.651235 333.825617 -L 297.181481 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 344.29537 -L 318.120988 344.29537 -L 307.651235 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 344.29537 -L 318.120988 333.825617 -L 307.651235 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 344.29537 -L 328.590741 344.29537 -L 318.120988 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 344.29537 -L 328.590741 333.825617 -L 318.120988 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 344.29537 -L 339.060494 344.29537 -L 328.590741 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 344.29537 -L 339.060494 333.825617 -L 328.590741 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 344.29537 -L 349.530247 344.29537 -L 339.060494 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 344.29537 -L 349.530247 333.825617 -L 339.060494 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 344.29537 -L 360 344.29537 -L 349.530247 333.825617 -z -" style="fill:#9aff5d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 344.29537 -L 360 333.825617 -L 349.530247 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 344.29537 -L 370.469753 344.29537 -L 360 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 344.29537 -L 370.469753 333.825617 -L 360 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 344.29537 -L 380.939506 344.29537 -L 370.469753 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 344.29537 -L 380.939506 333.825617 -L 370.469753 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 344.29537 -L 391.409259 344.29537 -L 380.939506 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 344.29537 -L 391.409259 333.825617 -L 380.939506 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 344.29537 -L 401.879012 344.29537 -L 391.409259 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 344.29537 -L 401.879012 333.825617 -L 391.409259 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 344.29537 -L 412.348765 344.29537 -L 401.879012 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 344.29537 -L 412.348765 333.825617 -L 401.879012 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 344.29537 -L 422.818519 344.29537 -L 412.348765 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 344.29537 -L 422.818519 333.825617 -L 412.348765 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 344.29537 -L 433.288272 344.29537 -L 422.818519 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 344.29537 -L 433.288272 333.825617 -L 422.818519 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 344.29537 -L 443.758025 344.29537 -L 433.288272 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 344.29537 -L 443.758025 333.825617 -L 433.288272 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 344.29537 -L 454.227778 344.29537 -L 443.758025 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 344.29537 -L 454.227778 333.825617 -L 443.758025 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 344.29537 -L 464.697531 344.29537 -L 454.227778 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 344.29537 -L 464.697531 333.825617 -L 454.227778 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 344.29537 -L 475.167284 344.29537 -L 464.697531 333.825617 -z -" style="fill:#9dff5a;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 344.29537 -L 475.167284 333.825617 -L 464.697531 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 344.29537 -L 485.637037 344.29537 -L 475.167284 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 344.29537 -L 485.637037 333.825617 -L 475.167284 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 344.29537 -L 496.10679 344.29537 -L 485.637037 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 344.29537 -L 496.10679 333.825617 -L 485.637037 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 344.29537 -L 506.576543 344.29537 -L 496.10679 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 344.29537 -L 506.576543 333.825617 -L 496.10679 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 344.29537 -L 517.046296 344.29537 -L 506.576543 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 344.29537 -L 517.046296 333.825617 -L 506.576543 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 344.29537 -L 527.516049 344.29537 -L 517.046296 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 344.29537 -L 527.516049 333.825617 -L 517.046296 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 344.29537 -L 537.985802 344.29537 -L 527.516049 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 344.29537 -L 537.985802 333.825617 -L 527.516049 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 344.29537 -L 548.455556 344.29537 -L 537.985802 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 344.29537 -L 548.455556 333.825617 -L 537.985802 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 344.29537 -L 558.925309 344.29537 -L 548.455556 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 344.29537 -L 558.925309 333.825617 -L 548.455556 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 344.29537 -L 569.395062 344.29537 -L 558.925309 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 344.29537 -L 569.395062 333.825617 -L 558.925309 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 344.29537 -L 579.864815 344.29537 -L 569.395062 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 344.29537 -L 579.864815 333.825617 -L 569.395062 333.825617 -z -" style="fill:#a0ff56;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 344.29537 -L 590.334568 344.29537 -L 579.864815 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 344.29537 -L 590.334568 333.825617 -L 579.864815 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 344.29537 -L 600.804321 344.29537 -L 590.334568 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 344.29537 -L 600.804321 333.825617 -L 590.334568 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 344.29537 -L 611.274074 344.29537 -L 600.804321 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 344.29537 -L 611.274074 333.825617 -L 600.804321 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 344.29537 -L 621.743827 344.29537 -L 611.274074 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 344.29537 -L 621.743827 333.825617 -L 611.274074 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 344.29537 -L 632.21358 344.29537 -L 621.743827 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 344.29537 -L 632.21358 333.825617 -L 621.743827 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 344.29537 -L 642.683333 344.29537 -L 632.21358 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 344.29537 -L 642.683333 333.825617 -L 632.21358 333.825617 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 333.825617 -L 87.78642 333.825617 -L 77.316667 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 333.825617 -L 87.78642 323.355864 -L 77.316667 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 333.825617 -L 98.256173 333.825617 -L 87.78642 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 333.825617 -L 98.256173 323.355864 -L 87.78642 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 333.825617 -L 108.725926 333.825617 -L 98.256173 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 333.825617 -L 108.725926 323.355864 -L 98.256173 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 333.825617 -L 119.195679 333.825617 -L 108.725926 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 333.825617 -L 119.195679 323.355864 -L 108.725926 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 333.825617 -L 129.665432 333.825617 -L 119.195679 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 333.825617 -L 129.665432 323.355864 -L 119.195679 323.355864 -z -" style="fill:#a4ff53;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 333.825617 -L 140.135185 333.825617 -L 129.665432 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 333.825617 -L 140.135185 323.355864 -L 129.665432 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 333.825617 -L 150.604938 333.825617 -L 140.135185 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 333.825617 -L 150.604938 323.355864 -L 140.135185 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 333.825617 -L 161.074691 333.825617 -L 150.604938 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 333.825617 -L 161.074691 323.355864 -L 150.604938 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 333.825617 -L 171.544444 333.825617 -L 161.074691 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 333.825617 -L 171.544444 323.355864 -L 161.074691 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 333.825617 -L 182.014198 333.825617 -L 171.544444 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 333.825617 -L 182.014198 323.355864 -L 171.544444 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 333.825617 -L 192.483951 333.825617 -L 182.014198 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 333.825617 -L 192.483951 323.355864 -L 182.014198 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 333.825617 -L 202.953704 333.825617 -L 192.483951 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 333.825617 -L 202.953704 323.355864 -L 192.483951 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 333.825617 -L 213.423457 333.825617 -L 202.953704 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 333.825617 -L 213.423457 323.355864 -L 202.953704 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 333.825617 -L 223.89321 333.825617 -L 213.423457 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 333.825617 -L 223.89321 323.355864 -L 213.423457 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 333.825617 -L 234.362963 333.825617 -L 223.89321 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 333.825617 -L 234.362963 323.355864 -L 223.89321 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 333.825617 -L 244.832716 333.825617 -L 234.362963 323.355864 -z -" style="fill:#a7ff50;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 333.825617 -L 244.832716 323.355864 -L 234.362963 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 333.825617 -L 255.302469 333.825617 -L 244.832716 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 333.825617 -L 255.302469 323.355864 -L 244.832716 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 333.825617 -L 265.772222 333.825617 -L 255.302469 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 333.825617 -L 265.772222 323.355864 -L 255.302469 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 333.825617 -L 276.241975 333.825617 -L 265.772222 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 333.825617 -L 276.241975 323.355864 -L 265.772222 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 333.825617 -L 286.711728 333.825617 -L 276.241975 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 333.825617 -L 286.711728 323.355864 -L 276.241975 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 333.825617 -L 297.181481 333.825617 -L 286.711728 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 333.825617 -L 297.181481 323.355864 -L 286.711728 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 333.825617 -L 307.651235 333.825617 -L 297.181481 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 333.825617 -L 307.651235 323.355864 -L 297.181481 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 333.825617 -L 318.120988 333.825617 -L 307.651235 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 333.825617 -L 318.120988 323.355864 -L 307.651235 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 333.825617 -L 328.590741 333.825617 -L 318.120988 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 333.825617 -L 328.590741 323.355864 -L 318.120988 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 333.825617 -L 339.060494 333.825617 -L 328.590741 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 333.825617 -L 339.060494 323.355864 -L 328.590741 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 333.825617 -L 349.530247 333.825617 -L 339.060494 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 333.825617 -L 349.530247 323.355864 -L 339.060494 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 333.825617 -L 360 333.825617 -L 349.530247 323.355864 -z -" style="fill:#aaff4d;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 333.825617 -L 360 323.355864 -L 349.530247 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 333.825617 -L 370.469753 333.825617 -L 360 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 333.825617 -L 370.469753 323.355864 -L 360 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 333.825617 -L 380.939506 333.825617 -L 370.469753 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 333.825617 -L 380.939506 323.355864 -L 370.469753 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 333.825617 -L 391.409259 333.825617 -L 380.939506 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 333.825617 -L 391.409259 323.355864 -L 380.939506 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 333.825617 -L 401.879012 333.825617 -L 391.409259 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 333.825617 -L 401.879012 323.355864 -L 391.409259 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 333.825617 -L 412.348765 333.825617 -L 401.879012 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 333.825617 -L 412.348765 323.355864 -L 401.879012 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 333.825617 -L 422.818519 333.825617 -L 412.348765 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 333.825617 -L 422.818519 323.355864 -L 412.348765 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 333.825617 -L 433.288272 333.825617 -L 422.818519 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 333.825617 -L 433.288272 323.355864 -L 422.818519 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 333.825617 -L 443.758025 333.825617 -L 433.288272 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 333.825617 -L 443.758025 323.355864 -L 433.288272 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 333.825617 -L 454.227778 333.825617 -L 443.758025 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 333.825617 -L 454.227778 323.355864 -L 443.758025 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 333.825617 -L 464.697531 333.825617 -L 454.227778 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 333.825617 -L 464.697531 323.355864 -L 454.227778 323.355864 -z -" style="fill:#adff49;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 333.825617 -L 475.167284 333.825617 -L 464.697531 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 333.825617 -L 475.167284 323.355864 -L 464.697531 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 333.825617 -L 485.637037 333.825617 -L 475.167284 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 333.825617 -L 485.637037 323.355864 -L 475.167284 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 333.825617 -L 496.10679 333.825617 -L 485.637037 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 333.825617 -L 496.10679 323.355864 -L 485.637037 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 333.825617 -L 506.576543 333.825617 -L 496.10679 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 333.825617 -L 506.576543 323.355864 -L 496.10679 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 333.825617 -L 517.046296 333.825617 -L 506.576543 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 333.825617 -L 517.046296 323.355864 -L 506.576543 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 333.825617 -L 527.516049 333.825617 -L 517.046296 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 333.825617 -L 527.516049 323.355864 -L 517.046296 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 333.825617 -L 537.985802 333.825617 -L 527.516049 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 333.825617 -L 537.985802 323.355864 -L 527.516049 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 333.825617 -L 548.455556 333.825617 -L 537.985802 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 333.825617 -L 548.455556 323.355864 -L 537.985802 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 333.825617 -L 558.925309 333.825617 -L 548.455556 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 333.825617 -L 558.925309 323.355864 -L 548.455556 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 333.825617 -L 569.395062 333.825617 -L 558.925309 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 333.825617 -L 569.395062 323.355864 -L 558.925309 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 333.825617 -L 579.864815 333.825617 -L 569.395062 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 333.825617 -L 579.864815 323.355864 -L 569.395062 323.355864 -z -" style="fill:#b1ff46;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 333.825617 -L 590.334568 333.825617 -L 579.864815 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 333.825617 -L 590.334568 323.355864 -L 579.864815 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 333.825617 -L 600.804321 333.825617 -L 590.334568 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 333.825617 -L 600.804321 323.355864 -L 590.334568 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 333.825617 -L 611.274074 333.825617 -L 600.804321 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 333.825617 -L 611.274074 323.355864 -L 600.804321 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 333.825617 -L 621.743827 333.825617 -L 611.274074 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 333.825617 -L 621.743827 323.355864 -L 611.274074 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 333.825617 -L 632.21358 333.825617 -L 621.743827 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 333.825617 -L 632.21358 323.355864 -L 621.743827 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 333.825617 -L 642.683333 333.825617 -L 632.21358 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 333.825617 -L 642.683333 323.355864 -L 632.21358 323.355864 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 323.355864 -L 87.78642 323.355864 -L 77.316667 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 323.355864 -L 87.78642 312.886111 -L 77.316667 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 323.355864 -L 98.256173 323.355864 -L 87.78642 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 323.355864 -L 98.256173 312.886111 -L 87.78642 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 323.355864 -L 108.725926 323.355864 -L 98.256173 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 323.355864 -L 108.725926 312.886111 -L 98.256173 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 323.355864 -L 119.195679 323.355864 -L 108.725926 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 323.355864 -L 119.195679 312.886111 -L 108.725926 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 323.355864 -L 129.665432 323.355864 -L 119.195679 312.886111 -z -" style="fill:#b4ff43;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 323.355864 -L 129.665432 312.886111 -L 119.195679 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 323.355864 -L 140.135185 323.355864 -L 129.665432 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 323.355864 -L 140.135185 312.886111 -L 129.665432 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 323.355864 -L 150.604938 323.355864 -L 140.135185 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 323.355864 -L 150.604938 312.886111 -L 140.135185 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 323.355864 -L 161.074691 323.355864 -L 150.604938 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 323.355864 -L 161.074691 312.886111 -L 150.604938 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 323.355864 -L 171.544444 323.355864 -L 161.074691 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 323.355864 -L 171.544444 312.886111 -L 161.074691 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 323.355864 -L 182.014198 323.355864 -L 171.544444 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 323.355864 -L 182.014198 312.886111 -L 171.544444 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 323.355864 -L 192.483951 323.355864 -L 182.014198 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 323.355864 -L 192.483951 312.886111 -L 182.014198 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 323.355864 -L 202.953704 323.355864 -L 192.483951 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 323.355864 -L 202.953704 312.886111 -L 192.483951 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 323.355864 -L 213.423457 323.355864 -L 202.953704 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 323.355864 -L 213.423457 312.886111 -L 202.953704 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 323.355864 -L 223.89321 323.355864 -L 213.423457 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 323.355864 -L 223.89321 312.886111 -L 213.423457 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 323.355864 -L 234.362963 323.355864 -L 223.89321 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 323.355864 -L 234.362963 312.886111 -L 223.89321 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 323.355864 -L 244.832716 323.355864 -L 234.362963 312.886111 -z -" style="fill:#b7ff40;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 323.355864 -L 244.832716 312.886111 -L 234.362963 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 323.355864 -L 255.302469 323.355864 -L 244.832716 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 323.355864 -L 255.302469 312.886111 -L 244.832716 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 323.355864 -L 265.772222 323.355864 -L 255.302469 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 323.355864 -L 265.772222 312.886111 -L 255.302469 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 323.355864 -L 276.241975 323.355864 -L 265.772222 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 323.355864 -L 276.241975 312.886111 -L 265.772222 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 323.355864 -L 286.711728 323.355864 -L 276.241975 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 323.355864 -L 286.711728 312.886111 -L 276.241975 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 323.355864 -L 297.181481 323.355864 -L 286.711728 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 323.355864 -L 297.181481 312.886111 -L 286.711728 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 323.355864 -L 307.651235 323.355864 -L 297.181481 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 323.355864 -L 307.651235 312.886111 -L 297.181481 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 323.355864 -L 318.120988 323.355864 -L 307.651235 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 323.355864 -L 318.120988 312.886111 -L 307.651235 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 323.355864 -L 328.590741 323.355864 -L 318.120988 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 323.355864 -L 328.590741 312.886111 -L 318.120988 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 323.355864 -L 339.060494 323.355864 -L 328.590741 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 323.355864 -L 339.060494 312.886111 -L 328.590741 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 323.355864 -L 349.530247 323.355864 -L 339.060494 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 323.355864 -L 349.530247 312.886111 -L 339.060494 312.886111 -z -" style="fill:#baff3c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 323.355864 -L 360 323.355864 -L 349.530247 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 323.355864 -L 360 312.886111 -L 349.530247 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 323.355864 -L 370.469753 323.355864 -L 360 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 323.355864 -L 370.469753 312.886111 -L 360 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 323.355864 -L 380.939506 323.355864 -L 370.469753 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 323.355864 -L 380.939506 312.886111 -L 370.469753 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 323.355864 -L 391.409259 323.355864 -L 380.939506 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 323.355864 -L 391.409259 312.886111 -L 380.939506 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 323.355864 -L 401.879012 323.355864 -L 391.409259 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 323.355864 -L 401.879012 312.886111 -L 391.409259 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 323.355864 -L 412.348765 323.355864 -L 401.879012 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 323.355864 -L 412.348765 312.886111 -L 401.879012 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 323.355864 -L 422.818519 323.355864 -L 412.348765 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 323.355864 -L 422.818519 312.886111 -L 412.348765 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 323.355864 -L 433.288272 323.355864 -L 422.818519 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 323.355864 -L 433.288272 312.886111 -L 422.818519 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 323.355864 -L 443.758025 323.355864 -L 433.288272 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 323.355864 -L 443.758025 312.886111 -L 433.288272 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 323.355864 -L 454.227778 323.355864 -L 443.758025 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 323.355864 -L 454.227778 312.886111 -L 443.758025 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 323.355864 -L 464.697531 323.355864 -L 454.227778 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 323.355864 -L 464.697531 312.886111 -L 454.227778 312.886111 -z -" style="fill:#beff39;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 323.355864 -L 475.167284 323.355864 -L 464.697531 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 323.355864 -L 475.167284 312.886111 -L 464.697531 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 323.355864 -L 485.637037 323.355864 -L 475.167284 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 323.355864 -L 485.637037 312.886111 -L 475.167284 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 323.355864 -L 496.10679 323.355864 -L 485.637037 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 323.355864 -L 496.10679 312.886111 -L 485.637037 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 323.355864 -L 506.576543 323.355864 -L 496.10679 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 323.355864 -L 506.576543 312.886111 -L 496.10679 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 323.355864 -L 517.046296 323.355864 -L 506.576543 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 323.355864 -L 517.046296 312.886111 -L 506.576543 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 323.355864 -L 527.516049 323.355864 -L 517.046296 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 323.355864 -L 527.516049 312.886111 -L 517.046296 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 323.355864 -L 537.985802 323.355864 -L 527.516049 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 323.355864 -L 537.985802 312.886111 -L 527.516049 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 323.355864 -L 548.455556 323.355864 -L 537.985802 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 323.355864 -L 548.455556 312.886111 -L 537.985802 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 323.355864 -L 558.925309 323.355864 -L 548.455556 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 323.355864 -L 558.925309 312.886111 -L 548.455556 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 323.355864 -L 569.395062 323.355864 -L 558.925309 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 323.355864 -L 569.395062 312.886111 -L 558.925309 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 323.355864 -L 579.864815 323.355864 -L 569.395062 312.886111 -z -" style="fill:#c1ff36;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 323.355864 -L 579.864815 312.886111 -L 569.395062 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 323.355864 -L 590.334568 323.355864 -L 579.864815 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 323.355864 -L 590.334568 312.886111 -L 579.864815 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 323.355864 -L 600.804321 323.355864 -L 590.334568 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 323.355864 -L 600.804321 312.886111 -L 590.334568 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 323.355864 -L 611.274074 323.355864 -L 600.804321 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 323.355864 -L 611.274074 312.886111 -L 600.804321 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 323.355864 -L 621.743827 323.355864 -L 611.274074 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 323.355864 -L 621.743827 312.886111 -L 611.274074 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 323.355864 -L 632.21358 323.355864 -L 621.743827 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 323.355864 -L 632.21358 312.886111 -L 621.743827 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 323.355864 -L 642.683333 323.355864 -L 632.21358 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 323.355864 -L 642.683333 312.886111 -L 632.21358 312.886111 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 312.886111 -L 87.78642 312.886111 -L 77.316667 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 312.886111 -L 87.78642 302.416358 -L 77.316667 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 312.886111 -L 98.256173 312.886111 -L 87.78642 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 312.886111 -L 98.256173 302.416358 -L 87.78642 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 312.886111 -L 108.725926 312.886111 -L 98.256173 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 312.886111 -L 108.725926 302.416358 -L 98.256173 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 312.886111 -L 119.195679 312.886111 -L 108.725926 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 312.886111 -L 119.195679 302.416358 -L 108.725926 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 312.886111 -L 129.665432 312.886111 -L 119.195679 302.416358 -z -" style="fill:#c4ff33;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 312.886111 -L 129.665432 302.416358 -L 119.195679 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 312.886111 -L 140.135185 312.886111 -L 129.665432 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 312.886111 -L 140.135185 302.416358 -L 129.665432 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 312.886111 -L 150.604938 312.886111 -L 140.135185 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 312.886111 -L 150.604938 302.416358 -L 140.135185 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 312.886111 -L 161.074691 312.886111 -L 150.604938 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 312.886111 -L 161.074691 302.416358 -L 150.604938 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 312.886111 -L 171.544444 312.886111 -L 161.074691 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 312.886111 -L 171.544444 302.416358 -L 161.074691 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 312.886111 -L 182.014198 312.886111 -L 171.544444 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 312.886111 -L 182.014198 302.416358 -L 171.544444 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 312.886111 -L 192.483951 312.886111 -L 182.014198 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 312.886111 -L 192.483951 302.416358 -L 182.014198 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 312.886111 -L 202.953704 312.886111 -L 192.483951 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 312.886111 -L 202.953704 302.416358 -L 192.483951 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 312.886111 -L 213.423457 312.886111 -L 202.953704 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 312.886111 -L 213.423457 302.416358 -L 202.953704 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 312.886111 -L 223.89321 312.886111 -L 213.423457 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 312.886111 -L 223.89321 302.416358 -L 213.423457 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 312.886111 -L 234.362963 312.886111 -L 223.89321 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 312.886111 -L 234.362963 302.416358 -L 223.89321 302.416358 -z -" style="fill:#c7ff30;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 312.886111 -L 244.832716 312.886111 -L 234.362963 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 312.886111 -L 244.832716 302.416358 -L 234.362963 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 312.886111 -L 255.302469 312.886111 -L 244.832716 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 312.886111 -L 255.302469 302.416358 -L 244.832716 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 312.886111 -L 265.772222 312.886111 -L 255.302469 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 312.886111 -L 265.772222 302.416358 -L 255.302469 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 312.886111 -L 276.241975 312.886111 -L 265.772222 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 312.886111 -L 276.241975 302.416358 -L 265.772222 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 312.886111 -L 286.711728 312.886111 -L 276.241975 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 312.886111 -L 286.711728 302.416358 -L 276.241975 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 312.886111 -L 297.181481 312.886111 -L 286.711728 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 312.886111 -L 297.181481 302.416358 -L 286.711728 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 312.886111 -L 307.651235 312.886111 -L 297.181481 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 312.886111 -L 307.651235 302.416358 -L 297.181481 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 312.886111 -L 318.120988 312.886111 -L 307.651235 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 312.886111 -L 318.120988 302.416358 -L 307.651235 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 312.886111 -L 328.590741 312.886111 -L 318.120988 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 312.886111 -L 328.590741 302.416358 -L 318.120988 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 312.886111 -L 339.060494 312.886111 -L 328.590741 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 312.886111 -L 339.060494 302.416358 -L 328.590741 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 312.886111 -L 349.530247 312.886111 -L 339.060494 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 312.886111 -L 349.530247 302.416358 -L 339.060494 302.416358 -z -" style="fill:#caff2c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 312.886111 -L 360 312.886111 -L 349.530247 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 312.886111 -L 360 302.416358 -L 349.530247 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 312.886111 -L 370.469753 312.886111 -L 360 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 312.886111 -L 370.469753 302.416358 -L 360 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 312.886111 -L 380.939506 312.886111 -L 370.469753 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 312.886111 -L 380.939506 302.416358 -L 370.469753 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 312.886111 -L 391.409259 312.886111 -L 380.939506 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 312.886111 -L 391.409259 302.416358 -L 380.939506 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 312.886111 -L 401.879012 312.886111 -L 391.409259 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 312.886111 -L 401.879012 302.416358 -L 391.409259 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 312.886111 -L 412.348765 312.886111 -L 401.879012 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 312.886111 -L 412.348765 302.416358 -L 401.879012 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 312.886111 -L 422.818519 312.886111 -L 412.348765 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 312.886111 -L 422.818519 302.416358 -L 412.348765 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 312.886111 -L 433.288272 312.886111 -L 422.818519 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 312.886111 -L 433.288272 302.416358 -L 422.818519 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 312.886111 -L 443.758025 312.886111 -L 433.288272 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 312.886111 -L 443.758025 302.416358 -L 433.288272 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 312.886111 -L 454.227778 312.886111 -L 443.758025 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 312.886111 -L 454.227778 302.416358 -L 443.758025 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 312.886111 -L 464.697531 312.886111 -L 454.227778 302.416358 -z -" style="fill:#ceff29;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 312.886111 -L 464.697531 302.416358 -L 454.227778 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 312.886111 -L 475.167284 312.886111 -L 464.697531 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 312.886111 -L 475.167284 302.416358 -L 464.697531 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 312.886111 -L 485.637037 312.886111 -L 475.167284 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 312.886111 -L 485.637037 302.416358 -L 475.167284 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 312.886111 -L 496.10679 312.886111 -L 485.637037 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 312.886111 -L 496.10679 302.416358 -L 485.637037 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 312.886111 -L 506.576543 312.886111 -L 496.10679 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 312.886111 -L 506.576543 302.416358 -L 496.10679 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 312.886111 -L 517.046296 312.886111 -L 506.576543 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 312.886111 -L 517.046296 302.416358 -L 506.576543 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 312.886111 -L 527.516049 312.886111 -L 517.046296 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 312.886111 -L 527.516049 302.416358 -L 517.046296 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 312.886111 -L 537.985802 312.886111 -L 527.516049 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 312.886111 -L 537.985802 302.416358 -L 527.516049 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 312.886111 -L 548.455556 312.886111 -L 537.985802 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 312.886111 -L 548.455556 302.416358 -L 537.985802 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 312.886111 -L 558.925309 312.886111 -L 548.455556 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 312.886111 -L 558.925309 302.416358 -L 548.455556 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 312.886111 -L 569.395062 312.886111 -L 558.925309 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 312.886111 -L 569.395062 302.416358 -L 558.925309 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 312.886111 -L 579.864815 312.886111 -L 569.395062 302.416358 -z -" style="fill:#d1ff26;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 312.886111 -L 579.864815 302.416358 -L 569.395062 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 312.886111 -L 590.334568 312.886111 -L 579.864815 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 312.886111 -L 590.334568 302.416358 -L 579.864815 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 312.886111 -L 600.804321 312.886111 -L 590.334568 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 312.886111 -L 600.804321 302.416358 -L 590.334568 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 312.886111 -L 611.274074 312.886111 -L 600.804321 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 312.886111 -L 611.274074 302.416358 -L 600.804321 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 312.886111 -L 621.743827 312.886111 -L 611.274074 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 312.886111 -L 621.743827 302.416358 -L 611.274074 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 312.886111 -L 632.21358 312.886111 -L 621.743827 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 312.886111 -L 632.21358 302.416358 -L 621.743827 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 312.886111 -L 642.683333 312.886111 -L 632.21358 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 312.886111 -L 642.683333 302.416358 -L 632.21358 302.416358 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 302.416358 -L 87.78642 302.416358 -L 77.316667 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 302.416358 -L 87.78642 291.946605 -L 77.316667 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 302.416358 -L 98.256173 302.416358 -L 87.78642 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 302.416358 -L 98.256173 291.946605 -L 87.78642 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 302.416358 -L 108.725926 302.416358 -L 98.256173 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 302.416358 -L 108.725926 291.946605 -L 98.256173 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 302.416358 -L 119.195679 302.416358 -L 108.725926 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 302.416358 -L 119.195679 291.946605 -L 108.725926 291.946605 -z -" style="fill:#d4ff23;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 302.416358 -L 129.665432 302.416358 -L 119.195679 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 302.416358 -L 129.665432 291.946605 -L 119.195679 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 302.416358 -L 140.135185 302.416358 -L 129.665432 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 302.416358 -L 140.135185 291.946605 -L 129.665432 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 302.416358 -L 150.604938 302.416358 -L 140.135185 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 302.416358 -L 150.604938 291.946605 -L 140.135185 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 302.416358 -L 161.074691 302.416358 -L 150.604938 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 302.416358 -L 161.074691 291.946605 -L 150.604938 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 302.416358 -L 171.544444 302.416358 -L 161.074691 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 302.416358 -L 171.544444 291.946605 -L 161.074691 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 302.416358 -L 182.014198 302.416358 -L 171.544444 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 302.416358 -L 182.014198 291.946605 -L 171.544444 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 302.416358 -L 192.483951 302.416358 -L 182.014198 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 302.416358 -L 192.483951 291.946605 -L 182.014198 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 302.416358 -L 202.953704 302.416358 -L 192.483951 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 302.416358 -L 202.953704 291.946605 -L 192.483951 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 302.416358 -L 213.423457 302.416358 -L 202.953704 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 302.416358 -L 213.423457 291.946605 -L 202.953704 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 302.416358 -L 223.89321 302.416358 -L 213.423457 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 302.416358 -L 223.89321 291.946605 -L 213.423457 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 302.416358 -L 234.362963 302.416358 -L 223.89321 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 302.416358 -L 234.362963 291.946605 -L 223.89321 291.946605 -z -" style="fill:#d7ff1f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 302.416358 -L 244.832716 302.416358 -L 234.362963 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 302.416358 -L 244.832716 291.946605 -L 234.362963 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 302.416358 -L 255.302469 302.416358 -L 244.832716 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 302.416358 -L 255.302469 291.946605 -L 244.832716 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 302.416358 -L 265.772222 302.416358 -L 255.302469 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 302.416358 -L 265.772222 291.946605 -L 255.302469 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 302.416358 -L 276.241975 302.416358 -L 265.772222 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 302.416358 -L 276.241975 291.946605 -L 265.772222 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 302.416358 -L 286.711728 302.416358 -L 276.241975 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 302.416358 -L 286.711728 291.946605 -L 276.241975 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 302.416358 -L 297.181481 302.416358 -L 286.711728 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 302.416358 -L 297.181481 291.946605 -L 286.711728 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 302.416358 -L 307.651235 302.416358 -L 297.181481 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 302.416358 -L 307.651235 291.946605 -L 297.181481 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 302.416358 -L 318.120988 302.416358 -L 307.651235 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 302.416358 -L 318.120988 291.946605 -L 307.651235 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 302.416358 -L 328.590741 302.416358 -L 318.120988 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 302.416358 -L 328.590741 291.946605 -L 318.120988 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 302.416358 -L 339.060494 302.416358 -L 328.590741 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 302.416358 -L 339.060494 291.946605 -L 328.590741 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 302.416358 -L 349.530247 302.416358 -L 339.060494 291.946605 -z -" style="fill:#dbff1c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 302.416358 -L 349.530247 291.946605 -L 339.060494 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 302.416358 -L 360 302.416358 -L 349.530247 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 302.416358 -L 360 291.946605 -L 349.530247 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 302.416358 -L 370.469753 302.416358 -L 360 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 302.416358 -L 370.469753 291.946605 -L 360 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 302.416358 -L 380.939506 302.416358 -L 370.469753 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 302.416358 -L 380.939506 291.946605 -L 370.469753 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 302.416358 -L 391.409259 302.416358 -L 380.939506 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 302.416358 -L 391.409259 291.946605 -L 380.939506 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 302.416358 -L 401.879012 302.416358 -L 391.409259 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 302.416358 -L 401.879012 291.946605 -L 391.409259 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 302.416358 -L 412.348765 302.416358 -L 401.879012 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 302.416358 -L 412.348765 291.946605 -L 401.879012 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 302.416358 -L 422.818519 302.416358 -L 412.348765 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 302.416358 -L 422.818519 291.946605 -L 412.348765 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 302.416358 -L 433.288272 302.416358 -L 422.818519 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 302.416358 -L 433.288272 291.946605 -L 422.818519 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 302.416358 -L 443.758025 302.416358 -L 433.288272 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 302.416358 -L 443.758025 291.946605 -L 433.288272 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 302.416358 -L 454.227778 302.416358 -L 443.758025 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 302.416358 -L 454.227778 291.946605 -L 443.758025 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 302.416358 -L 464.697531 302.416358 -L 454.227778 291.946605 -z -" style="fill:#deff19;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 302.416358 -L 464.697531 291.946605 -L 454.227778 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 302.416358 -L 475.167284 302.416358 -L 464.697531 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 302.416358 -L 475.167284 291.946605 -L 464.697531 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 302.416358 -L 485.637037 302.416358 -L 475.167284 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 302.416358 -L 485.637037 291.946605 -L 475.167284 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 302.416358 -L 496.10679 302.416358 -L 485.637037 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 302.416358 -L 496.10679 291.946605 -L 485.637037 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 302.416358 -L 506.576543 302.416358 -L 496.10679 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 302.416358 -L 506.576543 291.946605 -L 496.10679 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 302.416358 -L 517.046296 302.416358 -L 506.576543 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 302.416358 -L 517.046296 291.946605 -L 506.576543 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 302.416358 -L 527.516049 302.416358 -L 517.046296 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 302.416358 -L 527.516049 291.946605 -L 517.046296 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 302.416358 -L 537.985802 302.416358 -L 527.516049 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 302.416358 -L 537.985802 291.946605 -L 527.516049 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 302.416358 -L 548.455556 302.416358 -L 537.985802 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 302.416358 -L 548.455556 291.946605 -L 537.985802 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 302.416358 -L 558.925309 302.416358 -L 548.455556 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 302.416358 -L 558.925309 291.946605 -L 548.455556 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 302.416358 -L 569.395062 302.416358 -L 558.925309 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 302.416358 -L 569.395062 291.946605 -L 558.925309 291.946605 -z -" style="fill:#e1ff16;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 302.416358 -L 579.864815 302.416358 -L 569.395062 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 302.416358 -L 579.864815 291.946605 -L 569.395062 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 302.416358 -L 590.334568 302.416358 -L 579.864815 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 302.416358 -L 590.334568 291.946605 -L 579.864815 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 302.416358 -L 600.804321 302.416358 -L 590.334568 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 302.416358 -L 600.804321 291.946605 -L 590.334568 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 302.416358 -L 611.274074 302.416358 -L 600.804321 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 302.416358 -L 611.274074 291.946605 -L 600.804321 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 302.416358 -L 621.743827 302.416358 -L 611.274074 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 302.416358 -L 621.743827 291.946605 -L 611.274074 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 302.416358 -L 632.21358 302.416358 -L 621.743827 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 302.416358 -L 632.21358 291.946605 -L 621.743827 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 302.416358 -L 642.683333 302.416358 -L 632.21358 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 302.416358 -L 642.683333 291.946605 -L 632.21358 291.946605 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 291.946605 -L 87.78642 291.946605 -L 77.316667 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 291.946605 -L 87.78642 281.476852 -L 77.316667 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 291.946605 -L 98.256173 291.946605 -L 87.78642 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 291.946605 -L 98.256173 281.476852 -L 87.78642 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 291.946605 -L 108.725926 291.946605 -L 98.256173 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 291.946605 -L 108.725926 281.476852 -L 98.256173 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 291.946605 -L 119.195679 291.946605 -L 108.725926 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 291.946605 -L 119.195679 281.476852 -L 108.725926 281.476852 -z -" style="fill:#e4ff13;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 291.946605 -L 129.665432 291.946605 -L 119.195679 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 291.946605 -L 129.665432 281.476852 -L 119.195679 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 291.946605 -L 140.135185 291.946605 -L 129.665432 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 291.946605 -L 140.135185 281.476852 -L 129.665432 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 291.946605 -L 150.604938 291.946605 -L 140.135185 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 291.946605 -L 150.604938 281.476852 -L 140.135185 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 291.946605 -L 161.074691 291.946605 -L 150.604938 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 291.946605 -L 161.074691 281.476852 -L 150.604938 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 291.946605 -L 171.544444 291.946605 -L 161.074691 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 291.946605 -L 171.544444 281.476852 -L 161.074691 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 291.946605 -L 182.014198 291.946605 -L 171.544444 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 291.946605 -L 182.014198 281.476852 -L 171.544444 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 291.946605 -L 192.483951 291.946605 -L 182.014198 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 291.946605 -L 192.483951 281.476852 -L 182.014198 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 291.946605 -L 202.953704 291.946605 -L 192.483951 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 291.946605 -L 202.953704 281.476852 -L 192.483951 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 291.946605 -L 213.423457 291.946605 -L 202.953704 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 291.946605 -L 213.423457 281.476852 -L 202.953704 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 291.946605 -L 223.89321 291.946605 -L 213.423457 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 291.946605 -L 223.89321 281.476852 -L 213.423457 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 291.946605 -L 234.362963 291.946605 -L 223.89321 281.476852 -z -" style="fill:#e7ff0f;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 291.946605 -L 234.362963 281.476852 -L 223.89321 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 291.946605 -L 244.832716 291.946605 -L 234.362963 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 291.946605 -L 244.832716 281.476852 -L 234.362963 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 291.946605 -L 255.302469 291.946605 -L 244.832716 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 291.946605 -L 255.302469 281.476852 -L 244.832716 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 291.946605 -L 265.772222 291.946605 -L 255.302469 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 291.946605 -L 265.772222 281.476852 -L 255.302469 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 291.946605 -L 276.241975 291.946605 -L 265.772222 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 291.946605 -L 276.241975 281.476852 -L 265.772222 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 291.946605 -L 286.711728 291.946605 -L 276.241975 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 291.946605 -L 286.711728 281.476852 -L 276.241975 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 291.946605 -L 297.181481 291.946605 -L 286.711728 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 291.946605 -L 297.181481 281.476852 -L 286.711728 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 291.946605 -L 307.651235 291.946605 -L 297.181481 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 291.946605 -L 307.651235 281.476852 -L 297.181481 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 291.946605 -L 318.120988 291.946605 -L 307.651235 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 291.946605 -L 318.120988 281.476852 -L 307.651235 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 291.946605 -L 328.590741 291.946605 -L 318.120988 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 291.946605 -L 328.590741 281.476852 -L 318.120988 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 291.946605 -L 339.060494 291.946605 -L 328.590741 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 291.946605 -L 339.060494 281.476852 -L 328.590741 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 291.946605 -L 349.530247 291.946605 -L 339.060494 281.476852 -z -" style="fill:#ebff0c;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 291.946605 -L 349.530247 281.476852 -L 339.060494 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 291.946605 -L 360 291.946605 -L 349.530247 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 291.946605 -L 360 281.476852 -L 349.530247 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 291.946605 -L 370.469753 291.946605 -L 360 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 291.946605 -L 370.469753 281.476852 -L 360 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 291.946605 -L 380.939506 291.946605 -L 370.469753 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 291.946605 -L 380.939506 281.476852 -L 370.469753 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 291.946605 -L 391.409259 291.946605 -L 380.939506 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 291.946605 -L 391.409259 281.476852 -L 380.939506 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 291.946605 -L 401.879012 291.946605 -L 391.409259 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 291.946605 -L 401.879012 281.476852 -L 391.409259 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 291.946605 -L 412.348765 291.946605 -L 401.879012 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 291.946605 -L 412.348765 281.476852 -L 401.879012 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 291.946605 -L 422.818519 291.946605 -L 412.348765 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 291.946605 -L 422.818519 281.476852 -L 412.348765 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 291.946605 -L 433.288272 291.946605 -L 422.818519 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 291.946605 -L 433.288272 281.476852 -L 422.818519 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 291.946605 -L 443.758025 291.946605 -L 433.288272 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 291.946605 -L 443.758025 281.476852 -L 433.288272 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 291.946605 -L 454.227778 291.946605 -L 443.758025 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 291.946605 -L 454.227778 281.476852 -L 443.758025 281.476852 -z -" style="fill:#eeff09;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 291.946605 -L 464.697531 291.946605 -L 454.227778 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 291.946605 -L 464.697531 281.476852 -L 454.227778 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 291.946605 -L 475.167284 291.946605 -L 464.697531 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 291.946605 -L 475.167284 281.476852 -L 464.697531 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 291.946605 -L 485.637037 291.946605 -L 475.167284 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 291.946605 -L 485.637037 281.476852 -L 475.167284 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 291.946605 -L 496.10679 291.946605 -L 485.637037 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 291.946605 -L 496.10679 281.476852 -L 485.637037 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 291.946605 -L 506.576543 291.946605 -L 496.10679 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 291.946605 -L 506.576543 281.476852 -L 496.10679 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 291.946605 -L 517.046296 291.946605 -L 506.576543 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 291.946605 -L 517.046296 281.476852 -L 506.576543 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 291.946605 -L 527.516049 291.946605 -L 517.046296 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 291.946605 -L 527.516049 281.476852 -L 517.046296 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 291.946605 -L 537.985802 291.946605 -L 527.516049 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 291.946605 -L 537.985802 281.476852 -L 527.516049 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 291.946605 -L 548.455556 291.946605 -L 537.985802 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 291.946605 -L 548.455556 281.476852 -L 537.985802 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 291.946605 -L 558.925309 291.946605 -L 548.455556 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 291.946605 -L 558.925309 281.476852 -L 548.455556 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 291.946605 -L 569.395062 291.946605 -L 558.925309 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 291.946605 -L 569.395062 281.476852 -L 558.925309 281.476852 -z -" style="fill:#f1fc06;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 291.946605 -L 579.864815 291.946605 -L 569.395062 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 291.946605 -L 579.864815 281.476852 -L 569.395062 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 291.946605 -L 590.334568 291.946605 -L 579.864815 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 291.946605 -L 590.334568 281.476852 -L 579.864815 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 291.946605 -L 600.804321 291.946605 -L 590.334568 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 291.946605 -L 600.804321 281.476852 -L 590.334568 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 291.946605 -L 611.274074 291.946605 -L 600.804321 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 291.946605 -L 611.274074 281.476852 -L 600.804321 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 291.946605 -L 621.743827 291.946605 -L 611.274074 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 291.946605 -L 621.743827 281.476852 -L 611.274074 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 291.946605 -L 632.21358 291.946605 -L 621.743827 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 291.946605 -L 632.21358 281.476852 -L 621.743827 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 291.946605 -L 642.683333 291.946605 -L 632.21358 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 291.946605 -L 642.683333 281.476852 -L 632.21358 281.476852 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 281.476852 -L 87.78642 281.476852 -L 77.316667 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 281.476852 -L 87.78642 271.007099 -L 77.316667 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 281.476852 -L 98.256173 281.476852 -L 87.78642 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 281.476852 -L 98.256173 271.007099 -L 87.78642 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 281.476852 -L 108.725926 281.476852 -L 98.256173 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 281.476852 -L 108.725926 271.007099 -L 98.256173 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 281.476852 -L 119.195679 281.476852 -L 108.725926 271.007099 -z -" style="fill:#f4f802;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 281.476852 -L 119.195679 271.007099 -L 108.725926 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 281.476852 -L 129.665432 281.476852 -L 119.195679 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 281.476852 -L 129.665432 271.007099 -L 119.195679 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 281.476852 -L 140.135185 281.476852 -L 129.665432 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 281.476852 -L 140.135185 271.007099 -L 129.665432 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 281.476852 -L 150.604938 281.476852 -L 140.135185 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 281.476852 -L 150.604938 271.007099 -L 140.135185 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 281.476852 -L 161.074691 281.476852 -L 150.604938 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 281.476852 -L 161.074691 271.007099 -L 150.604938 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 281.476852 -L 171.544444 281.476852 -L 161.074691 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 281.476852 -L 171.544444 271.007099 -L 161.074691 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 281.476852 -L 182.014198 281.476852 -L 171.544444 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 281.476852 -L 182.014198 271.007099 -L 171.544444 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 281.476852 -L 192.483951 281.476852 -L 182.014198 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 281.476852 -L 192.483951 271.007099 -L 182.014198 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 281.476852 -L 202.953704 281.476852 -L 192.483951 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 281.476852 -L 202.953704 271.007099 -L 192.483951 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 281.476852 -L 213.423457 281.476852 -L 202.953704 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 281.476852 -L 213.423457 271.007099 -L 202.953704 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 281.476852 -L 223.89321 281.476852 -L 213.423457 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 281.476852 -L 223.89321 271.007099 -L 213.423457 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 281.476852 -L 234.362963 281.476852 -L 223.89321 271.007099 -z -" style="fill:#f8f500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 281.476852 -L 234.362963 271.007099 -L 223.89321 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 281.476852 -L 244.832716 281.476852 -L 234.362963 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 281.476852 -L 244.832716 271.007099 -L 234.362963 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 281.476852 -L 255.302469 281.476852 -L 244.832716 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 281.476852 -L 255.302469 271.007099 -L 244.832716 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 281.476852 -L 265.772222 281.476852 -L 255.302469 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 281.476852 -L 265.772222 271.007099 -L 255.302469 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 281.476852 -L 276.241975 281.476852 -L 265.772222 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 281.476852 -L 276.241975 271.007099 -L 265.772222 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 281.476852 -L 286.711728 281.476852 -L 276.241975 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 281.476852 -L 286.711728 271.007099 -L 276.241975 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 281.476852 -L 297.181481 281.476852 -L 286.711728 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 281.476852 -L 297.181481 271.007099 -L 286.711728 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 281.476852 -L 307.651235 281.476852 -L 297.181481 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 281.476852 -L 307.651235 271.007099 -L 297.181481 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 281.476852 -L 318.120988 281.476852 -L 307.651235 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 281.476852 -L 318.120988 271.007099 -L 307.651235 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 281.476852 -L 328.590741 281.476852 -L 318.120988 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 281.476852 -L 328.590741 271.007099 -L 318.120988 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 281.476852 -L 339.060494 281.476852 -L 328.590741 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 281.476852 -L 339.060494 271.007099 -L 328.590741 271.007099 -z -" style="fill:#fbf100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 281.476852 -L 349.530247 281.476852 -L 339.060494 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 281.476852 -L 349.530247 271.007099 -L 339.060494 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 281.476852 -L 360 281.476852 -L 349.530247 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 281.476852 -L 360 271.007099 -L 349.530247 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 281.476852 -L 370.469753 281.476852 -L 360 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 281.476852 -L 370.469753 271.007099 -L 360 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 281.476852 -L 380.939506 281.476852 -L 370.469753 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 281.476852 -L 380.939506 271.007099 -L 370.469753 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 281.476852 -L 391.409259 281.476852 -L 380.939506 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 281.476852 -L 391.409259 271.007099 -L 380.939506 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 281.476852 -L 401.879012 281.476852 -L 391.409259 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 281.476852 -L 401.879012 271.007099 -L 391.409259 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 281.476852 -L 412.348765 281.476852 -L 401.879012 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 281.476852 -L 412.348765 271.007099 -L 401.879012 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 281.476852 -L 422.818519 281.476852 -L 412.348765 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 281.476852 -L 422.818519 271.007099 -L 412.348765 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 281.476852 -L 433.288272 281.476852 -L 422.818519 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 281.476852 -L 433.288272 271.007099 -L 422.818519 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 281.476852 -L 443.758025 281.476852 -L 433.288272 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 281.476852 -L 443.758025 271.007099 -L 433.288272 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 281.476852 -L 454.227778 281.476852 -L 443.758025 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 281.476852 -L 454.227778 271.007099 -L 443.758025 271.007099 -z -" style="fill:#feed00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 281.476852 -L 464.697531 281.476852 -L 454.227778 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 281.476852 -L 464.697531 271.007099 -L 454.227778 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 281.476852 -L 475.167284 281.476852 -L 464.697531 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 281.476852 -L 475.167284 271.007099 -L 464.697531 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 281.476852 -L 485.637037 281.476852 -L 475.167284 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 281.476852 -L 485.637037 271.007099 -L 475.167284 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 281.476852 -L 496.10679 281.476852 -L 485.637037 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 281.476852 -L 496.10679 271.007099 -L 485.637037 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 281.476852 -L 506.576543 281.476852 -L 496.10679 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 281.476852 -L 506.576543 271.007099 -L 496.10679 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 281.476852 -L 517.046296 281.476852 -L 506.576543 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 281.476852 -L 517.046296 271.007099 -L 506.576543 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 281.476852 -L 527.516049 281.476852 -L 517.046296 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 281.476852 -L 527.516049 271.007099 -L 517.046296 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 281.476852 -L 537.985802 281.476852 -L 527.516049 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 281.476852 -L 537.985802 271.007099 -L 527.516049 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 281.476852 -L 548.455556 281.476852 -L 537.985802 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 281.476852 -L 548.455556 271.007099 -L 537.985802 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 281.476852 -L 558.925309 281.476852 -L 548.455556 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 281.476852 -L 558.925309 271.007099 -L 548.455556 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 281.476852 -L 569.395062 281.476852 -L 558.925309 271.007099 -z -" style="fill:#ffea00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 281.476852 -L 569.395062 271.007099 -L 558.925309 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 281.476852 -L 579.864815 281.476852 -L 569.395062 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 281.476852 -L 579.864815 271.007099 -L 569.395062 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 281.476852 -L 590.334568 281.476852 -L 579.864815 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 281.476852 -L 590.334568 271.007099 -L 579.864815 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 281.476852 -L 600.804321 281.476852 -L 590.334568 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 281.476852 -L 600.804321 271.007099 -L 590.334568 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 281.476852 -L 611.274074 281.476852 -L 600.804321 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 281.476852 -L 611.274074 271.007099 -L 600.804321 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 281.476852 -L 621.743827 281.476852 -L 611.274074 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 281.476852 -L 621.743827 271.007099 -L 611.274074 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 281.476852 -L 632.21358 281.476852 -L 621.743827 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 281.476852 -L 632.21358 271.007099 -L 621.743827 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 281.476852 -L 642.683333 281.476852 -L 632.21358 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 281.476852 -L 642.683333 271.007099 -L 632.21358 271.007099 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 271.007099 -L 87.78642 271.007099 -L 77.316667 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 271.007099 -L 87.78642 260.537346 -L 77.316667 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 271.007099 -L 98.256173 271.007099 -L 87.78642 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 271.007099 -L 98.256173 260.537346 -L 87.78642 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 271.007099 -L 108.725926 271.007099 -L 98.256173 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 271.007099 -L 108.725926 260.537346 -L 98.256173 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 271.007099 -L 119.195679 271.007099 -L 108.725926 260.537346 -z -" style="fill:#ffe600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 271.007099 -L 119.195679 260.537346 -L 108.725926 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 271.007099 -L 129.665432 271.007099 -L 119.195679 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 271.007099 -L 129.665432 260.537346 -L 119.195679 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 271.007099 -L 140.135185 271.007099 -L 129.665432 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 271.007099 -L 140.135185 260.537346 -L 129.665432 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 271.007099 -L 150.604938 271.007099 -L 140.135185 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 271.007099 -L 150.604938 260.537346 -L 140.135185 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 271.007099 -L 161.074691 271.007099 -L 150.604938 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 271.007099 -L 161.074691 260.537346 -L 150.604938 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 271.007099 -L 171.544444 271.007099 -L 161.074691 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 271.007099 -L 171.544444 260.537346 -L 161.074691 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 271.007099 -L 182.014198 271.007099 -L 171.544444 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 271.007099 -L 182.014198 260.537346 -L 171.544444 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 271.007099 -L 192.483951 271.007099 -L 182.014198 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 271.007099 -L 192.483951 260.537346 -L 182.014198 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 271.007099 -L 202.953704 271.007099 -L 192.483951 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 271.007099 -L 202.953704 260.537346 -L 192.483951 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 271.007099 -L 213.423457 271.007099 -L 202.953704 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 271.007099 -L 213.423457 260.537346 -L 202.953704 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 271.007099 -L 223.89321 271.007099 -L 213.423457 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 271.007099 -L 223.89321 260.537346 -L 213.423457 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 271.007099 -L 234.362963 271.007099 -L 223.89321 260.537346 -z -" style="fill:#ffe200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 271.007099 -L 234.362963 260.537346 -L 223.89321 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 271.007099 -L 244.832716 271.007099 -L 234.362963 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 271.007099 -L 244.832716 260.537346 -L 234.362963 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 271.007099 -L 255.302469 271.007099 -L 244.832716 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 271.007099 -L 255.302469 260.537346 -L 244.832716 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 271.007099 -L 265.772222 271.007099 -L 255.302469 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 271.007099 -L 265.772222 260.537346 -L 255.302469 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 271.007099 -L 276.241975 271.007099 -L 265.772222 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 271.007099 -L 276.241975 260.537346 -L 265.772222 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 271.007099 -L 286.711728 271.007099 -L 276.241975 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 271.007099 -L 286.711728 260.537346 -L 276.241975 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 271.007099 -L 297.181481 271.007099 -L 286.711728 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 271.007099 -L 297.181481 260.537346 -L 286.711728 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 271.007099 -L 307.651235 271.007099 -L 297.181481 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 271.007099 -L 307.651235 260.537346 -L 297.181481 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 271.007099 -L 318.120988 271.007099 -L 307.651235 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 271.007099 -L 318.120988 260.537346 -L 307.651235 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 271.007099 -L 328.590741 271.007099 -L 318.120988 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 271.007099 -L 328.590741 260.537346 -L 318.120988 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 271.007099 -L 339.060494 271.007099 -L 328.590741 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 271.007099 -L 339.060494 260.537346 -L 328.590741 260.537346 -z -" style="fill:#ffde00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 271.007099 -L 349.530247 271.007099 -L 339.060494 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 271.007099 -L 349.530247 260.537346 -L 339.060494 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 271.007099 -L 360 271.007099 -L 349.530247 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 271.007099 -L 360 260.537346 -L 349.530247 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 271.007099 -L 370.469753 271.007099 -L 360 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 271.007099 -L 370.469753 260.537346 -L 360 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 271.007099 -L 380.939506 271.007099 -L 370.469753 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 271.007099 -L 380.939506 260.537346 -L 370.469753 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 271.007099 -L 391.409259 271.007099 -L 380.939506 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 271.007099 -L 391.409259 260.537346 -L 380.939506 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 271.007099 -L 401.879012 271.007099 -L 391.409259 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 271.007099 -L 401.879012 260.537346 -L 391.409259 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 271.007099 -L 412.348765 271.007099 -L 401.879012 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 271.007099 -L 412.348765 260.537346 -L 401.879012 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 271.007099 -L 422.818519 271.007099 -L 412.348765 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 271.007099 -L 422.818519 260.537346 -L 412.348765 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 271.007099 -L 433.288272 271.007099 -L 422.818519 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 271.007099 -L 433.288272 260.537346 -L 422.818519 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 271.007099 -L 443.758025 271.007099 -L 433.288272 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 271.007099 -L 443.758025 260.537346 -L 433.288272 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 271.007099 -L 454.227778 271.007099 -L 443.758025 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 271.007099 -L 454.227778 260.537346 -L 443.758025 260.537346 -z -" style="fill:#ffdb00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 271.007099 -L 464.697531 271.007099 -L 454.227778 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 271.007099 -L 464.697531 260.537346 -L 454.227778 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 271.007099 -L 475.167284 271.007099 -L 464.697531 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 271.007099 -L 475.167284 260.537346 -L 464.697531 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 271.007099 -L 485.637037 271.007099 -L 475.167284 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 271.007099 -L 485.637037 260.537346 -L 475.167284 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 271.007099 -L 496.10679 271.007099 -L 485.637037 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 271.007099 -L 496.10679 260.537346 -L 485.637037 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 271.007099 -L 506.576543 271.007099 -L 496.10679 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 271.007099 -L 506.576543 260.537346 -L 496.10679 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 271.007099 -L 517.046296 271.007099 -L 506.576543 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 271.007099 -L 517.046296 260.537346 -L 506.576543 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 271.007099 -L 527.516049 271.007099 -L 517.046296 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 271.007099 -L 527.516049 260.537346 -L 517.046296 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 271.007099 -L 537.985802 271.007099 -L 527.516049 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 271.007099 -L 537.985802 260.537346 -L 527.516049 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 271.007099 -L 548.455556 271.007099 -L 537.985802 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 271.007099 -L 548.455556 260.537346 -L 537.985802 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 271.007099 -L 558.925309 271.007099 -L 548.455556 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 271.007099 -L 558.925309 260.537346 -L 548.455556 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 271.007099 -L 569.395062 271.007099 -L 558.925309 260.537346 -z -" style="fill:#ffd700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 271.007099 -L 569.395062 260.537346 -L 558.925309 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 271.007099 -L 579.864815 271.007099 -L 569.395062 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 271.007099 -L 579.864815 260.537346 -L 569.395062 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 271.007099 -L 590.334568 271.007099 -L 579.864815 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 271.007099 -L 590.334568 260.537346 -L 579.864815 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 271.007099 -L 600.804321 271.007099 -L 590.334568 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 271.007099 -L 600.804321 260.537346 -L 590.334568 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 271.007099 -L 611.274074 271.007099 -L 600.804321 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 271.007099 -L 611.274074 260.537346 -L 600.804321 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 271.007099 -L 621.743827 271.007099 -L 611.274074 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 271.007099 -L 621.743827 260.537346 -L 611.274074 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 271.007099 -L 632.21358 271.007099 -L 621.743827 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 271.007099 -L 632.21358 260.537346 -L 621.743827 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 271.007099 -L 642.683333 271.007099 -L 632.21358 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 271.007099 -L 642.683333 260.537346 -L 632.21358 260.537346 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 260.537346 -L 87.78642 260.537346 -L 77.316667 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 260.537346 -L 87.78642 250.067593 -L 77.316667 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 260.537346 -L 98.256173 260.537346 -L 87.78642 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 260.537346 -L 98.256173 250.067593 -L 87.78642 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 260.537346 -L 108.725926 260.537346 -L 98.256173 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 260.537346 -L 108.725926 250.067593 -L 98.256173 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 260.537346 -L 119.195679 260.537346 -L 108.725926 250.067593 -z -" style="fill:#ffd300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 260.537346 -L 119.195679 250.067593 -L 108.725926 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 260.537346 -L 129.665432 260.537346 -L 119.195679 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 260.537346 -L 129.665432 250.067593 -L 119.195679 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 260.537346 -L 140.135185 260.537346 -L 129.665432 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 260.537346 -L 140.135185 250.067593 -L 129.665432 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 260.537346 -L 150.604938 260.537346 -L 140.135185 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 260.537346 -L 150.604938 250.067593 -L 140.135185 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 260.537346 -L 161.074691 260.537346 -L 150.604938 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 260.537346 -L 161.074691 250.067593 -L 150.604938 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 260.537346 -L 171.544444 260.537346 -L 161.074691 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 260.537346 -L 171.544444 250.067593 -L 161.074691 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 260.537346 -L 182.014198 260.537346 -L 171.544444 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 260.537346 -L 182.014198 250.067593 -L 171.544444 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 260.537346 -L 192.483951 260.537346 -L 182.014198 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 260.537346 -L 192.483951 250.067593 -L 182.014198 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 260.537346 -L 202.953704 260.537346 -L 192.483951 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 260.537346 -L 202.953704 250.067593 -L 192.483951 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 260.537346 -L 213.423457 260.537346 -L 202.953704 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 260.537346 -L 213.423457 250.067593 -L 202.953704 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 260.537346 -L 223.89321 260.537346 -L 213.423457 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 260.537346 -L 223.89321 250.067593 -L 213.423457 250.067593 -z -" style="fill:#ffd000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 260.537346 -L 234.362963 260.537346 -L 223.89321 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 260.537346 -L 234.362963 250.067593 -L 223.89321 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 260.537346 -L 244.832716 260.537346 -L 234.362963 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 260.537346 -L 244.832716 250.067593 -L 234.362963 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 260.537346 -L 255.302469 260.537346 -L 244.832716 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 260.537346 -L 255.302469 250.067593 -L 244.832716 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 260.537346 -L 265.772222 260.537346 -L 255.302469 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 260.537346 -L 265.772222 250.067593 -L 255.302469 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 260.537346 -L 276.241975 260.537346 -L 265.772222 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 260.537346 -L 276.241975 250.067593 -L 265.772222 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 260.537346 -L 286.711728 260.537346 -L 276.241975 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 260.537346 -L 286.711728 250.067593 -L 276.241975 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 260.537346 -L 297.181481 260.537346 -L 286.711728 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 260.537346 -L 297.181481 250.067593 -L 286.711728 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 260.537346 -L 307.651235 260.537346 -L 297.181481 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 260.537346 -L 307.651235 250.067593 -L 297.181481 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 260.537346 -L 318.120988 260.537346 -L 307.651235 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 260.537346 -L 318.120988 250.067593 -L 307.651235 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 260.537346 -L 328.590741 260.537346 -L 318.120988 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 260.537346 -L 328.590741 250.067593 -L 318.120988 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 260.537346 -L 339.060494 260.537346 -L 328.590741 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 260.537346 -L 339.060494 250.067593 -L 328.590741 250.067593 -z -" style="fill:#ffcc00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 260.537346 -L 349.530247 260.537346 -L 339.060494 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 260.537346 -L 349.530247 250.067593 -L 339.060494 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 260.537346 -L 360 260.537346 -L 349.530247 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 260.537346 -L 360 250.067593 -L 349.530247 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 260.537346 -L 370.469753 260.537346 -L 360 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 260.537346 -L 370.469753 250.067593 -L 360 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 260.537346 -L 380.939506 260.537346 -L 370.469753 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 260.537346 -L 380.939506 250.067593 -L 370.469753 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 260.537346 -L 391.409259 260.537346 -L 380.939506 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 260.537346 -L 391.409259 250.067593 -L 380.939506 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 260.537346 -L 401.879012 260.537346 -L 391.409259 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 260.537346 -L 401.879012 250.067593 -L 391.409259 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 260.537346 -L 412.348765 260.537346 -L 401.879012 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 260.537346 -L 412.348765 250.067593 -L 401.879012 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 260.537346 -L 422.818519 260.537346 -L 412.348765 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 260.537346 -L 422.818519 250.067593 -L 412.348765 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 260.537346 -L 433.288272 260.537346 -L 422.818519 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 260.537346 -L 433.288272 250.067593 -L 422.818519 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 260.537346 -L 443.758025 260.537346 -L 433.288272 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 260.537346 -L 443.758025 250.067593 -L 433.288272 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 260.537346 -L 454.227778 260.537346 -L 443.758025 250.067593 -z -" style="fill:#ffc800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 260.537346 -L 454.227778 250.067593 -L 443.758025 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 260.537346 -L 464.697531 260.537346 -L 454.227778 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 260.537346 -L 464.697531 250.067593 -L 454.227778 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 260.537346 -L 475.167284 260.537346 -L 464.697531 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 260.537346 -L 475.167284 250.067593 -L 464.697531 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 260.537346 -L 485.637037 260.537346 -L 475.167284 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 260.537346 -L 485.637037 250.067593 -L 475.167284 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 260.537346 -L 496.10679 260.537346 -L 485.637037 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 260.537346 -L 496.10679 250.067593 -L 485.637037 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 260.537346 -L 506.576543 260.537346 -L 496.10679 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 260.537346 -L 506.576543 250.067593 -L 496.10679 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 260.537346 -L 517.046296 260.537346 -L 506.576543 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 260.537346 -L 517.046296 250.067593 -L 506.576543 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 260.537346 -L 527.516049 260.537346 -L 517.046296 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 260.537346 -L 527.516049 250.067593 -L 517.046296 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 260.537346 -L 537.985802 260.537346 -L 527.516049 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 260.537346 -L 537.985802 250.067593 -L 527.516049 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 260.537346 -L 548.455556 260.537346 -L 537.985802 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 260.537346 -L 548.455556 250.067593 -L 537.985802 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 260.537346 -L 558.925309 260.537346 -L 548.455556 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 260.537346 -L 558.925309 250.067593 -L 548.455556 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 260.537346 -L 569.395062 260.537346 -L 558.925309 250.067593 -z -" style="fill:#ffc400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 260.537346 -L 569.395062 250.067593 -L 558.925309 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 260.537346 -L 579.864815 260.537346 -L 569.395062 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 260.537346 -L 579.864815 250.067593 -L 569.395062 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 260.537346 -L 590.334568 260.537346 -L 579.864815 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 260.537346 -L 590.334568 250.067593 -L 579.864815 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 260.537346 -L 600.804321 260.537346 -L 590.334568 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 260.537346 -L 600.804321 250.067593 -L 590.334568 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 260.537346 -L 611.274074 260.537346 -L 600.804321 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 260.537346 -L 611.274074 250.067593 -L 600.804321 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 260.537346 -L 621.743827 260.537346 -L 611.274074 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 260.537346 -L 621.743827 250.067593 -L 611.274074 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 260.537346 -L 632.21358 260.537346 -L 621.743827 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 260.537346 -L 632.21358 250.067593 -L 621.743827 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 260.537346 -L 642.683333 260.537346 -L 632.21358 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 260.537346 -L 642.683333 250.067593 -L 632.21358 250.067593 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 250.067593 -L 87.78642 250.067593 -L 77.316667 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 250.067593 -L 87.78642 239.59784 -L 77.316667 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 250.067593 -L 98.256173 250.067593 -L 87.78642 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 250.067593 -L 98.256173 239.59784 -L 87.78642 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 250.067593 -L 108.725926 250.067593 -L 98.256173 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 250.067593 -L 108.725926 239.59784 -L 98.256173 239.59784 -z -" style="fill:#ffc100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 250.067593 -L 119.195679 250.067593 -L 108.725926 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 250.067593 -L 119.195679 239.59784 -L 108.725926 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 250.067593 -L 129.665432 250.067593 -L 119.195679 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 250.067593 -L 129.665432 239.59784 -L 119.195679 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 250.067593 -L 140.135185 250.067593 -L 129.665432 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 250.067593 -L 140.135185 239.59784 -L 129.665432 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 250.067593 -L 150.604938 250.067593 -L 140.135185 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 250.067593 -L 150.604938 239.59784 -L 140.135185 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 250.067593 -L 161.074691 250.067593 -L 150.604938 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 250.067593 -L 161.074691 239.59784 -L 150.604938 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 250.067593 -L 171.544444 250.067593 -L 161.074691 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 250.067593 -L 171.544444 239.59784 -L 161.074691 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 250.067593 -L 182.014198 250.067593 -L 171.544444 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 250.067593 -L 182.014198 239.59784 -L 171.544444 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 250.067593 -L 192.483951 250.067593 -L 182.014198 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 250.067593 -L 192.483951 239.59784 -L 182.014198 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 250.067593 -L 202.953704 250.067593 -L 192.483951 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 250.067593 -L 202.953704 239.59784 -L 192.483951 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 250.067593 -L 213.423457 250.067593 -L 202.953704 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 250.067593 -L 213.423457 239.59784 -L 202.953704 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 250.067593 -L 223.89321 250.067593 -L 213.423457 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 250.067593 -L 223.89321 239.59784 -L 213.423457 239.59784 -z -" style="fill:#ffbd00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 250.067593 -L 234.362963 250.067593 -L 223.89321 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 250.067593 -L 234.362963 239.59784 -L 223.89321 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 250.067593 -L 244.832716 250.067593 -L 234.362963 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 250.067593 -L 244.832716 239.59784 -L 234.362963 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 250.067593 -L 255.302469 250.067593 -L 244.832716 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 250.067593 -L 255.302469 239.59784 -L 244.832716 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 250.067593 -L 265.772222 250.067593 -L 255.302469 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 250.067593 -L 265.772222 239.59784 -L 255.302469 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 250.067593 -L 276.241975 250.067593 -L 265.772222 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 250.067593 -L 276.241975 239.59784 -L 265.772222 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 250.067593 -L 286.711728 250.067593 -L 276.241975 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 250.067593 -L 286.711728 239.59784 -L 276.241975 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 250.067593 -L 297.181481 250.067593 -L 286.711728 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 250.067593 -L 297.181481 239.59784 -L 286.711728 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 250.067593 -L 307.651235 250.067593 -L 297.181481 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 250.067593 -L 307.651235 239.59784 -L 297.181481 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 250.067593 -L 318.120988 250.067593 -L 307.651235 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 250.067593 -L 318.120988 239.59784 -L 307.651235 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 250.067593 -L 328.590741 250.067593 -L 318.120988 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 250.067593 -L 328.590741 239.59784 -L 318.120988 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 250.067593 -L 339.060494 250.067593 -L 328.590741 239.59784 -z -" style="fill:#ffb900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 250.067593 -L 339.060494 239.59784 -L 328.590741 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 250.067593 -L 349.530247 250.067593 -L 339.060494 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 250.067593 -L 349.530247 239.59784 -L 339.060494 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 250.067593 -L 360 250.067593 -L 349.530247 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 250.067593 -L 360 239.59784 -L 349.530247 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 250.067593 -L 370.469753 250.067593 -L 360 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 250.067593 -L 370.469753 239.59784 -L 360 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 250.067593 -L 380.939506 250.067593 -L 370.469753 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 250.067593 -L 380.939506 239.59784 -L 370.469753 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 250.067593 -L 391.409259 250.067593 -L 380.939506 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 250.067593 -L 391.409259 239.59784 -L 380.939506 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 250.067593 -L 401.879012 250.067593 -L 391.409259 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 250.067593 -L 401.879012 239.59784 -L 391.409259 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 250.067593 -L 412.348765 250.067593 -L 401.879012 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 250.067593 -L 412.348765 239.59784 -L 401.879012 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 250.067593 -L 422.818519 250.067593 -L 412.348765 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 250.067593 -L 422.818519 239.59784 -L 412.348765 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 250.067593 -L 433.288272 250.067593 -L 422.818519 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 250.067593 -L 433.288272 239.59784 -L 422.818519 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 250.067593 -L 443.758025 250.067593 -L 433.288272 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 250.067593 -L 443.758025 239.59784 -L 433.288272 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 250.067593 -L 454.227778 250.067593 -L 443.758025 239.59784 -z -" style="fill:#ffb600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 250.067593 -L 454.227778 239.59784 -L 443.758025 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 250.067593 -L 464.697531 250.067593 -L 454.227778 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 250.067593 -L 464.697531 239.59784 -L 454.227778 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 250.067593 -L 475.167284 250.067593 -L 464.697531 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 250.067593 -L 475.167284 239.59784 -L 464.697531 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 250.067593 -L 485.637037 250.067593 -L 475.167284 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 250.067593 -L 485.637037 239.59784 -L 475.167284 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 250.067593 -L 496.10679 250.067593 -L 485.637037 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 250.067593 -L 496.10679 239.59784 -L 485.637037 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 250.067593 -L 506.576543 250.067593 -L 496.10679 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 250.067593 -L 506.576543 239.59784 -L 496.10679 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 250.067593 -L 517.046296 250.067593 -L 506.576543 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 250.067593 -L 517.046296 239.59784 -L 506.576543 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 250.067593 -L 527.516049 250.067593 -L 517.046296 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 250.067593 -L 527.516049 239.59784 -L 517.046296 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 250.067593 -L 537.985802 250.067593 -L 527.516049 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 250.067593 -L 537.985802 239.59784 -L 527.516049 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 250.067593 -L 548.455556 250.067593 -L 537.985802 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 250.067593 -L 548.455556 239.59784 -L 537.985802 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 250.067593 -L 558.925309 250.067593 -L 548.455556 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 250.067593 -L 558.925309 239.59784 -L 548.455556 239.59784 -z -" style="fill:#ffb200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 250.067593 -L 569.395062 250.067593 -L 558.925309 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 250.067593 -L 569.395062 239.59784 -L 558.925309 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 250.067593 -L 579.864815 250.067593 -L 569.395062 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 250.067593 -L 579.864815 239.59784 -L 569.395062 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 250.067593 -L 590.334568 250.067593 -L 579.864815 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 250.067593 -L 590.334568 239.59784 -L 579.864815 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 250.067593 -L 600.804321 250.067593 -L 590.334568 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 250.067593 -L 600.804321 239.59784 -L 590.334568 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 250.067593 -L 611.274074 250.067593 -L 600.804321 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 250.067593 -L 611.274074 239.59784 -L 600.804321 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 250.067593 -L 621.743827 250.067593 -L 611.274074 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 250.067593 -L 621.743827 239.59784 -L 611.274074 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 250.067593 -L 632.21358 250.067593 -L 621.743827 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 250.067593 -L 632.21358 239.59784 -L 621.743827 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 250.067593 -L 642.683333 250.067593 -L 632.21358 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 250.067593 -L 642.683333 239.59784 -L 632.21358 239.59784 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 239.59784 -L 87.78642 239.59784 -L 77.316667 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 239.59784 -L 87.78642 229.128086 -L 77.316667 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 239.59784 -L 98.256173 239.59784 -L 87.78642 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 239.59784 -L 98.256173 229.128086 -L 87.78642 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 239.59784 -L 108.725926 239.59784 -L 98.256173 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 239.59784 -L 108.725926 229.128086 -L 98.256173 229.128086 -z -" style="fill:#ffae00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 239.59784 -L 119.195679 239.59784 -L 108.725926 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 239.59784 -L 119.195679 229.128086 -L 108.725926 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 239.59784 -L 129.665432 239.59784 -L 119.195679 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 239.59784 -L 129.665432 229.128086 -L 119.195679 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 239.59784 -L 140.135185 239.59784 -L 129.665432 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 239.59784 -L 140.135185 229.128086 -L 129.665432 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 239.59784 -L 150.604938 239.59784 -L 140.135185 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 239.59784 -L 150.604938 229.128086 -L 140.135185 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 239.59784 -L 161.074691 239.59784 -L 150.604938 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 239.59784 -L 161.074691 229.128086 -L 150.604938 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 239.59784 -L 171.544444 239.59784 -L 161.074691 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 239.59784 -L 171.544444 229.128086 -L 161.074691 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 239.59784 -L 182.014198 239.59784 -L 171.544444 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 239.59784 -L 182.014198 229.128086 -L 171.544444 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 239.59784 -L 192.483951 239.59784 -L 182.014198 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 239.59784 -L 192.483951 229.128086 -L 182.014198 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 239.59784 -L 202.953704 239.59784 -L 192.483951 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 239.59784 -L 202.953704 229.128086 -L 192.483951 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 239.59784 -L 213.423457 239.59784 -L 202.953704 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 239.59784 -L 213.423457 229.128086 -L 202.953704 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 239.59784 -L 223.89321 239.59784 -L 213.423457 229.128086 -z -" style="fill:#ffab00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 239.59784 -L 223.89321 229.128086 -L 213.423457 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 239.59784 -L 234.362963 239.59784 -L 223.89321 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 239.59784 -L 234.362963 229.128086 -L 223.89321 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 239.59784 -L 244.832716 239.59784 -L 234.362963 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 239.59784 -L 244.832716 229.128086 -L 234.362963 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 239.59784 -L 255.302469 239.59784 -L 244.832716 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 239.59784 -L 255.302469 229.128086 -L 244.832716 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 239.59784 -L 265.772222 239.59784 -L 255.302469 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 239.59784 -L 265.772222 229.128086 -L 255.302469 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 239.59784 -L 276.241975 239.59784 -L 265.772222 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 239.59784 -L 276.241975 229.128086 -L 265.772222 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 239.59784 -L 286.711728 239.59784 -L 276.241975 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 239.59784 -L 286.711728 229.128086 -L 276.241975 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 239.59784 -L 297.181481 239.59784 -L 286.711728 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 239.59784 -L 297.181481 229.128086 -L 286.711728 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 239.59784 -L 307.651235 239.59784 -L 297.181481 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 239.59784 -L 307.651235 229.128086 -L 297.181481 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 239.59784 -L 318.120988 239.59784 -L 307.651235 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 239.59784 -L 318.120988 229.128086 -L 307.651235 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 239.59784 -L 328.590741 239.59784 -L 318.120988 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 239.59784 -L 328.590741 229.128086 -L 318.120988 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 239.59784 -L 339.060494 239.59784 -L 328.590741 229.128086 -z -" style="fill:#ffa700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 239.59784 -L 339.060494 229.128086 -L 328.590741 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 239.59784 -L 349.530247 239.59784 -L 339.060494 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 239.59784 -L 349.530247 229.128086 -L 339.060494 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 239.59784 -L 360 239.59784 -L 349.530247 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 239.59784 -L 360 229.128086 -L 349.530247 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 239.59784 -L 370.469753 239.59784 -L 360 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 239.59784 -L 370.469753 229.128086 -L 360 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 239.59784 -L 380.939506 239.59784 -L 370.469753 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 239.59784 -L 380.939506 229.128086 -L 370.469753 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 239.59784 -L 391.409259 239.59784 -L 380.939506 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 239.59784 -L 391.409259 229.128086 -L 380.939506 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 239.59784 -L 401.879012 239.59784 -L 391.409259 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 239.59784 -L 401.879012 229.128086 -L 391.409259 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 239.59784 -L 412.348765 239.59784 -L 401.879012 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 239.59784 -L 412.348765 229.128086 -L 401.879012 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 239.59784 -L 422.818519 239.59784 -L 412.348765 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 239.59784 -L 422.818519 229.128086 -L 412.348765 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 239.59784 -L 433.288272 239.59784 -L 422.818519 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 239.59784 -L 433.288272 229.128086 -L 422.818519 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 239.59784 -L 443.758025 239.59784 -L 433.288272 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 239.59784 -L 443.758025 229.128086 -L 433.288272 229.128086 -z -" style="fill:#ffa300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 239.59784 -L 454.227778 239.59784 -L 443.758025 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 239.59784 -L 454.227778 229.128086 -L 443.758025 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 239.59784 -L 464.697531 239.59784 -L 454.227778 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 239.59784 -L 464.697531 229.128086 -L 454.227778 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 239.59784 -L 475.167284 239.59784 -L 464.697531 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 239.59784 -L 475.167284 229.128086 -L 464.697531 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 239.59784 -L 485.637037 239.59784 -L 475.167284 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 239.59784 -L 485.637037 229.128086 -L 475.167284 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 239.59784 -L 496.10679 239.59784 -L 485.637037 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 239.59784 -L 496.10679 229.128086 -L 485.637037 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 239.59784 -L 506.576543 239.59784 -L 496.10679 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 239.59784 -L 506.576543 229.128086 -L 496.10679 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 239.59784 -L 517.046296 239.59784 -L 506.576543 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 239.59784 -L 517.046296 229.128086 -L 506.576543 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 239.59784 -L 527.516049 239.59784 -L 517.046296 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 239.59784 -L 527.516049 229.128086 -L 517.046296 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 239.59784 -L 537.985802 239.59784 -L 527.516049 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 239.59784 -L 537.985802 229.128086 -L 527.516049 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 239.59784 -L 548.455556 239.59784 -L 537.985802 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 239.59784 -L 548.455556 229.128086 -L 537.985802 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 239.59784 -L 558.925309 239.59784 -L 548.455556 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 239.59784 -L 558.925309 229.128086 -L 548.455556 229.128086 -z -" style="fill:#ff9f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 239.59784 -L 569.395062 239.59784 -L 558.925309 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 239.59784 -L 569.395062 229.128086 -L 558.925309 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 239.59784 -L 579.864815 239.59784 -L 569.395062 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 239.59784 -L 579.864815 229.128086 -L 569.395062 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 239.59784 -L 590.334568 239.59784 -L 579.864815 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 239.59784 -L 590.334568 229.128086 -L 579.864815 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 239.59784 -L 600.804321 239.59784 -L 590.334568 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 239.59784 -L 600.804321 229.128086 -L 590.334568 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 239.59784 -L 611.274074 239.59784 -L 600.804321 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 239.59784 -L 611.274074 229.128086 -L 600.804321 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 239.59784 -L 621.743827 239.59784 -L 611.274074 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 239.59784 -L 621.743827 229.128086 -L 611.274074 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 239.59784 -L 632.21358 239.59784 -L 621.743827 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 239.59784 -L 632.21358 229.128086 -L 621.743827 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 239.59784 -L 642.683333 239.59784 -L 632.21358 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 239.59784 -L 642.683333 229.128086 -L 632.21358 229.128086 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 229.128086 -L 87.78642 229.128086 -L 77.316667 218.658333 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 229.128086 -L 87.78642 218.658333 -L 77.316667 218.658333 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 229.128086 -L 98.256173 229.128086 -L 87.78642 218.658333 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 229.128086 -L 98.256173 218.658333 -L 87.78642 218.658333 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 229.128086 -L 108.725926 229.128086 -L 98.256173 218.658333 -z -" style="fill:#ff9c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 229.128086 -L 108.725926 218.658333 -L 98.256173 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 229.128086 -L 119.195679 229.128086 -L 108.725926 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 229.128086 -L 119.195679 218.658333 -L 108.725926 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 229.128086 -L 129.665432 229.128086 -L 119.195679 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 229.128086 -L 129.665432 218.658333 -L 119.195679 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 229.128086 -L 140.135185 229.128086 -L 129.665432 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 229.128086 -L 140.135185 218.658333 -L 129.665432 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 229.128086 -L 150.604938 229.128086 -L 140.135185 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 229.128086 -L 150.604938 218.658333 -L 140.135185 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 229.128086 -L 161.074691 229.128086 -L 150.604938 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 229.128086 -L 161.074691 218.658333 -L 150.604938 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 229.128086 -L 171.544444 229.128086 -L 161.074691 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 229.128086 -L 171.544444 218.658333 -L 161.074691 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 229.128086 -L 182.014198 229.128086 -L 171.544444 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 229.128086 -L 182.014198 218.658333 -L 171.544444 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 229.128086 -L 192.483951 229.128086 -L 182.014198 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 229.128086 -L 192.483951 218.658333 -L 182.014198 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 229.128086 -L 202.953704 229.128086 -L 192.483951 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 229.128086 -L 202.953704 218.658333 -L 192.483951 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 229.128086 -L 213.423457 229.128086 -L 202.953704 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 229.128086 -L 213.423457 218.658333 -L 202.953704 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 229.128086 -L 223.89321 229.128086 -L 213.423457 218.658333 -z -" style="fill:#ff9800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 229.128086 -L 223.89321 218.658333 -L 213.423457 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 229.128086 -L 234.362963 229.128086 -L 223.89321 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 229.128086 -L 234.362963 218.658333 -L 223.89321 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 229.128086 -L 244.832716 229.128086 -L 234.362963 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 229.128086 -L 244.832716 218.658333 -L 234.362963 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 229.128086 -L 255.302469 229.128086 -L 244.832716 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 229.128086 -L 255.302469 218.658333 -L 244.832716 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 229.128086 -L 265.772222 229.128086 -L 255.302469 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 229.128086 -L 265.772222 218.658333 -L 255.302469 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 229.128086 -L 276.241975 229.128086 -L 265.772222 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 229.128086 -L 276.241975 218.658333 -L 265.772222 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 229.128086 -L 286.711728 229.128086 -L 276.241975 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 229.128086 -L 286.711728 218.658333 -L 276.241975 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 229.128086 -L 297.181481 229.128086 -L 286.711728 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 229.128086 -L 297.181481 218.658333 -L 286.711728 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 229.128086 -L 307.651235 229.128086 -L 297.181481 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 229.128086 -L 307.651235 218.658333 -L 297.181481 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 229.128086 -L 318.120988 229.128086 -L 307.651235 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 229.128086 -L 318.120988 218.658333 -L 307.651235 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 229.128086 -L 328.590741 229.128086 -L 318.120988 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 229.128086 -L 328.590741 218.658333 -L 318.120988 218.658333 -z -" style="fill:#ff9400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 229.128086 -L 339.060494 229.128086 -L 328.590741 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 229.128086 -L 339.060494 218.658333 -L 328.590741 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 229.128086 -L 349.530247 229.128086 -L 339.060494 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 229.128086 -L 349.530247 218.658333 -L 339.060494 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 229.128086 -L 360 229.128086 -L 349.530247 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 229.128086 -L 360 218.658333 -L 349.530247 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 229.128086 -L 370.469753 229.128086 -L 360 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 229.128086 -L 370.469753 218.658333 -L 360 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 229.128086 -L 380.939506 229.128086 -L 370.469753 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 229.128086 -L 380.939506 218.658333 -L 370.469753 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 229.128086 -L 391.409259 229.128086 -L 380.939506 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 229.128086 -L 391.409259 218.658333 -L 380.939506 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 229.128086 -L 401.879012 229.128086 -L 391.409259 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 229.128086 -L 401.879012 218.658333 -L 391.409259 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 229.128086 -L 412.348765 229.128086 -L 401.879012 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 229.128086 -L 412.348765 218.658333 -L 401.879012 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 229.128086 -L 422.818519 229.128086 -L 412.348765 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 229.128086 -L 422.818519 218.658333 -L 412.348765 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 229.128086 -L 433.288272 229.128086 -L 422.818519 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 229.128086 -L 433.288272 218.658333 -L 422.818519 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 229.128086 -L 443.758025 229.128086 -L 433.288272 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 229.128086 -L 443.758025 218.658333 -L 433.288272 218.658333 -z -" style="fill:#ff9100;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 229.128086 -L 454.227778 229.128086 -L 443.758025 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 229.128086 -L 454.227778 218.658333 -L 443.758025 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 229.128086 -L 464.697531 229.128086 -L 454.227778 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 229.128086 -L 464.697531 218.658333 -L 454.227778 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 229.128086 -L 475.167284 229.128086 -L 464.697531 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 229.128086 -L 475.167284 218.658333 -L 464.697531 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 229.128086 -L 485.637037 229.128086 -L 475.167284 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 229.128086 -L 485.637037 218.658333 -L 475.167284 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 229.128086 -L 496.10679 229.128086 -L 485.637037 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 229.128086 -L 496.10679 218.658333 -L 485.637037 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 229.128086 -L 506.576543 229.128086 -L 496.10679 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 229.128086 -L 506.576543 218.658333 -L 496.10679 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 229.128086 -L 517.046296 229.128086 -L 506.576543 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 229.128086 -L 517.046296 218.658333 -L 506.576543 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 229.128086 -L 527.516049 229.128086 -L 517.046296 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 229.128086 -L 527.516049 218.658333 -L 517.046296 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 229.128086 -L 537.985802 229.128086 -L 527.516049 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 229.128086 -L 537.985802 218.658333 -L 527.516049 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 229.128086 -L 548.455556 229.128086 -L 537.985802 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 229.128086 -L 548.455556 218.658333 -L 537.985802 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 229.128086 -L 558.925309 229.128086 -L 548.455556 218.658333 -z -" style="fill:#ff8d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 229.128086 -L 558.925309 218.658333 -L 548.455556 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 229.128086 -L 569.395062 229.128086 -L 558.925309 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 229.128086 -L 569.395062 218.658333 -L 558.925309 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 229.128086 -L 579.864815 229.128086 -L 569.395062 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 229.128086 -L 579.864815 218.658333 -L 569.395062 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 229.128086 -L 590.334568 229.128086 -L 579.864815 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 229.128086 -L 590.334568 218.658333 -L 579.864815 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 229.128086 -L 600.804321 229.128086 -L 590.334568 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 229.128086 -L 600.804321 218.658333 -L 590.334568 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 229.128086 -L 611.274074 229.128086 -L 600.804321 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 229.128086 -L 611.274074 218.658333 -L 600.804321 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 229.128086 -L 621.743827 229.128086 -L 611.274074 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 229.128086 -L 621.743827 218.658333 -L 611.274074 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 229.128086 -L 632.21358 229.128086 -L 621.743827 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 229.128086 -L 632.21358 218.658333 -L 621.743827 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 229.128086 -L 642.683333 229.128086 -L 632.21358 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 229.128086 -L 642.683333 218.658333 -L 632.21358 218.658333 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 218.658333 -L 87.78642 218.658333 -L 77.316667 208.18858 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 218.658333 -L 87.78642 208.18858 -L 77.316667 208.18858 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 218.658333 -L 98.256173 218.658333 -L 87.78642 208.18858 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 218.658333 -L 98.256173 208.18858 -L 87.78642 208.18858 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 218.658333 -L 108.725926 218.658333 -L 98.256173 208.18858 -z -" style="fill:#ff8900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 218.658333 -L 108.725926 208.18858 -L 98.256173 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 218.658333 -L 119.195679 218.658333 -L 108.725926 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 218.658333 -L 119.195679 208.18858 -L 108.725926 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 218.658333 -L 129.665432 218.658333 -L 119.195679 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 218.658333 -L 129.665432 208.18858 -L 119.195679 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 218.658333 -L 140.135185 218.658333 -L 129.665432 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 218.658333 -L 140.135185 208.18858 -L 129.665432 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 218.658333 -L 150.604938 218.658333 -L 140.135185 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 218.658333 -L 150.604938 208.18858 -L 140.135185 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 218.658333 -L 161.074691 218.658333 -L 150.604938 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 218.658333 -L 161.074691 208.18858 -L 150.604938 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 218.658333 -L 171.544444 218.658333 -L 161.074691 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 218.658333 -L 171.544444 208.18858 -L 161.074691 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 218.658333 -L 182.014198 218.658333 -L 171.544444 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 218.658333 -L 182.014198 208.18858 -L 171.544444 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 218.658333 -L 192.483951 218.658333 -L 182.014198 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 218.658333 -L 192.483951 208.18858 -L 182.014198 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 218.658333 -L 202.953704 218.658333 -L 192.483951 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 218.658333 -L 202.953704 208.18858 -L 192.483951 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 218.658333 -L 213.423457 218.658333 -L 202.953704 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 218.658333 -L 213.423457 208.18858 -L 202.953704 208.18858 -z -" style="fill:#ff8600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 218.658333 -L 223.89321 218.658333 -L 213.423457 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 218.658333 -L 223.89321 208.18858 -L 213.423457 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 218.658333 -L 234.362963 218.658333 -L 223.89321 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 218.658333 -L 234.362963 208.18858 -L 223.89321 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 218.658333 -L 244.832716 218.658333 -L 234.362963 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 218.658333 -L 244.832716 208.18858 -L 234.362963 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 218.658333 -L 255.302469 218.658333 -L 244.832716 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 218.658333 -L 255.302469 208.18858 -L 244.832716 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 218.658333 -L 265.772222 218.658333 -L 255.302469 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 218.658333 -L 265.772222 208.18858 -L 255.302469 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 218.658333 -L 276.241975 218.658333 -L 265.772222 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 218.658333 -L 276.241975 208.18858 -L 265.772222 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 218.658333 -L 286.711728 218.658333 -L 276.241975 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 218.658333 -L 286.711728 208.18858 -L 276.241975 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 218.658333 -L 297.181481 218.658333 -L 286.711728 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 218.658333 -L 297.181481 208.18858 -L 286.711728 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 218.658333 -L 307.651235 218.658333 -L 297.181481 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 218.658333 -L 307.651235 208.18858 -L 297.181481 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 218.658333 -L 318.120988 218.658333 -L 307.651235 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 218.658333 -L 318.120988 208.18858 -L 307.651235 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 218.658333 -L 328.590741 218.658333 -L 318.120988 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 218.658333 -L 328.590741 208.18858 -L 318.120988 208.18858 -z -" style="fill:#ff8200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 218.658333 -L 339.060494 218.658333 -L 328.590741 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 218.658333 -L 339.060494 208.18858 -L 328.590741 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 218.658333 -L 349.530247 218.658333 -L 339.060494 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 218.658333 -L 349.530247 208.18858 -L 339.060494 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 218.658333 -L 360 218.658333 -L 349.530247 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 218.658333 -L 360 208.18858 -L 349.530247 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 218.658333 -L 370.469753 218.658333 -L 360 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 218.658333 -L 370.469753 208.18858 -L 360 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 218.658333 -L 380.939506 218.658333 -L 370.469753 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 218.658333 -L 380.939506 208.18858 -L 370.469753 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 218.658333 -L 391.409259 218.658333 -L 380.939506 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 218.658333 -L 391.409259 208.18858 -L 380.939506 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 218.658333 -L 401.879012 218.658333 -L 391.409259 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 218.658333 -L 401.879012 208.18858 -L 391.409259 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 218.658333 -L 412.348765 218.658333 -L 401.879012 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 218.658333 -L 412.348765 208.18858 -L 401.879012 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 218.658333 -L 422.818519 218.658333 -L 412.348765 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 218.658333 -L 422.818519 208.18858 -L 412.348765 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 218.658333 -L 433.288272 218.658333 -L 422.818519 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 218.658333 -L 433.288272 208.18858 -L 422.818519 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 218.658333 -L 443.758025 218.658333 -L 433.288272 208.18858 -z -" style="fill:#ff7e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 218.658333 -L 443.758025 208.18858 -L 433.288272 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 218.658333 -L 454.227778 218.658333 -L 443.758025 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 218.658333 -L 454.227778 208.18858 -L 443.758025 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 218.658333 -L 464.697531 218.658333 -L 454.227778 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 218.658333 -L 464.697531 208.18858 -L 454.227778 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 218.658333 -L 475.167284 218.658333 -L 464.697531 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 218.658333 -L 475.167284 208.18858 -L 464.697531 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 218.658333 -L 485.637037 218.658333 -L 475.167284 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 218.658333 -L 485.637037 208.18858 -L 475.167284 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 218.658333 -L 496.10679 218.658333 -L 485.637037 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 218.658333 -L 496.10679 208.18858 -L 485.637037 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 218.658333 -L 506.576543 218.658333 -L 496.10679 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 218.658333 -L 506.576543 208.18858 -L 496.10679 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 218.658333 -L 517.046296 218.658333 -L 506.576543 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 218.658333 -L 517.046296 208.18858 -L 506.576543 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 218.658333 -L 527.516049 218.658333 -L 517.046296 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 218.658333 -L 527.516049 208.18858 -L 517.046296 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 218.658333 -L 537.985802 218.658333 -L 527.516049 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 218.658333 -L 537.985802 208.18858 -L 527.516049 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 218.658333 -L 548.455556 218.658333 -L 537.985802 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 218.658333 -L 548.455556 208.18858 -L 537.985802 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 218.658333 -L 558.925309 218.658333 -L 548.455556 208.18858 -z -" style="fill:#ff7a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 218.658333 -L 558.925309 208.18858 -L 548.455556 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 218.658333 -L 569.395062 218.658333 -L 558.925309 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 218.658333 -L 569.395062 208.18858 -L 558.925309 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 218.658333 -L 579.864815 218.658333 -L 569.395062 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 218.658333 -L 579.864815 208.18858 -L 569.395062 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 218.658333 -L 590.334568 218.658333 -L 579.864815 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 218.658333 -L 590.334568 208.18858 -L 579.864815 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 218.658333 -L 600.804321 218.658333 -L 590.334568 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 218.658333 -L 600.804321 208.18858 -L 590.334568 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 218.658333 -L 611.274074 218.658333 -L 600.804321 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 218.658333 -L 611.274074 208.18858 -L 600.804321 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 218.658333 -L 621.743827 218.658333 -L 611.274074 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 218.658333 -L 621.743827 208.18858 -L 611.274074 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 218.658333 -L 632.21358 218.658333 -L 621.743827 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 218.658333 -L 632.21358 208.18858 -L 621.743827 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 218.658333 -L 642.683333 218.658333 -L 632.21358 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 218.658333 -L 642.683333 208.18858 -L 632.21358 208.18858 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 208.18858 -L 87.78642 208.18858 -L 77.316667 197.718827 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 208.18858 -L 87.78642 197.718827 -L 77.316667 197.718827 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 208.18858 -L 98.256173 208.18858 -L 87.78642 197.718827 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 208.18858 -L 98.256173 197.718827 -L 87.78642 197.718827 -z -" style="fill:#ff7700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 208.18858 -L 108.725926 208.18858 -L 98.256173 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 208.18858 -L 108.725926 197.718827 -L 98.256173 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 208.18858 -L 119.195679 208.18858 -L 108.725926 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 208.18858 -L 119.195679 197.718827 -L 108.725926 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 208.18858 -L 129.665432 208.18858 -L 119.195679 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 208.18858 -L 129.665432 197.718827 -L 119.195679 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 208.18858 -L 140.135185 208.18858 -L 129.665432 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 208.18858 -L 140.135185 197.718827 -L 129.665432 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 208.18858 -L 150.604938 208.18858 -L 140.135185 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 208.18858 -L 150.604938 197.718827 -L 140.135185 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 208.18858 -L 161.074691 208.18858 -L 150.604938 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 208.18858 -L 161.074691 197.718827 -L 150.604938 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 208.18858 -L 171.544444 208.18858 -L 161.074691 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 208.18858 -L 171.544444 197.718827 -L 161.074691 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 208.18858 -L 182.014198 208.18858 -L 171.544444 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 208.18858 -L 182.014198 197.718827 -L 171.544444 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 208.18858 -L 192.483951 208.18858 -L 182.014198 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 208.18858 -L 192.483951 197.718827 -L 182.014198 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 208.18858 -L 202.953704 208.18858 -L 192.483951 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 208.18858 -L 202.953704 197.718827 -L 192.483951 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 208.18858 -L 213.423457 208.18858 -L 202.953704 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 208.18858 -L 213.423457 197.718827 -L 202.953704 197.718827 -z -" style="fill:#ff7300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 208.18858 -L 223.89321 208.18858 -L 213.423457 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 208.18858 -L 223.89321 197.718827 -L 213.423457 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 208.18858 -L 234.362963 208.18858 -L 223.89321 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 208.18858 -L 234.362963 197.718827 -L 223.89321 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 208.18858 -L 244.832716 208.18858 -L 234.362963 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 208.18858 -L 244.832716 197.718827 -L 234.362963 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 208.18858 -L 255.302469 208.18858 -L 244.832716 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 208.18858 -L 255.302469 197.718827 -L 244.832716 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 208.18858 -L 265.772222 208.18858 -L 255.302469 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 208.18858 -L 265.772222 197.718827 -L 255.302469 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 208.18858 -L 276.241975 208.18858 -L 265.772222 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 208.18858 -L 276.241975 197.718827 -L 265.772222 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 208.18858 -L 286.711728 208.18858 -L 276.241975 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 208.18858 -L 286.711728 197.718827 -L 276.241975 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 208.18858 -L 297.181481 208.18858 -L 286.711728 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 208.18858 -L 297.181481 197.718827 -L 286.711728 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 208.18858 -L 307.651235 208.18858 -L 297.181481 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 208.18858 -L 307.651235 197.718827 -L 297.181481 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 208.18858 -L 318.120988 208.18858 -L 307.651235 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 208.18858 -L 318.120988 197.718827 -L 307.651235 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 208.18858 -L 328.590741 208.18858 -L 318.120988 197.718827 -z -" style="fill:#ff6f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 208.18858 -L 328.590741 197.718827 -L 318.120988 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 208.18858 -L 339.060494 208.18858 -L 328.590741 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 208.18858 -L 339.060494 197.718827 -L 328.590741 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 208.18858 -L 349.530247 208.18858 -L 339.060494 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 208.18858 -L 349.530247 197.718827 -L 339.060494 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 208.18858 -L 360 208.18858 -L 349.530247 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 208.18858 -L 360 197.718827 -L 349.530247 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 208.18858 -L 370.469753 208.18858 -L 360 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 208.18858 -L 370.469753 197.718827 -L 360 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 208.18858 -L 380.939506 208.18858 -L 370.469753 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 208.18858 -L 380.939506 197.718827 -L 370.469753 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 208.18858 -L 391.409259 208.18858 -L 380.939506 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 208.18858 -L 391.409259 197.718827 -L 380.939506 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 208.18858 -L 401.879012 208.18858 -L 391.409259 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 208.18858 -L 401.879012 197.718827 -L 391.409259 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 208.18858 -L 412.348765 208.18858 -L 401.879012 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 208.18858 -L 412.348765 197.718827 -L 401.879012 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 208.18858 -L 422.818519 208.18858 -L 412.348765 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 208.18858 -L 422.818519 197.718827 -L 412.348765 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 208.18858 -L 433.288272 208.18858 -L 422.818519 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 208.18858 -L 433.288272 197.718827 -L 422.818519 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 208.18858 -L 443.758025 208.18858 -L 433.288272 197.718827 -z -" style="fill:#ff6c00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 208.18858 -L 443.758025 197.718827 -L 433.288272 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 208.18858 -L 454.227778 208.18858 -L 443.758025 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 208.18858 -L 454.227778 197.718827 -L 443.758025 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 208.18858 -L 464.697531 208.18858 -L 454.227778 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 208.18858 -L 464.697531 197.718827 -L 454.227778 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 208.18858 -L 475.167284 208.18858 -L 464.697531 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 208.18858 -L 475.167284 197.718827 -L 464.697531 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 208.18858 -L 485.637037 208.18858 -L 475.167284 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 208.18858 -L 485.637037 197.718827 -L 475.167284 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 208.18858 -L 496.10679 208.18858 -L 485.637037 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 208.18858 -L 496.10679 197.718827 -L 485.637037 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 208.18858 -L 506.576543 208.18858 -L 496.10679 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 208.18858 -L 506.576543 197.718827 -L 496.10679 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 208.18858 -L 517.046296 208.18858 -L 506.576543 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 208.18858 -L 517.046296 197.718827 -L 506.576543 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 208.18858 -L 527.516049 208.18858 -L 517.046296 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 208.18858 -L 527.516049 197.718827 -L 517.046296 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 208.18858 -L 537.985802 208.18858 -L 527.516049 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 208.18858 -L 537.985802 197.718827 -L 527.516049 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 208.18858 -L 548.455556 208.18858 -L 537.985802 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 208.18858 -L 548.455556 197.718827 -L 537.985802 197.718827 -z -" style="fill:#ff6800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 208.18858 -L 558.925309 208.18858 -L 548.455556 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 208.18858 -L 558.925309 197.718827 -L 548.455556 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 208.18858 -L 569.395062 208.18858 -L 558.925309 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 208.18858 -L 569.395062 197.718827 -L 558.925309 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 208.18858 -L 579.864815 208.18858 -L 569.395062 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 208.18858 -L 579.864815 197.718827 -L 569.395062 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 208.18858 -L 590.334568 208.18858 -L 579.864815 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 208.18858 -L 590.334568 197.718827 -L 579.864815 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 208.18858 -L 600.804321 208.18858 -L 590.334568 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 208.18858 -L 600.804321 197.718827 -L 590.334568 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 208.18858 -L 611.274074 208.18858 -L 600.804321 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 208.18858 -L 611.274074 197.718827 -L 600.804321 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 208.18858 -L 621.743827 208.18858 -L 611.274074 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 208.18858 -L 621.743827 197.718827 -L 611.274074 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 208.18858 -L 632.21358 208.18858 -L 621.743827 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 208.18858 -L 632.21358 197.718827 -L 621.743827 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 208.18858 -L 642.683333 208.18858 -L 632.21358 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 208.18858 -L 642.683333 197.718827 -L 632.21358 197.718827 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 197.718827 -L 87.78642 197.718827 -L 77.316667 187.249074 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 197.718827 -L 87.78642 187.249074 -L 77.316667 187.249074 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 197.718827 -L 98.256173 197.718827 -L 87.78642 187.249074 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 197.718827 -L 98.256173 187.249074 -L 87.78642 187.249074 -z -" style="fill:#ff6400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 197.718827 -L 108.725926 197.718827 -L 98.256173 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 197.718827 -L 108.725926 187.249074 -L 98.256173 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 197.718827 -L 119.195679 197.718827 -L 108.725926 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 197.718827 -L 119.195679 187.249074 -L 108.725926 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 197.718827 -L 129.665432 197.718827 -L 119.195679 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 197.718827 -L 129.665432 187.249074 -L 119.195679 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 197.718827 -L 140.135185 197.718827 -L 129.665432 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 197.718827 -L 140.135185 187.249074 -L 129.665432 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 197.718827 -L 150.604938 197.718827 -L 140.135185 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 197.718827 -L 150.604938 187.249074 -L 140.135185 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 197.718827 -L 161.074691 197.718827 -L 150.604938 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 197.718827 -L 161.074691 187.249074 -L 150.604938 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 197.718827 -L 171.544444 197.718827 -L 161.074691 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 197.718827 -L 171.544444 187.249074 -L 161.074691 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 197.718827 -L 182.014198 197.718827 -L 171.544444 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 197.718827 -L 182.014198 187.249074 -L 171.544444 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 197.718827 -L 192.483951 197.718827 -L 182.014198 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 197.718827 -L 192.483951 187.249074 -L 182.014198 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 197.718827 -L 202.953704 197.718827 -L 192.483951 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 197.718827 -L 202.953704 187.249074 -L 192.483951 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 197.718827 -L 213.423457 197.718827 -L 202.953704 187.249074 -z -" style="fill:#ff6000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 197.718827 -L 213.423457 187.249074 -L 202.953704 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 197.718827 -L 223.89321 197.718827 -L 213.423457 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 197.718827 -L 223.89321 187.249074 -L 213.423457 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 197.718827 -L 234.362963 197.718827 -L 223.89321 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 197.718827 -L 234.362963 187.249074 -L 223.89321 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 197.718827 -L 244.832716 197.718827 -L 234.362963 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 197.718827 -L 244.832716 187.249074 -L 234.362963 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 197.718827 -L 255.302469 197.718827 -L 244.832716 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 197.718827 -L 255.302469 187.249074 -L 244.832716 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 197.718827 -L 265.772222 197.718827 -L 255.302469 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 197.718827 -L 265.772222 187.249074 -L 255.302469 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 197.718827 -L 276.241975 197.718827 -L 265.772222 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 197.718827 -L 276.241975 187.249074 -L 265.772222 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 197.718827 -L 286.711728 197.718827 -L 276.241975 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 197.718827 -L 286.711728 187.249074 -L 276.241975 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 197.718827 -L 297.181481 197.718827 -L 286.711728 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 197.718827 -L 297.181481 187.249074 -L 286.711728 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 197.718827 -L 307.651235 197.718827 -L 297.181481 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 197.718827 -L 307.651235 187.249074 -L 297.181481 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 197.718827 -L 318.120988 197.718827 -L 307.651235 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 197.718827 -L 318.120988 187.249074 -L 307.651235 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 197.718827 -L 328.590741 197.718827 -L 318.120988 187.249074 -z -" style="fill:#ff5d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 197.718827 -L 328.590741 187.249074 -L 318.120988 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 197.718827 -L 339.060494 197.718827 -L 328.590741 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 197.718827 -L 339.060494 187.249074 -L 328.590741 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 197.718827 -L 349.530247 197.718827 -L 339.060494 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 197.718827 -L 349.530247 187.249074 -L 339.060494 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 197.718827 -L 360 197.718827 -L 349.530247 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 197.718827 -L 360 187.249074 -L 349.530247 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 197.718827 -L 370.469753 197.718827 -L 360 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 197.718827 -L 370.469753 187.249074 -L 360 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 197.718827 -L 380.939506 197.718827 -L 370.469753 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 197.718827 -L 380.939506 187.249074 -L 370.469753 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 197.718827 -L 391.409259 197.718827 -L 380.939506 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 197.718827 -L 391.409259 187.249074 -L 380.939506 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 197.718827 -L 401.879012 197.718827 -L 391.409259 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 197.718827 -L 401.879012 187.249074 -L 391.409259 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 197.718827 -L 412.348765 197.718827 -L 401.879012 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 197.718827 -L 412.348765 187.249074 -L 401.879012 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 197.718827 -L 422.818519 197.718827 -L 412.348765 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 197.718827 -L 422.818519 187.249074 -L 412.348765 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 197.718827 -L 433.288272 197.718827 -L 422.818519 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 197.718827 -L 433.288272 187.249074 -L 422.818519 187.249074 -z -" style="fill:#ff5900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 197.718827 -L 443.758025 197.718827 -L 433.288272 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 197.718827 -L 443.758025 187.249074 -L 433.288272 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 197.718827 -L 454.227778 197.718827 -L 443.758025 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 197.718827 -L 454.227778 187.249074 -L 443.758025 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 197.718827 -L 464.697531 197.718827 -L 454.227778 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 197.718827 -L 464.697531 187.249074 -L 454.227778 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 197.718827 -L 475.167284 197.718827 -L 464.697531 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 197.718827 -L 475.167284 187.249074 -L 464.697531 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 197.718827 -L 485.637037 197.718827 -L 475.167284 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 197.718827 -L 485.637037 187.249074 -L 475.167284 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 197.718827 -L 496.10679 197.718827 -L 485.637037 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 197.718827 -L 496.10679 187.249074 -L 485.637037 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 197.718827 -L 506.576543 197.718827 -L 496.10679 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 197.718827 -L 506.576543 187.249074 -L 496.10679 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 197.718827 -L 517.046296 197.718827 -L 506.576543 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 197.718827 -L 517.046296 187.249074 -L 506.576543 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 197.718827 -L 527.516049 197.718827 -L 517.046296 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 197.718827 -L 527.516049 187.249074 -L 517.046296 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 197.718827 -L 537.985802 197.718827 -L 527.516049 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 197.718827 -L 537.985802 187.249074 -L 527.516049 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 197.718827 -L 548.455556 197.718827 -L 537.985802 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 197.718827 -L 548.455556 187.249074 -L 537.985802 187.249074 -z -" style="fill:#ff5500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 197.718827 -L 558.925309 197.718827 -L 548.455556 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 197.718827 -L 558.925309 187.249074 -L 548.455556 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 197.718827 -L 569.395062 197.718827 -L 558.925309 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 197.718827 -L 569.395062 187.249074 -L 558.925309 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 197.718827 -L 579.864815 197.718827 -L 569.395062 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 197.718827 -L 579.864815 187.249074 -L 569.395062 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 197.718827 -L 590.334568 197.718827 -L 579.864815 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 197.718827 -L 590.334568 187.249074 -L 579.864815 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 197.718827 -L 600.804321 197.718827 -L 590.334568 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 197.718827 -L 600.804321 187.249074 -L 590.334568 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 197.718827 -L 611.274074 197.718827 -L 600.804321 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 197.718827 -L 611.274074 187.249074 -L 600.804321 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 197.718827 -L 621.743827 197.718827 -L 611.274074 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 197.718827 -L 621.743827 187.249074 -L 611.274074 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 197.718827 -L 632.21358 197.718827 -L 621.743827 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 197.718827 -L 632.21358 187.249074 -L 621.743827 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 197.718827 -L 642.683333 197.718827 -L 632.21358 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 197.718827 -L 642.683333 187.249074 -L 632.21358 187.249074 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 187.249074 -L 87.78642 187.249074 -L 77.316667 176.779321 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 187.249074 -L 87.78642 176.779321 -L 77.316667 176.779321 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 187.249074 -L 98.256173 187.249074 -L 87.78642 176.779321 -z -" style="fill:#ff5200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 187.249074 -L 98.256173 176.779321 -L 87.78642 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 187.249074 -L 108.725926 187.249074 -L 98.256173 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 187.249074 -L 108.725926 176.779321 -L 98.256173 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 187.249074 -L 119.195679 187.249074 -L 108.725926 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 187.249074 -L 119.195679 176.779321 -L 108.725926 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 187.249074 -L 129.665432 187.249074 -L 119.195679 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 187.249074 -L 129.665432 176.779321 -L 119.195679 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 187.249074 -L 140.135185 187.249074 -L 129.665432 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 187.249074 -L 140.135185 176.779321 -L 129.665432 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 187.249074 -L 150.604938 187.249074 -L 140.135185 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 187.249074 -L 150.604938 176.779321 -L 140.135185 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 187.249074 -L 161.074691 187.249074 -L 150.604938 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 187.249074 -L 161.074691 176.779321 -L 150.604938 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 187.249074 -L 171.544444 187.249074 -L 161.074691 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 187.249074 -L 171.544444 176.779321 -L 161.074691 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 187.249074 -L 182.014198 187.249074 -L 171.544444 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 187.249074 -L 182.014198 176.779321 -L 171.544444 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 187.249074 -L 192.483951 187.249074 -L 182.014198 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 187.249074 -L 192.483951 176.779321 -L 182.014198 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 187.249074 -L 202.953704 187.249074 -L 192.483951 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 187.249074 -L 202.953704 176.779321 -L 192.483951 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 187.249074 -L 213.423457 187.249074 -L 202.953704 176.779321 -z -" style="fill:#ff4e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 187.249074 -L 213.423457 176.779321 -L 202.953704 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 187.249074 -L 223.89321 187.249074 -L 213.423457 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 187.249074 -L 223.89321 176.779321 -L 213.423457 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 187.249074 -L 234.362963 187.249074 -L 223.89321 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 187.249074 -L 234.362963 176.779321 -L 223.89321 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 187.249074 -L 244.832716 187.249074 -L 234.362963 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 187.249074 -L 244.832716 176.779321 -L 234.362963 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 187.249074 -L 255.302469 187.249074 -L 244.832716 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 187.249074 -L 255.302469 176.779321 -L 244.832716 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 187.249074 -L 265.772222 187.249074 -L 255.302469 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 187.249074 -L 265.772222 176.779321 -L 255.302469 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 187.249074 -L 276.241975 187.249074 -L 265.772222 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 187.249074 -L 276.241975 176.779321 -L 265.772222 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 187.249074 -L 286.711728 187.249074 -L 276.241975 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 187.249074 -L 286.711728 176.779321 -L 276.241975 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 187.249074 -L 297.181481 187.249074 -L 286.711728 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 187.249074 -L 297.181481 176.779321 -L 286.711728 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 187.249074 -L 307.651235 187.249074 -L 297.181481 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 187.249074 -L 307.651235 176.779321 -L 297.181481 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 187.249074 -L 318.120988 187.249074 -L 307.651235 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 187.249074 -L 318.120988 176.779321 -L 307.651235 176.779321 -z -" style="fill:#ff4a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 187.249074 -L 328.590741 187.249074 -L 318.120988 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 187.249074 -L 328.590741 176.779321 -L 318.120988 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 187.249074 -L 339.060494 187.249074 -L 328.590741 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 187.249074 -L 339.060494 176.779321 -L 328.590741 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 187.249074 -L 349.530247 187.249074 -L 339.060494 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 187.249074 -L 349.530247 176.779321 -L 339.060494 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 187.249074 -L 360 187.249074 -L 349.530247 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 187.249074 -L 360 176.779321 -L 349.530247 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 187.249074 -L 370.469753 187.249074 -L 360 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 187.249074 -L 370.469753 176.779321 -L 360 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 187.249074 -L 380.939506 187.249074 -L 370.469753 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 187.249074 -L 380.939506 176.779321 -L 370.469753 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 187.249074 -L 391.409259 187.249074 -L 380.939506 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 187.249074 -L 391.409259 176.779321 -L 380.939506 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 187.249074 -L 401.879012 187.249074 -L 391.409259 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 187.249074 -L 401.879012 176.779321 -L 391.409259 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 187.249074 -L 412.348765 187.249074 -L 401.879012 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 187.249074 -L 412.348765 176.779321 -L 401.879012 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 187.249074 -L 422.818519 187.249074 -L 412.348765 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 187.249074 -L 422.818519 176.779321 -L 412.348765 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 187.249074 -L 433.288272 187.249074 -L 422.818519 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 187.249074 -L 433.288272 176.779321 -L 422.818519 176.779321 -z -" style="fill:#ff4700;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 187.249074 -L 443.758025 187.249074 -L 433.288272 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 187.249074 -L 443.758025 176.779321 -L 433.288272 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 187.249074 -L 454.227778 187.249074 -L 443.758025 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 187.249074 -L 454.227778 176.779321 -L 443.758025 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 187.249074 -L 464.697531 187.249074 -L 454.227778 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 187.249074 -L 464.697531 176.779321 -L 454.227778 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 187.249074 -L 475.167284 187.249074 -L 464.697531 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 187.249074 -L 475.167284 176.779321 -L 464.697531 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 187.249074 -L 485.637037 187.249074 -L 475.167284 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 187.249074 -L 485.637037 176.779321 -L 475.167284 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 187.249074 -L 496.10679 187.249074 -L 485.637037 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 187.249074 -L 496.10679 176.779321 -L 485.637037 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 187.249074 -L 506.576543 187.249074 -L 496.10679 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 187.249074 -L 506.576543 176.779321 -L 496.10679 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 187.249074 -L 517.046296 187.249074 -L 506.576543 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 187.249074 -L 517.046296 176.779321 -L 506.576543 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 187.249074 -L 527.516049 187.249074 -L 517.046296 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 187.249074 -L 527.516049 176.779321 -L 517.046296 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 187.249074 -L 537.985802 187.249074 -L 527.516049 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 187.249074 -L 537.985802 176.779321 -L 527.516049 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 187.249074 -L 548.455556 187.249074 -L 537.985802 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 187.249074 -L 548.455556 176.779321 -L 537.985802 176.779321 -z -" style="fill:#ff4300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 187.249074 -L 558.925309 187.249074 -L 548.455556 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 187.249074 -L 558.925309 176.779321 -L 548.455556 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 187.249074 -L 569.395062 187.249074 -L 558.925309 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 187.249074 -L 569.395062 176.779321 -L 558.925309 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 187.249074 -L 579.864815 187.249074 -L 569.395062 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 187.249074 -L 579.864815 176.779321 -L 569.395062 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 187.249074 -L 590.334568 187.249074 -L 579.864815 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 187.249074 -L 590.334568 176.779321 -L 579.864815 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 187.249074 -L 600.804321 187.249074 -L 590.334568 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 187.249074 -L 600.804321 176.779321 -L 590.334568 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 187.249074 -L 611.274074 187.249074 -L 600.804321 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 187.249074 -L 611.274074 176.779321 -L 600.804321 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 187.249074 -L 621.743827 187.249074 -L 611.274074 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 187.249074 -L 621.743827 176.779321 -L 611.274074 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 187.249074 -L 632.21358 187.249074 -L 621.743827 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 187.249074 -L 632.21358 176.779321 -L 621.743827 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 187.249074 -L 642.683333 187.249074 -L 632.21358 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 187.249074 -L 642.683333 176.779321 -L 632.21358 176.779321 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 176.779321 -L 87.78642 176.779321 -L 77.316667 166.309568 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 176.779321 -L 87.78642 166.309568 -L 77.316667 166.309568 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 176.779321 -L 98.256173 176.779321 -L 87.78642 166.309568 -z -" style="fill:#ff3f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 176.779321 -L 98.256173 166.309568 -L 87.78642 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 176.779321 -L 108.725926 176.779321 -L 98.256173 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 176.779321 -L 108.725926 166.309568 -L 98.256173 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 176.779321 -L 119.195679 176.779321 -L 108.725926 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 176.779321 -L 119.195679 166.309568 -L 108.725926 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 176.779321 -L 129.665432 176.779321 -L 119.195679 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 176.779321 -L 129.665432 166.309568 -L 119.195679 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 176.779321 -L 140.135185 176.779321 -L 129.665432 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 176.779321 -L 140.135185 166.309568 -L 129.665432 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 176.779321 -L 150.604938 176.779321 -L 140.135185 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 176.779321 -L 150.604938 166.309568 -L 140.135185 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 176.779321 -L 161.074691 176.779321 -L 150.604938 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 176.779321 -L 161.074691 166.309568 -L 150.604938 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 176.779321 -L 171.544444 176.779321 -L 161.074691 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 176.779321 -L 171.544444 166.309568 -L 161.074691 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 176.779321 -L 182.014198 176.779321 -L 171.544444 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 176.779321 -L 182.014198 166.309568 -L 171.544444 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 176.779321 -L 192.483951 176.779321 -L 182.014198 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 176.779321 -L 192.483951 166.309568 -L 182.014198 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 176.779321 -L 202.953704 176.779321 -L 192.483951 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 176.779321 -L 202.953704 166.309568 -L 192.483951 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 176.779321 -L 213.423457 176.779321 -L 202.953704 166.309568 -z -" style="fill:#ff3b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 176.779321 -L 213.423457 166.309568 -L 202.953704 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 176.779321 -L 223.89321 176.779321 -L 213.423457 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 176.779321 -L 223.89321 166.309568 -L 213.423457 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 176.779321 -L 234.362963 176.779321 -L 223.89321 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 176.779321 -L 234.362963 166.309568 -L 223.89321 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 176.779321 -L 244.832716 176.779321 -L 234.362963 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 176.779321 -L 244.832716 166.309568 -L 234.362963 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 176.779321 -L 255.302469 176.779321 -L 244.832716 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 176.779321 -L 255.302469 166.309568 -L 244.832716 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 176.779321 -L 265.772222 176.779321 -L 255.302469 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 176.779321 -L 265.772222 166.309568 -L 255.302469 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 176.779321 -L 276.241975 176.779321 -L 265.772222 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 176.779321 -L 276.241975 166.309568 -L 265.772222 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 176.779321 -L 286.711728 176.779321 -L 276.241975 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 176.779321 -L 286.711728 166.309568 -L 276.241975 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 176.779321 -L 297.181481 176.779321 -L 286.711728 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 176.779321 -L 297.181481 166.309568 -L 286.711728 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 176.779321 -L 307.651235 176.779321 -L 297.181481 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 176.779321 -L 307.651235 166.309568 -L 297.181481 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 176.779321 -L 318.120988 176.779321 -L 307.651235 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 176.779321 -L 318.120988 166.309568 -L 307.651235 166.309568 -z -" style="fill:#ff3800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 176.779321 -L 328.590741 176.779321 -L 318.120988 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 176.779321 -L 328.590741 166.309568 -L 318.120988 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 176.779321 -L 339.060494 176.779321 -L 328.590741 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 176.779321 -L 339.060494 166.309568 -L 328.590741 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 176.779321 -L 349.530247 176.779321 -L 339.060494 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 176.779321 -L 349.530247 166.309568 -L 339.060494 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 176.779321 -L 360 176.779321 -L 349.530247 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 176.779321 -L 360 166.309568 -L 349.530247 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 176.779321 -L 370.469753 176.779321 -L 360 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 176.779321 -L 370.469753 166.309568 -L 360 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 176.779321 -L 380.939506 176.779321 -L 370.469753 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 176.779321 -L 380.939506 166.309568 -L 370.469753 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 176.779321 -L 391.409259 176.779321 -L 380.939506 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 176.779321 -L 391.409259 166.309568 -L 380.939506 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 176.779321 -L 401.879012 176.779321 -L 391.409259 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 176.779321 -L 401.879012 166.309568 -L 391.409259 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 176.779321 -L 412.348765 176.779321 -L 401.879012 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 176.779321 -L 412.348765 166.309568 -L 401.879012 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 176.779321 -L 422.818519 176.779321 -L 412.348765 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 176.779321 -L 422.818519 166.309568 -L 412.348765 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 176.779321 -L 433.288272 176.779321 -L 422.818519 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 176.779321 -L 433.288272 166.309568 -L 422.818519 166.309568 -z -" style="fill:#ff3400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 176.779321 -L 443.758025 176.779321 -L 433.288272 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 176.779321 -L 443.758025 166.309568 -L 433.288272 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 176.779321 -L 454.227778 176.779321 -L 443.758025 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 176.779321 -L 454.227778 166.309568 -L 443.758025 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 176.779321 -L 464.697531 176.779321 -L 454.227778 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 176.779321 -L 464.697531 166.309568 -L 454.227778 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 176.779321 -L 475.167284 176.779321 -L 464.697531 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 176.779321 -L 475.167284 166.309568 -L 464.697531 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 176.779321 -L 485.637037 176.779321 -L 475.167284 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 176.779321 -L 485.637037 166.309568 -L 475.167284 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 176.779321 -L 496.10679 176.779321 -L 485.637037 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 176.779321 -L 496.10679 166.309568 -L 485.637037 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 176.779321 -L 506.576543 176.779321 -L 496.10679 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 176.779321 -L 506.576543 166.309568 -L 496.10679 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 176.779321 -L 517.046296 176.779321 -L 506.576543 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 176.779321 -L 517.046296 166.309568 -L 506.576543 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 176.779321 -L 527.516049 176.779321 -L 517.046296 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 176.779321 -L 527.516049 166.309568 -L 517.046296 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 176.779321 -L 537.985802 176.779321 -L 527.516049 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 176.779321 -L 537.985802 166.309568 -L 527.516049 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 176.779321 -L 548.455556 176.779321 -L 537.985802 166.309568 -z -" style="fill:#ff3000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 176.779321 -L 548.455556 166.309568 -L 537.985802 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 176.779321 -L 558.925309 176.779321 -L 548.455556 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 176.779321 -L 558.925309 166.309568 -L 548.455556 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 176.779321 -L 569.395062 176.779321 -L 558.925309 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 176.779321 -L 569.395062 166.309568 -L 558.925309 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 176.779321 -L 579.864815 176.779321 -L 569.395062 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 176.779321 -L 579.864815 166.309568 -L 569.395062 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 176.779321 -L 590.334568 176.779321 -L 579.864815 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 176.779321 -L 590.334568 166.309568 -L 579.864815 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 176.779321 -L 600.804321 176.779321 -L 590.334568 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 176.779321 -L 600.804321 166.309568 -L 590.334568 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 176.779321 -L 611.274074 176.779321 -L 600.804321 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 176.779321 -L 611.274074 166.309568 -L 600.804321 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 176.779321 -L 621.743827 176.779321 -L 611.274074 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 176.779321 -L 621.743827 166.309568 -L 611.274074 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 176.779321 -L 632.21358 176.779321 -L 621.743827 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 176.779321 -L 632.21358 166.309568 -L 621.743827 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 176.779321 -L 642.683333 176.779321 -L 632.21358 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 176.779321 -L 642.683333 166.309568 -L 632.21358 166.309568 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 166.309568 -L 87.78642 166.309568 -L 77.316667 155.839815 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 166.309568 -L 87.78642 155.839815 -L 77.316667 155.839815 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 166.309568 -L 98.256173 166.309568 -L 87.78642 155.839815 -z -" style="fill:#ff2d00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 166.309568 -L 98.256173 155.839815 -L 87.78642 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 166.309568 -L 108.725926 166.309568 -L 98.256173 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 166.309568 -L 108.725926 155.839815 -L 98.256173 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 166.309568 -L 119.195679 166.309568 -L 108.725926 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 166.309568 -L 119.195679 155.839815 -L 108.725926 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 166.309568 -L 129.665432 166.309568 -L 119.195679 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 166.309568 -L 129.665432 155.839815 -L 119.195679 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 166.309568 -L 140.135185 166.309568 -L 129.665432 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 166.309568 -L 140.135185 155.839815 -L 129.665432 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 166.309568 -L 150.604938 166.309568 -L 140.135185 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 166.309568 -L 150.604938 155.839815 -L 140.135185 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 166.309568 -L 161.074691 166.309568 -L 150.604938 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 166.309568 -L 161.074691 155.839815 -L 150.604938 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 166.309568 -L 171.544444 166.309568 -L 161.074691 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 166.309568 -L 171.544444 155.839815 -L 161.074691 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 166.309568 -L 182.014198 166.309568 -L 171.544444 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 166.309568 -L 182.014198 155.839815 -L 171.544444 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 166.309568 -L 192.483951 166.309568 -L 182.014198 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 166.309568 -L 192.483951 155.839815 -L 182.014198 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 166.309568 -L 202.953704 166.309568 -L 192.483951 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 166.309568 -L 202.953704 155.839815 -L 192.483951 155.839815 -z -" style="fill:#ff2900;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 166.309568 -L 213.423457 166.309568 -L 202.953704 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 166.309568 -L 213.423457 155.839815 -L 202.953704 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 166.309568 -L 223.89321 166.309568 -L 213.423457 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 166.309568 -L 223.89321 155.839815 -L 213.423457 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 166.309568 -L 234.362963 166.309568 -L 223.89321 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 166.309568 -L 234.362963 155.839815 -L 223.89321 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 166.309568 -L 244.832716 166.309568 -L 234.362963 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 166.309568 -L 244.832716 155.839815 -L 234.362963 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 166.309568 -L 255.302469 166.309568 -L 244.832716 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 166.309568 -L 255.302469 155.839815 -L 244.832716 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 166.309568 -L 265.772222 166.309568 -L 255.302469 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 166.309568 -L 265.772222 155.839815 -L 255.302469 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 166.309568 -L 276.241975 166.309568 -L 265.772222 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 166.309568 -L 276.241975 155.839815 -L 265.772222 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 166.309568 -L 286.711728 166.309568 -L 276.241975 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 166.309568 -L 286.711728 155.839815 -L 276.241975 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 166.309568 -L 297.181481 166.309568 -L 286.711728 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 166.309568 -L 297.181481 155.839815 -L 286.711728 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 166.309568 -L 307.651235 166.309568 -L 297.181481 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 166.309568 -L 307.651235 155.839815 -L 297.181481 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 166.309568 -L 318.120988 166.309568 -L 307.651235 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 166.309568 -L 318.120988 155.839815 -L 307.651235 155.839815 -z -" style="fill:#ff2500;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 166.309568 -L 328.590741 166.309568 -L 318.120988 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 166.309568 -L 328.590741 155.839815 -L 318.120988 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 166.309568 -L 339.060494 166.309568 -L 328.590741 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 166.309568 -L 339.060494 155.839815 -L 328.590741 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 166.309568 -L 349.530247 166.309568 -L 339.060494 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 166.309568 -L 349.530247 155.839815 -L 339.060494 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 166.309568 -L 360 166.309568 -L 349.530247 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 166.309568 -L 360 155.839815 -L 349.530247 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 166.309568 -L 370.469753 166.309568 -L 360 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 166.309568 -L 370.469753 155.839815 -L 360 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 166.309568 -L 380.939506 166.309568 -L 370.469753 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 166.309568 -L 380.939506 155.839815 -L 370.469753 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 166.309568 -L 391.409259 166.309568 -L 380.939506 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 166.309568 -L 391.409259 155.839815 -L 380.939506 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 166.309568 -L 401.879012 166.309568 -L 391.409259 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 166.309568 -L 401.879012 155.839815 -L 391.409259 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 166.309568 -L 412.348765 166.309568 -L 401.879012 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 166.309568 -L 412.348765 155.839815 -L 401.879012 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 166.309568 -L 422.818519 166.309568 -L 412.348765 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 166.309568 -L 422.818519 155.839815 -L 412.348765 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 166.309568 -L 433.288272 166.309568 -L 422.818519 155.839815 -z -" style="fill:#ff2200;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 166.309568 -L 433.288272 155.839815 -L 422.818519 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 166.309568 -L 443.758025 166.309568 -L 433.288272 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 166.309568 -L 443.758025 155.839815 -L 433.288272 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 166.309568 -L 454.227778 166.309568 -L 443.758025 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 166.309568 -L 454.227778 155.839815 -L 443.758025 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 166.309568 -L 464.697531 166.309568 -L 454.227778 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 166.309568 -L 464.697531 155.839815 -L 454.227778 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 166.309568 -L 475.167284 166.309568 -L 464.697531 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 166.309568 -L 475.167284 155.839815 -L 464.697531 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 166.309568 -L 485.637037 166.309568 -L 475.167284 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 166.309568 -L 485.637037 155.839815 -L 475.167284 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 166.309568 -L 496.10679 166.309568 -L 485.637037 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 166.309568 -L 496.10679 155.839815 -L 485.637037 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 166.309568 -L 506.576543 166.309568 -L 496.10679 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 166.309568 -L 506.576543 155.839815 -L 496.10679 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 166.309568 -L 517.046296 166.309568 -L 506.576543 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 166.309568 -L 517.046296 155.839815 -L 506.576543 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 166.309568 -L 527.516049 166.309568 -L 517.046296 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 166.309568 -L 527.516049 155.839815 -L 517.046296 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 166.309568 -L 537.985802 166.309568 -L 527.516049 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 166.309568 -L 537.985802 155.839815 -L 527.516049 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 166.309568 -L 548.455556 166.309568 -L 537.985802 155.839815 -z -" style="fill:#ff1e00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 166.309568 -L 548.455556 155.839815 -L 537.985802 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 166.309568 -L 558.925309 166.309568 -L 548.455556 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 166.309568 -L 558.925309 155.839815 -L 548.455556 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 166.309568 -L 569.395062 166.309568 -L 558.925309 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 166.309568 -L 569.395062 155.839815 -L 558.925309 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 166.309568 -L 579.864815 166.309568 -L 569.395062 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 166.309568 -L 579.864815 155.839815 -L 569.395062 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 166.309568 -L 590.334568 166.309568 -L 579.864815 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 166.309568 -L 590.334568 155.839815 -L 579.864815 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 166.309568 -L 600.804321 166.309568 -L 590.334568 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 166.309568 -L 600.804321 155.839815 -L 590.334568 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 166.309568 -L 611.274074 166.309568 -L 600.804321 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 166.309568 -L 611.274074 155.839815 -L 600.804321 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 166.309568 -L 621.743827 166.309568 -L 611.274074 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 166.309568 -L 621.743827 155.839815 -L 611.274074 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 166.309568 -L 632.21358 166.309568 -L 621.743827 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 166.309568 -L 632.21358 155.839815 -L 621.743827 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 166.309568 -L 642.683333 166.309568 -L 632.21358 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 166.309568 -L 642.683333 155.839815 -L 632.21358 155.839815 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 155.839815 -L 87.78642 155.839815 -L 77.316667 145.370062 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 155.839815 -L 87.78642 145.370062 -L 77.316667 145.370062 -z -" style="fill:#ff1a00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 155.839815 -L 98.256173 155.839815 -L 87.78642 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 155.839815 -L 98.256173 145.370062 -L 87.78642 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 155.839815 -L 108.725926 155.839815 -L 98.256173 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 155.839815 -L 108.725926 145.370062 -L 98.256173 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 155.839815 -L 119.195679 155.839815 -L 108.725926 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 155.839815 -L 119.195679 145.370062 -L 108.725926 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 155.839815 -L 129.665432 155.839815 -L 119.195679 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 155.839815 -L 129.665432 145.370062 -L 119.195679 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 155.839815 -L 140.135185 155.839815 -L 129.665432 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 155.839815 -L 140.135185 145.370062 -L 129.665432 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 155.839815 -L 150.604938 155.839815 -L 140.135185 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 155.839815 -L 150.604938 145.370062 -L 140.135185 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 155.839815 -L 161.074691 155.839815 -L 150.604938 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 155.839815 -L 161.074691 145.370062 -L 150.604938 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 155.839815 -L 171.544444 155.839815 -L 161.074691 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 155.839815 -L 171.544444 145.370062 -L 161.074691 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 155.839815 -L 182.014198 155.839815 -L 171.544444 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 155.839815 -L 182.014198 145.370062 -L 171.544444 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 155.839815 -L 192.483951 155.839815 -L 182.014198 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 155.839815 -L 192.483951 145.370062 -L 182.014198 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 155.839815 -L 202.953704 155.839815 -L 192.483951 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 155.839815 -L 202.953704 145.370062 -L 192.483951 145.370062 -z -" style="fill:#ff1600;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 155.839815 -L 213.423457 155.839815 -L 202.953704 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 155.839815 -L 213.423457 145.370062 -L 202.953704 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 155.839815 -L 223.89321 155.839815 -L 213.423457 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 155.839815 -L 223.89321 145.370062 -L 213.423457 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 155.839815 -L 234.362963 155.839815 -L 223.89321 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 155.839815 -L 234.362963 145.370062 -L 223.89321 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 155.839815 -L 244.832716 155.839815 -L 234.362963 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 155.839815 -L 244.832716 145.370062 -L 234.362963 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 155.839815 -L 255.302469 155.839815 -L 244.832716 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 155.839815 -L 255.302469 145.370062 -L 244.832716 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 155.839815 -L 265.772222 155.839815 -L 255.302469 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 155.839815 -L 265.772222 145.370062 -L 255.302469 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 155.839815 -L 276.241975 155.839815 -L 265.772222 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 155.839815 -L 276.241975 145.370062 -L 265.772222 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 155.839815 -L 286.711728 155.839815 -L 276.241975 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 155.839815 -L 286.711728 145.370062 -L 276.241975 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 155.839815 -L 297.181481 155.839815 -L 286.711728 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 155.839815 -L 297.181481 145.370062 -L 286.711728 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 155.839815 -L 307.651235 155.839815 -L 297.181481 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 155.839815 -L 307.651235 145.370062 -L 297.181481 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 155.839815 -L 318.120988 155.839815 -L 307.651235 145.370062 -z -" style="fill:#ff1300;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 155.839815 -L 318.120988 145.370062 -L 307.651235 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 155.839815 -L 328.590741 155.839815 -L 318.120988 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 155.839815 -L 328.590741 145.370062 -L 318.120988 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 155.839815 -L 339.060494 155.839815 -L 328.590741 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 155.839815 -L 339.060494 145.370062 -L 328.590741 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 155.839815 -L 349.530247 155.839815 -L 339.060494 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 155.839815 -L 349.530247 145.370062 -L 339.060494 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 155.839815 -L 360 155.839815 -L 349.530247 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 155.839815 -L 360 145.370062 -L 349.530247 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 155.839815 -L 370.469753 155.839815 -L 360 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 155.839815 -L 370.469753 145.370062 -L 360 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 155.839815 -L 380.939506 155.839815 -L 370.469753 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 155.839815 -L 380.939506 145.370062 -L 370.469753 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 155.839815 -L 391.409259 155.839815 -L 380.939506 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 155.839815 -L 391.409259 145.370062 -L 380.939506 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 155.839815 -L 401.879012 155.839815 -L 391.409259 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 155.839815 -L 401.879012 145.370062 -L 391.409259 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 155.839815 -L 412.348765 155.839815 -L 401.879012 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 155.839815 -L 412.348765 145.370062 -L 401.879012 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 155.839815 -L 422.818519 155.839815 -L 412.348765 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 155.839815 -L 422.818519 145.370062 -L 412.348765 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 155.839815 -L 433.288272 155.839815 -L 422.818519 145.370062 -z -" style="fill:#fa0f00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 155.839815 -L 433.288272 145.370062 -L 422.818519 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 155.839815 -L 443.758025 155.839815 -L 433.288272 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 155.839815 -L 443.758025 145.370062 -L 433.288272 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 155.839815 -L 454.227778 155.839815 -L 443.758025 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 155.839815 -L 454.227778 145.370062 -L 443.758025 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 155.839815 -L 464.697531 155.839815 -L 454.227778 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 155.839815 -L 464.697531 145.370062 -L 454.227778 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 155.839815 -L 475.167284 155.839815 -L 464.697531 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 155.839815 -L 475.167284 145.370062 -L 464.697531 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 155.839815 -L 485.637037 155.839815 -L 475.167284 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 155.839815 -L 485.637037 145.370062 -L 475.167284 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 155.839815 -L 496.10679 155.839815 -L 485.637037 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 155.839815 -L 496.10679 145.370062 -L 485.637037 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 155.839815 -L 506.576543 155.839815 -L 496.10679 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 155.839815 -L 506.576543 145.370062 -L 496.10679 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 155.839815 -L 517.046296 155.839815 -L 506.576543 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 155.839815 -L 517.046296 145.370062 -L 506.576543 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 155.839815 -L 527.516049 155.839815 -L 517.046296 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 155.839815 -L 527.516049 145.370062 -L 517.046296 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 155.839815 -L 537.985802 155.839815 -L 527.516049 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 155.839815 -L 537.985802 145.370062 -L 527.516049 145.370062 -z -" style="fill:#f60b00;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 155.839815 -L 548.455556 155.839815 -L 537.985802 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 155.839815 -L 548.455556 145.370062 -L 537.985802 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 155.839815 -L 558.925309 155.839815 -L 548.455556 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 155.839815 -L 558.925309 145.370062 -L 548.455556 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 155.839815 -L 569.395062 155.839815 -L 558.925309 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 155.839815 -L 569.395062 145.370062 -L 558.925309 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 155.839815 -L 579.864815 155.839815 -L 569.395062 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 155.839815 -L 579.864815 145.370062 -L 569.395062 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 155.839815 -L 590.334568 155.839815 -L 579.864815 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 155.839815 -L 590.334568 145.370062 -L 579.864815 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 155.839815 -L 600.804321 155.839815 -L 590.334568 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 155.839815 -L 600.804321 145.370062 -L 590.334568 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 155.839815 -L 611.274074 155.839815 -L 600.804321 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 155.839815 -L 611.274074 145.370062 -L 600.804321 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 155.839815 -L 621.743827 155.839815 -L 611.274074 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 155.839815 -L 621.743827 145.370062 -L 611.274074 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 155.839815 -L 632.21358 155.839815 -L 621.743827 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 155.839815 -L 632.21358 145.370062 -L 621.743827 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 155.839815 -L 642.683333 155.839815 -L 632.21358 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 155.839815 -L 642.683333 145.370062 -L 632.21358 145.370062 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 145.370062 -L 87.78642 145.370062 -L 77.316667 134.900309 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 145.370062 -L 87.78642 134.900309 -L 77.316667 134.900309 -z -" style="fill:#f10800;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 145.370062 -L 98.256173 145.370062 -L 87.78642 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 145.370062 -L 98.256173 134.900309 -L 87.78642 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 145.370062 -L 108.725926 145.370062 -L 98.256173 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 145.370062 -L 108.725926 134.900309 -L 98.256173 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 145.370062 -L 119.195679 145.370062 -L 108.725926 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 145.370062 -L 119.195679 134.900309 -L 108.725926 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 145.370062 -L 129.665432 145.370062 -L 119.195679 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 145.370062 -L 129.665432 134.900309 -L 119.195679 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 145.370062 -L 140.135185 145.370062 -L 129.665432 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 145.370062 -L 140.135185 134.900309 -L 129.665432 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 145.370062 -L 150.604938 145.370062 -L 140.135185 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 145.370062 -L 150.604938 134.900309 -L 140.135185 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 145.370062 -L 161.074691 145.370062 -L 150.604938 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 145.370062 -L 161.074691 134.900309 -L 150.604938 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 145.370062 -L 171.544444 145.370062 -L 161.074691 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 145.370062 -L 171.544444 134.900309 -L 161.074691 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 145.370062 -L 182.014198 145.370062 -L 171.544444 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 145.370062 -L 182.014198 134.900309 -L 171.544444 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 145.370062 -L 192.483951 145.370062 -L 182.014198 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 145.370062 -L 192.483951 134.900309 -L 182.014198 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 145.370062 -L 202.953704 145.370062 -L 192.483951 134.900309 -z -" style="fill:#ed0400;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 145.370062 -L 202.953704 134.900309 -L 192.483951 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 145.370062 -L 213.423457 145.370062 -L 202.953704 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 145.370062 -L 213.423457 134.900309 -L 202.953704 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 145.370062 -L 223.89321 145.370062 -L 213.423457 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 145.370062 -L 223.89321 134.900309 -L 213.423457 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 145.370062 -L 234.362963 145.370062 -L 223.89321 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 145.370062 -L 234.362963 134.900309 -L 223.89321 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 145.370062 -L 244.832716 145.370062 -L 234.362963 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 145.370062 -L 244.832716 134.900309 -L 234.362963 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 145.370062 -L 255.302469 145.370062 -L 244.832716 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 145.370062 -L 255.302469 134.900309 -L 244.832716 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 145.370062 -L 265.772222 145.370062 -L 255.302469 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 145.370062 -L 265.772222 134.900309 -L 255.302469 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 145.370062 -L 276.241975 145.370062 -L 265.772222 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 145.370062 -L 276.241975 134.900309 -L 265.772222 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 145.370062 -L 286.711728 145.370062 -L 276.241975 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 145.370062 -L 286.711728 134.900309 -L 276.241975 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 145.370062 -L 297.181481 145.370062 -L 286.711728 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 145.370062 -L 297.181481 134.900309 -L 286.711728 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 145.370062 -L 307.651235 145.370062 -L 297.181481 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 145.370062 -L 307.651235 134.900309 -L 297.181481 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 145.370062 -L 318.120988 145.370062 -L 307.651235 134.900309 -z -" style="fill:#e80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 145.370062 -L 318.120988 134.900309 -L 307.651235 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 145.370062 -L 328.590741 145.370062 -L 318.120988 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 145.370062 -L 328.590741 134.900309 -L 318.120988 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 145.370062 -L 339.060494 145.370062 -L 328.590741 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 145.370062 -L 339.060494 134.900309 -L 328.590741 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 145.370062 -L 349.530247 145.370062 -L 339.060494 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 145.370062 -L 349.530247 134.900309 -L 339.060494 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 145.370062 -L 360 145.370062 -L 349.530247 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 145.370062 -L 360 134.900309 -L 349.530247 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 145.370062 -L 370.469753 145.370062 -L 360 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 145.370062 -L 370.469753 134.900309 -L 360 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 145.370062 -L 380.939506 145.370062 -L 370.469753 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 145.370062 -L 380.939506 134.900309 -L 370.469753 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 145.370062 -L 391.409259 145.370062 -L 380.939506 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 145.370062 -L 391.409259 134.900309 -L 380.939506 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 145.370062 -L 401.879012 145.370062 -L 391.409259 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 145.370062 -L 401.879012 134.900309 -L 391.409259 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 145.370062 -L 412.348765 145.370062 -L 401.879012 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 145.370062 -L 412.348765 134.900309 -L 401.879012 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 145.370062 -L 422.818519 145.370062 -L 412.348765 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 145.370062 -L 422.818519 134.900309 -L 412.348765 134.900309 -z -" style="fill:#e40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 145.370062 -L 433.288272 145.370062 -L 422.818519 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 145.370062 -L 433.288272 134.900309 -L 422.818519 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 145.370062 -L 443.758025 145.370062 -L 433.288272 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 145.370062 -L 443.758025 134.900309 -L 433.288272 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 145.370062 -L 454.227778 145.370062 -L 443.758025 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 145.370062 -L 454.227778 134.900309 -L 443.758025 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 145.370062 -L 464.697531 145.370062 -L 454.227778 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 145.370062 -L 464.697531 134.900309 -L 454.227778 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 145.370062 -L 475.167284 145.370062 -L 464.697531 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 145.370062 -L 475.167284 134.900309 -L 464.697531 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 145.370062 -L 485.637037 145.370062 -L 475.167284 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 145.370062 -L 485.637037 134.900309 -L 475.167284 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 145.370062 -L 496.10679 145.370062 -L 485.637037 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 145.370062 -L 496.10679 134.900309 -L 485.637037 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 145.370062 -L 506.576543 145.370062 -L 496.10679 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 145.370062 -L 506.576543 134.900309 -L 496.10679 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 145.370062 -L 517.046296 145.370062 -L 506.576543 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 145.370062 -L 517.046296 134.900309 -L 506.576543 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 145.370062 -L 527.516049 145.370062 -L 517.046296 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 145.370062 -L 527.516049 134.900309 -L 517.046296 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 145.370062 -L 537.985802 145.370062 -L 527.516049 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 145.370062 -L 537.985802 134.900309 -L 527.516049 134.900309 -z -" style="fill:#df0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 145.370062 -L 548.455556 145.370062 -L 537.985802 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 145.370062 -L 548.455556 134.900309 -L 537.985802 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 145.370062 -L 558.925309 145.370062 -L 548.455556 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 145.370062 -L 558.925309 134.900309 -L 548.455556 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 145.370062 -L 569.395062 145.370062 -L 558.925309 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 145.370062 -L 569.395062 134.900309 -L 558.925309 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 145.370062 -L 579.864815 145.370062 -L 569.395062 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 145.370062 -L 579.864815 134.900309 -L 569.395062 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 145.370062 -L 590.334568 145.370062 -L 579.864815 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 145.370062 -L 590.334568 134.900309 -L 579.864815 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 145.370062 -L 600.804321 145.370062 -L 590.334568 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 145.370062 -L 600.804321 134.900309 -L 590.334568 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 145.370062 -L 611.274074 145.370062 -L 600.804321 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 145.370062 -L 611.274074 134.900309 -L 600.804321 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 145.370062 -L 621.743827 145.370062 -L 611.274074 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 145.370062 -L 621.743827 134.900309 -L 611.274074 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 145.370062 -L 632.21358 145.370062 -L 621.743827 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 145.370062 -L 632.21358 134.900309 -L 621.743827 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 145.370062 -L 642.683333 145.370062 -L 632.21358 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 145.370062 -L 642.683333 134.900309 -L 632.21358 134.900309 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 134.900309 -L 87.78642 134.900309 -L 77.316667 124.430556 -z -" style="fill:#da0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 134.900309 -L 87.78642 124.430556 -L 77.316667 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 134.900309 -L 98.256173 134.900309 -L 87.78642 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 134.900309 -L 98.256173 124.430556 -L 87.78642 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 134.900309 -L 108.725926 134.900309 -L 98.256173 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 134.900309 -L 108.725926 124.430556 -L 98.256173 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 134.900309 -L 119.195679 134.900309 -L 108.725926 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 134.900309 -L 119.195679 124.430556 -L 108.725926 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 134.900309 -L 129.665432 134.900309 -L 119.195679 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 134.900309 -L 129.665432 124.430556 -L 119.195679 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 134.900309 -L 140.135185 134.900309 -L 129.665432 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 134.900309 -L 140.135185 124.430556 -L 129.665432 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 134.900309 -L 150.604938 134.900309 -L 140.135185 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 134.900309 -L 150.604938 124.430556 -L 140.135185 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 134.900309 -L 161.074691 134.900309 -L 150.604938 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 134.900309 -L 161.074691 124.430556 -L 150.604938 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 134.900309 -L 171.544444 134.900309 -L 161.074691 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 134.900309 -L 171.544444 124.430556 -L 161.074691 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 134.900309 -L 182.014198 134.900309 -L 171.544444 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 134.900309 -L 182.014198 124.430556 -L 171.544444 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 134.900309 -L 192.483951 134.900309 -L 182.014198 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 134.900309 -L 192.483951 124.430556 -L 182.014198 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 134.900309 -L 202.953704 134.900309 -L 192.483951 124.430556 -z -" style="fill:#d60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 134.900309 -L 202.953704 124.430556 -L 192.483951 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 134.900309 -L 213.423457 134.900309 -L 202.953704 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 134.900309 -L 213.423457 124.430556 -L 202.953704 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 134.900309 -L 223.89321 134.900309 -L 213.423457 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 134.900309 -L 223.89321 124.430556 -L 213.423457 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 134.900309 -L 234.362963 134.900309 -L 223.89321 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 134.900309 -L 234.362963 124.430556 -L 223.89321 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 134.900309 -L 244.832716 134.900309 -L 234.362963 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 134.900309 -L 244.832716 124.430556 -L 234.362963 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 134.900309 -L 255.302469 134.900309 -L 244.832716 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 134.900309 -L 255.302469 124.430556 -L 244.832716 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 134.900309 -L 265.772222 134.900309 -L 255.302469 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 134.900309 -L 265.772222 124.430556 -L 255.302469 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 134.900309 -L 276.241975 134.900309 -L 265.772222 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 134.900309 -L 276.241975 124.430556 -L 265.772222 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 134.900309 -L 286.711728 134.900309 -L 276.241975 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 134.900309 -L 286.711728 124.430556 -L 276.241975 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 134.900309 -L 297.181481 134.900309 -L 286.711728 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 134.900309 -L 297.181481 124.430556 -L 286.711728 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 134.900309 -L 307.651235 134.900309 -L 297.181481 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 134.900309 -L 307.651235 124.430556 -L 297.181481 124.430556 -z -" style="fill:#d10000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 134.900309 -L 318.120988 134.900309 -L 307.651235 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 134.900309 -L 318.120988 124.430556 -L 307.651235 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 134.900309 -L 328.590741 134.900309 -L 318.120988 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 134.900309 -L 328.590741 124.430556 -L 318.120988 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 134.900309 -L 339.060494 134.900309 -L 328.590741 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 134.900309 -L 339.060494 124.430556 -L 328.590741 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 134.900309 -L 349.530247 134.900309 -L 339.060494 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 134.900309 -L 349.530247 124.430556 -L 339.060494 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 134.900309 -L 360 134.900309 -L 349.530247 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 134.900309 -L 360 124.430556 -L 349.530247 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 134.900309 -L 370.469753 134.900309 -L 360 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 134.900309 -L 370.469753 124.430556 -L 360 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 134.900309 -L 380.939506 134.900309 -L 370.469753 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 134.900309 -L 380.939506 124.430556 -L 370.469753 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 134.900309 -L 391.409259 134.900309 -L 380.939506 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 134.900309 -L 391.409259 124.430556 -L 380.939506 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 134.900309 -L 401.879012 134.900309 -L 391.409259 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 134.900309 -L 401.879012 124.430556 -L 391.409259 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 134.900309 -L 412.348765 134.900309 -L 401.879012 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 134.900309 -L 412.348765 124.430556 -L 401.879012 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 134.900309 -L 422.818519 134.900309 -L 412.348765 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 134.900309 -L 422.818519 124.430556 -L 412.348765 124.430556 -z -" style="fill:#cd0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 134.900309 -L 433.288272 134.900309 -L 422.818519 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 134.900309 -L 433.288272 124.430556 -L 422.818519 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 134.900309 -L 443.758025 134.900309 -L 433.288272 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 134.900309 -L 443.758025 124.430556 -L 433.288272 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 134.900309 -L 454.227778 134.900309 -L 443.758025 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 134.900309 -L 454.227778 124.430556 -L 443.758025 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 134.900309 -L 464.697531 134.900309 -L 454.227778 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 134.900309 -L 464.697531 124.430556 -L 454.227778 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 134.900309 -L 475.167284 134.900309 -L 464.697531 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 134.900309 -L 475.167284 124.430556 -L 464.697531 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 134.900309 -L 485.637037 134.900309 -L 475.167284 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 134.900309 -L 485.637037 124.430556 -L 475.167284 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 134.900309 -L 496.10679 134.900309 -L 485.637037 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 134.900309 -L 496.10679 124.430556 -L 485.637037 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 134.900309 -L 506.576543 134.900309 -L 496.10679 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 134.900309 -L 506.576543 124.430556 -L 496.10679 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 134.900309 -L 517.046296 134.900309 -L 506.576543 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 134.900309 -L 517.046296 124.430556 -L 506.576543 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 134.900309 -L 527.516049 134.900309 -L 517.046296 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 134.900309 -L 527.516049 124.430556 -L 517.046296 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 134.900309 -L 537.985802 134.900309 -L 527.516049 124.430556 -z -" style="fill:#c80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 134.900309 -L 537.985802 124.430556 -L 527.516049 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 134.900309 -L 548.455556 134.900309 -L 537.985802 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 134.900309 -L 548.455556 124.430556 -L 537.985802 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 134.900309 -L 558.925309 134.900309 -L 548.455556 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 134.900309 -L 558.925309 124.430556 -L 548.455556 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 134.900309 -L 569.395062 134.900309 -L 558.925309 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 134.900309 -L 569.395062 124.430556 -L 558.925309 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 134.900309 -L 579.864815 134.900309 -L 569.395062 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 134.900309 -L 579.864815 124.430556 -L 569.395062 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 134.900309 -L 590.334568 134.900309 -L 579.864815 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 134.900309 -L 590.334568 124.430556 -L 579.864815 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 134.900309 -L 600.804321 134.900309 -L 590.334568 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 134.900309 -L 600.804321 124.430556 -L 590.334568 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 134.900309 -L 611.274074 134.900309 -L 600.804321 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 134.900309 -L 611.274074 124.430556 -L 600.804321 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 134.900309 -L 621.743827 134.900309 -L 611.274074 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 134.900309 -L 621.743827 124.430556 -L 611.274074 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 134.900309 -L 632.21358 134.900309 -L 621.743827 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 134.900309 -L 632.21358 124.430556 -L 621.743827 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 134.900309 -L 642.683333 134.900309 -L 632.21358 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 134.900309 -L 642.683333 124.430556 -L 632.21358 124.430556 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 124.430556 -L 87.78642 124.430556 -L 77.316667 113.960802 -z -" style="fill:#c40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 124.430556 -L 87.78642 113.960802 -L 77.316667 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 124.430556 -L 98.256173 124.430556 -L 87.78642 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 124.430556 -L 98.256173 113.960802 -L 87.78642 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 124.430556 -L 108.725926 124.430556 -L 98.256173 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 124.430556 -L 108.725926 113.960802 -L 98.256173 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 124.430556 -L 119.195679 124.430556 -L 108.725926 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 124.430556 -L 119.195679 113.960802 -L 108.725926 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 124.430556 -L 129.665432 124.430556 -L 119.195679 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 124.430556 -L 129.665432 113.960802 -L 119.195679 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 124.430556 -L 140.135185 124.430556 -L 129.665432 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 124.430556 -L 140.135185 113.960802 -L 129.665432 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 124.430556 -L 150.604938 124.430556 -L 140.135185 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 124.430556 -L 150.604938 113.960802 -L 140.135185 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 124.430556 -L 161.074691 124.430556 -L 150.604938 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 124.430556 -L 161.074691 113.960802 -L 150.604938 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 124.430556 -L 171.544444 124.430556 -L 161.074691 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 124.430556 -L 171.544444 113.960802 -L 161.074691 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 124.430556 -L 182.014198 124.430556 -L 171.544444 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 124.430556 -L 182.014198 113.960802 -L 171.544444 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 124.430556 -L 192.483951 124.430556 -L 182.014198 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 124.430556 -L 192.483951 113.960802 -L 182.014198 113.960802 -z -" style="fill:#bf0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 124.430556 -L 202.953704 124.430556 -L 192.483951 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 124.430556 -L 202.953704 113.960802 -L 192.483951 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 124.430556 -L 213.423457 124.430556 -L 202.953704 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 124.430556 -L 213.423457 113.960802 -L 202.953704 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 124.430556 -L 223.89321 124.430556 -L 213.423457 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 124.430556 -L 223.89321 113.960802 -L 213.423457 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 124.430556 -L 234.362963 124.430556 -L 223.89321 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 124.430556 -L 234.362963 113.960802 -L 223.89321 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 124.430556 -L 244.832716 124.430556 -L 234.362963 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 124.430556 -L 244.832716 113.960802 -L 234.362963 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 124.430556 -L 255.302469 124.430556 -L 244.832716 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 124.430556 -L 255.302469 113.960802 -L 244.832716 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 124.430556 -L 265.772222 124.430556 -L 255.302469 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 124.430556 -L 265.772222 113.960802 -L 255.302469 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 124.430556 -L 276.241975 124.430556 -L 265.772222 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 124.430556 -L 276.241975 113.960802 -L 265.772222 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 124.430556 -L 286.711728 124.430556 -L 276.241975 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 124.430556 -L 286.711728 113.960802 -L 276.241975 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 124.430556 -L 297.181481 124.430556 -L 286.711728 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 124.430556 -L 297.181481 113.960802 -L 286.711728 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 124.430556 -L 307.651235 124.430556 -L 297.181481 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 124.430556 -L 307.651235 113.960802 -L 297.181481 113.960802 -z -" style="fill:#bb0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 124.430556 -L 318.120988 124.430556 -L 307.651235 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 124.430556 -L 318.120988 113.960802 -L 307.651235 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 124.430556 -L 328.590741 124.430556 -L 318.120988 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 124.430556 -L 328.590741 113.960802 -L 318.120988 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 124.430556 -L 339.060494 124.430556 -L 328.590741 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 124.430556 -L 339.060494 113.960802 -L 328.590741 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 124.430556 -L 349.530247 124.430556 -L 339.060494 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 124.430556 -L 349.530247 113.960802 -L 339.060494 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 124.430556 -L 360 124.430556 -L 349.530247 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 124.430556 -L 360 113.960802 -L 349.530247 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 124.430556 -L 370.469753 124.430556 -L 360 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 124.430556 -L 370.469753 113.960802 -L 360 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 124.430556 -L 380.939506 124.430556 -L 370.469753 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 124.430556 -L 380.939506 113.960802 -L 370.469753 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 124.430556 -L 391.409259 124.430556 -L 380.939506 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 124.430556 -L 391.409259 113.960802 -L 380.939506 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 124.430556 -L 401.879012 124.430556 -L 391.409259 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 124.430556 -L 401.879012 113.960802 -L 391.409259 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 124.430556 -L 412.348765 124.430556 -L 401.879012 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 124.430556 -L 412.348765 113.960802 -L 401.879012 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 124.430556 -L 422.818519 124.430556 -L 412.348765 113.960802 -z -" style="fill:#b60000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 124.430556 -L 422.818519 113.960802 -L 412.348765 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 124.430556 -L 433.288272 124.430556 -L 422.818519 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 124.430556 -L 433.288272 113.960802 -L 422.818519 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 124.430556 -L 443.758025 124.430556 -L 433.288272 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 124.430556 -L 443.758025 113.960802 -L 433.288272 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 124.430556 -L 454.227778 124.430556 -L 443.758025 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 124.430556 -L 454.227778 113.960802 -L 443.758025 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 124.430556 -L 464.697531 124.430556 -L 454.227778 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 124.430556 -L 464.697531 113.960802 -L 454.227778 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 124.430556 -L 475.167284 124.430556 -L 464.697531 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 124.430556 -L 475.167284 113.960802 -L 464.697531 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 124.430556 -L 485.637037 124.430556 -L 475.167284 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 124.430556 -L 485.637037 113.960802 -L 475.167284 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 124.430556 -L 496.10679 124.430556 -L 485.637037 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 124.430556 -L 496.10679 113.960802 -L 485.637037 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 124.430556 -L 506.576543 124.430556 -L 496.10679 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 124.430556 -L 506.576543 113.960802 -L 496.10679 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 124.430556 -L 517.046296 124.430556 -L 506.576543 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 124.430556 -L 517.046296 113.960802 -L 506.576543 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 124.430556 -L 527.516049 124.430556 -L 517.046296 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 124.430556 -L 527.516049 113.960802 -L 517.046296 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 124.430556 -L 537.985802 124.430556 -L 527.516049 113.960802 -z -" style="fill:#b20000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 124.430556 -L 537.985802 113.960802 -L 527.516049 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 124.430556 -L 548.455556 124.430556 -L 537.985802 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 124.430556 -L 548.455556 113.960802 -L 537.985802 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 124.430556 -L 558.925309 124.430556 -L 548.455556 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 124.430556 -L 558.925309 113.960802 -L 548.455556 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 124.430556 -L 569.395062 124.430556 -L 558.925309 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 124.430556 -L 569.395062 113.960802 -L 558.925309 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 124.430556 -L 579.864815 124.430556 -L 569.395062 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 124.430556 -L 579.864815 113.960802 -L 569.395062 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 124.430556 -L 590.334568 124.430556 -L 579.864815 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 124.430556 -L 590.334568 113.960802 -L 579.864815 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 124.430556 -L 600.804321 124.430556 -L 590.334568 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 124.430556 -L 600.804321 113.960802 -L 590.334568 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 124.430556 -L 611.274074 124.430556 -L 600.804321 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 124.430556 -L 611.274074 113.960802 -L 600.804321 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 124.430556 -L 621.743827 124.430556 -L 611.274074 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 124.430556 -L 621.743827 113.960802 -L 611.274074 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 124.430556 -L 632.21358 124.430556 -L 621.743827 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 124.430556 -L 632.21358 113.960802 -L 621.743827 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 124.430556 -L 642.683333 124.430556 -L 632.21358 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 124.430556 -L 642.683333 113.960802 -L 632.21358 113.960802 -z -" style="fill:#ad0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 113.960802 -L 87.78642 113.960802 -L 77.316667 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 113.960802 -L 87.78642 103.491049 -L 77.316667 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 113.960802 -L 98.256173 113.960802 -L 87.78642 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 113.960802 -L 98.256173 103.491049 -L 87.78642 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 113.960802 -L 108.725926 113.960802 -L 98.256173 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 113.960802 -L 108.725926 103.491049 -L 98.256173 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 113.960802 -L 119.195679 113.960802 -L 108.725926 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 113.960802 -L 119.195679 103.491049 -L 108.725926 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 113.960802 -L 129.665432 113.960802 -L 119.195679 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 113.960802 -L 129.665432 103.491049 -L 119.195679 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 113.960802 -L 140.135185 113.960802 -L 129.665432 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 113.960802 -L 140.135185 103.491049 -L 129.665432 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 113.960802 -L 150.604938 113.960802 -L 140.135185 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 113.960802 -L 150.604938 103.491049 -L 140.135185 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 113.960802 -L 161.074691 113.960802 -L 150.604938 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 113.960802 -L 161.074691 103.491049 -L 150.604938 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 113.960802 -L 171.544444 113.960802 -L 161.074691 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 113.960802 -L 171.544444 103.491049 -L 161.074691 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 113.960802 -L 182.014198 113.960802 -L 171.544444 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 113.960802 -L 182.014198 103.491049 -L 171.544444 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 113.960802 -L 192.483951 113.960802 -L 182.014198 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 113.960802 -L 192.483951 103.491049 -L 182.014198 103.491049 -z -" style="fill:#a80000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 113.960802 -L 202.953704 113.960802 -L 192.483951 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 113.960802 -L 202.953704 103.491049 -L 192.483951 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 113.960802 -L 213.423457 113.960802 -L 202.953704 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 113.960802 -L 213.423457 103.491049 -L 202.953704 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 113.960802 -L 223.89321 113.960802 -L 213.423457 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 113.960802 -L 223.89321 103.491049 -L 213.423457 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 113.960802 -L 234.362963 113.960802 -L 223.89321 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 113.960802 -L 234.362963 103.491049 -L 223.89321 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 113.960802 -L 244.832716 113.960802 -L 234.362963 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 113.960802 -L 244.832716 103.491049 -L 234.362963 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 113.960802 -L 255.302469 113.960802 -L 244.832716 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 113.960802 -L 255.302469 103.491049 -L 244.832716 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 113.960802 -L 265.772222 113.960802 -L 255.302469 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 113.960802 -L 265.772222 103.491049 -L 255.302469 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 113.960802 -L 276.241975 113.960802 -L 265.772222 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 113.960802 -L 276.241975 103.491049 -L 265.772222 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 113.960802 -L 286.711728 113.960802 -L 276.241975 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 113.960802 -L 286.711728 103.491049 -L 276.241975 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 113.960802 -L 297.181481 113.960802 -L 286.711728 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 113.960802 -L 297.181481 103.491049 -L 286.711728 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 113.960802 -L 307.651235 113.960802 -L 297.181481 103.491049 -z -" style="fill:#a40000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 113.960802 -L 307.651235 103.491049 -L 297.181481 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 113.960802 -L 318.120988 113.960802 -L 307.651235 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 113.960802 -L 318.120988 103.491049 -L 307.651235 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 113.960802 -L 328.590741 113.960802 -L 318.120988 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 113.960802 -L 328.590741 103.491049 -L 318.120988 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 113.960802 -L 339.060494 113.960802 -L 328.590741 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 113.960802 -L 339.060494 103.491049 -L 328.590741 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 113.960802 -L 349.530247 113.960802 -L 339.060494 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 113.960802 -L 349.530247 103.491049 -L 339.060494 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 113.960802 -L 360 113.960802 -L 349.530247 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 113.960802 -L 360 103.491049 -L 349.530247 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 113.960802 -L 370.469753 113.960802 -L 360 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 113.960802 -L 370.469753 103.491049 -L 360 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 113.960802 -L 380.939506 113.960802 -L 370.469753 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 113.960802 -L 380.939506 103.491049 -L 370.469753 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 113.960802 -L 391.409259 113.960802 -L 380.939506 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 113.960802 -L 391.409259 103.491049 -L 380.939506 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 113.960802 -L 401.879012 113.960802 -L 391.409259 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 113.960802 -L 401.879012 103.491049 -L 391.409259 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 113.960802 -L 412.348765 113.960802 -L 401.879012 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 113.960802 -L 412.348765 103.491049 -L 401.879012 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 113.960802 -L 422.818519 113.960802 -L 412.348765 103.491049 -z -" style="fill:#9f0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 113.960802 -L 422.818519 103.491049 -L 412.348765 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 113.960802 -L 433.288272 113.960802 -L 422.818519 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 113.960802 -L 433.288272 103.491049 -L 422.818519 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 113.960802 -L 443.758025 113.960802 -L 433.288272 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 113.960802 -L 443.758025 103.491049 -L 433.288272 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 113.960802 -L 454.227778 113.960802 -L 443.758025 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 113.960802 -L 454.227778 103.491049 -L 443.758025 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 113.960802 -L 464.697531 113.960802 -L 454.227778 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 113.960802 -L 464.697531 103.491049 -L 454.227778 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 113.960802 -L 475.167284 113.960802 -L 464.697531 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 113.960802 -L 475.167284 103.491049 -L 464.697531 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 113.960802 -L 485.637037 113.960802 -L 475.167284 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 113.960802 -L 485.637037 103.491049 -L 475.167284 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 113.960802 -L 496.10679 113.960802 -L 485.637037 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 113.960802 -L 496.10679 103.491049 -L 485.637037 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 113.960802 -L 506.576543 113.960802 -L 496.10679 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 113.960802 -L 506.576543 103.491049 -L 496.10679 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 113.960802 -L 517.046296 113.960802 -L 506.576543 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 113.960802 -L 517.046296 103.491049 -L 506.576543 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 113.960802 -L 527.516049 113.960802 -L 517.046296 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 113.960802 -L 527.516049 103.491049 -L 517.046296 103.491049 -z -" style="fill:#9b0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 113.960802 -L 537.985802 113.960802 -L 527.516049 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 113.960802 -L 537.985802 103.491049 -L 527.516049 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 113.960802 -L 548.455556 113.960802 -L 537.985802 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 113.960802 -L 548.455556 103.491049 -L 537.985802 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 113.960802 -L 558.925309 113.960802 -L 548.455556 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 113.960802 -L 558.925309 103.491049 -L 548.455556 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 113.960802 -L 569.395062 113.960802 -L 558.925309 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 113.960802 -L 569.395062 103.491049 -L 558.925309 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 113.960802 -L 579.864815 113.960802 -L 569.395062 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 113.960802 -L 579.864815 103.491049 -L 569.395062 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 113.960802 -L 590.334568 113.960802 -L 579.864815 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 113.960802 -L 590.334568 103.491049 -L 579.864815 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 113.960802 -L 600.804321 113.960802 -L 590.334568 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 113.960802 -L 600.804321 103.491049 -L 590.334568 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 113.960802 -L 611.274074 113.960802 -L 600.804321 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 113.960802 -L 611.274074 103.491049 -L 600.804321 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 113.960802 -L 621.743827 113.960802 -L 611.274074 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 113.960802 -L 621.743827 103.491049 -L 611.274074 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 113.960802 -L 632.21358 113.960802 -L 621.743827 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 113.960802 -L 632.21358 103.491049 -L 621.743827 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 113.960802 -L 642.683333 113.960802 -L 632.21358 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 113.960802 -L 642.683333 103.491049 -L 632.21358 103.491049 -z -" style="fill:#960000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 77.316667 103.491049 -L 87.78642 103.491049 -L 77.316667 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 103.491049 -L 87.78642 93.021296 -L 77.316667 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 87.78642 103.491049 -L 98.256173 103.491049 -L 87.78642 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 103.491049 -L 98.256173 93.021296 -L 87.78642 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 98.256173 103.491049 -L 108.725926 103.491049 -L 98.256173 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 103.491049 -L 108.725926 93.021296 -L 98.256173 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 108.725926 103.491049 -L 119.195679 103.491049 -L 108.725926 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 103.491049 -L 119.195679 93.021296 -L 108.725926 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 119.195679 103.491049 -L 129.665432 103.491049 -L 119.195679 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 103.491049 -L 129.665432 93.021296 -L 119.195679 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 129.665432 103.491049 -L 140.135185 103.491049 -L 129.665432 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 103.491049 -L 140.135185 93.021296 -L 129.665432 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 140.135185 103.491049 -L 150.604938 103.491049 -L 140.135185 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 103.491049 -L 150.604938 93.021296 -L 140.135185 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 150.604938 103.491049 -L 161.074691 103.491049 -L 150.604938 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 103.491049 -L 161.074691 93.021296 -L 150.604938 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 161.074691 103.491049 -L 171.544444 103.491049 -L 161.074691 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 103.491049 -L 171.544444 93.021296 -L 161.074691 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 171.544444 103.491049 -L 182.014198 103.491049 -L 171.544444 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 103.491049 -L 182.014198 93.021296 -L 171.544444 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 182.014198 103.491049 -L 192.483951 103.491049 -L 182.014198 93.021296 -z -" style="fill:#920000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 103.491049 -L 192.483951 93.021296 -L 182.014198 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 192.483951 103.491049 -L 202.953704 103.491049 -L 192.483951 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 103.491049 -L 202.953704 93.021296 -L 192.483951 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 202.953704 103.491049 -L 213.423457 103.491049 -L 202.953704 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 103.491049 -L 213.423457 93.021296 -L 202.953704 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 213.423457 103.491049 -L 223.89321 103.491049 -L 213.423457 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 103.491049 -L 223.89321 93.021296 -L 213.423457 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 223.89321 103.491049 -L 234.362963 103.491049 -L 223.89321 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 103.491049 -L 234.362963 93.021296 -L 223.89321 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 234.362963 103.491049 -L 244.832716 103.491049 -L 234.362963 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 103.491049 -L 244.832716 93.021296 -L 234.362963 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 244.832716 103.491049 -L 255.302469 103.491049 -L 244.832716 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 103.491049 -L 255.302469 93.021296 -L 244.832716 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 255.302469 103.491049 -L 265.772222 103.491049 -L 255.302469 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 103.491049 -L 265.772222 93.021296 -L 255.302469 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 265.772222 103.491049 -L 276.241975 103.491049 -L 265.772222 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 103.491049 -L 276.241975 93.021296 -L 265.772222 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 276.241975 103.491049 -L 286.711728 103.491049 -L 276.241975 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 103.491049 -L 286.711728 93.021296 -L 276.241975 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 286.711728 103.491049 -L 297.181481 103.491049 -L 286.711728 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 103.491049 -L 297.181481 93.021296 -L 286.711728 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 297.181481 103.491049 -L 307.651235 103.491049 -L 297.181481 93.021296 -z -" style="fill:#8d0000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 103.491049 -L 307.651235 93.021296 -L 297.181481 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 307.651235 103.491049 -L 318.120988 103.491049 -L 307.651235 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 103.491049 -L 318.120988 93.021296 -L 307.651235 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 318.120988 103.491049 -L 328.590741 103.491049 -L 318.120988 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 103.491049 -L 328.590741 93.021296 -L 318.120988 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 328.590741 103.491049 -L 339.060494 103.491049 -L 328.590741 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 103.491049 -L 339.060494 93.021296 -L 328.590741 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 339.060494 103.491049 -L 349.530247 103.491049 -L 339.060494 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 103.491049 -L 349.530247 93.021296 -L 339.060494 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 349.530247 103.491049 -L 360 103.491049 -L 349.530247 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 103.491049 -L 360 93.021296 -L 349.530247 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 360 103.491049 -L 370.469753 103.491049 -L 360 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 103.491049 -L 370.469753 93.021296 -L 360 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 370.469753 103.491049 -L 380.939506 103.491049 -L 370.469753 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 103.491049 -L 380.939506 93.021296 -L 370.469753 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 380.939506 103.491049 -L 391.409259 103.491049 -L 380.939506 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 103.491049 -L 391.409259 93.021296 -L 380.939506 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 391.409259 103.491049 -L 401.879012 103.491049 -L 391.409259 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 103.491049 -L 401.879012 93.021296 -L 391.409259 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 401.879012 103.491049 -L 412.348765 103.491049 -L 401.879012 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 103.491049 -L 412.348765 93.021296 -L 401.879012 93.021296 -z -" style="fill:#890000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 412.348765 103.491049 -L 422.818519 103.491049 -L 412.348765 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 103.491049 -L 422.818519 93.021296 -L 412.348765 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 422.818519 103.491049 -L 433.288272 103.491049 -L 422.818519 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 103.491049 -L 433.288272 93.021296 -L 422.818519 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 433.288272 103.491049 -L 443.758025 103.491049 -L 433.288272 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 103.491049 -L 443.758025 93.021296 -L 433.288272 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 443.758025 103.491049 -L 454.227778 103.491049 -L 443.758025 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 103.491049 -L 454.227778 93.021296 -L 443.758025 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 454.227778 103.491049 -L 464.697531 103.491049 -L 454.227778 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 103.491049 -L 464.697531 93.021296 -L 454.227778 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 464.697531 103.491049 -L 475.167284 103.491049 -L 464.697531 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 103.491049 -L 475.167284 93.021296 -L 464.697531 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 475.167284 103.491049 -L 485.637037 103.491049 -L 475.167284 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 103.491049 -L 485.637037 93.021296 -L 475.167284 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 485.637037 103.491049 -L 496.10679 103.491049 -L 485.637037 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 103.491049 -L 496.10679 93.021296 -L 485.637037 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 496.10679 103.491049 -L 506.576543 103.491049 -L 496.10679 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 103.491049 -L 506.576543 93.021296 -L 496.10679 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 506.576543 103.491049 -L 517.046296 103.491049 -L 506.576543 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 103.491049 -L 517.046296 93.021296 -L 506.576543 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 517.046296 103.491049 -L 527.516049 103.491049 -L 517.046296 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 103.491049 -L 527.516049 93.021296 -L 517.046296 93.021296 -z -" style="fill:#840000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 527.516049 103.491049 -L 537.985802 103.491049 -L 527.516049 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 103.491049 -L 537.985802 93.021296 -L 527.516049 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 537.985802 103.491049 -L 548.455556 103.491049 -L 537.985802 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 103.491049 -L 548.455556 93.021296 -L 537.985802 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 548.455556 103.491049 -L 558.925309 103.491049 -L 548.455556 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 103.491049 -L 558.925309 93.021296 -L 548.455556 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 558.925309 103.491049 -L 569.395062 103.491049 -L 558.925309 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 103.491049 -L 569.395062 93.021296 -L 558.925309 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 569.395062 103.491049 -L 579.864815 103.491049 -L 569.395062 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 103.491049 -L 579.864815 93.021296 -L 569.395062 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 579.864815 103.491049 -L 590.334568 103.491049 -L 579.864815 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 103.491049 -L 590.334568 93.021296 -L 579.864815 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 590.334568 103.491049 -L 600.804321 103.491049 -L 590.334568 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 103.491049 -L 600.804321 93.021296 -L 590.334568 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 600.804321 103.491049 -L 611.274074 103.491049 -L 600.804321 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 103.491049 -L 611.274074 93.021296 -L 600.804321 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 611.274074 103.491049 -L 621.743827 103.491049 -L 611.274074 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 103.491049 -L 621.743827 93.021296 -L 611.274074 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 621.743827 103.491049 -L 632.21358 103.491049 -L 621.743827 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 103.491049 -L 632.21358 93.021296 -L 621.743827 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 632.21358 103.491049 -L 642.683333 103.491049 -L 632.21358 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - <path clip-path="url(#p849c29c794)" d="M 642.683333 103.491049 -L 642.683333 93.021296 -L 632.21358 93.021296 -z -" style="fill:#800000;stroke:#000000;"/> - </g> - <g id="line2d_1"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m85845d22ac" style="stroke:#000000;"/> - </defs> - <g clip-path="url(#p849c29c794)"> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="626.978704"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="616.508951"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="606.039198"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="595.569444"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="585.099691"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="574.629938"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="564.160185"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="553.690432"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="543.220679"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="532.750926"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="522.281173"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="511.81142"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="501.341667"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="490.871914"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="480.40216"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="469.932407"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="459.462654"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="448.992901"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="438.523148"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="428.053395"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="417.583642"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="407.113889"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="396.644136"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="386.174383"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="375.70463"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="365.234877"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="354.765123"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="344.29537"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="333.825617"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="323.355864"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="312.886111"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="302.416358"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="291.946605"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="281.476852"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="271.007099"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="260.537346"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="250.067593"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="239.59784"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="229.128086"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="218.658333"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="208.18858"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="197.718827"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="187.249074"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="176.779321"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="166.309568"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="155.839815"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="145.370062"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="134.900309"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="124.430556"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="113.960802"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="103.491049"/> - <use style="stroke:#000000;" x="77.316667" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="87.78642" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="98.256173" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="108.725926" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="119.195679" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="129.665432" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="140.135185" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="150.604938" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="161.074691" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="171.544444" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="182.014198" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="192.483951" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="202.953704" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="213.423457" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="223.89321" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="234.362963" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="244.832716" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="255.302469" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="265.772222" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="276.241975" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="286.711728" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="297.181481" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="307.651235" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="318.120988" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="328.590741" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="339.060494" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="349.530247" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="360" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="370.469753" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="380.939506" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="391.409259" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="401.879012" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="412.348765" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="422.818519" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="433.288272" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="443.758025" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="454.227778" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="464.697531" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="475.167284" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="485.637037" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="496.10679" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="506.576543" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="517.046296" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="527.516049" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="537.985802" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="548.455556" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="558.925309" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="569.395062" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="579.864815" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="590.334568" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="600.804321" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="611.274074" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="621.743827" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="632.21358" xlink:href="#m85845d22ac" y="93.021296"/> - <use style="stroke:#000000;" x="642.683333" xlink:href="#m85845d22ac" y="93.021296"/> - </g> - </g> - <g id="line2d_2"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="m4537855bff" style="stroke:#008000;"/> - </defs> - <g clip-path="url(#p849c29c794)"> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="626.978704"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="616.508951"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="606.039198"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="595.569444"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="585.099691"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="574.629938"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="564.160185"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="553.690432"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="543.220679"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="532.750926"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="522.281173"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="511.81142"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="501.341667"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="490.871914"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="480.40216"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="469.932407"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="459.462654"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="448.992901"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="438.523148"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="428.053395"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="417.583642"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="407.113889"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="396.644136"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="386.174383"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="375.70463"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="365.234877"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="354.765123"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="344.29537"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="333.825617"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="323.355864"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="312.886111"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="302.416358"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="291.946605"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="281.476852"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="271.007099"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="260.537346"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="250.067593"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="239.59784"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="229.128086"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="218.658333"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="208.18858"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="197.718827"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="187.249074"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="176.779321"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="166.309568"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="155.839815"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="145.370062"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="134.900309"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="124.430556"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="113.960802"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="103.491049"/> - <use style="fill:#008000;stroke:#008000;" x="77.316667" xlink:href="#m4537855bff" y="93.021296"/> - </g> - </g> - <g id="line2d_3"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="mcc6d9b87f4" style="stroke:#0000ff;"/> - </defs> - <g clip-path="url(#p849c29c794)"> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="626.978704"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="616.508951"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="606.039198"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="595.569444"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="585.099691"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="574.629938"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="564.160185"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="553.690432"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="543.220679"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="532.750926"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="522.281173"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="511.81142"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="501.341667"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="490.871914"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="480.40216"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="469.932407"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="459.462654"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="448.992901"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="438.523148"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="428.053395"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="417.583642"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="407.113889"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="396.644136"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="386.174383"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="375.70463"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="365.234877"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="354.765123"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="344.29537"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="333.825617"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="323.355864"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="312.886111"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="302.416358"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="291.946605"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="281.476852"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="271.007099"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="260.537346"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="250.067593"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="239.59784"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="229.128086"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="218.658333"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="208.18858"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="197.718827"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="187.249074"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="176.779321"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="166.309568"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="155.839815"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="145.370062"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="134.900309"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="124.430556"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="113.960802"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="103.491049"/> - <use style="fill:#0000ff;stroke:#0000ff;" x="642.683333" xlink:href="#mcc6d9b87f4" y="93.021296"/> - </g> - </g> - <g id="line2d_4"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="mb0f39d6133" style="stroke:#ff0000;"/> - </defs> - <g clip-path="url(#p849c29c794)"> - <use style="fill:#ff0000;stroke:#ff0000;" x="77.316667" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="87.78642" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="98.256173" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="108.725926" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="119.195679" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="129.665432" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="140.135185" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="150.604938" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="161.074691" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="171.544444" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="182.014198" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="192.483951" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="202.953704" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="213.423457" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="223.89321" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="234.362963" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="244.832716" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="255.302469" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="265.772222" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="276.241975" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="286.711728" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="297.181481" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="307.651235" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="318.120988" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="328.590741" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="339.060494" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="349.530247" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="360" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="370.469753" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="380.939506" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="391.409259" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="401.879012" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="412.348765" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="422.818519" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="433.288272" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="443.758025" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="454.227778" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="464.697531" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="475.167284" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="485.637037" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="496.10679" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="506.576543" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="517.046296" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="527.516049" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="537.985802" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="548.455556" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="558.925309" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="569.395062" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="579.864815" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="590.334568" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="600.804321" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="611.274074" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="621.743827" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="632.21358" xlink:href="#mb0f39d6133" y="626.978704"/> - <use style="fill:#ff0000;stroke:#ff0000;" x="642.683333" xlink:href="#mb0f39d6133" y="626.978704"/> - </g> - </g> - <g id="line2d_5"> - <defs> - <path d="M 0 3 -C 0.795609 3 1.55874 2.683901 2.12132 2.12132 -C 2.683901 1.55874 3 0.795609 3 0 -C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 -C 1.55874 -2.683901 0.795609 -3 0 -3 -C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 -C -2.683901 -1.55874 -3 -0.795609 -3 0 -C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 -C -1.55874 2.683901 -0.795609 3 0 3 -z -" id="mcb0b2d5f1e" style="stroke:#bfbf00;"/> - </defs> - <g clip-path="url(#p849c29c794)"> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="77.316667" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="87.78642" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="98.256173" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="108.725926" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="119.195679" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="129.665432" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="140.135185" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="150.604938" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="161.074691" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="171.544444" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="182.014198" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="192.483951" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="202.953704" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="213.423457" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="223.89321" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="234.362963" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="244.832716" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="255.302469" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="265.772222" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="276.241975" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="286.711728" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="297.181481" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="307.651235" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="318.120988" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="328.590741" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="339.060494" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="349.530247" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="360" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="370.469753" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="380.939506" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="391.409259" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="401.879012" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="412.348765" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="422.818519" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="433.288272" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="443.758025" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="454.227778" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="464.697531" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="475.167284" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="485.637037" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="496.10679" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="506.576543" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="517.046296" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="527.516049" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="537.985802" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="548.455556" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="558.925309" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="569.395062" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="579.864815" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="590.334568" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="600.804321" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="611.274074" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="621.743827" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="632.21358" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - <use style="fill:#bfbf00;stroke:#bfbf00;" x="642.683333" xlink:href="#mcb0b2d5f1e" y="93.021296"/> - </g> - </g> - <g id="patch_3"> - <path d="M 20.78 680.374444 -L 20.78 39.625556 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_4"> - <path d="M 699.22 680.374444 -L 699.22 39.625556 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_5"> - <path d="M 20.78 680.374444 -L 699.22 680.374444 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - <g id="patch_6"> - <path d="M 20.78 39.625556 -L 699.22 39.625556 -" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/> - </g> - </g> - </g> - <defs> - <clipPath id="p849c29c794"> - <rect height="640.748889" width="678.44" x="20.78" y="39.625556"/> - </clipPath> - </defs> -</svg> diff --git a/docs/details/figures/MeshTri3/Regular/example2.py b/docs/details/figures/MeshTri3/Regular/paraview.py similarity index 79% rename from docs/details/figures/MeshTri3/Regular/example2.py rename to docs/details/figures/MeshTri3/Regular/paraview.py index bf95ea8..06c7961 100644 --- a/docs/details/figures/MeshTri3/Regular/example2.py +++ b/docs/details/figures/MeshTri3/Regular/paraview.py @@ -1,25 +1,22 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Tri3.Regular(9,11) # filename of the HDF5-file -fname = 'MeshTri3-Regular.hdf5' +fname = 'paraview.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data['coor'] = mesh.coor() data['conn'] = mesh.conn() # write XDMF-file with metadata - pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Triangle, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ).write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshTri3/Regular/nodes.py b/docs/details/figures/MeshTri3/Regular/paraview_nodesets.py similarity index 95% rename from docs/details/figures/MeshTri3/Regular/nodes.py rename to docs/details/figures/MeshTri3/Regular/paraview_nodesets.py index 5d2e99e..337879c 100644 --- a/docs/details/figures/MeshTri3/Regular/nodes.py +++ b/docs/details/figures/MeshTri3/Regular/paraview_nodesets.py @@ -1,66 +1,63 @@ import h5py, os import numpy as np import GooseFEM as gf import GooseFEM.ParaView.HDF5 as pv # create mesh object mesh = gf.Mesh.Tri3.Regular(9,11) # initialize all node sets nodesets = dict( nodesBottomEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesTopOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesLeftOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesRightOpenEdge = np.zeros((mesh.nnode()),dtype='int'), nodesBottomLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesBottomRightCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopLeftCorner = np.zeros((mesh.nnode()),dtype='int'), nodesTopRightCorner = np.zeros((mesh.nnode()),dtype='int'), ) # define node-sets nodesets['nodesBottomEdge' ][mesh.nodesBottomEdge() ] = 1 nodesets['nodesTopEdge' ][mesh.nodesTopEdge() ] = 1 nodesets['nodesLeftEdge' ][mesh.nodesLeftEdge() ] = 1 nodesets['nodesRightEdge' ][mesh.nodesRightEdge() ] = 1 nodesets['nodesBottomOpenEdge' ][mesh.nodesBottomOpenEdge() ] = 1 nodesets['nodesTopOpenEdge' ][mesh.nodesTopOpenEdge() ] = 1 nodesets['nodesLeftOpenEdge' ][mesh.nodesLeftOpenEdge() ] = 1 nodesets['nodesRightOpenEdge' ][mesh.nodesRightOpenEdge() ] = 1 nodesets['nodesBottomLeftCorner' ][mesh.nodesBottomLeftCorner() ] = 1 nodesets['nodesBottomRightCorner'][mesh.nodesBottomRightCorner()] = 1 nodesets['nodesTopLeftCorner' ][mesh.nodesTopLeftCorner() ] = 1 nodesets['nodesTopRightCorner' ][mesh.nodesTopRightCorner() ] = 1 # add DOF-numbers after eliminating periodicity nodesets['dofsPeriodic'] = mesh.dofsPeriodic()[:,0] # filename of the HDF5-file -fname = 'MeshTri3-Regular-nodes.hdf5' +fname = 'paraview_nodesets.hdf5' # write HDF-file containing the data - with h5py.File(fname, 'w') as data: - data.file['coor'] = mesh.coor() data.file['conn'] = mesh.conn() for key, value in nodesets.items(): data[key] = value # write XDMF-file with metadata - xdmf = pv.Mesh( - pv.Connectivity(fname, "/conn", pv.ElementType.Triangle, mesh.conn().shape), + pv.Connectivity(fname, "/conn", mesh.getElementType(), mesh.conn().shape), pv.Coordinates(fname, "/coor", mesh.coor().shape), ) for key, value in nodesets.items(): xdmf.push_back(pv.Attribute(fname, "/"+key, key, pv.AttributeType.Node, value.shape)) xdmf.write(os.path.splitext(fname)[0] + '.xdmf') diff --git a/docs/details/figures/MeshTri3/naming_convention.svg b/docs/details/figures/MeshTri3/naming_convention.svg new file mode 100644 index 0000000..e4a5726 --- /dev/null +++ b/docs/details/figures/MeshTri3/naming_convention.svg @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="127.31857mm" + height="76.417915mm" + viewBox="0 0 451.12877 270.77214" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="naming_convention.svg"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5985" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5987" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker5945" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path5947" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4336" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#005d1c;fill-opacity:1;fill-rule:evenodd;stroke:#005d1c;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-1" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path4336-6" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#0021ad;fill-opacity:1;fill-rule:evenodd;stroke:#0021ad;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend-1-2" + style="overflow:visible" + inkscape:isstock="true"> + <path + inkscape:connector-curvature="0" + id="path4336-6-8" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#b00000;fill-opacity:1;fill-rule:evenodd;stroke:#b00000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="197.43482" + inkscape:cy="81.435931" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-bbox="true" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true" + inkscape:object-nodes="true" + inkscape:snap-smooth-nodes="true" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1440" + inkscape:window-height="856" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true"> + <sodipodi:guide + position="176.17237,29.370709" + orientation="0,1" + id="guide6095" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <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 + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(53.315247,-336.67508)"> + <g + transform="translate(-177.85814,-53.497475)" + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b00000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="flowRoot4247"> + <path + d="m 376.62915,654.48472 q 0,-2.23023 -0.92285,-3.49365 -0.91187,-1.27442 -2.51587,-1.27442 -1.604,0 -2.52686,1.27442 -0.91186,1.26342 -0.91186,3.49365 0,2.23022 0.91186,3.50464 0.92286,1.26342 2.52686,1.26342 1.604,0 2.51587,-1.26342 0.92285,-1.27442 0.92285,-3.50464 z m -6.87744,-4.29566 q 0.63721,-1.09863 1.604,-1.62597 0.97779,-0.53833 2.3291,-0.53833 2.24122,0 3.63648,1.77978 1.40625,1.77979 1.40625,4.68018 0,2.90039 -1.40625,4.68017 -1.39526,1.77979 -3.63648,1.77979 -1.35131,0 -2.3291,-0.52735 -0.96679,-0.53833 -1.604,-1.63696 l 0,1.8457 -2.03247,0 0,-17.09472 2.03247,0 0,6.65771 z" + style="" + id="path4203" /> + <path + d="m 386.84644,649.73862 q -1.62598,0 -2.57081,1.27442 -0.94482,1.26343 -0.94482,3.47168 0,2.20825 0.93384,3.48266 0.94482,1.26343 2.58179,1.26343 1.61499,0 2.55981,-1.27441 0.94482,-1.27442 0.94482,-3.47168 0,-2.18628 -0.94482,-3.4607 -0.94482,-1.2854 -2.55981,-1.2854 z m 0,-1.71386 q 2.63671,0 4.14184,1.71386 1.50513,1.71387 1.50513,4.7461 0,3.02124 -1.50513,4.74609 -1.50513,1.71387 -4.14184,1.71387 -2.64771,0 -4.15284,-1.71387 -1.49414,-1.72485 -1.49414,-4.74609 0,-3.03223 1.49414,-4.7461 1.50513,-1.71386 4.15284,-1.71386 z" + style="" + id="path4205" /> + <path + d="m 397.83276,644.82774 0,3.49365 4.16382,0 0,1.57104 -4.16382,0 0,6.67969 q 0,1.50513 0.4065,1.93359 0.41748,0.42847 1.68091,0.42847 l 2.07641,0 0,1.69189 -2.07641,0 q -2.34009,0 -3.22998,-0.86792 -0.8899,-0.8789 -0.8899,-3.18603 l 0,-6.67969 -1.48315,0 0,-1.57104 1.48315,0 0,-3.49365 2.03247,0 z" + style="" + id="path4207" /> + <path + d="m 406.66577,644.82774 0,3.49365 4.16382,0 0,1.57104 -4.16382,0 0,6.67969 q 0,1.50513 0.4065,1.93359 0.41748,0.42847 1.6809,0.42847 l 2.07642,0 0,1.69189 -2.07642,0 q -2.34008,0 -3.22998,-0.86792 -0.88989,-0.8789 -0.88989,-3.18603 l 0,-6.67969 -1.48315,0 0,-1.57104 1.48315,0 0,-3.49365 2.03247,0 z" + style="" + id="path4209" /> + <path + d="m 418.26733,649.73862 q -1.62597,0 -2.5708,1.27442 -0.94482,1.26343 -0.94482,3.47168 0,2.20825 0.93384,3.48266 0.94482,1.26343 2.58178,1.26343 1.61499,0 2.55982,-1.27441 0.94482,-1.27442 0.94482,-3.47168 0,-2.18628 -0.94482,-3.4607 -0.94483,-1.2854 -2.55982,-1.2854 z m 0,-1.71386 q 2.63672,0 4.14185,1.71386 1.50513,1.71387 1.50513,4.7461 0,3.02124 -1.50513,4.74609 -1.50513,1.71387 -4.14185,1.71387 -2.6477,0 -4.15283,-1.71387 -1.49414,-1.72485 -1.49414,-4.74609 0,-3.03223 1.49414,-4.7461 1.50513,-1.71386 4.15283,-1.71386 z" + style="" + id="path4211" /> + <path + d="m 436.83423,650.68345 q 0.75806,-1.36231 1.81274,-2.0105 1.05469,-0.64819 2.48291,-0.64819 1.92261,0 2.96631,1.35131 1.0437,1.34034 1.0437,3.82325 l 0,7.42675 -2.03247,0 0,-7.36083 q 0,-1.7688 -0.62622,-2.62574 -0.62622,-0.85693 -1.91162,-0.85693 -1.57104,0 -2.48291,1.0437 -0.91187,1.0437 -0.91187,2.84546 l 0,6.95434 -2.03247,0 0,-7.36083 q 0,-1.77979 -0.62622,-2.62574 -0.62622,-0.85693 -1.93359,-0.85693 -1.54907,0 -2.46094,1.05469 -0.91186,1.0437 -0.91186,2.83447 l 0,6.95434 -2.03247,0 0,-12.30468 2.03247,0 0,1.91162 q 0.69214,-1.13159 1.65893,-1.66992 0.9668,-0.53833 2.29614,-0.53833 1.34034,0 2.27417,0.68115 0.94483,0.68115 1.39527,1.97754 z" + style="" + id="path4213" /> + </g> + <g + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#005d1c;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4255"> + <path + d="m 354.70319,468.15445 q -0.34058,-0.19775 -0.74707,-0.28565 -0.39551,-0.0989 -0.87891,-0.0989 -1.71387,0 -2.63672,1.1206 -0.91186,1.10962 -0.91186,3.19702 l 0,6.48194 -2.03248,0 0,-12.30469 2.03248,0 0,1.91162 q 0.6372,-1.1206 1.65893,-1.65893 1.02173,-0.54932 2.48291,-0.54932 0.20874,0 0.46143,0.033 0.25268,0.022 0.5603,0.0769 l 0.011,2.07642 z" + style="" + id="path4216" /> + <path + d="m 356.84552,466.2648 2.02148,0 0,12.30469 -2.02148,0 0,-12.30469 z m 0,-4.79004 2.02148,0 0,2.55982 -2.02148,0 0,-2.55982 z" + style="" + id="path4218" /> + <path + d="m 371.18268,472.27432 q 0,-2.19726 -0.91187,-3.40576 -0.90088,-1.2085 -2.53784,-1.2085 -1.62598,0 -2.53784,1.2085 -0.90088,1.2085 -0.90088,3.40576 0,2.18628 0.90088,3.39478 0.91186,1.20849 2.53784,1.20849 1.63696,0 2.53784,-1.20849 0.91187,-1.2085 0.91187,-3.39478 z m 2.02148,4.76807 q 0,3.14209 -1.39526,4.66919 -1.39526,1.53808 -4.27368,1.53808 -1.06568,0 -2.0105,-0.16479 -0.94482,-0.15381 -1.83472,-0.4834 l 0,-1.96655 q 0.8899,0.4834 1.75781,0.71411 0.86792,0.23071 1.7688,0.23071 1.98853,0 2.9773,-1.0437 0.98877,-1.03271 0.98877,-3.1311 l 0,-0.99976 q -0.62622,1.08765 -1.60401,1.62598 -0.97778,0.53833 -2.34008,0.53833 -2.26319,0 -3.64746,-1.72485 -1.38428,-1.72486 -1.38428,-4.57032 0,-2.85644 1.38428,-4.5813 1.38427,-1.72485 3.64746,-1.72485 1.3623,0 2.34008,0.53833 0.97779,0.53833 1.60401,1.62598 l 0,-1.86768 2.02148,0 0,10.77759 z" + style="" + id="path4220" /> + <path + d="m 387.59625,471.14273 0,7.42676 -2.02148,0 0,-7.36084 q 0,-1.74683 -0.68115,-2.61475 -0.68116,-0.86792 -2.04346,-0.86792 -1.63696,0 -2.58179,1.0437 -0.94482,1.04371 -0.94482,2.84546 l 0,6.95435 -2.03247,0 0,-17.09473 2.03247,0 0,6.70166 q 0.7251,-1.10962 1.70288,-1.65893 0.98877,-0.54932 2.27417,-0.54932 2.12036,0 3.20801,1.31836 1.08764,1.30737 1.08764,3.8562 z" + style="" + id="path4222" /> + <path + d="m 393.64972,462.77115 0,3.49365 4.16382,0 0,1.57105 -4.16382,0 0,6.67968 q 0,1.50513 0.40649,1.9336 0.41748,0.42846 1.68091,0.42846 l 2.07642,0 0,1.6919 -2.07642,0 q -2.34009,0 -3.22998,-0.86792 -0.88989,-0.87891 -0.88989,-3.18604 l 0,-6.67968 -1.48316,0 0,-1.57105 1.48316,0 0,-3.49365 2.03247,0 z" + style="" + id="path4224" /> + </g> + <g + transform="translate(-155.2263,-308.15266)" + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#b00000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="flowRoot4247-7"> + <path + d="m 369.79565,644.82774 0,3.49365 4.16382,0 0,1.57104 -4.16382,0 0,6.67969 q 0,1.50513 0.4065,1.93359 0.41748,0.42847 1.68091,0.42847 l 2.07641,0 0,1.69189 -2.07641,0 q -2.34009,0 -3.22998,-0.86792 -0.8899,-0.8789 -0.8899,-3.18603 l 0,-6.67969 -1.48315,0 0,-1.57104 1.48315,0 0,-3.49365 2.03247,0 z" + style="" + id="path4227" /> + <path + d="m 381.39722,649.73862 q -1.62598,0 -2.5708,1.27442 -0.94483,1.26343 -0.94483,3.47168 0,2.20825 0.93384,3.48266 0.94482,1.26343 2.58179,1.26343 1.61499,0 2.55981,-1.27441 0.94483,-1.27442 0.94483,-3.47168 0,-2.18628 -0.94483,-3.4607 -0.94482,-1.2854 -2.55981,-1.2854 z m 0,-1.71386 q 2.63672,0 4.14184,1.71386 1.50513,1.71387 1.50513,4.7461 0,3.02124 -1.50513,4.74609 -1.50512,1.71387 -4.14184,1.71387 -2.64771,0 -4.15284,-1.71387 -1.49414,-1.72485 -1.49414,-4.74609 0,-3.03223 1.49414,-4.7461 1.50513,-1.71386 4.15284,-1.71386 z" + style="" + id="path4229" /> + <path + d="m 392.3396,658.78037 0,6.52588 -2.03247,0 0,-16.98486 2.03247,0 0,1.86767 q 0.63721,-1.09863 1.604,-1.62597 0.97779,-0.53833 2.32911,-0.53833 2.24121,0 3.63647,1.77978 1.40625,1.77979 1.40625,4.68018 0,2.90039 -1.40625,4.68017 -1.39526,1.77979 -3.63647,1.77979 -1.35132,0 -2.32911,-0.52735 -0.96679,-0.53833 -1.604,-1.63696 z m 6.87744,-4.29565 q 0,-2.23023 -0.92285,-3.49365 -0.91187,-1.27442 -2.51587,-1.27442 -1.604,0 -2.52686,1.27442 -0.91186,1.26342 -0.91186,3.49365 0,2.23022 0.91186,3.50464 0.92286,1.26342 2.52686,1.26342 1.604,0 2.51587,-1.26342 0.92285,-1.27442 0.92285,-3.50464 z" + style="" + id="path4231" /> + </g> + <g + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#005d1c;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text4255-2"> + <path + d="m 78.74057,463.65555 2.021484,0 0,17.09472 -2.021484,0 0,-17.09472 z" + style="" + id="path4234" /> + <path + d="m 95.505707,474.09256 0,0.98877 -9.294434,0 q 0.131836,2.0874 1.252442,3.18603 1.131591,1.08765 3.142089,1.08765 1.164551,0 2.252198,-0.28564 1.098633,-0.28565 2.175293,-0.85694 l 0,1.91162 q -1.087647,0.46143 -2.230225,0.70313 -1.142578,0.2417 -2.318115,0.2417 -2.944336,0 -4.66919,-1.71387 -1.713867,-1.71387 -1.713867,-4.63623 0,-3.02124 1.625977,-4.79004 1.636963,-1.77978 4.405517,-1.77978 2.48291,0 3.922119,1.604 1.450196,1.59302 1.450196,4.3396 z m -2.021485,-0.59326 q -0.02197,-1.65894 -0.933837,-2.64771 -0.900879,-0.98877 -2.39502,-0.98877 -1.691895,0 -2.713623,0.95581 -1.010742,0.95581 -1.164551,2.69165 l 7.207031,-0.011 z" + style="" + id="path4236" /> + <path + d="m 105.00888,463.65555 0,1.68091 -1.93359,0 q -1.08765,0 -1.51612,0.43945 -0.41748,0.43945 -0.41748,1.58203 l 0,1.08765 3.32886,0 0,1.57104 -3.32886,0 0,10.73364 -2.032468,0 0,-10.73364 -1.933593,0 0,-1.57104 1.933593,0 0,-0.85694 q 0,-2.05444 0.955808,-2.98828 0.95581,-0.94482 3.03223,-0.94482 l 1.91162,0 z" + style="" + id="path4238" /> + <path + d="m 108.35971,464.95193 0,3.49366 4.16382,0 0,1.57104 -4.16382,0 0,6.67969 q 0,1.50513 0.40649,1.93359 0.41749,0.42847 1.68091,0.42847 l 2.07642,0 0,1.69189 -2.07642,0 q -2.34008,0 -3.22998,-0.86792 -0.88989,-0.8789 -0.88989,-3.18603 l 0,-6.67969 -1.48315,0 0,-1.57104 1.48315,0 0,-3.49366 2.03247,0 z" + style="" + id="path4240" /> + </g> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5985)" + d="m -31.6962,578.07649 0,-59.56332" + id="path5888" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5945)" + d="m -31.6962,578.07649 59.563321,0" + id="path5888-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <g + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text6055"> + <path + d="m 40.948349,555.70593 -5.646973,6.0315 3.460694,6.27319 -2.318116,0 -2.603759,-4.87793 -4.526367,4.87793 -2.449952,0 6.053467,-6.48193 -3.218994,-5.82276 2.318115,0 2.362061,4.44947 4.119873,-4.44947 2.449951,0 z" + style="font-style:italic" + id="path4200" /> + </g> + <g + style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="text6055-2"> + <path + d="m -47.173889,517.72687 q -1.40625,2.36206 -2.296143,2.94433 -0.878906,0.59327 -2.252197,0.59327 l -1.593018,0 0.340577,-1.6919 1.16455,0 q 0.845948,0 1.439209,-0.46142 0.593262,-0.46143 1.329346,-1.80176 l 0.626221,-1.17554 -2.72461,-11.85425 2.142334,0 2.043457,9.42627 5.646973,-9.42627 2.120361,0 -7.98706,13.44727 z" + style="font-style:italic" + id="path4197" /> + </g> + <path + style="fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 122.85714,578.07649 211.42857,0" + id="path6186" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#b00000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 122.85714,366.64792 211.42857,0" + id="path6188" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#005d1c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 122.85714,578.07649 0,-211.42857" + id="path6190" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#005d1c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 334.28571,578.07649 0,-211.42857" + id="path6192" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/docs/details/figures/Vector/mesh.idraw b/docs/details/figures/Vector/mesh.idraw deleted file mode 100644 index c4e7e73..0000000 Binary files a/docs/details/figures/Vector/mesh.idraw and /dev/null differ diff --git a/docs/details/figures/Vector/mesh.svg b/docs/details/figures/Vector/mesh.svg deleted file mode 100644 index 380948f..0000000 --- a/docs/details/figures/Vector/mesh.svg +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="207.448" height="217.375" viewBox="0, 0, 207.448, 217.375"> - <g id="mesh"> - <path d="M16.103,192.346 L204.734,192.346" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M16.103,98.03 L204.734,98.03" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M16.103,3.714 L204.734,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M204.734,192.346 L204.734,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M110.419,192.346 L110.419,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M16.103,192.346 L16.103,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M15.603,195.059 C13.828,195.059 12.389,193.621 12.389,191.846 C12.389,190.071 13.828,188.632 15.603,188.632 C17.378,188.632 18.816,190.071 18.816,191.846 C18.816,193.621 17.378,195.059 15.603,195.059 z" fill="#000000"/> - <path d="M15.603,100.744 C13.828,100.744 12.389,99.305 12.389,97.53 C12.389,95.755 13.828,94.316 15.603,94.316 C17.378,94.316 18.816,95.755 18.816,97.53 C18.816,99.305 17.378,100.744 15.603,100.744 z" fill="#000000"/> - <path d="M15.603,6.428 C13.828,6.428 12.389,4.989 12.389,3.214 C12.389,1.439 13.828,0 15.603,0 C17.378,0 18.816,1.439 18.816,3.214 C18.816,4.989 17.378,6.428 15.603,6.428 z" fill="#000000"/> - <path d="M109.919,195.059 C108.144,195.059 106.705,193.621 106.705,191.846 C106.705,190.071 108.144,188.632 109.919,188.632 C111.693,188.632 113.132,190.071 113.132,191.846 C113.132,193.621 111.693,195.059 109.919,195.059 z" fill="#000000"/> - <path d="M109.919,100.744 C108.144,100.744 106.705,99.305 106.705,97.53 C106.705,95.755 108.144,94.316 109.919,94.316 C111.693,94.316 113.132,95.755 113.132,97.53 C113.132,99.305 111.693,100.744 109.919,100.744 z" fill="#000000"/> - <path d="M109.919,6.428 C108.144,6.428 106.705,4.989 106.705,3.214 C106.705,1.439 108.144,0 109.919,0 C111.693,0 113.132,1.439 113.132,3.214 C113.132,4.989 111.693,6.428 109.919,6.428 z" fill="#000000"/> - <path d="M204.234,195.059 C202.459,195.059 201.021,193.621 201.021,191.846 C201.021,190.071 202.459,188.632 204.234,188.632 C206.009,188.632 207.448,190.071 207.448,191.846 C207.448,193.621 206.009,195.059 204.234,195.059 z" fill="#000000"/> - <path d="M204.234,100.744 C202.459,100.744 201.021,99.305 201.021,97.53 C201.021,95.755 202.459,94.316 204.234,94.316 C206.009,94.316 207.448,95.755 207.448,97.53 C207.448,99.305 206.009,100.744 204.234,100.744 z" fill="#000000"/> - <path d="M204.234,6.428 C202.459,6.428 201.021,4.989 201.021,3.214 C201.021,1.439 202.459,0 204.234,0 C206.009,0 207.448,1.439 207.448,3.214 C207.448,4.989 206.009,6.428 204.234,6.428 z" fill="#000000"/> - </g> - <g id="node_numbers"> - <text transform="matrix(1, 0, 0, 1, 4.448, 205.875)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">0</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 96.911, 205.875)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">1</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 195.338, 205.875)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">2</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 4.448, 111.334)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">3</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 96.911, 111.334)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">4</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 195.338, 111.334)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">5</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 4.448, 19.635)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">6</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 96.911, 19.635)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">7</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 195.338, 19.635)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">8</tspan> - </text> - </g> - <g id="element_numbers"> - <text transform="matrix(1, 0, 0, 1, 62.761, 144.688)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">0</tspan> - </text> - <path d="M63.261,155.69 C57.46,155.69 52.758,150.988 52.758,145.188 C52.758,139.387 57.46,134.686 63.261,134.686 C69.061,134.686 73.763,139.387 73.763,145.188 C73.763,150.988 69.061,155.69 63.261,155.69 z" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <text transform="matrix(1, 0, 0, 1, 157.076, 144.688)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">1</tspan> - </text> - <path d="M157.576,155.69 C151.776,155.69 147.074,150.988 147.074,145.188 C147.074,139.387 151.776,134.686 157.576,134.686 C163.377,134.686 168.079,139.387 168.079,145.188 C168.079,150.988 163.377,155.69 157.576,155.69 z" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <text transform="matrix(1, 0, 0, 1, 62.761, 50.372)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">2</tspan> - </text> - <path d="M63.261,61.374 C57.46,61.374 52.758,56.672 52.758,50.872 C52.758,45.072 57.46,40.37 63.261,40.37 C69.061,40.37 73.763,45.072 73.763,50.872 C73.763,56.672 69.061,61.374 63.261,61.374 z" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <text transform="matrix(1, 0, 0, 1, 157.076, 50.372)"> - <tspan x="-4.448" y="4.5" font-family="Avenir-Book" font-size="16" fill="#000000">3</tspan> - </text> - <path d="M157.576,61.374 C151.776,61.374 147.074,56.672 147.074,50.872 C147.074,45.072 151.776,40.37 157.576,40.37 C163.377,40.37 168.079,45.072 168.079,50.872 C168.079,56.672 163.377,61.374 157.576,61.374 z" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - </g> -</svg> diff --git a/docs/details/figures/Vector/mesh_dofs-a.idraw b/docs/details/figures/Vector/mesh_dofs-a.idraw deleted file mode 100644 index b63db3a..0000000 Binary files a/docs/details/figures/Vector/mesh_dofs-a.idraw and /dev/null differ diff --git a/docs/details/figures/Vector/mesh_dofs-a.svg b/docs/details/figures/Vector/mesh_dofs-a.svg deleted file mode 100644 index 68799af..0000000 --- a/docs/details/figures/Vector/mesh_dofs-a.svg +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="423.479" height="218.059" viewBox="0, 0, 423.479, 218.059"> - <g id="mesh"> - <path d="M232.133,192.346 L420.765,192.346" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,98.03 L420.765,98.03" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,3.714 L420.765,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M420.765,192.346 L420.765,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M326.449,192.346 L326.449,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,192.346 L232.133,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M231.634,195.059 C229.859,195.059 228.42,193.621 228.42,191.846 C228.42,190.071 229.859,188.632 231.634,188.632 C233.408,188.632 234.847,190.071 234.847,191.846 C234.847,193.621 233.408,195.059 231.634,195.059 z" fill="#000000"/> - <path d="M231.634,100.744 C229.859,100.744 228.42,99.305 228.42,97.53 C228.42,95.755 229.859,94.316 231.634,94.316 C233.408,94.316 234.847,95.755 234.847,97.53 C234.847,99.305 233.408,100.744 231.634,100.744 z" fill="#000000"/> - <path d="M231.634,6.428 C229.859,6.428 228.42,4.989 228.42,3.214 C228.42,1.439 229.859,0 231.634,0 C233.408,0 234.847,1.439 234.847,3.214 C234.847,4.989 233.408,6.428 231.634,6.428 z" fill="#000000"/> - <path d="M325.949,195.059 C324.174,195.059 322.736,193.621 322.736,191.846 C322.736,190.071 324.174,188.632 325.949,188.632 C327.724,188.632 329.163,190.071 329.163,191.846 C329.163,193.621 327.724,195.059 325.949,195.059 z" fill="#000000"/> - <path d="M325.949,100.744 C324.174,100.744 322.736,99.305 322.736,97.53 C322.736,95.755 324.174,94.316 325.949,94.316 C327.724,94.316 329.163,95.755 329.163,97.53 C329.163,99.305 327.724,100.744 325.949,100.744 z" fill="#000000"/> - <path d="M325.949,6.428 C324.174,6.428 322.736,4.989 322.736,3.214 C322.736,1.439 324.174,0 325.949,0 C327.724,0 329.163,1.439 329.163,3.214 C329.163,4.989 327.724,6.428 325.949,6.428 z" fill="#000000"/> - <path d="M420.265,195.059 C418.49,195.059 417.051,193.621 417.051,191.846 C417.051,190.071 418.49,188.632 420.265,188.632 C422.04,188.632 423.479,190.071 423.479,191.846 C423.479,193.621 422.04,195.059 420.265,195.059 z" fill="#000000"/> - <path d="M420.265,100.744 C418.49,100.744 417.051,99.305 417.051,97.53 C417.051,95.755 418.49,94.316 420.265,94.316 C422.04,94.316 423.479,95.755 423.479,97.53 C423.479,99.305 422.04,100.744 420.265,100.744 z" fill="#000000"/> - <path d="M420.265,6.428 C418.49,6.428 417.051,4.989 417.051,3.214 C417.051,1.439 418.49,0 420.265,0 C422.04,0 423.479,1.439 423.479,3.214 C423.479,4.989 422.04,6.428 420.265,6.428 z" fill="#000000"/> - </g> - <g id="dof_numers"> - <text transform="matrix(1, 0, 0, 1, 74.305, 29.861)"> - <tspan x="-10.08" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">(A)</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 217.3, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">0</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">1</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 311.513, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">2,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">3</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 406.305, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">4</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">5</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 217.3, 112.244)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">6</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,7</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 311.513, 112.244)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">8,9</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 397.035, 112.244)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">10</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,11</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 208.404, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">12</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,13</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 302.617, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">14,15</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 397.035, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">16</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,17</tspan> - </text> - </g> - <g id="node_numbers"/> - <g id="element_numbers"> - <g> - <path d="M20.344,49.265 L129.266,49.265 L129.266,158.186 L20.344,158.186 L20.344,49.265 z" fill="#E0E0E0"/> - <path d="M20.344,49.265 L129.266,49.265 L129.266,158.186 L20.344,158.186 L20.344,49.265 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - </g> - <g> - <path d="M129.266,49.265 L144.204,49.265" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M144.204,52.265 L152.204,49.265 L144.204,46.265 M144.204,49.265 L152.204,49.265" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="1"/> - </g> - <g> - <path d="M129.266,158.186 L144.204,158.186" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M144.204,161.186 L152.204,158.186 L144.204,155.186 M144.204,158.186 L152.204,158.186" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="1"/> - </g> - <g> - <path d="M129.266,103.726 L144.204,103.726" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M144.204,106.726 L152.204,103.726 L144.204,100.726 M144.204,103.726 L152.204,103.726" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-opacity="1"/> - </g> - <path d="M12.947,171.034 L20.388,158.186 L27.829,171.034 L12.947,171.034 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M16.667,176.724 C15.096,176.724 13.822,175.451 13.822,173.879 C13.822,172.308 15.096,171.034 16.667,171.034 C18.239,171.034 19.513,172.308 19.513,173.879 C19.513,175.451 18.239,176.724 16.667,176.724 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M24.108,176.724 C22.537,176.724 21.263,175.451 21.263,173.879 C21.263,172.308 22.537,171.034 24.108,171.034 C25.68,171.034 26.954,172.308 26.954,173.879 C26.954,175.451 25.68,176.724 24.108,176.724 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M12.947,177.199 L27.829,177.199" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <path d="M12.907,170.988 L12.907,170.988" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M27.8,170.988 L27.8,170.988" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M121.835,171.034 L129.276,158.186 L136.717,171.034 L121.835,171.034 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M125.556,176.724 C123.984,176.724 122.71,175.451 122.71,173.879 C122.71,172.308 123.984,171.034 125.556,171.034 C127.127,171.034 128.401,172.308 128.401,173.879 C128.401,175.451 127.127,176.724 125.556,176.724 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M132.997,176.724 C131.425,176.724 130.151,175.451 130.151,173.879 C130.151,172.308 131.425,171.034 132.997,171.034 C134.568,171.034 135.842,172.308 135.842,173.879 C135.842,175.451 134.568,176.724 132.997,176.724 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M121.835,177.199 L136.717,177.199" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <path d="M121.795,170.988 L121.795,170.988" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M136.689,170.988 L136.689,170.988" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M6.665,41.861 L19.513,49.302 L6.665,56.743 L6.665,41.861 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M0.974,45.581 C0.974,44.01 2.248,42.736 3.82,42.736 C5.391,42.736 6.665,44.01 6.665,45.581 C6.665,47.152 5.391,48.426 3.82,48.426 C2.248,48.426 0.974,47.152 0.974,45.581 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M0.974,53.022 C0.974,51.451 2.248,50.177 3.82,50.177 C5.391,50.177 6.665,51.451 6.665,53.022 C6.665,54.593 5.391,55.867 3.82,55.867 C2.248,55.867 0.974,54.593 0.974,53.022 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M0.5,41.861 L0.5,56.743" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <path d="M6.711,41.82 L6.711,41.82" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M6.711,56.714 L6.711,56.714" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M6.665,150.749 L19.513,158.19 L6.665,165.631 L6.665,150.749 z" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M0.974,154.469 C0.974,152.898 2.248,151.624 3.82,151.624 C5.391,151.624 6.665,152.898 6.665,154.469 C6.665,156.041 5.391,157.315 3.82,157.315 C2.248,157.315 0.974,156.041 0.974,154.469 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M0.974,161.91 C0.974,160.339 2.248,159.065 3.82,159.065 C5.391,159.065 6.665,160.339 6.665,161.91 C6.665,163.482 5.391,164.756 3.82,164.756 C2.248,164.756 0.974,163.482 0.974,161.91 z" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M0.5,150.749 L0.5,165.631" fill-opacity="0" stroke="#000000" stroke-width="0.5"/> - <path d="M6.711,150.709 L6.711,150.709" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M6.711,165.602 L6.711,165.602" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> - </g> -</svg> diff --git a/docs/details/figures/Vector/mesh_dofs-b.idraw b/docs/details/figures/Vector/mesh_dofs-b.idraw deleted file mode 100644 index 047bcee..0000000 Binary files a/docs/details/figures/Vector/mesh_dofs-b.idraw and /dev/null differ diff --git a/docs/details/figures/Vector/mesh_dofs-b.svg b/docs/details/figures/Vector/mesh_dofs-b.svg deleted file mode 100644 index 57aa403..0000000 --- a/docs/details/figures/Vector/mesh_dofs-b.svg +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="423.479" height="218.059" viewBox="0, 0, 423.479, 218.059"> - <defs> - <pattern id="Pattern_1" patternUnits="userSpaceOnUse" x="21.844" y="157.686" width="48" height="48" patternTransform="matrix(0.177, 0.177, -0.177, 0.177, 0, 0)"> - <g transform="translate(0, -0)"> - <path d="M12,0 L16,0 L16,48 L12,48 L12,0 z" fill="#000000"/> - <path d="M28,0 L32,0 L32,48 L28,48 L28,0 z" fill="#000000"/> - <path d="M44,0 L48,0 L48,48 L44,48 L44,0 z" fill="#000000"/> - </g> - </pattern> - </defs> - <g id="mesh"> - <path d="M232.133,192.346 L420.765,192.346" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,98.03 L420.765,98.03" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,3.714 L420.765,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M420.765,192.346 L420.765,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M326.449,192.346 L326.449,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M232.133,192.346 L232.133,3.714" fill-opacity="0" stroke="#000000" stroke-width="1"/> - <path d="M231.634,195.059 C229.859,195.059 228.42,193.621 228.42,191.846 C228.42,190.071 229.859,188.632 231.634,188.632 C233.408,188.632 234.847,190.071 234.847,191.846 C234.847,193.621 233.408,195.059 231.634,195.059 z" fill="#000000"/> - <path d="M231.634,100.744 C229.859,100.744 228.42,99.305 228.42,97.53 C228.42,95.755 229.859,94.316 231.634,94.316 C233.408,94.316 234.847,95.755 234.847,97.53 C234.847,99.305 233.408,100.744 231.634,100.744 z" fill="#000000"/> - <path d="M231.634,6.428 C229.859,6.428 228.42,4.989 228.42,3.214 C228.42,1.439 229.859,0 231.634,0 C233.408,0 234.847,1.439 234.847,3.214 C234.847,4.989 233.408,6.428 231.634,6.428 z" fill="#000000"/> - <path d="M325.949,195.059 C324.174,195.059 322.736,193.621 322.736,191.846 C322.736,190.071 324.174,188.632 325.949,188.632 C327.724,188.632 329.163,190.071 329.163,191.846 C329.163,193.621 327.724,195.059 325.949,195.059 z" fill="#000000"/> - <path d="M325.949,100.744 C324.174,100.744 322.736,99.305 322.736,97.53 C322.736,95.755 324.174,94.316 325.949,94.316 C327.724,94.316 329.163,95.755 329.163,97.53 C329.163,99.305 327.724,100.744 325.949,100.744 z" fill="#000000"/> - <path d="M325.949,6.428 C324.174,6.428 322.736,4.989 322.736,3.214 C322.736,1.439 324.174,0 325.949,0 C327.724,0 329.163,1.439 329.163,3.214 C329.163,4.989 327.724,6.428 325.949,6.428 z" fill="#000000"/> - <path d="M420.265,195.059 C418.49,195.059 417.051,193.621 417.051,191.846 C417.051,190.071 418.49,188.632 420.265,188.632 C422.04,188.632 423.479,190.071 423.479,191.846 C423.479,193.621 422.04,195.059 420.265,195.059 z" fill="#000000"/> - <path d="M420.265,100.744 C418.49,100.744 417.051,99.305 417.051,97.53 C417.051,95.755 418.49,94.316 420.265,94.316 C422.04,94.316 423.479,95.755 423.479,97.53 C423.479,99.305 422.04,100.744 420.265,100.744 z" fill="#000000"/> - <path d="M420.265,6.428 C418.49,6.428 417.051,4.989 417.051,3.214 C417.051,1.439 418.49,0 420.265,0 C422.04,0 423.479,1.439 423.479,3.214 C423.479,4.989 422.04,6.428 420.265,6.428 z" fill="#000000"/> - </g> - <g id="dof_numers"> - <text transform="matrix(1, 0, 0, 1, 217.3, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">0</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">1</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 311.513, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#690808">2</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">3</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 406.305, 206.559)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">4</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">5</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 217.3, 112.244)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">6,7</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 311.513, 112.244)"> - <tspan x="-11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">8,9</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 397.035, 112.244)"> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#4118B8">6</tspan> - <tspan x="6.672" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="11.12" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#4118B8">7</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 208.404, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">10</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#690808">11</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 302.617, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#690808">12</tspan> - <tspan x="-2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">,</tspan> - <tspan x="2.224" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#690808">13</tspan> - </text> - <text transform="matrix(1, 0, 0, 1, 397.035, 17.928)"> - <tspan x="-20.016" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#6A0808">14,15</tspan> - </text> - </g> - <g id="example"> - <path d="M21.844,48.765 L130.766,48.765 L130.766,157.686 L21.844,157.686 L21.844,48.765 z" fill="#E0E0E0"/> - <text transform="matrix(1, 0, 0, 1, 76.305, 29.861)"> - <tspan x="-10.08" y="4.5" font-family="Avenir-Oblique" font-size="16" fill="#000000">(B)</tspan> - </text> - <g> - <path d="M21.844,157.686 L130.766,157.686 L130.766,167.848 L21.844,167.848 L21.844,157.686 z" fill="url(#Pattern_1)"/> - <path d="M21.844,157.686 L130.766,157.686 L130.766,167.848 L21.844,167.848 L21.844,157.686 z" fill-opacity="0" stroke="#000000" stroke-width="0.96"/> - </g> - <path d="M22.344,39.103 L131.266,39.103 L131.266,49.265 L22.344,49.265 L22.344,39.103 z" fill-opacity="0" stroke="#000000" stroke-width="0.96"/> - <g> - <path d="M57.182,44.184 L87.788,44.184" fill-opacity="0" stroke="#000000" stroke-width="0.96"/> - <path d="M87.788,47.064 L95.468,44.184 L87.788,41.304 M87.788,44.184 L95.468,44.184" fill-opacity="0" stroke="#000000" stroke-width="0.96" stroke-opacity="1"/> - </g> - <path d="M131.266,49.265 L131.266,158.186" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - <path d="M131.266,49.265 L152.212,49.265" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - <path d="M131.266,158.186 L152.212,158.186" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - <path d="M22.344,49.265 L22.344,158.186" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - <path d="M22.344,49.265 L1.399,49.265" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - <path d="M22.344,158.186 L1.399,158.186" fill-opacity="0" stroke="#000000" stroke-width="1" stroke-dasharray="6,5"/> - </g> -</svg> diff --git a/docs/details/macros.rst b/docs/details/macros.rst index 9a1c55a..3ee52c0 100644 --- a/docs/details/macros.rst +++ b/docs/details/macros.rst @@ -1,17 +1,18 @@ +.. _macros: ****** Macros ****** GOOSEFEM_ENABLE_ASSERT ====================== To enable assertions use .. code-block:: cpp #define GOOSEFEM_ENABLE_ASSERT .. note:: Assertions are always turned on in the Python API. diff --git a/docs/examples/dynamics_inertia-damping.rst b/docs/examples/dynamics_inertia-damping.rst index 3c6c61a..258f661 100644 --- a/docs/examples/dynamics_inertia-damping.rst +++ b/docs/examples/dynamics_inertia-damping.rst @@ -1,77 +1,77 @@ ***************** Inertia + damping ***************** Velocity Verlet =============== .. code-block:: cpp // position, velocity, acceleration (and history: last increment) xt::xtensor<double,2> u = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> v = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> a = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> v_n = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> a_n = xt::zeros<double>({nnode, ndim}); // residual force xt::xtensor<double,2> fr = xt::zeros<double>({nnode, ndim}); // compute mass matrix // (often assumed constant & diagonal, remove either assumption if needed) GooseFEM::MatrixDiagonal M(...); ... // time increments for ( ... ) { // store history xt::noalias(v_n) = v; xt::noalias(a_n) = a; // new displacement xt::noalias(u) = u + dt * v + 0.5 * std::pow(dt,2.) * a; // update residual force (and mass matrix if needed) ... // estimate 1: new velocity xt::noalias(v) = v_n + dt * a_n; // estimate 1: new residual force (and mass matrix if needed) ... // estimate 1: new acceleration M.solve(fr, a); // estimate 2: new velocity xt::noalias(v) = v_n + .5 * dt * ( a_n + a ); // estimate 2: new residual force (and mass matrix if needed) ... // estimate 2: new acceleration M.solve(fr, a); // new velocity xt::noalias(v) = v_n + .5 * dt * ( a_n + a ); // new residual force (and mass matrix if needed) ... // new acceleration M.solve(fr, a); } Example ======= .. todo:: Compile, run, and view instructions -| :download:`main.cpp <Dynamics/Elastic-VelocityVerlet/main.cpp>` -| :download:`CMakeLists.txt <Dynamics/Elastic-VelocityVerlet/CMakeLists.txt>` -| :download:`plot.py <Dynamics/Elastic-VelocityVerlet/plot.py>` +| :download:`main.cpp <dynamics/Elastic-VelocityVerlet/main.cpp>` +| :download:`CMakeLists.txt <dynamics/Elastic-VelocityVerlet/CMakeLists.txt>` +| :download:`plot.py <dynamics/Elastic-VelocityVerlet/plot.py>` diff --git a/docs/examples/dynamics_inertia.rst b/docs/examples/dynamics_inertia.rst index 6d11659..e2d0ce4 100644 --- a/docs/examples/dynamics_inertia.rst +++ b/docs/examples/dynamics_inertia.rst @@ -1,65 +1,65 @@ ******* Inertia ******* Verlet ====== .. code-block:: cpp // position, velocity, acceleration (and history: last increment) xt::xtensor<double,2> u = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> v = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> a = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> v_n = xt::zeros<double>({nnode, ndim}); xt::xtensor<double,2> a_n = xt::zeros<double>({nnode, ndim}); // residual force xt::xtensor<double,2> fr = xt::zeros<double>({nnode, ndim}); // compute mass matrix // (often assumed constant & diagonal, remove either assumption if needed) GooseFEM::MatrixDiagonal M(...); ... // time increments for ( ... ) { // store history xt::noalias(v_n) = v; xt::noalias(a_n) = a; // new displacement xt::noalias(u) = u + dt * v + 0.5 * std::pow(dt,2.) * a; // new residual force (and mass matrix if needed) ... // new acceleration M.solve(fr, a); // new velocity xt::noalias(v) = v_n + .5 * dt * ( a_n + a ); } Example ======= .. todo:: Compile, run, and view instructions: .. code-block:: bash mkdir build cd build make ./main python3 plot.py -| :download:`main.cpp <Dynamics/Elastic-Verlet/main.cpp>` -| :download:`CMakeLists.txt <Dynamics/Elastic-Verlet/CMakeLists.txt>` -| :download:`plot.py <Dynamics/Elastic-Verlet/plot.py>` +| :download:`main.cpp <dynamics/Elastic-Verlet/main.cpp>` +| :download:`CMakeLists.txt <dynamics/Elastic-Verlet/CMakeLists.txt>` +| :download:`plot.py <dynamics/Elastic-Verlet/plot.py>` diff --git a/docs/examples/statics/FixedDisplacements_LinearElastic/example/main.py b/docs/examples/statics/FixedDisplacements_LinearElastic/example/main.py index 249cdc9..de064fa 100644 --- a/docs/examples/statics/FixedDisplacements_LinearElastic/example/main.py +++ b/docs/examples/statics/FixedDisplacements_LinearElastic/example/main.py @@ -1,163 +1,164 @@ import GooseFEM import GMatElastic import numpy as np # mesh # ---- # define mesh mesh = GooseFEM.Mesh.Quad4.Regular(5,5) # mesh dimensions nelem = mesh.nelem() nne = mesh.nne() ndim = mesh.ndim() # mesh definitions coor = mesh.coor() conn = mesh.conn() dofs = mesh.dofs() # node sets nodesLeft = mesh.nodesLeftEdge() nodesRight = mesh.nodesRightEdge() nodesTop = mesh.nodesTopEdge() nodesBottom = mesh.nodesBottomEdge() # fixed displacements DOFs # ------------------------ iip = np.concatenate(( dofs[nodesRight , 0], dofs[nodesTop , 1], dofs[nodesLeft , 0], dofs[nodesBottom, 1] )) # simulation variables # -------------------- # vector definition vector = GooseFEM.VectorPartitioned(conn, dofs, iip) # allocate system matrix K = GooseFEM.MatrixPartitioned(conn, dofs, iip) # nodal quantities disp = np.zeros(coor.shape) fint = np.zeros(coor.shape) fext = np.zeros(coor.shape) fres = np.zeros(coor.shape) # element vectors ue = np.empty((nelem, nne, ndim)) fe = np.empty((nelem, nne, ndim)) Ke = np.empty((nelem, nne*ndim, nne*ndim)) # element/material definition # --------------------------- # element definition elem = GooseFEM.Element.Quad4.QuadraturePlanar(vector.AsElement(coor)) nip = elem.nip() # material definition mat = GMatElastic.Cartesian3d.Matrix(nelem, nip, 1., 1.) # integration point tensors d = 3 Eps = np.empty((nelem, nip, d, d )) Sig = np.empty((nelem, nip, d, d )) C = np.empty((nelem, nip, d, d, d, d)) # solve # ----- # strain ue = vector.AsElement(disp) Eps = elem.SymGradN_vector(ue) # stress & tangent (Sig, C) = mat.Tangent(Eps) # internal force fe = elem.Int_gradN_dot_tensor2_dV(Sig) fint = vector.AssembleNode(fe) # stiffness matrix Ke = elem.Int_gradN_dot_tensor4_dot_gradNT_dV(C) K.assemble(Ke) # set fixed displacements disp[nodesRight , 0] = +0.1 disp[nodesTop , 1] = -0.1 disp[nodesLeft , 0] = 0.0 disp[nodesBottom, 1] = 0.0 # residual fres = fext - fint # solve disp = K.Solve(fres, disp) # post-process # ------------ # compute strain and stress ue = vector.AsElement(disp) Eps = elem.SymGradN_vector(ue) Sig = mat.Stress(Eps) # internal force fe = elem.Int_gradN_dot_tensor2_dV(Sig) fint = vector.AssembleNode(fe) # apply reaction force fext = vector.Copy_p(fint, fext) # residual fres = fext - fint # print residual print(np.sum(np.abs(fres)) / np.sum(np.abs(fext))) # average stress per node dV = elem.DV(2) Sig = np.average(Sig, weights=dV, axis=1) # plot # ---- import matplotlib.pyplot as plt import GooseMPL as gplt plt.style.use(['goose', 'goose-latex']) # extract dimension nelem = conn.shape[0] # tensor products ddot22 = lambda A2,B2: np.einsum('eij ,eji->e ',A2,B2) ddot42 = lambda A4,B2: np.einsum('eijkl,elk->eij ',A4,B2) dyad22 = lambda A2,B2: np.einsum('eij ,ekl->eijkl',A2,B2) # identity tensor (single tensor) i = np.eye(3) # identity tensors (grid) I = np.einsum('ij ,e' , i ,np.ones([nelem])) I4 = np.einsum('ijkl,e->eijkl',np.einsum('il,jk',i,i),np.ones([nelem])) I4rt = np.einsum('ijkl,e->eijkl',np.einsum('ik,jl',i,i),np.ones([nelem])) I4s = (I4+I4rt)/2. II = dyad22(I,I) I4d = I4s-II/3. # compute equivalent stress Sigd = ddot42(I4d, Sig) sigeq = np.sqrt(3./2.*ddot22(Sigd,Sigd)) # plot fig, ax = plt.subplots() gplt.patch(coor=coor+disp, conn=conn, cindex=sigeq, cmap='jet', axis=ax, clim=(0,0.1)) gplt.patch(coor=coor, conn=conn, linestyle='--', axis=ax) -plt.show() +plt.savefig('main.pdf') +plt.close() diff --git a/docs/examples/statics/FixedDisplacements_LinearElastic/example/plot.py b/docs/examples/statics/FixedDisplacements_LinearElastic/example/plot.py index 0bf1209..a5b511a 100644 --- a/docs/examples/statics/FixedDisplacements_LinearElastic/example/plot.py +++ b/docs/examples/statics/FixedDisplacements_LinearElastic/example/plot.py @@ -1,51 +1,49 @@ import h5py import matplotlib.pyplot as plt import GooseMPL as gplt import numpy as np plt.style.use(['goose', 'goose-latex']) # open file file = h5py.File('main.h5', 'r') # read fields coor = file['/coor'][...] conn = file['/conn'][...] disp = file['/disp'][...] Sig = file['/Sig' ][...] # extract dimension nelem = conn.shape[0] # tensor products ddot22 = lambda A2,B2: np.einsum('eij ,eji->e ',A2,B2) ddot42 = lambda A4,B2: np.einsum('eijkl,elk->eij ',A4,B2) dyad22 = lambda A2,B2: np.einsum('eij ,ekl->eijkl',A2,B2) # identity tensor (single tensor) i = np.eye(3) # identity tensors (grid) I = np.einsum('ij ,e' , i ,np.ones([nelem])) I4 = np.einsum('ijkl,e->eijkl',np.einsum('il,jk',i,i),np.ones([nelem])) I4rt = np.einsum('ijkl,e->eijkl',np.einsum('ik,jl',i,i),np.ones([nelem])) I4s = (I4+I4rt)/2. II = dyad22(I,I) I4d = I4s-II/3. # compute equivalent stress Sigd = ddot42(I4d, Sig) sigeq = np.sqrt(3./2.*ddot22(Sigd,Sigd)) # plot fig, ax = plt.subplots() - gplt.patch(coor=coor+disp, conn=conn, cindex=sigeq, cmap='jet', axis=ax, clim=(0,0.1)) - gplt.patch(coor=coor, conn=conn, linestyle='--', axis=ax) - -plt.show() +plt.savefig('plot.pdf') +plt.close() diff --git a/docs/examples/statics_linear.rst b/docs/examples/statics_linear.rst index 81d5ca4..cc3170a 100644 --- a/docs/examples/statics_linear.rst +++ b/docs/examples/statics_linear.rst @@ -1,266 +1,311 @@ ************** Linear elastic ************** -Consider a uniform linear elastic bar that is extended by a uniform fixed displacement on both sides. This problem can be modelled and discretised using symmetry as show below. In this example we will furthermore assume that the bar is sufficiently thick in the out-of-plane direction that it can be modelled using two-dimensional plane strain. +Consider a uniform linear elastic bar that is extended by a uniform fixed displacement on both sides. This problem can be modelled and discretised using symmetry as show below. In this example we will furthermore assume that the bar is sufficiently thick in the out-of-plane direction to be modelled using two-dimensional plane strain. .. image:: statics/FixedDisplacements_LinearElastic/problem-sketch.svg :width: 300px :align: center | Below an example is described line-by-line. The full example can be downloaded: | :download:`main.cpp <statics/FixedDisplacements_LinearElastic/example/main.cpp>` | :download:`CMakeLists.txt <statics/FixedDisplacements_LinearElastic/example/CMakeLists.txt>` | :download:`plot.py <statics/FixedDisplacements_LinearElastic/example/plot.py>` .. todo:: Compile and run instructions. .. note:: - This example is also available using the Python interface (:download:`main.py <statics/FixedDisplacements_LinearElastic/example/main.py>`). Note that compared to the C++ API, the Python API requires more data-allocation, in particular in the functions "AsElement" and "AssembleNode". See :ref:`conventions_allocation`. + This example is also available using the Python interface (:download:`main.py <statics/FixedDisplacements_LinearElastic/example/main.py>`). Compared to the C++ API, the Python API requires more data-allocation, in particular for the functions "AsElement" and "AssembleNode". See: :ref:`conventions_allocation`. Include library =============== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 1-4 :emphasize-lines: 1-2 The first step is to include the header-only library. Note that for this example we also make use of a material model (`GMatElastic <https://www.github.com/tdegeus/GMatElastic>`_) and a library to write (and read) HDF5 files (`HighFive <https://www.github.com/BlueBrain/HighFive>`_). Define mesh =========== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 11-28 :emphasize-lines: 2 A mesh is defined using GooseFEM. As observed the "mesh" is a class that has methods to extract the relevant information such as the nodal coordinates ("coor"), the connectivity ("conn"), the degrees-of-freedom per node ("dofs") and several node-sets that will be used to impose the sketched boundary conditions ("nodesLeft", "nodesRight", "nodesTop", "nodesBottom"). Note that: * The connectivity ("conn") contains information of which nodes, in which order, belong to which element. * The degrees-of-freedom per node ("dofs") contains information of how a nodal vector (a vector stored per node) can be transformed to a list of degrees-of-freedom as used in the linear system (although this can be mostly done automatically as we will see below). .. seealso:: - :ref:`conventions_terminology` + * :ref:`conventions_terminology` + * Details: :ref:`MeshQuad4` Define partitioning =================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 33-38 We will reorder such that degrees-of-freedom are ordered such that .. math:: \texttt{u} = \begin{bmatrix} \texttt{u}_u \\ \texttt{u}_p \end{bmatrix} where the subscript :math:`u` and :math:`p` respectively denote *Unknown* and *Prescribed* degrees-of-freedom. To achieve this we start by collecting all prescribed degrees-of-freedom in "iip". (Avoid) Book-keeping ==================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 44 :emphasize-lines: 1 To switch between the three of GooseFEM's data-representations, an instance of the "Vector" class is used. This instance, "vector", will enable us to switch between a vector field (e.g. the displacement) 1. collected per node, 2. collected per degree-of-freedom, or 3. collected per element. .. note:: The "Vector" class collects most, if not all, the burden of book-keeping. It is thus here that "conn", "dofs", and "iip" are used. In particular, - * "nodevec" :math:`\leftrightarrow` "dofval" using "dofs" and "iip", - * "nodevec" :math:`\leftrightarrow` "elemvec" using "conn". + * 'nodevec' :math:`\leftrightarrow` 'dofval' using "dofs" and "iip", + * 'nodevec' :math:`\leftrightarrow` 'elemvec' using "conn". By contrast, most of GooseFEM's other methods receive the relevant representation, and consequently require no problem specific knowledge. They thus do not have to supplied with "conn", "dofs", or "iip". .. seealso:: * :ref:`conventions_vector` * :ref:`conventions_storage` + * Details: :ref:`Vector` System matrix ============= .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 47 :emphasize-lines: 1 We now also allocate the system/stiffness system (stored as sparse matrix). Like vector, it can accept and return different vector representations, in addition to the ability to assemble from element system matrices. +.. note:: + + Here, the default solver is used (which is the default template, hence the "<>"). To use other solvers see: :ref:`linear_solver`. + .. seealso:: * :ref:`conventions_matrix` - * :ref:`sparse` + * Details: :ref:`Matrix` Allocate nodal vectors ====================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 50-53 * "disp": nodal displacements * "fint": nodal internal forces * "fext": nodal external forces * "fres": nodal residual forces Allocate element vectors ======================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 56-58 * "ue": displacement * "fe": force * "Ke": tangent matrix .. warning:: - Upsizing (e.g. from "disp" to "ue") can be done uniquely, but downsizing (e.g. from "fe" to "fint") can be done in more than one way, see :ref:`conventions_vector_conversion`. We will get back to this point below. + Upsizing (e.g. "disp" :math:`\rightarrow` "ue") can be done uniquely, but downsizing (e.g. "fe" :math:`\rightarrow` "fint") can be done in more than one way, see :ref:`conventions_vector_conversion`. We will get back to this point below. Element definition ================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 64-65 -At this moment the interpolation and quadrature is allocated. The shape functions and integration points (that can be customised) are stored in this class. As observed, no further information is needed that the number of elements and the nodal coordinates per element. Both are contained in the output of "vector.AsElement(coor)", which is an "elemvec" of shape "[nelem, nne, ndim]". This illustrates that problem specific book-keeping is isolated to the main program, using "Vector" as tool. +At this moment the interpolation and quadrature is allocated. The shape functions and integration points (that can be customised) are stored in this class. As observed, no further information is needed than the number of elements and the nodal coordinates per element. Both are contained in the output of "vector.AsElement(coor)", which is an 'elemvec' of shape "[nelem, nne, ndim]". This illustrates that problem specific book-keeping is isolated to the main program, using "Vector" as tool. .. note:: The shape functions are computed when constructing this class, they are not recomputed when evaluating them. One can recompute them if the nodal coordinates change using ".update_x(...)", however, this is only relevant in a large deformation setting. +.. seealso:: + + * :ref:`conventions_vector` + * :ref:`conventions_storage` + * Details: :ref:`Vector` + * Details: :ref:`ElementQuad4` + Material definition =================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 68 We now define a uniform linear elastic material, using an external library that is tuned to GooseFEM. This material library will translate a strain tensor per integration point to a stress tensor per integration point and a stiffness tensor per integration point. .. seealso:: Material libraries tuned to GooseFEM include: * `GMatElastic <https:://www.github.com/tdegeus/GMatElastic>`__ * `GMatElastoPlastic <https:://www.github.com/tdegeus/GMatElastoPlastic>`__ * `GMatElastoPlasticFiniteStrainSimo <https:://www.github.com/tdegeus/GMatElastoPlasticFiniteStrainSimo>`__ * `GMatElastoPlasticQPot <https:://www.github.com/tdegeus/GMatElastoPlasticQPot>`__ * `GMatElastoPlasticQPot3d <https:://www.github.com/tdegeus/GMatElastoPlasticQPot3d>`__ * `GMatNonLinearElastic <https:://www.github.com/tdegeus/GMatNonLinearElastic>`__ + But other libraries can also be easily used with (simple) wrappers. + Integration point tensors ========================= .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 71-74 These strain, stress, and stiffness tensors per integration point are now allocated. Note that these tensors are 3-d while our problem was 2-d. This is thanks to the plane strain assumption, and the element definition that ignores all third-dimension components. Compute strain ============== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 80-81 -The strain per integration point is now computed using the current nodal displacements (stored as "elemvec" in "ue") and the gradient of the shape functions. +The strain per integration point is now computed using the current nodal displacements (stored as 'elemvec' in "ue") and the gradient of the shape functions. + +.. note:: + + "ue" is the output of "vector.asElement(disp, ue)". Using this syntax re-allocation of "ue" is avoided. If this optimisation is irrelevant for you problem (or if you are using the Python interface), please use the same function, but starting with a capital: + + .. code-block:: cpp + + ue = vector.AsElement(disp); + + Note that this allows the one-liner + + .. code-block:: cpp + + Eps = elem.SymGradN_vector(vector.AElement(disp)); Compute stress and tangent ========================== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 84 The stress and stiffness tensors are now computed for each integration point (completely independently) using the external material model. +.. note:: + + "Sig" and "C" are the output variables that were preallocated in the main. + Assemble system =============== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 86-92 -The stress stored per integration point ("Sig") is now converted to nodal internal force vectors stored per element ("fe"). Using "vector" this "elemvec" representation is then converted of a "nodevec" representation in "fint". Likewise, the stiffness tensor stored for integration point ("C") are converted to system matrices stored per element ("elemmat") and finally assembled to the global stiffness matrix. +The stress stored per integration point ("Sig") is now converted to nodal internal force vectors stored per element ("fe"). Using "vector" this 'elemvec' representation is then converted of a 'nodevec' representation in "fint". Likewise, the stiffness tensor stored for integration point ("C") are converted to system matrices stored per element ('elemmat') and finally assembled to the global stiffness matrix. .. warning:: - Please note that downsizing ("fe" to "fint" and "Ke" to "K") can be done in two ways, and that "assemble..." is the right function here as it adds entries that occur more than once. In contrast "as..." be false here. + Please note that downsizing ("fe" :math:`\rightarrow` "fint" and "Ke" :math:`\rightarrow` "K") can be done in two ways, and that "assemble..." is the right function here as it adds entries that occur more than once. In contrast "as..." would not result in what we want here. + +.. note:: + + Once more, "fe", "fint", and "Ke" are output variables. Less efficient, but shorter, is: + + .. code-block:: cpp + + // internal force + fint = vector.AssembleNode(elem.Int_gradN_dot_tensor2_dV(Sig)); + + // stiffness matrix + K.assemble(elem.Int_gradN_dot_tensor4_dot_gradNT_dV(C)); Solve ===== .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 94-104 -We now prescribe the displacement of the Prescribed degrees-of-freedom directly of "disp" and compute the residual force. This is follows by partitioning and solving, all done internally in the "MatrixPartitioned" class. +We now prescribe the displacement of the Prescribed degrees-of-freedom directly in the nodal displacements "disp" and compute the residual force. This is follows by partitioning and solving, all done internally in the "MatrixPartitioned" class. Post-process ============ Strain and stress ----------------- .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 110-112 The strain and stress per integration point are recomputed for post-processing. Residual force -------------- .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 114-125 -We now convince ourselves that the solution is indeed in mechanical equilibrium. +We convince ourselves that the solution is indeed in mechanical equilibrium. Store & plot ------------ .. literalinclude:: statics/FixedDisplacements_LinearElastic/example/main.cpp :language: cpp :lines: 127-136 Finally we store some fields for plotting using :download:`plot.py <statics/FixedDisplacements_LinearElastic/example/plot.py>`. Manual partitioning =================== -To verify how partitioning and solving is done internally using the "Vector" and "MatrixPartitioned" classes, the same example is provided where partitioning is done manually: +To verify how partitioning and solving is done internally using the "MatrixPartitioned" class, the same example is provided where partitioning is done manually: -:download:`main.cpp <statics/FixedDisplacements_LinearElastic/manual_partition/main.cpp>` -:download:`CMakeLists.txt <statics/FixedDisplacements_LinearElastic/manual_partition/CMakeLists.txt>` -:download:`plot.py <statics/FixedDisplacements_LinearElastic/manual_partition/plot.py>` -:download:`main.py <statics/FixedDisplacements_LinearElastic/manual_partition/main.py>` +| :download:`main.cpp <statics/FixedDisplacements_LinearElastic/manual_partition/main.cpp>` +| :download:`CMakeLists.txt <statics/FixedDisplacements_LinearElastic/manual_partition/CMakeLists.txt>` +| :download:`plot.py <statics/FixedDisplacements_LinearElastic/manual_partition/plot.py>` +| :download:`main.py <statics/FixedDisplacements_LinearElastic/manual_partition/main.py>` diff --git a/docs/introduction.rst b/docs/introduction.rst index 4f4f9f7..ac0d47e 100644 --- a/docs/introduction.rst +++ b/docs/introduction.rst @@ -1,27 +1,25 @@ ************ Introduction ************ Overview -------- This header-only module provides C++ classes (including Python wrappers) to write simulations using the Finite Element Method. .. note:: This library is free to use under the `GPLv3 license <https://github.com/tdegeus/GooseFEM/blob/master/LICENSE>`_. Any additions are very much appreciated, in terms of suggested functionality, code, documentation, testimonials, word of mouth advertisement, .... Bugs or feature requests can be filed on `GitHub <http://github.com/tdegeus/GooseFEM>`_. As always, the code comes with no guarantee. None of the developers can be held responsible for possible mistakes. Hallmark feature ---------------- -The hallmark feature of GooseFEM is that data is not stored in GooseFEM's classes but in multi-dimensional arrays with certain storage conventions. Consequently one is entirely free to mix and match routines, from GooseFEM or even from somewhere else. - -This design choice also has resulted in a very simple library: As very little problem specific information is needed all classes are transparent single functionality classes. +The hallmark feature of GooseFEM is that data is not stored in GooseFEM's classes but only in multi-dimensional arrays with certain :ref:`storage conventions <conventions_storage>`. Consequently one is entirely free to mix and match routines, from GooseFEM or even from somewhere else. Consequently the readability of the end-user's code and of the library remains high: Only the main function combines different ingredients, there is no dependence between GooseFEM's classes. Documentation ------------- This document should be considered as a quick-start guide. A lot effort has been spent on the readability of the code itself (in particular the ``*.h`` files should be instructive). One is highly encouraged to answer more advanced questions that arise from this guide directly using the code. Download buttons to the relevant files are included throughout this reader. -A compact reader covering the basic theory is available `here <https://github.com/tdegeus/GooseFEM/docs/theory/readme.pdf>`_. +A compact reader covering the basic theory is available as :download:`PDF <theory/readme.pdf>`. diff --git a/include/GooseFEM/Element.hpp b/include/GooseFEM/Element.hpp index dcd5a44..f786978 100644 --- a/include/GooseFEM/Element.hpp +++ b/include/GooseFEM/Element.hpp @@ -1,111 +1,111 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENT_HPP #define GOOSEFEM_ELEMENT_HPP // ------------------------------------------------------------------------------------------------- #include "Element.h" // ================================================================================================= namespace GooseFEM { namespace Element { // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> asElementVector( const xt::xtensor<size_t,2>& conn, const xt::xtensor<double,2>& nodevec) { - size_t nelem = conn.shape()[0]; - size_t nne = conn.shape()[1]; - size_t ndim = nodevec.shape()[1]; + size_t nelem = conn.shape(0); + size_t nne = conn.shape(1); + size_t ndim = nodevec.shape(1); xt::xtensor<double,3> elemvec = xt::empty<double>({nelem, nne, ndim}); #pragma omp parallel for for (size_t e = 0 ; e < nelem ; ++e) for (size_t m = 0 ; m < nne ; ++m) for (size_t i = 0 ; i < ndim ; ++i) elemvec(e,m,i) = nodevec(conn(e,m),i); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> assembleNodeVector( const xt::xtensor<size_t,2>& conn, const xt::xtensor<double,3>& elemvec) { - size_t nelem = conn.shape()[0]; - size_t nne = conn.shape()[1]; - size_t ndim = elemvec.shape()[2]; + size_t nelem = conn.shape(0); + size_t nne = conn.shape(1); + size_t ndim = elemvec.shape(2); size_t nnode = xt::amax(conn)[0]+1; - GOOSEFEM_ASSERT(elemvec.shape()[0] == nelem); - GOOSEFEM_ASSERT(elemvec.shape()[1] == nne); + GOOSEFEM_ASSERT(elemvec.shape(0) == nelem); + GOOSEFEM_ASSERT(elemvec.shape(1) == nne); xt::xtensor<double,2> nodevec = xt::zeros<double>({nnode, ndim}); for (size_t e = 0 ; e < nelem ; ++e) for (size_t m = 0 ; m < nne ; ++m) for (size_t i = 0 ; i < ndim ; ++i) nodevec(conn(e,m),i) += elemvec(e,m,i); return nodevec; } // ------------------------------------------------------------------------------------------------- template<class E> inline bool isSequential(const E& dofs) { size_t ndof = xt::amax(dofs)[0] + 1; xt::xtensor<int,1> exists = xt::zeros<int>({ndof}); for (auto& i: dofs) exists[i]++; for (auto& i: dofs) - if ( exists[i] == 0 ) + if (exists[i] == 0) return false; return true; } // ------------------------------------------------------------------------------------------------- inline bool isDiagonal(const xt::xtensor<double,3>& elemmat) { - GOOSEFEM_ASSERT(elemmat.shape()[1] == elemmat.shape()[2]); + GOOSEFEM_ASSERT(elemmat.shape(1) == elemmat.shape(2)); - size_t nelem = elemmat.shape()[0]; - size_t N = elemmat.shape()[1]; + size_t nelem = elemmat.shape(0); + size_t N = elemmat.shape(1); double eps = std::numeric_limits<double>::epsilon(); #pragma omp parallel for for (size_t e = 0 ; e < nelem ; ++e) for (size_t i = 0 ; i < N ; ++i) for (size_t j = 0 ; j < N ; ++j) - if ( i != j ) - if ( std::abs(elemmat(e,i,j)) > eps ) + if (i != j) + if (std::abs(elemmat(e,i,j)) > eps) return false; return true; } // ------------------------------------------------------------------------------------------------- }} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementHex8.h b/include/GooseFEM/ElementHex8.h index 2abce84..11e42ce 100644 --- a/include/GooseFEM/ElementHex8.h +++ b/include/GooseFEM/ElementHex8.h @@ -1,191 +1,191 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTHEX8_H #define GOOSEFEM_ELEMENTHEX8_H // ------------------------------------------------------------------------------------------------- #include "config.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Hex8 { // ------------------------------------------------------------------------------------------------- inline double inv( const xt::xtensor_fixed<double, xt::xshape<3,3>>& A, xt::xtensor_fixed<double, xt::xshape<3,3>>& Ainv); // ------------------------------------------------------------------------------------------------- namespace Gauss { inline size_t nip(); // number of integration points inline xt::xtensor<double,2> xi(); // integration point coordinates (local coordinates) inline xt::xtensor<double,1> w(); // integration point weights } // ------------------------------------------------------------------------------------------------- namespace Nodal { inline size_t nip(); // number of integration points inline xt::xtensor<double,2> xi(); // integration point coordinates (local coordinates) inline xt::xtensor<double,1> w(); // integration point weights } // ------------------------------------------------------------------------------------------------- class Quadrature { public: // Fixed dimensions: // ndim = 3 - number of dimensions // nne = 8 - number of nodes per element // // Naming convention: // "elemmat" - matrices stored per element - [nelem, nne*ndim, nne*ndim] // "elemvec" - nodal vectors stored per element - [nelem, nne, ndim] // "qtensor" - integration point tensor - [nelem, nip, ndim, ndim] // "qscalar" - integration point scalar - [nelem, nip] // Constructor: integration point coordinates and weights are optional (default: Gauss) Quadrature() = default; Quadrature( const xt::xtensor<double,3>& x); Quadrature( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w); // Update the nodal positions (shape of "x" should match the earlier definition) void update_x(const xt::xtensor<double,3>& x); // Return dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t ndim() const; // number of dimension size_t nip() const; // number of integration points // Return shape function gradients - xt::xtensor<double,4> gradN() const; + xt::xtensor<double,4> GradN() const; // Return integration volume void dV(xt::xtensor<double,2>& qscalar) const; void dV(xt::xtensor<double,4>& qtensor) const; // same volume for all tensor components void dV(xt::xarray<double>& qtensor) const; // same volume for all tensor components // Dyadic product (and its transpose and symmetric part) // qtensor(i,j) += dNdx(m,i) * elemvec(m,j) void gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten // Integral of the scalar product // elemmat(m*ndim+i,n*ndim+i) += N(m) * qscalar * N(n) * dV void int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const; // overwritten // Integral of the dot product // elemvec(m,j) += dNdx(m,i) * qtensor(i,j) * dV void int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const; // overwritten // Integral of the dot product // elemmat(m*2+j, n*2+k) += dNdx(m,i) * qtensor(i,j,k,l) * dNdx(n,l) * dV void int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const; // overwritten // Auto-allocation of the functions above xt::xtensor<double,2> DV() const; xt::xarray<double> DV( size_t rank) const; xt::xtensor<double,4> GradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> GradN_vector_T( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> SymGradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,3> Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const; xt::xtensor<double,3> Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const; xt::xtensor<double,3> Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const; private: // Compute "vol" and "dNdx" based on current "x" void compute_dN(); private: // Dimensions (flexible) size_t m_nelem; // number of elements size_t m_nip; // number of integration points // Dimensions (fixed for this element type) static const size_t m_nne=8; // number of nodes per element static const size_t m_ndim=3; // number of dimensions // Data arrays xt::xtensor<double,3> m_x; // nodal positions stored per element [nelem, nne, ndim] xt::xtensor<double,1> m_w; // weight of each integration point [nip] xt::xtensor<double,2> m_xi; // local coordinate of each integration point [nip, ndim] xt::xtensor<double,2> m_N; // shape functions [nip, nne] xt::xtensor<double,3> m_dNxi; // shape function grad. w.r.t. local coor. [nip, nne, ndim] xt::xtensor<double,4> m_dNx; // shape function grad. w.r.t. global coor. [nelem, nip, nne, ndim] xt::xtensor<double,2> m_vol; // integration point volume [nelem, nip] }; // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #include "ElementHex8.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementHex8.hpp b/include/GooseFEM/ElementHex8.hpp index dbbbb51..143f851 100644 --- a/include/GooseFEM/ElementHex8.hpp +++ b/include/GooseFEM/ElementHex8.hpp @@ -1,707 +1,707 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTHEX8_HPP #define GOOSEFEM_ELEMENTHEX8_HPP // ------------------------------------------------------------------------------------------------- #include "ElementHex8.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Hex8 { // ================================================================================================= inline double inv( const xt::xtensor_fixed<double, xt::xshape<3,3>>& A, xt::xtensor_fixed<double, xt::xshape<3,3>>& Ainv) { // compute determinant double det = ( A(0,0) * A(1,1) * A(2,2) + A(0,1) * A(1,2) * A(2,0) + A(0,2) * A(1,0) * A(2,1) ) - ( A(0,2) * A(1,1) * A(2,0) + A(0,1) * A(1,0) * A(2,2) + A(0,0) * A(1,2) * A(2,1) ); // compute inverse Ainv(0,0) = (A(1,1)*A(2,2)-A(1,2)*A(2,1)) / det; Ainv(0,1) = (A(0,2)*A(2,1)-A(0,1)*A(2,2)) / det; Ainv(0,2) = (A(0,1)*A(1,2)-A(0,2)*A(1,1)) / det; Ainv(1,0) = (A(1,2)*A(2,0)-A(1,0)*A(2,2)) / det; Ainv(1,1) = (A(0,0)*A(2,2)-A(0,2)*A(2,0)) / det; Ainv(1,2) = (A(0,2)*A(1,0)-A(0,0)*A(1,2)) / det; Ainv(2,0) = (A(1,0)*A(2,1)-A(1,1)*A(2,0)) / det; Ainv(2,1) = (A(0,1)*A(2,0)-A(0,0)*A(2,1)) / det; Ainv(2,2) = (A(0,0)*A(1,1)-A(0,1)*A(1,0)) / det; return det; } // ================================================================================================= namespace Gauss { // ------------------------------------------------------------------------------------------------- inline size_t nip() { return 8; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> xi() { size_t nip = 8; size_t ndim = 3; xt::xtensor<double,2> xi = xt::empty<double>({nip,ndim}); xi(0,0) = -1./std::sqrt(3.); xi(0,1) = -1./std::sqrt(3.); xi(0,2) = -1./std::sqrt(3.); xi(1,0) = +1./std::sqrt(3.); xi(1,1) = -1./std::sqrt(3.); xi(1,2) = -1./std::sqrt(3.); xi(2,0) = +1./std::sqrt(3.); xi(2,1) = +1./std::sqrt(3.); xi(2,2) = -1./std::sqrt(3.); xi(3,0) = -1./std::sqrt(3.); xi(3,1) = +1./std::sqrt(3.); xi(3,2) = -1./std::sqrt(3.); xi(4,0) = -1./std::sqrt(3.); xi(4,1) = -1./std::sqrt(3.); xi(4,2) = +1./std::sqrt(3.); xi(5,0) = +1./std::sqrt(3.); xi(5,1) = -1./std::sqrt(3.); xi(5,2) = +1./std::sqrt(3.); xi(6,0) = +1./std::sqrt(3.); xi(6,1) = +1./std::sqrt(3.); xi(6,2) = +1./std::sqrt(3.); xi(7,0) = -1./std::sqrt(3.); xi(7,1) = +1./std::sqrt(3.); xi(7,2) = +1./std::sqrt(3.); return xi; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> w() { size_t nip = 8; xt::xtensor<double,1> w = xt::empty<double>({nip}); w(0) = 1.; w(1) = 1.; w(2) = 1.; w(3) = 1.; w(4) = 1.; w(5) = 1.; w(6) = 1.; w(7) = 1.; return w; } // ------------------------------------------------------------------------------------------------- } // ================================================================================================= namespace Nodal { // ------------------------------------------------------------------------------------------------- inline size_t nip() { return 8; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> xi() { size_t nip = 8; size_t ndim = 3; xt::xtensor<double,2> xi = xt::empty<double>({nip,ndim}); xi(0,0) = -1.; xi(0,1) = -1.; xi(0,2) = -1.; xi(1,0) = +1.; xi(1,1) = -1.; xi(1,2) = -1.; xi(2,0) = +1.; xi(2,1) = +1.; xi(2,2) = -1.; xi(3,0) = -1.; xi(3,1) = +1.; xi(3,2) = -1.; xi(4,0) = -1.; xi(4,1) = -1.; xi(4,2) = +1.; xi(5,0) = +1.; xi(5,1) = -1.; xi(5,2) = +1.; xi(6,0) = +1.; xi(6,1) = +1.; xi(6,2) = +1.; xi(7,0) = -1.; xi(7,1) = +1.; xi(7,2) = +1.; return xi; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> w() { size_t nip = 8; xt::xtensor<double,1> w = xt::empty<double>({nip}); w(0) = 1.; w(1) = 1.; w(2) = 1.; w(3) = 1.; w(4) = 1.; w(5) = 1.; w(6) = 1.; w(7) = 1.; return w; } // ------------------------------------------------------------------------------------------------- } // ================================================================================================= inline Quadrature::Quadrature(const xt::xtensor<double,3>& x) : Quadrature(x, Gauss::xi(), Gauss::w()) {} // ------------------------------------------------------------------------------------------------- inline Quadrature::Quadrature( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w) : m_x(x), m_w(w), m_xi(xi) { - GOOSEFEM_ASSERT(m_x.shape()[1] == m_nne); - GOOSEFEM_ASSERT(m_x.shape()[2] == m_ndim); + GOOSEFEM_ASSERT(m_x.shape(1) == m_nne); + GOOSEFEM_ASSERT(m_x.shape(2) == m_ndim); - m_nelem = m_x.shape()[0]; + m_nelem = m_x.shape(0); m_nip = m_w.size(); - GOOSEFEM_ASSERT(m_xi.shape()[0] == m_nip); - GOOSEFEM_ASSERT(m_xi.shape()[1] == m_ndim); + GOOSEFEM_ASSERT(m_xi.shape(0) == m_nip); + GOOSEFEM_ASSERT(m_xi.shape(1) == m_ndim); GOOSEFEM_ASSERT(m_w.size() == m_nip); - m_N = xt::empty<double>({ m_nip, m_nne }); - m_dNxi = xt::empty<double>({ m_nip, m_nne, m_ndim}); - m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); - m_vol = xt::empty<double>({m_nelem, m_nip }); + m_N = xt::empty<double>({m_nip, m_nne}); + m_dNxi = xt::empty<double>({m_nip, m_nne, m_ndim}); + m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); + m_vol = xt::empty<double>({m_nelem, m_nip}); // shape functions for (size_t q = 0 ; q < m_nip ; ++q) { m_N(q,0) = .125 * (1.-m_xi(q,0)) * (1.-m_xi(q,1)) * (1.-m_xi(q,2)); m_N(q,1) = .125 * (1.+m_xi(q,0)) * (1.-m_xi(q,1)) * (1.-m_xi(q,2)); m_N(q,2) = .125 * (1.+m_xi(q,0)) * (1.+m_xi(q,1)) * (1.-m_xi(q,2)); m_N(q,3) = .125 * (1.-m_xi(q,0)) * (1.+m_xi(q,1)) * (1.-m_xi(q,2)); m_N(q,4) = .125 * (1.-m_xi(q,0)) * (1.-m_xi(q,1)) * (1.+m_xi(q,2)); m_N(q,5) = .125 * (1.+m_xi(q,0)) * (1.-m_xi(q,1)) * (1.+m_xi(q,2)); m_N(q,6) = .125 * (1.+m_xi(q,0)) * (1.+m_xi(q,1)) * (1.+m_xi(q,2)); m_N(q,7) = .125 * (1.-m_xi(q,0)) * (1.+m_xi(q,1)) * (1.+m_xi(q,2)); } // shape function gradients in local coordinates for (size_t q = 0 ; q < m_nip ; ++q) { // - dN / dxi_0 m_dNxi(q,0,0) = -.125*(1.-m_xi(q,1))*(1.-m_xi(q,2)); m_dNxi(q,1,0) = +.125*(1.-m_xi(q,1))*(1.-m_xi(q,2)); m_dNxi(q,2,0) = +.125*(1.+m_xi(q,1))*(1.-m_xi(q,2)); m_dNxi(q,3,0) = -.125*(1.+m_xi(q,1))*(1.-m_xi(q,2)); m_dNxi(q,4,0) = -.125*(1.-m_xi(q,1))*(1.+m_xi(q,2)); m_dNxi(q,5,0) = +.125*(1.-m_xi(q,1))*(1.+m_xi(q,2)); m_dNxi(q,6,0) = +.125*(1.+m_xi(q,1))*(1.+m_xi(q,2)); m_dNxi(q,7,0) = -.125*(1.+m_xi(q,1))*(1.+m_xi(q,2)); // - dN / dxi_1 m_dNxi(q,0,1) = -.125*(1.-m_xi(q,0))*(1.-m_xi(q,2)); m_dNxi(q,1,1) = -.125*(1.+m_xi(q,0))*(1.-m_xi(q,2)); m_dNxi(q,2,1) = +.125*(1.+m_xi(q,0))*(1.-m_xi(q,2)); m_dNxi(q,3,1) = +.125*(1.-m_xi(q,0))*(1.-m_xi(q,2)); m_dNxi(q,4,1) = -.125*(1.-m_xi(q,0))*(1.+m_xi(q,2)); m_dNxi(q,5,1) = -.125*(1.+m_xi(q,0))*(1.+m_xi(q,2)); m_dNxi(q,6,1) = +.125*(1.+m_xi(q,0))*(1.+m_xi(q,2)); m_dNxi(q,7,1) = +.125*(1.-m_xi(q,0))*(1.+m_xi(q,2)); // - dN / dxi_2 m_dNxi(q,0,2) = -.125*(1.-m_xi(q,0))*(1.-m_xi(q,1)); m_dNxi(q,1,2) = -.125*(1.+m_xi(q,0))*(1.-m_xi(q,1)); m_dNxi(q,2,2) = -.125*(1.+m_xi(q,0))*(1.+m_xi(q,1)); m_dNxi(q,3,2) = -.125*(1.-m_xi(q,0))*(1.+m_xi(q,1)); m_dNxi(q,4,2) = +.125*(1.-m_xi(q,0))*(1.-m_xi(q,1)); m_dNxi(q,5,2) = +.125*(1.+m_xi(q,0))*(1.-m_xi(q,1)); m_dNxi(q,6,2) = +.125*(1.+m_xi(q,0))*(1.+m_xi(q,1)); m_dNxi(q,7,2) = +.125*(1.-m_xi(q,0))*(1.+m_xi(q,1)); } // compute the shape function gradients, based on "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nip() const { return m_nip; } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<double,4> Quadrature::gradN() const +inline xt::xtensor<double,4> Quadrature::GradN() const { return m_dNx; } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xtensor<double,2>& qscalar) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) qscalar(e,q) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) qtensor(e,q,i,j) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xarray<double>& qtensor) const { - GOOSEFEM_ASSERT(qtensor.shape()[0] == m_nelem); - GOOSEFEM_ASSERT(qtensor.shape()[1] == m_nip); + GOOSEFEM_ASSERT(qtensor.shape(0) == m_nelem); + GOOSEFEM_ASSERT(qtensor.shape(1) == m_nip); xt::dynamic_shape<ptrdiff_t> strides = { static_cast<ptrdiff_t>(m_vol.strides()[0]), static_cast<ptrdiff_t>(m_vol.strides()[1])}; for (size_t i = 2; i < qtensor.shape().size(); ++i) strides.push_back(0); qtensor = xt::strided_view(m_vol, qtensor.shape(), std::move(strides), 0ul, xt::layout_type::dynamic); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::update_x(const xt::xtensor<double,3>& x) { GOOSEFEM_ASSERT(x.shape() == m_x.shape()); xt::noalias(m_x) = x; // update the shape function gradients for the new "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::compute_dN() { #pragma omp parallel { // allocate local variables xt::xtensor_fixed<double, xt::xshape<3,3>> J, Jinv; // loop over all elements (in parallel) #pragma omp for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias nodal positions auto x = xt::adapt(&m_x(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over integration points for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNxi = xt::adapt(&m_dNxi( q,0,0), xt::xshape<m_nne,m_ndim>()); auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne,m_ndim>()); // - zero-initialize J.fill(0.0); // - Jacobian for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) J(i,j) += dNxi(m,i) * x(m,j); // - determinant and inverse of the Jacobian double Jdet = inv(J, Jinv); // - shape function gradients wrt global coordinates (loops partly unrolled for efficiency) // dNx(m,i) += Jinv(i,j) * dNxi(m,j); for (size_t m = 0 ; m < m_nne ; ++m) { dNx(m,0) = Jinv(0,0) * dNxi(m,0) + Jinv(0,1) * dNxi(m,1) + Jinv(0,2) * dNxi(m,2); dNx(m,1) = Jinv(1,0) * dNxi(m,0) + Jinv(1,1) * dNxi(m,1) + Jinv(1,2) * dNxi(m,2); dNx(m,2) = Jinv(2,0) * dNxi(m,0) + Jinv(2,1) * dNxi(m,1) + Jinv(2,2) * dNxi(m,2); } // - integration point volume m_vol(e,q) = m_w(q) * Jdet; } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // zero-initialize qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate dyadic product for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) gradu(i,j) += dNx(m,i) * u(m,j); } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // zero-initialize qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate transpose of dyadic product for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) gradu(j,i) += dNx(m,i) * u(m,j); } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // zero-initialize qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto eps = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate symmetrized dyadic product for (size_t m = 0 ; m < m_nne ; ++m ){ for (size_t i = 0 ; i < m_ndim ; ++i ){ for (size_t j = 0 ; j < m_ndim ; ++j ){ eps(i,j) += dNx(m,i) * u(m,j) / 2.; eps(j,i) += dNx(m,i) * u(m,j) / 2.; } } } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize: matrix of matrices elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. mass matrix) auto M = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto N = xt::adapt(&m_N(q,0), xt::xshape<m_nne>()); auto& vol = m_vol (e,q); auto& rho = qscalar(e,q); // - evaluate scalar product, for all dimensions, and assemble // M(m*ndim+i,n*ndim+i) += N(m) * scalar * N(n) * dV for (size_t m = 0 ; m < m_nne ; ++m ){ for (size_t n = 0 ; n < m_nne ; ++n ){ M(m*m_ndim+0, n*m_ndim+0) += N(m) * rho * N(n) * vol; M(m*m_ndim+1, n*m_ndim+1) += N(m) * rho * N(n) * vol; M(m*m_ndim+2, n*m_ndim+2) += N(m) * rho * N(n) * vol; } } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); // zero-initialize output: matrix of vectors elemvec.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto f = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto sig = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) { f(m,0) += ( dNx(m,0) * sig(0,0) + dNx(m,1) * sig(1,0) + dNx(m,2) * sig(2,0) ) * vol; f(m,1) += ( dNx(m,0) * sig(0,1) + dNx(m,1) * sig(1,1) + dNx(m,2) * sig(2,1) ) * vol; f(m,2) += ( dNx(m,0) * sig(0,2) + dNx(m,1) * sig(1,2) + dNx(m,2) * sig(2,2) ) * vol; } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim, m_ndim, m_ndim})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize output: matrix of vector elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto K = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx(e,q,0,0), xt::xshape<m_nne,m_ndim>()); auto C = xt::adapt(&qtensor(e,q,0,0,0,0), xt::xshape<m_ndim,m_ndim,m_ndim,m_ndim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) for (size_t n = 0 ; n < m_nne ; ++n) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) for (size_t k = 0 ; k < m_ndim ; ++k) for (size_t l = 0 ; l < m_ndim ; ++l) K(m*m_ndim+j, n*m_ndim+k) += dNx(m,i) * C(i,j,k,l) * dNx(n,l) * vol; } } } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Quadrature::DV() const { xt::xtensor<double,2> out = xt::empty<double>({m_nelem, m_nip}); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xarray<double> Quadrature::DV(size_t rank) const { std::vector<size_t> shape = {m_nelem, m_nip}; for (size_t i = 0; i < rank; ++i) shape.push_back(static_cast<size_t>(m_ndim)); xt::xarray<double> out = xt::empty<double>(shape); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::GradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->gradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::GradN_vector_T( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->gradN_vector_T(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::SymGradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->symGradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_nne*m_ndim, m_nne*m_ndim}); this->int_N_scalar_NT_dV(qscalar, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->int_gradN_dot_tensor2_dV(qtensor, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_ndim*m_nne, m_ndim*m_nne}); this->int_gradN_dot_tensor4_dot_gradNT_dV(qtensor, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementQuad4.h b/include/GooseFEM/ElementQuad4.h index 057fb0c..b3fbbfb 100644 --- a/include/GooseFEM/ElementQuad4.h +++ b/include/GooseFEM/ElementQuad4.h @@ -1,198 +1,198 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTQUAD4_H #define GOOSEFEM_ELEMENTQUAD4_H // ------------------------------------------------------------------------------------------------- #include "config.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Quad4 { // ------------------------------------------------------------------------------------------------- inline double inv( const xt::xtensor_fixed<double, xt::xshape<2,2>>& A, xt::xtensor_fixed<double, xt::xshape<2,2>>& Ainv); // ------------------------------------------------------------------------------------------------- namespace Gauss { inline size_t nip(); // number of integration points inline xt::xtensor<double,2> xi(); // integration point coordinates (local coordinates) inline xt::xtensor<double,1> w(); // integration point weights } // ------------------------------------------------------------------------------------------------- namespace Nodal { inline size_t nip(); // number of integration points inline xt::xtensor<double,2> xi(); // integration point coordinates (local coordinates) inline xt::xtensor<double,1> w(); // integration point weights } // ------------------------------------------------------------------------------------------------- namespace MidPoint { inline size_t nip(); // number of integration points inline xt::xtensor<double,2> xi(); // integration point coordinates (local coordinates) inline xt::xtensor<double,1> w(); // integration point weights } // ------------------------------------------------------------------------------------------------- class Quadrature { public: // Fixed dimensions: // ndim = 2 - number of dimensions // nne = 4 - number of nodes per element // // Naming convention: // "elemmat" - matrices stored per element - [nelem, nne*ndim, nne*ndim] // "elemvec" - nodal vectors stored per element - [nelem, nne, ndim] // "qtensor" - integration point tensor - [nelem, nip, ndim, ndim] // "qscalar" - integration point scalar - [nelem, nip] // Constructor: integration point coordinates and weights are optional (default: Gauss) Quadrature() = default; Quadrature( const xt::xtensor<double,3>& x); Quadrature( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w); // Update the nodal positions (shape of "x" should match the earlier definition) void update_x(const xt::xtensor<double,3>& x); // Return dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t ndim() const; // number of dimension size_t nip() const; // number of integration points // Return shape function gradients - xt::xtensor<double,4> gradN() const; + xt::xtensor<double,4> GradN() const; // Return integration volume void dV(xt::xtensor<double,2>& qscalar) const; void dV(xt::xtensor<double,4>& qtensor) const; // same volume for all tensor components void dV(xt::xarray<double>& qtensor) const; // same volume for all tensor components // Dyadic product (and its transpose and symmetric part) // qtensor(i,j) += dNdx(m,i) * elemvec(m,j) void gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten // Integral of the scalar product // elemmat(m*ndim+i,n*ndim+i) += N(m) * qscalar * N(n) * dV void int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const; // overwritten // Integral of the dot product // elemvec(m,j) += dNdx(m,i) * qtensor(i,j) * dV void int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const; // overwritten // Integral of the dot product // elemmat(m*2+j, n*2+k) += dNdx(m,i) * qtensor(i,j,k,l) * dNdx(n,l) * dV void int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const; // overwritten // Auto-allocation of the functions above xt::xtensor<double,2> DV() const; xt::xarray<double> DV( size_t rank) const; xt::xtensor<double,4> GradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> GradN_vector_T( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> SymGradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,3> Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const; xt::xtensor<double,3> Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const; xt::xtensor<double,3> Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const; private: // Compute "vol" and "dNdx" based on current "x" void compute_dN(); private: // Dimensions (flexible) size_t m_nelem; // number of elements size_t m_nip; // number of integration points // Dimensions (fixed for this element type) static const size_t m_nne=4; // number of nodes per element static const size_t m_ndim=2; // number of dimensions // Data arrays xt::xtensor<double,3> m_x; // nodal positions stored per element [nelem, nne, ndim] xt::xtensor<double,1> m_w; // weight of each integration point [nip] xt::xtensor<double,2> m_xi; // local coordinate of each integration point [nip, ndim] xt::xtensor<double,2> m_N; // shape functions [nip, nne] xt::xtensor<double,3> m_dNxi; // shape function grad. w.r.t. local coor. [nip, nne, ndim] xt::xtensor<double,4> m_dNx; // shape function grad. w.r.t. global coor. [nelem, nip, nne, ndim] xt::xtensor<double,2> m_vol; // integration point volume [nelem, nip] }; // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #include "ElementQuad4.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementQuad4.hpp b/include/GooseFEM/ElementQuad4.hpp index ab35199..6b1225e 100644 --- a/include/GooseFEM/ElementQuad4.hpp +++ b/include/GooseFEM/ElementQuad4.hpp @@ -1,692 +1,692 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTQUAD4_HPP #define GOOSEFEM_ELEMENTQUAD4_HPP // ------------------------------------------------------------------------------------------------- #include "ElementQuad4.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Quad4 { // ================================================================================================= inline double inv( const xt::xtensor_fixed<double, xt::xshape<2,2>>& A, xt::xtensor_fixed<double, xt::xshape<2,2>>& Ainv) { // compute determinant double det = A(0,0) * A(1,1) - A(0,1) * A(1,0); // compute inverse Ainv(0,0) = A(1,1) / det; Ainv(0,1) = -1. * A(0,1) / det; Ainv(1,0) = -1. * A(1,0) / det; Ainv(1,1) = A(0,0) / det; return det; } // ================================================================================================= namespace Gauss { // ------------------------------------------------------------------------------------------------- inline size_t nip() { return 4; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> xi() { size_t nip = 4; size_t ndim = 2; xt::xtensor<double,2> xi = xt::empty<double>({nip,ndim}); xi(0,0) = -1./std::sqrt(3.); xi(0,1) = -1./std::sqrt(3.); xi(1,0) = +1./std::sqrt(3.); xi(1,1) = -1./std::sqrt(3.); xi(2,0) = +1./std::sqrt(3.); xi(2,1) = +1./std::sqrt(3.); xi(3,0) = -1./std::sqrt(3.); xi(3,1) = +1./std::sqrt(3.); return xi; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> w() { size_t nip = 4; xt::xtensor<double,1> w = xt::empty<double>({nip}); w(0) = 1.; w(1) = 1.; w(2) = 1.; w(3) = 1.; return w; } // ------------------------------------------------------------------------------------------------- } // ================================================================================================= namespace Nodal { // ------------------------------------------------------------------------------------------------- inline size_t nip() { return 4; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> xi() { size_t nip = 4; size_t ndim = 2; xt::xtensor<double,2> xi = xt::empty<double>({nip,ndim}); xi(0,0) = -1.; xi(0,1) = -1.; xi(1,0) = +1.; xi(1,1) = -1.; xi(2,0) = +1.; xi(2,1) = +1.; xi(3,0) = -1.; xi(3,1) = +1.; return xi; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> w() { size_t nip = 4; xt::xtensor<double,1> w = xt::empty<double>({nip}); w(0) = 1.; w(1) = 1.; w(2) = 1.; w(3) = 1.; return w; } // ------------------------------------------------------------------------------------------------- } // ================================================================================================= namespace MidPoint { // ------------------------------------------------------------------------------------------------- inline size_t nip() { return 1; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> xi() { size_t nip = 1; size_t ndim = 2; xt::xtensor<double,2> xi = xt::empty<double>({nip,ndim}); xi(0,0) = 0.; xi(0,1) = 0.; return xi; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> w() { size_t nip = 1; xt::xtensor<double,1> w = xt::empty<double>({nip}); w(0) = 1.; return w; } // ------------------------------------------------------------------------------------------------- } // ================================================================================================= inline Quadrature::Quadrature(const xt::xtensor<double,3>& x) : Quadrature(x, Gauss::xi(), Gauss::w()) {} // ------------------------------------------------------------------------------------------------- inline Quadrature::Quadrature( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w) : m_x(x), m_w(w), m_xi(xi) { - GOOSEFEM_ASSERT(m_x.shape()[1] == m_nne); - GOOSEFEM_ASSERT(m_x.shape()[2] == m_ndim); + GOOSEFEM_ASSERT(m_x.shape(1) == m_nne); + GOOSEFEM_ASSERT(m_x.shape(2) == m_ndim); - m_nelem = m_x.shape()[0]; + m_nelem = m_x.shape(0); m_nip = m_w.size(); - GOOSEFEM_ASSERT(m_xi.shape()[0] == m_nip); - GOOSEFEM_ASSERT(m_xi.shape()[1] == m_ndim); + GOOSEFEM_ASSERT(m_xi.shape(0) == m_nip); + GOOSEFEM_ASSERT(m_xi.shape(1) == m_ndim); GOOSEFEM_ASSERT(m_w.size() == m_nip); - m_N = xt::empty<double>({ m_nip, m_nne }); - m_dNxi = xt::empty<double>({ m_nip, m_nne, m_ndim}); - m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); - m_vol = xt::empty<double>({m_nelem, m_nip }); + m_N = xt::empty<double>({m_nip, m_nne}); + m_dNxi = xt::empty<double>({m_nip, m_nne, m_ndim}); + m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); + m_vol = xt::empty<double>({m_nelem, m_nip}); // shape functions for (size_t q = 0 ; q < m_nip ; ++q) { m_N(q,0) = .25 * (1.-m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,1) = .25 * (1.+m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,2) = .25 * (1.+m_xi(q,0)) * (1.+m_xi(q,1)); m_N(q,3) = .25 * (1.-m_xi(q,0)) * (1.+m_xi(q,1)); } // shape function gradients in local coordinates for (size_t q = 0 ; q < m_nip ; ++q) { // - dN / dxi_0 m_dNxi(q,0,0) = -.25*(1.-m_xi(q,1)); m_dNxi(q,1,0) = +.25*(1.-m_xi(q,1)); m_dNxi(q,2,0) = +.25*(1.+m_xi(q,1)); m_dNxi(q,3,0) = -.25*(1.+m_xi(q,1)); // - dN / dxi_1 m_dNxi(q,0,1) = -.25*(1.-m_xi(q,0)); m_dNxi(q,1,1) = -.25*(1.+m_xi(q,0)); m_dNxi(q,2,1) = +.25*(1.+m_xi(q,0)); m_dNxi(q,3,1) = +.25*(1.-m_xi(q,0)); } // compute the shape function gradients, based on "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t Quadrature::nip() const { return m_nip; } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<double,4> Quadrature::gradN() const +inline xt::xtensor<double,4> Quadrature::GradN() const { return m_dNx; } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xtensor<double,2>& qscalar) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) qscalar(e,q) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) qtensor(e,q,i,j) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::dV(xt::xarray<double>& qtensor) const { - GOOSEFEM_ASSERT(qtensor.shape()[0] == m_nelem); - GOOSEFEM_ASSERT(qtensor.shape()[1] == m_nip); + GOOSEFEM_ASSERT(qtensor.shape(0) == m_nelem); + GOOSEFEM_ASSERT(qtensor.shape(1) == m_nip); xt::dynamic_shape<ptrdiff_t> strides = { static_cast<ptrdiff_t>(m_vol.strides()[0]), static_cast<ptrdiff_t>(m_vol.strides()[1])}; for (size_t i = 2; i < qtensor.shape().size(); ++i) strides.push_back(0); qtensor = xt::strided_view(m_vol, qtensor.shape(), std::move(strides), 0ul, xt::layout_type::dynamic); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::update_x(const xt::xtensor<double,3>& x) { GOOSEFEM_ASSERT(x.shape() == m_x.shape()); xt::noalias(m_x) = x; // update the shape function gradients for the new "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline void Quadrature::compute_dN() { #pragma omp parallel { // allocate local variables xt::xtensor_fixed<double, xt::xshape<2,2>> J, Jinv; // loop over all elements (in parallel) #pragma omp for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias nodal positions auto x = xt::adapt(&m_x(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over integration points for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNxi = xt::adapt(&m_dNxi( q,0,0), xt::xshape<m_nne,m_ndim>()); auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne,m_ndim>()); // - Jacobian (loops unrolled for efficiency) // J(i,j) += dNxi(m,i) * x(m,j); J(0,0) = dNxi(0,0)*x(0,0) + dNxi(1,0)*x(1,0) + dNxi(2,0)*x(2,0) + dNxi(3,0)*x(3,0); J(0,1) = dNxi(0,0)*x(0,1) + dNxi(1,0)*x(1,1) + dNxi(2,0)*x(2,1) + dNxi(3,0)*x(3,1); J(1,0) = dNxi(0,1)*x(0,0) + dNxi(1,1)*x(1,0) + dNxi(2,1)*x(2,0) + dNxi(3,1)*x(3,0); J(1,1) = dNxi(0,1)*x(0,1) + dNxi(1,1)*x(1,1) + dNxi(2,1)*x(2,1) + dNxi(3,1)*x(3,1); // - determinant and inverse of the Jacobian double Jdet = inv(J, Jinv); // - shape function gradients wrt global coordinates (loops partly unrolled for efficiency) // dNx(m,i) += Jinv(i,j) * dNxi(m,j); for (size_t m = 0 ; m < m_nne ; ++m) { dNx(m,0) = Jinv(0,0) * dNxi(m,0) + Jinv(0,1) * dNxi(m,1); dNx(m,1) = Jinv(1,0) * dNxi(m,0) + Jinv(1,1) * dNxi(m,1); } // - integration point volume m_vol(e,q) = m_w(q) * Jdet; } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate dyadic product (loops unrolled for efficiency) // gradu(i,j) += dNx(m,i) * u(m,j) gradu(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); gradu(0,1) = dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1); gradu(1,0) = dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0); gradu(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate transpose of dyadic product (loops unrolled for efficiency) // gradu(j,i) += dNx(m,i) * u(m,j) gradu(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); gradu(1,0) = dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1); gradu(0,1) = dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0); gradu(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto eps = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); // - evaluate symmetrized dyadic product (loops unrolled for efficiency) // gradu(i,j) += dNx(m,i) * u(m,j) // eps (j,i) = 0.5 * ( gradu(i,j) + gradu(j,i) ) eps(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); eps(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); eps(0,1) = ( dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1) + dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0) ) * 0.5; eps(1,0) = eps(0,1); } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize: matrix of matrices elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. mass matrix) auto M = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto N = xt::adapt(&m_N(q,0), xt::xshape<m_nne>()); auto& vol = m_vol (e,q); auto& rho = qscalar(e,q); // - evaluate scalar product, for all dimensions, and assemble // M(m*ndim+i,n*ndim+i) += N(m) * scalar * N(n) * dV for (size_t m = 0 ; m < m_nne ; ++m ){ for (size_t n = 0 ; n < m_nne ; ++n ){ M(m*m_ndim+0, n*m_ndim+0) += N(m) * rho * N(n) * vol; M(m*m_ndim+1, n*m_ndim+1) += N(m) * rho * N(n) * vol; } } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); // zero-initialize output: matrix of vectors elemvec.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto f = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto sig = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_ndim,m_ndim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) { f(m,0) += ( dNx(m,0) * sig(0,0) + dNx(m,1) * sig(1,0) ) * vol; f(m,1) += ( dNx(m,0) * sig(0,1) + dNx(m,1) * sig(1,1) ) * vol; } } } } // ------------------------------------------------------------------------------------------------- inline void Quadrature::int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_ndim, m_ndim, m_ndim, m_ndim})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize output: matrix of vector elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto K = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx(e,q,0,0), xt::xshape<m_nne,m_ndim>()); auto C = xt::adapt(&qtensor(e,q,0,0,0,0), xt::xshape<m_ndim,m_ndim,m_ndim,m_ndim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) for (size_t n = 0 ; n < m_nne ; ++n) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) for (size_t k = 0 ; k < m_ndim ; ++k) for (size_t l = 0 ; l < m_ndim ; ++l) K(m*m_ndim+j, n*m_ndim+k) += dNx(m,i) * C(i,j,k,l) * dNx(n,l) * vol; } } } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Quadrature::DV() const { xt::xtensor<double,2> out = xt::empty<double>({m_nelem, m_nip}); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xarray<double> Quadrature::DV(size_t rank) const { std::vector<size_t> shape = {m_nelem, m_nip}; for (size_t i = 0; i < rank; ++i) shape.push_back(static_cast<size_t>(m_ndim)); xt::xarray<double> out = xt::empty<double>(shape); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::GradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->gradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::GradN_vector_T( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->gradN_vector_T(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> Quadrature::SymGradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_ndim, m_ndim}); this->symGradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_nne*m_ndim, m_nne*m_ndim}); this->int_N_scalar_NT_dV(qscalar, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->int_gradN_dot_tensor2_dV(qtensor, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Quadrature::Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_ndim*m_nne, m_ndim*m_nne}); this->int_gradN_dot_tensor4_dot_gradNT_dV(qtensor, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementQuad4Axisymmetric.hpp b/include/GooseFEM/ElementQuad4Axisymmetric.hpp index 2bbcd8c..3e97c3e 100644 --- a/include/GooseFEM/ElementQuad4Axisymmetric.hpp +++ b/include/GooseFEM/ElementQuad4Axisymmetric.hpp @@ -1,583 +1,583 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTQUADAXISYMMETRIC_HPP #define GOOSEFEM_ELEMENTQUADAXISYMMETRIC_HPP // ------------------------------------------------------------------------------------------------- #include "ElementQuad4Axisymmetric.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Quad4 { // ================================================================================================= inline QuadratureAxisymmetric::QuadratureAxisymmetric(const xt::xtensor<double,3>& x) : QuadratureAxisymmetric(x, Gauss::xi(), Gauss::w()) {} // ------------------------------------------------------------------------------------------------- inline QuadratureAxisymmetric::QuadratureAxisymmetric( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w) : m_x(x), m_w(w), m_xi(xi) { - GOOSEFEM_ASSERT(m_x.shape()[1] == m_nne); - GOOSEFEM_ASSERT(m_x.shape()[2] == m_ndim); + GOOSEFEM_ASSERT(m_x.shape(1) == m_nne); + GOOSEFEM_ASSERT(m_x.shape(2) == m_ndim); - m_nelem = m_x.shape()[0]; - m_nip = m_w.size(); + m_nelem = m_x.shape(0); + m_nip = m_w.size(); - GOOSEFEM_ASSERT(m_xi.shape()[0] == m_nip); - GOOSEFEM_ASSERT(m_xi.shape()[1] == m_ndim); + GOOSEFEM_ASSERT(m_xi.shape(0) == m_nip); + GOOSEFEM_ASSERT(m_xi.shape(1) == m_ndim); GOOSEFEM_ASSERT(m_w.size() == m_nip); - m_N = xt::empty<double>({ m_nip, m_nne }); - m_dNxi = xt::empty<double>({ m_nip, m_nne, m_ndim }); - m_B = xt::empty<double>({m_nelem, m_nip, m_nne, m_tdim, m_tdim, m_tdim}); - m_vol = xt::empty<double>({m_nelem, m_nip }); + m_N = xt::empty<double>({m_nip, m_nne}); + m_dNxi = xt::empty<double>({m_nip, m_nne, m_ndim}); + m_B = xt::empty<double>({m_nelem, m_nip, m_nne, m_tdim, m_tdim, m_tdim}); + m_vol = xt::empty<double>({m_nelem, m_nip}); // shape functions for (size_t q = 0 ; q < m_nip ; ++q) { m_N(q,0) = .25 * (1.-m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,1) = .25 * (1.+m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,2) = .25 * (1.+m_xi(q,0)) * (1.+m_xi(q,1)); m_N(q,3) = .25 * (1.-m_xi(q,0)) * (1.+m_xi(q,1)); } // shape function gradients in local coordinates for (size_t q = 0 ; q < m_nip ; ++q) { // - dN / dxi_0 m_dNxi(q,0,0) = -.25*(1.-m_xi(q,1)); m_dNxi(q,1,0) = +.25*(1.-m_xi(q,1)); m_dNxi(q,2,0) = +.25*(1.+m_xi(q,1)); m_dNxi(q,3,0) = -.25*(1.+m_xi(q,1)); // - dN / dxi_1 m_dNxi(q,0,1) = -.25*(1.-m_xi(q,0)); m_dNxi(q,1,1) = -.25*(1.+m_xi(q,0)); m_dNxi(q,2,1) = +.25*(1.+m_xi(q,0)); m_dNxi(q,3,1) = +.25*(1.-m_xi(q,0)); } // compute the shape function gradients, based on "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline size_t QuadratureAxisymmetric::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t QuadratureAxisymmetric::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t QuadratureAxisymmetric::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t QuadratureAxisymmetric::nip() const { return m_nip; } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::dV(xt::xtensor<double,2>& qscalar) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) qscalar(e,q) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::dV(xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) for (size_t i = 0 ; i < m_tdim ; ++i) for (size_t j = 0 ; j < m_tdim ; ++j) qtensor(e,q,i,j) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::dV(xt::xarray<double>& qtensor) const { - GOOSEFEM_ASSERT(qtensor.shape()[0] == m_nelem); - GOOSEFEM_ASSERT(qtensor.shape()[1] == m_nip); + GOOSEFEM_ASSERT(qtensor.shape(0) == m_nelem); + GOOSEFEM_ASSERT(qtensor.shape(1) == m_nip); xt::dynamic_shape<ptrdiff_t> strides = { static_cast<ptrdiff_t>(m_vol.strides()[0]), static_cast<ptrdiff_t>(m_vol.strides()[1])}; for (size_t i = 2; i < qtensor.shape().size(); ++i) strides.push_back(0); qtensor = xt::strided_view(m_vol, qtensor.shape(), std::move(strides), 0ul, xt::layout_type::dynamic); } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::update_x(const xt::xtensor<double,3>& x) { GOOSEFEM_ASSERT(x.shape() == m_x.shape()); xt::noalias(m_x) = x; // update the shape function gradients for the new "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::compute_dN() { // zero-initialize full B-matrix (most component remain zero, and are not written) m_B.fill(0.0); #pragma omp parallel { // allocate local variables xt::xtensor_fixed<double, xt::xshape<2,2>> J, Jinv; // loop over all elements (in parallel) #pragma omp for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias nodal positions auto x = xt::adapt(&m_x(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over integration points for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNxi = xt::adapt(&m_dNxi( q,0,0 ), xt::xshape<m_nne,m_ndim>()); auto B = xt::adapt(&m_B (e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto N = xt::adapt(&m_N ( q,0 ), xt::xshape<m_nne>()); // - Jacobian (loops unrolled for efficiency) // J(i,j) += dNxi(m,i) * x(m,j); J(0,0) = dNxi(0,0)*x(0,0) + dNxi(1,0)*x(1,0) + dNxi(2,0)*x(2,0) + dNxi(3,0)*x(3,0); J(0,1) = dNxi(0,0)*x(0,1) + dNxi(1,0)*x(1,1) + dNxi(2,0)*x(2,1) + dNxi(3,0)*x(3,1); J(1,0) = dNxi(0,1)*x(0,0) + dNxi(1,1)*x(1,0) + dNxi(2,1)*x(2,0) + dNxi(3,1)*x(3,0); J(1,1) = dNxi(0,1)*x(0,1) + dNxi(1,1)*x(1,1) + dNxi(2,1)*x(2,1) + dNxi(3,1)*x(3,1); // - determinant and inverse of the Jacobian double Jdet = inv(J, Jinv); // - get radius for computation of volume double rq = N(0)*x(0,1) + N(1)*x(1,1) + N(2)*x(2,1) + N(3)*x(3,1); // - compute the B matrix (loops partly unrolled for efficiency) // N.B. "dNx(m,i) += Jinv(i,j) * dNxi(m,j);" for (size_t m = 0; m < m_nne; ++m) { B(m,0,0,0) = Jinv(1,0) * dNxi(m,0) + Jinv(1,1) * dNxi(m,1); // B(m, r, r, r) = dNdx(m,1) B(m,0,2,2) = Jinv(1,0) * dNxi(m,0) + Jinv(1,1) * dNxi(m,1); // B(m, r, z, z) = dNdx(m,1) B(m,1,1,0) = 1./rq * N(m); // B(m, t, t, r) B(m,2,0,0) = Jinv(0,0) * dNxi(m,0) + Jinv(0,1) * dNxi(m,1); // B(m, z, r, r) = dNdx(m,0) B(m,2,2,2) = Jinv(0,0) * dNxi(m,0) + Jinv(0,1) * dNxi(m,1); // B(m, z, z, z) = dNdx(m,0) } // - integration point volume m_vol(e, q) = m_w(q) * Jdet * 2. * M_PI * rq; } } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto B = xt::adapt(&m_B (e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0 ), xt::xshape<m_tdim,m_tdim>()); // - evaluate dyadic product (loops unrolled for efficiency) // gradu(i,j) += B(m,i,j,k) * u(m,perm(k)) // (where perm(0) = 1, perm(2) = 0) gradu(0,0) = B(0,0,0,0)*u(0,1) + B(1,0,0,0)*u(1,1) + B(2,0,0,0)*u(2,1) + B(3,0,0,0)*u(3,1); gradu(1,1) = B(0,1,1,0)*u(0,1) + B(1,1,1,0)*u(1,1) + B(2,1,1,0)*u(2,1) + B(3,1,1,0)*u(3,1); gradu(2,2) = B(0,2,2,2)*u(0,0) + B(1,2,2,2)*u(1,0) + B(2,2,2,2)*u(2,0) + B(3,2,2,2)*u(3,0); gradu(0,2) = B(0,0,2,2)*u(0,0) + B(1,0,2,2)*u(1,0) + B(2,0,2,2)*u(2,0) + B(3,0,2,2)*u(3,0); gradu(2,0) = B(0,2,0,0)*u(0,1) + B(1,2,0,0)*u(1,1) + B(2,2,0,0)*u(2,1) + B(3,2,0,0)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto B = xt::adapt(&m_B (e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0 ), xt::xshape<m_tdim,m_tdim>()); // - evaluate transpose of dyadic product (loops unrolled for efficiency) // gradu(j,i) += B(m,i,j,k) * u(m,perm(k)) // (where perm(0) = 1, perm(2) = 0) gradu(0,0) = B(0,0,0,0)*u(0,1) + B(1,0,0,0)*u(1,1) + B(2,0,0,0)*u(2,1) + B(3,0,0,0)*u(3,1); gradu(1,1) = B(0,1,1,0)*u(0,1) + B(1,1,1,0)*u(1,1) + B(2,1,1,0)*u(2,1) + B(3,1,1,0)*u(3,1); gradu(2,2) = B(0,2,2,2)*u(0,0) + B(1,2,2,2)*u(1,0) + B(2,2,2,2)*u(2,0) + B(3,2,2,2)*u(3,0); gradu(2,0) = B(0,0,2,2)*u(0,0) + B(1,0,2,2)*u(1,0) + B(2,0,2,2)*u(2,0) + B(3,0,2,2)*u(3,0); gradu(0,2) = B(0,2,0,0)*u(0,1) + B(1,2,0,0)*u(1,1) + B(2,2,0,0)*u(2,1) + B(3,2,0,0)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto B = xt::adapt(&m_B (e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto eps = xt::adapt(&qtensor(e,q,0,0 ), xt::xshape<m_tdim,m_tdim>()); // - evaluate symmetrized dyadic product (loops unrolled for efficiency) // gradu(j,i) += B(m,i,j,k) * u(m,perm(k)) // eps (j,i) = 0.5 * ( gradu(i,j) + gradu(j,i) ) // (where perm(0) = 1, perm(2) = 0) eps(0,0) = B(0,0,0,0)*u(0,1) + B(1,0,0,0)*u(1,1) + B(2,0,0,0)*u(2,1) + B(3,0,0,0)*u(3,1); eps(1,1) = B(0,1,1,0)*u(0,1) + B(1,1,1,0)*u(1,1) + B(2,1,1,0)*u(2,1) + B(3,1,1,0)*u(3,1); eps(2,2) = B(0,2,2,2)*u(0,0) + B(1,2,2,2)*u(1,0) + B(2,2,2,2)*u(2,0) + B(3,2,2,2)*u(3,0); eps(2,0) = ( B(0,0,2,2)*u(0,0) + B(1,0,2,2)*u(1,0) + B(2,0,2,2)*u(2,0) + B(3,0,2,2)*u(3,0) + B(0,2,0,0)*u(0,1) + B(1,2,0,0)*u(1,1) + B(2,2,0,0)*u(2,1) + B(3,2,0,0)*u(3,1) ) * 0.5; eps(0,2) = eps(2,0); } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize: matrix of matrices elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. mass matrix) auto M = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto N = xt::adapt(&m_N(q,0), xt::xshape<m_nne>()); auto& vol = m_vol (e,q); auto& rho = qscalar(e,q); // - evaluate scalar product, for all dimensions, and assemble // M(m*ndim+i,n*ndim+i) += N(m) * scalar * N(n) * dV for (size_t m = 0 ; m < m_nne ; ++m ){ for (size_t n = 0 ; n < m_nne ; ++n ){ M(m*m_ndim+0, n*m_ndim+0) += N(m) * rho * N(n) * vol; M(m*m_ndim+1, n*m_ndim+1) += N(m) * rho * N(n) * vol; } } } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); // zero-initialize output: matrix of vectors elemvec.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto f = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto B = xt::adapt(&m_B(e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto sig = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_tdim,m_tdim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble // f(m,i) += B(m,i,j,perm(k)) * sig(i,j) * dV // (where perm(0) = 1, perm(2) = 0) for (size_t m = 0 ; m < m_nne ; ++m) { f(m,0) += ( B(m,2,2,2)*sig(2,2) + B(m,0,2,2)*sig(0,2) ) * vol; f(m,1) += ( B(m,0,0,0)*sig(0,0) + B(m,1,1,0)*sig(1,1) + B(m,2,0,0)*sig(2,0) ) * vol; } } } } // ------------------------------------------------------------------------------------------------- inline void QuadratureAxisymmetric::int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim, m_tdim, m_tdim})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize output: matrix of vector elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto K = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto B = xt::adapt(&m_B(e,q,0,0,0,0), xt::xshape<m_nne,m_tdim,m_tdim,m_tdim>()); auto C = xt::adapt(&qtensor(e,q,0,0,0,0), xt::xshape<m_tdim,m_tdim,m_tdim,m_tdim>()); auto& vol = m_vol(e,q); // - compute product: // K(m*m_ndim+perm(c), n*m_ndim+perm(f)) = B(m,a,b,c) * C(a,b,d,e) * B(n,e,d,f) * vol; // (where perm(0) = 1, perm(2) = 0) for (size_t m = 0 ; m < m_nne ; ++m) { for (size_t n = 0 ; n < m_nne ; ++n) { K(m*m_ndim+1, n*m_ndim+1) += B(m,0,0,0) * C(0,0,0,0) * B(n,0,0,0) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,0,0,0) * C(0,0,1,1) * B(n,1,1,0) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,0,0,0) * C(0,0,2,2) * B(n,2,2,2) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,0,0,0) * C(0,0,2,0) * B(n,0,2,2) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,0,0,0) * C(0,0,0,2) * B(n,2,0,0) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,1,1,0) * C(1,1,0,0) * B(n,0,0,0) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,1,1,0) * C(1,1,1,1) * B(n,1,1,0) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,1,1,0) * C(1,1,2,2) * B(n,2,2,2) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,1,1,0) * C(1,1,2,0) * B(n,0,2,2) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,1,1,0) * C(1,1,0,2) * B(n,2,0,0) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,2,2,2) * C(2,2,0,0) * B(n,0,0,0) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,2,2,2) * C(2,2,1,1) * B(n,1,1,0) * vol; K(m*m_ndim+0, n*m_ndim+0) += B(m,2,2,2) * C(2,2,2,2) * B(n,2,2,2) * vol; K(m*m_ndim+0, n*m_ndim+0) += B(m,2,2,2) * C(2,2,2,0) * B(n,0,2,2) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,2,2,2) * C(2,2,0,2) * B(n,2,0,0) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,0,2,2) * C(0,2,0,0) * B(n,0,0,0) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,0,2,2) * C(0,2,1,1) * B(n,1,1,0) * vol; K(m*m_ndim+0, n*m_ndim+0) += B(m,0,2,2) * C(0,2,2,2) * B(n,2,2,2) * vol; K(m*m_ndim+0, n*m_ndim+0) += B(m,0,2,2) * C(0,2,2,0) * B(n,0,2,2) * vol; K(m*m_ndim+0, n*m_ndim+1) += B(m,0,2,2) * C(0,2,0,2) * B(n,2,0,0) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,2,0,0) * C(2,0,0,0) * B(n,0,0,0) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,2,0,0) * C(2,0,1,1) * B(n,1,1,0) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,2,0,0) * C(2,0,2,2) * B(n,2,2,2) * vol; K(m*m_ndim+1, n*m_ndim+0) += B(m,2,0,0) * C(2,0,2,0) * B(n,0,2,2) * vol; K(m*m_ndim+1, n*m_ndim+1) += B(m,2,0,0) * C(2,0,0,2) * B(n,2,0,0) * vol; } } } } } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> QuadratureAxisymmetric::DV() const { xt::xtensor<double,2> out = xt::empty<double>({m_nelem, m_nip}); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xarray<double> QuadratureAxisymmetric::DV(size_t rank) const { std::vector<size_t> shape = {m_nelem, m_nip}; for (size_t i = 0; i < rank; ++i) shape.push_back(static_cast<size_t>(m_tdim)); xt::xarray<double> out = xt::empty<double>(shape); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadratureAxisymmetric::GradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->gradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadratureAxisymmetric::GradN_vector_T( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->gradN_vector_T(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadratureAxisymmetric::SymGradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->symGradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadratureAxisymmetric::Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_nne*m_ndim, m_nne*m_ndim}); this->int_N_scalar_NT_dV(qscalar, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadratureAxisymmetric::Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->int_gradN_dot_tensor2_dV(qtensor, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadratureAxisymmetric::Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_ndim*m_nne, m_ndim*m_nne}); this->int_gradN_dot_tensor4_dot_gradNT_dV(qtensor, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementQuad4Planar.h b/include/GooseFEM/ElementQuad4Planar.h index 39feebd..4ae90a7 100644 --- a/include/GooseFEM/ElementQuad4Planar.h +++ b/include/GooseFEM/ElementQuad4Planar.h @@ -1,175 +1,175 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTQUAD4PLANAR_H #define GOOSEFEM_ELEMENTQUAD4PLANAR_H // ------------------------------------------------------------------------------------------------- #include "config.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Quad4 { // ------------------------------------------------------------------------------------------------- class QuadraturePlanar { public: // Fixed dimensions: // ndim = 2 - number of dimensions // nne = 4 - number of nodes per element // tdim = 3 - number of dimensions of tensors // // Naming convention: // "elemmat" - matrices stored per element - [nelem, nne*ndim, nne*ndim] // "elemvec" - nodal vectors stored per element - [nelem, nne, ndim] // "qtensor" - integration point tensor - [nelem, nip, tdim, tdim] // "qscalar" - integration point scalar - [nelem, nip] // Constructor: integration point coordinates and weights are optional (default: Gauss) QuadraturePlanar() = default; QuadraturePlanar( const xt::xtensor<double,3>& x, double thick=1.); QuadraturePlanar( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w, double thick=1.); // Update the nodal positions (shape of "x" should match the earlier definition) void update_x(const xt::xtensor<double,3>& x); // Return dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t ndim() const; // number of dimension size_t nip() const; // number of integration points // Return shape function gradients - xt::xtensor<double,4> gradN() const; + xt::xtensor<double,4> GradN() const; // Return integration volume void dV(xt::xtensor<double,2>& qscalar) const; void dV(xt::xtensor<double,4>& qtensor) const; // same volume for all tensor components void dV(xt::xarray<double>& qtensor) const; // same volume for all tensor components // Dyadic product (and its transpose and symmetric part) // qtensor(i,j) += dNdx(m,i) * elemvec(m,j) void gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten void symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const; // overwritten // Integral of the scalar product // elemmat(m*ndim+i,n*ndim+i) += N(m) * qscalar * N(n) * dV void int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const; // overwritten // Integral of the dot product // elemvec(m,j) += dNdx(m,i) * qtensor(i,j) * dV void int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const; // overwritten // Integral of the dot product // elemmat(m*2+j, n*2+k) += dNdx(m,i) * qtensor(i,j,k,l) * dNdx(n,l) * dV void int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const; // overwritten // Auto-allocation of the functions above xt::xtensor<double,2> DV() const; xt::xarray<double> DV( size_t rank) const; xt::xtensor<double,4> GradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> GradN_vector_T( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,4> SymGradN_vector( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,3> Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const; xt::xtensor<double,3> Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const; xt::xtensor<double,3> Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const; private: // Compute "vol" and "dNdx" based on current "x" void compute_dN(); private: // Dimensions (flexible) size_t m_nelem; // number of elements size_t m_nip; // number of integration points // Dimensions (fixed for this element type) static const size_t m_nne=4; // number of nodes per element static const size_t m_ndim=2; // number of dimensions static const size_t m_tdim=3; // number of dimensions of tensors // Data arrays xt::xtensor<double,3> m_x; // nodal positions stored per element [nelem, nne, ndim] xt::xtensor<double,1> m_w; // weight of each integration point [nip] xt::xtensor<double,2> m_xi; // local coordinate of each integration point [nip, ndim] xt::xtensor<double,2> m_N; // shape functions [nip, nne] xt::xtensor<double,3> m_dNxi; // shape function grad. w.r.t. local coor. [nip, nne, ndim] xt::xtensor<double,4> m_dNx; // shape function grad. w.r.t. global coor. [nelem, nip, nne, ndim] xt::xtensor<double,2> m_vol; // integration point volume [nelem, nip] // Thickness double m_thick; }; // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #include "ElementQuad4Planar.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/ElementQuad4Planar.hpp b/include/GooseFEM/ElementQuad4Planar.hpp index bf91aed..7ecfafe 100644 --- a/include/GooseFEM/ElementQuad4Planar.hpp +++ b/include/GooseFEM/ElementQuad4Planar.hpp @@ -1,543 +1,543 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_ELEMENTQUAD4PLANAR_HPP #define GOOSEFEM_ELEMENTQUAD4PLANAR_HPP // ------------------------------------------------------------------------------------------------- #include "ElementQuad4Planar.h" // ================================================================================================= namespace GooseFEM { namespace Element { namespace Quad4 { // ================================================================================================= inline QuadraturePlanar::QuadraturePlanar(const xt::xtensor<double,3>& x, double thick) : QuadraturePlanar(x, Gauss::xi(), Gauss::w(), thick) {} // ------------------------------------------------------------------------------------------------- inline QuadraturePlanar::QuadraturePlanar( const xt::xtensor<double,3>& x, const xt::xtensor<double,2>& xi, const xt::xtensor<double,1>& w, double thick) : m_x(x), m_w(w), m_xi(xi), m_thick(thick) { - GOOSEFEM_ASSERT(m_x.shape()[1] == m_nne); - GOOSEFEM_ASSERT(m_x.shape()[2] == m_ndim); + GOOSEFEM_ASSERT(m_x.shape(1) == m_nne); + GOOSEFEM_ASSERT(m_x.shape(2) == m_ndim); - m_nelem = m_x.shape()[0]; - m_nip = m_w.size(); + m_nelem = m_x.shape(0); + m_nip = m_w.size(); - GOOSEFEM_ASSERT(m_xi.shape()[0] == m_nip); - GOOSEFEM_ASSERT(m_xi.shape()[1] == m_ndim); + GOOSEFEM_ASSERT(m_xi.shape(0) == m_nip); + GOOSEFEM_ASSERT(m_xi.shape(1) == m_ndim); GOOSEFEM_ASSERT(m_w.size() == m_nip); - m_N = xt::empty<double>({ m_nip, m_nne }); - m_dNxi = xt::empty<double>({ m_nip, m_nne, m_ndim}); - m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); - m_vol = xt::empty<double>({m_nelem, m_nip }); + m_N = xt::empty<double>({m_nip, m_nne}); + m_dNxi = xt::empty<double>({m_nip, m_nne, m_ndim}); + m_dNx = xt::empty<double>({m_nelem, m_nip, m_nne, m_ndim}); + m_vol = xt::empty<double>({m_nelem, m_nip}); // shape functions for (size_t q = 0 ; q < m_nip ; ++q) { m_N(q,0) = .25 * (1.-m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,1) = .25 * (1.+m_xi(q,0)) * (1.-m_xi(q,1)); m_N(q,2) = .25 * (1.+m_xi(q,0)) * (1.+m_xi(q,1)); m_N(q,3) = .25 * (1.-m_xi(q,0)) * (1.+m_xi(q,1)); } // shape function gradients in local coordinates for (size_t q = 0 ; q < m_nip ; ++q) { // - dN / dxi_0 m_dNxi(q,0,0) = -.25*(1.-m_xi(q,1)); m_dNxi(q,1,0) = +.25*(1.-m_xi(q,1)); m_dNxi(q,2,0) = +.25*(1.+m_xi(q,1)); m_dNxi(q,3,0) = -.25*(1.+m_xi(q,1)); // - dN / dxi_1 m_dNxi(q,0,1) = -.25*(1.-m_xi(q,0)); m_dNxi(q,1,1) = -.25*(1.+m_xi(q,0)); m_dNxi(q,2,1) = +.25*(1.+m_xi(q,0)); m_dNxi(q,3,1) = +.25*(1.-m_xi(q,0)); } // compute the shape function gradients, based on "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline size_t QuadraturePlanar::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t QuadraturePlanar::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t QuadraturePlanar::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t QuadraturePlanar::nip() const { return m_nip; } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<double,4> QuadraturePlanar::gradN() const +inline xt::xtensor<double,4> QuadraturePlanar::GradN() const { return m_dNx; } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::dV(xt::xtensor<double,2>& qscalar) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) qscalar(e,q) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::dV(xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t q = 0 ; q < m_nip ; ++q) for (size_t i = 0 ; i < m_tdim ; ++i) for (size_t j = 0 ; j < m_tdim ; ++j) qtensor(e,q,i,j) = m_vol(e,q); } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::dV(xt::xarray<double>& qtensor) const { - GOOSEFEM_ASSERT(qtensor.shape()[0] == m_nelem); - GOOSEFEM_ASSERT(qtensor.shape()[1] == m_nip); + GOOSEFEM_ASSERT(qtensor.shape(0) == m_nelem); + GOOSEFEM_ASSERT(qtensor.shape(1) == m_nip); xt::dynamic_shape<ptrdiff_t> strides = { static_cast<ptrdiff_t>(m_vol.strides()[0]), static_cast<ptrdiff_t>(m_vol.strides()[1])}; for (size_t i = 2; i < qtensor.shape().size(); ++i) strides.push_back(0); qtensor = xt::strided_view(m_vol, qtensor.shape(), std::move(strides), 0ul, xt::layout_type::dynamic); } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::update_x(const xt::xtensor<double,3>& x) { GOOSEFEM_ASSERT(x.shape() == m_x.shape()); xt::noalias(m_x) = x; // update the shape function gradients for the new "x" compute_dN(); } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::compute_dN() { #pragma omp parallel { // allocate local variables xt::xtensor_fixed<double, xt::xshape<2,2>> J, Jinv; // loop over all elements (in parallel) #pragma omp for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias nodal positions auto x = xt::adapt(&m_x(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over integration points for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNxi = xt::adapt(&m_dNxi( q,0,0), xt::xshape<m_nne,m_ndim>()); auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne,m_ndim>()); // - Jacobian (loops unrolled for efficiency) // J(i,j) += dNxi(m,i) * x(m,j); J(0,0) = dNxi(0,0)*x(0,0) + dNxi(1,0)*x(1,0) + dNxi(2,0)*x(2,0) + dNxi(3,0)*x(3,0); J(0,1) = dNxi(0,0)*x(0,1) + dNxi(1,0)*x(1,1) + dNxi(2,0)*x(2,1) + dNxi(3,0)*x(3,1); J(1,0) = dNxi(0,1)*x(0,0) + dNxi(1,1)*x(1,0) + dNxi(2,1)*x(2,0) + dNxi(3,1)*x(3,0); J(1,1) = dNxi(0,1)*x(0,1) + dNxi(1,1)*x(1,1) + dNxi(2,1)*x(2,1) + dNxi(3,1)*x(3,1); // - determinant and inverse of the Jacobian double Jdet = inv(J, Jinv); // - shape function gradients wrt global coordinates (loops partly unrolled for efficiency) // dNx(m,i) += Jinv(i,j) * dNxi(m,j); for (size_t m = 0 ; m < m_nne ; ++m) { dNx(m,0) = Jinv(0,0) * dNxi(m,0) + Jinv(0,1) * dNxi(m,1); dNx(m,1) = Jinv(1,0) * dNxi(m,0) + Jinv(1,1) * dNxi(m,1); } // - integration point volume m_vol(e,q) = m_w(q) * Jdet * m_thick; } } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::gradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero z-components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_tdim,m_tdim>()); // - evaluate dyadic product (loops unrolled for efficiency) // gradu(i,j) += dNx(m,i) * u(m,j) gradu(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); gradu(0,1) = dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1); gradu(1,0) = dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0); gradu(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::gradN_vector_T( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero z-components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto gradu = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_tdim,m_tdim>()); // - evaluate transpose of dyadic product (loops unrolled for efficiency) // gradu(j,i) += dNx(m,i) * u(m,j) gradu(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); gradu(1,0) = dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1); gradu(0,1) = dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0); gradu(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::symGradN_vector( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,4>& qtensor) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); // zero-initialize (zero z-components not written below) qtensor.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias element vector (e.g. nodal displacements) auto u = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto eps = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_tdim,m_tdim>()); // - evaluate symmetrized dyadic product (loops unrolled for efficiency) // grad(i,j) += dNx(m,i) * u(m,j) // eps (j,i) = 0.5 * ( grad(i,j) + grad(j,i) ) eps(0,0) = dNx(0,0)*u(0,0) + dNx(1,0)*u(1,0) + dNx(2,0)*u(2,0) + dNx(3,0)*u(3,0); eps(1,1) = dNx(0,1)*u(0,1) + dNx(1,1)*u(1,1) + dNx(2,1)*u(2,1) + dNx(3,1)*u(3,1); eps(0,1) = ( dNx(0,0)*u(0,1) + dNx(1,0)*u(1,1) + dNx(2,0)*u(2,1) + dNx(3,0)*u(3,1) + dNx(0,1)*u(0,0) + dNx(1,1)*u(1,0) + dNx(2,1)*u(2,0) + dNx(3,1)*u(3,0) ) * 0.5; eps(1,0) = eps(0,1); } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qscalar.shape() ==\ std::decay_t<decltype(qscalar)>::shape_type({m_nelem, m_nip})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize: matrix of matrices elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. mass matrix) auto M = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto N = xt::adapt(&m_N(q,0), xt::xshape<m_nne>()); auto& vol = m_vol (e,q); auto& rho = qscalar(e,q); // - evaluate scalar product, for all dimensions, and assemble // M(m*ndim+i,n*ndim+i) += N(m) * scalar * N(n) * dV for (size_t m = 0 ; m < m_nne ; ++m ){ for (size_t n = 0 ; n < m_nne ; ++n ){ M(m*m_ndim+0, n*m_ndim+0) += N(m) * rho * N(n) * vol; M(m*m_ndim+1, n*m_ndim+1) += N(m) * rho * N(n) * vol; } } } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); // zero-initialize output: matrix of vectors elemvec.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto f = xt::adapt(&elemvec(e,0,0), xt::xshape<m_nne,m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx (e,q,0,0), xt::xshape<m_nne ,m_ndim>()); auto sig = xt::adapt(&qtensor(e,q,0,0), xt::xshape<m_tdim,m_tdim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) { f(m,0) += ( dNx(m,0) * sig(0,0) + dNx(m,1) * sig(1,0) ) * vol; f(m,1) += ( dNx(m,0) * sig(0,1) + dNx(m,1) * sig(1,1) ) * vol; } } } } // ------------------------------------------------------------------------------------------------- inline void QuadraturePlanar::int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor, xt::xtensor<double,3>& elemmat) const { GOOSEFEM_ASSERT(qtensor.shape() ==\ std::decay_t<decltype(qtensor)>::shape_type({m_nelem, m_nip, m_tdim, m_tdim, m_tdim, m_tdim})); GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); // zero-initialize output: matrix of vector elemmat.fill(0.0); // loop over all elements (in parallel) #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { // alias (e.g. nodal force) auto K = xt::adapt(&elemmat(e,0,0), xt::xshape<m_nne*m_ndim,m_nne*m_ndim>()); // loop over all integration points in element "e" for (size_t q = 0 ; q < m_nip ; ++q) { // - alias auto dNx = xt::adapt(&m_dNx(e,q,0,0), xt::xshape<m_nne,m_ndim>()); auto C = xt::adapt(&qtensor(e,q,0,0,0,0), xt::xshape<m_tdim,m_tdim,m_tdim,m_tdim>()); auto& vol = m_vol(e,q); // - evaluate dot product, and assemble for (size_t m = 0 ; m < m_nne ; ++m) for (size_t n = 0 ; n < m_nne ; ++n) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t j = 0 ; j < m_ndim ; ++j) for (size_t k = 0 ; k < m_ndim ; ++k) for (size_t l = 0 ; l < m_ndim ; ++l) K(m*m_ndim+j, n*m_ndim+k) += dNx(m,i) * C(i,j,k,l) * dNx(n,l) * vol; } } } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> QuadraturePlanar::DV() const { xt::xtensor<double,2> out = xt::empty<double>({m_nelem, m_nip}); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xarray<double> QuadraturePlanar::DV(size_t rank) const { std::vector<size_t> shape = {m_nelem, m_nip}; for (size_t i = 0; i < rank; ++i) shape.push_back(static_cast<size_t>(m_tdim)); xt::xarray<double> out = xt::empty<double>(shape); this->dV(out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadraturePlanar::GradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->gradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadraturePlanar::GradN_vector_T( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->gradN_vector_T(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,4> QuadraturePlanar::SymGradN_vector( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,4> qtensor = xt::empty<double>({m_nelem, m_nip, m_tdim, m_tdim}); this->symGradN_vector(elemvec, qtensor); return qtensor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadraturePlanar::Int_N_scalar_NT_dV( const xt::xtensor<double,2>& qscalar) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_nne*m_ndim, m_nne*m_ndim}); this->int_N_scalar_NT_dV(qscalar, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadraturePlanar::Int_gradN_dot_tensor2_dV( const xt::xtensor<double,4>& qtensor) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->int_gradN_dot_tensor2_dV(qtensor, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> QuadraturePlanar::Int_gradN_dot_tensor4_dot_gradNT_dV( const xt::xtensor<double,6>& qtensor) const { xt::xtensor<double,3> elemmat = xt::empty<double>({m_nelem, m_ndim*m_nne, m_ndim*m_nne}); this->int_gradN_dot_tensor4_dot_gradNT_dV(qtensor, elemmat); return elemmat; } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/Matrix.h b/include/GooseFEM/Matrix.h index 43a15d5..159f0c9 100644 --- a/include/GooseFEM/Matrix.h +++ b/include/GooseFEM/Matrix.h @@ -1,118 +1,118 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIX_H #define GOOSEFEM_MATRIX_H // ------------------------------------------------------------------------------------------------- #include "config.h" #include <Eigen/Eigen> #include <Eigen/Sparse> #include <Eigen/SparseCholesky> // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- +template <class Solver = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>> class Matrix { public: // Constructors Matrix() = default; Matrix( - const xt::xtensor<size_t,2> &conn, - const xt::xtensor<size_t,2> &dofs); + const xt::xtensor<size_t,2>& conn, + const xt::xtensor<size_t,2>& dofs); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs // Assemble from matrices stored per element [nelem, nne*ndim, nne*ndim] - void assemble(const xt::xtensor<double,3> &elemmat); + void assemble(const xt::xtensor<double,3>& elemmat); // Solve // x_u = A_uu \ ( b_u - A_up * x_p ) void solve( - const xt::xtensor<double,2> &b, - xt::xtensor<double,2> &x); // overwritten + const xt::xtensor<double,2>& b, + xt::xtensor<double,2>& x); // overwritten void solve( - const xt::xtensor<double,1> &b, - xt::xtensor<double,1> &x); // overwritten + const xt::xtensor<double,1>& b, + xt::xtensor<double,1>& x); // overwritten // Auto-allocation of the functions above xt::xtensor<double,2> Solve( - const xt::xtensor<double,2> &b); + const xt::xtensor<double,2>& b); xt::xtensor<double,1> Solve( - const xt::xtensor<double,1> &b); + const xt::xtensor<double,1>& b); private: // The matrix Eigen::SparseMatrix<double> m_A; // Matrix entries std::vector<Eigen::Triplet<double>> m_T; // Solver (re-used to solve different RHS) - Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>> m_solver; + Solver m_solver; // Signal changes to data compare to the last inverse bool m_factor=false; // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs // Compute inverse (automatically evaluated by "solve") - void factorize(); // Convert arrays (Eigen version of Vector, which contains public functions) - Eigen::VectorXd asDofs(const xt::xtensor<double,2> &nodevec) const; + Eigen::VectorXd asDofs(const xt::xtensor<double,2>& nodevec) const; - void asNode(const Eigen::VectorXd &dofval, xt::xtensor<double,2> &nodevec) const; + void asNode(const Eigen::VectorXd& dofval, xt::xtensor<double,2>& nodevec) const; }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "Matrix.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/Matrix.hpp b/include/GooseFEM/Matrix.hpp index 51df0d9..45835b6 100644 --- a/include/GooseFEM/Matrix.hpp +++ b/include/GooseFEM/Matrix.hpp @@ -1,205 +1,222 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIX_HPP #define GOOSEFEM_MATRIX_HPP // ------------------------------------------------------------------------------------------------- #include "Matrix.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- -inline Matrix::Matrix( +template <class Solver> +inline Matrix<Solver>::Matrix( const xt::xtensor<size_t,2> &conn, const xt::xtensor<size_t,2> &dofs) : m_conn(conn), m_dofs(dofs) { - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); - m_ndof = xt::amax(m_dofs)[0] + 1; + m_ndof = xt::amax(m_dofs)[0] + 1; - m_T.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); + m_T.reserve(m_nelem * m_nne * m_ndim * m_nne * m_ndim); m_A.resize(m_ndof,m_ndof); GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- -inline size_t Matrix::nelem() const +template <class Solver> +inline size_t Matrix<Solver>::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- -inline size_t Matrix::nne() const +template <class Solver> +inline size_t Matrix<Solver>::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- -inline size_t Matrix::nnode() const +template <class Solver> +inline size_t Matrix<Solver>::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- -inline size_t Matrix::ndim() const +template <class Solver> +inline size_t Matrix<Solver>::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- -inline size_t Matrix::ndof() const +template <class Solver> +inline size_t Matrix<Solver>::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<size_t,2> Matrix::dofs() const +template <class Solver> +inline xt::xtensor<size_t,2> Matrix<Solver>::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- -inline void Matrix::factorize() +template <class Solver> +inline void Matrix<Solver>::factorize() { if ( ! m_factor ) return; m_solver.compute(m_A); m_factor = false; } // ------------------------------------------------------------------------------------------------- -inline void Matrix::assemble(const xt::xtensor<double,3> &elemmat) +template <class Solver> +inline void Matrix<Solver>::assemble(const xt::xtensor<double,3> &elemmat) { GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); m_T.clear(); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) for (size_t n = 0 ; n < m_nne ; ++n) for (size_t j = 0 ; j < m_ndim ; ++j) m_T.push_back(Eigen::Triplet<double>( m_dofs(m_conn(e,m),i), m_dofs(m_conn(e,n),j), elemmat(e,m*m_ndim+i,n*m_ndim+j) )); m_A.setFromTriplets(m_T.begin(), m_T.end()); m_factor = true; } // ------------------------------------------------------------------------------------------------- -inline void Matrix::solve( +template <class Solver> +inline void Matrix<Solver>::solve( const xt::xtensor<double,2> &b, xt::xtensor<double,2> &x) { GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); this->factorize(); Eigen::VectorXd B = this->asDofs(b); Eigen::VectorXd X = m_solver.solve(B); this->asNode(X, x); } // ------------------------------------------------------------------------------------------------- -inline void Matrix::solve( +template <class Solver> +inline void Matrix<Solver>::solve( const xt::xtensor<double,1> &b, xt::xtensor<double,1> &x) { GOOSEFEM_ASSERT(b.size() == m_ndof); GOOSEFEM_ASSERT(x.size() == m_ndof); this->factorize(); Eigen::VectorXd B(m_ndof,1); std::copy(b.begin(), b.end(), B.data()); Eigen::VectorXd X = m_solver.solve(B); std::copy(X.data(), X.data()+m_ndof, x.begin()); } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<double,2> Matrix::Solve( +template <class Solver> +inline xt::xtensor<double,2> Matrix<Solver>::Solve( const xt::xtensor<double,2> &b) { xt::xtensor<double,2> x = xt::empty<double>({m_nnode, m_ndim}); this->solve(b, x); return x; } // ------------------------------------------------------------------------------------------------- -inline xt::xtensor<double,1> Matrix::Solve( +template <class Solver> +inline xt::xtensor<double,1> Matrix<Solver>::Solve( const xt::xtensor<double,1> &b) { xt::xtensor<double,1> x = xt::empty<double>({m_ndof}); this->solve(b, x); return x; } // ------------------------------------------------------------------------------------------------- -inline Eigen::VectorXd Matrix::asDofs(const xt::xtensor<double,2> &nodevec) const +template <class Solver> +inline Eigen::VectorXd Matrix<Solver>::asDofs(const xt::xtensor<double,2> &nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval(m_ndof,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m,i)) = nodevec(m,i); return dofval; } // ------------------------------------------------------------------------------------------------- -inline void Matrix::asNode(const Eigen::VectorXd &dofval, xt::xtensor<double,2> &nodevec) const +template <class Solver> +inline void Matrix<Solver>::asNode( + const Eigen::VectorXd &dofval, + xt::xtensor<double,2> &nodevec) const { assert(static_cast<size_t>(dofval.size()) == m_ndof); assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m,i) = dofval(m_dofs(m,i)); } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixDiagonal.h b/include/GooseFEM/MatrixDiagonal.h index 05f1422..5d91ff0 100644 --- a/include/GooseFEM/MatrixDiagonal.h +++ b/include/GooseFEM/MatrixDiagonal.h @@ -1,123 +1,123 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXDIAGONAL_H #define GOOSEFEM_MATRIXDIAGONAL_H // ------------------------------------------------------------------------------------------------- #include "config.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- class MatrixDiagonal { public: // Constructors MatrixDiagonal() = default; MatrixDiagonal( - const xt::xtensor<size_t,2> &conn, - const xt::xtensor<size_t,2> &dofs); + const xt::xtensor<size_t,2>& conn, + const xt::xtensor<size_t,2>& dofs); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs // Set matrix components - void set(const xt::xtensor<double,1> &A); + void set(const xt::xtensor<double,1>& A); // assemble from matrices stored per element [nelem, nne*ndim, nne*ndim] // WARNING: ignores any off-diagonal terms - void assemble(const xt::xtensor<double,3> &elemmat); + void assemble(const xt::xtensor<double,3>& elemmat); // Dot-product: // b_i = A_ij * x_j void dot( - const xt::xtensor<double,2> &x, - xt::xtensor<double,2> &b) const; + const xt::xtensor<double,2>& x, + xt::xtensor<double,2>& b) const; void dot( - const xt::xtensor<double,1> &x, - xt::xtensor<double,1> &b) const; + const xt::xtensor<double,1>& x, + xt::xtensor<double,1>& b) const; // Solve: // x = A \ b void solve( - const xt::xtensor<double,2> &b, - xt::xtensor<double,2> &x); + const xt::xtensor<double,2>& b, + xt::xtensor<double,2>& x); void solve( - const xt::xtensor<double,1> &b, - xt::xtensor<double,1> &x); + const xt::xtensor<double,1>& b, + xt::xtensor<double,1>& x); // Return matrix as diagonal matrix (column) xt::xtensor<double,1> AsDiagonal() const; // Auto-allocation of the functions above - xt::xtensor<double,2> Dot(const xt::xtensor<double,2> &x) const; + xt::xtensor<double,2> Dot(const xt::xtensor<double,2>& x) const; - xt::xtensor<double,1> Dot(const xt::xtensor<double,1> &x) const; + xt::xtensor<double,1> Dot(const xt::xtensor<double,1>& x) const; - xt::xtensor<double,2> Solve(const xt::xtensor<double,2> &b); + xt::xtensor<double,2> Solve(const xt::xtensor<double,2>& b); - xt::xtensor<double,1> Solve(const xt::xtensor<double,1> &b); + xt::xtensor<double,1> Solve(const xt::xtensor<double,1>& b); private: // The diagonal matrix, and its inverse (re-used to solve different RHS) xt::xtensor<double,1> m_A; xt::xtensor<double,1> m_inv; // Signal changes to data compare to the last inverse bool m_factor=false; // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs // Compute inverse (automatically evaluated by "solve") void factorize(); }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "MatrixDiagonal.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixDiagonal.hpp b/include/GooseFEM/MatrixDiagonal.hpp index 647a5eb..3957c75 100644 --- a/include/GooseFEM/MatrixDiagonal.hpp +++ b/include/GooseFEM/MatrixDiagonal.hpp @@ -1,233 +1,233 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXDIAGONAL_HPP #define GOOSEFEM_MATRIXDIAGONAL_HPP // ------------------------------------------------------------------------------------------------- #include "MatrixDiagonal.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- inline MatrixDiagonal::MatrixDiagonal( const xt::xtensor<size_t,2> &conn, const xt::xtensor<size_t,2> &dofs) : m_conn(conn), m_dofs(dofs) { - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); m_ndof = xt::amax(m_dofs)[0] + 1; m_A = xt::empty<double>({m_ndof}); m_inv = xt::empty<double>({m_ndof}); GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonal::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonal::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonal::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonal::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonal::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> MatrixDiagonal::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::factorize() { if (!m_factor) return; #pragma omp parallel for for (size_t d = 0 ; d < m_ndof ; ++d) m_inv(d) = 1. / m_A(d); m_factor = false; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::set(const xt::xtensor<double,1> &A) { GOOSEFEM_ASSERT(A.size() == m_ndof); std::copy(A.begin(), A.end(), m_A.begin()); m_factor = true; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::assemble(const xt::xtensor<double,3> &elemmat) { GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); GOOSEFEM_ASSERT(Element::isDiagonal(elemmat)); m_A.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) m_A(m_dofs(m_conn(e,m),i)) += elemmat(e,m*m_ndim+i,m*m_ndim+i); m_factor = true; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::dot( const xt::xtensor<double,2> &x, xt::xtensor<double,2> &b) const { GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) b(m,i) = m_A(m_dofs(m,i)) * x(m,i); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::dot( const xt::xtensor<double,1> &x, xt::xtensor<double,1> &b) const { GOOSEFEM_ASSERT(x.size() == m_ndof); GOOSEFEM_ASSERT(b.size() == m_ndof); xt::noalias(b) = m_A * x; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::solve( const xt::xtensor<double,2> &b, xt::xtensor<double,2> &x) { GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); this->factorize(); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) x(m,i) = m_inv(m_dofs(m,i)) * b(m,i); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonal::solve( const xt::xtensor<double,1> &b, xt::xtensor<double,1> &x) { GOOSEFEM_ASSERT(b.size() == m_ndof); GOOSEFEM_ASSERT(x.size() == m_ndof); this->factorize(); xt::noalias(x) = m_inv * b; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonal::AsDiagonal() const { return m_A; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> MatrixDiagonal::Dot(const xt::xtensor<double,2> &x) const { xt::xtensor<double,2> b = xt::empty<double>({m_nnode, m_ndim}); this->dot(x, b); return b; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonal::Dot(const xt::xtensor<double,1> &x) const { xt::xtensor<double,1> b = xt::empty<double>({m_ndof}); this->dot(x, b); return b; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> MatrixDiagonal::Solve(const xt::xtensor<double,2> &b) { xt::xtensor<double,2> x = xt::empty<double>({m_nnode, m_ndim}); this->solve(b, x); return x; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonal::Solve(const xt::xtensor<double,1> &b) { xt::xtensor<double,1> x = xt::empty<double>({m_ndof}); this->solve(b, x); return x; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixDiagonalPartitioned.h b/include/GooseFEM/MatrixDiagonalPartitioned.h index 8d8f2eb..51e1068 100644 --- a/include/GooseFEM/MatrixDiagonalPartitioned.h +++ b/include/GooseFEM/MatrixDiagonalPartitioned.h @@ -1,191 +1,191 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXDIAGONALPARTITIONED_H #define GOOSEFEM_MATRIXDIAGONALPARTITIONED_H // ------------------------------------------------------------------------------------------------- #include "config.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- class MatrixDiagonalPartitioned { public: // Constructors MatrixDiagonalPartitioned() = default; MatrixDiagonalPartitioned( - const xt::xtensor<size_t,2> &conn, - const xt::xtensor<size_t,2> &dofs, - const xt::xtensor<size_t,1> &iip); + const xt::xtensor<size_t,2>& conn, + const xt::xtensor<size_t,2>& dofs, + const xt::xtensor<size_t,1>& iip); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs size_t nnu() const; // number of unknown DOFs size_t nnp() const; // number of prescribed DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs xt::xtensor<size_t,1> iiu() const; // unknown DOFs xt::xtensor<size_t,1> iip() const; // prescribed DOFs // Assemble from matrices stored per element [nelem, nne*ndim, nne*ndim] // WARNING: ignores any off-diagonal terms - void assemble(const xt::xtensor<double,3> &elemmat); + void assemble(const xt::xtensor<double,3>& elemmat); // Dot-product: // b_i = A_ij * x_j void dot( - const xt::xtensor<double,2> &x, - xt::xtensor<double,2> &b) const; // overwritten + const xt::xtensor<double,2>& x, + xt::xtensor<double,2>& b) const; // overwritten void dot( - const xt::xtensor<double,1> &x, - xt::xtensor<double,1> &b) const; // overwritten + const xt::xtensor<double,1>& x, + xt::xtensor<double,1>& b) const; // overwritten void dot_u( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &b_u) const; // overwritten + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& b_u) const; // overwritten void dot_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &b_p) const; // overwritten + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& b_p) const; // overwritten // Solve: // x_u = A_uu \ ( b_u - A_up * x_p ) = A_uu \ b_u void solve( - const xt::xtensor<double,2> &b, - xt::xtensor<double,2> &x); // modified with "x_u" + const xt::xtensor<double,2>& b, + xt::xtensor<double,2>& x); // modified with "x_u" void solve( - const xt::xtensor<double,1> &b, - xt::xtensor<double,1> &x); // modified with "x_u" + const xt::xtensor<double,1>& b, + xt::xtensor<double,1>& x); // modified with "x_u" void solve_u( - const xt::xtensor<double,1> &b_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &x_u); // overwritten + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& x_u); // overwritten // Get right-hand-size for corresponding to the prescribed DOFs: // b_p = A_pu * x_u + A_pp * x_p = A_pp * x_p void reaction( - const xt::xtensor<double,2> &x, - xt::xtensor<double,2> &b) const; // modified with "b_p" + const xt::xtensor<double,2>& x, + xt::xtensor<double,2>& b) const; // modified with "b_p" void reaction( - const xt::xtensor<double,1> &x, - xt::xtensor<double,1> &b) const; // modified with "b_p" + const xt::xtensor<double,1>& x, + xt::xtensor<double,1>& b) const; // modified with "b_p" void reaction_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &b_p) const; // overwritten + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& b_p) const; // overwritten // Return matrix as diagonal matrix (column) xt::xtensor<double,1> AsDiagonal() const; // Auto-allocation of the functions above xt::xtensor<double,2> Dot( - const xt::xtensor<double,2> &x) const; + const xt::xtensor<double,2>& x) const; xt::xtensor<double,1> Dot( - const xt::xtensor<double,1> &x) const; + const xt::xtensor<double,1>& x) const; xt::xtensor<double,1> Dot_u( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p) const; + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p) const; xt::xtensor<double,1> Dot_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p) const; + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p) const; xt::xtensor<double,2> Solve( - const xt::xtensor<double,2> &b, - const xt::xtensor<double,2> &x); + const xt::xtensor<double,2>& b, + const xt::xtensor<double,2>& x); xt::xtensor<double,1> Solve( - const xt::xtensor<double,1> &b, - const xt::xtensor<double,1> &x); + const xt::xtensor<double,1>& b, + const xt::xtensor<double,1>& x); xt::xtensor<double,1> Solve_u( - const xt::xtensor<double,1> &b_u, - const xt::xtensor<double,1> &x_p); + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& x_p); xt::xtensor<double,2> Reaction( - const xt::xtensor<double,2> &x, - const xt::xtensor<double,2> &b) const; + const xt::xtensor<double,2>& x, + const xt::xtensor<double,2>& b) const; xt::xtensor<double,1> Reaction( - const xt::xtensor<double,1> &x, - const xt::xtensor<double,1> &b) const; + const xt::xtensor<double,1>& x, + const xt::xtensor<double,1>& b) const; xt::xtensor<double,1> Reaction_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p) const; + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p) const; private: // The diagonal matrix, and its inverse (re-used to solve different RHS) xt::xtensor<double,1> m_Auu; xt::xtensor<double,1> m_App; xt::xtensor<double,1> m_inv_uu; // Signal changes to data compare to the last inverse bool m_factor=false; // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] xt::xtensor<size_t,2> m_part; // DOF-numbers per node, renumbered [nnode, ndim] xt::xtensor<size_t,1> m_iiu; // DOF-numbers that are unknown [nnu] xt::xtensor<size_t,1> m_iip; // DOF-numbers that are prescribed [nnp] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs size_t m_nnu; // number of unknown DOFs size_t m_nnp; // number of prescribed DOFs // Compute inverse (automatically evaluated by "solve") void factorize(); }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "MatrixDiagonalPartitioned.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixDiagonalPartitioned.hpp b/include/GooseFEM/MatrixDiagonalPartitioned.hpp index 8e92c20..c089401 100644 --- a/include/GooseFEM/MatrixDiagonalPartitioned.hpp +++ b/include/GooseFEM/MatrixDiagonalPartitioned.hpp @@ -1,475 +1,475 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXDIAGONALPARTITIONED_HPP #define GOOSEFEM_MATRIXDIAGONALPARTITIONED_HPP // ------------------------------------------------------------------------------------------------- #include "MatrixDiagonalPartitioned.h" #include "Mesh.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- inline MatrixDiagonalPartitioned::MatrixDiagonalPartitioned( const xt::xtensor<size_t,2> &conn, const xt::xtensor<size_t,2> &dofs, const xt::xtensor<size_t,1> &iip) : m_conn(conn), m_dofs(dofs), m_iip(iip) { - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); m_iiu = xt::setdiff1d(dofs, iip); m_ndof = xt::amax(m_dofs)[0] + 1; m_nnp = m_iip.size(); m_nnu = m_iiu.size(); m_part = Mesh::Reorder({m_iiu, m_iip}).get(m_dofs); m_Auu = xt::empty<double>({m_nnu}); m_App = xt::empty<double>({m_nnp}); m_inv_uu = xt::empty<double>({m_nnu}); GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(xt::amax(m_iip)[0] <= xt::amax(m_dofs)[0]); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- inline size_t MatrixDiagonalPartitioned::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> MatrixDiagonalPartitioned::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> MatrixDiagonalPartitioned::iiu() const { return m_iiu; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> MatrixDiagonalPartitioned::iip() const { return m_iip; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::factorize() { if (!m_factor) return; #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) m_inv_uu(d) = 1. / m_Auu(d); m_factor = false; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::assemble(const xt::xtensor<double,3> &elemmat) { GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); GOOSEFEM_ASSERT(Element::isDiagonal(elemmat)); m_Auu.fill(0.0); m_App.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) { for (size_t m = 0 ; m < m_nne ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { size_t d = m_part(m_conn(e,m),i); if ( d < m_nnu ) m_Auu(d ) += elemmat(e,m*m_ndim+i,m*m_ndim+i); else m_App(d-m_nnu) += elemmat(e,m*m_ndim+i,m*m_ndim+i); } } } m_factor = true; } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::dot( const xt::xtensor<double,2> &x, xt::xtensor<double,2> &b) const { GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { size_t d = m_part(m,i); if ( d < m_nnu ) b(m,i) = m_Auu(d ) * x(m,i); else b(m,i) = m_App(d-m_nnu) * x(m,i); } } } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::dot( const xt::xtensor<double,1> &x, xt::xtensor<double,1> &b) const { GOOSEFEM_ASSERT(x.size() == m_ndof); GOOSEFEM_ASSERT(b.size() == m_ndof); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) b(m_iiu(d)) = m_Auu(d) * x(m_iiu(d)); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) b(m_iip(d)) = m_App(d) * x(m_iip(d)); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::dot_u( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &b_u) const { UNUSED(x_p); GOOSEFEM_ASSERT(x_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(b_u.size() == m_nnu); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) b_u(d) = m_Auu(d) * x_u(d); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::dot_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &b_p) const { UNUSED(x_u); GOOSEFEM_ASSERT(x_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(b_p.size() == m_nnp); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) b_p(d) = m_App(d) * x_p(d); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::solve( const xt::xtensor<double,2> &b, xt::xtensor<double,2> &x) { GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); this->factorize(); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if ( m_part(m,i) < m_nnu ) x(m,i) = m_inv_uu(m_part(m,i)) * b(m,i); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::solve( const xt::xtensor<double,1> &b, xt::xtensor<double,1> &x) { GOOSEFEM_ASSERT(b.size() == m_ndof); GOOSEFEM_ASSERT(x.size() == m_ndof); this->factorize(); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) x(m_iiu(d)) = m_inv_uu(d) * b(m_iiu(d)); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::solve_u( const xt::xtensor<double,1> &b_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &x_u) { UNUSED(x_p); GOOSEFEM_ASSERT(b_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(x_u.size() == m_nnu); this->factorize(); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) x_u(d) = m_inv_uu(d) * b_u(d); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::reaction( const xt::xtensor<double,2> &x, xt::xtensor<double,2> &b) const { GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) b(m,i) = m_App(m_part(m,i)-m_nnu) * x(m,i); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::reaction( const xt::xtensor<double,1> &x, xt::xtensor<double,1> &b) const { GOOSEFEM_ASSERT(x.size() == m_ndof); GOOSEFEM_ASSERT(b.size() == m_ndof); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) b(m_iip(d)) = m_App(d) * x(m_iip(d)); } // ------------------------------------------------------------------------------------------------- inline void MatrixDiagonalPartitioned::reaction_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &b_p) const { UNUSED(x_u); GOOSEFEM_ASSERT(x_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(b_p.size() == m_nnp); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) b_p(d) = m_App(d) * x_p(d); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::AsDiagonal() const { xt::xtensor<double,1> out = xt::zeros<double>({m_ndof}); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) out(m_iiu(d)) = m_Auu(d); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) out(m_iip(d)) = m_App(d); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> MatrixDiagonalPartitioned::Dot( const xt::xtensor<double,2> &x) const { xt::xtensor<double,2> b = xt::empty<double>({m_nnode, m_ndim}); this->dot(x, b); return b; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Dot( const xt::xtensor<double,1> &x) const { xt::xtensor<double,1> b = xt::empty<double>({m_ndof}); this->dot(x, b); return b; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Dot_u( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p) const { xt::xtensor<double,1> b_u = xt::empty<double>({m_nnu}); this->dot_u(x_u, x_p, b_u); return b_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Dot_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p) const { xt::xtensor<double,1> b_p = xt::empty<double>({m_nnp}); this->dot_p(x_u, x_p, b_p); return b_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> MatrixDiagonalPartitioned::Solve( const xt::xtensor<double,2> &b, const xt::xtensor<double,2> &x) { xt::xtensor<double,2> out = x; this->solve(b, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Solve( const xt::xtensor<double,1> &b, const xt::xtensor<double,1> &x) { xt::xtensor<double,1> out = x; this->solve(b, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Solve_u( const xt::xtensor<double,1> &b_u, const xt::xtensor<double,1> &x_p) { xt::xtensor<double,1> x_u = xt::empty<double>({m_nnu}); this->solve_u(b_u, x_p, x_u); return x_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> MatrixDiagonalPartitioned::Reaction( const xt::xtensor<double,2> &x, const xt::xtensor<double,2> &b) const { xt::xtensor<double,2> out = b; this->reaction(x, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Reaction( const xt::xtensor<double,1> &x, const xt::xtensor<double,1> &b) const { xt::xtensor<double,1> out = b; this->reaction(x, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> MatrixDiagonalPartitioned::Reaction_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p) const { xt::xtensor<double,1> b_p = xt::empty<double>({m_nnp}); this->reaction_p(x_u, x_p, b_p); return b_p; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixPartitioned.h b/include/GooseFEM/MatrixPartitioned.h index bd7b12b..5f13c24 100644 --- a/include/GooseFEM/MatrixPartitioned.h +++ b/include/GooseFEM/MatrixPartitioned.h @@ -1,173 +1,173 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXPARTITIONED_H #define GOOSEFEM_MATRIXPARTITIONED_H // ------------------------------------------------------------------------------------------------- #include "config.h" #include <Eigen/Eigen> #include <Eigen/Sparse> #include <Eigen/SparseCholesky> // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- template <class Solver = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>> class MatrixPartitioned { public: // Constructors MatrixPartitioned() = default; MatrixPartitioned( - const xt::xtensor<size_t,2> &conn, - const xt::xtensor<size_t,2> &dofs, - const xt::xtensor<size_t,1> &iip); + const xt::xtensor<size_t,2>& conn, + const xt::xtensor<size_t,2>& dofs, + const xt::xtensor<size_t,1>& iip); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs size_t nnu() const; // number of unknown DOFs size_t nnp() const; // number of prescribed DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs xt::xtensor<size_t,1> iiu() const; // unknown DOFs xt::xtensor<size_t,1> iip() const; // prescribed DOFs // Assemble from matrices stored per element [nelem, nne*ndim, nne*ndim] - void assemble(const xt::xtensor<double,3> &elemmat); + void assemble(const xt::xtensor<double,3>& elemmat); // Solve: // x_u = A_uu \ ( b_u - A_up * x_p ) void solve( - const xt::xtensor<double,2> &b, - xt::xtensor<double,2> &x); // modified with "x_u" + const xt::xtensor<double,2>& b, + xt::xtensor<double,2>& x); // modified with "x_u" void solve( - const xt::xtensor<double,1> &b, - xt::xtensor<double,1> &x); // modified with "x_u" + const xt::xtensor<double,1>& b, + xt::xtensor<double,1>& x); // modified with "x_u" void solve_u( - const xt::xtensor<double,1> &b_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &x_u); // overwritten + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& x_u); // overwritten // Get right-hand-size for corresponding to the prescribed DOFs: // b_p = A_pu * x_u + A_pp * x_p = A_pp * x_p void reaction( - const xt::xtensor<double,2> &x, - xt::xtensor<double,2> &b) const; // modified with "b_p" + const xt::xtensor<double,2>& x, + xt::xtensor<double,2>& b) const; // modified with "b_p" void reaction( - const xt::xtensor<double,1> &x, - xt::xtensor<double,1> &b) const; // modified with "b_p" + const xt::xtensor<double,1>& x, + xt::xtensor<double,1>& b) const; // modified with "b_p" void reaction_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &b_p) const; // overwritten + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& b_p) const; // overwritten // Auto-allocation of the functions above xt::xtensor<double,2> Solve( - const xt::xtensor<double,2> &b, - const xt::xtensor<double,2> &x); + const xt::xtensor<double,2>& b, + const xt::xtensor<double,2>& x); xt::xtensor<double,1> Solve( - const xt::xtensor<double,1> &b, - const xt::xtensor<double,1> &x); + const xt::xtensor<double,1>& b, + const xt::xtensor<double,1>& x); xt::xtensor<double,1> Solve_u( - const xt::xtensor<double,1> &b_u, - const xt::xtensor<double,1> &x_p); + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& x_p); xt::xtensor<double,2> Reaction( - const xt::xtensor<double,2> &x, - const xt::xtensor<double,2> &b) const; + const xt::xtensor<double,2>& x, + const xt::xtensor<double,2>& b) const; xt::xtensor<double,1> Reaction( - const xt::xtensor<double,1> &x, - const xt::xtensor<double,1> &b) const; + const xt::xtensor<double,1>& x, + const xt::xtensor<double,1>& b) const; xt::xtensor<double,1> Reaction_p( - const xt::xtensor<double,1> &x_u, - const xt::xtensor<double,1> &x_p) const; + const xt::xtensor<double,1>& x_u, + const xt::xtensor<double,1>& x_p) const; private: // The matrix Eigen::SparseMatrix<double> m_Auu; Eigen::SparseMatrix<double> m_Aup; Eigen::SparseMatrix<double> m_Apu; Eigen::SparseMatrix<double> m_App; // Matrix entries std::vector<Eigen::Triplet<double>> m_Tuu; std::vector<Eigen::Triplet<double>> m_Tup; std::vector<Eigen::Triplet<double>> m_Tpu; std::vector<Eigen::Triplet<double>> m_Tpp; // Solver (re-used to solve different RHS) Solver m_solver; // Signal changes to data compare to the last inverse bool m_factor=false; // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] xt::xtensor<size_t,2> m_part; // DOF-numbers per node, renumbered [nnode, ndim] xt::xtensor<size_t,1> m_iiu; // unknown DOFs [nnu] xt::xtensor<size_t,1> m_iip; // prescribed DOFs [nnp] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs size_t m_nnu; // number of unknown DOFs size_t m_nnp; // number of prescribed DOFs // Compute inverse (automatically evaluated by "solve") void factorize(); // Convert arrays (Eigen version of VectorPartitioned, which contains public functions) - Eigen::VectorXd asDofs_u(const xt::xtensor<double,1> &dofval ) const; - Eigen::VectorXd asDofs_u(const xt::xtensor<double,2> &nodevec) const; - Eigen::VectorXd asDofs_p(const xt::xtensor<double,1> &dofval ) const; - Eigen::VectorXd asDofs_p(const xt::xtensor<double,2> &nodevec) const; + Eigen::VectorXd asDofs_u(const xt::xtensor<double,1>& dofval ) const; + Eigen::VectorXd asDofs_u(const xt::xtensor<double,2>& nodevec) const; + Eigen::VectorXd asDofs_p(const xt::xtensor<double,1>& dofval ) const; + Eigen::VectorXd asDofs_p(const xt::xtensor<double,2>& nodevec) const; }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "MatrixPartitioned.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixPartitioned.hpp b/include/GooseFEM/MatrixPartitioned.hpp index cddb322..33efd49 100644 --- a/include/GooseFEM/MatrixPartitioned.hpp +++ b/include/GooseFEM/MatrixPartitioned.hpp @@ -1,487 +1,500 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXPARTITIONED_HPP #define GOOSEFEM_MATRIXPARTITIONED_HPP // ------------------------------------------------------------------------------------------------- #include "MatrixPartitioned.h" #include "Mesh.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- template <class Solver> inline MatrixPartitioned<Solver>::MatrixPartitioned( const xt::xtensor<size_t,2> &conn, const xt::xtensor<size_t,2> &dofs, const xt::xtensor<size_t,1> &iip) : m_conn(conn), m_dofs(dofs), m_iip(iip) { - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); - m_iiu = xt::setdiff1d(dofs, iip); + m_iiu = xt::setdiff1d(dofs, iip); - m_ndof = xt::amax(m_dofs)[0] + 1; - m_nnp = m_iip.size(); - m_nnu = m_iiu.size(); + m_ndof = xt::amax(m_dofs)[0] + 1; + m_nnp = m_iip.size(); + m_nnu = m_iiu.size(); - m_part = Mesh::Reorder({m_iiu, m_iip}).get(m_dofs); + m_part = Mesh::Reorder({m_iiu, m_iip}).get(m_dofs); - m_Tuu.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); - m_Tup.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); - m_Tpu.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); - m_Tpp.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); + m_Tuu.reserve(m_nelem * m_nne * m_ndim * m_nne * m_ndim); + m_Tup.reserve(m_nelem * m_nne * m_ndim * m_nne * m_ndim); + m_Tpu.reserve(m_nelem * m_nne * m_ndim * m_nne * m_ndim); + m_Tpp.reserve(m_nelem * m_nne * m_ndim * m_nne * m_ndim); - m_Auu.resize(m_nnu,m_nnu); - m_Aup.resize(m_nnu,m_nnp); - m_Apu.resize(m_nnp,m_nnu); - m_App.resize(m_nnp,m_nnp); + m_Auu.resize(m_nnu, m_nnu); + m_Aup.resize(m_nnu, m_nnp); + m_Apu.resize(m_nnp, m_nnu); + m_App.resize(m_nnp, m_nnp); GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(xt::amax(m_iip)[0] <= xt::amax(m_dofs)[0]); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitioned<Solver>::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,2> MatrixPartitioned<Solver>::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitioned<Solver>::iiu() const { return m_iiu; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitioned<Solver>::iip() const { return m_iip; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::factorize() { if (!m_factor) return; - - m_solver.compute(m_Auu); - m_factor = false; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::assemble(const xt::xtensor<double,3> &elemmat) { GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); m_Tuu.clear(); m_Tup.clear(); m_Tpu.clear(); m_Tpp.clear(); for (size_t e = 0 ; e < m_nelem ; ++e) { for (size_t m = 0 ; m < m_nne ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { size_t di = m_part(m_conn(e,m),i); for (size_t n = 0 ; n < m_nne ; ++n) { for (size_t j = 0 ; j < m_ndim ; ++j) { size_t dj = m_part(m_conn(e,n),j); - if (di < m_nnu and dj < m_nnu) - m_Tuu.push_back(Eigen::Triplet<double>(di ,dj ,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nnu) - m_Tup.push_back(Eigen::Triplet<double>(di ,dj-m_nnu,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (dj < m_nnu) - m_Tpu.push_back(Eigen::Triplet<double>(di-m_nnu,dj ,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else - m_Tpp.push_back(Eigen::Triplet<double>(di-m_nnu,dj-m_nnu,elemmat(e,m*m_ndim+i,n*m_ndim+j))); + if (di < m_nnu && dj < m_nnu) { + m_Tuu.push_back(Eigen::Triplet<double>( + di, + dj, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nnu) { + m_Tup.push_back(Eigen::Triplet<double>( + di, + dj - m_nnu, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (dj < m_nnu) { + m_Tpu.push_back(Eigen::Triplet<double>( + di - m_nnu, + dj, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else { + m_Tpp.push_back(Eigen::Triplet<double>( + di - m_nnu, + dj - m_nnu, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } } } } } } m_Auu.setFromTriplets(m_Tuu.begin(), m_Tuu.end()); m_Aup.setFromTriplets(m_Tup.begin(), m_Tup.end()); m_Apu.setFromTriplets(m_Tpu.begin(), m_Tpu.end()); m_App.setFromTriplets(m_Tpp.begin(), m_Tpp.end()); m_factor = true; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::solve( const xt::xtensor<double,2> &b, xt::xtensor<double,2> &x) { GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); this->factorize(); Eigen::VectorXd B_u = this->asDofs_u(b); Eigen::VectorXd X_p = this->asDofs_p(x); Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_Aup * X_p)); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if ( m_part(m,i) < m_nnu ) x(m,i) = X_u(m_part(m,i)); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::solve( const xt::xtensor<double,1> &b, xt::xtensor<double,1> &x) { GOOSEFEM_ASSERT(b.size() == m_ndof); GOOSEFEM_ASSERT(x.size() == m_ndof); this->factorize(); Eigen::VectorXd B_u = this->asDofs_u(b); Eigen::VectorXd X_p = this->asDofs_p(x); Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_Aup * X_p)); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) x(m_iiu(d)) = X_u(d); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::solve_u( const xt::xtensor<double,1> &b_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &x_u) { GOOSEFEM_ASSERT(b_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(x_u.size() == m_nnu); this->factorize(); Eigen::VectorXd B_u(m_nnu,1); Eigen::VectorXd X_p(m_nnp,1); std::copy(b_u.begin(), b_u.end(), B_u.data()); std::copy(x_p.begin(), x_p.end(), X_p.data()); Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_Aup * X_p)); std::copy(X_u.data(), X_u.data()+m_nnu, x_u.begin()); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::reaction( const xt::xtensor<double,2> &x, xt::xtensor<double,2> &b) const { GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd X_u = this->asDofs_u(x); Eigen::VectorXd X_p = this->asDofs_p(x); Eigen::VectorXd B_p = m_Apu * X_u + m_App * X_p; #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) b(m,i) = B_p(m_part(m,i)-m_nnu); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::reaction( const xt::xtensor<double,1> &x, xt::xtensor<double,1> &b) const { GOOSEFEM_ASSERT(x.size() == m_ndof); GOOSEFEM_ASSERT(b.size() == m_ndof); Eigen::VectorXd X_u = this->asDofs_u(x); Eigen::VectorXd X_p = this->asDofs_p(x); Eigen::VectorXd B_p = m_Apu * X_u + m_App * X_p; #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) b(m_iip(d)) = B_p(d); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitioned<Solver>::reaction_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p, xt::xtensor<double,1> &b_p) const { GOOSEFEM_ASSERT(x_u.size() == m_nnu); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(b_p.size() == m_nnp); Eigen::VectorXd X_u(m_nnu,1); Eigen::VectorXd X_p(m_nnp,1); std::copy(x_u.begin(), x_u.end(), X_u.data()); std::copy(x_p.begin(), x_p.end(), X_p.data()); Eigen::VectorXd B_p = m_Apu * X_u + m_App * X_p; std::copy(B_p.data(), B_p.data()+m_nnp, b_p.begin()); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,2> MatrixPartitioned<Solver>::Solve( const xt::xtensor<double,2> &b, const xt::xtensor<double,2> &x) { xt::xtensor<double,2> out = x; this->solve(b, out); return out; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,1> MatrixPartitioned<Solver>::Solve( const xt::xtensor<double,1> &b, const xt::xtensor<double,1> &x) { xt::xtensor<double,1> out = x; this->solve(b, out); return out; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,1> MatrixPartitioned<Solver>::Solve_u( const xt::xtensor<double,1> &b_u, const xt::xtensor<double,1> &x_p) { xt::xtensor<double,1> x_u = xt::empty<double>({m_nnu}); this->solve_u(b_u, x_p, x_u); return x_u; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,2> MatrixPartitioned<Solver>::Reaction( const xt::xtensor<double,2> &x, const xt::xtensor<double,2> &b) const { xt::xtensor<double,2> out = b; this->reaction(x, out); return out; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,1> MatrixPartitioned<Solver>::Reaction( const xt::xtensor<double,1> &x, const xt::xtensor<double,1> &b) const { xt::xtensor<double,1> out = b; this->reaction(x, out); return out; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<double,1> MatrixPartitioned<Solver>::Reaction_p( const xt::xtensor<double,1> &x_u, const xt::xtensor<double,1> &x_p) const { xt::xtensor<double,1> b_p = xt::empty<double>({m_nnp}); this->reaction_p(x_u, x_p, b_p); return b_p; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitioned<Solver>::asDofs_u( const xt::xtensor<double,1> &dofval) const { assert(dofval.size() == m_ndof); Eigen::VectorXd dofval_u(m_nnu,1); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) dofval_u(d) = dofval(m_iiu(d)); return dofval_u; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitioned<Solver>::asDofs_u( const xt::xtensor<double,2> &nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_u(m_nnu,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) < m_nnu) dofval_u(m_part(m,i)) = nodevec(m,i); return dofval_u; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitioned<Solver>::asDofs_p( const xt::xtensor<double,1> &dofval) const { assert(dofval.size() == m_ndof); Eigen::VectorXd dofval_p(m_nnp,1); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) dofval_p(d) = dofval(m_iip(d)); return dofval_p; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitioned<Solver>::asDofs_p( const xt::xtensor<double,2> &nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_p(m_nnp,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) dofval_p(m_part(m,i)-m_nnu) = nodevec(m,i); return dofval_p; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixPartitionedTyings.h b/include/GooseFEM/MatrixPartitionedTyings.h index 930b3d0..44e4bd3 100644 --- a/include/GooseFEM/MatrixPartitionedTyings.h +++ b/include/GooseFEM/MatrixPartitionedTyings.h @@ -1,167 +1,182 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXPARTITIONEDTYINGS_H #define GOOSEFEM_MATRIXPARTITIONEDTYINGS_H // ------------------------------------------------------------------------------------------------- #include "config.h" #include <Eigen/Eigen> #include <Eigen/Sparse> #include <Eigen/SparseCholesky> // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- template <class Solver = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>> class MatrixPartitionedTyings { public: // Constructors MatrixPartitionedTyings() = default; MatrixPartitionedTyings( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs, const Eigen::SparseMatrix<double>& Cdu, const Eigen::SparseMatrix<double>& Cdp); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs size_t nnu() const; // number of independent, unknown DOFs size_t nnp() const; // number of independent, prescribed DOFs size_t nni() const; // number of independent DOFs size_t nnd() const; // number of dependent DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs xt::xtensor<size_t,1> iiu() const; // independent, unknown DOFs xt::xtensor<size_t,1> iip() const; // independent, prescribed DOFs xt::xtensor<size_t,1> iii() const; // independent DOFs xt::xtensor<size_t,1> iid() const; // dependent DOFs // Assemble from matrices stored per element [nelem, nne*ndim, nne*ndim] - void assemble(const xt::xtensor<double,3> &elemmat); + void assemble(const xt::xtensor<double,3>& elemmat); // Solve: // A' = A_ii + K_id * C_di + C_di^T * K_di + C_di^T * K_dd * C_di // b' = b_i + C_di^T * b_d // x_u = A'_uu \ ( b'_u - A'_up * x_p ) // x_i = [x_u, x_p] // x_d = C_di * x_i void solve( - const xt::xtensor<double,2> &b, - xt::xtensor<double,2> &x); // modified with "x_u", "x_d" + const xt::xtensor<double,2>& b, + xt::xtensor<double,2>& x); // modified with "x_u", "x_d" void solve( - const xt::xtensor<double,1> &b, - xt::xtensor<double,1> &x); // modified with "x_u", "x_d" + const xt::xtensor<double,1>& b, + xt::xtensor<double,1>& x); // modified with "x_u", "x_d" void solve_u( - const xt::xtensor<double,1> &b_u, - const xt::xtensor<double,1> &b_d, - const xt::xtensor<double,1> &x_p, - xt::xtensor<double,1> &x_u); // overwritten + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& b_d, + const xt::xtensor<double,1>& x_p, + xt::xtensor<double,1>& x_u); // overwritten + + // Auto-allocation of the functions above + + xt::xtensor<double,2> Solve( + const xt::xtensor<double,2>& b, + const xt::xtensor<double,2>& x); + + xt::xtensor<double,1> Solve( + const xt::xtensor<double,1>& b, + const xt::xtensor<double,1>& x); + + xt::xtensor<double,1> Solve_u( + const xt::xtensor<double,1>& b_u, + const xt::xtensor<double,1>& b_d, + const xt::xtensor<double,1>& x_p); private: // The matrix Eigen::SparseMatrix<double> m_Auu; Eigen::SparseMatrix<double> m_Aup; Eigen::SparseMatrix<double> m_Apu; Eigen::SparseMatrix<double> m_App; Eigen::SparseMatrix<double> m_Aud; Eigen::SparseMatrix<double> m_Apd; Eigen::SparseMatrix<double> m_Adu; Eigen::SparseMatrix<double> m_Adp; Eigen::SparseMatrix<double> m_Add; // The matrix for which the tyings have been applied Eigen::SparseMatrix<double> m_ACuu; Eigen::SparseMatrix<double> m_ACup; Eigen::SparseMatrix<double> m_ACpu; Eigen::SparseMatrix<double> m_ACpp; // Matrix entries std::vector<Eigen::Triplet<double>> m_Tuu; std::vector<Eigen::Triplet<double>> m_Tup; std::vector<Eigen::Triplet<double>> m_Tpu; std::vector<Eigen::Triplet<double>> m_Tpp; std::vector<Eigen::Triplet<double>> m_Tud; std::vector<Eigen::Triplet<double>> m_Tpd; std::vector<Eigen::Triplet<double>> m_Tdu; std::vector<Eigen::Triplet<double>> m_Tdp; std::vector<Eigen::Triplet<double>> m_Tdd; // Solver (re-used to solve different RHS) Solver m_solver; // Signal changes to data compare to the last inverse bool m_factor=false; // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] xt::xtensor<size_t,1> m_iiu; // unknown DOFs [nnu] xt::xtensor<size_t,1> m_iip; // prescribed DOFs [nnp] xt::xtensor<size_t,1> m_iid; // dependent DOFs [nnd] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs size_t m_nnu; // number of independent, unknown DOFs size_t m_nnp; // number of independent, prescribed DOFs size_t m_nni; // number of independent DOFs size_t m_nnd; // number of dependent DOFs // Tyings Eigen::SparseMatrix<double> m_Cdu; Eigen::SparseMatrix<double> m_Cdp; Eigen::SparseMatrix<double> m_Cud; Eigen::SparseMatrix<double> m_Cpd; // Compute inverse (automatically evaluated by "solve") void factorize(); // Convert arrays (Eigen version of VectorPartitioned, which contains public functions) - Eigen::VectorXd asDofs_u(const xt::xtensor<double,1> &dofval ) const; - Eigen::VectorXd asDofs_u(const xt::xtensor<double,2> &nodevec) const; - Eigen::VectorXd asDofs_p(const xt::xtensor<double,1> &dofval ) const; - Eigen::VectorXd asDofs_p(const xt::xtensor<double,2> &nodevec) const; - Eigen::VectorXd asDofs_d(const xt::xtensor<double,1> &dofval ) const; - Eigen::VectorXd asDofs_d(const xt::xtensor<double,2> &nodevec) const; + Eigen::VectorXd asDofs_u(const xt::xtensor<double,1>& dofval ) const; + Eigen::VectorXd asDofs_u(const xt::xtensor<double,2>& nodevec) const; + Eigen::VectorXd asDofs_p(const xt::xtensor<double,1>& dofval ) const; + Eigen::VectorXd asDofs_p(const xt::xtensor<double,2>& nodevec) const; + Eigen::VectorXd asDofs_d(const xt::xtensor<double,1>& dofval ) const; + Eigen::VectorXd asDofs_d(const xt::xtensor<double,2>& nodevec) const; }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "MatrixPartitionedTyings.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/MatrixPartitionedTyings.hpp b/include/GooseFEM/MatrixPartitionedTyings.hpp index 1590494..15d3783 100644 --- a/include/GooseFEM/MatrixPartitionedTyings.hpp +++ b/include/GooseFEM/MatrixPartitionedTyings.hpp @@ -1,462 +1,537 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MATRIXPARTITIONEDTYINGS_HPP #define GOOSEFEM_MATRIXPARTITIONEDTYINGS_HPP // ------------------------------------------------------------------------------------------------- #include "MatrixPartitionedTyings.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- template <class Solver> inline MatrixPartitionedTyings<Solver>::MatrixPartitionedTyings( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs, const Eigen::SparseMatrix<double>& Cdu, const Eigen::SparseMatrix<double>& Cdp) : m_conn(conn), m_dofs(dofs), m_Cdu(Cdu), m_Cdp(Cdp) { GOOSEFEM_ASSERT(Cdu.rows() == Cdp.rows()); - m_nnu = static_cast<size_t>(m_Cdu.cols()); - m_nnp = static_cast<size_t>(m_Cdp.cols()); - m_nnd = static_cast<size_t>(m_Cdp.rows()); - m_nni = m_nnu + m_nnp; - m_ndof = m_nni + m_nnd; + m_nnu = static_cast<size_t>(m_Cdu.cols()); + m_nnp = static_cast<size_t>(m_Cdp.cols()); + m_nnd = static_cast<size_t>(m_Cdp.rows()); + m_nni = m_nnu + m_nnp; + m_ndof = m_nni + m_nnd; - m_iiu = xt::arange<size_t>(m_nnu); - m_iip = xt::arange<size_t>(m_nnu, m_nnu + m_nnp); - m_iid = xt::arange<size_t>(m_nni, m_nni + m_nnd); + m_iiu = xt::arange<size_t>(m_nnu); + m_iip = xt::arange<size_t>(m_nnu, m_nnu + m_nnp); + m_iid = xt::arange<size_t>(m_nni, m_nni + m_nnd); - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); - m_Cud = m_Cdu.transpose(); - m_Cpd = m_Cdp.transpose(); + m_Cud = m_Cdu.transpose(); + m_Cpd = m_Cdp.transpose(); m_Tuu.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tup.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tpu.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tpp.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tud.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tpd.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tdu.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tdp.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Tdd.reserve(m_nelem*m_nne*m_ndim*m_nne*m_ndim); m_Auu.resize(m_nnu,m_nnu); m_Aup.resize(m_nnu,m_nnp); m_Apu.resize(m_nnp,m_nnu); m_App.resize(m_nnp,m_nnp); m_Aud.resize(m_nnu,m_nnd); m_Apd.resize(m_nnp,m_nnd); m_Adu.resize(m_nnd,m_nnu); m_Adp.resize(m_nnd,m_nnp); m_Add.resize(m_nnd,m_nnd); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); GOOSEFEM_ASSERT(m_ndof == xt::amax(m_dofs)[0] + 1); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline size_t MatrixPartitionedTyings<Solver>::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,2> MatrixPartitionedTyings<Solver>::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitionedTyings<Solver>::iiu() const { return m_iiu; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitionedTyings<Solver>::iip() const { return m_iip; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitionedTyings<Solver>::iii() const { return xt::arange<size_t>(m_nni); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline xt::xtensor<size_t,1> MatrixPartitionedTyings<Solver>::iid() const { return m_iid; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitionedTyings<Solver>::factorize() { if (!m_factor) return; m_ACuu = m_Auu + m_Aud * m_Cdu + m_Cud * m_Adu + m_Cud * m_Add * m_Cdu; m_ACup = m_Aup + m_Aud * m_Cdp + m_Cud * m_Adp + m_Cud * m_Add * m_Cdp; // m_ACpu = m_Apu + m_Apd * m_Cdu + m_Cpd * m_Adu + m_Cpd * m_Add * m_Cdu; // m_ACpp = m_App + m_Apd * m_Cdp + m_Cpd * m_Adp + m_Cpd * m_Add * m_Cdp; m_solver.compute(m_ACuu); m_factor = false; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitionedTyings<Solver>::assemble(const xt::xtensor<double,3>& elemmat) { GOOSEFEM_ASSERT(elemmat.shape() ==\ std::decay_t<decltype(elemmat)>::shape_type({m_nelem, m_nne*m_ndim, m_nne*m_ndim})); m_Tuu.clear(); m_Tup.clear(); m_Tpu.clear(); m_Tpp.clear(); m_Tud.clear(); m_Tpd.clear(); m_Tdu.clear(); m_Tdp.clear(); m_Tdd.clear(); for (size_t e = 0 ; e < m_nelem ; ++e) { for (size_t m = 0 ; m < m_nne ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { size_t di = m_dofs(m_conn(e,m),i); for (size_t n = 0 ; n < m_nne ; ++n) { for (size_t j = 0 ; j < m_ndim ; ++j) { size_t dj = m_dofs(m_conn(e,n),j); - if (di < m_nnu and dj < m_nnu) - m_Tuu.push_back(Eigen::Triplet<double>(di ,dj ,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nnu and dj < m_nni) - m_Tup.push_back(Eigen::Triplet<double>(di ,dj-m_nnu,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nnu) - m_Tud.push_back(Eigen::Triplet<double>(di ,dj-m_nni,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nni and dj < m_nnu) - m_Tpu.push_back(Eigen::Triplet<double>(di-m_nnu,dj ,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nni and dj < m_nni) - m_Tpp.push_back(Eigen::Triplet<double>(di-m_nnu,dj-m_nnu,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (di < m_nni) - m_Tpd.push_back(Eigen::Triplet<double>(di-m_nnu,dj-m_nni,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (dj < m_nnu) - m_Tdu.push_back(Eigen::Triplet<double>(di-m_nni,dj ,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else if (dj < m_nni) - m_Tdp.push_back(Eigen::Triplet<double>(di-m_nni,dj-m_nnu,elemmat(e,m*m_ndim+i,n*m_ndim+j))); - else - m_Tdd.push_back(Eigen::Triplet<double>(di-m_nni,dj-m_nni,elemmat(e,m*m_ndim+i,n*m_ndim+j))); + if (di < m_nnu && dj < m_nnu) { + m_Tuu.push_back(Eigen::Triplet<double>( + di, + dj, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nnu && dj < m_nni) { + m_Tup.push_back(Eigen::Triplet<double>( + di, + dj - m_nnu, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nnu) { + m_Tud.push_back(Eigen::Triplet<double>( + di, + dj - m_nni, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nni && dj < m_nnu) { + m_Tpu.push_back(Eigen::Triplet<double>( + di - m_nnu, + dj, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nni && dj < m_nni) { + m_Tpp.push_back(Eigen::Triplet<double>( + di - m_nnu, + dj - m_nnu, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (di < m_nni) { + m_Tpd.push_back(Eigen::Triplet<double>( + di - m_nnu, + dj - m_nni, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (dj < m_nnu) { + m_Tdu.push_back(Eigen::Triplet<double>( + di - m_nni, + dj, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else if (dj < m_nni) { + m_Tdp.push_back(Eigen::Triplet<double>( + di - m_nni, + dj - m_nnu, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } + else { + m_Tdd.push_back(Eigen::Triplet<double>( + di - m_nni, + dj - m_nni, + elemmat(e, m * m_ndim + i, n * m_ndim + j))); + } } } } } } m_Auu.setFromTriplets(m_Tuu.begin(), m_Tuu.end()); m_Aup.setFromTriplets(m_Tup.begin(), m_Tup.end()); m_Apu.setFromTriplets(m_Tpu.begin(), m_Tpu.end()); m_App.setFromTriplets(m_Tpp.begin(), m_Tpp.end()); m_Aud.setFromTriplets(m_Tud.begin(), m_Tud.end()); m_Apd.setFromTriplets(m_Tpd.begin(), m_Tpd.end()); m_Adu.setFromTriplets(m_Tdu.begin(), m_Tdu.end()); m_Adp.setFromTriplets(m_Tdp.begin(), m_Tdp.end()); m_Add.setFromTriplets(m_Tdd.begin(), m_Tdd.end()); m_factor = true; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitionedTyings<Solver>::solve( const xt::xtensor<double,2>& b, xt::xtensor<double,2>& x) { GOOSEFEM_ASSERT(b.shape() ==\ std::decay_t<decltype(b)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(x.shape() ==\ std::decay_t<decltype(x)>::shape_type({m_nnode, m_ndim})); this->factorize(); Eigen::VectorXd B_u = this->asDofs_u(b); Eigen::VectorXd B_d = this->asDofs_d(b); Eigen::VectorXd X_p = this->asDofs_p(x); B_u += m_Cud * B_d; Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_ACup * X_p)); Eigen::VectorXd X_d = m_Cdu * X_u + m_Cdp * X_p; #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { if (m_dofs(m,i) < m_nnu) x(m,i) = X_u(m_dofs(m,i)); else if (m_dofs(m,i) >= m_nni) x(m,i) = X_d(m_dofs(m,i)-m_nni); } } } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitionedTyings<Solver>::solve( const xt::xtensor<double,1>& b, xt::xtensor<double,1>& x) { GOOSEFEM_ASSERT(b.size() == m_ndof); GOOSEFEM_ASSERT(x.size() == m_ndof); this->factorize(); Eigen::VectorXd B_u = this->asDofs_u(b); Eigen::VectorXd B_d = this->asDofs_d(b); Eigen::VectorXd X_p = this->asDofs_p(x); Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_ACup * X_p)); Eigen::VectorXd X_d = m_Cdu * X_u + m_Cdp * X_p; #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) x(m_iiu(d)) = X_u(d); #pragma omp parallel for for (size_t d = 0 ; d < m_nnd ; ++d) x(m_iid(d)) = X_d(d); } // ------------------------------------------------------------------------------------------------- template <class Solver> inline void MatrixPartitionedTyings<Solver>::solve_u( const xt::xtensor<double,1>& b_u, const xt::xtensor<double,1>& b_d, const xt::xtensor<double,1>& x_p, xt::xtensor<double,1>& x_u) { GOOSEFEM_ASSERT(b_u.size() == m_nnu); GOOSEFEM_ASSERT(b_d.size() == m_nnd); GOOSEFEM_ASSERT(x_p.size() == m_nnp); GOOSEFEM_ASSERT(x_u.size() == m_nnu); this->factorize(); Eigen::VectorXd B_u(m_nnu,1); Eigen::VectorXd B_d(m_nnd,1); Eigen::VectorXd X_p(m_nnp,1); std::copy(b_u.begin(), b_u.end(), B_u.data()); std::copy(b_d.begin(), b_d.end(), B_d.data()); std::copy(x_p.begin(), x_p.end(), X_p.data()); Eigen::VectorXd X_u = m_solver.solve(Eigen::VectorXd(B_u - m_ACup * X_p)); std::copy(X_u.data(), X_u.data()+m_nnu, x_u.begin()); } // ------------------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------------------------- + +template <class Solver> +inline xt::xtensor<double,2> MatrixPartitionedTyings<Solver>::Solve( + const xt::xtensor<double,2> &b, + const xt::xtensor<double,2> &x) +{ + xt::xtensor<double,2> out = x; + this->solve(b, out); + return out; +} + +// ------------------------------------------------------------------------------------------------- + +template <class Solver> +inline xt::xtensor<double,1> MatrixPartitionedTyings<Solver>::Solve( + const xt::xtensor<double,1> &b, + const xt::xtensor<double,1> &x) +{ + xt::xtensor<double,1> out = x; + this->solve(b, out); + return out; +} + +// ------------------------------------------------------------------------------------------------- + +template <class Solver> +inline xt::xtensor<double,1> MatrixPartitionedTyings<Solver>::Solve_u( + const xt::xtensor<double,1> &b_u, + const xt::xtensor<double,1> &b_d, + const xt::xtensor<double,1> &x_p) +{ + xt::xtensor<double,1> x_u = xt::empty<double>({m_nnu}); + this->solve_u(b_u, b_d, x_p, x_u); + return x_u; +} + +// ------------------------------------------------------------------------------------------------- + template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_u( const xt::xtensor<double,1>& dofval) const { assert(dofval.size() == m_ndof); Eigen::VectorXd dofval_u(m_nnu,1); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) dofval_u(d) = dofval(m_iiu(d)); return dofval_u; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_u( const xt::xtensor<double,2>& nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_u(m_nnu,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_dofs(m,i) < m_nnu) dofval_u(m_dofs(m,i)) = nodevec(m,i); return dofval_u; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_p( const xt::xtensor<double,1>& dofval) const { assert(dofval.size() == m_ndof); Eigen::VectorXd dofval_p(m_nnp,1); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) dofval_p(d) = dofval(m_iip(d)); return dofval_p; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_p( const xt::xtensor<double,2>& nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_p(m_nnp,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) - if (m_dofs(m,i) >= m_nnu and m_dofs(m,i) < m_nni) + if (m_dofs(m,i) >= m_nnu && m_dofs(m,i) < m_nni) dofval_p(m_dofs(m,i)-m_nnu) = nodevec(m,i); return dofval_p; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_d( const xt::xtensor<double,1>& dofval) const { assert(dofval.size() == m_ndof); Eigen::VectorXd dofval_d(m_nnd,1); #pragma omp parallel for for (size_t d = 0 ; d < m_nnd ; ++d) dofval_d(d) = dofval(m_iip(d)); return dofval_d; } // ------------------------------------------------------------------------------------------------- template <class Solver> inline Eigen::VectorXd MatrixPartitionedTyings<Solver>::asDofs_d( const xt::xtensor<double,2>& nodevec) const { assert(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_d(m_nnd,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_dofs(m,i) >= m_nni) dofval_d(m_dofs(m,i)-m_nni) = nodevec(m,i); return dofval_d; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/Mesh.hpp b/include/GooseFEM/Mesh.hpp index 4c89666..e672a5b 100644 --- a/include/GooseFEM/Mesh.hpp +++ b/include/GooseFEM/Mesh.hpp @@ -1,193 +1,193 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MESH_HPP #define GOOSEFEM_MESH_HPP // ------------------------------------------------------------------------------------------------- #include "Mesh.h" // ================================================================================================= namespace GooseFEM { namespace Mesh { // ------------------------------------------------------------------------------------------------- inline Renumber::Renumber(const xt::xarray<size_t>& dofs) { size_t n = xt::amax(dofs)[0]+1; size_t i = 0; xt::xtensor<size_t,1> unique = xt::unique(dofs); m_renum = xt::empty<size_t>({n}); for (auto& j : unique) { m_renum(j) = i; ++i; } } // ------------------------------------------------------------------------------------------------- // apply renumbering, e.g. for a matrix: // // out(i,j) = renum(list(i,j)) template <class T> T Renumber::apply(const T& list) const { T out = T::from_shape(list.shape()); auto jt = out.begin(); - for ( auto it = list.begin() ; it != list.end() ; ++it, ++jt ) + for (auto it = list.begin(); it != list.end(); ++it, ++jt) *jt = m_renum(*it); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Renumber::get(const xt::xtensor<size_t,2>& dofs) const { return this->apply(dofs); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Renumber::index() const { return m_renum; } // ------------------------------------------------------------------------------------------------- inline Reorder::Reorder(const std::initializer_list<xt::xtensor<size_t,1>> args) { size_t n = 0; size_t i = 0; for (auto& arg : args) { if (arg.size() == 0) continue; n = std::max(n, xt::amax(arg)[0]+1); } #ifdef GOOSEFEM_ENABLE_ASSERT for (auto& arg : args) GOOSEFEM_ASSERT(xt::unique(arg) == xt::sort(arg)); #endif m_renum = xt::empty<size_t>({n}); for (auto& arg : args) { for (auto& j : arg) { m_renum(j) = i; ++i; } } } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Reorder::get(const xt::xtensor<size_t,2>& dofs) const { return this->apply(dofs); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Reorder::index() const { return m_renum; } // ------------------------------------------------------------------------------------------------- // apply renumbering, e.g. for a matrix: // // out(i,j) = renum(list(i,j)) template <class T> T Reorder::apply(const T& list) const { T out = T::from_shape(list.shape()); auto jt = out.begin(); - for ( auto it = list.begin() ; it != list.end() ; ++it, ++jt ) + for (auto it = list.begin(); it != list.end(); ++it, ++jt) *jt = m_renum(*it); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> renumber(const xt::xtensor<size_t,2> &dofs) { return Renumber(dofs).get(dofs); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> dofs(size_t nnode, size_t ndim) { return xt::reshape_view(xt::arange<size_t>(nnode*ndim),{nnode,ndim}); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> coordination(const xt::xtensor<size_t,2> &conn) { // get number of nodes size_t nnode = xt::amax(conn)[0] + 1; // number of elements connected to each node // - allocate xt::xtensor<size_t,1> N = xt::zeros<size_t>({nnode}); // - fill from connectivity - for ( auto it = conn.begin(); it != conn.end(); ++it ) N(*it) += 1; + for (auto it = conn.begin(); it != conn.end(); ++it) N(*it) += 1; return N; } // ------------------------------------------------------------------------------------------------- inline std::vector<std::vector<size_t>> elem2node(const xt::xtensor<size_t,2> &conn) { // get coordination per node auto N = coordination(conn); // get number of nodes auto nnode = N.size(); // allocate std::vector<std::vector<size_t>> out; // reserve outer size out.resize(nnode); // reserve inner sizes - for ( size_t i = 0 ; i < nnode ; ++i ) + for (size_t i = 0; i < nnode; ++i ) out[i].reserve(N(i)); // fill - for ( size_t e = 0 ; e < conn.shape()[0] ; ++e ) - for ( size_t m = 0 ; m < conn.shape()[1] ; ++m ) + for (size_t e = 0; e < conn.shape(0); ++e) + for (size_t m = 0; m < conn.shape(1); ++m) out[conn(e,m)].push_back(e); return out; } // ------------------------------------------------------------------------------------------------- }} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MeshHex8.hpp b/include/GooseFEM/MeshHex8.hpp index 076fdf0..5ea91ae 100644 --- a/include/GooseFEM/MeshHex8.hpp +++ b/include/GooseFEM/MeshHex8.hpp @@ -1,2633 +1,2633 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MESHHEX8_HPP #define GOOSEFEM_MESHHEX8_HPP // ------------------------------------------------------------------------------------------------- #include "MeshHex8.h" // ================================================================================================= namespace GooseFEM { namespace Mesh { namespace Hex8 { // ------------------------------------------------------------------------------------------------- inline Regular::Regular(size_t nelx, size_t nely, size_t nelz, double h): m_h(h), m_nelx(nelx), m_nely(nely), m_nelz(nelz) { GOOSEFEM_ASSERT(m_nelx >= 1ul); GOOSEFEM_ASSERT(m_nely >= 1ul); GOOSEFEM_ASSERT(m_nelz >= 1ul); m_nnode = (m_nelx+1) * (m_nely+1) * (m_nelz+1); m_nelem = m_nelx * m_nely * m_nelz ; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline ElementType Regular::getElementType() const { return ElementType::Hex8; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Regular::coor() const { xt::xtensor<double,2> out = xt::empty<double>({m_nnode, m_ndim}); xt::xtensor<double,1> x = xt::linspace<double>(0.0, m_h*static_cast<double>(m_nelx), m_nelx+1); xt::xtensor<double,1> y = xt::linspace<double>(0.0, m_h*static_cast<double>(m_nely), m_nely+1); xt::xtensor<double,1> z = xt::linspace<double>(0.0, m_h*static_cast<double>(m_nelz), m_nelz+1); size_t inode = 0; for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) { for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) { for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) { out(inode,0) = x(ix); out(inode,1) = y(iy); out(inode,2) = z(iz); ++inode; } } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::conn() const { xt::xtensor<size_t,2> out = xt::empty<size_t>({m_nelem,m_nne}); size_t ielem = 0; for ( size_t iz = 0 ; iz < m_nelz ; ++iz ) { for ( size_t iy = 0 ; iy < m_nely ; ++iy ) { for ( size_t ix = 0 ; ix < m_nelx ; ++ix ) { out(ielem,0) = (iy )*(m_nelx+1) + (ix ) + (iz )*(m_nely+1)*(m_nelx+1); out(ielem,1) = (iy )*(m_nelx+1) + (ix+1) + (iz )*(m_nely+1)*(m_nelx+1); out(ielem,3) = (iy+1)*(m_nelx+1) + (ix ) + (iz )*(m_nely+1)*(m_nelx+1); out(ielem,2) = (iy+1)*(m_nelx+1) + (ix+1) + (iz )*(m_nely+1)*(m_nelx+1); out(ielem,4) = (iy )*(m_nelx+1) + (ix ) + (iz+1)*(m_nely+1)*(m_nelx+1); out(ielem,5) = (iy )*(m_nelx+1) + (ix+1) + (iz+1)*(m_nely+1)*(m_nelx+1); out(ielem,7) = (iy+1)*(m_nelx+1) + (ix ) + (iz+1)*(m_nely+1)*(m_nelx+1); out(ielem,6) = (iy+1)*(m_nelx+1) + (ix+1) + (iz+1)*(m_nely+1)*(m_nelx+1); ++ielem; } } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFront() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx+1)*(m_nely+1)}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(iy*(m_nelx+1)+ix) = iy*(m_nelx+1) + ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBack() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx+1)*(m_nely+1)}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(iy*(m_nelx+1)+ix) = iy*(m_nelx+1) + ix + m_nelz*(m_nely+1)*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesLeft() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nely+1)*(m_nelz+1)}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iz*(m_nely+1)+iy) = iy*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesRight() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nely+1)*(m_nelz+1)}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iz*(m_nely+1)+iy) = iy*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottom() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx+1)*(m_nelz+1)}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(iz*(m_nelx+1)+ix) = ix + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTop() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx+1)*(m_nelz+1)}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(iz*(m_nelx+1)+ix) = ix + m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx-1)*(m_nely-1)}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out((iy-1)*(m_nelx-1)+(ix-1)) = iy*(m_nelx+1) + ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx-1)*(m_nely-1)}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) { for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) { out((iy-1)*(m_nelx-1)+(ix-1)) = iy*(m_nelx+1) + ix + m_nelz*(m_nely+1)*(m_nelx+1); } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesLeftFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nely-1)*(m_nelz-1)}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out((iz-1)*(m_nely-1)+(iy-1)) = iy*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesRightFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nely-1)*(m_nelz-1)}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out((iz-1)*(m_nely-1)+(iy-1)) = iy*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx-1)*(m_nelz-1)}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out((iz-1)*(m_nelx-1)+(ix-1)) = ix + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopFace() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx-1)*(m_nelz-1)}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out((iz-1)*(m_nelx-1)+(ix-1)) = ix + m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontBottomEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(ix) = ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontTopEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(ix) = ix + m_nely*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iy) = iy*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iy) = iy*(m_nelx+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackBottomEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(ix) = ix + m_nelz*(m_nely+1)*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackTopEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) out(ix) = m_nely*(m_nelx+1) + ix + m_nelz*(m_nely+1)*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iy) = iy*(m_nelx+1) + m_nelz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) out(iy) = iy*(m_nelx+1) + m_nelz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz+1}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) out(iz) = iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz+1}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) out(iz) = iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz+1}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) out(iz) = m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz+1}); for ( size_t iz = 0 ; iz < m_nelz+1 ; ++iz ) out(iz) = m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomFrontEdge() const { return nodesFrontBottomEdge(); } inline xt::xtensor<size_t,1> Regular::nodesBottomBackEdge() const { return nodesBackBottomEdge(); } inline xt::xtensor<size_t,1> Regular::nodesTopFrontEdge() const { return nodesFrontTopEdge(); } inline xt::xtensor<size_t,1> Regular::nodesTopBackEdge() const { return nodesBackTopEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftBottomEdge() const { return nodesBottomLeftEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftFrontEdge() const { return nodesFrontLeftEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftBackEdge() const { return nodesBackLeftEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftTopEdge() const { return nodesTopLeftEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightBottomEdge() const { return nodesBottomRightEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightTopEdge() const { return nodesTopRightEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightFrontEdge() const { return nodesFrontRightEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightBackEdge() const { return nodesBackRightEdge(); } // ------------------- node-numbers along the front-bottom edge, without corners ------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontBottomOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out(ix-1) = ix; return out; } // -------------------- node-numbers along the front-top edge, without corners --------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontTopOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out(ix-1) = ix + m_nely*(m_nelx+1); return out; } // -------------------- node-numbers along the front-left edge, without corners -------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out(iy-1) = iy*(m_nelx+1); return out; } // ------------------- node-numbers along the front-right edge, without corners -------------------- inline xt::xtensor<size_t,1> Regular::nodesFrontRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out(iy-1) = iy*(m_nelx+1) + m_nelx; return out; } // ------------------- node-numbers along the back-bottom edge, without corners -------------------- inline xt::xtensor<size_t,1> Regular::nodesBackBottomOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out(ix-1) = ix + m_nelz*(m_nely+1)*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBackTopOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) out(ix-1) = m_nely*(m_nelx+1) + ix + m_nelz*(m_nely+1)*(m_nelx+1); return out; } // -------------------- node-numbers along the back-left edge, without corners --------------------- inline xt::xtensor<size_t,1> Regular::nodesBackLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out(iy-1) = iy*(m_nelx+1) + m_nelz*(m_nelx+1)*(m_nely+1); return out; } // -------------------- node-numbers along the back-right edge, without corners -------------------- inline xt::xtensor<size_t,1> Regular::nodesBackRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); for ( size_t iy = 1 ; iy < m_nely ; ++iy ) out(iy-1) = iy*(m_nelx+1) + m_nelz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------- node-numbers along the bottom-left edge, without corners -------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz-1}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) out(iz-1) = iz*(m_nelx+1)*(m_nely+1); return out; } // ------------------- node-numbers along the bottom-right edge, without corners ------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz-1}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) out(iz-1) = iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz-1}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) out(iz-1) = m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1); return out; } // -------------------- node-numbers along the top-right edge, without corners --------------------- inline xt::xtensor<size_t,1> Regular::nodesTopRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz-1}); for ( size_t iz = 1 ; iz < m_nelz ; ++iz ) out(iz-1) = m_nely*(m_nelx+1) + iz*(m_nelx+1)*(m_nely+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomFrontOpenEdge() const { return nodesFrontBottomOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesBottomBackOpenEdge() const { return nodesBackBottomOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesTopFrontOpenEdge() const { return nodesFrontTopOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesTopBackOpenEdge() const { return nodesBackTopOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftBottomOpenEdge() const { return nodesBottomLeftOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftFrontOpenEdge() const { return nodesFrontLeftOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftBackOpenEdge() const { return nodesBackLeftOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesLeftTopOpenEdge() const { return nodesTopLeftOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightBottomOpenEdge() const { return nodesBottomRightOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightTopOpenEdge() const { return nodesTopRightOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightFrontOpenEdge() const { return nodesFrontRightOpenEdge(); } inline xt::xtensor<size_t,1> Regular::nodesRightBackOpenEdge() const { return nodesBackRightOpenEdge(); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesFrontBottomLeftCorner() const { return 0; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesFrontBottomRightCorner() const { return m_nelx; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesFrontTopLeftCorner() const { return m_nely*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesFrontTopRightCorner() const { return m_nely*(m_nelx+1) + m_nelx; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBackBottomLeftCorner() const { return m_nelz*(m_nely+1)*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBackBottomRightCorner() const { return m_nelx + m_nelz*(m_nely+1)*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBackTopLeftCorner() const { return m_nely*(m_nelx+1) + m_nelz*(m_nely+1)*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBackTopRightCorner() const { return m_nely*(m_nelx+1) + m_nelx + m_nelz*(m_nely+1)*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesFrontLeftBottomCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t Regular::nodesBottomFrontLeftCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t Regular::nodesBottomLeftFrontCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t Regular::nodesLeftFrontBottomCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t Regular::nodesLeftBottomFrontCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t Regular::nodesFrontRightBottomCorner()const { return nodesFrontBottomRightCorner(); } inline size_t Regular::nodesBottomFrontRightCorner()const { return nodesFrontBottomRightCorner(); } inline size_t Regular::nodesBottomRightFrontCorner()const { return nodesFrontBottomRightCorner(); } inline size_t Regular::nodesRightFrontBottomCorner()const { return nodesFrontBottomRightCorner(); } inline size_t Regular::nodesRightBottomFrontCorner()const { return nodesFrontBottomRightCorner(); } inline size_t Regular::nodesFrontLeftTopCorner() const { return nodesFrontTopLeftCorner(); } inline size_t Regular::nodesTopFrontLeftCorner() const { return nodesFrontTopLeftCorner(); } inline size_t Regular::nodesTopLeftFrontCorner() const { return nodesFrontTopLeftCorner(); } inline size_t Regular::nodesLeftFrontTopCorner() const { return nodesFrontTopLeftCorner(); } inline size_t Regular::nodesLeftTopFrontCorner() const { return nodesFrontTopLeftCorner(); } inline size_t Regular::nodesFrontRightTopCorner() const { return nodesFrontTopRightCorner(); } inline size_t Regular::nodesTopFrontRightCorner() const { return nodesFrontTopRightCorner(); } inline size_t Regular::nodesTopRightFrontCorner() const { return nodesFrontTopRightCorner(); } inline size_t Regular::nodesRightFrontTopCorner() const { return nodesFrontTopRightCorner(); } inline size_t Regular::nodesRightTopFrontCorner() const { return nodesFrontTopRightCorner(); } inline size_t Regular::nodesBackLeftBottomCorner() const { return nodesBackBottomLeftCorner(); } inline size_t Regular::nodesBottomBackLeftCorner() const { return nodesBackBottomLeftCorner(); } inline size_t Regular::nodesBottomLeftBackCorner() const { return nodesBackBottomLeftCorner(); } inline size_t Regular::nodesLeftBackBottomCorner() const { return nodesBackBottomLeftCorner(); } inline size_t Regular::nodesLeftBottomBackCorner() const { return nodesBackBottomLeftCorner(); } inline size_t Regular::nodesBackRightBottomCorner() const { return nodesBackBottomRightCorner(); } inline size_t Regular::nodesBottomBackRightCorner() const { return nodesBackBottomRightCorner(); } inline size_t Regular::nodesBottomRightBackCorner() const { return nodesBackBottomRightCorner(); } inline size_t Regular::nodesRightBackBottomCorner() const { return nodesBackBottomRightCorner(); } inline size_t Regular::nodesRightBottomBackCorner() const { return nodesBackBottomRightCorner(); } inline size_t Regular::nodesBackLeftTopCorner() const { return nodesBackTopLeftCorner(); } inline size_t Regular::nodesTopBackLeftCorner() const { return nodesBackTopLeftCorner(); } inline size_t Regular::nodesTopLeftBackCorner() const { return nodesBackTopLeftCorner(); } inline size_t Regular::nodesLeftBackTopCorner() const { return nodesBackTopLeftCorner(); } inline size_t Regular::nodesLeftTopBackCorner() const { return nodesBackTopLeftCorner(); } inline size_t Regular::nodesBackRightTopCorner() const { return nodesBackTopRightCorner(); } inline size_t Regular::nodesTopBackRightCorner() const { return nodesBackTopRightCorner(); } inline size_t Regular::nodesTopRightBackCorner() const { return nodesBackTopRightCorner(); } inline size_t Regular::nodesRightBackTopCorner() const { return nodesBackTopRightCorner(); } inline size_t Regular::nodesRightTopBackCorner() const { return nodesBackTopRightCorner(); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::nodesPeriodic() const { // faces xt::xtensor<size_t,1> fro = nodesFrontFace(); xt::xtensor<size_t,1> bck = nodesBackFace(); xt::xtensor<size_t,1> lft = nodesLeftFace(); xt::xtensor<size_t,1> rgt = nodesRightFace(); xt::xtensor<size_t,1> bot = nodesBottomFace(); xt::xtensor<size_t,1> top = nodesTopFace(); // edges xt::xtensor<size_t,1> froBot = nodesFrontBottomOpenEdge(); xt::xtensor<size_t,1> froTop = nodesFrontTopOpenEdge(); xt::xtensor<size_t,1> froLft = nodesFrontLeftOpenEdge(); xt::xtensor<size_t,1> froRgt = nodesFrontRightOpenEdge(); xt::xtensor<size_t,1> bckBot = nodesBackBottomOpenEdge(); xt::xtensor<size_t,1> bckTop = nodesBackTopOpenEdge(); xt::xtensor<size_t,1> bckLft = nodesBackLeftOpenEdge(); xt::xtensor<size_t,1> bckRgt = nodesBackRightOpenEdge(); xt::xtensor<size_t,1> botLft = nodesBottomLeftOpenEdge(); xt::xtensor<size_t,1> botRgt = nodesBottomRightOpenEdge(); xt::xtensor<size_t,1> topLft = nodesTopLeftOpenEdge(); xt::xtensor<size_t,1> topRgt = nodesTopRightOpenEdge(); // allocate nodal ties // - number of tying per category size_t tface = fro.size() + lft.size() + bot.size(); size_t tedge = 3*froBot.size() + 3*froLft.size() + 3*botLft.size(); size_t tnode = 7; // - allocate xt::xtensor<size_t,2> out = xt::empty<size_t>({tface+tedge+tnode, std::size_t(2)}); // counter size_t i = 0; // tie all corners to one corner out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontBottomRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackBottomRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackBottomLeftCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontTopLeftCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontTopRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackTopRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackTopLeftCorner(); ++i; // tie all corresponding edges to each other (exclude corners) for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = bckBot(j); ++i; } for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = bckTop(j); ++i; } for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = froTop(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = botRgt(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = topRgt(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = topLft(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = froRgt(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = bckRgt(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = bckLft(j); ++i; } // tie faces to each-other for ( size_t j = 0 ; j<fro.size() ; ++j ){ out(i,0) = fro(j); out(i,1) = bck(j); ++i; } for ( size_t j = 0 ; j<lft.size() ; ++j ){ out(i,0) = lft(j); out(i,1) = rgt(j); ++i; } for ( size_t j = 0 ; j<bot.size() ; ++j ){ out(i,0) = bot(j); out(i,1) = top(j); ++i; } return out; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesOrigin() const { return nodesFrontBottomLeftCorner(); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::dofs() const { return GooseFEM::Mesh::dofs(m_nnode,m_ndim); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::dofsPeriodic() const { // DOF-numbers for each component of each node (sequential) xt::xtensor<size_t,2> out = GooseFEM::Mesh::dofs(m_nnode,m_ndim); // periodic node-pairs xt::xtensor<size_t,2> nodePer = nodesPeriodic(); // eliminate 'dependent' DOFs; renumber "out" to be sequential for the remaining DOFs - for ( size_t i = 0 ; i < nodePer.shape()[0] ; ++i ) - for ( size_t j = 0 ; j < m_ndim ; ++j ) + for (size_t i = 0; i < nodePer.shape(0); ++i) + for (size_t j = 0; j < m_ndim; ++j) out(nodePer(i,1),j) = out(nodePer(i,0),j); // renumber "out" to be sequential return GooseFEM::Mesh::renumber(out); } // ------------------------------------------------------------------------------------------------- inline FineLayer::FineLayer(size_t nelx, size_t nely, size_t nelz, double h, size_t nfine): m_h(h) { // basic assumptions GOOSEFEM_ASSERT(nelx >= 1ul); GOOSEFEM_ASSERT(nely >= 1ul); GOOSEFEM_ASSERT(nelz >= 1ul); // store basic info m_Lx = m_h * static_cast<double>(nelx); m_Lz = m_h * static_cast<double>(nelz); // compute element size in y-direction (use symmetry, compute upper half) // ------------------------------------------------------------------------------------------------- // temporary variables size_t nmin, ntot; xt::xtensor<size_t,1> nhx = xt::ones<size_t>({nely}); xt::xtensor<size_t,1> nhy = xt::ones<size_t>({nely}); xt::xtensor<size_t,1> nhz = xt::ones<size_t>({nely}); xt::xtensor<int ,1> refine = -1 * xt::ones<int> ({nely}); // minimum height in y-direction (half of the height because of symmetry) if ( nely % 2 == 0 ) nmin = nely /2; else nmin = (nely +1)/2; // minimum number of fine layers in y-direction (minimum 1, middle layer part of this half) if ( nfine % 2 == 0 ) nfine = nfine /2 + 1; else nfine = (nfine+1)/2; if ( nfine < 1 ) nfine = 1; if ( nfine > nmin ) nfine = nmin; // loop over element layers in y-direction, try to coarsen using these rules: // (1) element size in y-direction <= distance to origin in y-direction // (2) element size in x-(z-)direction should fit the total number of elements in x-(z-)direction // (3) a certain number of layers have the minimum size "1" (are fine) for ( size_t iy = nfine ; ; ) { // initialize current size in y-direction if ( iy == nfine ) ntot = nfine; // check to stop - if ( iy >= nely or ntot >= nmin ) { nely = iy; break; } + if ( iy >= nely || ntot >= nmin ) { nely = iy; break; } // rules (1,2) satisfied: coarsen in x-direction (and z-direction) - if ( 3*nhy(iy) <= ntot and nelx%(3*nhx(iy)) == 0 and ntot+nhy(iy) < nmin ) + if ( 3*nhy(iy) <= ntot && nelx%(3*nhx(iy)) == 0 && ntot+nhy(iy) < nmin ) { // - process refinement in x-direction refine(iy) = 0; nhy (iy) *= 2; auto vnhy = xt::view(nhy, xt::range(iy+1, _)); auto vnhx = xt::view(nhx, xt::range(iy , _)); vnhy *= 3; vnhx *= 3; // - rule (2) satisfied: coarsen next element layer in z-direction - if ( iy+1 < nely and ntot+2*nhy(iy) < nmin ) + if ( iy+1 < nely && ntot+2*nhy(iy) < nmin ) { if ( nelz%(3*nhz(iy+1)) == 0 ) { // - update the number of elements in y-direction ntot += nhy(iy); // - proceed to next element layer in y-direction ++iy; // - process refinement in z-direction refine(iy) = 2; nhy (iy) = nhy(iy-1); auto vnhz = xt::view(nhz, xt::range(iy, _)); vnhz *= 3; } } } // rules (1,2) satisfied: coarse in z-direction - else if ( 3*nhy(iy) <= ntot and nelz%(3*nhz(iy)) == 0 and ntot+nhy(iy) < nmin ) + else if ( 3*nhy(iy) <= ntot && nelz%(3*nhz(iy)) == 0 && ntot+nhy(iy) < nmin ) { // - process refinement in z-direction refine(iy) = 2; nhy (iy) *= 2; auto vnhy = xt::view(nhy, xt::range(iy+1, _)); auto vnhz = xt::view(nhz, xt::range(iy , _)); vnhy *= 3; vnhz *= 3; } // update the number of elements in y-direction ntot += nhy(iy); // proceed to next element layer in y-direction ++iy; // check to stop - if ( iy >= nely or ntot >= nmin ) { nely = iy; break; } + if ( iy >= nely || ntot >= nmin ) { nely = iy; break; } } // symmetrize, compute full information // ------------------------------------------------------------------------------------------------- // allocate mesh constructor parameters m_nhx = xt::empty<size_t>({nely*2-1}); m_nhy = xt::empty<size_t>({nely*2-1}); m_nhz = xt::empty<size_t>({nely*2-1}); m_refine = xt::empty<int> ({nely*2-1}); m_nelx = xt::empty<size_t>({nely*2-1}); m_nelz = xt::empty<size_t>({nely*2-1}); m_nnd = xt::empty<size_t>({nely*2 }); m_startElem = xt::empty<size_t>({nely*2-1}); m_startNode = xt::empty<size_t>({nely*2 }); // fill // - lower half for ( size_t iy = 0 ; iy < nely ; ++iy ) { m_nhx (iy) = nhx (nely-iy-1); m_nhy (iy) = nhy (nely-iy-1); m_nhz (iy) = nhz (nely-iy-1); m_refine(iy) = refine(nely-iy-1); } // - upper half for ( size_t iy = 0 ; iy < nely-1 ; ++iy ) { m_nhx (iy+nely) = nhx (iy+1); m_nhy (iy+nely) = nhy (iy+1); m_nhz (iy+nely) = nhz (iy+1); m_refine(iy+nely) = refine(iy+1); } // update size nely = m_nhx.size(); // compute the number of elements per element layer in y-direction for ( size_t iy = 0 ; iy < nely ; ++iy ) { m_nelx(iy) = nelx / m_nhx(iy); m_nelz(iy) = nelz / m_nhz(iy); } // compute the number of nodes per node layer in y-direction // - bottom half for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) m_nnd(iy) = (m_nelx(iy)+1) * (m_nelz(iy)+1); // - top half for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) m_nnd(iy+1) = (m_nelx(iy)+1) * (m_nelz(iy)+1); // compute mesh dimensions // ------------------------------------------------------------------------------------------------- // initialize m_nnode = 0; m_nelem = 0; m_startNode(0) = 0; // loop over element layers (bottom -> middle, elements become finer) for ( size_t i = 0 ; i < (nely-1)/2 ; ++i ) { // - store the first element of the layer m_startElem(i) = m_nelem; // - add the nodes of this layer if ( m_refine(i) == 0 ) { m_nnode += (3*m_nelx(i)+1) * ( m_nelz(i)+1); } else if ( m_refine(i) == 2 ) { m_nnode += ( m_nelx(i)+1) * (3*m_nelz(i)+1); } else { m_nnode += ( m_nelx(i)+1) * ( m_nelz(i)+1); } // - add the elements of this layer if ( m_refine(i) == 0 ) { m_nelem += (4*m_nelx(i) ) * ( m_nelz(i) ); } else if ( m_refine(i) == 2 ) { m_nelem += ( m_nelx(i) ) * (4*m_nelz(i) ); } else { m_nelem += ( m_nelx(i) ) * ( m_nelz(i) ); } // - store the starting node of the next layer m_startNode(i+1) = m_nnode; } // loop over element layers (middle -> top, elements become coarser) for ( size_t i = (nely-1)/2 ; i < nely ; ++i ) { // - store the first element of the layer m_startElem(i) = m_nelem; // - add the nodes of this layer if ( m_refine(i) == 0 ) { m_nnode += (5*m_nelx(i)+1) * ( m_nelz(i)+1); } else if ( m_refine(i) == 2 ) { m_nnode += ( m_nelx(i)+1) * (5*m_nelz(i)+1); } else { m_nnode += ( m_nelx(i)+1) * ( m_nelz(i)+1); } // - add the elements of this layer if ( m_refine(i) == 0 ) { m_nelem += (4*m_nelx(i) ) * ( m_nelz(i) ); } else if ( m_refine(i) == 2 ) { m_nelem += ( m_nelx(i) ) * (4*m_nelz(i) ); } else { m_nelem += ( m_nelx(i) ) * ( m_nelz(i) ); } // - store the starting node of the next layer m_startNode(i+1) = m_nnode; } // - add the top row of nodes m_nnode += (m_nelx(nely-1)+1) * (m_nelz(nely-1)+1); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::shape(size_t i) const { GOOSEFEM_ASSERT(i <= 2ul); if ( i == 0 ) return xt::amax(m_nelx)[0]; else if ( i == 2 ) return xt::amax(m_nelz)[0]; else return xt::sum (m_nhy )[0]; } // ------------------------------------------------------------------------------------------------- inline ElementType FineLayer::getElementType() const { return ElementType::Hex8; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> FineLayer::coor() const { // allocate output xt::xtensor<double,2> out = xt::empty<double>({m_nnode, m_ndim}); // current node, number of element layers size_t inode = 0; size_t nely = static_cast<size_t>(m_nhy.size()); // y-position of each main node layer (i.e. excluding node layers for refinement/coarsening) // - allocate xt::xtensor<double,1> y = xt::empty<double>({nely+1}); // - initialize y(0) = 0.0; // - compute for ( size_t iy = 1 ; iy < nely+1 ; ++iy ) y(iy) = y(iy-1) + m_nhy(iy-1) * m_h; // loop over element layers (bottom -> middle) : add bottom layer (+ refinement layer) of nodes // ------------------------------------------------------------------------------------------------- for ( size_t iy = 0 ; ; ++iy ) { // get positions along the x- and z-axis xt::xtensor<double,1> x = xt::linspace<double>(0.0, m_Lx, m_nelx(iy)+1); xt::xtensor<double,1> z = xt::linspace<double>(0.0, m_Lz, m_nelz(iy)+1); // add nodes of the bottom layer of this element for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(inode,0) = x(ix); out(inode,1) = y(iy); out(inode,2) = z(iz); ++inode; } } // stop at middle layer if ( iy == (nely-1)/2 ) break; // add extra nodes of the intermediate layer, for refinement in x-direction if ( m_refine(iy) == 0 ) { // - get position offset in x- and y-direction double dx = m_h * static_cast<double>(m_nhx(iy)/3); double dy = m_h * static_cast<double>(m_nhy(iy)/2); // - add nodes of the intermediate layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { for ( size_t j = 0 ; j < 2 ; ++j ) { out(inode,0) = x(ix) + dx * static_cast<double>(j+1); out(inode,1) = y(iy) + dy; out(inode,2) = z(iz); ++inode; } } } } // add extra nodes of the intermediate layer, for refinement in z-direction else if ( m_refine(iy) == 2 ) { // - get position offset in y- and z-direction double dz = m_h * static_cast<double>(m_nhz(iy)/3); double dy = m_h * static_cast<double>(m_nhy(iy)/2); // - add nodes of the intermediate layer for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t j = 0 ; j < 2 ; ++j ) { for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(inode,0) = x(ix); out(inode,1) = y(iy) + dy; out(inode,2) = z(iz) + dz * static_cast<double>(j+1); ++inode; } } } } } // loop over element layers (middle -> top) : add (refinement layer +) top layer of nodes // ------------------------------------------------------------------------------------------------- for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { // get positions along the x- and z-axis xt::xtensor<double,1> x = xt::linspace<double>(0.0, m_Lx, m_nelx(iy)+1); xt::xtensor<double,1> z = xt::linspace<double>(0.0, m_Lz, m_nelz(iy)+1); // add extra nodes of the intermediate layer, for refinement in x-direction if ( m_refine(iy) == 0 ) { // - get position offset in x- and y-direction double dx = m_h * static_cast<double>(m_nhx(iy)/3); double dy = m_h * static_cast<double>(m_nhy(iy)/2); // - add nodes of the intermediate layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { for ( size_t j = 0 ; j < 2 ; ++j ) { out(inode,0) = x(ix) + dx * static_cast<double>(j+1); out(inode,1) = y(iy) + dy; out(inode,2) = z(iz); ++inode; } } } } // add extra nodes of the intermediate layer, for refinement in z-direction else if ( m_refine(iy) == 2 ) { // - get position offset in y- and z-direction double dz = m_h * static_cast<double>(m_nhz(iy)/3); double dy = m_h * static_cast<double>(m_nhy(iy)/2); // - add nodes of the intermediate layer for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t j = 0 ; j < 2 ; ++j ) { for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(inode,0) = x(ix); out(inode,1) = y(iy) + dy; out(inode,2) = z(iz) + dz * static_cast<double>(j+1); ++inode; } } } } // add nodes of the top layer of this element for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(inode,0) = x(ix ); out(inode,1) = y(iy+1); out(inode,2) = z(iz ); ++inode; } } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> FineLayer::conn() const { // allocate output xt::xtensor<size_t,2> out = xt::empty<size_t>({m_nelem, m_nne}); // current element, number of element layers, starting nodes of each node layer size_t ielem = 0; size_t nely = static_cast<size_t>(m_nhy.size()); size_t bot,mid,top; // loop over all element layers for ( size_t iy = 0 ; iy < nely ; ++iy ) { // - get: starting nodes of bottom(, middle) and top layer bot = m_startNode(iy ); mid = m_startNode(iy ) + m_nnd(iy); top = m_startNode(iy+1); // - define connectivity: no coarsening/refinement if ( m_refine(iy) == -1 ) { for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { out(ielem,0) = bot + (ix ) + (iz ) * (m_nelx(iy)+1); out(ielem,1) = bot + (ix+1) + (iz ) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + (iz ) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + (iz ) * (m_nelx(iy)+1); out(ielem,4) = bot + (ix ) + (iz+1) * (m_nelx(iy)+1); out(ielem,5) = bot + (ix+1) + (iz+1) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + (iz+1) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + (iz+1) * (m_nelx(iy)+1); ielem++; } } } // - define connectivity: refinement along the x-direction (below the middle layer) - else if ( m_refine(iy) == 0 and iy <= (nely-1)/2 ) + else if ( m_refine(iy) == 0 && iy <= (nely-1)/2 ) { for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { // -- bottom element out(ielem,0) = bot + ( ix ) + (iz ) * ( m_nelx(iy)+1); out(ielem,1) = bot + ( ix+1) + (iz ) * ( m_nelx(iy)+1); out(ielem,2) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,3) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,4) = bot + ( ix ) + (iz+1) * ( m_nelx(iy)+1); out(ielem,5) = bot + ( ix+1) + (iz+1) * ( m_nelx(iy)+1); out(ielem,6) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); out(ielem,7) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); ielem++; // -- top-right element out(ielem,0) = bot + ( ix+1) + (iz ) * ( m_nelx(iy)+1); out(ielem,1) = top + (3*ix+3) + (iz ) * (3*m_nelx(iy)+1); out(ielem,2) = top + (3*ix+2) + (iz ) * (3*m_nelx(iy)+1); out(ielem,3) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,4) = bot + ( ix+1) + (iz+1) * ( m_nelx(iy)+1); out(ielem,5) = top + (3*ix+3) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,6) = top + (3*ix+2) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,7) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); ielem++; // -- top-center element out(ielem,0) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,1) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,2) = top + (3*ix+2) + (iz ) * (3*m_nelx(iy)+1); out(ielem,3) = top + (3*ix+1) + (iz ) * (3*m_nelx(iy)+1); out(ielem,4) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); out(ielem,5) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); out(ielem,6) = top + (3*ix+2) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,7) = top + (3*ix+1) + (iz+1) * (3*m_nelx(iy)+1); ielem++; // -- top-left element out(ielem,0) = bot + ( ix ) + (iz ) * ( m_nelx(iy)+1); out(ielem,1) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,2) = top + (3*ix+1) + (iz ) * (3*m_nelx(iy)+1); out(ielem,3) = top + (3*ix ) + (iz ) * (3*m_nelx(iy)+1); out(ielem,4) = bot + ( ix ) + (iz+1) * ( m_nelx(iy)+1); out(ielem,5) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); out(ielem,6) = top + (3*ix+1) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,7) = top + (3*ix ) + (iz+1) * (3*m_nelx(iy)+1); ielem++; } } } // - define connectivity: coarsening along the x-direction (above the middle layer) - else if ( m_refine(iy) == 0 and iy > (nely-1)/2 ) + else if ( m_refine(iy) == 0 && iy > (nely-1)/2 ) { for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { // -- lower-left element out(ielem,0) = bot + (3*ix ) + (iz ) * (3*m_nelx(iy)+1); out(ielem,1) = bot + (3*ix+1) + (iz ) * (3*m_nelx(iy)+1); out(ielem,2) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,3) = top + ( ix ) + (iz ) * ( m_nelx(iy)+1); out(ielem,4) = bot + (3*ix ) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,5) = bot + (3*ix+1) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,6) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); out(ielem,7) = top + ( ix ) + (iz+1) * ( m_nelx(iy)+1); ielem++; // -- lower-center element out(ielem,0) = bot + (3*ix+1) + (iz ) * (3*m_nelx(iy)+1); out(ielem,1) = bot + (3*ix+2) + (iz ) * (3*m_nelx(iy)+1); out(ielem,2) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,3) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,4) = bot + (3*ix+1) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,5) = bot + (3*ix+2) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,6) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); out(ielem,7) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); ielem++; // -- lower-right element out(ielem,0) = bot + (3*ix+2) + (iz ) * (3*m_nelx(iy)+1); out(ielem,1) = bot + (3*ix+3) + (iz ) * (3*m_nelx(iy)+1); out(ielem,2) = top + ( ix+1) + (iz ) * ( m_nelx(iy)+1); out(ielem,3) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,4) = bot + (3*ix+2) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,5) = bot + (3*ix+3) + (iz+1) * (3*m_nelx(iy)+1); out(ielem,6) = top + ( ix+1) + (iz+1) * ( m_nelx(iy)+1); out(ielem,7) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); ielem++; // -- upper element out(ielem,0) = mid + (2*ix ) + (iz ) * (2*m_nelx(iy) ); out(ielem,1) = mid + (2*ix+1) + (iz ) * (2*m_nelx(iy) ); out(ielem,2) = top + ( ix+1) + (iz ) * ( m_nelx(iy)+1); out(ielem,3) = top + ( ix ) + (iz ) * ( m_nelx(iy)+1); out(ielem,4) = mid + (2*ix ) + (iz+1) * (2*m_nelx(iy) ); out(ielem,5) = mid + (2*ix+1) + (iz+1) * (2*m_nelx(iy) ); out(ielem,6) = top + ( ix+1) + (iz+1) * ( m_nelx(iy)+1); out(ielem,7) = top + ( ix ) + (iz+1) * ( m_nelx(iy)+1); ielem++; } } } // - define connectivity: refinement along the z-direction (below the middle layer) - else if ( m_refine(iy) == 2 and iy <= (nely-1)/2 ) + else if ( m_refine(iy) == 2 && iy <= (nely-1)/2 ) { for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { // -- bottom element out(ielem,0) = bot + (ix ) + iz * (m_nelx(iy)+1); out(ielem,1) = bot + (ix ) + ( iz+1) * (m_nelx(iy)+1); out(ielem,2) = bot + (ix+1) + ( iz+1) * (m_nelx(iy)+1); out(ielem,3) = bot + (ix+1) + iz * (m_nelx(iy)+1); out(ielem,4) = mid + (ix ) + 2*iz * (m_nelx(iy)+1); out(ielem,5) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,6) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,7) = mid + (ix+1) + 2*iz * (m_nelx(iy)+1); ielem++; // -- top-back element out(ielem,0) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,1) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,4) = bot + (ix ) + ( iz+1) * (m_nelx(iy)+1); out(ielem,5) = bot + (ix+1) + ( iz+1) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + (3*iz+3) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + (3*iz+3) * (m_nelx(iy)+1); ielem++; // -- top-center element out(ielem,0) = mid + (ix ) + (2*iz ) * (m_nelx(iy)+1); out(ielem,1) = mid + (ix+1) + (2*iz ) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,4) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,5) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + (3*iz+2) * (m_nelx(iy)+1); ielem++; // -- top-front element out(ielem,0) = bot + (ix ) + ( iz ) * (m_nelx(iy)+1); out(ielem,1) = bot + (ix+1) + ( iz ) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + (3*iz ) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + (3*iz ) * (m_nelx(iy)+1); out(ielem,4) = mid + (ix ) + (2*iz ) * (m_nelx(iy)+1); out(ielem,5) = mid + (ix+1) + (2*iz ) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + (3*iz+1) * (m_nelx(iy)+1); ielem++; } } } // - define connectivity: coarsening along the z-direction (above the middle layer) - else if ( m_refine(iy) == 2 and iy > (nely-1)/2 ) + else if ( m_refine(iy) == 2 && iy > (nely-1)/2 ) { for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) { for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) { // -- bottom-front element out(ielem,0) = bot + (ix ) + (3*iz ) * (m_nelx(iy)+1); out(ielem,1) = bot + (ix+1) + (3*iz ) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + ( iz ) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + ( iz ) * (m_nelx(iy)+1); out(ielem,4) = bot + (ix ) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,5) = bot + (ix+1) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,6) = mid + (ix+1) + (2*iz ) * (m_nelx(iy)+1); out(ielem,7) = mid + (ix ) + (2*iz ) * (m_nelx(iy)+1); ielem++; // -- bottom-center element out(ielem,0) = bot + (ix ) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,1) = bot + (ix+1) + (3*iz+1) * (m_nelx(iy)+1); out(ielem,2) = mid + (ix+1) + (2*iz ) * (m_nelx(iy)+1); out(ielem,3) = mid + (ix ) + (2*iz ) * (m_nelx(iy)+1); out(ielem,4) = bot + (ix ) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,5) = bot + (ix+1) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,6) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,7) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); ielem++; // -- bottom-back element out(ielem,0) = bot + (ix ) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,1) = bot + (ix+1) + (3*iz+2) * (m_nelx(iy)+1); out(ielem,2) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,3) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,4) = bot + (ix ) + (3*iz+3) * (m_nelx(iy)+1); out(ielem,5) = bot + (ix+1) + (3*iz+3) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + ( iz+1) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + ( iz+1) * (m_nelx(iy)+1); ielem++; // -- top element out(ielem,0) = mid + (ix ) + (2*iz ) * (m_nelx(iy)+1); out(ielem,1) = mid + (ix+1) + (2*iz ) * (m_nelx(iy)+1); out(ielem,2) = top + (ix+1) + ( iz ) * (m_nelx(iy)+1); out(ielem,3) = top + (ix ) + ( iz ) * (m_nelx(iy)+1); out(ielem,4) = mid + (ix ) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,5) = mid + (ix+1) + (2*iz+1) * (m_nelx(iy)+1); out(ielem,6) = top + (ix+1) + ( iz+1) * (m_nelx(iy)+1); out(ielem,7) = top + (ix ) + ( iz+1) * (m_nelx(iy)+1); ielem++; } } } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::elementsMiddleLayer() const { // number of element layers in y-direction, the index of the middle layer size_t nely = static_cast<size_t>(m_nhy.size()); size_t iy = (nely-1)/2; xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(iy)*m_nelz(iy)}); for ( size_t ix = 0 ; ix < m_nelx(iy) ; ++ix ) for ( size_t iz = 0 ; iz < m_nelz(iy) ; ++iz ) out(ix+iz*m_nelx(iy)) = m_startElem(iy) + ix + iz*m_nelx(iy); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFront() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 + 1; else n += m_nelx(iy) + 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 + 1; else n += m_nelx(iy) + 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(j) = m_startNode(iy) + ix; ++j; } // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy); ++j; } } // -- top node layer for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(j) = m_startNode(iy+1) + ix; ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBack() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 + 1; else n += m_nelx(iy) + 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 + 1; else n += m_nelx(iy) + 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(j) = m_startNode(iy) + ix + (m_nelx(iy)+1)*m_nelz(iy); ++j; } // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy) + 2*m_nelx(iy)*m_nelz(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy) + 2*m_nelx(iy)*m_nelz(iy); ++j; } } // -- top node layer for ( size_t ix = 0 ; ix < m_nelx(iy)+1 ; ++ix ) { out(j) = m_startNode(iy+1) + ix + (m_nelx(iy)+1)*m_nelz(iy); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesLeft() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 + 1; else n += m_nelz(iy) + 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 + 1; else n += m_nelz(iy) + 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1); ++j; } // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nnd(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nnd(iy); ++j; } } // -- top node layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { out(j) = m_startNode(iy+1) + iz * (m_nelx(iy)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesRight() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 + 1; else n += m_nelz(iy) + 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 + 1; else n += m_nelz(iy) + 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + m_nnd(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + m_nnd(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } // -- top node layer for ( size_t iz = 0 ; iz < m_nelz(iy)+1 ; ++iz ) { out(j) = m_startNode(iy+1) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottom() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // allocate node list xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nnd(nely)}); // counter size_t j = 0; // fill node list for ( size_t ix = 0 ; ix < m_nelx(0)+1 ; ++ix ) { for ( size_t iz = 0 ; iz < m_nelz(0)+1 ; ++iz ) { out(j) = m_startNode(0) + ix + iz * (m_nelx(0)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTop() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // allocate node list xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nnd(nely)}); // counter size_t j = 0; // fill node list for ( size_t ix = 0 ; ix < m_nelx(nely-1)+1 ; ++ix ) { for ( size_t iz = 0 ; iz < m_nelz(nely-1)+1 ; ++iz ) { out(j) = m_startNode(nely) + ix + iz * (m_nelx(nely-1)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontFace() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 - 1; else n += m_nelx(iy) - 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 - 1; else n += m_nelx(iy) - 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t ix = 1 ; ix < m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix; ++j; } // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy); ++j; } } // -- top node layer for ( size_t ix = 1 ; ix < m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy+1) + ix; ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackFace() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 - 1; else n += m_nelx(iy) - 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { if ( m_refine(iy) == 0 ) n += m_nelx(iy) * 3 - 1; else n += m_nelx(iy) - 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t ix = 1 ; ix < m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + (m_nelx(iy)+1)*m_nelz(iy); ++j; } // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy) + 2*m_nelx(iy)*m_nelz(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 0 ) { for ( size_t ix = 0 ; ix < 2*m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy) + ix + m_nnd(iy) + 2*m_nelx(iy)*m_nelz(iy); ++j; } } // -- top node layer for ( size_t ix = 1 ; ix < m_nelx(iy) ; ++ix ) { out(j) = m_startNode(iy+1) + ix + (m_nelx(iy)+1)*m_nelz(iy); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesLeftFace() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 - 1; else n += m_nelz(iy) - 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 - 1; else n += m_nelz(iy) - 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t iz = 1 ; iz < m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1); ++j; } // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nnd(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nnd(iy); ++j; } } // -- top node layer for ( size_t iz = 1 ; iz < m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy+1) + iz * (m_nelx(iy)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesRightFace() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // number of boundary nodes // - initialize size_t n = 0; // - bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 - 1; else n += m_nelz(iy) - 1; } // - top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { if ( m_refine(iy) == 2 ) n += m_nelz(iy) * 3 - 1; else n += m_nelz(iy) - 1; } // allocate node-list xt::xtensor<size_t,1> out = xt::empty<size_t>({n}); // initialize counter: current index in the node-list "out" size_t j = 0; // bottom half: bottom node layer (+ middle node layer) for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) { // -- bottom node layer for ( size_t iz = 1 ; iz < m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + m_nnd(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } } // top half: (middle node layer +) top node layer for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) { // -- refinement layer if ( m_refine(iy) == 2 ) { for ( size_t iz = 0 ; iz < 2*m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy) + m_nnd(iy) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } // -- top node layer for ( size_t iz = 1 ; iz < m_nelz(iy) ; ++iz ) { out(j) = m_startNode(iy+1) + iz * (m_nelx(iy)+1) + m_nelx(iy); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomFace() const { // allocate node list xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx(0)-1)*(m_nelz(0)-1)}); // counter size_t j = 0; // fill node list for ( size_t ix = 1 ; ix < m_nelx(0) ; ++ix ) { for ( size_t iz = 1 ; iz < m_nelz(0) ; ++iz ) { out(j) = m_startNode(0) + ix + iz * (m_nelx(0)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTopFace() const { // number of element layers in y-direction size_t nely = static_cast<size_t>(m_nhy.size()); // allocate node list xt::xtensor<size_t,1> out = xt::empty<size_t>({(m_nelx(nely-1)-1)*(m_nelz(nely-1)-1)}); // counter size_t j = 0; // fill node list for ( size_t ix = 1 ; ix < m_nelx(nely-1) ; ++ix ) { for ( size_t iz = 1 ; iz < m_nelz(nely-1) ; ++iz ) { out(j) = m_startNode(nely) + ix + iz * (m_nelx(nely-1)+1); ++j; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontBottomEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(0)+1}); for ( size_t ix = 0 ; ix < m_nelx(0)+1 ; ++ix ) out(ix) = m_startNode(0) + ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontTopEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(nely-1)+1}); for ( size_t ix = 0 ; ix < m_nelx(nely-1)+1 ; ++ix ) out(ix) = m_startNode(nely) + ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontLeftEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely+1}); for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) out(iy) = m_startNode(iy); for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) out(iy+1) = m_startNode(iy+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontRightEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely+1}); for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) out(iy) = m_startNode(iy) + m_nelx(iy); for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) out(iy+1) = m_startNode(iy+1) + m_nelx(iy); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackBottomEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(0)+1}); for ( size_t ix = 0 ; ix < m_nelx(0)+1 ; ++ix ) out(ix) = m_startNode(0) + ix + (m_nelx(0)+1)*(m_nelz(0)); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackTopEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(nely-1)+1}); for ( size_t ix = 0 ; ix < m_nelx(nely-1)+1 ; ++ix ) out(ix) = m_startNode(nely) + ix + (m_nelx(nely-1)+1)*(m_nelz(nely-1)); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackLeftEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely+1}); for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) out(iy) = m_startNode(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) out(iy+1) = m_startNode(iy+1) + (m_nelx(iy)+1)*(m_nelz(iy)); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackRightEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely+1}); for ( size_t iy = 0 ; iy < (nely+1)/2 ; ++iy ) out(iy) = m_startNode(iy) + m_nelx(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); for ( size_t iy = (nely-1)/2 ; iy < nely ; ++iy ) out(iy+1) = m_startNode(iy+1) + m_nelx(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(0)+1}); for ( size_t iz = 0 ; iz < m_nelz(0)+1 ; ++iz ) out(iz) = m_startNode(0) + iz * (m_nelx(0)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(0)+1}); for ( size_t iz = 0 ; iz < m_nelz(0)+1 ; ++iz ) out(iz) = m_startNode(0) + m_nelx(0) + iz * (m_nelx(0)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTopLeftEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(nely-1)+1}); for ( size_t iz = 0 ; iz < m_nelz(nely-1)+1 ; ++iz ) out(iz) = m_startNode(nely) + iz * (m_nelx(nely-1)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTopRightEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(nely-1)+1}); for ( size_t iz = 0 ; iz < m_nelz(nely-1)+1 ; ++iz ) out(iz) = m_startNode(nely) + m_nelx(nely-1) + iz * (m_nelx(nely-1)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomFrontEdge() const { return nodesFrontBottomEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesBottomBackEdge() const { return nodesBackBottomEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesTopFrontEdge() const { return nodesFrontTopEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesTopBackEdge() const { return nodesBackTopEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftBottomEdge() const { return nodesBottomLeftEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftFrontEdge() const { return nodesFrontLeftEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftBackEdge() const { return nodesBackLeftEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftTopEdge() const { return nodesTopLeftEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightBottomEdge() const { return nodesBottomRightEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightTopEdge() const { return nodesTopRightEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightFrontEdge() const { return nodesFrontRightEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightBackEdge() const { return nodesBackRightEdge(); } // ------------------- node-numbers along the front-bottom edge, without corners ------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontBottomOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(0)-1}); for ( size_t ix = 1 ; ix < m_nelx(0) ; ++ix ) out(ix-1) = m_startNode(0) + ix; return out; } // -------------------- node-numbers along the front-top edge, without corners --------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontTopOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(nely-1)-1}); for ( size_t ix = 1 ; ix < m_nelx(nely-1) ; ++ix ) out(ix-1) = m_startNode(nely) + ix; return out; } // -------------------- node-numbers along the front-left edge, without corners -------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontLeftOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely-1}); for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) out(iy-1) = m_startNode(iy); for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) out(iy) = m_startNode(iy+1); return out; } // ------------------- node-numbers along the front-right edge, without corners -------------------- inline xt::xtensor<size_t,1> FineLayer::nodesFrontRightOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely-1}); for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) out(iy-1) = m_startNode(iy) + m_nelx(iy); for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) out(iy) = m_startNode(iy+1) + m_nelx(iy); return out; } // ------------------- node-numbers along the back-bottom edge, without corners -------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackBottomOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(0)-1}); for ( size_t ix = 1 ; ix < m_nelx(0) ; ++ix ) out(ix-1) = m_startNode(0) + ix + (m_nelx(0)+1)*(m_nelz(0)); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackTopOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx(nely-1)-1}); for ( size_t ix = 1 ; ix < m_nelx(nely-1) ; ++ix ) out(ix-1) = m_startNode(nely) + ix + (m_nelx(nely-1)+1)*(m_nelz(nely-1)); return out; } // -------------------- node-numbers along the back-left edge, without corners --------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackLeftOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely-1}); for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) out(iy-1) = m_startNode(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) out(iy) = m_startNode(iy+1) + (m_nelx(iy)+1)*(m_nelz(iy)); return out; } // -------------------- node-numbers along the back-right edge, without corners -------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBackRightOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({nely-1}); for ( size_t iy = 1 ; iy < (nely+1)/2 ; ++iy ) out(iy-1) = m_startNode(iy) + m_nelx(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); for ( size_t iy = (nely-1)/2 ; iy < nely-1 ; ++iy ) out(iy) = m_startNode(iy+1) + m_nelx(iy) + (m_nelx(iy)+1)*(m_nelz(iy)); return out; } // ------------------- node-numbers along the bottom-left edge, without corners -------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(0)-1}); for ( size_t iz = 1 ; iz < m_nelz(0) ; ++iz ) out(iz-1) = m_startNode(0) + iz * (m_nelx(0)+1); return out; } // ------------------- node-numbers along the bottom-right edge, without corners ------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(0)-1}); for ( size_t iz = 1 ; iz < m_nelz(0) ; ++iz ) out(iz-1) = m_startNode(0) + m_nelx(0) + iz * (m_nelx(0)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTopLeftOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(nely-1)-1}); for ( size_t iz = 1 ; iz < m_nelz(nely-1) ; ++iz ) out(iz-1) = m_startNode(nely) + iz * (m_nelx(nely-1)+1); return out; } // -------------------- node-numbers along the top-right edge, without corners --------------------- inline xt::xtensor<size_t,1> FineLayer::nodesTopRightOpenEdge() const { size_t nely = static_cast<size_t>(m_nhy.size()); xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelz(nely-1)-1}); for ( size_t iz = 1 ; iz < m_nelz(nely-1) ; ++iz ) out(iz-1) = m_startNode(nely) + m_nelx(nely-1) + iz * (m_nelx(nely-1)+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> FineLayer::nodesBottomFrontOpenEdge() const { return nodesFrontBottomOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesBottomBackOpenEdge() const { return nodesBackBottomOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesTopFrontOpenEdge() const { return nodesFrontTopOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesTopBackOpenEdge() const { return nodesBackTopOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftBottomOpenEdge() const { return nodesBottomLeftOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftFrontOpenEdge() const { return nodesFrontLeftOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftBackOpenEdge() const { return nodesBackLeftOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesLeftTopOpenEdge() const { return nodesTopLeftOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightBottomOpenEdge() const { return nodesBottomRightOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightTopOpenEdge() const { return nodesTopRightOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightFrontOpenEdge() const { return nodesFrontRightOpenEdge(); } inline xt::xtensor<size_t,1> FineLayer::nodesRightBackOpenEdge() const { return nodesBackRightOpenEdge(); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesFrontBottomLeftCorner() const { return m_startNode(0); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesFrontBottomRightCorner() const { return m_startNode(0) + m_nelx(0); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesFrontTopLeftCorner() const { size_t nely = static_cast<size_t>(m_nhy.size()); return m_startNode(nely); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesFrontTopRightCorner() const { size_t nely = static_cast<size_t>(m_nhy.size()); return m_startNode(nely) + m_nelx(nely-1); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesBackBottomLeftCorner() const { return m_startNode(0) + (m_nelx(0)+1)*(m_nelz(0)); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesBackBottomRightCorner() const { return m_startNode(0) + m_nelx(0) + (m_nelx(0)+1)*(m_nelz(0)); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesBackTopLeftCorner() const { size_t nely = static_cast<size_t>(m_nhy.size()); return m_startNode(nely) + (m_nelx(nely-1)+1)*(m_nelz(nely-1)); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesBackTopRightCorner() const { size_t nely = static_cast<size_t>(m_nhy.size()); return m_startNode(nely) + m_nelx(nely-1) + (m_nelx(nely-1)+1)*(m_nelz(nely-1)); } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesFrontLeftBottomCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t FineLayer::nodesBottomFrontLeftCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t FineLayer::nodesBottomLeftFrontCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t FineLayer::nodesLeftFrontBottomCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t FineLayer::nodesLeftBottomFrontCorner() const { return nodesFrontBottomLeftCorner(); } inline size_t FineLayer::nodesFrontRightBottomCorner() const { return nodesFrontBottomRightCorner(); } inline size_t FineLayer::nodesBottomFrontRightCorner() const { return nodesFrontBottomRightCorner(); } inline size_t FineLayer::nodesBottomRightFrontCorner() const { return nodesFrontBottomRightCorner(); } inline size_t FineLayer::nodesRightFrontBottomCorner() const { return nodesFrontBottomRightCorner(); } inline size_t FineLayer::nodesRightBottomFrontCorner() const { return nodesFrontBottomRightCorner(); } inline size_t FineLayer::nodesFrontLeftTopCorner() const { return nodesFrontTopLeftCorner(); } inline size_t FineLayer::nodesTopFrontLeftCorner() const { return nodesFrontTopLeftCorner(); } inline size_t FineLayer::nodesTopLeftFrontCorner() const { return nodesFrontTopLeftCorner(); } inline size_t FineLayer::nodesLeftFrontTopCorner() const { return nodesFrontTopLeftCorner(); } inline size_t FineLayer::nodesLeftTopFrontCorner() const { return nodesFrontTopLeftCorner(); } inline size_t FineLayer::nodesFrontRightTopCorner() const { return nodesFrontTopRightCorner(); } inline size_t FineLayer::nodesTopFrontRightCorner() const { return nodesFrontTopRightCorner(); } inline size_t FineLayer::nodesTopRightFrontCorner() const { return nodesFrontTopRightCorner(); } inline size_t FineLayer::nodesRightFrontTopCorner() const { return nodesFrontTopRightCorner(); } inline size_t FineLayer::nodesRightTopFrontCorner() const { return nodesFrontTopRightCorner(); } inline size_t FineLayer::nodesBackLeftBottomCorner() const { return nodesBackBottomLeftCorner(); } inline size_t FineLayer::nodesBottomBackLeftCorner() const { return nodesBackBottomLeftCorner(); } inline size_t FineLayer::nodesBottomLeftBackCorner() const { return nodesBackBottomLeftCorner(); } inline size_t FineLayer::nodesLeftBackBottomCorner() const { return nodesBackBottomLeftCorner(); } inline size_t FineLayer::nodesLeftBottomBackCorner() const { return nodesBackBottomLeftCorner(); } inline size_t FineLayer::nodesBackRightBottomCorner() const { return nodesBackBottomRightCorner(); } inline size_t FineLayer::nodesBottomBackRightCorner() const { return nodesBackBottomRightCorner(); } inline size_t FineLayer::nodesBottomRightBackCorner() const { return nodesBackBottomRightCorner(); } inline size_t FineLayer::nodesRightBackBottomCorner() const { return nodesBackBottomRightCorner(); } inline size_t FineLayer::nodesRightBottomBackCorner() const { return nodesBackBottomRightCorner(); } inline size_t FineLayer::nodesBackLeftTopCorner() const { return nodesBackTopLeftCorner(); } inline size_t FineLayer::nodesTopBackLeftCorner() const { return nodesBackTopLeftCorner(); } inline size_t FineLayer::nodesTopLeftBackCorner() const { return nodesBackTopLeftCorner(); } inline size_t FineLayer::nodesLeftBackTopCorner() const { return nodesBackTopLeftCorner(); } inline size_t FineLayer::nodesLeftTopBackCorner() const { return nodesBackTopLeftCorner(); } inline size_t FineLayer::nodesBackRightTopCorner() const { return nodesBackTopRightCorner(); } inline size_t FineLayer::nodesTopBackRightCorner() const { return nodesBackTopRightCorner(); } inline size_t FineLayer::nodesTopRightBackCorner() const { return nodesBackTopRightCorner(); } inline size_t FineLayer::nodesRightBackTopCorner() const { return nodesBackTopRightCorner(); } inline size_t FineLayer::nodesRightTopBackCorner() const { return nodesBackTopRightCorner(); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> FineLayer::nodesPeriodic() const { // faces xt::xtensor<size_t,1> fro = nodesFrontFace(); xt::xtensor<size_t,1> bck = nodesBackFace(); xt::xtensor<size_t,1> lft = nodesLeftFace(); xt::xtensor<size_t,1> rgt = nodesRightFace(); xt::xtensor<size_t,1> bot = nodesBottomFace(); xt::xtensor<size_t,1> top = nodesTopFace(); // edges xt::xtensor<size_t,1> froBot = nodesFrontBottomOpenEdge(); xt::xtensor<size_t,1> froTop = nodesFrontTopOpenEdge(); xt::xtensor<size_t,1> froLft = nodesFrontLeftOpenEdge(); xt::xtensor<size_t,1> froRgt = nodesFrontRightOpenEdge(); xt::xtensor<size_t,1> bckBot = nodesBackBottomOpenEdge(); xt::xtensor<size_t,1> bckTop = nodesBackTopOpenEdge(); xt::xtensor<size_t,1> bckLft = nodesBackLeftOpenEdge(); xt::xtensor<size_t,1> bckRgt = nodesBackRightOpenEdge(); xt::xtensor<size_t,1> botLft = nodesBottomLeftOpenEdge(); xt::xtensor<size_t,1> botRgt = nodesBottomRightOpenEdge(); xt::xtensor<size_t,1> topLft = nodesTopLeftOpenEdge(); xt::xtensor<size_t,1> topRgt = nodesTopRightOpenEdge(); // allocate nodal ties // - number of tying per category size_t tface = fro.size() + lft.size() + bot.size(); size_t tedge = 3*froBot.size() + 3*froLft.size() + 3*botLft.size(); size_t tnode = 7; // - allocate xt::xtensor<size_t,2> out = xt::empty<size_t>({tface+tedge+tnode, std::size_t(2)}); // counter size_t i = 0; // tie all corners to one corner out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontBottomRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackBottomRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackBottomLeftCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontTopLeftCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesFrontTopRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackTopRightCorner(); ++i; out(i,0) = nodesFrontBottomLeftCorner(); out(i,1) = nodesBackTopLeftCorner(); ++i; // tie all corresponding edges to each other (exclude corners) for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = bckBot(j); ++i; } for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = bckTop(j); ++i; } for ( size_t j = 0 ; j<froBot.size() ; ++j ){ out(i,0) = froBot(j); out(i,1) = froTop(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = botRgt(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = topRgt(j); ++i; } for ( size_t j = 0 ; j<botLft.size() ; ++j ){ out(i,0) = botLft(j); out(i,1) = topLft(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = froRgt(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = bckRgt(j); ++i; } for ( size_t j = 0 ; j<froLft.size() ; ++j ){ out(i,0) = froLft(j); out(i,1) = bckLft(j); ++i; } // tie faces to each-other for ( size_t j = 0 ; j<fro.size() ; ++j ){ out(i,0) = fro(j); out(i,1) = bck(j); ++i; } for ( size_t j = 0 ; j<lft.size() ; ++j ){ out(i,0) = lft(j); out(i,1) = rgt(j); ++i; } for ( size_t j = 0 ; j<bot.size() ; ++j ){ out(i,0) = bot(j); out(i,1) = top(j); ++i; } return out; } // ------------------------------------------------------------------------------------------------- inline size_t FineLayer::nodesOrigin() const { return nodesFrontBottomLeftCorner(); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> FineLayer::dofs() const { return GooseFEM::Mesh::dofs(m_nnode,m_ndim); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> FineLayer::dofsPeriodic() const { // DOF-numbers for each component of each node (sequential) xt::xtensor<size_t,2> out = GooseFEM::Mesh::dofs(m_nnode,m_ndim); // periodic node-pairs xt::xtensor<size_t,2> nodePer = nodesPeriodic(); // eliminate 'dependent' DOFs; renumber "out" to be sequential for the remaining DOFs - for ( size_t i = 0 ; i < nodePer.shape()[0] ; ++i ) - for ( size_t j = 0 ; j < m_ndim ; ++j ) + for (size_t i = 0; i < nodePer.shape(0); ++i) + for (size_t j = 0; j < m_ndim; ++j) out(nodePer(i,1),j) = out(nodePer(i,0),j); // renumber "out" to be sequential return GooseFEM::Mesh::renumber(out); } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/MeshTri3.hpp b/include/GooseFEM/MeshTri3.hpp index e0c9277..5f30a8d 100644 --- a/include/GooseFEM/MeshTri3.hpp +++ b/include/GooseFEM/MeshTri3.hpp @@ -1,392 +1,414 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_MESHTRI3_HPP #define GOOSEFEM_MESHTRI3_HPP // ------------------------------------------------------------------------------------------------- #include "MeshTri3.h" // ================================================================================================= namespace GooseFEM { namespace Mesh { namespace Tri3 { // ------------------------------------------------------------------------------------------------- inline Regular::Regular(size_t nelx, size_t nely, double h): m_h(h), m_nelx(nelx), m_nely(nely) { GOOSEFEM_ASSERT(m_nelx >= 1ul); GOOSEFEM_ASSERT(m_nely >= 1ul); m_nnode = (m_nelx+1) * (m_nely+1); m_nelem = m_nelx * m_nely * 2; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline ElementType Regular::getElementType() const { return ElementType::Tri3; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Regular::coor() const { xt::xtensor<double,2> out = xt::empty<double>({m_nnode, m_ndim}); xt::xtensor<double,1> x = xt::linspace<double>(0.0, m_h*static_cast<double>(m_nelx), m_nelx+1); xt::xtensor<double,1> y = xt::linspace<double>(0.0, m_h*static_cast<double>(m_nely), m_nely+1); size_t inode = 0; - for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) { - for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) { + for ( size_t iy = 0; iy < m_nely+1; ++iy) { + for ( size_t ix = 0; ix < m_nelx+1; ++ix) { out(inode,0) = x(ix); out(inode,1) = y(iy); ++inode; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::conn() const { xt::xtensor<size_t,2> out = xt::empty<size_t>({m_nelem,m_nne}); size_t ielem = 0; - for ( size_t iy = 0 ; iy < m_nely ; ++iy ) { - for ( size_t ix = 0 ; ix < m_nelx ; ++ix ) { + for ( size_t iy = 0; iy < m_nely; ++iy) { + for ( size_t ix = 0; ix < m_nelx; ++ix) { out(ielem,0) = (iy )*(m_nelx+1) + (ix ); out(ielem,1) = (iy )*(m_nelx+1) + (ix+1); out(ielem,2) = (iy+1)*(m_nelx+1) + (ix ); ++ielem; out(ielem,0) = (iy )*(m_nelx+1) + (ix+1); out(ielem,1) = (iy+1)*(m_nelx+1) + (ix+1); out(ielem,2) = (iy+1)*(m_nelx+1) + (ix ); ++ielem; } } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); - for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) + for (size_t ix = 0; ix < m_nelx+1; ++ix) out(ix) = ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx+1}); - for ( size_t ix = 0 ; ix < m_nelx+1 ; ++ix ) + for (size_t ix = 0; ix < m_nelx+1; ++ix) out(ix) = ix + m_nely*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesLeftEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); - for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) + for (size_t iy = 0; iy < m_nely+1; ++iy) out(iy) = iy*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesRightEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely+1}); - for ( size_t iy = 0 ; iy < m_nely+1 ; ++iy ) + for (size_t iy = 0; iy < m_nely+1; ++iy) out(iy) = iy*(m_nelx+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesBottomOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); - for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) + for (size_t ix = 1; ix < m_nelx; ++ix) out(ix-1) = ix; return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesTopOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nelx-1}); - for ( size_t ix = 1 ; ix < m_nelx ; ++ix ) + for (size_t ix = 1; ix < m_nelx; ++ix) out(ix-1) = ix + m_nely*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesLeftOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); - for ( size_t iy = 1 ; iy < m_nely ; ++iy ) + for (size_t iy = 1; iy < m_nely; ++iy) out(iy-1) = iy*(m_nelx+1); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Regular::nodesRightOpenEdge() const { xt::xtensor<size_t,1> out = xt::empty<size_t>({m_nely-1}); - for ( size_t iy = 1 ; iy < m_nely ; ++iy ) + for (size_t iy = 1; iy < m_nely; ++iy) out(iy-1) = iy*(m_nelx+1) + m_nelx; return out; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBottomLeftCorner() const { return 0; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesBottomRightCorner() const { return m_nelx; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesTopLeftCorner() const { return m_nely*(m_nelx+1); } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesTopRightCorner() const { return m_nely*(m_nelx+1) + m_nelx; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesLeftBottomCorner() const -{ return nodesBottomLeftCorner(); } +{ + return nodesBottomLeftCorner(); +} + +// ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesLeftTopCorner() const -{ return nodesTopLeftCorner(); } +{ + return nodesTopLeftCorner(); +} + +// ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesRightBottomCorner() const -{ return nodesBottomRightCorner(); } +{ + return nodesBottomRightCorner(); +} + +// ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesRightTopCorner() const -{ return nodesTopRightCorner(); } +{ + return nodesTopRightCorner(); +} // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::nodesPeriodic() const { // edges (without corners) xt::xtensor<size_t,1> bot = nodesBottomOpenEdge(); xt::xtensor<size_t,1> top = nodesTopOpenEdge(); xt::xtensor<size_t,1> lft = nodesLeftOpenEdge(); xt::xtensor<size_t,1> rgt = nodesRightOpenEdge(); // allocate nodal ties // - number of tying per category size_t tedge = bot.size() + lft.size(); size_t tnode = 3; // - allocate xt::xtensor<size_t,2> out = xt::empty<size_t>({tedge+tnode, std::size_t(2)}); // counter size_t i = 0; // tie all corners to one corner out(i,0) = nodesBottomLeftCorner(); out(i,1) = nodesBottomRightCorner(); ++i; - out(i,0) = nodesBottomLeftCorner(); out(i,1) = nodesTopRightCorner(); ++i; - out(i,0) = nodesBottomLeftCorner(); out(i,1) = nodesTopLeftCorner(); ++i; + out(i,0) = nodesBottomLeftCorner(); out(i,1) = nodesTopRightCorner(); ++i; + out(i,0) = nodesBottomLeftCorner(); out(i,1) = nodesTopLeftCorner(); ++i; // tie all corresponding edges to each other - for ( size_t j = 0 ; j<bot.size() ; ++j ){ out(i,0) = bot(j); out(i,1) = top(j); ++i; } - for ( size_t j = 0 ; j<lft.size() ; ++j ){ out(i,0) = lft(j); out(i,1) = rgt(j); ++i; } + for (size_t j = 0; j < bot.size(); ++j) { + out(i,0) = bot(j); + out(i,1) = top(j); + ++i; + } + for (size_t j = 0; j < lft.size(); ++j) { + out(i,0) = lft(j); + out(i,1) = rgt(j); + ++i; + } return out; } // ------------------------------------------------------------------------------------------------- inline size_t Regular::nodesOrigin() const { return nodesBottomLeftCorner(); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::dofs() const { return GooseFEM::Mesh::dofs(m_nnode,m_ndim); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Regular::dofsPeriodic() const { // DOF-numbers for each component of each node (sequential) xt::xtensor<size_t,2> out = GooseFEM::Mesh::dofs(m_nnode,m_ndim); // periodic node-pairs xt::xtensor<size_t,2> nodePer = nodesPeriodic(); // eliminate 'dependent' DOFs; renumber "out" to be sequential for the remaining DOFs - for ( size_t i = 0 ; i < nodePer.shape()[0] ; ++i ) - for ( size_t j = 0 ; j < m_ndim ; ++j ) + for (size_t i = 0; i < nodePer.shape(0); ++i) + for (size_t j = 0; j < m_ndim; ++j) out(nodePer(i,1),j) = out(nodePer(i,0),j); // renumber "out" to be sequential return GooseFEM::Mesh::renumber(out); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<int,1> getOrientation( const xt::xtensor<double,2> &coor, const xt::xtensor<size_t,2> &conn) { - GOOSEFEM_ASSERT(conn.shape()[1] == 3ul); - GOOSEFEM_ASSERT(coor.shape()[1] == 2ul); + GOOSEFEM_ASSERT(conn.shape(1) == 3ul); + GOOSEFEM_ASSERT(coor.shape(1) == 2ul); double k; - size_t nelem = conn.shape()[0]; + size_t nelem = conn.shape(0); xt::xtensor<int,1> out = xt::empty<int>({nelem}); - for ( size_t ielem = 0 ; ielem < nelem ; ++ielem ) + for (size_t ielem = 0; ielem < nelem; ++ielem ) { auto v1 = xt::view(coor, conn(ielem,0), xt::all()) - xt::view(coor, conn(ielem,1), xt::all()); auto v2 = xt::view(coor, conn(ielem,2), xt::all()) - xt::view(coor, conn(ielem,1), xt::all()); k = v1(0) * v2(1) - v2(0) * v1(1); if ( k < 0 ) out(ielem) = -1; else out(ielem) = +1; } return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> setOrientation( const xt::xtensor<double,2> &coor, const xt::xtensor<size_t,2> &conn, int orientation) { - GOOSEFEM_ASSERT(conn.shape()[1] == 3ul); - GOOSEFEM_ASSERT(coor.shape()[1] == 2ul); + GOOSEFEM_ASSERT(conn.shape(1) == 3ul); + GOOSEFEM_ASSERT(coor.shape(1) == 2ul); GOOSEFEM_ASSERT(orientation == -1 || orientation == +1); xt::xtensor<int,1> val = getOrientation(coor, conn); return setOrientation(coor, conn, val, orientation); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> setOrientation( const xt::xtensor<double,2> &coor, const xt::xtensor<size_t,2> &conn, const xt::xtensor<int,1> &val, int orientation) { - GOOSEFEM_ASSERT(conn.shape()[1] == 3ul); - GOOSEFEM_ASSERT(coor.shape()[1] == 2ul); - GOOSEFEM_ASSERT(conn.shape()[0] == val.size()); + GOOSEFEM_ASSERT(conn.shape(1) == 3ul); + GOOSEFEM_ASSERT(coor.shape(1) == 2ul); + GOOSEFEM_ASSERT(conn.shape(0) == val.size()); GOOSEFEM_ASSERT(orientation == -1 || orientation == +1); // avoid compiler warning UNUSED(coor); - size_t nelem = conn.shape()[0]; + size_t nelem = conn.shape(0); xt::xtensor<size_t,2> out = conn; for (size_t ielem = 0; ielem < nelem; ++ielem) if ((orientation == -1 && val(ielem) > 0) || (orientation == +1 && val(ielem) < 0)) std::swap(out(ielem,2) , out(ielem,1)); return out; } // ------------------------------------------------------------------------------------------------- }}} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/TyingsPeriodic.hpp b/include/GooseFEM/TyingsPeriodic.hpp index 8259e66..7681647 100644 --- a/include/GooseFEM/TyingsPeriodic.hpp +++ b/include/GooseFEM/TyingsPeriodic.hpp @@ -1,285 +1,285 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_TYINGSPERIODIC_HPP #define GOOSEFEM_TYINGSPERIODIC_HPP // ------------------------------------------------------------------------------------------------- #include "TyingsPeriodic.h" #include "Mesh.h" #include <Eigen/Eigen> #include <Eigen/Sparse> // ================================================================================================= namespace GooseFEM { namespace Tyings { // ------------------------------------------------------------------------------------------------- inline Periodic::Periodic( const xt::xtensor<double,2>& coor, const xt::xtensor<size_t,2>& dofs, const xt::xtensor<size_t,2>& control, const xt::xtensor<size_t,2>& nodal_tyings) : Periodic(coor, dofs, control, nodal_tyings, xt::empty<size_t>({0})) { } // ------------------------------------------------------------------------------------------------- inline Periodic::Periodic( const xt::xtensor<double,2>& coor, const xt::xtensor<size_t,2>& dofs, const xt::xtensor<size_t,2>& control, const xt::xtensor<size_t,2>& nodal_tyings, const xt::xtensor<size_t,1>& iip) : m_tyings(nodal_tyings), m_coor(coor) { - m_ndim = m_coor .shape()[1]; - m_nties = m_tyings.shape()[0]; + m_ndim = m_coor.shape(1); + m_nties = m_tyings.shape(0); xt::xtensor<size_t,1> dependent = xt::view(m_tyings, xt::all(), 1); xt::xtensor<size_t,2> dependent_dofs = xt::view(dofs, xt::keep(dependent), xt::all()); xt::xtensor<size_t,1> iid = xt::flatten(dependent_dofs); xt::xtensor<size_t,1> iii = xt::setdiff1d(dofs, iid); xt::xtensor<size_t,1> iiu = xt::setdiff1d(iii , iip); m_nnu = iiu.size(); m_nnp = iip.size(); m_nni = iii.size(); m_nnd = iid.size(); GooseFEM::Mesh::Reorder reorder({iiu, iip, iid}); m_dofs = reorder.apply(dofs); m_control = reorder.apply(control); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Periodic::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Periodic::control() const { return m_control; } // ------------------------------------------------------------------------------------------------- inline size_t Periodic::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- inline size_t Periodic::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- inline size_t Periodic::nni() const { return m_nni; } // ------------------------------------------------------------------------------------------------- inline size_t Periodic::nnd() const { return m_nnd; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Periodic::iiu() const { return xt::arange<size_t>(m_nnu); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Periodic::iip() const { return xt::arange<size_t>(m_nnp) + m_nnu; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Periodic::iii() const { return xt::arange<size_t>(m_nni); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Periodic::iid() const { return xt::arange<size_t>(m_nni, m_nni + m_nnd); } // ------------------------------------------------------------------------------------------------- inline Eigen::SparseMatrix<double> Periodic::Cdi() const { std::vector<Eigen::Triplet<double>> data; data.reserve(m_nties*m_ndim*(m_ndim+1)); for (size_t i = 0; i < m_nties; ++i) { for (size_t j = 0; j < m_ndim; ++j) { size_t ni = m_tyings(i,0); size_t nd = m_tyings(i,1); data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_dofs(ni,j), +1.)); for (size_t k = 0; k < m_ndim; ++k) data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_control(j,k), m_coor(nd,k)-m_coor(ni,k))); } } Eigen::SparseMatrix<double> Cdi; Cdi.resize(m_nnd, m_nni); Cdi.setFromTriplets(data.begin(), data.end()); return Cdi; } // ------------------------------------------------------------------------------------------------- inline Eigen::SparseMatrix<double> Periodic::Cdu() const { std::vector<Eigen::Triplet<double>> data; data.reserve(m_nties*m_ndim*(m_ndim+1)); for (size_t i = 0; i < m_nties; ++i) { for (size_t j = 0; j < m_ndim; ++j) { size_t ni = m_tyings(i,0); size_t nd = m_tyings(i,1); if (m_dofs(ni,j) < m_nnu) data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_dofs(ni,j), +1.)); for (size_t k = 0; k < m_ndim; ++k) if (m_control(j,k) < m_nnu) data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_control(j,k), m_coor(nd,k)-m_coor(ni,k))); } } Eigen::SparseMatrix<double> Cdu; Cdu.resize(m_nnd, m_nnu); Cdu.setFromTriplets(data.begin(), data.end()); return Cdu; } // ------------------------------------------------------------------------------------------------- inline Eigen::SparseMatrix<double> Periodic::Cdp() const { std::vector<Eigen::Triplet<double>> data; data.reserve(m_nties*m_ndim*(m_ndim+1)); for (size_t i = 0; i < m_nties; ++i) { for (size_t j = 0; j < m_ndim; ++j) { size_t ni = m_tyings(i,0); size_t nd = m_tyings(i,1); if (m_dofs(ni,j) >= m_nnu) data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_dofs(ni,j)-m_nnu, +1.)); for (size_t k = 0; k < m_ndim; ++k) if (m_control(j,k) >= m_nnu) data.push_back(Eigen::Triplet<double>(i*m_ndim+j, m_control(j,k)-m_nnu, m_coor(nd,k)-m_coor(ni,k))); } } Eigen::SparseMatrix<double> Cdp; Cdp.resize(m_nnd, m_nnp); Cdp.setFromTriplets(data.begin(), data.end()); return Cdp; } // ------------------------------------------------------------------------------------------------- inline Control::Control( const xt::xtensor<double,2>& coor, const xt::xtensor<size_t,2>& dofs) : m_coor(coor), m_dofs(dofs) { GOOSEFEM_ASSERT(coor.shape().size() == 2); GOOSEFEM_ASSERT(coor.shape() == dofs.shape()); - size_t nnode = coor.shape()[0]; - size_t ndim = coor.shape()[1]; + size_t nnode = coor.shape(0); + size_t ndim = coor.shape(1); m_control_dofs = xt::arange<size_t>(ndim*ndim).reshape({ndim,ndim}); m_control_dofs += xt::amax(dofs)[0] + 1; m_control_nodes = nnode + xt::arange<size_t>(ndim); m_coor = xt::concatenate(xt::xtuple(coor, xt::zeros<double>({ndim,ndim}))); m_dofs = xt::concatenate(xt::xtuple(dofs, m_control_dofs)); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Control::coor() const { return m_coor; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Control::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Control::controlDofs() const { return m_control_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> Control::controlNodes() const { return m_control_nodes; } // ------------------------------------------------------------------------------------------------- }} // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/Vector.hpp b/include/GooseFEM/Vector.hpp index d7c6ca3..8bd8e13 100644 --- a/include/GooseFEM/Vector.hpp +++ b/include/GooseFEM/Vector.hpp @@ -1,347 +1,347 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_VECTOR_HPP #define GOOSEFEM_VECTOR_HPP // ------------------------------------------------------------------------------------------------- #include "Vector.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- inline Vector::Vector( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs) : m_conn(conn), m_dofs(dofs) { // mesh dimensions - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); // dimensions of the system m_ndof = xt::amax(m_dofs)[0] + 1; // check consistency GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- inline size_t Vector::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t Vector::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t Vector::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t Vector::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t Vector::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> Vector::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline void Vector::copy( const xt::xtensor<double,2>& nodevec_src, xt::xtensor<double,2>& nodevec_dest) const { GOOSEFEM_ASSERT(nodevec_src.shape() ==\ std::decay_t<decltype(nodevec_src)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(nodevec_dest.shape() ==\ std::decay_t<decltype(nodevec_dest)>::shape_type({m_nnode, m_ndim})); xt::noalias(nodevec_dest) = nodevec_src; } // ------------------------------------------------------------------------------------------------- inline void Vector::asDofs( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m,i)) = nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void Vector::asDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m_conn(e,m),i)) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void Vector::asNode( const xt::xtensor<double,1>& dofval, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m,i) = dofval(m_dofs(m,i)); } // ------------------------------------------------------------------------------------------------- inline void Vector::asNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m_conn(e,m),i) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void Vector::asElement( const xt::xtensor<double,1>& dofval, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) elemvec(e,m,i) = dofval(m_dofs(m_conn(e,m),i)); } // ------------------------------------------------------------------------------------------------- inline void Vector::asElement( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) elemvec(e,m,i) = nodevec(m_conn(e,m),i); } // ------------------------------------------------------------------------------------------------- inline void Vector::assembleDofs( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); dofval.fill(0.0); for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m,i)) += nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void Vector::assembleDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); dofval.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m_conn(e,m),i)) += elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void Vector::assembleNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); // assemble to DOFs xt::xtensor<double,1> dofval = this->AssembleDofs(elemvec); // read from DOFs this->asNode(dofval, nodevec); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> Vector::AsDofs( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->asDofs(nodevec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> Vector::AsDofs( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->asDofs(elemvec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Vector::AsNode( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->asNode(dofval, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Vector::AsNode( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->asNode(elemvec, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Vector::AsElement( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->asElement(dofval, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> Vector::AsElement( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->asElement(nodevec, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> Vector::AssembleDofs( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->assembleDofs(nodevec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> Vector::AssembleDofs( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->assembleDofs(elemvec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> Vector::AssembleNode( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->assembleNode(elemvec, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/VectorPartitioned.hpp b/include/GooseFEM/VectorPartitioned.hpp index de6248a..87ce419 100644 --- a/include/GooseFEM/VectorPartitioned.hpp +++ b/include/GooseFEM/VectorPartitioned.hpp @@ -1,821 +1,821 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_VECTORPARTITIONED_HPP #define GOOSEFEM_VECTORPARTITIONED_HPP // ------------------------------------------------------------------------------------------------- #include "VectorPartitioned.h" #include "Mesh.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- inline VectorPartitioned::VectorPartitioned( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs, const xt::xtensor<size_t,1>& iip) : m_conn(conn), m_dofs(dofs), m_iip(iip) { - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); m_iiu = xt::setdiff1d(dofs, iip); m_ndof = xt::amax(m_dofs)[0] + 1; m_nnp = m_iip.size(); m_nnu = m_iiu.size(); m_part = Mesh::Reorder({m_iiu, m_iip}).get(m_dofs); GOOSEFEM_ASSERT(xt::amax(m_conn)[0] + 1 == m_nnode); GOOSEFEM_ASSERT(xt::amax(m_iip)[0] <= xt::amax(m_dofs)[0]); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitioned::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> VectorPartitioned::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitioned::iiu() const { return m_iiu; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitioned::iip() const { return m_iip; } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::copy( const xt::xtensor<double,2>& nodevec_src, xt::xtensor<double,2>& nodevec_dest) const { GOOSEFEM_ASSERT(nodevec_src.shape() ==\ std::decay_t<decltype(nodevec_src)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(nodevec_dest.shape() ==\ std::decay_t<decltype(nodevec_dest)>::shape_type({m_nnode, m_ndim})); xt::noalias(nodevec_dest) = nodevec_src; } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::copy_u( const xt::xtensor<double,2>& nodevec_src, xt::xtensor<double,2>& nodevec_dest) const { GOOSEFEM_ASSERT(nodevec_src.shape() ==\ std::decay_t<decltype(nodevec_src)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(nodevec_dest.shape() ==\ std::decay_t<decltype(nodevec_dest)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) < m_nnu) nodevec_dest(m,i) = nodevec_src(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::copy_p( const xt::xtensor<double,2>& nodevec_src, xt::xtensor<double,2>& nodevec_dest) const { GOOSEFEM_ASSERT(nodevec_src.shape() ==\ std::decay_t<decltype(nodevec_src)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(nodevec_dest.shape() ==\ std::decay_t<decltype(nodevec_dest)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) nodevec_dest(m,i) = nodevec_src(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); GOOSEFEM_ASSERT(dofval.size() == m_ndof); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) dofval(m_iiu(d)) = dofval_u(d); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) dofval(m_iip(d)) = dofval_p(d); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m,i)) = nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_u( const xt::xtensor<double,1>& dofval, xt::xtensor<double,1>& dofval_u) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); #pragma omp parallel for for (size_t d = 0 ; d < m_nnu ; ++d) dofval_u(d) = dofval(m_iiu(d)); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_u( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_u) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) < m_nnu) dofval_u(m_part(m,i)) = nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_p( const xt::xtensor<double,1>& dofval, xt::xtensor<double,1>& dofval_p) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); #pragma omp parallel for for (size_t d = 0 ; d < m_nnp ; ++d) dofval_p(d) = dofval(m_iip(d)); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_p( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_p) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) dofval_p(m_part(m,i)-m_nnu) = nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m_conn(e,m),i)) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_u( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval_u) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m_conn(e,m),i) < m_nnu) dofval_u(m_part(m_conn(e,m),i)) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asDofs_p( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval_p) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m_conn(e,m),i) >= m_nnu) dofval_p(m_part(m_conn(e,m),i)-m_nnu) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asNode( const xt::xtensor<double,1>& dofval, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m,i) = dofval(m_dofs(m,i)); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asNode( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { if (m_part(m,i) < m_nnu) nodevec(m,i) = dofval_u(m_part(m,i)); else nodevec(m,i) = dofval_p(m_part(m,i)-m_nnu); } } } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m_conn(e,m),i) = elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asElement( const xt::xtensor<double,1>& dofval, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) elemvec(e,m,i) = dofval(m_dofs(m_conn(e,m),i)); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asElement( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) { for (size_t m = 0 ; m < m_nne ; ++m) { for (size_t i = 0 ; i < m_ndim ; ++i) { if (m_part(m_conn(e,m),i)<m_nnu) elemvec(e,m,i) = dofval_u(m_part(m_conn(e,m),i)); else elemvec(e,m,i) = dofval_p(m_part(m_conn(e,m),i)-m_nnu); } } } } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::asElement( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) elemvec(e,m,i) = nodevec(m_conn(e,m),i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); dofval.fill(0.0); for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m,i)) += nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs_u( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_u) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); dofval_u.fill(0.0); for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) < m_nnu) dofval_u(m_part(m,i)) += nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs_p( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_p) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); dofval_p.fill(0.0); for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m,i) >= m_nnu) dofval_p(m_part(m,i)-m_nnu) += nodevec(m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); dofval.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m_conn(e,m),i)) += elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs_u( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval_u) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval_u.size() == m_nnu); dofval_u.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m_conn(e,m),i) < m_nnu) dofval_u(m_part(m_conn(e,m),i)) += elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleDofs_p( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval_p) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval_p.size() == m_nnp); dofval_p.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_part(m_conn(e,m),i) >= m_nnu) dofval_p(m_part(m_conn(e,m),i)-m_nnu) += elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitioned::assembleNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); xt::xtensor<double,1> dofval = this->AssembleDofs(elemvec); this->asNode(dofval, nodevec); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->asDofs(dofval_u, dofval_p, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->asDofs(nodevec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_u( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,1> dofval_u = xt::empty<double>({m_nnu}); this->asDofs_u(dofval, dofval_u); return dofval_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_u( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval_u = xt::empty<double>({m_nnu}); this->asDofs_u(nodevec, dofval_u); return dofval_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_p( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,1> dofval_p = xt::empty<double>({m_nnp}); this->asDofs_p(dofval, dofval_p); return dofval_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_p( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval_p = xt::empty<double>({m_nnp}); this->asDofs_p(nodevec, dofval_p); return dofval_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->asDofs(elemvec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_u( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval_u = xt::empty<double>({m_nnu}); this->asDofs_u(elemvec, dofval_u); return dofval_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AsDofs_p( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval_p = xt::empty<double>({m_nnp}); this->asDofs_p(elemvec, dofval_p); return dofval_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::AsNode( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->asNode(dofval, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::AsNode( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->asNode(dofval_u, dofval_p, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::AsNode( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->asNode(elemvec, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> VectorPartitioned::AsElement( const xt::xtensor<double,1>& dofval) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->asElement(dofval, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> VectorPartitioned::AsElement( const xt::xtensor<double,1>& dofval_u, const xt::xtensor<double,1>& dofval_p) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->asElement(dofval_u, dofval_p, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,3> VectorPartitioned::AsElement( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); this->asElement(nodevec, elemvec); return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->assembleDofs(nodevec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs_u( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval_u = xt::empty<double>({m_nnu}); this->assembleDofs_u(nodevec, dofval_u); return dofval_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs_p( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,1> dofval_p = xt::empty<double>({m_nnp}); this->assembleDofs_p(nodevec, dofval_p); return dofval_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); this->assembleDofs(elemvec, dofval); return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs_u( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval_u = xt::empty<double>({m_nnu}); this->assembleDofs_u(elemvec, dofval_u); return dofval_u; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitioned::AssembleDofs_p( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval_p = xt::empty<double>({m_nnp}); this->assembleDofs_p(elemvec, dofval_p); return dofval_p; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::AssembleNode( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); this->assembleNode(elemvec, nodevec); return nodevec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::Copy( const xt::xtensor<double,2>& nodevec_src, const xt::xtensor<double,2>& nodevec_dest) const { xt::xtensor<double,2> out = nodevec_dest; this->copy(nodevec_src, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::Copy_u( const xt::xtensor<double,2>& nodevec_src, const xt::xtensor<double,2>& nodevec_dest) const { xt::xtensor<double,2> out = nodevec_dest; this->copy_u(nodevec_src, out); return out; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitioned::Copy_p( const xt::xtensor<double,2>& nodevec_src, const xt::xtensor<double,2>& nodevec_dest) const { xt::xtensor<double,2> out = nodevec_dest; this->copy_p(nodevec_src, out); return out; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/include/GooseFEM/VectorPartitionedTyings.h b/include/GooseFEM/VectorPartitionedTyings.h index 1ede0f6..6b3e11a 100644 --- a/include/GooseFEM/VectorPartitionedTyings.h +++ b/include/GooseFEM/VectorPartitionedTyings.h @@ -1,159 +1,165 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_VECTORPARTITIONEDTYINGS_H #define GOOSEFEM_VECTORPARTITIONEDTYINGS_H // ------------------------------------------------------------------------------------------------- #include "config.h" #include <Eigen/Eigen> #include <Eigen/Sparse> // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- /* "nodevec" - nodal vectors - [nnode, ndim] "elemvec" - nodal vectors stored per element - [nelem, nne, ndim] "dofval" - DOF values - [ndof] "dofval_u" - DOF values (Unknown) "== dofval[iiu]" - [nnu] "dofval_p" - DOF values (Prescribed) "== dofval[iiu]" - [nnp] */ class VectorPartitionedTyings { public: // Constructor VectorPartitionedTyings() = default; VectorPartitionedTyings( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs, const Eigen::SparseMatrix<double>& Cdu, const Eigen::SparseMatrix<double>& Cdp, const Eigen::SparseMatrix<double>& Cdi); // Dimensions size_t nelem() const; // number of elements size_t nne() const; // number of nodes per element size_t nnode() const; // number of nodes size_t ndim() const; // number of dimensions size_t ndof() const; // number of DOFs size_t nnu() const; // number of independent, unknown DOFs size_t nnp() const; // number of independent, prescribed DOFs size_t nni() const; // number of independent DOFs size_t nnd() const; // number of dependent DOFs // DOF lists xt::xtensor<size_t,2> dofs() const; // DOFs xt::xtensor<size_t,1> iiu() const; // independent, unknown DOFs xt::xtensor<size_t,1> iip() const; // independent, prescribed DOFs xt::xtensor<size_t,1> iii() const; // independent DOFs xt::xtensor<size_t,1> iid() const; // dependent DOFs // Copy (part of) nodevec/dofval to another nodevec/dofval void copy_p( const xt::xtensor<double,1>& dofval_src, xt::xtensor<double,1>& dofval_dest) const; // "iip" updated // Convert to "dofval" (overwrite entries that occur more than once) void asDofs_i( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_i, bool apply_tyings=true) const; // overwritten // Convert to "nodevec" (overwrite entries that occur more than once) -- (auto allocation below) void asNode( const xt::xtensor<double,1>& dofval, xt::xtensor<double,2>& nodevec) const; // Convert to "elemvec" (overwrite entries that occur more than once) -- (auto allocation below) void asElement( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,3>& elemvec) const; // Assemble "dofval" (adds entries that occur more that once) -- (auto allocation below) void assembleDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const; // Assemble "nodevec" (adds entries that occur more that once) -- (auto allocation below) void assembleNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const; // Auto-allocation of the functions above + xt::xtensor<double,1> AsDofs_i( + const xt::xtensor<double,2>& nodevec) const; + + xt::xtensor<double,2> AsNode( + const xt::xtensor<double,1>& dofval) const; + xt::xtensor<double,3> AsElement( const xt::xtensor<double,2>& nodevec) const; xt::xtensor<double,1> AssembleDofs( const xt::xtensor<double,3>& elemvec) const; xt::xtensor<double,2> AssembleNode( const xt::xtensor<double,3>& elemvec) const; private: // Bookkeeping xt::xtensor<size_t,2> m_conn; // connectivity [nelem, nne ] xt::xtensor<size_t,2> m_dofs; // DOF-numbers per node [nnode, ndim] xt::xtensor<size_t,1> m_iiu; // unknown DOFs [nnu] xt::xtensor<size_t,1> m_iip; // prescribed DOFs [nnp] xt::xtensor<size_t,1> m_iid; // dependent DOFs [nnd] // Dimensions size_t m_nelem; // number of elements size_t m_nne; // number of nodes per element size_t m_nnode; // number of nodes size_t m_ndim; // number of dimensions size_t m_ndof; // number of DOFs size_t m_nnu; // number of independent, unknown DOFs size_t m_nnp; // number of independent, prescribed DOFs size_t m_nni; // number of independent DOFs size_t m_nnd; // number of dependent DOFs // Tyings Eigen::SparseMatrix<double> m_Cdu; Eigen::SparseMatrix<double> m_Cdp; Eigen::SparseMatrix<double> m_Cdi; Eigen::SparseMatrix<double> m_Cud; Eigen::SparseMatrix<double> m_Cpd; Eigen::SparseMatrix<double> m_Cid; // equivalent Eigen functions Eigen::VectorXd Eigen_asDofs_d( const xt::xtensor<double,2>& nodevec) const; }; // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #include "VectorPartitionedTyings.hpp" // ================================================================================================= #endif diff --git a/include/GooseFEM/VectorPartitionedTyings.hpp b/include/GooseFEM/VectorPartitionedTyings.hpp index d817c1b..907ade0 100644 --- a/include/GooseFEM/VectorPartitionedTyings.hpp +++ b/include/GooseFEM/VectorPartitionedTyings.hpp @@ -1,328 +1,342 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #ifndef GOOSEFEM_VECTORPARTITIONEDTYINGS_HPP #define GOOSEFEM_VECTORPARTITIONEDTYINGS_HPP // ------------------------------------------------------------------------------------------------- #include "VectorPartitionedTyings.h" // ================================================================================================= namespace GooseFEM { // ------------------------------------------------------------------------------------------------- inline VectorPartitionedTyings::VectorPartitionedTyings( const xt::xtensor<size_t,2>& conn, const xt::xtensor<size_t,2>& dofs, const Eigen::SparseMatrix<double>& Cdu, const Eigen::SparseMatrix<double>& Cdp, const Eigen::SparseMatrix<double>& Cdi) : m_conn(conn), m_dofs(dofs), m_Cdu(Cdu), m_Cdp(Cdp), m_Cdi(Cdi) { GOOSEFEM_ASSERT(Cdu.rows() == Cdp.rows()); GOOSEFEM_ASSERT(Cdi.rows() == Cdp.rows()); - m_nnu = static_cast<size_t>(m_Cdu.cols()); - m_nnp = static_cast<size_t>(m_Cdp.cols()); - m_nnd = static_cast<size_t>(m_Cdp.rows()); - m_nni = m_nnu + m_nnp; - m_ndof = m_nni + m_nnd; + m_nnu = static_cast<size_t>(m_Cdu.cols()); + m_nnp = static_cast<size_t>(m_Cdp.cols()); + m_nnd = static_cast<size_t>(m_Cdp.rows()); + m_nni = m_nnu + m_nnp; + m_ndof = m_nni + m_nnd; - m_iiu = xt::arange<size_t>(m_nnu); - m_iip = xt::arange<size_t>(m_nnu, m_nnu + m_nnp); - m_iid = xt::arange<size_t>(m_nni, m_nni + m_nnd); + m_iiu = xt::arange<size_t>(m_nnu); + m_iip = xt::arange<size_t>(m_nnu, m_nnu + m_nnp); + m_iid = xt::arange<size_t>(m_nni, m_nni + m_nnd); - m_nelem = m_conn.shape()[0]; - m_nne = m_conn.shape()[1]; - m_nnode = m_dofs.shape()[0]; - m_ndim = m_dofs.shape()[1]; + m_nelem = m_conn.shape(0); + m_nne = m_conn.shape(1); + m_nnode = m_dofs.shape(0); + m_ndim = m_dofs.shape(1); - m_Cud = m_Cdu.transpose(); - m_Cpd = m_Cdp.transpose(); - m_Cid = m_Cdi.transpose(); + m_Cud = m_Cdu.transpose(); + m_Cpd = m_Cdp.transpose(); + m_Cid = m_Cdi.transpose(); GOOSEFEM_ASSERT(static_cast<size_t>(m_Cdi.cols()) == m_nni); GOOSEFEM_ASSERT(m_ndof <= m_nnode * m_ndim); GOOSEFEM_ASSERT(m_ndof == xt::amax(m_dofs)[0] + 1); } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nelem() const { return m_nelem; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nne() const { return m_nne; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nnode() const { return m_nnode; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::ndim() const { return m_ndim; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::ndof() const { return m_ndof; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nnu() const { return m_nnu; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nnp() const { return m_nnp; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nni() const { return m_nni; } // ------------------------------------------------------------------------------------------------- inline size_t VectorPartitionedTyings::nnd() const { return m_nnd; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,2> VectorPartitionedTyings::dofs() const { return m_dofs; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitionedTyings::iiu() const { return m_iiu; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitionedTyings::iip() const { return m_iip; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitionedTyings::iii() const { return xt::arange<size_t>(m_nni); } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<size_t,1> VectorPartitionedTyings::iid() const { return m_iid; } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::copy_p( const xt::xtensor<double,1>& dofval_src, xt::xtensor<double,1>& dofval_dest) const { GOOSEFEM_ASSERT(dofval_src.size() == m_ndof || dofval_src.size() == m_nni); GOOSEFEM_ASSERT(dofval_dest.size() == m_ndof || dofval_dest.size() == m_nni); #pragma omp parallel for for (size_t i = m_nnu; i < m_nni; ++i) dofval_dest(i) = dofval_src(i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::asDofs_i( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,1>& dofval_i, bool apply_tyings) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(dofval_i.size() == m_nni); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_dofs(m,i) < m_nni) dofval_i(m_dofs(m,i)) = nodevec(m,i); if (!apply_tyings) return; Eigen::VectorXd Dofval_d = this->Eigen_asDofs_d(nodevec); Eigen::VectorXd Dofval_i = m_Cid * Dofval_d; #pragma omp parallel for for (size_t i = 0 ; i < m_nni ; ++i) dofval_i(i) += Dofval_i(i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::asNode( const xt::xtensor<double,1>& dofval, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(dofval.size() == m_ndof); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) nodevec(m,i) = dofval(m_dofs(m,i)); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::asElement( const xt::xtensor<double,2>& nodevec, xt::xtensor<double,3>& elemvec) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); #pragma omp parallel for for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) elemvec(e,m,i) = nodevec(m_conn(e,m),i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::assembleDofs( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,1>& dofval) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(dofval.size() == m_ndof); dofval.fill(0.0); for (size_t e = 0 ; e < m_nelem ; ++e) for (size_t m = 0 ; m < m_nne ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) dofval(m_dofs(m_conn(e,m),i)) += elemvec(e,m,i); } // ------------------------------------------------------------------------------------------------- inline void VectorPartitionedTyings::assembleNode( const xt::xtensor<double,3>& elemvec, xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(elemvec.shape() ==\ std::decay_t<decltype(elemvec)>::shape_type({m_nelem, m_nne, m_ndim})); GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); xt::xtensor<double,1> dofval = this->AssembleDofs(elemvec); this->asNode(dofval, nodevec); } // ------------------------------------------------------------------------------------------------- +inline xt::xtensor<double,1> VectorPartitionedTyings::AsDofs_i( + const xt::xtensor<double,2>& nodevec) const +{ + xt::xtensor<double,1> dofval = xt::empty<double>({m_nni}); + this->asDofs_i(nodevec, dofval); + return dofval; +} + +// ------------------------------------------------------------------------------------------------- + +inline xt::xtensor<double,2> VectorPartitionedTyings::AsNode( + const xt::xtensor<double,1>& dofval) const +{ + xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); + this->asNode(dofval, nodevec); + return nodevec; +} + +// ------------------------------------------------------------------------------------------------- + inline xt::xtensor<double,3> VectorPartitionedTyings::AsElement( const xt::xtensor<double,2>& nodevec) const { xt::xtensor<double,3> elemvec = xt::empty<double>({m_nelem, m_nne, m_ndim}); - this->asElement(nodevec, elemvec); - return elemvec; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,1> VectorPartitionedTyings::AssembleDofs( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,1> dofval = xt::empty<double>({m_ndof}); - this->assembleDofs(elemvec, dofval); - return dofval; } // ------------------------------------------------------------------------------------------------- inline xt::xtensor<double,2> VectorPartitionedTyings::AssembleNode( const xt::xtensor<double,3>& elemvec) const { xt::xtensor<double,2> nodevec = xt::empty<double>({m_nnode, m_ndim}); - this->assembleNode(elemvec, nodevec); - return nodevec; } // ------------------------------------------------------------------------------------------------- inline Eigen::VectorXd VectorPartitionedTyings::Eigen_asDofs_d( const xt::xtensor<double,2>& nodevec) const { GOOSEFEM_ASSERT(nodevec.shape() ==\ std::decay_t<decltype(nodevec)>::shape_type({m_nnode, m_ndim})); Eigen::VectorXd dofval_d(m_nnd,1); #pragma omp parallel for for (size_t m = 0 ; m < m_nnode ; ++m) for (size_t i = 0 ; i < m_ndim ; ++i) if (m_dofs(m,i) >= m_nni) dofval_d(m_dofs(m,i)-m_nni) = nodevec(m,i); return dofval_d; } // ------------------------------------------------------------------------------------------------- } // namespace ... // ================================================================================================= #endif diff --git a/python/Element.hpp b/python/Element.hpp index 84e5b58..bd9ba77 100644 --- a/python/Element.hpp +++ b/python/Element.hpp @@ -1,40 +1,35 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_Element(py::module &m) { m.def("asElementVector", &GooseFEM::Element::asElementVector, "Convert nodal vector [nnode, ndim] to nodal vector stored per element [nelem, nne, ndim]", py::arg("conn"), py::arg("nodevec")); m.def("assembleElementVector", &GooseFEM::Element::assembleNodeVector, "Assemble nodal vector stored per element [nelem, nne, ndim] to nodal vector [nnode, ndim]", py::arg("conn"), py::arg("elemvec")); } // ================================================================================================= diff --git a/python/ElementHex8.hpp b/python/ElementHex8.hpp index 2e94887..4e0755a 100644 --- a/python/ElementHex8.hpp +++ b/python/ElementHex8.hpp @@ -1,149 +1,144 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_ElementHex8(py::module &m) { py::class_<GooseFEM::Element::Hex8::Quadrature>(m, "Quadrature") .def(py::init<const xt::xtensor<double,3>&>(), "Quadrature", py::arg("x")) .def(py::init< const xt::xtensor<double,3>&, const xt::xtensor<double,2>&, const xt::xtensor<double,1>&>(), "Quadrature", py::arg("x"), py::arg("xi"), py::arg("w")) .def("update_x", &GooseFEM::Element::Hex8::Quadrature::update_x, "Update the nodal positions") .def("nelem", &GooseFEM::Element::Hex8::Quadrature::nelem, "Number of elements") .def("nne", &GooseFEM::Element::Hex8::Quadrature::nne, "Number of nodes per element") .def("ndim", &GooseFEM::Element::Hex8::Quadrature::ndim, "Number of dimensions") .def("nip", &GooseFEM::Element::Hex8::Quadrature::nip, "Number of integration points") .def("DV", py::overload_cast<size_t>(&GooseFEM::Element::Hex8::Quadrature::DV, py::const_), "Integration point volume (qtensor)") .def("DV", py::overload_cast<>(&GooseFEM::Element::Hex8::Quadrature::DV, py::const_), "Integration point volume (qscalar)") .def("GradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Hex8::Quadrature::GradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("GradN_vector_T", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Hex8::Quadrature::GradN_vector_T, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("SymGradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Hex8::Quadrature::SymGradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("Int_N_scalar_NT_dV", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Element::Hex8::Quadrature::Int_N_scalar_NT_dV, py::const_), "Integration, returns 'elemmat'", py::arg("qscalar")) .def("Int_gradN_dot_tensor2_dV", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Element::Hex8::Quadrature::Int_gradN_dot_tensor2_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("Int_gradN_dot_tensor4_dot_gradNT_dV", py::overload_cast<const xt::xtensor<double,6>&>( &GooseFEM::Element::Hex8::Quadrature::Int_gradN_dot_tensor4_dot_gradNT_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("__repr__", [](const GooseFEM::Element::Hex8::Quadrature&){ return "<GooseFEM.Element.Hex8.Quadrature>"; }); } // ------------------------------------------------------------------------------------------------- void init_ElementHex8Gauss(py::module& m) { m.def("nip", &GooseFEM::Element::Hex8::Gauss::nip, "Return number of integration point"); m.def("xi", &GooseFEM::Element::Hex8::Gauss::xi, "Return integration point coordinates"); m.def("w", &GooseFEM::Element::Hex8::Gauss::w, "Return integration point weights"); } // ------------------------------------------------------------------------------------------------- void init_ElementHex8Nodal(py::module& m) { m.def("nip", &GooseFEM::Element::Hex8::Nodal::nip, "Return number of integration point"); m.def("xi", &GooseFEM::Element::Hex8::Nodal::xi, "Return integration point coordinates"); m.def("w", &GooseFEM::Element::Hex8::Nodal::w, "Return integration point weights"); } // ================================================================================================= diff --git a/python/ElementQuad4.hpp b/python/ElementQuad4.hpp index aadc58b..7b8c9ba 100644 --- a/python/ElementQuad4.hpp +++ b/python/ElementQuad4.hpp @@ -1,149 +1,144 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_ElementQuad4(py::module& m) { py::class_<GooseFEM::Element::Quad4::Quadrature>(m, "Quadrature") .def(py::init<const xt::xtensor<double,3>&>(), "Quadrature", py::arg("x")) .def(py::init< const xt::xtensor<double,3>&, const xt::xtensor<double,2>&, const xt::xtensor<double,1>&>(), "Quadrature", py::arg("x"), py::arg("xi"), py::arg("w")) .def("update_x", &GooseFEM::Element::Quad4::Quadrature::update_x, "Update the nodal positions") .def("nelem", &GooseFEM::Element::Quad4::Quadrature::nelem, "Number of elements") .def("nne", &GooseFEM::Element::Quad4::Quadrature::nne, "Number of nodes per element") .def("ndim", &GooseFEM::Element::Quad4::Quadrature::ndim, "Number of dimensions") .def("nip", &GooseFEM::Element::Quad4::Quadrature::nip, "Number of integration points") .def("DV", py::overload_cast<size_t>(&GooseFEM::Element::Quad4::Quadrature::DV, py::const_), "Integration point volume (qtensor)") .def("DV", py::overload_cast<>(&GooseFEM::Element::Quad4::Quadrature::DV, py::const_), "Integration point volume (qscalar)") .def("GradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::Quadrature::GradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("GradN_vector_T", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::Quadrature::GradN_vector_T, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("SymGradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::Quadrature::SymGradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("Int_N_scalar_NT_dV", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Element::Quad4::Quadrature::Int_N_scalar_NT_dV, py::const_), "Integration, returns 'elemmat'", py::arg("qscalar")) .def("Int_gradN_dot_tensor2_dV", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Element::Quad4::Quadrature::Int_gradN_dot_tensor2_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("Int_gradN_dot_tensor4_dot_gradNT_dV", py::overload_cast<const xt::xtensor<double,6>&>( &GooseFEM::Element::Quad4::Quadrature::Int_gradN_dot_tensor4_dot_gradNT_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("__repr__", [](const GooseFEM::Element::Quad4::Quadrature&){ return "<GooseFEM.Element.Quad4.Quadrature>"; }); } // ------------------------------------------------------------------------------------------------- void init_ElementQuad4Gauss(py::module& m) { m.def("nip", &GooseFEM::Element::Quad4::Gauss::nip, "Return number of integration point"); m.def("xi", &GooseFEM::Element::Quad4::Gauss::xi, "Return integration point coordinates"); m.def("w", &GooseFEM::Element::Quad4::Gauss::w, "Return integration point weights"); } // ------------------------------------------------------------------------------------------------- void init_ElementQuad4Nodal(py::module& m) { m.def("nip", &GooseFEM::Element::Quad4::Nodal::nip, "Return number of integration point"); m.def("xi", &GooseFEM::Element::Quad4::Nodal::xi, "Return integration point coordinates"); m.def("w", &GooseFEM::Element::Quad4::Nodal::w, "Return integration point weights"); } // ================================================================================================= diff --git a/python/ElementQuad4Axisymmetric.hpp b/python/ElementQuad4Axisymmetric.hpp index e252bb0..97e54fe 100644 --- a/python/ElementQuad4Axisymmetric.hpp +++ b/python/ElementQuad4Axisymmetric.hpp @@ -1,111 +1,106 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_ElementQuad4Axisymmetric(py::module& m) { py::class_<GooseFEM::Element::Quad4::QuadratureAxisymmetric>(m, "QuadratureAxisymmetric") .def(py::init<const xt::xtensor<double,3>&>(), "QuadratureAxisymmetric", py::arg("x")) .def(py::init< const xt::xtensor<double,3>&, const xt::xtensor<double,2>&, const xt::xtensor<double,1>&>(), "QuadratureAxisymmetric", py::arg("x"), py::arg("xi"), py::arg("w")) .def("update_x", &GooseFEM::Element::Quad4::QuadratureAxisymmetric::update_x, "Update the nodal positions") .def("nelem", &GooseFEM::Element::Quad4::QuadratureAxisymmetric::nelem, "Number of elements") .def("nne", &GooseFEM::Element::Quad4::QuadratureAxisymmetric::nne, "Number of nodes per element") .def("ndim", &GooseFEM::Element::Quad4::QuadratureAxisymmetric::ndim, "Number of dimensions") .def("nip", &GooseFEM::Element::Quad4::QuadratureAxisymmetric::nip, "Number of integration points") .def("DV", py::overload_cast<size_t>(&GooseFEM::Element::Quad4::QuadratureAxisymmetric::DV, py::const_), "Integration point volume (qtensor)") .def("DV", py::overload_cast<>(&GooseFEM::Element::Quad4::QuadratureAxisymmetric::DV, py::const_), "Integration point volume (qscalar)") .def("GradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::GradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("GradN_vector_T", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::GradN_vector_T, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("SymGradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::SymGradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("Int_N_scalar_NT_dV", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::Int_N_scalar_NT_dV, py::const_), "Integration, returns 'elemmat'", py::arg("qscalar")) .def("Int_gradN_dot_tensor2_dV", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::Int_gradN_dot_tensor2_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("Int_gradN_dot_tensor4_dot_gradNT_dV", py::overload_cast<const xt::xtensor<double,6>&>( &GooseFEM::Element::Quad4::QuadratureAxisymmetric::Int_gradN_dot_tensor4_dot_gradNT_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("__repr__", [](const GooseFEM::Element::Quad4::QuadratureAxisymmetric&){ return "<GooseFEM.Element.Quad4.QuadratureAxisymmetric>"; }); } // ================================================================================================= diff --git a/python/ElementQuad4Planar.hpp b/python/ElementQuad4Planar.hpp index 9876bd7..05d6b0e 100644 --- a/python/ElementQuad4Planar.hpp +++ b/python/ElementQuad4Planar.hpp @@ -1,111 +1,106 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_ElementQuad4Planar(py::module& m) { py::class_<GooseFEM::Element::Quad4::QuadraturePlanar>(m, "QuadraturePlanar") .def(py::init<const xt::xtensor<double,3>&>(), "QuadraturePlanar", py::arg("x")) .def(py::init< const xt::xtensor<double,3>&, const xt::xtensor<double,2>&, const xt::xtensor<double,1>&>(), "QuadraturePlanar", py::arg("x"), py::arg("xi"), py::arg("w")) .def("update_x", &GooseFEM::Element::Quad4::QuadraturePlanar::update_x, "Update the nodal positions") .def("nelem", &GooseFEM::Element::Quad4::QuadraturePlanar::nelem, "Number of elements") .def("nne", &GooseFEM::Element::Quad4::QuadraturePlanar::nne, "Number of nodes per element") .def("ndim", &GooseFEM::Element::Quad4::QuadraturePlanar::ndim, "Number of dimensions") .def("nip", &GooseFEM::Element::Quad4::QuadraturePlanar::nip, "Number of integration points") .def("DV", py::overload_cast<size_t>(&GooseFEM::Element::Quad4::QuadraturePlanar::DV, py::const_), "Integration point volume (qtensor)") .def("DV", py::overload_cast<>(&GooseFEM::Element::Quad4::QuadraturePlanar::DV, py::const_), "Integration point volume (qscalar)") .def("GradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::GradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("GradN_vector_T", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::GradN_vector_T, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("SymGradN_vector", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::SymGradN_vector, py::const_), "Dyadic product, returns 'qtensor'", py::arg("elemvec")) .def("Int_N_scalar_NT_dV", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::Int_N_scalar_NT_dV, py::const_), "Integration, returns 'elemmat'", py::arg("qscalar")) .def("Int_gradN_dot_tensor2_dV", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::Int_gradN_dot_tensor2_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("Int_gradN_dot_tensor4_dot_gradNT_dV", py::overload_cast<const xt::xtensor<double,6>&>( &GooseFEM::Element::Quad4::QuadraturePlanar::Int_gradN_dot_tensor4_dot_gradNT_dV, py::const_), "Integration, returns 'elemvec'", py::arg("qtensor")) .def("__repr__", [](const GooseFEM::Element::Quad4::QuadraturePlanar&){ return "<GooseFEM.Element.Quad4.QuadraturePlanar>"; }); } // ================================================================================================= diff --git a/python/Matrix.hpp b/python/Matrix.hpp new file mode 100644 index 0000000..f79a971 --- /dev/null +++ b/python/Matrix.hpp @@ -0,0 +1,79 @@ +/* ================================================================================================= + +(c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM + +================================================================================================= */ + +#include <Eigen/Eigen> +#include <pybind11/pybind11.h> +#include <pybind11/eigen.h> +#include <pyxtensor/pyxtensor.hpp> +#include "../include/GooseFEM/GooseFEM.h" + +// ================================================================================================= + +namespace py = pybind11; + +// ================================================================================================= + +void init_Matrix(py::module& m) +{ + +py::class_<GooseFEM::Matrix<>>(m, "Matrix") + + .def(py::init< + const xt::xtensor<size_t,2>&, + const xt::xtensor<size_t,2>&>(), + "Sparse matrix", + py::arg("conn"), + py::arg("dofs")) + + .def("nelem", + &GooseFEM::Matrix<>::nelem, + "Number of element") + + .def("nne", + &GooseFEM::Matrix<>::nne, + "Number of nodes per element") + + .def("nnode", + &GooseFEM::Matrix<>::nnode, + "Number of nodes") + + .def("ndim", + &GooseFEM::Matrix<>::ndim, + "Number of dimensions") + + .def("ndof", + &GooseFEM::Matrix<>::ndof, + "Number of degrees-of-freedom") + + .def("assemble", + &GooseFEM::Matrix<>::assemble, + "Assemble matrix from 'elemmat", + py::arg("elemmat")) + + .def("dofs", + &GooseFEM::Matrix<>::dofs, + "Return degrees-of-freedom") + + .def("Solve", + py::overload_cast<const xt::xtensor<double,1>&>( + &GooseFEM::Matrix<>::Solve), + "Solve", + py::arg("b")) + + .def("Solve", + py::overload_cast<const xt::xtensor<double,2>&>( + &GooseFEM::Matrix<>::Solve), + "Solve", + py::arg("b")) + + .def("__repr__", + [](const GooseFEM::Matrix<>&){ + return "<GooseFEM.Matrix>"; }); + +} + +// ================================================================================================= + diff --git a/python/MatrixDiagonal.hpp b/python/MatrixDiagonal.hpp new file mode 100644 index 0000000..1e818d3 --- /dev/null +++ b/python/MatrixDiagonal.hpp @@ -0,0 +1,97 @@ +/* ================================================================================================= + +(c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM + +================================================================================================= */ + +#include <pybind11/pybind11.h> +#include <pyxtensor/pyxtensor.hpp> +#include "../include/GooseFEM/GooseFEM.h" + +// ================================================================================================= + +namespace py = pybind11; + +// ================================================================================================= + +void init_MatrixDiagonal(py::module& m) +{ + +py::class_<GooseFEM::MatrixDiagonal>(m, "MatrixDiagonal") + + .def(py::init< + const xt::xtensor<size_t,2>&, + const xt::xtensor<size_t,2>&>(), + "Diagonal matrix", + py::arg("conn"), + py::arg("dofs")) + + .def("nelem", + &GooseFEM::MatrixDiagonal::nelem, + "Number of element") + + .def("nne", + &GooseFEM::MatrixDiagonal::nne, + "Number of nodes per element") + + .def("nnode", + &GooseFEM::MatrixDiagonal::nnode, + "Number of nodes") + + .def("ndim", + &GooseFEM::MatrixDiagonal::ndim, + "Number of dimensions") + + .def("ndof", + &GooseFEM::MatrixDiagonal::ndof, + "Number of degrees-of-freedom") + + .def("set", + &GooseFEM::MatrixDiagonal::set, + "Set matrix components", + py::arg("A")) + + .def("assemble", + &GooseFEM::MatrixDiagonal::assemble, + "Assemble matrix from 'elemmat", + py::arg("elemmat")) + + .def("dofs", + &GooseFEM::MatrixDiagonal::dofs, + "Return degrees-of-freedom") + + .def("AsDiagonal", &GooseFEM::MatrixDiagonal::AsDiagonal, + "Return as diagonal matrix (column)") + + .def("Dot", + py::overload_cast<const xt::xtensor<double,1>&>( + &GooseFEM::MatrixDiagonal::Dot, py::const_), + "Dot product 'b_i = A_ij * x_j", + py::arg("x")) + + .def("Dot", + py::overload_cast<const xt::xtensor<double,2>&>( + &GooseFEM::MatrixDiagonal::Dot, py::const_), + "Dot product 'b_i = A_ij * x_j", + py::arg("x")) + + .def("Solve", + py::overload_cast<const xt::xtensor<double,1>&>( + &GooseFEM::MatrixDiagonal::Solve), + "Solve", + py::arg("b")) + + .def("Solve", + py::overload_cast<const xt::xtensor<double,2>&>( + &GooseFEM::MatrixDiagonal::Solve), + "Solve", + py::arg("b")) + + .def("__repr__", + [](const GooseFEM::MatrixDiagonal&){ + return "<GooseFEM.MatrixDiagonal>"; }); + +} + +// ================================================================================================= + diff --git a/python/MatrixDiagonalPartitioned.hpp b/python/MatrixDiagonalPartitioned.hpp index 2e08896..1b5311c 100644 --- a/python/MatrixDiagonalPartitioned.hpp +++ b/python/MatrixDiagonalPartitioned.hpp @@ -1,153 +1,148 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_MatrixDiagonalPartitioned(py::module& m) { py::class_<GooseFEM::MatrixDiagonalPartitioned>(m, "MatrixDiagonalPartitioned") .def(py::init< const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,1>&>(), "Diagonal, partitioned, matrix", py::arg("conn"), py::arg("dofs"), py::arg("iip")) .def("nelem", &GooseFEM::MatrixDiagonalPartitioned::nelem, "Number of element") .def("nne", &GooseFEM::MatrixDiagonalPartitioned::nne, "Number of nodes per element") .def("nnode", &GooseFEM::MatrixDiagonalPartitioned::nnode, "Number of nodes") .def("ndim", &GooseFEM::MatrixDiagonalPartitioned::ndim, "Number of dimensions") .def("ndof", &GooseFEM::MatrixDiagonalPartitioned::ndof, "Number of degrees-of-freedom") .def("nnu", &GooseFEM::MatrixDiagonalPartitioned::nnu, "Number of unknown degrees-of-freedom") .def("nnp", &GooseFEM::MatrixDiagonalPartitioned::nnp, "Number of prescribed degrees-of-freedom") .def("assemble", &GooseFEM::MatrixDiagonalPartitioned::assemble, "Assemble matrix from 'elemmat", py::arg("elemmat")) .def("dofs", &GooseFEM::MatrixDiagonalPartitioned::dofs, "Return degrees-of-freedom") .def("iiu", &GooseFEM::MatrixDiagonalPartitioned::iiu, "Return unknown degrees-of-freedom") .def("iip", &GooseFEM::MatrixDiagonalPartitioned::iip, "Return prescribed degrees-of-freedom") .def("AsDiagonal", &GooseFEM::MatrixDiagonalPartitioned::AsDiagonal, "Return as diagonal matrix (column)") .def("Dot", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Dot, py::const_), "Dot product 'b_i = A_ij * x_j", py::arg("x")) .def("Dot_u", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Dot_u, py::const_), "Dot product 'b_i = A_ij * x_j (b_u = A_uu * x_u + A_up * x_p == A_uu * x_u)", py::arg("x_u"), py::arg("x_p")) .def("Dot_p", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Dot_p, py::const_), "Dot product 'b_i = A_ij * x_j (b_p = A_pu * x_u + A_pp * x_p == A_pp * x_p)", py::arg("x_u"), py::arg("x_p")) .def("Solve", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve", py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( &GooseFEM::MatrixDiagonalPartitioned::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve_u", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Solve_u), "Solve_u", py::arg("b_u"), py::arg("x_p")) .def("Reaction", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Reaction, py::const_), "Reaction", py::arg("x"), py::arg("b")) .def("Reaction", py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( &GooseFEM::MatrixDiagonalPartitioned::Reaction, py::const_), "Reaction", py::arg("x"), py::arg("b")) .def("Reaction_p", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixDiagonalPartitioned::Reaction_p, py::const_), "Reaction_p", py::arg("x_u"), py::arg("x_p")) .def("__repr__", [](const GooseFEM::MatrixDiagonalPartitioned&){ return "<GooseFEM.MatrixDiagonalPartitioned>"; }); } // ================================================================================================= diff --git a/python/MatrixPartitioned.hpp b/python/MatrixPartitioned.hpp index 30345ce..c9cfe94 100644 --- a/python/MatrixPartitioned.hpp +++ b/python/MatrixPartitioned.hpp @@ -1,130 +1,127 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #include <Eigen/Eigen> - #include <pybind11/pybind11.h> #include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_MatrixPartitioned(py::module& m) { py::class_<GooseFEM::MatrixPartitioned<>>(m, "MatrixPartitioned") .def(py::init< const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,1>&>(), "Sparse, partitioned, matrix", py::arg("conn"), py::arg("dofs"), py::arg("iip")) .def("nelem", &GooseFEM::MatrixPartitioned<>::nelem, "Number of element") .def("nne", &GooseFEM::MatrixPartitioned<>::nne, "Number of nodes per element") .def("nnode", &GooseFEM::MatrixPartitioned<>::nnode, "Number of nodes") .def("ndim", &GooseFEM::MatrixPartitioned<>::ndim, "Number of dimensions") .def("ndof", &GooseFEM::MatrixPartitioned<>::ndof, "Number of degrees-of-freedom") .def("nnu", &GooseFEM::MatrixPartitioned<>::nnu, "Number of unknown degrees-of-freedom") .def("nnp", &GooseFEM::MatrixPartitioned<>::nnp, "Number of prescribed degrees-of-freedom") .def("assemble", &GooseFEM::MatrixPartitioned<>::assemble, "Assemble matrix from 'elemmat", py::arg("elemmat")) .def("dofs", &GooseFEM::MatrixPartitioned<>::dofs, "Return degrees-of-freedom") .def("iiu", &GooseFEM::MatrixPartitioned<>::iiu, "Return unknown degrees-of-freedom") .def("iip", &GooseFEM::MatrixPartitioned<>::iip, "Return prescribed degrees-of-freedom") .def("Solve", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixPartitioned<>::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve", py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( &GooseFEM::MatrixPartitioned<>::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve_u", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixPartitioned<>::Solve_u), "Solve_u", py::arg("b_u"), py::arg("x_p")) .def("Reaction", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixPartitioned<>::Reaction, py::const_), "Reaction", py::arg("x"), py::arg("b")) .def("Reaction", py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( &GooseFEM::MatrixPartitioned<>::Reaction, py::const_), "Reaction", py::arg("x"), py::arg("b")) .def("Reaction_p", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( &GooseFEM::MatrixPartitioned<>::Reaction_p, py::const_), "Reaction_p", py::arg("x_u"), py::arg("x_p")) .def("__repr__", [](const GooseFEM::MatrixPartitioned<>&){ return "<GooseFEM.MatrixPartitioned>"; }); } // ================================================================================================= diff --git a/python/MatrixPartitioned.hpp b/python/MatrixPartitionedTyings.hpp similarity index 54% copy from python/MatrixPartitioned.hpp copy to python/MatrixPartitionedTyings.hpp index 30345ce..ed15013 100644 --- a/python/MatrixPartitioned.hpp +++ b/python/MatrixPartitionedTyings.hpp @@ -1,130 +1,128 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #include <Eigen/Eigen> - #include <pybind11/pybind11.h> #include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= -void init_MatrixPartitioned(py::module& m) +void init_MatrixPartitionedTyings(py::module& m) { -py::class_<GooseFEM::MatrixPartitioned<>>(m, "MatrixPartitioned") +py::class_<GooseFEM::MatrixPartitionedTyings<>>(m, "MatrixPartitionedTyings") .def(py::init< const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,2>&, - const xt::xtensor<size_t,1>&>(), + const Eigen::SparseMatrix<double>&, + const Eigen::SparseMatrix<double>&>(), "Sparse, partitioned, matrix", py::arg("conn"), py::arg("dofs"), - py::arg("iip")) + py::arg("Cdu"), + py::arg("Cdp")) .def("nelem", - &GooseFEM::MatrixPartitioned<>::nelem, + &GooseFEM::MatrixPartitionedTyings<>::nelem, "Number of element") .def("nne", - &GooseFEM::MatrixPartitioned<>::nne, + &GooseFEM::MatrixPartitionedTyings<>::nne, "Number of nodes per element") .def("nnode", - &GooseFEM::MatrixPartitioned<>::nnode, + &GooseFEM::MatrixPartitionedTyings<>::nnode, "Number of nodes") .def("ndim", - &GooseFEM::MatrixPartitioned<>::ndim, + &GooseFEM::MatrixPartitionedTyings<>::ndim, "Number of dimensions") .def("ndof", - &GooseFEM::MatrixPartitioned<>::ndof, + &GooseFEM::MatrixPartitionedTyings<>::ndof, "Number of degrees-of-freedom") .def("nnu", - &GooseFEM::MatrixPartitioned<>::nnu, + &GooseFEM::MatrixPartitionedTyings<>::nnu, "Number of unknown degrees-of-freedom") .def("nnp", - &GooseFEM::MatrixPartitioned<>::nnp, + &GooseFEM::MatrixPartitionedTyings<>::nnp, "Number of prescribed degrees-of-freedom") + .def("nni", + &GooseFEM::MatrixPartitionedTyings<>::nni, + "Number of independent degrees-of-freedom") + + .def("nnd", + &GooseFEM::MatrixPartitionedTyings<>::nnd, + "Number of dependent degrees-of-freedom") + .def("assemble", - &GooseFEM::MatrixPartitioned<>::assemble, + &GooseFEM::MatrixPartitionedTyings<>::assemble, "Assemble matrix from 'elemmat", py::arg("elemmat")) .def("dofs", - &GooseFEM::MatrixPartitioned<>::dofs, + &GooseFEM::MatrixPartitionedTyings<>::dofs, "Return degrees-of-freedom") .def("iiu", - &GooseFEM::MatrixPartitioned<>::iiu, + &GooseFEM::MatrixPartitionedTyings<>::iiu, "Return unknown degrees-of-freedom") .def("iip", - &GooseFEM::MatrixPartitioned<>::iip, + &GooseFEM::MatrixPartitionedTyings<>::iip, "Return prescribed degrees-of-freedom") + .def("iii", + &GooseFEM::MatrixPartitionedTyings<>::iii, + "Return independent degrees-of-freedom") + + .def("iid", + &GooseFEM::MatrixPartitionedTyings<>::iid, + "Return dependent degrees-of-freedom") + .def("Solve", py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( - &GooseFEM::MatrixPartitioned<>::Solve), + &GooseFEM::MatrixPartitionedTyings<>::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve", py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( - &GooseFEM::MatrixPartitioned<>::Solve), + &GooseFEM::MatrixPartitionedTyings<>::Solve), "Solve", py::arg("b"), py::arg("x")) .def("Solve_u", - py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( - &GooseFEM::MatrixPartitioned<>::Solve_u), + py::overload_cast< + const xt::xtensor<double,1>&, + const xt::xtensor<double,1>&, + const xt::xtensor<double,1>&>( + &GooseFEM::MatrixPartitionedTyings<>::Solve_u), "Solve_u", py::arg("b_u"), - py::arg("x_p")) - - .def("Reaction", - py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( - &GooseFEM::MatrixPartitioned<>::Reaction, py::const_), - "Reaction", - py::arg("x"), - py::arg("b")) - - .def("Reaction", - py::overload_cast<const xt::xtensor<double,2>&, const xt::xtensor<double,2>&>( - &GooseFEM::MatrixPartitioned<>::Reaction, py::const_), - "Reaction", - py::arg("x"), - py::arg("b")) - - .def("Reaction_p", - py::overload_cast<const xt::xtensor<double,1>&, const xt::xtensor<double,1>&>( - &GooseFEM::MatrixPartitioned<>::Reaction_p, py::const_), - "Reaction_p", - py::arg("x_u"), + py::arg("b_d"), py::arg("x_p")) .def("__repr__", - [](const GooseFEM::MatrixPartitioned<>&){ - return "<GooseFEM.MatrixPartitioned>"; }); + [](const GooseFEM::MatrixPartitionedTyings<>&){ + return "<GooseFEM.MatrixPartitionedTyings>"; }); } // ================================================================================================= diff --git a/python/Mesh.hpp b/python/Mesh.hpp index 98da07c..eae3d68 100644 --- a/python/Mesh.hpp +++ b/python/Mesh.hpp @@ -1,95 +1,100 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_Mesh(py::module& m) { +// ------------------------------------------------------------------------------------------------- + +py::enum_<GooseFEM::Mesh::ElementType>(m, "ElementType", "ElementType") + .value("Tri3", GooseFEM::Mesh::ElementType::Tri3) + .value("Quad4", GooseFEM::Mesh::ElementType::Quad4) + .value("Hex8", GooseFEM::Mesh::ElementType::Hex8) + .export_values(); + +// ------------------------------------------------------------------------------------------------- + py::class_<GooseFEM::Mesh::Renumber>(m, "Renumber") .def(py::init<const xt::xarray<size_t>&>(), "Class to renumber to the lowest possible indices. Use ``Renumber(...).get()`` to get the renumbered result", py::arg("dofs")) .def("get", &GooseFEM::Mesh::Renumber::get, "Get result of renumbering") .def("index", &GooseFEM::Mesh::Renumber::index, "Get index list to apply renumbering. Apply renumbering using ``index[dofs]``") .def("__repr__", [](const GooseFEM::Mesh::Renumber&){ return "<GooseFEM.Mesh.Renumber>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::Mesh::Reorder>(m, "Reorder") .def(py::init([](xt::xtensor<size_t,1>& a) { return new GooseFEM::Mesh::Reorder({a}); })) .def(py::init([](xt::xtensor<size_t,1>& a, xt::xtensor<size_t,1>& b) { return new GooseFEM::Mesh::Reorder({a,b}); })) .def(py::init([](xt::xtensor<size_t,1>& a, xt::xtensor<size_t,1>& b, xt::xtensor<size_t,1>& c) { return new GooseFEM::Mesh::Reorder({a,b,c}); })) .def(py::init([](xt::xtensor<size_t,1>& a, xt::xtensor<size_t,1>& b, xt::xtensor<size_t,1>& c, xt::xtensor<size_t,1>& d) { return new GooseFEM::Mesh::Reorder({a,b,c,d}); })) .def("get", &GooseFEM::Mesh::Reorder::get, "Reorder matrix (e.g. ``dofs``)") .def("index", &GooseFEM::Mesh::Reorder::index, "Get index list to apply renumbering. Apply renumbering using ``index[dofs]``") .def("__repr__", [](const GooseFEM::Mesh::Reorder &){ return "<GooseFEM.Mesh.Reorder>"; }); // ------------------------------------------------------------------------------------------------- m.def("dofs", &GooseFEM::Mesh::dofs, "List with DOF-numbers (in sequential order)", py::arg("nnode"), py::arg("ndim")); m.def("renumber", &GooseFEM::Mesh::renumber, "Renumber to lowest possible indices. Use ``GooseFEM.Mesh.Renumber`` for advanced functionality", py::arg("dofs")); m.def("coordination", &GooseFEM::Mesh::coordination, "Coordination number of each node (number of elements connected to each node)", py::arg("conn")); m.def("elem2node", &GooseFEM::Mesh::elem2node, "Element-numbers connected to each node", py::arg("conn")); } // ================================================================================================= diff --git a/python/MeshHex8.hpp b/python/MeshHex8.hpp index da2c29a..3e6040a 100644 --- a/python/MeshHex8.hpp +++ b/python/MeshHex8.hpp @@ -1,770 +1,770 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_MeshHex8(py::module& m) { py::class_<GooseFEM::Mesh::Hex8::Regular>(m, "Regular") .def(py::init<size_t,size_t,size_t,double>(), "Mesh with nx*ny*nz 'pixels' and edge size h", py::arg("nx"), py::arg("ny"), py::arg("nz"), py::arg("h")=1.) .def("nelem", &GooseFEM::Mesh::Hex8::Regular::nelem) .def("nnode", &GooseFEM::Mesh::Hex8::Regular::nnode) .def("nne", &GooseFEM::Mesh::Hex8::Regular::nne) .def("ndim", &GooseFEM::Mesh::Hex8::Regular::ndim) .def("coor", &GooseFEM::Mesh::Hex8::Regular::coor) .def("conn", &GooseFEM::Mesh::Hex8::Regular::conn) + .def("getElementType", + &GooseFEM::Mesh::Hex8::Regular::getElementType) + .def("nodesFront", &GooseFEM::Mesh::Hex8::Regular::nodesFront) .def("nodesBack", &GooseFEM::Mesh::Hex8::Regular::nodesBack) .def("nodesLeft", &GooseFEM::Mesh::Hex8::Regular::nodesLeft) .def("nodesRight", &GooseFEM::Mesh::Hex8::Regular::nodesRight) .def("nodesBottom", &GooseFEM::Mesh::Hex8::Regular::nodesBottom) .def("nodesTop", &GooseFEM::Mesh::Hex8::Regular::nodesTop) .def("nodesFrontFace", &GooseFEM::Mesh::Hex8::Regular::nodesFrontFace) .def("nodesBackFace", &GooseFEM::Mesh::Hex8::Regular::nodesBackFace) .def("nodesLeftFace", &GooseFEM::Mesh::Hex8::Regular::nodesLeftFace) .def("nodesRightFace", &GooseFEM::Mesh::Hex8::Regular::nodesRightFace) .def("nodesBottomFace", &GooseFEM::Mesh::Hex8::Regular::nodesBottomFace) .def("nodesTopFace", &GooseFEM::Mesh::Hex8::Regular::nodesTopFace) .def("nodesFrontBottomEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontBottomEdge) .def("nodesFrontTopEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontTopEdge) .def("nodesFrontLeftEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontLeftEdge) .def("nodesFrontRightEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontRightEdge) .def("nodesBackBottomEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackBottomEdge) .def("nodesBackTopEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackTopEdge) .def("nodesBackLeftEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackLeftEdge) .def("nodesBackRightEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackRightEdge) .def("nodesBottomLeftEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomLeftEdge) .def("nodesBottomRightEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomRightEdge) .def("nodesTopLeftEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopLeftEdge) .def("nodesTopRightEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopRightEdge) .def("nodesBottomFrontEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomFrontEdge) .def("nodesBottomBackEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomBackEdge) .def("nodesTopFrontEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopFrontEdge) .def("nodesTopBackEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopBackEdge) .def("nodesLeftBottomEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBottomEdge) .def("nodesLeftFrontEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftFrontEdge) .def("nodesLeftBackEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBackEdge) .def("nodesLeftTopEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftTopEdge) .def("nodesRightBottomEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightBottomEdge) .def("nodesRightTopEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightTopEdge) .def("nodesRightFrontEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightFrontEdge) .def("nodesRightBackEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightBackEdge) .def("nodesFrontBottomOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontBottomOpenEdge) .def("nodesFrontTopOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontTopOpenEdge) .def("nodesFrontLeftOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontLeftOpenEdge) .def("nodesFrontRightOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesFrontRightOpenEdge) .def("nodesBackBottomOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackBottomOpenEdge) .def("nodesBackTopOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackTopOpenEdge) .def("nodesBackLeftOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackLeftOpenEdge) .def("nodesBackRightOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBackRightOpenEdge) .def("nodesBottomLeftOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomLeftOpenEdge) .def("nodesBottomRightOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomRightOpenEdge) .def("nodesTopLeftOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopLeftOpenEdge) .def("nodesTopRightOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopRightOpenEdge) .def("nodesBottomFrontOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomFrontOpenEdge) .def("nodesBottomBackOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesBottomBackOpenEdge) .def("nodesTopFrontOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopFrontOpenEdge) .def("nodesTopBackOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesTopBackOpenEdge) .def("nodesLeftBottomOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBottomOpenEdge) .def("nodesLeftFrontOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftFrontOpenEdge) .def("nodesLeftBackOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBackOpenEdge) .def("nodesLeftTopOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesLeftTopOpenEdge) .def("nodesRightBottomOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightBottomOpenEdge) .def("nodesRightTopOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightTopOpenEdge) .def("nodesRightFrontOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightFrontOpenEdge) .def("nodesRightBackOpenEdge", &GooseFEM::Mesh::Hex8::Regular::nodesRightBackOpenEdge) .def("nodesFrontBottomLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontBottomLeftCorner) .def("nodesFrontBottomRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontBottomRightCorner) .def("nodesFrontTopLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontTopLeftCorner) .def("nodesFrontTopRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontTopRightCorner) .def("nodesBackBottomLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackBottomLeftCorner) .def("nodesBackBottomRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackBottomRightCorner) .def("nodesBackTopLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackTopLeftCorner) .def("nodesBackTopRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackTopRightCorner) .def("nodesFrontLeftBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontLeftBottomCorner) .def("nodesBottomFrontLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomFrontLeftCorner) .def("nodesBottomLeftFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomLeftFrontCorner) .def("nodesLeftFrontBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftFrontBottomCorner) .def("nodesLeftBottomFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBottomFrontCorner) .def("nodesFrontRightBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontRightBottomCorner) .def("nodesBottomFrontRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomFrontRightCorner) .def("nodesBottomRightFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomRightFrontCorner) .def("nodesRightFrontBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightFrontBottomCorner) .def("nodesRightBottomFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightBottomFrontCorner) .def("nodesFrontLeftTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontLeftTopCorner) .def("nodesTopFrontLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopFrontLeftCorner) .def("nodesTopLeftFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopLeftFrontCorner) .def("nodesLeftFrontTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftFrontTopCorner) .def("nodesLeftTopFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftTopFrontCorner) .def("nodesFrontRightTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesFrontRightTopCorner) .def("nodesTopFrontRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopFrontRightCorner) .def("nodesTopRightFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopRightFrontCorner) .def("nodesRightFrontTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightFrontTopCorner) .def("nodesRightTopFrontCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightTopFrontCorner) .def("nodesBackLeftBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackLeftBottomCorner) .def("nodesBottomBackLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomBackLeftCorner) .def("nodesBottomLeftBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomLeftBackCorner) .def("nodesLeftBackBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBackBottomCorner) .def("nodesLeftBottomBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBottomBackCorner) .def("nodesBackRightBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackRightBottomCorner) .def("nodesBottomBackRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomBackRightCorner) .def("nodesBottomRightBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBottomRightBackCorner) .def("nodesRightBackBottomCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightBackBottomCorner) .def("nodesRightBottomBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightBottomBackCorner) .def("nodesBackLeftTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackLeftTopCorner) .def("nodesTopBackLeftCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopBackLeftCorner) .def("nodesTopLeftBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopLeftBackCorner) .def("nodesLeftBackTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftBackTopCorner) .def("nodesLeftTopBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesLeftTopBackCorner) .def("nodesBackRightTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesBackRightTopCorner) .def("nodesTopBackRightCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopBackRightCorner) .def("nodesTopRightBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesTopRightBackCorner) .def("nodesRightBackTopCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightBackTopCorner) .def("nodesRightTopBackCorner", &GooseFEM::Mesh::Hex8::Regular::nodesRightTopBackCorner) - .def("nodesPeriodic", &GooseFEM::Mesh::Hex8::Regular::nodesPeriodic) .def("nodesOrigin", &GooseFEM::Mesh::Hex8::Regular::nodesOrigin) .def("dofs", &GooseFEM::Mesh::Hex8::Regular::dofs) .def("dofsPeriodic", &GooseFEM::Mesh::Hex8::Regular::dofsPeriodic) .def("__repr__", [](const GooseFEM::Mesh::Hex8::Regular &){ return "<GooseFEM.Mesh.Hex8.Regular>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::Mesh::Hex8::FineLayer>(m, "FineLayer") .def(py::init<size_t,size_t,size_t,double,size_t>(), "Mesh with nx*ny*nz 'pixels' and edge size h", py::arg("nx"), py::arg("ny"), py::arg("nz"), py::arg("h")=1., py::arg("nfine")=1) .def("nelem", &GooseFEM::Mesh::Hex8::FineLayer::nelem) .def("nnode", &GooseFEM::Mesh::Hex8::FineLayer::nnode) .def("nne", &GooseFEM::Mesh::Hex8::FineLayer::nne) .def("ndim", &GooseFEM::Mesh::Hex8::FineLayer::ndim) .def("shape", &GooseFEM::Mesh::Hex8::FineLayer::shape) .def("coor", &GooseFEM::Mesh::Hex8::FineLayer::coor) .def("conn", &GooseFEM::Mesh::Hex8::FineLayer::conn) + .def("getElementType", + &GooseFEM::Mesh::Hex8::FineLayer::getElementType) + .def("elementsMiddleLayer", &GooseFEM::Mesh::Hex8::FineLayer::elementsMiddleLayer) .def("nodesFront", &GooseFEM::Mesh::Hex8::FineLayer::nodesFront) .def("nodesBack", &GooseFEM::Mesh::Hex8::FineLayer::nodesBack) .def("nodesLeft", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeft) .def("nodesRight", &GooseFEM::Mesh::Hex8::FineLayer::nodesRight) .def("nodesBottom", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottom) .def("nodesTop", &GooseFEM::Mesh::Hex8::FineLayer::nodesTop) .def("nodesFrontFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontFace) .def("nodesBackFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackFace) .def("nodesLeftFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftFace) .def("nodesRightFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightFace) .def("nodesBottomFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomFace) .def("nodesTopFace", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopFace) .def("nodesFrontBottomEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontBottomEdge) .def("nodesFrontTopEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontTopEdge) .def("nodesFrontLeftEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontLeftEdge) .def("nodesFrontRightEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontRightEdge) .def("nodesBackBottomEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackBottomEdge) .def("nodesBackTopEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackTopEdge) .def("nodesBackLeftEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackLeftEdge) .def("nodesBackRightEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackRightEdge) .def("nodesBottomLeftEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomLeftEdge) .def("nodesBottomRightEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomRightEdge) .def("nodesTopLeftEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopLeftEdge) .def("nodesTopRightEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopRightEdge) .def("nodesBottomFrontEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomFrontEdge) .def("nodesBottomBackEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomBackEdge) .def("nodesTopFrontEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopFrontEdge) .def("nodesTopBackEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopBackEdge) .def("nodesLeftBottomEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBottomEdge) .def("nodesLeftFrontEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftFrontEdge) .def("nodesLeftBackEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBackEdge) .def("nodesLeftTopEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftTopEdge) .def("nodesRightBottomEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBottomEdge) .def("nodesRightTopEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightTopEdge) .def("nodesRightFrontEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightFrontEdge) .def("nodesRightBackEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBackEdge) .def("nodesFrontBottomOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontBottomOpenEdge) .def("nodesFrontTopOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontTopOpenEdge) .def("nodesFrontLeftOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontLeftOpenEdge) .def("nodesFrontRightOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontRightOpenEdge) .def("nodesBackBottomOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackBottomOpenEdge) .def("nodesBackTopOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackTopOpenEdge) .def("nodesBackLeftOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackLeftOpenEdge) .def("nodesBackRightOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackRightOpenEdge) .def("nodesBottomLeftOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomLeftOpenEdge) .def("nodesBottomRightOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomRightOpenEdge) .def("nodesTopLeftOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopLeftOpenEdge) .def("nodesTopRightOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopRightOpenEdge) .def("nodesBottomFrontOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomFrontOpenEdge) .def("nodesBottomBackOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomBackOpenEdge) .def("nodesTopFrontOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopFrontOpenEdge) .def("nodesTopBackOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopBackOpenEdge) .def("nodesLeftBottomOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBottomOpenEdge) .def("nodesLeftFrontOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftFrontOpenEdge) .def("nodesLeftBackOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBackOpenEdge) .def("nodesLeftTopOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftTopOpenEdge) .def("nodesRightBottomOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBottomOpenEdge) .def("nodesRightTopOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightTopOpenEdge) .def("nodesRightFrontOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightFrontOpenEdge) .def("nodesRightBackOpenEdge", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBackOpenEdge) .def("nodesFrontBottomLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontBottomLeftCorner) .def("nodesFrontBottomRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontBottomRightCorner) .def("nodesFrontTopLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontTopLeftCorner) .def("nodesFrontTopRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontTopRightCorner) .def("nodesBackBottomLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackBottomLeftCorner) .def("nodesBackBottomRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackBottomRightCorner) .def("nodesBackTopLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackTopLeftCorner) .def("nodesBackTopRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackTopRightCorner) .def("nodesFrontLeftBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontLeftBottomCorner) .def("nodesBottomFrontLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomFrontLeftCorner) .def("nodesBottomLeftFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomLeftFrontCorner) .def("nodesLeftFrontBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftFrontBottomCorner) .def("nodesLeftBottomFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBottomFrontCorner) .def("nodesFrontRightBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontRightBottomCorner) .def("nodesBottomFrontRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomFrontRightCorner) .def("nodesBottomRightFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomRightFrontCorner) .def("nodesRightFrontBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightFrontBottomCorner) .def("nodesRightBottomFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBottomFrontCorner) .def("nodesFrontLeftTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontLeftTopCorner) .def("nodesTopFrontLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopFrontLeftCorner) .def("nodesTopLeftFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopLeftFrontCorner) .def("nodesLeftFrontTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftFrontTopCorner) .def("nodesLeftTopFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftTopFrontCorner) .def("nodesFrontRightTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesFrontRightTopCorner) .def("nodesTopFrontRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopFrontRightCorner) .def("nodesTopRightFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopRightFrontCorner) .def("nodesRightFrontTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightFrontTopCorner) .def("nodesRightTopFrontCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightTopFrontCorner) .def("nodesBackLeftBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackLeftBottomCorner) .def("nodesBottomBackLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomBackLeftCorner) .def("nodesBottomLeftBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomLeftBackCorner) .def("nodesLeftBackBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBackBottomCorner) .def("nodesLeftBottomBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBottomBackCorner) .def("nodesBackRightBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackRightBottomCorner) .def("nodesBottomBackRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomBackRightCorner) .def("nodesBottomRightBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBottomRightBackCorner) .def("nodesRightBackBottomCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBackBottomCorner) .def("nodesRightBottomBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBottomBackCorner) .def("nodesBackLeftTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackLeftTopCorner) .def("nodesTopBackLeftCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopBackLeftCorner) .def("nodesTopLeftBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopLeftBackCorner) .def("nodesLeftBackTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftBackTopCorner) .def("nodesLeftTopBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesLeftTopBackCorner) .def("nodesBackRightTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesBackRightTopCorner) .def("nodesTopBackRightCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopBackRightCorner) .def("nodesTopRightBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesTopRightBackCorner) .def("nodesRightBackTopCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightBackTopCorner) .def("nodesRightTopBackCorner", &GooseFEM::Mesh::Hex8::FineLayer::nodesRightTopBackCorner) .def("nodesPeriodic", &GooseFEM::Mesh::Hex8::FineLayer::nodesPeriodic) .def("nodesOrigin", &GooseFEM::Mesh::Hex8::FineLayer::nodesOrigin) .def("dofs", &GooseFEM::Mesh::Hex8::FineLayer::dofs) .def("dofsPeriodic", &GooseFEM::Mesh::Hex8::FineLayer::dofsPeriodic) .def("__repr__", [](const GooseFEM::Mesh::Hex8::FineLayer &){ return "<GooseFEM.Mesh.Hex8.FineLayer>"; }); } // ================================================================================================= diff --git a/python/MeshQuad4.hpp b/python/MeshQuad4.hpp index 070f937..3ab9c4d 100644 --- a/python/MeshQuad4.hpp +++ b/python/MeshQuad4.hpp @@ -1,326 +1,327 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_MeshQuad4(py::module& m) { py::class_<GooseFEM::Mesh::Quad4::Regular>(m, "Regular") .def(py::init<size_t,size_t,double>(), "Regular mesh: 'nx' pixels in horizontal direction, 'ny' in vertical direction, edge size 'h'", py::arg("nx"), py::arg("ny"), py::arg("h")=1.) .def("coor", &GooseFEM::Mesh::Quad4::Regular::coor) .def("conn", &GooseFEM::Mesh::Quad4::Regular::conn) .def("nelem", &GooseFEM::Mesh::Quad4::Regular::nelem) .def("nnode", &GooseFEM::Mesh::Quad4::Regular::nnode) .def("nne", &GooseFEM::Mesh::Quad4::Regular::nne) .def("ndim", &GooseFEM::Mesh::Quad4::Regular::ndim) .def("nelx", &GooseFEM::Mesh::Quad4::Regular::nelx) .def("nely", &GooseFEM::Mesh::Quad4::Regular::nely) .def("h", &GooseFEM::Mesh::Quad4::Regular::h) + .def("getElementType", + &GooseFEM::Mesh::Quad4::Regular::getElementType) + .def("nodesBottomEdge", &GooseFEM::Mesh::Quad4::Regular::nodesBottomEdge) .def("nodesTopEdge", &GooseFEM::Mesh::Quad4::Regular::nodesTopEdge) .def("nodesLeftEdge", &GooseFEM::Mesh::Quad4::Regular::nodesLeftEdge) .def("nodesRightEdge", &GooseFEM::Mesh::Quad4::Regular::nodesRightEdge) .def("nodesBottomOpenEdge", &GooseFEM::Mesh::Quad4::Regular::nodesBottomOpenEdge) .def("nodesTopOpenEdge", &GooseFEM::Mesh::Quad4::Regular::nodesTopOpenEdge) .def("nodesLeftOpenEdge", &GooseFEM::Mesh::Quad4::Regular::nodesLeftOpenEdge) .def("nodesRightOpenEdge", &GooseFEM::Mesh::Quad4::Regular::nodesRightOpenEdge) .def("nodesBottomLeftCorner", &GooseFEM::Mesh::Quad4::Regular::nodesBottomLeftCorner) .def("nodesBottomRightCorner", &GooseFEM::Mesh::Quad4::Regular::nodesBottomRightCorner) .def("nodesTopLeftCorner", &GooseFEM::Mesh::Quad4::Regular::nodesTopLeftCorner) .def("nodesTopRightCorner", &GooseFEM::Mesh::Quad4::Regular::nodesTopRightCorner) .def("nodesLeftBottomCorner", &GooseFEM::Mesh::Quad4::Regular::nodesLeftBottomCorner) .def("nodesLeftTopCorner", &GooseFEM::Mesh::Quad4::Regular::nodesLeftTopCorner) .def("nodesRightBottomCorner", &GooseFEM::Mesh::Quad4::Regular::nodesRightBottomCorner) .def("nodesRightTopCorner", &GooseFEM::Mesh::Quad4::Regular::nodesRightTopCorner) .def("dofs", &GooseFEM::Mesh::Quad4::Regular::dofs) .def("nodesPeriodic", &GooseFEM::Mesh::Quad4::Regular::nodesPeriodic) .def("nodesOrigin", &GooseFEM::Mesh::Quad4::Regular::nodesOrigin) .def("dofsPeriodic", &GooseFEM::Mesh::Quad4::Regular::dofsPeriodic) .def("elementMatrix", &GooseFEM::Mesh::Quad4::Regular::elementMatrix) .def("__repr__", [](const GooseFEM::Mesh::Quad4::Regular&){ return "<GooseFEM.Mesh.Quad4.Regular>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::Mesh::Quad4::FineLayer>(m, "FineLayer") .def(py::init<size_t,size_t,double,size_t>(), "FineLayer mesh: 'nx' pixels in horizontal direction (length 'Lx'), idem in vertical direction", py::arg("nx"), py::arg("ny"), py::arg("h")=1., py::arg("nfine")=1) .def("coor", &GooseFEM::Mesh::Quad4::FineLayer::coor) .def("conn", &GooseFEM::Mesh::Quad4::FineLayer::conn) .def("nelem", &GooseFEM::Mesh::Quad4::FineLayer::nelem) .def("nnode", &GooseFEM::Mesh::Quad4::FineLayer::nnode) .def("nne", &GooseFEM::Mesh::Quad4::FineLayer::nne) .def("ndim", &GooseFEM::Mesh::Quad4::FineLayer::ndim) .def("nelx", &GooseFEM::Mesh::Quad4::FineLayer::nelx) .def("nely", &GooseFEM::Mesh::Quad4::FineLayer::nely) .def("h", &GooseFEM::Mesh::Quad4::FineLayer::h) + .def("getElementType", + &GooseFEM::Mesh::Quad4::FineLayer::getElementType) + .def("elementsMiddleLayer", &GooseFEM::Mesh::Quad4::FineLayer::elementsMiddleLayer) .def("nodesBottomEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesBottomEdge) .def("nodesTopEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesTopEdge) .def("nodesLeftEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesLeftEdge) .def("nodesRightEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesRightEdge) .def("nodesBottomOpenEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesBottomOpenEdge) .def("nodesTopOpenEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesTopOpenEdge) .def("nodesLeftOpenEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesLeftOpenEdge) .def("nodesRightOpenEdge", &GooseFEM::Mesh::Quad4::FineLayer::nodesRightOpenEdge) .def("nodesBottomLeftCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesBottomLeftCorner) .def("nodesBottomRightCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesBottomRightCorner) .def("nodesTopLeftCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesTopLeftCorner) .def("nodesTopRightCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesTopRightCorner) .def("nodesLeftBottomCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesLeftBottomCorner) .def("nodesLeftTopCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesLeftTopCorner) .def("nodesRightBottomCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesRightBottomCorner) .def("nodesRightTopCorner", &GooseFEM::Mesh::Quad4::FineLayer::nodesRightTopCorner) .def("dofs", &GooseFEM::Mesh::Quad4::FineLayer::dofs) .def("nodesPeriodic", &GooseFEM::Mesh::Quad4::FineLayer::nodesPeriodic) .def("nodesOrigin", &GooseFEM::Mesh::Quad4::FineLayer::nodesOrigin) .def("dofsPeriodic", &GooseFEM::Mesh::Quad4::FineLayer::dofsPeriodic) .def("__repr__", [](const GooseFEM::Mesh::Quad4::FineLayer&){ return "<GooseFEM.Mesh.Quad4.FineLayer>"; } ); } // ================================================================================================= void init_MeshQuad4Map(py::module& m) { // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::Mesh::Quad4::Map::RefineRegular>(m, "RefineRegular") .def(py::init<const GooseFEM::Mesh::Quad4::Regular &, size_t, size_t>(), "Refine a regular mesh", py::arg("mesh"), py::arg("nx"), py::arg("ny")) .def("getCoarseMesh", &GooseFEM::Mesh::Quad4::Map::RefineRegular::getCoarseMesh) .def("getFineMesh", &GooseFEM::Mesh::Quad4::Map::RefineRegular::getFineMesh) .def("getMap", &GooseFEM::Mesh::Quad4::Map::RefineRegular::getMap) .def("mapToCoarse", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToCoarse, py::const_)) .def("mapToCoarse", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToCoarse, py::const_)) .def("mapToCoarse", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToCoarse, py::const_)) .def("mapToFine", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToFine, py::const_)) .def("mapToFine", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToFine, py::const_)) .def("mapToFine", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Mesh::Quad4::Map::RefineRegular::mapToFine, py::const_)) .def("__repr__", [](const GooseFEM::Mesh::Quad4::Map::RefineRegular &){ return "<GooseFEM.Mesh.Quad4.Map.RefineRegular>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::Mesh::Quad4::Map::FineLayer2Regular>(m, "FineLayer2Regular") .def(py::init<const GooseFEM::Mesh::Quad4::FineLayer &>(), "Map a FineLayer mesh to a Regular mesh", py::arg("mesh")) .def("getRegularMesh", &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::getRegularMesh) .def("getFineLayerMesh", &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::getFineLayerMesh) .def("getMap", &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::getMap) .def("getMapFraction", &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::getMapFraction) .def("mapToRegular", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::mapToRegular, py::const_)) .def("mapToRegular", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::mapToRegular, py::const_)) .def("mapToRegular", py::overload_cast<const xt::xtensor<double,4>&>( &GooseFEM::Mesh::Quad4::Map::FineLayer2Regular::mapToRegular, py::const_)) .def("__repr__", [](const GooseFEM::Mesh::Quad4::Map::FineLayer2Regular &){ return "<GooseFEM.Mesh.Quad4.Map.FineLayer2Regular>"; }); // ------------------------------------------------------------------------------------------------- } // ================================================================================================= diff --git a/python/MeshTri3.hpp b/python/MeshTri3.hpp index 1648394..b77fe6f 100644 --- a/python/MeshTri3.hpp +++ b/python/MeshTri3.hpp @@ -1,133 +1,145 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_MeshTri3(py::module& m) { py::class_<GooseFEM::Mesh::Tri3::Regular>(m, "Regular") .def( py::init<size_t,size_t,double>(), "Regular mesh: 'nx' pixels in horizontal direction, 'ny' in vertical direction, edge size 'h'", py::arg("nx"), py::arg("ny"), py::arg("h")=1.) .def("coor", &GooseFEM::Mesh::Tri3::Regular::coor) .def("conn", &GooseFEM::Mesh::Tri3::Regular::conn) .def("nelem", &GooseFEM::Mesh::Tri3::Regular::nelem) .def("nnode", &GooseFEM::Mesh::Tri3::Regular::nnode) .def("nne", &GooseFEM::Mesh::Tri3::Regular::nne) .def("ndim", &GooseFEM::Mesh::Tri3::Regular::ndim) + .def("getElementType", + &GooseFEM::Mesh::Tri3::Regular::getElementType) + .def("nodesBottomEdge", &GooseFEM::Mesh::Tri3::Regular::nodesBottomEdge) .def("nodesTopEdge", &GooseFEM::Mesh::Tri3::Regular::nodesTopEdge) .def("nodesLeftEdge", &GooseFEM::Mesh::Tri3::Regular::nodesLeftEdge) .def("nodesRightEdge", &GooseFEM::Mesh::Tri3::Regular::nodesRightEdge) .def("nodesBottomOpenEdge", &GooseFEM::Mesh::Tri3::Regular::nodesBottomOpenEdge) .def("nodesTopOpenEdge", &GooseFEM::Mesh::Tri3::Regular::nodesTopOpenEdge) .def("nodesLeftOpenEdge", &GooseFEM::Mesh::Tri3::Regular::nodesLeftOpenEdge) .def("nodesRightOpenEdge", &GooseFEM::Mesh::Tri3::Regular::nodesRightOpenEdge) .def("nodesBottomLeftCorner", &GooseFEM::Mesh::Tri3::Regular::nodesBottomLeftCorner) .def("nodesBottomRightCorner", &GooseFEM::Mesh::Tri3::Regular::nodesBottomRightCorner) .def("nodesTopLeftCorner", &GooseFEM::Mesh::Tri3::Regular::nodesTopLeftCorner) .def("nodesTopRightCorner", &GooseFEM::Mesh::Tri3::Regular::nodesTopRightCorner) .def("nodesLeftBottomCorner", &GooseFEM::Mesh::Tri3::Regular::nodesLeftBottomCorner) .def("nodesLeftTopCorner", &GooseFEM::Mesh::Tri3::Regular::nodesLeftTopCorner) .def("nodesRightBottomCorner", &GooseFEM::Mesh::Tri3::Regular::nodesRightBottomCorner) .def("nodesRightTopCorner", &GooseFEM::Mesh::Tri3::Regular::nodesRightTopCorner) .def("nodesPeriodic", &GooseFEM::Mesh::Tri3::Regular::nodesPeriodic) .def("nodesOrigin", &GooseFEM::Mesh::Tri3::Regular::nodesOrigin) .def("dofs", &GooseFEM::Mesh::Tri3::Regular::dofs) .def("dofsPeriodic", &GooseFEM::Mesh::Tri3::Regular::dofsPeriodic) .def("__repr__", [](const GooseFEM::Mesh::Tri3::Regular&){ return "<GooseFEM.Mesh.Tri3.Regular>"; }); // ------------------------------------------------------------------------------------------------- m.def("getOrientation", &GooseFEM::Mesh::Tri3::getOrientation, "Get the orientation of each element", py::arg("coor"), py::arg("conn")); -m.def("retriangulate", - &GooseFEM::Mesh::Tri3::retriangulate, - "Re-triangulate existing mesh", +m.def("setOrientation", + py::overload_cast< + const xt::xtensor<double,2>&, + const xt::xtensor<size_t,2>&, + int>(&GooseFEM::Mesh::Tri3::setOrientation), + "Set the orientation of each element", py::arg("coor"), py::arg("conn"), - py::arg("orientation")=-1); - + py::arg("orientation")); + +m.def("setOrientation", + py::overload_cast< + const xt::xtensor<double,2>&, + const xt::xtensor<size_t,2>&, + const xt::xtensor<int,1>&, + int>(&GooseFEM::Mesh::Tri3::setOrientation), + "Set the orientation of each element", + py::arg("coor"), + py::arg("conn"), + py::arg("val"), + py::arg("orientation")); } // ================================================================================================= diff --git a/python/ParaView.hpp b/python/ParaView.hpp index 4ad07e7..345e7f7 100644 --- a/python/ParaView.hpp +++ b/python/ParaView.hpp @@ -1,214 +1,220 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #define GOOSEFEM_NO_HIGHFIVE #include "../include/GooseFEM/GooseFEM.h" #include "../include/GooseFEM/ParaView.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_ParaViewHDF5(py::module& m) { m.def("as3d", &GooseFEM::ParaView::HDF5::as3d); // ------------------------------------------------------------------------------------------------- py::enum_<GooseFEM::ParaView::HDF5::ElementType>(m, "ElementType", "ElementType") .value("Triangle", GooseFEM::ParaView::HDF5::ElementType::Triangle) .value("Quadrilateral", GooseFEM::ParaView::HDF5::ElementType::Quadrilateral) .value("Hexahedron", GooseFEM::ParaView::HDF5::ElementType::Hexahedron) .export_values(); // ------------------------------------------------------------------------------------------------- py::enum_<GooseFEM::ParaView::HDF5::AttributeType>(m, "AttributeType", "AttributeType") .value("Cell", GooseFEM::ParaView::HDF5::AttributeType::Cell) .value("Node", GooseFEM::ParaView::HDF5::AttributeType::Node) .export_values(); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::Connectivity>(m, "Connectivity") .def(py::init< const std::string&, const std::string&, GooseFEM::ParaView::HDF5::ElementType, const std::vector<size_t>&>(), "Connectivity", py::arg("fname"), py::arg("dataset"), py::arg("ElementType"), py::arg("shape")) + .def(py::init< + const std::string&, + const std::string&, + GooseFEM::Mesh::ElementType, + const std::vector<size_t>&>(), + "Connectivity", + py::arg("fname"), + py::arg("dataset"), + py::arg("ElementType"), + py::arg("shape")) + .def("nelem", &GooseFEM::ParaView::HDF5::Connectivity::nelem) .def("nne", &GooseFEM::ParaView::HDF5::Connectivity::nne) .def("shape", &GooseFEM::ParaView::HDF5::Connectivity::shape) .def("fname", &GooseFEM::ParaView::HDF5::Connectivity::fname) .def("xdmf", &GooseFEM::ParaView::HDF5::Connectivity::xdmf, py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::Connectivity &){ return "<GooseFEM.ParaView.HDF5.Connectivity>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::Coordinates>(m, "Coordinates") .def(py::init< const std::string&, const std::string&, const std::vector<size_t>&>(), "Coordinates", py::arg("fname"), py::arg("dataset"), py::arg("shape")) .def("nnode", &GooseFEM::ParaView::HDF5::Coordinates::nnode) .def("ndim", &GooseFEM::ParaView::HDF5::Coordinates::ndim) .def("shape", &GooseFEM::ParaView::HDF5::Coordinates::shape) .def("fname", &GooseFEM::ParaView::HDF5::Coordinates::fname) .def("xdmf", &GooseFEM::ParaView::HDF5::Coordinates::xdmf, py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::Coordinates &){ return "<GooseFEM.ParaView.HDF5.Coordinates>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::Attribute>(m, "Attribute") .def(py::init< const std::string&, const std::string&, const std::string&, GooseFEM::ParaView::HDF5::AttributeType, const std::vector<size_t>&>(), "Attribute", py::arg("fname"), py::arg("dataset"), py::arg("name"), py::arg("AttributeType"), py::arg("shape")) .def("shape", &GooseFEM::ParaView::HDF5::Attribute::shape) .def("fname", &GooseFEM::ParaView::HDF5::Attribute::fname) .def("xdmf", &GooseFEM::ParaView::HDF5::Attribute::xdmf, py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::Attribute &){ return "<GooseFEM.ParaView.HDF5.Attribute>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::Mesh>(m, "Mesh") .def(py::init< const GooseFEM::ParaView::HDF5::Connectivity&, const GooseFEM::ParaView::HDF5::Coordinates&>(), "Mesh", py::arg("conn"), py::arg("coor")) .def("push_back", py::overload_cast<const GooseFEM::ParaView::HDF5::Attribute&>( &GooseFEM::ParaView::HDF5::Mesh::push_back)) .def("xdmf", &GooseFEM::ParaView::HDF5::Mesh::xdmf, py::arg("indent")=4) .def("write", &GooseFEM::ParaView::HDF5::Mesh::write, py::arg("fname"), py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::Mesh &){ return "<GooseFEM.ParaView.HDF5.Mesh>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::Increment>(m, "Increment") .def(py::init< const GooseFEM::ParaView::HDF5::Connectivity&, const GooseFEM::ParaView::HDF5::Coordinates&>(), "Increment", py::arg("conn"), py::arg("coor")) .def("push_back", py::overload_cast<const GooseFEM::ParaView::HDF5::Connectivity&>( &GooseFEM::ParaView::HDF5::Increment::push_back)) .def("push_back", py::overload_cast<const GooseFEM::ParaView::HDF5::Coordinates&>( &GooseFEM::ParaView::HDF5::Increment::push_back)) .def("push_back", py::overload_cast<const GooseFEM::ParaView::HDF5::Attribute&>( &GooseFEM::ParaView::HDF5::Increment::push_back)) .def("xdmf", &GooseFEM::ParaView::HDF5::Increment::xdmf, py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::Increment &){ return "<GooseFEM.ParaView.HDF5.Increment>"; }); // ------------------------------------------------------------------------------------------------- py::class_<GooseFEM::ParaView::HDF5::TimeSeries>(m, "TimeSeries") .def(py::init<>(), "TimeSeries") .def("push_back", &GooseFEM::ParaView::HDF5::TimeSeries::push_back) .def("xdmf", &GooseFEM::ParaView::HDF5::TimeSeries::xdmf, py::arg("indent")=4) .def("write", &GooseFEM::ParaView::HDF5::TimeSeries::write, py::arg("fname"), py::arg("indent")=4) .def("__repr__", [](const GooseFEM::ParaView::HDF5::TimeSeries &){ return "<GooseFEM.ParaView.HDF5.TimeSeries>"; }); } diff --git a/python/Vector.hpp b/python/Vector.hpp index cab2cb0..8b95be7 100644 --- a/python/Vector.hpp +++ b/python/Vector.hpp @@ -1,107 +1,102 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_Vector(py::module& m) { py::class_<GooseFEM::Vector>(m, "Vector") .def(py::init<const xt::xtensor<size_t,2> &, const xt::xtensor<size_t,2> &>(), "Switch between dofval/nodevec/elemvec", py::arg("conn"), py::arg("dofs")) .def("nelem", &GooseFEM::Vector::nelem, "Number of element") .def("nne", &GooseFEM::Vector::nne, "Number of nodes per element") .def("nnode", &GooseFEM::Vector::nnode, "Number of nodes") .def("ndim", &GooseFEM::Vector::ndim, "Number of dimensions") .def("ndof", &GooseFEM::Vector::ndof, "Number of degrees-of-freedom") .def("dofs", &GooseFEM::Vector::dofs, "Return degrees-of-freedom") .def("AsDofs", py::overload_cast<const xt::xtensor<double,2>&>(&GooseFEM::Vector::AsDofs, py::const_), "Set 'dofval", py::arg("nodevec")) .def("AsDofs", py::overload_cast<const xt::xtensor<double,3>&>(&GooseFEM::Vector::AsDofs, py::const_), "Set 'dofval", py::arg("elemvec")) .def("AsNode", py::overload_cast<const xt::xtensor<double,1>&>(&GooseFEM::Vector::AsNode, py::const_), "Set 'nodevec", py::arg("dofval")) .def("AsNode", py::overload_cast<const xt::xtensor<double,3>&>(&GooseFEM::Vector::AsNode, py::const_), "Set 'nodevec", py::arg("elemvec")) .def("AsElement", py::overload_cast<const xt::xtensor<double,1>&>(&GooseFEM::Vector::AsElement, py::const_), "Set 'elemvec", py::arg("dofval")) .def("AsElement", py::overload_cast<const xt::xtensor<double,2>&>(&GooseFEM::Vector::AsElement, py::const_), "Set 'elemvec", py::arg("nodevec")) .def("AssembleDofs", py::overload_cast<const xt::xtensor<double,2>&>(&GooseFEM::Vector::AssembleDofs, py::const_), "Assemble 'dofval'", py::arg("nodevec")) .def("AssembleDofs", py::overload_cast<const xt::xtensor<double,3>&>(&GooseFEM::Vector::AssembleDofs, py::const_), "Assemble 'dofval'", py::arg("elemvec")) .def("AssembleNode", py::overload_cast<const xt::xtensor<double,3>&>(&GooseFEM::Vector::AssembleNode, py::const_), "Assemble 'nodevec'", py::arg("elemvec")) .def("__repr__", [](const GooseFEM::Vector&){ return "<GooseFEM.Vector>"; }); } // ================================================================================================= diff --git a/python/VectorPartitioned.hpp b/python/VectorPartitioned.hpp index 0cf650a..3792030 100644 --- a/python/VectorPartitioned.hpp +++ b/python/VectorPartitioned.hpp @@ -1,219 +1,214 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ -#include <Eigen/Eigen> - #include <pybind11/pybind11.h> -#include <pybind11/eigen.h> - #include <pyxtensor/pyxtensor.hpp> - #include "../include/GooseFEM/GooseFEM.h" // ================================================================================================= namespace py = pybind11; // ================================================================================================= void init_VectorPartitioned(py::module& m) { py::class_<GooseFEM::VectorPartitioned>(m, "VectorPartitioned") .def(py::init< const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,2>&, const xt::xtensor<size_t,1>&>(), "Switch between dofval/nodevec/elemvec", py::arg("conn"), py::arg("dofs"), py::arg("iip")) .def("nelem", &GooseFEM::VectorPartitioned::nelem, "Number of element") .def("nne", &GooseFEM::VectorPartitioned::nne, "Number of nodes per element") .def("nnode", &GooseFEM::VectorPartitioned::nnode, "Number of nodes") .def("ndim", &GooseFEM::VectorPartitioned::ndim, "Number of dimensions") .def("ndof", &GooseFEM::VectorPartitioned::ndof, "Number of degrees-of-freedom") .def("nnu", &GooseFEM::VectorPartitioned::nnu, "Number of unknown degrees-of-freedom") .def("nnp", &GooseFEM::VectorPartitioned::nnp, "Number of prescribed degrees-of-freedom") .def("dofs", &GooseFEM::VectorPartitioned::dofs, "Return degrees-of-freedom") .def("iiu", &GooseFEM::VectorPartitioned::iiu, "Return unknown degrees-of-freedom") .def("iip", &GooseFEM::VectorPartitioned::iip, "Return prescribed degrees-of-freedom") .def("AsDofs", py::overload_cast<const xt::xtensor<double,1>&,const xt::xtensor<double,1>&>( &GooseFEM::VectorPartitioned::AsDofs, py::const_), "Set 'dofval", py::arg("dofval_u"), py::arg("dofval_p")) .def("AsDofs", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AsDofs, py::const_), "Set 'dofval", py::arg("nodevec")) .def("AsDofs", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AsDofs, py::const_), "Set 'dofval", py::arg("elemvec")) .def("AsDofs_u", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AsDofs_u, py::const_), "Set 'dofval", py::arg("nodevec")) .def("AsDofs_u", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AsDofs_u, py::const_), "Set 'dofval", py::arg("elemvec")) .def("AsDofs_p", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AsDofs_p, py::const_), "Set 'dofval", py::arg("nodevec")) .def("AsDofs_p", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AsDofs_p, py::const_), "Set 'dofval", py::arg("elemvec")) .def("AsNode", py::overload_cast<const xt::xtensor<double,1>&,const xt::xtensor<double,1>&>( &GooseFEM::VectorPartitioned::AsNode, py::const_), "Set 'nodevec", py::arg("dofval_u"), py::arg("dofval_p")) .def("AsNode", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::VectorPartitioned::AsNode, py::const_), "Set 'nodevec", py::arg("dofval")) .def("AsNode", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AsNode, py::const_), "Set 'nodevec", py::arg("elemvec")) .def("AsElement", py::overload_cast<const xt::xtensor<double,1>&,const xt::xtensor<double,1>&>( &GooseFEM::VectorPartitioned::AsElement, py::const_), "Set 'elemvec", py::arg("dofval_u"), py::arg("dofval_p")) .def("AsElement", py::overload_cast<const xt::xtensor<double,1>&>( &GooseFEM::VectorPartitioned::AsElement, py::const_), "Set 'elemvec", py::arg("dofval")) .def("AsElement", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AsElement, py::const_), "Set 'elemvec", py::arg("nodevec")) .def("AssembleDofs", py::overload_cast<const xt::xtensor<double,2>&>( - &GooseFEM::VectorPartitioned::AssembleDofs , py::const_), + &GooseFEM::VectorPartitioned::AssembleDofs, py::const_), "Assemble 'dofval'", py::arg("nodevec")) .def("AssembleDofs", py::overload_cast<const xt::xtensor<double,3>&>( - &GooseFEM::VectorPartitioned::AssembleDofs , py::const_), + &GooseFEM::VectorPartitioned::AssembleDofs, py::const_), "Assemble 'dofval'", py::arg("elemvec")) .def("AssembleDofs_u", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AssembleDofs_u, py::const_), "Assemble 'dofval'", py::arg("nodevec")) .def("AssembleDofs_u", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AssembleDofs_u, py::const_), "Assemble 'dofval'", py::arg("elemvec")) .def("AssembleDofs_p", py::overload_cast<const xt::xtensor<double,2>&>( &GooseFEM::VectorPartitioned::AssembleDofs_p, py::const_), "Assemble 'dofval'", py::arg("nodevec")) .def("AssembleDofs_p", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AssembleDofs_p, py::const_), "Assemble 'dofval'", py::arg("elemvec")) .def("AssembleNode", py::overload_cast<const xt::xtensor<double,3>&>( &GooseFEM::VectorPartitioned::AssembleNode, py::const_), "Assemble 'nodevec'", py::arg("elemvec")) .def("Copy", &GooseFEM::VectorPartitioned::Copy, "Copy") .def("Copy_u", &GooseFEM::VectorPartitioned::Copy_u, "Copy iiu") .def("Copy_p", &GooseFEM::VectorPartitioned::Copy_p, "Copy iip") .def("__repr__", []( const GooseFEM::VectorPartitioned&){ return "<GooseFEM.VectorPartitioned>"; }); } // ================================================================================================= diff --git a/python/VectorPartitionedTyings.hpp b/python/VectorPartitionedTyings.hpp new file mode 100644 index 0000000..e9e940f --- /dev/null +++ b/python/VectorPartitionedTyings.hpp @@ -0,0 +1,122 @@ +/* ================================================================================================= + +(c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM + +================================================================================================= */ + +#include <pybind11/pybind11.h> +#include <pyxtensor/pyxtensor.hpp> +#include "../include/GooseFEM/GooseFEM.h" + +// ================================================================================================= + +namespace py = pybind11; + +// ================================================================================================= + +void init_VectorPartitionedTyings(py::module& m) +{ + +py::class_<GooseFEM::VectorPartitionedTyings>(m, "VectorPartitionedTyings") + + .def(py::init< + const xt::xtensor<size_t,2>&, + const xt::xtensor<size_t,2>&, + const Eigen::SparseMatrix<double>&, + const Eigen::SparseMatrix<double>&, + const Eigen::SparseMatrix<double>&>(), + "Switch between dofval/nodevec/elemvec", + py::arg("conn"), + py::arg("dofs"), + py::arg("Cdu"), + py::arg("Cdp"), + py::arg("Cdi")) + + .def("nelem", + &GooseFEM::VectorPartitionedTyings::nelem, + "Number of element") + + .def("nne", + &GooseFEM::VectorPartitionedTyings::nne, + "Number of nodes per element") + + .def("nnode", + &GooseFEM::VectorPartitionedTyings::nnode, + "Number of nodes") + + .def("ndim", + &GooseFEM::VectorPartitionedTyings::ndim, + "Number of dimensions") + + .def("ndof", + &GooseFEM::VectorPartitionedTyings::ndof, + "Number of degrees-of-freedom") + + .def("nnu", + &GooseFEM::VectorPartitionedTyings::nnu, + "Number of unknown degrees-of-freedom") + + .def("nnp", + &GooseFEM::VectorPartitionedTyings::nnp, + "Number of prescribed degrees-of-freedom") + + .def("nni", + &GooseFEM::VectorPartitionedTyings::nni, + "Number of independent degrees-of-freedom") + + .def("nnd", + &GooseFEM::VectorPartitionedTyings::nnd, + "Number of dependent degrees-of-freedom") + + .def("dofs", + &GooseFEM::VectorPartitionedTyings::dofs, + "Return degrees-of-freedom") + + .def("iiu", + &GooseFEM::VectorPartitionedTyings::iiu, + "Return unknown degrees-of-freedom") + + .def("iip", + &GooseFEM::VectorPartitionedTyings::iip, + "Return prescribed degrees-of-freedom") + + .def("iii", + &GooseFEM::VectorPartitionedTyings::iii, + "Return independent degrees-of-freedom") + + .def("iid", + &GooseFEM::VectorPartitionedTyings::iid, + "Return dependent degrees-of-freedom") + + .def("AsDofs_i", + &GooseFEM::VectorPartitionedTyings::AsDofs_i, + "Set 'dofval", + py::arg("nodevec")) + + .def("AsNode", + &GooseFEM::VectorPartitionedTyings::AsNode, + "Set 'nodevec", + py::arg("dofval")) + + .def("AsElement", + &GooseFEM::VectorPartitionedTyings::AsElement, + "Set 'elemvec", + py::arg("nodevec")) + + .def("AssembleDofs", + &GooseFEM::VectorPartitionedTyings::AssembleDofs, + "Assemble 'dofval'", + py::arg("elemvec")) + + .def("AssembleNode", + &GooseFEM::VectorPartitionedTyings::AssembleNode, + "Assemble 'nodevec'", + py::arg("elemvec")) + + .def("__repr__", []( + const GooseFEM::VectorPartitionedTyings&){ return "<GooseFEM.VectorPartitionedTyings>"; }); + +} + +// ================================================================================================= + diff --git a/python/main.cpp b/python/main.cpp index 34f9be6..1bb9f14 100644 --- a/python/main.cpp +++ b/python/main.cpp @@ -1,132 +1,140 @@ /* ================================================================================================= (c - GPLv3) T.W.J. de Geus (Tom) | tom@geus.me | www.geus.me | github.com/tdegeus/GooseFEM ================================================================================================= */ #include <Eigen/Eigen> #include <pybind11/pybind11.h> #include <pybind11/eigen.h> #include <pyxtensor/pyxtensor.hpp> #define GOOSEFEM_ENABLE_ASSERT #include "../include/GooseFEM/GooseFEM.h" namespace py = pybind11; #include "Vector.hpp" #include "VectorPartitioned.hpp" +#include "VectorPartitionedTyings.hpp" +#include "Matrix.hpp" #include "MatrixPartitioned.hpp" +#include "MatrixPartitionedTyings.hpp" +#include "MatrixDiagonal.hpp" #include "MatrixDiagonalPartitioned.hpp" #include "Element.hpp" #include "ElementQuad4.hpp" #include "ElementQuad4Planar.hpp" #include "ElementQuad4Axisymmetric.hpp" #include "ElementHex8.hpp" #include "Mesh.hpp" #include "MeshTri3.hpp" #include "MeshQuad4.hpp" #include "MeshHex8.hpp" #include "ParaView.hpp" // ================================================================================================= PYBIND11_MODULE(GooseFEM, m) { // ------------------------------------------------------------------------------------------------- // GooseFEM // ------------------------------------------------------------------------------------------------- m.doc() = "Some simple finite element meshes and operations"; init_Vector(m); init_VectorPartitioned(m); +init_VectorPartitionedTyings(m); +init_Matrix(m); init_MatrixPartitioned(m); +init_MatrixPartitionedTyings(m); +init_MatrixDiagonal(m); init_MatrixDiagonalPartitioned(m); // ------------------------------------------------------------------------------------------------- // GooseFEM.Element // ------------------------------------------------------------------------------------------------- py::module mElement = m.def_submodule("Element", "Generic element routines"); init_Element(mElement); // ------------------------------------------------------------------------------------------------- // GooseFEM.Element.Quad4 // ------------------------------------------------------------------------------------------------- py::module mElementQuad4 = mElement.def_submodule("Quad4", "Linear quadrilateral elements (2D)"); py::module mElementQuad4Gauss = mElementQuad4.def_submodule("Gauss", "Gauss quadrature"); py::module mElementQuad4Nodal = mElementQuad4.def_submodule("Nodal", "Nodal quadrature"); init_ElementQuad4(mElementQuad4); init_ElementQuad4Planar(mElementQuad4); init_ElementQuad4Axisymmetric(mElementQuad4); init_ElementQuad4Gauss(mElementQuad4Gauss); init_ElementQuad4Nodal(mElementQuad4Nodal); // ------------------------------------------------------------------------------------------------- // GooseFEM.Element.Hex8 // ------------------------------------------------------------------------------------------------- py::module mElementHex8 = mElement.def_submodule("Hex8", "Linear hexahedron (brick) elements (3D)"); py::module mElementHex8Gauss = mElementHex8.def_submodule("Gauss", "Gauss quadrature"); py::module mElementHex8Nodal = mElementHex8.def_submodule("Nodal", "Nodal quadrature"); init_ElementHex8(mElementHex8); init_ElementHex8Gauss(mElementHex8Gauss); init_ElementHex8Nodal(mElementHex8Nodal); // ------------------------------------------------------------------------------------------------- // GooseFEM.Mesh // ------------------------------------------------------------------------------------------------- py::module mMesh = m.def_submodule("Mesh", "Generic mesh routines"); init_Mesh(mMesh); // ------------------------------------------------------------------------------------------------- // GooseFEM.Mesh.Tri3 // ------------------------------------------------------------------------------------------------- py::module mMeshTri3 = mMesh.def_submodule("Tri3", "Linear triangular elements (2D)"); init_MeshTri3(mMeshTri3); // ------------------------------------------------------------------------------------------------- // GooseFEM.Mesh.Quad4 // ------------------------------------------------------------------------------------------------- py::module mMeshQuad4 = mMesh.def_submodule("Quad4", "Linear quadrilateral elements (2D)"); init_MeshQuad4(mMeshQuad4); py::module mMeshQuad4Map = mMeshQuad4.def_submodule("Map", "Map mesh objects"); init_MeshQuad4Map(mMeshQuad4Map); // ------------------------------------------------------------------------------------------------- // GooseFEM.Mesh.Hex8 // ------------------------------------------------------------------------------------------------- py::module mMeshHex8 = mMesh.def_submodule("Hex8", "Linear hexahedron (brick) elements (3D)"); init_MeshHex8(mMeshHex8); // ------------------------------------------------------------------------------------------------- // GooseFEM.ParaView // ------------------------------------------------------------------------------------------------- py::module mParaView = m.def_submodule("ParaView", "ParaView output files"); py::module mParaViewHDF5 = mParaView.def_submodule("HDF5", "ParaView/HDF5 support using XDMF files"); init_ParaViewHDF5(mParaViewHDF5); // ================================================================================================= }