diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 271 |
1 files changed, 222 insertions, 49 deletions
@@ -15,26 +15,70 @@ GNU package (http://www.gnu.org/). | |||
15 | This is an ALPHA release. There are known and significant bugs as | 15 | This is an ALPHA release. There are known and significant bugs as |
16 | well as many missing features in this release. | 16 | well as many missing features in this release. |
17 | 17 | ||
18 | GNUnet is free software released under the GNU General Public License | 18 | GNUnet is free software released under the GNU Affero General Public |
19 | (v3 or later). For details see the COPYING file in this directory. | 19 | License (v3 or later). For details see the COPYING file in this |
20 | directory. If you fork this software, you MUST adjust GNUNET_AGPL_URL | ||
21 | in src/include/gnunet_util_lib.h to point to the source code of your | ||
22 | fork! | ||
20 | 23 | ||
21 | Additional documentation about GNUnet can be found at | 24 | Additional documentation about GNUnet can be found at |
22 | https://gnunet.org/ and in the doc/ folder. | 25 | https://gnunet.org/ and in the 'doc/' folder. |
23 | 26 | ||
24 | 27 | ||
25 | Dependencies: | 28 | Dependencies: |
26 | ============= | 29 | ============= |
27 | 30 | ||
28 | Please note that for many of its dependencies GNUnet requires very | 31 | These are the direct dependencies for running GNUnet: |
29 | recent versions of the libraries which are often NOT to be found in | ||
30 | stable distributions in 2014. While using older packages may in some | ||
31 | cases on some operating systems may seem to work in some limited | ||
32 | fashion, we are in many cases aware of serious problems with older | ||
33 | packages. Hence please make sure to use the versions listed below. | ||
34 | 32 | ||
33 | - libmicrohttpd >= 0.9.42 | ||
34 | - libgcrypt >= 1.6 | ||
35 | - libgnurl >= 7.35.0 (recommended, available from https://gnunet.org/gnurl) | ||
36 | - libcurl >= 7.35.0 (alternative to libgnurl) | ||
37 | - libunistring >= 0.9.2 | ||
38 | - gnutls >= 3.2.12 (highly recommended a gnutls linked against libunbound) | ||
39 | - libidn >= 1.0 | ||
40 | - libextractor >= 0.6.1 (highly recommended) | ||
41 | - openssl >= 1.0 (binary, used to generate X.509 certificate) | ||
42 | - libltdl >= 2.2 (part of GNU libtool) | ||
43 | - sqlite >= 3.8 (default database, required) | ||
44 | - mysql >= 5.1 (alternative to sqlite) | ||
45 | - postgres >= 9.5 (alternative to sqlite) | ||
46 | - Texinfo >= 5.2 [*1] | ||
47 | - which (for the bootstrap script) | ||
48 | - gettext | ||
49 | - zlib | ||
50 | - pkg-config | ||
51 | |||
52 | |||
53 | These are the dependencies for GNUnet's testsuite: | ||
54 | |||
55 | - Bash (optional (?), for some tests) | ||
56 | - python >= 2.7 (optional, only python 2.7 is supported) | ||
57 | - python-future >= 2.7 (optional, only python 2.7 is supported) | ||
58 | |||
59 | |||
60 | These are the optional dependencies: | ||
61 | |||
62 | - libopus >= 1.0.1 (optional, for experimental conversation tool) | ||
63 | - libpulse >= 2.0 (optional, for experimental conversation tool) | ||
64 | - libogg >= 1.3.0 (optional, for experimental conversation tool) | ||
65 | - libnss (optional, certtool binary (for convenient installation of GNS proxy)) | ||
66 | - python-future (optional, for some testcases and utilities) | ||
67 | - python-zbar >= 0.10 (optional, for gnunet-qr) | ||
68 | - TeX Live >= 2012 (optional, for gnunet-bcd[*]) | ||
69 | - libglpk >= 4.45 (optional, for experimental code) | ||
70 | - perl5 (optional, for some utilities) | ||
71 | - python >= 2.7 (optional, for gnunet-qr, only python 2.7 is supported) | ||
72 | - bluez (optional, for bluetooth support) | ||
73 | - miniupnpc | ||
74 | - libpbc >= 0.5.14 (optional, for Attribute-Based Encryption and Identity Provider functionality) | ||
75 | - libgabe (optional, for Attribute-Based Encryption and Identity Provider functionality, | ||
76 | from https://github.com/schanzen/libgabe) | ||
77 | |||
78 | ======= | ||
35 | These are the direct dependencies for running GNUnet: | 79 | These are the direct dependencies for running GNUnet: |
36 | 80 | ||
37 | - libmicrohttpd >= 0.9.42 | 81 | - libmicrohttpd >= 0.9.52 |
38 | - libgcrypt >= 1.6 | 82 | - libgcrypt >= 1.6 |
39 | - libgnurl >= 7.35.0 (available from https://gnunet.org/gnurl) | 83 | - libgnurl >= 7.35.0 (available from https://gnunet.org/gnurl) |
40 | - libunistring >= 0.9.2 | 84 | - libunistring >= 0.9.2 |
@@ -51,53 +95,141 @@ These are the direct dependencies for running GNUnet: | |||
51 | - libogg >= 1.3.0 (optional for experimental conversation tool) | 95 | - libogg >= 1.3.0 (optional for experimental conversation tool) |
52 | - python-zbar >= 0.10 (optional for gnunet-qr) | 96 | - python-zbar >= 0.10 (optional for gnunet-qr) |
53 | - TeX Live >= 2012 (optional for gnunet-bcd[*]) | 97 | - TeX Live >= 2012 (optional for gnunet-bcd[*]) |
54 | - Texinfo >= 5.2 | 98 | - Texinfo >= 5.2 [*1] |
55 | - libglpk >= 4.45 (optional for experimental code) | 99 | - libglpk >= 4.45 (optional for experimental code) |
56 | 100 | ||
57 | Recommended autotools for compiling the git version are: | 101 | Recommended autotools for compiling the git version are: |
58 | - autoconf >= 2.59 | 102 | |
59 | - automake >= 1.11.1 | 103 | - autoconf >= 2.59 |
60 | - libtool >= 2.2 | 104 | - automake >= 1.11.1 |
105 | - libtool >= 2.2 | ||
61 | 106 | ||
62 | 107 | ||
63 | [*] Mandatory for compiling the info output of the documentation, | 108 | [*] Mandatory for compiling the info output of the documentation, |
64 | a limited subset ('texlive-tiny' in Guix) is enough. | 109 | a limited subset ('texlive-tiny' in Guix) is enough. |
110 | |||
111 | [*1] The default configuration is to build the info output of the | ||
112 | documentation, and therefore require texinfo. You can pass | ||
113 | '--disable-documentation' to the configure script to change this. | ||
114 | |||
115 | Requirements | ||
116 | ============ | ||
117 | |||
118 | GNUnet's directed acyclic graph (DAG) will require around 0.74 GiB | ||
119 | Diskspace, with GNUNet itself taking around 9.2 MiB reported by the | ||
120 | build on GNU Guix. | ||
65 | 121 | ||
66 | How to install? | 122 | How to install? |
67 | =============== | 123 | =============== |
68 | 124 | ||
69 | The fastest way is to use a binary package if it is available for your | 125 | |
70 | system. For a more detailed description, read the installation | 126 | binary packages |
71 | instructions on the webpage at https://gnunet.org/installation. | 127 | ~~~~~~~~~~~~~~~ |
128 | |||
129 | We recommend to use binary packages provided by your Operating System's | ||
130 | package manager. GNUnet is reportedly available for at least: | ||
131 | |||
132 | GNU Guix, Nix, Debian, ALT Linux, Archlinux, Deepin, Devuan, Hyperbola, | ||
133 | Kali Linux, LEDE/OpenWRT, Manjaro, Parabola, Pardus, Parrot, PureOS, | ||
134 | Raspbian, Rosa, Trisquel, and Ubuntu. | ||
135 | |||
136 | If GNUnet is available for your Operating System and it is missing, | ||
137 | send us feedback so that we can add it to this list. Furthermore, if | ||
138 | you are interested in packaging GNUnet for your Operating System, | ||
139 | get in touch with us at gnunet-developers@gnu.org if you require | ||
140 | help with this job. | ||
141 | |||
142 | If you were using an Operating System with the apt package manager, | ||
143 | GNUnet could be installed as simple as: | ||
144 | |||
145 | $ apt-get install gnunet | ||
146 | |||
72 | Generic installation instructions are in the INSTALL file in this | 147 | Generic installation instructions are in the INSTALL file in this |
73 | directory. | 148 | directory. |
74 | 149 | ||
150 | Scope of Operating System support | ||
151 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
152 | We actively support GNUnet on a broad range of Free Software Operating | ||
153 | Systems. | ||
154 | |||
155 | For proprietary Operating Systems, like for example Microsoft Windows | ||
156 | or Apple OS X, we accept patches if they don't break anything for | ||
157 | other Operating Systems. | ||
158 | If you are implementing support for a proprietary Operating System, | ||
159 | you should be aware that progress in our codebase could break | ||
160 | functionality on your OS and cause unpredicted behavior we can | ||
161 | not test. However, we do not break support on Operating Systems | ||
162 | with malicious intent. | ||
163 | Regressions which do occur on these Operating Systems are 3rd | ||
164 | class issues and we expect users and developers of these | ||
165 | Operating Systems to send proposed patches to fix regressions. | ||
166 | |||
167 | For more information about our stand on some of the motivating | ||
168 | points here, read the 'Philosophy' Chapter of our handbook. | ||
169 | |||
170 | Building GNUnet from source | ||
171 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
172 | |||
173 | IMPORTANT: You can read further notes about compilation from source in | ||
174 | the 'doc/FILENAME' document, which includes notes about specific | ||
175 | requirements for operating systems aswell. If you are a package | ||
176 | mantainer for an Operating System we invite you to add your notes if | ||
177 | you feel it is necessary and can not be covered in your Operating | ||
178 | System's documentation. | ||
179 | |||
180 | If you are building GNUnet from source you are either interested | ||
181 | in furthering its development (we have further notes for developer | ||
182 | builds in our 'GNUnet Developer Handbook') or you don't trust other | ||
183 | people's binaries or your Operating System doesn't provide any | ||
184 | binary package (at the moment). | ||
185 | |||
186 | If you're on Gentoo you can build GNUnet using the recipes provided | ||
187 | in the 'youbroketheinternet' overlay. Other Operating Systems may | ||
188 | unintentionally require you to build GNUnet from source. | ||
189 | |||
190 | Two prominent examples which currently lack cross-compilation | ||
191 | support in GNUnet (and native binaries) are MS Windows and Apple macOS. | ||
192 | For macOS we recommend you to do the build process via Homebrew and a | ||
193 | recent XCode installation. We don't recommend using GNUnet with any | ||
194 | recent MS Windows system as it officially spies on its users (according | ||
195 | to its T&C), defying some of the purposes of GNUnet. | ||
196 | |||
75 | Note that some functions of GNUnet require "root" access. GNUnet will | 197 | Note that some functions of GNUnet require "root" access. GNUnet will |
76 | install (tiny) SUID binaries for those functions is you run "make | 198 | install (tiny) SUID binaries for those functions is you run "make |
77 | install" as root. If you do not, GNUnet will still work, but some | 199 | install" as root. If you do not, GNUnet will still work, but some |
78 | functionality will not be available (including certain forms of NAT | 200 | functionality will not be available (including certain forms of NAT |
79 | traversal). | 201 | traversal). |
80 | 202 | ||
81 | GNUnet requires the GNU MP library (http://www.gnu.org/software/gmp/) | 203 | GNUnet requires the GNU MP library (https://www.gnu.org/software/gmp/) |
82 | and libgcrypt (http://www.gnupg.org/). You can specify the path to | 204 | and libgcrypt (https://www.gnupg.org/). You can specify the path to |
83 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also | 205 | libgcrypt by passing "--with-gcrypt=PATH" to configure. You will also |
84 | need either sqlite (http://www.sqlite.org/), MySQL | 206 | need either sqlite (http://www.sqlite.org/), MySQL |
85 | (http://www.mysql.org/) or PostGres (http://www.postgres.org/). | 207 | (http://www.mysql.org/) or PostGres (http://www.postgres.org/). |
86 | 208 | ||
87 | If you install from source, you need to install GNU libextractor first | 209 | If you install from source, you need to install GNU libextractor first |
88 | (download from http://www.gnu.org/software/libextractor/). We also | 210 | (download from https://www.gnu.org/software/libextractor/). We also |
89 | recommend installing GNU libmicrohttpd (download from | 211 | recommend installing GNU libmicrohttpd (download from |
90 | http://www.gnu.org/software/libmicrohttpd/). Then you can start the | 212 | https://www.gnu.org/software/libmicrohttpd/). Furthermore we recommend |
91 | actual GNUnet compilation and installation process with: | 213 | libgnurl (from https://gnunet.org/gnurl). |
214 | Then you can start the actual GNUnet compilation process with: | ||
215 | |||
92 | 216 | ||
93 | $ export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice | 217 | $ export GNUNET_PREFIX=/usr/local/lib # or other directory of your choice |
94 | # addgroup gnunetdns | 218 | # addgroup gnunetdns |
95 | # adduser --system --home "/var/lib/gnunet" --group gnunet --shell /bin/sh | 219 | # adduser --system --home "/var/lib/gnunet" --group gnunet --shell /bin/sh |
96 | # ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX | 220 | # ./configure --prefix=$GNUNET_PREFIX/.. --with-extractor=$LE_PREFIX |
97 | $ make | 221 | $ make |
222 | |||
223 | And finally install GNUnet with: | ||
224 | |||
98 | # make install | 225 | # make install |
226 | |||
227 | Complete the process by either adjusting one of our example service files | ||
228 | in 'contrib/services' or by running: | ||
229 | |||
99 | # sudo -u gnunet gnunet-arm -s | 230 | # sudo -u gnunet gnunet-arm -s |
100 | 231 | ||
232 | |||
101 | Note that running the 'configure' and 'make install' steps as | 233 | Note that running the 'configure' and 'make install' steps as |
102 | root (or with sudo) is required as some parts of the installation | 234 | root (or with sudo) is required as some parts of the installation |
103 | require the creation of SUID binaries. The installation will | 235 | require the creation of SUID binaries. The installation will |
@@ -131,7 +263,7 @@ certain binaries that require additional priviledges will not be | |||
131 | installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and | 263 | installed properly (and autonomous NAT traversal, WLAN, DNS/GNS and |
132 | the VPN will then not work). | 264 | the VPN will then not work). |
133 | 265 | ||
134 | If you run 'configure' and 'make install' as root or use the SUDO | 266 | If you run 'configure' and 'make install' as root or use the '--with-sudo' |
135 | option, GNUnet's build system will install "libnss_gns*" libraries to | 267 | option, GNUnet's build system will install "libnss_gns*" libraries to |
136 | "/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified, | 268 | "/lib/" regardless (!) of the $GNUNET_PREFIX you might have specified, |
137 | as those libraries must be in "/lib/". If you are packaging GNUnet | 269 | as those libraries must be in "/lib/". If you are packaging GNUnet |
@@ -139,14 +271,14 @@ for binary distribution, this may cause your packaging script to miss | |||
139 | those plugins, so you might need to do some additional manual work to | 271 | those plugins, so you might need to do some additional manual work to |
140 | include those libraries in your binary package(s). Similarly, if you | 272 | include those libraries in your binary package(s). Similarly, if you |
141 | want to use the GNUnet naming system and did NOT run GNUnet's 'make | 273 | want to use the GNUnet naming system and did NOT run GNUnet's 'make |
142 | install' process with SUDO rights, the libraries will be installed to | 274 | install' process with sudo rights, the libraries will be installed to |
143 | "$GNUNET_PREFIX" and you will have to move them to "/lib/" | 275 | "$GNUNET_PREFIX" and you will have to move them to "/lib/" |
144 | manually. | 276 | manually. |
145 | 277 | ||
146 | Finally, if you are compiling the code from git, you have to | 278 | Finally, if you are compiling the code from git, you have to |
147 | run ". bootstrap" before ./configure. If you receive an error during | 279 | run "sh ./bootstrap" before running "./configure". If you receive an error during |
148 | the running of ". bootstrap" that looks like "macro `AM_PATH_GTK' not | 280 | the running of "sh ./bootstrap" that looks like "macro `AM_PATH_GTK' |
149 | found in library", you may need to run aclocal by hand with the -I | 281 | not found in library", you may need to run aclocal by hand with the -I |
150 | option, pointing to your aclocal m4 macros, i.e. | 282 | option, pointing to your aclocal m4 macros, i.e. |
151 | 283 | ||
152 | $ aclocal -I /usr/local/share/aclocal | 284 | $ aclocal -I /usr/local/share/aclocal |
@@ -165,7 +297,7 @@ configuration for the peer. gnunet-setup can be used to configure and | |||
165 | test (!) the network settings, choose which applications should be run | 297 | test (!) the network settings, choose which applications should be run |
166 | and configure databases. Other options you might want to control | 298 | and configure databases. Other options you might want to control |
167 | include system limitations (such as disk space consumption, bandwidth, | 299 | include system limitations (such as disk space consumption, bandwidth, |
168 | etc.). The resulting configuration files are human-readable and can | 300 | etc). The resulting configuration files are human-readable and can |
169 | theoretically be created or edited by hand. | 301 | theoretically be created or edited by hand. |
170 | 302 | ||
171 | gnunet-setup is a separate download and requires somewhat recent | 303 | gnunet-setup is a separate download and requires somewhat recent |
@@ -181,10 +313,17 @@ configuration file should be located in "~/.config/gnunet.conf" or its | |||
181 | location can be specified by giving the "-c" option to the respective | 313 | location can be specified by giving the "-c" option to the respective |
182 | GNUnet application. | 314 | GNUnet application. |
183 | 315 | ||
316 | For more information about the configuration (as well as usage) refer | ||
317 | to the 'GNUnet User Handbook' chapter of the documentation, included | ||
318 | in this software distribution. | ||
319 | |||
184 | 320 | ||
185 | Usage | 321 | Usage |
186 | ===== | 322 | ===== |
187 | 323 | ||
324 | For detailed usage notes, instructions and examples, refer to the | ||
325 | included 'GNUnet User Handbook'. | ||
326 | |||
188 | First, you must obtain an initial list of GNUnet hosts. Knowing a | 327 | First, you must obtain an initial list of GNUnet hosts. Knowing a |
189 | single peer is sufficient since after that GNUnet propagates | 328 | single peer is sufficient since after that GNUnet propagates |
190 | information about other peers. Note that the default configuration | 329 | information about other peers. Note that the default configuration |
@@ -210,9 +349,9 @@ UDP or WLAN will discover each other automatically (if they are in the | |||
210 | vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts | 349 | vicinity of each other) using broadcasts (IPv4/WLAN) or multicasts |
211 | (IPv6). | 350 | (IPv6). |
212 | 351 | ||
213 | The local node is started using "gnunet-arm -s". GNUnet should run | 352 | The local node is started using "gnunet-arm -s". We recommend to run |
214 | 24/7 if you want to maximize your anonymity, as this makes partitioning | 353 | GNUnet 24/7 if you want to maximize your anonymity, as this makes |
215 | attacks harder. | 354 | partitioning attacks harder. |
216 | 355 | ||
217 | Once your peer is running, you should then be able to access GNUnet | 356 | Once your peer is running, you should then be able to access GNUnet |
218 | using the shell: | 357 | using the shell: |
@@ -229,41 +368,47 @@ together with a description. To publish files on GNUnet, use the | |||
229 | "gnunet-publish" command. | 368 | "gnunet-publish" command. |
230 | 369 | ||
231 | 370 | ||
232 | The GTK user interface is shipped separately. After downloading and | 371 | The GTK+ (or: Gimp Toolkit) user interface is shipped separately. |
233 | installing gnunet-gtk, you can invoke the setup tool and the | 372 | After installing gnunet-gtk, you can invoke the setup tool and |
234 | file-sharing GUI with: | 373 | the file-sharing GUI with: |
235 | 374 | ||
236 | $ gnunet-setup | 375 | $ gnunet-setup |
237 | $ gnunet-fs-gtk | 376 | $ gnunet-fs-gtk |
238 | 377 | ||
239 | For further documentation, see our webpage. | 378 | For further documentation, see our webpage or the 'GNUnet User Handbook', |
379 | included in this software distribution. | ||
240 | 380 | ||
241 | 381 | ||
242 | Hacking GNUnet | 382 | Hacking GNUnet |
243 | ============== | 383 | ============== |
244 | 384 | ||
245 | Contributions are welcome, please submit bugs to | 385 | Contributions are welcome. Please submit bugs you find to |
246 | https://gnunet.org/bugs/. Please make sure to run contrib/report.sh | 386 | https://gnunet.org/bugs/. |
387 | Please make sure to run the script "contrib/scripts/gnunet-bugreport" | ||
247 | and include the output with your bug reports. More about how to | 388 | and include the output with your bug reports. More about how to |
248 | report bugs can be found in the GNUnet FAQ on the webpage. Submit | 389 | report bugs can be found in the GNUnet FAQ on the webpage. Submit |
249 | patches via E-Mail to gnunet-developers@gnu.org. | 390 | patches via E-Mail to gnunet-developers@gnu.org, formated with |
391 | `git format-patch`. | ||
250 | 392 | ||
251 | In order to run the unit tests with by hand (instead of using | 393 | In order to run the unit tests by hand (instead of using "make check"), |
252 | "make check"), you need to | 394 | you need to set the environment variable "GNUNET_PREFIX" to the |
253 | set an environment variable ("GNUNET_PREFIX") to the directory | 395 | directory where GNUnet's libraries are installed. |
254 | where GNUnet's libraries are installed. | 396 | Before running any testcases, you must complete the installation. |
255 | Also, before running any testcases, you must | 397 | |
256 | complete the installation first. Quick summary: | 398 | Quick summary: |
257 | 399 | ||
258 | $ ./configure --prefix=$SOMEWHERE | 400 | $ ./configure --prefix=$SOMEWHERE |
259 | $ make | 401 | $ make |
260 | $ make install | 402 | $ make install |
403 | $ export $GNUNET_PREFIX=$SOMEWHERE | ||
261 | $ make check | 404 | $ make check |
262 | 405 | ||
263 | Some of the testcases require python >= 2.6 and pexpect to be | 406 | Some of the testcases require python >= 2.7, and the python modules |
264 | installed. If any testcases fail to pass on your system, run | 407 | "python-future" (http://python-future.org/) and "pexpect" to be installed. |
265 | "contrib/report.sh" and report the output together with | 408 | If any testcases fail to pass on your system, run |
266 | information about the failing testcase to the Mantis bugtracking | 409 | "contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport" |
410 | when you already have GNUnet installed and report its output together with | ||
411 | information about the failing testcase(s) to the Mantis bugtracking | ||
267 | system at https://gnunet.org/bugs/. | 412 | system at https://gnunet.org/bugs/. |
268 | 413 | ||
269 | 414 | ||
@@ -303,6 +448,34 @@ throttled by ISPs that dislike P2P. Details for configuring the | |||
303 | reverse proxy are documented on our website. | 448 | reverse proxy are documented on our website. |
304 | 449 | ||
305 | 450 | ||
451 | Further Reading | ||
452 | =============== | ||
453 | |||
454 | * Documentation | ||
455 | |||
456 | A HTML version of the new GNUnet manual is deployed at | ||
457 | |||
458 | https://docs.gnunet.org | ||
459 | |||
460 | which currently displays just GNUnet documentation. Until 2019 | ||
461 | we will add more reading material. | ||
462 | |||
463 | * Academia / papers | ||
464 | |||
465 | In almost 20 years various people in our community have written and | ||
466 | collected a good number of papers which have been implemented in | ||
467 | GNUnet or projects around GNUnet. | ||
468 | There are currently 2 ways to get them: | ||
469 | |||
470 | * Using git: | ||
471 | git clone https://gnunet.org/git/bibliography.git | ||
472 | * Using Drupal: | ||
473 | https://gnunet.org/bibliography | ||
474 | |||
475 | The Drupal access will be replaced by a new interface to our | ||
476 | bibliography in 2019. | ||
477 | |||
478 | |||
306 | Stay tuned | 479 | Stay tuned |
307 | ========== | 480 | ========== |
308 | 481 | ||