Merge branch 'master' of github.com:mapnik/mapnik into release/image_data_any
Conflicts: tests/python_tests/image_test.py tests/python_tests/image_tiff_test.py tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-1.0-agg-reference.png tests/visual_tests/images/tiff-opaque-edge-raster2-600-400-2.0-agg-reference.png
14
.travis.yml
|
@ -9,25 +9,23 @@ matrix:
|
|||
include:
|
||||
- os: osx
|
||||
compiler: clang
|
||||
env: JOBS=6
|
||||
env: JOBS=12
|
||||
- os: linux
|
||||
compiler: clang
|
||||
env: JOBS=6
|
||||
env: JOBS=12
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
env: JOBS=2
|
||||
env: JOBS=6
|
||||
|
||||
install:
|
||||
- if [[ $(uname -s) == 'Linux' ]]; then psql -U postgres -c 'create database template_postgis;' -U postgres; psql -U postgres -c 'create extension postgis;' -d template_postgis -U postgres; fi;
|
||||
- if [[ $(uname -s) == 'Darwin' ]]; then brew install bash; export PATH="$(brew --prefix)/bin":${PATH}; fi;
|
||||
- echo `which bash`
|
||||
|
||||
script:
|
||||
- source bootstrap.sh
|
||||
- wget https://gist.githubusercontent.com/springmeyer/0833fa43794838889139/raw/build_pycairo.sh && chmod +x build_pycairo.sh && ./build_pycairo.sh
|
||||
- export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python2.7/site-packages:${PYTHONPATH}
|
||||
- ./configure
|
||||
- cat config.log
|
||||
- make
|
||||
- git clone --depth=1 https://github.com/mapbox/mapnik-test-data tests/data/mapnik-test-data
|
||||
- make test
|
||||
#- source localize.sh && make grind
|
||||
#- make bench
|
||||
- make bench
|
||||
|
|
|
@ -41,6 +41,7 @@ Mapnik is written by Artem Pavlenko with contributions from:
|
|||
* Carlos López
|
||||
* Dennis Luxen
|
||||
* Tom MacWright
|
||||
* Sara Metz
|
||||
* Michal Migurski
|
||||
* Andrii Mishkovskyi
|
||||
* Ben Moores
|
||||
|
@ -67,6 +68,7 @@ Mapnik is written by Artem Pavlenko with contributions from:
|
|||
* Dave Stubbs
|
||||
* River Tarnell
|
||||
* Cezary Tarnowski
|
||||
* Blake Thompson
|
||||
* Oliver Tonnhofer
|
||||
* Jochen Topf
|
||||
* Alberto Valverde
|
||||
|
@ -77,4 +79,3 @@ Mapnik is written by Artem Pavlenko with contributions from:
|
|||
* Rich Wareham
|
||||
* Nick Whitelegg
|
||||
* Leslie Wu
|
||||
* Blake Thompson
|
||||
|
|
20
Makefile
|
@ -13,8 +13,8 @@ install:
|
|||
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
|
||||
|
||||
mapnik:
|
||||
# we first build memory intensive files with -j1
|
||||
$(PYTHON) scons/scons.py -j1 \
|
||||
# we first build memory intensive files with -j2
|
||||
$(PYTHON) scons/scons.py -j2 \
|
||||
--config=cache --implicit-cache --max-drift=1 \
|
||||
src/json/libmapnik-json.a \
|
||||
src/wkt/libmapnik-wkt.a \
|
||||
|
@ -22,10 +22,13 @@ mapnik:
|
|||
src/expression_grammar.os \
|
||||
src/transform_expression_grammar.os \
|
||||
src/image_filter_types.os \
|
||||
src/renderer_common/process_group_symbolizer.cpp \
|
||||
src/agg/process_markers_symbolizer.cpp \
|
||||
src/grid/process_markers_symbolizer.cpp \
|
||||
src/cairo/process_markers_symbolizer.cpp
|
||||
src/renderer_common/process_group_symbolizer.os \
|
||||
src/agg/process_markers_symbolizer.os \
|
||||
src/agg/process_group_symbolizer.os \
|
||||
src/grid/process_markers_symbolizer.os \
|
||||
src/grid/process_group_symbolizer.os \
|
||||
src/cairo/process_markers_symbolizer.os \
|
||||
src/cairo/process_group_symbolizer.os \
|
||||
# then install the rest with -j$(JOBS)
|
||||
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1
|
||||
|
||||
|
@ -81,8 +84,9 @@ demo:
|
|||
pep8:
|
||||
# https://gist.github.com/1903033
|
||||
# gsed on osx
|
||||
@pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$//'
|
||||
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}'
|
||||
@pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$$//'
|
||||
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$$/{$$d;N;ba' -e '}'
|
||||
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs ged -i '/./,/^$$/!d'
|
||||
|
||||
grind:
|
||||
@for FILE in tests/cpp_tests/*-bin; do \
|
||||
|
|
10
SConstruct
|
@ -120,7 +120,6 @@ PLUGINS = { # plugins with external dependencies
|
|||
'csv': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
'raster': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
'geojson': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
'large_geojson': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
'topojson':{'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
'python': {'default':False,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||
}
|
||||
|
@ -451,6 +450,7 @@ pickle_store = [# Scons internal variables
|
|||
'HAS_CAIRO',
|
||||
'MAPNIK_HAS_DLFCN',
|
||||
'HAS_PYCAIRO',
|
||||
'PYCAIRO_PATHS',
|
||||
'HAS_LIBXML2',
|
||||
'PYTHON_IS_64BIT',
|
||||
'SAMPLE_INPUT_PLUGINS',
|
||||
|
@ -1095,6 +1095,7 @@ if not preconfigured:
|
|||
env['CAIRO_ALL_LIBS'] = []
|
||||
env['CAIRO_CPPPATHS'] = []
|
||||
env['HAS_PYCAIRO'] = False
|
||||
env['PYCAIRO_PATHS'] = []
|
||||
env['HAS_LIBXML2'] = False
|
||||
env['LIBMAPNIK_LIBS'] = []
|
||||
env['LIBMAPNIK_LINKFLAGS'] = []
|
||||
|
@ -1661,6 +1662,13 @@ if not preconfigured:
|
|||
if env['CAIRO']:
|
||||
if CHECK_PKG_CONFIG and conf.CheckPKG('pycairo'):
|
||||
env['HAS_PYCAIRO'] = True
|
||||
temp_env = env.Clone()
|
||||
temp_env['CPPPATH'] = []
|
||||
temp_env.ParseConfig('pkg-config --cflags pycairo')
|
||||
if temp_env['CPPPATH']:
|
||||
env['PYCAIRO_PATHS'] = copy(temp_env['CPPPATH'])
|
||||
else:
|
||||
print temp_env['CPPPATH']
|
||||
else:
|
||||
env['SKIPPED_DEPS'].extend(['pycairo'])
|
||||
else:
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
#
|
||||
#
|
||||
|
||||
import os, re, sys, glob
|
||||
import glob
|
||||
import os
|
||||
from subprocess import Popen, PIPE
|
||||
|
||||
|
||||
|
@ -44,6 +45,7 @@ target_path = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + en
|
|||
target_path_deprecated = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'mapnik2')
|
||||
|
||||
py_env = env.Clone()
|
||||
|
||||
py_env.Append(CPPPATH = env['PYTHON_INCLUDES'])
|
||||
|
||||
py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||
|
@ -179,8 +181,8 @@ if 'uninstall' not in COMMAND_LINE_TARGETS:
|
|||
py_env.Append(LIBS=env['CAIRO_ALL_LIBS'])
|
||||
|
||||
if env['HAS_PYCAIRO']:
|
||||
py_env.ParseConfig('pkg-config --cflags pycairo')
|
||||
py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO')
|
||||
py_env.Append(CPPPATH = env['PYCAIRO_PATHS'])
|
||||
|
||||
py_env.Append(LINKFLAGS=python_link_flag)
|
||||
py_env.AppendUnique(LIBS='mapnik-json')
|
||||
|
|
|
@ -41,7 +41,6 @@ Several things happen when you do:
|
|||
|
||||
import itertools
|
||||
import os
|
||||
import sys
|
||||
import warnings
|
||||
try:
|
||||
import json
|
||||
|
|
|
@ -17,7 +17,7 @@ see the documentation of mapnik.printing.PDFPrinter() for options
|
|||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from . import render, Map, Box2d, Layer, Feature, Projection, ProjTransform, Coord, Style, Rule, Geometry2d
|
||||
from . import render, Map, Box2d, Layer, Feature, Projection, Coord, Style, Geometry2d
|
||||
import math
|
||||
import os
|
||||
import tempfile
|
||||
|
|
117
bootstrap.sh
|
@ -6,93 +6,57 @@
|
|||
|
||||
todo
|
||||
|
||||
- gdal shared lib / avoid dlclose atexit crash
|
||||
- clang debs to s3
|
||||
- docs for base setup: sudo apt-get -y install zlib1g-dev python-dev make git python-dev
|
||||
- boost_python_patch
|
||||
- shrink icu data
|
||||
- cairo/pycairo
|
||||
- clang + libc++
|
||||
- pkg-config-less
|
||||
- gdal shared lib?
|
||||
'
|
||||
|
||||
CPP11_TOOLCHAIN="$(pwd)/toolchain"
|
||||
|
||||
function dpack() {
|
||||
if [[ ! -f $2 ]]; then
|
||||
wget -q $1/$(echo $2 | sed 's/+/%2B/g')
|
||||
dpkg -x $2 ${CPP11_TOOLCHAIN}
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_cpp11_toolchain() {
|
||||
if [[ $(uname -s) == 'Linux' ]]; then
|
||||
local PPA="https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+files"
|
||||
# http://llvm.org/apt/precise/dists/llvm-toolchain-precise-3.5/main/binary-amd64/Packages
|
||||
# TODO: cache these for faster downloads
|
||||
local LLVM_DIST="http://llvm.org/apt/precise/pool/main/l/llvm-toolchain-3.5"
|
||||
dpack ${LLVM_DIST} clang-3.5_3.5~svn217304-1~exp1_amd64.deb
|
||||
dpack ${LLVM_DIST} libllvm3.5_3.5~svn217304-1~exp1_amd64.deb
|
||||
dpack ${LLVM_DIST} libclang-common-3.5-dev_3.5~svn215019-1~exp1_amd64.deb
|
||||
dpack ${PPA} libstdc++6_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
dpack ${PPA} libstdc++-4.8-dev_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
dpack ${PPA} libgcc-4.8-dev_4.8.1-2ubuntu1~12.04_amd64.deb
|
||||
export CPLUS_INCLUDE_PATH="${CPP11_TOOLCHAIN}/usr/include/c++/4.8:${CPP11_TOOLCHAIN}/usr/include/x86_64-linux-gnu/c++/4.8:${CPLUS_INCLUDE_PATH}"
|
||||
export LD_LIBRARY_PATH="${CPP11_TOOLCHAIN}/usr/lib/x86_64-linux-gnu:${CPP11_TOOLCHAIN}/usr/lib/gcc/x86_64-linux-gnu/4.8/:${LD_LIBRARY_PATH}"
|
||||
export LIBRARY_PATH="${LD_LIBRARY_PATH}"
|
||||
export PATH="${CPP11_TOOLCHAIN}/usr/bin":${PATH}
|
||||
export CXX="${CPP11_TOOLCHAIN}/usr/bin/clang++-3.5"
|
||||
export CC="${CPP11_TOOLCHAIN}/usr/bin/clang-3.5"
|
||||
else
|
||||
export CXX=clang++
|
||||
export CC=clang
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_mason() {
|
||||
if [[ -d ~/.mason ]]; then
|
||||
export PATH=~/.mason:$PATH
|
||||
if [[ ! -d ./.mason ]]; then
|
||||
git clone --depth 1 https://github.com/mapbox/mason.git ./.mason
|
||||
else
|
||||
if [[ ! -d ./.mason ]]; then
|
||||
git clone --depth 1 https://github.com/mapbox/mason.git ./.mason
|
||||
fi
|
||||
export MASON_DIR=$(pwd)/.mason
|
||||
export PATH=$(pwd)/.mason:$PATH
|
||||
echo "Updating to latest mason"
|
||||
(cd ./.mason && git pull)
|
||||
fi
|
||||
export MASON_DIR=$(pwd)/.mason
|
||||
if [[ $(uname -s) == 'Linux' ]]; then source ./.mason/scripts/setup_cpp11_toolchain.sh; fi
|
||||
export PATH=$(pwd)/.mason:$PATH
|
||||
export CXX=${CXX:-clang++}
|
||||
export CC=${CC:-clang}
|
||||
}
|
||||
|
||||
function ip() {
|
||||
if [[ ! -d ./mason_packages/${3}/${1}/ ]]; then
|
||||
echo ./mason_packages/${3}/${1}/
|
||||
function install() {
|
||||
MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID)
|
||||
if [[ ! -d ./mason_packages/${MASON_PLATFORM_ID}/${1}/ ]]; then
|
||||
mason install $1 $2
|
||||
mason link $1 $2
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mason_deps() {
|
||||
MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID)
|
||||
ip freetype 2.5.4 $MASON_PLATFORM_ID
|
||||
ip harfbuzz 2cd5323 $MASON_PLATFORM_ID
|
||||
ip jpeg_turbo 1.4.0 $MASON_PLATFORM_ID
|
||||
ip libxml2 2.9.2 $MASON_PLATFORM_ID
|
||||
ip libpng 1.6.13 $MASON_PLATFORM_ID
|
||||
ip webp 0.4.2 $MASON_PLATFORM_ID
|
||||
ip icu 54.1 $MASON_PLATFORM_ID
|
||||
ip proj 4.8.0 $MASON_PLATFORM_ID
|
||||
ip libtiff 4.0.4beta $MASON_PLATFORM_ID
|
||||
ip boost 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libsystem 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libthread 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libfilesystem 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libprogram_options 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libregex 1.57.0 $MASON_PLATFORM_ID
|
||||
ip boost_libpython 1.57.0 $MASON_PLATFORM_ID
|
||||
ip libpq 9.4.0 $MASON_PLATFORM_ID
|
||||
ip sqlite 3.8.6 $MASON_PLATFORM_ID
|
||||
ip gdal 1.11.1 $MASON_PLATFORM_ID
|
||||
ip expat 2.1.0 $MASON_PLATFORM_ID
|
||||
ip pixman 0.32.6 $MASON_PLATFORM_ID
|
||||
ip cairo 1.12.18 $MASON_PLATFORM_ID
|
||||
install freetype 2.5.4
|
||||
install harfbuzz 2cd5323
|
||||
install jpeg_turbo 1.4.0
|
||||
install libxml2 2.9.2
|
||||
install libpng 1.6.16
|
||||
install webp 0.4.2
|
||||
install icu 54.1
|
||||
install proj 4.8.0
|
||||
install libtiff 4.0.4beta
|
||||
install boost 1.57.0
|
||||
install boost_libsystem 1.57.0
|
||||
install boost_libthread 1.57.0
|
||||
install boost_libfilesystem 1.57.0
|
||||
install boost_libprogram_options 1.57.0
|
||||
install boost_libregex 1.57.0
|
||||
install boost_libpython 1.57.0
|
||||
install libpq 9.4.0
|
||||
install sqlite 3.8.8.1
|
||||
install gdal 1.11.1
|
||||
install expat 2.1.0
|
||||
install pixman 0.32.6
|
||||
install cairo 1.12.18
|
||||
}
|
||||
|
||||
function setup_nose() {
|
||||
|
@ -105,7 +69,6 @@ function setup_nose() {
|
|||
|
||||
function make_config() {
|
||||
local MASON_LINKED_REL=./mason_packages/.link
|
||||
export PKG_CONFIG_PATH="${MASON_LINKED_REL}/lib/pkgconfig"
|
||||
export C_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||
export CPLUS_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||
export LIBRARY_PATH="${MASON_LINKED_REL}/lib"
|
||||
|
@ -118,11 +81,10 @@ CUSTOM_CXXFLAGS = '-fvisibility=hidden -fvisibility-inlines-hidden -DU_CHARSET_I
|
|||
CUSTOM_LDFLAGS = '-L${MASON_LINKED_REL}/lib'
|
||||
RUNTIME_LINK = 'static'
|
||||
INPUT_PLUGINS = 'all'
|
||||
PREFIX = '/opt/mapnik-3.x'
|
||||
PATH = '${MASON_LINKED_REL}/bin'
|
||||
PKG_CONFIG_PATH = '${MASON_LINKED_REL}/lib/pkgconfig'
|
||||
PATH_REMOVE = '/usr:/usr/local'
|
||||
PATH_REPLACE = '/Users/travis/build/mapbox/mason/mason_packages:./mason_packages'
|
||||
MAPNIK_NAME = 'mapnik_3-0-0'
|
||||
BOOST_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
BOOST_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
ICU_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
|
@ -149,6 +111,9 @@ CAIRO_LIBS = '${MASON_LINKED_REL}/lib'
|
|||
SQLITE_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||
SQLITE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||
FRAMEWORK_PYTHON = False
|
||||
BENCHMARK = True
|
||||
CPP_TESTS = True
|
||||
PGSQL2SQLITE = True
|
||||
BINDINGS = 'python'
|
||||
XMLPARSER = 'ptree'
|
||||
SVG2PNG = True
|
||||
|
@ -167,9 +132,11 @@ function main() {
|
|||
setup_mason
|
||||
install_mason_deps
|
||||
setup_nose
|
||||
setup_cpp11_toolchain
|
||||
make_config
|
||||
setup_runtime_settings
|
||||
echo "Ready, now run:"
|
||||
echo ""
|
||||
echo " ./configure && make"
|
||||
}
|
||||
|
||||
main
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||
|
||||
// Boost.SpatialIndex - geometry helper functions
|
||||
//
|
||||
// Copyright 2008 Federico J. Fernandez.
|
||||
// Use, modification and distribution is subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_GEOMETRY_GGL_INDEX_RTREE_HELPERS_HPP
|
||||
#define BOOST_GEOMETRY_GGL_INDEX_RTREE_HELPERS_HPP
|
||||
|
||||
#include <boost/geometry/algorithms/area.hpp>
|
||||
#include <boost/geometry/algorithms/disjoint.hpp>
|
||||
#include <boost/geometry/core/point_type.hpp>
|
||||
|
||||
namespace boost { namespace geometry { namespace index {
|
||||
|
||||
/**
|
||||
* \brief Given two boxes, returns the minimal box that contains them
|
||||
*/
|
||||
// TODO: use geometry::expand
|
||||
template <typename Box>
|
||||
inline Box enlarge_box(Box const& b1, Box const& b2)
|
||||
{
|
||||
// TODO: mloskot - Refactor to readable form. Fix VC++8.0 min/max warnings:
|
||||
// warning C4002: too many actual parameters for macro 'min
|
||||
|
||||
typedef typename geometry::point_type<Box>::type point_type;
|
||||
|
||||
point_type pmin(
|
||||
geometry::get<min_corner, 0>(b1) < geometry::get<min_corner, 0>(b2)
|
||||
? geometry::get<min_corner, 0>(b1) : geometry::get<min_corner, 0>(b2),
|
||||
geometry::get<min_corner, 1>(b1) < geometry::get<min_corner, 1>(b2)
|
||||
? geometry::get<min_corner, 1>(b1) : geometry::get<min_corner, 1>(b2));
|
||||
|
||||
point_type pmax(
|
||||
geometry::get<max_corner, 0>(b1) > geometry::get<max_corner, 0>(b2)
|
||||
? geometry::get<max_corner, 0>(b1) : geometry::get<max_corner, 0>(b2),
|
||||
geometry::get<max_corner, 1>(b1) > geometry::get<max_corner, 1>(b2)
|
||||
? geometry::get<max_corner, 1>(b1) : geometry::get<max_corner, 1>(b2));
|
||||
|
||||
return Box(pmin, pmax);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Compute the area of the union of b1 and b2
|
||||
*/
|
||||
template <typename Box>
|
||||
inline typename default_area_result<Box>::type compute_union_area(Box const& b1, Box const& b2)
|
||||
{
|
||||
Box enlarged_box = enlarge_box(b1, b2);
|
||||
return geometry::area(enlarged_box);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Checks if boxes intersects
|
||||
*/
|
||||
// TODO: move to geometry::intersects
|
||||
template <typename Box>
|
||||
inline bool is_overlapping(Box const& b1, Box const& b2)
|
||||
{
|
||||
return ! geometry::disjoint(b1, b2);
|
||||
}
|
||||
|
||||
}}} // namespace boost::geometry::index
|
||||
|
||||
#endif // BOOST_GEOMETRY_GGL_INDEX_RTREE_HELPERS_HPP
|
773
deps/boost/geometry/extensions/index/rtree/rtree.hpp
vendored
|
@ -1,773 +0,0 @@
|
|||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||
|
||||
// Boost.SpatialIndex - rtree implementation
|
||||
//
|
||||
// Copyright 2008 Federico J. Fernandez.
|
||||
// Use, modification and distribution is subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_HPP
|
||||
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_HPP
|
||||
|
||||
#include <cstddef>
|
||||
#include <iostream> // TODO: Remove if print() is removed
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/concept_check.hpp>
|
||||
#include <memory>
|
||||
|
||||
#include <boost/geometry/algorithms/area.hpp>
|
||||
|
||||
#include <boost/geometry/extensions/index/rtree/rtree_node.hpp>
|
||||
#include <boost/geometry/extensions/index/rtree/rtree_leaf.hpp>
|
||||
|
||||
namespace boost { namespace geometry { namespace index
|
||||
{
|
||||
|
||||
template <typename Box, typename Value >
|
||||
class rtree
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::shared_ptr<rtree_node<Box, Value> > node_pointer;
|
||||
typedef std::shared_ptr<rtree_leaf<Box, Value> > leaf_pointer;
|
||||
|
||||
/**
|
||||
* \brief Creates a rtree with 'maximum' elements per node and 'minimum'.
|
||||
*/
|
||||
rtree(unsigned int const& maximum, unsigned int const& minimum)
|
||||
: m_count(0)
|
||||
, m_min_elems_per_node(minimum)
|
||||
, m_max_elems_per_node(maximum)
|
||||
, m_root(new rtree_node<Box, Value>(node_pointer(), 1))
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Creates a rtree with maximum elements per node
|
||||
* and minimum (box is ignored).
|
||||
*/
|
||||
rtree(Box const& box, unsigned int const& maximum, unsigned int const& minimum)
|
||||
: m_count(0)
|
||||
, m_min_elems_per_node(minimum)
|
||||
, m_max_elems_per_node(maximum)
|
||||
, m_root(new rtree_node<Box, Value>(node_pointer(), 1))
|
||||
{
|
||||
boost::ignore_unused_variable_warning(box);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief destructor (virtual because we have virtual functions)
|
||||
*/
|
||||
virtual ~rtree() {}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Remove elements inside the 'box'
|
||||
*/
|
||||
inline void remove(Box const& box)
|
||||
{
|
||||
try
|
||||
{
|
||||
node_pointer leaf(choose_exact_leaf(box));
|
||||
typename rtree_leaf<Box, Value>::leaf_map q_leaves;
|
||||
|
||||
leaf->remove(box);
|
||||
|
||||
if (leaf->elements() < m_min_elems_per_node && elements() > m_min_elems_per_node)
|
||||
{
|
||||
q_leaves = leaf->get_leaves();
|
||||
|
||||
// we remove the leaf_node in the parent node because now it's empty
|
||||
leaf->get_parent()->remove(leaf->get_parent()->get_box(leaf));
|
||||
}
|
||||
|
||||
typename rtree_node<Box, Value>::node_map q_nodes;
|
||||
condense_tree(leaf, q_nodes);
|
||||
|
||||
std::vector<std::pair<Box, Value> > s;
|
||||
for (typename rtree_node<Box, Value>::node_map::const_iterator it = q_nodes.begin();
|
||||
it != q_nodes.end(); ++it)
|
||||
{
|
||||
typename rtree_leaf<Box, Value>::leaf_map leaves = it->second->get_leaves();
|
||||
|
||||
// reinserting leaves from nodes
|
||||
for (typename rtree_leaf<Box, Value>::leaf_map::const_iterator itl = leaves.begin();
|
||||
itl != leaves.end(); ++itl)
|
||||
{
|
||||
s.push_back(*itl);
|
||||
}
|
||||
}
|
||||
|
||||
for (typename std::vector<std::pair<Box, Value> >::const_iterator it = s.begin(); it != s.end(); ++it)
|
||||
{
|
||||
m_count--;
|
||||
insert(it->first, it->second);
|
||||
}
|
||||
|
||||
// if the root has only one child and the child is not a leaf,
|
||||
// make it the root
|
||||
if (m_root->elements() == 1)
|
||||
{
|
||||
if (!m_root->first_element()->is_leaf())
|
||||
{
|
||||
m_root = m_root->first_element();
|
||||
}
|
||||
}
|
||||
// reinserting leaves
|
||||
for (typename rtree_leaf<Box, Value>::leaf_map::const_iterator it = q_leaves.begin();
|
||||
it != q_leaves.end(); ++it)
|
||||
{
|
||||
m_count--;
|
||||
insert(it->first, it->second);
|
||||
}
|
||||
|
||||
m_count--;
|
||||
}
|
||||
catch(std::logic_error & e)
|
||||
{
|
||||
// TODO: mloskot - replace with Boost.Geometry exception
|
||||
|
||||
// not found
|
||||
std::cerr << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Remove element inside the box with value
|
||||
*/
|
||||
void remove(Box const& box, Value const& value)
|
||||
{
|
||||
try
|
||||
{
|
||||
node_pointer leaf;
|
||||
|
||||
// find possible leaves
|
||||
typedef typename std::vector<node_pointer > node_type;
|
||||
node_type nodes;
|
||||
m_root->find_leaves(box, nodes);
|
||||
|
||||
// refine the result
|
||||
for (typename node_type::const_iterator it = nodes.begin(); it != nodes.end(); ++it)
|
||||
{
|
||||
leaf = *it;
|
||||
try
|
||||
{
|
||||
leaf->remove(value);
|
||||
break;
|
||||
} catch (...)
|
||||
{
|
||||
leaf = node_pointer();
|
||||
}
|
||||
}
|
||||
|
||||
if (!leaf)
|
||||
return;
|
||||
|
||||
typename rtree_leaf < Box, Value >::leaf_map q_leaves;
|
||||
|
||||
if (leaf->elements() < m_min_elems_per_node && elements() > m_min_elems_per_node)
|
||||
{
|
||||
q_leaves = leaf->get_leaves();
|
||||
|
||||
// we remove the leaf_node in the parent node because now it's empty
|
||||
leaf->get_parent()->remove(leaf->get_parent()->get_box(leaf));
|
||||
}
|
||||
|
||||
typename rtree_node<Box, Value>::node_map q_nodes;
|
||||
condense_tree(leaf, q_nodes);
|
||||
|
||||
std::vector<std::pair<Box, Value> > s;
|
||||
for (typename rtree_node<Box, Value>::node_map::const_iterator it = q_nodes.begin();
|
||||
it != q_nodes.end(); ++it)
|
||||
{
|
||||
typename rtree_leaf<Box, Value>::leaf_map leaves = it->second->get_leaves();
|
||||
|
||||
// reinserting leaves from nodes
|
||||
for (typename rtree_leaf<Box, Value>::leaf_map::const_iterator itl = leaves.begin();
|
||||
itl != leaves.end(); ++itl)
|
||||
{
|
||||
s.push_back(*itl);
|
||||
}
|
||||
}
|
||||
|
||||
for (typename std::vector<std::pair<Box, Value> >::const_iterator it = s.begin(); it != s.end(); ++it)
|
||||
{
|
||||
m_count--;
|
||||
insert(it->first, it->second);
|
||||
}
|
||||
|
||||
// if the root has only one child and the child is not a leaf,
|
||||
// make it the root
|
||||
if (m_root->elements() == 1)
|
||||
{
|
||||
if (!m_root->first_element()->is_leaf())
|
||||
{
|
||||
m_root = m_root->first_element();
|
||||
}
|
||||
}
|
||||
|
||||
// reinserting leaves
|
||||
for (typename rtree_leaf<Box, Value>::leaf_map::const_iterator it = q_leaves.begin();
|
||||
it != q_leaves.end(); ++it)
|
||||
{
|
||||
m_count--;
|
||||
insert(it->first, it->second);
|
||||
}
|
||||
|
||||
m_count--;
|
||||
|
||||
}
|
||||
catch(std::logic_error & e)
|
||||
{
|
||||
// TODO: mloskot - ggl exception
|
||||
|
||||
// not found
|
||||
std::cerr << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Returns the number of elements.
|
||||
*/
|
||||
inline unsigned int elements() const
|
||||
{
|
||||
return m_count;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Inserts an element with 'box' as key with value.
|
||||
*/
|
||||
inline void insert(Box const& box, Value const& value)
|
||||
{
|
||||
m_count++;
|
||||
|
||||
node_pointer leaf(choose_corresponding_leaf(box));
|
||||
|
||||
// check if the selected leaf is full to do the split if necessary
|
||||
if (leaf->elements() >= m_max_elems_per_node)
|
||||
{
|
||||
leaf->insert(box, value);
|
||||
|
||||
// split!
|
||||
node_pointer n1(new rtree_leaf<Box, Value>(leaf->get_parent()));
|
||||
node_pointer n2(new rtree_leaf<Box, Value>(leaf->get_parent()));
|
||||
|
||||
split_node(leaf, n1, n2);
|
||||
adjust_tree(leaf, n1, n2);
|
||||
}
|
||||
else
|
||||
{
|
||||
leaf->insert(box, value);
|
||||
adjust_tree(leaf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Returns all the values inside 'box'
|
||||
*/
|
||||
inline std::deque<Value> find(Box const& box) const
|
||||
{
|
||||
std::deque<Value> result;
|
||||
m_root->find(box, result, false);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Print Rtree (mainly for debug)
|
||||
*/
|
||||
inline void print()
|
||||
{
|
||||
std::cerr << "===================================" << std::endl;
|
||||
std::cerr << " Min/Max: " << m_min_elems_per_node << " / " << m_max_elems_per_node << std::endl;
|
||||
std::cerr << "Leaves: " << m_root->get_leaves().size() << std::endl;
|
||||
m_root->print();
|
||||
std::cerr << "===================================" << std::endl;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
/// number of elements
|
||||
unsigned int m_count;
|
||||
|
||||
/// minimum number of elements per node
|
||||
unsigned int m_min_elems_per_node;
|
||||
|
||||
/// maximum number of elements per node
|
||||
unsigned int m_max_elems_per_node;
|
||||
|
||||
/// tree root
|
||||
node_pointer m_root;
|
||||
|
||||
/**
|
||||
* \brief Reorganize the tree after a removal. It tries to
|
||||
* join nodes with less elements than m.
|
||||
*/
|
||||
void condense_tree(node_pointer const& leaf,
|
||||
typename rtree_node<Box, Value>::node_map& q_nodes)
|
||||
{
|
||||
if (leaf.get() == m_root.get())
|
||||
{
|
||||
// if it's the root we are done
|
||||
return;
|
||||
}
|
||||
|
||||
node_pointer parent = leaf->get_parent();
|
||||
parent->adjust_box(leaf);
|
||||
|
||||
if (parent->elements() < m_min_elems_per_node)
|
||||
{
|
||||
if (parent.get() == m_root.get())
|
||||
{
|
||||
// if the parent is underfull and it's the root we just exit
|
||||
return;
|
||||
}
|
||||
|
||||
// get the nodes that we should reinsert
|
||||
typename rtree_node<Box, Value>::node_map this_nodes = parent->get_nodes();
|
||||
for(typename rtree_node<Box, Value>::node_map::const_iterator it = this_nodes.begin();
|
||||
it != this_nodes.end(); ++it)
|
||||
{
|
||||
q_nodes.push_back(*it);
|
||||
}
|
||||
|
||||
// we remove the node in the parent node because now it should be
|
||||
// re inserted
|
||||
parent->get_parent()->remove(parent->get_parent()->get_box(parent));
|
||||
}
|
||||
|
||||
condense_tree(parent, q_nodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief After an insertion splits nodes with more than 'maximum' elements.
|
||||
*/
|
||||
inline void adjust_tree(node_pointer& node)
|
||||
{
|
||||
if (node.get() == m_root.get())
|
||||
{
|
||||
// we finished the adjust
|
||||
return;
|
||||
}
|
||||
|
||||
// as there are no splits just adjust the box of the parent and go on
|
||||
node_pointer parent = node->get_parent();
|
||||
parent->adjust_box(node);
|
||||
adjust_tree(parent);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief After an insertion splits nodes with more than maximum elements
|
||||
* (recursive step with subtrees 'n1' and 'n2' to be joined).
|
||||
*/
|
||||
void adjust_tree(node_pointer& leaf, node_pointer& n1, node_pointer& n2)
|
||||
{
|
||||
// check if we are in the root and do the split
|
||||
if (leaf.get() == m_root.get())
|
||||
{
|
||||
node_pointer new_root(new rtree_node<Box,Value>(node_pointer (), leaf->get_level() + 1));
|
||||
new_root->add_node(n1->compute_box(), n1);
|
||||
new_root->add_node(n2->compute_box(), n2);
|
||||
|
||||
n1->set_parent(new_root);
|
||||
n2->set_parent(new_root);
|
||||
|
||||
n1->update_parent(n1);
|
||||
n2->update_parent(n2);
|
||||
|
||||
m_root = new_root;
|
||||
return;
|
||||
}
|
||||
|
||||
node_pointer parent = leaf->get_parent();
|
||||
|
||||
parent->replace_node(leaf, n1);
|
||||
parent->add_node(n2->compute_box(), n2);
|
||||
|
||||
// if parent is full, split and readjust
|
||||
if (parent->elements() > m_max_elems_per_node)
|
||||
{
|
||||
node_pointer p1(new rtree_node<Box, Value>(parent->get_parent(), parent->get_level()));
|
||||
node_pointer p2(new rtree_node<Box, Value>(parent->get_parent(), parent->get_level()));
|
||||
|
||||
split_node(parent, p1, p2);
|
||||
adjust_tree(parent, p1, p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjust_tree(parent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Splits 'n' in 'n1' and 'n2'
|
||||
*/
|
||||
void split_node(node_pointer const& n, node_pointer& n1, node_pointer& n2) const
|
||||
{
|
||||
unsigned int seed1 = 0;
|
||||
unsigned int seed2 = 0;
|
||||
std::vector<Box> boxes = n->get_boxes();
|
||||
|
||||
n1->set_parent(n->get_parent());
|
||||
n2->set_parent(n->get_parent());
|
||||
|
||||
linear_pick_seeds(n, seed1, seed2);
|
||||
|
||||
if (n->is_leaf())
|
||||
{
|
||||
n1->add_value(boxes[seed1], n->get_value(seed1));
|
||||
n2->add_value(boxes[seed2], n->get_value(seed2));
|
||||
}
|
||||
else
|
||||
{
|
||||
n1->add_node(boxes[seed1], n->get_node(seed1));
|
||||
n2->add_node(boxes[seed2], n->get_node(seed2));
|
||||
}
|
||||
|
||||
unsigned int index = 0;
|
||||
|
||||
if (n->is_leaf())
|
||||
{
|
||||
// TODO: mloskot - add assert(node.size() >= 2); or similar
|
||||
|
||||
typename rtree_leaf<Box, Value>::leaf_map nodes = n->get_leaves();
|
||||
unsigned int remaining = nodes.size() - 2;
|
||||
|
||||
for (typename rtree_leaf<Box, Value>::leaf_map::const_iterator it = nodes.begin();
|
||||
it != nodes.end(); ++it, index++)
|
||||
{
|
||||
if (index != seed1 && index != seed2)
|
||||
{
|
||||
if (n1->elements() + remaining == m_min_elems_per_node)
|
||||
{
|
||||
n1->add_value(it->first, it->second);
|
||||
continue;
|
||||
}
|
||||
if (n2->elements() + remaining == m_min_elems_per_node)
|
||||
{
|
||||
n2->add_value(it->first, it->second);
|
||||
continue;
|
||||
}
|
||||
|
||||
remaining--;
|
||||
|
||||
/// current boxes of each group
|
||||
Box b1, b2;
|
||||
|
||||
/// enlarged boxes of each group
|
||||
Box eb1, eb2;
|
||||
b1 = n1->compute_box();
|
||||
b2 = n2->compute_box();
|
||||
|
||||
/// areas
|
||||
typedef typename coordinate_type<Box>::type coordinate_type;
|
||||
coordinate_type b1_area, b2_area;
|
||||
coordinate_type eb1_area, eb2_area;
|
||||
b1_area = geometry::area(b1);
|
||||
b2_area = geometry::area(b2);
|
||||
eb1_area = compute_union_area(b1, it->first);
|
||||
eb2_area = compute_union_area(b2, it->first);
|
||||
|
||||
if (eb1_area - b1_area > eb2_area - b2_area)
|
||||
{
|
||||
n2->add_value(it->first, it->second);
|
||||
}
|
||||
if (eb1_area - b1_area < eb2_area - b2_area)
|
||||
{
|
||||
n1->add_value(it->first, it->second);
|
||||
}
|
||||
if (eb1_area - b1_area == eb2_area - b2_area)
|
||||
{
|
||||
if (b1_area < b2_area)
|
||||
{
|
||||
n1->add_value(it->first, it->second);
|
||||
}
|
||||
if (b1_area > b2_area)
|
||||
{
|
||||
n2->add_value(it->first, it->second);
|
||||
}
|
||||
if (b1_area == b2_area)
|
||||
{
|
||||
if (n1->elements() > n2->elements())
|
||||
{
|
||||
n2->add_value(it->first, it->second);
|
||||
}
|
||||
else
|
||||
{
|
||||
n1->add_value(it->first, it->second);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: mloskot - add assert(node.size() >= 2); or similar
|
||||
|
||||
typename rtree_node<Box, Value>::node_map nodes = n->get_nodes();
|
||||
unsigned int remaining = nodes.size() - 2;
|
||||
for(typename rtree_node<Box, Value>::node_map::const_iterator it = nodes.begin();
|
||||
it != nodes.end(); ++it, index++)
|
||||
{
|
||||
|
||||
if (index != seed1 && index != seed2)
|
||||
{
|
||||
|
||||
if (n1->elements() + remaining == m_min_elems_per_node)
|
||||
{
|
||||
n1->add_node(it->first, it->second);
|
||||
continue;
|
||||
}
|
||||
if (n2->elements() + remaining == m_min_elems_per_node)
|
||||
{
|
||||
n2->add_node(it->first, it->second);
|
||||
continue;
|
||||
}
|
||||
|
||||
remaining--;
|
||||
|
||||
/// current boxes of each group
|
||||
Box b1, b2;
|
||||
|
||||
/// enlarged boxes of each group
|
||||
Box eb1, eb2;
|
||||
b1 = n1->compute_box();
|
||||
b2 = n2->compute_box();
|
||||
|
||||
/// areas
|
||||
typedef typename coordinate_type<Box>::type coordinate_type;
|
||||
coordinate_type b1_area, b2_area;
|
||||
coordinate_type eb1_area, eb2_area;
|
||||
b1_area = geometry::area(b1);
|
||||
b2_area = geometry::area(b2);
|
||||
|
||||
eb1_area = compute_union_area(b1, it->first);
|
||||
eb2_area = compute_union_area(b2, it->first);
|
||||
|
||||
if (eb1_area - b1_area > eb2_area - b2_area)
|
||||
{
|
||||
n2->add_node(it->first, it->second);
|
||||
}
|
||||
if (eb1_area - b1_area < eb2_area - b2_area)
|
||||
{
|
||||
n1->add_node(it->first, it->second);
|
||||
}
|
||||
if (eb1_area - b1_area == eb2_area - b2_area)
|
||||
{
|
||||
if (b1_area < b2_area)
|
||||
{
|
||||
n1->add_node(it->first, it->second);
|
||||
}
|
||||
if (b1_area > b2_area)
|
||||
{
|
||||
n2->add_node(it->first, it->second);
|
||||
}
|
||||
if (b1_area == b2_area)
|
||||
{
|
||||
if (n1->elements() > n2->elements())
|
||||
{
|
||||
n2->add_node(it->first, it->second);
|
||||
}
|
||||
else
|
||||
{
|
||||
n1->add_node(it->first, it->second);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Choose initial values for the split algorithm (linear version)
|
||||
*/
|
||||
void linear_pick_seeds(node_pointer const& n, unsigned int &seed1, unsigned int &seed2) const
|
||||
{
|
||||
// get boxes from the node
|
||||
std::vector<Box>boxes = n->get_boxes();
|
||||
if (boxes.size() == 0)
|
||||
{
|
||||
// TODO: mloskot - throw ggl exception
|
||||
throw std::logic_error("Empty Node trying to Pick Seeds");
|
||||
}
|
||||
|
||||
// only two dim for now
|
||||
// unsigned int dimensions =
|
||||
// geometry::point_traits<Point>::coordinate_count;
|
||||
|
||||
// find the first two elements
|
||||
typedef typename coordinate_type<Box>::type coordinate_type;
|
||||
coordinate_type separation_x, separation_y;
|
||||
unsigned int first_x, second_x;
|
||||
unsigned int first_y, second_y;
|
||||
find_normalized_separations<0u>(boxes, separation_x, first_x, second_x);
|
||||
find_normalized_separations<1u>(boxes, separation_y, first_y, second_y);
|
||||
|
||||
if (separation_x > separation_y)
|
||||
{
|
||||
seed1 = first_x;
|
||||
seed2 = second_x;
|
||||
}
|
||||
else
|
||||
{
|
||||
seed1 = first_y;
|
||||
seed2 = second_y;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Find distances between possible initial values for the
|
||||
* pick_seeds algorithm.
|
||||
*/
|
||||
template <std::size_t D, typename T>
|
||||
void find_normalized_separations(std::vector<Box> const& boxes, T& separation,
|
||||
unsigned int& first, unsigned int& second) const
|
||||
{
|
||||
if (boxes.size() < 2)
|
||||
{
|
||||
throw std::logic_error("At least two boxes needed to split");
|
||||
}
|
||||
|
||||
// find the lowest high
|
||||
typename std::vector<Box>::const_iterator it = boxes.begin();
|
||||
typedef typename coordinate_type<Box>::type coordinate_type;
|
||||
coordinate_type lowest_high = geometry::get<max_corner, D>(*it);
|
||||
unsigned int lowest_high_index = 0;
|
||||
unsigned int index = 1;
|
||||
++it;
|
||||
for(; it != boxes.end(); ++it)
|
||||
{
|
||||
if (geometry::get<max_corner, D>(*it) < lowest_high)
|
||||
{
|
||||
lowest_high = geometry::get<max_corner, D>(*it);
|
||||
lowest_high_index = index;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
// find the highest low
|
||||
coordinate_type highest_low = 0;
|
||||
unsigned int highest_low_index = 0;
|
||||
if (lowest_high_index == 0)
|
||||
{
|
||||
highest_low = geometry::get<min_corner, D>(boxes[1]);
|
||||
highest_low_index = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
highest_low = geometry::get<min_corner, D>(boxes[0]);
|
||||
highest_low_index = 0;
|
||||
}
|
||||
|
||||
index = 0;
|
||||
for (it = boxes.begin();
|
||||
it != boxes.end(); ++it, index++)
|
||||
{
|
||||
if (geometry::get<min_corner, D>(*it) >= highest_low && index != lowest_high_index)
|
||||
{
|
||||
highest_low = geometry::get<min_corner, D>(*it);
|
||||
highest_low_index = index;
|
||||
}
|
||||
}
|
||||
|
||||
// find the lowest low
|
||||
it = boxes.begin();
|
||||
coordinate_type lowest_low = geometry::get<min_corner, D>(*it);
|
||||
++it;
|
||||
for(; it != boxes.end(); ++it)
|
||||
{
|
||||
if (geometry::get<min_corner, D>(*it) < lowest_low)
|
||||
{
|
||||
lowest_low = geometry::get<min_corner, D>(*it);
|
||||
}
|
||||
}
|
||||
|
||||
// find the highest high
|
||||
it = boxes.begin();
|
||||
coordinate_type highest_high = geometry::get<max_corner, D>(*it);
|
||||
++it;
|
||||
for(; it != boxes.end(); ++it)
|
||||
{
|
||||
if (geometry::get<max_corner, D>(*it) > highest_high)
|
||||
{
|
||||
highest_high = geometry::get<max_corner, D>(*it);
|
||||
}
|
||||
}
|
||||
|
||||
coordinate_type const width = highest_high - lowest_low;
|
||||
|
||||
separation = (highest_low - lowest_high) / width;
|
||||
first = highest_low_index;
|
||||
second = lowest_high_index;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Choose one of the possible leaves to make an insertion
|
||||
*/
|
||||
inline node_pointer choose_corresponding_leaf(Box const& e)
|
||||
{
|
||||
node_pointer node = m_root;
|
||||
|
||||
// if the tree is empty add an initial leaf
|
||||
if (m_root->elements() == 0)
|
||||
{
|
||||
leaf_pointer new_leaf(new rtree_leaf<Box, Value>(m_root));
|
||||
m_root->add_leaf_node(Box (), new_leaf);
|
||||
|
||||
return new_leaf;
|
||||
}
|
||||
|
||||
while (!node->is_leaf())
|
||||
{
|
||||
/// traverse node's map to see which node we should select
|
||||
node = node->choose_node(e);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Choose the exact leaf where an insertion should be done
|
||||
*/
|
||||
node_pointer choose_exact_leaf(Box const&e) const
|
||||
{
|
||||
// find possible leaves
|
||||
typedef typename std::vector<node_pointer> node_type;
|
||||
node_type nodes;
|
||||
m_root->find_leaves(e, nodes);
|
||||
|
||||
// refine the result
|
||||
for (typename node_type::const_iterator it = nodes.begin(); it != nodes.end(); ++it)
|
||||
{
|
||||
typedef std::vector<std::pair<Box, Value> > leaves_type;
|
||||
leaves_type leaves = (*it)->get_leaves();
|
||||
|
||||
for (typename leaves_type::const_iterator itl = leaves.begin();
|
||||
itl != leaves.end(); ++itl)
|
||||
{
|
||||
|
||||
if (itl->first.max_corner() == e.max_corner()
|
||||
&& itl->first.min_corner() == e.min_corner())
|
||||
{
|
||||
return *it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: mloskot - ggl exception
|
||||
throw std::logic_error("Leaf not found");
|
||||
}
|
||||
};
|
||||
|
||||
}}} // namespace boost::geometry::index
|
||||
|
||||
#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_HPP
|
|
@ -1,252 +0,0 @@
|
|||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||
|
||||
// Boost.SpatialIndex - rtree leaf implementation
|
||||
//
|
||||
// Copyright 2008 Federico J. Fernandez.
|
||||
// Use, modification and distribution is subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP
|
||||
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP
|
||||
|
||||
#include <deque>
|
||||
#include <iostream> // TODO: Remove if print() is removed
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <boost/geometry/algorithms/area.hpp>
|
||||
#include <boost/geometry/algorithms/assign.hpp>
|
||||
#include <boost/geometry/algorithms/expand.hpp>
|
||||
|
||||
#include <boost/geometry/extensions/index/rtree/rtree_node.hpp>
|
||||
|
||||
namespace boost { namespace geometry { namespace index
|
||||
{
|
||||
|
||||
template <typename Box, typename Value >
|
||||
class rtree_leaf : public rtree_node<Box, Value>
|
||||
{
|
||||
public:
|
||||
|
||||
/// container type for the leaves
|
||||
typedef std::shared_ptr<rtree_node<Box, Value> > node_pointer;
|
||||
typedef std::vector<std::pair<Box, Value> > leaf_map;
|
||||
|
||||
/**
|
||||
* \brief Creates an empty leaf
|
||||
*/
|
||||
inline rtree_leaf()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Creates a new leaf, with 'parent' as parent
|
||||
*/
|
||||
inline rtree_leaf(node_pointer const& parent)
|
||||
: rtree_node<Box, Value> (parent, 0)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Search for elements in 'box' in the Rtree. Add them to 'result'.
|
||||
* If exact_match is true only return the elements having as
|
||||
* key the 'box'. Otherwise return everything inside 'box'.
|
||||
*/
|
||||
virtual void find(Box const& box, std::deque<Value>& result, bool const exact_match)
|
||||
{
|
||||
for (typename leaf_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (exact_match)
|
||||
{
|
||||
if (geometry::equals(it->first, box))
|
||||
{
|
||||
result.push_back(it->second);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_overlapping(it->first, box))
|
||||
{
|
||||
result.push_back(it->second);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Compute bounding box for this leaf
|
||||
*/
|
||||
virtual Box compute_box() const
|
||||
{
|
||||
if (m_nodes.empty())
|
||||
{
|
||||
return Box ();
|
||||
}
|
||||
|
||||
Box r;
|
||||
geometry::assign_inverse(r);
|
||||
for(typename leaf_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
geometry::expand(r, it->first);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief True if we are a leaf
|
||||
*/
|
||||
virtual bool is_leaf() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Number of elements in the tree
|
||||
*/
|
||||
virtual unsigned int elements() const
|
||||
{
|
||||
return m_nodes.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Insert a new element, with key 'box' and value 'v'
|
||||
*/
|
||||
virtual void insert(Box const& box, Value const& v)
|
||||
{
|
||||
m_nodes.push_back(std::make_pair(box, v));
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Proyect leaves of this node.
|
||||
*/
|
||||
virtual std::vector< std::pair<Box, Value> > get_leaves() const
|
||||
{
|
||||
return m_nodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Add a new child (node) to this node
|
||||
*/
|
||||
virtual void add_node(Box const&, node_pointer const&)
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Can't add node to leaf node.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Add a new leaf to this node
|
||||
*/
|
||||
virtual void add_value(Box const& box, Value const& v)
|
||||
{
|
||||
m_nodes.push_back(std::make_pair(box, v));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Proyect value in position 'index' in the nodes container
|
||||
*/
|
||||
virtual Value get_value(unsigned int index) const
|
||||
{
|
||||
return m_nodes[index].second;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Box projector for leaf
|
||||
*/
|
||||
virtual Box get_box(unsigned int index) const
|
||||
{
|
||||
return m_nodes[index].first;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Remove value with key 'box' in this leaf
|
||||
*/
|
||||
virtual void remove(Box const& box)
|
||||
{
|
||||
|
||||
for (typename leaf_map::iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (geometry::equals(it->first, box))
|
||||
{
|
||||
m_nodes.erase(it);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: mloskot - use GGL exception
|
||||
throw std::logic_error("Node not found.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Remove value in this leaf
|
||||
*/
|
||||
virtual void remove(Value const& v)
|
||||
{
|
||||
for (typename leaf_map::iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (it->second == v)
|
||||
{
|
||||
m_nodes.erase(it);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: mloskot - use GGL exception
|
||||
throw std::logic_error("Node not found.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Proyect boxes from this node
|
||||
*/
|
||||
virtual std::vector<Box> get_boxes() const
|
||||
{
|
||||
std::vector<Box> result;
|
||||
for (typename leaf_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
result.push_back(it->first);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Print leaf (mainly for debug)
|
||||
*/
|
||||
virtual void print() const
|
||||
{
|
||||
std::cerr << "\t" << " --> Leaf --------" << std::endl;
|
||||
std::cerr << "\t" << " Size: " << m_nodes.size() << std::endl;
|
||||
for (typename leaf_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
std::cerr << "\t" << " | ";
|
||||
std::cerr << "( " << geometry::get<min_corner, 0>
|
||||
(it->first) << " , " << geometry::get<min_corner, 1>
|
||||
(it->first) << " ) x ";
|
||||
std::cerr << "( " << geometry::get<max_corner, 0>
|
||||
(it->first) << " , " << geometry::get<max_corner, 1>
|
||||
(it->first) << " )";
|
||||
std::cerr << " -> ";
|
||||
std::cerr << it->second;
|
||||
std::cerr << " | " << std::endl;;
|
||||
}
|
||||
std::cerr << "\t" << " --< Leaf --------" << std::endl;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
/// leaves of this node
|
||||
leaf_map m_nodes;
|
||||
};
|
||||
|
||||
}}} // namespace boost::geometry::index
|
||||
|
||||
#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_LEAF_HPP
|
|
@ -1,493 +0,0 @@
|
|||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||
|
||||
// Boost.SpatialIndex - rtree node implementation
|
||||
//
|
||||
// Copyright 2008 Federico J. Fernandez.
|
||||
// Use, modification and distribution is subject to the Boost Software License,
|
||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP
|
||||
#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP
|
||||
|
||||
#include <deque>
|
||||
#include <iostream> // TODO: Remove if print() is removed
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <boost/geometry/algorithms/area.hpp>
|
||||
#include <boost/geometry/algorithms/assign.hpp>
|
||||
#include <boost/geometry/algorithms/equals.hpp>
|
||||
#include <boost/geometry/algorithms/expand.hpp>
|
||||
|
||||
#include <boost/geometry/extensions/index/rtree/helpers.hpp>
|
||||
|
||||
namespace boost { namespace geometry { namespace index
|
||||
{
|
||||
|
||||
/// forward declaration
|
||||
template <typename Box, typename Value>
|
||||
class rtree_leaf;
|
||||
|
||||
template <typename Box, typename Value>
|
||||
class rtree_node
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::shared_ptr<rtree_node<Box, Value> > node_pointer;
|
||||
typedef std::shared_ptr<rtree_leaf<Box, Value> > leaf_pointer;
|
||||
|
||||
/// type for the node map
|
||||
typedef std::vector<std::pair<Box, node_pointer > > node_map;
|
||||
|
||||
/**
|
||||
* \brief Creates a default node (needed for the containers)
|
||||
*/
|
||||
rtree_node()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Creates a node with 'parent' as parent and 'level' as its level
|
||||
*/
|
||||
rtree_node(node_pointer const& parent, unsigned int const& level)
|
||||
: m_parent(parent), m_level(level)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief destructor (virtual because we have virtual functions)
|
||||
*/
|
||||
virtual ~rtree_node()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Level projector
|
||||
*/
|
||||
virtual unsigned int get_level() const
|
||||
{
|
||||
return m_level;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Number of elements in the subtree
|
||||
*/
|
||||
virtual unsigned int elements() const
|
||||
{
|
||||
return m_nodes.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Project first element, to replace root in case of condensing
|
||||
*/
|
||||
inline node_pointer first_element() const
|
||||
{
|
||||
if (0 == m_nodes.size())
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("first_element in empty node");
|
||||
}
|
||||
return m_nodes.begin()->second;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief True if it is a leaf node
|
||||
*/
|
||||
virtual bool is_leaf() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Proyector for the 'i' node
|
||||
*/
|
||||
node_pointer get_node(unsigned int index)
|
||||
{
|
||||
return m_nodes[index].second;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Search for elements in 'box' in the Rtree. Add them to 'result'.
|
||||
* If exact_match is true only return the elements having as
|
||||
* key the box 'box'. Otherwise return everything inside 'box'.
|
||||
*/
|
||||
virtual void find(Box const& box, std::deque<Value>& result, bool const exact_match)
|
||||
{
|
||||
for (typename node_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (is_overlapping(it->first, box))
|
||||
{
|
||||
it->second->find(box, result, exact_match);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Return in 'result' all the leaves inside 'box'
|
||||
*/
|
||||
void find_leaves(Box const& box, typename std::vector<node_pointer>& result) const
|
||||
{
|
||||
for (typename node_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (is_overlapping(it->first, box))
|
||||
{
|
||||
if (it->second->is_leaf())
|
||||
{
|
||||
result.push_back(it->second);
|
||||
}
|
||||
else
|
||||
{
|
||||
it->second->find_leaves(box, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Compute bounding box for this node
|
||||
*/
|
||||
virtual Box compute_box() const
|
||||
{
|
||||
if (m_nodes.empty())
|
||||
{
|
||||
return Box();
|
||||
}
|
||||
|
||||
Box result;
|
||||
geometry::assign_inverse(result);
|
||||
for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
geometry::expand(result, it->first);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Insert a value (not allowed for a node, only on leaves)
|
||||
*/
|
||||
virtual void insert(Box const&, Value const&)
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Insert in node!");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get the envelopes of a node
|
||||
*/
|
||||
virtual std::vector<Box> get_boxes() const
|
||||
{
|
||||
std::vector<Box> result;
|
||||
for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
result.push_back(it->first);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Recompute the bounding box
|
||||
*/
|
||||
void adjust_box(node_pointer const& node)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
for (typename node_map::iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it, index++)
|
||||
{
|
||||
if (it->second.get() == node.get())
|
||||
{
|
||||
m_nodes[index] = std::make_pair(node->compute_box(), node);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Remove elements inside the 'box'
|
||||
*/
|
||||
virtual void remove(Box const& box)
|
||||
{
|
||||
for (typename node_map::iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (geometry::equals(it->first, box))
|
||||
{
|
||||
m_nodes.erase(it);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Remove value in this leaf
|
||||
*/
|
||||
virtual void remove(Value const&)
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Can't remove a non-leaf node by value.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Replace the node in the m_nodes vector and recompute the box
|
||||
*/
|
||||
void replace_node(node_pointer const& leaf, node_pointer& new_leaf)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
for(typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it, index++)
|
||||
{
|
||||
if (it->second.get() == leaf.get())
|
||||
{
|
||||
m_nodes[index] = std::make_pair(new_leaf->compute_box(), new_leaf);
|
||||
new_leaf->update_parent(new_leaf);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Node not found.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Add a child to this node
|
||||
*/
|
||||
virtual void add_node(Box const& box, node_pointer const& node)
|
||||
{
|
||||
m_nodes.push_back(std::make_pair(box, node));
|
||||
node->update_parent(node);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief add a value (not allowed in nodes, only on leaves)
|
||||
*/
|
||||
virtual void add_value(Box const&, Value const&)
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Can't add value to non-leaf node.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Add a child leaf to this node
|
||||
*/
|
||||
inline void add_leaf_node(Box const& box, leaf_pointer const& leaf)
|
||||
{
|
||||
m_nodes.push_back(std::make_pair(box, leaf));
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Choose a node suitable for adding 'box'
|
||||
*/
|
||||
node_pointer choose_node(Box const& box)
|
||||
{
|
||||
if (m_nodes.size() == 0)
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Empty node trying to choose the least enlargement node.");
|
||||
}
|
||||
|
||||
typedef typename coordinate_type<Box>::type coordinate_type;
|
||||
|
||||
bool first = true;
|
||||
coordinate_type min_area = 0;
|
||||
coordinate_type min_diff_area = 0;
|
||||
node_pointer chosen_node;
|
||||
|
||||
// check for the least enlargement
|
||||
for (typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
coordinate_type const
|
||||
diff_area = coordinate_type(compute_union_area(box, it->first))
|
||||
- geometry::area(it->first);
|
||||
|
||||
if (first)
|
||||
{
|
||||
// it's the first time, we keep the first
|
||||
min_diff_area = diff_area;
|
||||
min_area = geometry::area(it->first);
|
||||
chosen_node = it->second;
|
||||
|
||||
first = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diff_area < min_diff_area)
|
||||
{
|
||||
min_diff_area = diff_area;
|
||||
min_area = geometry::area(it->first);
|
||||
chosen_node = it->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diff_area == min_diff_area)
|
||||
{
|
||||
if (geometry::area(it->first) < min_area)
|
||||
{
|
||||
min_diff_area = diff_area;
|
||||
min_area = geometry::area(it->first);
|
||||
chosen_node = it->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return chosen_node;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Empty the node
|
||||
*/
|
||||
virtual void empty_nodes()
|
||||
{
|
||||
m_nodes.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Projector for parent
|
||||
*/
|
||||
inline node_pointer get_parent() const
|
||||
{
|
||||
return m_parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Update the parent of all the childs
|
||||
*/
|
||||
void update_parent(node_pointer const& node)
|
||||
{
|
||||
for (typename node_map::iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
it->second->set_parent(node);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set parent
|
||||
*/
|
||||
void set_parent(node_pointer const& node)
|
||||
{
|
||||
m_parent = node;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Value projector for leaf_node (not allowed for non-leaf nodes)
|
||||
*/
|
||||
virtual Value get_value(unsigned int) const
|
||||
{
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("No values in a non-leaf node.");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Box projector for node 'index'
|
||||
*/
|
||||
virtual Box get_box(unsigned int index) const
|
||||
{
|
||||
return m_nodes[index].first;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Box projector for node pointed by 'leaf'
|
||||
*/
|
||||
virtual Box get_box(node_pointer const& leaf) const
|
||||
{
|
||||
for (typename node_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (it->second.get() == leaf.get())
|
||||
{
|
||||
return it->first;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: mloskot - define & use GGL exception
|
||||
throw std::logic_error("Node not found");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Children projector
|
||||
*/
|
||||
node_map get_nodes() const
|
||||
{
|
||||
return m_nodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get leaves for a node
|
||||
*/
|
||||
virtual std::vector<std::pair<Box, Value> > get_leaves() const
|
||||
{
|
||||
typedef std::vector<std::pair<Box, Value> > leaf_type;
|
||||
leaf_type leaf;
|
||||
|
||||
for (typename node_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
leaf_type this_leaves = it->second->get_leaves();
|
||||
|
||||
for (typename leaf_type::iterator it_leaf = this_leaves.begin();
|
||||
it_leaf != this_leaves.end(); ++it_leaf)
|
||||
{
|
||||
leaf.push_back(*it_leaf);
|
||||
}
|
||||
}
|
||||
|
||||
return leaf;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Print Rtree subtree (mainly for debug)
|
||||
*/
|
||||
virtual void print() const
|
||||
{
|
||||
std::cerr << " --> Node --------" << std::endl;
|
||||
std::cerr << " Address: " << this << std::endl;
|
||||
std::cerr << " Level: " << m_level << std::endl;
|
||||
std::cerr << " Size: " << m_nodes.size() << std::endl;
|
||||
std::cerr << " | ";
|
||||
for(typename node_map::const_iterator it = m_nodes.begin(); it != m_nodes.end(); ++it)
|
||||
{
|
||||
if (this != it->second->get_parent().get())
|
||||
{
|
||||
std::cerr << "ERROR - " << this << " is not " << it->second->get_parent().get() << " ";
|
||||
}
|
||||
|
||||
std::cerr << "( " << geometry::get<min_corner, 0>(it->first) << " , "
|
||||
<< geometry::get<min_corner, 1>(it->first) << " ) x ";
|
||||
std::cerr << "( " << geometry::get<max_corner, 0>(it->first) << " , "
|
||||
<< geometry::get<max_corner, 1>(it->first) << " )";
|
||||
std::cerr << " | ";
|
||||
}
|
||||
std::cerr << std::endl;
|
||||
std::cerr << " --< Node --------" << std::endl;
|
||||
|
||||
// print child nodes
|
||||
std::cerr << " Children: " << std::endl;
|
||||
for (typename node_map::const_iterator it = m_nodes.begin();
|
||||
it != m_nodes.end(); ++it)
|
||||
{
|
||||
it->second->print();
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
/// parent node
|
||||
node_pointer m_parent;
|
||||
|
||||
/// level of this node
|
||||
// TODO: mloskot - Why not std::size_t or node_map::size_type, same with member functions?
|
||||
unsigned int m_level;
|
||||
|
||||
/// child nodes
|
||||
node_map m_nodes;
|
||||
};
|
||||
|
||||
}}} // namespace boost::geometry::index
|
||||
|
||||
#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RTREE_NODE_HPP
|
|
@ -393,7 +393,7 @@ private:
|
|||
// clip extreme alfa values
|
||||
void create_palette_rek(std::vector<rgba> & palette, node * itr) const
|
||||
{
|
||||
if (itr->count >= 3)
|
||||
if (itr->count != 0)
|
||||
{
|
||||
unsigned count = itr->count;
|
||||
byte a = byte(itr->alphas/float(count));
|
||||
|
|
|
@ -46,8 +46,6 @@ using position = std::tuple<double,double>;
|
|||
using boxes = std::vector<std::pair<box2d<double>, std::pair<std::size_t, std::size_t>>>;
|
||||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
struct calculate_bounding_box_impl
|
||||
{
|
||||
|
|
|
@ -48,7 +48,6 @@ extract_bounding_box_grammar<Iterator, ErrorHandler>::extract_bounding_box_gramm
|
|||
qi::_2_type _2;
|
||||
qi::_3_type _3;
|
||||
qi::_4_type _4;
|
||||
qi::no_skip_type no_skip;
|
||||
qi::omit_type omit;
|
||||
qi::_r1_type _r1;
|
||||
qi::_r2_type _r2;
|
||||
|
@ -56,7 +55,7 @@ extract_bounding_box_grammar<Iterator, ErrorHandler>::extract_bounding_box_gramm
|
|||
qi::_b_type _b;
|
||||
qi::eps_type eps;
|
||||
qi::raw_type raw;
|
||||
standard_wide::char_type char_;
|
||||
boost::spirit::standard_wide::char_type char_;
|
||||
boost::spirit::repository::qi::iter_pos_type iter_pos;
|
||||
using qi::fail;
|
||||
using qi::on_error;
|
||||
|
@ -109,19 +108,6 @@ extract_bounding_box_grammar<Iterator, ErrorHandler>::extract_bounding_box_gramm
|
|||
| lit("false")
|
||||
| lit("null")
|
||||
;
|
||||
json.unesc_char.add
|
||||
("\\\"", '\"') // quotation mark
|
||||
("\\\\", '\\') // reverse solidus
|
||||
("\\/", '/') // solidus
|
||||
("\\b", '\b') // backspace
|
||||
("\\f", '\f') // formfeed
|
||||
("\\n", '\n') // newline
|
||||
("\\r", '\r') // carrige return
|
||||
("\\t", '\t') // tab
|
||||
;
|
||||
json.string_ %= lit('"') >> no_skip[*(json.unesc_char | "\\u" >> json.hex4 | (char_ - lit('"')))] >> lit('"')
|
||||
;
|
||||
|
||||
coords.name("Coordinates");
|
||||
pos.name("Position");
|
||||
ring.name("Ring");
|
||||
|
|
|
@ -37,23 +37,46 @@ namespace mapnik { namespace json {
|
|||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace phoenix = boost::phoenix;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
template <typename Iterator, typename FeatureType>
|
||||
struct default_feature_callback
|
||||
{
|
||||
default_feature_callback(std::vector<feature_ptr> & features)
|
||||
: features_(features) {}
|
||||
void operator() (feature_ptr const& feature)
|
||||
{
|
||||
features_.push_back(feature);
|
||||
}
|
||||
std::vector<feature_ptr> & features_;
|
||||
};
|
||||
|
||||
struct apply_feature_callback
|
||||
{
|
||||
using result_type = void;
|
||||
template <typename Callback, typename Feature>
|
||||
void operator() (Callback & callback, Feature const& feature) const
|
||||
{
|
||||
callback(feature);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Iterator, typename FeatureType, typename FeatureCallback = default_feature_callback>
|
||||
struct feature_collection_grammar :
|
||||
qi::grammar<Iterator, std::vector<feature_ptr>(context_ptr const&, std::size_t& ), space_type>
|
||||
qi::grammar<Iterator, void(context_ptr const&, std::size_t&, FeatureCallback &), space_type>
|
||||
{
|
||||
feature_collection_grammar(mapnik::transcoder const& tr);
|
||||
// grammars
|
||||
feature_grammar<Iterator,FeatureType> feature_g;
|
||||
geometry_grammar<Iterator> geometry_g;
|
||||
phoenix::function<extract_geometry> extract_geometry_;
|
||||
qi::rule<Iterator, std::vector<feature_ptr>(context_ptr const&, std::size_t&), space_type> start; // START
|
||||
qi::rule<Iterator, std::vector<feature_ptr>(context_ptr const&, std::size_t&), space_type> feature_collection;
|
||||
// rules
|
||||
qi::rule<Iterator, void(context_ptr const&, std::size_t&, FeatureCallback&), space_type> start; // START
|
||||
qi::rule<Iterator, void(context_ptr const&, std::size_t&, FeatureCallback&), space_type> feature_collection;
|
||||
qi::rule<Iterator, space_type> type;
|
||||
qi::rule<Iterator, std::vector<feature_ptr>(context_ptr const&, std::size_t&), space_type> features;
|
||||
qi::rule<Iterator, qi::locals<feature_ptr,int>, void(context_ptr const& ctx, std::size_t, std::vector<feature_ptr>&), space_type> feature;
|
||||
qi::rule<Iterator, qi::locals<feature_ptr,int>, void(context_ptr const& ctx, std::size_t, std::vector<feature_ptr>&), space_type> feature_from_geometry;
|
||||
qi::rule<Iterator, void(context_ptr const&, std::size_t&, FeatureCallback&), space_type> features;
|
||||
qi::rule<Iterator, qi::locals<feature_ptr,int>, void(context_ptr const& ctx, std::size_t, FeatureCallback&), space_type> feature;
|
||||
qi::rule<Iterator, qi::locals<feature_ptr,int>, void(context_ptr const& ctx, std::size_t, FeatureCallback&), space_type> feature_from_geometry;
|
||||
// phoenix functions
|
||||
phoenix::function<json::extract_geometry> extract_geometry;
|
||||
phoenix::function<apply_feature_callback> on_feature;
|
||||
};
|
||||
|
||||
}}
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
|
||||
namespace mapnik { namespace json {
|
||||
|
||||
template <typename Iterator, typename FeatureType>
|
||||
feature_collection_grammar<Iterator,FeatureType>::feature_collection_grammar(mapnik::transcoder const& tr)
|
||||
template <typename Iterator, typename FeatureType, typename FeatureCallback>
|
||||
feature_collection_grammar<Iterator,FeatureType, FeatureCallback>::feature_collection_grammar(mapnik::transcoder const& tr)
|
||||
: feature_collection_grammar::base_type(start,"start"),
|
||||
feature_g(tr)
|
||||
{
|
||||
|
@ -42,7 +42,6 @@ feature_collection_grammar<Iterator,FeatureType>::feature_collection_grammar(map
|
|||
qi::_3_type _2;
|
||||
qi::_2_type _3;
|
||||
qi::_a_type _a;
|
||||
qi::_val_type _val;
|
||||
qi::_r1_type _r1;
|
||||
qi::_r2_type _r2;
|
||||
qi::_r3_type _r3;
|
||||
|
@ -51,10 +50,10 @@ feature_collection_grammar<Iterator,FeatureType>::feature_collection_grammar(map
|
|||
using phoenix::new_;
|
||||
using phoenix::val;
|
||||
|
||||
start = feature_collection(_r1, _r2) | feature_from_geometry(_r1, _r2, _val) | feature(_r1, _r2, _val)
|
||||
start = feature_collection(_r1, _r2, _r3) | feature_from_geometry(_r1, _r2, _r3) | feature(_r1, _r2, _r3)
|
||||
;
|
||||
|
||||
feature_collection = lit('{') >> (type | features(_r1, _r2) | feature_g.json_.key_value) % lit(',') >> lit('}')
|
||||
feature_collection = lit('{') >> (type | features(_r1, _r2, _r3) | feature_g.json_.key_value) % lit(',') >> lit('}')
|
||||
;
|
||||
|
||||
type = lit("\"type\"") >> lit(':') >> lit("\"FeatureCollection\"")
|
||||
|
@ -63,17 +62,17 @@ feature_collection_grammar<Iterator,FeatureType>::feature_collection_grammar(map
|
|||
features = lit("\"features\"")
|
||||
>> lit(':')
|
||||
>> lit('[')
|
||||
>> -(feature(_r1, _r2, _val) [_r2 +=1] % lit(','))
|
||||
>> -(feature(_r1, _r2, _r3) [_r2 +=1] % lit(','))
|
||||
>> lit(']')
|
||||
;
|
||||
|
||||
feature = eps[_a = phoenix::construct<mapnik::feature_ptr>(new_<mapnik::feature_impl>(_r1, _r2))]
|
||||
>> feature_g(*_a)[push_back(_r3,_a)]
|
||||
>> feature_g(*_a)[on_feature(_r3,_a)]
|
||||
;
|
||||
|
||||
feature_from_geometry =
|
||||
eps[_a = phoenix::construct<mapnik::feature_ptr>(new_<mapnik::feature_impl>(_r1, _r2))]
|
||||
>> geometry_g(extract_geometry_(*_a)) [push_back(_r3, _a)]
|
||||
>> geometry_g(extract_geometry(*_a)) [on_feature(_r3, _a)]
|
||||
;
|
||||
|
||||
start.name("start");
|
||||
|
|
|
@ -42,8 +42,6 @@ namespace mapnik { namespace json {
|
|||
namespace qi = boost::spirit::qi;
|
||||
namespace phoenix = boost::phoenix;
|
||||
namespace fusion = boost::fusion;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
class attribute_value_visitor
|
||||
|
||||
|
@ -99,7 +97,6 @@ struct feature_grammar :
|
|||
// start
|
||||
// generic JSON
|
||||
generic_json<Iterator> json_;
|
||||
|
||||
// geoJSON
|
||||
qi::rule<Iterator,void(FeatureType&),space_type> feature; // START
|
||||
qi::rule<Iterator,space_type> feature_type;
|
||||
|
|
|
@ -35,8 +35,6 @@ feature_grammar<Iterator,FeatureType,ErrorHandler>::feature_grammar(mapnik::tran
|
|||
qi::lit_type lit;
|
||||
qi::long_long_type long_long;
|
||||
qi::double_type double_;
|
||||
qi::no_skip_type no_skip;
|
||||
standard_wide::char_type char_;
|
||||
qi::_val_type _val;
|
||||
qi::_1_type _1;
|
||||
qi::_2_type _2;
|
||||
|
@ -77,20 +75,6 @@ feature_grammar<Iterator,FeatureType,ErrorHandler>::feature_grammar(mapnik::tran
|
|||
| lit("null")[_val = construct<value_null>()]
|
||||
;
|
||||
|
||||
json_.unesc_char.add
|
||||
("\\\"", '\"') // quotation mark
|
||||
("\\\\", '\\') // reverse solidus
|
||||
("\\/", '/') // solidus
|
||||
("\\b", '\b') // backspace
|
||||
("\\f", '\f') // formfeed
|
||||
("\\n", '\n') // newline
|
||||
("\\r", '\r') // carrige return
|
||||
("\\t", '\t') // tab
|
||||
;
|
||||
|
||||
json_.string_ %= lit('"') >> no_skip[*(json_.unesc_char | "\\u" >> json_.hex4 | (char_ - lit('"')))] >> lit('"')
|
||||
;
|
||||
|
||||
// geojson types
|
||||
feature_type = lit("\"type\"")
|
||||
>> lit(':')
|
||||
|
|
|
@ -39,7 +39,7 @@ inline bool from_geojson(std::string const& json, mapnik::feature_impl & feature
|
|||
using iterator_type = std::string::const_iterator;
|
||||
static const mapnik::json::feature_grammar<iterator_type,mapnik::feature_impl> g(tr);
|
||||
using namespace boost::spirit;
|
||||
standard_wide::space_type space;
|
||||
ascii::space_type space;
|
||||
return qi::phrase_parse(json.begin(), json.end(), (g)(boost::phoenix::ref(feature)), space);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,19 +37,116 @@
|
|||
namespace mapnik { namespace json {
|
||||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
namespace ascii = boost::spirit::ascii;
|
||||
namespace phoenix = boost::phoenix;
|
||||
using space_type = ascii::space_type;
|
||||
using json_value = mapnik::util::variant<value_null,value_bool, value_integer, value_double, std::string>;
|
||||
using uchar = std::uint32_t; // a unicode code point
|
||||
|
||||
// unicode string grammar via boost/libs/spirit/example/qi/json/json/parser/grammar.hpp
|
||||
|
||||
template <typename Iterator>
|
||||
struct unicode_string : qi::grammar<Iterator, std::string()>
|
||||
{
|
||||
unicode_string();
|
||||
qi::rule<Iterator, void(std::string&)> escape;
|
||||
qi::rule<Iterator, void(std::string&)> char_esc;
|
||||
qi::rule<Iterator, std::string()> double_quoted;
|
||||
};
|
||||
|
||||
|
||||
struct push_utf8
|
||||
{
|
||||
template <typename S, typename C>
|
||||
struct result { typedef void type; };
|
||||
|
||||
void operator()(std::string& utf8, uchar code_point) const
|
||||
{
|
||||
typedef std::back_insert_iterator<std::string> insert_iter;
|
||||
insert_iter out_iter(utf8);
|
||||
boost::utf8_output_iterator<insert_iter> utf8_iter(out_iter);
|
||||
*utf8_iter++ = code_point;
|
||||
}
|
||||
};
|
||||
|
||||
struct push_esc
|
||||
{
|
||||
template <typename S, typename C>
|
||||
struct result { typedef void type; };
|
||||
|
||||
void operator()(std::string& utf8, uchar c) const
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case ' ': utf8 += ' '; break;
|
||||
case '\t': utf8 += '\t'; break;
|
||||
case '0': utf8 += char(0); break;
|
||||
case 'a': utf8 += 0x7; break;
|
||||
case 'b': utf8 += 0x8; break;
|
||||
case 't': utf8 += 0x9; break;
|
||||
case 'n': utf8 += 0xA; break;
|
||||
case 'v': utf8 += 0xB; break;
|
||||
case 'f': utf8 += 0xC; break;
|
||||
case 'r': utf8 += 0xD; break;
|
||||
case 'e': utf8 += 0x1B; break;
|
||||
case '"': utf8 += '"'; break;
|
||||
case '/': utf8 += '/'; break;
|
||||
case '\\': utf8 += '\\'; break;
|
||||
case '_': push_utf8()(utf8, 0xA0); break;
|
||||
case 'N': push_utf8()(utf8, 0x85); break;
|
||||
case 'L': push_utf8()(utf8, 0x2028); break;
|
||||
case 'P': push_utf8()(utf8, 0x2029); break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template< typename Iterator >
|
||||
unicode_string<Iterator>::unicode_string()
|
||||
: unicode_string::base_type(double_quoted)
|
||||
{
|
||||
qi::char_type char_;
|
||||
qi::_val_type _val;
|
||||
qi::_r1_type _r1;
|
||||
qi::_1_type _1;
|
||||
qi::lit_type lit;
|
||||
qi::eol_type eol;
|
||||
qi::repeat_type repeat;
|
||||
qi::hex_type hex;
|
||||
|
||||
using boost::spirit::qi::uint_parser;
|
||||
using boost::phoenix::function;
|
||||
using boost::phoenix::ref;
|
||||
|
||||
uint_parser<uchar, 16, 4, 4> hex4;
|
||||
uint_parser<uchar, 16, 8, 8> hex8;
|
||||
function<push_utf8> push_utf8;
|
||||
function<push_esc> push_esc;
|
||||
|
||||
escape =
|
||||
('x' > hex) [push_utf8(_r1, _1)]
|
||||
| ('u' > hex4) [push_utf8(_r1, _1)]
|
||||
| ('U' > hex8) [push_utf8(_r1, _1)]
|
||||
| char_("0abtnvfre\"/\\N_LP \t") [push_esc(_r1, _1)]
|
||||
| eol // continue to next line
|
||||
;
|
||||
|
||||
char_esc =
|
||||
'\\' > escape(_r1)
|
||||
;
|
||||
|
||||
double_quoted =
|
||||
'"'
|
||||
> *(char_esc(_val) | (~char_('"')) [_val += _1])
|
||||
> '"'
|
||||
;
|
||||
}
|
||||
|
||||
template <typename Iterator>
|
||||
struct generic_json
|
||||
{
|
||||
qi::rule<Iterator,space_type> value;
|
||||
qi::symbols<char const, char const> unesc_char;
|
||||
qi::uint_parser< unsigned, 16, 4, 4 > hex4 ;
|
||||
qi::int_parser<mapnik::value_integer,10,1,-1> int__;
|
||||
qi::rule<Iterator,std::string(), space_type> string_;
|
||||
unicode_string<Iterator> string_;
|
||||
qi::rule<Iterator,space_type> key_value;
|
||||
qi::rule<Iterator,json_value(),space_type> number;
|
||||
qi::rule<Iterator,space_type> object;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <mapnik/geometry.hpp> // for geometry_type
|
||||
#include <mapnik/vertex.hpp> // for CommandType
|
||||
#include <mapnik/make_unique.hpp>
|
||||
#include <mapnik/json/generic_json.hpp>
|
||||
#include <mapnik/json/positions_grammar.hpp>
|
||||
#include <mapnik/json/geometry_util.hpp>
|
||||
#include <mapnik/geometry_container.hpp>
|
||||
|
@ -38,8 +39,6 @@
|
|||
namespace mapnik { namespace json {
|
||||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
template <typename Iterator, typename ErrorHandler = error_handler<Iterator> >
|
||||
struct geometry_grammar :
|
||||
|
|
|
@ -38,7 +38,7 @@ inline bool from_geojson(std::string const& json, geometry_container & paths)
|
|||
{
|
||||
using namespace boost::spirit;
|
||||
static const geometry_grammar<std::string::const_iterator> g;
|
||||
standard_wide::space_type space;
|
||||
ascii::space_type space;
|
||||
std::string::const_iterator start = json.begin();
|
||||
std::string::const_iterator end = json.end();
|
||||
return qi::phrase_parse(start, end, (g)(boost::phoenix::ref(paths)), space);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
// mapnik
|
||||
#include <mapnik/util/variant.hpp>
|
||||
#include <mapnik/json/generic_json.hpp>
|
||||
#include <mapnik/json/error_handler.hpp>
|
||||
|
||||
// boost
|
||||
|
@ -46,8 +47,6 @@ using positions = std::vector<position>;
|
|||
using coordinates = util::variant<empty, position, positions, std::vector<positions>, std::vector<std::vector<positions> > > ;
|
||||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
struct set_position_impl
|
||||
{
|
||||
|
|
|
@ -44,8 +44,7 @@ namespace mapnik { namespace topojson {
|
|||
|
||||
namespace qi = boost::spirit::qi;
|
||||
namespace fusion = boost::fusion;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
using space_type = boost::spirit::ascii::space_type;
|
||||
|
||||
template <typename Iterator, typename ErrorHandler = json::error_handler<Iterator> >
|
||||
struct topojson_grammar : qi::grammar<Iterator, space_type, topology()>
|
||||
|
|
|
@ -27,8 +27,6 @@ namespace mapnik { namespace topojson {
|
|||
namespace qi = boost::spirit::qi;
|
||||
namespace phoenix = boost::phoenix;
|
||||
namespace fusion = boost::fusion;
|
||||
namespace standard_wide = boost::spirit::standard_wide;
|
||||
using standard_wide::space_type;
|
||||
|
||||
template <typename Iterator, typename ErrorHandler>
|
||||
topojson_grammar<Iterator, ErrorHandler>::topojson_grammar()
|
||||
|
@ -37,7 +35,6 @@ topojson_grammar<Iterator, ErrorHandler>::topojson_grammar()
|
|||
qi::lit_type lit;
|
||||
qi::double_type double_;
|
||||
qi::int_type int_;
|
||||
qi::no_skip_type no_skip;
|
||||
qi::omit_type omit;
|
||||
qi::_val_type _val;
|
||||
qi::_1_type _1;
|
||||
|
@ -45,7 +42,6 @@ topojson_grammar<Iterator, ErrorHandler>::topojson_grammar()
|
|||
qi::_3_type _3;
|
||||
qi::_4_type _4;
|
||||
qi::_r1_type _r1;
|
||||
standard_wide::char_type char_;
|
||||
using qi::fail;
|
||||
using qi::on_error;
|
||||
using phoenix::push_back;
|
||||
|
@ -75,20 +71,6 @@ topojson_grammar<Iterator, ErrorHandler>::topojson_grammar()
|
|||
| lit("null")[_val = construct<value_null>()]
|
||||
;
|
||||
|
||||
json_.unesc_char.add
|
||||
("\\\"", '\"') // quotation mark
|
||||
("\\\\", '\\') // reverse solidus
|
||||
("\\/", '/') // solidus
|
||||
("\\b", '\b') // backspace
|
||||
("\\f", '\f') // formfeed
|
||||
("\\n", '\n') // newline
|
||||
("\\r", '\r') // carrige return
|
||||
("\\t", '\t') // tab
|
||||
;
|
||||
|
||||
json_.string_ %= lit('"') >> no_skip[*(json_.unesc_char | "\\u" >> json_.hex4 | (char_ - lit('"')))] >> lit('"')
|
||||
;
|
||||
|
||||
// topo json
|
||||
topology = lit('{') >> lit("\"type\"") >> lit(':') >> lit("\"Topology\"")
|
||||
>> ( (lit(',') >> objects) ^ ( lit(',') >> arcs) ^ (lit(',') >> transform) ^ (lit(',') >> bbox))
|
||||
|
|
|
@ -48,19 +48,11 @@ struct value_holder : value_holder_base
|
|||
value_holder()
|
||||
: value_holder_base() {}
|
||||
|
||||
// copy
|
||||
value_holder(const char* val)
|
||||
: value_holder_base(val) {}
|
||||
|
||||
template <typename T>
|
||||
value_holder(T const& obj)
|
||||
: value_holder_base(typename detail::mapnik_value_type<T>::type(obj))
|
||||
{}
|
||||
|
||||
// move
|
||||
// perfect forwarding
|
||||
template <typename T>
|
||||
value_holder(T && obj) noexcept
|
||||
: value_holder_base(std::move(obj)) {}
|
||||
: value_holder_base(std::forward<T>(obj))
|
||||
{}
|
||||
};
|
||||
|
||||
using parameter = std::pair<std::string, value_holder>;
|
||||
|
|
|
@ -541,7 +541,7 @@ void save_as_png8_oct(T1 & file,
|
|||
trees[j].create_palette(pal);
|
||||
leftovers = cols[j] - static_cast<unsigned>(pal.size());
|
||||
cols[j] = static_cast<unsigned>(pal.size());
|
||||
palette.insert(palette.begin(), pal.begin(), pal.end());
|
||||
palette.insert(palette.end(), pal.begin(), pal.end());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -523,24 +523,6 @@ private:
|
|||
Variant const& lhs_;
|
||||
};
|
||||
|
||||
// operator<< helper
|
||||
template <typename Out>
|
||||
class printer
|
||||
{
|
||||
public:
|
||||
explicit printer(Out & out)
|
||||
: out_(out) {}
|
||||
printer& operator=(printer const&) = delete;
|
||||
|
||||
// visitor
|
||||
template <typename T>
|
||||
void operator()(T const& operand) const
|
||||
{
|
||||
out_ << operand;
|
||||
}
|
||||
private:
|
||||
Out & out_;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
|
@ -798,15 +780,6 @@ ResultType const& get(T const& var)
|
|||
}
|
||||
|
||||
|
||||
// operator<<
|
||||
template <typename charT, typename traits, typename... Types>
|
||||
VARIANT_INLINE std::basic_ostream<charT, traits>&
|
||||
operator<< (std::basic_ostream<charT, traits>& out, variant<Types...> const& rhs)
|
||||
{
|
||||
detail::printer<std::basic_ostream<charT, traits>> visitor(out);
|
||||
apply_visitor(visitor, rhs);
|
||||
return out;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
|
|
64
include/mapnik/util/variant_io.hpp
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*****************************************************************************
|
||||
*
|
||||
* This file is part of Mapnik (c++ mapping toolkit)
|
||||
*
|
||||
* Copyright (C) 2014 Artem Pavlenko
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef MAPNIK_UTIL_VARIANT_IO_HPP
|
||||
#define MAPNIK_UTIL_VARIANT_IO_HPP
|
||||
|
||||
|
||||
namespace mapnik { namespace util {
|
||||
|
||||
namespace detail {
|
||||
|
||||
// operator<< helper
|
||||
template <typename Out>
|
||||
class printer
|
||||
{
|
||||
public:
|
||||
explicit printer(Out & out)
|
||||
: out_(out) {}
|
||||
printer& operator=(printer const&) = delete;
|
||||
|
||||
// visitor
|
||||
template <typename T>
|
||||
void operator()(T const& operand) const
|
||||
{
|
||||
out_ << operand;
|
||||
}
|
||||
private:
|
||||
Out & out_;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
// operator<<
|
||||
template <typename charT, typename traits, typename... Types>
|
||||
VARIANT_INLINE std::basic_ostream<charT, traits>&
|
||||
operator<< (std::basic_ostream<charT, traits>& out, variant<Types...> const& rhs)
|
||||
{
|
||||
detail::printer<std::basic_ostream<charT, traits>> visitor(out);
|
||||
apply_visitor(visitor, rhs);
|
||||
return out;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
#endif // MAPNIK_UTIL_VARIANT_IO_HPP
|
|
@ -21,46 +21,57 @@
|
|||
|
||||
Import ('env')
|
||||
|
||||
Import ('plugin_base')
|
||||
can_build = False
|
||||
|
||||
PLUGIN_NAME = 'geojson'
|
||||
if env.get('BOOST_LIB_VERSION_FROM_HEADER'):
|
||||
boost_version_from_header = int(env['BOOST_LIB_VERSION_FROM_HEADER'].split('_')[1])
|
||||
if boost_version_from_header >= 56:
|
||||
can_build = True
|
||||
|
||||
plugin_env = plugin_base.Clone()
|
||||
if not can_build:
|
||||
print 'WARNING: skipping building the optional geojson datasource plugin which requires boost >= 1.56'
|
||||
else:
|
||||
|
||||
plugin_sources = Split(
|
||||
"""
|
||||
%(PLUGIN_NAME)s_datasource.cpp
|
||||
%(PLUGIN_NAME)s_featureset.cpp
|
||||
large_%(PLUGIN_NAME)s_featureset.cpp
|
||||
""" % locals()
|
||||
)
|
||||
Import ('plugin_base')
|
||||
|
||||
# Link Library to Dependencies
|
||||
libraries = []
|
||||
libraries.append(env['ICU_LIB_NAME'])
|
||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||
libraries.append('mapnik-json')
|
||||
PLUGIN_NAME = 'geojson'
|
||||
|
||||
if env['PLUGIN_LINKING'] == 'shared':
|
||||
libraries.append(env['MAPNIK_NAME'])
|
||||
plugin_env = plugin_base.Clone()
|
||||
|
||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||
SHLIBPREFIX='',
|
||||
SHLIBSUFFIX='.input',
|
||||
source=plugin_sources,
|
||||
LIBS=libraries)
|
||||
plugin_sources = Split(
|
||||
"""
|
||||
%(PLUGIN_NAME)s_datasource.cpp
|
||||
%(PLUGIN_NAME)s_featureset.cpp
|
||||
large_%(PLUGIN_NAME)s_featureset.cpp
|
||||
""" % locals()
|
||||
)
|
||||
|
||||
# if the plugin links to libmapnik ensure it is built first
|
||||
Depends(TARGET, env.subst('../../../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||
Depends(TARGET, env.subst('../../../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||
# Link Library to Dependencies
|
||||
libraries = []
|
||||
libraries.append(env['ICU_LIB_NAME'])
|
||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||
libraries.append('mapnik-json')
|
||||
|
||||
if 'uninstall' not in COMMAND_LINE_TARGETS:
|
||||
env.Install(env['MAPNIK_INPUT_PLUGINS_DEST'], TARGET)
|
||||
env.Alias('install', env['MAPNIK_INPUT_PLUGINS_DEST'])
|
||||
if env['PLUGIN_LINKING'] == 'shared':
|
||||
libraries.append(env['MAPNIK_NAME'])
|
||||
|
||||
plugin_obj = {
|
||||
'LIBS': libraries,
|
||||
'SOURCES': plugin_sources,
|
||||
}
|
||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||
SHLIBPREFIX='',
|
||||
SHLIBSUFFIX='.input',
|
||||
source=plugin_sources,
|
||||
LIBS=libraries)
|
||||
|
||||
Return('plugin_obj')
|
||||
# if the plugin links to libmapnik ensure it is built first
|
||||
Depends(TARGET, env.subst('../../../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||
Depends(TARGET, env.subst('../../../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||
|
||||
if 'uninstall' not in COMMAND_LINE_TARGETS:
|
||||
env.Install(env['MAPNIK_INPUT_PLUGINS_DEST'], TARGET)
|
||||
env.Alias('install', env['MAPNIK_INPUT_PLUGINS_DEST'])
|
||||
|
||||
plugin_obj = {
|
||||
'LIBS': libraries,
|
||||
'SOURCES': plugin_sources,
|
||||
}
|
||||
|
||||
Return('plugin_obj')
|
||||
|
|
|
@ -159,23 +159,16 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
|||
{
|
||||
mapnik::json::boxes boxes;
|
||||
mapnik::json::extract_bounding_box_grammar<Iterator> bbox_grammar;
|
||||
boost::spirit::standard_wide::space_type space;
|
||||
boost::spirit::ascii::space_type space;
|
||||
if (!boost::spirit::qi::phrase_parse(start, end, (bbox_grammar)(boost::phoenix::ref(boxes)) , space))
|
||||
{
|
||||
throw mapnik::datasource_exception("GeoJSON Plugin: could not parse: '" + filename_ + "'");
|
||||
}
|
||||
#if BOOST_VERSION >= 105600
|
||||
tree_ = std::make_unique<spatial_index_type>(boxes);
|
||||
#else
|
||||
tree_ = std::make_unique<spatial_index_type>(16, 4);
|
||||
#endif
|
||||
for (auto const& item : boxes)
|
||||
{
|
||||
auto const& box = std::get<0>(item);
|
||||
auto const& geometry_index = std::get<1>(item);
|
||||
#if BOOST_VERSION < 105600
|
||||
tree_->insert(box, geometry_index);
|
||||
#endif
|
||||
if (!extent_.valid())
|
||||
{
|
||||
extent_ = box;
|
||||
|
@ -201,7 +194,7 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
|||
using namespace boost::spirit;
|
||||
static const mapnik::transcoder tr("utf8");
|
||||
static const mapnik::json::feature_grammar<chr_iterator_type,mapnik::feature_impl> grammar(tr);
|
||||
standard_wide::space_type space;
|
||||
ascii::space_type space;
|
||||
if (!qi::phrase_parse(start, end, (grammar)(boost::phoenix::ref(*feature)), space))
|
||||
{
|
||||
throw std::runtime_error("Failed to parse geojson feature");
|
||||
|
@ -223,25 +216,24 @@ void geojson_datasource::initialise_index(Iterator start, Iterator end)
|
|||
template <typename T>
|
||||
void geojson_datasource::parse_geojson(T const& buffer)
|
||||
{
|
||||
boost::spirit::standard_wide::space_type space;
|
||||
boost::spirit::ascii::space_type space;
|
||||
mapnik::context_ptr ctx = std::make_shared<mapnik::context_type>();
|
||||
std::size_t start_id = 1;
|
||||
|
||||
mapnik::json::default_feature_callback callback(features_);
|
||||
|
||||
bool result = boost::spirit::qi::phrase_parse(buffer.begin(), buffer.end(), (fc_grammar)
|
||||
(boost::phoenix::ref(ctx),boost::phoenix::ref(start_id)),
|
||||
space, features_);
|
||||
(boost::phoenix::ref(ctx),boost::phoenix::ref(start_id), boost::phoenix::ref(callback)),
|
||||
space);
|
||||
if (!result)
|
||||
{
|
||||
if (!inline_string_.empty()) throw mapnik::datasource_exception("geojson_datasource: Failed parse GeoJSON file from in-memory string");
|
||||
else throw mapnik::datasource_exception("geojson_datasource: Failed parse GeoJSON file '" + filename_ + "'");
|
||||
}
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
using values_container = std::vector< std::pair<box_type, std::pair<std::size_t, std::size_t>>>;
|
||||
values_container values;
|
||||
values.reserve(features_.size());
|
||||
#else
|
||||
tree_ = std::make_unique<spatial_index_type>(16, 4);
|
||||
#endif
|
||||
|
||||
std::size_t geometry_index = 0;
|
||||
for (mapnik::feature_ptr const& f : features_)
|
||||
|
@ -264,18 +256,12 @@ void geojson_datasource::parse_geojson(T const& buffer)
|
|||
extent_.expand_to_include(box);
|
||||
}
|
||||
}
|
||||
#if BOOST_VERSION >= 105600
|
||||
values.emplace_back(box, std::make_pair(geometry_index,0));
|
||||
#else
|
||||
tree_->insert(box, std::make_pair(geometry_index));
|
||||
#endif
|
||||
++geometry_index;
|
||||
}
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
// packing algorithm
|
||||
tree_ = std::make_unique<spatial_index_type>(values);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
@ -329,7 +315,6 @@ mapnik::featureset_ptr geojson_datasource::features(mapnik::query const& q) cons
|
|||
mapnik::box2d<double> const& box = q.get_bbox();
|
||||
if (extent_.intersects(box))
|
||||
{
|
||||
#if BOOST_VERSION >= 105600
|
||||
geojson_featureset::array_type index_array;
|
||||
if (tree_)
|
||||
{
|
||||
|
@ -349,15 +334,6 @@ mapnik::featureset_ptr geojson_datasource::features(mapnik::query const& q) cons
|
|||
return std::make_shared<large_geojson_featureset>(filename_, std::move(index_array));
|
||||
}
|
||||
}
|
||||
#else
|
||||
if (tree_)
|
||||
{
|
||||
if (cache_features_)
|
||||
return std::make_shared<geojson_featureset>(features_, tree_->find(box));
|
||||
else
|
||||
return std::make_shared<large_geojson_featureset>(features_, tree_->find(box));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
// otherwise return an empty featureset pointer
|
||||
return mapnik::featureset_ptr();
|
||||
|
|
|
@ -44,11 +44,7 @@
|
|||
#include <boost/geometry/geometries/geometries.hpp>
|
||||
#include <boost/geometry.hpp>
|
||||
#include <boost/version.hpp>
|
||||
#if BOOST_VERSION >= 105600
|
||||
#include <boost/geometry/index/rtree.hpp>
|
||||
#else
|
||||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
||||
#endif
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
// stl
|
||||
|
@ -59,7 +55,6 @@
|
|||
#include <deque>
|
||||
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
template <std::size_t Max, std::size_t Min>
|
||||
struct geojson_linear : boost::geometry::index::linear<Max,Min> {};
|
||||
|
||||
|
@ -83,19 +78,12 @@ struct options_type<geojson_linear<Max,Min> >
|
|||
|
||||
}}}}}
|
||||
|
||||
#endif //BOOST_VERSION >= 105600
|
||||
|
||||
class geojson_datasource : public mapnik::datasource
|
||||
{
|
||||
public:
|
||||
using box_type = mapnik::box2d<double>;
|
||||
#if BOOST_VERSION >= 105600
|
||||
using item_type = std::pair<box_type, std::pair<std::size_t, std::size_t> >;
|
||||
using spatial_index_type = boost::geometry::index::rtree<item_type,geojson_linear<16,4> >;
|
||||
#else
|
||||
using item_type = std::pair<std::size_t, std::size_t>;
|
||||
using spatial_index_type = boost::geometry::index::rtree<box_type,item_type>;
|
||||
#endif
|
||||
|
||||
// constructor
|
||||
geojson_datasource(mapnik::parameters const& params);
|
||||
|
|
|
@ -42,12 +42,8 @@ mapnik::feature_ptr geojson_featureset::next()
|
|||
{
|
||||
if (index_itr_ != index_end_)
|
||||
{
|
||||
#if BOOST_VERSION >= 105600
|
||||
geojson_datasource::item_type const& item = *index_itr_++;
|
||||
std::size_t index = item.second.first;
|
||||
#else
|
||||
std::size_t index = (*index_itr_++).second;
|
||||
#endif
|
||||
if ( index < features_.size())
|
||||
{
|
||||
return features_.at(index);
|
||||
|
|
|
@ -55,15 +55,9 @@ mapnik::feature_ptr large_geojson_featureset::next()
|
|||
{
|
||||
if (index_itr_ != index_end_)
|
||||
{
|
||||
#if BOOST_VERSION >= 105600
|
||||
geojson_datasource::item_type const& item = *index_itr_++;
|
||||
std::size_t file_offset = item.second.first;
|
||||
std::size_t size = item.second.second;
|
||||
#else
|
||||
std::pair<std::size_t,std::size_t> index = *index_itr_++;
|
||||
std::size_t file_offset = index.first;
|
||||
std::size_t size = index.second;
|
||||
#endif
|
||||
std::fseek(file_.get(), file_offset, SEEK_SET);
|
||||
std::vector<char> json;
|
||||
json.resize(size);
|
||||
|
@ -75,7 +69,7 @@ mapnik::feature_ptr large_geojson_featureset::next()
|
|||
static const mapnik::transcoder tr("utf8");
|
||||
static const mapnik::json::feature_grammar<chr_iterator_type,mapnik::feature_impl> grammar(tr);
|
||||
using namespace boost::spirit;
|
||||
standard_wide::space_type space;
|
||||
ascii::space_type space;
|
||||
mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx_,1));
|
||||
if (!qi::phrase_parse(start, end, (grammar)(boost::phoenix::ref(*feature)), space))
|
||||
{
|
||||
|
|
|
@ -31,12 +31,12 @@ plugin_sources = Split(
|
|||
%(PLUGIN_NAME)s_types.cpp
|
||||
%(PLUGIN_NAME)s_datasource.cpp
|
||||
%(PLUGIN_NAME)s_featureset.cpp
|
||||
spatial_classesm.cpp
|
||||
spatial_classeso.cpp
|
||||
spatial_classesm.cpp
|
||||
spatial_classeso.cpp
|
||||
""" % locals()
|
||||
)
|
||||
|
||||
libraries = [ 'occi', 'ociei' ]
|
||||
libraries = [ 'clntsh' ]
|
||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||
libraries.append(env['ICU_LIB_NAME'])
|
||||
|
||||
|
|
|
@ -448,10 +448,10 @@ postgis_datasource::postgis_datasource(parameters const& params)
|
|||
// Finally, add unique metadata to layer descriptor
|
||||
mapnik::parameters & extra_params = desc_.get_extra_parameters();
|
||||
// explicitly make copies of values due to https://github.com/mapnik/mapnik/issues/2651
|
||||
extra_params["srid"] = int(srid_);
|
||||
extra_params["srid"] = srid_;
|
||||
if (!key_field_.empty())
|
||||
{
|
||||
extra_params["key_field"] = std::string(key_field_);
|
||||
extra_params["key_field"] = key_field_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,45 +21,55 @@
|
|||
|
||||
Import ('env')
|
||||
|
||||
Import ('plugin_base')
|
||||
can_build = False
|
||||
|
||||
PLUGIN_NAME = 'topojson'
|
||||
if env.get('BOOST_LIB_VERSION_FROM_HEADER'):
|
||||
boost_version_from_header = int(env['BOOST_LIB_VERSION_FROM_HEADER'].split('_')[1])
|
||||
if boost_version_from_header >= 56:
|
||||
can_build = True
|
||||
|
||||
plugin_env = plugin_base.Clone()
|
||||
if not can_build:
|
||||
print 'WARNING: skipping building the optional topojson datasource plugin which requires boost >= 1.56'
|
||||
else:
|
||||
Import ('plugin_base')
|
||||
|
||||
plugin_sources = Split(
|
||||
"""
|
||||
%(PLUGIN_NAME)s_datasource.cpp
|
||||
%(PLUGIN_NAME)s_featureset.cpp
|
||||
""" % locals()
|
||||
)
|
||||
PLUGIN_NAME = 'topojson'
|
||||
|
||||
# Link Library to Dependencies
|
||||
libraries = []
|
||||
libraries.append(env['ICU_LIB_NAME'])
|
||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||
libraries.append('mapnik-json')
|
||||
plugin_env = plugin_base.Clone()
|
||||
|
||||
if env['PLUGIN_LINKING'] == 'shared':
|
||||
libraries.append(env['MAPNIK_NAME'])
|
||||
plugin_sources = Split(
|
||||
"""
|
||||
%(PLUGIN_NAME)s_datasource.cpp
|
||||
%(PLUGIN_NAME)s_featureset.cpp
|
||||
""" % locals()
|
||||
)
|
||||
|
||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||
SHLIBPREFIX='',
|
||||
SHLIBSUFFIX='.input',
|
||||
source=plugin_sources,
|
||||
LIBS=libraries)
|
||||
# Link Library to Dependencies
|
||||
libraries = []
|
||||
libraries.append(env['ICU_LIB_NAME'])
|
||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||
libraries.append('mapnik-json')
|
||||
|
||||
# if the plugin links to libmapnik ensure it is built first
|
||||
Depends(TARGET, env.subst('../../../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||
Depends(TARGET, env.subst('../../../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||
if env['PLUGIN_LINKING'] == 'shared':
|
||||
libraries.append(env['MAPNIK_NAME'])
|
||||
|
||||
if 'uninstall' not in COMMAND_LINE_TARGETS:
|
||||
env.Install(env['MAPNIK_INPUT_PLUGINS_DEST'], TARGET)
|
||||
env.Alias('install', env['MAPNIK_INPUT_PLUGINS_DEST'])
|
||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||
SHLIBPREFIX='',
|
||||
SHLIBSUFFIX='.input',
|
||||
source=plugin_sources,
|
||||
LIBS=libraries)
|
||||
|
||||
plugin_obj = {
|
||||
'LIBS': libraries,
|
||||
'SOURCES': plugin_sources,
|
||||
}
|
||||
# if the plugin links to libmapnik ensure it is built first
|
||||
Depends(TARGET, env.subst('../../../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||
Depends(TARGET, env.subst('../../../src/json/libmapnik-json${LIBSUFFIX}'))
|
||||
|
||||
Return('plugin_obj')
|
||||
if 'uninstall' not in COMMAND_LINE_TARGETS:
|
||||
env.Install(env['MAPNIK_INPUT_PLUGINS_DEST'], TARGET)
|
||||
env.Alias('install', env['MAPNIK_INPUT_PLUGINS_DEST'])
|
||||
|
||||
plugin_obj = {
|
||||
'LIBS': libraries,
|
||||
'SOURCES': plugin_sources,
|
||||
}
|
||||
|
||||
Return('plugin_obj')
|
||||
|
|
|
@ -190,20 +190,16 @@ const mapnik::topojson::topojson_grammar<base_iterator_type> g;
|
|||
template <typename T>
|
||||
void topojson_datasource::parse_topojson(T const& buffer)
|
||||
{
|
||||
boost::spirit::standard_wide::space_type space;
|
||||
boost::spirit::ascii::space_type space;
|
||||
bool result = boost::spirit::qi::phrase_parse(buffer.begin(), buffer.end(), g, space, topo_);
|
||||
if (!result)
|
||||
{
|
||||
throw mapnik::datasource_exception("topojson_datasource: Failed parse TopoJSON file '" + filename_ + "'");
|
||||
}
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
using values_container = std::vector< std::pair<box_type, std::size_t> >;
|
||||
values_container values;
|
||||
values.reserve(topo_.geometries.size());
|
||||
#else
|
||||
tree_ = std::make_unique<spatial_index_type>(16, 4);
|
||||
#endif
|
||||
|
||||
std::size_t geometry_index = 0;
|
||||
|
||||
|
@ -223,18 +219,12 @@ void topojson_datasource::parse_topojson(T const& buffer)
|
|||
extent_.expand_to_include(box);
|
||||
}
|
||||
}
|
||||
#if BOOST_VERSION >= 105600
|
||||
values.emplace_back(box_type(point_type(box.minx(),box.miny()),point_type(box.maxx(),box.maxy())), geometry_index);
|
||||
#else
|
||||
tree_->insert(box_type(point_type(box.minx(),box.miny()),point_type(box.maxx(),box.maxy())),geometry_index);
|
||||
#endif
|
||||
++geometry_index;
|
||||
}
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
// packing algorithm
|
||||
tree_ = std::make_unique<spatial_index_type>(values);
|
||||
#endif
|
||||
}
|
||||
|
||||
topojson_datasource::~topojson_datasource() { }
|
||||
|
@ -292,19 +282,12 @@ mapnik::featureset_ptr topojson_datasource::features(mapnik::query const& q) con
|
|||
if (extent_.intersects(b))
|
||||
{
|
||||
box_type box(point_type(b.minx(),b.miny()),point_type(b.maxx(),b.maxy()));
|
||||
#if BOOST_VERSION >= 105600
|
||||
topojson_featureset::array_type index_array;
|
||||
if (tree_)
|
||||
{
|
||||
tree_->query(boost::geometry::index::intersects(box),std::back_inserter(index_array));
|
||||
return std::make_shared<topojson_featureset>(topo_, *tr_, std::move(index_array));
|
||||
}
|
||||
#else
|
||||
if (tree_)
|
||||
{
|
||||
return std::make_shared<topojson_featureset>(topo_, *tr_, tree_->find(box));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
// otherwise return an empty featureset pointer
|
||||
return mapnik::featureset_ptr();
|
||||
|
|
|
@ -44,11 +44,7 @@
|
|||
#include <boost/geometry/geometries/geometries.hpp>
|
||||
#include <boost/geometry.hpp>
|
||||
#include <boost/version.hpp>
|
||||
#if BOOST_VERSION >= 105600
|
||||
#include <boost/geometry/index/rtree.hpp>
|
||||
#else
|
||||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
||||
#endif
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
// stl
|
||||
|
@ -64,14 +60,9 @@ public:
|
|||
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||
using box_type = boost::geometry::model::box<point_type>;
|
||||
|
||||
#if BOOST_VERSION >= 105600
|
||||
using item_type = std::pair<box_type,std::size_t>;
|
||||
using linear_type = boost::geometry::index::linear<16,4>;
|
||||
using spatial_index_type = boost::geometry::index::rtree<item_type,linear_type>;
|
||||
#else
|
||||
using item_type = std::size_t;
|
||||
using spatial_index_type = boost::geometry::index::rtree<box_type,std::size_t>;
|
||||
#endif
|
||||
|
||||
// constructor
|
||||
topojson_datasource(mapnik::parameters const& params);
|
||||
|
|
|
@ -372,12 +372,8 @@ mapnik::feature_ptr topojson_featureset::next()
|
|||
{
|
||||
if (index_itr_ != index_end_)
|
||||
{
|
||||
#if BOOST_VERSION >= 105600
|
||||
topojson_datasource::item_type const& item = *index_itr_++;
|
||||
std::size_t index = item.second;
|
||||
#else
|
||||
std::size_t index = *index_itr_++;
|
||||
#endif
|
||||
if ( index < topo_.geometries.size())
|
||||
{
|
||||
mapnik::topojson::geometry const& geom = topo_.geometries[index];
|
||||
|
|
44
src/build.py
|
@ -279,25 +279,32 @@ if env['PLUGIN_LINKING'] == 'static':
|
|||
lib_env.Append(CPPDEFINES = '-DMAPNIK_STATIC_PLUGINS')
|
||||
libmapnik_defines.append('-DMAPNIK_STATIC_PLUGINS')
|
||||
|
||||
# add these to the compile flags no matter what
|
||||
# to make it safe to try to compile them from Makefile wrapper
|
||||
source += Split("""
|
||||
cairo/process_markers_symbolizer.cpp
|
||||
cairo/process_group_symbolizer.cpp
|
||||
""")
|
||||
|
||||
if env['HAS_CAIRO']:
|
||||
lib_env.AppendUnique(LIBPATH=env['CAIRO_LIBPATHS'])
|
||||
lib_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||
libmapnik_defines.append('-DHAVE_CAIRO')
|
||||
lib_env.AppendUnique(CPPPATH=copy(env['CAIRO_CPPPATHS']))
|
||||
source.append('cairo/cairo_context.cpp')
|
||||
source.append('cairo/cairo_renderer.cpp')
|
||||
source.append('cairo/cairo_render_vector.cpp')
|
||||
source.append('cairo/process_markers_symbolizer.cpp')
|
||||
source.append('cairo/process_text_symbolizer.cpp')
|
||||
source.append('cairo/process_group_symbolizer.cpp')
|
||||
source.append('cairo/process_line_symbolizer.cpp')
|
||||
source.append('cairo/process_line_pattern_symbolizer.cpp')
|
||||
source.append('cairo/process_polygon_symbolizer.cpp')
|
||||
source.append('cairo/process_polygon_pattern_symbolizer.cpp')
|
||||
source.append('cairo/process_debug_symbolizer.cpp')
|
||||
source.append('cairo/process_point_symbolizer.cpp')
|
||||
source.append('cairo/process_raster_symbolizer.cpp')
|
||||
source.append('cairo/process_building_symbolizer.cpp')
|
||||
source += Split("""
|
||||
cairo/cairo_context.cpp
|
||||
cairo/cairo_renderer.cpp
|
||||
cairo/cairo_render_vector.cpp
|
||||
cairo/process_text_symbolizer.cpp
|
||||
cairo/process_line_symbolizer.cpp
|
||||
cairo/process_line_pattern_symbolizer.cpp
|
||||
cairo/process_polygon_symbolizer.cpp
|
||||
cairo/process_polygon_pattern_symbolizer.cpp
|
||||
cairo/process_debug_symbolizer.cpp
|
||||
cairo/process_point_symbolizer.cpp
|
||||
cairo/process_raster_symbolizer.cpp
|
||||
cairo/process_building_symbolizer.cpp
|
||||
""")
|
||||
|
||||
for cpp in enabled_imaging_libraries:
|
||||
source.append(cpp)
|
||||
|
@ -331,6 +338,13 @@ source += Split(
|
|||
if env['RUNTIME_LINK'] == "static":
|
||||
source += glob.glob('../deps/agg/src/' + '*.cpp')
|
||||
|
||||
# add these to the compile flags no matter what
|
||||
# to make it safe to try to compile them from Makefile wrapper
|
||||
source += Split("""
|
||||
grid/process_markers_symbolizer.cpp
|
||||
grid/process_group_symbolizer.cpp
|
||||
""")
|
||||
|
||||
# grid backend
|
||||
if env['GRID_RENDERER']:
|
||||
source += Split(
|
||||
|
@ -340,14 +354,12 @@ if env['GRID_RENDERER']:
|
|||
grid/process_building_symbolizer.cpp
|
||||
grid/process_line_pattern_symbolizer.cpp
|
||||
grid/process_line_symbolizer.cpp
|
||||
grid/process_markers_symbolizer.cpp
|
||||
grid/process_point_symbolizer.cpp
|
||||
grid/process_polygon_pattern_symbolizer.cpp
|
||||
grid/process_polygon_symbolizer.cpp
|
||||
grid/process_raster_symbolizer.cpp
|
||||
grid/process_shield_symbolizer.cpp
|
||||
grid/process_text_symbolizer.cpp
|
||||
grid/process_group_symbolizer.cpp
|
||||
""")
|
||||
lib_env.Append(CPPDEFINES = '-DGRID_RENDERER')
|
||||
libmapnik_defines.append('-DGRID_RENDERER')
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
|
||||
// mapnik
|
||||
#include <mapnik/feature.hpp>
|
||||
#include <mapnik/grid/grid_rasterizer.hpp>
|
||||
|
@ -194,3 +196,5 @@ template void grid_renderer<grid>::process(group_symbolizer const&,
|
|||
proj_transform const&);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -25,4 +25,4 @@
|
|||
#include <string>
|
||||
|
||||
using iterator_type = std::string::const_iterator;
|
||||
template struct mapnik::json::feature_collection_grammar<iterator_type,mapnik::feature_impl> ;
|
||||
template struct mapnik::json::feature_collection_grammar<iterator_type,mapnik::feature_impl, mapnik::json::default_feature_callback> ;
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <mapnik/group/group_layout.hpp>
|
||||
#include <mapnik/group/group_symbolizer_properties.hpp>
|
||||
#include <mapnik/util/variant.hpp>
|
||||
#include <mapnik/util/variant_io.hpp>
|
||||
|
||||
// boost
|
||||
#pragma GCC diagnostic push
|
||||
|
|
|
@ -96,14 +96,10 @@ int main(int argc, char** argv)
|
|||
// https://github.com/mapnik/mapnik/issues/2471
|
||||
//BOOST_TEST( (params.get<mapnik::value_null>("null") && *params.get<mapnik::value_null>("null") == mapnik::value_null()) );
|
||||
|
||||
std::string rvalue("rvalue");
|
||||
params["rvalue"] = rvalue;
|
||||
BOOST_TEST(params.get<std::string>("rvalue") == std::string("rvalue"));
|
||||
// Currently this fails because rvalue gets moved and nulled out
|
||||
// Is this really the right behavior?
|
||||
std::clog << "FIXME: line 104 of tests/cpp_tests/params_test.cpp\n";
|
||||
std::clog << "https://github.com/mapnik/mapnik/issues/2651\n";
|
||||
//BOOST_TEST(rvalue == std::string("rvalue"));
|
||||
std::string value("value");
|
||||
params["value"] = value;
|
||||
BOOST_TEST(params.get<std::string>("value") == std::string("value"));
|
||||
BOOST_TEST(value == std::string("value"));
|
||||
|
||||
// ensure that const member is not moved incorrectly when added to params
|
||||
detail::string_holder holder;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import run_all
|
||||
import mapnik
|
||||
import json
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
from nose.tools import eq_,assert_true,assert_almost_equal,assert_false
|
||||
from utilities import run_all
|
||||
import mapnik
|
||||
|
||||
def test_coord_init():
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
import sys
|
||||
import os, mapnik
|
||||
from timeit import Timer, time
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
|
||||
def setup():
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
import os
|
||||
import shutil
|
||||
import mapnik
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
|
||||
def setup():
|
||||
|
@ -89,7 +89,7 @@ if mapnik.has_pycairo():
|
|||
draw_title(m,context,"Hello Map",size=20)
|
||||
draw_neatline(m,context)
|
||||
surface.finish()
|
||||
if not os.path.exists(expected_cairo_file):
|
||||
if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'):
|
||||
print 'generated expected cairo surface file %s' % expected_cairo_file
|
||||
shutil.copy(test_cairo_file,expected_cairo_file)
|
||||
diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size)
|
||||
|
@ -108,7 +108,7 @@ if mapnik.has_pycairo():
|
|||
draw_title(m,context,"Hello Map",size=20)
|
||||
draw_neatline(m,context)
|
||||
surface.finish()
|
||||
if not os.path.exists(expected_cairo_file):
|
||||
if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'):
|
||||
print 'generated expected cairo surface file %s' % expected_cairo_file
|
||||
shutil.copy(test_cairo_file,expected_cairo_file)
|
||||
diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size)
|
||||
|
@ -132,14 +132,14 @@ if mapnik.has_pycairo():
|
|||
im = mapnik.Image.from_cairo(surface)
|
||||
im.save(reduced_color_image,'png8')
|
||||
surface.finish()
|
||||
if not os.path.exists(expected_cairo_file):
|
||||
if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'):
|
||||
print 'generated expected cairo surface file %s' % expected_cairo_file
|
||||
shutil.copy(test_cairo_file,expected_cairo_file)
|
||||
diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size)
|
||||
msg = 'diff in size (%s) between actual (%s) and expected(%s)' % (diff,test_cairo_file,'tests/python_tests/'+ expected_cairo_file)
|
||||
eq_( diff < 500, True, msg)
|
||||
os.remove(test_cairo_file)
|
||||
if not os.path.exists(expected_cairo_file2):
|
||||
if not os.path.exists(expected_cairo_file2) or os.environ.get('UPDATE'):
|
||||
print 'generated expected cairo surface file %s' % expected_cairo_file2
|
||||
shutil.copy(reduced_color_image,expected_cairo_file2)
|
||||
diff = abs(os.stat(expected_cairo_file2).st_size-os.stat(reduced_color_image).st_size)
|
||||
|
@ -158,7 +158,7 @@ if mapnik.has_pycairo():
|
|||
surface = getattr(cairo,'%sSurface' % type.upper())(test_cairo_file, m.width,m.height)
|
||||
mapnik.render(m, surface)
|
||||
surface.finish()
|
||||
if not os.path.exists(expected_cairo_file):
|
||||
if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'):
|
||||
print 'generated expected cairo surface file %s' % expected_cairo_file
|
||||
shutil.copy(test_cairo_file,expected_cairo_file)
|
||||
diff = abs(os.stat(expected_cairo_file).st_size-os.stat(test_cairo_file).st_size)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#encoding: utf8
|
||||
|
||||
from nose.tools import *
|
||||
import os,sys
|
||||
from utilities import execution_path, run_all, Todo
|
||||
from nose.tools import eq_
|
||||
import os
|
||||
from utilities import execution_path, run_all
|
||||
from utilities import get_unique_colors, pixel2channels, side_by_side_image
|
||||
import mapnik
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import glob
|
||||
import sys
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_,raises
|
||||
from utilities import execution_path
|
||||
|
||||
import os, mapnik
|
||||
|
@ -33,25 +32,26 @@ if 'csv' in mapnik.DatasourceCache.plugin_names():
|
|||
broken.append("../data/csv/fails/does_not_exist.csv")
|
||||
|
||||
for csv in broken:
|
||||
throws = False
|
||||
if visual:
|
||||
try:
|
||||
ds = mapnik.Datasource(type='csv',file=csv,strict=True)
|
||||
print '\x1b[33mfailed\x1b[0m',csv
|
||||
mapnik.Datasource(type='csv',file=csv,strict=True)
|
||||
print '\x1b[33mfailed: should have thrown\x1b[0m',csv
|
||||
except Exception:
|
||||
print '\x1b[1;32m✓ \x1b[0m', csv
|
||||
|
||||
def test_good_files(visual=False):
|
||||
good_files = glob.glob("../data/csv/*.*")
|
||||
good_files.extend(glob.glob("../data/csv/warns/*.*"))
|
||||
ignorable = os.path.join('..','data','csv','long_lat.vrt')
|
||||
good_files.remove(ignorable)
|
||||
|
||||
for csv in good_files:
|
||||
if visual:
|
||||
try:
|
||||
ds = mapnik.Datasource(type='csv',file=csv)
|
||||
mapnik.Datasource(type='csv',file=csv)
|
||||
print '\x1b[1;32m✓ \x1b[0m', csv
|
||||
except Exception:
|
||||
print '\x1b[33mfailed\x1b[0m',csv
|
||||
except Exception, e:
|
||||
print '\x1b[33mfailed: should not have thrown\x1b[0m',csv,str(e)
|
||||
|
||||
def test_lon_lat_detection(**kwargs):
|
||||
ds = get_csv_ds('lon_lat.csv')
|
||||
|
@ -68,7 +68,7 @@ if 'csv' in mapnik.DatasourceCache.plugin_names():
|
|||
attr = {'lon': 0, 'lat': 0}
|
||||
eq_(feat.attributes,attr)
|
||||
|
||||
def test_lon_lat_detection(**kwargs):
|
||||
def test_lng_lat_detection(**kwargs):
|
||||
ds = get_csv_ds('lng_lat.csv')
|
||||
eq_(len(ds.fields()),2)
|
||||
eq_(ds.fields(),['lng','lat'])
|
||||
|
@ -357,9 +357,7 @@ if 'csv' in mapnik.DatasourceCache.plugin_names():
|
|||
query.add_property_name(fld)
|
||||
# also add an invalid one, triggering throw
|
||||
query.add_property_name('bogus')
|
||||
fs = ds.features(query)
|
||||
desc = ds.describe()
|
||||
eq_(desc['geometry_type'],mapnik.DataGeometryType.Point)
|
||||
ds.features(query)
|
||||
|
||||
def test_that_leading_zeros_mean_strings(**kwargs):
|
||||
ds = get_csv_ds('leading_zeros.csv')
|
||||
|
@ -471,7 +469,7 @@ if 'csv' in mapnik.DatasourceCache.plugin_names():
|
|||
@raises(RuntimeError)
|
||||
def test_that_fewer_headers_than_rows_throws(**kwargs):
|
||||
# this has invalid header # so throw
|
||||
ds = get_csv_ds('more_column_values_than_headers.csv')
|
||||
get_csv_ds('more_column_values_than_headers.csv')
|
||||
|
||||
def test_that_feature_id_only_incremented_for_valid_rows(**kwargs):
|
||||
ds = mapnik.Datasource(type='csv',
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
import os, mapnik
|
||||
from itertools import groupby
|
||||
|
||||
def setup():
|
||||
# All of the paths used are relative, if we run the tests
|
||||
|
@ -133,8 +134,6 @@ def test_ogr_layer_by_sql():
|
|||
eq_(num_feats, 1)
|
||||
|
||||
def test_hit_grid():
|
||||
import os
|
||||
from itertools import groupby
|
||||
|
||||
def rle_encode(l):
|
||||
""" encode a list of strings with run-length compression """
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
import mapnik
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
import os, mapnik
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
import os, sys, glob, mapnik
|
||||
import os, mapnik
|
||||
import itertools
|
||||
|
||||
def setup():
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import itertools,sys
|
||||
import unittest
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
|
||||
from nose.tools import eq_,raises
|
||||
from utilities import run_all
|
||||
|
||||
import mapnik
|
||||
from binascii import unhexlify
|
||||
|
@ -77,7 +76,7 @@ def test_feature_expression_evaluation_missing_attr():
|
|||
expr = mapnik.Expression("[fielddoesnotexist]='a'")
|
||||
eq_(f.has_key('fielddoesnotexist'),False)
|
||||
try:
|
||||
evaluated = expr.evaluate(f)
|
||||
expr.evaluate(f)
|
||||
except Exception, e:
|
||||
eq_("Key does not exist" in str(e),True)
|
||||
num_attributes = len(f)
|
||||
|
@ -112,7 +111,7 @@ def test_feature_from_geojson():
|
|||
}
|
||||
}
|
||||
"""
|
||||
feat = mapnik.Feature.from_geojson(inline_string,ctx)
|
||||
mapnik.Feature.from_geojson(inline_string,ctx)
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_,raises
|
||||
from utilities import run_all
|
||||
import mapnik
|
||||
|
||||
|
@ -443,7 +443,7 @@ def test_division_by_zero():
|
|||
|
||||
@raises(RuntimeError)
|
||||
def test_invalid_syntax1():
|
||||
expr = mapnik.Expression('abs()')
|
||||
mapnik.Expression('abs()')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
import mapnik
|
||||
|
||||
# Tests that exercise fonts.
|
||||
|
||||
# Trac Ticket #31
|
||||
# Todo: Add logic to use this TextSymbolizer in a rendering
|
||||
#@raises(UserWarning)
|
||||
#def test_invalid_font():
|
||||
# ts = mapnik.TextSymbolizer('Name', 'Invalid Font Name', int(8), mapnik.Color('black'))
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))
|
|
@ -1,7 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from nose.tools import *
|
||||
from utilities import execution_path
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
import os, mapnik
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_,assert_almost_equal
|
||||
from utilities import execution_path, run_all
|
||||
import os, mapnik
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#encoding: utf8
|
||||
|
||||
from nose.tools import *
|
||||
import os,sys
|
||||
from nose.tools import eq_,raises
|
||||
import os
|
||||
from utilities import execution_path, run_all
|
||||
import mapnik
|
||||
from binascii import unhexlify
|
||||
|
@ -136,18 +136,18 @@ def test_wkb_parsing():
|
|||
def test_geojson_parsing():
|
||||
path = mapnik.Path()
|
||||
count = 0
|
||||
for json in geojson:
|
||||
count += json[0]
|
||||
path.add_geojson(json[1])
|
||||
for j in geojson:
|
||||
count += j[0]
|
||||
path.add_geojson(j[1])
|
||||
eq_(count,len(path))
|
||||
|
||||
def test_geojson_parsing_reversed():
|
||||
path = mapnik.Path()
|
||||
path2 = mapnik.Path()
|
||||
count = 0
|
||||
for idx,json in enumerate(geojson_reversed):
|
||||
count += json[0]
|
||||
path.add_geojson(json[1])
|
||||
for idx,j in enumerate(geojson_reversed):
|
||||
count += j[0]
|
||||
path.add_geojson(j[1])
|
||||
path2.add_geojson(geojson[idx][1])
|
||||
eq_(path.to_geojson(),path2.to_geojson())
|
||||
eq_(count,len(path))
|
||||
|
@ -166,7 +166,7 @@ def test_geojson_point_positions():
|
|||
path.add_geojson('{"type":"Point","coordinates":[30,10,50,50,50,50]}')
|
||||
eq_(path.to_geojson(),input_json)
|
||||
|
||||
def test_geojson_point_positions():
|
||||
def test_geojson_point_positions2():
|
||||
input_json = '{"type":"LineString","coordinates":[[30,10],[10,30],[40,40]]}'
|
||||
|
||||
path = mapnik.Path()
|
||||
|
@ -333,9 +333,9 @@ def test_creating_feature_from_geojson():
|
|||
eq_(feat['name'],u'value')
|
||||
|
||||
def test_handling_geojson_null_geoms():
|
||||
for json in geojson_nulls:
|
||||
for j in geojson_nulls:
|
||||
ctx = mapnik.Context()
|
||||
out_json = mapnik.Feature.from_geojson(json,ctx).to_geojson()
|
||||
out_json = mapnik.Feature.from_geojson(j,ctx).to_geojson()
|
||||
expected = '{"type":"Feature","id":1,"geometry":null,"properties":{}}'
|
||||
eq_(out_json,expected)
|
||||
# ensure it round trips
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import mapnik
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
from nose.tools import eq_
|
||||
from utilities import run_all
|
||||
|
||||
def test_grayscale_conversion():
|
||||
im = mapnik.Image(2,2)
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os, mapnik
|
||||
from timeit import Timer, time
|
||||
from nose.tools import *
|
||||
from utilities import execution_path, run_all
|
||||
|
||||
def setup():
|
||||
|
@ -42,8 +40,8 @@ combinations = ['png',
|
|||
'png:z=1:s=filtered',
|
||||
'png:z=1:s=huff',
|
||||
'png:z=1:s=rle',
|
||||
'png:m=h:g=2.0',
|
||||
'png:m=h:g=1.0',
|
||||
'png8:m=h:g=2.0',
|
||||
'png8:m=h:g=1.0',
|
||||
'png:e=miniz',
|
||||
'png8:e=miniz'
|
||||
]
|
||||
|
@ -59,7 +57,7 @@ iterations = 10
|
|||
|
||||
def do_encoding():
|
||||
|
||||
image = None
|
||||
global image
|
||||
|
||||
results = {}
|
||||
sortable = {}
|
||||
|
@ -115,7 +113,6 @@ def do_encoding():
|
|||
min_ = str(s[0])[:6]
|
||||
avg = str(s[1])[:6]
|
||||
elapsed = str(s[2])[:6]
|
||||
percent_reduction = s[4]
|
||||
name = s[3]
|
||||
size = s[4]
|
||||
print 'min: %sms | avg: %sms | total: %sms | len: %s <-- %s' % (min_,avg,elapsed,size,name)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
from utilities import side_by_side_image
|
||||
import os, mapnik
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os, mapnik
|
||||
from timeit import Timer, time
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_,raises
|
||||
from utilities import execution_path, run_all, get_unique_colors
|
||||
|
||||
def setup():
|
||||
|
@ -189,6 +187,9 @@ def test_set_color_to_alpha():
|
|||
def test_negative_image_dimensions():
|
||||
# TODO - this may have regressed in https://github.com/mapnik/mapnik/commit/4f3521ac24b61fc8ae8fd344a16dc3a5fdf15af7
|
||||
im = mapnik.Image(-40,40)
|
||||
# should not get here
|
||||
eq_(im.width(),0)
|
||||
eq_(im.height(),0)
|
||||
|
||||
def test_jpeg_round_trip():
|
||||
filepath = '/tmp/mapnik-jpeg-io.jpeg'
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os, mapnik
|
||||
import hashlib
|
||||
from timeit import Timer, time
|
||||
from nose.tools import *
|
||||
from nose.tools import eq_
|
||||
from utilities import execution_path, run_all
|
||||
|
||||
def hashstr(var):
|
||||
|
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
|
@ -3,99 +3,96 @@
|
|||
<defs>
|
||||
<g>
|
||||
<symbol overflow="visible" id="glyph0-0">
|
||||
<path style="stroke:none;" d="M 0.875 -7.296875 L 1.859375 -7.296875 L 1.859375 -2.859375 C 1.859375 -2.078125 2 -1.515625 2.28125 -1.171875 C 2.5625 -0.828125 3.019531 -0.65625 3.65625 -0.65625 C 4.289062 -0.65625 4.75 -0.828125 5.03125 -1.171875 C 5.3125 -1.515625 5.453125 -2.078125 5.453125 -2.859375 L 5.453125 -7.296875 L 6.453125 -7.296875 L 6.453125 -2.734375 C 6.453125 -1.785156 6.21875 -1.066406 5.75 -0.578125 C 5.28125 -0.0976562 4.582031 0.140625 3.65625 0.140625 C 2.738281 0.140625 2.046875 -0.0976562 1.578125 -0.578125 C 1.109375 -1.066406 0.875 -1.785156 0.875 -2.734375 Z M 0.875 -7.296875 "/>
|
||||
<path style="stroke:none;" d="M 0.5 1.765625 L 0.5 -7.046875 L 5.5 -7.046875 L 5.5 1.765625 Z M 1.0625 1.21875 L 4.9375 1.21875 L 4.9375 -6.484375 L 1.0625 -6.484375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-1">
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
|
||||
<path style="stroke:none;" d="M 3.421875 -2.75 C 2.703125 -2.75 2.203125 -2.664062 1.921875 -2.5 C 1.640625 -2.332031 1.5 -2.050781 1.5 -1.65625 C 1.5 -1.332031 1.601562 -1.078125 1.8125 -0.890625 C 2.019531 -0.703125 2.304688 -0.609375 2.671875 -0.609375 C 3.171875 -0.609375 3.570312 -0.785156 3.875 -1.140625 C 4.175781 -1.492188 4.328125 -1.960938 4.328125 -2.546875 L 4.328125 -2.75 Z M 5.21875 -3.125 L 5.21875 0 L 4.328125 0 L 4.328125 -0.828125 C 4.117188 -0.492188 3.859375 -0.25 3.546875 -0.09375 C 3.242188 0.0625 2.875 0.140625 2.4375 0.140625 C 1.875 0.140625 1.425781 -0.015625 1.09375 -0.328125 C 0.757812 -0.640625 0.59375 -1.0625 0.59375 -1.59375 C 0.59375 -2.207031 0.800781 -2.671875 1.21875 -2.984375 C 1.632812 -3.296875 2.25 -3.453125 3.0625 -3.453125 L 4.328125 -3.453125 L 4.328125 -3.546875 C 4.328125 -3.953125 4.1875 -4.269531 3.90625 -4.5 C 3.632812 -4.726562 3.253906 -4.84375 2.765625 -4.84375 C 2.453125 -4.84375 2.144531 -4.800781 1.84375 -4.71875 C 1.550781 -4.644531 1.269531 -4.535156 1 -4.390625 L 1 -5.21875 C 1.332031 -5.34375 1.648438 -5.4375 1.953125 -5.5 C 2.265625 -5.5625 2.566406 -5.59375 2.859375 -5.59375 C 3.648438 -5.59375 4.238281 -5.390625 4.625 -4.984375 C 5.019531 -4.578125 5.21875 -3.957031 5.21875 -3.125 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-2">
|
||||
<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0 L 0.9375 0 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 Z M 0.9375 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 1.828125 -7.015625 L 1.828125 -5.46875 L 3.6875 -5.46875 L 3.6875 -4.765625 L 1.828125 -4.765625 L 1.828125 -1.796875 C 1.828125 -1.359375 1.890625 -1.070312 2.015625 -0.9375 C 2.140625 -0.8125 2.390625 -0.75 2.765625 -0.75 L 3.6875 -0.75 L 3.6875 0 L 2.765625 0 C 2.066406 0 1.582031 -0.128906 1.3125 -0.390625 C 1.050781 -0.648438 0.921875 -1.117188 0.921875 -1.796875 L 0.921875 -4.765625 L 0.265625 -4.765625 L 0.265625 -5.46875 L 0.921875 -5.46875 L 0.921875 -7.015625 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-3">
|
||||
<path style="stroke:none;" d="M 1.828125 -7.015625 L 1.828125 -5.46875 L 3.6875 -5.46875 L 3.6875 -4.765625 L 1.828125 -4.765625 L 1.828125 -1.796875 C 1.828125 -1.359375 1.890625 -1.070312 2.015625 -0.9375 C 2.140625 -0.8125 2.390625 -0.75 2.765625 -0.75 L 3.6875 -0.75 L 3.6875 0 L 2.765625 0 C 2.066406 0 1.582031 -0.128906 1.3125 -0.390625 C 1.050781 -0.648438 0.921875 -1.117188 0.921875 -1.796875 L 0.921875 -4.765625 L 0.265625 -4.765625 L 0.265625 -5.46875 L 0.921875 -5.46875 L 0.921875 -7.015625 Z M 1.828125 -7.015625 "/>
|
||||
<path style="stroke:none;" d="M 5.625 -2.953125 L 5.625 -2.515625 L 1.484375 -2.515625 C 1.523438 -1.898438 1.710938 -1.429688 2.046875 -1.109375 C 2.378906 -0.785156 2.84375 -0.625 3.4375 -0.625 C 3.78125 -0.625 4.113281 -0.664062 4.4375 -0.75 C 4.769531 -0.832031 5.09375 -0.957031 5.40625 -1.125 L 5.40625 -0.28125 C 5.082031 -0.144531 4.75 -0.0390625 4.40625 0.03125 C 4.070312 0.101562 3.734375 0.140625 3.390625 0.140625 C 2.515625 0.140625 1.820312 -0.109375 1.3125 -0.609375 C 0.800781 -1.117188 0.546875 -1.8125 0.546875 -2.6875 C 0.546875 -3.582031 0.785156 -4.289062 1.265625 -4.8125 C 1.753906 -5.332031 2.410156 -5.59375 3.234375 -5.59375 C 3.972656 -5.59375 4.554688 -5.359375 4.984375 -4.890625 C 5.410156 -4.421875 5.625 -3.773438 5.625 -2.953125 Z M 4.71875 -3.21875 C 4.71875 -3.707031 4.582031 -4.097656 4.3125 -4.390625 C 4.039062 -4.691406 3.6875 -4.84375 3.25 -4.84375 C 2.738281 -4.84375 2.332031 -4.695312 2.03125 -4.40625 C 1.738281 -4.125 1.566406 -3.726562 1.515625 -3.21875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-4">
|
||||
<path style="stroke:none;" d="M 5.625 -2.953125 L 5.625 -2.515625 L 1.484375 -2.515625 C 1.523438 -1.898438 1.710938 -1.429688 2.046875 -1.109375 C 2.378906 -0.785156 2.84375 -0.625 3.4375 -0.625 C 3.78125 -0.625 4.113281 -0.664062 4.4375 -0.75 C 4.769531 -0.832031 5.09375 -0.957031 5.40625 -1.125 L 5.40625 -0.28125 C 5.082031 -0.144531 4.75 -0.0390625 4.40625 0.03125 C 4.070312 0.101562 3.734375 0.140625 3.390625 0.140625 C 2.515625 0.140625 1.820312 -0.109375 1.3125 -0.609375 C 0.800781 -1.117188 0.546875 -1.8125 0.546875 -2.6875 C 0.546875 -3.582031 0.785156 -4.289062 1.265625 -4.8125 C 1.753906 -5.332031 2.410156 -5.59375 3.234375 -5.59375 C 3.972656 -5.59375 4.554688 -5.359375 4.984375 -4.890625 C 5.410156 -4.421875 5.625 -3.773438 5.625 -2.953125 Z M 4.71875 -3.21875 C 4.71875 -3.707031 4.582031 -4.097656 4.3125 -4.390625 C 4.039062 -4.691406 3.6875 -4.84375 3.25 -4.84375 C 2.738281 -4.84375 2.332031 -4.695312 2.03125 -4.40625 C 1.738281 -4.125 1.566406 -3.726562 1.515625 -3.21875 Z M 4.71875 -3.21875 "/>
|
||||
<path style="stroke:none;" d="M 4.421875 -5.3125 L 4.421875 -4.453125 C 4.171875 -4.585938 3.910156 -4.6875 3.640625 -4.75 C 3.367188 -4.8125 3.082031 -4.84375 2.78125 -4.84375 C 2.34375 -4.84375 2.007812 -4.773438 1.78125 -4.640625 C 1.5625 -4.503906 1.453125 -4.300781 1.453125 -4.03125 C 1.453125 -3.820312 1.53125 -3.65625 1.6875 -3.53125 C 1.84375 -3.414062 2.164062 -3.304688 2.65625 -3.203125 L 2.953125 -3.125 C 3.597656 -2.988281 4.050781 -2.796875 4.3125 -2.546875 C 4.582031 -2.296875 4.71875 -1.953125 4.71875 -1.515625 C 4.71875 -1.003906 4.515625 -0.597656 4.109375 -0.296875 C 3.710938 -0.00390625 3.164062 0.140625 2.46875 0.140625 C 2.164062 0.140625 1.851562 0.109375 1.53125 0.046875 C 1.21875 -0.00390625 0.890625 -0.0859375 0.546875 -0.203125 L 0.546875 -1.125 C 0.878906 -0.957031 1.203125 -0.828125 1.515625 -0.734375 C 1.835938 -0.648438 2.160156 -0.609375 2.484375 -0.609375 C 2.898438 -0.609375 3.222656 -0.679688 3.453125 -0.828125 C 3.679688 -0.972656 3.796875 -1.175781 3.796875 -1.4375 C 3.796875 -1.6875 3.710938 -1.875 3.546875 -2 C 3.390625 -2.132812 3.03125 -2.257812 2.46875 -2.375 L 2.15625 -2.453125 C 1.601562 -2.566406 1.203125 -2.742188 0.953125 -2.984375 C 0.703125 -3.234375 0.578125 -3.566406 0.578125 -3.984375 C 0.578125 -4.503906 0.757812 -4.898438 1.125 -5.171875 C 1.488281 -5.453125 2.007812 -5.59375 2.6875 -5.59375 C 3.007812 -5.59375 3.316406 -5.566406 3.609375 -5.515625 C 3.910156 -5.472656 4.179688 -5.40625 4.421875 -5.3125 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-5">
|
||||
<path style="stroke:none;" d="M 4.546875 -4.640625 L 4.546875 -7.59375 L 5.4375 -7.59375 L 5.4375 0 L 4.546875 0 L 4.546875 -0.828125 C 4.359375 -0.492188 4.117188 -0.25 3.828125 -0.09375 C 3.535156 0.0625 3.1875 0.140625 2.78125 0.140625 C 2.125 0.140625 1.585938 -0.117188 1.171875 -0.640625 C 0.753906 -1.171875 0.546875 -1.867188 0.546875 -2.734375 C 0.546875 -3.585938 0.753906 -4.273438 1.171875 -4.796875 C 1.585938 -5.328125 2.125 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 Z M 1.484375 -2.734375 C 1.484375 -2.066406 1.617188 -1.546875 1.890625 -1.171875 C 2.160156 -0.796875 2.535156 -0.609375 3.015625 -0.609375 C 3.484375 -0.609375 3.851562 -0.796875 4.125 -1.171875 C 4.40625 -1.546875 4.546875 -2.066406 4.546875 -2.734375 C 4.546875 -3.390625 4.40625 -3.90625 4.125 -4.28125 C 3.851562 -4.65625 3.484375 -4.84375 3.015625 -4.84375 C 2.535156 -4.84375 2.160156 -4.65625 1.890625 -4.28125 C 1.617188 -3.90625 1.484375 -3.390625 1.484375 -2.734375 Z M 1.484375 -2.734375 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d=""/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-6">
|
||||
<path style="stroke:none;" d="M 3.09375 -7.59375 C 2.664062 -6.84375 2.34375 -6.097656 2.125 -5.359375 C 1.914062 -4.628906 1.8125 -3.890625 1.8125 -3.140625 C 1.8125 -2.390625 1.914062 -1.644531 2.125 -0.90625 C 2.34375 -0.164062 2.664062 0.570312 3.09375 1.3125 L 2.3125 1.3125 C 1.832031 0.550781 1.46875 -0.195312 1.21875 -0.9375 C 0.976562 -1.675781 0.859375 -2.410156 0.859375 -3.140625 C 0.859375 -3.867188 0.976562 -4.597656 1.21875 -5.328125 C 1.457031 -6.066406 1.820312 -6.820312 2.3125 -7.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-7">
|
||||
<path style="stroke:none;" d="M 5.359375 -7.046875 L 5.359375 -6.09375 C 4.984375 -6.269531 4.628906 -6.398438 4.296875 -6.484375 C 3.960938 -6.578125 3.640625 -6.625 3.328125 -6.625 C 2.796875 -6.625 2.382812 -6.519531 2.09375 -6.3125 C 1.800781 -6.101562 1.65625 -5.804688 1.65625 -5.421875 C 1.65625 -5.097656 1.75 -4.851562 1.9375 -4.6875 C 2.132812 -4.519531 2.503906 -4.390625 3.046875 -4.296875 L 3.640625 -4.171875 C 4.367188 -4.023438 4.910156 -3.773438 5.265625 -3.421875 C 5.617188 -3.078125 5.796875 -2.609375 5.796875 -2.015625 C 5.796875 -1.304688 5.554688 -0.769531 5.078125 -0.40625 C 4.609375 -0.0390625 3.914062 0.140625 3 0.140625 C 2.65625 0.140625 2.285156 0.0976562 1.890625 0.015625 C 1.503906 -0.0546875 1.101562 -0.171875 0.6875 -0.328125 L 0.6875 -1.34375 C 1.09375 -1.113281 1.484375 -0.941406 1.859375 -0.828125 C 2.242188 -0.710938 2.625 -0.65625 3 -0.65625 C 3.5625 -0.65625 3.992188 -0.765625 4.296875 -0.984375 C 4.609375 -1.210938 4.765625 -1.53125 4.765625 -1.9375 C 4.765625 -2.289062 4.65625 -2.566406 4.4375 -2.765625 C 4.21875 -2.972656 3.851562 -3.128906 3.34375 -3.234375 L 2.75 -3.34375 C 2.007812 -3.488281 1.472656 -3.71875 1.140625 -4.03125 C 0.816406 -4.34375 0.65625 -4.78125 0.65625 -5.34375 C 0.65625 -5.988281 0.878906 -6.492188 1.328125 -6.859375 C 1.785156 -7.234375 2.414062 -7.421875 3.21875 -7.421875 C 3.5625 -7.421875 3.910156 -7.390625 4.265625 -7.328125 C 4.617188 -7.265625 4.984375 -7.171875 5.359375 -7.046875 Z M 5.359375 -7.046875 "/>
|
||||
<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0.09375 C 1.84375 0.789062 1.707031 1.296875 1.4375 1.609375 C 1.175781 1.921875 0.75 2.078125 0.15625 2.078125 L -0.1875 2.078125 L -0.1875 1.3125 L 0.0625 1.3125 C 0.40625 1.3125 0.632812 1.234375 0.75 1.078125 C 0.875 0.921875 0.9375 0.59375 0.9375 0.09375 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-8">
|
||||
<path style="stroke:none;" d="M 3.421875 -2.75 C 2.703125 -2.75 2.203125 -2.664062 1.921875 -2.5 C 1.640625 -2.332031 1.5 -2.050781 1.5 -1.65625 C 1.5 -1.332031 1.601562 -1.078125 1.8125 -0.890625 C 2.019531 -0.703125 2.304688 -0.609375 2.671875 -0.609375 C 3.171875 -0.609375 3.570312 -0.785156 3.875 -1.140625 C 4.175781 -1.492188 4.328125 -1.960938 4.328125 -2.546875 L 4.328125 -2.75 Z M 5.21875 -3.125 L 5.21875 0 L 4.328125 0 L 4.328125 -0.828125 C 4.117188 -0.492188 3.859375 -0.25 3.546875 -0.09375 C 3.242188 0.0625 2.875 0.140625 2.4375 0.140625 C 1.875 0.140625 1.425781 -0.015625 1.09375 -0.328125 C 0.757812 -0.640625 0.59375 -1.0625 0.59375 -1.59375 C 0.59375 -2.207031 0.800781 -2.671875 1.21875 -2.984375 C 1.632812 -3.296875 2.25 -3.453125 3.0625 -3.453125 L 4.328125 -3.453125 L 4.328125 -3.546875 C 4.328125 -3.953125 4.1875 -4.269531 3.90625 -4.5 C 3.632812 -4.726562 3.253906 -4.84375 2.765625 -4.84375 C 2.453125 -4.84375 2.144531 -4.800781 1.84375 -4.71875 C 1.550781 -4.644531 1.269531 -4.535156 1 -4.390625 L 1 -5.21875 C 1.332031 -5.34375 1.648438 -5.4375 1.953125 -5.5 C 2.265625 -5.5625 2.566406 -5.59375 2.859375 -5.59375 C 3.648438 -5.59375 4.238281 -5.390625 4.625 -4.984375 C 5.019531 -4.578125 5.21875 -3.957031 5.21875 -3.125 Z M 5.21875 -3.125 "/>
|
||||
<path style="stroke:none;" d="M 1.8125 -0.828125 L 1.8125 2.078125 L 0.90625 2.078125 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.640625 C 2 -4.960938 2.234375 -5.203125 2.515625 -5.359375 C 2.804688 -5.515625 3.15625 -5.59375 3.5625 -5.59375 C 4.226562 -5.59375 4.765625 -5.328125 5.171875 -4.796875 C 5.585938 -4.273438 5.796875 -3.585938 5.796875 -2.734375 C 5.796875 -1.867188 5.585938 -1.171875 5.171875 -0.640625 C 4.765625 -0.117188 4.226562 0.140625 3.5625 0.140625 C 3.15625 0.140625 2.804688 0.0625 2.515625 -0.09375 C 2.234375 -0.25 2 -0.492188 1.8125 -0.828125 Z M 4.875 -2.734375 C 4.875 -3.390625 4.734375 -3.90625 4.453125 -4.28125 C 4.179688 -4.65625 3.8125 -4.84375 3.34375 -4.84375 C 2.863281 -4.84375 2.488281 -4.65625 2.21875 -4.28125 C 1.945312 -3.90625 1.8125 -3.390625 1.8125 -2.734375 C 1.8125 -2.066406 1.945312 -1.546875 2.21875 -1.171875 C 2.488281 -0.796875 2.863281 -0.609375 3.34375 -0.609375 C 3.8125 -0.609375 4.179688 -0.796875 4.453125 -1.171875 C 4.734375 -1.546875 4.875 -2.066406 4.875 -2.734375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-9">
|
||||
<path style="stroke:none;" d="M 4.421875 -5.3125 L 4.421875 -4.453125 C 4.171875 -4.585938 3.910156 -4.6875 3.640625 -4.75 C 3.367188 -4.8125 3.082031 -4.84375 2.78125 -4.84375 C 2.34375 -4.84375 2.007812 -4.773438 1.78125 -4.640625 C 1.5625 -4.503906 1.453125 -4.300781 1.453125 -4.03125 C 1.453125 -3.820312 1.53125 -3.65625 1.6875 -3.53125 C 1.84375 -3.414062 2.164062 -3.304688 2.65625 -3.203125 L 2.953125 -3.125 C 3.597656 -2.988281 4.050781 -2.796875 4.3125 -2.546875 C 4.582031 -2.296875 4.71875 -1.953125 4.71875 -1.515625 C 4.71875 -1.003906 4.515625 -0.597656 4.109375 -0.296875 C 3.710938 -0.00390625 3.164062 0.140625 2.46875 0.140625 C 2.164062 0.140625 1.851562 0.109375 1.53125 0.046875 C 1.21875 -0.00390625 0.890625 -0.0859375 0.546875 -0.203125 L 0.546875 -1.125 C 0.878906 -0.957031 1.203125 -0.828125 1.515625 -0.734375 C 1.835938 -0.648438 2.160156 -0.609375 2.484375 -0.609375 C 2.898438 -0.609375 3.222656 -0.679688 3.453125 -0.828125 C 3.679688 -0.972656 3.796875 -1.175781 3.796875 -1.4375 C 3.796875 -1.6875 3.710938 -1.875 3.546875 -2 C 3.390625 -2.132812 3.03125 -2.257812 2.46875 -2.375 L 2.15625 -2.453125 C 1.601562 -2.566406 1.203125 -2.742188 0.953125 -2.984375 C 0.703125 -3.234375 0.578125 -3.566406 0.578125 -3.984375 C 0.578125 -4.503906 0.757812 -4.898438 1.125 -5.171875 C 1.488281 -5.453125 2.007812 -5.59375 2.6875 -5.59375 C 3.007812 -5.59375 3.316406 -5.566406 3.609375 -5.515625 C 3.910156 -5.472656 4.179688 -5.40625 4.421875 -5.3125 Z M 4.421875 -5.3125 "/>
|
||||
<path style="stroke:none;" d="M 4.546875 -2.796875 C 4.546875 -3.453125 4.410156 -3.957031 4.140625 -4.3125 C 3.867188 -4.664062 3.492188 -4.84375 3.015625 -4.84375 C 2.523438 -4.84375 2.144531 -4.664062 1.875 -4.3125 C 1.613281 -3.957031 1.484375 -3.453125 1.484375 -2.796875 C 1.484375 -2.148438 1.613281 -1.644531 1.875 -1.28125 C 2.144531 -0.925781 2.523438 -0.75 3.015625 -0.75 C 3.492188 -0.75 3.867188 -0.925781 4.140625 -1.28125 C 4.410156 -1.644531 4.546875 -2.148438 4.546875 -2.796875 Z M 5.4375 -0.671875 C 5.4375 0.253906 5.226562 0.941406 4.8125 1.390625 C 4.40625 1.847656 3.773438 2.078125 2.921875 2.078125 C 2.609375 2.078125 2.3125 2.050781 2.03125 2 C 1.75 1.957031 1.476562 1.890625 1.21875 1.796875 L 1.21875 0.921875 C 1.476562 1.066406 1.734375 1.171875 1.984375 1.234375 C 2.242188 1.304688 2.507812 1.34375 2.78125 1.34375 C 3.363281 1.34375 3.800781 1.1875 4.09375 0.875 C 4.394531 0.570312 4.546875 0.109375 4.546875 -0.515625 L 4.546875 -0.96875 C 4.359375 -0.644531 4.117188 -0.398438 3.828125 -0.234375 C 3.535156 -0.078125 3.1875 0 2.78125 0 C 2.113281 0 1.570312 -0.253906 1.15625 -0.765625 C 0.75 -1.273438 0.546875 -1.953125 0.546875 -2.796875 C 0.546875 -3.640625 0.75 -4.316406 1.15625 -4.828125 C 1.570312 -5.335938 2.113281 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 L 4.546875 -5.46875 L 5.4375 -5.46875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-10">
|
||||
<path style="stroke:none;" d="M 3.09375 -7.59375 C 2.664062 -6.84375 2.34375 -6.097656 2.125 -5.359375 C 1.914062 -4.628906 1.8125 -3.890625 1.8125 -3.140625 C 1.8125 -2.390625 1.914062 -1.644531 2.125 -0.90625 C 2.34375 -0.164062 2.664062 0.570312 3.09375 1.3125 L 2.3125 1.3125 C 1.832031 0.550781 1.46875 -0.195312 1.21875 -0.9375 C 0.976562 -1.675781 0.859375 -2.410156 0.859375 -3.140625 C 0.859375 -3.867188 0.976562 -4.597656 1.21875 -5.328125 C 1.457031 -6.066406 1.820312 -6.820312 2.3125 -7.59375 Z M 3.09375 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 0.796875 -7.59375 L 1.578125 -7.59375 C 2.066406 -6.820312 2.429688 -6.066406 2.671875 -5.328125 C 2.921875 -4.597656 3.046875 -3.867188 3.046875 -3.140625 C 3.046875 -2.410156 2.921875 -1.675781 2.671875 -0.9375 C 2.429688 -0.195312 2.066406 0.550781 1.578125 1.3125 L 0.796875 1.3125 C 1.234375 0.570312 1.554688 -0.164062 1.765625 -0.90625 C 1.984375 -1.644531 2.09375 -2.390625 2.09375 -3.140625 C 2.09375 -3.890625 1.984375 -4.628906 1.765625 -5.359375 C 1.554688 -6.097656 1.234375 -6.84375 0.796875 -7.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-11">
|
||||
<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0.09375 C 1.84375 0.789062 1.707031 1.296875 1.4375 1.609375 C 1.175781 1.921875 0.75 2.078125 0.15625 2.078125 L -0.1875 2.078125 L -0.1875 1.3125 L 0.0625 1.3125 C 0.40625 1.3125 0.632812 1.234375 0.75 1.078125 C 0.875 0.921875 0.9375 0.59375 0.9375 0.09375 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 Z M 0.9375 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 3.421875 -6.3125 L 2.078125 -2.6875 L 4.765625 -2.6875 Z M 2.859375 -7.296875 L 3.984375 -7.296875 L 6.765625 0 L 5.734375 0 L 5.0625 -1.875 L 1.78125 -1.875 L 1.125 0 L 0.078125 0 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-12">
|
||||
<path style="stroke:none;" d="M 1.8125 -0.828125 L 1.8125 2.078125 L 0.90625 2.078125 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.640625 C 2 -4.960938 2.234375 -5.203125 2.515625 -5.359375 C 2.804688 -5.515625 3.15625 -5.59375 3.5625 -5.59375 C 4.226562 -5.59375 4.765625 -5.328125 5.171875 -4.796875 C 5.585938 -4.273438 5.796875 -3.585938 5.796875 -2.734375 C 5.796875 -1.867188 5.585938 -1.171875 5.171875 -0.640625 C 4.765625 -0.117188 4.226562 0.140625 3.5625 0.140625 C 3.15625 0.140625 2.804688 0.0625 2.515625 -0.09375 C 2.234375 -0.25 2 -0.492188 1.8125 -0.828125 Z M 4.875 -2.734375 C 4.875 -3.390625 4.734375 -3.90625 4.453125 -4.28125 C 4.179688 -4.65625 3.8125 -4.84375 3.34375 -4.84375 C 2.863281 -4.84375 2.488281 -4.65625 2.21875 -4.28125 C 1.945312 -3.90625 1.8125 -3.390625 1.8125 -2.734375 C 1.8125 -2.066406 1.945312 -1.546875 2.21875 -1.171875 C 2.488281 -0.796875 2.863281 -0.609375 3.34375 -0.609375 C 3.8125 -0.609375 4.179688 -0.796875 4.453125 -1.171875 C 4.734375 -1.546875 4.875 -2.066406 4.875 -2.734375 Z M 4.875 -2.734375 "/>
|
||||
<path style="stroke:none;" d="M 0.84375 -2.15625 L 0.84375 -5.46875 L 1.75 -5.46875 L 1.75 -2.1875 C 1.75 -1.675781 1.847656 -1.289062 2.046875 -1.03125 C 2.253906 -0.769531 2.554688 -0.640625 2.953125 -0.640625 C 3.441406 -0.640625 3.828125 -0.789062 4.109375 -1.09375 C 4.390625 -1.40625 4.53125 -1.832031 4.53125 -2.375 L 4.53125 -5.46875 L 5.4375 -5.46875 L 5.4375 0 L 4.53125 0 L 4.53125 -0.84375 C 4.3125 -0.507812 4.054688 -0.257812 3.765625 -0.09375 C 3.484375 0.0625 3.148438 0.140625 2.765625 0.140625 C 2.140625 0.140625 1.660156 -0.0507812 1.328125 -0.4375 C 1.003906 -0.832031 0.84375 -1.40625 0.84375 -2.15625 Z M 3.109375 -5.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-13">
|
||||
<path style="stroke:none;" d="M 4.546875 -2.796875 C 4.546875 -3.453125 4.410156 -3.957031 4.140625 -4.3125 C 3.867188 -4.664062 3.492188 -4.84375 3.015625 -4.84375 C 2.523438 -4.84375 2.144531 -4.664062 1.875 -4.3125 C 1.613281 -3.957031 1.484375 -3.453125 1.484375 -2.796875 C 1.484375 -2.148438 1.613281 -1.644531 1.875 -1.28125 C 2.144531 -0.925781 2.523438 -0.75 3.015625 -0.75 C 3.492188 -0.75 3.867188 -0.925781 4.140625 -1.28125 C 4.410156 -1.644531 4.546875 -2.148438 4.546875 -2.796875 Z M 5.4375 -0.671875 C 5.4375 0.253906 5.226562 0.941406 4.8125 1.390625 C 4.40625 1.847656 3.773438 2.078125 2.921875 2.078125 C 2.609375 2.078125 2.3125 2.050781 2.03125 2 C 1.75 1.957031 1.476562 1.890625 1.21875 1.796875 L 1.21875 0.921875 C 1.476562 1.066406 1.734375 1.171875 1.984375 1.234375 C 2.242188 1.304688 2.507812 1.34375 2.78125 1.34375 C 3.363281 1.34375 3.800781 1.1875 4.09375 0.875 C 4.394531 0.570312 4.546875 0.109375 4.546875 -0.515625 L 4.546875 -0.96875 C 4.359375 -0.644531 4.117188 -0.398438 3.828125 -0.234375 C 3.535156 -0.078125 3.1875 0 2.78125 0 C 2.113281 0 1.570312 -0.253906 1.15625 -0.765625 C 0.75 -1.273438 0.546875 -1.953125 0.546875 -2.796875 C 0.546875 -3.640625 0.75 -4.316406 1.15625 -4.828125 C 1.570312 -5.335938 2.113281 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 L 4.546875 -5.46875 L 5.4375 -5.46875 Z M 5.4375 -0.671875 "/>
|
||||
<path style="stroke:none;" d="M 4.109375 -4.625 C 4.003906 -4.6875 3.894531 -4.726562 3.78125 -4.75 C 3.664062 -4.78125 3.535156 -4.796875 3.390625 -4.796875 C 2.878906 -4.796875 2.488281 -4.628906 2.21875 -4.296875 C 1.945312 -3.972656 1.8125 -3.5 1.8125 -2.875 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2 -4.957031 2.242188 -5.203125 2.546875 -5.359375 C 2.847656 -5.515625 3.21875 -5.59375 3.65625 -5.59375 C 3.71875 -5.59375 3.785156 -5.585938 3.859375 -5.578125 C 3.929688 -5.578125 4.015625 -5.566406 4.109375 -5.546875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-14">
|
||||
<path style="stroke:none;" d="M 0.796875 -7.59375 L 1.578125 -7.59375 C 2.066406 -6.820312 2.429688 -6.066406 2.671875 -5.328125 C 2.921875 -4.597656 3.046875 -3.867188 3.046875 -3.140625 C 3.046875 -2.410156 2.921875 -1.675781 2.671875 -0.9375 C 2.429688 -0.195312 2.066406 0.550781 1.578125 1.3125 L 0.796875 1.3125 C 1.234375 0.570312 1.554688 -0.164062 1.765625 -0.90625 C 1.984375 -1.644531 2.09375 -2.390625 2.09375 -3.140625 C 2.09375 -3.890625 1.984375 -4.628906 1.765625 -5.359375 C 1.554688 -6.097656 1.234375 -6.84375 0.796875 -7.59375 Z M 0.796875 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 0 L 0.9375 0 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-15">
|
||||
<path style="stroke:none;" d="M 3.421875 -6.3125 L 2.078125 -2.6875 L 4.765625 -2.6875 Z M 2.859375 -7.296875 L 3.984375 -7.296875 L 6.765625 0 L 5.734375 0 L 5.0625 -1.875 L 1.78125 -1.875 L 1.125 0 L 0.078125 0 Z M 2.859375 -7.296875 "/>
|
||||
<path style="stroke:none;" d="M 0.9375 -5.46875 L 1.84375 -5.46875 L 1.84375 0 L 0.9375 0 Z M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 -6.453125 L 0.9375 -6.453125 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-16">
|
||||
<path style="stroke:none;" d="M 0.84375 -2.15625 L 0.84375 -5.46875 L 1.75 -5.46875 L 1.75 -2.1875 C 1.75 -1.675781 1.847656 -1.289062 2.046875 -1.03125 C 2.253906 -0.769531 2.554688 -0.640625 2.953125 -0.640625 C 3.441406 -0.640625 3.828125 -0.789062 4.109375 -1.09375 C 4.390625 -1.40625 4.53125 -1.832031 4.53125 -2.375 L 4.53125 -5.46875 L 5.4375 -5.46875 L 5.4375 0 L 4.53125 0 L 4.53125 -0.84375 C 4.3125 -0.507812 4.054688 -0.257812 3.765625 -0.09375 C 3.484375 0.0625 3.148438 0.140625 2.765625 0.140625 C 2.140625 0.140625 1.660156 -0.0507812 1.328125 -0.4375 C 1.003906 -0.832031 0.84375 -1.40625 0.84375 -2.15625 Z M 3.109375 -5.59375 Z M 3.109375 -5.59375 "/>
|
||||
<path style="stroke:none;" d="M 1.96875 -3.484375 L 1.96875 -0.8125 L 3.546875 -0.8125 C 4.078125 -0.8125 4.46875 -0.921875 4.71875 -1.140625 C 4.976562 -1.359375 5.109375 -1.695312 5.109375 -2.15625 C 5.109375 -2.601562 4.976562 -2.9375 4.71875 -3.15625 C 4.46875 -3.375 4.078125 -3.484375 3.546875 -3.484375 Z M 1.96875 -6.484375 L 1.96875 -4.28125 L 3.421875 -4.28125 C 3.910156 -4.28125 4.269531 -4.367188 4.5 -4.546875 C 4.738281 -4.734375 4.859375 -5.007812 4.859375 -5.375 C 4.859375 -5.75 4.738281 -6.023438 4.5 -6.203125 C 4.269531 -6.390625 3.910156 -6.484375 3.421875 -6.484375 Z M 0.984375 -7.296875 L 3.5 -7.296875 C 4.25 -7.296875 4.828125 -7.140625 5.234375 -6.828125 C 5.640625 -6.515625 5.84375 -6.066406 5.84375 -5.484375 C 5.84375 -5.035156 5.738281 -4.679688 5.53125 -4.421875 C 5.320312 -4.160156 5.019531 -4 4.625 -3.9375 C 5.101562 -3.832031 5.476562 -3.613281 5.75 -3.28125 C 6.019531 -2.945312 6.15625 -2.535156 6.15625 -2.046875 C 6.15625 -1.390625 5.929688 -0.882812 5.484375 -0.53125 C 5.046875 -0.175781 4.414062 0 3.59375 0 L 0.984375 0 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-17">
|
||||
<path style="stroke:none;" d="M 4.109375 -4.625 C 4.003906 -4.6875 3.894531 -4.726562 3.78125 -4.75 C 3.664062 -4.78125 3.535156 -4.796875 3.390625 -4.796875 C 2.878906 -4.796875 2.488281 -4.628906 2.21875 -4.296875 C 1.945312 -3.972656 1.8125 -3.5 1.8125 -2.875 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2 -4.957031 2.242188 -5.203125 2.546875 -5.359375 C 2.847656 -5.515625 3.21875 -5.59375 3.65625 -5.59375 C 3.71875 -5.59375 3.785156 -5.585938 3.859375 -5.578125 C 3.929688 -5.578125 4.015625 -5.566406 4.109375 -5.546875 Z M 4.109375 -4.625 "/>
|
||||
<path style="stroke:none;" d="M 0.546875 -5.46875 L 4.8125 -5.46875 L 4.8125 -4.65625 L 1.4375 -0.71875 L 4.8125 -0.71875 L 4.8125 0 L 0.4375 0 L 0.4375 -0.828125 L 3.8125 -4.75 L 0.546875 -4.75 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-18">
|
||||
<path style="stroke:none;" d="M 0.9375 -7.59375 L 1.84375 -7.59375 L 1.84375 0 L 0.9375 0 Z M 0.9375 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 0.296875 -5.46875 L 1.25 -5.46875 L 2.953125 -0.875 L 4.671875 -5.46875 L 5.625 -5.46875 L 3.5625 0 L 2.34375 0 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-19">
|
||||
<path style="stroke:none;" d="M 1.96875 -3.484375 L 1.96875 -0.8125 L 3.546875 -0.8125 C 4.078125 -0.8125 4.46875 -0.921875 4.71875 -1.140625 C 4.976562 -1.359375 5.109375 -1.695312 5.109375 -2.15625 C 5.109375 -2.601562 4.976562 -2.9375 4.71875 -3.15625 C 4.46875 -3.375 4.078125 -3.484375 3.546875 -3.484375 Z M 1.96875 -6.484375 L 1.96875 -4.28125 L 3.421875 -4.28125 C 3.910156 -4.28125 4.269531 -4.367188 4.5 -4.546875 C 4.738281 -4.734375 4.859375 -5.007812 4.859375 -5.375 C 4.859375 -5.75 4.738281 -6.023438 4.5 -6.203125 C 4.269531 -6.390625 3.910156 -6.484375 3.421875 -6.484375 Z M 0.984375 -7.296875 L 3.5 -7.296875 C 4.25 -7.296875 4.828125 -7.140625 5.234375 -6.828125 C 5.640625 -6.515625 5.84375 -6.066406 5.84375 -5.484375 C 5.84375 -5.035156 5.738281 -4.679688 5.53125 -4.421875 C 5.320312 -4.160156 5.019531 -4 4.625 -3.9375 C 5.101562 -3.832031 5.476562 -3.613281 5.75 -3.28125 C 6.019531 -2.945312 6.15625 -2.535156 6.15625 -2.046875 C 6.15625 -1.390625 5.929688 -0.882812 5.484375 -0.53125 C 5.046875 -0.175781 4.414062 0 3.59375 0 L 0.984375 0 Z M 0.984375 -7.296875 "/>
|
||||
<path style="stroke:none;" d="M 2.4375 -3.921875 C 2.132812 -3.660156 1.914062 -3.394531 1.78125 -3.125 C 1.644531 -2.863281 1.578125 -2.59375 1.578125 -2.3125 C 1.578125 -1.832031 1.75 -1.4375 2.09375 -1.125 C 2.4375 -0.8125 2.867188 -0.65625 3.390625 -0.65625 C 3.703125 -0.65625 3.988281 -0.703125 4.25 -0.796875 C 4.519531 -0.898438 4.773438 -1.054688 5.015625 -1.265625 Z M 3.125 -4.46875 L 5.59375 -1.921875 C 5.789062 -2.210938 5.941406 -2.523438 6.046875 -2.859375 C 6.160156 -3.191406 6.222656 -3.539062 6.234375 -3.90625 L 7.15625 -3.90625 C 7.113281 -3.476562 7.003906 -3.050781 6.828125 -2.625 C 6.660156 -2.207031 6.425781 -1.796875 6.125 -1.390625 L 7.484375 0 L 6.265625 0 L 5.5625 -0.71875 C 5.21875 -0.425781 4.859375 -0.207031 4.484375 -0.0625 C 4.117188 0.0703125 3.722656 0.140625 3.296875 0.140625 C 2.515625 0.140625 1.875 -0.0820312 1.375 -0.53125 C 0.875 -0.976562 0.625 -1.550781 0.625 -2.25 C 0.625 -2.664062 0.734375 -3.054688 0.953125 -3.421875 C 1.171875 -3.785156 1.5 -4.128906 1.9375 -4.453125 C 1.78125 -4.660156 1.660156 -4.863281 1.578125 -5.0625 C 1.492188 -5.269531 1.453125 -5.472656 1.453125 -5.671875 C 1.453125 -6.191406 1.632812 -6.613281 2 -6.9375 C 2.363281 -7.257812 2.84375 -7.421875 3.4375 -7.421875 C 3.707031 -7.421875 3.976562 -7.390625 4.25 -7.328125 C 4.519531 -7.273438 4.789062 -7.191406 5.0625 -7.078125 L 5.0625 -6.1875 C 4.78125 -6.332031 4.507812 -6.445312 4.25 -6.53125 C 4 -6.613281 3.765625 -6.65625 3.546875 -6.65625 C 3.203125 -6.65625 2.921875 -6.5625 2.703125 -6.375 C 2.492188 -6.195312 2.390625 -5.960938 2.390625 -5.671875 C 2.390625 -5.515625 2.4375 -5.347656 2.53125 -5.171875 C 2.625 -5.003906 2.820312 -4.769531 3.125 -4.46875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-20">
|
||||
<path style="stroke:none;" d="M 0.546875 -5.46875 L 4.8125 -5.46875 L 4.8125 -4.65625 L 1.4375 -0.71875 L 4.8125 -0.71875 L 4.8125 0 L 0.4375 0 L 0.4375 -0.828125 L 3.8125 -4.75 L 0.546875 -4.75 Z M 0.546875 -5.46875 "/>
|
||||
<path style="stroke:none;" d="M 3.71875 -7.59375 L 3.71875 -6.84375 L 2.859375 -6.84375 C 2.535156 -6.84375 2.3125 -6.773438 2.1875 -6.640625 C 2.0625 -6.515625 2 -6.285156 2 -5.953125 L 2 -5.46875 L 3.46875 -5.46875 L 3.46875 -4.765625 L 2 -4.765625 L 2 0 L 1.09375 0 L 1.09375 -4.765625 L 0.234375 -4.765625 L 0.234375 -5.46875 L 1.09375 -5.46875 L 1.09375 -5.84375 C 1.09375 -6.457031 1.234375 -6.898438 1.515625 -7.171875 C 1.796875 -7.453125 2.242188 -7.59375 2.859375 -7.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-21">
|
||||
<path style="stroke:none;" d="M 0.296875 -5.46875 L 1.25 -5.46875 L 2.953125 -0.875 L 4.671875 -5.46875 L 5.625 -5.46875 L 3.5625 0 L 2.34375 0 Z M 0.296875 -5.46875 "/>
|
||||
<path style="stroke:none;" d="M 0.984375 -7.296875 L 2.453125 -7.296875 L 4.3125 -2.328125 L 6.1875 -7.296875 L 7.65625 -7.296875 L 7.65625 0 L 6.6875 0 L 6.6875 -6.40625 L 4.8125 -1.40625 L 3.8125 -1.40625 L 1.9375 -6.40625 L 1.9375 0 L 0.984375 0 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-22">
|
||||
<path style="stroke:none;" d="M 2.4375 -3.921875 C 2.132812 -3.660156 1.914062 -3.394531 1.78125 -3.125 C 1.644531 -2.863281 1.578125 -2.59375 1.578125 -2.3125 C 1.578125 -1.832031 1.75 -1.4375 2.09375 -1.125 C 2.4375 -0.8125 2.867188 -0.65625 3.390625 -0.65625 C 3.703125 -0.65625 3.988281 -0.703125 4.25 -0.796875 C 4.519531 -0.898438 4.773438 -1.054688 5.015625 -1.265625 Z M 3.125 -4.46875 L 5.59375 -1.921875 C 5.789062 -2.210938 5.941406 -2.523438 6.046875 -2.859375 C 6.160156 -3.191406 6.222656 -3.539062 6.234375 -3.90625 L 7.15625 -3.90625 C 7.113281 -3.476562 7.003906 -3.050781 6.828125 -2.625 C 6.660156 -2.207031 6.425781 -1.796875 6.125 -1.390625 L 7.484375 0 L 6.265625 0 L 5.5625 -0.71875 C 5.21875 -0.425781 4.859375 -0.207031 4.484375 -0.0625 C 4.117188 0.0703125 3.722656 0.140625 3.296875 0.140625 C 2.515625 0.140625 1.875 -0.0820312 1.375 -0.53125 C 0.875 -0.976562 0.625 -1.550781 0.625 -2.25 C 0.625 -2.664062 0.734375 -3.054688 0.953125 -3.421875 C 1.171875 -3.785156 1.5 -4.128906 1.9375 -4.453125 C 1.78125 -4.660156 1.660156 -4.863281 1.578125 -5.0625 C 1.492188 -5.269531 1.453125 -5.472656 1.453125 -5.671875 C 1.453125 -6.191406 1.632812 -6.613281 2 -6.9375 C 2.363281 -7.257812 2.84375 -7.421875 3.4375 -7.421875 C 3.707031 -7.421875 3.976562 -7.390625 4.25 -7.328125 C 4.519531 -7.273438 4.789062 -7.191406 5.0625 -7.078125 L 5.0625 -6.1875 C 4.78125 -6.332031 4.507812 -6.445312 4.25 -6.53125 C 4 -6.613281 3.765625 -6.65625 3.546875 -6.65625 C 3.203125 -6.65625 2.921875 -6.5625 2.703125 -6.375 C 2.492188 -6.195312 2.390625 -5.960938 2.390625 -5.671875 C 2.390625 -5.515625 2.4375 -5.347656 2.53125 -5.171875 C 2.625 -5.003906 2.820312 -4.769531 3.125 -4.46875 Z M 3.125 -4.46875 "/>
|
||||
<path style="stroke:none;" d="M 3.0625 -4.84375 C 2.582031 -4.84375 2.203125 -4.65625 1.921875 -4.28125 C 1.640625 -3.90625 1.5 -3.390625 1.5 -2.734375 C 1.5 -2.078125 1.632812 -1.5625 1.90625 -1.1875 C 2.1875 -0.8125 2.570312 -0.625 3.0625 -0.625 C 3.539062 -0.625 3.921875 -0.8125 4.203125 -1.1875 C 4.484375 -1.5625 4.625 -2.078125 4.625 -2.734375 C 4.625 -3.378906 4.484375 -3.890625 4.203125 -4.265625 C 3.921875 -4.648438 3.539062 -4.84375 3.0625 -4.84375 Z M 3.0625 -5.59375 C 3.84375 -5.59375 4.457031 -5.335938 4.90625 -4.828125 C 5.351562 -4.328125 5.578125 -3.628906 5.578125 -2.734375 C 5.578125 -1.835938 5.351562 -1.132812 4.90625 -0.625 C 4.457031 -0.113281 3.84375 0.140625 3.0625 0.140625 C 2.28125 0.140625 1.664062 -0.113281 1.21875 -0.625 C 0.769531 -1.132812 0.546875 -1.835938 0.546875 -2.734375 C 0.546875 -3.628906 0.769531 -4.328125 1.21875 -4.828125 C 1.664062 -5.335938 2.28125 -5.59375 3.0625 -5.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-23">
|
||||
<path style="stroke:none;" d="M 3.71875 -7.59375 L 3.71875 -6.84375 L 2.859375 -6.84375 C 2.535156 -6.84375 2.3125 -6.773438 2.1875 -6.640625 C 2.0625 -6.515625 2 -6.285156 2 -5.953125 L 2 -5.46875 L 3.46875 -5.46875 L 3.46875 -4.765625 L 2 -4.765625 L 2 0 L 1.09375 0 L 1.09375 -4.765625 L 0.234375 -4.765625 L 0.234375 -5.46875 L 1.09375 -5.46875 L 1.09375 -5.84375 C 1.09375 -6.457031 1.234375 -6.898438 1.515625 -7.171875 C 1.796875 -7.453125 2.242188 -7.59375 2.859375 -7.59375 Z M 3.71875 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -5.46875 L 1.8125 -5.46875 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-24">
|
||||
<path style="stroke:none;" d="M 0.984375 -7.296875 L 2.453125 -7.296875 L 4.3125 -2.328125 L 6.1875 -7.296875 L 7.65625 -7.296875 L 7.65625 0 L 6.6875 0 L 6.6875 -6.40625 L 4.8125 -1.40625 L 3.8125 -1.40625 L 1.9375 -6.40625 L 1.9375 0 L 0.984375 0 Z M 0.984375 -7.296875 "/>
|
||||
<path style="stroke:none;" d="M 7.078125 -7.59375 L 7.078125 -6.84375 L 6.21875 -6.84375 C 5.894531 -6.84375 5.671875 -6.773438 5.546875 -6.640625 C 5.421875 -6.515625 5.359375 -6.285156 5.359375 -5.953125 L 5.359375 -5.46875 L 6.84375 -5.46875 L 6.84375 -4.765625 L 5.359375 -4.765625 L 5.359375 0 L 4.453125 0 L 4.453125 -4.765625 L 2 -4.765625 L 2 0 L 1.09375 0 L 1.09375 -4.765625 L 0.234375 -4.765625 L 0.234375 -5.46875 L 1.09375 -5.46875 L 1.09375 -5.84375 C 1.09375 -6.457031 1.234375 -6.898438 1.515625 -7.171875 C 1.796875 -7.453125 2.242188 -7.59375 2.859375 -7.59375 L 3.71875 -7.59375 L 3.71875 -6.84375 L 2.859375 -6.84375 C 2.535156 -6.84375 2.304688 -6.78125 2.171875 -6.65625 C 2.054688 -6.519531 2 -6.285156 2 -5.953125 L 2 -5.46875 L 4.453125 -5.46875 L 4.453125 -5.84375 C 4.453125 -6.457031 4.59375 -6.898438 4.875 -7.171875 C 5.164062 -7.453125 5.617188 -7.59375 6.234375 -7.59375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-25">
|
||||
<path style="stroke:none;" d="M 3.0625 -4.84375 C 2.582031 -4.84375 2.203125 -4.65625 1.921875 -4.28125 C 1.640625 -3.90625 1.5 -3.390625 1.5 -2.734375 C 1.5 -2.078125 1.632812 -1.5625 1.90625 -1.1875 C 2.1875 -0.8125 2.570312 -0.625 3.0625 -0.625 C 3.539062 -0.625 3.921875 -0.8125 4.203125 -1.1875 C 4.484375 -1.5625 4.625 -2.078125 4.625 -2.734375 C 4.625 -3.378906 4.484375 -3.890625 4.203125 -4.265625 C 3.921875 -4.648438 3.539062 -4.84375 3.0625 -4.84375 Z M 3.0625 -5.59375 C 3.84375 -5.59375 4.457031 -5.335938 4.90625 -4.828125 C 5.351562 -4.328125 5.578125 -3.628906 5.578125 -2.734375 C 5.578125 -1.835938 5.351562 -1.132812 4.90625 -0.625 C 4.457031 -0.113281 3.84375 0.140625 3.0625 0.140625 C 2.28125 0.140625 1.664062 -0.113281 1.21875 -0.625 C 0.769531 -1.132812 0.546875 -1.835938 0.546875 -2.734375 C 0.546875 -3.628906 0.769531 -4.328125 1.21875 -4.828125 C 1.664062 -5.335938 2.28125 -5.59375 3.0625 -5.59375 Z M 3.0625 -5.59375 "/>
|
||||
<path style="stroke:none;" d="M 4.875 -5.265625 L 4.875 -4.421875 C 4.625 -4.554688 4.367188 -4.660156 4.109375 -4.734375 C 3.859375 -4.804688 3.601562 -4.84375 3.34375 -4.84375 C 2.757812 -4.84375 2.304688 -4.65625 1.984375 -4.28125 C 1.660156 -3.914062 1.5 -3.398438 1.5 -2.734375 C 1.5 -2.066406 1.660156 -1.546875 1.984375 -1.171875 C 2.304688 -0.804688 2.757812 -0.625 3.34375 -0.625 C 3.601562 -0.625 3.859375 -0.65625 4.109375 -0.71875 C 4.367188 -0.789062 4.625 -0.898438 4.875 -1.046875 L 4.875 -0.203125 C 4.625 -0.0859375 4.363281 -0.00390625 4.09375 0.046875 C 3.832031 0.109375 3.550781 0.140625 3.25 0.140625 C 2.414062 0.140625 1.753906 -0.113281 1.265625 -0.625 C 0.785156 -1.144531 0.546875 -1.847656 0.546875 -2.734375 C 0.546875 -3.617188 0.789062 -4.316406 1.28125 -4.828125 C 1.769531 -5.335938 2.441406 -5.59375 3.296875 -5.59375 C 3.578125 -5.59375 3.847656 -5.566406 4.109375 -5.515625 C 4.367188 -5.460938 4.625 -5.378906 4.875 -5.265625 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-26">
|
||||
<path style="stroke:none;" d="M 7.078125 -7.59375 L 7.078125 -6.84375 L 6.21875 -6.84375 C 5.894531 -6.84375 5.671875 -6.773438 5.546875 -6.640625 C 5.421875 -6.515625 5.359375 -6.285156 5.359375 -5.953125 L 5.359375 -5.46875 L 6.84375 -5.46875 L 6.84375 -4.765625 L 5.359375 -4.765625 L 5.359375 0 L 4.453125 0 L 4.453125 -4.765625 L 2 -4.765625 L 2 0 L 1.09375 0 L 1.09375 -4.765625 L 0.234375 -4.765625 L 0.234375 -5.46875 L 1.09375 -5.46875 L 1.09375 -5.84375 C 1.09375 -6.457031 1.234375 -6.898438 1.515625 -7.171875 C 1.796875 -7.453125 2.242188 -7.59375 2.859375 -7.59375 L 3.71875 -7.59375 L 3.71875 -6.84375 L 2.859375 -6.84375 C 2.535156 -6.84375 2.304688 -6.78125 2.171875 -6.65625 C 2.054688 -6.519531 2 -6.285156 2 -5.953125 L 2 -5.46875 L 4.453125 -5.46875 L 4.453125 -5.84375 C 4.453125 -6.457031 4.59375 -6.898438 4.875 -7.171875 C 5.164062 -7.453125 5.617188 -7.59375 6.234375 -7.59375 Z M 7.078125 -7.59375 "/>
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-27">
|
||||
<path style="stroke:none;" d="M 4.875 -5.265625 L 4.875 -4.421875 C 4.625 -4.554688 4.367188 -4.660156 4.109375 -4.734375 C 3.859375 -4.804688 3.601562 -4.84375 3.34375 -4.84375 C 2.757812 -4.84375 2.304688 -4.65625 1.984375 -4.28125 C 1.660156 -3.914062 1.5 -3.398438 1.5 -2.734375 C 1.5 -2.066406 1.660156 -1.546875 1.984375 -1.171875 C 2.304688 -0.804688 2.757812 -0.625 3.34375 -0.625 C 3.601562 -0.625 3.859375 -0.65625 4.109375 -0.71875 C 4.367188 -0.789062 4.625 -0.898438 4.875 -1.046875 L 4.875 -0.203125 C 4.625 -0.0859375 4.363281 -0.00390625 4.09375 0.046875 C 3.832031 0.109375 3.550781 0.140625 3.25 0.140625 C 2.414062 0.140625 1.753906 -0.113281 1.265625 -0.625 C 0.785156 -1.144531 0.546875 -1.847656 0.546875 -2.734375 C 0.546875 -3.617188 0.789062 -4.316406 1.28125 -4.828125 C 1.769531 -5.335938 2.441406 -5.59375 3.296875 -5.59375 C 3.578125 -5.59375 3.847656 -5.566406 4.109375 -5.515625 C 4.367188 -5.460938 4.625 -5.378906 4.875 -5.265625 Z M 4.875 -5.265625 "/>
|
||||
<path style="stroke:none;" d="M 4.546875 -4.640625 L 4.546875 -7.59375 L 5.4375 -7.59375 L 5.4375 0 L 4.546875 0 L 4.546875 -0.828125 C 4.359375 -0.492188 4.117188 -0.25 3.828125 -0.09375 C 3.535156 0.0625 3.1875 0.140625 2.78125 0.140625 C 2.125 0.140625 1.585938 -0.117188 1.171875 -0.640625 C 0.753906 -1.171875 0.546875 -1.867188 0.546875 -2.734375 C 0.546875 -3.585938 0.753906 -4.273438 1.171875 -4.796875 C 1.585938 -5.328125 2.125 -5.59375 2.78125 -5.59375 C 3.1875 -5.59375 3.535156 -5.515625 3.828125 -5.359375 C 4.117188 -5.203125 4.359375 -4.960938 4.546875 -4.640625 Z M 1.484375 -2.734375 C 1.484375 -2.066406 1.617188 -1.546875 1.890625 -1.171875 C 2.160156 -0.796875 2.535156 -0.609375 3.015625 -0.609375 C 3.484375 -0.609375 3.851562 -0.796875 4.125 -1.171875 C 4.40625 -1.546875 4.546875 -2.066406 4.546875 -2.734375 C 4.546875 -3.390625 4.40625 -3.90625 4.125 -4.28125 C 3.851562 -4.65625 3.484375 -4.84375 3.015625 -4.84375 C 2.535156 -4.84375 2.160156 -4.65625 1.890625 -4.28125 C 1.617188 -3.90625 1.484375 -3.390625 1.484375 -2.734375 Z "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-28">
|
||||
<path style="stroke:none;" d="M 5.484375 -3.296875 L 5.484375 0 L 4.59375 0 L 4.59375 -3.265625 C 4.59375 -3.785156 4.488281 -4.171875 4.28125 -4.421875 C 4.082031 -4.679688 3.78125 -4.8125 3.375 -4.8125 C 2.894531 -4.8125 2.515625 -4.65625 2.234375 -4.34375 C 1.953125 -4.039062 1.8125 -3.625 1.8125 -3.09375 L 1.8125 0 L 0.90625 0 L 0.90625 -7.59375 L 1.8125 -7.59375 L 1.8125 -4.625 C 2.03125 -4.945312 2.285156 -5.1875 2.578125 -5.34375 C 2.867188 -5.507812 3.203125 -5.59375 3.578125 -5.59375 C 4.203125 -5.59375 4.675781 -5.398438 5 -5.015625 C 5.320312 -4.628906 5.484375 -4.054688 5.484375 -3.296875 Z M 5.484375 -3.296875 "/>
|
||||
</symbol>
|
||||
<symbol overflow="visible" id="glyph0-29">
|
||||
<path style="stroke:none;" d="M 5.484375 -5.46875 L 3.515625 -2.8125 L 5.59375 0 L 4.53125 0 L 2.9375 -2.15625 L 1.34375 0 L 0.28125 0 L 2.40625 -2.859375 L 0.46875 -5.46875 L 1.53125 -5.46875 L 2.984375 -3.515625 L 4.421875 -5.46875 Z M 5.484375 -5.46875 "/>
|
||||
<path style="stroke:none;" d="M 5.484375 -5.46875 L 3.515625 -2.8125 L 5.59375 0 L 4.53125 0 L 2.9375 -2.15625 L 1.34375 0 L 0.28125 0 L 2.40625 -2.859375 L 0.46875 -5.46875 L 1.53125 -5.46875 L 2.984375 -3.515625 L 4.421875 -5.46875 Z "/>
|
||||
</symbol>
|
||||
</g>
|
||||
<image id="image22" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVQokT2Su24UQRREz+2+PTM7+2ANESSAbCMIiPgKQAYJRGjJCL6Xv3BowN717Ly6i2At8pLq6FRRQQU1dcQxSAahSpxsGQ5vlE80o4yERBHBzQtBRgGArJSKJ66vPwfrCGCQAQoYhuN1aMAhYFQ16zVd92Gaz6RNHtCEtMiFIgZhTspIlFgXE5Xz58+FhV8eb8wmSsYMi90YYnwKLRgxOYGYeLTl9u7TOJ2W0iiHuT+i2zghnR+6q80aLAaLNAvaln74lsuraVxISFHyUpjmtuj079379YLGAYL7A/ehfzFPrYpLUSUNPVKSXt/uvrctjeNAlVitOBw+DuMzaSGhEjQi1aU8Poznu/svzZKUcMNJnGzZ7y7mfJ5zrRJVgrKruOT98PL2/ke9xCqCY2AEpv7t1D+XTiQ0oRJKTtKTaT7bdxfLLVZhCQx3B9C8Vd7kAc1IqRSk1A1nv++u6hVeYRFveFjQ4jEXNQcVk8Khr8bpdN99rZc0ayxihtn/hoBm5h7JpXj0ve9+NkusgggRMxwWMUWC4UgmhVwY8oPvtsWd4BAIDnZ8J02kSiDRjxSRdbbfXR7XiWAQQjiSVJaayGrDze7y4bSjOEyvNysWiRqcFIhAjAmC4VXi9v5qN7/7B2ykEOmIxVwvAAAAAElFTkSuQmCC"/>
|
||||
<image id="image25" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image28" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image75" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVQokT2Su24UQRREz+2+PTM7+2ANESSAbCMIiPgKQAYJRGjJCL6Xv3BowN717Ly6i2At8pLq6FRRQQU1dcQxSAahSpxsGQ5vlE80o4yERBHBzQtBRgGArJSKJ66vPwfrCGCQAQoYhuN1aMAhYFQ16zVd92Gaz6RNHtCEtMiFIgZhTspIlFgXE5Xz58+FhV8eb8wmSsYMi90YYnwKLRgxOYGYeLTl9u7TOJ2W0iiHuT+i2zghnR+6q80aLAaLNAvaln74lsuraVxISFHyUpjmtuj079379YLGAYL7A/ehfzFPrYpLUSUNPVKSXt/uvrctjeNAlVitOBw+DuMzaSGhEjQi1aU8Poznu/svzZKUcMNJnGzZ7y7mfJ5zrRJVgrKruOT98PL2/ke9xCqCY2AEpv7t1D+XTiQ0oRJKTtKTaT7bdxfLLVZhCQx3B9C8Vd7kAc1IqRSk1A1nv++u6hVeYRFveFjQ4jEXNQcVk8Khr8bpdN99rZc0ayxihtn/hoBm5h7JpXj0ve9+NkusgggRMxwWMUWC4UgmhVwY8oPvtsWd4BAIDnZ8J02kSiDRjxSRdbbfXR7XiWAQQjiSVJaayGrDze7y4bSjOEyvNysWiRqcFIhAjAmC4VXi9v5qN7/7B2ykEOmIxVwvAAAAAElFTkSuQmCC"/>
|
||||
<image id="image78" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image81" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="0" y1="-30" x2="0" y2="-10" gradientTransform="matrix(1,0,0,1,53.809602,179.402308)">
|
||||
<stop offset="0" style="stop-color:rgb(0%,50.196078%,0%);stop-opacity:1;"/>
|
||||
<stop offset="1" style="stop-color:rgb(0%,50.196078%,0%);stop-opacity:0;"/>
|
||||
|
@ -107,382 +104,310 @@
|
|||
<stop offset="0.75" style="stop-color:rgb(100%,67.45098%,67.45098%);stop-opacity:1;"/>
|
||||
<stop offset="1" style="stop-color:rgb(100%,100%,100%);stop-opacity:1;"/>
|
||||
</radialGradient>
|
||||
<image id="image31" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image34" width="4" height="4" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAABmJLR0QA/wD/AP+gvaeTAAAADElEQVQImWNgIB0AAAA0AAEjQ4N1AAAAAElFTkSuQmCC"/>
|
||||
<image id="image84" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image87" width="4" height="4" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAABmJLR0QA/wD/AP+gvaeTAAAADElEQVQImWNgIB0AAAA0AAEjQ4N1AAAAAElFTkSuQmCC"/>
|
||||
</defs>
|
||||
<g id="surface18">
|
||||
<g id="surface71">
|
||||
<rect x="0" y="0" width="256" height="256" style="fill:rgb(70.980392%,81.568627%,81.568627%);fill-opacity:1;stroke:none;"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -41.625 121.21875 L -40.640625 121.21875 L -40.640625 125.65625 C -40.640625 126.4375 -40.5 127 -40.21875 127.34375 C -39.9375 127.6875 -39.480469 127.859375 -38.84375 127.859375 C -38.210938 127.859375 -37.75 127.6875 -37.46875 127.34375 C -37.1875 127 -37.046875 126.4375 -37.046875 125.65625 L -37.046875 121.21875 L -36.046875 121.21875 L -36.046875 125.78125 C -36.046875 126.730469 -36.28125 127.449219 -36.75 127.9375 C -37.21875 128.417969 -37.917969 128.65625 -38.84375 128.65625 C -39.761719 128.65625 -40.453125 128.417969 -40.921875 127.9375 C -41.390625 127.449219 -41.625 126.730469 -41.625 125.78125 Z M -41.625 121.21875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -30.015625 125.21875 L -30.015625 128.515625 L -30.90625 128.515625 L -30.90625 125.25 C -30.90625 124.730469 -31.011719 124.34375 -31.21875 124.09375 C -31.417969 123.835938 -31.71875 123.703125 -32.125 123.703125 C -32.605469 123.703125 -32.984375 123.859375 -33.265625 124.171875 C -33.546875 124.476562 -33.6875 124.890625 -33.6875 125.421875 L -33.6875 128.515625 L -34.59375 128.515625 L -34.59375 123.046875 L -33.6875 123.046875 L -33.6875 123.890625 C -33.46875 123.570312 -33.214844 123.328125 -32.921875 123.171875 C -32.632812 123.007812 -32.296875 122.921875 -31.921875 122.921875 C -31.296875 122.921875 -30.824219 123.117188 -30.5 123.5 C -30.179688 123.886719 -30.015625 124.460938 -30.015625 125.21875 Z M -30.015625 125.21875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -28.5625 123.046875 L -27.65625 123.046875 L -27.65625 128.515625 L -28.5625 128.515625 Z M -28.5625 120.921875 L -27.65625 120.921875 L -27.65625 122.0625 L -28.5625 122.0625 Z M -28.5625 120.921875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -25.671875 121.5 L -25.671875 123.046875 L -23.8125 123.046875 L -23.8125 123.75 L -25.671875 123.75 L -25.671875 126.71875 C -25.671875 127.15625 -25.609375 127.445312 -25.484375 127.578125 C -25.359375 127.703125 -25.109375 127.765625 -24.734375 127.765625 L -23.8125 127.765625 L -23.8125 128.515625 L -24.734375 128.515625 C -25.433594 128.515625 -25.917969 128.386719 -26.1875 128.125 C -26.449219 127.867188 -26.578125 127.398438 -26.578125 126.71875 L -26.578125 123.75 L -27.234375 123.75 L -27.234375 123.046875 L -26.578125 123.046875 L -26.578125 121.5 Z M -25.671875 121.5 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -18.875 125.5625 L -18.875 126 L -23.015625 126 C -22.976562 126.617188 -22.789062 127.085938 -22.453125 127.40625 C -22.121094 127.730469 -21.65625 127.890625 -21.0625 127.890625 C -20.71875 127.890625 -20.386719 127.851562 -20.0625 127.765625 C -19.730469 127.683594 -19.40625 127.558594 -19.09375 127.390625 L -19.09375 128.234375 C -19.417969 128.371094 -19.75 128.476562 -20.09375 128.546875 C -20.429688 128.617188 -20.765625 128.65625 -21.109375 128.65625 C -21.984375 128.65625 -22.679688 128.40625 -23.1875 127.90625 C -23.699219 127.398438 -23.953125 126.703125 -23.953125 125.828125 C -23.953125 124.933594 -23.714844 124.226562 -23.234375 123.703125 C -22.746094 123.183594 -22.089844 122.921875 -21.265625 122.921875 C -20.527344 122.921875 -19.945312 123.15625 -19.515625 123.625 C -19.089844 124.09375 -18.875 124.742188 -18.875 125.5625 Z M -19.78125 125.296875 C -19.78125 124.808594 -19.917969 124.417969 -20.1875 124.125 C -20.460938 123.824219 -20.8125 123.671875 -21.25 123.671875 C -21.761719 123.671875 -22.167969 123.820312 -22.46875 124.109375 C -22.761719 124.390625 -22.933594 124.789062 -22.984375 125.296875 Z M -19.78125 125.296875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -13.953125 123.875 L -13.953125 120.921875 L -13.0625 120.921875 L -13.0625 128.515625 L -13.953125 128.515625 L -13.953125 127.6875 C -14.140625 128.023438 -14.382812 128.265625 -14.671875 128.421875 C -14.964844 128.578125 -15.3125 128.65625 -15.71875 128.65625 C -16.375 128.65625 -16.914062 128.398438 -17.328125 127.875 C -17.746094 127.34375 -17.953125 126.648438 -17.953125 125.78125 C -17.953125 124.929688 -17.746094 124.242188 -17.328125 123.71875 C -16.914062 123.1875 -16.375 122.921875 -15.71875 122.921875 C -15.3125 122.921875 -14.964844 123 -14.671875 123.15625 C -14.382812 123.3125 -14.140625 123.554688 -13.953125 123.875 Z M -17.015625 125.78125 C -17.015625 126.449219 -16.882812 126.96875 -16.609375 127.34375 C -16.339844 127.71875 -15.964844 127.90625 -15.484375 127.90625 C -15.015625 127.90625 -14.648438 127.71875 -14.375 127.34375 C -14.09375 126.96875 -13.953125 126.449219 -13.953125 125.78125 C -13.953125 125.125 -14.09375 124.609375 -14.375 124.234375 C -14.648438 123.859375 -15.015625 123.671875 -15.484375 123.671875 C -15.964844 123.671875 -16.339844 123.859375 -16.609375 124.234375 C -16.882812 124.609375 -17.015625 125.125 -17.015625 125.78125 Z M -17.015625 125.78125 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -4.140625 121.46875 L -4.140625 122.421875 C -4.515625 122.246094 -4.871094 122.117188 -5.203125 122.03125 C -5.539062 121.9375 -5.859375 121.890625 -6.171875 121.890625 C -6.703125 121.890625 -7.117188 121.996094 -7.40625 122.203125 C -7.699219 122.414062 -7.84375 122.710938 -7.84375 123.09375 C -7.84375 123.417969 -7.75 123.664062 -7.5625 123.828125 C -7.367188 123.996094 -6.996094 124.125 -6.453125 124.21875 L -5.859375 124.34375 C -5.132812 124.492188 -4.589844 124.742188 -4.234375 125.09375 C -3.882812 125.4375 -3.703125 125.90625 -3.703125 126.5 C -3.703125 127.210938 -3.945312 127.746094 -4.421875 128.109375 C -4.890625 128.476562 -5.585938 128.65625 -6.5 128.65625 C -6.84375 128.65625 -7.214844 128.613281 -7.609375 128.53125 C -7.996094 128.460938 -8.398438 128.34375 -8.8125 128.1875 L -8.8125 127.171875 C -8.40625 127.402344 -8.015625 127.574219 -7.640625 127.6875 C -7.257812 127.804688 -6.875 127.859375 -6.5 127.859375 C -5.9375 127.859375 -5.507812 127.75 -5.203125 127.53125 C -4.890625 127.304688 -4.734375 126.984375 -4.734375 126.578125 C -4.734375 126.226562 -4.84375 125.949219 -5.0625 125.75 C -5.28125 125.542969 -5.648438 125.386719 -6.15625 125.28125 L -6.75 125.171875 C -7.492188 125.027344 -8.027344 124.796875 -8.359375 124.484375 C -8.683594 124.171875 -8.84375 123.734375 -8.84375 123.171875 C -8.84375 122.527344 -8.621094 122.023438 -8.171875 121.65625 C -7.714844 121.28125 -7.085938 121.09375 -6.28125 121.09375 C -5.9375 121.09375 -5.589844 121.125 -5.234375 121.1875 C -4.882812 121.25 -4.515625 121.34375 -4.140625 121.46875 Z M -4.140625 121.46875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M -1.671875 121.5 L -1.671875 123.046875 L 0.1875 123.046875 L 0.1875 123.75 L -1.671875 123.75 L -1.671875 126.71875 C -1.671875 127.15625 -1.609375 127.445312 -1.484375 127.578125 C -1.359375 127.703125 -1.109375 127.765625 -0.734375 127.765625 L 0.1875 127.765625 L 0.1875 128.515625 L -0.734375 128.515625 C -1.433594 128.515625 -1.917969 128.386719 -2.1875 128.125 C -2.449219 127.867188 -2.578125 127.398438 -2.578125 126.71875 L -2.578125 123.75 L -3.234375 123.75 L -3.234375 123.046875 L -2.578125 123.046875 L -2.578125 121.5 Z M -1.671875 121.5 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.921875 125.765625 C 2.203125 125.765625 1.703125 125.851562 1.421875 126.015625 C 1.140625 126.183594 1 126.464844 1 126.859375 C 1 127.183594 1.101562 127.4375 1.3125 127.625 C 1.519531 127.8125 1.804688 127.90625 2.171875 127.90625 C 2.671875 127.90625 3.070312 127.730469 3.375 127.375 C 3.675781 127.023438 3.828125 126.554688 3.828125 125.96875 L 3.828125 125.765625 Z M 4.71875 125.390625 L 4.71875 128.515625 L 3.828125 128.515625 L 3.828125 127.6875 C 3.617188 128.023438 3.359375 128.265625 3.046875 128.421875 C 2.742188 128.578125 2.375 128.65625 1.9375 128.65625 C 1.375 128.65625 0.925781 128.5 0.59375 128.1875 C 0.257812 127.875 0.09375 127.453125 0.09375 126.921875 C 0.09375 126.308594 0.300781 125.84375 0.71875 125.53125 C 1.132812 125.21875 1.75 125.0625 2.5625 125.0625 L 3.828125 125.0625 L 3.828125 124.96875 C 3.828125 124.5625 3.6875 124.246094 3.40625 124.015625 C 3.132812 123.789062 2.753906 123.671875 2.265625 123.671875 C 1.953125 123.671875 1.644531 123.714844 1.34375 123.796875 C 1.050781 123.871094 0.769531 123.980469 0.5 124.125 L 0.5 123.296875 C 0.832031 123.171875 1.148438 123.078125 1.453125 123.015625 C 1.765625 122.953125 2.066406 122.921875 2.359375 122.921875 C 3.148438 122.921875 3.738281 123.125 4.125 123.53125 C 4.519531 123.9375 4.71875 124.558594 4.71875 125.390625 Z M 4.71875 125.390625 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7.328125 121.5 L 7.328125 123.046875 L 9.1875 123.046875 L 9.1875 123.75 L 7.328125 123.75 L 7.328125 126.71875 C 7.328125 127.15625 7.390625 127.445312 7.515625 127.578125 C 7.640625 127.703125 7.890625 127.765625 8.265625 127.765625 L 9.1875 127.765625 L 9.1875 128.515625 L 8.265625 128.515625 C 7.566406 128.515625 7.082031 128.386719 6.8125 128.125 C 6.550781 127.867188 6.421875 127.398438 6.421875 126.71875 L 6.421875 123.75 L 5.765625 123.75 L 5.765625 123.046875 L 6.421875 123.046875 L 6.421875 121.5 Z M 7.328125 121.5 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14.125 125.5625 L 14.125 126 L 9.984375 126 C 10.023438 126.617188 10.210938 127.085938 10.546875 127.40625 C 10.878906 127.730469 11.34375 127.890625 11.9375 127.890625 C 12.28125 127.890625 12.613281 127.851562 12.9375 127.765625 C 13.269531 127.683594 13.59375 127.558594 13.90625 127.390625 L 13.90625 128.234375 C 13.582031 128.371094 13.25 128.476562 12.90625 128.546875 C 12.570312 128.617188 12.234375 128.65625 11.890625 128.65625 C 11.015625 128.65625 10.320312 128.40625 9.8125 127.90625 C 9.300781 127.398438 9.046875 126.703125 9.046875 125.828125 C 9.046875 124.933594 9.285156 124.226562 9.765625 123.703125 C 10.253906 123.183594 10.910156 122.921875 11.734375 122.921875 C 12.472656 122.921875 13.054688 123.15625 13.484375 123.625 C 13.910156 124.09375 14.125 124.742188 14.125 125.5625 Z M 13.21875 125.296875 C 13.21875 124.808594 13.082031 124.417969 12.8125 124.125 C 12.539062 123.824219 12.1875 123.671875 11.75 123.671875 C 11.238281 123.671875 10.832031 123.820312 10.53125 124.109375 C 10.238281 124.390625 10.066406 124.789062 10.015625 125.296875 Z M 13.21875 125.296875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 18.921875 123.203125 L 18.921875 124.0625 C 18.671875 123.929688 18.410156 123.828125 18.140625 123.765625 C 17.867188 123.703125 17.582031 123.671875 17.28125 123.671875 C 16.84375 123.671875 16.507812 123.742188 16.28125 123.875 C 16.0625 124.011719 15.953125 124.214844 15.953125 124.484375 C 15.953125 124.695312 16.03125 124.859375 16.1875 124.984375 C 16.34375 125.101562 16.664062 125.210938 17.15625 125.3125 L 17.453125 125.390625 C 18.097656 125.527344 18.550781 125.71875 18.8125 125.96875 C 19.082031 126.21875 19.21875 126.5625 19.21875 127 C 19.21875 127.511719 19.015625 127.917969 18.609375 128.21875 C 18.210938 128.511719 17.664062 128.65625 16.96875 128.65625 C 16.664062 128.65625 16.351562 128.625 16.03125 128.5625 C 15.71875 128.511719 15.390625 128.429688 15.046875 128.3125 L 15.046875 127.390625 C 15.378906 127.558594 15.703125 127.6875 16.015625 127.78125 C 16.335938 127.867188 16.660156 127.90625 16.984375 127.90625 C 17.398438 127.90625 17.722656 127.835938 17.953125 127.6875 C 18.179688 127.542969 18.296875 127.339844 18.296875 127.078125 C 18.296875 126.828125 18.210938 126.640625 18.046875 126.515625 C 17.890625 126.382812 17.53125 126.257812 16.96875 126.140625 L 16.65625 126.0625 C 16.101562 125.949219 15.703125 125.773438 15.453125 125.53125 C 15.203125 125.28125 15.078125 124.949219 15.078125 124.53125 C 15.078125 124.011719 15.257812 123.617188 15.625 123.34375 C 15.988281 123.0625 16.507812 122.921875 17.1875 122.921875 C 17.507812 122.921875 17.816406 122.949219 18.109375 123 C 18.410156 123.042969 18.679688 123.109375 18.921875 123.203125 Z M 18.921875 123.203125 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.59375 120.921875 C 25.164062 121.671875 24.84375 122.417969 24.625 123.15625 C 24.414062 123.886719 24.3125 124.625 24.3125 125.375 C 24.3125 126.125 24.414062 126.871094 24.625 127.609375 C 24.84375 128.351562 25.164062 129.085938 25.59375 129.828125 L 24.8125 129.828125 C 24.332031 129.066406 23.96875 128.320312 23.71875 127.578125 C 23.476562 126.839844 23.359375 126.105469 23.359375 125.375 C 23.359375 124.648438 23.476562 123.917969 23.71875 123.1875 C 23.957031 122.449219 24.320312 121.695312 24.8125 120.921875 Z M 25.59375 120.921875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 26.4375 123.046875 L 27.34375 123.046875 L 27.34375 128.609375 C 27.34375 129.304688 27.207031 129.8125 26.9375 130.125 C 26.675781 130.4375 26.25 130.59375 25.65625 130.59375 L 25.3125 130.59375 L 25.3125 129.828125 L 25.5625 129.828125 C 25.90625 129.828125 26.132812 129.75 26.25 129.59375 C 26.375 129.4375 26.4375 129.109375 26.4375 128.609375 Z M 26.4375 120.921875 L 27.34375 120.921875 L 27.34375 122.0625 L 26.4375 122.0625 Z M 26.4375 120.921875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 29.3125 127.6875 L 29.3125 130.59375 L 28.40625 130.59375 L 28.40625 123.046875 L 29.3125 123.046875 L 29.3125 123.875 C 29.5 123.554688 29.734375 123.3125 30.015625 123.15625 C 30.304688 123 30.65625 122.921875 31.0625 122.921875 C 31.726562 122.921875 32.265625 123.1875 32.671875 123.71875 C 33.085938 124.242188 33.296875 124.929688 33.296875 125.78125 C 33.296875 126.648438 33.085938 127.34375 32.671875 127.875 C 32.265625 128.398438 31.726562 128.65625 31.0625 128.65625 C 30.65625 128.65625 30.304688 128.578125 30.015625 128.421875 C 29.734375 128.265625 29.5 128.023438 29.3125 127.6875 Z M 32.375 125.78125 C 32.375 125.125 32.234375 124.609375 31.953125 124.234375 C 31.679688 123.859375 31.3125 123.671875 30.84375 123.671875 C 30.363281 123.671875 29.988281 123.859375 29.71875 124.234375 C 29.445312 124.609375 29.3125 125.125 29.3125 125.78125 C 29.3125 126.449219 29.445312 126.96875 29.71875 127.34375 C 29.988281 127.71875 30.363281 127.90625 30.84375 127.90625 C 31.3125 127.90625 31.679688 127.71875 31.953125 127.34375 C 32.234375 126.96875 32.375 126.449219 32.375 125.78125 Z M 32.375 125.78125 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.046875 125.71875 C 38.046875 125.0625 37.910156 124.558594 37.640625 124.203125 C 37.367188 123.851562 36.992188 123.671875 36.515625 123.671875 C 36.023438 123.671875 35.644531 123.851562 35.375 124.203125 C 35.113281 124.558594 34.984375 125.0625 34.984375 125.71875 C 34.984375 126.367188 35.113281 126.871094 35.375 127.234375 C 35.644531 127.589844 36.023438 127.765625 36.515625 127.765625 C 36.992188 127.765625 37.367188 127.589844 37.640625 127.234375 C 37.910156 126.871094 38.046875 126.367188 38.046875 125.71875 Z M 38.9375 127.84375 C 38.9375 128.769531 38.726562 129.457031 38.3125 129.90625 C 37.90625 130.363281 37.273438 130.59375 36.421875 130.59375 C 36.109375 130.59375 35.8125 130.566406 35.53125 130.515625 C 35.25 130.472656 34.976562 130.40625 34.71875 130.3125 L 34.71875 129.4375 C 34.976562 129.582031 35.234375 129.6875 35.484375 129.75 C 35.742188 129.820312 36.007812 129.859375 36.28125 129.859375 C 36.863281 129.859375 37.300781 129.703125 37.59375 129.390625 C 37.894531 129.085938 38.046875 128.625 38.046875 128 L 38.046875 127.546875 C 37.859375 127.871094 37.617188 128.117188 37.328125 128.28125 C 37.035156 128.4375 36.6875 128.515625 36.28125 128.515625 C 35.613281 128.515625 35.070312 128.261719 34.65625 127.75 C 34.25 127.242188 34.046875 126.5625 34.046875 125.71875 C 34.046875 124.875 34.25 124.199219 34.65625 123.6875 C 35.070312 123.179688 35.613281 122.921875 36.28125 122.921875 C 36.6875 122.921875 37.035156 123 37.328125 123.15625 C 37.617188 123.3125 37.859375 123.554688 38.046875 123.875 L 38.046875 123.046875 L 38.9375 123.046875 Z M 38.9375 127.84375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 40.296875 120.921875 L 41.078125 120.921875 C 41.566406 121.695312 41.929688 122.449219 42.171875 123.1875 C 42.421875 123.917969 42.546875 124.648438 42.546875 125.375 C 42.546875 126.105469 42.421875 126.839844 42.171875 127.578125 C 41.929688 128.320312 41.566406 129.066406 41.078125 129.828125 L 40.296875 129.828125 C 40.734375 129.085938 41.054688 128.351562 41.265625 127.609375 C 41.484375 126.871094 41.59375 126.125 41.59375 125.375 C 41.59375 124.625 41.484375 123.886719 41.265625 123.15625 C 41.054688 122.417969 40.734375 121.671875 40.296875 120.921875 Z M 40.296875 120.921875 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2.640625 127.453125 C 1.921875 127.453125 1.421875 127.539062 1.140625 127.703125 C 0.859375 127.871094 0.71875 128.152344 0.71875 128.546875 C 0.71875 128.871094 0.820312 129.125 1.03125 129.3125 C 1.238281 129.5 1.523438 129.59375 1.890625 129.59375 C 2.390625 129.59375 2.789062 129.417969 3.09375 129.0625 C 3.394531 128.710938 3.546875 128.242188 3.546875 127.65625 L 3.546875 127.453125 Z M 4.4375 127.078125 L 4.4375 130.203125 L 3.546875 130.203125 L 3.546875 129.375 C 3.335938 129.710938 3.078125 129.953125 2.765625 130.109375 C 2.460938 130.265625 2.09375 130.34375 1.65625 130.34375 C 1.09375 130.34375 0.644531 130.1875 0.3125 129.875 C -0.0234375 129.5625 -0.1875 129.140625 -0.1875 128.609375 C -0.1875 127.996094 0.0195312 127.53125 0.4375 127.21875 C 0.851562 126.90625 1.46875 126.75 2.28125 126.75 L 3.546875 126.75 L 3.546875 126.65625 C 3.546875 126.25 3.40625 125.933594 3.125 125.703125 C 2.851562 125.476562 2.472656 125.359375 1.984375 125.359375 C 1.671875 125.359375 1.363281 125.402344 1.0625 125.484375 C 0.769531 125.558594 0.488281 125.667969 0.21875 125.8125 L 0.21875 124.984375 C 0.550781 124.859375 0.867188 124.765625 1.171875 124.703125 C 1.484375 124.640625 1.785156 124.609375 2.078125 124.609375 C 2.867188 124.609375 3.457031 124.8125 3.84375 125.21875 C 4.238281 125.625 4.4375 126.246094 4.4375 127.078125 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7.175781 123.1875 L 7.175781 124.734375 L 9.035156 124.734375 L 9.035156 125.4375 L 7.175781 125.4375 L 7.175781 128.40625 C 7.175781 128.84375 7.238281 129.132812 7.363281 129.265625 C 7.488281 129.390625 7.738281 129.453125 8.113281 129.453125 L 9.035156 129.453125 L 9.035156 130.203125 L 8.113281 130.203125 C 7.414062 130.203125 6.929688 130.074219 6.660156 129.8125 C 6.398438 129.554688 6.269531 129.085938 6.269531 128.40625 L 6.269531 125.4375 L 5.613281 125.4375 L 5.613281 124.734375 L 6.269531 124.734375 L 6.269531 123.1875 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14.890625 127.25 L 14.890625 127.6875 L 10.75 127.6875 C 10.789062 128.304688 10.976562 128.773438 11.3125 129.09375 C 11.644531 129.417969 12.109375 129.578125 12.703125 129.578125 C 13.046875 129.578125 13.378906 129.539062 13.703125 129.453125 C 14.035156 129.371094 14.359375 129.246094 14.671875 129.078125 L 14.671875 129.921875 C 14.347656 130.058594 14.015625 130.164062 13.671875 130.234375 C 13.335938 130.304688 13 130.34375 12.65625 130.34375 C 11.78125 130.34375 11.085938 130.09375 10.578125 129.59375 C 10.066406 129.085938 9.8125 128.390625 9.8125 127.515625 C 9.8125 126.621094 10.050781 125.914062 10.53125 125.390625 C 11.019531 124.871094 11.675781 124.609375 12.5 124.609375 C 13.238281 124.609375 13.820312 124.84375 14.25 125.3125 C 14.675781 125.78125 14.890625 126.429688 14.890625 127.25 Z M 13.984375 126.984375 C 13.984375 126.496094 13.847656 126.105469 13.578125 125.8125 C 13.304688 125.511719 12.953125 125.359375 12.515625 125.359375 C 12.003906 125.359375 11.597656 125.507812 11.296875 125.796875 C 11.003906 126.078125 10.832031 126.476562 10.78125 126.984375 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19.839844 124.890625 L 19.839844 125.75 C 19.589844 125.617188 19.328125 125.515625 19.058594 125.453125 C 18.785156 125.390625 18.5 125.359375 18.199219 125.359375 C 17.761719 125.359375 17.425781 125.429688 17.199219 125.5625 C 16.980469 125.699219 16.871094 125.902344 16.871094 126.171875 C 16.871094 126.382812 16.949219 126.546875 17.105469 126.671875 C 17.261719 126.789062 17.582031 126.898438 18.074219 127 L 18.371094 127.078125 C 19.015625 127.214844 19.46875 127.40625 19.730469 127.65625 C 20 127.90625 20.136719 128.25 20.136719 128.6875 C 20.136719 129.199219 19.933594 129.605469 19.527344 129.90625 C 19.128906 130.199219 18.582031 130.34375 17.886719 130.34375 C 17.582031 130.34375 17.269531 130.3125 16.949219 130.25 C 16.636719 130.199219 16.308594 130.117188 15.964844 130 L 15.964844 129.078125 C 16.296875 129.246094 16.621094 129.375 16.933594 129.46875 C 17.253906 129.554688 17.578125 129.59375 17.902344 129.59375 C 18.316406 129.59375 18.640625 129.523438 18.871094 129.375 C 19.097656 129.230469 19.214844 129.027344 19.214844 128.765625 C 19.214844 128.515625 19.128906 128.328125 18.964844 128.203125 C 18.808594 128.070312 18.449219 127.945312 17.886719 127.828125 L 17.574219 127.75 C 17.019531 127.636719 16.621094 127.460938 16.371094 127.21875 C 16.121094 126.96875 15.996094 126.636719 15.996094 126.21875 C 15.996094 125.699219 16.175781 125.304688 16.542969 125.03125 C 16.90625 124.75 17.425781 124.609375 18.105469 124.609375 C 18.425781 124.609375 18.734375 124.636719 19.027344 124.6875 C 19.328125 124.730469 19.597656 124.796875 19.839844 124.890625 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 26.902344 122.609375 C 26.472656 123.359375 26.152344 124.105469 25.933594 124.84375 C 25.722656 125.574219 25.621094 126.3125 25.621094 127.0625 C 25.621094 127.8125 25.722656 128.558594 25.933594 129.296875 C 26.152344 130.039062 26.472656 130.773438 26.902344 131.515625 L 26.121094 131.515625 C 25.640625 130.753906 25.277344 130.007812 25.027344 129.265625 C 24.785156 128.527344 24.667969 127.792969 24.667969 127.0625 C 24.667969 126.335938 24.785156 125.605469 25.027344 124.875 C 25.265625 124.136719 25.628906 123.382812 26.121094 122.609375 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 28.648438 124.734375 L 29.554688 124.734375 L 29.554688 130.296875 C 29.554688 130.992188 29.417969 131.5 29.148438 131.8125 C 28.886719 132.125 28.460938 132.28125 27.867188 132.28125 L 27.523438 132.28125 L 27.523438 131.515625 L 27.773438 131.515625 C 28.117188 131.515625 28.34375 131.4375 28.460938 131.28125 C 28.585938 131.125 28.648438 130.796875 28.648438 130.296875 Z M 28.648438 122.609375 L 29.554688 122.609375 L 29.554688 123.75 L 28.648438 123.75 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 32.300781 129.375 L 32.300781 132.28125 L 31.394531 132.28125 L 31.394531 124.734375 L 32.300781 124.734375 L 32.300781 125.5625 C 32.488281 125.242188 32.722656 125 33.003906 124.84375 C 33.292969 124.6875 33.644531 124.609375 34.050781 124.609375 C 34.714844 124.609375 35.253906 124.875 35.660156 125.40625 C 36.074219 125.929688 36.285156 126.617188 36.285156 127.46875 C 36.285156 128.335938 36.074219 129.03125 35.660156 129.5625 C 35.253906 130.085938 34.714844 130.34375 34.050781 130.34375 C 33.644531 130.34375 33.292969 130.265625 33.003906 130.109375 C 32.722656 129.953125 32.488281 129.710938 32.300781 129.375 Z M 35.363281 127.46875 C 35.363281 126.8125 35.222656 126.296875 34.941406 125.921875 C 34.667969 125.546875 34.300781 125.359375 33.832031 125.359375 C 33.351562 125.359375 32.976562 125.546875 32.707031 125.921875 C 32.433594 126.296875 32.300781 126.8125 32.300781 127.46875 C 32.300781 128.136719 32.433594 128.65625 32.707031 129.03125 C 32.976562 129.40625 33.351562 129.59375 33.832031 129.59375 C 34.300781 129.59375 34.667969 129.40625 34.941406 129.03125 C 35.222656 128.65625 35.363281 128.136719 35.363281 127.46875 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 41.382812 127.40625 C 41.382812 126.75 41.246094 126.246094 40.976562 125.890625 C 40.703125 125.539062 40.328125 125.359375 39.851562 125.359375 C 39.359375 125.359375 38.980469 125.539062 38.710938 125.890625 C 38.449219 126.246094 38.320312 126.75 38.320312 127.40625 C 38.320312 128.054688 38.449219 128.558594 38.710938 128.921875 C 38.980469 129.277344 39.359375 129.453125 39.851562 129.453125 C 40.328125 129.453125 40.703125 129.277344 40.976562 128.921875 C 41.246094 128.558594 41.382812 128.054688 41.382812 127.40625 Z M 42.273438 129.53125 C 42.273438 130.457031 42.0625 131.144531 41.648438 131.59375 C 41.242188 132.050781 40.609375 132.28125 39.757812 132.28125 C 39.445312 132.28125 39.148438 132.253906 38.867188 132.203125 C 38.585938 132.160156 38.3125 132.09375 38.054688 132 L 38.054688 131.125 C 38.3125 131.269531 38.570312 131.375 38.820312 131.4375 C 39.078125 131.507812 39.34375 131.546875 39.617188 131.546875 C 40.199219 131.546875 40.636719 131.390625 40.929688 131.078125 C 41.230469 130.773438 41.382812 130.3125 41.382812 129.6875 L 41.382812 129.234375 C 41.195312 129.558594 40.953125 129.804688 40.664062 129.96875 C 40.371094 130.125 40.023438 130.203125 39.617188 130.203125 C 38.949219 130.203125 38.40625 129.949219 37.992188 129.4375 C 37.585938 128.929688 37.382812 128.25 37.382812 127.40625 C 37.382812 126.5625 37.585938 125.886719 37.992188 125.375 C 38.40625 124.867188 38.949219 124.609375 39.617188 124.609375 C 40.023438 124.609375 40.371094 124.6875 40.664062 124.84375 C 40.953125 125 41.195312 125.242188 41.382812 125.5625 L 41.382812 124.734375 L 42.273438 124.734375 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 43.980469 122.609375 L 44.761719 122.609375 C 45.25 123.382812 45.613281 124.136719 45.855469 124.875 C 46.105469 125.605469 46.230469 126.335938 46.230469 127.0625 C 46.230469 127.792969 46.105469 128.527344 45.855469 129.265625 C 45.613281 130.007812 45.25 130.753906 44.761719 131.515625 L 43.980469 131.515625 C 44.417969 130.773438 44.738281 130.039062 44.949219 129.296875 C 45.167969 128.558594 45.277344 127.8125 45.277344 127.0625 C 45.277344 126.3125 45.167969 125.574219 44.949219 124.84375 C 44.738281 124.105469 44.417969 123.359375 43.980469 122.609375 Z "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-0" x="-42.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-1" x="-0.78125" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="-35.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-2" x="5.346679" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="-29.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-3" x="9.267578" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="-27.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-4" x="15.419921" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="-24.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-5" x="20.629882" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="-18.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-6" x="23.808593" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="-12.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-7" x="27.709961" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="-9.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-8" x="30.488281" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="-3.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-9" x="36.835937" y="130.204817"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="-0.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-10" x="43.183593" y="130.204817"/>
|
||||
</g>
|
||||
<use xlink:href="#image75" transform="matrix(1,0,0,1,-8,92.517317)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.296875 191.632812 L 220.953125 195.257812 L 223.640625 195.257812 Z M 221.734375 190.648438 L 222.859375 190.648438 L 225.640625 197.945312 L 224.609375 197.945312 L 223.9375 196.070312 L 220.65625 196.070312 L 220 197.945312 L 218.953125 197.945312 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.5625 195.789062 L 226.5625 192.476562 L 227.46875 192.476562 L 227.46875 195.757812 C 227.46875 196.269531 227.566406 196.65625 227.765625 196.914062 C 227.972656 197.175781 228.273438 197.304688 228.671875 197.304688 C 229.160156 197.304688 229.546875 197.15625 229.828125 196.851562 C 230.109375 196.539062 230.25 196.113281 230.25 195.570312 L 230.25 192.476562 L 231.15625 192.476562 L 231.15625 197.945312 L 230.25 197.945312 L 230.25 197.101562 C 230.03125 197.4375 229.773438 197.6875 229.484375 197.851562 C 229.203125 198.007812 228.867188 198.085938 228.484375 198.085938 C 227.859375 198.085938 227.378906 197.894531 227.046875 197.507812 C 226.722656 197.113281 226.5625 196.539062 226.5625 195.789062 Z M 228.828125 192.351562 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.476562 192.632812 L 236.476562 193.492188 C 236.226562 193.359375 235.964844 193.257812 235.695312 193.195312 C 235.421875 193.132812 235.136719 193.101562 234.835938 193.101562 C 234.398438 193.101562 234.0625 193.171875 233.835938 193.304688 C 233.617188 193.441406 233.507812 193.644531 233.507812 193.914062 C 233.507812 194.125 233.585938 194.289062 233.742188 194.414062 C 233.898438 194.53125 234.21875 194.640625 234.710938 194.742188 L 235.007812 194.820312 C 235.652344 194.957031 236.105469 195.148438 236.367188 195.398438 C 236.636719 195.648438 236.773438 195.992188 236.773438 196.429688 C 236.773438 196.941406 236.570312 197.347656 236.164062 197.648438 C 235.765625 197.941406 235.21875 198.085938 234.523438 198.085938 C 234.21875 198.085938 233.90625 198.054688 233.585938 197.992188 C 233.273438 197.941406 232.945312 197.859375 232.601562 197.742188 L 232.601562 196.820312 C 232.933594 196.988281 233.257812 197.117188 233.570312 197.210938 C 233.890625 197.296875 234.214844 197.335938 234.539062 197.335938 C 234.953125 197.335938 235.277344 197.265625 235.507812 197.117188 C 235.734375 196.972656 235.851562 196.769531 235.851562 196.507812 C 235.851562 196.257812 235.765625 196.070312 235.601562 195.945312 C 235.445312 195.8125 235.085938 195.6875 234.523438 195.570312 L 234.210938 195.492188 C 233.65625 195.378906 233.257812 195.203125 233.007812 194.960938 C 232.757812 194.710938 232.632812 194.378906 232.632812 193.960938 C 232.632812 193.441406 232.8125 193.046875 233.179688 192.773438 C 233.542969 192.492188 234.0625 192.351562 234.742188 192.351562 C 235.0625 192.351562 235.371094 192.378906 235.664062 192.429688 C 235.964844 192.472656 236.234375 192.539062 236.476562 192.632812 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.09375 190.929688 L 239.09375 192.476562 L 240.953125 192.476562 L 240.953125 193.179688 L 239.09375 193.179688 L 239.09375 196.148438 C 239.09375 196.585938 239.15625 196.875 239.28125 197.007812 C 239.40625 197.132812 239.65625 197.195312 240.03125 197.195312 L 240.953125 197.195312 L 240.953125 197.945312 L 240.03125 197.945312 C 239.332031 197.945312 238.847656 197.816406 238.578125 197.554688 C 238.316406 197.296875 238.1875 196.828125 238.1875 196.148438 L 238.1875 193.179688 L 237.53125 193.179688 L 237.53125 192.476562 L 238.1875 192.476562 L 238.1875 190.929688 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.296875 193.320312 C 245.191406 193.257812 245.082031 193.21875 244.96875 193.195312 C 244.851562 193.164062 244.722656 193.148438 244.578125 193.148438 C 244.066406 193.148438 243.675781 193.316406 243.40625 193.648438 C 243.132812 193.972656 243 194.445312 243 195.070312 L 243 197.945312 L 242.09375 197.945312 L 242.09375 192.476562 L 243 192.476562 L 243 193.320312 C 243.1875 192.988281 243.429688 192.742188 243.734375 192.585938 C 244.035156 192.429688 244.40625 192.351562 244.84375 192.351562 C 244.90625 192.351562 244.972656 192.359375 245.046875 192.367188 C 245.117188 192.367188 245.203125 192.378906 245.296875 192.398438 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.71875 195.195312 C 248 195.195312 247.5 195.28125 247.21875 195.445312 C 246.9375 195.613281 246.796875 195.894531 246.796875 196.289062 C 246.796875 196.613281 246.898438 196.867188 247.109375 197.054688 C 247.316406 197.242188 247.601562 197.335938 247.96875 197.335938 C 248.46875 197.335938 248.867188 197.160156 249.171875 196.804688 C 249.472656 196.453125 249.625 195.984375 249.625 195.398438 L 249.625 195.195312 Z M 250.515625 194.820312 L 250.515625 197.945312 L 249.625 197.945312 L 249.625 197.117188 C 249.414062 197.453125 249.15625 197.695312 248.84375 197.851562 C 248.539062 198.007812 248.171875 198.085938 247.734375 198.085938 C 247.171875 198.085938 246.722656 197.929688 246.390625 197.617188 C 246.054688 197.304688 245.890625 196.882812 245.890625 196.351562 C 245.890625 195.738281 246.097656 195.273438 246.515625 194.960938 C 246.929688 194.648438 247.546875 194.492188 248.359375 194.492188 L 249.625 194.492188 L 249.625 194.398438 C 249.625 193.992188 249.484375 193.675781 249.203125 193.445312 C 248.929688 193.21875 248.550781 193.101562 248.0625 193.101562 C 247.75 193.101562 247.441406 193.144531 247.140625 193.226562 C 246.847656 193.300781 246.566406 193.410156 246.296875 193.554688 L 246.296875 192.726562 C 246.628906 192.601562 246.945312 192.507812 247.25 192.445312 C 247.5625 192.382812 247.863281 192.351562 248.15625 192.351562 C 248.945312 192.351562 249.535156 192.554688 249.921875 192.960938 C 250.316406 193.367188 250.515625 193.988281 250.515625 194.820312 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.363281 190.351562 L 253.269531 190.351562 L 253.269531 197.945312 L 252.363281 197.945312 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.140625 192.476562 L 256.046875 192.476562 L 256.046875 197.945312 L 255.140625 197.945312 Z M 255.140625 190.351562 L 256.046875 190.351562 L 256.046875 191.492188 L 255.140625 191.492188 Z "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="5.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-11" x="218.875978" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="8.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-12" x="225.716799" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="14.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-4" x="232.054689" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="19.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-2" x="237.26465" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="22.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-13" x="241.185549" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-11" x="25.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-1" x="245.296877" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="27.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-14" x="251.424807" y="197.94629"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="33.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-15" x="254.203127" y="197.94629"/>
|
||||
</g>
|
||||
<use xlink:href="#image78" transform="matrix(1,0,0,1,248.000002,160.88379)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 15.496094 184.980469 L 15.496094 187.652344 L 17.074219 187.652344 C 17.605469 187.652344 17.996094 187.542969 18.246094 187.324219 C 18.503906 187.105469 18.636719 186.769531 18.636719 186.308594 C 18.636719 185.863281 18.503906 185.527344 18.246094 185.308594 C 17.996094 185.089844 17.605469 184.980469 17.074219 184.980469 Z M 15.496094 181.980469 L 15.496094 184.183594 L 16.949219 184.183594 C 17.4375 184.183594 17.796875 184.097656 18.027344 183.917969 C 18.265625 183.730469 18.386719 183.457031 18.386719 183.089844 C 18.386719 182.714844 18.265625 182.441406 18.027344 182.261719 C 17.796875 182.074219 17.4375 181.980469 16.949219 181.980469 Z M 14.511719 181.167969 L 17.027344 181.167969 C 17.777344 181.167969 18.355469 181.324219 18.761719 181.636719 C 19.167969 181.949219 19.371094 182.398438 19.371094 182.980469 C 19.371094 183.429688 19.265625 183.785156 19.058594 184.042969 C 18.847656 184.304688 18.546875 184.464844 18.152344 184.527344 C 18.628906 184.632812 19.003906 184.851562 19.277344 185.183594 C 19.546875 185.519531 19.683594 185.929688 19.683594 186.417969 C 19.683594 187.074219 19.457031 187.582031 19.011719 187.933594 C 18.574219 188.289062 17.941406 188.464844 17.121094 188.464844 L 14.511719 188.464844 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.496094 183.839844 C 24.390625 183.777344 24.28125 183.738281 24.167969 183.714844 C 24.050781 183.683594 23.921875 183.667969 23.777344 183.667969 C 23.265625 183.667969 22.875 183.835938 22.605469 184.167969 C 22.332031 184.492188 22.199219 184.964844 22.199219 185.589844 L 22.199219 188.464844 L 21.292969 188.464844 L 21.292969 182.996094 L 22.199219 182.996094 L 22.199219 183.839844 C 22.386719 183.507812 22.628906 183.261719 22.933594 183.105469 C 23.234375 182.949219 23.605469 182.871094 24.042969 182.871094 C 24.105469 182.871094 24.171875 182.878906 24.246094 182.886719 C 24.316406 182.886719 24.402344 182.898438 24.496094 182.917969 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 27.917969 185.714844 C 27.199219 185.714844 26.699219 185.800781 26.417969 185.964844 C 26.136719 186.132812 25.996094 186.414062 25.996094 186.808594 C 25.996094 187.132812 26.097656 187.386719 26.308594 187.574219 C 26.515625 187.761719 26.800781 187.855469 27.167969 187.855469 C 27.667969 187.855469 28.066406 187.679688 28.371094 187.324219 C 28.671875 186.972656 28.824219 186.503906 28.824219 185.917969 L 28.824219 185.714844 Z M 29.714844 185.339844 L 29.714844 188.464844 L 28.824219 188.464844 L 28.824219 187.636719 C 28.613281 187.972656 28.355469 188.214844 28.042969 188.371094 C 27.738281 188.527344 27.371094 188.605469 26.933594 188.605469 C 26.371094 188.605469 25.921875 188.449219 25.589844 188.136719 C 25.253906 187.824219 25.089844 187.402344 25.089844 186.871094 C 25.089844 186.257812 25.296875 185.792969 25.714844 185.480469 C 26.128906 185.167969 26.746094 185.011719 27.558594 185.011719 L 28.824219 185.011719 L 28.824219 184.917969 C 28.824219 184.511719 28.683594 184.195312 28.402344 183.964844 C 28.128906 183.738281 27.75 183.621094 27.261719 183.621094 C 26.949219 183.621094 26.640625 183.664062 26.339844 183.746094 C 26.046875 183.820312 25.765625 183.929688 25.496094 184.074219 L 25.496094 183.246094 C 25.828125 183.121094 26.144531 183.027344 26.449219 182.964844 C 26.761719 182.902344 27.0625 182.871094 27.355469 182.871094 C 28.144531 182.871094 28.734375 183.074219 29.121094 183.480469 C 29.515625 183.886719 29.714844 184.507812 29.714844 185.339844 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.171875 182.996094 L 35.4375 182.996094 L 35.4375 183.808594 L 32.0625 187.746094 L 35.4375 187.746094 L 35.4375 188.464844 L 31.0625 188.464844 L 31.0625 187.636719 L 34.4375 183.714844 L 31.171875 183.714844 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.8125 182.996094 L 37.71875 182.996094 L 37.71875 188.464844 L 36.8125 188.464844 Z M 36.8125 180.871094 L 37.71875 180.871094 L 37.71875 182.011719 L 36.8125 182.011719 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.589844 180.871094 L 40.496094 180.871094 L 40.496094 188.464844 L 39.589844 188.464844 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 47.703125 180.871094 C 47.273438 181.621094 46.953125 182.367188 46.734375 183.105469 C 46.523438 183.835938 46.421875 184.574219 46.421875 185.324219 C 46.421875 186.074219 46.523438 186.820312 46.734375 187.558594 C 46.953125 188.300781 47.273438 189.035156 47.703125 189.777344 L 46.921875 189.777344 C 46.441406 189.015625 46.078125 188.269531 45.828125 187.527344 C 45.585938 186.789062 45.46875 186.054688 45.46875 185.324219 C 45.46875 184.597656 45.585938 183.867188 45.828125 183.136719 C 46.066406 182.398438 46.429688 181.644531 46.921875 180.871094 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 52.933594 183.152344 L 52.933594 184.011719 C 52.683594 183.878906 52.421875 183.777344 52.152344 183.714844 C 51.878906 183.652344 51.59375 183.621094 51.292969 183.621094 C 50.855469 183.621094 50.519531 183.691406 50.292969 183.824219 C 50.074219 183.960938 49.964844 184.164062 49.964844 184.433594 C 49.964844 184.644531 50.042969 184.808594 50.199219 184.933594 C 50.355469 185.050781 50.675781 185.160156 51.167969 185.261719 L 51.464844 185.339844 C 52.109375 185.476562 52.5625 185.667969 52.824219 185.917969 C 53.09375 186.167969 53.230469 186.511719 53.230469 186.949219 C 53.230469 187.460938 53.027344 187.867188 52.621094 188.167969 C 52.222656 188.460938 51.675781 188.605469 50.980469 188.605469 C 50.675781 188.605469 50.363281 188.574219 50.042969 188.511719 C 49.730469 188.460938 49.402344 188.378906 49.058594 188.261719 L 49.058594 187.339844 C 49.390625 187.507812 49.714844 187.636719 50.027344 187.730469 C 50.347656 187.816406 50.671875 187.855469 50.996094 187.855469 C 51.410156 187.855469 51.734375 187.785156 51.964844 187.636719 C 52.191406 187.492188 52.308594 187.289062 52.308594 187.027344 C 52.308594 186.777344 52.222656 186.589844 52.058594 186.464844 C 51.902344 186.332031 51.542969 186.207031 50.980469 186.089844 L 50.667969 186.011719 C 50.113281 185.898438 49.714844 185.722656 49.464844 185.480469 C 49.214844 185.230469 49.089844 184.898438 49.089844 184.480469 C 49.089844 183.960938 49.269531 183.566406 49.636719 183.292969 C 50 183.011719 50.519531 182.871094 51.199219 182.871094 C 51.519531 182.871094 51.828125 182.898438 52.121094 182.949219 C 52.421875 182.992188 52.691406 183.058594 52.933594 183.152344 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.019531 182.996094 L 54.972656 182.996094 L 56.675781 187.589844 L 58.394531 182.996094 L 59.347656 182.996094 L 57.285156 188.464844 L 56.066406 188.464844 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 64.1875 185.667969 C 64.1875 185.011719 64.050781 184.507812 63.78125 184.152344 C 63.507812 183.800781 63.132812 183.621094 62.65625 183.621094 C 62.164062 183.621094 61.785156 183.800781 61.515625 184.152344 C 61.253906 184.507812 61.125 185.011719 61.125 185.667969 C 61.125 186.316406 61.253906 186.820312 61.515625 187.183594 C 61.785156 187.539062 62.164062 187.714844 62.65625 187.714844 C 63.132812 187.714844 63.507812 187.539062 63.78125 187.183594 C 64.050781 186.820312 64.1875 186.316406 64.1875 185.667969 Z M 65.078125 187.792969 C 65.078125 188.71875 64.867188 189.40625 64.453125 189.855469 C 64.046875 190.3125 63.414062 190.542969 62.5625 190.542969 C 62.25 190.542969 61.953125 190.515625 61.671875 190.464844 C 61.390625 190.421875 61.117188 190.355469 60.859375 190.261719 L 60.859375 189.386719 C 61.117188 189.53125 61.375 189.636719 61.625 189.699219 C 61.882812 189.769531 62.148438 189.808594 62.421875 189.808594 C 63.003906 189.808594 63.441406 189.652344 63.734375 189.339844 C 64.035156 189.035156 64.1875 188.574219 64.1875 187.949219 L 64.1875 187.496094 C 64 187.820312 63.757812 188.066406 63.46875 188.230469 C 63.175781 188.386719 62.828125 188.464844 62.421875 188.464844 C 61.753906 188.464844 61.210938 188.210938 60.796875 187.699219 C 60.390625 187.191406 60.1875 186.511719 60.1875 185.667969 C 60.1875 184.824219 60.390625 184.148438 60.796875 183.636719 C 61.210938 183.128906 61.753906 182.871094 62.421875 182.871094 C 62.828125 182.871094 63.175781 182.949219 63.46875 183.105469 C 63.757812 183.261719 64 183.503906 64.1875 183.824219 L 64.1875 182.996094 L 65.078125 182.996094 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.601562 184.542969 C 71.296875 184.804688 71.078125 185.070312 70.945312 185.339844 C 70.808594 185.601562 70.742188 185.871094 70.742188 186.152344 C 70.742188 186.632812 70.914062 187.027344 71.257812 187.339844 C 71.601562 187.652344 72.03125 187.808594 72.554688 187.808594 C 72.867188 187.808594 73.152344 187.761719 73.414062 187.667969 C 73.683594 187.566406 73.9375 187.410156 74.179688 187.199219 Z M 72.289062 183.996094 L 74.757812 186.542969 C 74.953125 186.253906 75.105469 185.941406 75.210938 185.605469 C 75.324219 185.273438 75.386719 184.925781 75.398438 184.558594 L 76.320312 184.558594 C 76.277344 184.988281 76.167969 185.414062 75.992188 185.839844 C 75.824219 186.257812 75.589844 186.667969 75.289062 187.074219 L 76.648438 188.464844 L 75.429688 188.464844 L 74.726562 187.746094 C 74.382812 188.039062 74.023438 188.257812 73.648438 188.402344 C 73.28125 188.535156 72.886719 188.605469 72.460938 188.605469 C 71.679688 188.605469 71.039062 188.382812 70.539062 187.933594 C 70.039062 187.488281 69.789062 186.914062 69.789062 186.214844 C 69.789062 185.800781 69.898438 185.410156 70.117188 185.042969 C 70.335938 184.679688 70.664062 184.335938 71.101562 184.011719 C 70.945312 183.804688 70.824219 183.601562 70.742188 183.402344 C 70.65625 183.195312 70.617188 182.992188 70.617188 182.792969 C 70.617188 182.273438 70.796875 181.851562 71.164062 181.527344 C 71.527344 181.207031 72.007812 181.042969 72.601562 181.042969 C 72.871094 181.042969 73.140625 181.074219 73.414062 181.136719 C 73.683594 181.191406 73.953125 181.273438 74.226562 181.386719 L 74.226562 182.277344 C 73.945312 182.132812 73.671875 182.019531 73.414062 181.933594 C 73.164062 181.851562 72.929688 181.808594 72.710938 181.808594 C 72.367188 181.808594 72.085938 181.902344 71.867188 182.089844 C 71.65625 182.269531 71.554688 182.503906 71.554688 182.792969 C 71.554688 182.949219 71.601562 183.117188 71.695312 183.292969 C 71.789062 183.460938 71.984375 183.695312 72.289062 183.996094 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.96875 181.449219 L 81.96875 182.996094 L 83.828125 182.996094 L 83.828125 183.699219 L 81.96875 183.699219 L 81.96875 186.667969 C 81.96875 187.105469 82.03125 187.394531 82.15625 187.527344 C 82.28125 187.652344 82.53125 187.714844 82.90625 187.714844 L 83.828125 187.714844 L 83.828125 188.464844 L 82.90625 188.464844 C 82.207031 188.464844 81.722656 188.335938 81.453125 188.074219 C 81.191406 187.816406 81.0625 187.347656 81.0625 186.667969 L 81.0625 183.699219 L 80.40625 183.699219 L 80.40625 182.996094 L 81.0625 182.996094 L 81.0625 181.449219 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85 182.996094 L 85.90625 182.996094 L 85.90625 188.464844 L 85 188.464844 Z M 85 180.871094 L 85.90625 180.871094 L 85.90625 182.011719 L 85 182.011719 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 90.558594 180.871094 L 90.558594 181.621094 L 89.699219 181.621094 C 89.375 181.621094 89.152344 181.691406 89.027344 181.824219 C 88.902344 181.949219 88.839844 182.179688 88.839844 182.511719 L 88.839844 182.996094 L 90.308594 182.996094 L 90.308594 183.699219 L 88.839844 183.699219 L 88.839844 188.464844 L 87.933594 188.464844 L 87.933594 183.699219 L 87.074219 183.699219 L 87.074219 182.996094 L 87.933594 182.996094 L 87.933594 182.621094 C 87.933594 182.007812 88.074219 181.566406 88.355469 181.292969 C 88.636719 181.011719 89.082031 180.871094 89.699219 180.871094 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 91.160156 180.871094 L 91.941406 180.871094 C 92.429688 181.644531 92.792969 182.398438 93.035156 183.136719 C 93.285156 183.867188 93.410156 184.597656 93.410156 185.324219 C 93.410156 186.054688 93.285156 186.789062 93.035156 187.527344 C 92.792969 188.269531 92.429688 189.015625 91.941406 189.777344 L 91.160156 189.777344 C 91.597656 189.035156 91.917969 188.300781 92.128906 187.558594 C 92.347656 186.820312 92.457031 186.074219 92.457031 185.324219 C 92.457031 184.574219 92.347656 183.835938 92.128906 183.105469 C 91.917969 182.367188 91.597656 181.621094 91.160156 180.871094 Z "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="39.5" y="128.517317"/>
|
||||
<use xlink:href="#glyph0-16" x="13.526085" y="188.464808"/>
|
||||
</g>
|
||||
<use xlink:href="#image22" transform="matrix(1,0,0,1,-8,92.517317)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 225.921875 190.570312 L 224.578125 194.195312 L 227.265625 194.195312 Z M 225.359375 189.585938 L 226.484375 189.585938 L 229.265625 196.882812 L 228.234375 196.882812 L 227.5625 195.007812 L 224.28125 195.007812 L 223.625 196.882812 L 222.578125 196.882812 Z M 225.359375 189.585938 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.34375 194.726562 L 229.34375 191.414062 L 230.25 191.414062 L 230.25 194.695312 C 230.25 195.207031 230.347656 195.59375 230.546875 195.851562 C 230.753906 196.113281 231.054688 196.242188 231.453125 196.242188 C 231.941406 196.242188 232.328125 196.09375 232.609375 195.789062 C 232.890625 195.476562 233.03125 195.050781 233.03125 194.507812 L 233.03125 191.414062 L 233.9375 191.414062 L 233.9375 196.882812 L 233.03125 196.882812 L 233.03125 196.039062 C 232.8125 196.375 232.554688 196.625 232.265625 196.789062 C 231.984375 196.945312 231.648438 197.023438 231.265625 197.023438 C 230.640625 197.023438 230.160156 196.832031 229.828125 196.445312 C 229.503906 196.050781 229.34375 195.476562 229.34375 194.726562 Z M 231.609375 191.289062 Z M 231.609375 191.289062 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.921875 191.570312 L 238.921875 192.429688 C 238.671875 192.296875 238.410156 192.195312 238.140625 192.132812 C 237.867188 192.070312 237.582031 192.039062 237.28125 192.039062 C 236.84375 192.039062 236.507812 192.109375 236.28125 192.242188 C 236.0625 192.378906 235.953125 192.582031 235.953125 192.851562 C 235.953125 193.0625 236.03125 193.226562 236.1875 193.351562 C 236.34375 193.46875 236.664062 193.578125 237.15625 193.679688 L 237.453125 193.757812 C 238.097656 193.894531 238.550781 194.085938 238.8125 194.335938 C 239.082031 194.585938 239.21875 194.929688 239.21875 195.367188 C 239.21875 195.878906 239.015625 196.285156 238.609375 196.585938 C 238.210938 196.878906 237.664062 197.023438 236.96875 197.023438 C 236.664062 197.023438 236.351562 196.992188 236.03125 196.929688 C 235.71875 196.878906 235.390625 196.796875 235.046875 196.679688 L 235.046875 195.757812 C 235.378906 195.925781 235.703125 196.054688 236.015625 196.148438 C 236.335938 196.234375 236.660156 196.273438 236.984375 196.273438 C 237.398438 196.273438 237.722656 196.203125 237.953125 196.054688 C 238.179688 195.910156 238.296875 195.707031 238.296875 195.445312 C 238.296875 195.195312 238.210938 195.007812 238.046875 194.882812 C 237.890625 194.75 237.53125 194.625 236.96875 194.507812 L 236.65625 194.429688 C 236.101562 194.316406 235.703125 194.140625 235.453125 193.898438 C 235.203125 193.648438 235.078125 193.316406 235.078125 192.898438 C 235.078125 192.378906 235.257812 191.984375 235.625 191.710938 C 235.988281 191.429688 236.507812 191.289062 237.1875 191.289062 C 237.507812 191.289062 237.816406 191.316406 238.109375 191.367188 C 238.410156 191.410156 238.679688 191.476562 238.921875 191.570312 Z M 238.921875 191.570312 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.328125 189.867188 L 241.328125 191.414062 L 243.1875 191.414062 L 243.1875 192.117188 L 241.328125 192.117188 L 241.328125 195.085938 C 241.328125 195.523438 241.390625 195.8125 241.515625 195.945312 C 241.640625 196.070312 241.890625 196.132812 242.265625 196.132812 L 243.1875 196.132812 L 243.1875 196.882812 L 242.265625 196.882812 C 241.566406 196.882812 241.082031 196.753906 240.8125 196.492188 C 240.550781 196.234375 240.421875 195.765625 240.421875 195.085938 L 240.421875 192.117188 L 239.765625 192.117188 L 239.765625 191.414062 L 240.421875 191.414062 L 240.421875 189.867188 Z M 241.328125 189.867188 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 246.609375 192.257812 C 246.503906 192.195312 246.394531 192.15625 246.28125 192.132812 C 246.164062 192.101562 246.035156 192.085938 245.890625 192.085938 C 245.378906 192.085938 244.988281 192.253906 244.71875 192.585938 C 244.445312 192.910156 244.3125 193.382812 244.3125 194.007812 L 244.3125 196.882812 L 243.40625 196.882812 L 243.40625 191.414062 L 244.3125 191.414062 L 244.3125 192.257812 C 244.5 191.925781 244.742188 191.679688 245.046875 191.523438 C 245.347656 191.367188 245.71875 191.289062 246.15625 191.289062 C 246.21875 191.289062 246.285156 191.296875 246.359375 191.304688 C 246.429688 191.304688 246.515625 191.316406 246.609375 191.335938 Z M 246.609375 192.257812 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.921875 194.132812 C 249.203125 194.132812 248.703125 194.21875 248.421875 194.382812 C 248.140625 194.550781 248 194.832031 248 195.226562 C 248 195.550781 248.101562 195.804688 248.3125 195.992188 C 248.519531 196.179688 248.804688 196.273438 249.171875 196.273438 C 249.671875 196.273438 250.070312 196.097656 250.375 195.742188 C 250.675781 195.390625 250.828125 194.921875 250.828125 194.335938 L 250.828125 194.132812 Z M 251.71875 193.757812 L 251.71875 196.882812 L 250.828125 196.882812 L 250.828125 196.054688 C 250.617188 196.390625 250.359375 196.632812 250.046875 196.789062 C 249.742188 196.945312 249.375 197.023438 248.9375 197.023438 C 248.375 197.023438 247.925781 196.867188 247.59375 196.554688 C 247.257812 196.242188 247.09375 195.820312 247.09375 195.289062 C 247.09375 194.675781 247.300781 194.210938 247.71875 193.898438 C 248.132812 193.585938 248.75 193.429688 249.5625 193.429688 L 250.828125 193.429688 L 250.828125 193.335938 C 250.828125 192.929688 250.6875 192.613281 250.40625 192.382812 C 250.132812 192.15625 249.753906 192.039062 249.265625 192.039062 C 248.953125 192.039062 248.644531 192.082031 248.34375 192.164062 C 248.050781 192.238281 247.769531 192.347656 247.5 192.492188 L 247.5 191.664062 C 247.832031 191.539062 248.148438 191.445312 248.453125 191.382812 C 248.765625 191.320312 249.066406 191.289062 249.359375 191.289062 C 250.148438 191.289062 250.738281 191.492188 251.125 191.898438 C 251.519531 192.304688 251.71875 192.925781 251.71875 193.757812 Z M 251.71875 193.757812 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 253.4375 189.289062 L 254.34375 189.289062 L 254.34375 196.882812 L 253.4375 196.882812 Z M 253.4375 189.289062 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.4375 191.414062 L 256.34375 191.414062 L 256.34375 196.882812 L 255.4375 196.882812 Z M 255.4375 189.289062 L 256.34375 189.289062 L 256.34375 190.429688 L 255.4375 190.429688 Z M 255.4375 189.289062 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.921875 194.132812 C 259.203125 194.132812 258.703125 194.21875 258.421875 194.382812 C 258.140625 194.550781 258 194.832031 258 195.226562 C 258 195.550781 258.101562 195.804688 258.3125 195.992188 C 258.519531 196.179688 258.804688 196.273438 259.171875 196.273438 C 259.671875 196.273438 260.070312 196.097656 260.375 195.742188 C 260.675781 195.390625 260.828125 194.921875 260.828125 194.335938 L 260.828125 194.132812 Z M 261.71875 193.757812 L 261.71875 196.882812 L 260.828125 196.882812 L 260.828125 196.054688 C 260.617188 196.390625 260.359375 196.632812 260.046875 196.789062 C 259.742188 196.945312 259.375 197.023438 258.9375 197.023438 C 258.375 197.023438 257.925781 196.867188 257.59375 196.554688 C 257.257812 196.242188 257.09375 195.820312 257.09375 195.289062 C 257.09375 194.675781 257.300781 194.210938 257.71875 193.898438 C 258.132812 193.585938 258.75 193.429688 259.5625 193.429688 L 260.828125 193.429688 L 260.828125 193.335938 C 260.828125 192.929688 260.6875 192.613281 260.40625 192.382812 C 260.132812 192.15625 259.753906 192.039062 259.265625 192.039062 C 258.953125 192.039062 258.644531 192.082031 258.34375 192.164062 C 258.050781 192.238281 257.769531 192.347656 257.5 192.492188 L 257.5 191.664062 C 257.832031 191.539062 258.148438 191.445312 258.453125 191.382812 C 258.765625 191.320312 259.066406 191.289062 259.359375 191.289062 C 260.148438 191.289062 260.738281 191.492188 261.125 191.898438 C 261.519531 192.304688 261.71875 192.925781 261.71875 193.757812 Z M 261.71875 193.757812 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 268.59375 189.289062 C 268.164062 190.039062 267.84375 190.785156 267.625 191.523438 C 267.414062 192.253906 267.3125 192.992188 267.3125 193.742188 C 267.3125 194.492188 267.414062 195.238281 267.625 195.976562 C 267.84375 196.71875 268.164062 197.453125 268.59375 198.195312 L 267.8125 198.195312 C 267.332031 197.433594 266.96875 196.6875 266.71875 195.945312 C 266.476562 195.207031 266.359375 194.472656 266.359375 193.742188 C 266.359375 193.015625 266.476562 192.285156 266.71875 191.554688 C 266.957031 190.816406 267.320312 190.0625 267.8125 189.289062 Z M 268.59375 189.289062 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.3125 196.054688 L 270.3125 198.960938 L 269.40625 198.960938 L 269.40625 191.414062 L 270.3125 191.414062 L 270.3125 192.242188 C 270.5 191.921875 270.734375 191.679688 271.015625 191.523438 C 271.304688 191.367188 271.65625 191.289062 272.0625 191.289062 C 272.726562 191.289062 273.265625 191.554688 273.671875 192.085938 C 274.085938 192.609375 274.296875 193.296875 274.296875 194.148438 C 274.296875 195.015625 274.085938 195.710938 273.671875 196.242188 C 273.265625 196.765625 272.726562 197.023438 272.0625 197.023438 C 271.65625 197.023438 271.304688 196.945312 271.015625 196.789062 C 270.734375 196.632812 270.5 196.390625 270.3125 196.054688 Z M 273.375 194.148438 C 273.375 193.492188 273.234375 192.976562 272.953125 192.601562 C 272.679688 192.226562 272.3125 192.039062 271.84375 192.039062 C 271.363281 192.039062 270.988281 192.226562 270.71875 192.601562 C 270.445312 192.976562 270.3125 193.492188 270.3125 194.148438 C 270.3125 194.816406 270.445312 195.335938 270.71875 195.710938 C 270.988281 196.085938 271.363281 196.273438 271.84375 196.273438 C 272.3125 196.273438 272.679688 196.085938 272.953125 195.710938 C 273.234375 195.335938 273.375 194.816406 273.375 194.148438 Z M 273.375 194.148438 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279.984375 193.585938 L 279.984375 196.882812 L 279.09375 196.882812 L 279.09375 193.617188 C 279.09375 193.097656 278.988281 192.710938 278.78125 192.460938 C 278.582031 192.203125 278.28125 192.070312 277.875 192.070312 C 277.394531 192.070312 277.015625 192.226562 276.734375 192.539062 C 276.453125 192.84375 276.3125 193.257812 276.3125 193.789062 L 276.3125 196.882812 L 275.40625 196.882812 L 275.40625 191.414062 L 276.3125 191.414062 L 276.3125 192.257812 C 276.53125 191.9375 276.785156 191.695312 277.078125 191.539062 C 277.367188 191.375 277.703125 191.289062 278.078125 191.289062 C 278.703125 191.289062 279.175781 191.484375 279.5 191.867188 C 279.820312 192.253906 279.984375 192.828125 279.984375 193.585938 Z M 279.984375 193.585938 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.046875 194.085938 C 285.046875 193.429688 284.910156 192.925781 284.640625 192.570312 C 284.367188 192.21875 283.992188 192.039062 283.515625 192.039062 C 283.023438 192.039062 282.644531 192.21875 282.375 192.570312 C 282.113281 192.925781 281.984375 193.429688 281.984375 194.085938 C 281.984375 194.734375 282.113281 195.238281 282.375 195.601562 C 282.644531 195.957031 283.023438 196.132812 283.515625 196.132812 C 283.992188 196.132812 284.367188 195.957031 284.640625 195.601562 C 284.910156 195.238281 285.046875 194.734375 285.046875 194.085938 Z M 285.9375 196.210938 C 285.9375 197.136719 285.726562 197.824219 285.3125 198.273438 C 284.90625 198.730469 284.273438 198.960938 283.421875 198.960938 C 283.109375 198.960938 282.8125 198.933594 282.53125 198.882812 C 282.25 198.839844 281.976562 198.773438 281.71875 198.679688 L 281.71875 197.804688 C 281.976562 197.949219 282.234375 198.054688 282.484375 198.117188 C 282.742188 198.1875 283.007812 198.226562 283.28125 198.226562 C 283.863281 198.226562 284.300781 198.070312 284.59375 197.757812 C 284.894531 197.453125 285.046875 196.992188 285.046875 196.367188 L 285.046875 195.914062 C 284.859375 196.238281 284.617188 196.484375 284.328125 196.648438 C 284.035156 196.804688 283.6875 196.882812 283.28125 196.882812 C 282.613281 196.882812 282.070312 196.628906 281.65625 196.117188 C 281.25 195.609375 281.046875 194.929688 281.046875 194.085938 C 281.046875 193.242188 281.25 192.566406 281.65625 192.054688 C 282.070312 191.546875 282.613281 191.289062 283.28125 191.289062 C 283.6875 191.289062 284.035156 191.367188 284.328125 191.523438 C 284.617188 191.679688 284.859375 191.921875 285.046875 192.242188 L 285.046875 191.414062 L 285.9375 191.414062 Z M 285.9375 196.210938 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 287.296875 189.289062 L 288.078125 189.289062 C 288.566406 190.0625 288.929688 190.816406 289.171875 191.554688 C 289.421875 192.285156 289.546875 193.015625 289.546875 193.742188 C 289.546875 194.472656 289.421875 195.207031 289.171875 195.945312 C 288.929688 196.6875 288.566406 197.433594 288.078125 198.195312 L 287.296875 198.195312 C 287.734375 197.453125 288.054688 196.71875 288.265625 195.976562 C 288.484375 195.238281 288.59375 194.492188 288.59375 193.742188 C 288.59375 192.992188 288.484375 192.253906 288.265625 191.523438 C 288.054688 190.785156 287.734375 190.039062 287.296875 189.289062 Z M 287.296875 189.289062 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="222.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-13" x="20.386436" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="228.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-1" x="24.497764" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="234.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-17" x="30.625694" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="239.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-15" x="35.874717" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="242.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-14" x="38.653038" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="246.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-5" x="41.431358" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="252.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-6" x="44.610069" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="254.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-4" x="48.511436" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="256.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-18" x="53.721397" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="262.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-9" x="59.639366" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="265.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-5" x="65.987022" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="268.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-19" x="69.165733" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="274.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-5" x="76.963585" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="280.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-2" x="80.142296" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="286.500002" y="196.88379"/>
|
||||
<use xlink:href="#glyph0-15" x="84.063194" y="188.464808"/>
|
||||
</g>
|
||||
<use xlink:href="#image25" transform="matrix(1,0,0,1,248.000002,160.88379)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.363281 183.917969 L 20.363281 186.589844 L 21.941406 186.589844 C 22.472656 186.589844 22.863281 186.480469 23.113281 186.261719 C 23.371094 186.042969 23.503906 185.707031 23.503906 185.246094 C 23.503906 184.800781 23.371094 184.464844 23.113281 184.246094 C 22.863281 184.027344 22.472656 183.917969 21.941406 183.917969 Z M 20.363281 180.917969 L 20.363281 183.121094 L 21.816406 183.121094 C 22.304688 183.121094 22.664062 183.035156 22.894531 182.855469 C 23.132812 182.667969 23.253906 182.394531 23.253906 182.027344 C 23.253906 181.652344 23.132812 181.378906 22.894531 181.199219 C 22.664062 181.011719 22.304688 180.917969 21.816406 180.917969 Z M 19.378906 180.105469 L 21.894531 180.105469 C 22.644531 180.105469 23.222656 180.261719 23.628906 180.574219 C 24.035156 180.886719 24.238281 181.335938 24.238281 181.917969 C 24.238281 182.367188 24.132812 182.722656 23.925781 182.980469 C 23.714844 183.242188 23.414062 183.402344 23.019531 183.464844 C 23.496094 183.570312 23.871094 183.789062 24.144531 184.121094 C 24.414062 184.457031 24.550781 184.867188 24.550781 185.355469 C 24.550781 186.011719 24.324219 186.519531 23.878906 186.871094 C 23.441406 187.226562 22.808594 187.402344 21.988281 187.402344 L 19.378906 187.402344 Z M 19.378906 180.105469 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 28.503906 182.777344 C 28.398438 182.714844 28.289062 182.675781 28.175781 182.652344 C 28.058594 182.621094 27.929688 182.605469 27.785156 182.605469 C 27.273438 182.605469 26.882812 182.773438 26.613281 183.105469 C 26.339844 183.429688 26.207031 183.902344 26.207031 184.527344 L 26.207031 187.402344 L 25.300781 187.402344 L 25.300781 181.933594 L 26.207031 181.933594 L 26.207031 182.777344 C 26.394531 182.445312 26.636719 182.199219 26.941406 182.042969 C 27.242188 181.886719 27.613281 181.808594 28.050781 181.808594 C 28.113281 181.808594 28.179688 181.816406 28.253906 181.824219 C 28.324219 181.824219 28.410156 181.835938 28.503906 181.855469 Z M 28.503906 182.777344 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.816406 184.652344 C 31.097656 184.652344 30.597656 184.738281 30.316406 184.902344 C 30.035156 185.070312 29.894531 185.351562 29.894531 185.746094 C 29.894531 186.070312 29.996094 186.324219 30.207031 186.511719 C 30.414062 186.699219 30.699219 186.792969 31.066406 186.792969 C 31.566406 186.792969 31.964844 186.617188 32.269531 186.261719 C 32.570312 185.910156 32.722656 185.441406 32.722656 184.855469 L 32.722656 184.652344 Z M 33.613281 184.277344 L 33.613281 187.402344 L 32.722656 187.402344 L 32.722656 186.574219 C 32.511719 186.910156 32.253906 187.152344 31.941406 187.308594 C 31.636719 187.464844 31.269531 187.542969 30.832031 187.542969 C 30.269531 187.542969 29.820312 187.386719 29.488281 187.074219 C 29.152344 186.761719 28.988281 186.339844 28.988281 185.808594 C 28.988281 185.195312 29.195312 184.730469 29.613281 184.417969 C 30.027344 184.105469 30.644531 183.949219 31.457031 183.949219 L 32.722656 183.949219 L 32.722656 183.855469 C 32.722656 183.449219 32.582031 183.132812 32.300781 182.902344 C 32.027344 182.675781 31.648438 182.558594 31.160156 182.558594 C 30.847656 182.558594 30.539062 182.601562 30.238281 182.683594 C 29.945312 182.757812 29.664062 182.867188 29.394531 183.011719 L 29.394531 182.183594 C 29.726562 182.058594 30.042969 181.964844 30.347656 181.902344 C 30.660156 181.839844 30.960938 181.808594 31.253906 181.808594 C 32.042969 181.808594 32.632812 182.011719 33.019531 182.417969 C 33.414062 182.824219 33.613281 183.445312 33.613281 184.277344 Z M 33.613281 184.277344 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 34.941406 181.933594 L 39.207031 181.933594 L 39.207031 182.746094 L 35.832031 186.683594 L 39.207031 186.683594 L 39.207031 187.402344 L 34.832031 187.402344 L 34.832031 186.574219 L 38.207031 182.652344 L 34.941406 182.652344 Z M 34.941406 181.933594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 40.332031 181.933594 L 41.238281 181.933594 L 41.238281 187.402344 L 40.332031 187.402344 Z M 40.332031 179.808594 L 41.238281 179.808594 L 41.238281 180.949219 L 40.332031 180.949219 Z M 40.332031 179.808594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 42.332031 179.808594 L 43.238281 179.808594 L 43.238281 187.402344 L 42.332031 187.402344 Z M 42.332031 179.808594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 49.488281 179.808594 C 49.058594 180.558594 48.738281 181.304688 48.519531 182.042969 C 48.308594 182.773438 48.207031 183.511719 48.207031 184.261719 C 48.207031 185.011719 48.308594 185.757812 48.519531 186.496094 C 48.738281 187.238281 49.058594 187.972656 49.488281 188.714844 L 48.707031 188.714844 C 48.226562 187.953125 47.863281 187.207031 47.613281 186.464844 C 47.371094 185.726562 47.253906 184.992188 47.253906 184.261719 C 47.253906 183.535156 47.371094 182.804688 47.613281 182.074219 C 47.851562 181.335938 48.214844 180.582031 48.707031 179.808594 Z M 49.488281 179.808594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 53.816406 182.089844 L 53.816406 182.949219 C 53.566406 182.816406 53.304688 182.714844 53.035156 182.652344 C 52.761719 182.589844 52.476562 182.558594 52.175781 182.558594 C 51.738281 182.558594 51.402344 182.628906 51.175781 182.761719 C 50.957031 182.898438 50.847656 183.101562 50.847656 183.371094 C 50.847656 183.582031 50.925781 183.746094 51.082031 183.871094 C 51.238281 183.988281 51.558594 184.097656 52.050781 184.199219 L 52.347656 184.277344 C 52.992188 184.414062 53.445312 184.605469 53.707031 184.855469 C 53.976562 185.105469 54.113281 185.449219 54.113281 185.886719 C 54.113281 186.398438 53.910156 186.804688 53.503906 187.105469 C 53.105469 187.398438 52.558594 187.542969 51.863281 187.542969 C 51.558594 187.542969 51.246094 187.511719 50.925781 187.449219 C 50.613281 187.398438 50.285156 187.316406 49.941406 187.199219 L 49.941406 186.277344 C 50.273438 186.445312 50.597656 186.574219 50.910156 186.667969 C 51.230469 186.753906 51.554688 186.792969 51.878906 186.792969 C 52.292969 186.792969 52.617188 186.722656 52.847656 186.574219 C 53.074219 186.429688 53.191406 186.226562 53.191406 185.964844 C 53.191406 185.714844 53.105469 185.527344 52.941406 185.402344 C 52.785156 185.269531 52.425781 185.144531 51.863281 185.027344 L 51.550781 184.949219 C 50.996094 184.835938 50.597656 184.660156 50.347656 184.417969 C 50.097656 184.167969 49.972656 183.835938 49.972656 183.417969 C 49.972656 182.898438 50.152344 182.503906 50.519531 182.230469 C 50.882812 181.949219 51.402344 181.808594 52.082031 181.808594 C 52.402344 181.808594 52.710938 181.835938 53.003906 181.886719 C 53.304688 181.929688 53.574219 181.996094 53.816406 182.089844 Z M 53.816406 182.089844 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.691406 181.933594 L 55.644531 181.933594 L 57.347656 186.527344 L 59.066406 181.933594 L 60.019531 181.933594 L 57.957031 187.402344 L 56.738281 187.402344 Z M 54.691406 181.933594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 63.941406 184.605469 C 63.941406 183.949219 63.804688 183.445312 63.535156 183.089844 C 63.261719 182.738281 62.886719 182.558594 62.410156 182.558594 C 61.917969 182.558594 61.539062 182.738281 61.269531 183.089844 C 61.007812 183.445312 60.878906 183.949219 60.878906 184.605469 C 60.878906 185.253906 61.007812 185.757812 61.269531 186.121094 C 61.539062 186.476562 61.917969 186.652344 62.410156 186.652344 C 62.886719 186.652344 63.261719 186.476562 63.535156 186.121094 C 63.804688 185.757812 63.941406 185.253906 63.941406 184.605469 Z M 64.832031 186.730469 C 64.832031 187.65625 64.621094 188.34375 64.207031 188.792969 C 63.800781 189.25 63.167969 189.480469 62.316406 189.480469 C 62.003906 189.480469 61.707031 189.453125 61.425781 189.402344 C 61.144531 189.359375 60.871094 189.292969 60.613281 189.199219 L 60.613281 188.324219 C 60.871094 188.46875 61.128906 188.574219 61.378906 188.636719 C 61.636719 188.707031 61.902344 188.746094 62.175781 188.746094 C 62.757812 188.746094 63.195312 188.589844 63.488281 188.277344 C 63.789062 187.972656 63.941406 187.511719 63.941406 186.886719 L 63.941406 186.433594 C 63.753906 186.757812 63.511719 187.003906 63.222656 187.167969 C 62.929688 187.324219 62.582031 187.402344 62.175781 187.402344 C 61.507812 187.402344 60.964844 187.148438 60.550781 186.636719 C 60.144531 186.128906 59.941406 185.449219 59.941406 184.605469 C 59.941406 183.761719 60.144531 183.085938 60.550781 182.574219 C 60.964844 182.066406 61.507812 181.808594 62.175781 181.808594 C 62.582031 181.808594 62.929688 181.886719 63.222656 182.042969 C 63.511719 182.199219 63.753906 182.441406 63.941406 182.761719 L 63.941406 181.933594 L 64.832031 181.933594 Z M 64.832031 186.730469 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.832031 183.480469 C 70.527344 183.742188 70.308594 184.007812 70.175781 184.277344 C 70.039062 184.539062 69.972656 184.808594 69.972656 185.089844 C 69.972656 185.570312 70.144531 185.964844 70.488281 186.277344 C 70.832031 186.589844 71.261719 186.746094 71.785156 186.746094 C 72.097656 186.746094 72.382812 186.699219 72.644531 186.605469 C 72.914062 186.503906 73.167969 186.347656 73.410156 186.136719 Z M 71.519531 182.933594 L 73.988281 185.480469 C 74.183594 185.191406 74.335938 184.878906 74.441406 184.542969 C 74.554688 184.210938 74.617188 183.863281 74.628906 183.496094 L 75.550781 183.496094 C 75.507812 183.925781 75.398438 184.351562 75.222656 184.777344 C 75.054688 185.195312 74.820312 185.605469 74.519531 186.011719 L 75.878906 187.402344 L 74.660156 187.402344 L 73.957031 186.683594 C 73.613281 186.976562 73.253906 187.195312 72.878906 187.339844 C 72.511719 187.472656 72.117188 187.542969 71.691406 187.542969 C 70.910156 187.542969 70.269531 187.320312 69.769531 186.871094 C 69.269531 186.425781 69.019531 185.851562 69.019531 185.152344 C 69.019531 184.738281 69.128906 184.347656 69.347656 183.980469 C 69.566406 183.617188 69.894531 183.273438 70.332031 182.949219 C 70.175781 182.742188 70.054688 182.539062 69.972656 182.339844 C 69.886719 182.132812 69.847656 181.929688 69.847656 181.730469 C 69.847656 181.210938 70.027344 180.789062 70.394531 180.464844 C 70.757812 180.144531 71.238281 179.980469 71.832031 179.980469 C 72.101562 179.980469 72.371094 180.011719 72.644531 180.074219 C 72.914062 180.128906 73.183594 180.210938 73.457031 180.324219 L 73.457031 181.214844 C 73.175781 181.070312 72.902344 180.957031 72.644531 180.871094 C 72.394531 180.789062 72.160156 180.746094 71.941406 180.746094 C 71.597656 180.746094 71.316406 180.839844 71.097656 181.027344 C 70.886719 181.207031 70.785156 181.441406 70.785156 181.730469 C 70.785156 181.886719 70.832031 182.054688 70.925781 182.230469 C 71.019531 182.398438 71.214844 182.632812 71.519531 182.933594 Z M 71.519531 182.933594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 80.222656 180.386719 L 80.222656 181.933594 L 82.082031 181.933594 L 82.082031 182.636719 L 80.222656 182.636719 L 80.222656 185.605469 C 80.222656 186.042969 80.285156 186.332031 80.410156 186.464844 C 80.535156 186.589844 80.785156 186.652344 81.160156 186.652344 L 82.082031 186.652344 L 82.082031 187.402344 L 81.160156 187.402344 C 80.460938 187.402344 79.976562 187.273438 79.707031 187.011719 C 79.445312 186.753906 79.316406 186.285156 79.316406 185.605469 L 79.316406 182.636719 L 78.660156 182.636719 L 78.660156 181.933594 L 79.316406 181.933594 L 79.316406 180.386719 Z M 80.222656 180.386719 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 82.332031 181.933594 L 83.238281 181.933594 L 83.238281 187.402344 L 82.332031 187.402344 Z M 82.332031 179.808594 L 83.238281 179.808594 L 83.238281 180.949219 L 82.332031 180.949219 Z M 82.332031 179.808594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.113281 179.808594 L 87.113281 180.558594 L 86.253906 180.558594 C 85.929688 180.558594 85.707031 180.628906 85.582031 180.761719 C 85.457031 180.886719 85.394531 181.117188 85.394531 181.449219 L 85.394531 181.933594 L 86.863281 181.933594 L 86.863281 182.636719 L 85.394531 182.636719 L 85.394531 187.402344 L 84.488281 187.402344 L 84.488281 182.636719 L 83.628906 182.636719 L 83.628906 181.933594 L 84.488281 181.933594 L 84.488281 181.558594 C 84.488281 180.945312 84.628906 180.503906 84.910156 180.230469 C 85.191406 179.949219 85.636719 179.808594 86.253906 179.808594 Z M 87.113281 179.808594 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.191406 179.808594 L 87.972656 179.808594 C 88.460938 180.582031 88.824219 181.335938 89.066406 182.074219 C 89.316406 182.804688 89.441406 183.535156 89.441406 184.261719 C 89.441406 184.992188 89.316406 185.726562 89.066406 186.464844 C 88.824219 187.207031 88.460938 187.953125 87.972656 188.714844 L 87.191406 188.714844 C 87.628906 187.972656 87.949219 187.238281 88.160156 186.496094 C 88.378906 185.757812 88.488281 185.011719 88.488281 184.261719 C 88.488281 183.511719 88.378906 182.773438 88.160156 182.042969 C 87.949219 181.304688 87.628906 180.558594 87.191406 179.808594 Z M 87.191406 179.808594 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="18.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-20" x="86.841514" y="188.464808"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-17" x="24.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-10" x="90.362022" y="188.464808"/>
|
||||
</g>
|
||||
<use xlink:href="#image81" transform="matrix(1,0,0,1,45.894737,151.402308)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 63.808594 159.402344 L 63.132812 160.847656 L 61.199219 162.097656 L 58.265625 162.984375 L 54.730469 163.386719 L 51.074219 163.25 L 47.785156 162.59375 L 45.308594 161.507812 L 43.980469 160.136719 L 43.980469 158.667969 L 45.308594 157.296875 L 47.785156 156.210938 L 51.074219 155.554688 L 54.730469 155.417969 L 58.265625 155.820312 L 61.199219 156.707031 L 63.132812 157.957031 Z "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,100%);fill-opacity:1;" d="M 57.808594 159.402344 L 57.539062 163.015625 L 56.765625 166.140625 L 55.59375 168.355469 L 54.179688 169.359375 L 52.714844 169.019531 L 51.398438 167.382812 L 50.410156 164.667969 L 49.878906 161.238281 L 49.878906 157.566406 L 50.410156 154.136719 L 51.398438 151.421875 L 52.714844 149.785156 L 54.179688 149.445312 L 55.59375 150.449219 L 56.765625 152.664062 L 57.539062 155.789062 Z "/>
|
||||
<path style="fill-rule:nonzero;fill:url(#radial0);stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,50.196078%,0%);stroke-opacity:1;stroke-miterlimit:4;" d="M 4.998991 -19.999964 L 4.502898 -17.831996 L 3.116179 -16.089808 L 1.112273 -15.124964 L -1.11429 -15.124964 L -3.118196 -16.089808 L -4.504915 -17.831996 L -5.001009 -19.999964 L -4.504915 -22.167933 L -3.118196 -23.910121 L -1.11429 -24.874964 L 1.112273 -24.874964 L 3.116179 -23.910121 L 4.502898 -22.167933 Z " transform="matrix(1,0,0,1,53.809602,179.402308)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.652344 115.796875 L 187.121094 115.796875 L 188.980469 120.765625 L 190.855469 115.796875 L 192.324219 115.796875 L 192.324219 123.09375 L 191.355469 123.09375 L 191.355469 116.6875 L 189.480469 121.6875 L 188.480469 121.6875 L 186.605469 116.6875 L 186.605469 123.09375 L 185.652344 123.09375 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.359375 118.25 C 195.878906 118.25 195.5 118.4375 195.21875 118.8125 C 194.9375 119.1875 194.796875 119.703125 194.796875 120.359375 C 194.796875 121.015625 194.929688 121.53125 195.203125 121.90625 C 195.484375 122.28125 195.867188 122.46875 196.359375 122.46875 C 196.835938 122.46875 197.21875 122.28125 197.5 121.90625 C 197.78125 121.53125 197.921875 121.015625 197.921875 120.359375 C 197.921875 119.714844 197.78125 119.203125 197.5 118.828125 C 197.21875 118.445312 196.835938 118.25 196.359375 118.25 Z M 196.359375 117.5 C 197.140625 117.5 197.753906 117.757812 198.203125 118.265625 C 198.648438 118.765625 198.875 119.464844 198.875 120.359375 C 198.875 121.257812 198.648438 121.960938 198.203125 122.46875 C 197.753906 122.980469 197.140625 123.234375 196.359375 123.234375 C 195.578125 123.234375 194.960938 122.980469 194.515625 122.46875 C 194.066406 121.960938 193.84375 121.257812 193.84375 120.359375 C 193.84375 119.464844 194.066406 118.765625 194.515625 118.265625 C 194.960938 117.757812 195.578125 117.5 196.359375 117.5 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 204.898438 119.796875 L 204.898438 123.09375 L 204.007812 123.09375 L 204.007812 119.828125 C 204.007812 119.308594 203.902344 118.921875 203.695312 118.671875 C 203.496094 118.414062 203.195312 118.28125 202.789062 118.28125 C 202.308594 118.28125 201.929688 118.4375 201.648438 118.75 C 201.367188 119.054688 201.226562 119.46875 201.226562 120 L 201.226562 123.09375 L 200.320312 123.09375 L 200.320312 117.625 L 201.226562 117.625 L 201.226562 118.46875 C 201.445312 118.148438 201.699219 117.90625 201.992188 117.75 C 202.28125 117.585938 202.617188 117.5 202.992188 117.5 C 203.617188 117.5 204.089844 117.695312 204.414062 118.078125 C 204.734375 118.464844 204.898438 119.039062 204.898438 119.796875 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.300781 120.296875 C 210.300781 119.640625 210.164062 119.136719 209.894531 118.78125 C 209.621094 118.429688 209.246094 118.25 208.769531 118.25 C 208.277344 118.25 207.898438 118.429688 207.628906 118.78125 C 207.367188 119.136719 207.238281 119.640625 207.238281 120.296875 C 207.238281 120.945312 207.367188 121.449219 207.628906 121.8125 C 207.898438 122.167969 208.277344 122.34375 208.769531 122.34375 C 209.246094 122.34375 209.621094 122.167969 209.894531 121.8125 C 210.164062 121.449219 210.300781 120.945312 210.300781 120.296875 Z M 211.191406 122.421875 C 211.191406 123.347656 210.980469 124.035156 210.566406 124.484375 C 210.160156 124.941406 209.527344 125.171875 208.675781 125.171875 C 208.363281 125.171875 208.066406 125.144531 207.785156 125.09375 C 207.503906 125.050781 207.230469 124.984375 206.972656 124.890625 L 206.972656 124.015625 C 207.230469 124.160156 207.488281 124.265625 207.738281 124.328125 C 207.996094 124.398438 208.261719 124.4375 208.535156 124.4375 C 209.117188 124.4375 209.554688 124.28125 209.847656 123.96875 C 210.148438 123.664062 210.300781 123.203125 210.300781 122.578125 L 210.300781 122.125 C 210.113281 122.449219 209.871094 122.695312 209.582031 122.859375 C 209.289062 123.015625 208.941406 123.09375 208.535156 123.09375 C 207.867188 123.09375 207.324219 122.839844 206.910156 122.328125 C 206.503906 121.820312 206.300781 121.140625 206.300781 120.296875 C 206.300781 119.453125 206.503906 118.777344 206.910156 118.265625 C 207.324219 117.757812 207.867188 117.5 208.535156 117.5 C 208.941406 117.5 209.289062 117.578125 209.582031 117.734375 C 209.871094 117.890625 210.113281 118.132812 210.300781 118.453125 L 210.300781 117.625 L 211.191406 117.625 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 215.164062 118.25 C 214.683594 118.25 214.304688 118.4375 214.023438 118.8125 C 213.742188 119.1875 213.601562 119.703125 213.601562 120.359375 C 213.601562 121.015625 213.734375 121.53125 214.007812 121.90625 C 214.289062 122.28125 214.671875 122.46875 215.164062 122.46875 C 215.640625 122.46875 216.023438 122.28125 216.304688 121.90625 C 216.585938 121.53125 216.726562 121.015625 216.726562 120.359375 C 216.726562 119.714844 216.585938 119.203125 216.304688 118.828125 C 216.023438 118.445312 215.640625 118.25 215.164062 118.25 Z M 215.164062 117.5 C 215.945312 117.5 216.558594 117.757812 217.007812 118.265625 C 217.453125 118.765625 217.679688 119.464844 217.679688 120.359375 C 217.679688 121.257812 217.453125 121.960938 217.007812 122.46875 C 216.558594 122.980469 215.945312 123.234375 215.164062 123.234375 C 214.382812 123.234375 213.765625 122.980469 213.320312 122.46875 C 212.871094 121.960938 212.648438 121.257812 212.648438 120.359375 C 212.648438 119.464844 212.871094 118.765625 213.320312 118.265625 C 213.765625 117.757812 214.382812 117.5 215.164062 117.5 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.15625 115.5 L 220.0625 115.5 L 220.0625 123.09375 L 219.15625 123.09375 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 221.933594 117.625 L 222.839844 117.625 L 222.839844 123.09375 L 221.933594 123.09375 Z M 221.933594 115.5 L 222.839844 115.5 L 222.839844 116.640625 L 221.933594 116.640625 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.195312 120.34375 C 226.476562 120.34375 225.976562 120.429688 225.695312 120.59375 C 225.414062 120.761719 225.273438 121.042969 225.273438 121.4375 C 225.273438 121.761719 225.375 122.015625 225.585938 122.203125 C 225.792969 122.390625 226.078125 122.484375 226.445312 122.484375 C 226.945312 122.484375 227.34375 122.308594 227.648438 121.953125 C 227.949219 121.601562 228.101562 121.132812 228.101562 120.546875 L 228.101562 120.34375 Z M 228.992188 119.96875 L 228.992188 123.09375 L 228.101562 123.09375 L 228.101562 122.265625 C 227.890625 122.601562 227.632812 122.84375 227.320312 123 C 227.015625 123.15625 226.648438 123.234375 226.210938 123.234375 C 225.648438 123.234375 225.199219 123.078125 224.867188 122.765625 C 224.53125 122.453125 224.367188 122.03125 224.367188 121.5 C 224.367188 120.886719 224.574219 120.421875 224.992188 120.109375 C 225.40625 119.796875 226.023438 119.640625 226.835938 119.640625 L 228.101562 119.640625 L 228.101562 119.546875 C 228.101562 119.140625 227.960938 118.824219 227.679688 118.59375 C 227.40625 118.367188 227.027344 118.25 226.539062 118.25 C 226.226562 118.25 225.917969 118.292969 225.617188 118.375 C 225.324219 118.449219 225.042969 118.558594 224.773438 118.703125 L 224.773438 117.875 C 225.105469 117.75 225.421875 117.65625 225.726562 117.59375 C 226.039062 117.53125 226.339844 117.5 226.632812 117.5 C 227.421875 117.5 228.011719 117.703125 228.398438 118.109375 C 228.792969 118.515625 228.992188 119.136719 228.992188 119.96875 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.175781 115.5 C 235.746094 116.25 235.425781 116.996094 235.207031 117.734375 C 234.996094 118.464844 234.894531 119.203125 234.894531 119.953125 C 234.894531 120.703125 234.996094 121.449219 235.207031 122.1875 C 235.425781 122.929688 235.746094 123.664062 236.175781 124.40625 L 235.394531 124.40625 C 234.914062 123.644531 234.550781 122.898438 234.300781 122.15625 C 234.058594 121.417969 233.941406 120.683594 233.941406 119.953125 C 233.941406 119.226562 234.058594 118.496094 234.300781 117.765625 C 234.539062 117.027344 234.902344 116.273438 235.394531 115.5 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.8125 116.078125 L 238.8125 117.625 L 240.671875 117.625 L 240.671875 118.328125 L 238.8125 118.328125 L 238.8125 121.296875 C 238.8125 121.734375 238.875 122.023438 239 122.15625 C 239.125 122.28125 239.375 122.34375 239.75 122.34375 L 240.671875 122.34375 L 240.671875 123.09375 L 239.75 123.09375 C 239.050781 123.09375 238.566406 122.964844 238.296875 122.703125 C 238.035156 122.445312 237.90625 121.976562 237.90625 121.296875 L 237.90625 118.328125 L 237.25 118.328125 L 237.25 117.625 L 237.90625 117.625 L 237.90625 116.078125 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.839844 117.625 L 242.746094 117.625 L 242.746094 123.09375 L 241.839844 123.09375 Z M 241.839844 115.5 L 242.746094 115.5 L 242.746094 116.640625 L 241.839844 116.640625 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.761719 115.5 L 250.761719 116.25 L 249.902344 116.25 C 249.578125 116.25 249.355469 116.320312 249.230469 116.453125 C 249.105469 116.578125 249.042969 116.808594 249.042969 117.140625 L 249.042969 117.625 L 250.527344 117.625 L 250.527344 118.328125 L 249.042969 118.328125 L 249.042969 123.09375 L 248.136719 123.09375 L 248.136719 118.328125 L 245.683594 118.328125 L 245.683594 123.09375 L 244.777344 123.09375 L 244.777344 118.328125 L 243.917969 118.328125 L 243.917969 117.625 L 244.777344 117.625 L 244.777344 117.25 C 244.777344 116.636719 244.917969 116.195312 245.199219 115.921875 C 245.480469 115.640625 245.925781 115.5 246.542969 115.5 L 247.402344 115.5 L 247.402344 116.25 L 246.542969 116.25 C 246.21875 116.25 245.988281 116.3125 245.855469 116.4375 C 245.738281 116.574219 245.683594 116.808594 245.683594 117.140625 L 245.683594 117.625 L 248.136719 117.625 L 248.136719 117.25 C 248.136719 116.636719 248.277344 116.195312 248.558594 115.921875 C 248.847656 115.640625 249.300781 115.5 249.917969 115.5 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 251.367188 115.5 L 252.148438 115.5 C 252.636719 116.273438 253 117.027344 253.242188 117.765625 C 253.492188 118.496094 253.617188 119.226562 253.617188 119.953125 C 253.617188 120.683594 253.492188 121.417969 253.242188 122.15625 C 253 122.898438 252.636719 123.644531 252.148438 124.40625 L 251.367188 124.40625 C 251.804688 123.664062 252.125 122.929688 252.335938 122.1875 C 252.554688 121.449219 252.664062 120.703125 252.664062 119.953125 C 252.664062 119.203125 252.554688 118.464844 252.335938 117.734375 C 252.125 116.996094 251.804688 116.25 251.367188 115.5 Z "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="28.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-21" x="184.668808" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-20" x="34.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-22" x="193.296738" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="39.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-23" x="199.414902" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="41.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-9" x="205.752792" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="43.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-22" x="212.100448" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="46.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-14" x="218.218613" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-9" x="49.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-15" x="220.996933" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-21" x="54.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-1" x="223.775253" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="59.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-5" x="229.903183" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="65.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-6" x="233.081894" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="68.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-2" x="236.983261" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="75.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-15" x="240.904159" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="78.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-24" x="243.68248" y="123.092488"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="81.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-10" x="250.572128" y="123.092488"/>
|
||||
</g>
|
||||
<use xlink:href="#image84" transform="matrix(1,0,0,1,211.571152,86.029988)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 20.992188 201.113281 L 20.992188 201.957031 C 20.742188 201.824219 20.484375 201.71875 20.226562 201.644531 C 19.976562 201.574219 19.71875 201.535156 19.460938 201.535156 C 18.875 201.535156 18.421875 201.722656 18.101562 202.097656 C 17.777344 202.464844 17.617188 202.980469 17.617188 203.644531 C 17.617188 204.3125 17.777344 204.832031 18.101562 205.207031 C 18.421875 205.574219 18.875 205.753906 19.460938 205.753906 C 19.71875 205.753906 19.976562 205.722656 20.226562 205.660156 C 20.484375 205.589844 20.742188 205.480469 20.992188 205.332031 L 20.992188 206.175781 C 20.742188 206.292969 20.480469 206.375 20.210938 206.425781 C 19.949219 206.488281 19.667969 206.519531 19.367188 206.519531 C 18.53125 206.519531 17.871094 206.265625 17.382812 205.753906 C 16.902344 205.234375 16.664062 204.53125 16.664062 203.644531 C 16.664062 202.761719 16.90625 202.0625 17.398438 201.550781 C 17.886719 201.042969 18.558594 200.785156 19.414062 200.785156 C 19.695312 200.785156 19.964844 200.8125 20.226562 200.863281 C 20.484375 200.917969 20.742188 201 20.992188 201.113281 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 27.097656 203.082031 L 27.097656 206.378906 L 26.207031 206.378906 L 26.207031 203.113281 C 26.207031 202.59375 26.101562 202.207031 25.894531 201.957031 C 25.695312 201.699219 25.394531 201.566406 24.988281 201.566406 C 24.507812 201.566406 24.128906 201.722656 23.847656 202.035156 C 23.566406 202.339844 23.425781 202.753906 23.425781 203.285156 L 23.425781 206.378906 L 22.519531 206.378906 L 22.519531 198.785156 L 23.425781 198.785156 L 23.425781 201.753906 C 23.644531 201.433594 23.898438 201.191406 24.191406 201.035156 C 24.480469 200.871094 24.816406 200.785156 25.191406 200.785156 C 25.816406 200.785156 26.289062 200.980469 26.613281 201.363281 C 26.933594 201.75 27.097656 202.324219 27.097656 203.082031 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 28.890625 200.910156 L 29.796875 200.910156 L 29.796875 206.378906 L 28.890625 206.378906 Z M 28.890625 198.785156 L 29.796875 198.785156 L 29.796875 199.925781 L 28.890625 199.925781 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.667969 198.785156 L 32.574219 198.785156 L 32.574219 206.378906 L 31.667969 206.378906 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.132812 203.425781 L 39.132812 203.863281 L 34.992188 203.863281 C 35.03125 204.480469 35.21875 204.949219 35.554688 205.269531 C 35.886719 205.59375 36.351562 205.753906 36.945312 205.753906 C 37.289062 205.753906 37.621094 205.714844 37.945312 205.628906 C 38.277344 205.546875 38.601562 205.421875 38.914062 205.253906 L 38.914062 206.097656 C 38.589844 206.234375 38.257812 206.339844 37.914062 206.410156 C 37.578125 206.480469 37.242188 206.519531 36.898438 206.519531 C 36.023438 206.519531 35.328125 206.269531 34.820312 205.769531 C 34.308594 205.261719 34.054688 204.566406 34.054688 203.691406 C 34.054688 202.796875 34.292969 202.089844 34.773438 201.566406 C 35.261719 201.046875 35.917969 200.785156 36.742188 200.785156 C 37.480469 200.785156 38.0625 201.019531 38.492188 201.488281 C 38.917969 201.957031 39.132812 202.605469 39.132812 203.425781 Z M 38.226562 203.160156 C 38.226562 202.671875 38.089844 202.28125 37.820312 201.988281 C 37.546875 201.6875 37.195312 201.535156 36.757812 201.535156 C 36.246094 201.535156 35.839844 201.683594 35.539062 201.972656 C 35.246094 202.253906 35.074219 202.652344 35.023438 203.160156 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 11.441406 210.347656 C 11.011719 211.097656 10.691406 211.84375 10.472656 212.582031 C 10.261719 213.3125 10.160156 214.050781 10.160156 214.800781 C 10.160156 215.550781 10.261719 216.296875 10.472656 217.035156 C 10.691406 217.777344 11.011719 218.511719 11.441406 219.253906 L 10.660156 219.253906 C 10.179688 218.492188 9.816406 217.746094 9.566406 217.003906 C 9.324219 216.265625 9.207031 215.53125 9.207031 214.800781 C 9.207031 214.074219 9.324219 213.34375 9.566406 212.613281 C 9.804688 211.875 10.167969 211.121094 10.660156 210.347656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 16.792969 213.300781 L 16.792969 210.347656 L 17.683594 210.347656 L 17.683594 217.941406 L 16.792969 217.941406 L 16.792969 217.113281 C 16.605469 217.449219 16.363281 217.691406 16.074219 217.847656 C 15.78125 218.003906 15.433594 218.082031 15.027344 218.082031 C 14.371094 218.082031 13.832031 217.824219 13.417969 217.300781 C 13 216.769531 12.792969 216.074219 12.792969 215.207031 C 12.792969 214.355469 13 213.667969 13.417969 213.144531 C 13.832031 212.613281 14.371094 212.347656 15.027344 212.347656 C 15.433594 212.347656 15.78125 212.425781 16.074219 212.582031 C 16.363281 212.738281 16.605469 212.980469 16.792969 213.300781 Z M 13.730469 215.207031 C 13.730469 215.875 13.863281 216.394531 14.136719 216.769531 C 14.40625 217.144531 14.78125 217.332031 15.261719 217.332031 C 15.730469 217.332031 16.097656 217.144531 16.371094 216.769531 C 16.652344 216.394531 16.792969 215.875 16.792969 215.207031 C 16.792969 214.550781 16.652344 214.035156 16.371094 213.660156 C 16.097656 213.285156 15.730469 213.097656 15.261719 213.097656 C 14.78125 213.097656 14.40625 213.285156 14.136719 213.660156 C 13.863281 214.035156 13.730469 214.550781 13.730469 215.207031 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.21875 214.988281 L 24.21875 215.425781 L 20.078125 215.425781 C 20.117188 216.042969 20.304688 216.511719 20.640625 216.832031 C 20.972656 217.15625 21.4375 217.316406 22.03125 217.316406 C 22.375 217.316406 22.707031 217.277344 23.03125 217.191406 C 23.363281 217.109375 23.6875 216.984375 24 216.816406 L 24 217.660156 C 23.675781 217.796875 23.34375 217.902344 23 217.972656 C 22.664062 218.042969 22.328125 218.082031 21.984375 218.082031 C 21.109375 218.082031 20.414062 217.832031 19.90625 217.332031 C 19.394531 216.824219 19.140625 216.128906 19.140625 215.253906 C 19.140625 214.359375 19.378906 213.652344 19.859375 213.128906 C 20.347656 212.609375 21.003906 212.347656 21.828125 212.347656 C 22.566406 212.347656 23.148438 212.582031 23.578125 213.050781 C 24.003906 213.519531 24.21875 214.167969 24.21875 214.988281 Z M 23.3125 214.722656 C 23.3125 214.234375 23.175781 213.84375 22.90625 213.550781 C 22.632812 213.25 22.28125 213.097656 21.84375 213.097656 C 21.332031 213.097656 20.925781 213.246094 20.625 213.535156 C 20.332031 213.816406 20.160156 214.214844 20.109375 214.722656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 28.464844 210.347656 L 28.464844 211.097656 L 27.605469 211.097656 C 27.28125 211.097656 27.058594 211.167969 26.933594 211.300781 C 26.808594 211.425781 26.746094 211.65625 26.746094 211.988281 L 26.746094 212.472656 L 28.214844 212.472656 L 28.214844 213.175781 L 26.746094 213.175781 L 26.746094 217.941406 L 25.839844 217.941406 L 25.839844 213.175781 L 24.980469 213.175781 L 24.980469 212.472656 L 25.839844 212.472656 L 25.839844 212.097656 C 25.839844 211.484375 25.980469 211.042969 26.261719 210.769531 C 26.542969 210.488281 26.988281 210.347656 27.605469 210.347656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.691406 215.191406 C 30.972656 215.191406 30.472656 215.277344 30.191406 215.441406 C 29.910156 215.609375 29.769531 215.890625 29.769531 216.285156 C 29.769531 216.609375 29.871094 216.863281 30.082031 217.050781 C 30.289062 217.238281 30.574219 217.332031 30.941406 217.332031 C 31.441406 217.332031 31.839844 217.15625 32.144531 216.800781 C 32.445312 216.449219 32.597656 215.980469 32.597656 215.394531 L 32.597656 215.191406 Z M 33.488281 214.816406 L 33.488281 217.941406 L 32.597656 217.941406 L 32.597656 217.113281 C 32.386719 217.449219 32.128906 217.691406 31.816406 217.847656 C 31.511719 218.003906 31.144531 218.082031 30.707031 218.082031 C 30.144531 218.082031 29.695312 217.925781 29.363281 217.613281 C 29.027344 217.300781 28.863281 216.878906 28.863281 216.347656 C 28.863281 215.734375 29.070312 215.269531 29.488281 214.957031 C 29.902344 214.644531 30.519531 214.488281 31.332031 214.488281 L 32.597656 214.488281 L 32.597656 214.394531 C 32.597656 213.988281 32.457031 213.671875 32.175781 213.441406 C 31.902344 213.214844 31.523438 213.097656 31.035156 213.097656 C 30.722656 213.097656 30.414062 213.140625 30.113281 213.222656 C 29.820312 213.296875 29.539062 213.40625 29.269531 213.550781 L 29.269531 212.722656 C 29.601562 212.597656 29.917969 212.503906 30.222656 212.441406 C 30.535156 212.378906 30.835938 212.347656 31.128906 212.347656 C 31.917969 212.347656 32.507812 212.550781 32.894531 212.957031 C 33.289062 213.363281 33.488281 213.984375 33.488281 214.816406 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 35.238281 215.785156 L 35.238281 212.472656 L 36.144531 212.472656 L 36.144531 215.753906 C 36.144531 216.265625 36.242188 216.652344 36.441406 216.910156 C 36.648438 217.171875 36.949219 217.300781 37.347656 217.300781 C 37.835938 217.300781 38.222656 217.152344 38.503906 216.847656 C 38.785156 216.535156 38.925781 216.109375 38.925781 215.566406 L 38.925781 212.472656 L 39.832031 212.472656 L 39.832031 217.941406 L 38.925781 217.941406 L 38.925781 217.097656 C 38.707031 217.433594 38.449219 217.683594 38.160156 217.847656 C 37.878906 218.003906 37.542969 218.082031 37.160156 218.082031 C 36.535156 218.082031 36.054688 217.890625 35.722656 217.503906 C 35.398438 217.109375 35.238281 216.535156 35.238281 215.785156 Z M 37.503906 212.347656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 41.671875 210.347656 L 42.578125 210.347656 L 42.578125 217.941406 L 41.671875 217.941406 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.339844 210.925781 L 45.339844 212.472656 L 47.199219 212.472656 L 47.199219 213.175781 L 45.339844 213.175781 L 45.339844 216.144531 C 45.339844 216.582031 45.402344 216.871094 45.527344 217.003906 C 45.652344 217.128906 45.902344 217.191406 46.277344 217.191406 L 47.199219 217.191406 L 47.199219 217.941406 L 46.277344 217.941406 C 45.578125 217.941406 45.09375 217.8125 44.824219 217.550781 C 44.5625 217.292969 44.433594 216.824219 44.433594 216.144531 L 44.433594 213.175781 L 43.777344 213.175781 L 43.777344 212.472656 L 44.433594 212.472656 L 44.433594 210.925781 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 21.96875 224.660156 C 21.488281 224.660156 21.109375 224.847656 20.828125 225.222656 C 20.546875 225.597656 20.40625 226.113281 20.40625 226.769531 C 20.40625 227.425781 20.539062 227.941406 20.8125 228.316406 C 21.09375 228.691406 21.476562 228.878906 21.96875 228.878906 C 22.445312 228.878906 22.828125 228.691406 23.109375 228.316406 C 23.390625 227.941406 23.53125 227.425781 23.53125 226.769531 C 23.53125 226.125 23.390625 225.613281 23.109375 225.238281 C 22.828125 224.855469 22.445312 224.660156 21.96875 224.660156 Z M 21.96875 223.910156 C 22.75 223.910156 23.363281 224.167969 23.8125 224.675781 C 24.257812 225.175781 24.484375 225.875 24.484375 226.769531 C 24.484375 227.667969 24.257812 228.371094 23.8125 228.878906 C 23.363281 229.390625 22.75 229.644531 21.96875 229.644531 C 21.1875 229.644531 20.570312 229.390625 20.125 228.878906 C 19.675781 228.371094 19.453125 227.667969 19.453125 226.769531 C 19.453125 225.875 19.675781 225.175781 20.125 224.675781 C 20.570312 224.167969 21.1875 223.910156 21.96875 223.910156 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 29.574219 226.707031 C 29.574219 226.050781 29.4375 225.546875 29.167969 225.191406 C 28.894531 224.839844 28.519531 224.660156 28.042969 224.660156 C 27.550781 224.660156 27.171875 224.839844 26.902344 225.191406 C 26.640625 225.546875 26.511719 226.050781 26.511719 226.707031 C 26.511719 227.355469 26.640625 227.859375 26.902344 228.222656 C 27.171875 228.578125 27.550781 228.753906 28.042969 228.753906 C 28.519531 228.753906 28.894531 228.578125 29.167969 228.222656 C 29.4375 227.859375 29.574219 227.355469 29.574219 226.707031 Z M 30.464844 228.832031 C 30.464844 229.757812 30.253906 230.445312 29.839844 230.894531 C 29.433594 231.351562 28.800781 231.582031 27.949219 231.582031 C 27.636719 231.582031 27.339844 231.554688 27.058594 231.503906 C 26.777344 231.460938 26.503906 231.394531 26.246094 231.300781 L 26.246094 230.425781 C 26.503906 230.570312 26.761719 230.675781 27.011719 230.738281 C 27.269531 230.808594 27.535156 230.847656 27.808594 230.847656 C 28.390625 230.847656 28.828125 230.691406 29.121094 230.378906 C 29.421875 230.074219 29.574219 229.613281 29.574219 228.988281 L 29.574219 228.535156 C 29.386719 228.859375 29.144531 229.105469 28.855469 229.269531 C 28.5625 229.425781 28.214844 229.503906 27.808594 229.503906 C 27.140625 229.503906 26.597656 229.25 26.183594 228.738281 C 25.777344 228.230469 25.574219 227.550781 25.574219 226.707031 C 25.574219 225.863281 25.777344 225.1875 26.183594 224.675781 C 26.597656 224.167969 27.140625 223.910156 27.808594 223.910156 C 28.214844 223.910156 28.5625 223.988281 28.855469 224.144531 C 29.144531 224.300781 29.386719 224.542969 29.574219 224.863281 L 29.574219 224.035156 L 30.464844 224.035156 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.25 224.238281 L 36.25 225.082031 C 36 224.949219 35.742188 224.84375 35.484375 224.769531 C 35.234375 224.699219 34.976562 224.660156 34.71875 224.660156 C 34.132812 224.660156 33.679688 224.847656 33.359375 225.222656 C 33.035156 225.589844 32.875 226.105469 32.875 226.769531 C 32.875 227.4375 33.035156 227.957031 33.359375 228.332031 C 33.679688 228.699219 34.132812 228.878906 34.71875 228.878906 C 34.976562 228.878906 35.234375 228.847656 35.484375 228.785156 C 35.742188 228.714844 36 228.605469 36.25 228.457031 L 36.25 229.300781 C 36 229.417969 35.738281 229.5 35.46875 229.550781 C 35.207031 229.613281 34.925781 229.644531 34.625 229.644531 C 33.789062 229.644531 33.128906 229.390625 32.640625 228.878906 C 32.160156 228.359375 31.921875 227.65625 31.921875 226.769531 C 31.921875 225.886719 32.164062 225.1875 32.65625 224.675781 C 33.144531 224.167969 33.816406 223.910156 34.671875 223.910156 C 34.953125 223.910156 35.222656 223.9375 35.484375 223.988281 C 35.742188 224.042969 36 224.125 36.25 224.238281 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 17.507812 240.238281 L 17.507812 243.144531 L 16.601562 243.144531 L 16.601562 235.597656 L 17.507812 235.597656 L 17.507812 236.425781 C 17.695312 236.105469 17.929688 235.863281 18.210938 235.707031 C 18.5 235.550781 18.851562 235.472656 19.257812 235.472656 C 19.921875 235.472656 20.460938 235.738281 20.867188 236.269531 C 21.28125 236.792969 21.492188 237.480469 21.492188 238.332031 C 21.492188 239.199219 21.28125 239.894531 20.867188 240.425781 C 20.460938 240.949219 19.921875 241.207031 19.257812 241.207031 C 18.851562 241.207031 18.5 241.128906 18.210938 240.972656 C 17.929688 240.816406 17.695312 240.574219 17.507812 240.238281 Z M 20.570312 238.332031 C 20.570312 237.675781 20.429688 237.160156 20.148438 236.785156 C 19.875 236.410156 19.507812 236.222656 19.039062 236.222656 C 18.558594 236.222656 18.183594 236.410156 17.914062 236.785156 C 17.640625 237.160156 17.507812 237.675781 17.507812 238.332031 C 17.507812 239 17.640625 239.519531 17.914062 239.894531 C 18.183594 240.269531 18.558594 240.457031 19.039062 240.457031 C 19.507812 240.457031 19.875 240.269531 20.148438 239.894531 C 20.429688 239.519531 20.570312 239 20.570312 238.332031 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.980469 235.597656 L 23.886719 235.597656 L 23.886719 241.066406 L 22.980469 241.066406 Z M 22.980469 233.472656 L 23.886719 233.472656 L 23.886719 234.613281 L 22.980469 234.613281 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30.304688 235.597656 L 28.335938 238.253906 L 30.414062 241.066406 L 29.351562 241.066406 L 27.757812 238.910156 L 26.164062 241.066406 L 25.101562 241.066406 L 27.226562 238.207031 L 25.289062 235.597656 L 26.351562 235.597656 L 27.804688 237.550781 L 29.242188 235.597656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.054688 238.113281 L 36.054688 238.550781 L 31.914062 238.550781 C 31.953125 239.167969 32.140625 239.636719 32.476562 239.957031 C 32.808594 240.28125 33.273438 240.441406 33.867188 240.441406 C 34.210938 240.441406 34.542969 240.402344 34.867188 240.316406 C 35.199219 240.234375 35.523438 240.109375 35.835938 239.941406 L 35.835938 240.785156 C 35.511719 240.921875 35.179688 241.027344 34.835938 241.097656 C 34.5 241.167969 34.164062 241.207031 33.820312 241.207031 C 32.945312 241.207031 32.25 240.957031 31.742188 240.457031 C 31.230469 239.949219 30.976562 239.253906 30.976562 238.378906 C 30.976562 237.484375 31.214844 236.777344 31.695312 236.253906 C 32.183594 235.734375 32.839844 235.472656 33.664062 235.472656 C 34.402344 235.472656 34.984375 235.707031 35.414062 236.175781 C 35.839844 236.644531 36.054688 237.292969 36.054688 238.113281 Z M 35.148438 237.847656 C 35.148438 237.359375 35.011719 236.96875 34.742188 236.675781 C 34.46875 236.375 34.117188 236.222656 33.679688 236.222656 C 33.167969 236.222656 32.761719 236.371094 32.460938 236.660156 C 32.167969 236.941406 31.996094 237.339844 31.945312 237.847656 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.519531 233.472656 L 38.425781 233.472656 L 38.425781 241.066406 L 37.519531 241.066406 Z "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 40.160156 233.472656 L 40.941406 233.472656 C 41.429688 234.246094 41.792969 235 42.035156 235.738281 C 42.285156 236.46875 42.410156 237.199219 42.410156 237.925781 C 42.410156 238.65625 42.285156 239.390625 42.035156 240.128906 C 41.792969 240.871094 41.429688 241.617188 40.941406 242.378906 L 40.160156 242.378906 C 40.597656 241.636719 40.917969 240.902344 41.128906 240.160156 C 41.347656 239.421875 41.457031 238.675781 41.457031 237.925781 C 41.457031 237.175781 41.347656 236.4375 41.128906 235.707031 C 40.917969 234.96875 40.597656 234.222656 40.160156 233.472656 Z "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="83.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-25" x="16.116835" y="206.377778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="86.394737" y="187.402308"/>
|
||||
<use xlink:href="#glyph0-26" x="21.614882" y="206.377778"/>
|
||||
</g>
|
||||
<use xlink:href="#image28" transform="matrix(1,0,0,1,45.894737,151.402308)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 63.808594 159.402344 L 63.132812 160.847656 L 61.199219 162.097656 L 58.265625 162.984375 L 54.730469 163.386719 L 51.074219 163.25 L 47.785156 162.59375 L 45.308594 161.507812 L 43.980469 160.136719 L 43.980469 158.667969 L 45.308594 157.296875 L 47.785156 156.210938 L 51.074219 155.554688 L 54.730469 155.417969 L 58.265625 155.820312 L 61.199219 156.707031 L 63.132812 157.957031 Z M 63.808594 159.402344 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,100%);fill-opacity:1;" d="M 57.808594 159.402344 L 57.539062 163.015625 L 56.765625 166.140625 L 55.59375 168.355469 L 54.179688 169.359375 L 52.714844 169.019531 L 51.398438 167.382812 L 50.410156 164.667969 L 49.878906 161.238281 L 49.878906 157.566406 L 50.410156 154.136719 L 51.398438 151.421875 L 52.714844 149.785156 L 54.179688 149.445312 L 55.59375 150.449219 L 56.765625 152.664062 L 57.539062 155.789062 Z M 57.808594 159.402344 "/>
|
||||
<path style="fill-rule:nonzero;fill:url(#radial0);stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,50.196078%,0%);stroke-opacity:1;stroke-miterlimit:4;" d="M 4.998991 -19.999964 L 4.502898 -17.831996 L 3.116179 -16.089808 L 1.112273 -15.124964 L -1.11429 -15.124964 L -3.118196 -16.089808 L -4.504915 -17.831996 L -5.001009 -19.999964 L -4.504915 -22.167933 L -3.118196 -23.910121 L -1.11429 -24.874964 L 1.112273 -24.874964 L 3.116179 -23.910121 L 4.502898 -22.167933 Z M 4.998991 -19.999964 " transform="matrix(1,0,0,1,53.809602,179.402308)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.554688 114.734375 L 191.023438 114.734375 L 192.882812 119.703125 L 194.757812 114.734375 L 196.226562 114.734375 L 196.226562 122.03125 L 195.257812 122.03125 L 195.257812 115.625 L 193.382812 120.625 L 192.382812 120.625 L 190.507812 115.625 L 190.507812 122.03125 L 189.554688 122.03125 Z M 189.554688 114.734375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 199.632812 117.1875 C 199.152344 117.1875 198.773438 117.375 198.492188 117.75 C 198.210938 118.125 198.070312 118.640625 198.070312 119.296875 C 198.070312 119.953125 198.203125 120.46875 198.476562 120.84375 C 198.757812 121.21875 199.140625 121.40625 199.632812 121.40625 C 200.109375 121.40625 200.492188 121.21875 200.773438 120.84375 C 201.054688 120.46875 201.195312 119.953125 201.195312 119.296875 C 201.195312 118.652344 201.054688 118.140625 200.773438 117.765625 C 200.492188 117.382812 200.109375 117.1875 199.632812 117.1875 Z M 199.632812 116.4375 C 200.414062 116.4375 201.027344 116.695312 201.476562 117.203125 C 201.921875 117.703125 202.148438 118.402344 202.148438 119.296875 C 202.148438 120.195312 201.921875 120.898438 201.476562 121.40625 C 201.027344 121.917969 200.414062 122.171875 199.632812 122.171875 C 198.851562 122.171875 198.234375 121.917969 197.789062 121.40625 C 197.339844 120.898438 197.117188 120.195312 197.117188 119.296875 C 197.117188 118.402344 197.339844 117.703125 197.789062 117.203125 C 198.234375 116.695312 198.851562 116.4375 199.632812 116.4375 Z M 199.632812 116.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.054688 118.734375 L 208.054688 122.03125 L 207.164062 122.03125 L 207.164062 118.765625 C 207.164062 118.246094 207.058594 117.859375 206.851562 117.609375 C 206.652344 117.351562 206.351562 117.21875 205.945312 117.21875 C 205.464844 117.21875 205.085938 117.375 204.804688 117.6875 C 204.523438 117.992188 204.382812 118.40625 204.382812 118.9375 L 204.382812 122.03125 L 203.476562 122.03125 L 203.476562 116.5625 L 204.382812 116.5625 L 204.382812 117.40625 C 204.601562 117.085938 204.855469 116.84375 205.148438 116.6875 C 205.4375 116.523438 205.773438 116.4375 206.148438 116.4375 C 206.773438 116.4375 207.246094 116.632812 207.570312 117.015625 C 207.890625 117.402344 208.054688 117.976562 208.054688 118.734375 Z M 208.054688 118.734375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 213.117188 119.234375 C 213.117188 118.578125 212.980469 118.074219 212.710938 117.71875 C 212.4375 117.367188 212.0625 117.1875 211.585938 117.1875 C 211.09375 117.1875 210.714844 117.367188 210.445312 117.71875 C 210.183594 118.074219 210.054688 118.578125 210.054688 119.234375 C 210.054688 119.882812 210.183594 120.386719 210.445312 120.75 C 210.714844 121.105469 211.09375 121.28125 211.585938 121.28125 C 212.0625 121.28125 212.4375 121.105469 212.710938 120.75 C 212.980469 120.386719 213.117188 119.882812 213.117188 119.234375 Z M 214.007812 121.359375 C 214.007812 122.285156 213.796875 122.972656 213.382812 123.421875 C 212.976562 123.878906 212.34375 124.109375 211.492188 124.109375 C 211.179688 124.109375 210.882812 124.082031 210.601562 124.03125 C 210.320312 123.988281 210.046875 123.921875 209.789062 123.828125 L 209.789062 122.953125 C 210.046875 123.097656 210.304688 123.203125 210.554688 123.265625 C 210.8125 123.335938 211.078125 123.375 211.351562 123.375 C 211.933594 123.375 212.371094 123.21875 212.664062 122.90625 C 212.964844 122.601562 213.117188 122.140625 213.117188 121.515625 L 213.117188 121.0625 C 212.929688 121.386719 212.6875 121.632812 212.398438 121.796875 C 212.105469 121.953125 211.757812 122.03125 211.351562 122.03125 C 210.683594 122.03125 210.140625 121.777344 209.726562 121.265625 C 209.320312 120.757812 209.117188 120.078125 209.117188 119.234375 C 209.117188 118.390625 209.320312 117.714844 209.726562 117.203125 C 210.140625 116.695312 210.683594 116.4375 211.351562 116.4375 C 211.757812 116.4375 212.105469 116.515625 212.398438 116.671875 C 212.6875 116.828125 212.929688 117.070312 213.117188 117.390625 L 213.117188 116.5625 L 214.007812 116.5625 Z M 214.007812 121.359375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 217.632812 117.1875 C 217.152344 117.1875 216.773438 117.375 216.492188 117.75 C 216.210938 118.125 216.070312 118.640625 216.070312 119.296875 C 216.070312 119.953125 216.203125 120.46875 216.476562 120.84375 C 216.757812 121.21875 217.140625 121.40625 217.632812 121.40625 C 218.109375 121.40625 218.492188 121.21875 218.773438 120.84375 C 219.054688 120.46875 219.195312 119.953125 219.195312 119.296875 C 219.195312 118.652344 219.054688 118.140625 218.773438 117.765625 C 218.492188 117.382812 218.109375 117.1875 217.632812 117.1875 Z M 217.632812 116.4375 C 218.414062 116.4375 219.027344 116.695312 219.476562 117.203125 C 219.921875 117.703125 220.148438 118.402344 220.148438 119.296875 C 220.148438 120.195312 219.921875 120.898438 219.476562 121.40625 C 219.027344 121.917969 218.414062 122.171875 217.632812 122.171875 C 216.851562 122.171875 216.234375 121.917969 215.789062 121.40625 C 215.339844 120.898438 215.117188 120.195312 215.117188 119.296875 C 215.117188 118.402344 215.339844 117.703125 215.789062 117.203125 C 216.234375 116.695312 216.851562 116.4375 217.632812 116.4375 Z M 217.632812 116.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 221.507812 114.4375 L 222.414062 114.4375 L 222.414062 122.03125 L 221.507812 122.03125 Z M 221.507812 114.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 223.507812 116.5625 L 224.414062 116.5625 L 224.414062 122.03125 L 223.507812 122.03125 Z M 223.507812 114.4375 L 224.414062 114.4375 L 224.414062 115.578125 L 223.507812 115.578125 Z M 223.507812 114.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.992188 119.28125 C 227.273438 119.28125 226.773438 119.367188 226.492188 119.53125 C 226.210938 119.699219 226.070312 119.980469 226.070312 120.375 C 226.070312 120.699219 226.171875 120.953125 226.382812 121.140625 C 226.589844 121.328125 226.875 121.421875 227.242188 121.421875 C 227.742188 121.421875 228.140625 121.246094 228.445312 120.890625 C 228.746094 120.539062 228.898438 120.070312 228.898438 119.484375 L 228.898438 119.28125 Z M 229.789062 118.90625 L 229.789062 122.03125 L 228.898438 122.03125 L 228.898438 121.203125 C 228.6875 121.539062 228.429688 121.78125 228.117188 121.9375 C 227.8125 122.09375 227.445312 122.171875 227.007812 122.171875 C 226.445312 122.171875 225.996094 122.015625 225.664062 121.703125 C 225.328125 121.390625 225.164062 120.96875 225.164062 120.4375 C 225.164062 119.824219 225.371094 119.359375 225.789062 119.046875 C 226.203125 118.734375 226.820312 118.578125 227.632812 118.578125 L 228.898438 118.578125 L 228.898438 118.484375 C 228.898438 118.078125 228.757812 117.761719 228.476562 117.53125 C 228.203125 117.304688 227.824219 117.1875 227.335938 117.1875 C 227.023438 117.1875 226.714844 117.230469 226.414062 117.3125 C 226.121094 117.386719 225.839844 117.496094 225.570312 117.640625 L 225.570312 116.8125 C 225.902344 116.6875 226.21875 116.59375 226.523438 116.53125 C 226.835938 116.46875 227.136719 116.4375 227.429688 116.4375 C 228.21875 116.4375 228.808594 116.640625 229.195312 117.046875 C 229.589844 117.453125 229.789062 118.074219 229.789062 118.90625 Z M 229.789062 118.90625 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.664062 114.4375 C 236.234375 115.1875 235.914062 115.933594 235.695312 116.671875 C 235.484375 117.402344 235.382812 118.140625 235.382812 118.890625 C 235.382812 119.640625 235.484375 120.386719 235.695312 121.125 C 235.914062 121.867188 236.234375 122.601562 236.664062 123.34375 L 235.882812 123.34375 C 235.402344 122.582031 235.039062 121.835938 234.789062 121.09375 C 234.546875 120.355469 234.429688 119.621094 234.429688 118.890625 C 234.429688 118.164062 234.546875 117.433594 234.789062 116.703125 C 235.027344 115.964844 235.390625 115.210938 235.882812 114.4375 Z M 236.664062 114.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.398438 115.015625 L 238.398438 116.5625 L 240.257812 116.5625 L 240.257812 117.265625 L 238.398438 117.265625 L 238.398438 120.234375 C 238.398438 120.671875 238.460938 120.960938 238.585938 121.09375 C 238.710938 121.21875 238.960938 121.28125 239.335938 121.28125 L 240.257812 121.28125 L 240.257812 122.03125 L 239.335938 122.03125 C 238.636719 122.03125 238.152344 121.902344 237.882812 121.640625 C 237.621094 121.382812 237.492188 120.914062 237.492188 120.234375 L 237.492188 117.265625 L 236.835938 117.265625 L 236.835938 116.5625 L 237.492188 116.5625 L 237.492188 115.015625 Z M 238.398438 115.015625 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 240.507812 116.5625 L 241.414062 116.5625 L 241.414062 122.03125 L 240.507812 122.03125 Z M 240.507812 114.4375 L 241.414062 114.4375 L 241.414062 115.578125 L 240.507812 115.578125 Z M 240.507812 114.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.648438 114.4375 L 248.648438 115.1875 L 247.789062 115.1875 C 247.464844 115.1875 247.242188 115.257812 247.117188 115.390625 C 246.992188 115.515625 246.929688 115.746094 246.929688 116.078125 L 246.929688 116.5625 L 248.414062 116.5625 L 248.414062 117.265625 L 246.929688 117.265625 L 246.929688 122.03125 L 246.023438 122.03125 L 246.023438 117.265625 L 243.570312 117.265625 L 243.570312 122.03125 L 242.664062 122.03125 L 242.664062 117.265625 L 241.804688 117.265625 L 241.804688 116.5625 L 242.664062 116.5625 L 242.664062 116.1875 C 242.664062 115.574219 242.804688 115.132812 243.085938 114.859375 C 243.367188 114.578125 243.8125 114.4375 244.429688 114.4375 L 245.289062 114.4375 L 245.289062 115.1875 L 244.429688 115.1875 C 244.105469 115.1875 243.875 115.25 243.742188 115.375 C 243.625 115.511719 243.570312 115.746094 243.570312 116.078125 L 243.570312 116.5625 L 246.023438 116.5625 L 246.023438 116.1875 C 246.023438 115.574219 246.164062 115.132812 246.445312 114.859375 C 246.734375 114.578125 247.1875 114.4375 247.804688 114.4375 Z M 248.648438 114.4375 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.367188 114.4375 L 249.148438 114.4375 C 249.636719 115.210938 250 115.964844 250.242188 116.703125 C 250.492188 117.433594 250.617188 118.164062 250.617188 118.890625 C 250.617188 119.621094 250.492188 120.355469 250.242188 121.09375 C 250 121.835938 249.636719 122.582031 249.148438 123.34375 L 248.367188 123.34375 C 248.804688 122.601562 249.125 121.867188 249.335938 121.125 C 249.554688 120.386719 249.664062 119.640625 249.664062 118.890625 C 249.664062 118.140625 249.554688 117.402344 249.335938 116.671875 C 249.125 115.933594 248.804688 115.1875 248.367188 114.4375 Z M 248.367188 114.4375 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-24" x="188.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-15" x="27.952772" y="206.377778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="196.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-14" x="30.731093" y="206.377778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="202.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-3" x="33.509413" y="206.377778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="208.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-5" x="39.661757" y="206.377778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="214.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-6" x="8.345839" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="220.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-27" x="12.247206" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="222.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-3" x="18.594862" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="224.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-20" x="24.747206" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="230.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-1" x="28.267714" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="233.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-12" x="34.395643" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="236.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-14" x="40.733534" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="239.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-2" x="43.511854" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-26" x="241.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-5" x="47.432753" y="217.940278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="247.571152" y="122.029988"/>
|
||||
<use xlink:href="#glyph0-22" x="18.907362" y="229.502778"/>
|
||||
</g>
|
||||
<use xlink:href="#image31" transform="matrix(1,0,0,1,211.571152,86.029988)"/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.355469 201.613281 L 22.355469 202.457031 C 22.105469 202.324219 21.847656 202.21875 21.589844 202.144531 C 21.339844 202.074219 21.082031 202.035156 20.824219 202.035156 C 20.238281 202.035156 19.785156 202.222656 19.464844 202.597656 C 19.140625 202.964844 18.980469 203.480469 18.980469 204.144531 C 18.980469 204.8125 19.140625 205.332031 19.464844 205.707031 C 19.785156 206.074219 20.238281 206.253906 20.824219 206.253906 C 21.082031 206.253906 21.339844 206.222656 21.589844 206.160156 C 21.847656 206.089844 22.105469 205.980469 22.355469 205.832031 L 22.355469 206.675781 C 22.105469 206.792969 21.84375 206.875 21.574219 206.925781 C 21.3125 206.988281 21.03125 207.019531 20.730469 207.019531 C 19.894531 207.019531 19.234375 206.765625 18.746094 206.253906 C 18.265625 205.734375 18.027344 205.03125 18.027344 204.144531 C 18.027344 203.261719 18.269531 202.5625 18.761719 202.050781 C 19.25 201.542969 19.921875 201.285156 20.777344 201.285156 C 21.058594 201.285156 21.328125 201.3125 21.589844 201.363281 C 21.847656 201.417969 22.105469 201.5 22.355469 201.613281 Z M 22.355469 201.613281 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 27.964844 203.582031 L 27.964844 206.878906 L 27.074219 206.878906 L 27.074219 203.613281 C 27.074219 203.09375 26.96875 202.707031 26.761719 202.457031 C 26.5625 202.199219 26.261719 202.066406 25.855469 202.066406 C 25.375 202.066406 24.996094 202.222656 24.714844 202.535156 C 24.433594 202.839844 24.292969 203.253906 24.292969 203.785156 L 24.292969 206.878906 L 23.386719 206.878906 L 23.386719 199.285156 L 24.292969 199.285156 L 24.292969 202.253906 C 24.511719 201.933594 24.765625 201.691406 25.058594 201.535156 C 25.347656 201.371094 25.683594 201.285156 26.058594 201.285156 C 26.683594 201.285156 27.15625 201.480469 27.480469 201.863281 C 27.800781 202.25 27.964844 202.824219 27.964844 203.582031 Z M 27.964844 203.582031 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 29.417969 201.410156 L 30.324219 201.410156 L 30.324219 206.878906 L 29.417969 206.878906 Z M 29.417969 199.285156 L 30.324219 199.285156 L 30.324219 200.425781 L 29.417969 200.425781 Z M 29.417969 199.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.417969 199.285156 L 32.324219 199.285156 L 32.324219 206.878906 L 31.417969 206.878906 Z M 31.417969 199.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.105469 203.925781 L 38.105469 204.363281 L 33.964844 204.363281 C 34.003906 204.980469 34.191406 205.449219 34.527344 205.769531 C 34.859375 206.09375 35.324219 206.253906 35.917969 206.253906 C 36.261719 206.253906 36.59375 206.214844 36.917969 206.128906 C 37.25 206.046875 37.574219 205.921875 37.886719 205.753906 L 37.886719 206.597656 C 37.5625 206.734375 37.230469 206.839844 36.886719 206.910156 C 36.550781 206.980469 36.214844 207.019531 35.871094 207.019531 C 34.996094 207.019531 34.300781 206.769531 33.792969 206.269531 C 33.28125 205.761719 33.027344 205.066406 33.027344 204.191406 C 33.027344 203.296875 33.265625 202.589844 33.746094 202.066406 C 34.234375 201.546875 34.890625 201.285156 35.714844 201.285156 C 36.453125 201.285156 37.035156 201.519531 37.464844 201.988281 C 37.890625 202.457031 38.105469 203.105469 38.105469 203.925781 Z M 37.199219 203.660156 C 37.199219 203.171875 37.0625 202.78125 36.792969 202.488281 C 36.519531 202.1875 36.167969 202.035156 35.730469 202.035156 C 35.21875 202.035156 34.8125 202.183594 34.511719 202.472656 C 34.21875 202.753906 34.046875 203.152344 33.996094 203.660156 Z M 37.199219 203.660156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 13.574219 211.285156 C 13.144531 212.035156 12.824219 212.78125 12.605469 213.519531 C 12.394531 214.25 12.292969 214.988281 12.292969 215.738281 C 12.292969 216.488281 12.394531 217.234375 12.605469 217.972656 C 12.824219 218.714844 13.144531 219.449219 13.574219 220.191406 L 12.792969 220.191406 C 12.3125 219.429688 11.949219 218.683594 11.699219 217.941406 C 11.457031 217.203125 11.339844 216.46875 11.339844 215.738281 C 11.339844 215.011719 11.457031 214.28125 11.699219 213.550781 C 11.9375 212.8125 12.300781 212.058594 12.792969 211.285156 Z M 13.574219 211.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 18.027344 214.238281 L 18.027344 211.285156 L 18.917969 211.285156 L 18.917969 218.878906 L 18.027344 218.878906 L 18.027344 218.050781 C 17.839844 218.386719 17.597656 218.628906 17.308594 218.785156 C 17.015625 218.941406 16.667969 219.019531 16.261719 219.019531 C 15.605469 219.019531 15.066406 218.761719 14.652344 218.238281 C 14.234375 217.707031 14.027344 217.011719 14.027344 216.144531 C 14.027344 215.292969 14.234375 214.605469 14.652344 214.082031 C 15.066406 213.550781 15.605469 213.285156 16.261719 213.285156 C 16.667969 213.285156 17.015625 213.363281 17.308594 213.519531 C 17.597656 213.675781 17.839844 213.917969 18.027344 214.238281 Z M 14.964844 216.144531 C 14.964844 216.8125 15.097656 217.332031 15.371094 217.707031 C 15.640625 218.082031 16.015625 218.269531 16.496094 218.269531 C 16.964844 218.269531 17.332031 218.082031 17.605469 217.707031 C 17.886719 217.332031 18.027344 216.8125 18.027344 216.144531 C 18.027344 215.488281 17.886719 214.972656 17.605469 214.597656 C 17.332031 214.222656 16.964844 214.035156 16.496094 214.035156 C 16.015625 214.035156 15.640625 214.222656 15.371094 214.597656 C 15.097656 214.972656 14.964844 215.488281 14.964844 216.144531 Z M 14.964844 216.144531 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 25.105469 215.925781 L 25.105469 216.363281 L 20.964844 216.363281 C 21.003906 216.980469 21.191406 217.449219 21.527344 217.769531 C 21.859375 218.09375 22.324219 218.253906 22.917969 218.253906 C 23.261719 218.253906 23.59375 218.214844 23.917969 218.128906 C 24.25 218.046875 24.574219 217.921875 24.886719 217.753906 L 24.886719 218.597656 C 24.5625 218.734375 24.230469 218.839844 23.886719 218.910156 C 23.550781 218.980469 23.214844 219.019531 22.871094 219.019531 C 21.996094 219.019531 21.300781 218.769531 20.792969 218.269531 C 20.28125 217.761719 20.027344 217.066406 20.027344 216.191406 C 20.027344 215.296875 20.265625 214.589844 20.746094 214.066406 C 21.234375 213.546875 21.890625 213.285156 22.714844 213.285156 C 23.453125 213.285156 24.035156 213.519531 24.464844 213.988281 C 24.890625 214.457031 25.105469 215.105469 25.105469 215.925781 Z M 24.199219 215.660156 C 24.199219 215.171875 24.0625 214.78125 23.792969 214.488281 C 23.519531 214.1875 23.167969 214.035156 22.730469 214.035156 C 22.21875 214.035156 21.8125 214.183594 21.511719 214.472656 C 21.21875 214.753906 21.046875 215.152344 20.996094 215.660156 Z M 24.199219 215.660156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 29.199219 211.285156 L 29.199219 212.035156 L 28.339844 212.035156 C 28.015625 212.035156 27.792969 212.105469 27.667969 212.238281 C 27.542969 212.363281 27.480469 212.59375 27.480469 212.925781 L 27.480469 213.410156 L 28.949219 213.410156 L 28.949219 214.113281 L 27.480469 214.113281 L 27.480469 218.878906 L 26.574219 218.878906 L 26.574219 214.113281 L 25.714844 214.113281 L 25.714844 213.410156 L 26.574219 213.410156 L 26.574219 213.035156 C 26.574219 212.421875 26.714844 211.980469 26.996094 211.707031 C 27.277344 211.425781 27.722656 211.285156 28.339844 211.285156 Z M 29.199219 211.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.902344 216.128906 C 31.183594 216.128906 30.683594 216.214844 30.402344 216.378906 C 30.121094 216.546875 29.980469 216.828125 29.980469 217.222656 C 29.980469 217.546875 30.082031 217.800781 30.292969 217.988281 C 30.5 218.175781 30.785156 218.269531 31.152344 218.269531 C 31.652344 218.269531 32.050781 218.09375 32.355469 217.738281 C 32.65625 217.386719 32.808594 216.917969 32.808594 216.332031 L 32.808594 216.128906 Z M 33.699219 215.753906 L 33.699219 218.878906 L 32.808594 218.878906 L 32.808594 218.050781 C 32.597656 218.386719 32.339844 218.628906 32.027344 218.785156 C 31.722656 218.941406 31.355469 219.019531 30.917969 219.019531 C 30.355469 219.019531 29.90625 218.863281 29.574219 218.550781 C 29.238281 218.238281 29.074219 217.816406 29.074219 217.285156 C 29.074219 216.671875 29.28125 216.207031 29.699219 215.894531 C 30.113281 215.582031 30.730469 215.425781 31.542969 215.425781 L 32.808594 215.425781 L 32.808594 215.332031 C 32.808594 214.925781 32.667969 214.609375 32.386719 214.378906 C 32.113281 214.152344 31.734375 214.035156 31.246094 214.035156 C 30.933594 214.035156 30.625 214.078125 30.324219 214.160156 C 30.03125 214.234375 29.75 214.34375 29.480469 214.488281 L 29.480469 213.660156 C 29.8125 213.535156 30.128906 213.441406 30.433594 213.378906 C 30.746094 213.316406 31.046875 213.285156 31.339844 213.285156 C 32.128906 213.285156 32.71875 213.488281 33.105469 213.894531 C 33.5 214.300781 33.699219 214.921875 33.699219 215.753906 Z M 33.699219 215.753906 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 35.324219 216.722656 L 35.324219 213.410156 L 36.230469 213.410156 L 36.230469 216.691406 C 36.230469 217.203125 36.328125 217.589844 36.527344 217.847656 C 36.734375 218.109375 37.035156 218.238281 37.433594 218.238281 C 37.921875 218.238281 38.308594 218.089844 38.589844 217.785156 C 38.871094 217.472656 39.011719 217.046875 39.011719 216.503906 L 39.011719 213.410156 L 39.917969 213.410156 L 39.917969 218.878906 L 39.011719 218.878906 L 39.011719 218.035156 C 38.792969 218.371094 38.535156 218.621094 38.246094 218.785156 C 37.964844 218.941406 37.628906 219.019531 37.246094 219.019531 C 36.621094 219.019531 36.140625 218.828125 35.808594 218.441406 C 35.484375 218.046875 35.324219 217.472656 35.324219 216.722656 Z M 37.589844 213.285156 Z M 37.589844 213.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 41.417969 211.285156 L 42.324219 211.285156 L 42.324219 218.878906 L 41.417969 218.878906 Z M 41.417969 211.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.308594 211.863281 L 44.308594 213.410156 L 46.167969 213.410156 L 46.167969 214.113281 L 44.308594 214.113281 L 44.308594 217.082031 C 44.308594 217.519531 44.371094 217.808594 44.496094 217.941406 C 44.621094 218.066406 44.871094 218.128906 45.246094 218.128906 L 46.167969 218.128906 L 46.167969 218.878906 L 45.246094 218.878906 C 44.546875 218.878906 44.0625 218.75 43.792969 218.488281 C 43.53125 218.230469 43.402344 217.761719 43.402344 217.082031 L 43.402344 214.113281 L 42.746094 214.113281 L 42.746094 213.410156 L 43.402344 213.410156 L 43.402344 211.863281 Z M 44.308594 211.863281 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.542969 226.035156 C 22.0625 226.035156 21.683594 226.222656 21.402344 226.597656 C 21.121094 226.972656 20.980469 227.488281 20.980469 228.144531 C 20.980469 228.800781 21.113281 229.316406 21.386719 229.691406 C 21.667969 230.066406 22.050781 230.253906 22.542969 230.253906 C 23.019531 230.253906 23.402344 230.066406 23.683594 229.691406 C 23.964844 229.316406 24.105469 228.800781 24.105469 228.144531 C 24.105469 227.5 23.964844 226.988281 23.683594 226.613281 C 23.402344 226.230469 23.019531 226.035156 22.542969 226.035156 Z M 22.542969 225.285156 C 23.324219 225.285156 23.9375 225.542969 24.386719 226.050781 C 24.832031 226.550781 25.058594 227.25 25.058594 228.144531 C 25.058594 229.042969 24.832031 229.746094 24.386719 230.253906 C 23.9375 230.765625 23.324219 231.019531 22.542969 231.019531 C 21.761719 231.019531 21.144531 230.765625 20.699219 230.253906 C 20.25 229.746094 20.027344 229.042969 20.027344 228.144531 C 20.027344 227.25 20.25 226.550781 20.699219 226.050781 C 21.144531 225.542969 21.761719 225.285156 22.542969 225.285156 Z M 22.542969 225.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30.027344 228.082031 C 30.027344 227.425781 29.890625 226.921875 29.621094 226.566406 C 29.347656 226.214844 28.972656 226.035156 28.496094 226.035156 C 28.003906 226.035156 27.625 226.214844 27.355469 226.566406 C 27.09375 226.921875 26.964844 227.425781 26.964844 228.082031 C 26.964844 228.730469 27.09375 229.234375 27.355469 229.597656 C 27.625 229.953125 28.003906 230.128906 28.496094 230.128906 C 28.972656 230.128906 29.347656 229.953125 29.621094 229.597656 C 29.890625 229.234375 30.027344 228.730469 30.027344 228.082031 Z M 30.917969 230.207031 C 30.917969 231.132812 30.707031 231.820312 30.292969 232.269531 C 29.886719 232.726562 29.253906 232.957031 28.402344 232.957031 C 28.089844 232.957031 27.792969 232.929688 27.511719 232.878906 C 27.230469 232.835938 26.957031 232.769531 26.699219 232.675781 L 26.699219 231.800781 C 26.957031 231.945312 27.214844 232.050781 27.464844 232.113281 C 27.722656 232.183594 27.988281 232.222656 28.261719 232.222656 C 28.84375 232.222656 29.28125 232.066406 29.574219 231.753906 C 29.875 231.449219 30.027344 230.988281 30.027344 230.363281 L 30.027344 229.910156 C 29.839844 230.234375 29.597656 230.480469 29.308594 230.644531 C 29.015625 230.800781 28.667969 230.878906 28.261719 230.878906 C 27.59375 230.878906 27.050781 230.625 26.636719 230.113281 C 26.230469 229.605469 26.027344 228.925781 26.027344 228.082031 C 26.027344 227.238281 26.230469 226.5625 26.636719 226.050781 C 27.050781 225.542969 27.59375 225.285156 28.261719 225.285156 C 28.667969 225.285156 29.015625 225.363281 29.308594 225.519531 C 29.597656 225.675781 29.839844 225.917969 30.027344 226.238281 L 30.027344 225.410156 L 30.917969 225.410156 Z M 30.917969 230.207031 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.355469 225.613281 L 36.355469 226.457031 C 36.105469 226.324219 35.847656 226.21875 35.589844 226.144531 C 35.339844 226.074219 35.082031 226.035156 34.824219 226.035156 C 34.238281 226.035156 33.785156 226.222656 33.464844 226.597656 C 33.140625 226.964844 32.980469 227.480469 32.980469 228.144531 C 32.980469 228.8125 33.140625 229.332031 33.464844 229.707031 C 33.785156 230.074219 34.238281 230.253906 34.824219 230.253906 C 35.082031 230.253906 35.339844 230.222656 35.589844 230.160156 C 35.847656 230.089844 36.105469 229.980469 36.355469 229.832031 L 36.355469 230.675781 C 36.105469 230.792969 35.84375 230.875 35.574219 230.925781 C 35.3125 230.988281 35.03125 231.019531 34.730469 231.019531 C 33.894531 231.019531 33.234375 230.765625 32.746094 230.253906 C 32.265625 229.734375 32.027344 229.03125 32.027344 228.144531 C 32.027344 227.261719 32.269531 226.5625 32.761719 226.050781 C 33.25 225.542969 33.921875 225.285156 34.777344 225.285156 C 35.058594 225.285156 35.328125 225.3125 35.589844 225.363281 C 35.847656 225.417969 36.105469 225.5 36.355469 225.613281 Z M 36.355469 225.613281 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d=""/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19.292969 242.050781 L 19.292969 244.957031 L 18.386719 244.957031 L 18.386719 237.410156 L 19.292969 237.410156 L 19.292969 238.238281 C 19.480469 237.917969 19.714844 237.675781 19.996094 237.519531 C 20.285156 237.363281 20.636719 237.285156 21.042969 237.285156 C 21.707031 237.285156 22.246094 237.550781 22.652344 238.082031 C 23.066406 238.605469 23.277344 239.292969 23.277344 240.144531 C 23.277344 241.011719 23.066406 241.707031 22.652344 242.238281 C 22.246094 242.761719 21.707031 243.019531 21.042969 243.019531 C 20.636719 243.019531 20.285156 242.941406 19.996094 242.785156 C 19.714844 242.628906 19.480469 242.386719 19.292969 242.050781 Z M 22.355469 240.144531 C 22.355469 239.488281 22.214844 238.972656 21.933594 238.597656 C 21.660156 238.222656 21.292969 238.035156 20.824219 238.035156 C 20.34375 238.035156 19.96875 238.222656 19.699219 238.597656 C 19.425781 238.972656 19.292969 239.488281 19.292969 240.144531 C 19.292969 240.8125 19.425781 241.332031 19.699219 241.707031 C 19.96875 242.082031 20.34375 242.269531 20.824219 242.269531 C 21.292969 242.269531 21.660156 242.082031 21.933594 241.707031 C 22.214844 241.332031 22.355469 240.8125 22.355469 240.144531 Z M 22.355469 240.144531 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 24.417969 237.410156 L 25.324219 237.410156 L 25.324219 242.878906 L 24.417969 242.878906 Z M 24.417969 235.285156 L 25.324219 235.285156 L 25.324219 236.425781 L 24.417969 236.425781 Z M 24.417969 235.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 30.964844 237.410156 L 28.996094 240.066406 L 31.074219 242.878906 L 30.011719 242.878906 L 28.417969 240.722656 L 26.824219 242.878906 L 25.761719 242.878906 L 27.886719 240.019531 L 25.949219 237.410156 L 27.011719 237.410156 L 28.464844 239.363281 L 29.902344 237.410156 Z M 30.964844 237.410156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 36.105469 239.925781 L 36.105469 240.363281 L 31.964844 240.363281 C 32.003906 240.980469 32.191406 241.449219 32.527344 241.769531 C 32.859375 242.09375 33.324219 242.253906 33.917969 242.253906 C 34.261719 242.253906 34.59375 242.214844 34.917969 242.128906 C 35.25 242.046875 35.574219 241.921875 35.886719 241.753906 L 35.886719 242.597656 C 35.5625 242.734375 35.230469 242.839844 34.886719 242.910156 C 34.550781 242.980469 34.214844 243.019531 33.871094 243.019531 C 32.996094 243.019531 32.300781 242.769531 31.792969 242.269531 C 31.28125 241.761719 31.027344 241.066406 31.027344 240.191406 C 31.027344 239.296875 31.265625 238.589844 31.746094 238.066406 C 32.234375 237.546875 32.890625 237.285156 33.714844 237.285156 C 34.453125 237.285156 35.035156 237.519531 35.464844 237.988281 C 35.890625 238.457031 36.105469 239.105469 36.105469 239.925781 Z M 35.199219 239.660156 C 35.199219 239.171875 35.0625 238.78125 34.792969 238.488281 C 34.519531 238.1875 34.167969 238.035156 33.730469 238.035156 C 33.21875 238.035156 32.8125 238.183594 32.511719 238.472656 C 32.21875 238.753906 32.046875 239.152344 31.996094 239.660156 Z M 35.199219 239.660156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 37.417969 235.285156 L 38.324219 235.285156 L 38.324219 242.878906 L 37.417969 242.878906 Z M 37.417969 235.285156 "/>
|
||||
<path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.277344 235.285156 L 40.058594 235.285156 C 40.546875 236.058594 40.910156 236.8125 41.152344 237.550781 C 41.402344 238.28125 41.527344 239.011719 41.527344 239.738281 C 41.527344 240.46875 41.402344 241.203125 41.152344 241.941406 C 40.910156 242.683594 40.546875 243.429688 40.058594 244.191406 L 39.277344 244.191406 C 39.714844 243.449219 40.035156 242.714844 40.246094 241.972656 C 40.464844 241.234375 40.574219 240.488281 40.574219 239.738281 C 40.574219 238.988281 40.464844 238.25 40.246094 237.519531 C 40.035156 236.78125 39.714844 236.035156 39.277344 235.285156 Z M 39.277344 235.285156 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-27" x="17.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-9" x="25.025526" y="229.502778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-28" x="22.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-25" x="31.373182" y="229.502778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="28.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-5" x="36.871229" y="229.502778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="30.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-8" x="15.694471" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="32.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-15" x="22.042128" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="38.478651" y="206.877778"/>
|
||||
<use xlink:href="#glyph0-28" x="24.820448" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-10" x="10.478651" y="218.877778"/>
|
||||
<use xlink:href="#glyph0-3" x="30.4308" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="13.478651" y="218.877778"/>
|
||||
<use xlink:href="#glyph0-14" x="36.583143" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="19.478651" y="218.877778"/>
|
||||
<use xlink:href="#glyph0-10" x="39.361464" y="241.065278"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-23" x="25.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-8" x="28.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-16" x="34.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="40.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="42.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="45.478651" y="218.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="19.478651" y="230.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="25.478651" y="230.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-27" x="31.478651" y="230.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-6" x="36.478651" y="230.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-12" x="17.478651" y="242.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-2" x="23.478651" y="242.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-29" x="25.478651" y="242.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="30.478651" y="242.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-18" x="36.478651" y="242.877778"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="38.478651" y="242.877778"/>
|
||||
</g>
|
||||
<use xlink:href="#image34" transform="matrix(1,0,0,1,27.478651,191.877778)"/>
|
||||
<use xlink:href="#image87" transform="matrix(1,0,0,1,27.478651,191.877778)"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 95 KiB |
|
@ -1,35 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="256pt" height="256pt" viewBox="0 0 256 256" version="1.1">
|
||||
<defs>
|
||||
<image id="image48" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image51" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image54" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image57" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image60" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image63" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image66" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image69" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image72" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image98" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image101" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image104" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image107" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image110" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image113" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image116" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image119" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
<image id="image122" width="16" height="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QA/wD/AP+gvaeTAAAATUlEQVQokZXNSwrAAAgD0bH3v7PdFIqQ+HEZ3mDgL1OMcdI2cFoHjRbBoKMGoy4fNvoPlvoL9hqIkwaek+4CqW3gtA4aLYJeZ9Zg1MALX2IYF9KsZQAAAAAASUVORK5CYII="/>
|
||||
</defs>
|
||||
<g id="surface44">
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 115.65625 56.117188 L 105.6875 50.042969 L 102.367188 41.585938 L 108.777344 39.203125 L 132.507812 28.515625 L 132.222656 27.054688 L 141.789062 23.054688 L 145.058594 32.933594 L 157.566406 68.800781 L 159.464844 73.835938 L 139.804688 81.023438 L 135.675781 71.570312 L 135.882812 66.1875 L 136.332031 59.265625 L 134.109375 51.578125 L 131.019531 45.429688 L 127.984375 38.507812 L 122.578125 41.546875 L 118.730469 49.234375 Z "/>
|
||||
<use xlink:href="#image48" transform="matrix(1,0,0,1,127.94131,42.841104)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 132.222656 27.054688 L 132.507812 28.515625 L 108.777344 39.203125 L 102.367188 41.585938 L 105.6875 50.042969 L 115.65625 56.117188 L 112.578125 61.574219 L 105.039062 74.605469 L 88.605469 74.414062 L 84.253906 74.566406 L 79.761719 74.644531 L 68.664062 79.027344 L 67.753906 79.296875 L 62.101562 68.839844 L 56.199219 60.996094 L 54.90625 61.496094 L 53.773438 58.652344 L 64.152344 54.578125 L 101.800781 39.277344 Z "/>
|
||||
<use xlink:href="#image51" transform="matrix(1,0,0,1,79.836035,51.528053)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 115.65625 56.117188 L 118.730469 49.234375 L 122.578125 41.546875 L 127.984375 38.507812 L 131.019531 45.429688 L 134.109375 51.578125 L 136.332031 59.265625 L 135.882812 66.1875 L 129.527344 66.6875 L 124.503906 68.453125 L 121.441406 69.992188 L 109.082031 80.371094 L 104.925781 81.371094 L 102.195312 83.253906 L 101.664062 85.136719 L 100.078125 88.445312 L 97.773438 91.671875 L 94.757812 93.558594 L 91.441406 100.015625 L 71.058594 108.050781 L 61.679688 81.753906 L 67.753906 79.296875 L 68.664062 79.027344 L 79.761719 74.644531 L 84.253906 74.566406 L 88.605469 74.414062 L 105.039062 74.605469 L 112.578125 61.574219 Z "/>
|
||||
<use xlink:href="#image54" transform="matrix(1,0,0,1,90.102079,69.169472)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 53.773438 58.652344 L 54.90625 61.496094 L 61.679688 81.753906 L 71.058594 108.050781 L 76.140625 119.121094 L 72.308594 122.695312 L 69.605469 130.535156 L 61.425781 133.496094 L 54.027344 114.699219 L 44.699219 118.351562 L 33.3125 123.15625 L 14.414062 130.113281 L 11.242188 120.925781 L 9.871094 116.082031 L 10.171875 111.96875 L 10.238281 106.011719 L 14.351562 105.242188 L 28.25 90.710938 L 23.488281 86.253906 L 21.667969 87.945312 L 16.679688 93.402344 L 11.117188 99.59375 L 7.113281 96.59375 L 0 79.527344 L 44.109375 62.304688 Z "/>
|
||||
<use xlink:href="#image57" transform="matrix(1,0,0,1,31.167216,88.825)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 54.90625 61.496094 L 56.199219 60.996094 L 62.101562 68.839844 L 67.753906 79.296875 L 61.679688 81.753906 Z "/>
|
||||
<use xlink:href="#image60" transform="matrix(1,0,0,1,53.212824,64.674519)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 135.882812 66.1875 L 135.675781 71.570312 L 139.804688 81.023438 L 127.082031 86.292969 L 110.335938 92.902344 L 109.199219 89.058594 L 101.835938 91.441406 L 103.257812 95.363281 L 91.441406 100.015625 L 94.757812 93.558594 L 97.773438 91.671875 L 100.078125 88.445312 L 101.664062 85.136719 L 102.195312 83.253906 L 104.925781 81.371094 L 109.082031 80.371094 L 121.441406 69.992188 L 124.503906 68.453125 L 129.527344 66.6875 Z "/>
|
||||
<use xlink:href="#image63" transform="matrix(1,0,0,1,111.187238,73.378811)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 159.464844 73.835938 L 170.804688 68.917969 L 173.171875 76.296875 L 176.019531 82.679688 L 183.402344 90.136719 L 184.109375 93.789062 L 174.757812 89.945312 L 171.078125 89.90625 L 169.109375 93.441406 L 185.757812 103.707031 L 182.722656 112.007812 L 181.617188 113.125 L 179.890625 116.3125 L 174.433594 119.734375 L 167.976562 121.773438 L 157.070312 125.578125 L 144.289062 132.804688 L 141.585938 126.386719 L 147.519531 123.503906 L 151.734375 120.082031 L 153.800781 116.507812 L 155.917969 110.203125 L 155.929688 105.933594 L 149.34375 87.90625 L 143.125 89.828125 L 136.710938 92.828125 L 130.351562 95.019531 L 128.355469 90.597656 L 127.082031 86.292969 L 139.804688 81.023438 Z "/>
|
||||
<use xlink:href="#image66" transform="matrix(1,0,0,1,153.144399,90.01164)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 183.402344 90.136719 L 188.046875 87.058594 L 192.929688 83.832031 L 200.394531 81.488281 L 201.0625 81.371094 L 205.175781 79.601562 L 213.167969 74.914062 L 216.90625 70.414062 L 228.015625 79.488281 L 228.765625 84.601562 L 242.207031 79.796875 L 241.550781 74.835938 L 245.570312 72.53125 L 247.820312 71.339844 L 250.59375 70.03125 L 252.679688 76.488281 L 254.8125 83.101562 L 256 85.5625 L 255.28125 85.714844 L 224.476562 96.902344 L 222.519531 98.167969 L 221.703125 98.9375 L 220.648438 100.207031 L 218.683594 102.28125 L 217.1875 107.625 L 217.277344 109.933594 L 221.75 133.035156 L 217.414062 146.066406 L 216.40625 148.449219 L 209.457031 155.371094 L 197.367188 172.246094 L 193.015625 173.746094 L 186.796875 175.4375 L 179.820312 175.511719 L 175.621094 173.015625 L 151.179688 179.433594 L 146.535156 182.738281 L 144.859375 184.625 L 144.503906 190.695312 L 150.546875 200.269531 L 153.316406 218.875 L 145.023438 226.640625 L 118.382812 232.945312 L 117.859375 231.675781 L 108.660156 207.035156 L 90.503906 158.40625 L 94.914062 153.0625 L 138.746094 132.382812 L 144.289062 132.804688 L 157.070312 125.578125 L 167.976562 121.773438 L 174.433594 119.734375 L 179.890625 116.3125 L 181.617188 113.125 L 182.722656 112.007812 L 185.757812 103.707031 L 169.109375 93.441406 L 171.078125 89.90625 L 174.757812 89.945312 L 184.109375 93.789062 Z "/>
|
||||
<use xlink:href="#image69" transform="matrix(1,0,0,1,155.527409,142.794669)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 110.335938 92.902344 L 127.082031 86.292969 L 128.355469 90.597656 L 130.351562 95.019531 L 136.710938 92.828125 L 143.125 89.828125 L 149.34375 87.90625 L 155.929688 105.933594 L 155.917969 110.203125 L 153.800781 116.507812 L 151.734375 120.082031 L 147.519531 123.503906 L 141.585938 126.386719 L 144.289062 132.804688 L 138.746094 132.382812 L 94.914062 153.0625 L 90.503906 158.40625 L 90.121094 157.292969 L 86.664062 147.644531 L 86.144531 145.105469 L 83.292969 139.1875 L 79.503906 129.191406 L 76.140625 119.121094 L 71.058594 108.050781 L 91.441406 100.015625 L 103.257812 95.363281 Z "/>
|
||||
<use xlink:href="#image72" transform="matrix(1,0,0,1,105.830723,109.774724)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 110.335938 92.902344 L 103.257812 95.363281 L 101.835938 91.441406 L 109.199219 89.058594 Z "/>
|
||||
<g id="surface94">
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 115.65625 56.117188 L 105.6875 50.042969 L 102.367188 41.585938 L 108.777344 39.203125 L 132.507812 28.515625 L 132.222656 27.054688 L 141.789062 23.054688 L 145.058594 32.933594 L 157.566406 68.800781 L 159.464844 73.835938 L 139.804688 81.023438 L 135.675781 71.570312 L 135.882812 66.1875 L 136.332031 59.265625 L 134.109375 51.578125 L 131.019531 45.429688 L 127.984375 38.507812 L 122.578125 41.546875 L 118.730469 49.234375 Z "/>
|
||||
<use xlink:href="#image98" transform="matrix(1,0,0,1,127.94131,42.841104)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 132.222656 27.054688 L 132.507812 28.515625 L 108.777344 39.203125 L 102.367188 41.585938 L 105.6875 50.042969 L 115.65625 56.117188 L 112.578125 61.574219 L 105.039062 74.605469 L 88.605469 74.414062 L 84.253906 74.566406 L 79.761719 74.644531 L 68.664062 79.027344 L 67.753906 79.296875 L 62.101562 68.839844 L 56.199219 60.996094 L 54.90625 61.496094 L 53.773438 58.652344 L 64.152344 54.578125 L 101.800781 39.277344 Z "/>
|
||||
<use xlink:href="#image101" transform="matrix(1,0,0,1,79.836035,51.528053)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 115.65625 56.117188 L 118.730469 49.234375 L 122.578125 41.546875 L 127.984375 38.507812 L 131.019531 45.429688 L 134.109375 51.578125 L 136.332031 59.265625 L 135.882812 66.1875 L 129.527344 66.6875 L 124.503906 68.453125 L 121.441406 69.992188 L 109.082031 80.371094 L 104.925781 81.371094 L 102.195312 83.253906 L 101.664062 85.136719 L 100.078125 88.445312 L 97.773438 91.671875 L 94.757812 93.558594 L 91.441406 100.015625 L 71.058594 108.050781 L 61.679688 81.753906 L 67.753906 79.296875 L 68.664062 79.027344 L 79.761719 74.644531 L 84.253906 74.566406 L 88.605469 74.414062 L 105.039062 74.605469 L 112.578125 61.574219 Z "/>
|
||||
<use xlink:href="#image104" transform="matrix(1,0,0,1,90.102079,69.169472)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 53.773438 58.652344 L 54.90625 61.496094 L 61.679688 81.753906 L 71.058594 108.050781 L 76.140625 119.121094 L 72.308594 122.695312 L 69.605469 130.535156 L 61.425781 133.496094 L 54.027344 114.699219 L 44.699219 118.351562 L 33.3125 123.15625 L 14.414062 130.113281 L 11.242188 120.925781 L 9.871094 116.082031 L 10.171875 111.96875 L 10.238281 106.011719 L 14.351562 105.242188 L 28.25 90.710938 L 23.488281 86.253906 L 21.667969 87.945312 L 16.679688 93.402344 L 11.117188 99.59375 L 7.113281 96.59375 L 0 79.527344 L 44.109375 62.304688 Z "/>
|
||||
<use xlink:href="#image107" transform="matrix(1,0,0,1,31.167216,88.825)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 54.90625 61.496094 L 56.199219 60.996094 L 62.101562 68.839844 L 67.753906 79.296875 L 61.679688 81.753906 Z "/>
|
||||
<use xlink:href="#image110" transform="matrix(1,0,0,1,53.212824,64.674519)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 135.882812 66.1875 L 135.675781 71.570312 L 139.804688 81.023438 L 127.082031 86.292969 L 110.335938 92.902344 L 109.199219 89.058594 L 101.835938 91.441406 L 103.257812 95.363281 L 91.441406 100.015625 L 94.757812 93.558594 L 97.773438 91.671875 L 100.078125 88.445312 L 101.664062 85.136719 L 102.195312 83.253906 L 104.925781 81.371094 L 109.082031 80.371094 L 121.441406 69.992188 L 124.503906 68.453125 L 129.527344 66.6875 Z "/>
|
||||
<use xlink:href="#image113" transform="matrix(1,0,0,1,111.187238,73.378811)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 159.464844 73.835938 L 170.804688 68.917969 L 173.171875 76.296875 L 176.019531 82.679688 L 183.402344 90.136719 L 184.109375 93.789062 L 174.757812 89.945312 L 171.078125 89.90625 L 169.109375 93.441406 L 185.757812 103.707031 L 182.722656 112.007812 L 181.617188 113.125 L 179.890625 116.3125 L 174.433594 119.734375 L 167.976562 121.773438 L 157.070312 125.578125 L 144.289062 132.804688 L 141.585938 126.386719 L 147.519531 123.503906 L 151.734375 120.082031 L 153.800781 116.507812 L 155.917969 110.203125 L 155.929688 105.933594 L 149.34375 87.90625 L 143.125 89.828125 L 136.710938 92.828125 L 130.351562 95.019531 L 128.355469 90.597656 L 127.082031 86.292969 L 139.804688 81.023438 Z "/>
|
||||
<use xlink:href="#image116" transform="matrix(1,0,0,1,153.144399,90.01164)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 183.402344 90.136719 L 188.046875 87.058594 L 192.929688 83.832031 L 200.394531 81.488281 L 201.0625 81.371094 L 205.175781 79.601562 L 213.167969 74.914062 L 216.90625 70.414062 L 228.015625 79.488281 L 228.765625 84.601562 L 242.207031 79.796875 L 241.550781 74.835938 L 245.570312 72.53125 L 247.820312 71.339844 L 250.59375 70.03125 L 252.679688 76.488281 L 254.8125 83.101562 L 256 85.5625 L 255.28125 85.714844 L 224.476562 96.902344 L 222.519531 98.167969 L 221.703125 98.9375 L 220.648438 100.207031 L 218.683594 102.28125 L 217.1875 107.625 L 217.277344 109.933594 L 221.75 133.035156 L 217.414062 146.066406 L 216.40625 148.449219 L 209.457031 155.371094 L 197.367188 172.246094 L 193.015625 173.746094 L 186.796875 175.4375 L 179.820312 175.511719 L 175.621094 173.015625 L 151.179688 179.433594 L 146.535156 182.738281 L 144.859375 184.625 L 144.503906 190.695312 L 150.546875 200.269531 L 153.316406 218.875 L 145.023438 226.640625 L 118.382812 232.945312 L 117.859375 231.675781 L 108.660156 207.035156 L 90.503906 158.40625 L 94.914062 153.0625 L 138.746094 132.382812 L 144.289062 132.804688 L 157.070312 125.578125 L 167.976562 121.773438 L 174.433594 119.734375 L 179.890625 116.3125 L 181.617188 113.125 L 182.722656 112.007812 L 185.757812 103.707031 L 169.109375 93.441406 L 171.078125 89.90625 L 174.757812 89.945312 L 184.109375 93.789062 Z "/>
|
||||
<use xlink:href="#image119" transform="matrix(1,0,0,1,155.527409,142.794669)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 110.335938 92.902344 L 127.082031 86.292969 L 128.355469 90.597656 L 130.351562 95.019531 L 136.710938 92.828125 L 143.125 89.828125 L 149.34375 87.90625 L 155.929688 105.933594 L 155.917969 110.203125 L 153.800781 116.507812 L 151.734375 120.082031 L 147.519531 123.503906 L 141.585938 126.386719 L 144.289062 132.804688 L 138.746094 132.382812 L 94.914062 153.0625 L 90.503906 158.40625 L 90.121094 157.292969 L 86.664062 147.644531 L 86.144531 145.105469 L 83.292969 139.1875 L 79.503906 129.191406 L 76.140625 119.121094 L 71.058594 108.050781 L 91.441406 100.015625 L 103.257812 95.363281 Z "/>
|
||||
<use xlink:href="#image122" transform="matrix(1,0,0,1,105.830723,109.774724)"/>
|
||||
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.196078%,90.196078%,98.039216%);fill-opacity:0.5;" d="M 110.335938 92.902344 L 103.257812 95.363281 L 101.835938 91.441406 L 109.199219 89.058594 Z "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 304 B After Width: | Height: | Size: 282 B |
Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 240 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 224 B |