aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/.gitignore1
-rw-r--r--contrib/Makefile.am53
-rw-r--r--contrib/Makefile.inc3
-rw-r--r--contrib/apparmor/gnunet-namestore-fcfsd13
-rw-r--r--contrib/apparmor/gnunet-service-arm2
-rw-r--r--contrib/branding/logo/gnunet-logo-big.pngbin250489 -> 0 bytes
-rw-r--r--contrib/branding/logo/gnunet-logo-color.pngbin6851 -> 0 bytes
-rw-r--r--contrib/branding/logo/gnunet-logo-dark-only-text.svg1144
-rw-r--r--contrib/branding/logo/gnunet-logo-dark-text.svg1411
-rw-r--r--contrib/branding/logo/gnunet-logo.pdfbin91138 -> 0 bytes
-rw-r--r--contrib/branding/logo/gnunet-logo.pngbin150545 -> 0 bytes
-rw-r--r--contrib/branding/logo/lynXified-amirouche-anonymous-v3.pngbin71137 -> 0 bytes
-rw-r--r--contrib/branding/logo/lynXified-amirouche-v3.svg918
-rw-r--r--contrib/ci/Containerfile45
-rwxr-xr-xcontrib/ci/ci.sh34
-rw-r--r--contrib/ci/docker/Dockerfile32
-rw-r--r--contrib/ci/docker/docker-entrypoint.sh3
-rwxr-xr-xcontrib/ci/jobs/0-build/build.sh10
-rwxr-xr-xcontrib/ci/jobs/0-build/job.sh6
-rwxr-xr-xcontrib/ci/jobs/2-deb-package/job.sh22
-rwxr-xr-xcontrib/ci/jobs/2-deb-package/version.sh17
-rw-r--r--contrib/ci/jobs/3-deploy-package/config.ini6
-rwxr-xr-xcontrib/ci/jobs/3-deploy-package/job.sh14
-rwxr-xr-xcontrib/ci/jobs/4-arm64-build/build.sh11
-rw-r--r--contrib/ci/jobs/4-arm64-build/config.ini6
-rwxr-xr-xcontrib/ci/jobs/4-arm64-build/job.sh6
-rw-r--r--contrib/ci/jobs/5-arm64-deb-package/config.ini6
-rwxr-xr-xcontrib/ci/jobs/5-arm64-deb-package/job.sh22
-rwxr-xr-xcontrib/ci/jobs/5-arm64-deb-package/version.sh17
-rw-r--r--contrib/ci/jobs/6-arm64-deploy-package/config.ini6
-rwxr-xr-xcontrib/ci/jobs/6-arm64-deploy-package/job.sh14
-rwxr-xr-xcontrib/conf/commit-msg34
-rw-r--r--contrib/conf/gnunet/meson.build6
-rw-r--r--contrib/conf/gnunet/no_autostart_above_core.conf6
-rw-r--r--contrib/conf/gnunet/no_forcestart.conf6
-rw-r--r--contrib/conf/meson.build1
-rwxr-xr-xcontrib/conf/prepare-commit-msg37
-rw-r--r--contrib/conf/uncrustify.cfg19
-rwxr-xr-xcontrib/conf/uncrustify_precommit11
-rw-r--r--contrib/docker/.dockerignore2
-rw-r--r--contrib/docker/Dockerfile126
-rw-r--r--contrib/docker/README.md5
-rw-r--r--contrib/docker/docker-entrypoint.sh16
-rw-r--r--contrib/docker/gnunet.conf21
-rw-r--r--contrib/fcfsd/fcfsd-forbidden.html11
-rw-r--r--contrib/fcfsd/fcfsd-index.html345
-rw-r--r--contrib/fcfsd/fcfsd-notfound.html11
m---------contrib/gana0
-rwxr-xr-xcontrib/get_version.sh18
-rw-r--r--contrib/gns/def.tex15
-rw-r--r--contrib/gns/gns-bcd-forbidden.html72
-rw-r--r--contrib/gns/gns-bcd-internal-error.html72
-rw-r--r--contrib/gns/gns-bcd-invalid-key.html72
-rw-r--r--contrib/gns/gns-bcd-not-found.html72
-rw-r--r--contrib/gns/gns-bcd-png.tex10
-rw-r--r--contrib/gns/gns-bcd-simple.html177
-rw-r--r--contrib/gns/gns-bcd-simple.tex160
-rw-r--r--contrib/gns/gns-bcd.html205
-rw-r--r--contrib/gns/gns-bcd.tex179
-rwxr-xr-xcontrib/gnunet_infrastructure/handbook_pull.sh18
m---------contrib/handbook0
-rw-r--r--contrib/hellos/Makefile.am6
-rw-r--r--contrib/hellos/Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0bin304 -> 0 bytes
-rwxr-xr-xcontrib/indent_pre-commit22
-rw-r--r--contrib/meson.build6
-rwxr-xr-xcontrib/netjail/netjail_core.sh263
-rwxr-xr-xcontrib/netjail/netjail_exec.sh15
-rwxr-xr-xcontrib/netjail/netjail_start.sh92
-rwxr-xr-xcontrib/netjail/netjail_stop.sh65
-rwxr-xr-xcontrib/netjail/topo.sh117
-rw-r--r--contrib/packages/arch/gnunet-git/.SRCINFO6
-rw-r--r--contrib/packages/arch/gnunet-git/PKGBUILD4
-rw-r--r--contrib/packages/arch/gnunet/.SRCINFO10
-rw-r--r--contrib/packages/arch/gnunet/PKGBUILD6
-rw-r--r--contrib/packages/fedora/10-dns2gns.sh43
-rw-r--r--contrib/packages/fedora/gnunet-system.conf12
-rw-r--r--contrib/packages/fedora/gnunet-user.service11
-rw-r--r--contrib/packages/fedora/gnunet.service14
-rw-r--r--contrib/packages/guix/guix.README (renamed from contrib/guix.README)0
-rw-r--r--contrib/packages/guix/guix.scm (renamed from contrib/guix.scm)0
-rw-r--r--contrib/scripts/Makefile.am13
-rw-r--r--contrib/scripts/changelog_delta.sh3
-rwxr-xr-xcontrib/scripts/doc/warningfilter.py (renamed from contrib/warningfilter.py)8
-rwxr-xr-xcontrib/scripts/generate-release-triplet.sh21
-rw-r--r--contrib/scripts/gnunet-logread/Makefile.am4
-rw-r--r--contrib/scripts/meson.build4
-rwxr-xr-xcontrib/scripts/netjail/netjail_core.sh217
-rwxr-xr-xcontrib/scripts/netjail/netjail_setup_internet.sh166
-rwxr-xr-xcontrib/scripts/news_delta.sh6
-rwxr-xr-xcontrib/scripts/update_news.sh15
-rw-r--r--contrib/testing_hostkeys.eccbin131072 -> 0 bytes
91 files changed, 591 insertions, 6107 deletions
diff --git a/contrib/.gitignore b/contrib/.gitignore
index 01b6efa05..af16caeef 100644
--- a/contrib/.gitignore
+++ b/contrib/.gitignore
@@ -1,3 +1,4 @@
1sphinx
1gnunet_janitor.py 2gnunet_janitor.py
2gnunet_pyexpect.py 3gnunet_pyexpect.py
3pydiffer.py 4pydiffer.py
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index f25751513..b7507d224 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -1,39 +1,10 @@
1# This Makefile.am is in the public domain 1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include 2AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include
3 3
4SUBDIRS = scripts hellos services 4SUBDIRS = scripts services
5 5
6include Makefile.inc 6include Makefile.inc
7 7
8dist_pkgdata_DATA = \
9 gns/def.tex \
10 gns/gns-bcd.html \
11 gns/gns-bcd.tex \
12 gns/gns-bcd-forbidden.html \
13 gns/gns-bcd-internal-error.html \
14 gns/gns-bcd-invalid-key.html \
15 gns/gns-bcd-not-found.html \
16 gns/gns-bcd-png.tex \
17 gns/gns-bcd-simple.html \
18 gns/gns-bcd-simple.tex \
19 fcfsd/fcfsd-index.html \
20 fcfsd/fcfsd-forbidden.html \
21 fcfsd/fcfsd-notfound.html \
22 branding/logo/gnunet-logo.png \
23 branding/logo/lynXified-amirouche-v3.svg \
24 branding/logo/gnunet-logo-dark-text.svg \
25 branding/logo/gnunet-logo-color.png \
26 branding/logo/lynXified-amirouche-anonymous-v3.png \
27 branding/logo/gnunet-logo-dark-only-text.svg \
28 branding/logo/gnunet-logo-big.png \
29 branding/logo/gnunet-logo.pdf \
30 testing_hostkeys.ecc \
31 netjail/netjail_core.sh \
32 netjail/netjail_exec.sh \
33 netjail/netjail_start.sh \
34 netjail/netjail_stop.sh \
35 netjail/topo.sh
36
37INITD_FILES = \ 8INITD_FILES = \
38 services/systemd/gnunet-user.service \ 9 services/systemd/gnunet-user.service \
39 services/systemd/sysusers-gnunet.conf \ 10 services/systemd/sysusers-gnunet.conf \
@@ -42,6 +13,10 @@ INITD_FILES = \
42 services/openrc/gnunet.initd 13 services/openrc/gnunet.initd
43 14
44PACKAGES_FILES = \ 15PACKAGES_FILES = \
16 packages/fedora/10-dns2gns.sh \
17 packages/fedora/gnunet-system.conf \
18 packages/fedora/gnunet.service \
19 packages/fedora/gnunet-user.service \
45 packages/alpine/gnunet-gtk/APKBUILD \ 20 packages/alpine/gnunet-gtk/APKBUILD \
46 packages/alpine/gnurl/APKBUILD \ 21 packages/alpine/gnurl/APKBUILD \
47 packages/alpine/gnunet/gnunet-user-services.initd \ 22 packages/alpine/gnunet/gnunet-user-services.initd \
@@ -168,7 +143,6 @@ EXTRA_DIST = \
168 apparmor/gnunet-namestore-gtk \ 143 apparmor/gnunet-namestore-gtk \
169 apparmor/gnunet-service-testbed-logger \ 144 apparmor/gnunet-service-testbed-logger \
170 apparmor/gnunet-peerstore \ 145 apparmor/gnunet-peerstore \
171 apparmor/gnunet-namestore-fcfsd \
172 apparmor/gnunet-core \ 146 apparmor/gnunet-core \
173 apparmor/gnunet-gns-import.sh \ 147 apparmor/gnunet-gns-import.sh \
174 apparmor/gnunet-gns-proxy \ 148 apparmor/gnunet-gns-proxy \
@@ -209,22 +183,16 @@ EXTRA_DIST = \
209 conf/nss/nssswitch.conf \ 183 conf/nss/nssswitch.conf \
210 testbed_configs/testbed_cluster.conf \ 184 testbed_configs/testbed_cluster.conf \
211 testbed_configs/testbed_supermuc.conf \ 185 testbed_configs/testbed_supermuc.conf \
212 guix.README \ 186 packages/guix/guix.README \
213 web/log.php \ 187 web/log.php \
214 ci/docker/docker-entrypoint.sh \
215 ci/docker/Dockerfile \
216 ci/buildbot/buildbot-update.sh \ 188 ci/buildbot/buildbot-update.sh \
217 ci/buildbot/ssh-keys \ 189 ci/buildbot/ssh-keys \
218 ci/buildbot/ssh-config \ 190 ci/buildbot/ssh-config \
219 docker/docker-entrypoint.sh \ 191 docker/docker-entrypoint.sh \
220 docker/Dockerfile \ 192 docker/Dockerfile \
221 docker/README.md \ 193 docker/README.md \
222 docker/gnunet.conf \
223 benchmark/collect.awk \ 194 benchmark/collect.awk \
224 get_version.sh \ 195 packages/guix/guix.scm \
225 gnunet_infrastructure/handbook_pull.sh \
226 guix.scm \
227 indent_pre-commit \
228 Makefile.inc \ 196 Makefile.inc \
229 vagrant/Vagrantfile \ 197 vagrant/Vagrantfile \
230 vagrant/bootstrap.ubuntu.sh \ 198 vagrant/bootstrap.ubuntu.sh \
@@ -266,11 +234,4 @@ xdgdeentrydir = $(datadir)/applications
266dist_xdgdeentry_DATA = \ 234dist_xdgdeentry_DATA = \
267 xdg-scheme-handler/gnunet-uri.desktop 235 xdg-scheme-handler/gnunet-uri.desktop
268 236
269install-data-hook:
270 chmod o+x '$(DESTDIR)$(pkgdatadir)/netjail_core.sh'
271 chmod o+x '$(DESTDIR)$(pkgdatadir)/netjail_start.sh'
272 chmod o+x '$(DESTDIR)$(pkgdatadir)/netjail_stop.sh'
273 chmod o+x '$(DESTDIR)$(pkgdatadir)/netjail_exec.sh'
274 chmod o+x '$(DESTDIR)$(pkgdatadir)/topo.sh'
275
276## EOF 237## EOF
diff --git a/contrib/Makefile.inc b/contrib/Makefile.inc
index a563ef4a1..c737a07f8 100644
--- a/contrib/Makefile.inc
+++ b/contrib/Makefile.inc
@@ -8,8 +8,7 @@ BUILDCOMMON_SHLIB_FILES = \
8 build-common/sh/lib.sh/existence_python.sh \ 8 build-common/sh/lib.sh/existence_python.sh \
9 build-common/sh/lib.sh/msg.sh \ 9 build-common/sh/lib.sh/msg.sh \
10 build-common/sh/lib.sh/progname.sh \ 10 build-common/sh/lib.sh/progname.sh \
11 build-common/sh/lib.sh/version_gnunet.sh \ 11 build-common/sh/lib.sh/version_gnunet.sh
12 build-common/LICENSE
13 12
14BUILDCOMMON_CONF_FILES = \ 13BUILDCOMMON_CONF_FILES = \
15 build-common/conf/.dir-locals.el \ 14 build-common/conf/.dir-locals.el \
diff --git a/contrib/apparmor/gnunet-namestore-fcfsd b/contrib/apparmor/gnunet-namestore-fcfsd
deleted file mode 100644
index 8ac09e69b..000000000
--- a/contrib/apparmor/gnunet-namestore-fcfsd
+++ /dev/null
@@ -1,13 +0,0 @@
1# Last Modified: Tue Jul 21 17:25:12 2015
2#include <tunables/global>
3#include <tunables/gnunet>
4
5profile @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-namestore-fcfsd {
6 #include <abstractions/base>
7 #include <abstractions/gnunet-common>
8
9 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-namestore-fcfsd mr,
10
11 # Site-specific additions and overrides. See local/README for details.
12 #include <local/gnunet>
13}
diff --git a/contrib/apparmor/gnunet-service-arm b/contrib/apparmor/gnunet-service-arm
index 546e6332e..2ad8d6140 100644
--- a/contrib/apparmor/gnunet-service-arm
+++ b/contrib/apparmor/gnunet-service-arm
@@ -32,8 +32,6 @@ profile @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-service-arm {
32 32
33 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-gns-proxy Px, 33 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-gns-proxy Px,
34 34
35 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-namestore-fcfsd Px,
36
37 #GNUnet service 35 #GNUnet service
38 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-service-* Px, 36 @{GNUNET_PREFIX}/lib/gnunet/libexec/gnunet-service-* Px,
39 37
diff --git a/contrib/branding/logo/gnunet-logo-big.png b/contrib/branding/logo/gnunet-logo-big.png
deleted file mode 100644
index 54c418f8f..000000000
--- a/contrib/branding/logo/gnunet-logo-big.png
+++ /dev/null
Binary files differ
diff --git a/contrib/branding/logo/gnunet-logo-color.png b/contrib/branding/logo/gnunet-logo-color.png
deleted file mode 100644
index 326822ebd..000000000
--- a/contrib/branding/logo/gnunet-logo-color.png
+++ /dev/null
Binary files differ
diff --git a/contrib/branding/logo/gnunet-logo-dark-only-text.svg b/contrib/branding/logo/gnunet-logo-dark-only-text.svg
deleted file mode 100644
index f4ca0f9d2..000000000
--- a/contrib/branding/logo/gnunet-logo-dark-only-text.svg
+++ /dev/null
@@ -1,1144 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 version="1.1"
12 id="svg2"
13 height="42.057301"
14 width="159.35417"
15 sodipodi:docname="gnunet-logo-dark-only-text.svg"
16 inkscape:version="0.92.3 (2405546, 2018-03-11)">
17 <sodipodi:namedview
18 pagecolor="#ffffff"
19 bordercolor="#666666"
20 borderopacity="1"
21 objecttolerance="10"
22 gridtolerance="10"
23 guidetolerance="10"
24 inkscape:pageopacity="0"
25 inkscape:pageshadow="2"
26 inkscape:window-width="1130"
27 inkscape:window-height="760"
28 id="namedview5639"
29 showgrid="false"
30 inkscape:zoom="3.2071429"
31 inkscape:cx="-2.4948441"
32 inkscape:cy="7.4954053"
33 inkscape:window-x="0"
34 inkscape:window-y="0"
35 inkscape:window-maximized="0"
36 inkscape:current-layer="svg2" />
37 <title
38 id="title3310">logo for GNUnet</title>
39 <defs
40 id="defs4">
41 <linearGradient
42 id="gnunet">
43 <stop
44 style="stop-color:#ff0000;stop-opacity:0.58431375;"
45 offset="0"
46 id="stop9516" />
47 <stop
48 style="stop-color:#ffcc00;stop-opacity:1;"
49 offset="1"
50 id="stop9518" />
51 </linearGradient>
52 <linearGradient
53 id="linearGradient4094">
54 <stop
55 style="stop-color:#232323;stop-opacity:1;"
56 offset="0"
57 id="stop4096" />
58 <stop
59 style="stop-color:#4d4d4d;stop-opacity:1;"
60 offset="1"
61 id="stop4098" />
62 </linearGradient>
63 <linearGradient
64 id="linearGradient4014">
65 <stop
66 style="stop-color:#a0a0a0;stop-opacity:1;"
67 offset="0"
68 id="stop4016" />
69 <stop
70 style="stop-color:#ffffff;stop-opacity:1;"
71 offset="1"
72 id="stop4018" />
73 </linearGradient>
74 <linearGradient
75 id="linearGradient4678">
76 <stop
77 style="stop-color:#e5e5e5;stop-opacity:1;"
78 offset="0"
79 id="stop4680" />
80 <stop
81 style="stop-color:#d3cdcd;stop-opacity:1;"
82 offset="1"
83 id="stop4682" />
84 </linearGradient>
85 <linearGradient
86 id="linearGradient4341">
87 <stop
88 id="stop4343"
89 offset="0"
90 style="stop-color:#333333;stop-opacity:1;" />
91 <stop
92 id="stop4345"
93 offset="1"
94 style="stop-color:#484848;stop-opacity:1;" />
95 </linearGradient>
96 <linearGradient
97 id="linearGradient4696-5">
98 <stop
99 id="stop4698-6"
100 offset="0"
101 style="stop-color:#ffb638;stop-opacity:1;" />
102 <stop
103 id="stop4700-2"
104 offset="1"
105 style="stop-color:#f0ae26;stop-opacity:1;" />
106 </linearGradient>
107 <linearGradient
108 id="linearGradient4702-3-6">
109 <stop
110 id="stop4704-1"
111 offset="0"
112 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
113 <stop
114 id="stop4706-8"
115 offset="1"
116 style="stop-color:#ffcc00;stop-opacity:1;" />
117 </linearGradient>
118 <color-profile
119 name="Artifex-PS-CMYK-Profile"
120 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
121 id="color-profile5435" />
122 <linearGradient
123 y2="69.791016"
124 x2="177.04297"
125 y1="63.65625"
126 x1="142.96875"
127 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
128 gradientUnits="userSpaceOnUse"
129 id="linearGradient3138"
130 xlink:href="#linearGradient4702-3-6" />
131 <linearGradient
132 y2="1043.709"
133 x2="80.655251"
134 y1="1025.709"
135 x1="108.08774"
136 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
137 gradientUnits="userSpaceOnUse"
138 id="linearGradient3141"
139 xlink:href="#linearGradient4696-5" />
140 <linearGradient
141 y2="922.07178"
142 x2="78.000107"
143 y1="1004.8033"
144 x1="113.5146"
145 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
146 gradientUnits="userSpaceOnUse"
147 id="linearGradient3144"
148 xlink:href="#linearGradient4702-3-6" />
149 <linearGradient
150 y2="70.667412"
151 x2="176.60477"
152 y1="63.65625"
153 x1="142.96875"
154 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
155 gradientUnits="userSpaceOnUse"
156 id="linearGradient3148"
157 xlink:href="#linearGradient4702-3-6" />
158 <linearGradient
159 y2="70.667412"
160 x2="176.60477"
161 y1="63.65625"
162 x1="142.96875"
163 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
164 gradientUnits="userSpaceOnUse"
165 id="linearGradient3780"
166 xlink:href="#linearGradient4702-3-6" />
167 <linearGradient
168 y2="922.07178"
169 x2="78.000107"
170 y1="1004.8033"
171 x1="113.5146"
172 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
173 gradientUnits="userSpaceOnUse"
174 id="linearGradient3782"
175 xlink:href="#linearGradient4702-3-6" />
176 <linearGradient
177 y2="1043.709"
178 x2="80.655251"
179 y1="1025.709"
180 x1="108.08774"
181 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
182 gradientUnits="userSpaceOnUse"
183 id="linearGradient3784"
184 xlink:href="#linearGradient4696-5" />
185 <linearGradient
186 y2="69.791016"
187 x2="177.04297"
188 y1="63.65625"
189 x1="142.96875"
190 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
191 gradientUnits="userSpaceOnUse"
192 id="linearGradient3786"
193 xlink:href="#linearGradient4702-3-6" />
194 <filter
195 id="filter9204"
196 style="color-interpolation-filters:sRGB">
197 <feColorMatrix
198 id="feColorMatrix9194"
199 result="colormatrix"
200 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
201 in="SourceGraphic" />
202 <feComposite
203 k1="0"
204 id="feComposite9196"
205 result="composite"
206 k4="0"
207 k3="0"
208 k2="1"
209 operator="arithmetic"
210 in2="colormatrix"
211 in="SourceGraphic" />
212 <feGaussianBlur
213 id="feGaussianBlur9198"
214 result="blur1"
215 stdDeviation="5 0.01" />
216 <feGaussianBlur
217 id="feGaussianBlur9200"
218 result="blur2"
219 stdDeviation="0.01 5"
220 in="composite" />
221 <feBlend
222 id="feBlend9202"
223 result="blend"
224 mode="darken"
225 in2="blur1"
226 in="blur2" />
227 </filter>
228 <filter
229 id="filter9330"
230 style="color-interpolation-filters:sRGB">
231 <feGaussianBlur
232 id="feGaussianBlur9328"
233 result="blur"
234 stdDeviation="2 2" />
235 </filter>
236 </defs>
237 <metadata
238 id="metadata7">
239 <rdf:RDF>
240 <cc:Work
241 rdf:about="">
242 <dc:format>image/svg+xml</dc:format>
243 <dc:type
244 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
245 <dc:title>logo for GNUnet</dc:title>
246 <dc:creator>
247 <cc:Agent>
248 <dc:title>Luis Felipe López Acevedo, Amirouche Boubekki, carlo von lynX</dc:title>
249 </cc:Agent>
250 </dc:creator>
251 <dc:rights>
252 <cc:Agent>
253 <dc:title>GNUnet e.V.</dc:title>
254 </cc:Agent>
255 </dc:rights>
256 <cc:license
257 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
258 <dc:description />
259 </cc:Work>
260 <cc:License
261 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
262 <cc:permits
263 rdf:resource="http://creativecommons.org/ns#Reproduction" />
264 <cc:permits
265 rdf:resource="http://creativecommons.org/ns#Distribution" />
266 <cc:requires
267 rdf:resource="http://creativecommons.org/ns#Notice" />
268 <cc:requires
269 rdf:resource="http://creativecommons.org/ns#Attribution" />
270 <cc:permits
271 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
272 <cc:requires
273 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
274 </cc:License>
275 </rdf:RDF>
276 </metadata>
277 <g
278 id="g5346"
279 style="display:none"
280 transform="translate(-467.72664,-836.92541)">
281 <text
282 xml:space="preserve"
283 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
284 x="453.95291"
285 y="869.96057"
286 id="text5344"><tspan
287 id="tspan5342"
288 x="453.95291"
289 y="869.96057"
290 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
291 dx="0 0 0">gnu net</tspan></text>
292 </g>
293 <g
294 transform="translate(-467.72664,-836.92541)"
295 style="display:none"
296 id="g950">
297 <text
298 id="text948"
299 y="869.21057"
300 x="467.77612"
301 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
302 xml:space="preserve"><tspan
303 dx="0 -2.5 -3 0 -19.25 -2.5 -3"
304 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
305 y="869.21057"
306 x="467.77612"
307 id="tspan946">gnu net</tspan></text>
308 </g>
309 <g
310 id="g941"
311 style="display:none"
312 transform="translate(-80.31201,-247.1061)">
313 <ellipse
314 ry="17.690269"
315 rx="17.68549"
316 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
317 id="ellipse937"
318 cx="157.97346"
319 cy="180.65355" />
320 <ellipse
321 ry="17.690269"
322 rx="17.68549"
323 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
324 id="ellipse939"
325 cx="157.97346"
326 cy="111.16864" />
327 </g>
328 <g
329 transform="translate(-467.72664,-836.92541)"
330 style="display:none"
331 id="g935">
332 <g
333 aria-label="gnu net"
334 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
335 id="g933">
336 <path
337 d="m 423.90503,684.79003 h 22.14128 v 61.61056 q 0,11.55196 4.3855,16.04443 4.38546,4.49242 12.72857,4.49242 12.19374,0 20.00203,-9.94753 7.80828,-9.94753 7.80828,-27.48942 v -44.71046 h 22.14128 v 99.6893 h -22.14128 v -24.92231 q -3.31586,12.83553 -12.30071,20.10899 -8.98489,7.27346 -22.14132,7.27346 -15.29567,0 -23.95963,-9.94753 -8.664,-10.0545 -8.664,-30.59135 z"
338 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
339 id="path925"
340 inkscape:connector-curvature="0" />
341 <path
342 d="m 669.48029,784.47933 h -22.14128 v -61.50359 q 0,-11.65892 -4.3855,-16.15139 -4.38546,-4.49243 -12.72857,-4.49243 -12.30071,0 -20.10899,9.94753 -7.70132,9.94754 -7.70132,27.48947 v 44.71041 h -22.14128 v -99.6893 h 22.14128 v 25.02928 q 3.31586,-12.94249 12.30071,-20.10899 8.98489,-7.27346 22.14132,-7.27346 15.29567,0 23.95967,9.94753 8.66396,9.94753 8.66396,30.59135 z"
343 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
344 id="path927"
345 inkscape:connector-curvature="0" />
346 </g>
347 </g>
348 <g
349 id="g1296"
350 style="display:none"
351 transform="translate(-80.31201,-294.38421)">
352 <path
353 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
354 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
355 id="path1256"
356 inkscape:connector-curvature="0" />
357 <path
358 style="fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
359 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
360 id="path1258"
361 inkscape:connector-curvature="0" />
362 <path
363 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
364 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
365 id="path1260"
366 inkscape:connector-curvature="0" />
367 <path
368 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
369 d="m 98.868943,129.31358 37.045597,48.02106"
370 id="path1262"
371 inkscape:connector-curvature="0" />
372 <path
373 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
374 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
375 id="path1264"
376 inkscape:connector-curvature="0" />
377 <path
378 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
379 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
380 id="path1266"
381 inkscape:connector-curvature="0" />
382 <path
383 transform="translate(-387.41463,-542.5412)"
384 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
385 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
386 id="path1268"
387 inkscape:connector-curvature="0" />
388 <path
389 transform="translate(-387.41463,-542.5412)"
390 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
391 d="m 601.57854,741.42859 -2.26809,-64.28015"
392 id="path1270"
393 inkscape:connector-curvature="0" />
394 <path
395 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
396 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
397 id="path1272"
398 inkscape:connector-curvature="0" />
399 <path
400 transform="translate(-387.41463,-542.5412)"
401 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
402 d="m 475.69911,700.21367 24.57107,51.42411"
403 id="path1274"
404 inkscape:connector-curvature="0" />
405 <path
406 transform="translate(-387.41463,-542.5412)"
407 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
408 d="m 534.29164,751.63778 12.85257,40.08057"
409 id="path1276"
410 inkscape:connector-curvature="0" />
411 <path
412 transform="translate(-387.41463,-542.5412)"
413 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
414 d="m 525.21925,783.02162 0.37803,45.75234"
415 id="path1278"
416 inkscape:connector-curvature="0" />
417 <path
418 transform="translate(-387.41463,-542.5412)"
419 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
420 d="m 601.95657,742.56293 -12.09653,36.6775"
421 id="path1280"
422 inkscape:connector-curvature="0" />
423 <path
424 transform="translate(-387.41463,-542.5412)"
425 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
426 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
427 id="path1282"
428 inkscape:connector-curvature="0" />
429 <path
430 transform="translate(-387.41463,-542.5412)"
431 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
432 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
433 id="path1284"
434 inkscape:connector-curvature="0" />
435 <path
436 transform="translate(-387.41463,-542.5412)"
437 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
438 d="m 557.35064,768.27501 31.75336,10.5873"
439 id="path1286"
440 inkscape:connector-curvature="0" />
441 <path
442 transform="translate(-387.41463,-542.5412)"
443 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
444 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
445 id="path1288"
446 inkscape:connector-curvature="0" />
447 <path
448 transform="translate(-387.41463,-542.5412)"
449 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
450 d="m 524.46323,829.53019 44.98392,-0.37812"
451 id="path1290"
452 inkscape:connector-curvature="0" />
453 <path
454 transform="translate(-387.41463,-542.5412)"
455 style="display:inline;opacity:1;fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
456 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
457 id="path1292"
458 inkscape:connector-curvature="0" />
459 <path
460 transform="translate(-387.41463,-542.5412)"
461 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
462 d="m 409.92428,677.14844 54.05634,6.0499"
463 id="path1294"
464 inkscape:connector-curvature="0" />
465 </g>
466 <g
467 transform="translate(-80.31201,-294.38421)"
468 style="display:none"
469 id="g1254">
470 <ellipse
471 transform="translate(-387.41463,-542.5412)"
472 ry="4.1593032"
473 rx="4.1581793"
474 cy="829.24042"
475 cx="568.98083"
476 id="ellipse1194"
477 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
478 <ellipse
479 transform="translate(-387.41463,-542.5412)"
480 ry="4.1593032"
481 rx="4.1581793"
482 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
483 id="ellipse1196"
484 cx="588.85413"
485 cy="778.67493" />
486 <ellipse
487 transform="translate(-387.41463,-542.5412)"
488 ry="4.1593032"
489 rx="4.1581793"
490 cy="740.67249"
491 cx="601.57867"
492 id="ellipse1198"
493 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
494 <ellipse
495 transform="translate(-387.41463,-542.5412)"
496 ry="4.1593032"
497 rx="4.1581793"
498 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
499 id="ellipse1200"
500 cx="525.79852"
501 cy="829.24042" />
502 <ellipse
503 transform="translate(-387.41463,-542.5412)"
504 ry="4.1593032"
505 rx="4.1581793"
506 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
507 id="ellipse1202"
508 cx="557.82654"
509 cy="768.71582" />
510 <ellipse
511 transform="translate(-387.41463,-542.5412)"
512 ry="4.1593032"
513 rx="4.1581793"
514 cy="783.02173"
515 cx="525.21936"
516 id="ellipse1204"
517 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
518 <ellipse
519 transform="translate(-387.41463,-542.5412)"
520 ry="4.1593032"
521 rx="4.1581793"
522 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
523 id="ellipse1206"
524 cx="400.09586"
525 cy="647.34271" />
526 <ellipse
527 transform="translate(-387.41463,-542.5412)"
528 ry="4.1593032"
529 rx="4.1581793"
530 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
531 id="ellipse1208"
532 cx="450.11285"
533 cy="628.31934" />
534 <ellipse
535 transform="translate(-387.41463,-542.5412)"
536 ry="4.1593032"
537 rx="4.1581793"
538 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
539 id="ellipse1210"
540 cx="622.36951"
541 cy="699.45752" />
542 <ellipse
543 transform="translate(-387.41463,-542.5412)"
544 ry="4.1593032"
545 rx="4.1581793"
546 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
547 id="ellipse1212"
548 cx="547.21771"
549 cy="792.29773" />
550 <ellipse
551 transform="translate(-387.41463,-542.5412)"
552 ry="4.1593032"
553 rx="4.1581793"
554 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
555 id="ellipse1214"
556 cx="566.20697"
557 cy="800.12549" />
558 <ellipse
559 transform="translate(-387.41463,-542.5412)"
560 ry="4.1593032"
561 rx="4.1581793"
562 cy="751.63794"
563 cx="500.64822"
564 id="ellipse1216"
565 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
566 <ellipse
567 transform="translate(-387.41463,-542.5412)"
568 ry="4.1593032"
569 rx="4.1581793"
570 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
571 id="ellipse1218"
572 cx="533.33447"
573 cy="751.72632" />
574 <ellipse
575 transform="translate(-387.41463,-542.5412)"
576 ry="4.1593032"
577 rx="4.1581793"
578 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
579 id="ellipse1220"
580 cx="450.75012"
581 cy="699.83545" />
582 <ellipse
583 transform="translate(-387.41463,-542.5412)"
584 ry="4.1593032"
585 rx="4.1581793"
586 cy="700.59174"
587 cx="476.07718"
588 id="ellipse1222"
589 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
590 <ellipse
591 transform="translate(-387.41463,-542.5412)"
592 ry="4.1593032"
593 rx="4.1581793"
594 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
595 id="ellipse1224"
596 cx="521.49146"
597 cy="719.65314" />
598 <ellipse
599 transform="translate(-387.41463,-542.5412)"
600 ry="4.1593032"
601 rx="4.1581793"
602 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
603 id="ellipse1226"
604 cx="500.6362"
605 cy="703.87305" />
606 <ellipse
607 ry="4.1593032"
608 rx="4.1581793"
609 cy="134.28851"
610 cx="211.9584"
611 id="ellipse1228"
612 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
613 <ellipse
614 transform="translate(-387.41463,-542.5412)"
615 ry="4.1593032"
616 rx="4.1581793"
617 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
618 id="ellipse1230"
619 cx="576.62964"
620 cy="713.44794" />
621 <ellipse
622 ry="4.1593032"
623 rx="4.1581793"
624 cy="123.16669"
625 cx="43.166531"
626 id="ellipse1232"
627 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
628 <ellipse
629 ry="4.1593032"
630 rx="4.1581793"
631 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
632 id="ellipse1234"
633 cx="98.865997"
634 cy="129.43542" />
635 <ellipse
636 ry="4.1593032"
637 rx="4.1581793"
638 cy="130.05022"
639 cx="267.08618"
640 id="ellipse1236"
641 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
642 <ellipse
643 transform="translate(-387.41463,-542.5412)"
644 ry="4.1593032"
645 rx="4.1581793"
646 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
647 id="ellipse1238"
648 cx="679.07196"
649 cy="686.22339" />
650 <ellipse
651 transform="translate(-387.41463,-542.5412)"
652 ry="4.1593032"
653 rx="4.1581793"
654 cy="748.99109"
655 cx="577.00763"
656 id="ellipse1240"
657 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
658 <ellipse
659 transform="translate(-387.41463,-542.5412)"
660 ry="4.1593032"
661 rx="4.1581793"
662 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
663 id="ellipse1242"
664 cx="577.00763"
665 cy="748.99109" />
666 <ellipse
667 transform="translate(-387.41463,-542.5412)"
668 ry="4.1593032"
669 rx="4.1581793"
670 cy="748.99109"
671 cx="577.07013"
672 id="ellipse1244"
673 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
674 <ellipse
675 transform="translate(0,-3e-6)"
676 ry="4.1593032"
677 rx="4.1581793"
678 cy="133.85095"
679 cx="22.887779"
680 id="ellipse1246"
681 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
682 <ellipse
683 transform="translate(-387.41463,-542.5412)"
684 ry="4.1593032"
685 rx="4.1581793"
686 cy="682.1922"
687 cx="462.47165"
688 id="ellipse1248"
689 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
690 <ellipse
691 transform="translate(-387.41463,-542.5412)"
692 ry="4.1593032"
693 rx="4.1581793"
694 cy="647.3053"
695 cx="694.58264"
696 id="ellipse1250"
697 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
698 <ellipse
699 transform="translate(-387.41463,-542.5412)"
700 ry="4.1593032"
701 rx="4.1581793"
702 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
703 id="ellipse1252"
704 cx="649.61285"
705 cy="628.31934" />
706 </g>
707 <g
708 id="g1539"
709 style="display:inline"
710 transform="translate(-80.31201,-247.1061)">
711 <ellipse
712 ry="4.1593032"
713 rx="4.1581793"
714 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
715 id="ellipse1535"
716 cx="159.80099"
717 cy="276.32968" />
718 <ellipse
719 ry="4.1593032"
720 rx="4.1581793"
721 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
722 id="ellipse1537"
723 cx="159.80099"
724 cy="259.99252" />
725 </g>
726 <g
727 transform="translate(-80.31201,-294.38421)"
728 style="display:none"
729 id="layer3">
730 <path
731 id="path5313"
732 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
733 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
734 inkscape:connector-curvature="0" />
735 <path
736 id="path5311"
737 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
738 style="fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
739 inkscape:connector-curvature="0" />
740 <path
741 id="path9316"
742 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
743 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
744 inkscape:connector-curvature="0" />
745 <path
746 id="path9318"
747 d="m 98.868943,129.31358 37.045597,48.02106"
748 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
749 inkscape:connector-curvature="0" />
750 <path
751 id="path12058"
752 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
753 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
754 inkscape:connector-curvature="0" />
755 <path
756 id="path12250"
757 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
758 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
759 inkscape:connector-curvature="0" />
760 <path
761 id="path5161"
762 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
763 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
764 transform="translate(-387.41463,-542.5412)"
765 inkscape:connector-curvature="0" />
766 <path
767 id="path12206"
768 d="m 601.57854,741.42859 -2.26809,-64.28015"
769 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
770 transform="translate(-387.41463,-542.5412)"
771 inkscape:connector-curvature="0" />
772 <path
773 id="path5331"
774 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
775 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
776 inkscape:connector-curvature="0" />
777 <path
778 id="path9320"
779 d="m 475.69911,700.21367 24.57107,51.42411"
780 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
781 transform="translate(-387.41463,-542.5412)"
782 inkscape:connector-curvature="0" />
783 <path
784 id="path9322"
785 d="m 534.29164,751.63778 12.85257,40.08057"
786 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
787 transform="translate(-387.41463,-542.5412)"
788 inkscape:connector-curvature="0" />
789 <path
790 id="path9324"
791 d="m 525.21925,783.02162 0.37803,45.75234"
792 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
793 transform="translate(-387.41463,-542.5412)"
794 inkscape:connector-curvature="0" />
795 <path
796 id="path9326"
797 d="m 601.95657,742.56293 -12.09653,36.6775"
798 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
799 transform="translate(-387.41463,-542.5412)"
800 inkscape:connector-curvature="0" />
801 <path
802 id="path12060"
803 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
804 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
805 transform="translate(-387.41463,-542.5412)"
806 inkscape:connector-curvature="0" />
807 <path
808 id="path12208"
809 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
810 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
811 transform="translate(-387.41463,-542.5412)"
812 inkscape:connector-curvature="0" />
813 <path
814 id="path12210"
815 d="m 557.35064,768.27501 31.75336,10.5873"
816 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
817 transform="translate(-387.41463,-542.5412)"
818 inkscape:connector-curvature="0" />
819 <path
820 id="path12212"
821 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
822 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
823 transform="translate(-387.41463,-542.5412)"
824 inkscape:connector-curvature="0" />
825 <path
826 id="path12216"
827 d="m 524.46323,829.53019 44.98392,-0.37812"
828 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
829 transform="translate(-387.41463,-542.5412)"
830 inkscape:connector-curvature="0" />
831 <path
832 id="path5163"
833 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
834 style="display:inline;opacity:1;fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
835 transform="translate(-387.41463,-542.5412)"
836 inkscape:connector-curvature="0" />
837 <path
838 id="path12214"
839 d="m 409.92428,677.14844 54.05634,6.0499"
840 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
841 transform="translate(-387.41463,-542.5412)"
842 inkscape:connector-curvature="0" />
843 </g>
844 <g
845 id="g325"
846 style="display:none"
847 transform="translate(-80.31201,-294.38421)">
848 <ellipse
849 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
850 id="ellipse12254"
851 cx="568.98083"
852 cy="829.24042"
853 rx="4.1581793"
854 ry="4.1593032"
855 transform="translate(-387.41463,-542.5412)" />
856 <ellipse
857 cy="778.67493"
858 cx="588.85413"
859 id="ellipse12290"
860 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
861 rx="4.1581793"
862 ry="4.1593032"
863 transform="translate(-387.41463,-542.5412)" />
864 <ellipse
865 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
866 id="ellipse12284"
867 cx="601.57867"
868 cy="740.67249"
869 rx="4.1581793"
870 ry="4.1593032"
871 transform="translate(-387.41463,-542.5412)" />
872 <ellipse
873 cy="829.24042"
874 cx="525.79852"
875 id="ellipse12256"
876 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
877 rx="4.1581793"
878 ry="4.1593032"
879 transform="translate(-387.41463,-542.5412)" />
880 <ellipse
881 cy="768.71582"
882 cx="557.82654"
883 id="ellipse12306"
884 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
885 rx="4.1581793"
886 ry="4.1593032"
887 transform="translate(-387.41463,-542.5412)" />
888 <ellipse
889 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
890 id="ellipse12280"
891 cx="525.21936"
892 cy="783.02173"
893 rx="4.1581793"
894 ry="4.1593032"
895 transform="translate(-387.41463,-542.5412)" />
896 <ellipse
897 cy="647.34271"
898 cx="400.09586"
899 id="ellipse12258"
900 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
901 rx="4.1581793"
902 ry="4.1593032"
903 transform="translate(-387.41463,-542.5412)" />
904 <ellipse
905 cy="628.31934"
906 cx="450.11285"
907 id="ellipse12258-3"
908 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
909 rx="4.1581793"
910 ry="4.1593032"
911 transform="translate(-387.41463,-542.5412)" />
912 <ellipse
913 cy="699.45752"
914 cx="622.36951"
915 id="ellipse12294"
916 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
917 rx="4.1581793"
918 ry="4.1593032"
919 transform="translate(-387.41463,-542.5412)" />
920 <ellipse
921 cy="792.29773"
922 cx="547.21771"
923 id="ellipse12252"
924 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
925 rx="4.1581793"
926 ry="4.1593032"
927 transform="translate(-387.41463,-542.5412)" />
928 <ellipse
929 cy="800.12549"
930 cx="566.20697"
931 id="ellipse12282"
932 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
933 rx="4.1581793"
934 ry="4.1593032"
935 transform="translate(-387.41463,-542.5412)" />
936 <ellipse
937 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
938 id="ellipse12276"
939 cx="500.64822"
940 cy="751.63794"
941 rx="4.1581793"
942 ry="4.1593032"
943 transform="translate(-387.41463,-542.5412)" />
944 <ellipse
945 cy="751.72632"
946 cx="533.33447"
947 id="ellipse12278"
948 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
949 rx="4.1581793"
950 ry="4.1593032"
951 transform="translate(-387.41463,-542.5412)" />
952 <ellipse
953 cy="699.83545"
954 cx="450.75012"
955 id="ellipse12262"
956 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
957 rx="4.1581793"
958 ry="4.1593032"
959 transform="translate(-387.41463,-542.5412)" />
960 <ellipse
961 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
962 id="ellipse12268"
963 cx="476.07718"
964 cy="700.59174"
965 rx="4.1581793"
966 ry="4.1593032"
967 transform="translate(-387.41463,-542.5412)" />
968 <ellipse
969 cy="719.65314"
970 cx="521.49146"
971 id="ellipse12270"
972 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
973 rx="4.1581793"
974 ry="4.1593032"
975 transform="translate(-387.41463,-542.5412)" />
976 <ellipse
977 cy="703.87305"
978 cx="500.6362"
979 id="ellipse12274"
980 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
981 rx="4.1581793"
982 ry="4.1593032"
983 transform="translate(-387.41463,-542.5412)" />
984 <ellipse
985 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
986 id="ellipse12292"
987 cx="211.9584"
988 cy="134.28851"
989 rx="4.1581793"
990 ry="4.1593032" />
991 <ellipse
992 cy="713.44794"
993 cx="576.62964"
994 id="ellipse12286"
995 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
996 rx="4.1581793"
997 ry="4.1593032"
998 transform="translate(-387.41463,-542.5412)" />
999 <ellipse
1000 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1001 id="ellipse12260"
1002 cx="43.166531"
1003 cy="123.16669"
1004 rx="4.1581793"
1005 ry="4.1593032" />
1006 <ellipse
1007 cy="129.43542"
1008 cx="98.865997"
1009 id="ellipse12266"
1010 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1011 rx="4.1581793"
1012 ry="4.1593032" />
1013 <ellipse
1014 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1015 id="ellipse12296"
1016 cx="267.08618"
1017 cy="130.05022"
1018 rx="4.1581793"
1019 ry="4.1593032" />
1020 <ellipse
1021 cy="686.22339"
1022 cx="679.07196"
1023 id="ellipse12298"
1024 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1025 rx="4.1581793"
1026 ry="4.1593032"
1027 transform="translate(-387.41463,-542.5412)" />
1028 <ellipse
1029 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1030 id="ellipse12288"
1031 cx="577.00763"
1032 cy="748.99109"
1033 rx="4.1581793"
1034 ry="4.1593032"
1035 transform="translate(-387.41463,-542.5412)" />
1036 <ellipse
1037 cy="748.99109"
1038 cx="577.00763"
1039 id="ellipse12302"
1040 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1041 rx="4.1581793"
1042 ry="4.1593032"
1043 transform="translate(-387.41463,-542.5412)" />
1044 <ellipse
1045 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1046 id="ellipse12304"
1047 cx="577.07013"
1048 cy="748.99109"
1049 rx="4.1581793"
1050 ry="4.1593032"
1051 transform="translate(-387.41463,-542.5412)" />
1052 <ellipse
1053 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1054 id="ellipse12264"
1055 cx="22.887779"
1056 cy="133.85095"
1057 rx="4.1581793"
1058 ry="4.1593032"
1059 transform="translate(0,-3e-6)" />
1060 <ellipse
1061 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1062 id="ellipse12272"
1063 cx="462.47165"
1064 cy="682.1922"
1065 rx="4.1581793"
1066 ry="4.1593032"
1067 transform="translate(-387.41463,-542.5412)" />
1068 <ellipse
1069 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1070 id="ellipse12300"
1071 cx="694.58264"
1072 cy="647.3053"
1073 rx="4.1581793"
1074 ry="4.1593032"
1075 transform="translate(-387.41463,-542.5412)" />
1076 <ellipse
1077 cy="628.31934"
1078 cx="649.61285"
1079 id="ellipse12258-3-0"
1080 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1081 rx="4.1581793"
1082 ry="4.1593032"
1083 transform="translate(-387.41463,-542.5412)" />
1084 </g>
1085 <g
1086 transform="translate(-80.31201,-247.1061)"
1087 style="display:none"
1088 id="layer6">
1089 <ellipse
1090 cy="276.32968"
1091 cx="159.80099"
1092 id="ellipse12282-8-9-0"
1093 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1094 rx="4.1581793"
1095 ry="4.1593032" />
1096 <ellipse
1097 cy="259.99252"
1098 cx="159.80099"
1099 id="ellipse12282-8-9"
1100 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1101 rx="4.1581793"
1102 ry="4.1593032" />
1103 </g>
1104 <g
1105 id="g975"
1106 style="display:inline"
1107 transform="translate(-467.72664,-836.92541)">
1108 <g
1109 id="text973"
1110 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
1111 aria-label="gnu net">
1112 <path
1113 id="path977"
1114 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1115 d="m 489.62118,868.96318 q 0,2.375 -0.81641,4.23046 -0.81641,1.85547 -2.30078,3.14193 -1.45964,1.28646 -3.46354,1.95443 -1.97917,0.69271 -4.42839,0.69271 -6.01172,0 -10.26693,-3.63672 l 2.42448,-3.95834 q 3.53776,3.04297 7.84245,3.04297 2.64714,0 4.25521,-1.31119 1.63281,-1.28646 1.63281,-4.0573 v -2.47395 q -1.58333,1.36067 -3.04297,2.02864 -1.45963,0.64323 -3.38932,0.64323 -2.22656,0 -4.13151,-0.9401 -1.90495,-0.94011 -3.29037,-2.54818 -1.36067,-1.63281 -2.15234,-3.78516 -0.76693,-2.15234 -0.76693,-4.57682 0,-2.42448 0.76693,-4.57682 0.79167,-2.17709 2.15234,-3.76042 1.38542,-1.60807 3.29037,-2.52344 1.90495,-0.9401 4.13151,-0.9401 1.92969,0 3.4388,0.66797 1.50912,0.64323 2.99349,1.95442 v -2.07812 h 5.1211 z m -5.1211,-16.67448 q -0.91536,-1.01433 -2.375,-1.53386 -1.43489,-0.54427 -2.79557,-0.54427 -2.89453,0 -4.70052,2.02865 -1.78125,2.02864 -1.78125,5.17057 0,1.55859 0.47005,2.89453 0.49479,1.3112 1.33594,2.27604 0.86588,0.96485 2.05338,1.53386 1.21224,0.54427 2.6224,0.54427 1.36068,0 2.79557,-0.54427 1.45964,-0.56901 2.375,-1.58334 z"
1116 inkscape:connector-curvature="0" />
1117 <path
1118 id="path979"
1119 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1120 d="m 514.82951,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54166,2.30078 2.00391,2.30078 2.00391,7.07552 z"
1121 inkscape:connector-curvature="0" />
1122 <path
1123 id="path981"
1124 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1125 d="m 518.90503,846.15328 h 5.12109 v 14.25 q 0,2.67187 1.01433,3.71094 1.01432,1.03906 2.94401,1.03906 2.82031,0 4.6263,-2.30078 1.80599,-2.30078 1.80599,-6.35807 v -10.34115 h 5.12109 v 23.05729 h -5.12109 v -5.76432 q -0.76693,2.96875 -2.84505,4.65104 -2.07813,1.68229 -5.1211,1.68229 -3.53776,0 -5.54166,-2.30078 -2.00391,-2.32552 -2.00391,-7.07552 z"
1126 inkscape:connector-curvature="0" />
1127 <path
1128 id="path983"
1129 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1130 d="m 575.70451,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54167,2.30078 2.0039,2.30078 2.0039,7.07552 z"
1131 inkscape:connector-curvature="0" />
1132 <path
1133 id="path985"
1134 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1135 d="m 583.76832,859.63635 q 0.37109,2.375 2.2513,3.95834 1.90495,1.55859 5.09635,1.55859 2.4987,0 4.32943,-0.76693 1.85547,-0.79166 3.19141,-2.07812 l 2.62239,3.61198 q -2.22656,2.22656 -4.72526,3.04297 -2.47396,0.8164 -5.41797,0.8164 -2.67187,0 -4.97265,-0.89062 -2.30079,-0.89063 -3.98308,-2.47396 -1.68229,-1.60807 -2.64713,-3.8099 -0.94011,-2.20182 -0.94011,-4.89844 0,-2.62239 0.86589,-4.82421 0.89062,-2.22657 2.47396,-3.83464 1.60807,-1.63281 3.83463,-2.52344 2.22657,-0.91536 4.92318,-0.91536 2.79557,0 5.07161,0.96484 2.27605,0.94011 3.88412,2.7461 1.63281,1.80599 2.54818,4.42838 0.91536,2.59766 0.91536,5.88802 z m 13.53255,-4.5026 q -0.39584,-2.22656 -2.30078,-3.5625 -1.90495,-1.36068 -4.32943,-1.36068 -2.42448,0 -4.35417,1.36068 -1.92968,1.33594 -2.32552,3.5625 z"
1136 inkscape:connector-curvature="0" />
1137 <path
1138 id="path987"
1139 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;fill-opacity:1;stroke-width:1.03365779px"
1140 d="m 627.08081,861.86291 q -0.39583,3.63672 -2.86979,5.78907 -2.44922,2.1276 -6.13542,2.1276 -2.02864,0 -3.71094,-0.66797 -1.68229,-0.66797 -2.86979,-1.85547 -1.1875,-1.1875 -1.85547,-2.84505 -0.64322,-1.68229 -0.64322,-3.66146 v -9.97005 h -5.22006 v -4.6263 h 5.22006 v -9.22787 h 5.12109 v 9.22787 h 9.67318 v 4.6263 h -9.67318 v 9.97005 q 0,2.22657 1.08854,3.31511 1.08854,1.08854 2.86979,1.08854 2.17709,0 3.24089,-1.26172 1.0638,-1.26172 1.26172,-3.04297 z"
1141 inkscape:connector-curvature="0" />
1142 </g>
1143 </g>
1144</svg>
diff --git a/contrib/branding/logo/gnunet-logo-dark-text.svg b/contrib/branding/logo/gnunet-logo-dark-text.svg
deleted file mode 100644
index 5644e0ae7..000000000
--- a/contrib/branding/logo/gnunet-logo-dark-text.svg
+++ /dev/null
@@ -1,1411 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 version="1.1"
10 id="svg2"
11 height="280"
12 width="320">
13 <title
14 id="title3310">logo for GNUnet</title>
15 <defs
16 id="defs4">
17 <linearGradient
18 id="gnunet">
19 <stop
20 style="stop-color:#ff0000;stop-opacity:0.58431375;"
21 offset="0"
22 id="stop9516" />
23 <stop
24 style="stop-color:#ffcc00;stop-opacity:1;"
25 offset="1"
26 id="stop9518" />
27 </linearGradient>
28 <linearGradient
29 id="linearGradient4094">
30 <stop
31 style="stop-color:#232323;stop-opacity:1;"
32 offset="0"
33 id="stop4096" />
34 <stop
35 style="stop-color:#4d4d4d;stop-opacity:1;"
36 offset="1"
37 id="stop4098" />
38 </linearGradient>
39 <linearGradient
40 id="linearGradient4014">
41 <stop
42 style="stop-color:#a0a0a0;stop-opacity:1;"
43 offset="0"
44 id="stop4016" />
45 <stop
46 style="stop-color:#ffffff;stop-opacity:1;"
47 offset="1"
48 id="stop4018" />
49 </linearGradient>
50 <linearGradient
51 id="linearGradient4678">
52 <stop
53 style="stop-color:#e5e5e5;stop-opacity:1;"
54 offset="0"
55 id="stop4680" />
56 <stop
57 style="stop-color:#d3cdcd;stop-opacity:1;"
58 offset="1"
59 id="stop4682" />
60 </linearGradient>
61 <linearGradient
62 id="linearGradient4341">
63 <stop
64 id="stop4343"
65 offset="0"
66 style="stop-color:#333333;stop-opacity:1;" />
67 <stop
68 id="stop4345"
69 offset="1"
70 style="stop-color:#484848;stop-opacity:1;" />
71 </linearGradient>
72 <linearGradient
73 id="linearGradient4696-5">
74 <stop
75 id="stop4698-6"
76 offset="0"
77 style="stop-color:#ffb638;stop-opacity:1;" />
78 <stop
79 id="stop4700-2"
80 offset="1"
81 style="stop-color:#f0ae26;stop-opacity:1;" />
82 </linearGradient>
83 <linearGradient
84 id="linearGradient4702-3-6">
85 <stop
86 id="stop4704-1"
87 offset="0"
88 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
89 <stop
90 id="stop4706-8"
91 offset="1"
92 style="stop-color:#ffcc00;stop-opacity:1;" />
93 </linearGradient>
94 <color-profile
95 name="Artifex-PS-CMYK-Profile"
96 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
97 id="color-profile27" />
98 <linearGradient
99 y2="69.791016"
100 x2="177.04297"
101 y1="63.65625"
102 x1="142.96875"
103 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
104 gradientUnits="userSpaceOnUse"
105 id="linearGradient3138"
106 xlink:href="#linearGradient4702-3-6" />
107 <linearGradient
108 y2="1043.709"
109 x2="80.655251"
110 y1="1025.709"
111 x1="108.08774"
112 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
113 gradientUnits="userSpaceOnUse"
114 id="linearGradient3141"
115 xlink:href="#linearGradient4696-5" />
116 <linearGradient
117 y2="922.07178"
118 x2="78.000107"
119 y1="1004.8033"
120 x1="113.5146"
121 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
122 gradientUnits="userSpaceOnUse"
123 id="linearGradient3144"
124 xlink:href="#linearGradient4702-3-6" />
125 <linearGradient
126 y2="70.667412"
127 x2="176.60477"
128 y1="63.65625"
129 x1="142.96875"
130 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
131 gradientUnits="userSpaceOnUse"
132 id="linearGradient3148"
133 xlink:href="#linearGradient4702-3-6" />
134 <linearGradient
135 y2="70.667412"
136 x2="176.60477"
137 y1="63.65625"
138 x1="142.96875"
139 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
140 gradientUnits="userSpaceOnUse"
141 id="linearGradient3780"
142 xlink:href="#linearGradient4702-3-6" />
143 <linearGradient
144 y2="922.07178"
145 x2="78.000107"
146 y1="1004.8033"
147 x1="113.5146"
148 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
149 gradientUnits="userSpaceOnUse"
150 id="linearGradient3782"
151 xlink:href="#linearGradient4702-3-6" />
152 <linearGradient
153 y2="1043.709"
154 x2="80.655251"
155 y1="1025.709"
156 x1="108.08774"
157 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
158 gradientUnits="userSpaceOnUse"
159 id="linearGradient3784"
160 xlink:href="#linearGradient4696-5" />
161 <linearGradient
162 y2="69.791016"
163 x2="177.04297"
164 y1="63.65625"
165 x1="142.96875"
166 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
167 gradientUnits="userSpaceOnUse"
168 id="linearGradient3786"
169 xlink:href="#linearGradient4702-3-6" />
170 <filter
171 id="filter9204"
172 style="color-interpolation-filters:sRGB">
173 <feColorMatrix
174 id="feColorMatrix9194"
175 result="colormatrix"
176 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
177 in="SourceGraphic" />
178 <feComposite
179 k1="0"
180 id="feComposite9196"
181 result="composite"
182 k4="0"
183 k3="0"
184 k2="1"
185 operator="arithmetic"
186 in2="colormatrix"
187 in="SourceGraphic" />
188 <feGaussianBlur
189 id="feGaussianBlur9198"
190 result="blur1"
191 stdDeviation="5 0.01" />
192 <feGaussianBlur
193 id="feGaussianBlur9200"
194 result="blur2"
195 stdDeviation="0.01 5"
196 in="composite" />
197 <feBlend
198 id="feBlend9202"
199 result="blend"
200 mode="darken"
201 in2="blur1"
202 in="blur2" />
203 </filter>
204 <filter
205 id="filter9330"
206 style="color-interpolation-filters:sRGB">
207 <feGaussianBlur
208 id="feGaussianBlur9328"
209 result="blur"
210 stdDeviation="2 2" />
211 </filter>
212 </defs>
213 <metadata
214 id="metadata7">
215 <rdf:RDF>
216 <cc:Work
217 rdf:about="">
218 <dc:format>image/svg+xml</dc:format>
219 <dc:type
220 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
221 <dc:title>logo for GNUnet</dc:title>
222 <dc:creator>
223 <cc:Agent>
224 <dc:title>Luis Felipe López Acevedo, Amirouche Boubekki, carlo von lynX</dc:title>
225 </cc:Agent>
226 </dc:creator>
227 <dc:rights>
228 <cc:Agent>
229 <dc:title>GNUnet e.V.</dc:title>
230 </cc:Agent>
231 </dc:rights>
232 <cc:license
233 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
234 <dc:description />
235 </cc:Work>
236 <cc:License
237 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
238 <cc:permits
239 rdf:resource="http://creativecommons.org/ns#Reproduction" />
240 <cc:permits
241 rdf:resource="http://creativecommons.org/ns#Distribution" />
242 <cc:requires
243 rdf:resource="http://creativecommons.org/ns#Notice" />
244 <cc:requires
245 rdf:resource="http://creativecommons.org/ns#Attribution" />
246 <cc:permits
247 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
248 <cc:requires
249 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
250 </cc:License>
251 </rdf:RDF>
252 </metadata>
253 <g
254 id="g5346"
255 style="display:none"
256 transform="translate(-387.41463,-609.81931)">
257 <text
258 xml:space="preserve"
259 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
260 x="453.95291"
261 y="869.96057"
262 id="text5344"><tspan
263 id="tspan5342"
264 x="453.95291"
265 y="869.96057"
266 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
267 dx="0 0 0">gnu net</tspan></text>
268 </g>
269 <g
270 transform="translate(-387.41463,-609.81931)"
271 style="display:none"
272 id="g950">
273 <text
274 id="text948"
275 y="869.21057"
276 x="467.77612"
277 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
278 xml:space="preserve"><tspan
279 dx="0 -2.5 -3 0 -19.25 -2.5 -3"
280 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
281 y="869.21057"
282 x="467.77612"
283 id="tspan946">gnu net</tspan></text>
284 </g>
285 <g
286 id="g941"
287 style="display:none"
288 transform="translate(0,-20)">
289 <ellipse
290 ry="17.690269"
291 rx="17.68549"
292 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
293 id="ellipse937"
294 cx="157.97346"
295 cy="180.65355" />
296 <ellipse
297 ry="17.690269"
298 rx="17.68549"
299 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
300 id="ellipse939"
301 cx="157.97346"
302 cy="111.16864" />
303 </g>
304 <g
305 transform="translate(-387.41463,-609.81931)"
306 style="display:none"
307 id="g935">
308 <g
309 aria-label="gnu net"
310 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
311 id="g933">
312 <path
313 d="m 423.90503,684.79003 h 22.14128 v 61.61056 q 0,11.55196 4.3855,16.04443 4.38546,4.49242 12.72857,4.49242 12.19374,0 20.00203,-9.94753 7.80828,-9.94753 7.80828,-27.48942 v -44.71046 h 22.14128 v 99.6893 h -22.14128 v -24.92231 q -3.31586,12.83553 -12.30071,20.10899 -8.98489,7.27346 -22.14132,7.27346 -15.29567,0 -23.95963,-9.94753 -8.664,-10.0545 -8.664,-30.59135 z"
314 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
315 id="path925" />
316 <path
317 d="m 669.48029,784.47933 h -22.14128 v -61.50359 q 0,-11.65892 -4.3855,-16.15139 -4.38546,-4.49243 -12.72857,-4.49243 -12.30071,0 -20.10899,9.94753 -7.70132,9.94754 -7.70132,27.48947 v 44.71041 h -22.14128 v -99.6893 h 22.14128 v 25.02928 q 3.31586,-12.94249 12.30071,-20.10899 8.98489,-7.27346 22.14132,-7.27346 15.29567,0 23.95967,9.94753 8.66396,9.94753 8.66396,30.59135 z"
318 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
319 id="path927" />
320 </g>
321 </g>
322 <g
323 id="g1296"
324 style="display:none"
325 transform="translate(0,-67.278107)">
326 <path
327 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
328 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
329 id="path1256" />
330 <path
331 style="fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
332 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
333 id="path1258" />
334 <path
335 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
336 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
337 id="path1260" />
338 <path
339 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
340 d="m 98.868943,129.31358 37.045597,48.02106"
341 id="path1262" />
342 <path
343 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
344 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
345 id="path1264" />
346 <path
347 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
348 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
349 id="path1266" />
350 <path
351 transform="translate(-387.41463,-542.5412)"
352 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
353 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
354 id="path1268" />
355 <path
356 transform="translate(-387.41463,-542.5412)"
357 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
358 d="m 601.57854,741.42859 -2.26809,-64.28015"
359 id="path1270" />
360 <path
361 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
362 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
363 id="path1272" />
364 <path
365 transform="translate(-387.41463,-542.5412)"
366 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
367 d="m 475.69911,700.21367 24.57107,51.42411"
368 id="path1274" />
369 <path
370 transform="translate(-387.41463,-542.5412)"
371 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
372 d="m 534.29164,751.63778 12.85257,40.08057"
373 id="path1276" />
374 <path
375 transform="translate(-387.41463,-542.5412)"
376 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
377 d="m 525.21925,783.02162 0.37803,45.75234"
378 id="path1278" />
379 <path
380 transform="translate(-387.41463,-542.5412)"
381 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
382 d="m 601.95657,742.56293 -12.09653,36.6775"
383 id="path1280" />
384 <path
385 transform="translate(-387.41463,-542.5412)"
386 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
387 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
388 id="path1282" />
389 <path
390 transform="translate(-387.41463,-542.5412)"
391 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
392 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
393 id="path1284" />
394 <path
395 transform="translate(-387.41463,-542.5412)"
396 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
397 d="m 557.35064,768.27501 31.75336,10.5873"
398 id="path1286" />
399 <path
400 transform="translate(-387.41463,-542.5412)"
401 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
402 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
403 id="path1288" />
404 <path
405 transform="translate(-387.41463,-542.5412)"
406 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
407 d="m 524.46323,829.53019 44.98392,-0.37812"
408 id="path1290" />
409 <path
410 transform="translate(-387.41463,-542.5412)"
411 style="display:inline;opacity:1;fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
412 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
413 id="path1292" />
414 <path
415 transform="translate(-387.41463,-542.5412)"
416 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
417 d="m 409.92428,677.14844 54.05634,6.0499"
418 id="path1294" />
419 </g>
420 <g
421 transform="translate(0,-67.278107)"
422 style="display:none"
423 id="g1254">
424 <ellipse
425 transform="translate(-387.41463,-542.5412)"
426 ry="4.1593032"
427 rx="4.1581793"
428 cy="829.24042"
429 cx="568.98083"
430 id="ellipse1194"
431 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
432 <ellipse
433 transform="translate(-387.41463,-542.5412)"
434 ry="4.1593032"
435 rx="4.1581793"
436 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
437 id="ellipse1196"
438 cx="588.85413"
439 cy="778.67493" />
440 <ellipse
441 transform="translate(-387.41463,-542.5412)"
442 ry="4.1593032"
443 rx="4.1581793"
444 cy="740.67249"
445 cx="601.57867"
446 id="ellipse1198"
447 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
448 <ellipse
449 transform="translate(-387.41463,-542.5412)"
450 ry="4.1593032"
451 rx="4.1581793"
452 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
453 id="ellipse1200"
454 cx="525.79852"
455 cy="829.24042" />
456 <ellipse
457 transform="translate(-387.41463,-542.5412)"
458 ry="4.1593032"
459 rx="4.1581793"
460 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
461 id="ellipse1202"
462 cx="557.82654"
463 cy="768.71582" />
464 <ellipse
465 transform="translate(-387.41463,-542.5412)"
466 ry="4.1593032"
467 rx="4.1581793"
468 cy="783.02173"
469 cx="525.21936"
470 id="ellipse1204"
471 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
472 <ellipse
473 transform="translate(-387.41463,-542.5412)"
474 ry="4.1593032"
475 rx="4.1581793"
476 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
477 id="ellipse1206"
478 cx="400.09586"
479 cy="647.34271" />
480 <ellipse
481 transform="translate(-387.41463,-542.5412)"
482 ry="4.1593032"
483 rx="4.1581793"
484 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
485 id="ellipse1208"
486 cx="450.11285"
487 cy="628.31934" />
488 <ellipse
489 transform="translate(-387.41463,-542.5412)"
490 ry="4.1593032"
491 rx="4.1581793"
492 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
493 id="ellipse1210"
494 cx="622.36951"
495 cy="699.45752" />
496 <ellipse
497 transform="translate(-387.41463,-542.5412)"
498 ry="4.1593032"
499 rx="4.1581793"
500 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
501 id="ellipse1212"
502 cx="547.21771"
503 cy="792.29773" />
504 <ellipse
505 transform="translate(-387.41463,-542.5412)"
506 ry="4.1593032"
507 rx="4.1581793"
508 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
509 id="ellipse1214"
510 cx="566.20697"
511 cy="800.12549" />
512 <ellipse
513 transform="translate(-387.41463,-542.5412)"
514 ry="4.1593032"
515 rx="4.1581793"
516 cy="751.63794"
517 cx="500.64822"
518 id="ellipse1216"
519 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
520 <ellipse
521 transform="translate(-387.41463,-542.5412)"
522 ry="4.1593032"
523 rx="4.1581793"
524 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
525 id="ellipse1218"
526 cx="533.33447"
527 cy="751.72632" />
528 <ellipse
529 transform="translate(-387.41463,-542.5412)"
530 ry="4.1593032"
531 rx="4.1581793"
532 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
533 id="ellipse1220"
534 cx="450.75012"
535 cy="699.83545" />
536 <ellipse
537 transform="translate(-387.41463,-542.5412)"
538 ry="4.1593032"
539 rx="4.1581793"
540 cy="700.59174"
541 cx="476.07718"
542 id="ellipse1222"
543 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
544 <ellipse
545 transform="translate(-387.41463,-542.5412)"
546 ry="4.1593032"
547 rx="4.1581793"
548 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
549 id="ellipse1224"
550 cx="521.49146"
551 cy="719.65314" />
552 <ellipse
553 transform="translate(-387.41463,-542.5412)"
554 ry="4.1593032"
555 rx="4.1581793"
556 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
557 id="ellipse1226"
558 cx="500.6362"
559 cy="703.87305" />
560 <ellipse
561 ry="4.1593032"
562 rx="4.1581793"
563 cy="134.28851"
564 cx="211.9584"
565 id="ellipse1228"
566 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
567 <ellipse
568 transform="translate(-387.41463,-542.5412)"
569 ry="4.1593032"
570 rx="4.1581793"
571 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
572 id="ellipse1230"
573 cx="576.62964"
574 cy="713.44794" />
575 <ellipse
576 ry="4.1593032"
577 rx="4.1581793"
578 cy="123.16669"
579 cx="43.166531"
580 id="ellipse1232"
581 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
582 <ellipse
583 ry="4.1593032"
584 rx="4.1581793"
585 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
586 id="ellipse1234"
587 cx="98.865997"
588 cy="129.43542" />
589 <ellipse
590 ry="4.1593032"
591 rx="4.1581793"
592 cy="130.05022"
593 cx="267.08618"
594 id="ellipse1236"
595 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
596 <ellipse
597 transform="translate(-387.41463,-542.5412)"
598 ry="4.1593032"
599 rx="4.1581793"
600 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
601 id="ellipse1238"
602 cx="679.07196"
603 cy="686.22339" />
604 <ellipse
605 transform="translate(-387.41463,-542.5412)"
606 ry="4.1593032"
607 rx="4.1581793"
608 cy="748.99109"
609 cx="577.00763"
610 id="ellipse1240"
611 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
612 <ellipse
613 transform="translate(-387.41463,-542.5412)"
614 ry="4.1593032"
615 rx="4.1581793"
616 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
617 id="ellipse1242"
618 cx="577.00763"
619 cy="748.99109" />
620 <ellipse
621 transform="translate(-387.41463,-542.5412)"
622 ry="4.1593032"
623 rx="4.1581793"
624 cy="748.99109"
625 cx="577.07013"
626 id="ellipse1244"
627 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
628 <ellipse
629 transform="translate(0,-3e-6)"
630 ry="4.1593032"
631 rx="4.1581793"
632 cy="133.85095"
633 cx="22.887779"
634 id="ellipse1246"
635 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
636 <ellipse
637 transform="translate(-387.41463,-542.5412)"
638 ry="4.1593032"
639 rx="4.1581793"
640 cy="682.1922"
641 cx="462.47165"
642 id="ellipse1248"
643 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
644 <ellipse
645 transform="translate(-387.41463,-542.5412)"
646 ry="4.1593032"
647 rx="4.1581793"
648 cy="647.3053"
649 cx="694.58264"
650 id="ellipse1250"
651 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
652 <ellipse
653 transform="translate(-387.41463,-542.5412)"
654 ry="4.1593032"
655 rx="4.1581793"
656 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
657 id="ellipse1252"
658 cx="649.61285"
659 cy="628.31934" />
660 </g>
661 <g
662 transform="translate(0,-67.278107)"
663 style="display:inline"
664 id="g1533">
665 <path
666 id="path1493"
667 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
668 style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
669 <path
670 id="path1495"
671 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
672 style="fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
673 <path
674 id="path1497"
675 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
676 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
677 <path
678 id="path1499"
679 d="m 98.868943,129.31358 37.045597,48.02106"
680 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
681 <path
682 id="path1501"
683 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
684 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
685 <path
686 id="path1503"
687 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
688 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
689 <path
690 id="path1505"
691 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
692 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
693 transform="translate(-387.41463,-542.5412)" />
694 <path
695 id="path1507"
696 d="m 601.57854,741.42859 -2.26809,-64.28015"
697 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
698 transform="translate(-387.41463,-542.5412)" />
699 <path
700 id="path1509"
701 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
702 style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
703 <path
704 id="path1511"
705 d="m 475.69911,700.21367 24.57107,51.42411"
706 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
707 transform="translate(-387.41463,-542.5412)" />
708 <path
709 id="path1513"
710 d="m 534.29164,751.63778 12.85257,40.08057"
711 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
712 transform="translate(-387.41463,-542.5412)" />
713 <path
714 id="path1515"
715 d="m 525.21925,783.02162 0.37803,45.75234"
716 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
717 transform="translate(-387.41463,-542.5412)" />
718 <path
719 id="path1517"
720 d="m 601.95657,742.56293 -12.09653,36.6775"
721 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
722 transform="translate(-387.41463,-542.5412)" />
723 <path
724 id="path1519"
725 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
726 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
727 transform="translate(-387.41463,-542.5412)" />
728 <path
729 id="path1521"
730 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
731 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
732 transform="translate(-387.41463,-542.5412)" />
733 <path
734 id="path1523"
735 d="m 557.35064,768.27501 31.75336,10.5873"
736 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
737 transform="translate(-387.41463,-542.5412)" />
738 <path
739 id="path1525"
740 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
741 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
742 transform="translate(-387.41463,-542.5412)" />
743 <path
744 id="path1527"
745 d="m 524.46323,829.53019 44.98392,-0.37812"
746 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
747 transform="translate(-387.41463,-542.5412)" />
748 <path
749 id="path1529"
750 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
751 style="display:inline;opacity:1;fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
752 transform="translate(-387.41463,-542.5412)" />
753 <path
754 id="path1531"
755 d="m 409.92428,677.14844 54.05634,6.0499"
756 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
757 transform="translate(-387.41463,-542.5412)" />
758 </g>
759 <g
760 id="g1491"
761 style="display:inline"
762 transform="translate(0,-67.278107)">
763 <ellipse
764 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
765 id="ellipse1431"
766 cx="568.98083"
767 cy="829.24042"
768 rx="4.1581793"
769 ry="4.1593032"
770 transform="translate(-387.41463,-542.5412)" />
771 <ellipse
772 cy="778.67493"
773 cx="588.85413"
774 id="ellipse1433"
775 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
776 rx="4.1581793"
777 ry="4.1593032"
778 transform="translate(-387.41463,-542.5412)" />
779 <ellipse
780 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
781 id="ellipse1435"
782 cx="601.57867"
783 cy="740.67249"
784 rx="4.1581793"
785 ry="4.1593032"
786 transform="translate(-387.41463,-542.5412)" />
787 <ellipse
788 cy="829.24042"
789 cx="525.79852"
790 id="ellipse1437"
791 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
792 rx="4.1581793"
793 ry="4.1593032"
794 transform="translate(-387.41463,-542.5412)" />
795 <ellipse
796 cy="768.71582"
797 cx="557.82654"
798 id="ellipse1439"
799 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
800 rx="4.1581793"
801 ry="4.1593032"
802 transform="translate(-387.41463,-542.5412)" />
803 <ellipse
804 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
805 id="ellipse1441"
806 cx="525.21936"
807 cy="783.02173"
808 rx="4.1581793"
809 ry="4.1593032"
810 transform="translate(-387.41463,-542.5412)" />
811 <ellipse
812 cy="647.34271"
813 cx="400.09586"
814 id="ellipse1443"
815 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
816 rx="4.1581793"
817 ry="4.1593032"
818 transform="translate(-387.41463,-542.5412)" />
819 <ellipse
820 cy="628.31934"
821 cx="450.11285"
822 id="ellipse1445"
823 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
824 rx="4.1581793"
825 ry="4.1593032"
826 transform="translate(-387.41463,-542.5412)" />
827 <ellipse
828 cy="699.45752"
829 cx="622.36951"
830 id="ellipse1447"
831 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
832 rx="4.1581793"
833 ry="4.1593032"
834 transform="translate(-387.41463,-542.5412)" />
835 <ellipse
836 cy="792.29773"
837 cx="547.21771"
838 id="ellipse1449"
839 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
840 rx="4.1581793"
841 ry="4.1593032"
842 transform="translate(-387.41463,-542.5412)" />
843 <ellipse
844 cy="800.12549"
845 cx="566.20697"
846 id="ellipse1451"
847 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
848 rx="4.1581793"
849 ry="4.1593032"
850 transform="translate(-387.41463,-542.5412)" />
851 <ellipse
852 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
853 id="ellipse1453"
854 cx="500.64822"
855 cy="751.63794"
856 rx="4.1581793"
857 ry="4.1593032"
858 transform="translate(-387.41463,-542.5412)" />
859 <ellipse
860 cy="751.72632"
861 cx="533.33447"
862 id="ellipse1455"
863 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
864 rx="4.1581793"
865 ry="4.1593032"
866 transform="translate(-387.41463,-542.5412)" />
867 <ellipse
868 cy="699.83545"
869 cx="450.75012"
870 id="ellipse1457"
871 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
872 rx="4.1581793"
873 ry="4.1593032"
874 transform="translate(-387.41463,-542.5412)" />
875 <ellipse
876 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
877 id="ellipse1459"
878 cx="476.07718"
879 cy="700.59174"
880 rx="4.1581793"
881 ry="4.1593032"
882 transform="translate(-387.41463,-542.5412)" />
883 <ellipse
884 cy="719.65314"
885 cx="521.49146"
886 id="ellipse1461"
887 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
888 rx="4.1581793"
889 ry="4.1593032"
890 transform="translate(-387.41463,-542.5412)" />
891 <ellipse
892 cy="703.87305"
893 cx="500.6362"
894 id="ellipse1463"
895 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
896 rx="4.1581793"
897 ry="4.1593032"
898 transform="translate(-387.41463,-542.5412)" />
899 <ellipse
900 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
901 id="ellipse1465"
902 cx="211.9584"
903 cy="134.28851"
904 rx="4.1581793"
905 ry="4.1593032" />
906 <ellipse
907 cy="713.44794"
908 cx="576.62964"
909 id="ellipse1467"
910 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
911 rx="4.1581793"
912 ry="4.1593032"
913 transform="translate(-387.41463,-542.5412)" />
914 <ellipse
915 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
916 id="ellipse1469"
917 cx="43.166531"
918 cy="123.16669"
919 rx="4.1581793"
920 ry="4.1593032" />
921 <ellipse
922 cy="129.43542"
923 cx="98.865997"
924 id="ellipse1471"
925 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
926 rx="4.1581793"
927 ry="4.1593032" />
928 <ellipse
929 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
930 id="ellipse1473"
931 cx="267.08618"
932 cy="130.05022"
933 rx="4.1581793"
934 ry="4.1593032" />
935 <ellipse
936 cy="686.22339"
937 cx="679.07196"
938 id="ellipse1475"
939 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
940 rx="4.1581793"
941 ry="4.1593032"
942 transform="translate(-387.41463,-542.5412)" />
943 <ellipse
944 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
945 id="ellipse1477"
946 cx="577.00763"
947 cy="748.99109"
948 rx="4.1581793"
949 ry="4.1593032"
950 transform="translate(-387.41463,-542.5412)" />
951 <ellipse
952 cy="748.99109"
953 cx="577.00763"
954 id="ellipse1479"
955 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
956 rx="4.1581793"
957 ry="4.1593032"
958 transform="translate(-387.41463,-542.5412)" />
959 <ellipse
960 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
961 id="ellipse1481"
962 cx="577.07013"
963 cy="748.99109"
964 rx="4.1581793"
965 ry="4.1593032"
966 transform="translate(-387.41463,-542.5412)" />
967 <ellipse
968 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
969 id="ellipse1483"
970 cx="22.887779"
971 cy="133.85095"
972 rx="4.1581793"
973 ry="4.1593032"
974 transform="translate(0,-3e-6)" />
975 <ellipse
976 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
977 id="ellipse1485"
978 cx="462.47165"
979 cy="682.1922"
980 rx="4.1581793"
981 ry="4.1593032"
982 transform="translate(-387.41463,-542.5412)" />
983 <ellipse
984 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
985 id="ellipse1487"
986 cx="694.58264"
987 cy="647.3053"
988 rx="4.1581793"
989 ry="4.1593032"
990 transform="translate(-387.41463,-542.5412)" />
991 <ellipse
992 cy="628.31934"
993 cx="649.61285"
994 id="ellipse1489"
995 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
996 rx="4.1581793"
997 ry="4.1593032"
998 transform="translate(-387.41463,-542.5412)" />
999 </g>
1000 <g
1001 id="g1539"
1002 style="display:inline"
1003 transform="translate(0,-20)">
1004 <ellipse
1005 ry="4.1593032"
1006 rx="4.1581793"
1007 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1008 id="ellipse1535"
1009 cx="159.80099"
1010 cy="276.32968" />
1011 <ellipse
1012 ry="4.1593032"
1013 rx="4.1581793"
1014 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1015 id="ellipse1537"
1016 cx="159.80099"
1017 cy="259.99252" />
1018 </g>
1019 <g
1020 transform="translate(0,-67.278107)"
1021 style="display:none"
1022 id="layer3">
1023 <path
1024 id="path5313"
1025 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
1026 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1027 <path
1028 id="path5311"
1029 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
1030 style="fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1031 <path
1032 id="path9316"
1033 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
1034 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1035 <path
1036 id="path9318"
1037 d="m 98.868943,129.31358 37.045597,48.02106"
1038 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1039 <path
1040 id="path12058"
1041 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
1042 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1043 <path
1044 id="path12250"
1045 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
1046 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1047 <path
1048 id="path5161"
1049 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
1050 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1051 transform="translate(-387.41463,-542.5412)" />
1052 <path
1053 id="path12206"
1054 d="m 601.57854,741.42859 -2.26809,-64.28015"
1055 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1056 transform="translate(-387.41463,-542.5412)" />
1057 <path
1058 id="path5331"
1059 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
1060 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1061 <path
1062 id="path9320"
1063 d="m 475.69911,700.21367 24.57107,51.42411"
1064 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1065 transform="translate(-387.41463,-542.5412)" />
1066 <path
1067 id="path9322"
1068 d="m 534.29164,751.63778 12.85257,40.08057"
1069 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1070 transform="translate(-387.41463,-542.5412)" />
1071 <path
1072 id="path9324"
1073 d="m 525.21925,783.02162 0.37803,45.75234"
1074 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1075 transform="translate(-387.41463,-542.5412)" />
1076 <path
1077 id="path9326"
1078 d="m 601.95657,742.56293 -12.09653,36.6775"
1079 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1080 transform="translate(-387.41463,-542.5412)" />
1081 <path
1082 id="path12060"
1083 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
1084 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1085 transform="translate(-387.41463,-542.5412)" />
1086 <path
1087 id="path12208"
1088 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
1089 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1090 transform="translate(-387.41463,-542.5412)" />
1091 <path
1092 id="path12210"
1093 d="m 557.35064,768.27501 31.75336,10.5873"
1094 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1095 transform="translate(-387.41463,-542.5412)" />
1096 <path
1097 id="path12212"
1098 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
1099 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1100 transform="translate(-387.41463,-542.5412)" />
1101 <path
1102 id="path12216"
1103 d="m 524.46323,829.53019 44.98392,-0.37812"
1104 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1105 transform="translate(-387.41463,-542.5412)" />
1106 <path
1107 id="path5163"
1108 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
1109 style="display:inline;opacity:1;fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1110 transform="translate(-387.41463,-542.5412)" />
1111 <path
1112 id="path12214"
1113 d="m 409.92428,677.14844 54.05634,6.0499"
1114 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1115 transform="translate(-387.41463,-542.5412)" />
1116 </g>
1117 <g
1118 id="g325"
1119 style="display:none"
1120 transform="translate(0,-67.278107)">
1121 <ellipse
1122 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1123 id="ellipse12254"
1124 cx="568.98083"
1125 cy="829.24042"
1126 rx="4.1581793"
1127 ry="4.1593032"
1128 transform="translate(-387.41463,-542.5412)" />
1129 <ellipse
1130 cy="778.67493"
1131 cx="588.85413"
1132 id="ellipse12290"
1133 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1134 rx="4.1581793"
1135 ry="4.1593032"
1136 transform="translate(-387.41463,-542.5412)" />
1137 <ellipse
1138 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1139 id="ellipse12284"
1140 cx="601.57867"
1141 cy="740.67249"
1142 rx="4.1581793"
1143 ry="4.1593032"
1144 transform="translate(-387.41463,-542.5412)" />
1145 <ellipse
1146 cy="829.24042"
1147 cx="525.79852"
1148 id="ellipse12256"
1149 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1150 rx="4.1581793"
1151 ry="4.1593032"
1152 transform="translate(-387.41463,-542.5412)" />
1153 <ellipse
1154 cy="768.71582"
1155 cx="557.82654"
1156 id="ellipse12306"
1157 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1158 rx="4.1581793"
1159 ry="4.1593032"
1160 transform="translate(-387.41463,-542.5412)" />
1161 <ellipse
1162 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1163 id="ellipse12280"
1164 cx="525.21936"
1165 cy="783.02173"
1166 rx="4.1581793"
1167 ry="4.1593032"
1168 transform="translate(-387.41463,-542.5412)" />
1169 <ellipse
1170 cy="647.34271"
1171 cx="400.09586"
1172 id="ellipse12258"
1173 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1174 rx="4.1581793"
1175 ry="4.1593032"
1176 transform="translate(-387.41463,-542.5412)" />
1177 <ellipse
1178 cy="628.31934"
1179 cx="450.11285"
1180 id="ellipse12258-3"
1181 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1182 rx="4.1581793"
1183 ry="4.1593032"
1184 transform="translate(-387.41463,-542.5412)" />
1185 <ellipse
1186 cy="699.45752"
1187 cx="622.36951"
1188 id="ellipse12294"
1189 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1190 rx="4.1581793"
1191 ry="4.1593032"
1192 transform="translate(-387.41463,-542.5412)" />
1193 <ellipse
1194 cy="792.29773"
1195 cx="547.21771"
1196 id="ellipse12252"
1197 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1198 rx="4.1581793"
1199 ry="4.1593032"
1200 transform="translate(-387.41463,-542.5412)" />
1201 <ellipse
1202 cy="800.12549"
1203 cx="566.20697"
1204 id="ellipse12282"
1205 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1206 rx="4.1581793"
1207 ry="4.1593032"
1208 transform="translate(-387.41463,-542.5412)" />
1209 <ellipse
1210 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1211 id="ellipse12276"
1212 cx="500.64822"
1213 cy="751.63794"
1214 rx="4.1581793"
1215 ry="4.1593032"
1216 transform="translate(-387.41463,-542.5412)" />
1217 <ellipse
1218 cy="751.72632"
1219 cx="533.33447"
1220 id="ellipse12278"
1221 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1222 rx="4.1581793"
1223 ry="4.1593032"
1224 transform="translate(-387.41463,-542.5412)" />
1225 <ellipse
1226 cy="699.83545"
1227 cx="450.75012"
1228 id="ellipse12262"
1229 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1230 rx="4.1581793"
1231 ry="4.1593032"
1232 transform="translate(-387.41463,-542.5412)" />
1233 <ellipse
1234 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1235 id="ellipse12268"
1236 cx="476.07718"
1237 cy="700.59174"
1238 rx="4.1581793"
1239 ry="4.1593032"
1240 transform="translate(-387.41463,-542.5412)" />
1241 <ellipse
1242 cy="719.65314"
1243 cx="521.49146"
1244 id="ellipse12270"
1245 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1246 rx="4.1581793"
1247 ry="4.1593032"
1248 transform="translate(-387.41463,-542.5412)" />
1249 <ellipse
1250 cy="703.87305"
1251 cx="500.6362"
1252 id="ellipse12274"
1253 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1254 rx="4.1581793"
1255 ry="4.1593032"
1256 transform="translate(-387.41463,-542.5412)" />
1257 <ellipse
1258 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1259 id="ellipse12292"
1260 cx="211.9584"
1261 cy="134.28851"
1262 rx="4.1581793"
1263 ry="4.1593032" />
1264 <ellipse
1265 cy="713.44794"
1266 cx="576.62964"
1267 id="ellipse12286"
1268 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1269 rx="4.1581793"
1270 ry="4.1593032"
1271 transform="translate(-387.41463,-542.5412)" />
1272 <ellipse
1273 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1274 id="ellipse12260"
1275 cx="43.166531"
1276 cy="123.16669"
1277 rx="4.1581793"
1278 ry="4.1593032" />
1279 <ellipse
1280 cy="129.43542"
1281 cx="98.865997"
1282 id="ellipse12266"
1283 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1284 rx="4.1581793"
1285 ry="4.1593032" />
1286 <ellipse
1287 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1288 id="ellipse12296"
1289 cx="267.08618"
1290 cy="130.05022"
1291 rx="4.1581793"
1292 ry="4.1593032" />
1293 <ellipse
1294 cy="686.22339"
1295 cx="679.07196"
1296 id="ellipse12298"
1297 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1298 rx="4.1581793"
1299 ry="4.1593032"
1300 transform="translate(-387.41463,-542.5412)" />
1301 <ellipse
1302 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1303 id="ellipse12288"
1304 cx="577.00763"
1305 cy="748.99109"
1306 rx="4.1581793"
1307 ry="4.1593032"
1308 transform="translate(-387.41463,-542.5412)" />
1309 <ellipse
1310 cy="748.99109"
1311 cx="577.00763"
1312 id="ellipse12302"
1313 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1314 rx="4.1581793"
1315 ry="4.1593032"
1316 transform="translate(-387.41463,-542.5412)" />
1317 <ellipse
1318 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1319 id="ellipse12304"
1320 cx="577.07013"
1321 cy="748.99109"
1322 rx="4.1581793"
1323 ry="4.1593032"
1324 transform="translate(-387.41463,-542.5412)" />
1325 <ellipse
1326 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1327 id="ellipse12264"
1328 cx="22.887779"
1329 cy="133.85095"
1330 rx="4.1581793"
1331 ry="4.1593032"
1332 transform="translate(0,-3e-6)" />
1333 <ellipse
1334 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1335 id="ellipse12272"
1336 cx="462.47165"
1337 cy="682.1922"
1338 rx="4.1581793"
1339 ry="4.1593032"
1340 transform="translate(-387.41463,-542.5412)" />
1341 <ellipse
1342 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1343 id="ellipse12300"
1344 cx="694.58264"
1345 cy="647.3053"
1346 rx="4.1581793"
1347 ry="4.1593032"
1348 transform="translate(-387.41463,-542.5412)" />
1349 <ellipse
1350 cy="628.31934"
1351 cx="649.61285"
1352 id="ellipse12258-3-0"
1353 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1354 rx="4.1581793"
1355 ry="4.1593032"
1356 transform="translate(-387.41463,-542.5412)" />
1357 </g>
1358 <g
1359 transform="translate(0,-20)"
1360 style="display:none"
1361 id="layer6">
1362 <ellipse
1363 cy="276.32968"
1364 cx="159.80099"
1365 id="ellipse12282-8-9-0"
1366 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1367 rx="4.1581793"
1368 ry="4.1593032" />
1369 <ellipse
1370 cy="259.99252"
1371 cx="159.80099"
1372 id="ellipse12282-8-9"
1373 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1374 rx="4.1581793"
1375 ry="4.1593032" />
1376 </g>
1377 <g
1378 id="g975"
1379 style="display:inline"
1380 transform="translate(-387.41463,-609.81931)">
1381 <g
1382 id="text973"
1383 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
1384 aria-label="gnu net">
1385 <path
1386 id="path977"
1387 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1388 d="m 489.62118,868.96318 q 0,2.375 -0.81641,4.23046 -0.81641,1.85547 -2.30078,3.14193 -1.45964,1.28646 -3.46354,1.95443 -1.97917,0.69271 -4.42839,0.69271 -6.01172,0 -10.26693,-3.63672 l 2.42448,-3.95834 q 3.53776,3.04297 7.84245,3.04297 2.64714,0 4.25521,-1.31119 1.63281,-1.28646 1.63281,-4.0573 v -2.47395 q -1.58333,1.36067 -3.04297,2.02864 -1.45963,0.64323 -3.38932,0.64323 -2.22656,0 -4.13151,-0.9401 -1.90495,-0.94011 -3.29037,-2.54818 -1.36067,-1.63281 -2.15234,-3.78516 -0.76693,-2.15234 -0.76693,-4.57682 0,-2.42448 0.76693,-4.57682 0.79167,-2.17709 2.15234,-3.76042 1.38542,-1.60807 3.29037,-2.52344 1.90495,-0.9401 4.13151,-0.9401 1.92969,0 3.4388,0.66797 1.50912,0.64323 2.99349,1.95442 v -2.07812 h 5.1211 z m -5.1211,-16.67448 q -0.91536,-1.01433 -2.375,-1.53386 -1.43489,-0.54427 -2.79557,-0.54427 -2.89453,0 -4.70052,2.02865 -1.78125,2.02864 -1.78125,5.17057 0,1.55859 0.47005,2.89453 0.49479,1.3112 1.33594,2.27604 0.86588,0.96485 2.05338,1.53386 1.21224,0.54427 2.6224,0.54427 1.36068,0 2.79557,-0.54427 1.45964,-0.56901 2.375,-1.58334 z" />
1389 <path
1390 id="path979"
1391 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1392 d="m 514.82951,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54166,2.30078 2.00391,2.30078 2.00391,7.07552 z" />
1393 <path
1394 id="path981"
1395 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1396 d="m 518.90503,846.15328 h 5.12109 v 14.25 q 0,2.67187 1.01433,3.71094 1.01432,1.03906 2.94401,1.03906 2.82031,0 4.6263,-2.30078 1.80599,-2.30078 1.80599,-6.35807 v -10.34115 h 5.12109 v 23.05729 h -5.12109 v -5.76432 q -0.76693,2.96875 -2.84505,4.65104 -2.07813,1.68229 -5.1211,1.68229 -3.53776,0 -5.54166,-2.30078 -2.00391,-2.32552 -2.00391,-7.07552 z" />
1397 <path
1398 id="path983"
1399 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1400 d="m 575.70451,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54167,2.30078 2.0039,2.30078 2.0039,7.07552 z" />
1401 <path
1402 id="path985"
1403 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1404 d="m 583.76832,859.63635 q 0.37109,2.375 2.2513,3.95834 1.90495,1.55859 5.09635,1.55859 2.4987,0 4.32943,-0.76693 1.85547,-0.79166 3.19141,-2.07812 l 2.62239,3.61198 q -2.22656,2.22656 -4.72526,3.04297 -2.47396,0.8164 -5.41797,0.8164 -2.67187,0 -4.97265,-0.89062 -2.30079,-0.89063 -3.98308,-2.47396 -1.68229,-1.60807 -2.64713,-3.8099 -0.94011,-2.20182 -0.94011,-4.89844 0,-2.62239 0.86589,-4.82421 0.89062,-2.22657 2.47396,-3.83464 1.60807,-1.63281 3.83463,-2.52344 2.22657,-0.91536 4.92318,-0.91536 2.79557,0 5.07161,0.96484 2.27605,0.94011 3.88412,2.7461 1.63281,1.80599 2.54818,4.42838 0.91536,2.59766 0.91536,5.88802 z m 13.53255,-4.5026 q -0.39584,-2.22656 -2.30078,-3.5625 -1.90495,-1.36068 -4.32943,-1.36068 -2.42448,0 -4.35417,1.36068 -1.92968,1.33594 -2.32552,3.5625 z" />
1405 <path
1406 id="path987"
1407 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1408 d="m 627.08081,861.86291 q -0.39583,3.63672 -2.86979,5.78907 -2.44922,2.1276 -6.13542,2.1276 -2.02864,0 -3.71094,-0.66797 -1.68229,-0.66797 -2.86979,-1.85547 -1.1875,-1.1875 -1.85547,-2.84505 -0.64322,-1.68229 -0.64322,-3.66146 v -9.97005 h -5.22006 v -4.6263 h 5.22006 v -9.22787 h 5.12109 v 9.22787 h 9.67318 v 4.6263 h -9.67318 v 9.97005 q 0,2.22657 1.08854,3.31511 1.08854,1.08854 2.86979,1.08854 2.17709,0 3.24089,-1.26172 1.0638,-1.26172 1.26172,-3.04297 z" />
1409 </g>
1410 </g>
1411</svg>
diff --git a/contrib/branding/logo/gnunet-logo.pdf b/contrib/branding/logo/gnunet-logo.pdf
deleted file mode 100644
index fcc7b10bf..000000000
--- a/contrib/branding/logo/gnunet-logo.pdf
+++ /dev/null
Binary files differ
diff --git a/contrib/branding/logo/gnunet-logo.png b/contrib/branding/logo/gnunet-logo.png
deleted file mode 100644
index 4927a1624..000000000
--- a/contrib/branding/logo/gnunet-logo.png
+++ /dev/null
Binary files differ
diff --git a/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png b/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png
deleted file mode 100644
index 52d7b24fd..000000000
--- a/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png
+++ /dev/null
Binary files differ
diff --git a/contrib/branding/logo/lynXified-amirouche-v3.svg b/contrib/branding/logo/lynXified-amirouche-v3.svg
deleted file mode 100644
index b8dd1ac67..000000000
--- a/contrib/branding/logo/lynXified-amirouche-v3.svg
+++ /dev/null
@@ -1,918 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="400"
14 height="300"
15 id="svg2"
16 version="1.1"
17 inkscape:version="0.92.2 5c3e80d, 2017-08-06"
18 sodipodi:docname="lynXified-amirouche-v3.svg"
19 inkscape:export-filename="lynXified-amirouche-anonymous-v3.png"
20 inkscape:export-xdpi="192"
21 inkscape:export-ydpi="192">
22 <title
23 id="title3310">Guix System Distribution (Logo)</title>
24 <defs
25 id="defs4">
26 <linearGradient
27 id="gnunet">
28 <stop
29 id="stop9516"
30 offset="0"
31 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
32 <stop
33 id="stop9518"
34 offset="1"
35 style="stop-color:#ffcc00;stop-opacity:1;" />
36 </linearGradient>
37 <inkscape:path-effect
38 effect="vonkoch"
39 id="path-effect8912"
40 is_visible="true"
41 ref_path="m 386.97986,1494.3277 h 79.02013"
42 generator="m 386.97986,1552.8408 h 26.34004 m 26.34005,0 h 26.34004"
43 similar_only="false"
44 nbgenerations="1"
45 drawall="true"
46 maxComplexity="1000" />
47 <linearGradient
48 id="linearGradient4094">
49 <stop
50 id="stop4096"
51 offset="0"
52 style="stop-color:#232323;stop-opacity:1;" />
53 <stop
54 id="stop4098"
55 offset="1"
56 style="stop-color:#4d4d4d;stop-opacity:1;" />
57 </linearGradient>
58 <linearGradient
59 id="linearGradient4014">
60 <stop
61 id="stop4016"
62 offset="0"
63 style="stop-color:#a0a0a0;stop-opacity:1;" />
64 <stop
65 id="stop4018"
66 offset="1"
67 style="stop-color:#ffffff;stop-opacity:1;" />
68 </linearGradient>
69 <linearGradient
70 id="linearGradient4678">
71 <stop
72 id="stop4680"
73 offset="0"
74 style="stop-color:#e5e5e5;stop-opacity:1;" />
75 <stop
76 id="stop4682"
77 offset="1"
78 style="stop-color:#d3cdcd;stop-opacity:1;" />
79 </linearGradient>
80 <linearGradient
81 id="linearGradient4341">
82 <stop
83 style="stop-color:#333333;stop-opacity:1;"
84 offset="0"
85 id="stop4343" />
86 <stop
87 style="stop-color:#484848;stop-opacity:1;"
88 offset="1"
89 id="stop4345" />
90 </linearGradient>
91 <linearGradient
92 id="linearGradient4696-5">
93 <stop
94 style="stop-color:#ffb638;stop-opacity:1;"
95 offset="0"
96 id="stop4698-6" />
97 <stop
98 style="stop-color:#f0ae26;stop-opacity:1;"
99 offset="1"
100 id="stop4700-2" />
101 </linearGradient>
102 <linearGradient
103 id="linearGradient4702-3-6">
104 <stop
105 style="stop-color:#ff0000;stop-opacity:0.58431375;"
106 offset="0"
107 id="stop4704-1" />
108 <stop
109 style="stop-color:#ffcc00;stop-opacity:1;"
110 offset="1"
111 id="stop4706-8" />
112 </linearGradient>
113 <color-profile
114 id="color-profile26"
115 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
116 name="Artifex-PS-CMYK-Profile" />
117 <linearGradient
118 inkscape:collect="always"
119 xlink:href="#linearGradient4702-3-6"
120 id="linearGradient3138"
121 gradientUnits="userSpaceOnUse"
122 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
123 x1="142.96875"
124 y1="63.65625"
125 x2="177.04297"
126 y2="69.791016" />
127 <linearGradient
128 inkscape:collect="always"
129 xlink:href="#linearGradient4696-5"
130 id="linearGradient3141"
131 gradientUnits="userSpaceOnUse"
132 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
133 x1="108.08774"
134 y1="1025.709"
135 x2="80.655251"
136 y2="1043.709" />
137 <linearGradient
138 inkscape:collect="always"
139 xlink:href="#linearGradient4702-3-6"
140 id="linearGradient3144"
141 gradientUnits="userSpaceOnUse"
142 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
143 x1="113.5146"
144 y1="1004.8033"
145 x2="78.000107"
146 y2="922.07178" />
147 <linearGradient
148 inkscape:collect="always"
149 xlink:href="#linearGradient4702-3-6"
150 id="linearGradient3148"
151 gradientUnits="userSpaceOnUse"
152 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
153 x1="142.96875"
154 y1="63.65625"
155 x2="176.60477"
156 y2="70.667412" />
157 <linearGradient
158 inkscape:collect="always"
159 xlink:href="#linearGradient4702-3-6"
160 id="linearGradient3780"
161 gradientUnits="userSpaceOnUse"
162 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
163 x1="142.96875"
164 y1="63.65625"
165 x2="176.60477"
166 y2="70.667412" />
167 <linearGradient
168 inkscape:collect="always"
169 xlink:href="#linearGradient4702-3-6"
170 id="linearGradient3782"
171 gradientUnits="userSpaceOnUse"
172 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
173 x1="113.5146"
174 y1="1004.8033"
175 x2="78.000107"
176 y2="922.07178" />
177 <linearGradient
178 inkscape:collect="always"
179 xlink:href="#linearGradient4696-5"
180 id="linearGradient3784"
181 gradientUnits="userSpaceOnUse"
182 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
183 x1="108.08774"
184 y1="1025.709"
185 x2="80.655251"
186 y2="1043.709" />
187 <linearGradient
188 inkscape:collect="always"
189 xlink:href="#linearGradient4702-3-6"
190 id="linearGradient3786"
191 gradientUnits="userSpaceOnUse"
192 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
193 x1="142.96875"
194 y1="63.65625"
195 x2="177.04297"
196 y2="69.791016" />
197 <filter
198 style="color-interpolation-filters:sRGB"
199 inkscape:label="Cross Blur"
200 id="filter9204">
201 <feColorMatrix
202 in="SourceGraphic"
203 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
204 result="colormatrix"
205 id="feColorMatrix9194" />
206 <feComposite
207 in="SourceGraphic"
208 in2="colormatrix"
209 operator="arithmetic"
210 k2="1"
211 k3="0"
212 k4="0"
213 result="composite"
214 id="feComposite9196"
215 k1="0" />
216 <feGaussianBlur
217 stdDeviation="5 0.01"
218 result="blur1"
219 id="feGaussianBlur9198" />
220 <feGaussianBlur
221 in="composite"
222 stdDeviation="0.01 5"
223 result="blur2"
224 id="feGaussianBlur9200" />
225 <feBlend
226 in="blur2"
227 in2="blur1"
228 mode="darken"
229 result="blend"
230 id="feBlend9202" />
231 </filter>
232 <filter
233 style="color-interpolation-filters:sRGB"
234 inkscape:label="Blur"
235 id="filter9330">
236 <feGaussianBlur
237 stdDeviation="2 2"
238 result="blur"
239 id="feGaussianBlur9328" />
240 </filter>
241 </defs>
242 <sodipodi:namedview
243 id="base"
244 pagecolor="#ffffff"
245 bordercolor="#e73520"
246 borderopacity="1"
247 inkscape:pageopacity="0.0"
248 inkscape:pageshadow="2"
249 inkscape:zoom="2"
250 inkscape:cx="185.65271"
251 inkscape:cy="142.71577"
252 inkscape:document-units="px"
253 inkscape:current-layer="g950"
254 showgrid="true"
255 inkscape:window-width="1600"
256 inkscape:window-height="835"
257 inkscape:window-x="0"
258 inkscape:window-y="0"
259 inkscape:window-maximized="1"
260 inkscape:showpageshadow="false"
261 showborder="true"
262 borderlayer="true"
263 inkscape:object-nodes="true"
264 inkscape:snap-global="true"
265 showguides="true"
266 inkscape:guide-bbox="true"
267 objecttolerance="20"
268 inkscape:snap-tangential="true"
269 inkscape:snap-perpendicular="true"
270 inkscape:pagecheckerboard="true"
271 fit-margin-top="10"
272 fit-margin-left="10"
273 fit-margin-right="10"
274 fit-margin-bottom="10"
275 inkscape:snap-path-clip="true"
276 inkscape:snap-path-mask="true">
277 <sodipodi:guide
278 position="-307.43549,820.27825"
279 orientation="1,0"
280 id="guide5092"
281 inkscape:locked="false" />
282 <inkscape:grid
283 type="xygrid"
284 id="grid8783"
285 originx="0"
286 originy="0"
287 spacingx="5"
288 spacingy="5" />
289 <sodipodi:guide
290 position="-280.81043,809.79316"
291 orientation="0,1"
292 id="guide8844"
293 inkscape:locked="false" />
294 <sodipodi:guide
295 position="-297.44255,799.75126"
296 orientation="1,0"
297 id="guide8846"
298 inkscape:locked="false" />
299 <sodipodi:guide
300 position="-286.44639,799.75126"
301 orientation="0,1"
302 id="guide8864"
303 inkscape:locked="false" />
304 <sodipodi:guide
305 position="-227.46698,708.44981"
306 orientation="1,0"
307 id="guide8874"
308 inkscape:locked="false" />
309 <sodipodi:guide
310 position="-217.47047,677.79384"
311 orientation="1,0"
312 id="guide8876"
313 inkscape:locked="false" />
314 <sodipodi:guide
315 position="-219.46978,729.7757"
316 orientation="0,1"
317 id="guide8878"
318 inkscape:locked="false" />
319 <sodipodi:guide
320 position="-158.75928,719.78633"
321 orientation="0,1"
322 id="guide8896"
323 inkscape:locked="false" />
324 <sodipodi:guide
325 position="-147.49491,703.61816"
326 orientation="1,0"
327 id="guide8922"
328 inkscape:locked="false" />
329 <sodipodi:guide
330 position="-213.42311,880.00792"
331 orientation="0,1"
332 id="guide8924"
333 inkscape:locked="false" />
334 <sodipodi:guide
335 position="-357.88081,649.83162"
336 orientation="0,1"
337 id="guide8926"
338 inkscape:locked="false" />
339 <sodipodi:guide
340 position="-137.55348,605.74624"
341 orientation="1,0"
342 id="guide8991"
343 inkscape:locked="false" />
344 <sodipodi:guide
345 position="-231.80147,639.67552"
346 orientation="0,1"
347 id="guide8993"
348 inkscape:locked="false" />
349 <sodipodi:guide
350 position="-285.31397,844.81632"
351 orientation="0,1"
352 id="guide9013"
353 inkscape:locked="false" />
354 <sodipodi:guide
355 position="200,352"
356 orientation="1,0"
357 id="guide5070"
358 inkscape:locked="false" />
359 <sodipodi:guide
360 position="50,215"
361 orientation="1,0"
362 id="guide5335"
363 inkscape:locked="false" />
364 <sodipodi:guide
365 position="350,137"
366 orientation="1,0"
367 id="guide5337"
368 inkscape:locked="false" />
369 <sodipodi:guide
370 position="10,275.5"
371 orientation="1,0"
372 id="guide5354"
373 inkscape:locked="false" />
374 <sodipodi:guide
375 position="203.46998,66.733203"
376 orientation="0,1"
377 id="guide5358"
378 inkscape:locked="false" />
379 </sodipodi:namedview>
380 <metadata
381 id="metadata7">
382 <rdf:RDF>
383 <cc:Work
384 rdf:about="">
385 <dc:format>image/svg+xml</dc:format>
386 <dc:type
387 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
388 <dc:title>Guix System Distribution (Logo)</dc:title>
389 <dc:date>2015-02-07</dc:date>
390 <dc:creator>
391 <cc:Agent>
392 <dc:title>Luis Felipe López Acevedo</dc:title>
393 </cc:Agent>
394 </dc:creator>
395 <dc:rights>
396 <cc:Agent>
397 <dc:title>Luis Felipe López Acevedo</dc:title>
398 </cc:Agent>
399 </dc:rights>
400 <cc:license
401 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
402 <dc:description />
403 </cc:Work>
404 <cc:License
405 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
406 <cc:permits
407 rdf:resource="http://creativecommons.org/ns#Reproduction" />
408 <cc:permits
409 rdf:resource="http://creativecommons.org/ns#Distribution" />
410 <cc:requires
411 rdf:resource="http://creativecommons.org/ns#Notice" />
412 <cc:requires
413 rdf:resource="http://creativecommons.org/ns#Attribution" />
414 <cc:permits
415 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
416 <cc:requires
417 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
418 </cc:License>
419 </rdf:RDF>
420 </metadata>
421 <g
422 inkscape:groupmode="layer"
423 id="layer5"
424 inkscape:label="ramen"
425 sodipodi:insensitive="true">
426 <rect
427 style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.45544064;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
428 id="rect942"
429 width="400"
430 height="300"
431 x="-3.7303494e-14"
432 y="1.7330311e-15" />
433 </g>
434 <g
435 inkscape:groupmode="layer"
436 id="layer4"
437 inkscape:label="bg"
438 style="display:inline"
439 transform="translate(0,-47.278107)"
440 sodipodi:insensitive="true">
441 <rect
442 style="display:inline;opacity:1;vector-effect:none;fill:#421111;fill-opacity:1;stroke:none;stroke-width:1.47144902;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
443 id="rect12062"
444 width="380"
445 height="279.99997"
446 x="10"
447 y="57.278107" />
448 </g>
449 <g
450 inkscape:groupmode="layer"
451 id="layer1"
452 inkscape:label="head"
453 style="display:none;opacity:1"
454 transform="translate(0,-47.278107)"
455 sodipodi:insensitive="true">
456 <g
457 transform="matrix(0.40699717,0,0,0.40699717,31.535627,27.300788)"
458 id="layer1-6"
459 inkscape:label="Layer 1"
460 style="fill:#ff0000">
461 <g
462 transform="translate(126.95974,19.57999)"
463 id="Layer_1"
464 style="fill:#ff0000">
465 <g
466 id="g2490"
467 style="fill:#ff0000">
468 <path
469 style="fill:#ff0000;fill-rule:evenodd"
470 d="m 112.993,304.372 c -3.634,0.247 -8.365,1.875 -11.539,7.564 -2.591,4.646 -8.661,5.387 -11.495,4.451 -4.721,-1.56 -10.755,-2.642 -16.6,1.523 -5.845,4.164 -12.157,1.015 -11.05,-6.576 1.107,-7.59 3.849,-14.351 11.127,-18.538 15.895,-9.144 4.848,-15.508 13.572,-24.685 8.741,-9.195 6.81,-12.009 6.52,-24.497 C 63.985,239.176 47.241,230.661 28.544,207.301 9.847,183.94 2.599,164.711 0.661,135.423 -1.277,106.135 0.403,87.154 13.057,62.843 25.711,38.532 39.034,26.829 62.122,14.69 85.21,2.553 107.832,-0.354 128.742,0 c 20.91,0.353 34.843,1.885 46.658,8.626 11.814,6.741 22.622,15.224 29.512,15.285 6.891,0.061 11.582,-1.744 14.931,-4.31 0.894,22.703 -19.539,24.675 -37.819,25.155 -18.281,0.479 -29.514,-7.083 -46.351,-4.27 -16.837,2.813 -44.404,10.475 -57.833,33.85 -13.429,23.375 -13.887,31.638 -12.771,51.24 1.116,19.603 17.988,34.228 27.512,34.387 9.523,0.159 11.649,-2.599 19.985,-8.036 8.337,-5.438 50.896,-58.122 65.418,-69.956 14.523,-11.834 28.854,-15.488 44.328,-15.678 15.474,-0.19 19.428,0.335 31.908,5.45 12.48,5.114 20.149,14.533 30.211,20.291 5.143,-3.027 8.338,-7.547 13.057,-10.996 16.877,-12.335 25.646,-15.659 45.705,-13.707 11.529,1.122 26.066,7.708 34.74,15.25 15.445,13.429 28.205,32.125 38.516,46.328 8.029,11.061 17.477,24.295 30.965,28.432 14.727,4.515 25.809,-14.559 27.436,-25.139 0.922,-5.995 2.125,-11.249 2.135,-17.847 0.01,-6.599 -0.664,-14.607 -2.566,-21.484 -1.902,-6.877 -5.16,-13.72 -8.688,-19.394 -5.742,-9.235 -15.137,-18.899 -24.912,-23.871 -5.486,-2.79 -18.393,-7.863 -26.529,-8.041 -9.969,-0.216 -17.564,3.133 -26.781,3.761 -11.156,0.761 -31.084,3.269 -39.83,-5.35 -5.566,-5.485 -6.266,-9.144 -7.217,-16.296 2.459,2.026 5.898,3.358 8.959,3.617 6.986,0.59 13.527,-5.114 19.166,-8.419 4.645,-2.723 11.223,-7.589 17.324,-10.048 15.676,-6.32 34.932,-6.138 51.48,-4.445 13.264,1.356 30.461,7.257 42.094,13.84 11.688,6.612 22.951,17.761 31.201,28.271 10.379,13.224 16.053,24.57 19.812,41.063 4.805,21.062 6.137,52.702 0.328,73.469 -4.578,16.365 -19.779,41.504 -32.719,53.827 -12.762,12.155 -27.498,18.022 -44.256,21.231 0.656,3.382 0.764,6.536 1.631,9.309 1.232,3.936 3.588,8.324 8.428,6.936 1.93,-0.553 2.963,-1.032 5.508,1.194 2.543,2.226 1.219,10.825 -5.938,14.684 -3.629,1.957 -7.459,2.382 -13.271,2.498 -5.812,0.116 -14.883,0.141 -21.193,-0.964 -6.309,-1.104 -10.078,-6.111 -17.066,-6.895 -10.799,-1.208 -19.068,-9.01 -27.727,-14.59 -3.613,-2.329 -4.832,-2.353 -6.914,-3.53 1.125,3.444 2.625,7.021 3.373,10.332 0.75,3.311 0.43,6.378 0.828,9.028 0.396,2.648 1.131,4.707 1.559,6.855 1.73,1.547 2.283,3.9 5.189,4.64 2.908,0.739 7.461,-0.412 10.436,-0.812 2.975,-0.4 4.969,-2.021 7.303,-1.577 2.336,0.443 4.549,2.115 6.506,3.682 1.957,1.567 3.639,1.796 5.223,5.706 1.584,3.91 3.037,11.917 3.254,17.269 0.217,5.352 -0.383,10.183 -1.969,14.43 -1.586,4.247 -2.98,6.13 -7.275,10.336 -4.295,4.207 -11.289,10.38 -18.268,14.68 1.285,1.903 1.855,3.645 3.859,5.71 2.004,2.066 6.182,4.381 8.041,6.56 1.857,2.179 2.799,3.742 2.826,6.186 0.029,2.443 -0.09,5.619 -2.074,8.283 -4.941,6.633 -10.785,7.821 -17.891,10.941 1.195,7.462 2.17,12.793 0.443,20.244 -0.705,3.036 -2.271,9.92 -6.016,11.686 -3.746,1.766 -10.969,0.911 -15.541,1.637 -4.572,0.727 -7.131,1.417 -10.695,2.125 -2.166,3.131 -5.391,6.586 -6.496,9.392 -1.107,2.807 -0.773,3.813 0.156,6.679 0.929,2.866 4.092,7.039 4.988,10.395 0.896,3.356 1.07,6.969 0.234,10.334 -0.838,3.365 -2.271,5.807 -5.139,8.795 -2.867,2.989 -8.508,5.336 -11.318,7.758 -2.812,2.423 -5.611,2.714 -4.844,6.723 1.055,5.506 9.1,14.436 14.92,16.562 3.488,1.275 8.17,0.873 12.406,-0.915 -0.287,4.703 -4.357,7.873 -7.016,10.996 7.201,-2.059 14.184,-6.001 19.014,-11.226 -1.498,4.538 -6.652,11.823 -14.361,18.22 -7.709,6.397 -7.662,5.088 -11.494,7.633 6.992,1.405 13.494,1.025 18.91,0.052 -2.969,1.637 -7.836,3.939 -14.283,4.616 -6.447,0.676 -10.422,0.198 -16.232,-1.213 -5.811,-1.412 -11.115,-6.694 -18.156,-10.335 0.686,2.612 1.174,5.753 4.135,8.439 2.961,2.686 7.441,4.052 12.203,6.375 -6.062,-0.688 -12.432,-0.896 -18.389,-2.209 -4.41,-0.973 -7.373,-2.005 -10.6,-3.603 -3.225,-1.598 -5.715,-3.929 -8.572,-5.893 1.369,2.615 1.775,5.691 4.105,7.847 2.33,2.156 6.117,2.959 9.18,4.44 -3.195,-0.07 -6.268,0.623 -9.58,-0.21 -3.314,-0.833 -6.422,-2.142 -9.867,-4.68 -3.445,-2.538 -6.998,-5.663 -9.938,-8.858 -2.938,-3.195 -6.566,-7.337 -7.664,-10.283 -1.1,-2.947 0.66,-5.008 0.99,-7.509 -2.029,1.333 -4.525,2.067 -6.084,4.002 -1.559,1.935 -2.941,3.702 -2.251,7.075 0.691,3.373 3.804,7.496 6.005,11.248 -6.568,-5.371 -10.236,-7.439 -11.799,-13.918 -1.463,-6.066 2.322,-11.572 5.199,-16.159 1.429,-2.278 3.567,-4.398 4.903,-6.597 -2.967,-2.903 -6.358,-5.398 -8.901,-8.709 -2.542,-3.31 -3.61,-7.79 -6.205,-10.957 -2.596,-3.168 -6.088,-5.173 -9.129,-7.756 2.673,5.742 7.066,12.785 8.02,17.229 0.953,4.444 -1.069,7.164 -2.646,9.563 -1.578,2.399 -4.124,2.934 -6.539,4.408 -2.415,1.475 -6.171,0.312 -7.61,2.501 -1.438,2.188 -1.824,5.48 -0.449,7.648 l 5.64,8.902 c -2.078,-1.049 -5.658,-4.1 -7.272,-6.264 -1.614,-2.164 -4.09,-4.163 -4.429,-7.089 -0.339,-2.925 -0.504,-5.464 1.391,-8.07 1.896,-2.605 7.086,-3.477 9.409,-5.48 2.323,-2.003 3.626,-3.307 3.493,-5.896 -0.132,-2.589 -2.661,-4.441 -4.835,-6.073 -6.637,-4.978 -15.151,-9.565 -20.787,-15.565 -3.184,-3.39 -4.712,-6.127 -5.352,-8.466 -0.639,-2.338 0.037,-4.162 1.619,-7.038 1.582,-2.877 7.007,-6.718 7.667,-9.843 0.659,-3.124 -2.081,-3.795 -4.554,-4.897 -2.473,-1.102 -7.17,0.565 -9.464,-1.352 -2.293,-1.917 0.674,-5.945 -1.911,-8.154 -2.584,-2.209 -8.499,-0.976 -11.552,-3.352 -3.053,-2.377 -4.315,-5.327 -5.367,-8.775 -1.052,-3.448 -1.171,-7.225 -0.458,-9.722 0.713,-2.497 2.855,-2.934 4.147,-4.228 1.292,-1.294 2.413,-2.367 0.691,-4.297 -1.722,-1.929 -7.365,0.108 -10.609,-2.369 -3.244,-2.477 -1.258,-8.41 -3.552,-10.911 -2.293,-2.501 -6.409,-1.522 -8.581,-2.321 -2.171,-0.799 -3.023,2.02 -4.355,-2.438 -1.332,-4.459 -1.368,-17.75 -3.16,-22.71 -1.792,-4.96 -5.311,-0.335 -6.945,-5.265 -1.634,-4.929 -0.085,-12.812 -0.821,-20.257 l -3.335,-20.257 c -11.634,7.815 -19.314,10.269 -31.813,12.477 -1.043,30.582 -3.916,48.591 6.464,82.52 10.38,33.928 31.387,53.924 59.726,82.649 -37.395,-28.016 -55.248,-50.792 -66.422,-79.97 -11.176,-29.182 -9.03,-53.586 -7.906,-81.686 z M 311.701,292.08 c 2.877,0.129 6.373,0.859 8.393,2.171 2.021,1.312 4.166,2.384 6,4.251 4.576,4.66 8.008,10.28 9.525,16.738 0.967,4.117 1.111,9.397 1.463,14.231 -1.385,-4.468 -2.316,-9.127 -4.289,-13.13 -3.111,-6.312 -8.396,-12.473 -14.959,-15.31 -2.166,-0.938 -3.611,-0.764 -4.803,-0.598 0.533,0.895 1.426,1.645 1.465,2.956 0.039,1.311 -0.254,3.876 -2.477,4.954 -3.584,1.739 -7.568,0.516 -10.336,-1.931 -2.791,-2.466 -3.742,-6.638 -2.281,-10.223 1.741,-4.272 8.375,-4.283 12.299,-4.109 z M 275.629,286 c 0.361,-7.345 3.012,-13.539 9.594,-17.141 3.404,-1.862 8.648,-4.27 13.467,-4.836 4.629,-0.543 15.889,-0.146 22.662,2.945 5.201,2.374 8.744,6.07 13.311,8.771 4.566,2.702 7.814,4.513 12.162,7.543 6.674,4.651 10.586,9.772 15.213,12.842 2.225,1.475 5.355,1.256 8.309,2.158 -2.297,0.682 -5.299,1.434 -7.777,0.642 -3.09,-0.988 -7.41,-3.813 -9.807,-5.838 -4.236,-3.578 -6.432,-5.324 -11.055,-8.023 -2.76,-1.608 -7.305,-3.503 -10.338,-5.481 -3.035,-1.978 -8.303,-6.318 -11.219,-7.787 -3.707,-1.866 -10.381,-2.904 -14.508,-2.783 -5.686,0.166 -13.916,1.104 -18.316,5.096 -4.371,3.968 -6.031,7.459 -5.045,12.612 1.646,-1.896 2.742,-4.278 4.391,-5.688 3.416,-2.918 7.336,-3.059 11.588,-2.506 4.777,0.622 7.182,3.381 8.76,7.916 -1.062,-0.78 -3.014,-2.493 -4.555,-3.024 -3.617,-1.248 -6.352,-0.864 -9.74,0.953 -4,2.146 -2.912,5.322 -3.488,8.854 -0.264,1.629 -0.879,2.941 -1.318,4.412 -1.504,-0.398 -2.895,-1.024 -4.033,-2.152 0.047,1.65 -0.193,3.093 0.145,4.949 0.336,1.855 1.24,4.059 1.859,6.088 -2.785,-2.786 -5.635,-5.38 -7.434,-8.977 -1.801,-3.599 -3.021,-7.593 -2.828,-11.545 z m 4.82,-53.46 c 2.053,-3.047 2.654,-7.721 3.92,-11.521 -0.506,4.813 0.467,10.106 -1.883,13.592 -2.35,3.486 -6.477,2.875 -9.896,3.889 2.66,-2.028 5.805,-2.913 7.859,-5.96 z m -49.151,71.368 c 2.636,-2.134 9.75,-0.428 15.071,-0.047 -3.824,0.979 -7.648,1.959 -11.472,2.938 -0.356,1.301 -0.195,2.792 -1.068,3.901 -0.874,1.11 -2.534,1.521 -3.8,2.28 0.125,-3.418 -1.367,-6.939 1.269,-9.072 z m 37.491,-148.22 c 3.176,1.71 7.207,3.971 10.012,4.041 2.805,0.07 3.539,-1.834 5.189,-2.933 2.596,8.465 5.576,17.766 9.996,25.447 1.852,3.218 3.033,1.722 4.441,4.956 1.406,3.233 2.031,9.812 3.365,13.943 1.336,4.131 3.078,7.171 4.617,10.756 -3.908,-5.537 -8.957,-12.597 -11.135,-17.205 -2.176,-4.607 -0.783,-5.008 -2.545,-9.396 -1.762,-4.388 -5.324,-11.228 -7.986,-16.842 -1.906,0.253 -4.266,0.6 -5.715,0.153 -1.449,-0.447 -1.16,-1.988 -2.469,-2.984 -1.311,-0.996 -3.514,-0.61 -5.35,-2.2 -1.836,-1.589 -2.254,-4.85 -2.42,-7.736 z m -17.101,41.769 c 2.989,-0.262 6.701,0.539 9.5,0.38 2.799,-0.159 4.797,-0.885 7.196,-1.328 -0.445,-4.216 -0.023,-11.962 -3.915,-14.777 -2.514,-1.818 -12.839,-0.449 -15.597,0.146 -6.206,1.338 -13.433,5.042 -19.435,7.358 5.752,-4.018 10.721,-7.742 17.62,-9.816 4.147,-1.247 13.825,-2.868 18.105,-1.712 1.954,0.527 2.349,1.336 3.534,2.992 4.074,5.688 4.062,10.604 5.119,17.23 1.039,1.619 2.146,2.699 2.988,4.369 0.84,1.67 1.316,4.298 1.551,6.446 -1.066,-1.546 -0.414,-3.485 -3.367,-4.636 -2.955,-1.151 -7.479,-0.076 -11.46,0.34 2.902,2.094 4.344,4.111 4.455,8.538 0.13,5.198 -4.271,8.939 -8.866,9.295 -6.379,0.495 -9.668,-0.906 -12.248,-6.358 -1.13,-2.388 -0.311,-5.261 -0.405,-7.589 -7.665,0.533 -7.54,0.283 -13.142,4.954 3.045,4.461 4.963,7.026 9.995,9.695 2.822,1.498 6.017,2.954 9.514,3.549 3.498,0.595 9.235,1.17 12.909,0.606 3.675,-0.564 5.757,-1.613 8.481,-4.132 2.725,-2.52 2.975,-6.128 4.039,-8.98 -0.242,2.745 -0.557,6.241 -1.576,8.232 -3.1,6.053 -8.461,7.847 -14.862,7.867 -6.144,0.02 -13.744,-1.397 -19.46,-3.767 -4.57,-1.894 -12.146,-7.258 -13.944,-11.918 -1.229,-3.184 -0.256,-7.091 -0.385,-10.637 6.328,-4.208 7.894,-3.173 15.381,-4.405 3.132,-0.516 5.286,-1.679 8.275,-1.942 z m -36.861,-28.501 c 0.178,-2.521 0.457,-2.467 0.686,-3.701 -5.765,-1.542 -8.077,2.198 -11.457,9.144 -1.265,2.599 -0.013,4.146 -1.37,5.857 -1.355,1.711 -3.539,1.471 -5.74,3.114 -2.201,1.642 -4.382,4.787 -6.44,6.488 -4.223,3.491 -9.931,5.622 -14.829,7.971 3.345,-2.468 9.836,-6.211 11.936,-9.797 1.114,-1.901 0.949,-5.486 2.683,-7.195 1.733,-1.71 2.34,-2.893 4.578,-3.329 2.238,-0.436 1.338,-3.03 2.06,-5.092 0.722,-2.062 2.16,-3.526 3.69,-5.586 1.53,-2.06 3.46,-5.153 6.481,-6.276 3.021,-1.124 7.732,0.091 10.019,-0.556 2.286,-0.647 0.973,-2.309 2.634,-3.307 1.663,-0.998 4.896,-0.558 7.117,-1.625 3.937,-1.893 5.82,-5.053 8.188,-8.436 0.344,7.282 0.26,12.525 -2.357,19.376 -2.947,7.711 -5.934,12.253 -14.298,16.995 -2.882,1.633 -5.75,2.2 -8.139,3.057 1.393,-1.9 3.387,-2.725 4.18,-5.7 0.791,-2.977 0.2,-8.88 0.378,-11.402 z m 135.038,35.507 c -3.977,0.259 -4.92,-0.264 -8.102,1.98 1.725,2.684 3.449,5.368 5.172,8.052 -0.152,-5.298 0.364,-6.36 2.93,-10.032 z m -10.42,-3.85 c 5.508,-2.346 10.307,-4.244 16.299,-4.619 2.402,-0.151 6.131,0.221 8.557,0.331 2.066,-3.042 4.699,-5.441 5.664,-8.913 0.639,-2.303 0.324,-12.992 -0.807,-15.767 -3.295,-8.076 -6.498,-8.417 -11.033,-13.043 -3.291,-3.355 -3.422,-8.464 -4.406,-14.189 -0.361,-2.103 -1.393,-4.764 -1.877,-6.934 -5.928,-0.999 -12.303,-1.328 -19.123,-0.987 3.307,-3.172 6.504,-6.07 7.453,-10.832 0.947,-4.762 0.176,-10.617 -2.531,-14.887 -2.707,-4.27 -7.031,-7.99 -11,-11.469 -3.971,-3.479 -9.662,-6.351 -13.424,-9.197 4.893,-1.752 9.889,-4.326 14.682,-5.255 12.486,-2.422 23.244,1.282 35.287,8.563 7.002,4.235 12.793,8.258 20.113,15.921 7.318,7.662 16.395,21.717 23.48,30.052 7.085,8.335 12.805,14.927 18.986,19.898 6.182,4.972 11.777,6.388 17.664,9.581 l 9.176,9.744 7.426,-9.189 11.949,1.351 2.469,-13.412 10.967,-3.005 -1.789,-18.08 7.885,-5.596 -5.926,-11.249 6.021,-12.292 -7.85,-14.051 3.027,-13.529 -9.088,-7.745 -1.186,-14.377 -12.678,-4.836 -5.086,-12.508 -14.254,-0.16 -6.992,-9.285 -9.596,0.672 -10.697,-1.165 -6.049,-4.466 -8.779,5.828 -10.623,-5.539 -21.117,8.017 13.766,-11.972 14.262,-2.278 10.926,-2.785 14.756,4.846 12.988,-3.29 12.523,7.403 13.252,-0.733 6.51,11.681 13.195,1.523 7.139,12.987 8.299,4.531 2.203,16.637 7.391,7.01 -3.25,14.557 8.707,11.024 -8.164,11.812 8.73,7.383 -11.16,9.891 11.303,11.771 -13.65,4.402 8.891,12.625 -11.15,1.924 7.312,13.882 -12.566,-0.167 6.33,10.398 -13.783,-1.659 3.297,14.959 -10.416,-9.163 -3.568,18.13 -7.188,-13.018 -3.893,16.237 -8.873,-11.973 0.242,17.026 -9.807,-15.309 c 2.068,8.686 1.654,18.197 7.359,26.386 17.676,-2.392 29.229,-6.846 42.771,-19.877 12.334,-11.868 27.076,-36.613 31.068,-52.308 4.555,-17.91 4.695,-50.85 0.209,-69.084 C 522.282,71.848 516.67,63.462 506.643,49.136 497.059,38.957 487.633,28.204 475.469,20.945 457.613,10.29 434.717,7.417 414.367,7.694 c -11.268,0.154 -18.816,2.318 -25.553,4.768 -11.781,4.284 -21.203,13.629 -33.18,18.247 -3.906,1.505 -7.037,1.552 -10.113,-0.091 3.012,6.026 6.289,8.729 13.801,10.922 5.434,1.586 18.4,0.583 27.326,-0.241 9.582,-0.885 14.58,-3.734 27.621,-3.555 12.736,0.175 22.828,5.013 28.346,8.168 11.385,6.51 19.549,13.732 26.643,25.172 3.896,6.282 6.625,13.37 8.547,20.603 1.922,7.233 2.764,15.334 2.887,22.415 0.123,7.081 -0.418,13.402 -2.15,19.774 -4.051,14.918 -12.988,30.098 -31.346,27.753 -11.234,-1.436 -28.17,-22.522 -33.842,-30.258 C 401.909,115.758 390.133,98.481 375.752,85.479 366.984,77.554 354.979,72.1 343.19,71.021 c -22.117,-2.024 -28.676,2.177 -45.324,15.899 3.387,1.08 6.693,1.676 10.164,3.24 7.703,3.471 14.748,7.957 20.893,13.711 6.439,6.031 9.328,9.848 9.557,18.484 0.152,5.735 -4.566,10.333 -8.891,14.469 -2.646,2.533 -6.148,4.852 -8.291,6.818 -2.84,2.609 -6.357,5.463 -2.789,9.619 1.342,1.562 3.672,2.74 5.637,4.199 3.119,2.315 1.691,10.919 -2.418,13.201 -5.258,2.917 -11.541,2.591 -15.877,-1.314 5.473,-0.819 8.949,-1.545 8.807,-6.022 -0.082,-2.595 -3.381,-4.751 -6.619,-6.227 -7.809,-3.56 -13.707,-3.035 -21.479,-8.627 -7.85,-5.651 -8.023,-8.745 -10.145,-17.617 -3.785,0.396 -7.27,0.483 -12.331,2.159 -5.061,1.675 -10.654,5.663 -15.249,6.65 -11.572,2.49 -13.878,1.752 -20.211,0.113 -11.15,-2.886 -25.668,2.055 -40.09,6.668 -2.398,0.767 -12.097,0.026 -18.626,2.317 -10.084,3.538 -24.233,12.106 -32.405,18.988 -12.382,10.429 -28.654,41.64 -37.848,77.464 -0.966,10.89 2.131,18.227 -4.729,23.546 -6.86,5.319 -6.67,18.946 -8.996,22.768 -2.326,3.821 -5.019,2.132 -10.026,7.499 -5.007,5.367 -7.556,4.47 -7.43,14.618 4.315,-2.837 10.606,-6.135 16.13,-6.334 4.892,-0.177 4.944,6.264 17.5,-6.149 6.715,-6.641 19.616,-6.844 28.567,-9.773 8.952,-2.929 25.083,-8.965 41.239,-27.027 16.156,-18.062 23.887,-37.077 27.02,-64.567 0.499,4.874 1.365,10.371 -0.722,23.816 -2.087,13.445 -6.585,28.546 2.891,46.634 l 5.904,11.269 c -3.515,-4.797 -10.381,-12.622 -12.448,-18.198 l -4.768,-12.863 c -10.667,16.748 -13.119,19.744 -27.937,31.743 -0.59,7.444 -0.735,15.208 1.698,22.331 2.433,7.122 -1.445,15.332 0.406,20.023 1.851,4.691 6.132,2.021 7.53,6.77 1.398,4.749 -0.73,14.138 1.438,18.767 2.168,4.629 7.487,1.82 10.065,3.315 2.578,1.496 3.421,3.546 4.8,5.513 1.378,1.966 -0.539,6.614 2.265,8.123 2.803,1.51 7.176,0.231 10.093,1.68 2.917,1.449 3.36,4.932 2.661,8.053 -0.7,3.121 -3.817,4.553 -5.186,7.726 -1.368,3.174 -1.215,5.383 0.429,8.297 1.644,2.915 5.284,4.52 8.912,5.991 3.628,1.471 8.726,0.645 12.47,2.679 3.744,2.034 7.109,6.087 9.086,9.033 1.977,2.945 2.526,5.023 2.425,8.12 -0.102,3.096 -1.358,6.663 -3.011,9.654 -1.653,2.991 -5.3,6.631 0.394,12.343 5.694,5.711 5.484,3.249 8.746,6.954 -0.355,-6.409 -3.003,-11.63 -1.067,-16.455 1.937,-4.825 7.752,-5.664 10.817,-7.834 3.065,-2.171 4.83,-5.153 7.246,-7.729 -0.035,3.315 0.32,6.879 -0.057,9.375 -0.768,5.075 -2.266,9.58 5.297,10.394 3.407,0.366 6.642,-1.843 10.227,-3.169 -1.878,3.363 -5.144,6.067 -5.635,10.092 -0.491,4.023 0.099,8.443 2.885,12.436 2.787,3.991 7.599,6.955 11.125,9.301 3.525,2.347 5.414,2.535 8.123,3.804 0.133,3.956 -0.646,8.143 -0.195,11.869 0.451,3.726 1.625,7.024 3.779,10.104 2.156,3.081 5.613,4.848 8.869,7.126 -1.785,-4.157 -5.406,-8.101 -5.357,-12.471 0.049,-4.369 1.359,-7.466 5.621,-11.343 4.262,-3.878 14.24,-7.241 18.945,-11.011 4.705,-3.771 6.223,-6.081 7.912,-9.742 1.689,-3.661 1.219,-9.559 1.531,-12.85 1.549,4.61 1.77,6.043 2.273,10.866 0.506,4.824 -2.811,11.59 -4.215,15.161 5.82,-2.811 9.514,-7.304 11.379,-11.695 1.248,0.74 0.619,2.769 1.078,6.679 2.074,-2.064 4.432,-3.652 6.52,-5.6 2.09,-1.946 4.379,-3.658 5.416,-6.375 1.035,-2.717 0.611,-5.606 -0.16,-8.763 -0.771,-3.157 -4.299,-6.818 -6.199,-10.271 -1.898,-3.452 0.336,-6.841 0.207,-11.001 -3.801,-0.653 -7.029,-2.589 -11.398,-1.96 -4.371,0.628 -9.377,5.533 -13.844,5.59 -4.467,0.057 -6.975,-4.128 -10.637,-5.278 -3.662,-1.15 -7.367,-1.024 -11.049,-1.536 4.664,-4.468 22.766,-6.596 35.148,-8.615 10.895,-1.777 21.707,-2.804 32.746,-2.959 4.93,-0.07 11.266,1.558 14.689,0.574 3.426,-0.982 2.695,-3.315 3.711,-5.858 2.842,-7.108 1.441,-13.438 -0.105,-20.596 -9.91,-1.162 -20.236,-2.584 -30.221,-1.817 -9.762,0.75 -21.322,5.391 -31.391,5.705 -8.754,0.272 -21.717,-1.677 -29.234,-6.259 -9.186,-5.599 -16.293,-17.624 -18.816,-21.485 -4.109,-6.289 -9.292,-18.627 -12.446,-24.268 -3.152,-5.641 -3.847,-7.219 -6.47,-9.574 -2.623,-2.354 -6.216,-2.536 -9.323,-3.805 3.582,0.366 7.493,-0.768 10.747,1.098 4.889,2.805 10.361,14.431 13.403,19.49 3.223,-10.804 2.471,-15.052 11.797,-21.144 -7.516,8.424 -7.703,14.805 -9.535,24.723 6.25,10.258 14.939,26.598 26.309,31.132 4.107,1.639 11.16,2.667 15.6,3.216 13.818,1.711 27.146,-2.668 40.717,-6.019 9.92,-2.45 19.986,-1.463 32.051,-0.754 4.096,0.24 13.754,-2.224 15.754,-6.367 1.08,-2.235 1,-4.921 -0.551,-7.303 -1.553,-2.382 -5.689,-3.534 -7.906,-5.678 -2.217,-2.144 -3.492,-4.689 -5.238,-7.034 -9.215,1.768 -16.795,2.447 -23.635,2.633 4.906,-2.021 9.613,-3.174 14.719,-5.171 5.106,-1.997 10.904,-5.275 15.025,-7.995 4.121,-2.721 6.752,-4.299 9.734,-7.465 2.98,-3.168 6.803,-6.431 9,-10.303 2.199,-3.872 2.539,-8.203 2.662,-12.995 0.123,-4.791 -0.084,-11.514 -1.932,-15.374 -1.846,-3.859 -5.406,-5.03 -8.266,-5.943 -2.861,-0.913 -4.82,1.396 -7.795,1.708 -2.977,0.312 -5.758,2.188 -10.062,0.164 -4.304,-2.024 -9.406,-6.144 -13.758,-12.259 -4.35,-6.116 -7.461,-16.112 -11.896,-23.802 -7.645,-13.256 -17.172,-25.639 -26.283,-37.922 -0.75,-3.029 -1.877,-7.215 -2.252,-11.324 -0.654,-7.16 -0.777,-14.598 1.445,-21.578 1.703,-5.347 4.18,-10.995 9.779,-13.188 2.24,-0.878 5.074,-1.226 7.076,-0.484 2.004,0.741 3.969,3.002 3.182,5.614 -0.865,2.872 -2.855,2.95 -4.207,4.4 -2.295,2.46 -3.213,4.265 -4.08,7.332 2.48,-0.04 5.832,-0.229 7.869,0.307 2.658,0.7 5.133,2.462 6.482,6.228 -3.172,-2.813 -4.748,-4.104 -8.707,-4.204 -1.814,-0.045 -4.018,0.604 -6.025,0.906 -0.75,2.44 -1.191,5.432 -2.25,7.32 -1.059,1.888 -3.121,1.435 -3.895,3.641 -0.774,2.202 -0.819,5.788 -0.429,8.683 z m 27.715,-3.307 c 1.215,0.479 1.678,0.584 3.217,1.755 1.539,1.171 3.662,2.34 4.881,5.138 1.221,2.799 1.164,7.127 0.904,8.89 -1.07,-0.314 -2.529,-0.102 -3.639,-1.051 -1.107,-0.949 -1.768,-3.098 -3.188,-4.018 -1.422,-0.919 -2.607,-0.718 -4.178,-0.917 0.807,2.296 1.199,4.593 0.824,6.675 -0.814,4.545 -3.486,6.847 -7.812,7.391 -1.889,0.237 -4.889,-0.385 -6.533,-0.684 0.762,1.702 2.053,3.193 2.816,4.895 3.658,-0.529 6.369,-0.454 8.336,-1.374 1.967,-0.92 4.076,-2.981 6.6,-3.854 2.525,-0.873 4.777,-0.859 7.539,-1.29 -2.176,1.875 -3.604,3.751 -5.777,5.626 1.594,4.633 3.188,9.265 4.781,13.897 3.379,2.114 6.549,3.228 10.807,5.838 4.26,2.611 9.367,7.281 14.914,9.828 5.547,2.547 8.85,3.933 14.646,5.026 5.795,1.093 10.406,5.787 16.109,6.55 5.703,0.763 16.355,0.917 20.75,0.488 4.99,-0.487 11.473,-3.062 12.055,-8.533 -4.184,1.032 -10.574,0.106 -13.801,-7.767 -1.432,-3.496 -0.73,-9.925 -2.922,-14.059 -2.191,-4.135 -5.246,-5.462 -8.896,-10.556 -3.65,-5.094 -9.621,-13.129 -12.973,-19.954 -3.35,-6.824 -4.139,-14.554 -6.973,-20.669 -2.834,-6.114 -7.109,-11.053 -10.422,-15.766 -7.234,-10.3 -13.068,-17.339 -24.986,-22.535 -5.732,-2.499 -12.258,-3.165 -18.387,-4.748 -2.494,1.117 -5.914,2.351 -6.521,5.268 -0.607,2.917 0.559,7.225 2.676,9.415 3.543,3.661 8.793,7.618 10.857,13.437 1.326,3.734 1.711,16.252 0.562,19.649 -1.192,3.527 -3.963,5.66 -6.266,8.009 z m 1.154,29.629 c -1.107,0.955 -1.951,1.936 -3.732,2.729 -1.779,0.793 -4.209,0.998 -6.57,1.588 3.311,5.154 6.789,10.362 9.961,15.781 3.174,5.418 5.924,11.351 8.953,17.025 -0.143,-3.252 0.049,-6.719 -0.424,-9.758 -0.473,-3.038 -1.85,-5.697 -3.215,-10.258 -1.363,-4.561 -3.041,-10.766 -4.973,-17.107 z M 279.229,113.611 c -0.467,5.07 0.391,12.996 1.441,17.96 1.258,5.942 2.469,9.023 7.291,12.603 8.83,6.555 14.467,5.45 21.26,9.251 3.232,1.809 7.328,4.841 8.523,8.046 1.195,3.205 -0.789,6.685 -3.24,8.053 4.287,0.638 9.094,-4.195 7.088,-9.157 -0.988,-2.442 -5.691,-3.53 -7.133,-5.994 -1.439,-2.463 -1.436,-4.999 -0.758,-7.501 1.225,-4.51 10.148,-8.608 13.301,-12.173 4.852,-5.486 6.715,-10.075 3.967,-17.14 -3.859,-9.925 -18.768,-17.889 -27.691,-21.784 -4.086,-1.783 -6.377,-1.91 -9.564,-2.865 6.525,3.824 13.404,6.87 16.705,15.418 2.756,7.139 0.369,9.829 0.461,16.045 0.043,2.882 3.838,4.323 5.523,6.144 1.467,1.583 1.348,2.758 0.176,4.943 -0.129,-1.971 -0.971,-3.442 -2.484,-4.513 -2.498,-1.771 -5.189,-1.39 -6.52,-5.021 -2.02,-5.52 1.986,-10.748 -2.518,-16.946 -3.369,-4.637 -7.85,-9.827 -13.895,-9.963 -2.861,-0.065 -5.012,0.367 -8.068,1.271 l -4.074,-4.903 -0.094,-0.064 C 270.639,87.758 264.969,81.525 253.344,76.327 241.719,71.13 235.99,70.343 222.661,70.639 c -13.329,0.295 -26.557,1.41 -41.995,14.723 -15.437,13.313 -55.224,64.292 -64.873,70.744 -9.648,6.452 -11.785,8.638 -23.841,8.641 C 79.896,164.75 61.08,147.697 60.343,126.385 59.605,105.072 59.309,97.497 74.124,71.822 88.94,46.146 115.78,38.262 135.694,35.6 c 19.915,-2.662 31.882,4.352 46.613,4.385 14.73,0.034 29.288,-2.509 33.581,-14.224 -2.101,1.251 -4.916,2.661 -12.832,2.246 C 195.14,27.592 184.164,18.427 171.817,12.286 159.47,6.146 145.73,5.427 128.107,5.094 110.484,4.761 88.494,6.108 66.708,17.869 44.922,29.63 30.051,42.109 17.415,65.127 4.779,88.146 2.891,106.94 4.928,134.811 c 2.037,27.871 10.633,48.599 27.184,68.998 16.551,20.399 33.092,30.38 62.918,34.091 l 6.279,-27.696 -11.209,16.086 0.277,-17.891 -10.139,12.581 -4.447,-17.062 -8.214,13.679 -4.08,-19.05 -11.903,9.627 3.768,-15.719 -15.75,1.743 7.235,-10.926 -14.361,0.175 L 40.842,168.86 28.1,166.837 38.26,153.57 22.66,148.945 35.576,136.577 22.823,126.184 32.798,118.426 23.47,106.014 33.42,94.431 29.706,79.135 38.155,71.77 40.67,54.289 50.152,49.527 58.31,35.881 73.389,34.28 l 7.44,-12.274 15.145,0.771 14.312,-7.779 14.843,3.457 16.86,-5.092 12.487,2.926 16.296,2.395 15.733,12.58 -24.133,-8.424 -12.14,5.821 -10.035,-6.125 -6.909,4.693 -12.225,1.224 -10.963,-0.708 -7.992,9.756 -16.291,0.168 -5.811,13.143 -14.486,5.082 -1.355,15.107 -10.388,8.138 3.461,14.216 -8.971,14.765 6.882,12.915 -6.773,11.82 9.011,5.88 -2.044,18.998 12.532,3.158 2.823,14.093 13.656,-1.419 8.484,9.656 10.486,-10.239 c 19.116,-9.532 26.988,-14.864 41.886,-30.977 16.959,-18.343 26.679,-35.302 49.269,-47.861 16.202,-9.008 29.417,-12.25 47.617,-9.105 17.088,2.952 22.81,13.202 35.395,24 1.334,-2.415 1.605,-3.055 3.803,-4.833 -0.69,3.136 -1.786,6.389 -2.065,9.405 z"
471 id="path2492"
472 inkscape:connector-curvature="0" />
473 </g>
474 </g>
475 </g>
476 </g>
477 <g
478 inkscape:label="gnu:net grunge"
479 id="g12308"
480 inkscape:groupmode="layer"
481 style="display:none"
482 transform="translate(-387.41463,-589.81931)">
483 <text
484 xml:space="preserve"
485 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
486 x="478.95114"
487 y="859.00549"
488 id="text12220"><tspan
489 sodipodi:role="line"
490 id="tspan12218"
491 x="478.95114"
492 y="859.00549"
493 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;font-family:ReservoirGrunge;-inkscape-font-specification:ReservoirGrunge;fill:#ffffff;stroke-width:1.03365779px"
494 dx="0 2.5 2.5 0 -4 2.5 2.5">gnu net</tspan></text>
495 </g>
496 <g
497 transform="translate(-387.41463,-589.81931)"
498 style="display:none"
499 inkscape:groupmode="layer"
500 id="g5346"
501 inkscape:label="gnu:net ubuntu">
502 <text
503 id="text5344"
504 y="859.96057"
505 x="493.95291"
506 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
507 xml:space="preserve"><tspan
508 dx="0 0 0"
509 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
510 y="859.96057"
511 x="493.95291"
512 id="tspan5342"
513 sodipodi:role="line">gnu net</tspan></text>
514 </g>
515 <g
516 inkscape:label="gnu:net anonymous"
517 id="g950"
518 inkscape:groupmode="layer"
519 style="display:inline"
520 transform="translate(-387.41463,-589.81931)">
521 <text
522 xml:space="preserve"
523 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
524 x="507.95291"
525 y="858.71057"
526 id="text948"><tspan
527 sodipodi:role="line"
528 id="tspan946"
529 x="507.95291"
530 y="858.71057"
531 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
532 dx="0 -2.5 -3 0 -19.25 -2.5 -3">gnu net</tspan></text>
533 </g>
534 <g
535 inkscape:groupmode="layer"
536 id="layer3"
537 inkscape:label="vertices 2"
538 style="display:inline"
539 transform="translate(0,-47.278107)"
540 sodipodi:insensitive="true">
541 <path
542 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
543 d="m 51.98603,94.74526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.19305,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
544 id="path9316"
545 inkscape:connector-curvature="0"
546 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" />
547 <path
548 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
549 d="m 139.04572,118.81358 37.0456,48.02106"
550 id="path9318"
551 inkscape:connector-curvature="0" />
552 <path
553 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
554 d="m 128.46126,147.9287 10.96248,-29.11512 12.47454,32.51819"
555 id="path12058"
556 inkscape:connector-curvature="0" />
557 <path
558 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
559 d="m 252.31652,123.28236 54.69043,-3.64603 -31.75647,27.04795"
560 id="path12250"
561 inkscape:connector-curvature="0"
562 sodipodi:nodetypes="ccc" />
563 <ellipse
564 ry="4.1593032"
565 rx="4.1581793"
566 cy="112.66669"
567 cx="83.343307"
568 id="ellipse12260"
569 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
570 <ellipse
571 ry="4.1593032"
572 rx="4.1581793"
573 cy="123.35095"
574 cx="63.064556"
575 id="ellipse12264"
576 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
577 <ellipse
578 ry="4.1593032"
579 rx="4.1581793"
580 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
581 id="ellipse12266"
582 cx="139.04277"
583 cy="118.93542" />
584 <ellipse
585 ry="4.1593032"
586 rx="4.1581793"
587 inkscape:transform-center-y="-10.724852"
588 inkscape:transform-center-x="9.5305947"
589 cy="123.78851"
590 cx="252.13518"
591 id="ellipse12292"
592 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
593 <ellipse
594 ry="4.1593032"
595 rx="4.1581793"
596 inkscape:transform-center-y="-10.724835"
597 inkscape:transform-center-x="9.5305988"
598 cy="119.55022"
599 cx="307.26297"
600 id="ellipse12296"
601 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
602 <path
603 style="fill:none;stroke:#3498db;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
604 d="m 52.875,94.278107 10,29.000003 21,-10.5 v 0 0"
605 id="path5311"
606 inkscape:connector-curvature="0" />
607 <path
608 style="fill:none;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
609 d="m 102.875,75.278107 -39.5,48.000003 v 0 l -1,2"
610 id="path5313"
611 inkscape:connector-curvature="0" />
612 <path
613 style="fill:none;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
614 d="m 229.75,196.02811 -44,2.625 25.375,17.125 v 0"
615 id="path5331"
616 inkscape:connector-curvature="0" />
617 </g>
618 <g
619 inkscape:groupmode="layer"
620 id="layer2"
621 inkscape:label="vertices 0"
622 style="display:inline;opacity:1"
623 transform="translate(-387.41463,-589.81931)"
624 sodipodi:insensitive="true">
625 <path
626 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
627 d="m 515.87589,689.71367 24.57107,51.42411"
628 id="path9320"
629 inkscape:connector-curvature="0" />
630 <path
631 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
632 d="m 574.46842,741.13778 12.85257,40.08057"
633 id="path9322"
634 inkscape:connector-curvature="0" />
635 <path
636 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
637 d="m 565.39603,772.52162 0.37803,45.75234"
638 id="path9324"
639 inkscape:connector-curvature="0" />
640 <path
641 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
642 d="m 642.13335,732.06293 -12.09653,36.6775"
643 id="path9326"
644 inkscape:connector-curvature="0" />
645 <path
646 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
647 d="m 515.87589,690.09178 46.98395,22.0278 10.85256,28.26194"
648 id="path12060"
649 inkscape:connector-curvature="0"
650 sodipodi:nodetypes="ccc" />
651 <path
652 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
653 d="m 450.10106,666.64844 54.05634,6.0499"
654 id="path12214"
655 inkscape:connector-curvature="0" />
656 <path
657 style="display:inline;fill:#729fcf;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
658 d="m 641.75532,730.92859 -2.26809,-64.28015"
659 id="path12206"
660 inkscape:connector-curvature="0" />
661 <path
662 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
663 d="m 629.28078,768.36231 -12.85255,-66.17074 v 36.6775 z"
664 id="path12208"
665 inkscape:connector-curvature="0" />
666 <path
667 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
668 d="m 597.52742,757.77501 31.75336,10.5873"
669 id="path12210"
670 inkscape:connector-curvature="0" />
671 <path
672 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
673 d="m 540.44696,693.87298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
674 id="path12212"
675 inkscape:connector-curvature="0" />
676 <path
677 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
678 d="m 564.64001,819.03019 44.98392,-0.37812"
679 id="path12216"
680 inkscape:connector-curvature="0" />
681 <ellipse
682 ry="4.1593032"
683 rx="4.1581793"
684 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
685 id="ellipse12252"
686 cx="587.39447"
687 cy="781.79773" />
688 <ellipse
689 ry="4.1593032"
690 rx="4.1581793"
691 cy="818.74042"
692 cx="609.15759"
693 id="ellipse12254"
694 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
695 <ellipse
696 ry="4.1593032"
697 rx="4.1581793"
698 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
699 id="ellipse12256"
700 cx="565.97528"
701 cy="818.74042" />
702 <ellipse
703 ry="4.1593032"
704 rx="4.1581793"
705 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
706 id="ellipse12262"
707 cx="490.92691"
708 cy="689.33545" />
709 <ellipse
710 ry="4.1593032"
711 rx="4.1581793"
712 cy="690.09174"
713 cx="516.25397"
714 id="ellipse12268"
715 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
716 <ellipse
717 ry="4.1593032"
718 rx="4.1581793"
719 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
720 id="ellipse12270"
721 cx="561.66821"
722 cy="709.15314" />
723 <ellipse
724 ry="4.1593032"
725 rx="4.1581793"
726 cy="671.6922"
727 cx="502.64844"
728 id="ellipse12272"
729 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
730 <ellipse
731 ry="4.1593032"
732 rx="4.1581793"
733 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
734 id="ellipse12274"
735 cx="540.81299"
736 cy="693.37305" />
737 <ellipse
738 ry="4.1593032"
739 rx="4.1581793"
740 cy="741.13794"
741 cx="540.82501"
742 id="ellipse12276"
743 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
744 <ellipse
745 ry="4.1593032"
746 rx="4.1581793"
747 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
748 id="ellipse12278"
749 cx="573.51123"
750 cy="741.22632" />
751 <ellipse
752 ry="4.1593032"
753 rx="4.1581793"
754 cy="772.52173"
755 cx="565.39612"
756 id="ellipse12280"
757 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
758 <ellipse
759 ry="4.1593032"
760 rx="4.1581793"
761 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
762 id="ellipse12282"
763 cx="606.38373"
764 cy="789.62549"
765 inkscape:transform-center-x="9.5306006"
766 inkscape:transform-center-y="-10.72485" />
767 <ellipse
768 ry="4.1593032"
769 rx="4.1581793"
770 inkscape:transform-center-y="-10.724822"
771 inkscape:transform-center-x="9.5305654"
772 cy="730.17249"
773 cx="641.75543"
774 id="ellipse12284"
775 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
776 <ellipse
777 ry="4.1593032"
778 rx="4.1581793"
779 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
780 id="ellipse12286"
781 cx="616.8064"
782 cy="702.94794"
783 inkscape:transform-center-x="9.5305633"
784 inkscape:transform-center-y="-10.724851" />
785 <ellipse
786 ry="4.1593032"
787 rx="4.1581793"
788 inkscape:transform-center-y="-10.724843"
789 inkscape:transform-center-x="9.5305819"
790 cy="738.49109"
791 cx="617.18439"
792 id="ellipse12288"
793 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
794 <ellipse
795 ry="4.1593032"
796 rx="4.1581793"
797 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
798 id="ellipse12290"
799 cx="629.03088"
800 cy="768.17493"
801 inkscape:transform-center-x="9.5305949"
802 inkscape:transform-center-y="-10.724827" />
803 <ellipse
804 ry="4.1593032"
805 rx="4.1581793"
806 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
807 id="ellipse12294"
808 cx="662.54626"
809 cy="688.95752"
810 inkscape:transform-center-x="9.5306048"
811 inkscape:transform-center-y="-10.724823" />
812 <ellipse
813 ry="4.1593032"
814 rx="4.1581793"
815 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
816 id="ellipse12298"
817 cx="719.24872"
818 cy="675.72339"
819 inkscape:transform-center-x="9.5305824"
820 inkscape:transform-center-y="-10.724798" />
821 <ellipse
822 ry="4.1593032"
823 rx="4.1581793"
824 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
825 id="ellipse12302"
826 cx="617.18439"
827 cy="738.49109"
828 inkscape:transform-center-x="9.5305819"
829 inkscape:transform-center-y="-10.724843" />
830 <ellipse
831 ry="4.1593032"
832 rx="4.1581793"
833 inkscape:transform-center-y="-10.724843"
834 inkscape:transform-center-x="9.5305819"
835 cy="738.49109"
836 cx="617.24689"
837 id="ellipse12304"
838 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
839 <ellipse
840 ry="4.1593032"
841 rx="4.1581793"
842 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
843 id="ellipse12306"
844 cx="598.0033"
845 cy="758.21582"
846 inkscape:transform-center-x="9.5306167"
847 inkscape:transform-center-y="-10.724797" />
848 <ellipse
849 ry="4.1593032"
850 rx="4.1581793"
851 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
852 id="ellipse12258"
853 cx="440.27264"
854 cy="636.84271" />
855 <ellipse
856 ry="4.1593032"
857 rx="4.1581793"
858 inkscape:transform-center-y="-10.724829"
859 inkscape:transform-center-x="9.5306165"
860 cy="636.8053"
861 cx="734.7594"
862 id="ellipse12300"
863 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
864 <ellipse
865 ry="4.1593032"
866 rx="4.1581793"
867 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
868 id="ellipse12258-3"
869 cx="490.28964"
870 cy="617.81934" />
871 <ellipse
872 ry="4.1593032"
873 rx="4.1581793"
874 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
875 id="ellipse12258-3-0"
876 cx="689.78961"
877 cy="617.81934" />
878 <path
879 style="display:inline;fill:none;fill-opacity:1;stroke:#3498db;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
880 d="m 439.28963,637.81931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
881 id="path5161"
882 inkscape:connector-curvature="0"
883 sodipodi:nodetypes="cccccc" />
884 <path
885 style="display:inline;fill:none;stroke:#3498db;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
886 d="m 734.78963,636.81931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
887 id="path5163"
888 inkscape:connector-curvature="0"
889 sodipodi:nodetypes="cccccccc" />
890 </g>
891 <g
892 inkscape:groupmode="layer"
893 id="layer6"
894 inkscape:label="no:des"
895 style="display:inline"
896 sodipodi:insensitive="true">
897 <ellipse
898 transform="translate(-387.41463,-589.81931)"
899 ry="4.1593032"
900 rx="4.1581793"
901 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
902 id="ellipse12282-8-9-0"
903 cx="587.3924"
904 cy="855.64899"
905 inkscape:transform-center-x="9.5306006"
906 inkscape:transform-center-y="-10.72485" />
907 <ellipse
908 transform="translate(-387.41463,-589.81931)"
909 ry="4.1593032"
910 rx="4.1581793"
911 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
912 id="ellipse12282-8-9"
913 cx="587.3924"
914 cy="839.31183"
915 inkscape:transform-center-x="9.5306006"
916 inkscape:transform-center-y="-10.72485" />
917 </g>
918</svg>
diff --git a/contrib/ci/Containerfile b/contrib/ci/Containerfile
new file mode 100644
index 000000000..a69c35f7e
--- /dev/null
+++ b/contrib/ci/Containerfile
@@ -0,0 +1,45 @@
1FROM docker.io/library/debian:bookworm
2
3ENV DEBIAN_FRONTEND=noninteractive
4
5RUN apt-get update -yqq && \
6 apt-get upgrade -yqq && \
7 apt-get install -yqq \
8 git \
9 autoconf \
10 libextractor-dev \
11 libjansson-dev \
12 libgcrypt-dev \
13 libqrencode-dev \
14 libpq-dev \
15 libmicrohttpd-dev \
16 pkg-config \
17 libtool \
18 recutils \
19 make \
20 python3-sphinx \
21 python3-sphinx-book-theme \
22 python3-sphinx-multiversion \
23 python3-sphinx-rtd-theme \
24 texinfo \
25 autopoint \
26 curl \
27 libcurl4-openssl-dev \
28 libsodium-dev \
29 libidn11-dev \
30 zlib1g-dev \
31 libunistring-dev \
32 iptables
33
34# Debian packaging tools
35RUN apt-get install -yqq \
36 po-debconf \
37 build-essential \
38 debhelper-compat \
39 devscripts \
40 git-buildpackage \
41 && rm -rf /var/lib/apt/lists/*
42
43WORKDIR /workdir
44
45CMD ["/bin/bash"]
diff --git a/contrib/ci/ci.sh b/contrib/ci/ci.sh
new file mode 100755
index 000000000..0719015b9
--- /dev/null
+++ b/contrib/ci/ci.sh
@@ -0,0 +1,34 @@
1#!/bin/bash
2set -exvuo pipefail
3
4# Requires podman
5# Fails if not found in PATH
6OCI_RUNTIME=$(which podman)
7REPO_NAME=$(basename "${PWD}")
8JOB_NAME="${1}"
9JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}")
10JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}:${JOB_ARCH}")
11CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True")
12
13echo "Image name: ${JOB_CONTAINER}"
14
15if [ "${CONTAINER_BUILD}" = "True" ] ; then
16 "${OCI_RUNTIME}" build \
17 --arch "${JOB_ARCH}" \
18 -t "${JOB_CONTAINER}" \
19 -f contrib/ci/Containerfile .
20fi
21
22"${OCI_RUNTIME}" run \
23 --rm \
24 -ti \
25 --arch "${JOB_ARCH}" \
26 --env CI_COMMIT_REF="$(git rev-parse HEAD)" \
27 --volume "${PWD}":/workdir \
28 --workdir /workdir \
29 "${JOB_CONTAINER}" \
30 contrib/ci/jobs/"${JOB_NAME}"/job.sh
31
32top_dir=$(dirname "${BASH_SOURCE[0]}")
33
34#"${top_dir}"/build.sh
diff --git a/contrib/ci/docker/Dockerfile b/contrib/ci/docker/Dockerfile
deleted file mode 100644
index b9f019c43..000000000
--- a/contrib/ci/docker/Dockerfile
+++ /dev/null
@@ -1,32 +0,0 @@
1FROM ubuntu:18.04
2
3# Install the required build tools
4RUN apt update && apt install -y apt git autopoint automake texinfo gettext autoconf libtool libidn11-dev libunistring-dev gnutls-dev libgcrypt20 libgcrypt20-dev libjansson-dev libsqlite3-dev wget flex bison libglib2.0-dev libgmp3-dev libmicrohttpd-dev libglpk-dev libextractor-dev
5
6# Install gnurl from source at version gnurl-7.54.0
7WORKDIR /usr/src
8RUN git clone https://git.taler.net/gnurl.git --branch gnurl-7.57.0
9RUN cd /usr/src/gnurl && autoreconf -i && ./configure --prefix=/usr --disable-ntlm-wb && make install
10
11# Install libpbc
12WORKDIR /usr/src
13RUN wget https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz && tar xvzpf pbc-0.5.14.tar.gz && cd /usr/src/pbc-0.5.14 && ./configure --prefix=/usr && make install
14
15# Install libbswabe
16WORKDIR /usr/src
17RUN git clone https://github.com/schanzen/libgabe.git && cd /usr/src/libgabe && ./configure --prefix=/usr && make install
18
19WORKDIR /usr/src
20RUN git clone git://gnunet.org/gnunet.git
21RUN cd /usr/src/gnunet && ./bootstrap && ./configure --enable-experimental --prefix=/usr && make && make install
22
23RUN addgroup gnunetdns && addgroup gnunet && adduser --system --home /var/lib/gnunet gnunet
24RUN chown gnunet:gnunet /var/lib/gnunet
25RUN echo '[arm]\nSTART_SYSTEM_SERVICES = YES\nSTART_USER_SERVICES = NO\n' > /etc/gnunet.conf
26
27ADD docker-entrypoint.sh .
28
29RUN rm -rf /usr/src/*
30#RUN apt remove gcc
31
32CMD ["sh", "docker-entrypoint.sh"]
diff --git a/contrib/ci/docker/docker-entrypoint.sh b/contrib/ci/docker/docker-entrypoint.sh
deleted file mode 100644
index db916cce7..000000000
--- a/contrib/ci/docker/docker-entrypoint.sh
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/bash
2gnunet-arm -s > $HOME/gnunet.log 2>&1
3exec bash
diff --git a/contrib/ci/jobs/0-build/build.sh b/contrib/ci/jobs/0-build/build.sh
new file mode 100755
index 000000000..a5a89ca82
--- /dev/null
+++ b/contrib/ci/jobs/0-build/build.sh
@@ -0,0 +1,10 @@
1#!/bin/bash
2set -exuo pipefail
3
4./bootstrap
5./configure CFLAGS="-ggdb -O0" \
6 --enable-logging=verbose \
7 --disable-doc
8
9make -j $(nproc)
10make install
diff --git a/contrib/ci/jobs/0-build/job.sh b/contrib/ci/jobs/0-build/job.sh
new file mode 100755
index 000000000..8d79902c5
--- /dev/null
+++ b/contrib/ci/jobs/0-build/job.sh
@@ -0,0 +1,6 @@
1#!/bin/bash
2set -exuo pipefail
3
4job_dir=$(dirname "${BASH_SOURCE[0]}")
5
6"${job_dir}"/build.sh
diff --git a/contrib/ci/jobs/2-deb-package/job.sh b/contrib/ci/jobs/2-deb-package/job.sh
new file mode 100755
index 000000000..00ded9323
--- /dev/null
+++ b/contrib/ci/jobs/2-deb-package/job.sh
@@ -0,0 +1,22 @@
1#!/bin/bash
2set -exuo pipefail
3# This file is in the public domain.
4# Helper script to build the latest DEB packages in the container.
5
6
7unset LD_LIBRARY_PATH
8
9# Install build-time dependencies.
10# Update apt cache first
11apt-get update
12mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
13
14export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)"
15echo "Building gnunet packages version ${VERSION}"
16EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}"
17./bootstrap
18dpkg-buildpackage -rfakeroot -b -uc -us
19
20ls -alh ../*.deb
21mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment
22mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/
diff --git a/contrib/ci/jobs/2-deb-package/version.sh b/contrib/ci/jobs/2-deb-package/version.sh
new file mode 100755
index 000000000..b12ca77ba
--- /dev/null
+++ b/contrib/ci/jobs/2-deb-package/version.sh
@@ -0,0 +1,17 @@
1#!/bin/sh
2set -ex
3
4BRANCH=$(git name-rev --name-only HEAD)
5if [ -z "${BRANCH}" ]; then
6 exit 1
7else
8 # "Unshallow" our checkout, but only our current branch, and exclude the submodules.
9 git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}"
10 RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --exclude '*-*dev*' --always --abbrev=0 HEAD || exit 1)
11 commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)"
12 if [ "${commits}" = "0" ]; then
13 git describe --tag HEAD | sed -r 's/^v//' || exit 1
14 else
15 echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD)
16 fi
17fi
diff --git a/contrib/ci/jobs/3-deploy-package/config.ini b/contrib/ci/jobs/3-deploy-package/config.ini
new file mode 100644
index 000000000..08c106f9c
--- /dev/null
+++ b/contrib/ci/jobs/3-deploy-package/config.ini
@@ -0,0 +1,6 @@
1[build]
2HALT_ON_FAILURE = True
3WARN_ON_FAILURE = True
4CONTAINER_BUILD = False
5CONTAINER_NAME = nixery.dev/shell/rsync
6CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/3-deploy-package/job.sh b/contrib/ci/jobs/3-deploy-package/job.sh
new file mode 100755
index 000000000..d53588a0f
--- /dev/null
+++ b/contrib/ci/jobs/3-deploy-package/job.sh
@@ -0,0 +1,14 @@
1#!/bin/bash
2set -exuo pipefail
3
4ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb"
5
6RSYNC_HOST="taler.host.internal"
7RSYNC_PORT=424242
8RSYNC_PATH="incoming_packages/bookworm-taler-ci/"
9RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
10
11
12rsync -vP \
13 --port ${RSYNC_PORT} \
14 ${ARTIFACT_PATH} ${RSYNC_DEST}
diff --git a/contrib/ci/jobs/4-arm64-build/build.sh b/contrib/ci/jobs/4-arm64-build/build.sh
new file mode 100755
index 000000000..7da9d4a75
--- /dev/null
+++ b/contrib/ci/jobs/4-arm64-build/build.sh
@@ -0,0 +1,11 @@
1#!/bin/bash
2set -exuo pipefail
3
4make clean
5./bootstrap
6./configure CFLAGS="-ggdb -O0" \
7 --enable-logging=verbose \
8 --disable-doc
9
10make -j $(nproc)
11make install
diff --git a/contrib/ci/jobs/4-arm64-build/config.ini b/contrib/ci/jobs/4-arm64-build/config.ini
new file mode 100644
index 000000000..b5b4b5fe7
--- /dev/null
+++ b/contrib/ci/jobs/4-arm64-build/config.ini
@@ -0,0 +1,6 @@
1[build]
2HALT_ON_FAILURE = True
3WARN_ON_FAILURE = True
4CONTAINER_BUILD = True
5CONTAINER_NAME = gnunet:arm64
6CONTAINER_ARCH = arm64
diff --git a/contrib/ci/jobs/4-arm64-build/job.sh b/contrib/ci/jobs/4-arm64-build/job.sh
new file mode 100755
index 000000000..8d79902c5
--- /dev/null
+++ b/contrib/ci/jobs/4-arm64-build/job.sh
@@ -0,0 +1,6 @@
1#!/bin/bash
2set -exuo pipefail
3
4job_dir=$(dirname "${BASH_SOURCE[0]}")
5
6"${job_dir}"/build.sh
diff --git a/contrib/ci/jobs/5-arm64-deb-package/config.ini b/contrib/ci/jobs/5-arm64-deb-package/config.ini
new file mode 100644
index 000000000..b5b4b5fe7
--- /dev/null
+++ b/contrib/ci/jobs/5-arm64-deb-package/config.ini
@@ -0,0 +1,6 @@
1[build]
2HALT_ON_FAILURE = True
3WARN_ON_FAILURE = True
4CONTAINER_BUILD = True
5CONTAINER_NAME = gnunet:arm64
6CONTAINER_ARCH = arm64
diff --git a/contrib/ci/jobs/5-arm64-deb-package/job.sh b/contrib/ci/jobs/5-arm64-deb-package/job.sh
new file mode 100755
index 000000000..00ded9323
--- /dev/null
+++ b/contrib/ci/jobs/5-arm64-deb-package/job.sh
@@ -0,0 +1,22 @@
1#!/bin/bash
2set -exuo pipefail
3# This file is in the public domain.
4# Helper script to build the latest DEB packages in the container.
5
6
7unset LD_LIBRARY_PATH
8
9# Install build-time dependencies.
10# Update apt cache first
11apt-get update
12mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
13
14export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)"
15echo "Building gnunet packages version ${VERSION}"
16EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}"
17./bootstrap
18dpkg-buildpackage -rfakeroot -b -uc -us
19
20ls -alh ../*.deb
21mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment
22mv ../*.deb /artifacts/gnunet/${CI_COMMIT_REF}/
diff --git a/contrib/ci/jobs/5-arm64-deb-package/version.sh b/contrib/ci/jobs/5-arm64-deb-package/version.sh
new file mode 100755
index 000000000..b12ca77ba
--- /dev/null
+++ b/contrib/ci/jobs/5-arm64-deb-package/version.sh
@@ -0,0 +1,17 @@
1#!/bin/sh
2set -ex
3
4BRANCH=$(git name-rev --name-only HEAD)
5if [ -z "${BRANCH}" ]; then
6 exit 1
7else
8 # "Unshallow" our checkout, but only our current branch, and exclude the submodules.
9 git fetch --no-recurse-submodules --tags --depth=1000 origin "${BRANCH}"
10 RECENT_VERSION_TAG=$(git describe --tags --match 'v*.*.*' --exclude '*-*dev*' --always --abbrev=0 HEAD || exit 1)
11 commits="$(git rev-list ${RECENT_VERSION_TAG}..HEAD --count)"
12 if [ "${commits}" = "0" ]; then
13 git describe --tag HEAD | sed -r 's/^v//' || exit 1
14 else
15 echo $(echo ${RECENT_VERSION_TAG} | sed -r 's/^v//')-${commits}-$(git rev-parse --short=8 HEAD)
16 fi
17fi
diff --git a/contrib/ci/jobs/6-arm64-deploy-package/config.ini b/contrib/ci/jobs/6-arm64-deploy-package/config.ini
new file mode 100644
index 000000000..a8ad1c16d
--- /dev/null
+++ b/contrib/ci/jobs/6-arm64-deploy-package/config.ini
@@ -0,0 +1,6 @@
1[build]
2HALT_ON_FAILURE = True
3WARN_ON_FAILURE = True
4CONTAINER_BUILD = False
5CONTAINER_NAME = nixery.dev/shell/rsync
6CONTAINER_ARCH = arm64
diff --git a/contrib/ci/jobs/6-arm64-deploy-package/job.sh b/contrib/ci/jobs/6-arm64-deploy-package/job.sh
new file mode 100755
index 000000000..d53588a0f
--- /dev/null
+++ b/contrib/ci/jobs/6-arm64-deploy-package/job.sh
@@ -0,0 +1,14 @@
1#!/bin/bash
2set -exuo pipefail
3
4ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb"
5
6RSYNC_HOST="taler.host.internal"
7RSYNC_PORT=424242
8RSYNC_PATH="incoming_packages/bookworm-taler-ci/"
9RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
10
11
12rsync -vP \
13 --port ${RSYNC_PORT} \
14 ${ARTIFACT_PATH} ${RSYNC_DEST}
diff --git a/contrib/conf/commit-msg b/contrib/conf/commit-msg
new file mode 100755
index 000000000..e57333c00
--- /dev/null
+++ b/contrib/conf/commit-msg
@@ -0,0 +1,34 @@
1#!/bin/bash
2
3# use as .git/hooks/commit-msg
4
5COMMIT_MSG_FILE=$1
6
7exec 1>&2
8
9RET=0
10changed=$(git diff --cached --name-only)
11
12for f in $changed;
13do
14 # Only headers in include
15 if echo $f | grep \src\/include\/.\*\.h\$ > /dev/null
16 then
17 RET=1
18 # Check if it has a NEWS line
19 if cat $COMMIT_MSG_FILE | grep -i "^NEWS:\s[-,a-zA-Z][a-zA-Z]*" > /dev/null
20 then
21 RET=0
22 break
23 fi
24 fi
25done
26
27# If no NEWS line found, abort
28if [ $RET = 1 ];
29then
30 echo "Your commit includes staged changes that indicate an API change which requires a NEWS line."
31else
32 echo "Your commit does not include API changes"
33fi
34exit 0
diff --git a/contrib/conf/gnunet/meson.build b/contrib/conf/gnunet/meson.build
new file mode 100644
index 000000000..0419784fb
--- /dev/null
+++ b/contrib/conf/gnunet/meson.build
@@ -0,0 +1,6 @@
1configure_file(copy: true,
2 input: 'no_forcestart.conf',
3 output: 'no_forcestart.conf')
4configure_file(copy: true,
5 input: 'no_autostart_above_core.conf',
6 output: 'no_autostart_above_core.conf')
diff --git a/contrib/conf/gnunet/no_autostart_above_core.conf b/contrib/conf/gnunet/no_autostart_above_core.conf
index 478addd29..8ed4dcb60 100644
--- a/contrib/conf/gnunet/no_autostart_above_core.conf
+++ b/contrib/conf/gnunet/no_autostart_above_core.conf
@@ -74,9 +74,6 @@ START_ON_DEMAND = NO
74[social] 74[social]
75START_ON_DEMAND = NO 75START_ON_DEMAND = NO
76 76
77[psyc]
78START_ON_DEMAND = NO
79
80[rps] 77[rps]
81START_ON_DEMAND = NO 78START_ON_DEMAND = NO
82 79
@@ -89,8 +86,5 @@ START_ON_DEMAND = NO
89[sensor] 86[sensor]
90START_ON_DEMAND = NO 87START_ON_DEMAND = NO
91 88
92[zonemaster-monitor]
93START_ON_DEMAND = NO
94
95[zonemaster] 89[zonemaster]
96START_ON_DEMAND = NO 90START_ON_DEMAND = NO
diff --git a/contrib/conf/gnunet/no_forcestart.conf b/contrib/conf/gnunet/no_forcestart.conf
index 2c874489e..0c4a209be 100644
--- a/contrib/conf/gnunet/no_forcestart.conf
+++ b/contrib/conf/gnunet/no_forcestart.conf
@@ -40,12 +40,6 @@ IMMEDIATE_START = NO
40[zonemaster] 40[zonemaster]
41IMMEDIATE_START = NO 41IMMEDIATE_START = NO
42 42
43[zonemaster-monitor]
44IMMEDIATE_START = NO
45
46[psyc]
47IMMEDIATE_START = NO
48
49[rps] 43[rps]
50IMMEDIATE_START = NO 44IMMEDIATE_START = NO
51 45
diff --git a/contrib/conf/meson.build b/contrib/conf/meson.build
new file mode 100644
index 000000000..f0e4647df
--- /dev/null
+++ b/contrib/conf/meson.build
@@ -0,0 +1 @@
subdir('gnunet')
diff --git a/contrib/conf/prepare-commit-msg b/contrib/conf/prepare-commit-msg
new file mode 100755
index 000000000..a95f29430
--- /dev/null
+++ b/contrib/conf/prepare-commit-msg
@@ -0,0 +1,37 @@
1#!/bin/bash
2
3# use as .git/hooks/pre-commit
4
5COMMIT_MSG_FILE=$1
6COMMIT_SOURCE=$2
7SHA1=$3
8
9exec 1>&2
10
11RET=0
12changed=$(git diff --cached --name-only)
13
14for f in $changed;
15do
16 # Only headers in include
17 if echo $f | grep \src\/include\/.\*\.h\$ > /dev/null
18 then
19 RET=1
20 fi
21done
22
23# Only add custom message when there is no commit source
24# ($COMMIT_SOURCE is empty). Otherwise, keep the default message
25# proposed by Git. Possible commit source: message, template,
26# merge, squash or commit.
27if [ -z "$COMMIT_SOURCE" ];
28then
29 hint=$(cat "$COMMIT_MSG_FILE")
30 echo -e "# Our commit subject format policy is:\n# <subsystem>: <description>\n# Adding 'Issue #1234'/'Fixes #1234' into the description will automatically update/resolve issue #1234 in mantis." > "$COMMIT_MSG_FILE"
31 if [ $RET = 1 ];
32 then
33 echo -e "# Your commit includes staged changes that indicate an API change which requires a NEWS line." >> "$COMMIT_MSG_FILE"
34 fi
35 echo "$hint" >> "$COMMIT_MSG_FILE"
36fi
37exit 0
diff --git a/contrib/conf/uncrustify.cfg b/contrib/conf/uncrustify.cfg
index b02ebc4a5..af2d8e69c 100644
--- a/contrib/conf/uncrustify.cfg
+++ b/contrib/conf/uncrustify.cfg
@@ -4,7 +4,7 @@ output_tab_size = 2
4indent_columns = 2 4indent_columns = 2
5indent_with_tabs = 0 5indent_with_tabs = 0
6indent_case_brace = 2 6indent_case_brace = 2
7indent_label=0 7indent_label=-16
8 8
9code_width=80 9code_width=80
10#cmd_width=80 10#cmd_width=80
@@ -49,8 +49,12 @@ nl_assign_brace=remove
49 49
50# No extra newlines that cause noisy diffs 50# No extra newlines that cause noisy diffs
51nl_start_of_file=remove 51nl_start_of_file=remove
52nl_after_func_proto = 2
53nl_after_func_body = 3
52# If there's no new line, it's not a text file! 54# If there's no new line, it's not a text file!
53nl_end_of_file=add 55nl_end_of_file=add
56nl_max_blank_in_func = 3
57nl_max = 3
54 58
55sp_inside_paren = remove 59sp_inside_paren = remove
56 60
@@ -69,6 +73,7 @@ sp_between_ptr_star = remove
69sp_before_sparen = add 73sp_before_sparen = add
70 74
71sp_inside_fparen = remove 75sp_inside_fparen = remove
76sp_inside_sparen = remove
72 77
73# add space before function call and decl: "foo (x)" 78# add space before function call and decl: "foo (x)"
74sp_func_call_paren = add 79sp_func_call_paren = add
@@ -76,3 +81,15 @@ sp_func_proto_paren = add
76sp_func_proto_paren_empty = add 81sp_func_proto_paren_empty = add
77sp_func_def_paren = add 82sp_func_def_paren = add
78sp_func_def_paren_empty = add 83sp_func_def_paren_empty = add
84
85# We'd want it for "if ( (foo) || (bar) )", but not for "if (m())",
86# so as uncrustify doesn't give exactly what we want => ignore
87sp_paren_paren = ignore
88sp_inside_paren = remove
89sp_bool = force
90
91nl_func_type_name = force
92#nl_branch_else = add
93nl_else_brace = add
94nl_elseif_brace = add
95nl_for_brace = add
diff --git a/contrib/conf/uncrustify_precommit b/contrib/conf/uncrustify_precommit
index 3a06511d1..8e0a605b3 100755
--- a/contrib/conf/uncrustify_precommit
+++ b/contrib/conf/uncrustify_precommit
@@ -28,8 +28,11 @@ done
28 28
29if [ $RET = 1 ]; 29if [ $RET = 1 ];
30then 30then
31 echo "Run" 31 echo "================================================================"
32 echo "uncrustify --replace -c uncrustify.cfg ${crustified}" 32 echo " Your changes are ugly! "
33 echo "before committing." 33 echo " Uncrustify your code in your next commit. "
34 echo " See https://docs.gnunet.org/latest/developers/style.html#coding-style "
35 echo "================================================================"
34fi 36fi
35exit $RET 37# Do not fail
38exit 0
diff --git a/contrib/docker/.dockerignore b/contrib/docker/.dockerignore
new file mode 100644
index 000000000..c9c567673
--- /dev/null
+++ b/contrib/docker/.dockerignore
@@ -0,0 +1,2 @@
1Dockerfile
2
diff --git a/contrib/docker/Dockerfile b/contrib/docker/Dockerfile
index adcd7132c..de087df71 100644
--- a/contrib/docker/Dockerfile
+++ b/contrib/docker/Dockerfile
@@ -1,16 +1,39 @@
1FROM ubuntu:18.04 1# FROM ubuntu:20.04
2FROM debian:stable
2 3
3ENV DEBIAN_FRONTEND noninteractive 4ENV DEBIAN_FRONTEND noninteractive
4 5
5# Install tools and dependencies 6# Install tools and dependencies
6RUN apt-get update && \ 7RUN apt-get update && \
7 apt-get -y install --no-install-recommends \ 8 apt-get upgrade && \
9 apt-get -y install --no-install-recommends \
10 apt-utils
11
12# Install tools and dependencies
13RUN apt-get update && \
14 apt-get upgrade && \
15 apt-get -y install --no-install-recommends \
8 ca-certificates \ 16 ca-certificates \
17 iptables \
18 python3 \
19 python3-pip \
20 iproute2 \
21 net-tools \
9 libsasl2-modules \ 22 libsasl2-modules \
10 git \ 23 git \
11 automake \ 24 automake \
12 autopoint \ 25 autopoint \
13 autoconf \ 26 autoconf \
27 recutils \
28 make \
29 libssl-dev \
30 ninja-build \
31 meson \
32 curl \
33 libcurl4-gnutls-dev \
34 libsodium-dev \
35 libsodium23 \
36 libjansson-dev \
14 texinfo \ 37 texinfo \
15 libtool \ 38 libtool \
16 libltdl-dev \ 39 libltdl-dev \
@@ -25,74 +48,67 @@ RUN apt-get update && \
25 libgcrypt20-dev \ 48 libgcrypt20-dev \
26 libpq-dev \ 49 libpq-dev \
27 libsqlite3-dev \ 50 libsqlite3-dev \
28 wget && \ 51 wget
29 apt-get clean all && \ 52RUN apt-get clean all && \
30 apt-get -y autoremove && \ 53 apt-get -y autoremove && \
31 rm -rf \ 54 rm -rf \
32 /var/lib/apt/lists/* \ 55 /var/lib/apt/lists/* \
33 /tmp/* 56 /tmp/*
34 57
35# Install GNUrl 58# Install jose
36ENV GNURL_VERSION=7.57.0 59RUN wget -O /tmp/jose.tar.gz https://github.com/latchset/jose/archive/refs/tags/v11.tar.gz
37
38RUN wget -O /tmp/gnurl.tar.xz https://ftpmirror.gnu.org/gnu/gnunet/gnurl-${GNURL_VERSION}.tar.xz
39RUN cd /tmp && \ 60RUN cd /tmp && \
40 tar xvf gnurl.tar.xz && \ 61 tar xvf jose.tar.gz && \
41 cd gnurl-${GNURL_VERSION} && \ 62 cd jose-11 && \
42 autoreconf -i && \ 63 mkdir build && \
43 ./configure \ 64 cd build && \
44 --enable-ipv6 \ 65 meson .. --prefix=/usr/local/lib && \
45 --with-gnutls \ 66 ninja && \
46 --without-libssh2 \ 67 ninja install && \
47 --without-libmetalink \ 68 cd / && \
48 --without-winidn \ 69 rm -rf /tmp/jose-11/*
49 --without-librtmp \ 70
50 --without-nghttp2 \ 71# Intall Python Packages for Documentation
51 --without-nss \ 72RUN pip3 install \
52 --without-cyassl \ 73 docutils==0.17.1 \
53 --without-polarssl \ 74 sphinx \
54 --without-ssl \ 75 sphinx-rtd-theme
55 --without-winssl \ 76
56 --without-darwinssl \ 77COPY . /tmp/gnunet
57 --disable-sspi \ 78
58 --disable-ntlm-wb \ 79# ENV VERSION=0.18.1
59 --disable-ldap \ 80# ENV HASH=719fc54734ee54c36ff619a6aa2d659655db012c40f9210c0859459c435fce1a
60 --disable-rtsp \ 81# RUN wget "ftpmirror.gnu.org/gnunet/gnunet-$VERSION.tar.gz" -P /tmp
61 --disable-dict \ 82
62 --disable-telnet \ 83# Check the gnunet download integrity
63 --disable-tftp \ 84# RUN echo "$HASH /tmp/gnunet-$VERSION.tar.gz" | sha256sum --check --status
64 --disable-pop3 \
65 --disable-imap \
66 --disable-smtp \
67 --disable-gopher \
68 --disable-file \
69 --disable-ftp \
70 --disable-smb && \
71 make install && \
72 cd - && \
73 rm -rf /tmp/gnurl*
74 85
75# Install GNUnet 86# Extract gnunet
76ENV GNUNET_PREFIX /usr/local/gnunet 87# RUN mkdir /tmp/gnunet && tar xf "/tmp/gnunet-$VERSION.tar.gz" -C /tmp/gnunet --strip-components=1
77ENV CFLAGS '-g -Wall -O0'
78 88
79COPY . /gnunet 89# Install gnunet
90# ENV GNUNET_PREFIX=/usr/local/lib
91# ENV CFLAGS '-g -Wall -O0'
92#
93# RUN cd /tmp/gnunet && \
94# ./configure \
95# --prefix="$GNUNET_PREFIX/.." \
96# --enable-logging=verbose && \
97# make -j && \
98# make install && \
99# ldconfig
80 100
81RUN cd /gnunet && \ 101RUN cd /tmp/gnunet && \
82 ./bootstrap && \ 102 ./bootstrap && \
83 ./configure \ 103 ./configure \
84 --with-nssdir=/lib \ 104 --prefix="$GNUNET_PREFIX/.." \
85 --prefix="$GNUNET_PREFIX" \
86 --enable-logging=verbose && \ 105 --enable-logging=verbose && \
87 make -j3 && \ 106 make -j && \
88 make install && \ 107 make install && \
89 ldconfig && \ 108 ldconfig
90 cd - && \
91 rm -fr /gnunet
92 109
93# Configure GNUnet 110# Configure GNUnet
94COPY ./contrib/docker/gnunet.conf /etc/gnunet.conf 111RUN cp /tmp/gnunet/contrib/docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
95COPY ./contrib/docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
96RUN chmod 755 /usr/local/bin/docker-entrypoint 112RUN chmod 755 /usr/local/bin/docker-entrypoint
97 113
98ENV LOCAL_PORT_RANGE='40001 40200' 114ENV LOCAL_PORT_RANGE='40001 40200'
diff --git a/contrib/docker/README.md b/contrib/docker/README.md
index ce05012fc..66ba45d26 100644
--- a/contrib/docker/README.md
+++ b/contrib/docker/README.md
@@ -10,13 +10,14 @@ This will take quite a while and will consume a bit of data.
10First you need to go to the root of this repo. 10First you need to go to the root of this repo.
11 11
12```bash 12```bash
13cd .. 13cd ../..
14``` 14```
15 15
16Now you can build the image. 16Now you can build the image.
17 17
18```bash 18```bash
19docker build -t gnunet . 19make clean
20docker build -f contrib/docker/Dockerfile -t gnunet .
20``` 21```
21 22
22## Start it from the newly created gnunet image 23## Start it from the newly created gnunet image
diff --git a/contrib/docker/docker-entrypoint.sh b/contrib/docker/docker-entrypoint.sh
index 7f98ef68b..7613c6b65 100644
--- a/contrib/docker/docker-entrypoint.sh
+++ b/contrib/docker/docker-entrypoint.sh
@@ -1,15 +1,5 @@
1#!/bin/bash -e 1#!/bin/bash -e
2 2
3echo "${LOCAL_PORT_RANGE:-49152 65535}" > /proc/sys/net/ipv4/ip_local_port_range 3exec gnunet-arm \
4sed -i 's/$GNUNET_PORT/'${GNUNET_PORT:-2086}'/g' /etc/gnunet.conf 4 --start \
5 5 --monitor
6if [[ $# -eq 0 ]]; then
7 exec gnunet-arm \
8 --config=/etc/gnunet.conf \
9 --start \
10 --monitor
11elif [[ -z $1 ]] || [[ ${1:0:1} == '-' ]]; then
12 exec gnunet-arm "$@"
13else
14 exec "$@"
15fi
diff --git a/contrib/docker/gnunet.conf b/contrib/docker/gnunet.conf
deleted file mode 100644
index c8299ef46..000000000
--- a/contrib/docker/gnunet.conf
+++ /dev/null
@@ -1,21 +0,0 @@
1[arm]
2SYSTEM_ONLY = NO
3USER_ONLY = NO
4
5[fs]
6FORCESTART = NO
7
8[nat]
9ENABLE_UPNP = NO
10BEHIND_NAT = YES
11
12[transport-tcp]
13PORT = $GNUNET_PORT
14ADVERTISED_PORT = $GNUNET_PORT
15
16[transport-udp]
17PORT = $GNUNET_PORT
18BROADCAST = YES
19
20[cadet]
21TESTING_IGNORE_KEYS = ACCEPT_FROM;
diff --git a/contrib/fcfsd/fcfsd-forbidden.html b/contrib/fcfsd/fcfsd-forbidden.html
deleted file mode 100644
index 57ebb4c61..000000000
--- a/contrib/fcfsd/fcfsd-forbidden.html
+++ /dev/null
@@ -1,11 +0,0 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Forbidden - GNUnet FCFS Authority Name Registration Service</title>
7 </head>
8 <body>
9 <h1>You can not access this resource.</h1>
10 </body>
11</html>
diff --git a/contrib/fcfsd/fcfsd-index.html b/contrib/fcfsd/fcfsd-index.html
deleted file mode 100644
index 3fa71d7c8..000000000
--- a/contrib/fcfsd/fcfsd-index.html
+++ /dev/null
@@ -1,345 +0,0 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>GNUnet FCFS Authority Name Registration Service</title>
7 <style>
8 html {
9 box-sizing: border-box;
10 font-family: sans-serif;
11 }
12
13 *, *:before, *:after {
14 box-sizing: inherit;
15 }
16
17 header {
18 width: 800px;
19 margin: 0 auto;
20 }
21
22 main {
23 width: 800px;
24 margin: 0 auto;
25 }
26
27 section h4 {
28 text-align: center;
29 width: 100%;
30 }
31
32 section input {
33 width: 100%;
34 padding: 8px 17px;
35 font-size: 1rem;
36 border: 1px solid #aaa;
37 border-radius: 7px;
38 background-color: white;
39 margin-bottom: 7px;
40 }
41
42 section input:focus {
43 box-shadow: 0px 0px 5px 3px lightblue;
44 }
45
46 section button {
47 font-size: 1rem;
48 font-weight: bold;
49 background-color: #8b008b;
50 color: white;
51 border: none;
52 padding: 7px;
53 }
54
55 section button:hover {
56 background-color: #bf00bf;
57 }
58
59 section button:disabled {
60 background-color: gray;
61 }
62
63 section h3 {
64 text-align: center;
65 width: 100%;
66 }
67
68 section small {
69 display: block;
70 margin-bottom: 5px;
71 }
72
73 .error-message {
74 color: red;
75 }
76
77 .success-message {
78 color: green;
79 }
80
81 @media screen and (max-width: 991px) {
82 header, main {
83 width: 100%;
84 }
85 }
86
87 footer {
88 margin-top: 30px;
89 text-align: center;
90 }
91
92 nav {
93 border-bottom: 1px solid black;
94 }
95
96 nav button {
97 font-size: 1rem;
98 font-weight: bold;
99 background-color: #ccc;
100 border: 1px solid black;
101 border-bottom: none;
102 border-top-right-radius: 7px;
103 border-top-left-radius: 7px;
104 padding: 7px;
105 }
106
107 nav button:hover {
108 background-color: #f0f0f0;
109 cursor: pointer;
110 }
111
112 nav button.selected {
113 background-color: #f0f0f0;
114 }
115 </style>
116 </head>
117 <body>
118 <header>
119 <h1>Name Registration Service</h1>
120 <p>Here you can register a name for your zone as part of this service's
121 delegated names.</p>
122 <p>The registration is based on a <em>First Come First Served</em>
123 policy, meaning a name is given to the first user requesting it.</p>
124 <p>Use the search bar below to see if your desired name is available and
125 then use the form to submit your registration request.</p>
126 </header>
127 <main>
128 <div class="form-container">
129 <nav>
130 <button id="tab-search">Search</button>
131 <button id="tab-register">Register</button>
132 </nav>
133 <section id="search-form">
134 <h4>Is your name available?</h4>
135 <h3 id="search-result-message"></h3>
136 <input id="search-name"
137 name="search-name"
138 type="text"
139 placeholder="Your name..."
140 autocomplete="name"
141 maxlength="63"
142 minlength="1">
143 <small class="error-message" id="search-name-error"></small>
144 <button>Search</button>
145 </section>
146 <section id="submit-form">
147 <h4>Submit a registration request</h4>
148 <h3 id="submit-result-message"></h3>
149 <input id="register-name"
150 name="register-name"
151 type="text"
152 placeholder="Your name..."
153 autocomplete="off"
154 maxlength="63"
155 minlength="1">
156 <input id="register-value"
157 name="register-value"
158 type="text"
159 placeholder="Your zone key..."
160 autocomplete="off"
161 minlength="1">
162 <small class="error-message" id="submit-error"></small>
163 <button>Submit</button>
164 </section>
165 </div>
166 </main>
167 <footer>
168 <a href="https://gnunet.org">GNUnet homepage</a>
169 </footer>
170 <script>
171 const buttons = document.querySelectorAll('nav button');
172 for (let i=0; i<buttons.length; ++i) {
173 buttons[i].onclick = function (e) {
174 let selected = document.querySelector('nav button.selected');
175 if (selected) {
176 selected.classList.toggle('selected');
177 }
178 e.target.classList.toggle('selected');
179
180 let show = '';
181 let hide = '';
182 if (e.target.id === 'tab-search') {
183 show = 'search-form';
184 hide = 'submit-form';
185 } else {
186 show = 'submit-form';
187 hide = 'search-form'
188 }
189
190 document.getElementById(hide).style.display = 'none';
191 document.getElementById(show).style.display = 'block';
192 };
193 }
194
195 buttons[0].click({target: buttons[0]});
196
197 const searchbutton = document.querySelector('#search-form button');
198 const submitbutton = document.querySelector('#submit-form button');
199
200 document.getElementById('search-name').onkeydown = function (e) {
201 if (e.key !== 'Enter') {
202 return;
203 }
204
205 searchbutton.click();
206 };
207
208 for (let n of ['register-name', 'register-value']) {
209 document.getElementById(n).onkeydown = function (e) {
210 if (e.key !== 'Enter') {
211 return;
212 }
213
214 submitbutton.click();
215 };
216 }
217
218 searchbutton.onclick = function (e) {
219 const searchname = document.getElementById('search-name');
220 const errormsg = document.getElementById('search-name-error');
221 const resultmsg = document.getElementById('search-result-message');
222
223 if (0 === searchname.value.length) {
224 errormsg.innerText = 'The field can not be empty';
225 searchname.setCustomValidity('The field can not be empty');
226 return;
227 }
228
229 if (-1 !== searchname.value.indexOf('.')) {
230 errormsg.innerText = 'The name can not contain dots';
231 searchname.setCustomValidity('The name can not contain dots');
232 return;
233 }
234
235 searchname.setCustomValidity('');
236 errormsg.innerText = '';
237
238 const name = searchname.value.toLowerCase();
239
240 searchbutton.disabled = true;
241 submitbutton.disabled = true;
242
243 fetch(`/search?name=${name}`)
244 .then(function (response) {
245 if (!response.ok) {
246 throw 'error';
247 }
248
249 return response.json()
250 })
251 .then(function (data) {
252 if ("true" === data.free) {
253 resultmsg.innerText = `'${name}' is available!`;
254 resultmsg.classList.add('success-message');
255 resultmsg.classList.remove('error-message');
256 } else {
257 resultmsg.innerText = `'${name}' is not available`;
258 resultmsg.classList.remove('success-message');
259 resultmsg.classList.add('error-message');
260 }
261 searchbutton.disabled = false;
262 submitbutton.disabled = false;
263 })
264 .catch(function (error) {
265 resultmsg.innerText = 'An error occurred while processing your query';
266 resultmsg.classList.remove('success-message');
267 resultmsg.classList.add('error-message');
268 console.error(error);
269 searchbutton.disabled = false;
270 submitbutton.disabled = false;
271 });
272 };
273
274 submitbutton.onclick = function (e) {
275 const registername = document.getElementById('register-name');
276 const registervalue = document.getElementById('register-value');
277 const errormsg = document.getElementById('submit-error');
278 const resultmsg = document.getElementById('submit-result-message');
279
280 let errors = 0;
281 let errs = [];
282
283 if (0 === registername.value.length) {
284 errs.push('The name field can not be empty');
285 registername.setCustomValidity('The name field can not be empty');
286 ++errors;
287 }
288 if (-1 !== registername.value.indexOf('.')) {
289 errs.push('The name can not contain dots');
290 registername.setCustomValidity('The name can not contain dots');
291 ++errors;
292 }
293 if (0 === registervalue.value.length) {
294 errs.push('The value field can not be empty');
295 registervalue.setCustomValidity('The value field can not be empty');
296 ++errors;
297 }
298
299 if (0 < errors) {
300 errormsg.innerHTML = 'The form contains invalid values:';
301 for (let e of errs) {
302 errormsg.innerHTML += '<br/>' + e;
303 }
304 return;
305 }
306
307 searchbutton.disabled = true;
308 submitbutton.disabled = true;
309
310 fetch('/register', {
311 method: 'POST',
312 cache: 'no-cache',
313 headers: {
314 'Content-Type': 'application/json',
315 },
316 body: JSON.stringify({
317 name: registername.value,
318 key: registervalue.value,
319 }),
320 }).then(function (response) {
321 return response.json();
322 }).then(function (data) {
323 if (data.error === "false") {
324 resultmsg.innerText = `'${registername.value}' was registered successfully!`;
325 resultmsg.classList.add('success-message');
326 resultmsg.classList.remove('error-message');
327 } else {
328 resultmsg.innerText = `'${registername.value}' could not be registered! (${data.message})`;
329 resultmsg.classList.remove('success-message');
330 resultmsg.classList.add('error-message');
331 }
332 searchbutton.disabled = false;
333 submitbutton.disabled = false;
334 }).catch(function (error) {
335 resultmsg.innerText = 'An error occurred while processing your query';
336 resultmsg.classList.remove('success-message');
337 resultmsg.classList.add('error-message');
338 console.error(error);
339 searchbutton.disabled = false;
340 submitbutton.disabled = false;
341 });
342 };
343 </script>
344 </body>
345</html>
diff --git a/contrib/fcfsd/fcfsd-notfound.html b/contrib/fcfsd/fcfsd-notfound.html
deleted file mode 100644
index 676bf4a9a..000000000
--- a/contrib/fcfsd/fcfsd-notfound.html
+++ /dev/null
@@ -1,11 +0,0 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Not Found - GNUnet FCFS Authority Name Registration Service</title>
7 </head>
8 <body>
9 <h1>The requested resource could not be found</h1>
10 </body>
11</html>
diff --git a/contrib/gana b/contrib/gana
Subproject 4f0bb75a02237ce6c8e914f1f134e2dc9ffdb9e Subproject 53d0992890e1ebb8f8c6bd747533abe157baec6
diff --git a/contrib/get_version.sh b/contrib/get_version.sh
deleted file mode 100755
index 2a41ed4d6..000000000
--- a/contrib/get_version.sh
+++ /dev/null
@@ -1,18 +0,0 @@
1#!/bin/sh
2# Gets the version number from git, or from the contents of .version
3VERSION=
4if test -f ".version"
5then
6 VERSION=$(cat .version)
7fi
8if test -d "./.git"
9then
10 VERSION=$(git describe --tags)
11 VERSION=${VERSION#v}
12 echo $VERSION > .version
13fi
14if test "x$VERSION" = "x"
15then
16 VERSION="unknown"
17fi
18echo "$VERSION"
diff --git a/contrib/gns/def.tex b/contrib/gns/def.tex
deleted file mode 100644
index 51649c149..000000000
--- a/contrib/gns/def.tex
+++ /dev/null
@@ -1,15 +0,0 @@
1\def\prefix{}
2\def\name{Sree Harsha Totakura}
3\def\suffix{M.Sc.}
4\def\phone{+49-89-289-18011}
5\def\fax{+49-89-289-18033}
6\def\email{sreeharsha@totakura.in}
7\def\homepage{http://sreeharsha.totakura.in/}
8\def\org{Technische Universit\"at M\"unchen}
9\def\department{Department of Computer Science}
10\def\subdepartment{Network Architectures and Services}
11\def\jobtitle{Free Secure Network Systems Group}
12\def\gpglineone{8E68 1D8A 25AB B102 AFB5}
13\def\gpglinetwo{4B40 3B6F 8AF1 43C2 1F3B}
14\def\gns{LOC36VTJD3IRULMM6C20TGE6D3SVEAJOHI9KRI5KAQVQ87UJGPJG/totakura}
15
diff --git a/contrib/gns/gns-bcd-forbidden.html b/contrib/gns/gns-bcd-forbidden.html
deleted file mode 100644
index 59cdf3b04..000000000
--- a/contrib/gns/gns-bcd-forbidden.html
+++ /dev/null
@@ -1,72 +0,0 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Error</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 /* "Component" values */
34 .gns-container {
35 max-width: 100%;
36 margin-left: auto;
37 margin-right: auto;
38 }
39 @media (min-width: 576px) {
40 .gns-container {
41 max-width: 540px;
42 }
43 }
44 @media (min-width: 768px) {
45 .gns-container {
46 max-width: 720px;
47 }
48 }
49 @media (min-width: 992px) {
50 .gns-container {
51 max-width: 960px;
52 }
53 }
54 @media (min-width: 1200px) {
55 .gns-container {
56 max-width: 1140px;
57 }
58 }
59 @media (min-width: 1400px) {
60 .gns-container {
61 max-width: 1320px;
62 }
63 }
64 </style>
65 </head>
66 <body>
67 <div class="gns-container">
68 <h1>Forbidden</h1>
69 <p>You do not have the rights to access this resource.</p>
70 </div>
71 </body>
72</html>
diff --git a/contrib/gns/gns-bcd-internal-error.html b/contrib/gns/gns-bcd-internal-error.html
deleted file mode 100644
index 460d41213..000000000
--- a/contrib/gns/gns-bcd-internal-error.html
+++ /dev/null
@@ -1,72 +0,0 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Error</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 /* "Component" values */
34 .gns-container {
35 max-width: 100%;
36 margin-left: auto;
37 margin-right: auto;
38 }
39 @media (min-width: 576px) {
40 .gns-container {
41 max-width: 540px;
42 }
43 }
44 @media (min-width: 768px) {
45 .gns-container {
46 max-width: 720px;
47 }
48 }
49 @media (min-width: 992px) {
50 .gns-container {
51 max-width: 960px;
52 }
53 }
54 @media (min-width: 1200px) {
55 .gns-container {
56 max-width: 1140px;
57 }
58 }
59 @media (min-width: 1400px) {
60 .gns-container {
61 max-width: 1320px;
62 }
63 }
64 </style>
65 </head>
66 <body>
67 <div class="gns-container">
68 <h1>Internal Server Error</h1>
69 <p>The server could not process your request.</p>
70 </div>
71 </body>
72</html>
diff --git a/contrib/gns/gns-bcd-invalid-key.html b/contrib/gns/gns-bcd-invalid-key.html
deleted file mode 100644
index 25c8ba092..000000000
--- a/contrib/gns/gns-bcd-invalid-key.html
+++ /dev/null
@@ -1,72 +0,0 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Error</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 /* "Component" values */
34 .gns-container {
35 max-width: 100%;
36 margin-left: auto;
37 margin-right: auto;
38 }
39 @media (min-width: 576px) {
40 .gns-container {
41 max-width: 540px;
42 }
43 }
44 @media (min-width: 768px) {
45 .gns-container {
46 max-width: 720px;
47 }
48 }
49 @media (min-width: 992px) {
50 .gns-container {
51 max-width: 960px;
52 }
53 }
54 @media (min-width: 1200px) {
55 .gns-container {
56 max-width: 1140px;
57 }
58 }
59 @media (min-width: 1400px) {
60 .gns-container {
61 max-width: 1320px;
62 }
63 }
64 </style>
65 </head>
66 <body>
67 <div class="gns-container">
68 <h1>Invalid key</h1>
69 <p>The given GNS public key is not valid.</p>
70 </div>
71 </body>
72</html>
diff --git a/contrib/gns/gns-bcd-not-found.html b/contrib/gns/gns-bcd-not-found.html
deleted file mode 100644
index 999d6f604..000000000
--- a/contrib/gns/gns-bcd-not-found.html
+++ /dev/null
@@ -1,72 +0,0 @@
1<!DOCTYPE html>
2<html>
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Error</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 /* "Component" values */
34 .gns-container {
35 max-width: 100%;
36 margin-left: auto;
37 margin-right: auto;
38 }
39 @media (min-width: 576px) {
40 .gns-container {
41 max-width: 540px;
42 }
43 }
44 @media (min-width: 768px) {
45 .gns-container {
46 max-width: 720px;
47 }
48 }
49 @media (min-width: 992px) {
50 .gns-container {
51 max-width: 960px;
52 }
53 }
54 @media (min-width: 1200px) {
55 .gns-container {
56 max-width: 1140px;
57 }
58 }
59 @media (min-width: 1400px) {
60 .gns-container {
61 max-width: 1320px;
62 }
63 }
64 </style>
65 </head>
66 <body>
67 <div class="gns-container">
68 <h1>Not Found</h1>
69 <p>The requested resource could not be found.</p>
70 </div>
71 </body>
72</html>
diff --git a/contrib/gns/gns-bcd-png.tex b/contrib/gns/gns-bcd-png.tex
deleted file mode 100644
index 4bf98e136..000000000
--- a/contrib/gns/gns-bcd-png.tex
+++ /dev/null
@@ -1,10 +0,0 @@
1\documentclass[convert={ghostscript}]{standalone}
2\usepackage[utf8]{inputenc}
3\usepackage[T1]{fontenc}
4\usepackage{qrcode}
5
6\input{def.tex}
7
8\begin{document}
9\qrcode[height=13cm,level=Q]{gnunet://gns/\gns}
10\end{document}
diff --git a/contrib/gns/gns-bcd-simple.html b/contrib/gns/gns-bcd-simple.html
deleted file mode 100644
index 11b99e2b1..000000000
--- a/contrib/gns/gns-bcd-simple.html
+++ /dev/null
@@ -1,177 +0,0 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Create your GNU Name System Business Card</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 fieldset{
34 margin: 0px;
35 padding: 0px;
36 border: 0px;
37 min-width: 0px;
38 }
39 label {
40 display: inline-block;
41 }
42 input {
43 margin: 0px;
44 font-family: inherit;
45 font-size: inherit;
46 line-height: inherit;
47 }
48 /* "Component" values */
49 .gns-container {
50 max-width: 100%;
51 margin-left: auto;
52 margin-right: auto;
53 }
54 .gns-header {
55 padding-top: 1rem;
56 padding-bottom: 0.25rem;
57 }
58 .gns-form-group {
59 margin-bottom: 1.5rem;
60 }
61 .gns-field:not(:last-child) {
62 margin-bottom: 1rem;
63 }
64 .gns-label {
65 margin-bottom: 0.25rem;
66 }
67 .gns-text-input {
68 display: block;
69 width: 100%;
70 padding: 0.375rem 0.75rem;
71 color: #212121;
72 background-color: #ffffff;
73 border: 1px solid #ced4da;
74 border-radius: 0.20rem;
75 }
76 .gns-text-input:focus {
77 box-shadow: 0px 0px 9px rgba(102, 175, 233, 0.5);
78 border: 1px solid rgb(102, 175, 233);
79 }
80 .gns-check-input {
81 width: 1rem;
82 height: 1rem;
83 margin-top: 0.25rem;
84 margin-right: 0.25rem;
85 }
86 .gns-button {
87 display: inline-block;
88 text-align: center;
89 text-decoraton: none;
90 vertical-align: middle;
91 cursor: pointer;
92 border: 1px solid transparent;
93 padding: 0.375rem 0.75rem;
94 border-radius: 0.20rem;
95 }
96 .gns-button:focus {
97 box-shadow: 0px 0px 9px rgba(200, 200, 200, 0.75);
98 border: 1px solid rgb(98, 98, 98);
99 }
100 @media (min-width: 576px) {
101 .gns-container {
102 max-width: 540px;
103 }
104 }
105 @media (min-width: 768px) {
106 .gns-container {
107 max-width: 720px;
108 }
109 }
110 @media (min-width: 992px) {
111 .gns-container {
112 max-width: 960px;
113 }
114 }
115 @media (min-width: 1200px) {
116 .gns-container {
117 max-width: 1140px;
118 }
119 }
120 @media (min-width: 1400px) {
121 .gns-container {
122 max-width: 1320px;
123 }
124 }
125 </style>
126 </head>
127 <body>
128 <div class="gns-container">
129 <div class="gns-header">
130 <h1>GNU Name System Business Card</h1>
131 <p>Please fill in the information below to generate your business
132 card.</p>
133 <p>Want a more detailed card? Use the <a href="/full">full
134 form</a>.</p>
135 </div>
136 <form name="gnsinput" action="/submit/simple" method="get">
137 <fieldset class="gns-form-group">
138 <div class="gns-field">
139 <label class="gns-label" for="name">Full Name:</label>
140 <input class="gns-text-input" name="name" type="text" required>
141 </div>
142 <div class="gns-field">
143 <label class="gns-label" for="email">E-mail:</label>
144 <input class="gns-text-input" name="email" type="email" required>
145 </div>
146 <div class="gns-field">
147 <label class="gns-label" for="homepage">Homepage:</label>
148 <input class="gns-text-input" name="homepage" type="text" required>
149 </div>
150 </fieldset>
151 <fieldset class="gns-form-group">
152 <div class="gns-field">
153 <label class="gns-label" for="gnskey">GNS Public Key</label>
154 <input class="gns-text-input" name="gnskey" type="text" required>
155 </div>
156 <div class="gns-field">
157 <label class="gns-label" for="gnsnick">GNS Nickname:</label>
158 <input class="gns-text-input" name="gnsnick" type="text" required>
159 </div>
160 </fieldset>
161 <fieldset class="gns-form-group">
162 <div class="gns-field">
163 <input class="gns-check-input" name="gnspng" id="gnspng" type="checkbox" value="true">
164 <label class="gns-label" for="gnspng">Generate only QR Code (as PNG)</label>
165 </div>
166 </fieldset>
167 <fieldset class="gns-form-group">
168 <div class="gns-field">
169 <input class="gns-button"
170 type="submit"
171 value="Generate Business Card">
172 </div>
173 </fieldset>
174 </form>
175 </div>
176 </body>
177</html>
diff --git a/contrib/gns/gns-bcd-simple.tex b/contrib/gns/gns-bcd-simple.tex
deleted file mode 100644
index 453fd6c47..000000000
--- a/contrib/gns/gns-bcd-simple.tex
+++ /dev/null
@@ -1,160 +0,0 @@
1\documentclass[a4paper,oneside]{scrartcl}
2\usepackage[utf8]{inputenc}
3\usepackage[T1]{fontenc}
4\usepackage{tikz}
5\usepackage{ifthen}
6\usepackage{qrcode}
7\usepackage[newdimens]{labels}
8
9\LabelCols=2
10\LabelRows=5
11\LeftPageMargin=17.0mm
12\RightPageMargin=17.0mm
13\TopPageMargin=10.0mm
14\BottomPageMargin=10.0mm
15\InterLabelColumn=3.5mm
16\InterLabelRow=3.0mm
17\numberoflabels=10
18\LabelGridtrue
19
20\renewcommand{\rmdefault}{phv}
21\renewcommand{\seriesdefault}{m}
22\renewcommand{\shapedefault}{n}
23
24\input{def.tex}
25
26\setlength\parindent{0pt}
27
28\newcommand{\logo}{
29 \begin{tikzpicture}
30 [every node/.style={circle,fill=black!73,inner sep=0pt,minimum size=2.2mm},
31 every edge/.style={draw,semithick},
32 x=1pt,y=1pt]
33 \node (p1) at (21.57,-219.43) {};
34 \node (p2) at (41.44,-168.86) {}
35 edge (p1);
36 \node (p3) at (54.16,-130.86) {}
37 edge (p2);
38 \node (p4) at (-21.62,-219.43) {}
39 edge (p1);
40 \node (p5) at (10.41,-158.90) {}
41 edge (p2);
42 \node (p6) at (-22.20,-173.21) {}
43 edge (p4);
44 \node (p9) at (-147.32,-37.53) {};
45 \node (p10) at (-97.30,-18.50) {}
46 edge (p9);
47 \node (p11) at (74.95,-89.64) {}
48 edge (p3);
49 \node (p12) at (-0.20,-182.48) {}
50 edge (p1)
51 edge (p4)
52 edge (p5)
53 edge (p6)
54 edge (p3);
55 \node (p13) at (18.79,-190.31) {}
56 edge (p2)
57 edge (p1)
58 edge (p5)
59 edge (p4);
60 \node (p14) at (-46.77,-141.82) {}
61 edge (p6)
62 edge (p4);
63 \node (p15) at (-14.08,-141.91) {}
64 edge (p5)
65 edge (p6)
66 edge (p12);
67 \node (p16) at (-96.66,-90.02) {};
68 \node (p17) at (-71.34,-90.78) {}
69 edge (p16)
70 edge (p14);
71 \node (p18) at (-25.92,-109.84) {}
72 edge (p15)
73 edge (p17)
74 edge (p14);
75 \node (p19) at (-46.78,-94.06) {}
76 edge (p18)
77 edge (p17)
78 edge (p14)
79 edge (p15);
80 \node (p20) at (51.95,-67.01) {}
81 edge (p3)
82 edge (p11);
83 \node (p21) at (29.21,-103.63) {}
84 edge (p11)
85 edge (p20)
86 edge (p3)
87 edge (p5)
88 edge (p2);
89 \node (p22) at (-116.84,-55.89) {}
90 edge (p10)
91 edge (p9);
92 \node (p23) at (-61.14,-62.16) {}
93 edge (p18)
94 edge (p19)
95 edge (p17)
96 edge (p16);
97 \node (p24) at (107.08,-62.78) {}
98 edge (p20)
99 edge (p11);
100 \node (p25) at (131.66,-76.41) {}
101 edge (p24)
102 edge (p11)
103 edge (p20);
104 \node (p26) at (29.59,-139.18) {}
105 edge (p3)
106 edge (p21)
107 edge (p2)
108 edge (p5);
109 \node (p28) at (-137.12,-66.58) {}
110 edge (p22)
111 edge (p9)
112 edge (p10)
113 edge (p16);
114 \node (p29) at (-84.94,-72.38) {}
115 edge (p23)
116 edge (p22)
117 edge (p16)
118 edge (p28);
119 \node (p30) at (145.17,-37.49) {}
120 edge (p25)
121 edge (p24);
122 \node (p31) at (102.20,-18.50) {}
123 edge (p30)
124 edge (p25);
125 \end{tikzpicture}
126}
127
128\newcommand{\card}{
129 \begin{tikzpicture}
130 [every node/.style={rectangle,fill=white,minimum height=7pt,inner sep=0pt},
131 medium text/.style={text width=37.5mm},
132 slight text/.style={text width=30mm},
133 important text/.style={text width=41mm},
134 font=\tiny]
135 \begin{scope}[xshift=10mm]
136 \node[important text] (prefix) at (0, 4mm) {
137 \ifthenelse{\equal{\prefix}{}}{}{\tiny \prefix}
138 };
139 \node[important text] (name) at (0,0mm) {
140 \fontsize{9pt}{9pt}\selectfont
141 \textbf{\name}\ifthenelse{\equal{\suffix}{}}{}{, \tiny \suffix}
142 };
143 \node[important text] (jobtitle) at (0, -4mm) {\jobtitle};
144 \end{scope}
145 \begin{scope}[xshift=8.5mm,yshift=-1.23mm]
146 \node[medium text] (mail) at (0, -10mm) {\email};
147 \node[medium text] (homepage) at (0, -13.25mm) {\homepage};
148 \end{scope}
149 \begin{scope}[xshift=53.5mm]
150 \node (qrcode) at (0,-9mm) {
151 \qrcode[height=24.2mm,level=Q]{gnunet://gns/\gns}
152 };
153 \node[scale=0.16] (logo) at (0,13mm) {\logo};
154 \end{scope}
155 \end{tikzpicture}
156}
157
158\begin{document}
159\addresslabel{\card}
160\end{document}
diff --git a/contrib/gns/gns-bcd.html b/contrib/gns/gns-bcd.html
deleted file mode 100644
index 2046d159f..000000000
--- a/contrib/gns/gns-bcd.html
+++ /dev/null
@@ -1,205 +0,0 @@
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8"/>
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>Create your GNU Name System Business Card</title>
7 <style>
8 /* "Reset" values */
9 html {
10 box-sizing: border-box;
11 }
12 *, *:before, *:after {
13 box-sizing: inherit;
14 }
15 body {
16 font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
17 font-size: 1rem;
18 font-weight: 400;
19 line-height: 1.5;
20 background-color: #ffffff;
21 color: #212121;
22 margin: 0;
23 }
24 h1, h2, h3, h4, h5 {
25 margin-top: 0px;
26 margin-bottom: 0.5rem;
27 font-weight: 500;
28 }
29 p {
30 margin-top: 0px;
31 margin-bottom: 1rem;
32 }
33 fieldset{
34 margin: 0px;
35 padding: 0px;
36 border: 0px;
37 min-width: 0px;
38 }
39 label {
40 display: inline-block;
41 }
42 input {
43 margin: 0px;
44 font-family: inherit;
45 font-size: inherit;
46 line-height: inherit;
47 }
48 /* "Component" values */
49 .gns-container {
50 max-width: 100%;
51 margin-left: auto;
52 margin-right: auto;
53 }
54 .gns-header {
55 padding-top: 1rem;
56 padding-bottom: 0.25rem;
57 }
58 .gns-form-group {
59 margin-bottom: 1.5rem;
60 }
61 .gns-form-group:not(:last-child) {
62 border-top: 1px solid #cecece;
63 }
64 .gns-form-group > :first-child {
65 margin-top: 1rem;
66 }
67 .gns-field:not(:last-child) {
68 margin-bottom: 1rem;
69 }
70 .gns-label {
71 margin-bottom: 0.25rem;
72 }
73 .gns-text-input {
74 display: block;
75 width: 100%;
76 padding: 0.375rem 0.75rem;
77 color: #212121;
78 background-color: #ffffff;
79 border: 1px solid #ced4da;
80 border-radius: 0.20rem;
81 }
82 .gns-text-input:focus {
83 box-shadow: 0px 0px 9px rgba(102, 175, 233, 0.5);
84 border: 1px solid rgb(102, 175, 233);
85 }
86 .gns-button {
87 display: inline-block;
88 text-align: center;
89 text-decoraton: none;
90 vertical-align: middle;
91 cursor: pointer;
92 border: 1px solid transparent;
93 padding: 0.375rem 0.75rem;
94 border-radius: 0.20rem;
95 }
96 .gns-button:focus {
97 box-shadow: 0px 0px 9px rgba(200, 200, 200, 0.75);
98 border: 1px solid rgb(98, 98, 98);
99 }
100 @media (min-width: 576px) {
101 .gns-container {
102 max-width: 540px;
103 }
104 }
105 @media (min-width: 768px) {
106 .gns-container {
107 max-width: 720px;
108 }
109 }
110 @media (min-width: 992px) {
111 .gns-container {
112 max-width: 960px;
113 }
114 }
115 @media (min-width: 1200px) {
116 .gns-container {
117 max-width: 1140px;
118 }
119 }
120 @media (min-width: 1400px) {
121 .gns-container {
122 max-width: 1320px;
123 }
124 }
125 </style>
126 </head>
127 <body>
128 <div class="gns-container">
129 <div class="gns-header">
130 <h1>GNU Name System Business Card</h1>
131 <p>Please fill in the information below to generate your business
132 card.</p>
133 </div>
134 <form name="gnsinput" action="/submit/full" method="get">
135 <fieldset class="gns-form-group">
136 <div class="gns-field">
137 <label class="gns-label" for="prefix">Academic Title (prefix):</label>
138 <input class="gns-text-input" name="prefix" type="text">
139 </div>
140 <div class="gns-field">
141 <label class="gns-label" for="name">Full Name:</label>
142 <input class="gns-text-input" name="name" type="text" required>
143 </div>
144 </fieldset>
145 <fieldset class="gns-form-group">
146 <div class="gns-field">
147 <label class="gns-label" for="phone">Phone:</label>
148 <input class="gns-text-input" name="phone" type="text">
149 </div>
150 <div class="gns-field">
151 <label class="gns-label" for="fax">Fax:</label>
152 <input class="gns-text-input" name="fax" type="text">
153 </div>
154 <div class="gns-field">
155 <label class="gns-label" for="email">E-mail:</label>
156 <input class="gns-text-input" name="email" type="email" required>
157 </div>
158 <div class="gns-field">
159 <label class="gns-label" for="homepage">Homepage:</label>
160 <input class="gns-text-input" name="homepage" type="text" required>
161 </div>
162 </fieldset>
163 <fieldset class="gns-form-group">
164 <div class="gns-field">
165 <label class="gns-label" for="org">Organization:</label>
166 <input class="gns-text-input" name="org" type="text" required>
167 </div>
168 <div class="gns-field">
169 <label class="gns-label" for="department">Department:</label>
170 <input class="gns-text-input" name="department" type="text">
171 </div>
172 <div class="gns-field">
173 <label class="gns-label" for="subdepartment">Division:</label>
174 <input class="gns-text-input" name="subdepartment" type="text">
175 </div>
176 <div class="gns-field">
177 <label class="gns-label" for="jobtitle">Jobtitle:</label>
178 <input class="gns-text-input" name="jobtitle" type="text">
179 </div>
180 </fieldset>
181 <fieldset class="gns-form-group">
182 <div class="gns-field">
183 <label class="gns-label" for="gpgfingerprint">GPG Fingerprint:</label>
184 <input class="gns-text-input" name="gpgfingerprint" type="text">
185 </div>
186 <div class="gns-field">
187 <label class="gns-label" for="gnskey">GNS Public Key</label>
188 <input class="gns-text-input" name="gnskey" type="text" required>
189 </div>
190 <div class="gns-field">
191 <label class="gns-label" for="gnsnick">GNS Nickname:</label>
192 <input class="gns-text-input" name="gnsnick" type="text" required>
193 </div>
194 </fieldset>
195 <fieldset class="gns-form-group">
196 <div class="gns-field">
197 <input class="gns-button"
198 type="submit"
199 value="Generate Business Card">
200 </div>
201 </fieldset>
202 </form>
203 </div>
204 </body>
205</html>
diff --git a/contrib/gns/gns-bcd.tex b/contrib/gns/gns-bcd.tex
deleted file mode 100644
index de8c79de5..000000000
--- a/contrib/gns/gns-bcd.tex
+++ /dev/null
@@ -1,179 +0,0 @@
1\documentclass[a4paper,oneside]{scrartcl}
2\usepackage[utf8]{inputenc}
3\usepackage[T1]{fontenc}
4\usepackage{tikz}
5\usepackage{ifthen}
6\usepackage{qrcode}
7\usepackage[newdimens]{labels}
8
9\LabelCols=2
10\LabelRows=5
11\LeftPageMargin=17.0mm
12\RightPageMargin=17.0mm
13\TopPageMargin=10.0mm
14\BottomPageMargin=10.0mm
15\InterLabelColumn=3.5mm
16\InterLabelRow=3.0mm
17\numberoflabels=10
18
19\renewcommand{\rmdefault}{phv}
20\renewcommand{\seriesdefault}{m}
21\renewcommand{\shapedefault}{n}
22
23\input{def.tex}
24
25\setlength\parindent{0pt}
26
27\newcommand{\logo}{
28 \begin{tikzpicture}
29 [every node/.style={circle,fill=black!73,inner sep=0pt,minimum size=2.2mm},
30 every edge/.style={draw,semithick},
31 x=1pt,y=1pt]
32 \node (p1) at (21.57,-219.43) {};
33 \node (p2) at (41.44,-168.86) {}
34 edge (p1);
35 \node (p3) at (54.16,-130.86) {}
36 edge (p2);
37 \node (p4) at (-21.62,-219.43) {}
38 edge (p1);
39 \node (p5) at (10.41,-158.90) {}
40 edge (p2);
41 \node (p6) at (-22.20,-173.21) {}
42 edge (p4);
43 \node (p9) at (-147.32,-37.53) {};
44 \node (p10) at (-97.30,-18.50) {}
45 edge (p9);
46 \node (p11) at (74.95,-89.64) {}
47 edge (p3);
48 \node (p12) at (-0.20,-182.48) {}
49 edge (p1)
50 edge (p4)
51 edge (p5)
52 edge (p6)
53 edge (p3);
54 \node (p13) at (18.79,-190.31) {}
55 edge (p2)
56 edge (p1)
57 edge (p5)
58 edge (p4);
59 \node (p14) at (-46.77,-141.82) {}
60 edge (p6)
61 edge (p4);
62 \node (p15) at (-14.08,-141.91) {}
63 edge (p5)
64 edge (p6)
65 edge (p12);
66 \node (p16) at (-96.66,-90.02) {};
67 \node (p17) at (-71.34,-90.78) {}
68 edge (p16)
69 edge (p14);
70 \node (p18) at (-25.92,-109.84) {}
71 edge (p15)
72 edge (p17)
73 edge (p14);
74 \node (p19) at (-46.78,-94.06) {}
75 edge (p18)
76 edge (p17)
77 edge (p14)
78 edge (p15);
79 \node (p20) at (51.95,-67.01) {}
80 edge (p3)
81 edge (p11);
82 \node (p21) at (29.21,-103.63) {}
83 edge (p11)
84 edge (p20)
85 edge (p3)
86 edge (p5)
87 edge (p2);
88 \node (p22) at (-116.84,-55.89) {}
89 edge (p10)
90 edge (p9);
91 \node (p23) at (-61.14,-62.16) {}
92 edge (p18)
93 edge (p19)
94 edge (p17)
95 edge (p16);
96 \node (p24) at (107.08,-62.78) {}
97 edge (p20)
98 edge (p11);
99 \node (p25) at (131.66,-76.41) {}
100 edge (p24)
101 edge (p11)
102 edge (p20);
103 \node (p26) at (29.59,-139.18) {}
104 edge (p3)
105 edge (p21)
106 edge (p2)
107 edge (p5);
108 \node (p28) at (-137.12,-66.58) {}
109 edge (p22)
110 edge (p9)
111 edge (p10)
112 edge (p16);
113 \node (p29) at (-84.94,-72.38) {}
114 edge (p23)
115 edge (p22)
116 edge (p16)
117 edge (p28);
118 \node (p30) at (145.17,-37.49) {}
119 edge (p25)
120 edge (p24);
121 \node (p31) at (102.20,-18.50) {}
122 edge (p30)
123 edge (p25);
124 \end{tikzpicture}
125}
126
127\newcommand{\card}{
128 \begin{tikzpicture}
129 [every node/.style={rectangle,fill=white,minimum height=7pt,inner sep=0pt},
130 medium text/.style={text width=37.5mm},
131 slight text/.style={text width=30mm},
132 important text/.style={text width=40mm},
133 font=\tiny]
134 \begin{scope}[xshift=64.25mm]
135 \node[medium text] (organization) at (0,-21mm) {\org};
136 \ifthenelse{\equal{\department}{}}{}{
137 \node[medium text] (department) at (0,-23.5mm) {\department};
138 }
139 \ifthenelse{\equal{\subdepartment}{}}{}{
140 \node[medium text] (subdepartment) at (0,-26.5mm) {\subdepartment};
141 }
142 \ifthenelse{\equal{\phone}{}}{}{
143 \node[medium text] (tel label) at (0,-30mm) {Tel};
144 \node[slight text] (tel number) at (0.75mm,-30mm) {\phone};
145 }
146 \ifthenelse{\equal{\fax}{}}{}{
147 \node[medium text] (fax label) at (0,-32.5mm) {Fax};
148 \node[slight text] (fax number) at (0.75mm,-32.5mm) {\fax};
149 }
150 \node[medium text] (e-mail address) at (0,-35.5mm) {\email};
151 \node[medium text] (homepage address) at (0,-38mm) {\homepage};
152 \ifthenelse{\equal{\gpglineone}{}}{}{
153 \node[medium text] (gpg label) at (0,-41mm) {GPG Fingerprint};
154 \node[medium text] (gpg line one) at (0,-43.5mm) {\gpglineone};
155 \node[medium text] (gpg line two) at (0,-46mm) {\gpglinetwo};
156 }
157 \end{scope}
158 \node[scale=0.127] (logo) at (70mm, -10.5mm) {\logo};
159 \node (qrcode) at (20mm,-17mm) {
160 \qrcode[height=20mm,level=Q]{gnunet://gns/\gns}
161 };
162 \begin{scope}[xshift=24.25mm,yshift=-12mm]
163 \node[important text] (name prefix) at (0,-21mm) {
164 \ifthenelse{\equal{\prefix}{}}{}{\tiny \prefix}
165 };
166 \node[important text] (name) at (0,-24mm) {
167 \fontsize{8pt}{8pt}\selectfont
168 \textbf{\name}\ifthenelse{\equal{\suffix}{}}{}{, \tiny \suffix}
169 };
170 \ifthenelse{\equal{\jobtitle}{}}{}{
171 \node[important text] (job title) at (0,-29mm) {\jobtitle};
172 }
173 \end{scope}
174 \end{tikzpicture}
175}
176
177\begin{document}
178\addresslabel{\card}
179\end{document}
diff --git a/contrib/gnunet_infrastructure/handbook_pull.sh b/contrib/gnunet_infrastructure/handbook_pull.sh
deleted file mode 100755
index 16c7430ae..000000000
--- a/contrib/gnunet_infrastructure/handbook_pull.sh
+++ /dev/null
@@ -1,18 +0,0 @@
1#!/bin/sh
2#
3# This essentially could be solved by:
4# git config pull.rebase true
5# git config rebase.autoStash true
6# but chances are that this is easy to
7# forget.
8# so execute this file on the server
9# instead of setting a git config.
10
11echo "Running git pull with autoStash and rebase"
12echo "If anything breaks in the future, delete"
13echo "and repeat - it was once considered to"
14echo "be responsible for non-trivial conflicts!"
15echo "We apply this because we need to build the"
16echo "handbook and tutorial without manual interventions."
17
18git pull --rebase --autostash
diff --git a/contrib/handbook b/contrib/handbook
new file mode 160000
Subproject c309e416984fc76e4b39adcbd4e8a602d94b198
diff --git a/contrib/hellos/Makefile.am b/contrib/hellos/Makefile.am
deleted file mode 100644
index d2fc6b89e..000000000
--- a/contrib/hellos/Makefile.am
+++ /dev/null
@@ -1,6 +0,0 @@
1pkghellodir= $(pkgdatadir)/hellos
2
3pkghello_DATA = \
4 Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0
5
6EXTRA_DIST = $(pkghello_DATA)
diff --git a/contrib/hellos/Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0 b/contrib/hellos/Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0
deleted file mode 100644
index eeb6a15f7..000000000
--- a/contrib/hellos/Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0
+++ /dev/null
Binary files differ
diff --git a/contrib/indent_pre-commit b/contrib/indent_pre-commit
deleted file mode 100755
index c67fcaf0c..000000000
--- a/contrib/indent_pre-commit
+++ /dev/null
@@ -1,22 +0,0 @@
1#!/bin/sh
2# Run this script to indent the GNUnet code. When run without arguments,
3# it indents the ENTIRE src/ tree. Run with 'src/XXX' to indent the
4# src/XXX directory.
5#
6# This script is in the public domain.
7if test $# = 0
8then
9 PATHS=src/
10else
11 PATHS="$@"
12fi
13find $PATHS -name "*.c" -exec indent {} \;
14find $PATHS -name "*.h" -exec indent {} \;
15find $PATHS -name "*.c" -exec indent {} \;
16find $PATHS -name "*.h" -exec indent {} \;
17find $PATHS -name "*.c" -exec contrib/scripts/removetrailingwhitespace.py {} \;
18find $PATHS -name "*.h" -exec contrib/scripts/removetrailingwhitespace.py {} \;
19if test -n "`dos2unix -V | head -n1 | awk '{print $1 $2}'`"; then
20 find $PATHS -name "*.c" -exec dos2unix {} \;
21 find $PATHS -name "*.h" -exec dos2unix {} \;
22fi
diff --git a/contrib/meson.build b/contrib/meson.build
new file mode 100644
index 000000000..a1acbb32c
--- /dev/null
+++ b/contrib/meson.build
@@ -0,0 +1,6 @@
1subdir('conf')
2subdir('scripts')
3
4install_data('xdg-scheme-handler'/'gnunet-uri.desktop',
5 install_dir: get_option('datadir')/'applications')
6
diff --git a/contrib/netjail/netjail_core.sh b/contrib/netjail/netjail_core.sh
deleted file mode 100755
index da784fa5e..000000000
--- a/contrib/netjail/netjail_core.sh
+++ /dev/null
@@ -1,263 +0,0 @@
1#!/bin/sh
2#
3
4
5PREFIX=${PPID:?must run from a parent process}
6
7# running with `sudo` is required to be
8# able running the actual commands as the
9# original user.
10
11export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
12
13export RESULT=
14export NAMESPACE_NUM=0
15export INTERFACE_NUM=0
16
17netjail_next_namespace() {
18 local NUM=$NAMESPACE_NUM
19 NAMESPACE_NUM=$(($NAMESPACE_NUM + 1))
20 RESULT=$NUM
21}
22
23netjail_next_interface() {
24 local NUM=$INTERFACE_NUM
25 INTERFACE_NUM=$(($INTERFACE_NUM + 1))
26 RESULT=$NUM
27}
28
29netjail_opt() {
30 local OPT=$1
31 shift 1
32
33 INDEX=1
34
35 while [ $# -gt 0 ]; do
36 if [ "$1" = "$OPT" ]; then
37 RESULT=$INDEX
38 return
39 fi
40
41 INDEX=$(($INDEX + 1))
42 shift 1
43 done
44
45 RESULT=0
46}
47
48netjail_opts() {
49 local OPT=$1
50 local DEF=$2
51 shift 2
52
53 while [ $# -gt 0 ]; do
54 if [ "$1" = "$OPT" ]; then
55 printf "$2"
56 return
57 fi
58
59 shift 1
60 done
61
62 RESULT="$DEF"
63}
64
65netjail_check() {
66 local NODE_COUNT=$1
67 local FD_COUNT=$(($(ls /proc/self/fd | wc -w) - 4))
68
69 # quit if `$FD_COUNT < ($LOCAL_M * $GLOBAL_N * 2)`:
70 # the script also requires `sudo -C ($FD_COUNT + 4)`
71 # so you need 'Defaults closefrom_override' in the
72 # sudoers file.
73
74 if [ $FD_COUNT -lt $(($NODE_COUNT * 2)) ]; then
75 echo "File descriptors do not match requirements!" >&2
76 exit 1
77 fi
78}
79
80netjail_check_bin() {
81 local PROGRAM=$1
82 local MATCH=$(ls $(echo $PATH | tr ":" "\n") | grep "^$PROGRAM\$" | tr "\n" " " | awk '{ print $1 }')
83
84 # quit if the required binary $PROGRAM can not be
85 # found in the used $PATH.
86
87 if [ "$MATCH" != "$PROGRAM" ]; then
88 echo "Required binary not found: $PROGRAM" >&2
89 exit 1
90 fi
91}
92
93netjail_bridge() {
94 netjail_next_interface
95 local NUM=$RESULT
96 local BRIDGE=$(printf "%06x-%08x" $PREFIX $NUM)
97
98 ip link add $BRIDGE type bridge
99 ip link set dev $BRIDGE up
100
101 RESULT=$BRIDGE
102}
103
104netjail_bridge_name() {
105 netjail_next_interface
106 local NUM=$RESULT
107 local BRIDGE=$(printf "%06x-%08x" $PREFIX $NUM)
108
109 RESULT=$BRIDGE
110}
111
112netjail_bridge_clear() {
113 local BRIDGE=$1
114
115 ip link delete $BRIDGE
116}
117
118netjail_node() {
119 netjail_next_namespace
120 local NUM=$RESULT
121 local NODE=$(printf "%06x-%08x" $PREFIX $NUM)
122
123 ip netns add $NODE
124
125 RESULT=$NODE
126}
127
128netjail_node_name() {
129 netjail_next_namespace
130 local NUM=$RESULT
131 local NODE=$(printf "%06x-%08x" $PREFIX $NUM)
132
133 RESULT=$NODE
134}
135
136netjail_node_clear() {
137 local NODE=$1
138
139 ip netns delete $NODE
140}
141
142netjail_node_link_bridge() {
143 local NODE=$1
144 local BRIDGE=$2
145 local ADDRESS=$3
146 local MASK=$4
147
148 netjail_next_interface
149 local NUM_IF=$RESULT
150 netjail_next_interface
151 local NUM_BR=$RESULT
152
153 local LINK_IF=$(printf "%06x-%08x" $PREFIX $NUM_IF)
154 local LINK_BR=$(printf "%06x-%08x" $PREFIX $NUM_BR)
155
156 ip link add $LINK_IF type veth peer name $LINK_BR
157 ip link set $LINK_IF netns $NODE
158 ip link set $LINK_BR master $BRIDGE
159
160 ip -n $NODE addr add "$ADDRESS/$MASK" broadcast + dev $LINK_IF
161 ip -n $NODE link set $LINK_IF up
162 ip -n $NODE link set up dev lo
163
164 ip link set $LINK_BR up
165
166 RESULT=$LINK_BR
167}
168
169netjail_node_link_bridge_name() {
170
171 netjail_next_interface
172 netjail_next_interface
173 local NUM_BR=$RESULT
174
175 local LINK_BR=$(printf "%06x-%08x" $PREFIX $NUM_BR)
176
177 RESULT=$LINK_BR
178}
179
180netjail_node_unlink_bridge() {
181 local LINK_BR=$1
182
183 ip link delete $LINK_BR
184}
185
186netjail_node_add_nat() {
187 local NODE=$1
188 local ADDRESS=$2
189 local MASK=$3
190
191 ip netns exec $NODE nft add table nat
192 ip netns exec $NODE nft add chain nat postrouting { type nat hook postrouting priority 0 \; }
193 ip netns exec $NODE nft add rule ip nat postrouting ip saddr "$ADDRESS/$MASK" counter masquerade
194 # ip netns exec $NODE iptables -t nat -A POSTROUTING -s "$ADDRESS/$MASK" -j MASQUERADE
195}
196
197netjail_node_add_default() {
198 local NODE=$1
199 local ADDRESS=$2
200
201 ip -n $NODE route add default via $ADDRESS
202}
203
204netjail_node_exec() {
205 JAILOR=${SUDO_USER:?must run in sudo}
206 local NODE=$1
207 local FD_IN=$2
208 local FD_OUT=$3
209 shift 3
210
211 ip netns exec $NODE sudo -u $JAILOR -- $@ 1>& $FD_OUT 0<& $FD_IN
212}
213
214netjail_node_exec_without_fds() {
215 JAILOR=${SUDO_USER:?must run in sudo}
216 NODE=$1
217 shift 1
218
219 ip netns exec $NODE sudo -u $JAILOR -- $@
220}
221
222netjail_node_exec_without_fds_and_sudo() {
223 NODE=$1
224 shift 1
225
226 ip netns exec $NODE $@
227}
228
229netjail_kill() {
230 local PID=$1
231 local MATCH=$(ps --pid $PID | awk "{ if ( \$1 == $PID ) { print \$1 } }" | wc -l)
232
233 if [ $MATCH -gt 0 ]; then
234 kill -n 19 $PID
235
236 for CHILD in $(ps -o pid,ppid -ax | awk "{ if ( \$2 == $PID ) { print \$1 } }"); do
237 netjail_kill $CHILD
238 done
239
240 kill $PID
241 fi
242}
243
244netjail_killall() {
245 if [ $# -gt 0 ]; then
246 local PIDS=$1
247
248 for PID in $PIDS; do
249 netjail_kill $PID
250 done
251 fi
252}
253
254netjail_waitall() {
255 if [ $# -gt 0 ]; then
256 local PIDS=$1
257
258 for PID in $PIDS; do
259 wait $PID
260 done
261 fi
262}
263
diff --git a/contrib/netjail/netjail_exec.sh b/contrib/netjail/netjail_exec.sh
deleted file mode 100755
index fa68d90d4..000000000
--- a/contrib/netjail/netjail_exec.sh
+++ /dev/null
@@ -1,15 +0,0 @@
1#!/bin/sh
2. "$(dirname $0)/netjail_core.sh"
3
4set -eu
5set -x
6
7export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8
9M=$1
10N=$2
11
12NODE=$6
13
14#netjail_node_exec_without_fds_and_sudo $NODE valgrind --leak-check=full --track-origins=yes --trace-children=yes $3 $4 $5 $1 $2 $7 $8
15netjail_node_exec_without_fds_and_sudo $NODE $3 $4 $5 $1 $2 $7 $8
diff --git a/contrib/netjail/netjail_start.sh b/contrib/netjail/netjail_start.sh
deleted file mode 100755
index e2d5fd634..000000000
--- a/contrib/netjail/netjail_start.sh
+++ /dev/null
@@ -1,92 +0,0 @@
1#!/bin/bash
2. "$(dirname $0)/netjail_core.sh"
3. "$(dirname $0)/topo.sh"
4
5set -eu
6set -x
7
8export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9
10filename=$1
11PREFIX=$2
12readfile=$3
13
14BROADCAST=0
15
16if [ $readfile -eq 0 ]
17then
18 read_topology_string "$filename"
19else
20 echo read file
21 read_topology $filename
22fi
23
24shift 2
25
26LOCAL_GROUP="192.168.15"
27GLOBAL_GROUP="92.68.150"
28KNOWN_GROUP="92.68.151"
29
30if [ $BROADCAST -eq 0 ]; then
31 PORT="60002"
32else
33 PORT="2086"
34fi
35
36echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16]"
37
38netjail_bridge
39NETWORK_NET=$RESULT
40
41for X in $(seq $KNOWN); do
42 netjail_node
43 KNOWN_NODES[$X]=$RESULT
44 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16
45 KNOWN_LINKS[$X]=$RESULT
46done
47
48declare -A NODES
49declare -A NODE_LINKS
50
51for N in $(seq $GLOBAL_N); do
52 netjail_node
53 ROUTERS[$N]=$RESULT
54 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16
55 NETWORK_LINKS[$N]=$RESULT
56 netjail_bridge
57 ROUTER_NETS[$N]=$RESULT
58
59 for M in $(seq $LOCAL_M); do
60 netjail_node
61 NODES[$N,$M]=$RESULT
62 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24
63 NODE_LINKS[$N,$M]=$RESULT
64 done
65
66 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
67 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24
68 ROUTER_LINKS[$N]=$RESULT
69
70 netjail_node_add_nat ${ROUTERS[$N]} $ROUTER_ADDR 24
71
72 for M in $(seq $LOCAL_M); do
73 netjail_node_add_default ${NODES[$N,$M]} $ROUTER_ADDR
74 done
75
76 # TODO Topology configuration must be enhanced to configure forwarding to more than one subnet node via different ports.
77
78 if [ "1" == "${R_TCP[$N]}" ]
79 then
80 #ip netns exec ${ROUTERS[$N]} nft add rule ip nat prerouting ip daddr $GLOBAL_GROUP.$N tcp dport 60002 counter dnat to $LOCAL_GROUP.1
81 #ip netns exec ${ROUTERS[$N]} nft add rule ip filter FORWARD ip daddr $LOCAL_GROUP.1 ct state new,related,established counter accept
82 ip netns exec ${ROUTERS[$N]} iptables -t nat -A PREROUTING -p tcp -d $GLOBAL_GROUP.$N --dport 60002 -j DNAT --to $LOCAL_GROUP.1
83 ip netns exec ${ROUTERS[$N]} iptables -A FORWARD -d $LOCAL_GROUP.1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
84 fi
85 if [ "1" == "${R_UDP[$N]}" ]
86 then
87 #ip netns exec ${ROUTERS[$N]} nft add rule ip nat prerouting ip daddr $GLOBAL_GROUP.$N udp dport $PORT counter dnat to $LOCAL_GROUP.1
88 #ip netns exec ${ROUTERS[$N]} nft add rule ip filter FORWARD ip daddr $LOCAL_GROUP.1 ct state new,related,established counter accept
89 ip netns exec ${ROUTERS[$N]} iptables -t nat -A PREROUTING -p udp -d $GLOBAL_GROUP.$N --dport $PORT -j DNAT --to $LOCAL_GROUP.1
90 ip netns exec ${ROUTERS[$N]} iptables -A FORWARD -d $LOCAL_GROUP.1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
91 fi
92done
diff --git a/contrib/netjail/netjail_stop.sh b/contrib/netjail/netjail_stop.sh
deleted file mode 100755
index c8739dc94..000000000
--- a/contrib/netjail/netjail_stop.sh
+++ /dev/null
@@ -1,65 +0,0 @@
1#!/bin/bash
2. "$(dirname $0)/netjail_core.sh"
3. "$(dirname $0)/topo.sh"
4
5set -eu
6set -x
7
8export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9
10filename=$1
11PREFIX=$2
12readfile=$3
13
14if [ $readfile -eq 0 ]
15then
16 read_topology_string $filename
17else
18 read_topology $filename
19fi
20
21declare -A NODES
22declare -A NODE_LINKS
23
24netjail_bridge_name
25NETWORK_NET=$RESULT
26
27for X in $(seq $KNOWN); do
28 netjail_node_name
29 KNOWN_NODES[$X]=$RESULT
30 netjail_node_link_bridge_name
31 KNOWN_LINKS[$X]=$RESULT
32 netjail_node_unlink_bridge ${KNOWN_LINKS[$X]}
33 netjail_node_clear ${KNOWN_NODES[$X]}
34done
35
36for N in $(seq $GLOBAL_N); do
37 netjail_node_name
38 ROUTERS[$N]=$RESULT
39 netjail_node_link_bridge_name
40 NETWORK_LINKS[$N]=$RESULT
41 netjail_bridge_name
42 ROUTER_NETS[$N]=$RESULT
43 netjail_node_link_bridge_name
44 ROUTER_LINKS[$N]=$RESULT
45
46 netjail_node_unlink_bridge ${ROUTER_LINKS[$N]}
47
48 for M in $(seq $LOCAL_M); do
49 netjail_node_name
50 NODES[$N,$M]=$RESULT
51 netjail_node_link_bridge_name
52 NODE_LINKS[$N,$M]=$RESULT
53 netjail_node_unlink_bridge ${NODE_LINKS[$N,$M]}
54 netjail_node_clear ${NODES[$N,$M]}
55 done
56
57
58 netjail_bridge_clear ${ROUTER_NETS[$N]}
59 netjail_node_unlink_bridge ${NETWORK_LINKS[$N]}
60 netjail_node_clear ${ROUTERS[$N]}
61done
62
63netjail_bridge_clear $NETWORK_NET
64
65echo "Done"
diff --git a/contrib/netjail/topo.sh b/contrib/netjail/topo.sh
deleted file mode 100755
index d7586d425..000000000
--- a/contrib/netjail/topo.sh
+++ /dev/null
@@ -1,117 +0,0 @@
1#!/bin/bash
2
3declare -A K_PLUGIN
4declare -A R_TCP
5declare -A R_UDP
6declare -A P_PLUGIN
7
8extract_attributes()
9{
10 line_key=$1
11 line=$2
12
13 if [ "$line_key" = "P" ]
14 then
15 n=$(echo $line|cut -d \| -f 1|awk -F: '{print $2}')
16 echo $n
17 m=$(echo $line|cut -d \| -f 1|awk -F: '{print $3}')
18 echo $m
19 else
20 number=$(echo $line|cut -d \| -f 1| cut -c 2-|cut -d : -f 2 )
21 echo $number
22 fi
23
24 nf=$(echo $line|awk -F: '{print NF}')
25 for ((i=2;i<=$nf;i++))
26 do
27 entry=$(echo $line |awk -v i=$i -F\| '{print $i}')
28 key=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 1)
29 value=$(echo $entry|cut -d { -f 2|cut -d } -f 1|cut -d : -f 2)
30 if [ "$key" = "tcp_port" ]
31 then
32 echo tcp port: $value
33 R_TCP[$number]=$value
34 elif [ "$key" = "udp_port" ]
35 then
36 echo udp port: $value
37 R_UDP[$number]=$value
38 elif [ "$key" = "plugin" ]
39 then
40 echo plugin: $value
41 echo $line_key
42 if [ "$line_key" = "P" ]
43 then
44 P_PLUGIN[$n,$m]=$value
45 echo $n $m ${P_PLUGIN[$n,$m]}
46 elif [ "$line_key" = "K" ]
47 then
48 K_PLUGIN[$number]=$value
49 fi
50 fi
51 done
52}
53
54parse_line(){
55 line=$1
56 echo $line
57 key=$(cut -c -1 <<< $line)
58 if [ "$key" = "M" ]
59 then
60 LOCAL_M=$(cut -d : -f 2 <<< $line)
61 echo $LOCAL_M
62 elif [ "$key" = "N" ]
63 then
64 GLOBAL_N=$(cut -d : -f 2 <<< $line)
65 echo $GLOBAL_N
66 for ((i=1;i<=$GLOBAL_N;i++))
67 do
68 R_TCP[$i]=0
69 R_UDP[$i]=0
70 done
71 elif [ "$key" = "X" ]
72 then
73 KNOWN=$(cut -d : -f 2 <<< $line)
74 echo $KNOWN
75 elif [ "$key" = "T" ]
76 then
77 PLUGIN=$(cut -d : -f 2 <<< $line)
78 echo $PLUGIN
79 elif [ "$key" = "B" ]
80 then
81 BROADCAST=$(cut -d : -f 2 <<< $line)
82 echo $BROADCAST
83 elif [ "$key" = "K" ]
84 then
85 echo know node
86 extract_attributes $key $line
87 elif [ "$key" = "R" ]
88 then
89 echo router
90 extract_attributes $key $line
91 elif [ "$key" = "P" ]
92 then
93 echo node
94 extract_attributes $key $line
95 fi
96}
97
98read_topology_string(){
99 string=$1
100 IFS=' ' read -r -a array <<< $string
101 for element in "${array[@]}"
102 do
103 echo $element
104 parse_line $element
105 done
106}
107
108read_topology(){
109 local filename=$1
110 while read line; do
111 # reading each line
112 parse_line $line
113 done < $filename
114}
115
116
117
diff --git a/contrib/packages/arch/gnunet-git/.SRCINFO b/contrib/packages/arch/gnunet-git/.SRCINFO
index 82a649530..682e69576 100644
--- a/contrib/packages/arch/gnunet-git/.SRCINFO
+++ b/contrib/packages/arch/gnunet-git/.SRCINFO
@@ -1,8 +1,8 @@
1# Generated by makepkg 6.0.1 1# Generated by makepkg 6.0.1
2# Fri Aug 5 01:36:05 UTC 2022 2# Mon Sep 26 21:21:28 UTC 2022
3pkgbase = gnunet-git 3pkgbase = gnunet-git
4 pkgdesc = A framework for secure peer-to-peer networking 4 pkgdesc = A framework for secure peer-to-peer networking
5 pkgver = 0.17.2.r20.g0780c69e9 5 pkgver = 0.17.6.r4.g7bf2f8f59
6 pkgrel = 1 6 pkgrel = 1
7 url = http://gnunet.org 7 url = http://gnunet.org
8 install = gnunet.install 8 install = gnunet.install
@@ -23,10 +23,10 @@ pkgbase = gnunet-git
23 makedepends = recutils 23 makedepends = recutils
24 depends = brotli 24 depends = brotli
25 depends = gettext 25 depends = gettext
26 depends = gnurl
27 depends = gnutls 26 depends = gnutls
28 depends = iptables 27 depends = iptables
29 depends = jansson 28 depends = jansson
29 depends = libcurl-gnutls
30 depends = libextractor 30 depends = libextractor
31 depends = libgcrypt 31 depends = libgcrypt
32 depends = libidn2 32 depends = libidn2
diff --git a/contrib/packages/arch/gnunet-git/PKGBUILD b/contrib/packages/arch/gnunet-git/PKGBUILD
index c0fed77e5..17d7e057f 100644
--- a/contrib/packages/arch/gnunet-git/PKGBUILD
+++ b/contrib/packages/arch/gnunet-git/PKGBUILD
@@ -6,7 +6,7 @@
6 6
7_appname='gnunet' 7_appname='gnunet'
8pkgname="${_appname}-git" 8pkgname="${_appname}-git"
9pkgver=0.17.2.r20.g0780c69e9 9pkgver=0.17.6.r4.g7bf2f8f59
10pkgrel=1 10pkgrel=1
11pkgdesc='A framework for secure peer-to-peer networking' 11pkgdesc='A framework for secure peer-to-peer networking'
12arch=('i686' 'x86_64') 12arch=('i686' 'x86_64')
@@ -14,7 +14,7 @@ url="http://${_appname}.org"
14license=('AGPL') 14license=('AGPL')
15conflicts=("${_appname}" "${_appname}-bin") 15conflicts=("${_appname}" "${_appname}-bin")
16provides=("${_appname}") 16provides=("${_appname}")
17depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson' 17depends=('brotli' 'gettext' 'gnutls' 'iptables' 'jansson' 'libcurl-gnutls'
18 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium' 18 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium'
19 'libtool' 'libunistring' 'miniupnpc' 'nss' 'openssl' 'sqlite' 'which' 19 'libtool' 'libunistring' 'miniupnpc' 'nss' 'openssl' 'sqlite' 'which'
20 'zlib') 20 'zlib')
diff --git a/contrib/packages/arch/gnunet/.SRCINFO b/contrib/packages/arch/gnunet/.SRCINFO
index deb93d6ad..19df8d63f 100644
--- a/contrib/packages/arch/gnunet/.SRCINFO
+++ b/contrib/packages/arch/gnunet/.SRCINFO
@@ -1,6 +1,6 @@
1pkgbase = gnunet 1pkgbase = gnunet
2 pkgdesc = A framework for secure peer-to-peer networking 2 pkgdesc = A framework for secure peer-to-peer networking
3 pkgver = 0.17.3 3 pkgver = 0.17.6
4 pkgrel = 1 4 pkgrel = 1
5 url = http://gnunet.org 5 url = http://gnunet.org
6 install = gnunet.install 6 install = gnunet.install
@@ -18,10 +18,10 @@ pkgbase = gnunet
18 makedepends = python-sphinx_rtd_theme 18 makedepends = python-sphinx_rtd_theme
19 depends = brotli 19 depends = brotli
20 depends = gettext 20 depends = gettext
21 depends = gnurl
22 depends = gnutls 21 depends = gnutls
23 depends = iptables 22 depends = iptables
24 depends = jansson 23 depends = jansson
24 depends = libcurl-gnutls
25 depends = libextractor 25 depends = libextractor
26 depends = libgcrypt 26 depends = libgcrypt
27 depends = libidn2 27 depends = libidn2
@@ -52,15 +52,15 @@ pkgbase = gnunet
52 conflicts = gnunet-git 52 conflicts = gnunet-git
53 conflicts = gnunet-bin 53 conflicts = gnunet-bin
54 backup = etc/gnunet.conf 54 backup = etc/gnunet.conf
55 source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.3.tar.gz 55 source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.6.tar.gz
56 source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.3.tar.gz.sig 56 source = ftp://ftp.gnu.org/gnu/gnunet/gnunet-0.17.6.tar.gz.sig
57 source = gnunet-system.service 57 source = gnunet-system.service
58 source = gnunet.sysusers 58 source = gnunet.sysusers
59 source = gnunet.tmpfiles 59 source = gnunet.tmpfiles
60 source = gnunet-user.conf 60 source = gnunet-user.conf
61 source = gnunet-user.service 61 source = gnunet-user.service
62 validpgpkeys = 3D11063C10F98D14BD24D1470B0998EF86F59B6A 62 validpgpkeys = 3D11063C10F98D14BD24D1470B0998EF86F59B6A
63 sha256sums = 74c767b8d0c34f60ddfa4e77a1657365d34c484b5ffaeb3796e3f520a9d50c9e 63 sha256sums = 249358ef3b10ce99810781fedaec526a6eab943c120e4bba096aedf91c1afc40
64 sha256sums = SKIP 64 sha256sums = SKIP
65 sha256sums = 163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262 65 sha256sums = 163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262
66 sha256sums = 66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755 66 sha256sums = 66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755
diff --git a/contrib/packages/arch/gnunet/PKGBUILD b/contrib/packages/arch/gnunet/PKGBUILD
index d04989715..1cef4dcec 100644
--- a/contrib/packages/arch/gnunet/PKGBUILD
+++ b/contrib/packages/arch/gnunet/PKGBUILD
@@ -5,14 +5,14 @@
5# Contributor: wahnby <wahnby AT yahoo DOT fr> 5# Contributor: wahnby <wahnby AT yahoo DOT fr>
6 6
7pkgname='gnunet' 7pkgname='gnunet'
8pkgver='0.17.3' 8pkgver='0.17.6'
9pkgrel=1 9pkgrel=1
10pkgdesc='A framework for secure peer-to-peer networking' 10pkgdesc='A framework for secure peer-to-peer networking'
11arch=('i686' 'x86_64') 11arch=('i686' 'x86_64')
12url="http://${pkgname}.org" 12url="http://${pkgname}.org"
13license=('AGPL') 13license=('AGPL')
14conflicts=("${pkgname}-git" "${pkgname}-bin") 14conflicts=("${pkgname}-git" "${pkgname}-bin")
15depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson' 15depends=('brotli' 'gettext' 'gnutls' 'iptables' 'jansson' 'libcurl-gnutls'
16 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium' 16 'libextractor' 'libgcrypt' 'libidn2' 'libmicrohttpd' 'libsodium'
17 'libtool' 'libunistring' 'miniupnpc' 'nss' 'openssl' 'sqlite' 'which' 17 'libtool' 'libunistring' 'miniupnpc' 'nss' 'openssl' 'sqlite' 'which'
18 'zlib') 18 'zlib')
@@ -41,7 +41,7 @@ source=("ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz"{,.sig}
41 "${pkgname}-user.service") 41 "${pkgname}-user.service")
42install="${pkgname}.install" 42install="${pkgname}.install"
43validpgpkeys=('3D11063C10F98D14BD24D1470B0998EF86F59B6A') 43validpgpkeys=('3D11063C10F98D14BD24D1470B0998EF86F59B6A')
44sha256sums=('74c767b8d0c34f60ddfa4e77a1657365d34c484b5ffaeb3796e3f520a9d50c9e' 44sha256sums=('249358ef3b10ce99810781fedaec526a6eab943c120e4bba096aedf91c1afc40'
45 'SKIP' 45 'SKIP'
46 '163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262' 46 '163818b89beddcaf78937daba5bdf0ae060b2975de0731aa13d1ccdd813cf262'
47 '66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755' 47 '66299dbbdd0219d2f5f0520e69fc094f38f789724d973c2f63a421257ea4f755'
diff --git a/contrib/packages/fedora/10-dns2gns.sh b/contrib/packages/fedora/10-dns2gns.sh
new file mode 100644
index 000000000..b652a9c0c
--- /dev/null
+++ b/contrib/packages/fedora/10-dns2gns.sh
@@ -0,0 +1,43 @@
1#!/bin/bash
2interface=$1
3status=$2
4
5do_it=$(gnunet-config -s dns2gns -o ENABLE_RESOLVECTL_NMDISPATCHER -c /etc/gnunet.conf)
6if [ $? != 0 ]; then
7 exit 1
8fi
9if [ $do_it = "NO" ]; then
10 echo "Setting DNS2GNS through resolvectl disabled."
11 exit 1
12fi
13
14case $status in
15 up)
16 if nc -u -z 127.0.0.1 5353; then
17 # Note: We add quad 9 as a fallback in case our service is down.
18 dns2gns=$(gnunet-config -s dns2gns -o BIND_TO)
19 if [ $? != 0 ]; then
20 exit 1
21 fi
22 dns2gns6=$(gnunet-config -s dns2gns -o BIND_TO6)
23 if [ $? != 0 ]; then
24 exit 1
25 fi
26 port=$(gnunet-config -s dns2gns -o PORT)
27 if [ $? != 0 ]; then
28 exit 1
29 fi
30 olddns=$(resolvectl status $interface | grep "DNS Servers" | cut -d':' -f2-)
31 if [ $? == 0 ]; then
32 #echo "Setting to $dns2gns:$port [$dns2gns6]:$port $olddns 9.9.9.9"
33 #resolvectl dns $interface $dns2gns:$port [$dns2gns6]:$port $olddns 9.9.9.9
34 echo "Setting to $dns2gns:$port [$dns2gns6]:$port"
35 resolvectl dns $interface $dns2gns:$port [$dns2gns6]:$port
36 else
37 exit 1
38 fi
39 fi
40 ;;
41 down)
42 ;;
43esac
diff --git a/contrib/packages/fedora/gnunet-system.conf b/contrib/packages/fedora/gnunet-system.conf
new file mode 100644
index 000000000..a0b99dfeb
--- /dev/null
+++ b/contrib/packages/fedora/gnunet-system.conf
@@ -0,0 +1,12 @@
1[path]
2GNUNET_HOME = /var/lib/gnunet/
3GNUNET_DATA_HOME = /var/lib/gnunet/data/
4GNUNET_RUNTIME_DIR = /var/run/gnunet/
5
6[arm]
7START_SYSTEM_SERVICES = YES
8START_USER_SERVICES = NO
9OPTIONS = -l /var/log/gnunet.log
10
11[dns2gns]
12ENABLE_RESOLVECTL_NMDISPATCHER = YES
diff --git a/contrib/packages/fedora/gnunet-user.service b/contrib/packages/fedora/gnunet-user.service
new file mode 100644
index 000000000..c9d3be0ad
--- /dev/null
+++ b/contrib/packages/fedora/gnunet-user.service
@@ -0,0 +1,11 @@
1# Typically to be place into /usr/lib/systemd/user/gnunet.service
2[Unit]
3Description=GNUnet user service
4After=network.target
5
6[Service]
7Type=simple
8ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c ~/.config/gnunet.conf
9
10[Install]
11WantedBy=multi-user.target
diff --git a/contrib/packages/fedora/gnunet.service b/contrib/packages/fedora/gnunet.service
new file mode 100644
index 000000000..daa38a046
--- /dev/null
+++ b/contrib/packages/fedora/gnunet.service
@@ -0,0 +1,14 @@
1# Typically placed into /usr/lib/systemd/system/gnunet.service
2[Unit]
3Description=GNUnet system service
4After=network.target
5
6[Service]
7Type=simple
8User=gnunet
9ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c /etc/gnunet.conf
10StateDirectory=gnunet
11StateDirectoryMode=0700
12
13[Install]
14WantedBy=multi-user.target
diff --git a/contrib/guix.README b/contrib/packages/guix/guix.README
index 1e8bd3126..1e8bd3126 100644
--- a/contrib/guix.README
+++ b/contrib/packages/guix/guix.README
diff --git a/contrib/guix.scm b/contrib/packages/guix/guix.scm
index 4376d1ef5..4376d1ef5 100644
--- a/contrib/guix.scm
+++ b/contrib/packages/guix/guix.scm
diff --git a/contrib/scripts/Makefile.am b/contrib/scripts/Makefile.am
index 756119ada..204167e82 100644
--- a/contrib/scripts/Makefile.am
+++ b/contrib/scripts/Makefile.am
@@ -1,5 +1,6 @@
1# This Makefile.am is in the public domain 1# This Makefile.am is in the public domain
2AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include 2AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include
3libexecdir= $(pkglibdir)/libexec/
3 4
4SUBDIRS = gnunet-logread 5SUBDIRS = gnunet-logread
5 6
@@ -21,7 +22,10 @@ noinst_SCRIPTS = \
21 $(awkSCRIPTS) 22 $(awkSCRIPTS)
22 23
23bin_SCRIPTS = \ 24bin_SCRIPTS = \
24 gnunet-bugreport \ 25 gnunet-bugreport
26
27# This script is not documented and its usage is quite uncommon.
28libexec_SCRIPTS = \
25 gnunet-suidfix 29 gnunet-suidfix
26 30
27EXTRA_DIST = \ 31EXTRA_DIST = \
@@ -39,14 +43,11 @@ EXTRA_DIST = \
39 find_typedefs.py \ 43 find_typedefs.py \
40 pydmesg \ 44 pydmesg \
41 visualize_stats.sh \ 45 visualize_stats.sh \
42 changelog_delta.sh \
43 debug \ 46 debug \
44 build_cscope.sh \ 47 build_cscope.sh \
45 lint/lint-man.sh \ 48 lint/lint-man.sh \
46 lint/lint-python.sh \ 49 lint/lint-python.sh \
47 revisionary.sh \ 50 revisionary.sh \
48 netjail/netjail_core.sh \
49 netjail/netjail_setup_internet.sh \
50 regression.sh \ 51 regression.sh \
51 doc/texinfo-hacks.el \ 52 doc/texinfo-hacks.el \
52 afferify \ 53 afferify \
@@ -71,11 +72,11 @@ CLEANFILES = \
71SUFFIXES = .py.in .py 72SUFFIXES = .py.in .py
72 73
73.py.in.py: 74.py.in.py:
74 $(AWK) -v py="$(PYTHON)" -f $(top_srcdir)/bin/dosubst.awk < $< > $@ 75 $(AWK) -v py="$(PYTHON)" -f $(top_srcdir)/scripts/dosubst.awk < $< > $@
75 chmod +x $@ 76 chmod +x $@
76 77
77if HAVE_AWK 78if HAVE_AWK
78check-texinfo.awk: check-texinfo.awk.in Makefile 79check-texinfo.awk: check-texinfo.awk.in Makefile
79 $(AWK) -v awkay="$(AWK_BINARY)" -f $(top_srcdir)/bin/dosubst.awk < $(srcdir)/check-texinfo.awk.in > check-texinfo.awk 80 $(AWK) -v awkay="$(AWK_BINARY)" -f $(top_srcdir)/scripts/dosubst.awk < $(srcdir)/check-texinfo.awk.in > check-texinfo.awk
80 chmod +x check-texinfo.awk 81 chmod +x check-texinfo.awk
81endif 82endif
diff --git a/contrib/scripts/changelog_delta.sh b/contrib/scripts/changelog_delta.sh
deleted file mode 100644
index f115f1ef1..000000000
--- a/contrib/scripts/changelog_delta.sh
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/bash
2LASTHASH=$(head -n1 ChangeLog | cut -d " " -f 7 | tr -d \( | tr -d \))
3git log --invert-grep --grep="^-" --no-merges --no-color --format="%aD (%h)%n%s - %cN%n" $LASTHASH..HEAD
diff --git a/contrib/warningfilter.py b/contrib/scripts/doc/warningfilter.py
index b8399bb38..31ac5865c 100755
--- a/contrib/warningfilter.py
+++ b/contrib/scripts/doc/warningfilter.py
@@ -61,18 +61,18 @@ matches = {
61 "undocumented param (name)": re.compile(r" parameter '([\w.]+)'"), 61 "undocumented param (name)": re.compile(r" parameter '([\w.]+)'"),
62 "explicit link not resolved": re.compile(rf"{main_match} explicit link request to '(\w+(?:\(\))?)' could not be resolved"), 62 "explicit link not resolved": re.compile(rf"{main_match} explicit link request to '(\w+(?:\(\))?)' could not be resolved"),
63 "unknown command": re.compile(rf"{main_match} Found unknown command '(\\\w+)'"), 63 "unknown command": re.compile(rf"{main_match} Found unknown command '(\\\w+)'"),
64 "missing argument": re.compile(rf"{main_match} argument '(\w+)' of command @param is not found in the argument list of {func_name}(?:{func_params}|{macro_params})"), 64 "missing argument": re.compile(rf"{main_match} argument '(\w+)' of command @param is not found in the argument list of ({func_name})(?:{func_params}|{macro_params})"),
65 "eof inside group": re.compile(rf"{main_match} end of file while inside a group"), 65 "eof inside group": re.compile(rf"{main_match} end of file while inside a group"),
66 "eof inside comment": re.compile(rf"{main_match} Reached end of file while still inside a \(nested\) comment. Nesting level \d+ \(probable line reference: \d+\)"), 66 "eof inside comment": re.compile(rf"{main_match} Reached end of file while still inside a \(nested\) comment. Nesting level \d+ \(probable line reference: (\d+)\)"),
67 "eof inside code block": re.compile(rf"{main_match} reached end of file while inside a 'code' block!"), 67 "eof inside code block": re.compile(rf"{main_match} reached end of file while inside a 'code' block!"),
68 "eof inside code block (line 2)": re.compile(rf"The command that should end the block seems to be missing!"), 68 "eof inside code block (line 2)": re.compile(rf"The command that should end the block seems to be missing!"),
69 "title mismatch": re.compile(rf"{main_match} group (?P<group_id>\w+): ignoring title \"(?P<new_title>{verbose_name})\" that does not match old title \"(?P<old_title>{verbose_name})\""), 69 "title mismatch": re.compile(rf"{main_match} group (?P<group_id>\w+): ignoring title \"(?P<new_title>{verbose_name})\" that does not match old title \"(?P<old_title>{verbose_name})\""),
70 "end of comment expecting command": re.compile(rf"{main_match} end of comment block while expecting command {command_re}"), 70 "end of comment expecting command": re.compile(rf"{main_match} end of comment block while expecting command ({command_re})"),
71 "no matching tag": re.compile(rf"{main_match} found </(?P<tag>[^>]+)> tag without matching <(?P=tag)>"), 71 "no matching tag": re.compile(rf"{main_match} found </(?P<tag>[^>]+)> tag without matching <(?P=tag)>"),
72 "documented empty return type": re.compile(rf"{main_match} documented empty return type of {func_name}"), 72 "documented empty return type": re.compile(rf"{main_match} documented empty return type of {func_name}"),
73 "unsupported tag": re.compile(rf"{main_match} Unsupported xml/html tag <(?P<tag>[^>]+)> found"), 73 "unsupported tag": re.compile(rf"{main_match} Unsupported xml/html tag <(?P<tag>[^>]+)> found"),
74 "expected whitespace after command": re.compile(rf"{main_match} expected whitespace after \\(?P<command>\w+) command"), 74 "expected whitespace after command": re.compile(rf"{main_match} expected whitespace after \\(?P<command>\w+) command"),
75 "illegal command": re.compile(rf"{main_match} Illegal command (?P<illegal_cmd>(?:@|\\)\w+) as part of a (?P<command>\\\w+) command"), 75 "illegal command": re.compile(rf"{main_match} Illegal command (?P<illegal_cmd>(?:@|\\)\w+) as part of a \\(?P<command>\w+) command"),
76 "undeclared symbol": re.compile(rf"{main_match} documented symbol '(\w+)' was not declared or defined\."), 76 "undeclared symbol": re.compile(rf"{main_match} documented symbol '(\w+)' was not declared or defined\."),
77 "nameless member": re.compile(rf"{main_match} member with no name found."), 77 "nameless member": re.compile(rf"{main_match} member with no name found."),
78 "end of empty list": re.compile(rf"{main_match} End of list marker found without any preceding list items"), 78 "end of empty list": re.compile(rf"{main_match} End of list marker found without any preceding list items"),
diff --git a/contrib/scripts/generate-release-triplet.sh b/contrib/scripts/generate-release-triplet.sh
new file mode 100755
index 000000000..7dc890dc0
--- /dev/null
+++ b/contrib/scripts/generate-release-triplet.sh
@@ -0,0 +1,21 @@
1#!/bin/bash
2
3PACKAGE=$1
4VERSION=$2
5
6cat << EOF >> $PACKAGE-$VERSION.directive
7version: 1.2
8directory: gnunet
9filename: $PACKAGE-$VERSION.tar.gz
10symlink: $PACKAGE-$VERSION.tar.gz $PACKAGE-latest.tar.gz
11EOF
12
13gpg --clearsign $PACKAGE-$VERSION.directive
14gpg -b $PACKAGE-$VERSION.tar.gz
15exit
16ftp -inv ftp-upload.gnu.org <<EOF
17user anonymous
18cd incoming/ftp
19mput $PACKAGE-$VERSION.tar.gz $PACKAGE-$VERSION.tar.gz.sig $PACKAGE-$VERSION.tar.gz.directive.asc
20bye
21EOF
diff --git a/contrib/scripts/gnunet-logread/Makefile.am b/contrib/scripts/gnunet-logread/Makefile.am
index d0054391c..d53a8b8cf 100644
--- a/contrib/scripts/gnunet-logread/Makefile.am
+++ b/contrib/scripts/gnunet-logread/Makefile.am
@@ -4,11 +4,11 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include
4SUFFIXES = .in 4SUFFIXES = .in
5 5
6gnunet-logread: gnunet-logread.in Makefile 6gnunet-logread: gnunet-logread.in Makefile
7 $(AWK) -v prl="$(PERL)" -v pfx="$(prefix)" -f $(top_srcdir)/bin/dosubst.awk < $(srcdir)/gnunet-logread.in > gnunet-logread 7 $(AWK) -v prl="$(PERL)" -v pfx="$(prefix)" -f $(top_srcdir)/scripts/dosubst.awk < $(srcdir)/gnunet-logread.in > gnunet-logread
8 chmod +x gnunet-logread 8 chmod +x gnunet-logread
9 9
10gnunet-logread-ipc-sdedit: gnunet-logread-ipc-sdedit.in Makefile 10gnunet-logread-ipc-sdedit: gnunet-logread-ipc-sdedit.in Makefile
11 $(AWK) -v prl="$(PERL)" -f $(top_srcdir)/bin/dosubst.awk < $(srcdir)/gnunet-logread-ipc-sdedit.in > gnunet-logread-ipc-sdedit 11 $(AWK) -v prl="$(PERL)" -f $(top_srcdir)/scripts/dosubst.awk < $(srcdir)/gnunet-logread-ipc-sdedit.in > gnunet-logread-ipc-sdedit
12 chmod +x gnunet-logread-ipc-sdedit 12 chmod +x gnunet-logread-ipc-sdedit
13 13
14CLEANFILES= \ 14CLEANFILES= \
diff --git a/contrib/scripts/meson.build b/contrib/scripts/meson.build
new file mode 100644
index 000000000..d56ba2b76
--- /dev/null
+++ b/contrib/scripts/meson.build
@@ -0,0 +1,4 @@
1install_data('gnunet-bugreport',
2 install_dir: get_option('bindir'))
3install_data('gnunet-suidfix',
4 install_dir: get_option('libdir')/'gnunet'/'libexec')
diff --git a/contrib/scripts/netjail/netjail_core.sh b/contrib/scripts/netjail/netjail_core.sh
deleted file mode 100755
index d53315052..000000000
--- a/contrib/scripts/netjail/netjail_core.sh
+++ /dev/null
@@ -1,217 +0,0 @@
1#!/bin/sh
2#
3
4JAILOR=${SUDO_USER:?must run in sudo}
5PREFIX=${PPID:?must run from a parent process}
6
7# running with `sudo` is required to be
8# able running the actual commands as the
9# original user.
10
11export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
12
13export RESULT=
14export NAMESPACE_NUM=0
15export INTERFACE_NUM=0
16
17netjail_next_namespace() {
18 local NUM=$NAMESPACE_NUM
19 NAMESPACE_NUM=$(($NAMESPACE_NUM + 1))
20 RESULT=$NUM
21}
22
23netjail_next_interface() {
24 local NUM=$INTERFACE_NUM
25 INTERFACE_NUM=$(($INTERFACE_NUM + 1))
26 RESULT=$NUM
27}
28
29netjail_opt() {
30 local OPT=$1
31 shift 1
32
33 INDEX=1
34
35 while [ $# -gt 0 ]; do
36 if [ "$1" = "$OPT" ]; then
37 RESULT=$INDEX
38 return
39 fi
40
41 INDEX=$(($INDEX + 1))
42 shift 1
43 done
44
45 RESULT=0
46}
47
48netjail_opts() {
49 local OPT=$1
50 local DEF=$2
51 shift 2
52
53 while [ $# -gt 0 ]; do
54 if [ "$1" = "$OPT" ]; then
55 printf "$2"
56 return
57 fi
58
59 shift 1
60 done
61
62 RESULT="$DEF"
63}
64
65netjail_check() {
66 local NODE_COUNT=$1
67 local FD_COUNT=$(($(ls /proc/self/fd | wc -w) - 4))
68
69 # quit if `$FD_COUNT < ($LOCAL_M * $GLOBAL_N * 2)`:
70 # the script also requires `sudo -C ($FD_COUNT + 4)`
71 # so you need 'Defaults closefrom_override' in the
72 # sudoers file.
73
74 if [ $FD_COUNT -lt $(($NODE_COUNT * 2)) ]; then
75 echo "File descriptors do not match requirements!" >&2
76 exit 1
77 fi
78}
79
80netjail_check_bin() {
81 local PROGRAM=$1
82 local MATCH=$(ls $(echo $PATH | tr ":" "\n") | grep "^$PROGRAM\$" | tr "\n" " " | awk '{ print $1 }')
83
84 # quit if the required binary $PROGRAM can not be
85 # found in the used $PATH.
86
87 if [ "$MATCH" != "$PROGRAM" ]; then
88 echo "Required binary not found: $PROGRAM" >&2
89 exit 1
90 fi
91}
92
93netjail_bridge() {
94 netjail_next_interface
95 local NUM=$RESULT
96 local BRIDGE=$(printf "%06x-%08x" $PREFIX $NUM)
97
98 ip link add $BRIDGE type bridge
99 ip link set dev $BRIDGE up
100
101 RESULT=$BRIDGE
102}
103
104netjail_bridge_clear() {
105 local BRIDGE=$1
106
107 ip link delete $BRIDGE
108}
109
110netjail_node() {
111 netjail_next_namespace
112 local NUM=$RESULT
113 local NODE=$(printf "%06x-%08x" $PREFIX $NUM)
114
115 ip netns add $NODE
116
117 RESULT=$NODE
118}
119
120netjail_node_clear() {
121 local NODE=$1
122
123 ip netns delete $NODE
124}
125
126netjail_node_link_bridge() {
127 local NODE=$1
128 local BRIDGE=$2
129 local ADDRESS=$3
130 local MASK=$4
131
132 netjail_next_interface
133 local NUM_IF=$RESULT
134 netjail_next_interface
135 local NUM_BR=$RESULT
136
137 local LINK_IF=$(printf "%06x-%08x" $PREFIX $NUM_IF)
138 local LINK_BR=$(printf "%06x-%08x" $PREFIX $NUM_BR)
139
140 ip link add $LINK_IF type veth peer name $LINK_BR
141 ip link set $LINK_IF netns $NODE
142 ip link set $LINK_BR master $BRIDGE
143
144 ip -n $NODE addr add "$ADDRESS/$MASK" dev $LINK_IF
145 ip -n $NODE link set $LINK_IF up
146 ip -n $NODE link set up dev lo
147
148 ip link set $LINK_BR up
149
150 RESULT=$LINK_BR
151}
152
153netjail_node_unlink_bridge() {
154 local LINK_BR=$1
155
156 ip link delete $LINK_BR
157}
158
159netjail_node_add_nat() {
160 local NODE=$1
161 local ADDRESS=$2
162 local MASK=$3
163
164 ip netns exec $NODE iptables -t nat -A POSTROUTING -s "$ADDRESS/$MASK" -j MASQUERADE
165}
166
167netjail_node_add_default() {
168 local NODE=$1
169 local ADDRESS=$2
170
171 ip -n $NODE route add default via $ADDRESS
172}
173
174netjail_node_exec() {
175 local NODE=$1
176 local FD_IN=$2
177 local FD_OUT=$3
178 shift 3
179
180 ip netns exec $NODE sudo -u $JAILOR -- $@ 1>& $FD_OUT 0<& $FD_IN
181}
182
183netjail_kill() {
184 local PID=$1
185 local MATCH=$(ps --pid $PID | awk "{ if ( \$1 == $PID ) { print \$1 } }" | wc -l)
186
187 if [ $MATCH -gt 0 ]; then
188 kill -n 19 $PID
189
190 for CHILD in $(ps -o pid,ppid -ax | awk "{ if ( \$2 == $PID ) { print \$1 } }"); do
191 netjail_kill $CHILD
192 done
193
194 kill $PID
195 fi
196}
197
198netjail_killall() {
199 if [ $# -gt 0 ]; then
200 local PIDS=$1
201
202 for PID in $PIDS; do
203 netjail_kill $PID
204 done
205 fi
206}
207
208netjail_waitall() {
209 if [ $# -gt 0 ]; then
210 local PIDS=$1
211
212 for PID in $PIDS; do
213 wait $PID
214 done
215 fi
216}
217
diff --git a/contrib/scripts/netjail/netjail_setup_internet.sh b/contrib/scripts/netjail/netjail_setup_internet.sh
deleted file mode 100755
index ea820f38c..000000000
--- a/contrib/scripts/netjail/netjail_setup_internet.sh
+++ /dev/null
@@ -1,166 +0,0 @@
1#!/bin/bash
2
3. "./netjail_core.sh"
4
5set -eu
6set -x
7
8export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
9
10PREFIX=$PPID
11LOCAL_M=$1
12GLOBAL_N=$2
13
14shift 2
15
16netjail_check $(($LOCAL_M * $GLOBAL_N))
17
18# Starts optionally an amount of nodes without NAT starting with "92.68.151.1"
19netjail_opt '--known' $@
20KNOWN=$RESULT
21netjail_opts '--known' 0 $@
22KNOWN_NUM=$RESULT
23
24# Starts optionally 'stunserver' on "92.68.150.254":
25netjail_opt '--stun' $@
26STUN=$RESULT
27
28if [ $KNOWN -gt 0 ]; then
29 shift 2
30
31 KNOWN=$KNOWN_NUM
32
33 netjail_check $(($LOCAL_M * $GLOBAL_N + $KNOWN))
34fi
35
36if [ $STUN -gt 0 ]; then
37 netjail_check_bin stunserver
38
39 shift 1
40fi
41
42netjail_check_bin $1
43
44LOCAL_GROUP="192.168.15"
45GLOBAL_GROUP="92.68.150"
46KNOWN_GROUP="92.68.151"
47
48CLEANUP=0
49echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]"
50
51netjail_bridge
52NETWORK_NET=$RESULT
53
54for X in $(seq $KNOWN); do
55 netjail_node
56 KNOWN_NODES[$X]=$RESULT
57 netjail_node_link_bridge ${KNOWN_NODES[$X]} $NETWORK_NET "$KNOWN_GROUP.$X" 16
58 KNOWN_LINKS[$X]=$RESULT
59done
60
61declare -A NODES
62declare -A NODE_LINKS
63
64for N in $(seq $GLOBAL_N); do
65 netjail_node
66 ROUTERS[$N]=$RESULT
67 netjail_node_link_bridge ${ROUTERS[$N]} $NETWORK_NET "$GLOBAL_GROUP.$N" 16
68 NETWORK_LINKS[$N]=$RESULT
69 netjail_bridge
70 ROUTER_NETS[$N]=$RESULT
71
72 for M in $(seq $LOCAL_M); do
73 netjail_node
74 NODES[$N,$M]=$RESULT
75 netjail_node_link_bridge ${NODES[$N,$M]} ${ROUTER_NETS[$N]} "$LOCAL_GROUP.$M" 24
76 NODE_LINKS[$N,$M]=$RESULT
77 done
78
79 ROUTER_ADDR="$LOCAL_GROUP.$(($LOCAL_M+1))"
80 netjail_node_link_bridge ${ROUTERS[$N]} ${ROUTER_NETS[$N]} $ROUTER_ADDR 24
81 ROUTER_LINKS[$N]=$RESULT
82
83 netjail_node_add_nat ${ROUTERS[$N]} $ROUTER_ADDR 24
84
85 for M in $(seq $LOCAL_M); do
86 netjail_node_add_default ${NODES[$N,$M]} $ROUTER_ADDR
87 done
88done
89
90WAITING=""
91KILLING=""
92
93if [ $STUN -gt 0 ]; then
94 netjail_node
95 STUN_NODE=$RESULT
96 netjail_node_link_bridge $STUN_NODE $NETWORK_NET "$GLOBAL_GROUP.254" 16
97 STUN_LINK=$RESULT
98
99 netjail_node_exec $STUN_NODE 0 1 stunserver &
100 KILLING="$!"
101fi
102
103for X in $(seq $KNOWN); do
104 INDEX=$(($X - 1))
105
106 FD_X=$(($INDEX * 2 + 3 + 0))
107 FD_Y=$(($INDEX * 2 + 3 + 1))
108
109 netjail_node_exec ${KNOWN_NODES[$X]} $FD_X $FD_Y $@ &
110 WAITING="$! $WAITING"
111done
112
113for N in $(seq $GLOBAL_N); do
114 for M in $(seq $LOCAL_M); do
115 INDEX=$(($LOCAL_M * ($N - 1) + $M - 1 + $KNOWN))
116
117 FD_X=$(($INDEX * 2 + 3 + 0))
118 FD_Y=$(($INDEX * 2 + 3 + 1))
119
120 netjail_node_exec ${NODES[$N,$M]} $FD_X $FD_Y $@ &
121 WAITING="$! $WAITING"
122 done
123done
124
125cleanup() {
126 if [ $STUN -gt 0 ]; then
127 netjail_node_unlink_bridge $STUN_LINK
128 netjail_node_clear $STUN_NODE
129 fi
130
131 for X in $(seq $KNOWN); do
132 netjail_node_unlink_bridge ${KNOWN_LINKS[$X]}
133 netjail_node_clear ${KNOWN_NODES[$X]}
134 done
135
136 for N in $(seq $GLOBAL_N); do
137 for M in $(seq $LOCAL_M); do
138 netjail_node_unlink_bridge ${NODE_LINKS[$N,$M]}
139 netjail_node_clear ${NODES[$N,$M]}
140 done
141
142 netjail_node_unlink_bridge ${ROUTER_LINKS[$N]}
143 netjail_bridge_clear ${ROUTER_NETS[$N]}
144 netjail_node_unlink_bridge ${NETWORK_LINKS[$N]}
145 netjail_node_clear ${ROUTERS[$N]}
146 done
147
148 netjail_bridge_clear $NETWORK_NET
149}
150
151trapped_cleanup() {
152 netjail_killall $WAITING
153 netjail_killall $KILLING
154
155 cleanup
156}
157
158trap 'trapped_cleanup' ERR
159
160netjail_waitall $WAITING
161netjail_killall $KILLING
162wait
163
164cleanup
165
166echo "Done"
diff --git a/contrib/scripts/news_delta.sh b/contrib/scripts/news_delta.sh
new file mode 100755
index 000000000..20fb98649
--- /dev/null
+++ b/contrib/scripts/news_delta.sh
@@ -0,0 +1,6 @@
1#!/bin/bash
2
3OLDVERSION=$1
4
5git --no-pager log --grep="^NEWS: " -i --no-merges --no-color --format="%s%n%b" $1..HEAD | grep -i "^NEWS:\s[a-zA-Z][a-zA-Z]*" | sed 's/NEWS:/ -/i'
6echo ""
diff --git a/contrib/scripts/update_news.sh b/contrib/scripts/update_news.sh
new file mode 100755
index 000000000..014ac8bd7
--- /dev/null
+++ b/contrib/scripts/update_news.sh
@@ -0,0 +1,15 @@
1#!/bin/bash
2NEW_VERSION=$1
3if [ -z $NEW_VERSION ]; then
4 NEW_VERSION="Unreleased"
5fi
6DELTA_SH="contrib/scripts/news_delta.sh"
7LASTVER=$(head -n1 NEWS | tr -d :)
8
9echo "$NEW_VERSION:" > NEWS.delta || exit 1
10$DELTA_SH $LASTVER >> NEWS.delta || exit 1
11cp NEWS NEWS.bak || exit 1
12cat NEWS.delta > NEWS || exit 1
13cat NEWS.bak >> NEWS || exit 1
14rm NEWS.bak NEWS.delta
15
diff --git a/contrib/testing_hostkeys.ecc b/contrib/testing_hostkeys.ecc
deleted file mode 100644
index 29bd6ece2..000000000
--- a/contrib/testing_hostkeys.ecc
+++ /dev/null
Binary files differ