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/gnunet-system.conf14
-rw-r--r--contrib/conf/gnunet/gnunet-user.conf4
-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.py134
-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
93 files changed, 731 insertions, 6111 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/gnunet-system.conf b/contrib/conf/gnunet/gnunet-system.conf
index 6f9b0f379..dc0528cf3 100644
--- a/contrib/conf/gnunet/gnunet-system.conf
+++ b/contrib/conf/gnunet/gnunet-system.conf
@@ -1,7 +1,9 @@
1# Sample configuration file to be installed in /etc/gnunet.conf 1[path]
2# for a multi-user GNUnet setup. This is then the configuration 2GNUNET_HOME = /var/lib/gnunet/
3# for the system-wide "gnunet" user. 3GNUNET_DATA_HOME = /var/lib/gnunet/data/
4[arm] 4GNUNET_RUNTIME_DIR = /var/run/gnunet/
5SYSTEM_ONLY = YES
6USER_ONLY = NO
7 5
6[arm]
7START_SYSTEM_SERVICES = YES
8START_USER_SERVICES = NO
9OPTIONS = -l /var/log/gnunet.log
diff --git a/contrib/conf/gnunet/gnunet-user.conf b/contrib/conf/gnunet/gnunet-user.conf
index de95c216c..f4763e45a 100644
--- a/contrib/conf/gnunet/gnunet-user.conf
+++ b/contrib/conf/gnunet/gnunet-user.conf
@@ -3,6 +3,6 @@
3# in the $HOME directory of each normal user (and in 3# in the $HOME directory of each normal user (and in
4# /etc/skel/). 4# /etc/skel/).
5[arm] 5[arm]
6SYSTEM_ONLY = NO 6START_SYSTEM_SERVICES = NO
7USER_ONLY = YES 7START_USER_SERVICES = YES
8 8
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 7bfe1654eeab7e7eacb4f6eb45ad52ffe4511c4 Subproject d505fecdf8f1339f4115f10f1ae236da7cfea0e
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 7d66dc1695829f2511f8e8ecc227a64d73d1562
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/scripts/doc/warningfilter.py b/contrib/scripts/doc/warningfilter.py
new file mode 100755
index 000000000..31ac5865c
--- /dev/null
+++ b/contrib/scripts/doc/warningfilter.py
@@ -0,0 +1,134 @@
1#!/usr/bin/env python3
2"""
3Filters and processes warnings generated by Doxygen, which are
4annoyingly inconsistent and verbose, for greater readability.
5
6(Neo)vim commands to go to the file and linenumber listed on a
7line, in the reports this program generates:
8 :exe "let linenumber =" split(getline("."))[1]
9 :exe "edit" fnameescape(split(getline("."))[0]) "|" linenumber
10
11It's easy to put a workflow together to clear up redundant doc
12comments (which generate "multiple @param docs" warnings), using
13simple vim commands to move the cursor and close buffers, Neovim's
14support for the Language Server Protocol or related tooling, and
15the command shown above.
16
17A useful sequence, for rapidly deleting a doc comment from its last
18line, is, in normal mode, `$v%ddd`.
19
20For setting up LSP integration in Neovim, refer to the lsp_config
21plugin.
22
23You may additionally need to generate compile_commands.json in the
24repository root, to allow the language server to find everything.
25This can be done using Bear (found at https://github.com/rizsotto/Bear).
26
27@author: willow <willow@howhill.com>
28"""
29
30import argparse as ap
31import re
32
33# Regular expression construction
34
35def sep_re(field, separator):
36 "Constructs regex for a list"
37 return rf"{field}(?:{separator}{field})*"
38
39# File names and paths
40fileclass = r"[\w-]"
41filename = rf"{fileclass}+"
42# filename = rf"(/{fileclass}+)+\.\w"
43filepath = rf"{sep_re(filename, '/')}\.(?:\w+)"
44main_match = rf"(?P<path>/{filepath}|\[generated\]):(?P<linenumber>\d+): warning:"
45
46# Symbols
47type_name = rf"(?:const )?(?:unsigned (?:long )?|struct |enum )?(?:\w+)(?: \*?const)? \*{{0,3}}"
48var_def = rf"{type_name}\w+(?:\[(?:\(\d+/\d+\))?\])?"
49func_params = rf"\({sep_re(var_def, ', ')}(?:,\.\.\.)?\)"
50simple_name = r"\w+"
51func_name = simple_name
52verbose_name = rf"{sep_re(simple_name, ' ')}"
53command_re = "(?:</[^>]+>|\\\w+)"
54macro_params = rf"\({sep_re(simple_name, ', ')}(?:,\.\.\.)?\)"
55
56
57matches = {
58 "not an input @file": re.compile(rf"{main_match} the name '(?P<name>{filepath}|{simple_name})' supplied as the argument in the \\file statement is not an input file"),
59 "multiple @param docs": re.compile(rf"{main_match} argument '(?P<arg_name>\w+)' from the argument list of ({func_name}) has multiple @param documentation sections"),
60 "undocumented param": re.compile(rf"{main_match} The following parameters? of ({func_name})(?:{func_params}|{macro_params}) (?:is|are) not documented:"),
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"),
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})"),
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+)\)"),
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!"),
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})"),
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}"),
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"),
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\."),
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"),
79 "blank": re.compile(rf"^\s*$"),
80# "": re.compile(rf"{main_match} "),
81}
82
83parser_choices = set(matches.keys()) - {"blank",
84 "eof inside code block (line 2)",
85 "undocumented param (name)"}
86
87parser = ap.ArgumentParser()
88parser.add_argument("filename")
89parser.add_argument("--summary", "-s", action="store_true")
90parser.add_argument("--key", "-k", choices=parser_choices, action="append", dest="keys")
91args = parser.parse_args()
92
93sorted_lines = {k:[] for k in matches.keys()}
94unsorted_lines = []
95
96with open(args.filename, "r") as file:
97 for line in file.readlines():
98 for key, value in matches.items():
99 if match := value.match(line):
100 sorted_lines[key].append(match)
101 break
102 else:
103 unsorted_lines.append(line.strip("\n"))
104
105
106processed_lines = {k: [" ".join(g for g in match.groups())
107 for match in matches]
108 for k, matches in sorted_lines.items()}
109
110# Combining multiline warnings
111processed_lines["undocumented param"] = [
112 l1+" "+l2 for l1, l2 in zip(processed_lines["undocumented param"],
113 processed_lines["undocumented param (name)"])
114]
115
116# Removing chaff
117del processed_lines["blank"]
118del processed_lines["eof inside code block (line 2)"]
119del processed_lines["undocumented param (name)"]
120
121# Preparing count dictionary and summarising the results
122counts = {k: len(v) for k, v in processed_lines.items()}
123if args.summary:
124 for k, v in counts.items():
125 print(k+":", v)
126 print("")
127
128if args.keys is not None:
129 for key in args.keys:
130 print(f"{key}: {counts[key]}")
131 for line in processed_lines[key]:
132 print(line)
133 print("")
134
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