diff options
Diffstat (limited to 'contrib')
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 @@ | |||
1 | sphinx | ||
1 | gnunet_janitor.py | 2 | gnunet_janitor.py |
2 | gnunet_pyexpect.py | 3 | gnunet_pyexpect.py |
3 | pydiffer.py | 4 | pydiffer.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 |
2 | AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include | 2 | AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include |
3 | 3 | ||
4 | SUBDIRS = scripts hellos services | 4 | SUBDIRS = scripts services |
5 | 5 | ||
6 | include Makefile.inc | 6 | include Makefile.inc |
7 | 7 | ||
8 | dist_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 | |||
37 | INITD_FILES = \ | 8 | INITD_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 | ||
44 | PACKAGES_FILES = \ | 15 | PACKAGES_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 | |||
266 | dist_xdgdeentry_DATA = \ | 234 | dist_xdgdeentry_DATA = \ |
267 | xdg-scheme-handler/gnunet-uri.desktop | 235 | xdg-scheme-handler/gnunet-uri.desktop |
268 | 236 | ||
269 | install-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 | ||
14 | BUILDCOMMON_CONF_FILES = \ | 13 | BUILDCOMMON_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 | |||
5 | profile @{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 @@ | |||
1 | FROM docker.io/library/debian:bookworm | ||
2 | |||
3 | ENV DEBIAN_FRONTEND=noninteractive | ||
4 | |||
5 | RUN 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 | ||
35 | RUN 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 | |||
43 | WORKDIR /workdir | ||
44 | |||
45 | CMD ["/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 | ||
2 | set -exvuo pipefail | ||
3 | |||
4 | # Requires podman | ||
5 | # Fails if not found in PATH | ||
6 | OCI_RUNTIME=$(which podman) | ||
7 | REPO_NAME=$(basename "${PWD}") | ||
8 | JOB_NAME="${1}" | ||
9 | JOB_ARCH=$((grep CONTAINER_ARCH contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "${2:-amd64}") | ||
10 | JOB_CONTAINER=$((grep CONTAINER_NAME contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "localhost/${REPO_NAME}:${JOB_ARCH}") | ||
11 | CONTAINER_BUILD=$((grep CONTAINER_BUILD contrib/ci/jobs/${JOB_NAME}/config.ini | cut -d' ' -f 3) || echo "True") | ||
12 | |||
13 | echo "Image name: ${JOB_CONTAINER}" | ||
14 | |||
15 | if [ "${CONTAINER_BUILD}" = "True" ] ; then | ||
16 | "${OCI_RUNTIME}" build \ | ||
17 | --arch "${JOB_ARCH}" \ | ||
18 | -t "${JOB_CONTAINER}" \ | ||
19 | -f contrib/ci/Containerfile . | ||
20 | fi | ||
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 | |||
32 | top_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 @@ | |||
1 | FROM ubuntu:18.04 | ||
2 | |||
3 | # Install the required build tools | ||
4 | RUN 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 | ||
7 | WORKDIR /usr/src | ||
8 | RUN git clone https://git.taler.net/gnurl.git --branch gnurl-7.57.0 | ||
9 | RUN cd /usr/src/gnurl && autoreconf -i && ./configure --prefix=/usr --disable-ntlm-wb && make install | ||
10 | |||
11 | # Install libpbc | ||
12 | WORKDIR /usr/src | ||
13 | RUN 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 | ||
16 | WORKDIR /usr/src | ||
17 | RUN git clone https://github.com/schanzen/libgabe.git && cd /usr/src/libgabe && ./configure --prefix=/usr && make install | ||
18 | |||
19 | WORKDIR /usr/src | ||
20 | RUN git clone git://gnunet.org/gnunet.git | ||
21 | RUN cd /usr/src/gnunet && ./bootstrap && ./configure --enable-experimental --prefix=/usr && make && make install | ||
22 | |||
23 | RUN addgroup gnunetdns && addgroup gnunet && adduser --system --home /var/lib/gnunet gnunet | ||
24 | RUN chown gnunet:gnunet /var/lib/gnunet | ||
25 | RUN echo '[arm]\nSTART_SYSTEM_SERVICES = YES\nSTART_USER_SERVICES = NO\n' > /etc/gnunet.conf | ||
26 | |||
27 | ADD docker-entrypoint.sh . | ||
28 | |||
29 | RUN rm -rf /usr/src/* | ||
30 | #RUN apt remove gcc | ||
31 | |||
32 | CMD ["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 | ||
2 | gnunet-arm -s > $HOME/gnunet.log 2>&1 | ||
3 | exec 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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ./bootstrap | ||
5 | ./configure CFLAGS="-ggdb -O0" \ | ||
6 | --enable-logging=verbose \ | ||
7 | --disable-doc | ||
8 | |||
9 | make -j $(nproc) | ||
10 | make 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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | job_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 | ||
2 | set -exuo pipefail | ||
3 | # This file is in the public domain. | ||
4 | # Helper script to build the latest DEB packages in the container. | ||
5 | |||
6 | |||
7 | unset LD_LIBRARY_PATH | ||
8 | |||
9 | # Install build-time dependencies. | ||
10 | # Update apt cache first | ||
11 | apt-get update | ||
12 | mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control | ||
13 | |||
14 | export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)" | ||
15 | echo "Building gnunet packages version ${VERSION}" | ||
16 | EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" | ||
17 | ./bootstrap | ||
18 | dpkg-buildpackage -rfakeroot -b -uc -us | ||
19 | |||
20 | ls -alh ../*.deb | ||
21 | mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment | ||
22 | mv ../*.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 | ||
2 | set -ex | ||
3 | |||
4 | BRANCH=$(git name-rev --name-only HEAD) | ||
5 | if [ -z "${BRANCH}" ]; then | ||
6 | exit 1 | ||
7 | else | ||
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 | ||
17 | fi | ||
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] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = False | ||
5 | CONTAINER_NAME = nixery.dev/shell/rsync | ||
6 | CONTAINER_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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" | ||
5 | |||
6 | RSYNC_HOST="taler.host.internal" | ||
7 | RSYNC_PORT=424242 | ||
8 | RSYNC_PATH="incoming_packages/bookworm-taler-ci/" | ||
9 | RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" | ||
10 | |||
11 | |||
12 | rsync -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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | make clean | ||
5 | ./bootstrap | ||
6 | ./configure CFLAGS="-ggdb -O0" \ | ||
7 | --enable-logging=verbose \ | ||
8 | --disable-doc | ||
9 | |||
10 | make -j $(nproc) | ||
11 | make 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] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = True | ||
5 | CONTAINER_NAME = gnunet:arm64 | ||
6 | CONTAINER_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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | job_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] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = True | ||
5 | CONTAINER_NAME = gnunet:arm64 | ||
6 | CONTAINER_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 | ||
2 | set -exuo pipefail | ||
3 | # This file is in the public domain. | ||
4 | # Helper script to build the latest DEB packages in the container. | ||
5 | |||
6 | |||
7 | unset LD_LIBRARY_PATH | ||
8 | |||
9 | # Install build-time dependencies. | ||
10 | # Update apt cache first | ||
11 | apt-get update | ||
12 | mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control | ||
13 | |||
14 | export VERSION="$(./contrib/ci/jobs/2-deb-package/version.sh)" | ||
15 | echo "Building gnunet packages version ${VERSION}" | ||
16 | EMAIL=none gbp dch --ignore-branch --debian-tag="%(version)s" --git-author --new-version="${VERSION}" | ||
17 | ./bootstrap | ||
18 | dpkg-buildpackage -rfakeroot -b -uc -us | ||
19 | |||
20 | ls -alh ../*.deb | ||
21 | mkdir -p /artifacts/gnunet/${CI_COMMIT_REF} # Variable comes from CI environment | ||
22 | mv ../*.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 | ||
2 | set -ex | ||
3 | |||
4 | BRANCH=$(git name-rev --name-only HEAD) | ||
5 | if [ -z "${BRANCH}" ]; then | ||
6 | exit 1 | ||
7 | else | ||
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 | ||
17 | fi | ||
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] | ||
2 | HALT_ON_FAILURE = True | ||
3 | WARN_ON_FAILURE = True | ||
4 | CONTAINER_BUILD = False | ||
5 | CONTAINER_NAME = nixery.dev/shell/rsync | ||
6 | CONTAINER_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 | ||
2 | set -exuo pipefail | ||
3 | |||
4 | ARTIFACT_PATH="/artifacts/gnunet/${CI_COMMIT_REF}/*.deb" | ||
5 | |||
6 | RSYNC_HOST="taler.host.internal" | ||
7 | RSYNC_PORT=424242 | ||
8 | RSYNC_PATH="incoming_packages/bookworm-taler-ci/" | ||
9 | RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}" | ||
10 | |||
11 | |||
12 | rsync -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 | |||
5 | COMMIT_MSG_FILE=$1 | ||
6 | |||
7 | exec 1>&2 | ||
8 | |||
9 | RET=0 | ||
10 | changed=$(git diff --cached --name-only) | ||
11 | |||
12 | for f in $changed; | ||
13 | do | ||
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 | ||
25 | done | ||
26 | |||
27 | # If no NEWS line found, abort | ||
28 | if [ $RET = 1 ]; | ||
29 | then | ||
30 | echo "Your commit includes staged changes that indicate an API change which requires a NEWS line." | ||
31 | else | ||
32 | echo "Your commit does not include API changes" | ||
33 | fi | ||
34 | exit 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 | 2 | GNUNET_HOME = /var/lib/gnunet/ |
3 | # for the system-wide "gnunet" user. | 3 | GNUNET_DATA_HOME = /var/lib/gnunet/data/ |
4 | [arm] | 4 | GNUNET_RUNTIME_DIR = /var/run/gnunet/ |
5 | SYSTEM_ONLY = YES | ||
6 | USER_ONLY = NO | ||
7 | 5 | ||
6 | [arm] | ||
7 | START_SYSTEM_SERVICES = YES | ||
8 | START_USER_SERVICES = NO | ||
9 | OPTIONS = -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] |
6 | SYSTEM_ONLY = NO | 6 | START_SYSTEM_SERVICES = NO |
7 | USER_ONLY = YES | 7 | START_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 @@ | |||
1 | configure_file(copy: true, | ||
2 | input: 'no_forcestart.conf', | ||
3 | output: 'no_forcestart.conf') | ||
4 | configure_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] |
75 | START_ON_DEMAND = NO | 75 | START_ON_DEMAND = NO |
76 | 76 | ||
77 | [psyc] | ||
78 | START_ON_DEMAND = NO | ||
79 | |||
80 | [rps] | 77 | [rps] |
81 | START_ON_DEMAND = NO | 78 | START_ON_DEMAND = NO |
82 | 79 | ||
@@ -89,8 +86,5 @@ START_ON_DEMAND = NO | |||
89 | [sensor] | 86 | [sensor] |
90 | START_ON_DEMAND = NO | 87 | START_ON_DEMAND = NO |
91 | 88 | ||
92 | [zonemaster-monitor] | ||
93 | START_ON_DEMAND = NO | ||
94 | |||
95 | [zonemaster] | 89 | [zonemaster] |
96 | START_ON_DEMAND = NO | 90 | START_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] |
41 | IMMEDIATE_START = NO | 41 | IMMEDIATE_START = NO |
42 | 42 | ||
43 | [zonemaster-monitor] | ||
44 | IMMEDIATE_START = NO | ||
45 | |||
46 | [psyc] | ||
47 | IMMEDIATE_START = NO | ||
48 | |||
49 | [rps] | 43 | [rps] |
50 | IMMEDIATE_START = NO | 44 | IMMEDIATE_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 | |||
5 | COMMIT_MSG_FILE=$1 | ||
6 | COMMIT_SOURCE=$2 | ||
7 | SHA1=$3 | ||
8 | |||
9 | exec 1>&2 | ||
10 | |||
11 | RET=0 | ||
12 | changed=$(git diff --cached --name-only) | ||
13 | |||
14 | for f in $changed; | ||
15 | do | ||
16 | # Only headers in include | ||
17 | if echo $f | grep \src\/include\/.\*\.h\$ > /dev/null | ||
18 | then | ||
19 | RET=1 | ||
20 | fi | ||
21 | done | ||
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. | ||
27 | if [ -z "$COMMIT_SOURCE" ]; | ||
28 | then | ||
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" | ||
36 | fi | ||
37 | exit 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 | |||
4 | indent_columns = 2 | 4 | indent_columns = 2 |
5 | indent_with_tabs = 0 | 5 | indent_with_tabs = 0 |
6 | indent_case_brace = 2 | 6 | indent_case_brace = 2 |
7 | indent_label=0 | 7 | indent_label=-16 |
8 | 8 | ||
9 | code_width=80 | 9 | code_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 |
51 | nl_start_of_file=remove | 51 | nl_start_of_file=remove |
52 | nl_after_func_proto = 2 | ||
53 | nl_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! |
53 | nl_end_of_file=add | 55 | nl_end_of_file=add |
56 | nl_max_blank_in_func = 3 | ||
57 | nl_max = 3 | ||
54 | 58 | ||
55 | sp_inside_paren = remove | 59 | sp_inside_paren = remove |
56 | 60 | ||
@@ -69,6 +73,7 @@ sp_between_ptr_star = remove | |||
69 | sp_before_sparen = add | 73 | sp_before_sparen = add |
70 | 74 | ||
71 | sp_inside_fparen = remove | 75 | sp_inside_fparen = remove |
76 | sp_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)" |
74 | sp_func_call_paren = add | 79 | sp_func_call_paren = add |
@@ -76,3 +81,15 @@ sp_func_proto_paren = add | |||
76 | sp_func_proto_paren_empty = add | 81 | sp_func_proto_paren_empty = add |
77 | sp_func_def_paren = add | 82 | sp_func_def_paren = add |
78 | sp_func_def_paren_empty = add | 83 | sp_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 | ||
87 | sp_paren_paren = ignore | ||
88 | sp_inside_paren = remove | ||
89 | sp_bool = force | ||
90 | |||
91 | nl_func_type_name = force | ||
92 | #nl_branch_else = add | ||
93 | nl_else_brace = add | ||
94 | nl_elseif_brace = add | ||
95 | nl_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 | ||
29 | if [ $RET = 1 ]; | 29 | if [ $RET = 1 ]; |
30 | then | 30 | then |
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 "================================================================" | ||
34 | fi | 36 | fi |
35 | exit $RET | 37 | # Do not fail |
38 | exit 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 @@ | |||
1 | Dockerfile | ||
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 @@ | |||
1 | FROM ubuntu:18.04 | 1 | # FROM ubuntu:20.04 |
2 | FROM debian:stable | ||
2 | 3 | ||
3 | ENV DEBIAN_FRONTEND noninteractive | 4 | ENV DEBIAN_FRONTEND noninteractive |
4 | 5 | ||
5 | # Install tools and dependencies | 6 | # Install tools and dependencies |
6 | RUN apt-get update && \ | 7 | RUN 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 | ||
13 | RUN 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 && \ | 52 | RUN 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 |
36 | ENV GNURL_VERSION=7.57.0 | 59 | RUN wget -O /tmp/jose.tar.gz https://github.com/latchset/jose/archive/refs/tags/v11.tar.gz |
37 | |||
38 | RUN wget -O /tmp/gnurl.tar.xz https://ftpmirror.gnu.org/gnu/gnunet/gnurl-${GNURL_VERSION}.tar.xz | ||
39 | RUN cd /tmp && \ | 60 | RUN 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 \ | 72 | RUN 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 \ | 77 | COPY . /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 |
76 | ENV GNUNET_PREFIX /usr/local/gnunet | 87 | # RUN mkdir /tmp/gnunet && tar xf "/tmp/gnunet-$VERSION.tar.gz" -C /tmp/gnunet --strip-components=1 |
77 | ENV CFLAGS '-g -Wall -O0' | ||
78 | 88 | ||
79 | COPY . /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 | ||
81 | RUN cd /gnunet && \ | 101 | RUN 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 |
94 | COPY ./contrib/docker/gnunet.conf /etc/gnunet.conf | 111 | RUN cp /tmp/gnunet/contrib/docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint |
95 | COPY ./contrib/docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint | ||
96 | RUN chmod 755 /usr/local/bin/docker-entrypoint | 112 | RUN chmod 755 /usr/local/bin/docker-entrypoint |
97 | 113 | ||
98 | ENV LOCAL_PORT_RANGE='40001 40200' | 114 | ENV 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. | |||
10 | First you need to go to the root of this repo. | 10 | First you need to go to the root of this repo. |
11 | 11 | ||
12 | ```bash | 12 | ```bash |
13 | cd .. | 13 | cd ../.. |
14 | ``` | 14 | ``` |
15 | 15 | ||
16 | Now you can build the image. | 16 | Now you can build the image. |
17 | 17 | ||
18 | ```bash | 18 | ```bash |
19 | docker build -t gnunet . | 19 | make clean |
20 | docker 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 | ||
3 | echo "${LOCAL_PORT_RANGE:-49152 65535}" > /proc/sys/net/ipv4/ip_local_port_range | 3 | exec gnunet-arm \ |
4 | sed -i 's/$GNUNET_PORT/'${GNUNET_PORT:-2086}'/g' /etc/gnunet.conf | 4 | --start \ |
5 | 5 | --monitor | |
6 | if [[ $# -eq 0 ]]; then | ||
7 | exec gnunet-arm \ | ||
8 | --config=/etc/gnunet.conf \ | ||
9 | --start \ | ||
10 | --monitor | ||
11 | elif [[ -z $1 ]] || [[ ${1:0:1} == '-' ]]; then | ||
12 | exec gnunet-arm "$@" | ||
13 | else | ||
14 | exec "$@" | ||
15 | fi | ||
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] | ||
2 | SYSTEM_ONLY = NO | ||
3 | USER_ONLY = NO | ||
4 | |||
5 | [fs] | ||
6 | FORCESTART = NO | ||
7 | |||
8 | [nat] | ||
9 | ENABLE_UPNP = NO | ||
10 | BEHIND_NAT = YES | ||
11 | |||
12 | [transport-tcp] | ||
13 | PORT = $GNUNET_PORT | ||
14 | ADVERTISED_PORT = $GNUNET_PORT | ||
15 | |||
16 | [transport-udp] | ||
17 | PORT = $GNUNET_PORT | ||
18 | BROADCAST = YES | ||
19 | |||
20 | [cadet] | ||
21 | TESTING_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 | ||
3 | VERSION= | ||
4 | if test -f ".version" | ||
5 | then | ||
6 | VERSION=$(cat .version) | ||
7 | fi | ||
8 | if test -d "./.git" | ||
9 | then | ||
10 | VERSION=$(git describe --tags) | ||
11 | VERSION=${VERSION#v} | ||
12 | echo $VERSION > .version | ||
13 | fi | ||
14 | if test "x$VERSION" = "x" | ||
15 | then | ||
16 | VERSION="unknown" | ||
17 | fi | ||
18 | echo "$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 | |||
11 | echo "Running git pull with autoStash and rebase" | ||
12 | echo "If anything breaks in the future, delete" | ||
13 | echo "and repeat - it was once considered to" | ||
14 | echo "be responsible for non-trivial conflicts!" | ||
15 | echo "We apply this because we need to build the" | ||
16 | echo "handbook and tutorial without manual interventions." | ||
17 | |||
18 | git 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 @@ | |||
1 | pkghellodir= $(pkgdatadir)/hellos | ||
2 | |||
3 | pkghello_DATA = \ | ||
4 | Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0 | ||
5 | |||
6 | EXTRA_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. | ||
7 | if test $# = 0 | ||
8 | then | ||
9 | PATHS=src/ | ||
10 | else | ||
11 | PATHS="$@" | ||
12 | fi | ||
13 | find $PATHS -name "*.c" -exec indent {} \; | ||
14 | find $PATHS -name "*.h" -exec indent {} \; | ||
15 | find $PATHS -name "*.c" -exec indent {} \; | ||
16 | find $PATHS -name "*.h" -exec indent {} \; | ||
17 | find $PATHS -name "*.c" -exec contrib/scripts/removetrailingwhitespace.py {} \; | ||
18 | find $PATHS -name "*.h" -exec contrib/scripts/removetrailingwhitespace.py {} \; | ||
19 | if 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 {} \; | ||
22 | fi | ||
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 @@ | |||
1 | subdir('conf') | ||
2 | subdir('scripts') | ||
3 | |||
4 | install_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 | |||
5 | PREFIX=${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 | |||
11 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
12 | |||
13 | export RESULT= | ||
14 | export NAMESPACE_NUM=0 | ||
15 | export INTERFACE_NUM=0 | ||
16 | |||
17 | netjail_next_namespace() { | ||
18 | local NUM=$NAMESPACE_NUM | ||
19 | NAMESPACE_NUM=$(($NAMESPACE_NUM + 1)) | ||
20 | RESULT=$NUM | ||
21 | } | ||
22 | |||
23 | netjail_next_interface() { | ||
24 | local NUM=$INTERFACE_NUM | ||
25 | INTERFACE_NUM=$(($INTERFACE_NUM + 1)) | ||
26 | RESULT=$NUM | ||
27 | } | ||
28 | |||
29 | netjail_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 | |||
48 | netjail_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 | |||
65 | netjail_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 | |||
80 | netjail_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 | |||
93 | netjail_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 | |||
104 | netjail_bridge_name() { | ||
105 | netjail_next_interface | ||
106 | local NUM=$RESULT | ||
107 | local BRIDGE=$(printf "%06x-%08x" $PREFIX $NUM) | ||
108 | |||
109 | RESULT=$BRIDGE | ||
110 | } | ||
111 | |||
112 | netjail_bridge_clear() { | ||
113 | local BRIDGE=$1 | ||
114 | |||
115 | ip link delete $BRIDGE | ||
116 | } | ||
117 | |||
118 | netjail_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 | |||
128 | netjail_node_name() { | ||
129 | netjail_next_namespace | ||
130 | local NUM=$RESULT | ||
131 | local NODE=$(printf "%06x-%08x" $PREFIX $NUM) | ||
132 | |||
133 | RESULT=$NODE | ||
134 | } | ||
135 | |||
136 | netjail_node_clear() { | ||
137 | local NODE=$1 | ||
138 | |||
139 | ip netns delete $NODE | ||
140 | } | ||
141 | |||
142 | netjail_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 | |||
169 | netjail_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 | |||
180 | netjail_node_unlink_bridge() { | ||
181 | local LINK_BR=$1 | ||
182 | |||
183 | ip link delete $LINK_BR | ||
184 | } | ||
185 | |||
186 | netjail_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 | |||
197 | netjail_node_add_default() { | ||
198 | local NODE=$1 | ||
199 | local ADDRESS=$2 | ||
200 | |||
201 | ip -n $NODE route add default via $ADDRESS | ||
202 | } | ||
203 | |||
204 | netjail_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 | |||
214 | netjail_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 | |||
222 | netjail_node_exec_without_fds_and_sudo() { | ||
223 | NODE=$1 | ||
224 | shift 1 | ||
225 | |||
226 | ip netns exec $NODE $@ | ||
227 | } | ||
228 | |||
229 | netjail_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 | |||
244 | netjail_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 | |||
254 | netjail_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 | |||
4 | set -eu | ||
5 | set -x | ||
6 | |||
7 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
8 | |||
9 | M=$1 | ||
10 | N=$2 | ||
11 | |||
12 | NODE=$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 | ||
15 | netjail_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 | |||
5 | set -eu | ||
6 | set -x | ||
7 | |||
8 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
9 | |||
10 | filename=$1 | ||
11 | PREFIX=$2 | ||
12 | readfile=$3 | ||
13 | |||
14 | BROADCAST=0 | ||
15 | |||
16 | if [ $readfile -eq 0 ] | ||
17 | then | ||
18 | read_topology_string "$filename" | ||
19 | else | ||
20 | echo read file | ||
21 | read_topology $filename | ||
22 | fi | ||
23 | |||
24 | shift 2 | ||
25 | |||
26 | LOCAL_GROUP="192.168.15" | ||
27 | GLOBAL_GROUP="92.68.150" | ||
28 | KNOWN_GROUP="92.68.151" | ||
29 | |||
30 | if [ $BROADCAST -eq 0 ]; then | ||
31 | PORT="60002" | ||
32 | else | ||
33 | PORT="2086" | ||
34 | fi | ||
35 | |||
36 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16]" | ||
37 | |||
38 | netjail_bridge | ||
39 | NETWORK_NET=$RESULT | ||
40 | |||
41 | for 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 | ||
46 | done | ||
47 | |||
48 | declare -A NODES | ||
49 | declare -A NODE_LINKS | ||
50 | |||
51 | for 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 | ||
92 | done | ||
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 | |||
5 | set -eu | ||
6 | set -x | ||
7 | |||
8 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
9 | |||
10 | filename=$1 | ||
11 | PREFIX=$2 | ||
12 | readfile=$3 | ||
13 | |||
14 | if [ $readfile -eq 0 ] | ||
15 | then | ||
16 | read_topology_string $filename | ||
17 | else | ||
18 | read_topology $filename | ||
19 | fi | ||
20 | |||
21 | declare -A NODES | ||
22 | declare -A NODE_LINKS | ||
23 | |||
24 | netjail_bridge_name | ||
25 | NETWORK_NET=$RESULT | ||
26 | |||
27 | for 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]} | ||
34 | done | ||
35 | |||
36 | for 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]} | ||
61 | done | ||
62 | |||
63 | netjail_bridge_clear $NETWORK_NET | ||
64 | |||
65 | echo "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 | |||
3 | declare -A K_PLUGIN | ||
4 | declare -A R_TCP | ||
5 | declare -A R_UDP | ||
6 | declare -A P_PLUGIN | ||
7 | |||
8 | extract_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 | |||
54 | parse_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 | |||
98 | read_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 | |||
108 | read_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 |
3 | pkgbase = gnunet-git | 3 | pkgbase = 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' |
8 | pkgname="${_appname}-git" | 8 | pkgname="${_appname}-git" |
9 | pkgver=0.17.2.r20.g0780c69e9 | 9 | pkgver=0.17.6.r4.g7bf2f8f59 |
10 | pkgrel=1 | 10 | pkgrel=1 |
11 | pkgdesc='A framework for secure peer-to-peer networking' | 11 | pkgdesc='A framework for secure peer-to-peer networking' |
12 | arch=('i686' 'x86_64') | 12 | arch=('i686' 'x86_64') |
@@ -14,7 +14,7 @@ url="http://${_appname}.org" | |||
14 | license=('AGPL') | 14 | license=('AGPL') |
15 | conflicts=("${_appname}" "${_appname}-bin") | 15 | conflicts=("${_appname}" "${_appname}-bin") |
16 | provides=("${_appname}") | 16 | provides=("${_appname}") |
17 | depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson' | 17 | depends=('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 @@ | |||
1 | pkgbase = gnunet | 1 | pkgbase = 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 | ||
7 | pkgname='gnunet' | 7 | pkgname='gnunet' |
8 | pkgver='0.17.3' | 8 | pkgver='0.17.6' |
9 | pkgrel=1 | 9 | pkgrel=1 |
10 | pkgdesc='A framework for secure peer-to-peer networking' | 10 | pkgdesc='A framework for secure peer-to-peer networking' |
11 | arch=('i686' 'x86_64') | 11 | arch=('i686' 'x86_64') |
12 | url="http://${pkgname}.org" | 12 | url="http://${pkgname}.org" |
13 | license=('AGPL') | 13 | license=('AGPL') |
14 | conflicts=("${pkgname}-git" "${pkgname}-bin") | 14 | conflicts=("${pkgname}-git" "${pkgname}-bin") |
15 | depends=('brotli' 'gettext' 'gnurl' 'gnutls' 'iptables' 'jansson' | 15 | depends=('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") |
42 | install="${pkgname}.install" | 42 | install="${pkgname}.install" |
43 | validpgpkeys=('3D11063C10F98D14BD24D1470B0998EF86F59B6A') | 43 | validpgpkeys=('3D11063C10F98D14BD24D1470B0998EF86F59B6A') |
44 | sha256sums=('74c767b8d0c34f60ddfa4e77a1657365d34c484b5ffaeb3796e3f520a9d50c9e' | 44 | sha256sums=('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 | ||
2 | interface=$1 | ||
3 | status=$2 | ||
4 | |||
5 | do_it=$(gnunet-config -s dns2gns -o ENABLE_RESOLVECTL_NMDISPATCHER -c /etc/gnunet.conf) | ||
6 | if [ $? != 0 ]; then | ||
7 | exit 1 | ||
8 | fi | ||
9 | if [ $do_it = "NO" ]; then | ||
10 | echo "Setting DNS2GNS through resolvectl disabled." | ||
11 | exit 1 | ||
12 | fi | ||
13 | |||
14 | case $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 | ;; | ||
43 | esac | ||
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] | ||
2 | GNUNET_HOME = /var/lib/gnunet/ | ||
3 | GNUNET_DATA_HOME = /var/lib/gnunet/data/ | ||
4 | GNUNET_RUNTIME_DIR = /var/run/gnunet/ | ||
5 | |||
6 | [arm] | ||
7 | START_SYSTEM_SERVICES = YES | ||
8 | START_USER_SERVICES = NO | ||
9 | OPTIONS = -l /var/log/gnunet.log | ||
10 | |||
11 | [dns2gns] | ||
12 | ENABLE_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] | ||
3 | Description=GNUnet user service | ||
4 | After=network.target | ||
5 | |||
6 | [Service] | ||
7 | Type=simple | ||
8 | ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c ~/.config/gnunet.conf | ||
9 | |||
10 | [Install] | ||
11 | WantedBy=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] | ||
3 | Description=GNUnet system service | ||
4 | After=network.target | ||
5 | |||
6 | [Service] | ||
7 | Type=simple | ||
8 | User=gnunet | ||
9 | ExecStart=/usr/lib/gnunet/libexec/gnunet-service-arm -c /etc/gnunet.conf | ||
10 | StateDirectory=gnunet | ||
11 | StateDirectoryMode=0700 | ||
12 | |||
13 | [Install] | ||
14 | WantedBy=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 |
2 | AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include | 2 | AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include |
3 | libexecdir= $(pkglibdir)/libexec/ | ||
3 | 4 | ||
4 | SUBDIRS = gnunet-logread | 5 | SUBDIRS = gnunet-logread |
5 | 6 | ||
@@ -21,7 +22,10 @@ noinst_SCRIPTS = \ | |||
21 | $(awkSCRIPTS) | 22 | $(awkSCRIPTS) |
22 | 23 | ||
23 | bin_SCRIPTS = \ | 24 | bin_SCRIPTS = \ |
24 | gnunet-bugreport \ | 25 | gnunet-bugreport |
26 | |||
27 | # This script is not documented and its usage is quite uncommon. | ||
28 | libexec_SCRIPTS = \ | ||
25 | gnunet-suidfix | 29 | gnunet-suidfix |
26 | 30 | ||
27 | EXTRA_DIST = \ | 31 | EXTRA_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 = \ | |||
71 | SUFFIXES = .py.in .py | 72 | SUFFIXES = .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 | ||
77 | if HAVE_AWK | 78 | if HAVE_AWK |
78 | check-texinfo.awk: check-texinfo.awk.in Makefile | 79 | check-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 |
81 | endif | 82 | endif |
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 | ||
2 | LASTHASH=$(head -n1 ChangeLog | cut -d " " -f 7 | tr -d \( | tr -d \)) | ||
3 | git 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 | """ | ||
3 | Filters and processes warnings generated by Doxygen, which are | ||
4 | annoyingly inconsistent and verbose, for greater readability. | ||
5 | |||
6 | (Neo)vim commands to go to the file and linenumber listed on a | ||
7 | line, in the reports this program generates: | ||
8 | :exe "let linenumber =" split(getline("."))[1] | ||
9 | :exe "edit" fnameescape(split(getline("."))[0]) "|" linenumber | ||
10 | |||
11 | It's easy to put a workflow together to clear up redundant doc | ||
12 | comments (which generate "multiple @param docs" warnings), using | ||
13 | simple vim commands to move the cursor and close buffers, Neovim's | ||
14 | support for the Language Server Protocol or related tooling, and | ||
15 | the command shown above. | ||
16 | |||
17 | A useful sequence, for rapidly deleting a doc comment from its last | ||
18 | line, is, in normal mode, `$v%ddd`. | ||
19 | |||
20 | For setting up LSP integration in Neovim, refer to the lsp_config | ||
21 | plugin. | ||
22 | |||
23 | You may additionally need to generate compile_commands.json in the | ||
24 | repository root, to allow the language server to find everything. | ||
25 | This can be done using Bear (found at https://github.com/rizsotto/Bear). | ||
26 | |||
27 | @author: willow <willow@howhill.com> | ||
28 | """ | ||
29 | |||
30 | import argparse as ap | ||
31 | import re | ||
32 | |||
33 | # Regular expression construction | ||
34 | |||
35 | def sep_re(field, separator): | ||
36 | "Constructs regex for a list" | ||
37 | return rf"{field}(?:{separator}{field})*" | ||
38 | |||
39 | # File names and paths | ||
40 | fileclass = r"[\w-]" | ||
41 | filename = rf"{fileclass}+" | ||
42 | # filename = rf"(/{fileclass}+)+\.\w" | ||
43 | filepath = rf"{sep_re(filename, '/')}\.(?:\w+)" | ||
44 | main_match = rf"(?P<path>/{filepath}|\[generated\]):(?P<linenumber>\d+): warning:" | ||
45 | |||
46 | # Symbols | ||
47 | type_name = rf"(?:const )?(?:unsigned (?:long )?|struct |enum )?(?:\w+)(?: \*?const)? \*{{0,3}}" | ||
48 | var_def = rf"{type_name}\w+(?:\[(?:\(\d+/\d+\))?\])?" | ||
49 | func_params = rf"\({sep_re(var_def, ', ')}(?:,\.\.\.)?\)" | ||
50 | simple_name = r"\w+" | ||
51 | func_name = simple_name | ||
52 | verbose_name = rf"{sep_re(simple_name, ' ')}" | ||
53 | command_re = "(?:</[^>]+>|\\\w+)" | ||
54 | macro_params = rf"\({sep_re(simple_name, ', ')}(?:,\.\.\.)?\)" | ||
55 | |||
56 | |||
57 | matches = { | ||
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 | |||
83 | parser_choices = set(matches.keys()) - {"blank", | ||
84 | "eof inside code block (line 2)", | ||
85 | "undocumented param (name)"} | ||
86 | |||
87 | parser = ap.ArgumentParser() | ||
88 | parser.add_argument("filename") | ||
89 | parser.add_argument("--summary", "-s", action="store_true") | ||
90 | parser.add_argument("--key", "-k", choices=parser_choices, action="append", dest="keys") | ||
91 | args = parser.parse_args() | ||
92 | |||
93 | sorted_lines = {k:[] for k in matches.keys()} | ||
94 | unsorted_lines = [] | ||
95 | |||
96 | with 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 | |||
106 | processed_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 | ||
111 | processed_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 | ||
117 | del processed_lines["blank"] | ||
118 | del processed_lines["eof inside code block (line 2)"] | ||
119 | del processed_lines["undocumented param (name)"] | ||
120 | |||
121 | # Preparing count dictionary and summarising the results | ||
122 | counts = {k: len(v) for k, v in processed_lines.items()} | ||
123 | if args.summary: | ||
124 | for k, v in counts.items(): | ||
125 | print(k+":", v) | ||
126 | print("") | ||
127 | |||
128 | if 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 | |||
3 | PACKAGE=$1 | ||
4 | VERSION=$2 | ||
5 | |||
6 | cat << EOF >> $PACKAGE-$VERSION.directive | ||
7 | version: 1.2 | ||
8 | directory: gnunet | ||
9 | filename: $PACKAGE-$VERSION.tar.gz | ||
10 | symlink: $PACKAGE-$VERSION.tar.gz $PACKAGE-latest.tar.gz | ||
11 | EOF | ||
12 | |||
13 | gpg --clearsign $PACKAGE-$VERSION.directive | ||
14 | gpg -b $PACKAGE-$VERSION.tar.gz | ||
15 | exit | ||
16 | ftp -inv ftp-upload.gnu.org <<EOF | ||
17 | user anonymous | ||
18 | cd incoming/ftp | ||
19 | mput $PACKAGE-$VERSION.tar.gz $PACKAGE-$VERSION.tar.gz.sig $PACKAGE-$VERSION.tar.gz.directive.asc | ||
20 | bye | ||
21 | EOF | ||
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 | |||
4 | SUFFIXES = .in | 4 | SUFFIXES = .in |
5 | 5 | ||
6 | gnunet-logread: gnunet-logread.in Makefile | 6 | gnunet-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 | ||
10 | gnunet-logread-ipc-sdedit: gnunet-logread-ipc-sdedit.in Makefile | 10 | gnunet-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 | ||
14 | CLEANFILES= \ | 14 | CLEANFILES= \ |
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 @@ | |||
1 | install_data('gnunet-bugreport', | ||
2 | install_dir: get_option('bindir')) | ||
3 | install_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 | |||
4 | JAILOR=${SUDO_USER:?must run in sudo} | ||
5 | PREFIX=${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 | |||
11 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
12 | |||
13 | export RESULT= | ||
14 | export NAMESPACE_NUM=0 | ||
15 | export INTERFACE_NUM=0 | ||
16 | |||
17 | netjail_next_namespace() { | ||
18 | local NUM=$NAMESPACE_NUM | ||
19 | NAMESPACE_NUM=$(($NAMESPACE_NUM + 1)) | ||
20 | RESULT=$NUM | ||
21 | } | ||
22 | |||
23 | netjail_next_interface() { | ||
24 | local NUM=$INTERFACE_NUM | ||
25 | INTERFACE_NUM=$(($INTERFACE_NUM + 1)) | ||
26 | RESULT=$NUM | ||
27 | } | ||
28 | |||
29 | netjail_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 | |||
48 | netjail_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 | |||
65 | netjail_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 | |||
80 | netjail_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 | |||
93 | netjail_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 | |||
104 | netjail_bridge_clear() { | ||
105 | local BRIDGE=$1 | ||
106 | |||
107 | ip link delete $BRIDGE | ||
108 | } | ||
109 | |||
110 | netjail_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 | |||
120 | netjail_node_clear() { | ||
121 | local NODE=$1 | ||
122 | |||
123 | ip netns delete $NODE | ||
124 | } | ||
125 | |||
126 | netjail_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 | |||
153 | netjail_node_unlink_bridge() { | ||
154 | local LINK_BR=$1 | ||
155 | |||
156 | ip link delete $LINK_BR | ||
157 | } | ||
158 | |||
159 | netjail_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 | |||
167 | netjail_node_add_default() { | ||
168 | local NODE=$1 | ||
169 | local ADDRESS=$2 | ||
170 | |||
171 | ip -n $NODE route add default via $ADDRESS | ||
172 | } | ||
173 | |||
174 | netjail_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 | |||
183 | netjail_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 | |||
198 | netjail_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 | |||
208 | netjail_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 | |||
5 | set -eu | ||
6 | set -x | ||
7 | |||
8 | export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||
9 | |||
10 | PREFIX=$PPID | ||
11 | LOCAL_M=$1 | ||
12 | GLOBAL_N=$2 | ||
13 | |||
14 | shift 2 | ||
15 | |||
16 | netjail_check $(($LOCAL_M * $GLOBAL_N)) | ||
17 | |||
18 | # Starts optionally an amount of nodes without NAT starting with "92.68.151.1" | ||
19 | netjail_opt '--known' $@ | ||
20 | KNOWN=$RESULT | ||
21 | netjail_opts '--known' 0 $@ | ||
22 | KNOWN_NUM=$RESULT | ||
23 | |||
24 | # Starts optionally 'stunserver' on "92.68.150.254": | ||
25 | netjail_opt '--stun' $@ | ||
26 | STUN=$RESULT | ||
27 | |||
28 | if [ $KNOWN -gt 0 ]; then | ||
29 | shift 2 | ||
30 | |||
31 | KNOWN=$KNOWN_NUM | ||
32 | |||
33 | netjail_check $(($LOCAL_M * $GLOBAL_N + $KNOWN)) | ||
34 | fi | ||
35 | |||
36 | if [ $STUN -gt 0 ]; then | ||
37 | netjail_check_bin stunserver | ||
38 | |||
39 | shift 1 | ||
40 | fi | ||
41 | |||
42 | netjail_check_bin $1 | ||
43 | |||
44 | LOCAL_GROUP="192.168.15" | ||
45 | GLOBAL_GROUP="92.68.150" | ||
46 | KNOWN_GROUP="92.68.151" | ||
47 | |||
48 | CLEANUP=0 | ||
49 | echo "Start [local: $LOCAL_GROUP.0/24, global: $GLOBAL_GROUP.0/16, stun: $STUN]" | ||
50 | |||
51 | netjail_bridge | ||
52 | NETWORK_NET=$RESULT | ||
53 | |||
54 | for 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 | ||
59 | done | ||
60 | |||
61 | declare -A NODES | ||
62 | declare -A NODE_LINKS | ||
63 | |||
64 | for 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 | ||
88 | done | ||
89 | |||
90 | WAITING="" | ||
91 | KILLING="" | ||
92 | |||
93 | if [ $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="$!" | ||
101 | fi | ||
102 | |||
103 | for 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" | ||
111 | done | ||
112 | |||
113 | for 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 | ||
123 | done | ||
124 | |||
125 | cleanup() { | ||
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 | |||
151 | trapped_cleanup() { | ||
152 | netjail_killall $WAITING | ||
153 | netjail_killall $KILLING | ||
154 | |||
155 | cleanup | ||
156 | } | ||
157 | |||
158 | trap 'trapped_cleanup' ERR | ||
159 | |||
160 | netjail_waitall $WAITING | ||
161 | netjail_killall $KILLING | ||
162 | wait | ||
163 | |||
164 | cleanup | ||
165 | |||
166 | echo "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 | |||
3 | OLDVERSION=$1 | ||
4 | |||
5 | git --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' | ||
6 | echo "" | ||
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 | ||
2 | NEW_VERSION=$1 | ||
3 | if [ -z $NEW_VERSION ]; then | ||
4 | NEW_VERSION="Unreleased" | ||
5 | fi | ||
6 | DELTA_SH="contrib/scripts/news_delta.sh" | ||
7 | LASTVER=$(head -n1 NEWS | tr -d :) | ||
8 | |||
9 | echo "$NEW_VERSION:" > NEWS.delta || exit 1 | ||
10 | $DELTA_SH $LASTVER >> NEWS.delta || exit 1 | ||
11 | cp NEWS NEWS.bak || exit 1 | ||
12 | cat NEWS.delta > NEWS || exit 1 | ||
13 | cat NEWS.bak >> NEWS || exit 1 | ||
14 | rm 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 | |||