diff --git a/i2p2www/translations/az/LC_MESSAGES/blog.po b/i2p2www/translations/az/LC_MESSAGES/blog.po
new file mode 100644
index 00000000..338c4f06
--- /dev/null
+++ b/i2p2www/translations/az/LC_MESSAGES/blog.po
@@ -0,0 +1,8333 @@
+# Azerbaijani translations for I2P.
+# Copyright (C) 2018 ORGANIZATION
+# This file is distributed under the same license as the I2P project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: http://trac.i2p2.de\n"
+"POT-Creation-Date: 2018-08-24 11:47+0000\n"
+"PO-Revision-Date: 2018-08-24 11:51+0000\n"
+"Last-Translator: zzzi2p\n"
+"Language-Team: Azerbaijani "
+"(http://www.transifex.com/otf/I2P/language/az/)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:24
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:11
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:25
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:12
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:12
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:17
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:12
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:16
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:16
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:26
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:19
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:19
+msgid "Files are available on the `download page`_."
+msgstr ""
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:28
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:15
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:29
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:16
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:16
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:21
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:16
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:20
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:20
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:30
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:23
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:23
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:39
+msgid "`download page`"
+msgstr ""
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:30
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:17
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:31
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:18
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:19
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:18
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:22
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:22
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:32
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:25
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:79
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:45
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:13
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:101
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:26
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:48
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:34
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:35
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:65
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:29
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:37
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:32
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:38
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:36
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:43
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:27
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:30
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:44
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:36
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:34
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:73
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:53
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:35
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:54
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:33
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:35
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:32
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:56
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:32
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:29
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:30
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:30
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:36
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:33
+msgid "RELEASE DETAILS"
+msgstr ""
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:32
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:19
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:33
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:40
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:50
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:24
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:24
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:34
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:103
+msgid "Major Changes"
+msgstr ""
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:44
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:24
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:43
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:55
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:47
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:58
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:43
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:32
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:30
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:39
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:81
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:54
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:112
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:34
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:51
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:40
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:41
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:76
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:39
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:50
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:35
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:51
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:55
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:53
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:30
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:40
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:57
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:52
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:42
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:80
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:63
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:47
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:71
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:43
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:47
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:48
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:68
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:41
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:37
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:43
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:38
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:45
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:43
+msgid "Bug Fixes"
+msgstr ""
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:54
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:30
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:47
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:69
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:63
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:68
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:54
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:41
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:36
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:51
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:43
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:94
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:63
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:19
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:118
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:52
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:99
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:49
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:47
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:87
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:49
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:57
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:42
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:60
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:68
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:65
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:38
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:49
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:75
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:65
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:50
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:89
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:76
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:53
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:83
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:58
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:57
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:62
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:82
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:54
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:44
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:74
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:47
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:57
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:53
+msgid "Other"
+msgstr "Digər"
+
+#: i2p2www/blog/2011/10/11/0.8.9-Release.rst:73
+#: i2p2www/blog/2011/10/20/0.8.10-Release.rst:36
+#: i2p2www/blog/2011/11/08/0.8.11-Release.rst:51
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:82
+#: i2p2www/blog/2012/02/27/0.8.13-Release.rst:75
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:96
+#: i2p2www/blog/2012/07/30/0.9.1-Release.rst:76
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:52
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:56
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:67
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:56
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:110
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:79
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:30
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:129
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:27
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:76
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:64
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:59
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:104
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:62
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:73
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:52
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:76
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:86
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:81
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:61
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:69
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:101
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:75
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:56
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:115
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:105
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:76
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:96
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:73
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:103
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:77
+#: i2p2www/blog/2017/03/04/0.9.29-Windows-Installer-Fix.rst:25
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:102
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:69
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:58
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:104
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:63
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:79
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:73
+msgid "SHA256 Checksums:"
+msgstr ""
+
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:39
+msgid "Major changes"
+msgstr ""
+
+#: i2p2www/blog/2012/01/06/0.8.12-Release.rst:47
+msgid "Wrapper Update"
+msgstr ""
+
+#: i2p2www/blog/2012/05/02/0.9-Release.rst:23
+msgid "Update Info"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:2
+msgid "0.9.2 Release"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:7
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:9
+msgid ""
+"0.9.2 includes extensive low-level changes to improve the performance and"
+" efficiency of the router. We have updated our UPnP library, to hopefully"
+" make UPnP work for more people. I2PSnark now has DHT support, but it is "
+"not yet enabled by default, as we plan to do more testing during the "
+"upcoming 0.9.3 development cycle."
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:12
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:12
+msgid ""
+"As usual, there's also lots of bug fixes in this release, so updating is "
+"recommended."
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:26
+msgid ""
+"SSU: Fix several problems in our UDP transport, to improve efficiency and"
+" reliability for connection setup. Also improve defenses against various "
+"types of bad input."
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:27
+msgid ""
+"UPnP: Updated our library to fix several issues, should work for more "
+"routers now"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:28
+msgid ""
+"Transport: Improve performance in both our TCP and UDP transports, to "
+"benefit high-bandwidth routers"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:29
+msgid ""
+"Crypto: The thresholds and number of ElGamal/AES Session Tags delivered "
+"are now much more flexible, which should lessen protocol overhead and "
+"reduce stalls caused by dropped tags."
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:30
+msgid ""
+"I2PSnark: Add DHT support, not yet enabled by default, will do further "
+"testing and plan to enable by default in 0.9.3."
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:34
+msgid ""
+"Fix various issues affecting memory usage and performance on high-"
+"bandwidth routers"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:35
+msgid "Fix problems in UDP for routers using a reduced-MTU connection, e.g. a VPN"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:36
+msgid "Fix i2psnark bug that prevented a completion announcement to the tracker"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:37
+msgid "Fix a lock contention problem in i2ptunnel"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:38
+msgid "Fix some OSX installation issues"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:39
+msgid "Remove uses of direct byte buffers that may have been leaking"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:43
+msgid "Reduce overhead in network messages"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:44
+msgid "Add \"universal\" theme support"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:45
+msgid "Theme updates"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:46
+msgid "Add a jbigi library for Raspberry Pi"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:47
+msgid "New Scala unit test framework"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:48
+msgid "Translation updates for Czech, Dutch, German, and Greek"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:49
+msgid "Update wrapper to 3.5.15 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2012/09/21/0.9.2-Release.rst:50
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:53
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:63
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:53
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:108
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:77
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:127
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:74
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:62
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:57
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:100
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:58
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:70
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:49
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:83
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:78
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:58
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:66
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:96
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:72
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:53
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:112
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:97
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:68
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:88
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:65
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:95
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:69
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:94
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:60
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:49
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:55
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:71
+msgid "Update GeoIP data (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:2
+msgid "0.9.3 Release"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:7
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:9
+msgid ""
+"0.9.3 includes extensive low-level changes to the queueing of messages in"
+" the router. We implement the CoDel Active Queue Management (AQM) "
+"algorithm. We also unify the queueing and priority mechanisms in the "
+"transports to aid diagnosis and reduce network latency. Work continues "
+"on fixing UDP transport bugs and making UDP more resistant to attacks. "
+"There are more changes to improve the performance of the router and "
+"reduce its memory usage. Also, we enable i2psnark's DHT support, "
+"introduced last release, by default."
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:26
+msgid "Active Queue Management"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:27
+msgid "Priority queues"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:28
+msgid "I2PSnark DHT: Several bug fixes, enable by default."
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:32
+msgid ""
+"Several SSU fixes including memory leak, and better handling of routers "
+"behind firewalls that change UDP ports; additional defenses for malicious"
+" packets."
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:33
+msgid "Fix piece selection (rarest-first) bugs in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:34
+msgid "Fix bug causing multiple browsers to open at startup"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:38
+msgid "Improvements in caching"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:39
+msgid "Several synchronization fixes and lock contention reduction"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:40
+msgid "Major reduction in SSU buffers memory use"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:41
+msgid ""
+"Fix streaming connection timeout back to 1 minute, was inadvertently "
+"changed to 5 minutes; set i2ptunnel server read timeout to 5 minutes, was"
+" unlimited"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:42
+msgid "Improved defenses in i2ptunnel for \"darkloris\""
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:43
+msgid "More validation at torrent creation in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:44
+msgid "Several parameter changes in SSU to improve throughput"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:45
+msgid ""
+"New event log for major events including restarts; show multiple restart "
+"lines on graphs"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:46
+msgid "Remove duplicate messages from logs"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:47
+msgid "Don't respond to blocked streaming connections with a reset, just drop"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:48
+msgid "Remove all uses of inefficient SimpleTimer"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:49
+msgid "More checks for valid IPs and ports entered in console"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:50
+msgid "Fix bug that wasted a lot of entropy"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:51
+msgid "Translation updates: Italian, Portuguese, Spanish, Swedish"
+msgstr ""
+
+#: i2p2www/blog/2012/10/27/0.9.3-Release.rst:52
+msgid "Add non-NIO configuration in jetty.xml, recommended for Java 5"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:2
+msgid "0.9.4 Release"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:7
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:9
+msgid ""
+"0.9.4 includes a fix for a network capacity bug, introduced in 0.9.2, "
+"that was reducing network performance and reliability. It also includes "
+"major changes in the in-network update system, and adds the capability to"
+" update via in-network torrents."
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:13
+msgid ""
+"We fixed several bugs in the i2psnark DHT implementation that was "
+"introduced\n"
+"last release. For those of you using console or http proxy passwords,\n"
+"we converted to the more-secure digest method and improved the security "
+"for console forms."
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:19
+msgid ""
+"For those of you already running development builds, your router should "
+"automatically\n"
+"update to 0.9.4-0 using the new in-network torrent facility.\n"
+"For those running 0.9.3-0, you will update normally using in-network "
+"HTTP, and\n"
+"we will have more information for you when we release 0.9.5."
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:36
+msgid ""
+"Big rework of the update system; Preliminary support for updates via "
+"i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:37
+msgid "Add per-destination outbound priorities"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:41
+msgid ""
+"Fix major bug that reduced SSU connection limits which reduced tunnel "
+"build success rates"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:42
+msgid "Fix bug with external I2CP that prevented some external apps from working"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:43
+msgid "Fixed several bugs in i2psnark DHT"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:44
+msgid "Fixed bug in i2psnark PEX that inflated peer counts"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:45
+msgid "Handle dropped I2CP messages better"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:46
+msgid "Reduce overhead of I2CP messages"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:47
+msgid "Enforce max size in transport outbound message queues"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:48
+msgid "Fixes for Windows eepget.bat (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:49
+msgid "Fix a bug that would drop messages of exactly 512 bytes in SSU"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:53
+msgid ""
+"More performance improvements, memory reduction, and object churn "
+"reduction"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:54
+msgid "Better detection of network disconnections"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:55
+msgid "Further improvements in the SSU transport"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:56
+msgid "Add console password form"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:57
+msgid ""
+"Convert http proxy and console from basic to digest authentication for "
+"added security"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:58
+msgid ""
+"Improved verification of console form submissions, using jsp sessions. "
+"Cookies may now be required on forms, except when the console password is"
+" enabled"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:59
+msgid ""
+"Initial work on new interfaces to manage applications started via "
+"clients.config"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:60
+msgid "Increase minimum peer port to 1024"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:61
+msgid "Increase granularity of bandwidth limiter for smoother transmissions"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:62
+msgid ""
+"Translation updates: Chinese, French, German, Italian, Polish, "
+"Portuguese, Swedish, and Ukrainian"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:64
+msgid "Update wrapper to 3.5.16 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2012/12/17/0.9.4-Release.rst:65
+msgid "New ARMv6 wrapper for Raspberry Pi"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:2
+msgid "0.9.5 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:7
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:9
+msgid ""
+"0.9.5 includes bug fixes and defenses for some issues and vulnerabilities"
+" that are being investigated by researchers at UCSB. We continue to work "
+"with them on additional improvements. This is a good opportunity to "
+"remind the community that while our network continues to grow rapidly, it"
+" is still relatively small. There may be multiple weaknesses or bugs that"
+" could compromise your anonymity. Help us grow the network by spreading "
+"the word and contributing where you can."
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:13
+#, python-format
+msgid ""
+"In this upgrade cycle, a random 1%(pc)s of routers, (plus all routers "
+"running a\n"
+"development build) will attempt to update via the experimental in-network"
+" bittorrent\n"
+"with i2psnark. If this doesn't work, it should fall back to standard in-"
+"network HTTP update."
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:27
+msgid "Defenses and Bug Fixes"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:29
+msgid "Fix router bug causing lockup when using iMule"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:30
+msgid "Recognize, handle, reject duplicate tunnel IDs"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:31
+msgid "Fix changing of the log file name"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:32
+msgid "Prevent hashcode attack in session tags"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:33
+msgid "Add build request throttler based on previous hop"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:34
+msgid "Limit concurrent next-hop lookups"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:35
+msgid "Catch exceptions storing nonces in console"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:36
+msgid "Fix saving graph settings in console"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:37
+msgid "Fix eepget generation of URLs when not proxied"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:38
+msgid ""
+"Encrypt database lookup messages end-to-end when sent through exploratory"
+" tunnels"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:39
+msgid "Don't use multiple floodfills from the same /16 in a query"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:40
+msgid "Randomize delay before verifying floodfill store"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:41
+msgid "Increase number of floodfills"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:45
+msgid "Improve support for mobile browsers"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:46
+msgid "Partial defenses for UCSB attacks"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:47
+msgid "Add announce list support to i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:48
+msgid "Jetty: upgrade Apache Tomcat to 6.0.36"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:49
+msgid "Split router info files into multiple subdirectories"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:50
+msgid "Add IP to hostname mapping option in SOCKS"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:51
+msgid "Improve PRNG seeding"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:52
+msgid ""
+"Translation updates: French, German, Hungarian, Italian, Norwegian, "
+"Polish, Portuguese, Russian, Swedish"
+msgstr ""
+
+#: i2p2www/blog/2013/03/08/0.9.5-Release.rst:54
+msgid "Update wrapper to 3.5.17 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:2
+msgid "0.9.6 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:7
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:9
+msgid ""
+"0.9.6 includes bug fixes and an update from Jetty 6.1.26 (2010-11-10) to "
+"Jetty 7.6.10 (2013-03-12). See below for important information on the "
+"Jetty update. The Jetty 7 series is actively maintained and we plan to "
+"stay current with it in future I2P releases."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:13
+msgid ""
+"Most users will update via HTTP. Those running development builds will "
+"attempt to update via the\n"
+"experimental in-network bittorrent with i2psnark. We've fixed some bugs "
+"that will enable more users\n"
+"to update via torrent in the 0.9.7 update cycle."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:25
+msgid "Important fix for Windows Eepsites, first install 0.9.5 only"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:27
+msgid ""
+"If you first installed I2P with version 0.9.5, on Windows only, we "
+"recommend that you follow the\n"
+"following instructions to fix your eepsite location **before** you update"
+" to 0.9.6.\n"
+"Only original installations of 0.9.5-0 on Windows are affected by this "
+"issue. If your router version\n"
+"is 0.9.5-0-win1, you already have the fix and need not take any action."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:34
+msgid "See `this page`_ for instructions."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:38
+msgid "`this page`"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:40
+msgid "Jetty 7 Migration Details"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:42
+msgid ""
+"For most people, the update should just work. If you have multiple Jetty "
+"eepsites,\n"
+"OR have made changes to jetty.xml or other Jetty configuration files, "
+"including changing the port\n"
+"from 7658, you MUST take manual action AFTER updating."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:48
+msgid ""
+"After update, the router will migrate your jetty.xml files to the new "
+"Jetty 7 format."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:50
+msgid ""
+"The migration resets the port to 7658. If you have more than one Jetty "
+"eepsite, OR your eepsite\n"
+" is NOT on port 7658, OR you have made other modifications to jetty.xml "
+"(for example changing the\n"
+" listen address from 127.0.0.1 to 0.0.0.0), you MUST edit the jetty.xml "
+"file for each eepsite to fix them up\n"
+" after updating, and restart again."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:55
+msgid ""
+"**The following files will be backed up with a ".jetty6" suffix"
+" and then migrated.**\n"
+"If you have made local changes, you may have to edit them manually and "
+"restart.\n"
+"See http://wiki.eclipse.org/Jetty for assistance in configuring Jetty 7."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:69
+msgid "Plugins"
+msgstr "Qoşmalar"
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:71
+msgid "Most plugins should work fine with Jetty 7."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:75
+msgid ""
+"The I2PControl and zzzot plugins must be updated. Your router should "
+"download and install the new versions shortly after starting 0.9.6."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:77
+msgid "If a plugin does not work, please contact the maintainer for that plugin."
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:83
+msgid "Several bugs with Windows installation (see above)"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:84
+msgid "Fix default form action in i2ptunnel"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:85
+msgid "Fix links on iframed console pages"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:86
+msgid "Better detection of 64-bit Windows to prevent crashes by systray"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:87
+msgid "Fix bug preventing router update via torrent"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:88
+msgid "Several SSU fixes for NATs that change UDP ports"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:89
+msgid ""
+"Ignore unsupported IPs in RouterInfos when selecting an address (prep for"
+" IPv6)"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:90
+msgid ""
+"Ignore unused option bits in Database Lookup Message (prep for requesting"
+" encrypted response)"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:91
+msgid "Fix HTTP proxy error response for malformed URIs"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:92
+msgid "Recognize UPnP devices without port forwarding capability"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:96
+msgid "Jetty 7.6.10 (see above for migration information)"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:97
+msgid "Limit page size in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:98
+msgid "Add data directory and page size configuration to i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:99
+msgid "Support multiple i2psnark instances"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:100
+msgid "Piece size adjustments in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:101
+msgid "Add more graphing support for combined bandwidth graph"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:102
+msgid "Block b32.i2p supercookies"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:103
+msgid "Allow stopping clients on /configclients"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:104
+msgid "Check for nonce count replays in HTTP client"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:105
+msgid "Support SASL authentication in IRC proxy"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:106
+msgid "Several cleanups and minor fixes in the update manager"
+msgstr ""
+
+#: i2p2www/blog/2013/05/28/0.9.6-Release.rst:107
+msgid "Translation updates: German, Portuguese, Russian, Spanish, and Swedish"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:2
+msgid "0.9.7 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:7
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:9
+msgid "0.9.7 includes significant bug fixes and improvements."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:11
+msgid ""
+"For the first time, class 'N' routers (those with a minimumum of 128 "
+"KBytes/sec of shared bandwidth)\n"
+"will automatically become floodfill (previously it was only 'O' routers "
+"with 256 KBps). This will\n"
+"increase the floodfill population for additional resistance to certain "
+"attacks (see below). Floodfill routers\n"
+"don't consume much additional bandwidth, but they do tend to use "
+"additional memory and concurrent\n"
+"connections. If you do not wish your router to become floodfill, set the "
+"advanced configuration\n"
+"router.floodfillParticipant=false ."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:20
+#, python-format
+msgid ""
+"As we think the last release fixed the experimental update-via-torrent "
+"bugs, 3%(pc)s of routers should\n"
+"update over in-network bittorrent this cycle."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:25
+msgid ""
+"Plugin update checks, possibly broken for several releases, are fixed. "
+"Your plugins should once again\n"
+"auto-update after updating the router."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:30
+msgid ""
+"We fixed a major streaming timer bug that contributed to frequent IRC "
+"disconnects."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:34
+msgid ""
+"This release contains additional mitigations for the `\"practical "
+"attacks\" paper`_.\n"
+"However, we have a lot more work to do to resist Sybil attacks on the "
+"floodfills, and resist\n"
+"traffic analysis at the gateways and endpoints of exploratory tunnels.\n"
+"It's a good reminder for everybody that our network is still relatively "
+"small and vulnerable.\n"
+"We don't currently recommend any uses that would put anybody in serious "
+"jeopardy.\n"
+"We'll keep working to improve it... please keep working to spread the "
+"word. A bigger network is a better network."
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:43
+msgid "`\"practical attacks\" paper`"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:47
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:15
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:107
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:28
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:36
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:37
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:67
+msgid "Anonymity Improvements"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:49
+msgid "End-to-end encryption of responses to leaseset lookups"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:50
+msgid "Expand floodfill pool by enabling class 'N' floodfills"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:51
+msgid "Randomize padding inside encrypted SSU packets"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:52
+msgid "Preparation for better SSU protocol obfuscation"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:56
+msgid "Fix newer lease sets not getting stored or published"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:57
+msgid ""
+"Fix classpath bug when used with 4-year-old installations, causing the "
+"console not to start"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:58
+msgid "Fix addressbook database bug preventing update of the reverse index"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:59
+msgid ""
+"Fix i2psnark bug that changed the infohash of torrents created by Robert "
+"and fetched via magnet link"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:60
+msgid "Fix version checking for plugins"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:61
+msgid ""
+"Fix a streaming timer bug causing frequent IRC disconnects (also affects "
+"other close-on-idle tunnels)"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:65
+msgid "Don't install as a service on Windows by default"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:66
+msgid "Reduce transport idle timeouts"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:67
+msgid "Reduce tunnels on idle in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:68
+msgid "Change default in i2ptunnel GUI to 3 hops"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:69
+msgid "IE 10 support"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:70
+msgid ""
+"Individual expiration times in leases, for efficiency on destinations "
+"with a high number of tunnels"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:71
+msgid "Low-level encryption and XOR speedups"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:72
+msgid "Jetty 7.6.11"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:73
+msgid "Tomcat 6.0.37"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:74
+msgid "Translation updates: Chinese, French, German, Portuguese, Russian, Spanish"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:75
+msgid "New Turkish translation"
+msgstr ""
+
+#: i2p2www/blog/2013/07/15/0.9.7-Release.rst:76
+msgid "Wrapper 3.5.19 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:2
+msgid "0.9.7.1 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:7
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:9
+msgid ""
+"This unscheduled release disables the RouterInfo verification messages "
+"that were used in the attack published in the UCSB paper, which should "
+"make correlating a LeaseSet and a Router much more difficult. We have "
+"also included a limited number of other fixes listed below. Our 0.9.8 "
+"release, which will include IPv6 support, is still on-schedule for late "
+"September."
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:11
+msgid "As usual, we recommend that all users update to this release."
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:17
+msgid "Disable RouterInfo verification messages"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:21
+msgid "Extend inbound tunnel expiration"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:22
+msgid "i2prouter: bashism fix"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:23
+msgid "i2psnark: increase max piece size, mime type updates"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:24
+msgid "New reseed host"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:25
+msgid "New update hosts, thanks Meeh and dg"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:26
+msgid "Streaming: RTO changes"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:27
+msgid "Updater: Increase update-via-torrent to 30 percent"
+msgstr ""
+
+#: i2p2www/blog/2013/08/10/0.9.7.1-Release.rst:28
+msgid "UPnP fix for some hardware"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:2
+msgid "0.9.8 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:7
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:9
+msgid ""
+"0.9.8 includes the long-awaited support for IPv6. It's enabled by "
+"default, but of course you need a public IPv6 address to use it. "
+"Configuration is on the 'network' configuration tab in your console. We "
+"also have anonymity improvements including padding of SSU packets and "
+"longer router private keys."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:11
+#, python-format
+msgid "30%(pc)s of you will update via in-network torrent in this update cycle."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:13
+msgid "IPv6 Details"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:15
+msgid ""
+"IPv6 is enabled and preferred by default. If you have a public IPv6 "
+"address \n"
+"and you are connecting to another router with a published IPv6 address, "
+"it will \n"
+"connect via IPv6. There is a new IPv6 configuration section on /confignet"
+" in \n"
+"the router console. If IPv6 is causing problems you may disable it there."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:22
+msgid ""
+"As a part of the IPv6 development effort, I2P now supports multiple \n"
+"published IP addresses. If you have multiple public IP addresses (IPv4, "
+"IPv6, \n"
+"or both), you may enable or disable them individually on /confignet. The"
+" \n"
+"default is to use the first IPv4 and IPv6 addresses it discovers. If you "
+"have \n"
+"multiple addresses you should review the configuration on /confignet and "
+"adjust \n"
+"it if necessary.\n"
+"Note that while you may enable multiple IPv4 and IPv6 addresses on "
+"/confignet,\n"
+"we recommend that you use only one IPv4 and one IPv6 address. There are\n"
+"bugs still to be fixed with multiple addresses of each type."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:34
+msgid ""
+"While IPv6 support was designed and developed over several years, it has"
+" \n"
+"only been tested by a limited number of users and is still beta. If you "
+"do have \n"
+"a public IPv6 address, please monitor your router and the logs for "
+"problems, \n"
+"and disable it necessary. Please report any bugs on \n"
+"http://trac.i2p2.i2p."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:42
+msgid "Rekeying Details"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:44
+msgid ""
+"For those of you running I2P on faster hardware (generally, 64-bit x86) "
+"the \n"
+"router will generate a new identity using longer keys. This will "
+"substantially \n"
+"reduce your participating traffic for 48 hours or more, while your router"
+" \n"
+"re-integrates into the network. Due to the new keys, the large number of"
+" \n"
+"torrent updates, and the recent network growth, we expect substantial \n"
+"disruption to the network for a week or more after the update is "
+"released. \n"
+"Please be patient and things should start to improve after a few days."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:54
+msgid ""
+"These changes may result in higher CPU usage for some of you. We're doing"
+" \n"
+"our best to increase efficiency, but stronger security generally requires"
+" more \n"
+"computation. Performance may also be poor during the first week\n"
+"due to the network churn.\n"
+"We will evaluate the network performace before deciding whether to\n"
+"change the key length on slower hardware in a future release."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:63
+msgid ""
+"We are experiencing rapid network growth in the last few weeks, which is"
+" \n"
+"causing a bit of a bumpy ride for some, especially on weekends. However, "
+"the \n"
+"network is still performing fairly well, so keep spreading the word."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:69
+msgid "More Changes Coming"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:71
+msgid ""
+"We're in the initial stages of desiging major changes to strengthen our \n"
+"crypto. Stronger crypto will use more CPU and it may possibly \n"
+"require a Java 7 JRE at a minimum. We understand your desire to run I2P "
+"on low-power \n"
+"and/or older hardware. We're working hard to minimize the impacts, but "
+"some \n"
+"loss of performance is inevitable. In addition, Java 5 and 6 are no "
+"longer \n"
+"supported by Oracle. Now is a good time to upgrade to Java 7. Any change "
+"in \n"
+"minimum requirements will be announced well in advance."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:81
+msgid "New Website"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:83
+msgid ""
+"After a heroic effort by str4d, the new website preview is available at \n"
+"http://i2hq.srv.i2p2.de. We hope to see it go live at \n"
+"https://geti2p.net and http://www.i2p2.i2p soon. Please \n"
+"contribute to the new website translations on Transifex, especially the \n"
+"website_priority resource."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:91
+msgid "Community Participation"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:93
+msgid ""
+"In early August, hottuna and zzz attended DEFCON 21 in Las Vegas.\n"
+"Last weekend, echelon attended the CTS IV conference in Berlin and\n"
+"psi attended the Tahoe-LAFS hackfest at GNU 30 in Cambridge, Mass.\n"
+"Several of us will be at 30C3 in Hamburg late this year.\n"
+"It's great to see people participating at these events and representing "
+"I2P."
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:105
+msgid "IPv6 support for both NTCP and SSU"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:109
+msgid "SSU protocol obfuscation by adding random padding"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:110
+msgid "Longer encryption and DH private keys for users on faster platforms"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:114
+msgid "Fix I2PTunnel / I2CP locking and duplicates (partial)"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:115
+msgid "Fix translation of HTTP proxy error pages"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:116
+msgid "Fix occasional runtime exception in NTCP"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:120
+msgid "Big rework of transport code to accommodate multiple addresses and IPv6"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:121
+msgid "Streaming: Improved recovery from lost acks, other fixes"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:122
+msgid "Use Transifex for translation of initial news and HTTP proxy error pages"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:123
+msgid ""
+"Translation updates: Chinese, French, German, Portuguese, Russian, "
+"Swedish, Turkish"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:124
+msgid "New Romanian translation"
+msgstr ""
+
+#: i2p2www/blog/2013/09/30/0.9.8-Release.rst:126
+msgid "Wrapper 3.5.20 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:2
+msgid "0.9.8.1 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:7
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:9
+msgid ""
+"0.9.8.1 fixes a problem with updating to 0.9.8 on Windows for some "
+"people. New installs and non-Windows platforms are not affected, however "
+"all platforms will automatically update even if running 0.9.8."
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:11
+msgid ""
+"See the `Trac ticket`_ for details and workarounds. See\n"
+"`the 0.9.8 release notes`_ for information on IPv6 and other changes."
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:16
+msgid ""
+"Due to recent attacks, logins are disabled on `Trac`_ and new "
+"registrations are\n"
+"disabled on `zzz.i2p`_. Until those services are restored, please report "
+"all\n"
+"bugs on IRC freenode or IRC2P #i2p-dev."
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:22
+msgid "`Trac ticket`"
+msgstr ""
+
+#: i2p2www/blog/2013/10/02/0.9.8.1-Release.rst:23
+msgid "`the 0.9.8 release notes`"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:2
+msgid "0.9.9 Release"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:7
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:9
+msgid ""
+"0.9.9 fixes a number of bugs in the netdb, streaming, and i2ptunnel, and "
+"starts work on a year-long plan to increase the strength of the "
+"cryptographic signing algorithms used in the router, and support multiple"
+" algorithms and key lengths simultaneously. Automatic update files will "
+"now be signed with 4096-bit RSA keys."
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:11
+msgid ""
+"We now support SSL between your router and your servers for security.\n"
+"See `this development thread`_ for more information."
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:16
+msgid "`this development thread`"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:18
+msgid ""
+"As usual, we recommend that you update to this release.\n"
+"The best way to maintain security and help the network is to run the "
+"latest release.\n"
+"Several members of the I2P team will be at 30C3 in Hamburg this year.\n"
+"Come say hello and ask for an I2P sticker.\n"
+"Thanks to everyone for their support this year."
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:30
+msgid "Don't build client tunnels through zero-hop exploratory tunnels"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:31
+msgid "New \"su3\" file support using stronger keys"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:32
+msgid "Use su3 for updates"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:36
+msgid "Issues with losing data when closing streams"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:37
+msgid "Fix various streaming connection limit issues"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:38
+msgid "Issues with resource usage of closed connections"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:39
+msgid "Clean up timer threads in close-on-idle tunnels"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:40
+msgid "Several other streaming fixes"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:41
+msgid "Reject more non-public IPv6 addresses"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:42
+msgid "Fix IPv6 GeoIP"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:43
+msgid "Fix peer selection in first minutes after startup"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:44
+msgid "Several I2PTunnel bug fixes"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:45
+msgid "Fix major i2psnark DHT bug that prevented magnets from working well"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:46
+msgid ""
+"Fix client tunnels that fail due to name resolution failure at startup, "
+"particularly with b32 hostnames"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:47
+msgid "Fix changing client i2ptunnel target list"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:48
+msgid ""
+"Fix major bugs preventing reception of encrypted responses to leaseset "
+"lookups and verifies"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:49
+msgid "Fix bad links on some i2psnark buttons in Opera and text-mode browsers"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:50
+msgid "Fix NPE in Susimail"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:54
+msgid "Start work on supporting stronger signing keys in the router"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:55
+msgid "Reduce thread usage for HTTP Server tunnels"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:56
+msgid "Auto-stop update torrent after some time"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:57
+msgid "Add ability to stop webapp via console"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:58
+msgid "New POST throttler in HTTP server tunnel"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:59
+msgid "Improve connection throttling"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:60
+msgid "More work to reduce number of connections"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:61
+msgid "Re-enable router info expiration job"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:62
+msgid ""
+"Extend router info expiration and other changes to reduce load on "
+"floodfills"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:63
+msgid "Support multiple servers through a single server tunnel"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:64
+msgid "Support specification of server port in i2ptunnel clients"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:65
+msgid "Add support for SSL connections from i2ptunnel to external server"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:66
+msgid "SSL and crypto code refactoring"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:67
+msgid "i2psnark storage code refactoring"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:68
+msgid "New destination cache"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:69
+msgid "Lots of code cleanup and resolution of findbugs warnings"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:70
+msgid "New Japanese translation (partial)"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:71
+msgid ""
+"Translation updates: French, German, Italian, Romanian, Russian, Spanish,"
+" Swedish, and others"
+msgstr ""
+
+#: i2p2www/blog/2013/12/07/0.9.9-Release.rst:73
+msgid "Wrapper 3.5.22 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:1
+msgid ""
+"=====================\n"
+"Syndie 1.105b Release\n"
+"====================="
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:9
+msgid "Update to HSQLDB 2.3.1"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:11
+msgid ""
+"This is the first stable release since February 2013.\n"
+"It is essentially the same as 1.104b-7-rc, with some translation updates."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:16
+msgid ""
+"All binaries and source packages are at `syndie.de`_ and `syndie.i2p`_.\n"
+"Plugins are available at `plugins.i2p`_ and `stats.i2p`_."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:21
+msgid ""
+"For those of you upgrading from 1.103b, you will find syndie startup and "
+"shutdown much faster due to the new version of HSQLDB."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:25
+msgid ""
+"If you have a large database or an identity you wish to preserve,\n"
+"you may wish to back up your entire ~/.syndie directory before you start."
+"\n"
+"The upgrade process does make its own backup, however you may find it "
+"easier to use your own backup if the upgrade fails."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:31
+msgid ""
+"Upgrades from 1.103b may fail for some people due to database corruption "
+"due to bugs in the old HSQLDB.\n"
+"Unfortunately, we don't know how to fix it.\n"
+"Your alternatives are to start over with a clean database, or stay with "
+"1.103b forever.\n"
+"Sorry about that."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:43
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:29
+msgid ""
+"As usual, we recommend that you update to this release.\n"
+"The best way to maintain security and help the network is to run the "
+"latest release."
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:56
+msgid "GUI Improvements and Fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:72
+msgid "Syndication"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:83
+msgid "Database"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:104
+msgid "New translations"
+msgstr ""
+
+#: i2p2www/blog/2014/01/21/Syndie-1.105b-Release.rst:105
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:60
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:56
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:99
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:57
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:69
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:72
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:82
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:77
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:57
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:65
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:95
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:71
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:52
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:111
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:96
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:67
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:87
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:64
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:94
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:68
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:93
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:59
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:48
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:94
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:54
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:70
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:63
+msgid "Translation updates"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.10 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:9
+msgid ""
+"0.9.10 changes the mechanism for doing LeaseSet lookups, making it more "
+"difficult for an attacker to correlate a Destination with a Router."
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:11
+msgid ""
+"0.9.10 changes the mechanism for doing LeaseSet lookups, making it more "
+"difficult for an attacker\n"
+"to correlate a Destination with a Router. It also fixes character "
+"encoding bugs in susimail,\n"
+"and includes lots of other bug fixes and translation updates.\n"
+"Most of you will update via torrent, using the new \"su3\" update format "
+"with stronger keys."
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:18
+msgid ""
+"We recently attended `30C3`_ and `Real World Crypto`_, making several new"
+"\n"
+"connections and formulating `big plans`_ for 2014. Thanks to those who\n"
+"supported our attendance with their `donations`_!"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:26
+msgid "`big plans`"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:27
+msgid "`donations`"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:38
+msgid "Use client tunnels for LeaseSet lookups"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:42
+msgid ""
+"Flood netdb stores to new location before midnight to prevent lookup "
+"fails after midnight"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:43
+msgid "Fix setting I2CP host/port in BOB"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:44
+msgid "Fix several character encoding issues in susimail"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:45
+msgid "Fix StandardServerSocket.close()"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:46
+msgid "Fix exception in PrivateKeyFile"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:47
+msgid "Fixes in RouterInfo expiration task"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:51
+msgid "Tweaks to reduce number of peer connections"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:52
+msgid "Several threading fixes to reduce blocking in the timer queues"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:53
+msgid "Disable streaming ping handling for clients"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:54
+msgid "Use i2psnark's Kademlia library for the router netdb also"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:55
+msgid ""
+"Increase outbound exploratory default to 2 + 0-1 hops, part of gradual "
+"increase to 3 hops in/out"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:56
+msgid "More findbugs fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:57
+msgid "Streaming library refactoring"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:58
+msgid "Support country-specific translations"
+msgstr ""
+
+#: i2p2www/blog/2014/01/22/0.9.10-Release.rst:59
+msgid "New Brazilian Portuguese translation"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.11 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:9
+msgid ""
+"0.9.11 adds support for outproxy plugins, improves lease set lookup "
+"security, and reduces memory usage."
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:11
+#, python-format
+msgid ""
+"0.9.11 continues improving LeaseSet lookup and storage to prevent an "
+"attacker\n"
+"from correlating a Destination with a Router. It adds support for the\n"
+"%(orchid)s outproxy plugin which is available at %(url)s. There is a\n"
+"reduction in memory usage due to fixes in the transports. We have some "
+"I2CP\n"
+"protocol improvements that will provide better lookup facilities and\n"
+"authorization protection for external clients. Of course, there's also "
+"the\n"
+"usual collection of bug fixes. All users should update."
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:21
+msgid ""
+"This may be the last release that works with Java 5, which is very old "
+"and\n"
+"unsupported. If you are using a Java 5 or 6 runtime, we strongly "
+"recommend that\n"
+"you upgrade to Java 7."
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:30
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:30
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:17
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:32
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:30
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:37
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:21
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:24
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:29
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:25
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:24
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:67
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:47
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:29
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:48
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:27
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:29
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:26
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:50
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:26
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:23
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:24
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:24
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:30
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:27
+msgid ""
+"As usual, we recommend that you update to this release. The best way to\n"
+"maintain security and help the network is to run the latest release."
+msgstr ""
+"Hər zamanki kimi bu versiyanı yeniləməyi məsləhət görürük. Təhlükəsizliyi"
+" qorumaq və şəbəkəyə kömək etmək üçün ən yaxşı yol son buraxılışı "
+"yükləməkdir."
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:39
+msgid "More leaseset handling improvements"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:43
+msgid "Fix NPE after client shutdown"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:44
+msgid "Fix wrapper log encoding on logs page"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:45
+msgid "Streaming ping and I2Ping fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:49
+msgid "Add support for Orchid plugin"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:50
+msgid "Add HTTPS support to HTTP client proxy"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:51
+msgid "New I2CP support for hostname lookups by external clients"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:52
+msgid ""
+"Stricter I2CP authorization enforcement of external clients (incompatible"
+" change)"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:53
+msgid "Increase default inbound exploratory tunnel length variance"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:54
+msgid "Big reduction in memory usage by transports"
+msgstr ""
+
+#: i2p2www/blog/2014/02/08/0.9.11-Release.rst:55
+msgid "All in-net updates via torrent"
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:1
+msgid ""
+"=========================\n"
+"Malware at i2pbrowser.net\n"
+"========================="
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:8
+msgid ""
+"The site i2pbrowser.net is a fake I2P website mirror serving up malware "
+"for Windows."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:10
+msgid ""
+"We have recently been made aware of the existence of i2pbrowser.net. This"
+"\n"
+"website copies our homepage and download page, and attempts to trick "
+"users into\n"
+"downloading Windows malware."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:16
+msgid ""
+"There are several indicators that point to i2pbrowser.net being a malware"
+" site:"
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:20
+msgid "The domain was registered on February 10th, 2014."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:21
+msgid ""
+"The download URLs for Windows, Mac OSX, Linux, Android etc. all link to "
+"the same .exe file."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:22
+msgid "The .exe is only 741 KB; the official Windows installer for I2P is 13 MB."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:24
+msgid ""
+"We have not examined the malware ourselves, but it does not appear to be "
+"very\n"
+"sophisticated; it is not integrated into or bundled with the I2P "
+"software.\n"
+"Information security expert `Lance James`_ posted `a tweet`_ labelling it"
+" as\n"
+"\"a standard dark comet rat\"."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:31
+msgid ""
+"Spread the word. The only official download locations for I2P are linked "
+"on our\n"
+"`download page`_. All I2P download packages are GPG-signed by the\n"
+"`release signing key`_."
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:38
+msgid "`a tweet`"
+msgstr ""
+
+#: i2p2www/blog/2014/02/16/i2pbrowser-malware.rst:40
+msgid "`release signing key`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:1
+msgid ""
+"================================================================\n"
+"Search Engine DuckDuckGo Awards Invisible Internet Project $5000\n"
+"================================================================"
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:10
+msgid ""
+"Search engine `DuckDuckGo`_ `donates`_ $5000 to the `Invisible Internet "
+"Project`_ (I2P) in their open source donation program."
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:12
+msgid ""
+"**Somewhere, NH** -- Internet search company `DuckDuckGo`_ `donates`_\n"
+"$5000 to the `Invisible Internet Project`_ (I2P) as part of their yearly "
+"open-source\n"
+"donation program. The award was granted on the basis of `nominations`_ by"
+" members of the public\n"
+"on the DuckDuckGo community portal. With an emphasis on privacy, "
+"DuckDuckGo provides a search\n"
+"engine which does not track its users or store personal data. I2P is an "
+"anonymous network intended to\n"
+"protect individuals from dragnet surveillance regularly performed by ISPs"
+" and governments."
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:21
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:42
+msgid ""
+"This marks the single largest donation ever received by I2P and reflects "
+"a growing interest in\n"
+"privacy and security by the Internet community. The funding will help I2P"
+" to reach more users, expand\n"
+"development, and audit the code. It will also enable I2P developers to "
+"attend conferences, such\n"
+"as the `Real-World Cryptography`_ conference in New York City, where the "
+"developers met and\n"
+"collaborated with cryptography experts pursuant to I2P's goals of "
+"providing anonymity to the\n"
+"public."
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:30
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:51
+msgid ""
+"I2P thanks Gabriel Weinberg and DuckDuckGo for the generous donation,\n"
+"and the I2P community for its support in the `nominations`_."
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:35
+msgid ""
+"For more information about I2P, visit `our web site`_ or follow us `on "
+"Twitter`_."
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:39
+msgid "`donates`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:42
+msgid "`our web site`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:43
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:59
+msgid "`nominations`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/12/press-release-ddg-donation.rst:45
+msgid "`on Twitter`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.12 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:10
+msgid "0.9.12 adds support for ECDSA and updates to Jetty 8"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:12
+msgid ""
+"I2P now requires Java 6 or higher.\n"
+"We strongly recommend that you upgrade to Java 7.\n"
+"If you are still using Java 5, you must upgrade your Java before "
+"installing I2P 0.9.12."
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:18
+msgid ""
+"0.9.12 adds preliminary support for ECDSA-signed Destinations.\n"
+"It contains several fixes for the handling of Delivery Status Messages "
+"(acknowledgements)\n"
+"and those messages are now end-to-end encrypted for increased security."
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:24
+msgid ""
+"We have upgraded to Jetty 8.\n"
+"Jetty 8 is almost identical to Jetty 7, so there are no complex "
+"configuration file conversions as there have been in past Jetty upgrades."
+"\n"
+"No manual changes should be necessary."
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:35
+msgid ""
+"In early March, Internet search company `DuckDuckGo`_ `donated`_\n"
+"$5000 to the `Invisible Internet Project` (I2P) as part of their yearly "
+"open-source\n"
+"donation program. The award was granted on the basis of `nominations`_ by"
+" members of the public\n"
+"on the DuckDuckGo community portal."
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:56
+msgid "`donated`"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:69
+msgid "Encrypt Delivery Status Messages"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:70
+msgid "Add preliminary support for ECDSA-signed Destinations"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:71
+msgid "Add check for replayed NTCP session requests"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:72
+msgid "Add throttling and blocking checks to streaming ping processing"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:78
+msgid "Fix RouterInfo exchange in NTCP"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:79
+msgid "Extend timeout for Delivery Status Messages"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:80
+msgid "Drop streaming messages from recently closed connections"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:81
+msgid "Fix restarts on Raspberry Pi"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:82
+msgid "Restore profileOrganizer.sameCountryBonus advanced config"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:83
+msgid "Fix for jwebcache and i2phex"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:89
+msgid "Jetty 8.1.14.v20131031; Java 6 now required"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:90
+msgid "Reduce target connection count again to reduce tunnel reject rate further"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:91
+msgid "Add rate limit for outbound connections at tunnel endpoints"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:92
+msgid "Add optional inproxy blocking in i2ptunnel"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:93
+msgid "Use SSU session key for relay request/response when available"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:94
+msgid "Include HTTP POST data in SYN packet"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:95
+msgid "Add getopt library for better argument processing"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:96
+msgid "More removal of Jetty dependencies"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:97
+msgid "Remove MD5 code, use Java libraries instead"
+msgstr ""
+
+#: i2p2www/blog/2014/03/31/0.9.12-Release.rst:98
+msgid "Change the default addressbook subscription URL"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.13 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:10
+msgid "0.9.13 with SusiMail improvements and fixes for firewalled routers"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:12
+msgid ""
+"0.9.13 includes fixes for firewalled routers, netdb lookup improvements, "
+"and a big SusiMail update.\n"
+"Of course, there's also the usual collection of bug fixes and translation"
+" updates."
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:22
+msgid ""
+"zzz has updated his GPG keys, and the release files are signed with his\n"
+"new keys. His new key fingerprint is:"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:31
+msgid "SusiMail"
+msgstr "SusiMail"
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:33
+msgid "Many UI improvements"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:34
+msgid "Implement local storage of messages"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:35
+msgid "Add offline mode"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:36
+msgid "Messages now deleted on server after download"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:37
+msgid "Several backend POP3 and SMTP speedups and fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:41
+msgid "NetDB lookup fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:42
+msgid "Fix transition from not-firewalled to firewalled"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:43
+msgid "Fix plugin uninstall on Windows"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:44
+msgid "SSU locking fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:45
+msgid "Fix rapid republishing of SSU addresses"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:46
+msgid "IRC client exception fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:47
+msgid "Fix changing HTTP outproxy configuration without restarting tunnel"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:51
+msgid "New i2ptunnel server option for unique local address per-client"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:52
+msgid "Warn in i2ptunnel on duplicate client ports"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:53
+msgid "Update HTTP User-Agent to match TBB"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:54
+msgid "Extend SSU establishment retransmission timer"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:55
+msgid "Use constant-time method for HMAC verification"
+msgstr ""
+
+#: i2p2www/blog/2014/05/22/0.9.13-Release.rst:56
+msgid "New translation: Slovak"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.14 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:10
+msgid "0.9.14 includes critical security fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:12
+msgid ""
+"0.9.14 includes critical fixes for XSS and remote execution "
+"vulnerabilities reported by Exodus Intelligence.\n"
+"As an added precaution, we have disabled several advanced configuration "
+"features in the router console,\n"
+"including installation of new plugins.\n"
+"We plan to re-enable these in a future release after additional review."
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:19
+msgid ""
+"Due to I2P library changes, I2P-Bote users must upgrade their plugin to "
+"version 0.2.10 to work with I2P 0.9.14.\n"
+"Your router should update the plugin automatically after the router "
+"restarts."
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:24
+msgid ""
+"The release also contains several bug fixes in i2ptunnel, i2psnark, and "
+"other areas,\n"
+"and updates to the latest Jetty, Tomcat, and Wrapper.\n"
+"We've also implemented a faster and more secure method for reseeding.\n"
+"Of course, there's also the usual collection of minor bug fixes and "
+"translation updates."
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:31
+msgid ""
+"You must update to this release immediately. The best way to\n"
+"maintain security and help the network is to run the latest release."
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:39
+msgid "Security Fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:41
+msgid "Fix several XSS issues"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:42
+msgid "Disable changing news feed URL from UI"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:43
+msgid "Disable plugin install"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:44
+msgid "Disable setting unsigned update URL from UI"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:45
+msgid "Disable clients.config editing from the UI"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:46
+msgid "Add Content-Security-Policy and X-XSS-Protection headers"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:47
+msgid "Disable unused ExecNamingService (thx joernchen of Phenoelit)"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:52
+msgid "Fix tunnel building so it doesn't get \"stuck\" on a single pool"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:53
+msgid "Reject participating tunnels when hidden"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:54
+msgid ""
+"Several i2psnark improvements and fixes (GUI and DHT), including changes "
+"for better compatibility with Vuze"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:59
+msgid ""
+"Reseeding now fetches a signed zip file containing router infos for "
+"security and speed"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:60
+msgid "Use JVM's AES implementation if it is faster"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:61
+msgid "More advanced options shown in the i2ptunnel edit pages"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:62
+msgid ""
+"Per-message reliabilitiy settings in I2CP and error propagation back from"
+" router to client"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:63
+msgid "Lots of findbugs fixes and cleanups"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:64
+msgid "Support signature types in SAM, bump rev to 3.1"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:65
+msgid "New event log page in console"
+msgstr ""
+
+#: i2p2www/blog/2014/07/26/0.9.14-Release.rst:68
+msgid "Wrapper 3.5.25 (new installs and PPA only)"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:1
+msgid ""
+"================\n"
+"0.9.14.1 Release\n"
+"================"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:10
+msgid "0.9.14.1 includes i2psnark and console fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:12
+msgid ""
+"0.9.14.1 includes fixes for the \"Add Torrent\" form in i2psnark and some"
+" other web forms.\n"
+"We've restored the ability to install plugins via the console, but you "
+"must first edit your router.config file\n"
+"(in ~/.i2p/ or /var/lib/i2p/i2p-config/ or %APPDATA%\\I2P\\) to add the "
+"line routerconsole.enablePluginInstall=true.\n"
+"Other rarely-used advanced features that were removed in 0.9.14 may be "
+"restored by adding the line routerconsole.advanced=true."
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:19
+msgid ""
+"As usual, if configured with the default \"Download and Verify\", the "
+"router will automatically download the update and display a button to "
+"restart.\n"
+"However, due to a bug in 0.9.14, if your update is configured for "
+"\"Notify only\", the download button will not be displayed.\n"
+"You must change your configuration to \"Download and Verify\" or "
+"\"Download, Verify, and Restart\" to update."
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:25
+msgid ""
+"If you are still running 0.9.13 or older, we recommend that you update to"
+" this release as soon as possible.\n"
+"If you don't often check your router console, please consider changing "
+"your configuration to \"Download, Verify, and Restart\"\n"
+"to ensure you are always running the latest release."
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:37
+msgid "Fix i2psnark add torrent form"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:38
+msgid "Fix iptunnel custom options form"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:39
+msgid "Fix update download buttons"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:44
+msgid "Restore all console features if routerconsole.advanced=true"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:45
+msgid "Restore plugin install if routerconsole.enablePluginInstall=true"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:46
+msgid "Restpre client adds/changes if routerconsole.enableClientChange=true"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:47
+msgid ""
+"Plugin signing keys are now whitelisted unless "
+"routerconsole.allowUntrustedPlugins=true"
+msgstr ""
+
+#: i2p2www/blog/2014/08/09/0.9.14.1-Release.rst:48
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:71
+msgid "More escaping and cleanups in forms and messages"
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:1
+msgid ""
+"==============================\n"
+"The birth of Privacy Solutions\n"
+"=============================="
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:10
+msgid "Organization launch"
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:14
+msgid ""
+"Hello all!\n"
+"\n"
+"Today we announce the Privacy Solutions project, a new organization that "
+"develops and maintains I2P software. Privacy Solutions includes several "
+"new development efforts designed to enhance the privacy, security, and "
+"anonymity for users, based on I2P protocols and technology.\n"
+"\n"
+"These efforts include\n"
+"\n"
+"1) The Abscond browser bundle.\n"
+"2) The i2pd C++ router project.\n"
+"3) The \"BigBrother\" I2P network monitoring project.\n"
+"4) The Anoncoin crypto-coin project.\n"
+"5) The Monero crypto-coin project.\n"
+"\n"
+"Privacy Solutions' initial funding was provided by the supporters of the "
+"Anoncoin and Monero projects. Privacy Solutions is a Norway-based non-"
+"profit type of organization registered within the Norwegian government "
+"registers. ( Kind of like US 501(c)3. )\n"
+"\n"
+"Privacy Solutions plans to apply for funding from the Norwegian goverment"
+" for network research, because of BigBrother (We'll get back to what that"
+" is) and the coins that are planned to use low-latency networks as "
+"primary transport layer. Our research will support advances in software "
+"technology for anonymity, security, and privacy.\n"
+"\n"
+"\n"
+"First a little bit about the Abscond Browser Bundle. This was first a "
+"one-man project by Meeh, but later on friends started sending patches, "
+"the project is now trying to create the same easy access to I2P as Tor "
+"has with their browser bundle. Our first release isn't far away, it's "
+"just some gitian script tasks left, including setup of the Apple "
+"toolchain. But again we will add monitoring with PROCESS_INFORMATION (A C"
+" struct keeping vital proces information about an process) from the Java "
+"instance to check on I2P before we declare it stable. I2pd will also "
+"switch with the Java version once it's ready, and there is no point in "
+"shipping a JRE in the bundle anymore. You can read more about the Abscond"
+" Browser Bundle at https://hideme.today/dev"
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:36
+msgid ""
+"We would also like to inform of the current status of i2pd. I2pd supports"
+" bi-directional streaming now, that allows to use not only HTTP but long-"
+"lived communication channels. Instant IRC support has been added. I2pd "
+"users are able to use it same way as Java I2P for access to I2P IRC "
+"network. I2PTunnel is one of key features of I2P network, allowing non-"
+"I2P applications communicate transparently. That's why it's vital feature"
+" for i2pd and one of key milestones."
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:40
+msgid ""
+"At last, if you are familiar with I2P you probably know about "
+"Bigbrother.i2p, which is a metrics system Meeh made over a year back. "
+"Recently we noticed that Meeh actually have 100Gb of non-duplicated data "
+"from nodes reporting in since initial launch. This will also be moved to "
+"Privacy Solutions and be rewritten with a NSPOF backend. With this we "
+"will aslo start using the Graphite ( http://graphite.wikidot.com/screen-"
+"shots ). This will give us a great overview over the network without "
+"privacy issues for our end users. The clients filter all data except "
+"country, router hash and success rate on tunnel buildings. The name of "
+"this service is as always a little joke from Meeh."
+msgstr ""
+
+#: i2p2www/blog/2014/08/15/The-privacy-solutions-project.rst:47
+msgid ""
+"We have shorted down a bit of the news here, if you're interested in more"
+" information please visit https://blog.privacysolutions.no/\n"
+"We're still under construction and more content will come!\n"
+"\n"
+"\n"
+"\n"
+"For further information contact: press@privacysolutions.no\n"
+"\n"
+"\n"
+"\n"
+"\n"
+"Best regards,\n"
+"\n"
+"Mikal \"Meeh\" Villa"
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:1
+msgid ""
+"=============================================\n"
+"Android test release on Google Play in Norway\n"
+"============================================="
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:10
+msgid ""
+"I2P Android and Bote have been released on Google Play in Norway, as a "
+"test run for a future worldwide release."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:12
+msgid ""
+"I2P Android has existed for over three years. In that time, it has "
+"evolved from\n"
+"a simple test project into a usable, useful Android port of the I2P "
+"router. Our\n"
+"eventual goal has been to release I2P Android on Google Play, to make it "
+"easier\n"
+"for users to discover, install and use I2P on their Android devices. "
+"After much\n"
+"work improving the user interface, fixing bugs and testing, we think that"
+" I2P\n"
+"Android is finally ready to go where the users are."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:21
+msgid ""
+"Initially, we are only releasing to Android users in Norway, as a test "
+"run. I2P\n"
+"Android will have far more exposure on Google Play than it has ever had "
+"before,\n"
+"and there will be bugs and usability issues that we need to fix. It will "
+"be much\n"
+"easier (and less stressful!) to respond to feedback if we only need to "
+"deal with\n"
+"reports from hundreds of users instead of thousands (already orders of "
+"magnitude\n"
+"more feedback than we have ever had)."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:30
+msgid ""
+"Simultaneously we are making the first public release of Bote, an Android"
+" port\n"
+"of `I2P-Bote`_. Bote is private, distributed, secure email, made easy. It"
+" runs\n"
+"on top of the I2P network, and while it works as a standalone app, it "
+"will use\n"
+"the I2P Android app by default if installed. As with I2P Android, we are\n"
+"initially only releasing Bote to Android users in Norway."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:38
+msgid ""
+"The apps are being released on Google Play by `The Privacy Solutions "
+"Project`_.\n"
+"See their `blog post`_ for further information, and links to the Google "
+"Play\n"
+"page for Norway users."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:44
+msgid ""
+"As lead developer for I2P Android and Bote, I look forward to your "
+"comments. You\n"
+"are the people who will be using them, and your perspectives will help me"
+" craft\n"
+"simple, intuitive apps that make privacy accessible to everyone."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:51
+msgid "`The Privacy Solutions Project`"
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:52
+msgid "`blog post`"
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:54
+msgid "Website release details"
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:56
+msgid ""
+"We have also updated I2P Android on the website to match the release "
+"candidate\n"
+"deployed in Norway. This version will be updated with changes as we "
+"respond to\n"
+"feedback from Norwegian users, heading towards our next stable release."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:62
+msgid ""
+"Please note that we have upgraded the Android API to 9. This means that "
+"Froyo\n"
+"Android 2.2 will not be supported anymore; the minimum requirement is now"
+"\n"
+"Gingerbread Android 2.3."
+msgstr ""
+
+#: i2p2www/blog/2014/08/23/Android-test-release-on-Google-Play-in-Norway.rst:68
+msgid ""
+"Also note that if you have an earlier version of I2P Android, you will "
+"need to\n"
+"uninstall and reinstall because we have changed the release keys. Further"
+"\n"
+"information about this will be provided in a subsequent blog post."
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.15 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:10
+msgid "0.9.15 includes Ed25519 crypto and many fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:12
+msgid ""
+"0.9.15 adds preliminary support for Ed25519 EdDSA signatures.\n"
+"It includes a new persistent configuration backend for i2psnark and fixes"
+" several issues with i2psnark's handling of file names.\n"
+"There are several improvements to speed up SAM.\n"
+"Plugins now support stronger signatures in the su3 file format.\n"
+"Plugin installation via the console, which was disabled in 0.9.14, is re-"
+"enabled."
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:20
+msgid ""
+"We have supported ECDSA signatures since 0.9.12, and we would like to "
+"start using ECDSA by default.\n"
+"Unfortunately, some of you are still running older I2P versions, and for "
+"others,\n"
+"their distribution or Java runtime does not support ECDSA. Red Hat\n"
+"(RHEL, Fedora) distributions are reported to be missing ECDSA.\n"
+"Some have fixed the Java issues by upgrading from Java 6 to Java 7;\n"
+"others have had success with installing the \"unlimited strength policy "
+"files\".\n"
+"We've added information about missing crypto to the log file and the "
+"/logs page in the console.\n"
+"After you update to 0.9.15, please check if you are missing ECDSA "
+"support, and attempt to fix it if necessary.\n"
+"This is particularly important for those that run popular eepsites and "
+"services."
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:41
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:39
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:46
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:32
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:46
+#: i2p2www/blog/2015/07/31/0.9.21-Release.rst:38
+#: i2p2www/blog/2015/09/12/0.9.22-Release.rst:36
+#: i2p2www/blog/2015/11/19/0.9.23-Release.rst:75
+#: i2p2www/blog/2016/01/27/0.9.24-Release.rst:55
+#: i2p2www/blog/2016/03/22/0.9.25-Release.rst:37
+#: i2p2www/blog/2016/06/07/0.9.26-Release.rst:56
+#: i2p2www/blog/2016/10/17/0.9.27-Release.rst:35
+#: i2p2www/blog/2016/12/12/0.9.28-Release.rst:37
+#: i2p2www/blog/2017/02/27/0.9.29-Release.rst:34
+#: i2p2www/blog/2017/05/03/0.9.30-Release.rst:58
+#: i2p2www/blog/2017/08/07/0.9.31-Release.rst:34
+#: i2p2www/blog/2017/11/07/0.9.32-Release.rst:31
+#: i2p2www/blog/2018/01/30/0.9.33-Release.rst:32
+#: i2p2www/blog/2018/04/10/0.9.34-Release.rst:32
+#: i2p2www/blog/2018/06/26/0.9.35-Release.rst:38
+#: i2p2www/blog/2018/08/23/0.9.36-Release.rst:35
+msgid "Changes"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:43
+msgid "Add support for Ed25519 signatures"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:44
+msgid ""
+"i2psnark move to separate config file for each torrent to better support "
+"per-torrent settings"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:45
+msgid "Add i2psnark support for data outside the i2psnark/ directory"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:46
+msgid "Enable stronger signatures (su3 format) for plugins"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:47
+msgid "Speed up SSU introductions by responding to hole punch messages"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:48
+msgid "Several improvements in SAM efficiency"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:53
+msgid "Form submission fixes in the console and i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:54
+msgid "Streaming fixes for long signatures"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:55
+msgid "i2psnark fixes for file name character mapping when seeding"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:56
+msgid "I2PTunnel fixes stopping client tunnels"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:57
+msgid "I2PTunnel fix updating options on a running delay-open client tunnel"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:62
+msgid "Re-enable plugin installation via the console, removed in 0.9.14"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:63
+msgid "i2psnark now remembers uploaded count across restarts"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:64
+msgid "i2psnark increase max piece size to 8 MB"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:65
+msgid "i2psnark several UI fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:66
+msgid "Prohibit SSU peer test requests unless a connection is established"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:67
+msgid ""
+"i2ptunnel add support for local SSL connections for standard and IRC "
+"client tunnels"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:68
+msgid "Console and log warnings for unavailable crypto"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:69
+msgid ""
+"More consistent routing for Delivery Status Messages to reduce network "
+"connections"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:70
+msgid "Disable external entities in UPnP XML parser"
+msgstr ""
+
+#: i2p2www/blog/2014/09/20/0.9.15-Release.rst:73
+msgid "Update GeoIP data (in both new installs and updates)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.16 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:10
+msgid "0.9.16 includes crypto migration and many fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:12
+msgid ""
+"0.9.16 is a significant step forward in our plan to migrate\n"
+"from DSA to ECDSA and then EdDSA cryptographic signatures,\n"
+"and makes several other changes to increase your anonymity and security.\n"
+"Client tunnels for standard, IRC, and SOCKS IRC will use ECDSA signatures"
+" by default.\n"
+"In addition, we've fixed a large number of serious bugs, including "
+"console lockups."
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:20
+msgid ""
+"Changes in router data structures will require i2pcontrol plugin users to"
+" update to version 0.0.9."
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:24
+msgid ""
+"If you run an eepsite or a service and you are not running a recent "
+"release,\n"
+"or your Java or OS does not support ECDSA (as noted in the logs and on "
+"the /logs page in the console),\n"
+"please fix the issue as soon as possible or your users will soon be "
+"unable to connect."
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:41
+msgid "Add support for stronger Router Info signatures"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:42
+msgid "Encrypt RI lookups and responses on faster boxes"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:43
+msgid ""
+"Require I2CP authorization for all messages when enabled (requires 0.9.11"
+" or higher client)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:44
+msgid "Disable SSLv3 and older ciphers for reseeding and other uses of SSL"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:45
+msgid ""
+"Use ECDSA by default for i2ptunnel IRC, SOCKS-IRC, and standard client "
+"tunnels"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:46
+msgid "Don't prefer floodfills in some countries"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:47
+msgid ""
+"New column sorting, set-all priority buttons, and upload ratio display in"
+" i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:48
+msgid "Increase i2psnark tunnel default to 3 hops"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:49
+msgid ""
+"Implement bundling of multiple fragments in a single SSU message for "
+"efficiency"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:50
+msgid "New add-to-addressbook links on netdb leaseset page"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:51
+msgid ""
+"Implement I2NP DatabaseLookupMessage search type field to improve lookup "
+"efficiency"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:58
+msgid "CPUID fixes and updates for recent processors"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:59
+#, python-format
+msgid "i2psnark fix magnet links with %(pc)s-encoding"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:60
+#, python-format
+msgid ""
+"Improve handling of SSU socket closing out from under us (hopefully fix "
+"100%(pc)s CPU)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:61
+msgid "SSU bitfield handling fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:62
+msgid "Fix HTTP header issues in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:63
+msgid "Fix rare NPE when building garlic message"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:64
+msgid "Fix console lockups (hopefully)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:65
+msgid "Fix i2ptunnel js confirm-delete"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:70
+msgid ""
+"Move router data structures from i2p.jar to router.jar (breaks i2pcontrol"
+" plugin)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:71
+msgid ""
+"New router keys now stored in router.keys.dat (eepPriv.dat format) "
+"instead of router.keys"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:72
+msgid "Improve handling of unsupported encryption throughout"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:73
+msgid "More error checking of client I2CP messages by the router"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:74
+msgid "Initial work on hooks for pluggable transports"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:75
+msgid "Enforce request timestamp in tunnel build messages"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:76
+msgid ""
+"Re-enable message status in streaming, but treat no leaseset as a soft "
+"failure for now"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:77
+msgid "Return unused DH keypairs to the pool for efficiency"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:78
+msgid "Raise failsafe tagset limit and improve deletion strategy when hit"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:79
+msgid ""
+"Change eepsite Jetty threadpool and queue configuration (new installs "
+"only)"
+msgstr ""
+
+#: i2p2www/blog/2014/11/01/0.9.16-Release.rst:80
+msgid "NTCP establishment refactoring in prep for NTCP2 and PT"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.17 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:10
+msgid "0.9.17 with more crypto migration and many fixes"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:12
+msgid ""
+"0.9.17 is primarily a bugfix release, but it also continues our migration"
+" to stronger cryptographic signatures."
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:16
+msgid ""
+"We have moved the news feed system used for the news on your console and "
+"the latest router version indication\n"
+"to a signed format using RSA 4096-bit keys for enhanced security."
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:21
+msgid ""
+"New eepsites and servers will be ECDSA-signed by default, if ECDSA is "
+"available.\n"
+"There is now a warning in the console sidebar if ECDSA is not available.\n"
+"For RedHat users, we have reports of successful installs of the "
+"BouncyCastle Provider (bcprov) jar to add ECDSA support."
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:27
+msgid ""
+"We've fixed several serious bugs, including an SSU packet corruption "
+"problem,\n"
+"and a SAM bug affecting i2p-messenger and other SAM applications.\n"
+"There are several fixes for the preliminary ECDSA router signatures added"
+" in the last release but not yet enabled."
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:33
+msgid ""
+"Many of us will be attending 31C3 in Hamburg in December. Stop by our "
+"table and say hi!"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:48
+msgid "Signed news"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:49
+msgid "ECDSA default for new server tunnels"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:50
+msgid "Reseeding now SSL-only by default"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:55
+msgid "Fix SSU sending corrupt ack-only packets with partial bitfields"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:56
+msgid "Fix SSU inbound connection fail from non-DSA router"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:57
+msgid "Don't select incompatible peers if we are a non-DSA router"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:58
+msgid "Fix EdDSA signature verification bug"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:59
+msgid ""
+"Set I2NP lookup type flags in all cases, not just when a reply tunnel is "
+"used"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:60
+msgid "Stop i2ptunnel server acceptor thread after close"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:61
+msgid "Fix bug preventing some plugins from stopping completely"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:62
+msgid "Fix SAM v3 bug causing failures in incoming connections"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:67
+msgid "Add a warning in the console sidebar if ECDSA not supported"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:68
+msgid "Log warnings for Java 6 that we will eventually require Java 7"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:69
+msgid "Don't let proxied routers auto-floodfill"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:70
+msgid "Don't resend SSU acks that are too old"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:71
+msgid "Don't publish direct info in SSU address if introducers are required"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:72
+msgid "New default opentrackers in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:73
+msgid "Add support for specifiying data directory per-torrent in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:74
+msgid "Changes in streaming accept() error behavior"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:75
+msgid "Minor blockfile format changes"
+msgstr ""
+
+#: i2p2www/blog/2014/11/30/0.9.17-Release.rst:76
+msgid ""
+"New option for persistent random key to preserve peer ordering across "
+"restarts"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:1
+msgid ""
+"====================\n"
+"Android app releases\n"
+"===================="
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:10
+msgid ""
+"I2P Android 0.9.17 and Bote 0.3 have been released on the website, Google"
+" Play and F-Droid."
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:12
+msgid ""
+"It has been some time since I last posted updates about our Android "
+"development,\n"
+"and several I2P releases have gone by without any matching Android "
+"releases.\n"
+"At last, the wait is over!"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:18
+msgid ""
+"New app versions\n"
+"----------------"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:23
+msgid ""
+"New versions of I2P Android and Bote have been released! They can be "
+"downloaded\n"
+"from these URLs:"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:31
+msgid ""
+"The main change in these releases is the transition to Android's new "
+"Material\n"
+"design system. Material has made it much easier for app developers with, "
+"shall\n"
+"we say, \"minimalist\" design skills (like myself) to create apps that "
+"are nicer\n"
+"to use. I2P Android also updates its underlying I2P router to the just-"
+"released\n"
+"version 0.9.17. Bote brings in several new features along with many "
+"smaller\n"
+"improvements; for example, you can now add new email destinations via QR "
+"codes."
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:40
+msgid ""
+"As I mentioned in `my last update`_, the release key that signs the apps "
+"has\n"
+"changed. The reason for this was because we needed to change the package "
+"name\n"
+"of I2P Android. The old package name (``net.i2p.android.router``) had "
+"already\n"
+"been taken on Google Play (we still don't know who was using it), and we "
+"wanted\n"
+"to use the same package name and signing key for all distributions of I2P"
+"\n"
+"Android. Doing so means that a user could initially install the app from "
+"the I2P\n"
+"website, and then later if the website was blocked they could upgrade it "
+"using\n"
+"Google Play. Android OS considers an application to be completely "
+"different when\n"
+"its package name changes, so we took the opportunity to increase the "
+"strength of\n"
+"the signing key."
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:53
+msgid "The fingerprint (SHA-256) of the new signing key is:"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:63
+msgid "`my last update`"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:65
+msgid ""
+"Google Play\n"
+"-----------"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:70
+msgid ""
+"A few months ago we `released`_ both I2P Android and Bote on Google Play "
+"in\n"
+"Norway, to test the release process there. We are pleased to announce "
+"that both\n"
+"apps are now being released globally by `Privacy Solutions`_. The apps "
+"can be\n"
+"found at these URLs:"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:80
+msgid ""
+"The global release is being done in several stages, starting with the "
+"countries\n"
+"for which we have translations. The notable exception to this is France; "
+"due to\n"
+"import regulations on cryptographic code, we are unable yet to distribute"
+" these\n"
+"apps on Google Play France. This is the same issue that has affected "
+"other apps\n"
+"like TextSecure and Orbot."
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:88
+msgid "`released`"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:90
+msgid "`I2P on Google Play`"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:91
+msgid "`Bote on Google Play`"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:93
+msgid ""
+"F-Droid\n"
+"-------"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:98
+msgid ""
+"Don't think we have forgotten about you, F-Droid users! In addition to "
+"the two\n"
+"locations above, we have set up our own F-Droid repository. If you are "
+"reading\n"
+"this post on your phone, `click here`_ to add it to F-Droid (this only "
+"works in\n"
+"some Android browsers). Or, you can manually add the URL below to your "
+"F-Droid\n"
+"repository list:"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:108
+msgid ""
+"If you would like to manually verify the fingerprint (SHA-256) of the "
+"repository\n"
+"signing key, or type it in when adding the repository, here it is:"
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:117
+msgid ""
+"Unfortunately the I2P app in the main F-Droid repository has not been "
+"updated\n"
+"because our F-Droid maintainer has disappeared. We hope that by "
+"maintaining this\n"
+"binary repository, we can better support our F-Droid users and keep them\n"
+"up-to-date. If you have already installed I2P from the main F-Droid "
+"repository,\n"
+"you will need to uninstall it if you want to upgrade, because the signing"
+" key\n"
+"will be different. The apps in our F-Droid repository are the same APKs "
+"that are\n"
+"provided on our website and on Google Play, so in future you will be able"
+" to\n"
+"upgrade using any of these sources."
+msgstr ""
+
+#: i2p2www/blog/2014/12/01/Android-app-releases.rst:128
+msgid "`click here`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:1
+msgid ""
+"================\n"
+"31C3 trip report\n"
+"================"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:9
+msgid ""
+"CCC has always been a productive time for us, and 31C3 was no exception. "
+"Here is a summary of our various meetings and discussions."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:20
+msgid ""
+"We were, for the second year in a row, at a great location in the "
+"Congress, in\n"
+"`Noisy Square`_, right next to the EFF table. Being part of Noisy Square "
+"has\n"
+"really increased our visibility and helped many people find us. Thanks to"
+" Noisy\n"
+"Square and the 31C3 organizers for a great Congress."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:29
+msgid ""
+"We also thank Gabriel Weinberg and his fabulous search engine "
+"`DuckDuckGo`_ for\n"
+"their support of open source anonymity tools and their `generous "
+"contribution`_\n"
+"to I2P in 2014. Funding from DuckDuckGo and others helped support our "
+"attendance\n"
+"at CCC. This is the primary annual meetup for I2P developers and it is "
+"critical\n"
+"to our success."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:38
+msgid "`generous contribution`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:40
+msgid ""
+"Discussions with others\n"
+"======================="
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:48
+msgid ""
+"We spoke at length with Christian Grothoff of `GNUnet`_. He has moved "
+"himself\n"
+"and the project from TU Munich to `Inria`_ in France. He has a large "
+"number of\n"
+"`open positions`_. This is a great opportunity to get paid to work on "
+"open\n"
+"source anonymity tools, we encourage everybody to contact him about it."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:57
+msgid "`open positions`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:59
+msgid ""
+"The prospect of an invigorated GNUnet with a large amount of new funding "
+"is\n"
+"quite interesting. We discussed more ways to work together. In early "
+"2014, we\n"
+"worked hard to understand the GnuNet DNS replacement, but we were unable "
+"to\n"
+"figure out a good fit for it in I2P. One of his new ideas is a "
+"distributed,\n"
+"anonymous statistics gathering subsystem, for detecting problems or "
+"attacks on\n"
+"the network. We'd definitely be interested in that."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:68
+msgid ""
+"We also discussed the `Special-Use Domain Names of Peer-to-Peer Systems "
+"draft`_.\n"
+"A new, greatly simplified version 3 was posted in December. The prospects"
+" for\n"
+"approval remain unclear. The best way to monitor or participate in the\n"
+"discussion is via the `IETF DNSOP WG mailing list`_. We will attempt to "
+"do so\n"
+"on our side, and also give Hellekin a new point-of-contact for this topic."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:76
+msgid "`Special-Use Domain Names of Peer-to-Peer Systems draft`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:77
+msgid "`IETF DNSOP WG mailing list`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:79
+msgid ""
+"We apologized to Christian for not being organized enough to have a talk "
+"at his\n"
+"`We Fix The Net assembly`_. One of our biggest failures as a project is "
+"our\n"
+"seeming inability to submit talks at conferences. We'll have to do better"
+" in the\n"
+"new year."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:86
+msgid "`We Fix The Net assembly`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:91
+msgid ""
+"Iain Learmonth, a Debian participant, stopped by. He wants to put I2P in "
+"with\n"
+"other anonymity tools into this new Debian \"superpackage\" of some sort,"
+" and\n"
+"would love to get I2P into Debian in 2015. He claims the process is now "
+"easy,\n"
+"just `follow the instructions`_. We said that's funny, we've been\n"
+"`stuck in the process for over 7 years`_."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:99
+msgid "`follow the instructions`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:100
+msgid "`stuck in the process for over 7 years`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:102
+msgid ""
+"He said, well, try the new process, it works great, should be no problem "
+"at all\n"
+"if your package is in good shape. The people in Debian that run this "
+"process are\n"
+"eager volunteers who want nothing more than to get more packages in. We "
+"said our\n"
+"package is indeed in fantastic shape, and we would try out the new "
+"process as\n"
+"soon as possible. If all this is true, we will be in the next Debian "
+"release in\n"
+"late 2015. This would be very very cool."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:114
+msgid ""
+"We had a nice discussion with BitingBird of Tails. They are very happy "
+"with our\n"
+"rapid response to the `vulnerability disclosure`_ last summer, resulting "
+"in our\n"
+"`0.9.14 release`_. Our vulnerability was initially blamed on Tails, and "
+"they\n"
+"took `great offense`_ to that and the lack of private notification. We "
+"thanked\n"
+"them for taking the heat and fighting back."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:122
+msgid "`vulnerability disclosure`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:123
+msgid "`0.9.14 release`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:124
+msgid "`great offense`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:126
+msgid ""
+"BitingBird also handles support, and she tells us the number one issue is"
+" how\n"
+"long I2P takes to start up and be useful for browsing I2P sites. Her "
+"standard\n"
+"answer is \"wait ten more minutes\" and that seems to be effective. I2P "
+"is\n"
+"particularly slow to startup on Tails since it does not persist peer data"
+" by\n"
+"default. It would be nice to change that, but there's also things we can "
+"do on\n"
+"the I2P side to make things start faster. Expect some improvement in our "
+"0.9.18\n"
+"release."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:139
+msgid ""
+"Longtime friend of I2P Bernhard Fischer of `OnionCat`_ stopped by. The "
+"upcoming\n"
+"Tor Hidden Services changes mean that their keys will no longer fit into "
+"a\n"
+"portion of an IPv6 address, and he was working on a solution. We reminded"
+" him\n"
+"that this has always been the case for I2P (with \"GarliCat\"), that it's"
+" not a\n"
+"new problem. He pointed us to `a presentation`_ of his proposal. It "
+"involves\n"
+"storing an extra record in the hidden service directory (equivalent of a\n"
+"leaseset I2P's network database). It wasn't completely clear how this "
+"would\n"
+"work, or if we would consider it abuse of the netDb. We'll follow up with"
+" him\n"
+"as he gets further."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:152
+msgid "`a presentation`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:154
+msgid ""
+"New users\n"
+"---------"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:159
+msgid ""
+"We spent hours and hours explaining I2P to people stopping by our table. "
+"Some\n"
+"had heard of I2P before, some had not; everybody had heard of Tor and had"
+" at\n"
+"least a vague idea of what hidden services are. As usual, introducing "
+"people to\n"
+"I2P was a struggle. By the end of the Congress, we became convinced that "
+"a part\n"
+"of the problem was a difference in terminology. Back 12 years ago, when "
+"I2P and\n"
+"Tor were both getting started, we each came up with terms for the various"
+" parts\n"
+"of our systems. Today, the Tor terminology such as \"hidden service\" is\n"
+"well-understood and commonplace. The I2P terminology such as \"eepsite\" "
+"is\n"
+"neither. We agreed to review our documentation, router console, and other"
+" places\n"
+"for opportunities to simplify it and use common terms."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:172
+msgid ""
+"I2P project topics\n"
+"------------------"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:177
+msgid ""
+"* *Spending money:* We discussed several ways to effectively use our "
+"resources\n"
+" in 2015, including more hardware for testing and development. Also, we "
+"plan to\n"
+" increase reimbursement levels for conference attendees."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:183
+msgid ""
+"* *Toronto meetup:* CCC is such a productive time for us, and it seems "
+"that a\n"
+" second meetup in the year would be quite helpful. We have proposed it "
+"for\n"
+" August 2015 in Toronto, Canada, in conjunction with `Toronto Crypto`_. "
+"It\n"
+" would include developer meetings together with presentations and "
+"tutorials,\n"
+" all open to the public. We are attempting to gauge interest and "
+"research\n"
+" possible venues. If you are considering attending, please let us know "
+"by\n"
+" `tweeting @i2p`_ or posting `on the dev forum thread`_."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:193
+msgid ""
+"* We discussed Meeh's workload and the state of the various services he "
+"is\n"
+" running. We made some plans to reduce his load and have some other "
+"people help\n"
+" out."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:199
+msgid ""
+"* We reviewed our critieria for placing links to `i2pd`_ on our download "
+"page.\n"
+" We agreed that the only remaining item is to have a nice page on the\n"
+" `Privacy Solutions web site`_ or elsewhere with binary packages for "
+"Windows,\n"
+" Linux, and Mac, and source packages. It's not clear who is responsible "
+"for\n"
+" building the packages and where the \"official\" version is. Once "
+"there's an\n"
+" established process for building and signing packages and an official "
+"place to\n"
+" put them, we're ready to link to it. If it is not feasible to host it "
+"on the\n"
+" Privacy Solutions website, we will discuss alternatives with orignal,\n"
+" including possible migration to our download servers."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:211
+msgid ""
+"* Lots of people coming by the table asked if we had a non-Java version. "
+"It was\n"
+" great to finally answer \"yes\" and we're eager to get the word out and"
+" get more\n"
+" users, testers, and developers on it."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:217
+msgid ""
+"* `Vuze`_ continues to make good progress on their I2P integration. We "
+"look\n"
+" forward to working with them in the new year on a managed rollout to "
+"more\n"
+" users."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:223
+msgid ""
+"* We discussed the state of Meeh's and Sindu's reseed servers. They made "
+"several\n"
+" improvements while at the congress and are investigating migration to\n"
+" `Matt Drollette's Go implementation`_. The security and reliability of "
+"our\n"
+" reseed servers is vital to new users and network operation. `User "
+"'backup'`_\n"
+" is doing a great job monitoring and managing the pool of reseed servers."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:231
+msgid ""
+"* We agreed to purchase a second root server for development, testing, "
+"and\n"
+" services. Echelon will be adminstering it. Contact him if you would "
+"like a VM."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:236
+msgid ""
+"* We reiterated that we have funds available to purchase test hardware,\n"
+" especially for Windows and Mac. Talk to echelon for details."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:241
+msgid ""
+"* We met with Welterde about the state of his services including his\n"
+" `open tracker`_. These services are not being adequately maintained and"
+" will\n"
+" soon become inaccessible due to crypto changes if they are not "
+"upgraded. He\n"
+" committed to upgrading them soon."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:248
+msgid ""
+"* We met lots of people interested in our `Android app`_. We passed "
+"several\n"
+" ideas and bug reports back to str4d. We plan to make a big push to give"
+" the\n"
+" app some development love early in the year."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:254
+msgid ""
+"* Regrettably, we didn't get to see too many talks at the Congress, as we"
+" were\n"
+" so busy meeting with people. We plan to catch up and `watch them "
+"online`_. As\n"
+" usual, Tor's \"State of the Onion\" talk was excellent, and Jacob's "
+"talk was\n"
+" great. We hear that the cryptography talks were good as well."
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:261
+msgid "`Toronto Crypto`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:262
+msgid "`tweeting @i2p`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:263
+msgid "`on the dev forum thread`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:266
+msgid "`Privacy Solutions web site`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:270
+msgid "`Matt Drollette's Go implementation`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:271
+msgid "`User 'backup'`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:273
+msgid "`open tracker`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:275
+msgid "`Android app`"
+msgstr ""
+
+#: i2p2www/blog/2015/01/20/31C3-trip-report.rst:277
+msgid "`watch them online`"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.18 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:10
+msgid "0.9.18 with performance improvements and bug fixes"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:12
+msgid ""
+"0.9.18 contains several bug fixes and performance improvements.\n"
+"We have shortened the startup time, and reduced latency throughout our "
+"network protocols.\n"
+"We've increased the default connection limits for the fastest routers,\n"
+"and reduced the thread usage in i2ptunnel.\n"
+"UPnP fixes should improve handling of external device changes.\n"
+"CPU usage in high-bandwidth routers may be reduced thanks to some NTCP "
+"fixes."
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:32
+msgid "Fix parsing of ECDSA address helper in HTTP client proxy"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:33
+msgid "Fix news last-modified processing which prevented notification of update"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:34
+msgid "Improve handling of UPnP device changes"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:35
+msgid "Don't hang at startup forever waiting for entropy"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:36
+msgid "Possible fixes for high CPU usage in NTCP"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:40
+msgid "Publish router info faster when address costs change"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:41
+msgid "Start i2ptunnel 90s sooner"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:42
+msgid "Accept tunnels 10m sooner"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:43
+msgid "Increase exploratory tunnel quantity during initial exploration"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:44
+msgid "Latency reductions in several places"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:45
+msgid ""
+"Add startup browser configuration with advanced config "
+"routerconsole.browser"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:46
+msgid "Persistent leaseset keys to eliminate correlation with restart"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:47
+msgid "Faster unchoking of new peers in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:48
+msgid "More aggressive throttling of lookups at floodfills"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:49
+msgid "Tunnel build request record refactoring"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:50
+msgid "Reduce thread usage in i2ptunnel"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:51
+msgid "Add i2ptunnel server option for multihomed sites"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:52
+msgid "Disallow some common I2P application ports as router ports"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:53
+msgid "Increase connection limits for fast routers"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:54
+msgid "Add Save-As button for SusiMail messages"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:55
+msgid "Use 'hidden service' terminology in the console"
+msgstr ""
+
+#: i2p2www/blog/2015/02/22/0.9.18-Release.rst:56
+msgid "Encrypted netdb lookups for 32-bit x86"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.19 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:10
+msgid "0.9.19 with performance improvements and bug fixes"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:12
+msgid ""
+"0.9.19 has several fixes and improvements for floodfill performance.\n"
+"Many of you saw high CPU usage after 0.9.18 was released.\n"
+"This was caused by a combination of increased encryption usage, the big "
+"influx of Vuze users into the network,\n"
+"reduced floodfills due to tighter performance requirements, and some "
+"longstanding bugs.\n"
+"Things should be a lot better after most of the network has updated.\n"
+"As always, the best way to reduce CPU usage is to lower your bandwidth "
+"limits."
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:20
+msgid ""
+"We've also added new ways to reseed manually, and to generate a reseed "
+"file you can easily share with others who need it.\n"
+"See the reseed configuration page in the router console for more "
+"information."
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:34
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:48
+msgid "Floodfill performance improvements"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:35
+msgid "Easier ways to reseed manually from a file or URL"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:36
+msgid "New way to export reseed data for others"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:37
+msgid "Support for installing plugin from file"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:42
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:59
+msgid "Fixes for high CPU usage in floodfills"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:43
+msgid "i2ptunnel locking fixes"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:44
+msgid "Fixes for read timeout handling in streaming"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:45
+msgid "Fix changing i2psnark data directory on Windows"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:46
+msgid "Fix multiple SSL outproxies in HTTP client"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:51
+msgid "Update to UPnP library version 3.0"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:52
+msgid "Improve tracking of floodfill lookup success"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:53
+msgid "Direct router info lookups if connected to floodfill"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:54
+msgid "Auto-adjustment of i2psnark tunnel quantity"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:55
+msgid "Increase exploratory tunnel quantity when floodfill"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:56
+msgid "Increase min and default bandwidth for i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:57
+msgid "Improved strategies for dropping jobs on high job lag to prevent overload"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:58
+msgid "Drop tunnel build requests on high job lag"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:59
+msgid "Increase allowed clock skew in I2CP"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:60
+msgid "New HTTP error page when the server resets the connection"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:61
+msgid "Require ECDSA support for floodfill"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:62
+msgid "Republish router info faster when capabilities change"
+msgstr ""
+
+#: i2p2www/blog/2015/04/12/0.9.19-Release.rst:63
+msgid "Better feedback in console for reseed errors"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:1
+msgid ""
+"==============\n"
+"0.9.20 Release\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:10
+msgid "0.9.20 with performance improvements and bug fixes"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:12
+msgid ""
+"0.9.20 contains many important bug fixes, and several changes to increase"
+" floodfill capacity in the network."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:16
+msgid ""
+"Routers configured for 32-64 KB of shared bandwidth may now become "
+"floodfill,\n"
+"and routers configured for 512 KB or more of shared bandwidth will have "
+"higher connection limits.\n"
+"These changes may cause your router to use more resources.\n"
+"If the router becomes too busy, the best way to reduce usage is to lower "
+"the bandwidth settings in your console.\n"
+"If that doesn't help, you may now disable automatic floodfill on the "
+"advanced configuration page in the console."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:24
+msgid ""
+"We're hopeful that these changes will increase network capacity and "
+"performance,\n"
+"and reduce the congestion that's been affecting the network the last "
+"three months."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:34
+msgid ""
+"Finally, we're excited to announce our first-ever I2P meetup, in Toronto "
+"August 15-16.\n"
+"There will be lots of presentations and tutorials. All are welcome.\n"
+"For more information, see the `announcement`_."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:49
+msgid "Add support for address book export"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:50
+msgid "Add support for SSL in HTTP server tunnel"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:51
+msgid "Allow class 'M' (64-128 KBps share bandwidth) to become floodfill"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:52
+msgid ""
+"Raise connection limits for new classes 'P' (512-2000 KBps share "
+"bandwidth) and 'X' (over 2000 KBps)"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:53
+msgid "Add support for signed development builds"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:60
+msgid "Clock skew fixes"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:61
+msgid "Fixes and configuration for when IPv4 is firewalled but IPv6 still works"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:62
+msgid "Locking fixes for i2ptunnel clients to prevent hangs at startup"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:63
+msgid "Verify hostnames when reseeding"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:64
+msgid "Fix deletion of config files for deleted torrents in i2psnark"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:65
+msgid "Fix hangs fetching proxy.i2p local resources via Privoxy"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:66
+msgid "Fixes for duplicate shared clients"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:67
+msgid "Fix for occasional page truncation in HTTP client"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:68
+msgid "Fixes for handling corrupted SSU packets"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:69
+msgid "Fix closing of SAM sessions when I2P session closes"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:70
+msgid "Fix bugs in handling streaming resets"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:77
+msgid "Reduce NTCP threads"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:78
+msgid "Eliminate SimpleScheduler threads"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:79
+msgid "Add continent-based NTP servers as fallbacks for country-based ones"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:80
+msgid "Remove all default non-SSL reseed hosts"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:81
+msgid "Disable fallback to non-su3 reseeding"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:82
+msgid "Several fixes in streaming for better \"loopback\" performance"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:83
+msgid "Reduce latency in i2ptunnel"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:84
+msgid "Add a larger Bloom filter for very high bandwidth and memory"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:85
+msgid ""
+"Add Bloom filter warning when configured for high bandwidth but not "
+"enough memory"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:86
+msgid "Reduce max netdb search depth to reduce floodfill load"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:87
+msgid "Improved header processing and error handling in i2ptunnel HTTP server"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:88
+msgid ""
+"Better error handling and user feedback when HTTP client tunnel is "
+"disabled"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:89
+msgid "More changes to improve floodfill capacity"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:90
+msgid "New configuration for forcing IPv4 (only) to firewalled on /confignet"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:91
+msgid "New configuration for floodfill on /configadvanced"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:92
+msgid "Show separate IPv4 and IPv6 status in summary bar when appropriate"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/0.9.20-Release.rst:93
+msgid "Better handling of corrupt SSU packets"
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/Toronto-Meetup.rst:1
+msgid ""
+"==============\n"
+"Toronto Meetup\n"
+"=============="
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/Toronto-Meetup.rst:10
+msgid "I2P Meetup in Toronto on August 15-16."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/Toronto-Meetup.rst:12
+msgid ""
+"The I2P team is proud to announce that we are going to host a meetup in "
+"Toronto on August 15-16.\n"
+"A number of members of our community will be attending and are going to "
+"host talks, workshops and discussions about and relating to I2P. This "
+"event is not just for I2P people though, it's meant for everyone."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/Toronto-Meetup.rst:17
+msgid ""
+"If you're curious about I2P, interested in privacy/cryptography/anonymity"
+" or just want to come by and talk to us, please do. This is an event for "
+"everyone. If you're not familiar with any of these topics, come by anyway"
+" and we'll show you how I2P works and what you can do with it.\n"
+"\n"
+"The event is entirely free, you don't need to sign up or register."
+msgstr ""
+
+#: i2p2www/blog/2015/06/02/Toronto-Meetup.rst:23
+msgid ""
+"The meetup couldn't have been arranged without our friends at `Toronto "
+"Crypto http://i2p-projekt.i2p/hosts.txt "
+"(http://udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p/hosts.txt)
,"
+" \n"
+"which contains a copy of the hosts.txt included\n"
+"in the I2P release.\n"
+"Users must configure additional subscriptions in their\n"
+"local addressbook application (via subscriptions.txt or SusiDNS)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:211
+msgid "Some other public addressbook subscription links:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:218
+msgid ""
+"The operators of these services may have various policies for listing "
+"hosts.\n"
+"Presence on this list does not imply endorsement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:223
+#: i2p2www/pages/site/docs/naming.html:235
+msgid "Naming Rules"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:224
+msgid ""
+"While there are hopefully not any technical limitations within I2P on "
+"host names,\n"
+"the addressbook enforces several restrictions on host names\n"
+"imported from subscriptions.\n"
+"It does this for basic typographical sanity and compatibility with "
+"browsers,\n"
+"and for security.\n"
+"The rules are essentially the same as those in RFC2396 Section 3.2.2.\n"
+"Any hostnames violating these rules may not be propagated\n"
+"to other routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:239
+msgid "Names are converted to lower case on import."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:243
+msgid ""
+"Names are checked for conflict with existing names in the existing "
+"userhosts.txt and hosts.txt\n"
+"(but not privatehosts.txt) after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:248
+msgid "Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:252
+msgid "Must not start with '.' or '-'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:256
+msgid "Must end with '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:260
+msgid "67 characters maximum, including the '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:264
+msgid "Must not contain '..'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:268
+msgid "Must not contain '.-' or '-.' (as of 0.6.1.33)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:272
+msgid "Must not contain '--' except in 'xn--' for IDN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:276
+msgid ""
+"Base32 hostnames (*.b32.i2p) are reserved for base 32 use and so are not "
+"allowed to be imported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:280
+msgid ""
+"Certain hostnames reserved for project use are not allowed\n"
+"(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, "
+"*.console.i2p, and others)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:285
+msgid "Keys are checked for base64 validity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:289
+msgid ""
+"Keys are checked for conflict with existing keys in hosts.txt (but not "
+"privatehosts.txt)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:293
+msgid "Minimum key length 516 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:297
+msgid "Maximum key length 616 bytes (to account for certs up to 100 bytes)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:302
+msgid ""
+"Any name received via subscription that passes all the checks is added "
+"via the local naming service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:306
+msgid ""
+"Note that the '.' symbols in a host name are of no significance,\n"
+"and do not denote any actual naming or trust hierarchy.\n"
+"If the name 'host.i2p' already exists, there is nothing\n"
+"to prevent anybody from adding a name 'a.host.i2p' to their hosts.txt,\n"
+"and this name can be imported by others' addressbook.\n"
+"Methods to deny subdomains to non-domain 'owners' (certificates?),\n"
+"and the desirability and feasibility of these methods,\n"
+"are topics for future discussion."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:317
+msgid ""
+"International Domain Names (IDN) also work in i2p (using punycode 'xn--' "
+"form).\n"
+"To see IDN .i2p domain names rendered correctly in Firefox's location "
+"bar,\n"
+"add 'network.IDN.whitelist.i2p (boolean) = true' in about:config."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:323
+msgid ""
+"As the addressbook application does not use privatehosts.txt at all, in "
+"practice\n"
+"this file is the only place where it is appropriate to place private "
+"aliases or\n"
+"\"pet names\" for sites already in hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:329
+msgid "Advanced Subscription Feed Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:337
+msgid "Outgoing Subscriptions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:338
+msgid ""
+"Addressbook will publish the merged hosts.txt to a location\n"
+"(traditionally hosts.txt in the local eepsite's home directory) to be "
+"accessed by others\n"
+"for their subscriptions.\n"
+"This step is optional and is disabled by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:346
+msgid ""
+"The addressbook application, together with eepget, saves the Etag and/or "
+"Last-Modified\n"
+"information returned by the web server of the subscription.\n"
+"This greatly reduces the bandwidth required, as the web server will\n"
+"return a '304 Not Modified' on the next fetch if nothing has changed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:353
+msgid ""
+"However the entire hosts.txt is downloaded if it has changed.\n"
+"See below for discussion on this issue."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:358
+msgid ""
+"Hosts serving a static hosts.txt or an equivalent CGI application\n"
+"are strongly encouraged to deliver\n"
+"a Content-Length header, and either an Etag or Last-Modified header.\n"
+"Also ensure that the server delivers a '304 Not Modified' when "
+"appropriate.\n"
+"This will dramatically reduce the network bandwidth, and\n"
+"reduce chances of corruption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:367
+msgid "Host Add Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:368
+msgid ""
+"A host add service is a simple CGI application that takes a hostname and "
+"a Base64 key as parameters\n"
+"and adds that to its local hosts.txt.\n"
+"If other routers subscribe to that hosts.txt, the new hostname/key\n"
+"will be propagated through the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:375
+msgid ""
+"It is recommended that host add services impose, at a minimum, the "
+"restrictions imposed by the addressbook application listed above.\n"
+"Host add services may impose additional restrictions on hostnames and "
+"keys, for example:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:380
+msgid "A limit on number of 'subdomains'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:384
+msgid "Authorization for 'subdomains' through various methods."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:388
+msgid "Hashcash or signed certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:392
+msgid "Editorial review of host names and/or content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:396
+msgid "Categorization of hosts by content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:400
+msgid "Reservation or rejection of certain host names."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:404
+msgid "Restrictions on the number of names registered in a given time period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:408
+msgid "Delays between registration and publication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:412
+msgid "Requirement that the host be up for verification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:416
+msgid "Expiration and/or revocation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:420
+msgid "IDN spoof rejection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:425
+msgid "Jump Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:426
+msgid ""
+"A jump service is a simple CGI application that takes a hostname as a "
+"parameter\n"
+"and returns a 301 redirect to the proper URL with a "
+"?i2paddresshelper=key
\n"
+"string appended.\n"
+"The HTTP proxy will interpret the appended string and\n"
+"use that key as the actual destination.\n"
+"In addition, the proxy will cache that key so the\n"
+"address helper is not necessary until restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:436
+msgid ""
+"Note that, like with subscriptions, using a jump service\n"
+"implies a certain amount of trust, as a jump service could maliciously\n"
+"redirect a user to an incorrect destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:442
+msgid ""
+"To provide the best service, a jump service should be subscribed to\n"
+"several hosts.txt providers so that its local host list is current."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:448
+msgid ""
+"SusiDNS is simply a web interface front-end to configuring addressbook "
+"subscriptions\n"
+"and accessing the four addressbook files.\n"
+"All the real work is done by the 'addressbook' application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:454
+msgid ""
+"Currently, there is little enforcement of addressbook naming rules within"
+" SusiDNS,\n"
+"so a user may enter hostnames locally that would be rejected by\n"
+"the addressbook subscription rules."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:460
+msgid "Base32 Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:461
+msgid ""
+"I2P supports Base32 hostnames similar to Tor's .onion addresses.\n"
+"Base32 addresses are much shorter and easier to handle than the\n"
+"full 516-character Base64 Destinations or addresshelpers.\n"
+"Example: "
+"ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:468
+#, python-format
+msgid ""
+"In Tor, the address is 16 characters (80 bits), or half of the SHA-1 "
+"hash.\n"
+"I2P uses 52 characters (256 bits) to represent the full SHA-256 hash.\n"
+"The form is {52 chars}.b32.i2p.\n"
+"Tor has recently published a\n"
+"proposal\n"
+"to convert to an identical format of {52 chars}.onion for their hidden "
+"services.\n"
+"Base32 is implemented in the naming service, which queries the\n"
+"router over I2CP to lookup the LeaseSet to get the full Destination.\n"
+"Base32 lookups will only be successful when the Destination is up and "
+"publishing\n"
+"a LeaseSet.\n"
+"Because resolution may require a network database lookup, it may take "
+"significantly\n"
+"longer than a local address book lookup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:483
+msgid ""
+"Base32 addresses can be used in most places where hostnames or full "
+"destinations\n"
+"are used, however there are some exceptions where they may fail if the\n"
+"name does not immediately resolve. I2PTunnel will fail, for example, if\n"
+"the name does not resolve to a destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:2
+msgid "Plugins"
+msgstr "Qoşmalar"
+
+#: i2p2www/pages/site/docs/plugins.html:3
+msgid "June 2012"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:6
+msgid "General Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:7
+msgid ""
+"I2P includes a plugin architecture\n"
+"to support easy development and installation of additional software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:12
+msgid ""
+"There are now plugins available that support distributed email, blogs, "
+"IRC\n"
+"clients, distributed file storage, wikis, and more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:17
+msgid "Benefits to i2p users and app developers:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:22
+msgid "Easy distribution of applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:26
+msgid ""
+"Allows innovation and use of additional libraries without worrying about\n"
+"increasing the size of i2pupdate.sud
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:31
+msgid ""
+"Support large or special-purpose applications that would never be bundled"
+"\n"
+"with the I2P installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:36
+msgid "Cryptographically signed and verified applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:40
+msgid "Automatic updates of applications, just like for the router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:44
+msgid ""
+"Separate initial install and update packages, if desired, for smaller "
+"update downloads"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:48
+msgid ""
+"One-click installation of applications. No more asking users to modify\n"
+"wrapper.config
or clients.config
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:53
+msgid "Isolate applications from the base $I2P
installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:57
+msgid ""
+"Automatic compatibility checking for I2P version, Java version, Jetty\n"
+"version, and previous installed application version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:62
+msgid "Automatic link addition in console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:66
+msgid ""
+"Automatic startup of application, including modifying classpath, without "
+"requiring a restart"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:70
+msgid "Automatic integration and startup of webapps into console Jetty instance"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:74
+#, python-format
+msgid ""
+"Facilitate creation of 'app stores' like the one at\n"
+"%(pluginsite)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:79
+msgid "One-click uninstall"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:83
+msgid "Language and theme packs for the console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:87
+msgid "Bring detailed application information to the router console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:91
+msgid "Non-java applications also supported"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:97
+msgid "Required I2P version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:98
+msgid "0.7.12 or newer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:100
+msgid "Installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:101
+msgid ""
+"To install and start a plugin, copy the .xpi2p
install link "
+"to\n"
+"the form at the bottom of\n"
+"configclients.jsp"
+" in\n"
+"your router console and click the \"install plugin\" button. After a"
+"\n"
+"plugin is installed and started, a link to the plugin will usually appear"
+" at\n"
+"the top of your summary bar."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:110
+msgid ""
+"To update a plugin to the latest version, just click the update button on"
+"\n"
+"configclients.jsp."
+"\n"
+"There is also a button to check if the plugin has a more recent version, "
+"as\n"
+"well as a button to check for updates for all plugins. Plugins will be "
+"checked\n"
+"for updates automatically when updating to a new I2P release (not "
+"including dev\n"
+"builds)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:120
+msgid "Development"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:121
+#, python-format
+msgid ""
+"See the latest plugin specification and "
+"the\n"
+"plugin forum on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:126
+#, python-format
+msgid ""
+"See also the sources for plugins developed by various people. Some "
+"plugins, such\n"
+"as snowman, were "
+"developed\n"
+"specifically as examples."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:132
+msgid ""
+"Developers wanted! Plugins are a great way to learn more about I2P"
+"\n"
+"or easily add some feature."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:137
+msgid "Getting Started"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:138
+#, python-format
+msgid ""
+"To create a plugin from an existing binary package you will need to get\n"
+"makeplugin.sh from the i2p.scripts branch in "
+"monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:144
+msgid "Known Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:145
+msgid ""
+"Note that the router's plugin architecture does NOT currently\n"
+"provide any additional security isolation or sandboxing of plugins."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:151
+msgid ""
+"Updates of a plugin with included jars (not wars) won't be recognized if\n"
+"the plugin was already run, as it requires class loader trickery to flush"
+" the\n"
+"class cache; a full router restart is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:157
+msgid "The stop button may be displayed even if there is nothing to stop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:161
+msgid ""
+"Plugins running in a separate JVM create a logs/
directory "
+"in\n"
+"$CWD
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:166
+msgid ""
+"No initial keys are present, except for those of jrandom and zzz (using "
+"the\n"
+"same keys as for router update), so the first key seen for a signer is\n"
+"automatically accepted—there is no signing key authority."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:172
+msgid ""
+"When deleting a plugin, the directory is not always deleted, especially "
+"on\n"
+"Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:177
+msgid ""
+"Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result "
+"in a\n"
+"\"plugin is corrupt\" message if pack200 compression of the plugin file "
+"is used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:182
+msgid "Theme and translation plugins are untested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:186
+msgid "Disabling autostart doesn't always work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:2
+msgid "Ports Used by I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:3
+msgid "March 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:7
+msgid ""
+"These are the ports used or reserved by I2P, including those for known "
+"plugins,\n"
+"common alternates,\n"
+"and some typical related applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:13
+#, python-format
+msgid ""
+"Note that many of these are not enabled by default.\n"
+"There is more information in the FAQ.\n"
+"See also the documentation for individual plugins.\n"
+"Plugin authors please add any ports you use here.\n"
+"For new plugins, we recommend using the next available port\n"
+"in the 766x range."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:56
+msgid "recommended spot for new plugins/applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:2
+msgid "Reseed Hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:3
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:3
+msgid "January 2016"
+msgstr "Yanvar 2016"
+
+#: i2p2www/pages/site/docs/reseed.html:8
+msgid "About Reseed hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:10
+msgid ""
+"Reseed hosts are needed to for bootstrapping, that is, providing the "
+"initial set of I2P nodes for your I2P node to talk to. Depending on the "
+"status of your node it may need to bootstrap every now and then if many "
+"of the nodes it knows of aren't contactable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:14
+msgid ""
+"Reseeding is done over an encrypted connection and all of the bootstrap "
+"information is signed by the reseed host you connect to, making it "
+"impossible for an unauthenticated source to provide you with false "
+"information."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:19
+msgid "Running a Reseed host"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:21
+msgid ""
+"The more reseed hosts that are run, the more resilient the I2P network "
+"becomes, and the harder it is to prevent users of I2P from connecting to "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:25
+msgid ""
+"There have also been cases where the reseed hosts we had, have been under"
+" heavy load due to botnet activities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:33
+msgid "Thank you"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:35
+msgid ""
+"If you are running a reseed server, We would like to thank you for "
+"helping to\n"
+"make the I2P network stronger and more resilient than ever."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:41
+msgid "Thank you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:2
+msgid "BOB - Basic Open Bridge"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:3
+msgid "August 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:12
+msgid "Technical differences from SAM (for the better?)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:14
+msgid ""
+"BOB has separate command and data channels. \n"
+"One, an application command channel socket to router to configure.\n"
+"Two, the application data sockets to/from router that carry only data.\n"
+"The command channel is only needed for making or setting the initial\n"
+"destination key, and to set the destination key to port bindings. \n"
+"All connections run in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:23
+msgid ""
+"SAM has one connection that does everything, and you need to parse every "
+"packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:27
+msgid ""
+"BOB does not hold keypair values, nor does the router.\n"
+"Your application holds the keypair values. \n"
+"This is to reduce any extra complexity in the router code, it also adds "
+"to\n"
+"your privacy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:34
+msgid "SAM router stores every keypair you ever make."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:38
+msgid "Those are the important differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:44
+msgid "KEYS
= keypair public+private, these are BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:47
+msgid "KEY
= public key, also BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:50
+msgid ""
+"ERROR
as is implied returns the message \"ERROR "
+"\"+DESCRIPTION+\"\\n\"
, where the DESCRIPTION
is what"
+" went wrong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:53
+msgid ""
+"OK
returns \"OK\"
, and if data is to be "
+"returned, it is on the same line. OK
means the command is "
+"finished."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:56
+msgid ""
+"DATA
lines contain information that you requested. There may"
+" be multiple DATA
lines per request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:60
+msgid ""
+"NOTE: The help command is the ONLY command that has an exception "
+"to\n"
+"the rules... it can actually return nothing! This is intentional, since\n"
+"help is a HUMAN and not an APPLICATION command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:66
+msgid "Connection and Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:68
+msgid ""
+"All BOB status output is by lines. Lines may be \\n or \\r\\n terminated,"
+" depending on the system.\n"
+"On connection, BOB outputs two lines:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:78
+msgid "The current version is:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:82
+msgid ""
+"Note that previous versions used upper-case hex digits and did not "
+"conform to I2P versioning standards.\n"
+"It is recommended that subsequent versions use digits 0-9 only."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:87
+msgid "Version history"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:92
+msgid "Version"
+msgstr "Versiya"
+
+#: i2p2www/pages/site/docs/api/bob.html:93
+msgid "I2P Router Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:94
+msgid "Changes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:97
+msgid "current version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:100
+msgid "development versions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:104
+msgid "Commands"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:106
+msgid ""
+"PLEASE NOTE:\n"
+"For CURRENT details on the commands PLEASE use the built-in help command."
+" \n"
+"Just telnet to localhost 2827 and type help and you can get full "
+"documentation on each command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:112
+msgid ""
+"Commands never get obsoleted or changed, however new commands do get "
+"added from time to time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "COMMAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "OPERAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "RETURNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:145
+msgid ""
+"Once set up, all TCP sockets can and will block as needed, and there is "
+"no need for any \n"
+"additional messages to/from the command channel. This allows the router "
+"to pace the\n"
+"stream without exploding with OOM like SAM does as it chokes on "
+"attempting to shove \n"
+"many streams in or out one socket -- that can't scale when you have alot "
+"of connections!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:152
+msgid ""
+"What is also nice about this particular interface is that writing "
+"anything to interface \n"
+"to it, is much much easier than SAM. There is no other processing to do "
+"after the set up.\n"
+"It's configuration is so simple, that very simple tools, such as nc "
+"(netcat) can be used \n"
+"to point to some application. The value there is that one could schedule "
+"up and down times \n"
+"for an application, and not have to change the application to do that, or"
+" to even have \n"
+"to stop that application. Instead, you can literally \"unplug\" the "
+"destination, and \n"
+"\"plug it in\" again. As long as the same IP/port addresses and "
+"destination keys are used \n"
+"when bringing the bridge up, the normal TCP application won't care, and "
+"won't notice.\n"
+"It will simply be fooled -- the destinations are not reachable, and that "
+"nothing is coming in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:164
+msgid "Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:166
+msgid ""
+"For the following example, we'll setup a very simple local loopback "
+"connection, \n"
+"with two destinations. Destination \"mouth\" will be the CHARGEN service "
+"from \n"
+"the INET superserver daemon. Destination \"ear\" will be a local port "
+"that you\n"
+"can telnet into, and watch the pretty ASCII test puke forth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:174
+msgid "EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:175
+msgid "Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:176
+msgid "BOB's Command response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "FROM"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "TO"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "DIALOGUE"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:187
+msgid "MAKE NOTE OF THE ABOVE DESTINATION KEY, YOURS WILL BE DIFFERENT!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:201
+msgid ""
+"At this point, there was no error, a destination with a nickname of "
+"\"mouth\" \n"
+"is set up. When you contact the destination provided, you actually "
+"connect \n"
+"to the CHARGEN
service on 19/TCP
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:207
+msgid "Now for the other half, so that we can actually contact this destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:229
+msgid ""
+"Now all we need to do is telnet into 127.0.0.1, port 37337,\n"
+"send the destination key or host address from addressbook we want to "
+"contact.\n"
+"In this case, we want to contact \"mouth\", all we do is paste in the\n"
+"key and it goes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:236
+msgid ""
+"NOTE: The \"quit\" command in the command channel does NOT "
+"disconnect the tunnels like SAM."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:253
+msgid "After a few virtual miles of this spew, press Control-]
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:265
+msgid "Here is what happened..."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:273
+msgid "You can connect to EEPSITES too!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:306
+msgid ""
+"Pretty cool isn't it? Try some other well known EEPSITES if you like, "
+"nonexistent ones, \n"
+"etc, to get a feel for what kind of output to expect in different "
+"situations. \n"
+"For the most part, it is suggested that you ignore any of the error "
+"messages. \n"
+"They would be meaningless to the application, and are only presented for "
+"human debugging."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:313
+msgid "Let's put down our destinations now that we are all done with them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:317
+msgid "First, lets see what destination nicknames we have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:329
+msgid "Alright, there they are. First, let's remove \"mouth\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:343
+msgid ""
+"Now to remove \"ear\", note that this is what happens when you type too "
+"fast,\n"
+"and shows you what typical ERROR messages looks like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:362
+msgid ""
+"I won't bother to show an example of the receiver end of a bridge\n"
+"because it is very simple. There are two possible settings for it, and\n"
+"it is toggled with the \"quiet\" command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:368
+msgid ""
+"The default is NOT quiet, and the first data to come into your\n"
+"listening socket is the destination that is making the contact. It is a\n"
+"single line consisting of the BASE64 address followed by a newline.\n"
+"Everything after that is for the application to actually consume."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:375
+msgid ""
+"In quiet mode, think of it as a regular Internet connection. No\n"
+"extra data comes in at all. It's just as if you are plain connected to\n"
+"the regular Internet. This mode allows a form of transparency much like\n"
+"is available on the router console tunnel settings pages, so that you\n"
+"can use BOB to point a destination at a web server, for example, and\n"
+"you would not have to modify the web server at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:384
+msgid ""
+"The advantage with using BOB for this is as discussed\n"
+"previously. You could schedule random uptimes for the application,\n"
+"redirect to a different machine, etc. One use of this may be something\n"
+"like wanting to try to goof up router-to-destination upness guessing.\n"
+"You could stop and start the destination with a totally different\n"
+"process to make random up and down times on services. That way you\n"
+"would only be stopping the ability to contact such a service, and not\n"
+"have to bother shutting it down and restarting it. You could redirect\n"
+"and point to a different machine on your LAN while you do updates, or\n"
+"point to a set of backup machines depending on what is running, etc,\n"
+"etc. Only your imagination limits what you could do with BOB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:3
+#: i2p2www/pages/site/docs/protocol/index.html:3
+msgid "August 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:6
+msgid "Datagram Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:7
+#, python-format
+msgid ""
+"Datagrams build upon the base I2CP to provide "
+"authenticated\n"
+"and repliable messages in a standard format. This lets applications "
+"reliably read\n"
+"the \"from\" address out of a datagram and know that the address really "
+"sent the\n"
+"message. This is necessary for some applications since the base I2P "
+"message is\n"
+"completely raw - it has no \"from\" address (unlike IP packets). In "
+"addition, the\n"
+"message and sender are authenticated by signing the payload."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:16
+#, python-format
+msgid ""
+"Datagrams, like streaming library packets,\n"
+"are an application-level construct.\n"
+"These protocols are independent of the low-level transports;\n"
+"the protocols are converted to I2NP messages by the router, and\n"
+"either protocol may be carried by either transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:25
+msgid "Application Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:26
+#, python-format
+msgid ""
+"Applications written in Java may use the \n"
+"datagram API,\n"
+"while applications in other languages \n"
+"can use SAM's datagram support.\n"
+"There is also limited support in i2ptunnel in the SOCKS proxy,\n"
+"the 'streamr' tunnel types, and udpTunnel classes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:37
+msgid "Datagram Length"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:38
+msgid ""
+"The application designer should carefully consider the tradeoff of "
+"repliable vs. non-repliable\n"
+"datagrams. Also, the datagram size will affect reliability, due to tunnel"
+" fragmentation into 1KB\n"
+"tunnel messages. The more message fragments, the more likely that one of "
+"them will be dropped\n"
+"by an intermediate hop. Messages larger than a few KB are not "
+"recommended.\n"
+"Over about 10 KB, the delivery probablility drops dramatically.\n"
+"Messages over 16 KB cannot be delivered over NTCP, dropping delivery "
+"chances even more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:47
+#, python-format
+msgid ""
+"Also note that the various overheads added by lower layers, in particular"
+" asymmetric\n"
+"ElGamal/AES, place a large burden on "
+"intermittent messages\n"
+"such as used by a Kademlia-over-UDP application. The implementations are "
+"currently tuned\n"
+"for frequent traffic using the streaming library. There are a high number"
+"\n"
+"of session tags delivered, and a short session tag lifetime, for example."
+"\n"
+"There are currently no configuration parameters available within I2CP to "
+"tune\n"
+"the ElGamal Session Tag parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:57
+msgid "I2CP Protocol Number and Ports"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:58
+msgid ""
+"The standard I2CP protocol number for datagrams is PROTO_DATAGRAM (17).\n"
+"Applications may or may not choose to set the\n"
+"protocol in the I2CP header. It is not set by default.\n"
+"It must be set to demultiplex datagram and streaming traffic received on "
+"the same Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:65
+#, python-format
+msgid ""
+"As datagrams are not connection-oriented, the application may require\n"
+"port numbers to correlate datagrams with particular peers or "
+"communications sessions,\n"
+"as is traditional with UDP over IP.\n"
+"Applications may add 'from' and 'to' ports to the I2CP (gzip) header as "
+"described in\n"
+"the I2CP page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:73
+#, python-format
+msgid ""
+"There is no method within the datagram API to specify whether it is non-"
+"repliable (raw)\n"
+"or repliable. The application should be designed to expect the "
+"appropriate type.\n"
+"The I2CP protocol number or port should be used by the application to\n"
+"indicate datagram type.\n"
+"The I2CP protocol numbers PROTO_DATAGRAM (signed) and PROTO_DATAGRAM_RAW "
+"are defined in the\n"
+"I2PSession API\n"
+"for this purpose. A common design pattern in client/server datagram "
+"applications is to\n"
+"use signed datagrams for a request which includes a nonce, and use a raw "
+"datagram\n"
+"for the reply, returning the nonce from the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:85
+#, python-format
+msgid ""
+"The protocols and ports may be set in I2CP's\n"
+"I2PSession API,\n"
+"as implemented in\n"
+"I2PSessionMuxedImpl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:93
+#: i2p2www/pages/site/docs/api/streaming.html:418
+msgid "Data Integrity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:94
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the datagram protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:100
+#: i2p2www/pages/site/docs/api/streaming.html:426
+msgid "Packet Encapsulation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:101
+#, python-format
+msgid ""
+"Each datagram is sent through I2P as a single message (or as an "
+"individual clove in a\n"
+"Garlic Message).\n"
+"Message encapsulation is implemented in the underlying\n"
+"I2CP,\n"
+"I2NP, and\n"
+"tunnel message layers.\n"
+"There is no packet delimiter mechanism or length field in the datagram "
+"protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:114
+#: i2p2www/pages/site/docs/transport/ssu.html:650
+msgid "Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:116
+msgid "See the Datagrams Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:2
+msgid "I2PControl - Remote Control Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:5
+#, python-format
+msgid ""
+"I2P enables a JSONRPC2 interface via the plugin I2PControl.\n"
+"The aim of the interface is to provide simple way to interface with a "
+"running I2P node. A client, itoopie, has been developed in parallel.\n"
+"The JSONRPC2 implementation for the client as well as the plugin is "
+"provided by the java libraries JSON-RPC 2.0. \n"
+"A list of implementations of JSON-RPC for various languages can be found "
+"at the JSON-RPC "
+"wiki."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:12
+msgid "I2PControl is by default listening on https://localhost:7650"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:14
+msgid "API, version 1."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:15
+msgid "Parameters are only provided in a named way (maps)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:19
+msgid "JSON-RPC 2 format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:20
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:45
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:58
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:68
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:77
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:87
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:102
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:155
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:176
+msgid "Request:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:33
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:50
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:62
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:72
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:82
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:93
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:119
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:165
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:191
+msgid "Response:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:44
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:46
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:47
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:51
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:52
+#: i2p2www/pages/site/docs/protocol/i2cp.html:108
+#: i2p2www/pages/site/docs/protocol/i2cp.html:483
+msgid "Description"
+msgstr "Açıqlama"
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:48
+msgid ""
+"Token used for authenticating every request (excluding the 'Authenticate'"
+" RPC method)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:56
+msgid "Implemented methods"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:57
+msgid ""
+"Creates and returns an authentication token used for further "
+"communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:59
+msgid "The version of the I2PControl API used by the client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:60
+msgid "The password used for authenticating against the remote server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:63
+msgid "The primary I2PControl API version implemented by the server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:64
+msgid "The token used for further communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:67
+msgid "Echoes the value of the echo key, used for debugging and testing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:69
+msgid "Value will be returned in response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:70
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:80
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:91
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:117
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:163
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:73
+msgid "Value of the key 'echo' in the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:76
+msgid ""
+"Fetches rateStat from router statManager. Creates stat if not already "
+"created."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:78
+#, python-format
+msgid ""
+"Determines which rateStat to fetch, see ratestats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:79
+msgid "Determines which period a stat is fetched for. Measured in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:83
+msgid "Returns the average value for the reuested rateStat and period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:86
+msgid "Manages I2PControl. Ports, passwords and the like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:88
+msgid ""
+"Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are "
+"implemented in I2PControl currently)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:89
+msgid ""
+"Sets a new password for I2PControl, all Authentication tokens will be "
+"revoked."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:90
+msgid "Switches which port I2PControl will listen for connections on."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:94
+msgid "Returned if address was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:95
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:96
+msgid "Returned if setting was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:97
+msgid "Returns true if any changes were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:98
+msgid "Returns true if any changes requiring a restart to take effect were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:101
+msgid "Fetches basic information about the I2P router. Uptime, version etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:120
+msgid "What the status of the router is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:121
+msgid "What the uptime of the router is in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:122
+msgid "What version of I2P the router is running."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:123
+msgid "The 1 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:124
+msgid "The 15 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:125
+msgid "The 1 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:126
+msgid "The 15 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:127
+msgid "What the current network status is. According to the below enum:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:146
+msgid "How many tunnels on the I2P net are we participating in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:147
+msgid "How many peers have we communicated with recently."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:148
+msgid "How many peers are considered 'fast'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:149
+msgid "How many peers are considered 'high capacity'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:150
+msgid "Is the router reseeding hosts to its NetDB?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:151
+msgid "How many peers are known to us (listed in our NetDB)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:154
+msgid "Manages I2P router restart/shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:156
+msgid "Blocking. Initiates a search for signed updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:157
+msgid ""
+"Initiates a router reseed, fetching peers into our NetDB from a remote "
+"host."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:158
+msgid "Restarts the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:159
+msgid ""
+"Restarts the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:160
+msgid "Shuts down the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:161
+msgid ""
+"Shuts down the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:162
+msgid "Initiates a router update from signed sources."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:166
+msgid "Blocking. Returns true iff a signed update has been found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:167
+msgid "If requested, verifies that a reseed has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:168
+msgid "If requested, verifies that a restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:169
+msgid "If requested, verifies that a graceful restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:170
+msgid "If requested, verifies that a shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:171
+msgid "If requested, verifies that a graceful shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:172
+msgid "Blocking. If requested, returns the status of the the update"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:175
+msgid "Fetches or sets various network related settings. Ports, addresses etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:177
+msgid ""
+"What port is used for the TCP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:178
+msgid ""
+"What hostname is used for the TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:179
+msgid ""
+"Use automatically detected ip for TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:180
+msgid ""
+"What port is used for the UDP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:181
+msgid ""
+"What hostname is used for the UDP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:182
+msgid ""
+"Which methods should be used for detecting the ip address of the UDP "
+"transport. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:183
+msgid "What ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:184
+msgid "Is UPnP enabled. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:185
+msgid ""
+"How many percent of bandwidth is usable for participating tunnels. If "
+"null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:186
+msgid ""
+"How many KB/s of inbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:187
+msgid ""
+"How many KB/s of outbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:188
+msgid ""
+"Is laptop mode enabled (change router identity and UDP port when IP "
+"changes ). If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:189
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method. If null is submitted, current setting will"
+" be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:192
+msgid "If requested, returns the port used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:193
+msgid "If requested, returns the hostname used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:194
+msgid ""
+"If requested, returns the method used for automatically detecting ip for "
+"the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:195
+msgid "If requested, returns the port used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:196
+msgid "If requested, returns the hostname used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:197
+msgid ""
+"If requested, returns methods used for detecting the ip address of the "
+"UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:198
+msgid "If requested, returns what ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:199
+msgid "If requested, returns the UPNP setting."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:200
+msgid ""
+"If requested, returns how many percent of bandwidth is usable for "
+"participating tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:201
+msgid "If requested, returns how many KB/s of inbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:202
+msgid "If requested, returns how many KB/s of outbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:203
+msgid "If requested, returns the laptop mode."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:204
+msgid "Have the provided settings been saved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:205
+msgid "Is a restart needed for the new settings to be used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:208
+msgid "Allows for manipulation of advanced i2p settings"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set the sent key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "SetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "Set the sent key-value pairs, remove everything else"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get the key-value pairs for the sent keys"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "GetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "Get all the key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:221
+msgid "denotes an optional value."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:222
+msgid "denotes a possibly occuring return value"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:224
+msgid "Error codes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:225
+msgid "Standard JSON-RPC2 error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:226
+msgid "JSON parse error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:227
+msgid "Invalid request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:228
+msgid "Method not found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:229
+msgid "Invalid parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:230
+msgid "Internal error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:232
+msgid "I2PControl specific error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:233
+msgid "Invalid password provided."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:234
+msgid "No authentication token presented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:235
+msgid "Authentication token doesn't exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:236
+msgid "The provided authentication token was expired and will be removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:237
+msgid ""
+"The version of the I2PControl API used wasn't specified, but is required "
+"to be specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:238
+msgid ""
+"The version of the I2PControl API specified is not supported by "
+"I2PControl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:8
+#, python-format
+msgid ""
+"I2PTunnel is a tool for interfacing with and providing services on I2P.\n"
+"Destination of an I2PTunnel can be defined using a hostname,\n"
+"Base32, or a full 516-byte destination "
+"key.\n"
+"An established I2PTunnel will be available on your client machine as "
+"localhost:port.\n"
+"If you wish to provide a service on I2P network, you simply create "
+"I2PTunnel to the\n"
+"appropriate ip_address:port. A corresponding 516-byte destination key "
+"will be generated\n"
+"for the service and it will become avaliable throughout I2P.\n"
+"A web interface for I2PTunnel management is avaliable on\n"
+"localhost:7657/i2ptunnel/."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:20
+msgid "Default Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:21
+msgid "Server tunnels"
+msgstr "Server tunelləri"
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:23
+msgid ""
+"I2P Webserver - A tunnel pointed to a Jetty webserver run\n"
+"on localhost:7658 for convenient "
+"and quick hosting on I2P.\n"
+"
The document root is:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:31
+msgid "Client tunnels"
+msgstr "Müştəri tunelləri"
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:33
+msgid ""
+"A HTTP proxy used for browsing I2P and the regular internet anonymously "
+"through I2P. \n"
+"Browsing internet through I2P uses a random proxy specified by the "
+"\"Outproxies:\" option."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:37
+msgid "An IRC tunnel to the default anonymous IRC network, Irc2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:38
+#, python-format
+msgid ""
+"The anonymous monotone\n"
+"sourcecode repository for I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:42
+#, python-format
+msgid ""
+"A SMTP service provided by postman at %(postman)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:45
+#, python-format
+msgid ""
+"The accompanying POP sevice of postman at %(postman)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:50
+msgid "Configuration"
+msgstr "Quraşdırma"
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:54
+msgid "Client Modes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:55
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:165
+msgid "Standard"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:56
+msgid ""
+"Opens a local TCP port that connects to a service (like HTTP, FTP or "
+"SMTP) on a destination inside of I2P.\n"
+"The tunnel is directed to a random host from the comma seperated (\", \")"
+" list of destinations."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:62
+msgid ""
+"A HTTP-client tunnel. The tunnel connects to the destination specified by"
+" the URL\n"
+"in a HTTP request. Supports proxying onto internet if an outproxy is "
+"provided. Strips HTTP connections of the following headers:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:67
+msgid ""
+"Accept, Accept-Charset, Accept-Language\n"
+" and Accept-Ranges as they vary greatly between browsers and can be "
+"used as an identifier."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:90
+msgid ""
+"Depending on if the tunnel is using an outproxy or not it will append the"
+" following User-Agent:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:94
+msgid "Outproxy:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:95
+msgid "Internal I2P use:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:100
+msgid ""
+"Creates a connection to a random IRC server specified by the comma "
+"seprated (\", \") \n"
+"list of destinations. Only a whitelisted subset of IRC commands are "
+"allowed due to anonymity concerns."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:105
+msgid "Whitelist:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:139
+msgid "Enables using the I2P router as a SOCKS proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:144
+msgid ""
+"Enables using the I2P router as a SOCKS proxy with the command whitelist "
+"specified by\n"
+"IRC client mode."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:150
+msgid ""
+"Creates a HTTP tunnel and uses the HTTP request method \"CONNECT\" \n"
+"to build a TCP tunnel that usually is used for SSL and HTTPS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:156
+msgid ""
+"Creates a UDP-server attached to a Streamr client I2PTunnel. The streamr "
+"client tunnel will \n"
+"subscribe to a streamr server tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:164
+msgid "Server Modes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:166
+msgid "Creates a destination to a local ip:port with an open TCP port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:171
+msgid ""
+"Creates a destination to a local HTTP server ip:port. Supports gzip for "
+"requests with \n"
+"Accept-encoding: x-i2p-gzip, replies with Content-encoding: x-i2p-gzip in"
+" such a request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:177
+msgid ""
+"Functions as both a I2PTunnel HTTP Server, and a I2PTunnel HTTP client "
+"with no outproxying\n"
+"capabilities. An example application would be a web application that does"
+" client-type\n"
+"requests, or loopback-testing an eepsite as a diagnostic tool."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:184
+msgid ""
+"Creates a destination that filters the reqistration sequence of a client "
+"and passes \n"
+"the clients destination key as a hostname to the IRC-server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:190
+msgid ""
+"A UDP-client that connects to a media server is created. The UDP-Client "
+"is coupled with a Streamr server I2PTunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:2
+#: i2p2www/pages/site/docs/api/ministreaming.html:17
+msgid "Ministreaming Library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:5
+msgid "Note"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:7
+#, python-format
+msgid ""
+"The ministreaming library has been enhanced and extended by the\n"
+"\"full\" streaming library.\n"
+"Ministreaming is deprecated and is incompatible with today's "
+"applications.\n"
+"The following documentation is old.\n"
+"Also note that streaming extends ministreaming in the same Java package "
+"(net.i2p.client.streaming),\n"
+"so the current API documentation contains both.\n"
+"Obsolete ministreaming classes and methods are clearly marked as "
+"deprecated in the Javadocs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:19
+#, python-format
+msgid ""
+"\n"
+"The ministreaming library is a layer on top of the core \n"
+"I2CP that allows reliable, in order, and "
+"authenticated streams\n"
+"of messages to operate across an unreliable, unordered, and "
+"unauthenticated \n"
+"message layer. Just like the TCP to IP relationship, this streaming \n"
+"functionality has a whole series of tradeoffs and optimizations "
+"available, but\n"
+"rather than embed that functionality into the base I2P code, it has been "
+"factored\n"
+"off into its own library both to keep the TCP-esque complexities separate"
+" and to\n"
+"allow alternative optimized implementations."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:30
+#, python-format
+msgid ""
+"The ministreaming library was written by mihi as a part of his \n"
+"I2PTunnel application and then factored out"
+" and released\n"
+"under the BSD license. It is called the \"mini\"streaming library "
+"because it makes\n"
+"some simplifications in the implementation, while a more robust streaming"
+" library\n"
+"could be further optimized for operation over I2P. The two main issues "
+"with \n"
+"the ministreaming library are its use of the traditional TCP two phase \n"
+"establishment protocol and the current fixed window size of 1. The "
+"establishment\n"
+"issue is minor for long lived streams, but for short ones, such as quick "
+"HTTP\n"
+"requests, the impact can be significant. As "
+"for the window\n"
+"size, the ministreaming library doesn't maintain any ID or ordering "
+"within the \n"
+"messages sent (or include any application level ACK or SACK), so it must "
+"wait \n"
+"on average twice the time it takes to send a message before sending "
+"another."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/ministreaming.html:45
+#, python-format
+msgid ""
+"Even with those issues, the ministreaming library performs quite well in "
+"many\n"
+"situations, and its API\n"
+"is both quite simple and capable of remaining unchanged as different "
+"streaming\n"
+"implementations are introduced. The library is deployed in its own \n"
+"ministreaming.jar.\n"
+"Developers in Java who would like to use it can\n"
+"access the API directly, while developers in other languages can use it "
+"through\n"
+"SAM's streaming support."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:4
+msgid "SOCKS and SOCKS proxies"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:5
+msgid ""
+"\n"
+"The SOCKS proxy is working as of release 0.7.1. SOCKS 4/4a/5 are "
+"supported.\n"
+"Enable SOCKS by creating a SOCKS client tunnel in i2ptunnel.\n"
+"Both shared-clients and non-shared are supported.\n"
+"There is no SOCKS outproxy so it is of limited use."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:12
+#, python-format
+msgid ""
+"\n"
+"As it says on the FAQ:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:15
+msgid ""
+"Many applications leak sensitive\n"
+"information that could identify you on the Internet. I2P only filters\n"
+"connection data, but if the program you intend to run sends this\n"
+"information as content, I2P has no way to protect your anonymity. For\n"
+"example, some mail applications will send the IP address of the machine\n"
+"they are running on to a mail server. There is no way for I2P to filter\n"
+"this, thus using I2P to 'socksify' existing applications is possible, but"
+"\n"
+"extremely dangerous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:25
+msgid "And quoting from a 2005 email:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:28
+msgid ""
+"... there is a reason why human and\n"
+"others have both built and abandoned the SOCKS proxies. Forwarding\n"
+"arbitrary traffic is just plain unsafe, and it behooves us as\n"
+"developers of anonymity and security software to have the safety of\n"
+"our end users foremost in our minds."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:36
+msgid ""
+"Hoping that we can simply strap an arbitrary client on top of I2P\n"
+"without auditing both its behavior and its exposed protocols for\n"
+"security and anonymity is naive. Pretty much *every* application\n"
+"and protocol violates anonymity, unless it was designed for it\n"
+"specifically, and even then, most of those do too. That's the\n"
+"reality. End users are better served with systems designed for\n"
+"anonymity and security. Modifying existing systems to work in\n"
+"anonymous environments is no small feat, orders of magnitude more\n"
+"work that simply using the existing I2P APIs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:48
+msgid ""
+"The SOCKS proxy\n"
+"supports standard addressbook names, but not Base64 destinations.\n"
+"Base32 hashes should work as of release 0.7.\n"
+"It supports outgoing connections only, i.e. an I2PTunnel Client.\n"
+"UDP support is stubbed out but not working yet.\n"
+"Outproxy selection by port number is stubbed out."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:57
+#: i2p2www/pages/site/docs/how/network-database.html:183
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:281
+msgid "See Also"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:59
+#, python-format
+msgid ""
+"The notes for Meeting 81 and\n"
+"Meeting 82 in March 2004."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:69
+msgid "If You Do Get Something Working"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/socks.html:70
+msgid ""
+"Please let us know. And please provide substantial warnings about the\n"
+"risks of socks proxies."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:3
+msgid "July 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:8
+#, python-format
+msgid ""
+"The streaming library is technically part of the \"application\" layer,\n"
+"as it is not a core router function.\n"
+"In practice, however, it provides a vital function for almost all\n"
+"existing I2P applications, by providing a TCP-like\n"
+"streams over I2P, and allowing existing apps to be easily ported to I2P.\n"
+"The other end-to-end transport library for client communication is the\n"
+"datagram library."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:18
+#, python-format
+msgid ""
+"The streaming library is a layer on top of the core \n"
+"I2CP API that allows reliable, in-order, and "
+"authenticated streams\n"
+"of messages to operate across an unreliable, unordered, and "
+"unauthenticated \n"
+"message layer. Just like the TCP to IP relationship, this streaming \n"
+"functionality has a whole series of tradeoffs and optimizations "
+"available, but\n"
+"rather than embed that functionality into the base I2P code, it has been "
+"factored\n"
+"off into its own library both to keep the TCP-esque complexities separate"
+" and to\n"
+"allow alternative optimized implementations."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:29
+msgid ""
+"In consideration of the relatively high cost of messages, \n"
+"the streaming library's protocol for scheduling and delivering those "
+"messages has been optimized to\n"
+"allow individual messages passed to contain as much information as is "
+"available.\n"
+"For instance, a small HTTP transaction proxied through the streaming "
+"library can\n"
+"be completed in a single round trip - the first messages bundle a SYN, "
+"FIN, and\n"
+"the small HTTP request payload, and the reply bundles the SYN,\n"
+"FIN, ACK, and the HTTP response payload. While an additional\n"
+"ACK must be transmitted to tell the HTTP server that the SYN/FIN/ACK has "
+"been\n"
+"received, the local HTTP proxy can often deliver the full response to the"
+" browser \n"
+"immediately."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:42
+msgid ""
+"The streaming library bears much resemblance to an \n"
+"abstraction of TCP, with its sliding windows, congestion control "
+"algorithms\n"
+"(both slow start and congestion avoidance), and general packet behavior "
+"(ACK,\n"
+"SYN, FIN, RST, rto calculation, etc)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:49
+msgid ""
+"The streaming library is\n"
+"a robust library\n"
+"which is optimized for operation over I2P.\n"
+"It has a one-phase setup, and\n"
+"it contains a full windowing implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:58
+msgid "API"
+msgstr "APİ"
+
+#: i2p2www/pages/site/docs/api/streaming.html:60
+#, python-format
+msgid ""
+"The streaming library API provides a standard socket paradigm to Java "
+"applications.\n"
+"The lower-level I2CP API is completely hidden, "
+"except that\n"
+"applications may pass I2CP parameters "
+"through the\n"
+"streaming library, to be interpreted by I2CP."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:67
+#, python-format
+msgid ""
+"The standard interface to the streaming lib is for the application to use"
+" the\n"
+"I2PSocketManagerFactory to create an\n"
+"I2PSocketManager. The application then asks "
+"the\n"
+"socket manager for an I2PSession, which will "
+"cause\n"
+"a connection to the router via I2CP. The "
+"application\n"
+"can then setup connections with an I2PSocket "
+"or\n"
+"receive connections with an I2PServerSocket."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:82
+#, python-format
+msgid "Here are the full streaming library Javadocs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:86
+msgid "For a good example of usage, see the i2psnark code."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:91
+msgid "Options and Defaults"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:92
+#, python-format
+msgid ""
+"The options and current default values are listed below.\n"
+"Options are case-sensitive and may be set for the whole router, for a "
+"particular client, or for an individual socket on a\n"
+"per-connection basis.\n"
+"Many values are tuned for HTTP performance over typical I2P conditions. "
+"Other applications such\n"
+"as peer-to-peer services are strongly encouraged to\n"
+"modify as necessary, by setting the options and passing them via the call"
+" to\n"
+"I2PSocketManagerFactory.createManager(_i2cpHost,"
+" _i2cpPort, opts).\n"
+"Time values are in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:103
+#, python-format
+msgid ""
+"Note that higher-layer APIs, such as SAM,\n"
+"BOB, and I2PTunnel,"
+"\n"
+"may override these defaults with their own defaults.\n"
+"Also note that many options only apply to servers listening for incoming "
+"connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:110
+msgid ""
+"As of release 0.9.1, most, but not all, options may be changed on an "
+"active socket manager or session.\n"
+"See the javadocs for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:117
+#: i2p2www/pages/site/docs/protocol/i2cp.html:103
+#: i2p2www/pages/site/docs/protocol/i2cp.html:478
+msgid "Option"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:117
+#: i2p2www/pages/site/docs/protocol/i2cp.html:107
+#: i2p2www/pages/site/docs/protocol/i2cp.html:482
+msgid "Default"
+msgstr "Standart"
+
+#: i2p2www/pages/site/docs/api/streaming.html:117
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:264
+#: i2p2www/pages/site/docs/how/peer-selection.html:282
+msgid "Notes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:119
+msgid ""
+"Comma- or space-separated list of Base64 peer Hashes used for either "
+"access list or blacklist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:121
+#: i2p2www/pages/site/docs/api/streaming.html:129
+#: i2p2www/pages/site/docs/api/streaming.html:135
+#: i2p2www/pages/site/docs/api/streaming.html:141
+#: i2p2www/pages/site/docs/api/streaming.html:148
+#: i2p2www/pages/site/docs/api/streaming.html:160
+#: i2p2www/pages/site/docs/api/streaming.html:171
+#: i2p2www/pages/site/docs/api/streaming.html:200
+#: i2p2www/pages/site/docs/api/streaming.html:212
+#: i2p2www/pages/site/docs/api/streaming.html:220
+#: i2p2www/pages/site/docs/api/streaming.html:245
+#: i2p2www/pages/site/docs/api/streaming.html:262
+#: i2p2www/pages/site/docs/api/streaming.html:275
+#: i2p2www/pages/site/docs/api/streaming.html:286
+#: i2p2www/pages/site/docs/api/streaming.html:292
+#: i2p2www/pages/site/docs/api/streaming.html:298
+#: i2p2www/pages/site/docs/api/streaming.html:312
+#: i2p2www/pages/site/docs/api/streaming.html:319
+#: i2p2www/pages/site/docs/api/streaming.html:326
+#: i2p2www/pages/site/docs/api/streaming.html:351
+#: i2p2www/pages/site/docs/api/streaming.html:358
+#: i2p2www/pages/site/docs/api/streaming.html:365
+#, python-format
+msgid "As of release %(release)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:125
+#: i2p2www/pages/site/docs/api/streaming.html:133
+msgid "Use the access list as a whitelist for incoming connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:127
+msgid "The name or number of the signature type for a transient destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:139
+msgid "Use the access list as a blacklist for incoming connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:153
+msgid "Whether to respond to incoming pings"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:165
+msgid ""
+"Comma- or space-separated list of Base64 peer Hashes to be\n"
+"blacklisted for incoming connections to ALL destinations in the context.\n"
+"This option must be set in the context properties, NOT in the "
+"createManager() options argument.\n"
+"Note that setting this in the router context will not affect clients "
+"outside the\n"
+"router in a separate JVM and context."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:175
+msgid ""
+"How much transmit data (in bytes) will be accepted that hasn't been "
+"written out yet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:179
+msgid ""
+"When we're in congestion avoidance, we grow the window size at the rate\n"
+"of 1/(windowSize*factor)
. In standard TCP, window sizes are"
+" in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:186
+msgid ""
+"How long to wait after instantiating a new con \n"
+"before actually attempting to connect. If this is\n"
+"<= 0, connect immediately with no initial data. If greater than 0, "
+"wait\n"
+"until the output stream is flushed, the buffer fills, \n"
+"or that many milliseconds pass, and include any initial data with the SYN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:194
+msgid ""
+"How long to block on connect, in milliseconds. Negative means "
+"indefinitely. Default is 5 minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:198
+msgid ""
+"Whether to disable warnings in the logs when an incoming connection is "
+"rejected due to connection limits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:204
+msgid ""
+"Comma- or space-separated list of Base64 peer Hashes or host names to be\n"
+"contacted using an alternate DSA destination.\n"
+"Only applies if multisession is enabled and the primary session is non-"
+"DSA\n"
+"(generally for shared clients only).\n"
+"This option must be set in the context properties, NOT in the "
+"createManager() options argument.\n"
+"Note that setting this in the router context will not affect clients "
+"outside the\n"
+"router in a separate JVM and context."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:216
+msgid ""
+"Whether to listen only for the streaming protocol.\n"
+"Setting to true will prohibit communication with Destinations earlier "
+"than release 0.7.1\n"
+"(released March 2009). Set to true if running multiple protocols on this "
+"Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:226
+msgid ""
+"(0=noop, 1=disconnect)\n"
+"What to do on an inactivity timeout - do nothing, disconnect, or send a "
+"duplicate ack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:232
+msgid "Idle time before sending a keepalive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:235
+msgid "Delay before sending an ack"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:237
+msgid ""
+"The initial value of the resend delay field in the packet header, times "
+"1000.\n"
+"Not fully implemented; see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:242
+msgid ""
+"Initial timeout\n"
+"(if no sharing data available)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:249
+msgid ""
+"Initial round trip time estimate\n"
+"(if no sharing data available).\n"
+"Disabled as of release 0.9.8; uses actual RTT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid "if no sharing data available"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid ""
+"In standard TCP, window sizes are in bytes, while in I2P, window sizes "
+"are in messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:279
+msgid ""
+"(0 or negative value means unlimited)\n"
+"This is a total limit for incoming and outgoing combined."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:284
+msgid "Incoming connection limit (per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:290
+#: i2p2www/pages/site/docs/api/streaming.html:296
+msgid "(per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:302
+msgid "The MTU in bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:306
+msgid "Maximum number of retransmissions before failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:310
+msgid "Incoming connection limit (all peers; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:316
+#: i2p2www/pages/site/docs/api/streaming.html:323
+msgid ""
+"(all peers; 0 means disabled)\n"
+"Use with caution as exceeding this will disable a server for a long time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:332
+msgid ""
+"(2=interactive not supported)\n"
+"This doesn't currently do anything, but setting it to a value other than "
+"1 will cause an error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:337
+msgid "How long to block on read, in milliseconds. Negative means indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:341
+msgid ""
+"When we're in slow start, we grow the window size at the rate\n"
+"of 1/(factor). In standard TCP, window sizes are in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:348
+#: i2p2www/pages/site/docs/api/streaming.html:355
+#: i2p2www/pages/site/docs/api/streaming.html:362
+msgid ""
+"Ref: RFC 2140. Floating point value.\n"
+"May be set only via context properties, not connection options."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:369
+msgid ""
+"How long to block on write/flush, in milliseconds. Negative means "
+"indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:377
+msgid "Protocol Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:379
+msgid "See the Streaming Library Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:383
+msgid "Implementation Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:385
+msgid "Setup"
+msgstr "Quraşdırma"
+
+#: i2p2www/pages/site/docs/api/streaming.html:386
+msgid ""
+"The initiator sends a packet with the SYNCHRONIZE flag set. This packet "
+"may contain the initial data as well.\n"
+"The peer replies with a packet with the SYNCHRONIZE flag set. This packet"
+" may contain the initial response data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:391
+msgid ""
+"The initiator may send additional data packets, up to the initial window "
+"size, before receiving the SYNCHRONIZE response.\n"
+"These packets will also have the send Stream ID field set to 0.\n"
+"Recipients must buffer packets received on unknown streams for a short "
+"period of time, as they may\n"
+"arrive out of order, in advance of the SYNCHRONIZE packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:398
+msgid "MTU Selection and Negotiation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:399
+msgid ""
+"The maximum message size (also called the MTU / MRU) is negotiated to the"
+" lower value supported by\n"
+"the two peers. As tunnel messages are padded to 1KB, a poor MTU selection"
+" will lead to\n"
+"a large amount of overhead.\n"
+"The MTU is specified by the option i2p.streaming.maxMessageSize.\n"
+"The current default MTU of 1730 was chosen to fit precisely into two 1K "
+"I2NP tunnel messages,\n"
+"including overhead for the typical case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:408
+msgid ""
+"The first message in a connection includes a 387 byte (typical) "
+"Destination added by the streaming layer,\n"
+"and usually a 898 byte (typical) LeaseSet, and Session keys, bundled in "
+"the Garlic message by the router.\n"
+"(The LeaseSet and Session Keys will not be bundled if an ElGamal Session "
+"was previously established).\n"
+"Therefore, the goal of fitting a complete HTTP request in a single 1KB "
+"I2NP message is not always attainable.\n"
+"However, the selection of the MTU, together with careful implementation "
+"of fragmentation\n"
+"and batching strategies in the tunnel gateway processor, are important "
+"factors in network bandwidth,\n"
+"latency, reliability, and efficiency, especially for long-lived "
+"connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:419
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:427
+#, python-format
+msgid ""
+"Each packet is sent through I2P as a single message (or as an individual "
+"clove in a\n"
+"Garlic Message). Message encapsulation "
+"is implemented\n"
+"in the underlying I2CP, I2NP, and\n"
+"tunnel message layers. There is no "
+"packet delimiter\n"
+"mechanism or payload length field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:437
+msgid "Optional Delay"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:438
+msgid ""
+"Data packets may include an optional delay field specifying the requested"
+" delay,\n"
+"in ms, before the receiver should ack the packet.\n"
+"Valid values are 0 to 60000 inclusive.\n"
+"A value of 0 requests an immediate ack.\n"
+"This is advisory only, and receivers should delay slightly so that\n"
+"additional packets may be acknowledged with a single ack.\n"
+"Some implementations may include an advisory value of (measured RTT / 2) "
+"in this field.\n"
+"For nonzero optional delay values, receivers should limit the maximum "
+"delay\n"
+"before sending an ack to a few seconds at most.\n"
+"Optional delay values greater than 60000 indicate choking, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:452
+msgid "Receive Window and Choking"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:453
+msgid ""
+"TCP headers include the receive window in bytes.\n"
+"The streaming protocol does not contain a receive window, it uses only a "
+"simple choke/unchoke indication.\n"
+"Each endpoint must maintain its own estimate of the far-end receive "
+"window, in either bytes or packets.\n"
+"The recommended minimum buffer size for receiver implementations is 128 "
+"packets or 217 KB (approximately 128x1730).\n"
+"Because of I2P netowrk latency, packet drops, and the resulting "
+"congestion control,\n"
+"a buffer of this size is rarely filled.\n"
+"Overflow is, however, likely to occur on high-bandwidth \"local "
+"loopback\" (same-router) connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:462
+msgid ""
+"To quickly indicate and smoothly recover from overflow conditions,\n"
+"there is a simple mechanism for pushback in the streaming protocol.\n"
+"If a packet is received with an optional delay field of value of 60001 or"
+" higher,\n"
+"that indicates \"choking\" or a receive window of zero.\n"
+"A packet with an optional delay field of value of 60000 or less indicates"
+" \"unchoking\".\n"
+"Packets without an optional delay field do not affect the choke/unchoke "
+"state."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:470
+msgid ""
+"After being choked, no more packets with data should be sent until the "
+"transmitter is unchoked,\n"
+"except for occasional \"probe\" data packets to compensate for possible "
+"lost unchoke packets.\n"
+"The choked endpoint should start a \"persist timer\" to control the "
+"probing, as in TCP.\n"
+"The unchoking endpoint should send several packets with this field set,\n"
+"or continue sending them periodically until data packets are received "
+"again.\n"
+"Maximum time to wait for unchoking is implementation-dependent.\n"
+"Transmitter window size and congestion control strategy after being "
+"unchoked is implementation-dependent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:481
+msgid "Congestion Control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:482
+msgid ""
+"The streaming lib uses standard slow-start (exponential window growth) "
+"and congestion avoidance (linear window growth)\n"
+"phases, with exponential backoff.\n"
+"Windowing and acknowledgments use packet count, not byte count."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:489
+msgid "Close"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:490
+msgid ""
+"Any packet, including one with the SYNCHRONIZE flag set, may have the "
+"CLOSE flag sent as well.\n"
+"The connection is not closed until the peer responds with the CLOSE flag."
+"\n"
+"CLOSE packets may contain data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:498
+msgid ""
+"There is no ping function at the I2CP layer (equivalent to ICMP echo) or "
+"in datagrams.\n"
+"This function is provided in streaming.\n"
+"Pings and pongs may not be combined with a standard streaming packet;\n"
+"if the ECHO option is set, then\n"
+"most other flags, options, ackThrough, sequenceNum, NACKs, etc. are "
+"ignored."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:506
+msgid ""
+"A ping packet must have the ECHO, SIGNATURE_INCLUDED, and FROM_INCLUDED "
+"flags set.\n"
+"The sendStreamId must be greater than zero, and the receiveStreamId is "
+"ignored.\n"
+"The sendStreamId may or may not correspond to an existing connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:512
+msgid ""
+"A pong packet must have the ECHO flag set.\n"
+"The sendStreamId must be zero, and the receiveStreamId is the "
+"sendStreamId from the ping.\n"
+"Prior to release 0.9.18, the pong packet does not include any payload "
+"that was contained in the ping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:518
+msgid ""
+"As of release 0.9.18, pings and pongs may contain a payload.\n"
+"The payload in the ping, up to a maximum of 32 bytes, is returned in the "
+"pong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:523
+msgid ""
+"Streaming may be configured to disable sending pongs with the "
+"configuration i2p.streaming.answerPings=false."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:528
+msgid "Control Block Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:529
+msgid ""
+"The streaming lib supports \"TCP\" Control Block sharing.\n"
+"This shares three important streaming lib parameters\n"
+"(window size, round trip time, round trip time variance)\n"
+"across connections to the same remote peer.\n"
+"This is used for \"temporal\" sharing at connection open/close time,\n"
+"not \"ensemble\" sharing during a connection (See\n"
+"RFC 2140).\n"
+"There is a separate share per ConnectionManager (i.e. per local "
+"Destination)\n"
+"so that there is no information leakage to other Destinations on the\n"
+"same router.\n"
+"The share data for a given peer expires after a few minutes.\n"
+"The following Control Block Sharing parameters can be set per router:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:550
+msgid "Other Parameters"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:551
+msgid ""
+"The following parameters are hardcoded, but may be of interest for "
+"analysis:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:570
+#: i2p2www/pages/site/docs/how/network-database.html:895
+msgid "History"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:571
+msgid ""
+"The streaming library has grown organically for I2P - first mihi "
+"implemented the\n"
+"\"mini streaming library\" as part of I2PTunnel, which was limited to a "
+"window\n"
+"size of 1 message (requiring an ACK before sending the next one), and "
+"then it was\n"
+"refactored out into a generic streaming interface (mirroring TCP sockets)"
+" and the\n"
+"full streaming implementation was deployed with a sliding window protocol"
+" and \n"
+"optimizations to take into account the high bandwidth x delay product. "
+"Individual\n"
+"streams may adjust the maximum packet size and other options. The default"
+"\n"
+"message size is selected to fit precisely in two 1K I2NP tunnel messages,"
+"\n"
+"and is a reasonable tradeoff between the bandwidth costs of \n"
+"retransmitting lost messages, and the latency and overhead of multiple "
+"messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:585
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:344
+#: i2p2www/pages/site/docs/how/garlic-routing.html:251
+#: i2p2www/pages/site/docs/how/network-database.html:900
+#: i2p2www/pages/site/docs/how/peer-selection.html:265
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:255
+#: i2p2www/pages/site/docs/protocol/i2cp.html:723
+#: i2p2www/pages/site/docs/protocol/i2np.html:226
+#: i2p2www/pages/site/docs/transport/ntcp.html:544
+#: i2p2www/pages/site/docs/transport/ssu.html:585
+#: i2p2www/pages/site/docs/tunnels/implementation.html:506
+msgid "Future Work"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:586
+msgid ""
+"The behavior of the streaming library has a profound impact on\n"
+"application-level performance, and as such, is an important\n"
+"area for further analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:592
+msgid "Additional tuning of the streaming lib parameters may be necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:595
+#, python-format
+msgid ""
+"Another area for research is the interaction of the streaming lib with "
+"the\n"
+"NTCP and SSU transport layers.\n"
+"See the NTCP discussion page for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:600
+msgid ""
+"The interaction of the routing algorithms with the streaming lib strongly"
+" affects performance.\n"
+"In particular, random distribution of messages to multiple tunnels in a "
+"pool\n"
+"leads to a high degree of out-of-order delivery which results in smaller "
+"window\n"
+"sizes than would otherwise be the case. The router currently routes \n"
+"messages for a single from/to destination pair through a consistent set \n"
+"of tunnels, until tunnel expiration or delivery failure. The router's \n"
+"failure and tunnel selection algorithms should be reviewed for possible \n"
+"improvements."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:610
+msgid "The data in the first SYN packet may exceed the receiver's MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:613
+msgid "The DELAY_REQUESTED field could be used more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:616
+msgid ""
+"Duplicate initial SYNCHRONIZE packets on short-lived streams may not be "
+"recognized and removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:619
+msgid "Don't send the MTU in a retransmission."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:622
+msgid ""
+"Data is sent along unless the outbound window is full.\n"
+"(i.e. no-Nagle or TCP_NODELAY)\n"
+"Probably should have a configuration option for this."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:627
+msgid ""
+"zzz has added debug code to the streaming library to log packets in a "
+"wireshark-compatible\n"
+"(pcap) format; Use this to further analyze performance.\n"
+"The format may require enhancement to map more streaming lib parameters "
+"to TCP fields."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:632
+msgid ""
+"There are proposals to replace the streaming lib with standard TCP\n"
+"(or perhaps a null layer together with raw sockets).\n"
+"This would unfortunately be incompatible with the streaming lib\n"
+"but it would be good to compare the performance of the two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:3
+msgid "January 2017"
+msgstr "Yanvar 2017"
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:7
+msgid ""
+"There are several bittorrent clients and trackers on I2P.\n"
+"As I2P addressing uses a Destination instead of an IP and port, minor\n"
+"changes are required to tracker and client software for operation on I2P."
+"\n"
+"These changes are specified below.\n"
+"Note carefully the guidelines for compatibility with older I2P clients "
+"and trackers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:15
+msgid ""
+"This page specifies protocol details common to all clients and trackers.\n"
+"Specific clients and trackers may implement other unique features or "
+"protocols."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:20
+msgid "We welcome additional ports of client and tracker software to I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:26
+msgid "Announces"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:27
+msgid ""
+"Clients generally include a fake port=6881 parameter in the announce, for"
+" compatibility with older trackers.\n"
+"Trackers may ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:32
+#, python-format
+msgid ""
+"The ip parameter is the base 64 of the client's\n"
+"Destination,\n"
+"using the I2P Base 64 alphabet [A-Z][a-z][0-9]-~.\n"
+"Destinations\n"
+"are 387+ bytes, so the Base 64 is 516+ bytes.\n"
+"Clients generally append \".i2p\" to the Base 64 Destination for "
+"compatibility with older trackers.\n"
+"Trackers should not require an appended \".i2p\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:42
+msgid "Other parameters are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:46
+msgid ""
+"Current Destinations for clients are 387 or more bytes (516 or more in "
+"Base 64 encoding).\n"
+"A reasonable maximum to assume, for now, is 475 bytes.\n"
+"As the tracker must decode the Base64 to deliver compact responses (see "
+"below),\n"
+"the tracker should probably decode and reject bad Base64 when announced."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:53
+msgid ""
+"The default response type is non-compact. Clients may request a compact "
+"response with\n"
+"the parameter compact=1. A tracker may, but is not required to, return\n"
+"a compact response when requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:59
+msgid ""
+"Developers of new I2P clients\n"
+"are strongly encouraged to implemenent announces over their own tunnel "
+"rather than\n"
+"the HTTP client proxy at port 4444. Doing so is both more efficient and "
+"it allows\n"
+"destination enforcement by the tracker (see below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:66
+msgid ""
+"There are no known I2P clients or trackers that currently support UDP "
+"announce/responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:71
+msgid "Non-Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:72
+msgid ""
+"The non-compact response is just as in standard bittorrent, with an I2P "
+"\"ip\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:76
+msgid ""
+"Trackers generally include a fake port key, or use the port from the "
+"announce, for compatibility with older clients.\n"
+"Clients must ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:81
+#, python-format
+msgid ""
+"The value of the ip key is the base 64 of the client's\n"
+"Destination, as "
+"described above.\n"
+"Trackers generally append \".i2p\" to the Base 64 Destination if it "
+"wasn't in the announce ip, for compatibility with older clients.\n"
+"Clients should not require an appended \".i2p\" in the responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:88
+msgid "Other response keys and values are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:94
+msgid "Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:95
+#, python-format
+msgid ""
+"In the compact response, the value of the \"peers\" dictionary key is a "
+"single byte string,\n"
+"whose length is a multiple of 32 bytes.\n"
+"This string contains the concatenated\n"
+"32-byte SHA-256 Hashes\n"
+"of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This hash must be computed by the tracker, unless destination enforcement"
+"\n"
+"(see below) is used, in which case the hash delivered in the X-I2P-"
+"DestHash\n"
+"or X-I2P-DestB32 HTTP headers may be converted to binary and stored.\n"
+"The peers key may be absent, or the peers value may be zero-length."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:109
+msgid ""
+"While compact response support is optional for both clients and trackers,"
+" it is highly\n"
+"recommended as it reduces the nominal response size by over 90%."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:116
+msgid "Destination Enforcement"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:117
+#, python-format
+msgid ""
+"Some, but not all, I2P bittorrent clients announce over their own "
+"tunnels.\n"
+"Trackers may choose to prevent spoofing by requiring this, and verifying "
+"the\n"
+"client's\n"
+"Destination\n"
+"using HTTP headers added by the I2PTunnel HTTP Server tunnel.\n"
+"The headers are X-I2P-DestHash, X-I2P-DestB64, and X-I2P-DestB32, which "
+"are\n"
+"different formats for the same information.\n"
+"These headers cannot be spoofed by the client.\n"
+"A tracker enforcing destinations need not require the ip announce "
+"parameter at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:129
+msgid ""
+"As several clients use the HTTP proxy instead of their own tunnel for "
+"announces,\n"
+"destination enforcement will prevent usage by those clients unless or "
+"until\n"
+"those clients are converted to announcing over their own tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:135
+msgid ""
+"Unfortunately, as the network grows, so will the amount of maliciousness,"
+"\n"
+"so we expect that all trackers will eventually enforce destinations.\n"
+"Both tracker and client developers should anticipate it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:143
+msgid "Announce Host Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:144
+#, python-format
+msgid ""
+"Announce URL host names in torrent files generally follow the\n"
+"I2P naming standards.\n"
+"In addition to host names from address books and \".b32.i2p\" Base 32 "
+"hostnames,\n"
+"the full Base 64 Destination (with [or without?] \".i2p\" appended) "
+"should be supported.\n"
+"Non-open trackers should recognize their own host name in any of these "
+"formats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:152
+msgid ""
+"To preserve anonymity,\n"
+"clients should generally ignore non-I2P announce URLs in torrent files."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:159
+msgid "Client Connections"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:160
+msgid ""
+"Client-to-client connections use the standard protocol over TCP.\n"
+"There are no known I2P clients that currently support uTP communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:165
+#, python-format
+msgid ""
+"I2P uses 387+ byte Destinations\n"
+"for addresses, as explained above."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:170
+msgid ""
+"If the client has only the hash of the destination (such as from a "
+"compact response or PEX), it must perform a lookup\n"
+"by encoding it with Base 32, appending \".b32.i2p\", and querying the "
+"Naming Service,\n"
+"which will return the full Destination if available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:176
+msgid ""
+"If the client has a peer's full Destination it received in a non-compact "
+"response, it should use it\n"
+"directly in the connection setup.\n"
+"Do not convert a Destination back to a Base 32 hash for lookup, this is "
+"quite inefficient."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:183
+msgid "Cross-Network Prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:184
+msgid ""
+"To preserve anonymity,\n"
+"I2P bittorrent clients generally do not support non-I2P announces or peer"
+" connections.\n"
+"I2P HTTP outproxies often block announces.\n"
+"There are no known SOCKS outproxies supporting bittorrent traffic."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:191
+msgid ""
+"To prevent usage by non-I2P clients via an HTTP inproxy, I2P trackers "
+"often\n"
+"block accesses or announces that contain an X-Forwarded-For HTTP header.\n"
+"Trackers should reject standard network announces with IPv4 or IPv6 IPs, "
+"and not deliver them in responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:200
+#, python-format
+msgid ""
+"I2P PEX is based on ut_pex.\n"
+"As there does not appear to be a formal specification of ut_pex "
+"available,\n"
+"it may be necessary to review the libtorrent source for assistance.\n"
+"It is an extension message, identified as \"i2p_pex\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with up to 3 keys, \"added\", "
+"\"added.f\", and \"dropped\".\n"
+"The added and dropped values are each a single byte string, whose length "
+"is a multiple of 32 bytes.\n"
+"These byte strings are the concatenated SHA-256 Hashes of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This is the same format as the peers dictionary value in the i2p compact "
+"response format specified above.\n"
+"The added.f value, if present, is the same as in ut_pex."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:218
+msgid ""
+"DHT support is included in the i2psnark client as of version 0.9.2.\n"
+"Preliminary differences from\n"
+"BEP 5\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client supporting DHT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:226
+msgid ""
+"Unlike standard DHT, I2P DHT does not use a bit in the options handshake,"
+" or the PORT message.\n"
+"It is advertised with an extension message, identified as \"i2p_dht\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with two keys, \"port\" and \"rport\", "
+"both integers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:233
+msgid ""
+"The UDP (datagram) port listed in the compact node info is used\n"
+"to receive repliable (signed) datagrams.\n"
+"This is used for queries, except for announces.\n"
+"We call this the \"query port\".\n"
+"This is the \"port\" value from the extension message.\n"
+"Queries use I2CP protocol number 17."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:242
+msgid ""
+"In addition to that UDP port, we use a second datagram\n"
+"port equal to the query port + 1. This is used to receive\n"
+"unsigned (raw) datagrams for replies, errors, and announces.\n"
+"This port provides increased efficiency since replies\n"
+"contain tokens sent in the query, and need not be signed.\n"
+"We call this the \"response port\".\n"
+"This is the \"rport\" value from the extension message.\n"
+"It must be 1 + the query port.\n"
+"Responses and announces use I2CP protocol number 18."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:254
+msgid ""
+"Compact peer info is 32 bytes (32 byte SHA256 Hash)\n"
+"instead of 4 byte IP + 2 byte port. There is no peer port.\n"
+"In a response, the \"values\" key is a list of strings, each containing a"
+" single compact peer info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:260
+msgid ""
+"Compact node info is 54 bytes (20 byte SHA1 Hash + 32 byte SHA256 Hash + "
+"2 byte port)\n"
+"instead of 20 byte SHA1 Hash + 4 byte IP + 2 byte port.\n"
+"In a response, the \"nodes\" key is a\n"
+"single byte string with concatenated compact node info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:267
+msgid ""
+"Secure node ID requirement: To make various DHT attacks more difficult,\n"
+"the first 4 bytes of the Node ID must match the first 4 bytes of the "
+"destination Hash,\n"
+"and the next two bytes of the Node ID must match the next two bytes of "
+"the\n"
+"destination hash exclusive-ORed with the port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:274
+msgid ""
+"In a torrent file,\n"
+"the trackerless torrent dictionary \"nodes\" key is TBD.\n"
+"It could be a list of\n"
+"32 byte binary strings (SHA256 Hashes) instead of a list of lists\n"
+"containing a host string and a port integer.\n"
+"Alternatives: A single byte string with concatenated hashes,\n"
+"or a list of strings alone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:286
+msgid "Datagram (UDP) Trackers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:287
+msgid ""
+"UDP tracker support in clients and trackers is not yet available.\n"
+"Preliminary differences from\n"
+"BEP 15\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client or tracker "
+"supporting datagram announces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:295
+msgid ""
+"A UDP tracker listens on two ports.\n"
+"The \"query port\" is the advertised port, and is used to receive "
+"repliable (signed) datagrams, for the connect request only.\n"
+"The \"response port\" is used to receive unsigned (raw) datagrams, and is"
+" the source port for all replies.\n"
+"The response port is arbitrary.\n"
+"A client sends and receives on a single port only.\n"
+"It receives only unsigned (raw) datagrams.\n"
+"Raw datagrams provides increased efficiency for replies since they "
+"contain tokens sent in the query, and need not be signed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:305
+msgid ""
+"In the announce request, the 4-byte IP is replaced by a 32-byte hash, and"
+" the port is still present,\n"
+"although it may be ignored by the tracker.\n"
+"In the announce response, each 4-byte IP and 2-byte port is replaced by a"
+" 32-byte hash (compact peer info), and no port is present.\n"
+"The client sends the announce request and scrape request to the source "
+"port in the announce response packet.\n"
+"The connect request, connect response, scrape request, scrape response, "
+"and error response are the same as in BEP 15."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:313
+msgid ""
+"Source addresses in I2P cannot be spoofed, so it is possible to use a "
+"simplified protocol\n"
+"with 2 packets instead of 4, omitting the connect request and response.\n"
+"In this case, the announce request would be a repliable datagram sent to "
+"the tracker's query port,\n"
+"and the tracker would not require a response port.\n"
+"While this is more efficient, it would be more difficult to modify an "
+"existing tracker to support this mode.\n"
+"The URL for the 4-packet-mode tracker would use standard \"udp://\" "
+"prefix. \n"
+"The URL for a modified 2-packet-mode tracker would require a different "
+"prefix if both modes are supported in I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:326
+#: i2p2www/pages/site/docs/how/intro.html:184
+msgid "Additional Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:328
+#, python-format
+msgid ""
+"I2P bittorrent standards are generally discussed on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:331
+#, python-format
+msgid ""
+"A chart of current tracker software capabilities is also available there."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:334
+#, python-format
+msgid ""
+"The\n"
+"I2P bittorrent FAQ"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:338
+#, python-format
+msgid "DHT on I2P discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:2
+msgid "Embedding I2P in your Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:3
+msgid "November 2017"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:8
+msgid ""
+"This page is about bundling the entire I2P router binary with your "
+"application.\n"
+"It is not about writing an application to work with I2P (either bundled "
+"or external)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:13
+msgid ""
+"Lots of projects are bundling, or talking about bundling, I2P. That's "
+"great if done right.\n"
+"If done wrong, it could cause real harm to our network.\n"
+"The I2P router is complex, and it can be a challenge to hide all the "
+"complexity from your users.\n"
+"This page discusses some general guidelines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:23
+msgid "Talk to us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:24
+msgid ""
+"Start a dialog. We're here to help. Applications that embed I2P are the "
+"most promising - and exciting -\n"
+"opportunities for us to grow the network and improve anonymity for "
+"everyone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:30
+msgid "Choose your router wisely"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:31
+msgid ""
+"If your application is in Java or Scala, it's an easy choice - use the "
+"Java router.\n"
+"If in C/C++, we recommend i2pd. The development of i2pcpp has stopped.\n"
+"For apps in other languages, best to use SAM or BOB or SOCKS and bundle "
+"the Java router as a separate process.\n"
+"Some of the following only applies to the Java router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:39
+msgid "Licensing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:40
+msgid "Ensure you meet the license requirements of the software you are bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:45
+msgid "Verify default configuration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:46
+msgid ""
+"A correct default configuration is crucial. Most users will not change "
+"the defaults.\n"
+"The defaults for your application may need to be different than the "
+"defaults for the router you are bundling.\n"
+"Override the router defaults if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:51
+msgid ""
+"Some important defaults to review: Max bandwidth, tunnel quantity and "
+"length, max participating tunnels.\n"
+"A lot of this depends on the expected bandwidth and usage patterns of "
+"your app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:55
+msgid ""
+"Configure enough bandwidth and tunnels to allow your users to contribute "
+"to the network.\n"
+"Consider disabling external I2CP, as you probably don't need it and it "
+"would conflict with any other running I2P instance.\n"
+"Also look at the configs for disabling killing of the JVM on exit, for "
+"example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:62
+msgid "Participating Traffic Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:63
+msgid ""
+"It may be tempting for you to disable participating traffic.\n"
+"There's several ways to do this (hidden mode, setting max tunnels to 0, "
+"setting shared bandwidth below 12 KBytes/sec).\n"
+"Without participating traffic, you don't have to worry about graceful "
+"shutdown,\n"
+"your users don't see bandwidth usage not generated by them, etc.\n"
+"However, there's lots of reasons why you should allow participating "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:70
+msgid ""
+"First of all, the router doesn't work that well if it doesn't have a "
+"chance to \"integrate\" with the network,\n"
+"which is helped tremendously by others building tunnels through you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:74
+msgid ""
+"Secondly, over 90% of the routers in the current network allow "
+"participating traffic.\n"
+"It's the default in the Java router.\n"
+"If your application doesn't route for others and it gets really popular, "
+"then it's a leech on the network,\n"
+"and it upsets the balance we have now.\n"
+"If it gets really big, then we become Tor, and spend our time begging for"
+" people to enable relaying."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:81
+msgid ""
+"Thirdly, participating traffic is cover traffic that helps your users' "
+"anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:84
+msgid ""
+"We strongly discourage you from disabling participating traffic by "
+"default.\n"
+"If you do this and your application gets hugely popular, it could break "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:90
+msgid "Persistence"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:91
+msgid ""
+"You must save the router's data (netdb, configuration, etc.) between runs"
+" of the router.\n"
+"I2P does not work well if you must reseed each startup, and that's a huge"
+" load on our reseed servers, and not very good for anonymity either.\n"
+"Even if you bundle router infos, I2P needs saved profile data for best "
+"performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:99
+msgid "Configurability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:100
+msgid ""
+"Give your users a way to change the configuration of the important "
+"settings.\n"
+"We understand that you will probably want to hide most of I2P's "
+"complexity, but it's important to show some basic settings.\n"
+"In addition to the defaults above, some network settings such as UPnP, "
+"IP/port may be helpful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:108
+msgid "Floodfill Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:109
+msgid ""
+"Above a certain bandwidth setting, and meeting other health criteria, "
+"your router will become floodfill,\n"
+"which may cause a large increase in connections and memory usage (at "
+"least with the Java router).\n"
+"Think about whether that's OK. You can disable floodfill, but then your "
+"fastest users aren't contributing what they could.\n"
+"It also depends on the typical uptime for your application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:119
+msgid "Reseeding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:120
+msgid ""
+"Decide if you are bundling router infos or using our reseed hosts.\n"
+"The Java reseed host list is in the source code, so if you keep your "
+"source up to date, the host list will be also.\n"
+"Be aware of possible blocking by hostile governments."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:129
+msgid "Reduce Network Resource Usage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:130
+msgid ""
+"Consider setting your application tunnels to delay-open, reduce-on-idle "
+"and/or close-on-idle.\n"
+"This is straightforward if using i2ptunnel but you'll have to implement "
+"some of it yourself if using I2CP directly.\n"
+"See i2psnark for code that reduces tunnel count and then closes the "
+"tunnel, even in the presence of some background DHT activity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:138
+msgid "Updatability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:139
+msgid ""
+"Have an auto-update feature if at all possible, or at least auto-"
+"notification of a new version.\n"
+"Our biggest fear is a huge number of routers out there that can't be "
+"updated.\n"
+"We have about 6-8 releases a year of the Java router, and it's critical "
+"to the health of the network that the users keep up.\n"
+"We usually have over 80% of the network on the latest release within "
+"6 weeks after the release, and we'd like to keep it that way.\n"
+"You don't need to worry about disabling the router's built-in auto-update"
+" function, as that code is in the router console,\n"
+"which you presumably are not bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:150
+msgid "Rollout"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:151
+msgid ""
+"Have a gradual rollout plan. Don't overwhelm the network all at once.\n"
+"We currently have approximately 25K unique users per day and 40K uniques "
+"per month.\n"
+"We are probably able to handle growth of 2-3X per year without too much "
+"issue.\n"
+"If you anticipate a faster rampup than that, OR the bandwidth "
+"distribution (or uptime distribution,\n"
+"or any other significant characteristic) of your userbase is "
+"significantly different from our current userbase,\n"
+"we really need to have a discussion.\n"
+"The bigger your growth plans, the more important everthing else in this "
+"checklist is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:163
+msgid "Design for and Encourage Long Uptimes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:164
+msgid ""
+"Tell your users that I2P works best if it keeps running.\n"
+"It may be several minutes after startup before it works well, and even "
+"more after first install.\n"
+"If your average uptime is less than an hour, I2P is probably the wrong "
+"solution."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:172
+msgid "Show Status"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:173
+msgid ""
+"Provide some indication to the user that the application tunnels are "
+"ready. Encourage patience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:178
+msgid "Graceful Shutdown"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:179
+msgid ""
+"If possible, delay the shutdown until your participating tunnels expire.\n"
+"Don't let your users break tunnels easily, or at least ask them to "
+"confirm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:185
+msgid "Education and Donation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:186
+msgid ""
+"It would be nice if you give your users links to learn more about I2P and"
+" to donate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:192
+msgid "External Router Option"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:193
+msgid ""
+"Depending on your user base and application,\n"
+"it may be helpful to provide an option or a separate package to use an "
+"external router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:200
+msgid "Use of other Common Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:201
+msgid ""
+"If you plan to use or link to other common I2P services (news feeds, "
+"hosts.txt subscriptions, trackers, outproxies, etc.),\n"
+"make sure you aren't overloading them,\n"
+"and talk to the people who are running them to make sure it's ok."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:209
+msgid "Time / NTP Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:210
+msgid ""
+"I2P includes an SNTP client. I2P requires correct time to operate.\n"
+"It will compensate for a skewed system clock but this may delay startup. "
+"You may disable I2P's SNTP queries,\n"
+"but this isn't advised unless your application makes sure the system "
+"clock is correct."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:218
+msgid "Choose What and How you Bundle"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:219
+msgid ""
+"At a minimum you will need i2p.jar, router.jar, streaming.jar, and "
+"mstreaming.jar.\n"
+"You may omit the two streaming jars for a datagram-only app.\n"
+"Some apps may need more, e.g. i2ptunnel.jar or addressbook.jar.\n"
+"Don't forget jbigi.jar, or a subset of it for the platforms you support, "
+"to make the crypto much faster.\n"
+"We are currently building them for Java 7, as of 0.9.24. The source is "
+"mostly compatible with Java 6 if you want to do your own compile,\n"
+"but we may start using Java 7 features at any time without notice.\n"
+"If you're building Debian / Ubuntu packages, you should require the I2P "
+"package from our PPA instead of bundling it.\n"
+"You almost certainly do not need susimail, susidns, the router console, "
+"and i2psnark, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:229
+msgid ""
+"The following files should be included in the I2P installation directory,"
+" specified with the \"i2p.dir.base\" property.\n"
+"Don't forget certificates/reseed and certificates/ssl, required for "
+"reseeding, and blocklist.txt for IP validation.\n"
+"The geoip directory is optional, but recommended so the router can make "
+"decisions based on location.\n"
+"The hosts.txt file may be necessary, you may modify it to include any "
+"hosts your application uses.\n"
+"You may add a router.config file to the base directory to override "
+"initial defaults."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:236
+msgid ""
+"License requirements may require you to include the LICENSES.txt file and"
+" the licenses directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:242
+msgid "You may also wish to bundle a hosts.txt file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:245
+msgid "Be sure to specify a Java 7 bootclasspath if compiling with Java 8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:253
+msgid "Android considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:254
+msgid ""
+"Our Android router app may be shared by multiple clients.\n"
+"If it is not installed, the user will be prompted when he starts a client"
+" app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:258
+msgid ""
+"Some developers have expressed concern that this is a poor user "
+"experience,\n"
+"and they wish to embed the router in their app.\n"
+"We do have an Android router service library on our roadmap, which could "
+"make embedding easier.\n"
+"More information needed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:264
+#: i2p2www/pages/site/docs/applications/embedding.html:275
+msgid "If you require assistance, please contact us."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:270
+msgid "Maven jars"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:271
+msgid ""
+"We have a limited number of our jars on Maven"
+" Central.\n"
+"There are numerous trac tickets for us to address that will improve and "
+"expand the released jars on Maven Central."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:281
+msgid "Datagram (DHT) considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:282
+msgid ""
+"If your application is using I2P datagrams, e.g. for a DHT,\n"
+"there's lots of advanced options available to reduce overhead and "
+"increase reliability.\n"
+"This may take some time and experimentation to get working well.\n"
+"Be aware of size/reliability tradeoffs. Talk to us for help.\n"
+"It is possible - and recommended - to use Datagrams and Streaming on the "
+"same Destination.\n"
+"Don't create separate Destinations for this.\n"
+"Don't try to store your unrelated data in the existing network DHTs "
+"(iMule, bote, bittorrent, and router).\n"
+"Build your own. If you are hardcoding seed nodes, we recommend that you "
+"have several."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:295
+msgid "Comarketing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:296
+msgid ""
+"Let's work together. Don't wait until it's done.\n"
+"Give us your Twitter handle and start tweeting about it, we will return "
+"the favor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:302
+msgid "Malware"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:303
+msgid ""
+"Please don't use I2P for evil.\n"
+"It could cause great harm both to our network and our reputation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:309
+msgid "Join Us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:310
+msgid ""
+"This may be obvious, but join the community. Run I2P 24/7. Start an "
+"eepsite about your project.\n"
+"Hang out in IRC #i2p-dev. Post on the forums. Spread the word.\n"
+"We can help get you users, testers, translators, or even coders."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:318
+msgid "Application Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:319
+msgid ""
+"You may wish to install and play with the I2P Android app, and look at "
+"its code, for an example of an application that bundles the router.\n"
+"See what we expose to the user and what we hide.\n"
+"Look at the state machine we use to start and stop the router.\n"
+"Other examples are: Vuze, the Nightweb Android app, iMule, TAILS, iCloak,"
+" and Monero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:327
+msgid "Code Example"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:328
+msgid ""
+"None of the above actually tells you how to write your code to\n"
+"bundle the Java router, so following is a brief example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:358
+msgid ""
+"This code is for the case where your application starts the router, as in"
+" our Android app.\n"
+"You could also have the router start the application via the "
+"clients.config and i2ptunnel.config files,\n"
+"together with Jetty webapps,\n"
+"as is done in our Java packages.\n"
+"As always, state management is the difficult part."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:3
+msgid "February 2014"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:8
+#, python-format
+msgid ""
+"Clients may be started directly by the router when they are listed\n"
+"in the clients.config file.\n"
+"These clients may be \"managed\" or \"unmanaged\".\n"
+"This is handled by the ClientAppManager.\n"
+"Additionally, managed or unmanaged clients may register with the\n"
+"ClientAppManager so that other clients may retrieve a reference to them.\n"
+"There is also a simple Port Mapper facility for clients to register an\n"
+"internal port that other clients may look up."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:21
+msgid ""
+"As of release 0.9.4, the router supports managed clients.\n"
+"Managed clients are instantiated and started by the ClientAppManager.\n"
+"The ClientAppManager maintains a reference to the client and receives "
+"updates on the client's state.\n"
+"Managed clients are preferred, as it is much easier to implement state "
+"tracking\n"
+"and to start and stop a client. It also is much easier to avoid static "
+"references in the client code\n"
+"which could lead to excessive memory usage after a client is stopped.\n"
+"Managed clients may be started and stopped by the user in the router "
+"console,\n"
+"and are stopped at router shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:31
+msgid ""
+"Managed clients implement either the net.i2p.app.ClientApp or "
+"net.i2p.router.app.RouterApp interface.\n"
+"Clients implementing the ClientApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:38
+msgid ""
+"Clients implementing the RouterApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:44
+msgid "The arguments provided are specified in the clients.config file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:48
+msgid "Unmanaged Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:49
+msgid ""
+"If the main class specified in the clients.config file does not implement"
+" a managed interface,\n"
+"it will be started with main() with the arguments specified,\n"
+"and stopped with main() with the arguments specified.\n"
+"The router does not maintain a reference, since all interactions are via "
+"the static main() method.\n"
+"The console cannot provide accurate state information to the user."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:57
+msgid "Registered Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:58
+msgid ""
+"Clients, whether managed or unmanaged, may register with the "
+"ClientAppManager\n"
+"so that other clients may retrieve a reference to them.\n"
+"Registration is by name.\n"
+"Known registered clients are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:68
+msgid "Port Mapper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:69
+msgid ""
+"The router also provides a simple mechanism for clients to find an "
+"internal socket service,\n"
+"such as the HTTP proxy. This is provided by the Port Mapper.\n"
+"Registration is by name.\n"
+"Clients that register generally provide an internal emulated socket on "
+"that port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:2
+msgid "Supported Applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:5
+#: i2p2www/pages/site/docs/applications/supported.html:188
+msgid "Blogging, Forums, and Wikis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:7
+#: i2p2www/pages/site/docs/applications/supported.html:234
+msgid "Decentralized File Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:10
+#: i2p2www/pages/site/docs/applications/supported.html:246
+msgid "Development Tools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:13
+#: i2p2www/pages/site/docs/applications/supported.html:248
+msgid "Version control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:17
+#: i2p2www/pages/site/docs/applications/supported.html:267
+msgid "Domain Naming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:19
+#: i2p2www/pages/site/docs/applications/supported.html:285
+msgid "Email"
+msgstr "Email"
+
+#: i2p2www/pages/site/docs/applications/supported.html:22
+#: i2p2www/pages/site/docs/applications/supported.html:330
+msgid "File Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:25
+#: i2p2www/pages/site/docs/applications/supported.html:332
+msgid "BitTorrent clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:27
+#: i2p2www/pages/site/docs/applications/supported.html:375
+msgid "BitTorrent trackers and indexers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:36
+#: i2p2www/pages/site/docs/applications/supported.html:442
+msgid "Network Administration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:39
+#: i2p2www/pages/site/docs/applications/supported.html:444
+msgid "General-purpose socket utilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:46
+#: i2p2www/pages/site/docs/applications/supported.html:485
+msgid "Real-time Chat"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:49
+#: i2p2www/pages/site/docs/applications/supported.html:487
+msgid "Instant messaging clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:51
+#: i2p2www/pages/site/docs/applications/supported.html:497
+msgid "IRC clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:53
+#: i2p2www/pages/site/docs/applications/supported.html:548
+msgid "IRC servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:58
+#: i2p2www/pages/site/docs/applications/supported.html:564
+msgid "Web Browsing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:61
+#: i2p2www/pages/site/docs/applications/supported.html:566
+msgid "Anonymous websites"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:63
+#: i2p2www/pages/site/docs/applications/supported.html:615
+msgid "Proxy software"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:65
+#: i2p2www/pages/site/docs/applications/supported.html:640
+msgid "Inproxies"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:67
+#: i2p2www/pages/site/docs/applications/supported.html:681
+msgid "Outproxies"
+msgstr "Outproxies "
+
+#: i2p2www/pages/site/docs/applications/supported.html:72
+#: i2p2www/pages/site/docs/applications/supported.html:695
+msgid "Website Hosting"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:75
+#: i2p2www/pages/site/docs/applications/supported.html:710
+msgid "Web servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:82
+#, python-format
+msgid ""
+"This is intended to be a comprehensive listing of applications used with\n"
+"I2P. If you know of something that's missing please submit a ticket on\n"
+"Trac, and be sure to select the\n"
+"“www” component in the submission form."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:89
+msgid ""
+"\n"
+"Supported applications are tagged with one or more of the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:94
+#: i2p2www/pages/site/docs/applications/supported.html:281
+#: i2p2www/pages/site/docs/applications/supported.html:313
+#: i2p2www/pages/site/docs/applications/supported.html:338
+#: i2p2www/pages/site/docs/applications/supported.html:707
+msgid "bundled"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:97
+msgid ""
+"Bundled application — I2P ships with a few officially\n"
+"supported applications that let new users take immediate advantage of\n"
+"some of I2P's more useful capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:105
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:294
+#: i2p2www/pages/site/docs/applications/supported.html:407
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:526
+msgid "plugin"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:108
+#, python-format
+msgid ""
+"Third-party plugin — I2P's plugin system provides convenient\n"
+"deployment of I2P-enabled applications and allows tighter integration\n"
+"with the router. Plugins are [reviewed by the community](http://%(plugins)s) to identify security and\n"
+"anonymity issues."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:254
+#: i2p2www/pages/site/docs/applications/supported.html:263
+#: i2p2www/pages/site/docs/applications/supported.html:326
+#: i2p2www/pages/site/docs/applications/supported.html:345
+#: i2p2www/pages/site/docs/applications/supported.html:356
+#: i2p2www/pages/site/docs/applications/supported.html:371
+#: i2p2www/pages/site/docs/applications/supported.html:417
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:453
+#: i2p2www/pages/site/docs/applications/supported.html:459
+#: i2p2www/pages/site/docs/applications/supported.html:465
+#: i2p2www/pages/site/docs/applications/supported.html:475
+#: i2p2www/pages/site/docs/applications/supported.html:481
+#: i2p2www/pages/site/docs/applications/supported.html:493
+#: i2p2www/pages/site/docs/applications/supported.html:526
+#: i2p2www/pages/site/docs/applications/supported.html:532
+#: i2p2www/pages/site/docs/applications/supported.html:538
+#: i2p2www/pages/site/docs/applications/supported.html:544
+#: i2p2www/pages/site/docs/applications/supported.html:621
+#: i2p2www/pages/site/docs/applications/supported.html:630
+#: i2p2www/pages/site/docs/applications/supported.html:636
+#: i2p2www/pages/site/docs/applications/supported.html:707
+#: i2p2www/pages/site/docs/applications/supported.html:722
+#: i2p2www/pages/site/docs/applications/supported.html:728
+#: i2p2www/pages/site/docs/applications/supported.html:734
+#: i2p2www/pages/site/docs/applications/supported.html:740
+msgid "standalone"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:204
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:216
+#: i2p2www/pages/site/docs/applications/supported.html:365
+#: i2p2www/pages/site/docs/applications/supported.html:389
+#: i2p2www/pages/site/docs/applications/supported.html:398
+#: i2p2www/pages/site/docs/applications/supported.html:554
+#: i2p2www/pages/site/docs/applications/supported.html:560
+msgid "standalone/mod"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:122
+msgid ""
+"Third-party standalone application — Many standard network\n"
+"applications only require careful setup and configuration to communicate\n"
+"anonymously over I2P. These are tagged with standalone. Some\n"
+"applications, tagged with standalone/mod, require patching to\n"
+"function properly over I2P or to prevent inadvertent disclosure of\n"
+"identifying information such as the user's hostname or external IP\n"
+"address."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:135
+#: i2p2www/pages/site/docs/applications/supported.html:304
+#: i2p2www/pages/site/docs/applications/supported.html:574
+#: i2p2www/pages/site/docs/applications/supported.html:584
+#: i2p2www/pages/site/docs/applications/supported.html:593
+#: i2p2www/pages/site/docs/applications/supported.html:599
+#: i2p2www/pages/site/docs/applications/supported.html:605
+#: i2p2www/pages/site/docs/applications/supported.html:611
+#: i2p2www/pages/site/docs/applications/supported.html:653
+#: i2p2www/pages/site/docs/applications/supported.html:661
+#: i2p2www/pages/site/docs/applications/supported.html:670
+#: i2p2www/pages/site/docs/applications/supported.html:677
+#: i2p2www/pages/site/docs/applications/supported.html:691
+msgid "service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:138
+msgid ""
+"Third-party essential network service — Services which on\n"
+"the I2P network are analogous to those provided on the public Internet\n"
+"by hosting providers, ISPs, and Google: eepsite indexes and jump\n"
+"services, search engines, email, DNS-style name services, hosting,\n"
+"proxies, etc. These services focus on boosting the usefulness of the\n"
+"network as a whole, and making network content more discoverable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:150
+#: i2p2www/pages/site/docs/applications/supported.html:222
+msgid "unmaintained"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:153
+msgid ""
+"Unmaintained — This is used to tag plugins, applications,\n"
+"and services which appear to be unmaintained and may be removed from\n"
+"this listing in the future."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:161
+#, python-format
+msgid ""
+"Warning: Using an application, plugin, or service with I2P\n"
+"doesn't automatically protect your anonymity. I2P is merely a set of "
+"tools\n"
+"which can help you mitigate certain identified\n"
+"threats to anonymity. We do not and cannot make any guarantees about "
+"the\n"
+"safety of the applications, plugins, and services listed below. Most\n"
+"applications and plugins must be properly configured, and some will need "
+"to\n"
+"be patched — and even then your anonymity might not be assured. "
+"Similarly,\n"
+"services could put your anonymity at risk, either by design or through\n"
+"carelessness on their part or your own."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:173
+msgid ""
+"If you have doubts about the suitability of an application,\n"
+"plugin, or service for use with I2P, you are urged to inquire about "
+"privacy\n"
+"issues with its maintainers, to search its mailing lists and bug tracker "
+"if\n"
+"one exists, and consult trusted, knowledgeable members of the I2P\n"
+"community."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:181
+msgid ""
+"Take responsibility for your own anonymity and safety — always\n"
+"seek expert advice, educate yourself, practice good judgment, be mindful "
+"of\n"
+"disclosing personally identifying information, and don't take\n"
+"shortcuts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:203
+msgid "Lightweight forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:209
+msgid "Another lightweight blogging platform."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:215
+msgid "Most popular open source forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:221
+msgid "Distributed forums software, originally developed by jrandom."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:226
+#, python-format
+msgid ""
+"A Java-based MediaWiki clone. No external database needed.\n"
+"Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:238
+#, python-format
+msgid ""
+"Port of the Tahoe-"
+"LAFS\n"
+"distributed file system to the I2P network. Controller plugin here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:253
+msgid "Most popular distributed version control system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:259
+#, python-format
+msgid ""
+"Another distributed version control system. Currently\n"
+"used in I2P development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:271
+#, python-format
+msgid ""
+"Provides management of addressbooks, which are part of a simple,\n"
+"user-controlled I2P naming system somewhat\n"
+"analogous to the Internet's Domain Name System (DNS). Addressbooks map\n"
+"Base64 destinations to short, usually human-readable “domain” names "
+"ending\n"
+"with a .i2p suffix which the I2P router's HTTP client can resolve back to"
+"\n"
+"Base64 addresses. (Note: While Base64 destinations are globally\n"
+"unique, addressbook “domain” names only resolve to unique destinations\n"
+"locally.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:290
+msgid ""
+"Serverless peer-to-peer email application using a distributed hash table\n"
+"(DHT) for secure mail storage."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:299
+msgid ""
+"Provides email service within the I2P network via @mail.i2p addresses,\n"
+"and email gateway service between the I2P network and the public Internet"
+"\n"
+"via @i2pmail.org addresses. One of the oldest continuous services on I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:309
+msgid ""
+"Simple web browser-based email interface. Configured to use Postman's\n"
+"email service by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:318
+#, python-format
+msgid ""
+"Can be configured to use Postman's email service. See\n"
+"this comparison of MUAs,\n"
+"and configuration settings for\n"
+"SMTP and POP3."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:337
+msgid "I2P's integrated BitTorrent client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:343
+msgid ""
+"Modified version of I2PSnark, no more supported neither\n"
+" functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:350
+msgid ""
+"\n"
+"A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n"
+"improvements, including using the latest wxwidgets and python. It also\n"
+"supports use of seedless if installed for trackerless torrents and\n"
+"magnet-link like fetching of torrents within I2P.\n"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:361
+msgid ""
+"Clean, full-featured cross-platform BitTorrent client with official\n"
+"ports for several GUI toolkits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:370
+msgid "Has a plugin providing I2P support."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:377
+#, python-format
+msgid ""
+"For a detailed feature comparison of I2P-enabled trackers/indexers, see\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:385
+msgid ""
+"The code that powered one of the first major tracker/indexer sites on the"
+"\n"
+"Internet. Patched for I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:394
+#, python-format
+msgid ""
+"Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n"
+"branch of the I2P Monotone repository."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:403
+#, python-format
+msgid ""
+"zzz's Java-based open tracker. More info\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:416
+msgid "I2P port of the aMule ED2K client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:425
+#, python-format
+msgid ""
+"Port of the Phex Gnutella "
+"client. Website\n"
+"for plugin version here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:434
+#, python-format
+msgid ""
+"Cache for Gnutella peers on I2P. Website for plugin version\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:449
+msgid ""
+"OpenBSD's rewrite of the Unix standard tool, netcat, for socket relaying."
+"\n"
+"Several clones, ports, and forks have appeared over the years."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:458
+msgid "Like netcat but more powerful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:464
+msgid ""
+"Proxy providing simple, transparent SOCKS-ification of network "
+"applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:474
+msgid ""
+"Most popular implementation of the Secure Shell (SSH) protocol and "
+"related tools."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:480
+msgid "Open source Secure Shell (SSH) client for Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:492
+msgid "IM client with multiple incarnations, unsuported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:499
+msgid ""
+"Many IRC clients leak identifying information to servers or other\n"
+"clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound"
+"\n"
+"and outbound messages to scrub data such as LAN IP addresses, external IP"
+"\n"
+"addresses, local hostnames, and the name and version of the IRC client. "
+"Two\n"
+"message types in particular, DCC and CTCP, can't be sufficiently "
+"anonymized\n"
+"without changes to the protocols or to IRC client/server code, so they "
+"are\n"
+"completely blocked, except for CTCP ACTION (the message emitted by the\n"
+"/me
command) which isn't inherently dangerous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:510
+msgid ""
+"I2P's IRC filtering may not cover every possible leak — users should also"
+"\n"
+"check if their client is sending their real name or local username. "
+"Packet\n"
+"sniffers such as Wireshark are\n"
+"useful here. Eliminating remaining leaks may be as simple as changing the"
+"\n"
+"client's default configuration. If that doesn't help, inform the I2P\n"
+"developers; they may be able to solve it via additional filtering."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:522
+#, python-format
+msgid ""
+"Small Java-based IRC client. Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:531
+msgid "Cross-platform graphical IRC client based on XChat."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:537
+msgid "Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:543
+msgid "Another Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:553
+msgid "IRC server developed from scratch."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:559
+msgid "Most popular IRC server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:571
+msgid ""
+"Any website hosted anonymously on I2P, reachable through the I2P router's"
+" HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:579
+msgid ""
+"Distributed anonymous websites hosted\n"
+"using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n"
+"clients or through the Tahoe-LAFS-I2P HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:589
+#, python-format
+msgid ""
+"Website for sponge's jump service.\n"
+"Source code available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:598
+msgid "Another jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:604
+msgid "Dynamically updated eepsite index."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:610
+#, python-format
+msgid "Website for zzz's jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:620
+msgid "SOCKS-enabled caching web proxy with basic filtering capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:626
+msgid ""
+"Privacy-focused non-caching web proxy with advanced filtering\n"
+"capabilities. Excels at removing ads and other junk."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:635
+msgid "Venerable caching web proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:642
+msgid "Gateways allowing users on the public Internet to access eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:649
+#, python-format
+msgid ""
+"tino's inproxy on the public Internet,\n"
+"currently out of service,"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:658
+#: i2p2www/pages/site/docs/applications/supported.html:667
+#: i2p2www/pages/site/docs/applications/supported.html:674
+msgid "Another inproxy on the public Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:683
+msgid ""
+"Gateways allowing I2P users to access content hosted on the public "
+"Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:690
+msgid "Publicly advertised outproxy running Squid, located in Europe."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:700
+msgid ""
+"Lightweight web server and Java servlet container. I2P is tightly\n"
+"integrated with a bundled copy of Jetty which by default is configured to"
+"\n"
+"host the user's eepsite. The "
+"bundled\n"
+"Jetty also serves the I2P router console and web applications bundled "
+"with\n"
+"I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:712
+msgid ""
+"In addition to Jetty, any web server should function over I2P without\n"
+"modification so long as it's HTTP-compliant. Some web servers known to\n"
+"currently serve content on the I2P network are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:721
+msgid "Most popular web server on the public WWW."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:727
+msgid "Web server and Java servlet container. More features than Jetty."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:733
+msgid "Fast lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:739
+msgid "High-performance lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:2
+msgid "Naming discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:4
+#, python-format
+msgid ""
+"NOTE: The following is a discussion of the reasons behind the I2P naming "
+"system,\n"
+"common arguments and possible alternatives.\n"
+"See the naming page for current documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:10
+msgid "Discarded alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:12
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning "
+"with\n"
+"advocates across the spectrum of possibilities. However, given I2P's "
+"inherent\n"
+"demand for secure communication and decentralized operation, the "
+"traditional\n"
+"DNS-style naming system is clearly out, as are \"majority rules\" voting "
+"systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:19
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage "
+"done\n"
+"by hijacking a site can be tremendous - and insecure destinations have no"
+"\n"
+"value. DNSsec itself still falls back on registrars and certificate "
+"authorities,\n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the reply\n"
+"spoofed, as they are encrypted to the destination's public keys, and a "
+"destination\n"
+"itself is just a pair of public keys and a certificate. DNS-style "
+"systems on the\n"
+"other hand allow any of the name servers on the lookup path to mount "
+"simple denial\n"
+"of service and spoofing attacks. Adding on a certificate authenticating "
+"the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:33
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness of\n"
+"Sybil attacks in anonymous systems - the attacker can simply create an "
+"arbitrarily\n"
+"high number of peers and \"vote\" with each to take over a given name. "
+"Proof-of-work\n"
+"methods can be used to make identity non-free, but as the network grows "
+"the load\n"
+"required to contact everyone to conduct online voting is implausible, or "
+"if the\n"
+"full network is not queried, different sets of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:42
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of "
+"a \n"
+"naming system out of the (IP-like) communication layer. The bundled "
+"naming library\n"
+"includes a simple service provider interface which alternate naming systems can\n"
+"plug into, allowing end users to drive what sort of naming tradeoffs they"
+" prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:50
+msgid ""
+"See also Names: "
+"Decentralized, Secure, Human-Meaningful: Choose Two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:55
+msgid "(adapted from a post in the old Syndie, November 26, 2005)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:58
+msgid ""
+"Q:\n"
+"What to do if some hosts \n"
+"do not agree on one address and if some addresses are working, others are"
+" not? \n"
+"Who is the right source of a name?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:64
+msgid ""
+"A:\n"
+"You don't. This is actually a critical difference between names on I2P "
+"and how \n"
+"DNS works - names in I2P are human readable, secure, but not globally"
+" \n"
+"unique. This is by design, and an inherent part of our need for "
+"security."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:70
+msgid ""
+"If I could somehow convince you to change the destination associated with"
+" some \n"
+"name, I'd successfully \"take over\" the site, and under no circumstances"
+" is that \n"
+"acceptable. Instead, what we do is make names locally unique: "
+"they are \n"
+"what you use to call a site, just as how you can call things "
+"whatever \n"
+"you want when you add them to your browser's bookmarks, or your IM "
+"client's \n"
+"buddy list. Who you call \"Boss\" may be who someone else calls "
+"\"Sally\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:78
+msgid "Names will not, ever, be securely human readable and globally unique."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:83
+msgid ""
+"The following from zzz is a review of several common\n"
+"complaints about I2P's naming system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:89
+msgid ""
+"Inefficiency:\n"
+"The whole hosts.txt is downloaded (if it has changed, since eepget uses "
+"the etag and last-modified headers).\n"
+"It's about 400K right now for almost 800 hosts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:94
+msgid ""
+"True, but this isn't a lot of traffic in the context of i2p, which is "
+"itself wildly inefficient\n"
+"(floodfill databases, huge encryption overhead and padding, garlic "
+"routing, etc.).\n"
+"If you downloaded a hosts.txt file from someone every 12 hours it "
+"averages out to about 10 bytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:99
+msgid ""
+"As is usually the case in i2p, there is a fundamental tradeoff here "
+"between anonymity and efficiency.\n"
+"Some would say that using the etag and last-modified headers is hazardous"
+" because it exposes when you\n"
+"last requested the data.\n"
+"Others have suggested asking for specific keys only (similar to what jump"
+" services do, but\n"
+"in a more automated fashion), possibly at a further cost in anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:106
+#, python-format
+msgid ""
+"Possible improvements would be a replacement or supplement to addressbook"
+" (see %(i2host)sp),\n"
+"or something simple like subscribing to http://example.i2p/cgi-"
+"bin/recenthosts.cgi rather than http://example.i2p/hosts.txt.\n"
+"If a hypothetical recenthosts.cgi distributed all hosts from the last 24 "
+"hours, for example,\n"
+"that could be both more efficient and more anonymous than the current "
+"hosts.txt with last-modified and etag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:112
+#, python-format
+msgid ""
+"A sample implementation is on stats.i2p at\n"
+"%(url)s.\n"
+"This script returns an Etag with a timestamp.\n"
+"When a request comes in with the If-None-Match etag,\n"
+"the script ONLY returns new hosts since that timestamp, or 304 Not "
+"Modified if there are none.\n"
+"In this way, the script efficiently returns only the hosts the subscriber"
+"\n"
+"does not know about, in an addressbook-compatible manner."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:121
+msgid ""
+"So the inefficiency is not a big issue and there are several ways to "
+"improve things without\n"
+"radical change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:127
+msgid ""
+"Not Scalable:\n"
+"The 400K hosts.txt (with linear search) isn't that big at the moment and\n"
+"we can probably grow by 10x or 100x before it's a problem."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:132
+msgid ""
+"As far as network traffic see above.\n"
+"But unless you're going to do a slow real-time query over the network for"
+"\n"
+"a key, you need to have the whole set of keys stored locally, at a cost "
+"of about 500 bytes per key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:139
+msgid ""
+"Requires configuration and \"trust\":\n"
+"Out-of-the-box addressbook is only subscribed to "
+"http://www.i2p2.i2p/hosts.txt, which is rarely updated,\n"
+"leading to poor new-user experience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:144
+msgid ""
+"This is very much intentional. jrandom wants a user to \"trust\" a "
+"hosts.txt\n"
+"provider, and as he likes to say, \"trust is not a boolean\".\n"
+"The configuration step attempts to force users to think about issues of "
+"trust in an anonymous network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:149
+msgid ""
+"As another example, the \"Eepsite Unknown\" error page in the HTTP Proxy\n"
+"lists some jump services, but doesn't \"recommend\" any one in "
+"particular,\n"
+"and it's up to the user to pick one (or not).\n"
+"jrandom would say we trust the listed providers enough to list them but "
+"not enough to\n"
+"automatically go fetch the key from them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:156
+msgid ""
+"How successful this is, I'm not sure.\n"
+"But there must be some sort of hierarchy of trust for the naming system.\n"
+"To treat everyone equally may increase the risk of hijacking."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:163
+msgid "It isn't DNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:166
+msgid ""
+"Unfortunately real-time lookups over i2p would significantly slow down "
+"web browsing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:169
+msgid ""
+"Also, DNS is based on lookups with limited caching and time-to-live, "
+"while i2p\n"
+"keys are permanent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:173
+msgid "Sure, we could make it work, but why? It's a bad fit."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:178
+msgid ""
+"Not reliable:\n"
+"It depends on specific servers for addressbook subscriptions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:182
+msgid ""
+"Yes it depends on a few servers that you have configured.\n"
+"Within i2p, servers and services come and go.\n"
+"Any other centralized system (for example DNS root servers) would\n"
+"have the same problem. A completely decentralized system (everybody is "
+"authoritative)\n"
+"is possible by implementing an \"everybody is a root DNS server\" "
+"solution, or by\n"
+"something even simpler, like a script that adds everybody in your "
+"hosts.txt to your addressbook."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:190
+msgid ""
+"People advocating all-authoritative solutions generally haven't thought "
+"through\n"
+"the issues of conflicts and hijacking, however."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:196
+msgid ""
+"Awkward, not real-time:\n"
+"It's a patchwork of hosts.txt providers, key-add web form providers, jump"
+" service providers,\n"
+"eepsite status reporters.\n"
+"Jump servers and subscriptions are a pain, it should just work like DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:202
+msgid "See the reliability and trust sections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:207
+msgid ""
+"So, in summary, the current system is not horribly broken, inefficient, "
+"or un-scalable,\n"
+"and proposals to \"just use DNS\" aren't well thought-through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:212
+msgid "Alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:213
+msgid ""
+"The I2P source contains several pluggable naming systems and supports "
+"configuration options\n"
+"to enable experimentation with naming systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:218
+msgid ""
+"Meta - calls two or more other naming systems in order.\n"
+"By default, calls PetName then HostsTxt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:222
+msgid ""
+"PetName - Looks up in a petnames.txt file.\n"
+"The format for this file is NOT the same as hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:226
+msgid "HostsTxt - Looks up in the following files, in order:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:234
+msgid ""
+"AddressDB - Each host is listed in a separate file in a addressDb/"
+" directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:237
+msgid ""
+"Eepget - does an HTTP lookup request from an external\n"
+"server - must be stacked after the HostsTxt lookup with Meta.\n"
+"This could augment or replace the jump system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:243
+msgid ""
+"Exec - calls an external program for lookup, allows\n"
+"additional experimentation in lookup schemes, independent of java.\n"
+"Can be used after HostsTxt or as the sole naming system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:249
+msgid "Dummy - used as a fallback for Base64 names, otherwise fails."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:253
+msgid ""
+"The current naming system can be changed with the advanced config option "
+"'i2p.naming.impl'\n"
+"(restart required).\n"
+"See core/java/src/net/i2p/client/naming for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:258
+msgid ""
+"Any new system should be stacked with HostsTxt, or should\n"
+"implement local storage and/or the addressbook subscription functions, "
+"since addressbook\n"
+"only knows about the hosts.txt files and format."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:264
+msgid "Certificates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:265
+msgid ""
+"I2P destinations contain a certificate, however at the moment that "
+"certificate\n"
+"is always null.\n"
+"With a null certificate, base64 destinations are always 516 bytes ending "
+"in \"AAAA\",\n"
+"and this is checked in the addressbook merge mechanism, and possibly "
+"other places.\n"
+"Also, there is no method available to generate a certificate or add it to"
+" a\n"
+"destination. So these will have to be updated to implement certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:273
+#, python-format
+msgid ""
+"One possible use of certificates is for proof of work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:276
+msgid ""
+"Another is for \"subdomains\" (in quotes because there is really no such "
+"thing,\n"
+"i2p uses a flat naming system) to be signed by the 2nd level domain's "
+"keys."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:280
+msgid ""
+"With any certificate implementation must come the method for verifying "
+"the\n"
+"certificates.\n"
+"Presumably this would happen in the addressbook merge code.\n"
+"Is there a method for multiple types of certificates, or multiple "
+"certificates?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:286
+msgid ""
+"Adding on a certificate authenticating the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:2
+msgid "ElGamal/AES + SessionTag Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:7
+msgid "ElGamal/AES+SessionTags is used for end-to-end encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:11
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:19
+#: i2p2www/pages/site/docs/how/tech-intro.html:508
+msgid ""
+"The first time a router wants to encrypt a garlic message to another "
+"router, \n"
+"they encrypt the keying material for an AES256 session key with ElGamal "
+"and \n"
+"append the AES256/CBC encrypted payload after that encrypted ElGamal "
+"block. \n"
+"In addition to the encrypted payload, the AES encrypted section contains "
+"the \n"
+"payload length, the SHA256 hash of the unencrypted payload, as well as a "
+"number \n"
+"of \"session tags\" - random 32 byte nonces. The next time the sender "
+"wants \n"
+"to encrypt a garlic message to another router, rather than ElGamal "
+"encrypt \n"
+"a new session key they simply pick one of the previously delivered "
+"session \n"
+"tags and AES encrypt the payload like before, using the session key used "
+"with \n"
+"that session tag, prepended with the session tag itself. When a router "
+"receives \n"
+"a garlic encrypted message, they check the first 32 bytes to see if it "
+"matches \n"
+"an available session tag - if it does, they simply AES decrypt the "
+"message, \n"
+"but if it does not, they ElGamal decrypt the first block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:35
+#: i2p2www/pages/site/docs/how/tech-intro.html:524
+msgid ""
+"Each session tag can be used only once so as to prevent internal "
+"adversaries \n"
+"from unnecessarily correlating different messages as being between the "
+"same \n"
+"routers. The sender of an ElGamal/AES+SessionTag encrypted message "
+"chooses \n"
+"when and how many tags to deliver, prestocking the recipient with enough "
+"tags \n"
+"to cover a volley of messages. Garlic messages may detect the successful "
+"tag \n"
+"delivery by bundling a small additional message as a clove (a \"delivery "
+"status \n"
+"message\") - when the garlic message arrives at the intended recipient "
+"and \n"
+"is decrypted successfully, this small delivery status message is one of "
+"the \n"
+"cloves exposed and has instructions for the recipient to send the clove "
+"back \n"
+"to the original sender (through an inbound tunnel, of course). When the "
+"original \n"
+"sender receives this delivery status message, they know that the session "
+"tags \n"
+"bundled in the garlic message were successfully delivered."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:50
+msgid ""
+"Session tags themselves have a short lifetime, after which they are \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption.\n"
+"A session will continue to exist until all its tags are exhausted or "
+"expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:61
+msgid ""
+"Sessions are unidirectional. Tags are delivered from Alice to Bob,\n"
+"and Alice then uses the tags, one by one, in subsequent messages to Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:66
+msgid ""
+"Sessions may be established between Destinations, between Routers, or\n"
+"between a Router and a Destination.\n"
+"Each Router and Destination maintains its own Session Key Manager to\n"
+"keep track of Session Keys and Session Tags.\n"
+"Separate Session Key Managers prevents correlation of multiple "
+"Destinations\n"
+"to each other or a Router by adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:77
+msgid "Message Reception"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:78
+msgid ""
+"Each message received has one of two\n"
+"the two possible conditions:
O(log(N))
due to the network "
+"database's algorithm, while end\n"
+"to end messages should be O(1)
(scale free), since messages "
+"go out K hops through the\n"
+"outbound tunnel and another K hops through the inbound tunnel, with K no "
+"longer than 3. The size of\n"
+"the network (N) bears no impact."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:150
+msgid "When?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:151
+#, python-format
+msgid ""
+"I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use "
+"alternate transports, such as JMS, then grew into its own as an\n"
+"'anonCommFramework' in April 2003, turning into I2P in July, with code "
+"being written in earnest\n"
+"starting in August '03. I2P is currently under development, following the"
+" roadmap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:161
+msgid "Who?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:162
+#, python-format
+msgid ""
+"We have a small team spread around several "
+"continents, working to advance\n"
+"different aspects of the project. We are very open to other developers "
+"who want to get involved and\n"
+"anyone else who would like to contribute in other ways, such as "
+"critiques, peer review, testing,\n"
+"writing I2P enabled applications, or documentation. The entire system is "
+"open source - the router\n"
+"and most of the SDK are outright public domain with some BSD and Cryptix "
+"licensed code, while some\n"
+"applications like I2PTunnel and I2PSnark are GPL. Almost everything is "
+"written in Java (1.5+),\n"
+"though some third party applications are being written in Python and "
+"other languages. The code works\n"
+"on Sun Java SE and other Java Virtual"
+" Machines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:173
+msgid "Where?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:174
+#, python-format
+msgid ""
+"Anyone interested should join us on the IRC channel #i2p-dev (hosted "
+"concurrently on irc.freenode.net,\n"
+"irc.postman.i2p, irc.echelon.i2p, irc.dg.i2p and irc.oftc.net). There are"
+" currently no\n"
+"scheduled development meetings, however archives"
+" are available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:180
+#, python-format
+msgid "The current source is available in monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:185
+#, python-format
+msgid "See the Index to Technical Documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:2
+msgid "The Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:3
+msgid "April 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:8
+msgid ""
+"I2P's netDb is a specialized distributed database, containing \n"
+"just two types of data - router contact information (RouterInfos) "
+"and destination contact\n"
+"information (LeaseSets). Each piece of data is signed by the "
+"appropriate party and verified\n"
+"by anyone who uses or stores it. In addition, the data has liveliness "
+"information\n"
+"within it, allowing irrelevant entries to be dropped, newer entries to "
+"replace\n"
+"older ones, and protection against certain classes of attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:17
+msgid ""
+"The netDb is distributed with a simple technique called \"floodfill\",\n"
+"where a subset of all routers, called \"floodfill routers\", maintains "
+"the distributed database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:25
+msgid ""
+"When an I2P router wants to contact another router, they need to know "
+"some \n"
+"key pieces of data - all of which are bundled up and signed by the router"
+" into\n"
+"a structure called the \"RouterInfo\", which is distributed with the "
+"SHA256 of the router's identity\n"
+"as the key. The structure itself contains:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:32
+msgid ""
+"The router's identity (a 2048bit ElGamal encryption key, a signing key, "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:33
+msgid ""
+"The contact addresses at which it can be reached (e.g. TCP: example.org "
+"port 4108)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:34
+msgid "When this was published"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:35
+msgid "A set of arbitrary text options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:36
+msgid "The signature of the above, generated by the identity's signing key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:39
+msgid "Expected Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:41
+msgid ""
+"The following text options, while not strictly required, are expected\n"
+"to be present:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:47
+msgid ""
+"Capabilities flags - used to indicate floodfill participation, "
+"approximate bandwidth, and perceived reachability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:49
+#: i2p2www/pages/site/docs/how/network-database.html:287
+msgid "Floodfill"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:50
+msgid "Hidden"
+msgstr "Gizli"
+
+#: i2p2www/pages/site/docs/how/network-database.html:51
+#, python-format
+msgid "Under %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+#: i2p2www/pages/site/docs/how/network-database.html:53
+#: i2p2www/pages/site/docs/how/network-database.html:54
+#: i2p2www/pages/site/docs/how/network-database.html:55
+#: i2p2www/pages/site/docs/how/network-database.html:56
+#, python-format
+msgid "%(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+msgid "default"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:57
+msgid "Reachable"
+msgstr "Əlçatan"
+
+#: i2p2www/pages/site/docs/how/network-database.html:58
+msgid "Unreachable"
+msgstr "Əlçatmaz"
+
+#: i2p2www/pages/site/docs/how/network-database.html:59
+#, python-format
+msgid "Over %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:66
+msgid "The core library version, always the same as the router version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:70
+msgid ""
+"Basic network compatibility - A router will refuse to communicate with a "
+"peer having a different netId"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:73
+msgid "Used to determine compatibility with newer features and messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:76
+msgid ""
+"Always sent as 90m, for compatibility with an older scheme where routers "
+"published their actual uptime,\n"
+"and only sent tunnel requests to peers whose uptime was more than 60m"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:82
+msgid ""
+"These values are used by other routers for basic decisions.\n"
+"Should we connect to this router? Should we attempt to route a tunnel "
+"through this router?\n"
+"The bandwidth capability flag, in particular, is used only to determine "
+"whether\n"
+"the router meets a minimum threshold for routing tunnels.\n"
+"Above the minimum threshold, the advertised bandwidth is not used or "
+"trusted anywhere\n"
+"in the router, except for display in the user interface and for debugging"
+" and network analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:91
+msgid "Additional Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:93
+#, python-format
+msgid ""
+"Additional text options include\n"
+"a small number of statistics about the router's health, which are "
+"aggregated by\n"
+"sites such as %(stats)s\n"
+"for network performance analysis and debugging.\n"
+"These statistics were chosen to provide data crucial to the developers,\n"
+"such as tunnel build success rates, while balancing the need for such "
+"data\n"
+"with the side-effects that could result from revealing this data.\n"
+"Current statistics are limited to:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:104
+msgid "Exploratory tunnel build success, reject, and timeout rates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:105
+msgid "1 hour average number of participating tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:108
+msgid ""
+"Floodfill routers publish additional data on the number of entries in "
+"their network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:112
+msgid ""
+"The data published can be seen in the router's user interface,\n"
+"but is not used or trusted within the router.\n"
+"As the network has matured, we have gradually removed most of the "
+"published\n"
+"statistics to improve anonymity, and we plan to remove more in future "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:119
+msgid "Family Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:121
+msgid ""
+"As of release 0.9.24, routers may declare that they are part of a "
+"\"family\", operated by the same entity.\n"
+"Multiple routers in the same family will not be used in a single tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:126
+msgid "The family options are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:132
+msgid "The family name"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:147
+msgid "RouterInfo Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:148
+msgid ""
+"RouterInfos have no set expiration time.\n"
+"Each router is free to maintain its own local policy to trade off the "
+"frequency of RouterInfo lookups\n"
+"with memory or disk usage.\n"
+"In the current implementation, there are the following general policies:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:155
+msgid ""
+"There is no expiration during the first hour of uptime, as the persistent"
+" stored data may be old."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:158
+msgid "There is no expiration if there are 25 or less RouterInfos."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:161
+msgid ""
+"As the number of local RouterInfos grows, the expiration time shrinks, in"
+" an attempt to maintain\n"
+"a reasonable number RouterInfos. The expiration time with less than 120 "
+"routers is 72 hours,\n"
+"while expiration time with 300 routers is around 30 hours."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:166
+#, python-format
+msgid ""
+"RouterInfos containing SSU introducers expire in "
+"about an hour, as\n"
+"the introducer list expires in about that time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:170
+msgid ""
+"Floodfills use a short expiration time (1 hour) for all local "
+"RouterInfos, as valid RouterInfos will\n"
+"be frequently republished to them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:176
+msgid "RouterInfo Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:178
+msgid ""
+"RouterInfos are periodically written to disk so that they are available "
+"after a restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:186
+msgid "RouterInfo specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:189
+msgid "RouterInfo Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:194
+msgid ""
+"The second piece of data distributed in the netDb is a \"LeaseSet\" - "
+"documenting\n"
+"a group of tunnel entry points (leases) for a particular client "
+"destination.\n"
+"Each of these leases specify the following information:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:200
+msgid "The tunnel gateway router (by specifying its identity)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:201
+msgid "The tunnel ID on that router to send messages with (a 4 byte number)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:202
+msgid "When that tunnel will expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:204
+msgid ""
+"The LeaseSet itself is stored in the netDb under\n"
+"the key derived from the SHA256 of the destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:209
+msgid "In addition to these leases, the LeaseSet includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:213
+msgid ""
+"The destination itself (a 2048bit ElGamal encryption key, a signing key "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:214
+msgid ""
+"Additional encryption public key: used for end-to-end encryption of "
+"garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:215
+msgid ""
+"Additional signing public key: intended for LeaseSet revocation, but is "
+"currently unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:216
+msgid ""
+"Signature of all the LeaseSet data, to make sure the Destination "
+"published the LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:220
+msgid "Lease specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:222
+msgid "LeaseSet specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:225
+msgid "Lease Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:227
+msgid "LeaseSet Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:231
+msgid "Unpublished LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:232
+msgid ""
+"A LeaseSet for a destination used only for outgoing connections is "
+"unpublished.\n"
+"It is never sent for publication to a floodfill router.\n"
+"\"Client\" tunnels, such as those for web browsing and IRC clients, are "
+"unpublished.\n"
+"Servers will still be able to send messages back to those unpublished "
+"destinations,\n"
+"because of I2NP storage messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:242
+msgid "Revoked LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:243
+msgid ""
+"A LeaseSet may be revoked by publishing a new LeaseSet with zero "
+"leases.\n"
+"Revocations must be signed by the additional signing key in the LeaseSet."
+"\n"
+"Revocations are not fully implemented, and it is unclear if they have any"
+" practical use.\n"
+"This is the only planned use for that signing key, so it is currently "
+"unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:250
+msgid "Encrypted LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:251
+msgid ""
+"In an encrypted LeaseSet, all Leases are encrypted with a separate"
+" key.\n"
+"The leases may only be decoded, and thus the destination may only be "
+"contacted,\n"
+"by those with the key.\n"
+"There is no flag or other direct indication that the LeaseSet is "
+"encrypted.\n"
+"Encrypted LeaseSets are not widely used, and it is a topic for future "
+"work to\n"
+"research whether the user interface and implementation of encrypted "
+"LeaseSets could be improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:260
+msgid "LeaseSet Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:261
+msgid ""
+"All Leases (tunnels) are valid for 10 minutes; therefore, a LeaseSet "
+"expires\n"
+"10 minutes after the earliest creation time of all its Leases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:266
+msgid "LeaseSet Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:267
+msgid ""
+"There is no persistent storage of LeaseSet data since they expire so "
+"quickly."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:272
+msgid "Bootstrapping"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:273
+msgid ""
+"The netDb is decentralized, however you do need at\n"
+"least one reference to a peer so that the integration process\n"
+"ties you in. This is accomplished by \"reseeding\" your router with the "
+"RouterInfo\n"
+"of an active peer - specifically, by retrieving their "
+"routerInfo-$hash.dat
\n"
+"file and storing it in your netDb/
directory. Anyone can "
+"provide\n"
+"you with those files - you can even provide them to others by exposing "
+"your own\n"
+"netDb directory. To simplify the process,\n"
+"volunteers publish their netDb directories (or a subset) on the regular "
+"(non-i2p) network,\n"
+"and the URLs of these directories are hardcoded in I2P.\n"
+"When the router starts up for the first time, it automatically fetches "
+"from\n"
+"one of these URLs, selected at random."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:288
+msgid ""
+"The floodfill netDb is a simple distributed storage mechanism. The "
+"storage\n"
+"algorithm is simple: send the data to the closest peer that has "
+"advertised\n"
+"itself as a floodfill router. When the peer in the floodfill netDb "
+"receives a\n"
+"netDb store from a peer not in the floodfill netDb, they send it to a "
+"subset of\n"
+"the floodfill netDb-peers. The peers selected are the ones closest "
+"(according\n"
+"to the XOR-metric) to a specific key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:297
+msgid ""
+"Determining who is part of the floodfill netDb is trivial - it is exposed"
+" in each \n"
+"router's published routerInfo as a capability."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:302
+msgid ""
+"Floodfills have no central authority and do not form a \"consensus\" -\n"
+"they only implement a simple DHT overlay."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:309
+msgid "Floodfill Router Opt-in"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:311
+msgid ""
+"Unlike Tor, where the directory servers are hardcoded and trusted,\n"
+"and operated by known entities,\n"
+"the members of the I2P floodfill peer set need not be trusted, and\n"
+"change over time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:318
+msgid ""
+"To increase reliability of the netDb, and minimize the impact\n"
+"of netDb traffic on a router, floodfill is automatically enabled\n"
+"only on routers that are configured with high bandwidth limits.\n"
+"Routers with high bandwidth limits (which must be manually configured,\n"
+"as the default is much lower) are presumed to be on lower-latency\n"
+"connections, and are more likely to be available 24/7.\n"
+"The current minimum share bandwidth for a floodfill router is 128 "
+"KBytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:328
+msgid ""
+"In addition, a router must pass several additional tests for health\n"
+"(outbound message queue time, job lag, etc.) before floodfill operation "
+"is\n"
+"automatically enabled."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:334
+msgid ""
+"With the current rules for automatic opt-in, approximately 6% of\n"
+"the routers in the network are floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:339
+msgid ""
+"While some peers are manually configured to be floodfill,\n"
+"others are simply high-bandwidth routers who automatically volunteer\n"
+"when the number of floodfill peers drops below a threshold.\n"
+"This prevents any long-term network damage from losing most or all\n"
+"floodfills to an attack.\n"
+"In turn, these peers will un-floodfill themselves when there are\n"
+"too many floodfills outstanding."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:349
+msgid "Floodfill Router Roles"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:350
+msgid ""
+"A floodfill router's only services that are in addition to those of non-"
+"floodfill routers\n"
+"are in accepting netDb stores and responding to netDb queries.\n"
+"Since they are generally high-bandwidth, they are more likely to "
+"participate in a high number of tunnels\n"
+"(i.e. be a \"relay\" for others), but this is not directly related to "
+"their distributed database services."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:358
+msgid "Kademlia Closeness Metric"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:359
+msgid ""
+"The netDb uses a simple Kademlia-style XOR metric to determine closeness."
+"\n"
+"The SHA256 hash of the key being looked up or stored is XOR-ed with\n"
+"the hash of the router in question to determine closeness.\n"
+"A modification to this algorithm is done to increase the costs of Sybil attacks.\n"
+"Instead of the SHA256 hash of the key being looked up of stored, the "
+"SHA256 hash is taken\n"
+"of the 32-byte binary search key appended with the UTC date represented "
+"as an 8-byte ASCII string yyyyMMdd, i.e. SHA256(key + yyyyMMdd).\n"
+"This is called the \"routing key\", and it changes every day at midnight "
+"UTC.\n"
+"Only the search key is modified in this way, not the floodfill router "
+"hashes.\n"
+"The daily transformation of the DHT is sometimes called \"keyspace "
+"rotation\",\n"
+"although it isn't strictly a rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:372
+msgid ""
+"Routing keys are never sent on-the-wire in any I2NP message, they are "
+"only used locally for\n"
+"determination of distance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:379
+msgid "Storage, Verification, and Lookup Mechanics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:381
+msgid "RouterInfo Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:382
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"RouterInfo are exchanged with peers\n"
+"as a part of the initialization of a NTCP\n"
+"or SSU transport connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:389
+msgid "LeaseSet Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:390
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"LeaseSet are periodically exchanged with peers\n"
+"by bundling them in a garlic message along with normal traffic from the "
+"related Destination.\n"
+"This allows an initial response, and later responses, to be sent to an "
+"appropriate Lease,\n"
+"without requiring any LeaseSet lookups, or requiring the communicating "
+"Destinations to have published LeaseSets at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:398
+msgid ""
+"The DatabaseStoreMessage should be sent to the floodfill that is closest\n"
+"to the current routing key for the RouterInfo or LeaseSet being stored.\n"
+"Currently, the closest floodfill is found by a search in the local "
+"database.\n"
+"Even if that floodfill is not actually closest, it will flood it "
+"\"closer\" by\n"
+"sending it to multiple other floodfills.\n"
+"This provides a high degree of fault-tolerance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:407
+msgid ""
+"In traditional Kademlia, a peer would do a \"find-closest\" search before"
+" inserting\n"
+"an item in the DHT to the closest target. As the verify operation will "
+"tend to\n"
+"discover closer floodfills if they are present, a router will quickly "
+"improve\n"
+"its knowledge of the DHT \"neighborhood\" for the RouterInfo and "
+"LeaseSets it regularly publishes.\n"
+"While I2NP does not define a \"find-closest\" message, if it becomes "
+"necessary,\n"
+"a router may simply do an iterative search for a key with the least "
+"significant bit flipped\n"
+"(i.e. key ^ 0x01) until no closer peers are received in the "
+"DatabaseSearchReplyMessages.\n"
+"This ensures that the true closest peer will be found even if a more-"
+"distant peer had\n"
+"the netdb item."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:420
+msgid "RouterInfo Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:421
+#, python-format
+msgid ""
+"A router publishes its own RouterInfo by directly connecting to a "
+"floodfill router\n"
+"and sending it a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token. The message is not end-to-end garlic "
+"encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:435
+msgid "LeaseSet Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:436
+msgid ""
+"Storage of LeaseSets is much more sensitive than for RouterInfos, as a "
+"router\n"
+"must take care that the LeaseSet cannot be associated with the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:441
+#, python-format
+msgid ""
+"A router publishes a local LeaseSet by\n"
+"sending a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token over an outbound client tunnel for that "
+"Destination.\n"
+"The message is end-to-end garlic encrypted using the Destination's "
+"Session Key Manager,\n"
+"to hide the message from the tunnel's outbound endpoint.\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token.\n"
+"This message is sent back to one of the client's inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:454
+msgid "Flooding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:455
+#, python-format
+msgid ""
+"After a floodfill router receives a DatabaseStoreMessage containing a\n"
+"valid RouterInfo or LeaseSet which is newer than that previously stored "
+"in its\n"
+"local NetDb, it \"floods\" it.\n"
+"To flood a NetDb entry, it looks up several (currently %(floodsize)s) "
+"floodfill routers closest to the routing key\n"
+"of the NetDb entry. (The routing key is the SHA256 Hash of the "
+"RouterIdentity or Destination with the date (yyyyMMdd) appended.)\n"
+"By flooding to those closest to the key, not closest to itself, the "
+"floodfill ensures that the storage\n"
+"gets to the right place, even if the storing router did not have good "
+"knowledge of the\n"
+"DHT \"neighborhood\" for the routing key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:466
+#, python-format
+msgid ""
+"The floodfill then directly connects to each of those peers\n"
+"and sends it a I2NP DatabaseStoreMessage\n"
+"with a zero Reply Token. The message is not end-to-end garlic encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The other routers do not reply or re-flood, as the Reply Token is zero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:476
+msgid "RouterInfo and LeaseSet Lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:477
+#, python-format
+msgid ""
+"The I2NP DatabaseLookupMessage is used to "
+"request a netdb entry from a floodfill router.\n"
+"Lookups are sent out one of the router's outbound exploratory tunnels.\n"
+"The replies are specified to return via one of the router's inbound "
+"exploratory tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:483
+msgid ""
+"Lookups are generally sent to the two \"good\" (the connection doesn't "
+"fail) floodfill routers closest to the requested key, in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:487
+#, python-format
+msgid ""
+"If the key is found locally by the floodfill router, it responds with a\n"
+"I2NP DatabaseStoreMessage.\n"
+"If the key is not found locally by the floodfill router, it responds with"
+" a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"containing a list of other floodfill routers close to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:495
+msgid ""
+"LeaseSet lookups are garlic encrypted end-to-end as of release 0.9.5.\n"
+"RouterInfo lookups are not encrypted and thus are vulnerable to snooping "
+"by the outbound endpoint\n"
+"(OBEP) of the client tunnel. This is due to the expense of the ElGamal "
+"encryption.\n"
+"RouterInfo lookup encryption may be enabled in a future release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:502
+msgid ""
+"As of release 0.9.7, replies to a LeaseSet lookup (a DatabaseStoreMessage"
+" or a DatabaseSearchReplyMessage)\n"
+"will be encrypted by including the session key and tag in the lookup.\n"
+"This hides the reply from the inbound gateway (IBGW) of the reply tunnel."
+"\n"
+"Responses to RouterInfo lookups will be encrypted if we enable the lookup"
+" encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:509
+#, python-format
+msgid ""
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:513
+msgid ""
+"Due to the relatively small size of the network and the flooding "
+"redundancy of 8x,\n"
+"lookups are usually O(1) rather than O(log n) --\n"
+"a router is highly likely to know a floodfill router close enough to the "
+"key to get the answer on the first try.\n"
+"In releases prior to 0.8.9, routers used a lookup redundancy of two\n"
+"(that is, two lookups were performed in parallel to different peers), and"
+"\n"
+"neither recursive nor iterative routing for lookups was "
+"implemented.\n"
+"Queries were sent through multiple routes simultaneously\n"
+"to reduce the chance of query failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:524
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented with no "
+"lookup redundancy.\n"
+"This is a more efficient and reliable lookup that will work much better\n"
+"when not all floodfill peers are known, and it removes a serious\n"
+"limitation to network growth. As the network grows and each router knows "
+"only a small\n"
+"subset of the floodfill peers, lookups will become O(log n).\n"
+"Even if the peer does not return references closer to the key, the lookup"
+" continues with\n"
+"the next-closest peer, for added robustness, and to prevent a malicious "
+"floodfill from\n"
+"black-holing a part of the key space. Lookups continue until a total "
+"lookup timeout is reached,\n"
+"or the maximum number of peers is queried."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:536
+msgid ""
+"Node IDs are verifiable in that we use the router hash "
+"directly as both the node ID and the Kademlia key.\n"
+"Incorrect responses that are not closer to the search key are generally "
+"ignored.\n"
+"Given the current size of the network, a router has\n"
+"detailed knowledge of the neighborhood of the destination ID space."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:545
+msgid "RouterInfo Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:546
+#, python-format
+msgid ""
+"Note: RouterInfo verification is disabled as of release 0.9.7.1 to "
+"prevent\n"
+"the attack described in the paper\n"
+"Practical Attacks Against the I2P Network.\n"
+"It is not clear if verification can be redesigned to be done safely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:553
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the router's outbound exploratory tunnels.\n"
+"Lookups are end-to-end garlic encrypted to prevent snooping by the "
+"outbound endpoint(OBEP)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:561
+msgid "LeaseSet Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:562
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the outbound client tunnels for the destination "
+"of the LeaseSet being verified.\n"
+"To prevent snooping by the OBEP of the outbound tunnel,\n"
+"lookups are end-to-end garlic encrypted.\n"
+"The replies are specified to return via one of the client's inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:572
+msgid ""
+"As of release 0.9.7, replies for both RouterInfo and LeaseSet lookups (a "
+"DatabaseStoreMessage or a DatabaseSearchReplyMessage)\n"
+"will be encrypted,\n"
+"to hide the reply from the inbound gateway (IBGW) of the reply tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:580
+msgid "Exploration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:581
+#, python-format
+msgid ""
+"Exploration is a special form of netdb lookup, where a router "
+"attempts to learn about\n"
+"new routers.\n"
+"It does this by sending a floodfill router a I2NP DatabaseLookupMessage, looking for a random "
+"key.\n"
+"As this lookup will fail, the floodfill would normally respond with a\n"
+"I2NP DatabaseSearchReplyMessage containing "
+"hashes of floodfill routers close to the key.\n"
+"This would not be helpful, as the requesting router probably already "
+"knows those floodfills,\n"
+"and it would be impractical to add ALL floodfill routers to the \"don't "
+"include\" field of the lookup.\n"
+"For an exploration query, the requesting router adds a router hash of all"
+" zeros to the\n"
+"\"don't include\" field of the DatabaseLookupMessage.\n"
+"The floodfill will then respond only with non-floodfill routers close to "
+"the requested key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:595
+msgid "Notes on Lookup Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:596
+msgid ""
+"The response to a lookup request is either a Database Store Message (on "
+"success) or a\n"
+"Database Search Reply Message (on failure). The DSRM contains a 'from' "
+"router hash field\n"
+"to indicate the source of the reply; the DSM does not.\n"
+"The DSRM 'from' field is unauthenticated and may be spoofed or invalid.\n"
+"There are no other response tags. Therefore, when making multiple "
+"requests in parallel, it is\n"
+"difficult to monitor the performance of the various floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:606
+msgid "MultiHoming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:608
+msgid ""
+"Destinations may be hosted on multiple routers simultaneously, by using "
+"the same\n"
+"private and public keys (traditionally stored in eepPriv.dat files).\n"
+"As both instances will periodically publish their signed LeaseSets to the"
+" floodfill peers,\n"
+"the most recently published LeaseSet will be returned to a peer "
+"requesting a database lookup.\n"
+"As LeaseSets have (at most) a 10 minute lifetime, should a particular "
+"instance go down,\n"
+"the outage will be 10 minutes at most, and generally much less than that."
+"\n"
+"The multihoming function has been verified and is in use by several "
+"services on the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:618
+msgid "Threat Analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:619
+#, python-format
+msgid ""
+"Also discussed on the threat model "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:623
+msgid ""
+"A hostile user may attempt to harm the network by\n"
+"creating one or more floodfill routers and crafting them to offer\n"
+"bad, slow, or no responses.\n"
+"Some scenarios are discussed below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:630
+msgid "General Mitigation Through Growth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:631
+#, python-format
+msgid ""
+"There are currently around %(ffcount)s floodfill routers in the network.\n"
+"Most of the following attacks will become more difficult, or have less "
+"impact,\n"
+"as the network size and number of floodfill routers increase."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:638
+msgid "General Mitigation Through Redundancy"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:639
+#, python-format
+msgid ""
+"Via flooding, all netdb entries are stored on the %(floodsize)s floodfill"
+" routers closest to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:644
+msgid "Forgeries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:645
+msgid ""
+"All netdb entries are signed by their creators, so no router may forge a\n"
+"RouterInfo or LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:650
+msgid "Slow or Unresponsive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:651
+#, python-format
+msgid ""
+"Each router maintains an expanded set of statistics in the\n"
+"peer profile for each floodfill router,"
+"\n"
+"covering various quality metrics for that peer.\n"
+"The set includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:658
+msgid "Average response time"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:659
+msgid "Percentage of queries answered with the data requested"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:660
+msgid "Percentage of stores that were successfully verified"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:661
+msgid "Last successful store"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:662
+msgid "Last successful lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:663
+msgid "Last response"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:666
+msgid ""
+"Each time a router needs to make a determination on which floodfill "
+"router is closest to a key,\n"
+"it uses these metrics to determine which floodfill routers are \"good\".\n"
+"The methods, and thresholds, used to determine \"goodness\" are "
+"relatively new, and\n"
+"are subject to further analysis and improvement.\n"
+"While a completely unresponsive router will quickly be identified and "
+"avoided,\n"
+"routers that are only sometimes malicious may be much harder to deal with."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:676
+msgid "Sybil Attack (Full Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:677
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a large number of floodfill routers spread throughout the "
+"keyspace."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:682
+#, python-format
+msgid ""
+"(In a related example, a researcher recently created a\n"
+"large number of Tor relays.)\n"
+"If successful, this could be an effective DOS attack on the entire "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:688
+msgid ""
+"If the floodfills are not sufficiently misbehaving to be marked as "
+"\"bad\" using the peer profile\n"
+"metrics described above, this is a difficult scenario to handle.\n"
+"Tor's response can be much more nimble in the relay case, as the "
+"suspicious relays\n"
+"can be manually removed from the consensus.\n"
+"Some possible responses for the I2P network are listed below, however "
+"none of them is completely satisfactory:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:696
+msgid ""
+"Compile a list of bad router hashes or IPs, and announce the list through"
+" various means\n"
+"(console news, website, forum, etc.); users would have to manually "
+"download the list and\n"
+"add it to their local \"blacklist\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:701
+msgid ""
+"Ask everyone in the network to enable floodfill manually (fight Sybil "
+"with more Sybil)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:702
+msgid "Release a new software version that includes the hardcoded \"bad\" list"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:703
+msgid ""
+"Release a new software version that improves the peer profile metrics and"
+" thresholds,\n"
+"in an attempt to automatically identify the \"bad\" peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:707
+msgid ""
+"Add software that disqualifies floodfills if too many of them are in a "
+"single IP block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:708
+msgid ""
+"Implement an automatic subscription-based blacklist controlled by a "
+"single individual or group.\n"
+"This would essentially implement a portion of the Tor \"consensus\" "
+"model.\n"
+"Unfortunately it would also give a single individual or group the power "
+"to\n"
+"block participation of any particular router or IP in the network,\n"
+"or even to completely shutdown or destroy the entire network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:717
+msgid "This attack becomes more difficult as the network size grows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:723
+msgid "Sybil Attack (Partial Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:724
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a small number (8-15) of floodfill routers clustered closely "
+"in the keyspace,\n"
+"and distribute the RouterInfos for these routers widely.\n"
+"Then, all lookups and stores for a key in that keyspace would be directed"
+"\n"
+"to one of the attacker's routers.\n"
+"If successful, this could be an effective DOS attack on a particular "
+"eepsite, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:733
+msgid ""
+"As the keyspace is indexed by the cryptographic (SHA256) Hash of the key,"
+"\n"
+"an attacker must use a brute-force method to repeatedly generate router "
+"hashes\n"
+"until he has enough that are sufficiently close to the key.\n"
+"The amount of computational power required for this, which is dependent "
+"on network\n"
+"size, is unknown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:741
+msgid ""
+"As a partial defense against this attack,\n"
+"the algorithm used to determine Kademlia \"closeness\" varies over time.\n"
+"Rather than using the Hash of the key (i.e. H(k)) to determine closeness,"
+"\n"
+"we use the Hash of the key appended with the current date string, i.e. "
+"H(k + YYYYMMDD).\n"
+"A function called the \"routing key generator\" does this, which "
+"transforms the original key into a \"routing key\".\n"
+"In other words, the entire netdb keyspace \"rotates\" every day at UTC "
+"midnight.\n"
+"Any partial-keyspace attack would have to be regenerated every day, for\n"
+"after the rotation, the attacking routers would no longer be close\n"
+"to the target key, or to each other."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:753
+msgid ""
+"This attack becomes more difficult as the network size grows.\n"
+"However, recent research demonstrates that the keyspace rotation is not "
+"particularly effective.\n"
+"An attacker can precompute numerous router hashes in advance,\n"
+"and only a few routers are sufficient to \"eclipse\" a portion\n"
+"of the keyspace within a half hour after rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:761
+msgid ""
+"One consequence of daily keyspace rotation is that the distributed "
+"network database\n"
+"may become unreliable for a few minutes after the rotation --\n"
+"lookups will fail because the new \"closest\" router has not received a "
+"store yet.\n"
+"The extent of the issue, and methods for mitigation\n"
+"(for example netdb \"handoffs\" at midnight)\n"
+"are a topic for further study."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:771
+msgid "Bootstrap Attacks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:772
+msgid ""
+"An attacker could attempt to boot new routers into an isolated\n"
+"or majority-controlled network by taking over a reseed website,\n"
+"or tricking the developers into adding his reseed website\n"
+"to the hardcoded list in the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:779
+msgid "Several defenses are possible, and most of these are planned:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:783
+msgid ""
+"Disallow fallback from HTTPS to HTTP for reseeding.\n"
+"A MITM attacker could simply block HTTPS, then respond to the HTTP."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:787
+msgid "Bundling reseed data in the installer"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:790
+msgid "Defenses that are implemented:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:794
+msgid ""
+"Changing the reseed task to fetch a subset of RouterInfos from\n"
+"each of several reseed sites rather than using only a single site"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:798
+msgid ""
+"Creating an out-of-network reseed monitoring service that\n"
+"periodically polls reseed websites and verifies that the\n"
+"data are not stale or inconsistent with other views of the network"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:803
+msgid ""
+"As of release 0.9.14, reseed data is bundled into a signed zip file and\n"
+"the signature is verified when downloaded."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:811
+msgid "Query Capture"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:812
+#, python-format
+msgid ""
+"See also lookup\n"
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:817
+msgid ""
+"Similar to a bootstrap attack, an attacker using a floodfill router could"
+" attempt to \"steer\"\n"
+"peers to a subset of routers controlled by him by returning their "
+"references."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:822
+msgid ""
+"This is unlikely to work via exploration, because exploration is a low-"
+"frequency task.\n"
+"Routers acquire a majority of their peer references through normal tunnel"
+" building activity.\n"
+"Exploration results are generally limited to a few router hashes,\n"
+"and each exploration query is directed to a random floodfill router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:829
+#, python-format
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented.\n"
+"For floodfill router references returned in a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"response to a lookup,\n"
+"these references are followed if they are closer (or the next closest) to"
+" the lookup key.\n"
+"The requesting router does not trust that the references are\n"
+"closer to the key (i.e. they are verifiably correct.\n"
+"The lookup also does not stop when no closer key is found, but continues "
+"by querying the\n"
+"next-closet node, until the timeout or maximum number of queries is "
+"reached.\n"
+"This prevents a malicious floodfill from black-holing a part of the key "
+"space.\n"
+"Also, the daily keyspace rotation requires an attacker to regenerate a "
+"router info\n"
+"within the desired key space region.\n"
+"This design ensures that the query capture attack described in\n"
+"Hashing it out in Public\n"
+"is much more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:848
+msgid "DHT-Based Relay Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:849
+#, python-format
+msgid "(Reference: Hashing it out in Public Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:853
+#, python-format
+msgid ""
+"This doesn't have much to do with floodfill, but see\n"
+"the peer selection page\n"
+"for a discussion of the vulnerabilities of peer selection for tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:859
+msgid "Information Leaks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:860
+#, python-format
+msgid ""
+"(Reference: In Search of an Anonymous and Secure "
+"Lookup Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:864
+#, python-format
+msgid ""
+"This paper addresses weaknesses in the \"Finger Table\" DHT lookups used "
+"by Torsk and NISAN.\n"
+"At first glance, these do not appear to apply to I2P. First, the use of "
+"DHT by Torsk and NISAN\n"
+"is significantly different from that in I2P. Second, I2P's network "
+"database lookups are only\n"
+"loosely correlated to the peer "
+"selection and\n"
+"tunnel building processes; only "
+"previously-known peers\n"
+"are used for tunnels.\n"
+"Also, peer selection is unrelated to any notion of DHT key-closeness."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:875
+msgid ""
+"Some of this may actually be more interesting when the I2P network gets "
+"much larger.\n"
+"Right now, each router knows a large proportion of the network, so "
+"looking up a particular\n"
+"Router Info in the network database is not strongly indicative of a "
+"future intent to use\n"
+"that router in a tunnel. Perhaps when the network is 100 times larger, "
+"the lookup may be\n"
+"more correlative. Of course, a larger network makes a Sybil attack that "
+"much harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:883
+#, python-format
+msgid ""
+"However, the general issue of DHT information leakage in I2P needs "
+"further investigation.\n"
+"The floodfill routers are in a position to observe queries and gather "
+"information.\n"
+"Certainly, at a level of f = 0.2 (20% malicious nodes, as "
+"specifed in the paper)\n"
+"we expect that many of the Sybil threats we describe\n"
+"(here,\n"
+"here and\n"
+"here)\n"
+"become problematic for several reasons."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:897
+msgid "Moved to the netdb discussion page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:901
+msgid "End-to-end encryption of additional netDb lookups and responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:905
+msgid "Better methods for tracking lookup responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:2
+msgid "Peer Profiling and Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:3
+msgid "July 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:8
+msgid "Peer Profiling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:10
+#, python-format
+msgid ""
+"Peer profiling is the process of collecting data based on the "
+"observed performance\n"
+"of other routers or peers, and classifying those peers into groups.\n"
+"Profiling does not use any claimed performance data published by "
+"the peer itself\n"
+"in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:17
+msgid "Profiles are used for two purposes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:19
+msgid "Selecting peers to relay our traffic through, which is discussed below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:20
+#, python-format
+msgid ""
+"Choosing peers from the set of floodfill routers to use for network "
+"database storage and queries,\n"
+"which is discussed on the network database page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:27
+#: i2p2www/pages/site/docs/how/peer-selection.html:187
+#: i2p2www/pages/site/docs/tunnels/implementation.html:289
+msgid "Peer Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:28
+msgid ""
+"Peer selection is the process of choosing which routers\n"
+"on the network we want to relay our messages to go through (which peers "
+"will we \n"
+"ask to join our tunnels). To accomplish this, we keep track of how each\n"
+"peer performs (the peer's \"profile\") and use that data to estimate how"
+" \n"
+"fast they are, how often they will be able to accept our requests, and \n"
+"whether they seem to be overloaded or otherwise unable to perform what\n"
+"they agree to reliably."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:38
+#, python-format
+msgid ""
+"Unlike some other anonymous networks, in I2P,\n"
+"claimed bandwidth is untrusted and is only used to avoid those "
+"peers\n"
+"advertising very low bandwidth insufficient for routing tunnels.\n"
+"All peer selection is done through profiling.\n"
+"This prevents simple attacks based on peers claiming high bandwidth\n"
+"in order to capture large numbers of tunnels.\n"
+"It also makes\n"
+"timing attacks\n"
+"more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:50
+msgid ""
+"Peer selection is done quite frequently, as a router may maintain a large"
+" number\n"
+"of client and exploratory tunnels, and a tunnel lifetime is only 10 "
+"minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:56
+msgid "Further Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:57
+#, python-format
+msgid ""
+"For more information see the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network\n"
+"presented at PET-CON 2009.1.\n"
+"See below for notes on minor changes since the "
+"paper was published."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:65
+msgid "Profiles"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:66
+#, python-format
+msgid ""
+"Each peer has a set of data points collected about them, including "
+"statistics \n"
+"about how long it takes for them to reply to a network database query, "
+"how \n"
+"often their tunnels fail, and how many new peers they are able to "
+"introduce \n"
+"us to, as well as simple data points such as when we last heard from them"
+" or\n"
+"when the last communication error occurred. The specific data points "
+"gathered\n"
+"can be found in the code."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:75
+msgid ""
+"Profiles are fairly small, a few KB. To control memory usage, the profile"
+" expiration time\n"
+"lessens as the number of profiles grows.\n"
+"Profiles are kept in memory until router shutdown, when they are written "
+"to disk.\n"
+"At startup, the profiles are read so the router need not reinitialize all"
+" profiles,\n"
+"thus allowing a router to quickly re-integrate into the network after "
+"startup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:85
+msgid "Peer Summaries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:86
+msgid ""
+"While the profiles themselves can be considered a summary of a peer's \n"
+"performance, to allow for effective peer selection we break each summary "
+"down \n"
+"into four simple values, representing the peer's speed, its capacity, how"
+" well \n"
+"integrated into the network it is, and whether it is failing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:93
+msgid "Speed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:94
+msgid ""
+"The speed calculation\n"
+"simply goes through the profile and estimates how much data we can\n"
+"send or receive on a single tunnel through the peer in a minute. For "
+"this estimate it just looks at\n"
+"performance in the previous minute."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:101
+msgid "Capacity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:102
+msgid ""
+"The capacity calculation\n"
+"simply goes through the profile and estimates how many tunnels the peer\n"
+"would agree to participate in over a given time period. For this "
+"estimate it looks at \n"
+"how many tunnel build requests\n"
+"the peer has accepted, rejected, and dropped, and how many\n"
+"of the agreed-to tunnels later failed.\n"
+"While the calculation is time-weighted so that recent activity counts "
+"more than later activity,\n"
+"statistics up to 48 hours old may be included."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:113
+msgid ""
+"Recognizing and avoiding unreliable and unreachable\n"
+"peers is critically important.\n"
+"Unfortunately, as the tunnel building and testing require the "
+"participation of several peers,\n"
+"it is difficult to positively identify the cause of a dropped build "
+"request or test failure.\n"
+"The router assigns a probability of failure to each of the\n"
+"peers, and uses that probability in the capacity calculation.\n"
+"Drops and test failures are weighted much higher than rejections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:123
+msgid "Peer organization"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:124
+msgid ""
+"As mentioned above, we drill through each peer's profile to come up with "
+"a \n"
+"few key calculations, and based upon those, we organize each peer into "
+"three\n"
+"groups - fast, high capacity, and standard."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:130
+msgid "The groupings are not mutually exclusive, nor are they unrelated:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:134
+msgid ""
+"A peer is considered \"high capacity\" if its capacity calculation meets "
+"or \n"
+"exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:138
+msgid ""
+"A peer is considered \"fast\" if they are already \"high capacity\" and "
+"their \n"
+"speed calculation meets or exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:142
+msgid "A peer is considered \"standard\" if it is not \"high capacity\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:145
+#, python-format
+msgid ""
+"These groupings are implemented in the router's\n"
+"ProfileOrganizer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:150
+msgid "Group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:151
+msgid "The size of the groups may be limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:156
+msgid ""
+"The fast group is limited to 30 peers.\n"
+"If there would be more, only the ones with the highest speed rating are "
+"placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:160
+msgid ""
+"The high capacity group is limited to 75 peers (including the fast group)"
+"\n"
+"If there would be more, only the ones with the highest capacity rating "
+"are placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:164
+msgid ""
+"The standard group has no fixed limit, but is somewhat smaller than the "
+"number of RouterInfos\n"
+"stored in the local network database.\n"
+"On an active router in today's network, there may be about 1000 "
+"RouterInfos and 500 peer profiles\n"
+"(including those in the fast and high capacity groups)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:172
+msgid "Recalculation and Stability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:173
+msgid ""
+"Summaries are recalculated, and peers are resorted into groups, every 45 "
+"seconds."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:177
+msgid ""
+"The groups tend to be fairly stable, that is, there is not much \"churn\""
+" in the rankings\n"
+"at each recalculation.\n"
+"Peers in the fast and high capacity groups get more tunnels build through"
+" them, which increases their speed and capacity ratings,\n"
+"which reinforces their presence in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:188
+msgid "The router selects peers from the above groups to build tunnels through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:193
+msgid "Peer Selection for Client Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:194
+msgid ""
+"Client tunnels are used for application traffic, such as for HTTP proxies"
+" and web servers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:198
+msgid ""
+"To reduce the susceptibility to some attacks,\n"
+"and increase performance,\n"
+"peers for building client tunnels are chosen randomly from the smallest "
+"group, which is the \"fast\" group.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in a tunnel for the same client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:206
+msgid "Peer Selection for Exploratory Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:207
+msgid ""
+"Exploratory tunnels are used for router administrative purposes, such as "
+"network database traffic\n"
+"and testing client tunnels.\n"
+"Exploratory tunnels are also used to contact previously unconnected "
+"routers, which is why\n"
+"they are called \"exploratory\".\n"
+"These tunnels are usually low-bandwidth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:215
+msgid ""
+"Peers for building exploratory tunnels are generally chosen randomly from"
+" the standard group.\n"
+"If the success rate of these build attempts is low compared to the client"
+" tunnel build success rate,\n"
+"the router will select a weighted average of peers randomly from the high"
+" capacity group instead.\n"
+"This helps maintain a satisfactory build success rate even when network "
+"performance is poor.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in an exploratory tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:223
+msgid ""
+"As the standard group includes a very large subset of all peers the "
+"router knows about,\n"
+"exploratory tunnels are essentially built through a random selection of "
+"all peers,\n"
+"until the build success rate becomes too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:231
+msgid "Restrictions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:232
+msgid ""
+"To prevent some simple attacks, and for performance, there are the "
+"following restrictions:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:236
+msgid "Two peers from the same /16 IP space may not be in the same tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:239
+msgid ""
+"A peer may participate in a maximum of 33% of all tunnels created by "
+"the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:242
+msgid "Peers with extremely low bandwidth are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:245
+msgid "Peers for which a recent connection attempt failed are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:252
+msgid "Peer Ordering in Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:253
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to\n"
+"to deal with the predecessor attack\n"
+"(2008 update).\n"
+"More information is on the tunnel "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:268
+msgid "Continue to analyze an tune speed and capacity calculations as necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:271
+msgid ""
+"Implement a more aggressive ejection strategy if necessary to control "
+"memory usage as the network grows"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:274
+msgid "Evaluate group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:277
+msgid "Use GeoIP data to include or exclude certain peers, if configured"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:283
+#, python-format
+msgid ""
+"For those reading the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network,\n"
+"please keep in mind the following minor changes in I2P since the paper's "
+"publication:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:289
+msgid "The Integration calculation is still not used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:290
+msgid "In the paper, \"groups\" are called \"tiers\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:291
+msgid "The \"Failing\" tier is no longer used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:292
+msgid "The \"Not Failing\" tier is now named \"Standard\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:301
+msgid "One Cell Enough"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:303
+msgid "Tor Entry Guards"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:305
+msgid "Murdoch 2007 Paper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:307
+msgid "Tune-up for Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:309
+msgid "Low-resource Routing Attacks Against Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:2
+msgid "I2P: A scalable framework for anonymous communication"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:5
+#: i2p2www/pages/site/docs/how/tech-intro.html:20
+#: i2p2www/pages/site/docs/transport/ssu.html:342
+msgid "Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:7
+msgid "I2P Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:12
+#: i2p2www/pages/site/docs/how/tech-intro.html:397
+msgid "Transport protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:13
+#: i2p2www/pages/site/docs/how/tech-intro.html:454
+msgid "Cryptography"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:21
+msgid ""
+"I2P is a scalable, self organizing, resilient packet switched anonymous \n"
+"network layer, upon which any number of different anonymity or security "
+"conscious \n"
+"applications can operate. Each of these applications may make their own "
+"anonymity, \n"
+"latency, and throughput tradeoffs without worrying about the proper "
+"implementation \n"
+"of a free route mixnet, allowing them to blend their activity with the "
+"larger \n"
+"anonymity set of users already running on top of I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:30
+msgid ""
+"Applications available already provide the full range of typical Internet"
+" activities -\n"
+"anonymous web browsing, web hosting, chat, file sharing, e-mail,\n"
+"blogging and content syndication, newsgroups, as well as several other "
+"applications under development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:36
+msgid "Web browsing: using any existing browser that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:37
+msgid "Chat: IRC, Jabber, I2P-Messenger."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:38
+msgid ""
+"File sharing: I2PSnark, Robert, iMule, \n"
+"I2Phex, PyBit, I2P-bt\n"
+"and others."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:43
+msgid ""
+"E-mail: susimail and I2P-Bote."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:44
+msgid ""
+"Blog: using e.g. the pebble plugin or the distributed blogging software "
+"Syndie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:45
+msgid ""
+"Distributed Data Store: Save your data redundantly in the Tahoe-LAFS "
+"cloud over I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:46
+msgid "Newsgroups: using any newsgroup reader that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:49
+msgid ""
+"Unlike web sites hosted within content distribution networks like Freenet \n"
+"or GNUnet, the services "
+"hosted on \n"
+"I2P are fully interactive - there are traditional web-style search "
+"engines, \n"
+"bulletin boards, blogs you can comment on, database driven sites, and "
+"bridges \n"
+"to query static systems like Freenet without needing to install it "
+"locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:57
+msgid ""
+"With all of these anonymity enabled applications, I2P takes on the role \n"
+"of the message oriented middleware - applications say that they want to "
+"send \n"
+"some data to a cryptographic identifier (a \"destination\") and I2P takes"
+" care \n"
+"of making sure it gets there securely and anonymously. I2P also bundles a"
+" \n"
+"simple streaming library to allow I2P's "
+"anonymous \n"
+"best-effort messages to transfer as reliable, in-order streams, "
+"transparently \n"
+"offering a TCP based congestion control algorithm tuned for the high "
+"bandwidth \n"
+"delay product of the network. While there have been several simple SOCKS "
+"proxies \n"
+"available to tie existing applications into the network, their value has "
+"been \n"
+"limited as nearly every application routinely exposes what, in an "
+"anonymous \n"
+"context, is sensitive information. The only safe way to go is to fully "
+"audit \n"
+"an application to ensure proper operation and to assist in that we "
+"provide \n"
+"a series of APIs in various languages which can be used to make the most "
+"out \n"
+"of the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:74
+#, python-format
+msgid ""
+"I2P is not a research project - academic, commercial, or governmental, "
+"but \n"
+"is instead an engineering effort aimed at doing whatever is necessary to "
+"provide \n"
+"a sufficient level of anonymity to those who need it. It has been in "
+"active \n"
+"development since early 2003 with one full time developer and a dedicated"
+" \n"
+"group of part time contributors from all over the world. All of the work "
+"done \n"
+"on I2P is open source and freely available on the website, \n"
+"with the majority of the code released outright into the public domain, "
+"though \n"
+"making use of a few cryptographic routines under BSD-style licenses. The "
+"people \n"
+"working on I2P do not control what people release client applications "
+"under, \n"
+"and there are several GPL'ed applications available (I2PTunnel, \n"
+"susimail, I2PSnark, I2P-"
+"Bote, \n"
+"I2Phex and others.).\n"
+"Funding for I2P comes entirely from "
+"donations,\n"
+"and does not receive any tax breaks in any jurisdiction at this time,\n"
+"as many of the developers are themselves anonymous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:92
+msgid "Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:94
+msgid ""
+"To understand I2P's operation, it is essential to understand a few key "
+"concepts. \n"
+"First, I2P makes a strict separation between the software participating "
+"in \n"
+"the network (a \"router\") and the anonymous endpoints (\"destinations\")"
+" associated \n"
+"with individual applications. The fact that someone is running I2P is not"
+" \n"
+"usually a secret. What is hidden is information on what the user is "
+"doing, \n"
+"if anything at all, as well as what router a particular destination is "
+"connected \n"
+"to. End users will typically have several local destinations on their "
+"router \n"
+"- for instance, one proxying in to IRC servers, another supporting the "
+"user's \n"
+"anonymous webserver (\"eepsite\"), another for an I2Phex instance, "
+"another for \n"
+"torrents, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:107
+msgid ""
+"Another critical concept to understand is the \"tunnel\".\n"
+"A tunnel is a directed path through an explicitly selected list of "
+"routers.\n"
+"Layered encryption is used, so each of the routers can only decrypt a "
+"single layer.\n"
+"The decrypted information contains the IP of the next router, along with\n"
+"the encrypted information to be forwarded.\n"
+"Each tunnel has a starting point (the first router, also known as "
+"\"gateway\")\n"
+"and an end point. Messages can be sent only in one way. To send messages "
+"back,\n"
+"another tunnel is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:105
+msgid "Inbound and outbound tunnel schematic"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:120
+msgid "Figure 1: Two types of tunnels exist: inbound and outbound."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:123
+msgid ""
+"Two types of tunnels exist:\n"
+"\"outbound\" tunnels send messages away from the tunnel creator,\n"
+"while \"inbound\" tunnels bring messages to the tunnel creator.\n"
+"Combining these two tunnels allows users to send messages to each other.\n"
+"The sender (\"Alice\" in the above image) sets up an outbound tunnel,\n"
+"while the receiver (\"Bob\" in the above image) creates an inbound "
+"tunnel.\n"
+"The gateway of an inbound tunnel can receive messages from any other user"
+"\n"
+"and will send them on until the endpoint (\"Bob\").\n"
+"The endpoint of the outbound tunnel will need to send the message\n"
+"on to the gateway of the inbound tunnel.\n"
+"To do this, the sender (\"Alice\") adds instructions to her encrypted "
+"message.\n"
+"Once the endpoint of the outbound tunnel decrypts the message,\n"
+"it will have instructions to forward the message to the correct\n"
+"inbound gateway (the gateway to \"Bob\")."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:140
+msgid ""
+"A third critical concept to understand is I2P's \"network "
+"database\" (or \"netDb\") \n"
+"- a pair of algorithms used to share network metadata. The two types of "
+"metadata \n"
+"carried are \"routerInfo\" and \"leaseSets\" - the "
+"routerInfo gives routers the \n"
+"data necessary for contacting a particular router (their public keys, "
+"transport \n"
+"addresses, etc), while the leaseSet gives routers the information "
+"necessary \n"
+"for contacting a particular destination. A leaseSet contains a number of "
+"\"leases\".\n"
+"Each of this leases specifies a tunnel gateway, which allows reaching a "
+"specific destination.\n"
+"The full information contained in a lease:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:151
+msgid "Inbound gateway for a tunnel that allows reaching a specific destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:152
+msgid "Time when a tunnel expires."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:153
+msgid ""
+"Pair of public keys to be able to encrypt messages (to send through the "
+"tunnel and reach the destination)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:155
+msgid ""
+"Routers themselves send their routerInfo to the netDb directly, while "
+"leaseSets are sent through outbound tunnels\n"
+"(leaseSets need to be sent anonymously, to avoid correlating a router "
+"with his leaseSets)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:160
+msgid ""
+"We can combine the above concepts to build successful connections in the "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:164
+msgid ""
+"To build up her own inbound and outbound tunnels, Alice does a lookup in "
+"the netDb to collect routerInfo.\n"
+"This way, she gathers lists of peers she can use as hops in her tunnels.\n"
+"She can then send a build message to the first hop, requesting the "
+"construction of a tunnel and asking\n"
+"that router to send the construction message onward, until the tunnel has"
+" been constructed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:171
+msgid "Request information on other routers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:173
+msgid "Build tunnel using router information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:175
+msgid "Figure 2: Router information is used to build tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:178
+msgid ""
+"When Alice wants to send a message to Bob, she first does a lookup in the"
+" \n"
+"netDb to find Bob's leaseSet, giving her his current inbound tunnel "
+"gateways. \n"
+"She then picks one of her outbound tunnels and sends the message down it "
+"with \n"
+"instructions for the outbound tunnel's endpoint to forward the message on"
+" \n"
+"to one of Bob's inbound tunnel gateways. When the outbound tunnel "
+"endpoint \n"
+"receives those instructions, it forwards the message as requested, and "
+"when \n"
+"Bob's inbound tunnel gateway receives it, it is forwarded down the tunnel"
+" \n"
+"to Bob's router. If Alice wants Bob to be able to reply to the message, "
+"she \n"
+"needs to transmit her own destination explicitly as part of the message "
+"itself.\n"
+"This can be done by introducing a higher-level layer, which is done in "
+"the\n"
+"streaming library.\n"
+"Alice may also cut down on the response time by bundling her most \n"
+"recent LeaseSet with the message so that Bob doesn't need to do a netDb "
+"lookup \n"
+"for it when he wants to reply, but this is optional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using leaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:197
+msgid "Figure 3: LeaseSets are used to connect outbound and inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:200
+msgid ""
+"While the tunnels themselves have layered encryption to prevent "
+"unauthorized \n"
+"disclosure to peers inside the network (as the transport layer itself "
+"does \n"
+"to prevent unauthorized disclosure to peers outside the network), it is "
+"necessary \n"
+"to add an additional end to end layer of encryption to hide the message "
+"from \n"
+"the outbound tunnel endpoint and the inbound tunnel gateway. This \"garlic \n"
+"encryption\" lets Alice's router wrap up multiple messages into a "
+"single \n"
+"\"garlic message\", encrypted to a particular public key so that "
+"intermediary \n"
+"peers cannot determine either how many messages are within the garlic, "
+"what \n"
+"those messages say, or where those individual cloves are destined. For "
+"typical \n"
+"end to end communication between Alice and Bob, the garlic will be "
+"encrypted \n"
+"to the public key published in Bob's leaseSet, allowing the message to be"
+" \n"
+"encrypted without giving out the public key to Bob's own router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:215
+msgid ""
+"Another important fact to keep in mind is that I2P is entirely message "
+"based \n"
+"and that some messages may be lost along the way. Applications using I2P "
+"can \n"
+"use the message oriented interfaces and take care of their own congestion"
+" \n"
+"control and reliability needs, but most would be best served by reusing "
+"the \n"
+"provided streaming library to view I2P as "
+"a streams \n"
+"based network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:225
+msgid ""
+"Both inbound and outbound tunnels work along similar principles.\n"
+"The tunnel gateway accumulates a number of tunnel messages, eventually "
+"preprocessing \n"
+"them into something for tunnel delivery. Next, the gateway encrypts that "
+"preprocessed \n"
+"data and forwards it to the first hop. That peer and subsequent tunnel "
+"participants \n"
+"add on a layer of encryption after verifying that it isn't a duplicate "
+"before \n"
+"forward it on to the next peer. Eventually, the message arrives at the "
+"endpoint \n"
+"where the messages are split out again and forwarded on as requested. The"
+" \n"
+"difference arises in what the tunnel's creator does - for inbound "
+"tunnels, \n"
+"the creator is the endpoint and they simply decrypt all of the layers "
+"added, \n"
+"while for outbound tunnels, the creator is the gateway and they pre-"
+"decrypt \n"
+"all of the layers so that after all of the layers of per-hop encryption "
+"are \n"
+"added, the message arrives in the clear at the tunnel endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:240
+msgid ""
+"The choice of specific peers to pass on messages as well as their "
+"particular \n"
+"ordering is important to understanding both I2P's anonymity and "
+"performance \n"
+"characteristics. While the network database (below) has its own criteria "
+"for \n"
+"picking what peers to query and store entries on, tunnel creators may use"
+" any peers \n"
+"in the network in any order (and even any number of times) in a single "
+"tunnel. \n"
+"If perfect latency and capacity data were globally known, selection and "
+"ordering \n"
+"would be driven by the particular needs of the client in tandem with "
+"their \n"
+"threat model. Unfortunately, latency and capacity data is not trivial to "
+"gather \n"
+"anonymously, and depending upon untrusted peers to provide this "
+"information \n"
+"has its own serious anonymity implications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:253
+msgid ""
+"From an anonymity perspective, the simplest technique would be to pick "
+"peers \n"
+"randomly from the entire network, order them randomly and use those peers"
+" \n"
+"in that order for all eternity. From a performance perspective, the "
+"simplest \n"
+"technique would be to pick the fastest peers with the necessary spare "
+"capacity, \n"
+"spreading the load across different peers to handle transparent failover,"
+" \n"
+"and to rebuild the tunnel whenever capacity information changes. While "
+"the \n"
+"former is both brittle and inefficient, the later requires inaccessible "
+"information \n"
+"and offers insufficient anonymity. I2P is instead working on offering a "
+"range \n"
+"of peer selection strategies, coupled with anonymity aware measurement "
+"code \n"
+"to organize the peers by their profiles."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:266
+msgid ""
+"As a base, I2P is constantly profiling the peers with which it interacts"
+" \n"
+"with by measuring their indirect behavior - for instance, when a peer "
+"responds \n"
+"to a netDb lookup in 1.3 seconds, that round trip latency is recorded in "
+"the \n"
+"profiles for all of the routers involved in the two tunnels (inbound and "
+"outbound) \n"
+"through which the request and response passed, as well as the queried "
+"peer's \n"
+"profile. Direct measurement, such as transport layer latency or "
+"congestion, \n"
+"is not used as part of the profile, as it can be manipulated and "
+"associated \n"
+"with the measuring router, exposing them to trivial attacks. While "
+"gathering \n"
+"these profiles, a series of calculations are run on each to summarize its"
+" \n"
+"performance - its latency, capacity to handle lots of activity, whether "
+"they \n"
+"are currently overloaded, and how well integrated into the network they "
+"seem \n"
+"to be. These calculations are then compared for active peers to organize "
+"the \n"
+"routers into four tiers - fast and high capacity, high capacity, not "
+"failing, \n"
+"and failing. The thresholds for those tiers are determined dynamically, "
+"and \n"
+"while they currently use fairly simple algorithms, alternatives exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:284
+msgid ""
+"Using this profile data, the simplest reasonable peer selection strategy "
+"is to\n"
+"pick peers randomly from the top tier (fast and high capacity), and this "
+"is\n"
+"currently deployed for client tunnels. Exploratory tunnels (used for "
+"netDb and\n"
+"tunnel management) pick peers randomly from the \"not failing\" tier "
+"(which\n"
+"includes routers in 'better' tiers as well), allowing the peer to sample\n"
+"routers more widely, in effect optimizing the peer selection through "
+"randomized\n"
+"hill "
+"climbing. These\n"
+"strategies alone do however leak information regarding the peers in the\n"
+"router's top tier through predecessor and netDb harvesting attacks. In "
+"turn,\n"
+"several alternatives exist which, while not balancing the load as evenly,"
+" will\n"
+"address the attacks mounted by particular classes of adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:298
+msgid ""
+"By picking a random key and ordering the peers according to their XOR "
+"distance \n"
+"from it, the information leaked is reduced in predecessor and harvesting "
+"attacks \n"
+"according to the peers' failure rate and the tier's churn. Another simple"
+" \n"
+"strategy for dealing with netDb harvesting attacks is to simply fix the "
+"inbound \n"
+"tunnel gateway(s) yet randomize the peers further on in the tunnels. To "
+"deal \n"
+"with predecessor attacks for adversaries which the client contacts, the "
+"outbound \n"
+"tunnel endpoints would also remain fixed. The selection of which peer to "
+"fix \n"
+"on the most exposed point would of course need to have a limit to the "
+"duration, \n"
+"as all peers fail eventually, so it could either be reactively adjusted "
+"or \n"
+"proactively avoided to mimic a measured mean time between failures of "
+"other \n"
+"routers. These two strategies can in turn be combined, using a fixed "
+"exposed \n"
+"peer and an XOR based ordering within the tunnels themselves. A more "
+"rigid \n"
+"strategy would fix the exact peers and ordering of a potential tunnel, "
+"only \n"
+"using individual peers if all of them agree to participate in the same "
+"way \n"
+"each time. This varies from the XOR based ordering in that the "
+"predecessor \n"
+"and successor of each peer is always the same, while the XOR only makes "
+"sure \n"
+"their order doesn't change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:318
+#, python-format
+msgid ""
+"As mentioned before, I2P currently (release 0.8) includes the tiered \n"
+"random strategy above, with XOR-based ordering. A \n"
+"more detailed discussion of the mechanics involved in tunnel operation, "
+"management, \n"
+"and peer selection can be found in the tunnel "
+"spec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:326
+#, python-format
+msgid ""
+"As mentioned earlier, I2P's netDb works to share the network's metadata.\n"
+"This is detailed in the network database page,\n"
+"but a basic explanation is available below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:332
+msgid ""
+"A percentage of I2P users are appointed as 'floodfill peers'.\n"
+"Currently, I2P installations that have a lot of bandwidth and are fast "
+"enough,\n"
+"will appoint themselves as floodfill as soon as the number of existing "
+"floodfill routers\n"
+"drops too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:339
+#, python-format
+msgid ""
+"Other I2P routers will store their data and lookup data by sending simple"
+" 'store' and 'lookup' queries to the floodfills.\n"
+"If a floodfill router receives a 'store' query, it will spread the "
+"information to other floodfill routers\n"
+"using the Kademlia "
+"algorithm.\n"
+"The 'lookup' queries currently function differently, to avoid an "
+"important\n"
+"security issue.\n"
+"When a lookup is done, the floodfill router will not forward the lookup "
+"to other peers,\n"
+"but will always answer by itself (if it has the requested data)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:349
+msgid "Two types of information are stored in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:353
+msgid ""
+"A RouterInfo stores information on a specific I2P router and how "
+"to contact it"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:354
+msgid ""
+"A LeaseSet stores information on a specific destination (e.g. I2P "
+"website, e-mail server...)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:356
+msgid ""
+"All of this information is signed by the publishing party and verified by"
+" any I2P router using or storing the information.\n"
+"In addition, the data contains timing information, to avoid storage of "
+"old entries and possible attacks.\n"
+"This is also why I2P bundles the necessary code for maintaining the "
+"correct time, occasionally querying some SNTP servers \n"
+"(the pool.ntp.org round robin by"
+" default)\n"
+"and detecting skew between routers at the transport layer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:364
+msgid "Some additional remarks are also important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:369
+msgid "Unpublished and encrypted leasesets:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:370
+msgid ""
+"One could only want specific people to be able to reach a destination.\n"
+"This is possible by not publishing the destination in the netDb. You will"
+" however have to transmit the destination by other means.\n"
+"An alternative are the 'encrypted leaseSets'. These leaseSets can only be"
+" decoded by people with access to the decryption key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:377
+msgid "Bootstrapping:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:378
+msgid ""
+"Bootstrapping the netDb is quite simple. Once a router manages to receive"
+" a single routerInfo of a reachable peer,\n"
+"it can query that router for references to other routers in the network.\n"
+"Currently, a number of users post their routerInfo files to a website to "
+"make this information available.\n"
+"I2P automatically connects to one of these websites to gather routerInfo "
+"files and bootstrap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:386
+msgid "Lookup scalability:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:387
+msgid ""
+"Lookups in the I2P network are not forwarded to other netDb routers.\n"
+"Currently, this is not a major problem, since the network is not very "
+"large.\n"
+"However, as the network grows, not all routerInfo and leaseSet files will"
+" be present\n"
+"on each netDb router. This will cause a deterioration of the percentage "
+"of successful lookups.\n"
+"Because of this, refinements to the netDb will be done in the next "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:398
+msgid ""
+"Communication between routers needs to provide confidentiality and "
+"integrity \n"
+"against external adversaries while authenticating that the router "
+"contacted \n"
+"is the one who should receive a given message. The particulars of how "
+"routers \n"
+"communicate with other routers aren't critical - three separate protocols"
+" \n"
+"have been used at different points to provide those bare necessities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:406
+#, python-format
+msgid ""
+"I2P started with a TCP-based protocol which \n"
+"has since been disabled. Then, to accommodate the need for high degree "
+"communication \n"
+"(as a number of routers will end up speaking with many others), I2P moved"
+" \n"
+"from a TCP based transport to a UDP-based one - "
+"\"Secure \n"
+"Semireliable UDP\", or \"SSU\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:414
+#, python-format
+msgid "As described in the SSU spec:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:418
+msgid ""
+"The goal of this protocol is to provide secure, authenticated, \n"
+"semireliable and unordered message delivery, exposing only a minimal "
+"amount \n"
+"of data easily discernible to third parties. It should support high "
+"degree \n"
+"communication as well as TCP-friendly congestion control and may include"
+" \n"
+"PMTU detection. It should be capable of efficiently moving bulk data at "
+"rates \n"
+"sufficient for home users. In addition, it should support techniques for "
+"addressing \n"
+"network obstacles, like most NATs or firewalls."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:428
+#, python-format
+msgid ""
+"Following the introduction of SSU, after issues with congestion collapse"
+" \n"
+"appeared, a new NIO-based TCP transport called NTCP \n"
+"was implemented. It is enabled by default for outbound connections only. "
+"Those \n"
+"who configure their NAT/firewall to allow inbound connections and specify"
+" \n"
+"the external host and port (dyndns/etc is ok) on /config.jsp can receive "
+"inbound \n"
+"connections. As NTCP is NIO based, so it doesn't suffer from the 1 thread"
+" \n"
+"per connection issues of the old TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:438
+msgid ""
+"I2P supports multiple transports simultaneously. A particular transport \n"
+"for an outbound connection is selected with \"bids\". Each transport bids"
+" for \n"
+"the connection and the relative value of these bids assigns the priority."
+" \n"
+"Transports may reply with different bids, depending on whether there is "
+"already \n"
+"an established connection to the peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:446
+#, python-format
+msgid ""
+"The current implementation ranks NTCP as the highest-priority transport \n"
+"for outbound connections in most situations. SSU is enabled for both "
+"outbound \n"
+"and inbound connections. Your firewall and your I2P router must be "
+"configured \n"
+"to allow inbound NTCP connections. For further information see the NTCP \n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:455
+msgid ""
+"A bare minimum set of cryptographic primitives are combined together to \n"
+"provide I2P's layered defenses against a variety of adversaries. At the "
+"lowest \n"
+"level, inter router communication is protected by the transport layer "
+"security \n"
+"- SSU encrypts each packet with AES256/CBC with both an explicit IV and "
+"MAC \n"
+"(HMAC-MD5-128) after agreeing upon an ephemeral session key through a "
+"2048bit \n"
+"Diffie-Hellman exchange, station-to-station authentication with the other"
+" \n"
+"router's DSA key, plus each network message has their own hash for local "
+"integrity \n"
+"checking. Tunnel messages passed over the "
+"transports \n"
+"have their own layered AES256/CBC encryption with an explicit IV and "
+"verified \n"
+"at the tunnel endpoint with an additional SHA256 hash. Various other "
+"messages \n"
+"are passed along inside \"garlic messages\", which are encrypted with "
+"ElGamal/AES+SessionTags \n"
+"(explained below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:470
+msgid "Garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:471
+msgid ""
+"Garlic messages are an extension of \"onion\" layered encryption, "
+"allowing \n"
+"the contents of a single message to contain multiple \"cloves\" - fully "
+"formed \n"
+"messages alongside their own instructions for delivery. Messages are "
+"wrapped \n"
+"into a garlic message whenever the message would otherwise be passing in "
+"cleartext \n"
+"through a peer who should not have access to the information - for "
+"instance, \n"
+"when a router wants to ask another router to participate in a tunnel, "
+"they \n"
+"wrap the request inside a garlic, encrypt that garlic to the receiving "
+"router's \n"
+"2048bit ElGamal public key, and forward it through a tunnel. Another "
+"example \n"
+"is when a client wants to send a message to a destination - the sender's "
+"router \n"
+"will wrap up that data message (alongside some other messages) into a "
+"garlic, \n"
+"encrypt that garlic to the 2048bit ElGamal public key published in the "
+"recipient's \n"
+"leaseSet, and forward it through the appropriate tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:486
+msgid ""
+"The \"instructions\" attached to each clove inside the encryption layer "
+"includes \n"
+"the ability to request that the clove be forwarded locally, to a remote "
+"router, \n"
+"or to a remote tunnel on a remote router. There are fields in those "
+"instructions \n"
+"allowing a peer to request that the delivery be delayed until a certain "
+"time \n"
+"or condition has been met, though they won't be honored until the nontrivial \n"
+"delays are deployed. It is possible to explicitly route garlic "
+"messages \n"
+"any number of hops without building tunnels, or even to reroute tunnel "
+"messages \n"
+"by wrapping them in garlic messages and forwarding them a number of hops "
+"prior \n"
+"to delivering them to the next hop in the tunnel, but those techniques "
+"are \n"
+"not currently used in the existing implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:499
+msgid "Session tags"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:500
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the simple use of 2048bit ElGamal, AES256, SHA256 and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:539
+msgid ""
+"Session tags themselves have a very short lifetime, after which they are"
+" \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:549
+msgid ""
+"One alternative is to transmit only a single session tag, and from that,"
+" \n"
+"seed a deterministic PRNG for determining what tags to use or expect. By "
+"keeping \n"
+"this PRNG roughly synchronized between the sender and recipient (the "
+"recipient \n"
+"precomputes a window of the next e.g. 50 tags), the overhead of "
+"periodically \n"
+"bundling a large number of tags is removed, allowing more options in the "
+"space/time \n"
+"tradeoff, and perhaps reducing the number of ElGamal encryptions "
+"necessary. \n"
+"However, it would depend upon the strength of the PRNG to provide the "
+"necessary \n"
+"cover against internal adversaries, though perhaps by limiting the amount"
+" \n"
+"of times each PRNG is used, any weaknesses can be minimized. At the "
+"moment, \n"
+"there are no immediate plans to move towards these synchronized PRNGs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:562
+msgid "Future"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:563
+msgid ""
+"While I2P is currently functional and sufficient for many scenarios, "
+"there \n"
+"are several areas which require further improvement to meet the needs of "
+"those \n"
+"facing more powerful adversaries as well as substantial user experience "
+"optimization."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:569
+msgid "Restricted route operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:570
+msgid ""
+"I2P is an overlay network designed to be run on top of a functional "
+"packet \n"
+"switched network, exploiting the end to end principle to offer anonymity "
+"and \n"
+"security. While the Internet no longer fully embraces the end to end "
+"principle\n"
+"(due to the usage of NAT), \n"
+"I2P does require a substantial portion of the network to be reachable - "
+"there \n"
+"may be a number of peers along the edges running using restricted routes,"
+" \n"
+"but I2P does not include an appropriate routing algorithm for the "
+"degenerate \n"
+"case where most peers are unreachable. It would, however work on top of a"
+" \n"
+"network employing such an algorithm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:582
+msgid ""
+"Restricted route operation, where there are limits to what peers are "
+"reachable \n"
+"directly, has several different functional and anonymity implications, "
+"dependent \n"
+"upon how the restricted routes are handled. At the most basic level, "
+"restricted \n"
+"routes exist when a peer is behind a NAT or firewall which does not allow"
+" \n"
+"inbound connections. This was largely addressed in I2P 0.6.0.6 by "
+"integrating \n"
+"distributed hole punching into the transport layer, allowing people "
+"behind \n"
+"most NATs and firewalls to receive unsolicited connections without any "
+"configuration. \n"
+"However, this does not limit the exposure of the peer's IP address to "
+"routers \n"
+"inside the network, as they can simply get introduced to the peer through"
+" \n"
+"the published introducer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:595
+msgid ""
+"Beyond the functional handling of restricted routes, there are two levels"
+" \n"
+"of restricted operation that can be used to limit the exposure of one's "
+"IP \n"
+"address - using router-specific tunnels for communication, and offering "
+"'client \n"
+"routers'. For the former, routers can either build a new pool of tunnels "
+"or \n"
+"reuse their exploratory pool, publishing the inbound gateways to some of "
+"them \n"
+"as part of their routerInfo in place of their transport addresses. When a"
+" \n"
+"peer wants to get in touch with them, they see those tunnel gateways in "
+"the \n"
+"netDb and simply send the relevant message to them through one of the "
+"published \n"
+"tunnels. If the peer behind the restricted route wants to reply, it may "
+"do \n"
+"so either directly (if they are willing to expose their IP to the peer) "
+"or \n"
+"indirectly through their outbound tunnels. When the routers that the peer"
+" \n"
+"has direct connections to want to reach it (to forward tunnel messages, "
+"for \n"
+"instance), they simply prioritize their direct connection over the "
+"published \n"
+"tunnel gateway. The concept of 'client routers' simply extends the "
+"restricted \n"
+"route by not publishing any router addresses. Such a router would not "
+"even \n"
+"need to publish their routerInfo in the netDb, merely providing their "
+"self \n"
+"signed routerInfo to the peers that it contacts (necessary to pass the "
+"router's \n"
+"public keys). Both levels of restricted route operation are planned for "
+"I2P \n"
+"2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:617
+msgid ""
+"There are tradeoffs for those behind restricted routes, as they would "
+"likely \n"
+"participate in other people's tunnels less frequently, and the routers "
+"which \n"
+"they are connected to would be able to infer traffic patterns that would "
+"not \n"
+"otherwise be exposed. On the other hand, if the cost of that exposure is "
+"less \n"
+"than the cost of an IP being made available, it may be worthwhile. This, "
+"of \n"
+"course, assumes that the peers that the router behind a restricted route "
+"contacts \n"
+"are not hostile - either the network is large enough that the probability"
+" \n"
+"of using a hostile peer to get connected is small enough, or trusted (and"
+" \n"
+"perhaps temporary) peers are used instead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:629
+msgid "Variable latency"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:630
+msgid ""
+"Even though the bulk of I2P's initial efforts have been on low latency "
+"communication, \n"
+"it was designed with variable latency services in mind from the "
+"beginning. \n"
+"At the most basic level, applications running on top of I2P can offer the"
+" \n"
+"anonymity of medium and high latency communication while still blending "
+"their \n"
+"traffic patterns in with low latency traffic. Internally though, I2P can "
+"offer \n"
+"its own medium and high latency communication through the garlic "
+"encryption \n"
+"- specifying that the message should be sent after a certain delay, at a "
+"certain \n"
+"time, after a certain number of messages have passed, or another mix "
+"strategy. \n"
+"With the layered encryption, only the router that the clove exposed the "
+"delay \n"
+"request would know that the message requires high latency, allowing the "
+"traffic \n"
+"to blend in further with the low latency traffic. Once the transmission "
+"precondition \n"
+"is met, the router holding on to the clove (which itself would likely be "
+"a \n"
+"garlic message) simply forwards it as requested - to a router, to a "
+"tunnel, \n"
+"or, most likely, to a remote client destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:647
+msgid ""
+"There are a substantial number of ways to exploit this capacity for high"
+" \n"
+"latency comm in I2P, but for the moment, doing so has been scheduled for "
+"the \n"
+"I2P 3.0 release. In the meantime, those requiring the anonymity that high"
+" \n"
+"latency comm can offer should look towards the application layer to "
+"provide \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:655
+msgid "Open questions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:657
+msgid "How to get rid of the timing constraint?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:658
+msgid "Can we deal with the sessionTags more efficiently?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:659
+msgid ""
+"What, if any, batching/mixing strategies should be made available on the "
+"tunnels?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:660
+msgid ""
+"What other tunnel peer selection and ordering strategies should be "
+"available?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:663
+msgid "Similar systems"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:665
+msgid ""
+"I2P's architecture builds on the concepts of message oriented middleware,"
+" \n"
+"the topology of DHTs, the anonymity and cryptography of free route "
+"mixnets, \n"
+"and the adaptability of packet switched networking. The value comes not "
+"from \n"
+"novel concepts of algorithms though, but from careful engineering "
+"combining \n"
+"the research results of existing systems and papers. While there are a "
+"few \n"
+"similar efforts worth reviewing, both for technical and functional "
+"comparisons, \n"
+"two in particular are pulled out here - Tor and Freenet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:675
+#, python-format
+msgid "See also the Network Comparisons Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:680
+#: i2p2www/pages/site/docs/how/tech-intro.html:745
+msgid "website"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:682
+msgid ""
+"At first glance, Tor and I2P have many functional and anonymity related \n"
+"similarities. While I2P's development began before we were aware of the "
+"early \n"
+"stage efforts on Tor, many of the lessons of the original onion routing "
+"and \n"
+"ZKS efforts were integrated into I2P's design. Rather than building an "
+"essentially \n"
+"trusted, centralized system with directory servers, I2P has a self "
+"organizing \n"
+"network database with each peer taking on the responsibility of profiling"
+" \n"
+"other routers to determine how best to exploit available resources. "
+"Another \n"
+"key difference is that while both I2P and Tor use layered and ordered "
+"paths \n"
+"(tunnels and circuits/streams), I2P is fundamentally a packet switched "
+"network, \n"
+"while Tor is fundamentally a circuit switched one, allowing I2P to "
+"transparently \n"
+"route around congestion or other network failures, operate redundant "
+"pathways, \n"
+"and load balance the data across available resources. While Tor offers "
+"the \n"
+"useful outproxy functionality by offering integrated outproxy discovery "
+"and \n"
+"selection, I2P leaves such application layer decisions up to applications"
+" \n"
+"running on top of I2P - in fact, I2P has even externalized the TCP-like "
+"streaming \n"
+"library itself to the application layer, allowing developers to "
+"experiment \n"
+"with different strategies, exploiting their domain specific knowledge to "
+"offer \n"
+"better performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:703
+msgid ""
+"From an anonymity perspective, there is much similarity when the core "
+"networks \n"
+"are compared. However, there are a few key differences. When dealing with"
+" \n"
+"an internal adversary or most external adversaries, I2P's simplex tunnels"
+" \n"
+"expose half as much traffic data than would be exposed with Tor's duplex "
+"circuits \n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels. \n"
+"While I2P's peer selection and ordering strategies should sufficiently "
+"address \n"
+"predecessor attacks, should a switch to bidirectional tunnels be "
+"necessary,\n"
+"we could simply build an inbound and outbound tunnel along the same "
+"routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:717
+msgid ""
+"Another anonymity issue comes up in Tor's use of telescopic tunnel "
+"creation, \n"
+"as simple packet counting and timing measurements as the cells in a "
+"circuit \n"
+"pass through an adversary's node exposes statistical information "
+"regarding \n"
+"where the adversary is within the circuit. I2P's unidirectional tunnel "
+"creation \n"
+"with a single message so that this data is not exposed. Protecting the "
+"position \n"
+"in a tunnel is important, as an adversary would otherwise be able to "
+"mount \n"
+"a series of powerful predecessor, intersection, and traffic confirmation "
+"attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:727
+msgid ""
+"Tor's support for a second tier of \"onion proxies\" does offer a non-"
+"trivial \n"
+"degree of anonymity while requiring a low cost of entry, while I2P will "
+"not \n"
+"offer this topology until 2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:733
+msgid ""
+"On the whole, Tor and I2P complement each other in their focus - Tor "
+"works \n"
+"towards offering high speed anonymous Internet outproxying, while I2P "
+"works \n"
+"towards offering a decentralized resilient network in itself. In theory, "
+"both \n"
+"can be used to achieve both purposes, but given limited development "
+"resources, \n"
+"they both have their strengths and weaknesses. The I2P developers have "
+"considered \n"
+"the steps necessary to modify Tor to take advantage of I2P's design, but "
+"concerns \n"
+"of Tor's viability under resource scarcity suggest that I2P's packet "
+"switching \n"
+"architecture will be able to exploit scarce resources more effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:747
+msgid ""
+"Freenet played a large part in the initial stages of I2P's design - "
+"giving \n"
+"proof to the viability of a vibrant pseudonymous community completely "
+"contained \n"
+"within the network, demonstrating that the dangers inherent in outproxies"
+" \n"
+"could be avoided. The first seed of I2P began as a replacement "
+"communication \n"
+"layer for Freenet, attempting to factor out the complexities of a "
+"scalable, \n"
+"anonymous and secure point to point communication from the complexities "
+"of \n"
+"a censorship resistant distributed data store. Over time however, some of"
+" \n"
+"the anonymity and scalability issues inherent in Freenet's algorithms "
+"made \n"
+"it clear that I2P's focus should stay strictly on providing a generic "
+"anonymous \n"
+"communication layer, rather than as a component of Freenet. Over the "
+"years, \n"
+"the Freenet developers have come to see the weaknesses in the older "
+"design, \n"
+"prompting them to suggest that they will require a \"premix\" layer to "
+"offer \n"
+"substantial anonymity. In other words, Freenet needs to run on top of a "
+"mixnet \n"
+"such as I2P or Tor, with \"client nodes\" requesting and publishing data "
+"through \n"
+"the mixnet to the \"server nodes\" which then fetch and store the data "
+"according \n"
+"to Freenet's heuristic distributed data storage algorithms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:766
+msgid ""
+"Freenet's functionality is very complementary to I2P's, as Freenet "
+"natively \n"
+"provides many of the tools for operating medium and high latency systems,"
+" \n"
+"while I2P natively provides the low latency mix network suitable for "
+"offering \n"
+"adequate anonymity. The logic of separating the mixnet from the "
+"censorship-\n"
+"resistant distributed data store still seems self-evident from an "
+"engineering, \n"
+"anonymity, security, and resource allocation perspective, so hopefully "
+"the \n"
+"Freenet team will pursue efforts in that direction, if not simply reusing"
+" \n"
+"(or helping to improve, as necessary) existing mixnets like I2P or Tor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:777
+msgid ""
+"It is worth mentioning that there has recently been discussion and work \n"
+"by the Freenet developers on a \"globally scalable darknet\" using "
+"restricted \n"
+"routes between peers of various trust. While insufficient information has"
+" \n"
+"been made publicly available regarding how such a system would operate "
+"for \n"
+"a full review, from what has been said the anonymity and scalability "
+"claims \n"
+"seem highly dubious. In particular, the appropriateness for use in "
+"hostile \n"
+"regimes against state level adversaries has been tremendously overstated,"
+" \n"
+"and any analysis on the implications of resource scarcity upon the "
+"scalability \n"
+"of the network has seemingly been avoided. Further questions regarding "
+"susceptibility \n"
+"to traffic analysis, trust and other topics do exist, but a more in-depth"
+" \n"
+"review of this \"globally scalable darknet\" will have to wait until the "
+"Freenet \n"
+"team makes more information available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:793
+msgid ""
+"I2P itself doesn't really do much - it simply sends messages to remote "
+"destinations \n"
+"and receives messages targeting local destinations - most of the "
+"interesting \n"
+"work goes on at the layers above it. By itself, I2P could be seen as an "
+"anonymous \n"
+"and secure IP layer, and the bundled streaming"
+" library \n"
+"as an implementation of an anonymous and secure TCP layer on top of it. "
+"Beyond \n"
+"that, I2PTunnel exposes a generic TCP "
+"proxying \n"
+"system for either getting into or out of the I2P network, plus a variety "
+"of \n"
+"network applications provide further functionality for end users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:804
+msgid "Streaming library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:805
+msgid ""
+"The I2P streaming library can be viewed as a generic streaming interface "
+"(mirroring TCP sockets),\n"
+"and the implementation supports a sliding "
+"window protocol\n"
+"with several optimizations, to take into account the high delay over I2P."
+"\n"
+"Individual streams may adjust the maximum packet size and \n"
+"other options, though the default of 4KB compressed seems a reasonable "
+"tradeoff \n"
+"between the bandwidth costs of retransmitting lost messages and the "
+"latency \n"
+"of multiple messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:815
+msgid ""
+"In addition, in consideration of the relatively high cost of subsequent \n"
+"messages, the streaming library's protocol for scheduling and delivering "
+"messages \n"
+"has been optimized to allow individual messages passed to contain as much"
+" \n"
+"information as is available. For instance, a small HTTP transaction "
+"proxied \n"
+"through the streaming library can be completed in a single round trip - "
+"the \n"
+"first message bundles a SYN, FIN and the small payload (an HTTP request "
+"typically \n"
+"fits) and the reply bundles the SYN, FIN, ACK and the small payload (many"
+" \n"
+"HTTP responses fit). While an additional ACK must be transmitted to tell "
+"the \n"
+"HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy "
+"can \n"
+"deliver the full response to the browser immediately."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:828
+msgid ""
+"On the whole, however, the streaming library bears much resemblance to an"
+" \n"
+"abstraction of TCP, with its sliding windows, congestion control "
+"algorithms \n"
+"(both slow start and congestion avoidance), and general packet behavior "
+"(ACK, \n"
+"SYN, FIN, RST, etc)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:835
+msgid "Naming library and addressbook"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:836
+#, python-format
+msgid ""
+"For more information see the Naming and "
+"Addressbook page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:840
+#: i2p2www/pages/site/docs/how/tech-intro.html:914
+#: i2p2www/pages/site/docs/how/tech-intro.html:961
+#: i2p2www/pages/site/docs/how/tech-intro.html:993
+#: i2p2www/pages/site/docs/how/tech-intro.html:1001
+#: i2p2www/pages/site/docs/how/tech-intro.html:1009
+#: i2p2www/pages/site/docs/how/tech-intro.html:1019
+#: i2p2www/pages/site/docs/how/tech-intro.html:1027
+#: i2p2www/pages/site/docs/how/tech-intro.html:1049
+#, python-format
+msgid "Developed by: %(dev)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:842
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning"
+" \n"
+"with advocates across the spectrum of possibilities. However, given I2P's"
+" \n"
+"inherent demand for secure communication and decentralized operation, the"
+" \n"
+"traditional DNS-style naming system is clearly out, as are \"majority "
+"rules\" \n"
+"voting systems. Instead, I2P ships with a generic naming library and a "
+"base \n"
+"implementation designed to work off a local name to destination mapping, "
+"as \n"
+"well as an optional add-on application called the \"addressbook\". The "
+"addressbook \n"
+"is a web-of-trust-driven secure, distributed, and human readable naming "
+"system, \n"
+"sacrificing only the call for all human readable names to be globally "
+"unique \n"
+"by mandating only local uniqueness. While all messages in I2P are "
+"cryptographically \n"
+"addressed by their destination, different people can have local "
+"addressbook \n"
+"entries for \"Alice\" which refer to different destinations. People can "
+"still \n"
+"discover new names by importing published addressbooks of peers specified"
+" \n"
+"in their web of trust, by adding in the entries provided through a third "
+"party, \n"
+"or (if some people organize a series of published addressbooks using a "
+"first \n"
+"come first serve registration system) people can choose to treat these "
+"addressbooks \n"
+"as name servers, emulating traditional DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:862
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage \n"
+"done by hijacking a site can be tremendous - and insecure destinations "
+"have \n"
+"no value. DNSsec itself still falls back on registrars and certificate "
+"authorities, \n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the \n"
+"reply spoofed, as they are encrypted to the destination's public keys, "
+"and \n"
+"a destination itself is just a pair of public keys and a certificate. "
+"DNS-style \n"
+"systems on the other hand allow any of the name servers on the lookup "
+"path \n"
+"to mount simple denial of service and spoofing attacks. Adding on a "
+"certificate \n"
+"authenticating the responses as signed by some centralized certificate "
+"authority \n"
+"would address many of the hostile nameserver issues but would leave open "
+"replay \n"
+"attacks as well as hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:876
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness \n"
+"of Sybil attacks in anonymous systems - the attacker can simply create an"
+" \n"
+"arbitrarily high number of peers and \"vote\" with each to take over a "
+"given \n"
+"name. Proof-of-work methods can be used to make identity non-free, but as"
+" \n"
+"the network grows the load required to contact everyone to conduct online"
+" \n"
+"voting is implausible, or if the full network is not queried, different "
+"sets \n"
+"of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:886
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of"
+" \n"
+"a naming system out of the (IP-like) communication layer. The bundled "
+"naming \n"
+"library includes a simple service provider interface which alternate "
+"naming \n"
+"systems can plug into, allowing end users to drive what sort of naming "
+"tradeoffs \n"
+"they prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:895
+msgid ""
+"The old Syndie bundled with I2P has been replaced by the new Syndie which"
+"\n"
+"is distributed separately. For more information see the Syndie\n"
+"pages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:901
+msgid ""
+"Syndie is a safe, anonymous blogging / content publication / content "
+"aggregation \n"
+"system. It lets you create information, share it with others, and read "
+"posts \n"
+"from those you're interested in, all while taking into consideration your"
+" \n"
+"needs for security and anonymity. Rather than building its own content "
+"distribution \n"
+"network, Syndie is designed to run on top of existing networks, "
+"syndicating \n"
+"content through eepsites, Tor hidden services, Freenet freesites, normal "
+"websites, \n"
+"usenet newsgroups, email lists, RSS feeds, etc. Data published with "
+"Syndie \n"
+"is done so as to offer pseudonymous authentication to anyone reading or "
+"archiving \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:916
+msgid ""
+"I2PTunnel is probably I2P's most popular and versatile client "
+"application, \n"
+"allowing generic proxying both into and out of the I2P network. I2PTunnel"
+" \n"
+"can be viewed as four separate proxying applications - a \"client\" which"
+" receives \n"
+"inbound TCP connections and forwards them to a given I2P destination, an "
+"\"httpclient\" \n"
+"(aka \"eepproxy\") which acts like an HTTP proxy and forwards the "
+"requests to \n"
+"the appropriate I2P destination (after querying the naming service if "
+"necessary), \n"
+"a \"server\" which receives inbound I2P streaming connections on a "
+"destination \n"
+"and forwards them to a given TCP host+port, and an \"httpserver\" which "
+"extends \n"
+"the \"server\" by parsing the HTTP request and responses to allow safer "
+"operation. \n"
+"There is an additional \"socksclient\" application, but its use is not "
+"encouraged \n"
+"for reasons previously mentioned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:930
+msgid ""
+"I2P itself is not an outproxy network - the anonymity and security "
+"concerns \n"
+"inherent in a mix net which forwards data into and out of the mix have "
+"kept \n"
+"I2P's design focused on providing an anonymous network which capable of "
+"meeting \n"
+"the user's needs without requiring external resources. However, the "
+"I2PTunnel \n"
+"\"httpclient\" application offers a hook for outproxying - if the "
+"hostname requested \n"
+"doesn't end in \".i2p\", it picks a random destination from a user-"
+"provided \n"
+"set of outproxies and forwards the request to them. These destinations "
+"are \n"
+"simply I2PTunnel \"server\" instances run by volunteers who have "
+"explicitly \n"
+"chosen to run outproxies - no one is an outproxy by default, and running "
+"an \n"
+"outproxy doesn't automatically tell other people to proxy through you. "
+"While \n"
+"outproxies do have inherent weaknesses, they offer a simple proof of "
+"concept \n"
+"for using I2P and provide some functionality under a threat model which "
+"may \n"
+"be sufficient for some users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:946
+msgid ""
+"I2PTunnel enables most of the applications in use. An \"httpserver\" "
+"pointing \n"
+"at a webserver lets anyone run their own anonymous website (or "
+"\"eepsite\") \n"
+"- a webserver is bundled with I2P for this purpose, but any webserver can"
+" \n"
+"be used. Anyone may run a \"client\" pointing at one of the anonymously "
+"hosted \n"
+"IRC servers, each of which are running a \"server\" pointing at their "
+"local \n"
+"IRCd and communicating between IRCds over their own \"client\" tunnels. "
+"End \n"
+"users also have \"client\" tunnels pointing at I2Pmail's \n"
+"POP3 and SMTP destinations (which in turn are simply \"server\" instances"
+" pointing \n"
+"at POP3 and SMTP servers), as well as \"client\" tunnels pointing at "
+"I2P's CVS \n"
+"server, allowing anonymous development. At times people have even run "
+"\"client\" \n"
+"proxies to access the \"server\" instances pointing at an NNTP server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:963
+msgid ""
+"i2p-bt is a port of the mainline python BitTorrent client to run both the"
+" \n"
+"tracker and peer communication over I2P. Tracker requests are forwarded "
+"through \n"
+"the eepproxy to eepsites specified in the torrent file while tracker "
+"responses \n"
+"refer to peers by their destination explicitly, allowing i2p-bt to open "
+"up \n"
+"a streaming lib connection to query them "
+"for \n"
+"blocks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:972
+msgid ""
+"In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making"
+" \n"
+"a few modifications as necessary to strip any anonymity-compromising "
+"information \n"
+"from the application and to take into consideration the fact that IPs "
+"cannot \n"
+"be used for identifying peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:980
+msgid ""
+"I2PSnark developed: jrandom, et al, ported from mjw's Snark client"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:986
+msgid ""
+"Bundled with the I2P install, I2PSnark offers a simple anonymous "
+"BitTorrent \n"
+"client with multitorrent capabilities, exposing all of the functionality "
+"through \n"
+"a plain HTML web interface."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:995
+#, python-format
+msgid ""
+"Robert is a Bittorrent client written in Python.\n"
+"It is hosted on http://%(bob)s/Robert.html "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1003
+#, python-format
+msgid ""
+"PyBit is a Bittorrent client written in Python.\n"
+"It is hosted on %(pybit)s "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1011
+msgid ""
+"I2Phex is a fairly direct port of the Phex Gnutella filesharing client to"
+" \n"
+"run entirely on top of I2P. While it has disabled some of Phex's "
+"functionality, \n"
+"such as integration with Gnutella webcaches, the basic file sharing and "
+"chatting \n"
+"system is fully functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1021
+msgid ""
+"iMule is a fairly direct port of the aMule filesharing client \n"
+"running entirely inside I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1029
+#, python-format
+msgid ""
+"I2Pmail is more a service than an application - postman offers both "
+"internal \n"
+"and external email with POP3 and SMTP service through I2PTunnel instances"
+" \n"
+"accessing a series of components developed with mastiejaner, allowing "
+"people \n"
+"to use their preferred mail clients to send and receive mail "
+"pseudonymously. \n"
+"However, as most mail clients expose substantial identifying information,"
+" \n"
+"I2P bundles susi23's web based susimail client which has been built "
+"specifically \n"
+"with I2P's anonymity needs in mind. The I2Pmail/mail.i2p service offers "
+"transparent \n"
+"virus filtering as well as denial of service prevention with hashcash "
+"augmented \n"
+"quotas. In addition, each user has control of their batching strategy "
+"prior \n"
+"to delivery through the mail.i2p outproxies, which are separate from the "
+"mail.i2p \n"
+"SMTP and POP3 servers - both the outproxies and inproxies communicate "
+"with \n"
+"the mail.i2p SMTP and POP3 servers through I2P itself, so compromising "
+"those \n"
+"non-anonymous locations does not give access to the mail accounts or "
+"activity \n"
+"patterns of the user. At the moment the developers work on a "
+"decentralized \n"
+"mailsystem, called \"v2mail\". More information can be found on the "
+"eepsite \n"
+"%(postman)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1051
+msgid ""
+"I2P-Bote is a distributed e-mail application. It does not use the "
+"traditional\n"
+"e-mail concept of sending an e-mail to a server and retrieving it from a "
+"server.\n"
+"Instead, it uses a Kademlia Distributed Hash Table to store mails.\n"
+"One user can push a mail into the DHT, while another can request the "
+"e-mail from the DHT.\n"
+"And all the mails sent within the I2P-Bote network are automatically "
+"encrypted end-to-end. X = g^x mod"
+" p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:166
+msgid "Alice sends X to Bob (Message 1)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:167
+msgid ""
+"Bob generates a secret integer y. He then calculates Y = g^y mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:168
+msgid "Bob sends Y to Alice.(Message 2)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:169
+msgid "Alice can now compute sessionKey = Y^x mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:170
+msgid "Bob can now compute sessionKey = X^y mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:171
+msgid ""
+"Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:173
+#, python-format
+msgid ""
+"The sessionKey is then used to exchange identities in Message 3 "
+"and Message 4.\n"
+"The exponent (x and y) length for the DH exchange is documented on the\n"
+"cryptography page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:193
+msgid "Message 1 (Session Request)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:194
+#, python-format
+msgid ""
+"This is the DH request. Alice already has Bob's\n"
+"Router "
+"Identity,\n"
+"IP address, and port, as contained in his\n"
+"Router Info,\n"
+"which was published to the\n"
+"network database.\n"
+"Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:207
+#: i2p2www/pages/site/docs/transport/ntcp.html:250
+#: i2p2www/pages/site/docs/transport/ntcp.html:332
+#: i2p2www/pages/site/docs/transport/ntcp.html:437
+msgid "Size:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:209
+msgid "Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:227
+msgid "256 byte X from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:229
+msgid "SHA256 Hash(X) xored with SHA256 Hash(Bob's `RouterIdentity`)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:236
+#: i2p2www/pages/site/docs/transport/ntcp.html:319
+#: i2p2www/pages/site/docs/transport/ntcp.html:398
+msgid "Notes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:237
+msgid ""
+"Bob verifies HXxorHI using his own router hash. If it does not verify,\n"
+"Alice has contacted the wrong router, and Bob drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:243
+msgid "Message 2 (Session Created)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:244
+msgid "This is the DH reply. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:252
+#: i2p2www/pages/site/docs/transport/ntcp.html:334
+#: i2p2www/pages/site/docs/transport/ntcp.html:439
+msgid "Unencrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:274
+#: i2p2www/pages/site/docs/transport/ntcp.html:310
+msgid "256 byte Y from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:276
+msgid "SHA256 Hash(X concatenated with Y)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:279
+#: i2p2www/pages/site/docs/transport/ntcp.html:364
+msgid "4 byte timestamp (seconds since the epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:281
+msgid "12 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:285
+#: i2p2www/pages/site/docs/transport/ntcp.html:376
+#: i2p2www/pages/site/docs/transport/ntcp.html:466
+msgid "Encrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:312
+#, python-format
+msgid ""
+"48 bytes AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of Y as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:320
+msgid ""
+"Alice may drop the connection if the clock skew with Bob is too high as "
+"calculated using tsB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:325
+msgid "Message 3 (Session Confirm A)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:326
+msgid ""
+"This contains Alice's router identity, and a signature of the critical "
+"data. Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:360
+msgid "2 byte size of Alice's router identity to follow (387+)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:362
+msgid "Alice's 387+ byte `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:366
+#: i2p2www/pages/site/docs/transport/ntcp.html:461
+msgid "0-15 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:368
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Bob's `RouterIdentity`, tsA, tsB.\n"
+" Alice signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in her `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:389
+#, python-format
+msgid ""
+"448 bytes AES encrypted using the DH"
+" session key and\n"
+" the last 16 bytes of HXxorHI (i.e., the last 16 bytes "
+"of message #1) as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:400
+msgid "Bob verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:403
+msgid ""
+"Bob may drop the connection if the clock skew with Alice is too high as "
+"calculated using tsA."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:406
+msgid ""
+"Alice will use the last 16 bytes of the encrypted contents of this "
+"message as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:430
+msgid "Message 4 (Session Confirm B)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:431
+msgid "This is a signature of the critical data. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:455
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Alice's `RouterIdentity`, tsA, tsB.\n"
+" Bob signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in his `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:479
+#, python-format
+msgid ""
+"Data AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of the encrypted contents of message "
+"#2 as the IV\n"
+" 48 bytes for a DSA signature, may vary for other "
+"signature types"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:488
+msgid "Alice verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:491
+msgid ""
+"Bob will use the last 16 bytes of the encrypted contents of this message "
+"as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:506
+msgid "After Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:507
+msgid ""
+"The connection is established, and standard or time sync messages may be "
+"exchanged.\n"
+"All subsequent messages are AES encrypted using the negotiated DH session"
+" key.\n"
+"Alice will use the last 16 bytes of the encrypted contents of message #3 "
+"as the next IV.\n"
+"Bob will use the last 16 bytes of the encrypted contents of message #4 as"
+" the next IV."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:516
+msgid "Check Connection Message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:517
+msgid ""
+"Alternately, when Bob receives a connection, it could be a\n"
+"check connection (perhaps prompted by Bob asking for someone\n"
+"to verify his listener).\n"
+"Check Connection is not currently used.\n"
+"However, for the record, check connections are formatted as follows.\n"
+"A check info connection will receive 256 bytes containing:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:526
+msgid "32 bytes of uninterpreted, ignored data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:527
+msgid "1 byte size"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:528
+msgid ""
+"that many bytes making up the local router's IP address (as reached by "
+"the remote side)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:529
+msgid "2 byte port number that the local router was reached on"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:530
+msgid ""
+"4 byte i2p network time as known by the remote side (seconds since the "
+"epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:531
+msgid "uninterpreted padding data, up to byte 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:532
+msgid ""
+"xor of the local router's identity hash and the SHA256 of bytes 32 "
+"through bytes 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:535
+msgid "Check connection is completely disabled as of release 0.9.12."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:539
+msgid "Discussion"
+msgstr "Müzakirə"
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:540
+#, python-format
+msgid "Now on the NTCP Discussion Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:546
+msgid "The maximum message size should be increased to approximately 32 KB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:550
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then.\n"
+"However, there is currently no provision for padding beyond the next "
+"16-byte boundary,\n"
+"to create a limited number of message sizes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:558
+msgid ""
+"Memory utilization (including that of the kernel) for NTCP should be "
+"compared to that for SSU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:562
+msgid ""
+"Can the establishment messages be randomly padded somehow, to frustrate\n"
+"identification of I2P traffic based on initial packet sizes?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:2
+msgid "Secure Semireliable UDP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:7
+#, python-format
+msgid ""
+"SSU (also called \"UDP\" in much of the I2P documentation and user "
+"interfaces)\n"
+"is one of three transports currently "
+"implemented in I2P.\n"
+"The others are NTCP and NTCP2."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:13
+msgid ""
+"SSU was introduced in I2P release 0.6.\n"
+"In a standard I2P installation, the router uses both NTCP and SSU for "
+"outbound connections.\n"
+"SSU-over-IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:19
+msgid ""
+"SSU is called \"semireliable\" because it will repeatedly retransmit "
+"unacknowledged messages,\n"
+"but only up to a maximum number of times. After that, the message is "
+"dropped."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:24
+msgid "SSU Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:26
+msgid ""
+"Like the NTCP transport, SSU provides reliable, encrypted, connection-"
+"oriented, point-to-point data transport.\n"
+"Unique to SSU, it also provides IP detection and NAT traversal services, "
+"including:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:32
+msgid ""
+"Cooperative NAT/Firewall traversal using introducers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:33
+msgid ""
+"Local IP detection by inspection of incoming packets and peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:34
+msgid ""
+"Communication of firewall status and local IP, and changes to either to "
+"NTCP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:46
+#: i2p2www/pages/site/docs/transport/ssu.html:60
+#: i2p2www/pages/site/docs/transport/ssu.html:61
+#: i2p2www/pages/site/docs/transport/ssu.html:63
+#: i2p2www/pages/site/docs/transport/ssu.html:66
+#: i2p2www/pages/site/docs/transport/ssu.html:70
+#: i2p2www/pages/site/docs/transport/ssu.html:71
+#: i2p2www/pages/site/docs/transport/ssu.html:77
+msgid "See below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:84
+msgid "Protocol Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:86
+msgid "Congestion control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:88
+msgid ""
+"SSU's need for only semireliable delivery, TCP-friendly operation,\n"
+"and the capacity for high throughput allows a great deal of latitude in\n"
+"congestion control. The congestion control algorithm outlined below is\n"
+"meant to be both efficient in bandwidth as well as simple to implement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:95
+msgid ""
+"Packets are scheduled according to the router's policy, taking care\n"
+"not to exceed the router's outbound capacity or to exceed the measured \n"
+"capacity of the remote peer. The measured capacity operates along the\n"
+"lines of TCP's slow start and congestion avoidance, with additive "
+"increases\n"
+"to the sending capacity and multiplicative decreases in face of "
+"congestion.\n"
+"Unlike for TCP, routers may give up on some messages after\n"
+"a given period or number of retransmissions while continuing to transmit"
+" \n"
+"other messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:106
+msgid ""
+"The congestion detection techniques vary from TCP as well, since each \n"
+"message has its own unique and nonsequential identifier, and each message"
+"\n"
+"has a limited size - at most, 32KB. To efficiently transmit this "
+"feedback\n"
+"to the sender, the receiver periodically includes a list of fully ACKed \n"
+"message identifiers and may also include bitfields for partially received"
+"\n"
+"messages, where each bit represents the reception of a fragment. If \n"
+"duplicate fragments arrive, the message should be ACKed again, or if the\n"
+"message has still not been fully received, the bitfield should be \n"
+"retransmitted with any new updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:118
+msgid ""
+"The current implementation does not pad the packets to\n"
+"any particular size, but instead just places a single message fragment "
+"into\n"
+"a packet and sends it off (careful not to exceed the MTU)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:125
+msgid ""
+"As of router version 0.8.12,\n"
+"two MTU values are used for IPv4: 620 and 1484.\n"
+"The MTU value is adjusted based on the percentage of packets that are "
+"retransmitted."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:131
+msgid ""
+"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n"
+"the payload portion after the 28-byte IP/UDP header is a multiple of\n"
+"16 bytes, for encryption purposes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:137
+msgid ""
+"For the small MTU value, it is desirable to pack a 2646-byte\n"
+"Variable Tunnel Build Message efficiently into multiple packets;\n"
+"with a 620-byte MTU, it fits into 5 packets with nicely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:143
+msgid ""
+"Based on measurements, 1492 fits nearly all reasonably small I2NP "
+"messages\n"
+"(larger I2NP messages may be up to 1900 to 4500 bytes, which isn't going "
+"to fit\n"
+"into a live network MTU anyway)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:149
+msgid ""
+"The MTU values were 608 and 1492 for releases 0.8.9 - 0.8.11.\n"
+"The large MTU was 1350 prior to release 0.8.9."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:154
+msgid ""
+"The maximum receive packet size\n"
+"is 1571 bytes as of release 0.8.12.\n"
+"For releases 0.8.9 - 0.8.11 it was 1535 bytes.\n"
+"Prior to release 0.8.9 it was 2048 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:161
+msgid ""
+"As of release 0.9.2, if a router's network interface MTU is less than "
+"1484,\n"
+"it will publish that in the network database, and other routers should\n"
+"honor that when a connection is established."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:167
+msgid ""
+"For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n"
+"so we use an MTU where (MTN % 16 == 0), which is true for 1280.\n"
+"The maximum IPv6 MTU is 1488.\n"
+" (max was 1472 prior to version 0.9.28)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:174
+msgid "Message Size Limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:175
+msgid ""
+"While the maximum message size is nominally 32KB, the practical\n"
+"limit differs. The protocol limits the number of fragments to 7 bits, or "
+"128.\n"
+"The current implementation, however, limits each message to a maximum of "
+"64 fragments,\n"
+"which is sufficient for 64 * 534 = 33.3 KB when using the 608 MTU.\n"
+"Due to overhead for bundled LeaseSets and session keys, the practical "
+"limit\n"
+"at the application level is about 6KB lower, or about 26KB.\n"
+"Further work is necessary to raise the UDP transport limit above 32KB.\n"
+"For connections using the larger MTU, larger messages are possible."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:197
+msgid "Keys"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:199
+msgid ""
+"All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs.\n"
+"When Alice originates a session with Bob,\n"
+"the MAC and session keys are negotiated as part of the DH exchange, and "
+"are then used\n"
+"for the HMAC and encryption, respectively. During the DH exchange, \n"
+"Bob's publicly knowable introKey is used for the MAC and encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:207
+msgid ""
+"Both the initial message and the subsequent\n"
+"reply use the introKey of the responder (Bob) - the responder does \n"
+"not need to know the introKey of the requester (Alice). The DSA \n"
+"signing key used by Bob should already be known to Alice when she \n"
+"contacts him, though Alice's DSA key may not already be known by \n"
+"Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:216
+msgid ""
+"Upon receiving a message, the receiver checks the \"from\" IP address and"
+" port\n"
+"with all established sessions - if there are matches,\n"
+"that session's MAC keys are tested in the HMAC. If none\n"
+"of those verify or if there are no matching IP addresses, the \n"
+"receiver tries their introKey in the MAC. If that does not verify,\n"
+"the packet is dropped. If it does verify, it is interpreted \n"
+"according to the message type, though if the receiver is overloaded,\n"
+"it may be dropped anyway."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:227
+msgid ""
+"If Alice and Bob have an established session, but Alice loses the \n"
+"keys for some reason and she wants to contact Bob, she may at any \n"
+"time simply establish a new session through the SessionRequest and\n"
+"related messages. If Bob has lost the key but Alice does not know\n"
+"that, she will first attempt to prod him to reply, by sending a \n"
+"DataMessage with the wantReply flag set, and if Bob continually \n"
+"fails to reply, she will assume the key is lost and reestablish a \n"
+"new one."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:238
+#, python-format
+msgid ""
+"For the DH key agreement,\n"
+"RFC3526 2048bit\n"
+"MODP group (#14) is used:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:248
+#, python-format
+msgid ""
+"These are the same p and g used for I2P's\n"
+"ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:253
+msgid "Replay prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:255
+msgid ""
+"Replay prevention at the SSU layer occurs by rejecting packets \n"
+"with exceedingly old timestamps or those which reuse an IV. To\n"
+"detect duplicate IVs, a sequence of Bloom filters are employed to\n"
+"\"decay\" periodically so that only recently added IVs are detected."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:262
+msgid ""
+"The messageIds used in DataMessages are defined at layers above\n"
+"the SSU transport and are passed through transparently. These IDs\n"
+"are not in any particular order - in fact, they are likely to be\n"
+"entirely random. The SSU layer makes no attempt at messageId \n"
+"replay prevention - higher layers should take that into account."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:270
+msgid "Addressing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:272
+msgid ""
+"To contact an SSU peer, one of two sets of information is necessary:\n"
+"a direct address, for when the peer is publicly reachable, or an\n"
+"indirect address, for using a third party to introduce the peer.\n"
+"There is no restriction on the number of addresses a peer may have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:284
+msgid ""
+"Each of the addresses may also expose a series of options - special\n"
+"capabilities of that particular peer. For a list of available\n"
+"capabilities, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:290
+#, python-format
+msgid ""
+"The addresses, options, and capabilities are published in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:295
+msgid "Direct Session Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:296
+msgid ""
+"Direct session establishment is used when no third party is required for "
+"NAT traversal.\n"
+"The message sequence is as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:301
+msgid "Connection establishment (direct)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:302
+msgid ""
+"Alice connects directly to Bob.\n"
+"IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:317
+#, python-format
+msgid ""
+"After the SessionConfirmed message is received, Bob sends a small\n"
+"DeliveryStatus message\n"
+"as a confirmation.\n"
+"In this message, the 4-byte message ID is set to a random number, and the"
+"\n"
+"8-byte \"arrival time\" is set to the current network-wide ID, which is 2"
+"\n"
+"(i.e. 0x0000000000000002)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:326
+#, python-format
+msgid ""
+"After the status message is sent, the peers usually exchange\n"
+"DatabaseStore messages\n"
+"containing their\n"
+"RouterInfos,\n"
+"however, this is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:335
+msgid ""
+"It does not appear that the type of the status message or its contents "
+"matters.\n"
+"It was originally added becasue the DatabaseStore message was delayed\n"
+"several seconds; since the store is now sent immediately, perhaps\n"
+"the status message can be eliminated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:344
+msgid ""
+"Introduction keys are delivered through an external channel \n"
+"(the network database, where they are identical to the router Hash for "
+"now)\n"
+"and must be used when establishing a session key. For the indirect\n"
+"address, the peer must first contact the relayhost and ask them for\n"
+"an introduction to the peer known at that relayhost under the given\n"
+"tag. If possible, the relayhost sends a message to the addressed\n"
+"peer telling them to contact the requesting peer, and also gives \n"
+"the requesting peer the IP and port on which the addressed peer is\n"
+"located. In addition, the peer establishing the connection must \n"
+"already know the public keys of the peer they are connecting to (but\n"
+"not necessary to any intermediary relay peer)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:358
+msgid ""
+"Indirect session establishment by means of a third party introduction\n"
+"is necessary for efficient NAT traversal. Charlie, a router behind a\n"
+"NAT or firewall which does not allow unsolicited inbound UDP packets,\n"
+"first contacts a few peers, choosing some to serve as introducers. Each\n"
+"of these peers (Bob, Bill, Betty, etc) provide Charlie with an "
+"introduction\n"
+"tag - a 4 byte random number - which he then makes available to the "
+"public\n"
+"as methods of contacting him. Alice, a router who has Charlie's "
+"published\n"
+"contact methods, first sends a RelayRequest packet to one or more of the"
+" \n"
+"introducers, asking each to introduce her to Charlie (offering the \n"
+"introduction tag to identify Charlie). Bob then forwards a RelayIntro\n"
+"packet to Charlie including Alice's public IP and port number, then sends"
+"\n"
+"Alice back a RelayResponse packet containing Charlie's public IP and port"
+"\n"
+"number. When Charlie receives the RelayIntro packet, he sends off a "
+"small\n"
+"random packet to Alice's IP and port (poking a hole in his NAT/firewall),"
+"\n"
+"and when Alice receives Bob's RelayResponse packet, she begins a new \n"
+"full direction session establishment with the specified IP and port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:385
+msgid "Connection establishment (indirect using an introducer)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:387
+msgid "Alice first connects to introducer Bob, who relays the request to Charlie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:405
+msgid ""
+"After the hole punch, the session is established between Alice and "
+"Charlie as in a direct establishment."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:419
+msgid "Peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:421
+msgid ""
+"The automation of collaborative reachability testing for peers is\n"
+"enabled by a sequence of PeerTest messages. With its proper \n"
+"execution, a peer will be able to determine their own reachability\n"
+"and may update its behavior accordingly. The testing process is \n"
+"quite simple:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:440
+msgid ""
+"Each of the PeerTest messages carry a nonce identifying the\n"
+"test series itself, as initialized by Alice. If Alice doesn't \n"
+"get a particular message that she expects, she will retransmit\n"
+"accordingly, and based upon the data received or the messages\n"
+"missing, she will know her reachability. The various end states\n"
+"that may be reached are as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:450
+msgid ""
+"If she doesn't receive a response from Bob, she will retransmit\n"
+"up to a certain number of times, but if no response ever arrives,\n"
+"she will know that her firewall or NAT is somehow misconfigured, \n"
+"rejecting all inbound UDP packets even in direct response to an\n"
+"outbound packet. Alternately, Bob may be down or unable to get \n"
+"Charlie to reply."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:459
+msgid ""
+"If Alice doesn't receive a PeerTest message with the \n"
+"expected nonce from a third party (Charlie), she will retransmit\n"
+"her initial request to Bob up to a certain number of times, even\n"
+"if she has received Bob's reply already. If Charlie's first message \n"
+"still doesn't get through but Bob's does, she knows that she is\n"
+"behind a NAT or firewall that is rejecting unsolicited connection\n"
+"attempts and that port forwarding is not operating properly (the\n"
+"IP and port that Bob offered up should be forwarded)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:470
+msgid ""
+"If Alice receives Bob's PeerTest message and both of Charlie's\n"
+"PeerTest messages but the enclosed IP and port numbers in Bob's \n"
+"and Charlie's second messages don't match, she knows that she is \n"
+"behind a symmetric NAT, rewriting all of her outbound packets with\n"
+"different 'from' ports for each peer contacted. She will need to\n"
+"explicitly forward a port and always have that port exposed for \n"
+"remote connectivity, ignoring further port discovery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:480
+msgid ""
+"If Alice receives Charlie's first message but not his second,\n"
+"she will retransmit her PeerTest message to Charlie up to a \n"
+"certain number of times, but if no response is received she knows\n"
+"that Charlie is either confused or no longer online."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:488
+msgid ""
+"Alice should choose Bob arbitrarily from known peers who seem\n"
+"to be capable of participating in peer tests. Bob in turn should\n"
+"choose Charlie arbitrarily from peers that he knows who seem to be\n"
+"capable of participating in peer tests and who are on a different\n"
+"IP from both Bob and Alice. If the first error condition occurs\n"
+"(Alice doesn't get PeerTest messages from Bob), Alice may decide\n"
+"to designate a new peer as Bob and try again with a different nonce."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:498
+msgid ""
+"Alice's introduction key is included in all of the PeerTest \n"
+"messages so that she doesn't need to already have an established\n"
+"session with Bob and so that Charlie can contact her without knowing\n"
+"any additional information. Alice may go on to establish a session\n"
+"with either Bob or Charlie, but it is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:526
+msgid "Transmission window, ACKs and Retransmissions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:527
+#, python-format
+msgid ""
+"The DATA message may contain ACKs of full messages and\n"
+"partial ACKs of individual fragments of a message. See\n"
+"the data message section of\n"
+"the protocol specification page\n"
+"for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:535
+#, python-format
+msgid ""
+"The details of windowing, ACK, and retransmission strategies are not "
+"specified\n"
+"here. See the Java code for the current implementation.\n"
+"During the establishment phase, and for peer testing, routers\n"
+"should implement exponential backoff for retransmission.\n"
+"For an established connection, routers should implement\n"
+"an adjustable transmission window, RTT estimate and timeout, similar to "
+"TCP\n"
+"or streaming.\n"
+"See the code for initial, min and max parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:547
+msgid "Security"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:548
+msgid ""
+"UDP source addresses may, of course, be spoofed.\n"
+"Additionally, the IPs and ports contained inside specific\n"
+"SSU messages (RelayRequest, RelayResponse, RelayIntro, PeerTest)\n"
+"may not be legitimate.\n"
+"Also, certain actions and responses may need to be rate-limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:556
+msgid ""
+"The details of validation are not specified\n"
+"here. Implementers should add defenses where appropriate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:562
+msgid "Peer capabilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:566
+msgid ""
+"If the peer address contains the 'B' capability, that means \n"
+"they are willing and able to participate in peer tests as\n"
+"a 'Bob' or 'Charlie'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:578
+msgid ""
+"If the peer address contains the 'C' capability, that means\n"
+"they are willing and able to serve as an introducer - serving\n"
+"as a Bob for an otherwise unreachable Alice."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:587
+msgid ""
+"Analysis of current SSU performance, including assessment of window size "
+"adjustment\n"
+"and other parameters, and adjustment of the protocol implementation to "
+"improve\n"
+"performance, is a topic for future work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:593
+msgid ""
+"The current implementation repeatedly sends acknowledgments for the same "
+"packets,\n"
+"which unnecessarily increases overhead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:598
+msgid ""
+"The default small MTU value of 620 should be analyzed and possibly "
+"increased.\n"
+"The current MTU adjustment strategy should be evaluated.\n"
+"Does a streaming lib 1730-byte packet fit in 3 small SSU packets? "
+"Probably not."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:604
+msgid "The protocol should be extended to exchange MTUs during the setup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:608
+msgid "Rekeying is currently unimplemented and may never be."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:612
+msgid ""
+"The potential use of the 'challenge' fields in RelayIntro and "
+"RelayResponse,\n"
+"and use of the padding field in SessionRequest and SessionCreated, is "
+"undocumented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:617
+msgid ""
+"Instead of a single fragment per packet, a more efficient\n"
+"strategy may be to bundle multiple message fragments into the same "
+"packet,\n"
+"so long as it doesn't exceed the MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:623
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:629
+msgid ""
+"Why are introduction keys the same as the router hash, should it be "
+"changed, would there be any benefit?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:633
+msgid "Capacities appear to be unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:637
+msgid ""
+"Signed-on times in SessionCreated and SessionConfirmed appear to be "
+"unused or unverified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:642
+msgid "Implementation Diagram"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:643
+msgid ""
+"This diagram\n"
+"should accurately reflect the current implementation, however there may "
+"be small differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:651
+msgid "Now on the SSU specification page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:2
+msgid "Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:3
+msgid "October 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:7
+msgid "This page documents the current tunnel implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:9
+msgid "Tunnel overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:11
+msgid ""
+"Within I2P, messages are passed in one direction through a virtual\n"
+"tunnel of peers, using whatever means are available to pass the \n"
+"message on to the next hop. Messages arrive at the tunnel's \n"
+"gateway, get bundled up and/or fragmented into fixed-size tunnel "
+"messages, \n"
+"and are forwarded on to the next hop in the tunnel, which processes and "
+"verifies\n"
+"the validity of the message and sends it on to the next hop, and so on, "
+"until\n"
+"it reaches the tunnel endpoint. That endpoint takes the messages\n"
+"bundled up by the gateway and forwards them as instructed - either\n"
+"to another router, to another tunnel on another router, or locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:23
+msgid ""
+"Tunnels all work the same, but can be segmented into two different\n"
+"groups - inbound tunnels and outbound tunnels. The inbound tunnels\n"
+"have an untrusted gateway which passes messages down towards the \n"
+"tunnel creator, which serves as the tunnel endpoint. For outbound \n"
+"tunnels, the tunnel creator serves as the gateway, passing messages\n"
+"out to the remote endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:32
+msgid ""
+"The tunnel's creator selects exactly which peers will participate\n"
+"in the tunnel, and provides each with the necessary configuration\n"
+"data. They may have any number of hops.\n"
+"It is the intent to make\n"
+"it hard for either participants or third parties to determine the length "
+"of \n"
+"a tunnel, or even for colluding participants to determine whether they "
+"are a\n"
+"part of the same tunnel at all (barring the situation where colluding "
+"peers are\n"
+"next to each other in the tunnel)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:43
+msgid ""
+"In practice, a series of tunnel pools are used for different\n"
+"purposes - each local client destination has its own set of inbound\n"
+"tunnels and outbound tunnels, configured to meet its anonymity and\n"
+"performance needs. In addition, the router itself maintains a series\n"
+"of pools for participating in the network database and for managing\n"
+"the tunnels themselves."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:52
+msgid ""
+"I2P is an inherently packet switched network, even with these \n"
+"tunnels, allowing it to take advantage of multiple tunnels running \n"
+"in parallel, increasing resilience and balancing load. Outside of\n"
+"the core I2P layer, there is an optional end to end streaming library \n"
+"available for client applications, exposing TCP-esque operation,\n"
+"including message reordering, retransmission, congestion control, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:61
+#, python-format
+msgid ""
+"An overview of I2P tunnel terminology is\n"
+"on the tunnel overview page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:66
+msgid "Tunnel Operation (Message Processing)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:69
+#, python-format
+msgid ""
+"After a tunnel is built, I2NP messages are "
+"processed and passed through it.\n"
+"Tunnel operation has four distinct processes, taken on by various \n"
+"peers in the tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:75
+msgid ""
+"First, the tunnel gateway accumulates a number\n"
+"of I2NP messages and preprocesses them into tunnel messages for\n"
+"delivery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:80
+msgid ""
+"Next, that gateway encrypts that preprocessed data, then\n"
+"forwards it to the first hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:84
+msgid ""
+"That peer, and subsequent tunnel \n"
+"participants, unwrap a layer of the encryption, verifying that it isn't\n"
+"a duplicate, then forward it on to the next peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:89
+msgid ""
+"Eventually, the tunnel messages arrive at the endpoint where the I2NP "
+"messages\n"
+"originally bundled by the gateway are reassembled and forwarded on as \n"
+"requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:96
+msgid ""
+"Intermediate tunnel participants do not know whether they are in an\n"
+"inbound or an outbound tunnel; they always \"encrypt\" for the next hop.\n"
+"Therefore, we take advantage of symmetric AES encryption\n"
+"to \"decrypt\" at the outbound tunnel gateway,\n"
+"so that the plaintext is revealed at the outbound endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:110
+msgid "Role"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:111
+msgid "Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:112
+msgid "Encryption Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:113
+msgid "Postprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:117
+msgid "Outbound Gateway (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:141
+msgid "Fragment, Batch, and Pad"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:119
+msgid "Iteratively encrypt (using decryption operations)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:120
+#: i2p2www/pages/site/docs/tunnels/implementation.html:127
+#: i2p2www/pages/site/docs/tunnels/implementation.html:143
+#: i2p2www/pages/site/docs/tunnels/implementation.html:150
+msgid "Forward to next hop"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:124
+#: i2p2www/pages/site/docs/tunnels/implementation.html:147
+msgid "Participant"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:126
+msgid "Decrypt (using an encryption operation)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:133
+msgid "Decrypt (using an encryption operation) to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:134
+msgid "Reassemble Fragments, Forward as instructed to Inbound Gateway or Router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:142
+#: i2p2www/pages/site/docs/tunnels/implementation.html:149
+msgid "Encrypt"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:154
+msgid "Inbound Endpoint (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:156
+msgid "Iteratively decrypt to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:157
+msgid "Reassemble Fragments, Receive data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:163
+msgid "Gateway Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:164
+msgid "Message Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:166
+#, python-format
+msgid ""
+"A tunnel gateway's function is to fragment and pack\n"
+"I2NP messages into fixed-size\n"
+"tunnel messages\n"
+"and encrypt the tunnel messages.\n"
+"Tunnel messages contain the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:174
+msgid "A 4 byte Tunnel ID"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:175
+msgid "A 16 byte IV (initialization vector)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:176
+msgid "A checksum"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:177
+msgid "Padding, if necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:178
+msgid "One or more { delivery instruction, I2NP message fragment } pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:181
+msgid ""
+"Tunnel IDs are 4 byte numbers used at each hop - participants know what\n"
+"tunnel ID to listen for messages with and what tunnel ID they should be "
+"forwarded\n"
+"on as to the next hop, and each hop chooses the tunnel ID which they "
+"receive messages\n"
+"on. Tunnels themselves are short-lived (10 minutes).\n"
+"Even if subsequent tunnels are built using the same sequence of \n"
+"peers, each hop's tunnel ID will change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:190
+msgid ""
+"To prevent adversaries from tagging the messages along the path by "
+"adjusting\n"
+"the message size, all tunnel messages are a fixed 1024 bytes in size. To"
+" accommodate \n"
+"larger I2NP messages as well as to support smaller ones more efficiently,"
+" the\n"
+"gateway splits up the larger I2NP messages into fragments contained "
+"within each\n"
+"tunnel message. The endpoint will attempt to rebuild the I2NP message "
+"from the\n"
+"fragments for a short period of time, but will discard them as necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:199
+#, python-format
+msgid ""
+"Details are in the\n"
+"tunnel message specification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:205
+msgid "Gateway Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:207
+msgid ""
+"After the preprocessing of messages into a padded payload, the gateway "
+"builds\n"
+"a random 16 byte IV value, iteratively encrypting it and the tunnel "
+"message as\n"
+"necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel "
+"message} to the next hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:213
+msgid ""
+"How encryption at the gateway is done depends on whether the tunnel is an"
+"\n"
+"inbound or an outbound tunnel. For inbound tunnels, they simply select a"
+" random\n"
+"IV, postprocessing and updating it to generate the IV for the gateway and"
+" using \n"
+"that IV along side their own layer key to encrypt the preprocessed data."
+" For outbound \n"
+"tunnels they must iteratively decrypt the (unencrypted) IV and "
+"preprocessed \n"
+"data with the IV and layer keys for all hops in the tunnel. The result "
+"of the outbound\n"
+"tunnel encryption is that when each peer encrypts it, the endpoint will "
+"recover \n"
+"the initial preprocessed data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:225
+msgid "Participant Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:227
+msgid ""
+"When a peer receives a tunnel message, it checks that the message came "
+"from\n"
+"the same previous hop as before (initialized when the first message comes"
+" through\n"
+"the tunnel). If the previous peer is a different router, or if the "
+"message has\n"
+"already been seen, the message is dropped. The participant then encrypts"
+" the \n"
+"received IV with AES256/ECB using their IV key to determine the current "
+"IV, uses \n"
+"that IV with the participant's layer key to encrypt the data, encrypts "
+"the \n"
+"current IV with AES256/ECB using their IV key again, then forwards the "
+"tuple \n"
+"{nextTunnelId, nextIV, encryptedData} to the next hop. This double "
+"encryption\n"
+"of the IV (both before and after use) help address a certain class of\n"
+"confirmation attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:243
+msgid ""
+"Duplicate message detection is handled by a decaying Bloom filter on "
+"message\n"
+"IVs. Each router maintains a single Bloom filter to contain the XOR of "
+"the IV and\n"
+"the first block of the message received for all of the tunnels it is "
+"participating\n"
+"in, modified to drop seen entries after 10-20 minutes (when the tunnels "
+"will have\n"
+"expired). The size of the bloom filter and the parameters used are "
+"sufficient to\n"
+"more than saturate the router's network connection with a negligible "
+"chance of \n"
+"false positive. The unique value fed into the Bloom filter is the XOR of"
+" the IV \n"
+"and the first block so as to prevent nonsequential colluding peers in the"
+" tunnel \n"
+"from tagging a message by resending it with the IV and first block "
+"switched."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:256
+msgid "Endpoint Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:258
+msgid ""
+"After receiving and validating a tunnel message at the last hop in the "
+"tunnel,\n"
+"how the endpoint recovers the data encoded by the gateway depends upon "
+"whether \n"
+"the tunnel is an inbound or an outbound tunnel. For outbound tunnels, "
+"the \n"
+"endpoint encrypts the message with its layer key just like any other "
+"participant, \n"
+"exposing the preprocessed data. For inbound tunnels, the endpoint is "
+"also the \n"
+"tunnel creator so they can merely iteratively decrypt the IV and message,"
+" using the \n"
+"layer and IV keys of each step in reverse order."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:268
+msgid ""
+"At this point, the tunnel endpoint has the preprocessed data sent by the "
+"gateway,\n"
+"which it may then parse out into the included I2NP messages and forwards "
+"them as\n"
+"requested in their delivery instructions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:275
+msgid "Tunnel Building"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:277
+msgid ""
+"When building a tunnel, the creator must send a request with the "
+"necessary\n"
+"configuration data to each of the hops and wait for all of them to agree "
+"before\n"
+"enabling the tunnel. The requests are encrypted so that only the peers "
+"who need\n"
+"to know a piece of information (such as the tunnel layer or IV key) has "
+"that\n"
+"data. In addition, only the tunnel creator will have access to the "
+"peer's\n"
+"reply. There are three important dimensions to keep in mind when "
+"producing\n"
+"the tunnels: what peers are used (and where), how the requests are sent "
+"(and \n"
+"replies received), and how they are maintained."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:291
+msgid ""
+"Beyond the two types of tunnels - inbound and outbound - there are two "
+"styles\n"
+"of peer selection used for different tunnels - exploratory and client.\n"
+"Exploratory tunnels are used for both network database maintenance and "
+"tunnel\n"
+"maintenance, while client tunnels are used for end to end client messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:299
+msgid "Exploratory tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:301
+msgid ""
+"Exploratory tunnels are built out of a random selection of peers from a "
+"subset\n"
+"of the network. The particular subset varies on the local router and on "
+"what their\n"
+"tunnel routing needs are. In general, the exploratory tunnels are built "
+"out of\n"
+"randomly selected peers who are in the peer's \"not failing but active\" "
+"profile\n"
+"category. The secondary purpose of the tunnels, beyond merely tunnel "
+"routing,\n"
+"is to find underutilized high capacity peers so that they can be promoted"
+" for\n"
+"use in client tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:311
+#, python-format
+msgid ""
+"Exploratory peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:317
+msgid "Client tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:319
+msgid ""
+"Client tunnels are built with a more stringent set of requirements - the "
+"local\n"
+"router will select peers out of its \"fast and high capacity\" profile "
+"category so\n"
+"that performance and reliability will meet the needs of the client "
+"application.\n"
+"However, there are several important details beyond that basic selection "
+"that \n"
+"should be adhered to, depending upon the client's anonymity needs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:327
+#, python-format
+msgid ""
+"Client peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:332
+msgid "Peer Ordering within Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:334
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to deal with the\n"
+"predecessor attack\n"
+"(2008 update)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:341
+msgid ""
+"To frustrate the predecessor \n"
+"attack, the tunnel selection keeps the peers selected in a strict order -"
+"\n"
+"if A, B, and C are in a tunnel for a particular tunnel pool, the hop "
+"after A is always B, and the hop after\n"
+"B is always C."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:348
+msgid ""
+"Ordering is implemented by generating a random 32-byte key for each\n"
+"tunnel pool at startup.\n"
+"Peers should not be able to guess the ordering, or an attacker could\n"
+"craft two router hashes far apart to maximize the chance of being at both"
+"\n"
+"ends of a tunnel.\n"
+"Peers are sorted by XOR distance of the\n"
+"SHA256 Hash of (the peer's hash concatenated with the random key) from "
+"the random key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:363
+msgid ""
+"Because each tunnel pool uses a different random key, ordering is "
+"consistent\n"
+"within a single pool but not between different pools.\n"
+"New keys are generated at each router restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:370
+msgid "Request delivery"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:372
+#, python-format
+msgid ""
+"A multi-hop tunnel is built using a single build message which is "
+"repeatedly\n"
+"decrypted and forwarded. In the terminology of\n"
+"Hashing it out in Public,\n"
+"this is \"non-interactive\" telescopic tunnel building."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:379
+#, python-format
+msgid ""
+"This tunnel request preparation, delivery, and response method is\n"
+"designed to reduce the number of\n"
+"predecessors exposed, cuts the number of messages transmitted, verifies "
+"proper\n"
+"connectivity, and avoids the message counting attack of traditional "
+"telescopic\n"
+"tunnel creation.\n"
+"(This method, which sends messages to extend a tunnel through the "
+"already-established\n"
+"part of the tunnel, is termed \"interactive\" telescopic tunnel building "
+"in\n"
+"the \"Hashing it out\" paper.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:390
+#, python-format
+msgid ""
+"The details of tunnel request and response messages, and their "
+"encryption,\n"
+"are specified here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:395
+msgid ""
+"Peers may reject tunnel creation requests for a variety of reasons, "
+"though\n"
+"a series of four increasingly severe rejections are known: probabilistic "
+"rejection\n"
+"(due to approaching the router's capacity, or in response to a flood of "
+"requests), \n"
+"transient overload, bandwidth overload, and critical failure. When "
+"received, \n"
+"those four are interpreted by the tunnel creator to help adjust their "
+"profile of\n"
+"the router in question."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:404
+#, python-format
+msgid ""
+"For more information on peer profiling, see the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:410
+msgid "Tunnel Pools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:412
+#, python-format
+msgid ""
+"To allow efficient operation, the router maintains a series of tunnel "
+"pools,\n"
+"each managing a group of tunnels used for a specific purpose with their "
+"own\n"
+"configuration. When a tunnel is needed for that purpose, the router "
+"selects one\n"
+"out of the appropriate pool at random. Overall, there are two "
+"exploratory tunnel\n"
+"pools - one inbound and one outbound - each using the router's default "
+"configuration.\n"
+"In addition, there is a pair of pools for each local destination -\n"
+"one inbound and one outbound tunnel pool. Those pools use the "
+"configuration specified\n"
+"when the local destination connects to the router via I2CP, or the router's defaults if\n"
+"not specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:424
+#, python-format
+msgid ""
+"Each pool has within its configuration a few key settings, defining how "
+"many\n"
+"tunnels to keep active, how many backup tunnels to maintain in case of "
+"failure,\n"
+"how long the tunnels should be, whether those\n"
+"lengths should be randomized, as \n"
+"well as any of the other settings allowed when configuring individual "
+"tunnels.\n"
+"Configuration options are specified on the I2CP "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:434
+msgid "Tunnel Lengths and Defaults"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:436
+msgid "On the tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:438
+msgid "Anticipatory Build Strategy and Priority"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:440
+msgid ""
+"Tunnel building is expensive, and tunnels expire a fixed time after they "
+"are built.\n"
+"However, when a pool that runs out of tunnels, the Destination is "
+"essentially dead.\n"
+"In addition, tunnel build success rate may vary greatly with both local "
+"and global\n"
+"network conditions.\n"
+"Therefore, it is important to maintain an anticipatory, adaptive build "
+"strategy\n"
+"to ensure that new tunnels are successfully built before they are needed,"
+"\n"
+"without building an excess of tunnels, building them too soon,\n"
+"or consuming too much CPU or bandwidth creating and sending the encrypted"
+" build messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:451
+msgid ""
+"For each tuple {exploratory/client, in/out, length, length variance}\n"
+"the router maintains statistics on the time required for a successful\n"
+"tunnel build.\n"
+"Using these statistics, it calculates how long before a tunnel's "
+"expiration\n"
+"it should start attempting to build a replacement.\n"
+"As the expiration time approaches without a successful replacement,\n"
+"it starts multiple build attempts in parallel, and then\n"
+"will increase the number of parallel attempts if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:462
+msgid ""
+"To cap bandwidth and CPU usage,\n"
+"the router also limits the maximum number of build attempts outstanding\n"
+"across all pools.\n"
+"Critical builds (those for exploratory tunnels, and for pools that have\n"
+"run out of tunnels) are prioritized."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:471
+msgid "Tunnel Message Throttling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:473
+msgid ""
+"Even though the tunnels within I2P bear a resemblance to a circuit "
+"switched\n"
+"network, everything within I2P is strictly message based - tunnels are "
+"merely\n"
+"accounting tricks to help organize the delivery of messages. No "
+"assumptions are\n"
+"made regarding reliability or ordering of messages, and retransmissions "
+"are left\n"
+"to higher levels (e.g. I2P's client layer streaming library). This "
+"allows I2P\n"
+"to take advantage of throttling techniques available to both packet "
+"switched and\n"
+"circuit switched networks. For instance, each router may keep track of "
+"the \n"
+"moving average of how much data each tunnel is using, combine that with "
+"all of \n"
+"the averages used by other tunnels the router is participating in, and be"
+" able\n"
+"to accept or reject additional tunnel participation requests based on its"
+" \n"
+"capacity and utilization. On the other hand, each router can simply drop"
+" \n"
+"messages that are beyond its capacity, exploiting the research used on "
+"the \n"
+"normal Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:489
+msgid ""
+"In the current implementation, routers implement a\n"
+"weighted random early discard (WRED) strategy.\n"
+"For all participating routers (internal participant, inbound gateway, and"
+" outbound endpoint),\n"
+"the router will start randomly dropping a portion of messages as the\n"
+"bandwidth limits are approached.\n"
+"As traffic gets closer to, or exceeds, the limits, more messages are "
+"dropped.\n"
+"For an internal participant, all messages are fragmented and padded and "
+"therefore are the same size.\n"
+"At the inbound gateway and outbound endpoint, however, the dropping "
+"decision is made\n"
+"on the full (coalesced) message, and the message size is taken into "
+"account.\n"
+"Larger messages are more likely to be dropped.\n"
+"Also, messages are more likely to be dropped at the outbound endpoint "
+"than the inbound gateway,\n"
+"as those messages are not as \"far along\" in their journey and thus the "
+"network cost of\n"
+"dropping those messages is lower."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:507
+msgid "Mixing/batching"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:509
+msgid ""
+"What strategies could be used at the gateway and at each hop for "
+"delaying,\n"
+"reordering, rerouting, or padding messages? To what extent should this "
+"be done\n"
+"automatically, how much should be configured as a per tunnel or per hop "
+"setting,\n"
+"and how should the tunnel's creator (and in turn, user) control this "
+"operation?\n"
+"All of this is left as unknown, to be worked out for a distant future "
+"release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:518
+msgid "Padding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:519
+msgid ""
+"The padding strategies can be used on a variety of levels, addressing the"
+"\n"
+"exposure of message size information to different adversaries.\n"
+"The current fixed tunnel message size is 1024 bytes. Within this "
+"however, the fragmented\n"
+"messages themselves are not padded by the tunnel at all, though for end "
+"to end \n"
+"messages, they may be padded as part of the garlic wrapping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:529
+msgid ""
+"WRED strategies have a significant impact on end-to-end performance,\n"
+"and prevention of network congestion collapse.\n"
+"The current WRED strategy should be carefully evaluated and improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:2
+msgid "Old Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:5
+#, python-format
+msgid ""
+"Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see here for the current implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:3
+msgid "November 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:7
+msgid ""
+"This page describes the origins and design of I2P's unidirectional "
+"tunnels.\n"
+"For further information see:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:13
+msgid "Tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:19
+msgid "Tunnel design discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:21
+msgid "Peer selection"
+msgstr "Bənzərlərin seçimi"
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:23
+msgid "Meeting 125 (~13:12-13:30)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:28
+msgid "Review"
+msgstr "Baxış-icmal"
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:30
+msgid ""
+"While we aren't aware of any published research on the advantages of \n"
+"unidirecdtional tunnels,\n"
+"they appear to make it harder to detect a \n"
+"request/response pattern, which is quite possible to detect over a \n"
+"bidirectional tunnel.\n"
+"Several apps and protocols, notably HTTP,\n"
+"do transfer data in such manner. Having the traffic follow the same \n"
+"route to its destination and back could make it easier for an \n"
+"attacker who has only timing and traffic volume data to infer the path a"
+" \n"
+"tunnel is taking.\n"
+"Having the response come back along a different path arguably \n"
+"makes it harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:45
+msgid ""
+"When dealing with \n"
+"an internal adversary or most external adversaries, I2P's undirectional "
+"tunnels\n"
+"expose half as much traffic data than would be exposed with bidirectional"
+" circuits\n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:55
+msgid ""
+"The strategy of using two separate tunnels for inbound and outbound\n"
+"communication is not the only technique available, and it does have "
+"anonymity\n"
+"implications. On the positive side, by using separate tunnels it lessens"
+" the\n"
+"traffic data exposed for analysis to participants in a tunnel - for "
+"instance,\n"
+"peers in an outbound tunnel from a web browser would only see the traffic"
+" of\n"
+"an HTTP GET, while the peers in an inbound tunnel would see the payload \n"
+"delivered along the tunnel. With bidirectional tunnels, all participants"
+" would\n"
+"have access to the fact that e.g. 1KB was sent in one direction, then "
+"100KB\n"
+"in the other. On the negative side, using unidirectional tunnels means "
+"that\n"
+"there are two sets of peers which need to be profiled and accounted for, "
+"and\n"
+"additional care must be taken to address the increased speed of "
+"predecessor\n"
+"attacks. The tunnel pooling and building process\n"
+"(peer selection and ordering strategies)\n"
+"should minimize the worries of the predecessor attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:73
+msgid "Anonymity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:75
+#, python-format
+msgid ""
+"A recent paper by Hermann and Grothoff\n"
+"declared that I2P's unidirectional tunnels \"seems to be a bad design "
+"decision\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:80
+msgid ""
+"The paper's main point is that\n"
+"deanonymizations on unidirectional tunnels take a longer time, which is "
+"an \n"
+"advantage, but that an attacker can be more certain in the unidirectional"
+" case. \n"
+"Therefore, the paper claims it isn't an advantage at all, but a "
+"disadvantage, at least\n"
+"with long-living eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:88
+msgid ""
+"This conclusion is not fully supported by the paper. Unidirectional "
+"tunnels clearly \n"
+"mitigate other attacks and it's not clear how to trade off the risk of "
+"the \n"
+"attack in the paper\n"
+"with attacks on a bidirectional tunnel architecture."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:95
+msgid ""
+"This conclusion is based on an arbitrary certainty vs. time weighting \n"
+"(tradeoff) that may not be applicable in all cases. For \n"
+"example, somebody could make a list of possible IPs then issue subpoenas "
+"to \n"
+"each. Or the attacker could DDoS each in turn and via a simple \n"
+"intersection attack see if the eepsite goes down or is slowed down. So "
+"close \n"
+"may be good enough, or time may be more important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:104
+msgid ""
+"The conclusion is based on a specific weighting of the importance of "
+"certainty \n"
+"vs. time, and that weighting may be wrong, and it's definitely debatable,"
+" \n"
+"especially in a real world with subpoenas, search warrants, and other "
+"methods \n"
+"available for final confirmation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:111
+msgid ""
+"A full analysis of the tradeoffs of unidirectional vs. bidirectional \n"
+"tunnels is clearly outside the scope of the paper, and has not been done"
+" \n"
+"elsewhere. For example, how does this attack compare to the numerous "
+"possible \n"
+"timing attacks published about onion-routed networks? Clearly the authors"
+" have not\n"
+"done that analysis, if it's even possible to do it\n"
+"effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:120
+msgid ""
+"Tor uses bidirectional tunnels and has had a lot of academic review. I2P"
+" \n"
+"uses unidirectional tunnels and has had very little review. Does the lack"
+" of a \n"
+"research paper defending unidirectional tunnels mean that it is a poor "
+"design \n"
+"choice, or just that it needs more study? Timing attacks and \n"
+"distributed attacks are difficult to defend against in both I2P and Tor. "
+"The \n"
+"design intent (see references above) was that unidirectional tunnels are "
+"more \n"
+"resistant to timing attacks. However, the paper presents a somewhat "
+"different type of timing \n"
+"attack. Is this attack, innovative as it is, sufficient to label I2P's \n"
+"tunnel architecture (and thus I2P as a whole) a \"bad design\", and by \n"
+"implication clearly inferior to Tor, or is it just a design alternative "
+"that \n"
+"clearly needs further investigation and analysis? There are several other"
+" reasons \n"
+"to consider I2P currently inferior to Tor and other projects (small "
+"network \n"
+"size, lack of funding, lack of review) but is unidirectional tunnels "
+"really a \n"
+"reason?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:137
+msgid ""
+"In summary, \"bad design decision\" is apparently (since the paper does\n"
+"not label bidirectional tunnels \"bad\") shorthand for \"unidirectional \n"
+"tunnels are unequivocally inferior to bidirectional tunnels\", yet this \n"
+"conclusion is not supported by the paper."
+msgstr ""
+
diff --git a/i2p2www/translations/az/LC_MESSAGES/get-involved.po b/i2p2www/translations/az/LC_MESSAGES/get-involved.po
new file mode 100644
index 00000000..86c7b1e5
--- /dev/null
+++ b/i2p2www/translations/az/LC_MESSAGES/get-involved.po
@@ -0,0 +1,4123 @@
+# Azerbaijani translations for I2P.
+# Copyright (C) 2018 ORGANIZATION
+# This file is distributed under the same license as the I2P project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: http://trac.i2p2.de\n"
+"POT-Creation-Date: 2018-08-24 11:47+0000\n"
+"PO-Revision-Date: 2018-08-24 11:51+0000\n"
+"Last-Translator: Nikafn i2p.i2p
) has been set up to"
+" enable developers to easily set up two of the commonly-used IDEs for "
+"Java development: Eclipse and NetBeans."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:10
+msgid ""
+"The main I2P development branches (i2p.i2p
and branches from"
+" it) contain build.gradle to enable the branch to be easily set up in "
+"Eclipse."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:16
+msgid ""
+"Make sure you have a recent version of Eclipse. Anything newer than 2017"
+" should do."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:20
+msgid ""
+"Check out the I2P branch into some directory (e.g. "
+"$HOME/dev/i2p.i2p
)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:24
+msgid ""
+"Select \"File - Import...\" and then under \"Gradle\" select \"Existing "
+"Gradle Project\"."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:28
+msgid ""
+"For \"Project root directory:\" choose the directory that the I2P branch "
+"was checked out to."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:32
+msgid ""
+"In the \"Import Options\" dialog, select \"Gradle Wrapper\" and press "
+"continue."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:36
+msgid ""
+"In the \"Import Preview\" dialog you can review the project structure. "
+"Multiple projects should appear under \"i2p.i2p\". Press \"Finish.\""
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:40
+msgid ""
+"Done! Your workspace should now contain all projects within the I2P "
+"branch, and their build dependencies should be correctly set up."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/ides.html:48
+msgid ""
+"The main I2P development branches (i2p.i2p
and branches from"
+" it) contain NetBeans project files."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:2
+msgid "Monotone Guide"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:6
+msgid "Operating a Monotone client"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:8
+#: i2p2www/pages/site/get-involved/guides/monotone.html:61
+msgid "Generating Monotone keys"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:9
+msgid "Trust and initializing your repository"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:10
+#: i2p2www/pages/site/get-involved/guides/monotone.html:194
+msgid "Obtaining and deploying developers' keys"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:11
+#: i2p2www/pages/site/get-involved/guides/monotone.html:225
+msgid "Setting up trust evaluation hooks"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:12
+#: i2p2www/pages/site/get-involved/guides/monotone.html:266
+msgid ""
+"Pulling the i2p.i2p
, i2p.www
and "
+"i2p.syndie
branches"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:13
+#: i2p2www/pages/site/get-involved/guides/monotone.html:312
+msgid "Verifying that trust evaluation works"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:14
+#: i2p2www/pages/site/get-involved/guides/monotone.html:361
+msgid "Checking out a working copy of the latest version"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:15
+#: i2p2www/pages/site/get-involved/guides/monotone.html:388
+msgid "Updating your working copy to the latest version"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:19
+#: i2p2www/pages/site/get-involved/guides/monotone.html:418
+msgid "Operating a Monotone Server"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:21
+msgid "Obtaining and deploying developers’ transport keys"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:22
+#: i2p2www/pages/site/get-involved/guides/monotone.html:428
+msgid "Granting push and pull access"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:23
+#: i2p2www/pages/site/get-involved/guides/monotone.html:473
+msgid "Running Monotone in server mode"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:24
+#: i2p2www/pages/site/get-involved/guides/monotone.html:498
+msgid "Differences under Debian GNU/Linux"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:32
+#, python-format
+msgid ""
+"This is a revised version of Complication's original\n"
+" guide detailing the use of Monotone in I2P development.\n"
+" For basic instructions see the quick-start "
+"guide."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:40
+#, python-format
+msgid ""
+"I2P has a distributed development model. The source code is replicated "
+"across\n"
+" independently administered Monotone (\"MTN\") repositories.\n"
+" Developers with commit rights are able to push their changes to the "
+"repository\n"
+" (a license agreement needs to be "
+"signed\n"
+" before commit rights are granted)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:50
+msgid ""
+"Some of Monotone's noteworthy qualities are: distributed\n"
+" version control, cryptographic authentication, access control, its "
+"small size, having few\n"
+" dependencies, storage of projects in a compressed SQLite database file,"
+" and\n"
+" having the ability to resume interrupted synchronization attempts."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:59
+msgid "Operating a Monotone Client"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:64
+msgid ""
+"A transport key grants you the ability to push your changes to a Monotone"
+" repository server.\n"
+" In order to commit code into Monotone (in essence signing your code), a"
+" commit key is also needed.\n"
+" None of the public Monotone servers on I2P currently require a key in "
+"order to read (or pull) the source code."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:72
+msgid ""
+"Without a transport key, one cannot:\n"
+" $HOME/.monotone/keys
in "
+"text files which\n"
+" are named identically to the keys. For example:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:121
+msgid ""
+"To generate transport and commit keys, enter the following commands at a "
+"prompt:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:131
+msgid ""
+"Monotone will prompt you for a password to protect your keys. You are "
+"very strongly encouraged to set a password\n"
+" for the commit key. Many users will leave an empty password for the "
+"transport key, especially those running a\n"
+" Monotone server."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:139
+msgid "Trust, and initializing your repository"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:143
+msgid ""
+"Monotone's security model helps to ensure that nobody can easily "
+"impersonate a developer without\n"
+" it being noticed. Since developers can make mistakes and become "
+"compromised,only manual review can\n"
+" ensure quality of code. Monotone's trust model will ensure that you "
+"read the right diffs. It does\n"
+" not replace reading diffs."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:153
+msgid ""
+"A Monotone repository is a single file (a compressed SQLite database) "
+"which contains all of the project's source code and history."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:159
+msgid ""
+"After importing the "
+"developers' keys into Monotone and\n"
+" setting up trust "
+"evaluation hooks,\n"
+" Monotone will prevent untrusted code from being checked out into your "
+"workspace.\n"
+" There are commands available to clean untrusted code from your "
+"workspace but in practice they've not been\n"
+" needed due to the push access policies in place."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:169
+msgid ""
+"A repository can hold many branches. For example, our repository holds "
+"the\n"
+" following main branches:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:174
+msgid "The I2P router and associated programs"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:175
+msgid "The I2P project website"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:176
+msgid "Syndie, a distributed forums tool"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:181
+msgid ""
+"By convention, the I2P Monotone repository is named i2p.mtn
."
+" Before pulling\n"
+" source code from servers, a database for your repository will need to "
+"be initialized.\n"
+" To initialize your local repository, change into the directory that you"
+" want the\n"
+" i2p.mtn
file and branch directories to be stored and issue"
+" the following\n"
+" command:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:197
+msgid ""
+"Keys which developers use to commit code are essential for trust "
+"evaluation in\n"
+" Monotone. The other developers' transport keys are only required for "
+"Monotone server operators.\n"
+" "
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:204
+#, python-format
+msgid ""
+"Developers' commit keys are provided GPG-signed on another page."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:210
+#, python-format
+msgid ""
+"To import developers' keys after verifying their authenticity, copy all of the keys into a new\n"
+" file. Create this file (e.g. keys.txt
) in the same "
+"directory where i2p.mtn
is located. Import the keys with the"
+" command:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:220
+msgid ""
+"Note: Never add keys to "
+"$HOME/.monotone/keys
manually."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:228
+msgid ""
+"The default Monotone trust policy is way too lax for our requirements: "
+"every committer is trusted by default.\n"
+" That is not acceptable for I2P development."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:235
+msgid ""
+"Change into the directory $HOME/.monotone
and open "
+"the file\n"
+" monotonerc
with a text editor. Copy and paste the "
+"following two functions into this file:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:244
+msgid ""
+"The first function determines an intersection between two sets, in our "
+"case a\n"
+" revision's signers and trusted signers."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:251
+msgid ""
+"The second function determines trust in a given revision, by calling the "
+"first\n"
+" function with \"signers\" and \"trusted\" as arguments. If the "
+"intersection is\n"
+" null, the revision is not trusted. If the intersection is not empty, "
+"the\n"
+" revision is trusted. Otherwise, the revision is not trusted."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:260
+msgid ""
+"More information about Trust Evaluation Hooks can be found in the official Monotone "
+"documentation."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:268
+msgid ""
+"I2P is shipped with a pre-configured tunnel pointing to the project "
+"Monotone server. Ensure that the tunnel has been started\n"
+" within I2PTunnel before"
+" attempting to pull the source code from 127.0.0.1:8998."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:275
+msgid ""
+"Enter the directory where you initialized i2p.mtn
. Depending"
+" on whether you\n"
+" want only I2P sources, or also sources for the I2P website and Syndie, "
+"you can\n"
+" perform the pull
operation in different ways."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:283
+msgid "If you only want I2P sources:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:292
+msgid "If you want all branches:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:298
+msgid ""
+"If the transfer aborts before completing sucessfully, simply repeating "
+"the pull command will resume the transfer."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:304
+msgid ""
+"Pulling in the above examples is done anonymously by specifying an empty "
+"transport key.\n"
+" If everyone pulls anonymously it will be harder for an attacker who "
+"gains control of the server\n"
+" to selectively provide some people with tampered data."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:315
+msgid "To verify that trust evaluation works:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:319
+msgid "Make a backup of your monotonerc
file."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:320
+msgid ""
+"Modify monotonerc
by setting the trusted_signers "
+"variable in the following way:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:326
+msgid ""
+"With monotonerc
configured as above, Monotone will no"
+" longer trust any committers. Confirm this by changing into the\n"
+"directory where i2p.mtn
was created and attempt a checkout "
+"of the I2P branch:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:336
+msgid ""
+"A directory named i2p.i2p
should not appear. You "
+"should encounter many\n"
+" error messages like:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:353
+msgid ""
+"If you are satisfied with results, restore the backup of\n"
+" monotonerc
that was created above. If you didn't create a "
+"backup\n"
+" as advised, re-read Setting up trust evaluation hooks."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:364
+msgid ""
+"If you already have a branch checked out, skip to the next\n"
+" section."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:371
+msgid ""
+"Change into the directory where i2p.mtn
is located. Over "
+"there issue:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:380
+msgid ""
+"The checkout should complete without error messages and a directory named"
+"\n"
+" i2p.i2p
should appear in the current directory. "
+"Congratulations! You have\n"
+" successfully checked out the latest I2P sources, ready to be compiled."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:391
+msgid ""
+"If you haven't done this already, pull fresh code from the server to your"
+" local\n"
+" Monotone repository. To accomplish this, change into the directory "
+"where\n"
+" i2p.mtn
is located and issue:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:402
+msgid "Now change into your i2p.i2p
directory, and over there issue:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:411
+msgid ""
+"As long as there were no errors…Congratulations! You have "
+"successfully updated to the latest I2P sources. They\n"
+" should be ready to compile."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:420
+msgid "Obtaining and deploying developers' transport keys"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:423
+msgid ""
+"As a server operator you may want to grant push access to certain "
+"developers."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:431
+msgid "By default the Monotone server denies all access."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:437
+msgid "To grant pull access to all clients, set the following in"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:449
+msgid ""
+"No one will not be able to push code to your server without permission "
+"being explicitly granted. To grant push access:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:455
+msgid ""
+"Add the name of the user's transport key to\n"
+"$HOME/.monotone/write-permissions
, such as\n"
+"\n"
+" zzz-transport@mail.i2p\n"
+" complication-transport@mail.i2p\n"
+"
\n"
+"with one key per line."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:466
+msgid ""
+"Import the transport key(s) into your database. The procedure for "
+"importing transport keys is the same as for\n"
+"importing commit keys, which is described in the section Obtaining and deploying "
+"developers' keys."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:476
+msgid ""
+"A separate database should be used for your Monotone server because "
+"monotone will lock the database while it is served to others.\n"
+" Make a copy of your development database, then start the server with:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:483
+msgid ""
+"If your key is protected with a passphrase, Monotone may request the "
+"passphrase\n"
+" when the first client connects. You can work around this by connecting "
+"making the first client connection to your server\n"
+" (or by clearing the password for your transport key)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:491
+msgid ""
+"For your server to be accessible for others over I2P, you will need to "
+"create a\n"
+" server tunnel for it. Use the \"Standard\" tunnel type and \"Bulk\" "
+"profile."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:501
+msgid ""
+"Debian (amongst other distributions) has integrated Monotone into their\n"
+" framework of daemons/services. Although Monotone servers can still be "
+"run\n"
+" \"the ordinary way\" on Debian systems, doing it the \"Debian way\" may"
+" be more straightforward."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/monotone.html:509
+msgid ""
+"Permissions are granted by editing the files\n"
+" /etc/monotone/read-permissions
and\n"
+" /etc/monotone/write-permissions
. You'll also need to edit\n"
+" /etc/default/monotone
to enable monotone to start at boot "
+"or to\n"
+" customize the host, port, or database location."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:2
+msgid "New Developer's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:3
+msgid "July 2018"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:6
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:32
+msgid "Basic study"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:7
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:46
+msgid "Getting the I2P code"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:9
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:53
+msgid "The easy way: Git"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:10
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:73
+msgid "The proper way: Monotone"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:12
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:136
+msgid "Building I2P"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:13
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:157
+msgid "Development ideas"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:14
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:165
+msgid "Making the results available"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:15
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:186
+msgid "Get to know us!"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:16
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:192
+msgid "Translations"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:17
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:198
+msgid "Tools"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:22
+msgid ""
+"\n"
+"So you want to start work on I2P? Great!\n"
+"Here's a quick guide to getting started\n"
+"on contributing to the website or the software, doing development or "
+"creating translations."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:27
+#, python-format
+msgid ""
+"\n"
+"Not quite ready for coding?\n"
+"Try getting involved first."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:34
+msgid ""
+"Basic development on the I2P router or the embedded applications uses "
+"Java as the main development language.\n"
+"If you don't have experience with Java, you can always have a look at Thinking in Java."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:38
+#, python-format
+msgid ""
+"Study the how intro,\n"
+"the other \"how\" documents,\n"
+"the tech intro,\n"
+"and associated documents.\n"
+"These will give you a good overview of how I2P is structured and what "
+"different things it does."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:48
+msgid ""
+"For development on the I2P router or the embedded applications,\n"
+"there are two ways to get the source code:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:55
+#, python-format
+msgid "Install Git."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:58
+#, python-format
+msgid "Get the code from the GitHub mirror:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:65
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:120
+msgid "Remarks"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:66
+#, python-format
+msgid ""
+"The Git repository is currently a read-only mirror. If you wish to use it"
+" for\n"
+"development, you will need to submit patches to our "
+"issue\n"
+"tracker. We can accept GitHub pull requests, but they must be "
+"processed\n"
+"manually by turning them into patches anyway."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:75
+msgid ""
+"Install monotone.\n"
+"Monotone is a version control system.\n"
+"We use it because it allows us to keep track of who does what changes to "
+"the source code (and for a lot of complicated things, but 'keeping track "
+"of changes' is the basic idea)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:80
+msgid ""
+"Skim over the monotone tutorial,"
+" to make sure you understand the concepts."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:84
+msgid ""
+"If you want to remain anonymous, you need to do an additional step, to "
+"set up a connection to a monotone server over I2P:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:87
+#, python-format
+msgid ""
+"Enable the i2ptunnel client tunnel on port "
+"8998 pointing to mtn.i2p-projekt.i2p."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:91
+msgid ""
+"Pick a directory where you want to put all your I2P files, and create a "
+"monotone database:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:94
+msgid ""
+"Define the trust list by creating ~/.monotone/monotonerc
(or"
+" _MTN/monotonerc
in the i2p.i2p workspace) with the "
+"following contents:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:99
+#, python-format
+msgid ""
+"Copy and paste the developer's commit keys "
+"into a new file (e.g. keys.txt
) in the same directory\n"
+" that i2p.mtn
is in. Import the keys into your database "
+"with mtn -d i2p.mtn read < keys.txt
"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:103
+msgid ""
+"Pull the I2P sources to your machine. This may take a long time, "
+"especially if you are doing this over I2P!"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:105
+msgid "Anonymously:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:108
+msgid "Non-anonymously:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:114
+msgid ""
+"All the sources are now present on your machine, in the database file. To"
+" make them available in a directory, you need to check them out:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:116
+msgid ""
+"The above command creates a directory i2p.i2p, which contains all of the "
+"I2P sources."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:121
+msgid ""
+"\n"
+"To download the website files instead of the I2P source files, use "
+"'i2p.www' instead of 'i2p.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:124
+msgid ""
+"The initial pull may take several hours using the tunnel.\n"
+"If it fails after a partial pull, simply rerun it, it will start where it"
+" left off.\n"
+"If you are in a hurry, use the non-anonymous access."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:129
+#, python-format
+msgid ""
+"A full list of branches, including i2p.i2p and i2p.www can be found on viewmtn."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:132
+#, python-format
+msgid ""
+"A long explanation about using monotone is available on the monotone page."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:138
+#, python-format
+msgid ""
+"To compile the code, you need the Sun Java Development Kit 6 or higher, "
+"or equivalent JDK\n"
+"(Sun JDK 6 strongly recommended) and\n"
+"Apache ant\n"
+"version 1.7.0 or higher.\n"
+"If you go are working on the main I2P code, you can go into the i2p.i2p "
+"directory and run 'ant' to see the build options."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:146
+msgid ""
+"To build or work on console translations, you need\n"
+"the xgettext, msgfmt, and msgmerge tools from the\n"
+"GNU gettext package."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:152
+#, python-format
+msgid ""
+"For development on new applications,\n"
+"see the application development guide."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:158
+#, python-format
+msgid ""
+"See zzz's TODO lists,\n"
+"this website's TODO list or\n"
+"Trac\n"
+"for ideas."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:167
+#, python-format
+msgid ""
+"See the bottom of the licenses page "
+"for\n"
+"commit privilege requirements. You need these to put code into i2p.i2p "
+"(not required for the website!)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:172
+msgid "Short version of how to generate and use keys if you plan to commit:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:174
+msgid "use an empty passphrase"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:175
+msgid "enter a passphrase"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:176
+#, python-format
+msgid ""
+"send this to a mtn repo operator to get "
+"push privileges"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:177
+#, python-format
+msgid ""
+"send this to a release manager to get "
+"commit privileges - not required for website"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:178
+msgid "check in with this key"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:179
+msgid "push with this key"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:181
+#, python-format
+msgid "Long version: see the monotone page."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:187
+#, python-format
+msgid ""
+"The developers hang around on IRC. They can be reached on the Freenode "
+"network, OFTC, and on the I2P internal networks. The usual place to look "
+"is #i2p-dev. Join the channel and say hi!\n"
+"We also have additional guidelines for regular"
+" developers."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:193
+#, python-format
+msgid ""
+"Website and router console translators: See the New Translator's Guide\n"
+"for next steps."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:199
+msgid ""
+"I2P is open source software that is mostly developed using open sourced\n"
+"toolkits. The I2P project recently acquired a license for the YourKit "
+"Java\n"
+"Profiler. Open source projects are eligible to receive a free license "
+"provided\n"
+"that YourKit is referenced on the project web site. Please get in touch "
+"if you\n"
+"are interested in profiling the I2P codebase."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-developers.html:207
+#, python-format
+msgid ""
+"YourKit is kindly supporting open source projects with its full-featured "
+"Java Profiler.\n"
+"YourKit, LLC is the creator of innovative and intelligent tools for "
+"profiling\n"
+"Java and .NET applications. Take a look at YourKit's leading software "
+"products:\n"
+"YourKit Java Profiler and\n"
+"YourKit .NET Profiler."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:2
+msgid "New Translator's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:4
+msgid "Here's a very quick guide to getting started."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:6
+msgid "How to Translate the Website"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:8
+#, python-format
+msgid ""
+"Translation of the website is done with .po files. The easiest way by far"
+" to\n"
+"translate the website is to sign up for an account at \n"
+"Transifex and request to join a translation"
+" team. \n"
+"Alternatively it can be done \"the old way\" as outlined below."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:17
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:82
+msgid "Preparation"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:19
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:84
+#, python-format
+msgid ""
+"Come to #i2p-dev on irc and talk to people.\n"
+"Claim the language -\n"
+"To make sure other coworkers don't bump onto the files you are working "
+"on,\n"
+"please update the translation status on this wiki "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:25
+#, python-format
+msgid ""
+"Follow the new developer's guide,\n"
+"Including the installation of monotone,\n"
+"checking out i2p.www branch, and generate your own monotone keys.\n"
+"It is not required that you sign a dev agreement."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:33
+msgid ""
+"Create files:\n"
+"If the file for your language does not exist yet:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:38
+msgid ""
+"Run \"./extract-messages.sh
\" to generate a "
+"messages.pot
in the base directory.\n"
+"Edit the header of this file, then run \"./init-new-po.sh "
+"locale
\" to generate the file\n"
+"i2p2www/translations/locale/LC_MESSAGES/messages.po
. "
+"\"mtn add
\" this file."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:43
+msgid ""
+"Edit i2p2www/pages/global/lang.html
and add a line for your "
+"language (copy an existing line)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:46
+msgid ""
+"Add a flag image file to i2p2www/static/images/flags/
for "
+"the menu (copy from the router)."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:52
+msgid ""
+"Edit files:\n"
+"Edit i2p2www/translations/locale/LC_MESSAGES/messages.po
.\n"
+"To work with .po files efficiently, you may wish to use POEdit"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:58
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:151
+msgid ""
+"Check in:\n"
+"\"mtn pull
\", \"mtn update
\". Then check in by "
+"\"mtn ci -k yourname@mail.i2p file1 file2 ...
\"\n"
+"This collects the diff info of your changed file into your local repo. "
+"Then \"mtn sync mtn.i2p2.de -k yourname-transport@mail.i2p "
+"i2p.i2p
\".\n"
+"This synchronizes your local repo with the repo on the target machine."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:65
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:158
+msgid "Repeat. Check in often. Don't wait until it is perfect."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:72
+msgid "How to Translate the Router Console"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:74
+#, python-format
+msgid ""
+"The easiest way by far to translate the router console is to sign up for "
+"an account at \n"
+"Transifex and request to join a translation"
+" team. \n"
+"Alternatively it can be done \"the old way\" as outlined below."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:90
+#, python-format
+msgid ""
+"Follow the new developer's guide,\n"
+"including the installation of monotone and the gettext tools,\n"
+"checking out i2p.i2p branch, and generate your own monotone keys."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:95
+msgid "Generate your own gpg key and sign the dev agreement."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:101
+msgid ""
+"Before starting a console translation, better help translate some i2p "
+"webpages first.\n"
+"At least an i2p homepage in your language would be great."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:106
+msgid ""
+"What to translate:\n"
+"There are about 15 files in the i2p.i2p branch that needs translation:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:132
+msgid ""
+"Where xx is your language code like fr/de/ch/zh/...\n"
+"There may be or may not be files with your lang code. If not, you can "
+"create your own. by copying and renaming other language files you know "
+"with your own lang code."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:137
+msgid ""
+"Create files:\n"
+"If the file for your language does not exist yet, copy another language "
+"file to a new file foo_xx.bar
for your language.\n"
+"Then \"mtn add
\" the file.\n"
+"After creating a .po file, edit the headers. Then run \"ant "
+"distclean poupdate
\"."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:144
+msgid ""
+"Start to work:\n"
+"Edit the HTML files with any text editor.\n"
+"Be sure not to use an editor in HTML mode that reformats everything.\n"
+"To work with .po files efficiently, you may wish to use POEdit"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:163
+msgid ""
+"As you can see, it's not that difficult.\n"
+"If you have questions about the meaning of the terms in the console, ask "
+"in #i2p-dev
on IRC."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:169
+msgid "FAQ"
+msgstr "FAQ"
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:171
+msgid ""
+"Q: Why do I have to install monotone, Java, jsp, learn about .po files "
+"and html, etc.? Why can't I just do a translation and email it to you?"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:175
+msgid "A: Several reasons:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:178
+#, python-format
+msgid ""
+"You might be interested in translating via Transifex. Request to join a "
+"translation team here."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:182
+msgid ""
+"We don't have anybody who has time to accept manual contributions and "
+"submit them to our source control system on your behalf. Even if we did, "
+"it doesn't scale."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:186
+msgid ""
+"Maybe you are thinking translation is a one-step process. It isn't. You "
+"can't do it all at once. You will make mistakes. You need to test it and "
+"tweak it to make it look right before you submit it. Developers "
+"will update or add to the English text, thus requiring a translation "
+"update."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:190
+msgid ""
+"Having translators use a source control system directly provides "
+"authentication and accountablility - we know who is doing what, and we "
+"can track changes, and revert them if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:194
+msgid ""
+".po files are not difficult. If you don't want to work directly with "
+"them, we recommend 'poedit'."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:198
+msgid ""
+"HTML files are not difficult. Just ignore the html stuff and translate "
+"the text."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:202
+msgid ""
+"Installing and using monotone is not that difficult. Several of the "
+"translators and other contributors to I2P are non-programmers, and they "
+"use monotone regularly. Monotone is simply a source control system, it is"
+" not about \"coding\"."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:206
+msgid ""
+"Our items to translate are not \"documents\". They are html files and po "
+"files, with a specific format and character encoding (UTF-8) that must be"
+" maintained, and not corrupted by email programs or other methods of "
+"transfer."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:210
+msgid ""
+"We looked at 'pootle' as a front-end for translators. It didn't work "
+"well, needed an administrator, and a pootle-based process would suffer "
+"from a number of the above flaws."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:215
+msgid ""
+"In summary:\n"
+"Yes, we know it is somewhat of a hurdle to get started. It's really the "
+"only possible way we can do it. Give it a try, it really isn't that hard."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:220
+msgid "More Information"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/new-translators.html:221
+#, python-format
+msgid ""
+"The #i2p-dev channel on IRC, or the translation forum on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:2
+msgid "How to Set up a Reseed Server"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:3
+msgid "February 2017"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:6
+msgid "Overview"
+msgstr "İcmal"
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:8
+msgid ""
+"Thank you for volunteering to run an I2P reseed server.\n"
+"\"Reseeding\" is our term for bootstrapping new routers into the network."
+"\n"
+"New routers fetch a bundle of peer references, or \"router infos\", from "
+"one or more of a hardcoded list of HTTPS URLs."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:14
+msgid "Requirements"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:16
+msgid ""
+"At its simplest, a reseed server consists of a Java I2P router, an HTTPS "
+"web server,\n"
+"and some scripts that periodically gather router infos from the router,\n"
+"bundle and sign them into a custom file format, and deliver these files "
+"over HTTPS.\n"
+"In practice, it's a bit more complex, and a reseed operator must be "
+"fairly competent and attentive.\n"
+"A reseed server is not appropriate for a residential internet connection."
+" The complexities include:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:25
+msgid ""
+"You must have a secure SSL setup with either a self-signed certificate or"
+" a cert that chains up to a standard CA"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:28
+msgid ""
+"The SSL configuration must conform to current best practices on allowed "
+"ciphers and protocols, and the CN/SAN host name must match the URL"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:31
+msgid ""
+"The scripts are designed to deliver different router info bundles to "
+"different requestors for network diversity"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:34
+msgid ""
+"The scripts are designed to deliver the same bundle to the same repeated "
+"requestor to prevent scraping"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:37
+msgid ""
+"The reseed servers are under periodic attacks and DDoS attempts, and from"
+" other buggy I2P implementations and botnets.\n"
+"This necessitates that you run fail2ban or an equivalent solution."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:43
+msgid "Information Required"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:45
+msgid ""
+"When your setup is complete and ready for testing, we will need the HTTPS"
+" URL,\n"
+"the SSL public key certificate, and the \"su3\" bundle public key.\n"
+"After testing is complete, these will be added to the hardcoded entries "
+"in the Java and C++ routers in the next release,\n"
+"and you will start seeing traffic.\n"
+"We also will need your email address so we may continue to contact you "
+"about reseed administration issues.\n"
+"The email will not be made public but will be known to the other reseed "
+"operators.\n"
+"You should expect that your nick or name and its association with that "
+"URL or IP will become public."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:55
+msgid "Privacy Policy"
+msgstr "Təhlükəsizlik qaydaları"
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:57
+msgid ""
+"A reseed operator is a trusted role in the network.\n"
+"While we do not yet have a formal privacy policy, you must ensure the "
+"privacy of our users\n"
+"by not publicizing logs or IPs found in those logs, except as necessary "
+"to discuss administration issues with the I2P reseed team."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:63
+msgid "Financial Support"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:65
+msgid ""
+"Modest financial support may be available to those running reseed "
+"servers.\n"
+"This support would be in partial reimbursement for your server costs.\n"
+"Support will not be paid in advance and will probably not cover all your "
+"expenses.\n"
+"Support is only available to those who have been running reseed servers "
+"in good standing for several months, and is based on actual need."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:72
+msgid ""
+"If you would like to discuss support, please contact echelon and CC: "
+"backup."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:77
+msgid "Getting Started"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:79
+msgid ""
+"Our reseed coordinator is \"backup\" and he may be contacted at backup at"
+" mail.i2p or backup at i2pmail.org.\n"
+"Unfortunately, he is not generally on IRC. The reseed setup is somewhat "
+"specialized, and you should direct most questions to him."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:84
+msgid ""
+"For actual implementation, details below. We have one recommended reseed "
+"solution:"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:89
+msgid ""
+"A Go implementation that includes the web server and all the scripts. "
+"This is the recommended solution."
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:95
+msgid ""
+"For further information, read the information at the following links, and"
+" then contact backup.\n"
+"Thank you!"
+msgstr ""
+
+#: i2p2www/pages/site/get-involved/guides/reseed.html:110
+msgid "Detailed Instructions"
+msgstr ""
+
diff --git a/i2p2www/translations/az/LC_MESSAGES/priority.po b/i2p2www/translations/az/LC_MESSAGES/priority.po
new file mode 100644
index 00000000..b0183ba1
--- /dev/null
+++ b/i2p2www/translations/az/LC_MESSAGES/priority.po
@@ -0,0 +1,2765 @@
+# Azerbaijani translations for I2P.
+# Copyright (C) 2018 ORGANIZATION
+# This file is distributed under the same license as the I2P project.
+#
+# Translators:
+# Nikafn ppa:i2p-maintainers/i2p
into the APT-line field and click "
+"Add Source. Click the Close button then "
+"Reload."
+msgstr ""
+"Digər Mənbələr bölümünü seçib, Əlavə Et-i klikləyin. "
+"APT-xətti ərazisinə ppa:i2p-maintainers/i2p
kodunu "
+"yapışdırıb, sırayla Mənbə Əlavə et, Bağla və "
+"Yeniden Yüklə-nin üzərinə klikləyin."
+
+#: i2p2www/pages/downloads/debian.html:77
+msgid ""
+"In the Quick Filter box, type in i2p
and press enter. When "
+"i2p
is returned in the results list, right click "
+"i2p
and select Mark for Installation. After doing "
+"so you may see a Mark additional required changes? popup. If so,"
+" click Mark then Apply."
+msgstr ""
+"Sürətli Filtr qutusuna i2p
yazıb, Enter düyməsini seçin. "
+"i2p
nəticələri görünəndə, i2p
üzərinə sağla "
+"klikləyib, Quraşdırmaq üçün işarəsi ilə seçiminizi işarələyin. "
+"Bundan sonra Başqa dəyişiklikləri işarələmək "
+"istəyirsinizmi?yazılan pəncərə görünür. İstəyirsinizsə, "
+"İşarələ və Tətbiq et üzərində klikləyin. "
+
+#: i2p2www/pages/downloads/debian.html:83
+msgid ""
+"After the installation process completes you can move on to the next\n"
+"part of starting I2P and configuring "
+"it for your system."
+msgstr ""
+"Quraşdırma tamamlananda, I2P başlayır "
+"növbəti hissəsinə və sisteminiz üçün \n"
+"quraşdırılmasına keçə bilərsiniz."
+
+#: i2p2www/pages/downloads/debian.html:88
+msgid "Instructions for Debian"
+msgstr "Debian üçün Təlimatlar"
+
+#: i2p2www/pages/downloads/debian.html:90
+msgid ""
+"Currently supported architectures include amd64, i386, armel, armhf (for "
+"Raspbian)."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:92
+msgid ""
+"Note: The steps below should be performed with root access (i.e., "
+"switching\n"
+"user to root with su
or by prefixing each command with "
+"sudo
)."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:97
+msgid ""
+"Ensure that apt-transport-https
and curl
are "
+"installed."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:104
+#, python-format
+msgid ""
+"\n"
+" Check which version of Debian you are using on this page at the Debian wiki"
+" \n"
+" and verify with %(file2)s
on your system.\n"
+" Then, add lines like the following to %(file)s
."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:130
+msgid ""
+"Note: If you are running Debian Sid (testing), then you can install I2P "
+"directly from Debian's main repository"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:137
+#, python-format
+msgid "Download the key used to sign the repository:"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:148
+msgid "Check the fingerprint and owner of the key without importing anything"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:156
+msgid "Add the key to APT's keyring"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:164
+msgid "Notify your package manager of the new repository by entering"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:169
+msgid ""
+"This command will retrieve the latest list of software from every\n"
+"repository enabled on your system, including the I2P repository added in "
+"step\n"
+"1."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:175
+msgid ""
+"You are now ready to install I2P! Installing the i2p-keyring
"
+"\n"
+"package will ensure that you receive updates to the repository's GPG key."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:185
+msgid ""
+"After the installation process completes you can move on to the next part"
+" of starting I2P and configuring it "
+"for your system."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:190
+#: i2p2www/pages/downloads/post-install.html:1
+msgid "Post-install work"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:192
+msgid ""
+"Using these I2P packages the I2P router can be started in the following\n"
+"three ways:"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:198
+msgid ""
+""on demand" using the i2prouter script. Simply run "
+""i2prouter\n"
+"start
" from a command prompt. (Note: Do "
+"not use\n"
+"sudo or run it as root!)"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:205
+msgid ""
+""on demand" without the java service wrapper\n"
+"(needed on non-Linux/non-x86 systems) by running \"i2prouter-"
+"nowrapper
\".\n"
+"(Note: Do not\n"
+"use sudo or run it as root!)"
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:213
+msgid ""
+"as a service that automatically runs when your system boots, even\n"
+"before logging in. The service can be enabled with \"dpkg-"
+"reconfigure\n"
+"i2p
\" as root or using sudo. This is the recommended means of "
+"operation."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:221
+msgid ""
+"When installing for the first time, please remember to adjust your "
+"NAT/firewall\n"
+"if you can. The ports to forward can be found on the \n"
+"network configuration page in the router console. If guidance with "
+"respect to forwarding ports is needed,\n"
+"you may find portforward.com to be"
+" helpful."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:228
+msgid ""
+"Please review and adjust the bandwidth settings on the\n"
+"configuration page,\n"
+"as the default settings of 96 KB/s down / 40 KB/s up are fairly "
+"conservative."
+msgstr ""
+
+#: i2p2www/pages/downloads/debian.html:234
+#: i2p2www/pages/downloads/post-install.html:34
+#, python-format
+msgid ""
+"If you want to reach eepsites via your browser, have a look on the browser proxy setup page for an easy "
+"howto."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:6 i2p2www/pages/downloads/select.html:15
+#: i2p2www/pages/global/nav.html:3
+msgid "Download"
+msgstr "Endir"
+
+#: i2p2www/pages/downloads/list.html:14
+msgid "Source package"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:15 i2p2www/pages/downloads/list.html:160
+msgid "Automatic updates"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:16
+msgid "Manual updates"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:21
+msgid "Dependency"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:22
+#, python-format
+msgid ""
+"\n"
+"Java Runtime Version 7 or higher.\n"
+"(Oracle,\n"
+"OpenJDK, or\n"
+"IcedTea\n"
+"Java Version 7 or 8 recommended,\n"
+"except Raspberry Pi: Oracle JDK 8 for ARM,\n"
+"PowerPC: IBM Java SE 7 or 8)\n"
+"java -jar i2pinstall_%(i2pversion)s.jar
in a "
+"terminal to run the\n"
+" installer.\n"
+" You may be able to right-click and select\n"
+" "Open with Java"."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:77 i2p2www/pages/downloads/list.html:93
+msgid "Command line (headless) install:"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:78
+#, python-format
+msgid ""
+"Download the %(i2pversion)s OSX graphical installer file above and\n"
+" run java -jar i2pinstall_%(i2pversion)s.jar -console
"
+"from the command line."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:85
+#, python-format
+msgid ""
+"Download that file and double-click it (if that works) or\n"
+" type java -jar i2pinstall_%(i2pversion)s.jar
in a "
+"terminal to run the\n"
+" installer.\n"
+" On some platforms you may be able to right-click and select\n"
+" "Open with Java"."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:94
+#, python-format
+msgid ""
+"Download the graphical installer file above and\n"
+" run java -jar i2pinstall_%(i2pversion)s.jar -console
"
+"from the command line."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:102
+msgid "Packages for Debian & Ubuntu are available."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:108
+msgid ""
+"Requires Android 2.3 (Gingerbread) or higher. If you earlier installed\n"
+" I2P, you need to reinstall because we have also changed the release"
+" keys."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:112
+msgid "512 MB RAM minimum; 1 GB recommended."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:115
+msgid ""
+"The release and dev versions of the I2P APK are not compatible, as they\n"
+" are signed by zzz and str4d respectively. Uninstall one before "
+"installing\n"
+" the other."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:124
+#, python-format
+msgid ""
+"Alternately, you can fetch the source from monotone\n"
+" or via Git from git.repo.i2p or Github.\n"
+" (tar xjvf i2psource_%(i2pversion)s.tar.bz2 ; cd "
+"i2p-%(i2pversion)s ; ant pkg)
then either\n"
+" run the GUI installer or headless install as above."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:134
+#, python-format
+msgid ""
+"Android source is in monotone\n"
+" and on Github.\n"
+" Android builds require the I2P source.\n"
+" See the documentation in the Android source for additional build "
+"requirements and instructions."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:145
+#, python-format
+msgid ""
+"The files are signed by %(signer)s,\n"
+"whose key is here."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:154
+msgid "Updates from earlier releases:"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:156
+msgid "Both automatic and manual upgrades are available for the release."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:161
+msgid ""
+"If you are running 0.7.5 or later, your router should detect the\n"
+"new release. To upgrade simply click the 'Download Update' button on your"
+" router console\n"
+"when it appears."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:167
+msgid ""
+"Since 0.9.23, some releases are signed by str4d, whose signing key has "
+"been in the router\n"
+"since 0.9.9. Routers older than 0.9.9 will fail to verify update files "
+"signed by str4d,\n"
+"and will need to be manually updated using the process below."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:178
+msgid ""
+"Download that file to your I2P\n"
+" installation directory and rename as i2pupdate.zip.\n"
+" (alternately, you can get the source as above and run \"ant "
+"updater\", then copy the\n"
+" resulting i2pupdate.zip to your I2P installation directory). You do"
+" \n"
+" NOT need to unzip that file."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:187
+msgid "Click \"Restart\""
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:192
+msgid "Grab a cup of coffee and come back in 11 minutes"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:199
+#, python-format
+msgid ""
+"The file is signed by %(signer)s,\n"
+"whose key is here."
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:205
+msgid "Previous Releases"
+msgstr ""
+
+#: i2p2www/pages/downloads/list.html:207
+#, python-format
+msgid ""
+"Previous releases are available on Google "
+"Code\n"
+"and Launchpad\n"
+"and within the I2P network on %(echelon)s."
+msgstr ""
+
+#: i2p2www/pages/downloads/post-install.html:3
+msgid ""
+"After running the installer on windows, simply click on the \"Start I2P\""
+" button\n"
+"which will bring up the router console,\n"
+"which has further instructions."
+msgstr ""
+
+#: i2p2www/pages/downloads/post-install.html:9
+msgid ""
+"On Unix-like systems, I2P can be started as a service\n"
+"using the \"i2prouter\" script, located in the directory you selected for"
+" I2P.\n"
+"Changing to that directory in a console and issuing \"sh i2prouter "
+"status\"\n"
+"should tell you the router's status. The arguments \"start\", \"stop\" "
+"and \"restart\"\n"
+"control the service. The router console\n"
+"can be accessed at its usual location.\n"
+"For users on OpenSolaris and other systems for which the wrapper (i2psvc)"
+" is not supported,\n"
+"start the router with \"sh runplain.sh\" instead."
+msgstr ""
+
+#: i2p2www/pages/downloads/post-install.html:20
+#, python-format
+msgid ""
+"When installing for the first time, please remember to adjust your "
+"NAT/firewall\n"
+"if you can, bearing in mind the Internet-facing ports I2P uses,\n"
+"described here among other ports.\n"
+"If you have successfully opened your port to inbound TCP, also enable "
+"inbound TCP on the\n"
+"configuration page."
+msgstr ""
+
+#: i2p2www/pages/downloads/post-install.html:28
+msgid ""
+"Also, please review and adjust the bandwidth settings on the\n"
+"configuration page,\n"
+"as the default settings of 96 KBps down / 40 KBps up are fairly slow."
+msgstr ""
+
+#: i2p2www/pages/downloads/redirect.html:2
+msgid "Downloading..."
+msgstr ""
+
+#: i2p2www/pages/downloads/redirect.html:8
+#, python-format
+msgid ""
+"Your download will begin shortly. If it doesn't start within 5 seconds, "
+"click here."
+msgstr ""
+
+#: i2p2www/pages/downloads/select.html:2 i2p2www/pages/downloads/select.html:4
+msgid "Mirror selection"
+msgstr ""
+
+#: i2p2www/pages/downloads/select.html:5
+msgid "File:"
+msgstr ""
+
+#: i2p2www/pages/downloads/select.html:10
+msgid "Any mirror"
+msgstr ""
+
+#: i2p2www/pages/global/bounty.html:19
+msgid ""
+"To claim the bounty the author must not be paid by other organizations\n"
+"or teams for this work (e.g. GSoC students are not valid)."
+msgstr ""
+
+#: i2p2www/pages/global/bounty.html:29
+#, python-format
+msgid ""
+"Bounty amounts may be increased by further donations. Do\n"
+"you think these are important? Add in your "
+"donation, \n"
+"marking the amount for the %(donatename)s bounty!"
+msgstr ""
+
+#: i2p2www/pages/global/error_404.html:3
+msgid "Not found"
+msgstr ""
+
+#: i2p2www/pages/global/error_404.html:9
+msgid ""
+"Yep... the resource, you were searching for, is named differently, "
+"doesn't exist or was removed."
+msgstr ""
+
+#: i2p2www/pages/global/error_500.html:5
+msgid "Server error"
+msgstr ""
+
+#: i2p2www/pages/global/error_500.html:13
+msgid "500 Server error"
+msgstr ""
+
+#: i2p2www/pages/global/error_500.html:17
+msgid "Umm... the server encountered some sort of error."
+msgstr ""
+
+#: i2p2www/pages/global/footer.html:17 i2p2www/pages/global/nav.html:126
+msgid "Donate"
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:35
+msgid "Skip navigation"
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:38
+msgid "I2P Logo"
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:38 i2p2www/pages/site/index.html:3
+msgid "The Invisible Internet Project"
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:80
+#, python-format
+msgid ""
+"This page was last updated in %(lastupdated)s and is accurate for router "
+"version %(accuratefor)s."
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:84
+#, python-format
+msgid "This page was last updated in %(lastupdated)s."
+msgstr ""
+
+#: i2p2www/pages/global/layout.html:88
+#, python-format
+msgid "This page is accurate for router version %(accuratefor)s."
+msgstr ""
+
+#: i2p2www/pages/global/macros:26
+msgid "Previous"
+msgstr "Əvvəlki"
+
+#: i2p2www/pages/global/macros:41
+msgid "Next"
+msgstr "Növbəti"
+
+#: i2p2www/pages/global/macros:54
+msgid "Posted in"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:4
+msgid "About"
+msgstr "Haqqında"
+
+#: i2p2www/pages/global/nav.html:6
+msgid "Introduction to I2P"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:7
+msgid "Comparisons"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:9
+msgid "Overview of comparisons"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:13
+msgid "Other anonymous networks"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:16
+msgid "Documentation"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:18
+msgid "Documentation index"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:19
+msgid "How does it work?"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:21
+msgid "Gentle intro"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:22
+msgid "Tech intro"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:23
+msgid "Threat model"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:24
+msgid "Garlic routing"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:25
+msgid "Network database"
+msgstr "Şəbəkə verilənlər bazası"
+
+#: i2p2www/pages/global/nav.html:26
+msgid "Tunnel routing"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:27
+msgid "Peer selection"
+msgstr "Bənzərlərin seçimi"
+
+#: i2p2www/pages/global/nav.html:28
+msgid "Cryptography"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:29
+msgid "ElGamal/AES+SessionTags"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:32
+msgid "Specifications"
+msgstr "Xüsusiyyətlər"
+
+#: i2p2www/pages/global/nav.html:33
+msgid "Proposals"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:34
+msgid "API"
+msgstr "APİ"
+
+#: i2p2www/pages/global/nav.html:40
+msgid "Streaming library"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:41
+msgid "Datagrams"
+msgstr "Dataqtamlar"
+
+#: i2p2www/pages/global/nav.html:45 i2p2www/pages/global/nav.html:109
+msgid "Applications"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:47
+msgid "Supported applications"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:48
+msgid "Bittorrent"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:51
+msgid "Protocols"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:53
+msgid "Protocol stack"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:58
+msgid "Transports"
+msgstr "Nəqliyyatlar"
+
+#: i2p2www/pages/global/nav.html:60
+msgid "Transport layer overview"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:65
+msgid "Tunnels"
+msgstr "Tunellər"
+
+#: i2p2www/pages/global/nav.html:67
+msgid "Tunnel implementation"
+msgstr ""
+
+#: i2p2www/pages/global/nav.html:68
+msgid "Unidirectional tunnels"
+msgstr "Tək istiqamətli tunellər"
+
+#: i2p2www/pages/global/nav.html:69
+msgid "Old implementation"
+msgstr "Köhnə tətbiq"
+
+#: i2p2www/pages/global/nav.html:72
+msgid "Naming and addressbook"
+msgstr "Adlandırma və ünvan kitabçası"
+
+#: i2p2www/pages/global/nav.html:73
+msgid "Plugins"
+msgstr "Qoşmalar"
+
+#: i2p2www/pages/global/nav.html:74
+msgid "Reseed"
+msgstr "Kompleks"
+
+#: i2p2www/pages/global/nav.html:77
+msgid "Team"
+msgstr "Komanda"
+
+#: i2p2www/pages/global/nav.html:79
+msgid "Hall of Fame"
+msgstr "Şöhrət zalı"
+
+#: i2p2www/pages/global/nav.html:80
+msgid "Academic papers and peer review"
+msgstr "Akademik məqalələr və ekspert qiymətləndirməsi "
+
+#: i2p2www/pages/global/nav.html:82
+msgid "Presentations, tutorials and articles"
+msgstr "Təqdimatlar, elmi materiallar və məqalələr"
+
+#: i2p2www/pages/global/nav.html:83
+msgid "Contact us"
+msgstr "Bizimlə əlaqə saxlayın"
+
+#: i2p2www/pages/global/nav.html:84 i2p2www/pages/site/links.html:2
+msgid "Links"
+msgstr "Linklər"
+
+#: i2p2www/pages/global/nav.html:85
+msgid "Impressum"
+msgstr "Minnətdarlıq"
+
+#: i2p2www/pages/global/nav.html:88
+msgid "Help"
+msgstr "Kömək"
+
+#: i2p2www/pages/global/nav.html:90
+msgid "FAQ"
+msgstr "FAQ"
+
+#: i2p2www/pages/global/nav.html:91
+msgid "How to browse I2P"
+msgstr "İ2P-yə necə baxmalı "
+
+#: i2p2www/pages/global/nav.html:92
+msgid "Glossary"
+msgstr "Sözlük"
+
+#: i2p2www/pages/global/nav.html:93
+msgid "Performance"
+msgstr "Məhsuldarlıq"
+
+#: i2p2www/pages/global/nav.html:94 i2p2www/pages/site/contact.html:43
+msgid "Forums"
+msgstr "Forumlar"
+
+#: i2p2www/pages/global/nav.html:95
+msgid "Verify I2P"
+msgstr "I2P-ni yoxlamaq"
+
+#: i2p2www/pages/global/nav.html:97
+msgid "Release signing keys"
+msgstr "Buraxılış üçün imza açarları"
+
+#: i2p2www/pages/global/nav.html:98
+msgid "Signed keys"
+msgstr "İmzalanmış açarlar"
+
+#: i2p2www/pages/global/nav.html:99
+msgid "Developers keys"
+msgstr "Yaradıcıların açarları"
+
+#: i2p2www/pages/global/nav.html:104
+msgid "Volunteer"
+msgstr "Könüllü"
+
+#: i2p2www/pages/global/nav.html:106
+msgid "Get involved!"
+msgstr "Qoşulun!"
+
+#: i2p2www/pages/global/nav.html:107
+msgid "Develop"
+msgstr "İnkişaf"
+
+#: i2p2www/pages/global/nav.html:110
+msgid "Licenses"
+msgstr "Lisenziyalar"
+
+#: i2p2www/pages/global/nav.html:111
+msgid "Bug tracker"
+msgstr "Xəta indikatoru"
+
+#: i2p2www/pages/global/nav.html:114
+msgid "Academic research"
+msgstr "Akademik araşdırma"
+
+#: i2p2www/pages/global/nav.html:115
+msgid "Open research questions"
+msgstr "Tədqiqatın açıq sualları"
+
+#: i2p2www/pages/global/nav.html:116
+msgid "Guides"
+msgstr "Qaydalar"
+
+#: i2p2www/pages/global/nav.html:118
+msgid "New developers"
+msgstr "Yeni yaradıcılar"
+
+#: i2p2www/pages/global/nav.html:119
+msgid "Using an IDE with I2P"
+msgstr "I2P ilə bir IDE istifadə etmək "
+
+#: i2p2www/pages/global/nav.html:120
+msgid "Developer guidelines and coding style"
+msgstr "Yaradıcı qaydaları və kodlaşdırma tərzi "
+
+#: i2p2www/pages/global/nav.html:121
+msgid "Monotone"
+msgstr "Monoton"
+
+#: i2p2www/pages/global/nav.html:122
+msgid "New translators"
+msgstr "Yeni tərcüməçilər"
+
+#: i2p2www/pages/global/nav.html:125
+msgid "Bounties"
+msgstr "Mükafatlar"
+
+#: i2p2www/pages/global/nav.html:127
+msgid "Meetings"
+msgstr "Görüşlər"
+
+#: i2p2www/pages/global/nav.html:128
+msgid "Roadmap"
+msgstr "Yol xəritəsi"
+
+#: i2p2www/pages/global/nav.html:129
+msgid "Task list"
+msgstr "Tapşırıq siyahısı"
+
+#: i2p2www/pages/global/nav.html:132
+msgid "Language"
+msgstr "Dil"
+
+#: i2p2www/pages/meetings/index.html:2
+msgid "Logs of past I2P meetings"
+msgstr "Keçmiş I2P görüşlərinin qeydiyyatı"
+
+#: i2p2www/pages/meetings/index.html:4
+msgid "I2P Meetings ATOM Feed"
+msgstr "I2P Görüşləri ATOM Axını"
+
+#: i2p2www/pages/meetings/index.html:7
+#, python-format
+msgid ""
+"Regularly scheduled project meetings are held on the first Tuesday of "
+"every month at 8 PM UTC.\n"
+"Anyone can schedule and\n"
+"run a meeting, by posting the agenda in\n"
+"the meetings forum."
+msgstr ""
+"Layihə görüşləri hər ayın ilk çərşənbə axşamı günü axşam saat 8-də UTC "
+"keçirilir. \n"
+"İstəyən hər bir kəs \n"
+"görüşlər forumunda bir görüş planlayaraq, "
+"keçirə bilər. "
+
+#: i2p2www/pages/meetings/index.html:14
+#, python-format
+msgid ""
+"If you have something to discuss, please find the developers on IRC in "
+"#i2p-dev.\n"
+"Status updates from developers are also "
+"available."
+msgstr ""
+"Müzakirə etmək istədiyiniz mövzular üçün yaradıcıları #i2p-dev. İRC "
+"kanalında tapın. \n"
+"Yaradıcıların Status yeniləmələridə "
+"mövcuddur."
+
+#: i2p2www/pages/meetings/show.html:2
+#, python-format
+msgid "I2P Development Meeting %(id)s"
+msgstr "İ2P Yaradıcıların Görüşü%(id)s"
+
+#: i2p2www/pages/meetings/show.html:10
+msgid "Full IRC Log"
+msgstr "Tam İRC Qeydiyyatı"
+
+#: i2p2www/pages/papers/list.html:28
+msgid "By topic"
+msgstr "Mövzuya görə"
+
+#: i2p2www/pages/papers/list.html:34
+msgid "By date"
+msgstr "Tarixə görə"
+
+#: i2p2www/pages/papers/list.html:40
+msgid "By author"
+msgstr "Müəllifə görə"
+
+#: i2p2www/pages/papers/list.html:69
+#, python-format
+msgid ""
+"Please send new or corrected entries to\n"
+"%(email)s.wrapper.log
I see an error stating Protocol family "
+"unavailable
when I2P is loading"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:39 i2p2www/pages/site/faq.html:920
+msgid "Most of the eepsites within I2P are down?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:40
+msgid "Why is I2P listening for connections on port 32000?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:41 i2p2www/pages/site/faq.html:942
+msgid "I think I found a bug, where can I report it?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:42 i2p2www/pages/site/faq.html:974
+msgid "I have a question!"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:51
+#, python-format
+msgid ""
+"I2P is written in the Java programming language."
+" \n"
+"It has been tested on Windows, Linux, FreeBSD and OSX. \n"
+"An Android port is also available."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:58
+msgid ""
+"In terms of memory usage, I2P is configured to use 128 MB of RAM by "
+"default. \n"
+"This is sufficient for browsing and IRC usage. However, other activities "
+"may require greater memory allocation. \n"
+"For example, if one wishes to run a high-bandwidth router, participate in"
+" I2P torrents or serve high-traffic hidden services, \n"
+"a higher amount of memory is required."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:63
+#, python-format
+msgid ""
+"In terms of CPU usage, I2P has been tested to run on modest systems such "
+"as the Raspberry Pi range of single-board "
+"computers.\n"
+"As I2P makes heavy use of cryptographic techniques, a stronger CPU will "
+"be better suited to handle the workload generated by I2P as well as tasks"
+" \n"
+"related to the rest of the system (i.e. Operating System, GUI, Other "
+"processes e.g. Web Browsing)."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:68
+#, python-format
+msgid ""
+"A comparison of some of the available Java Runtime Environments (JRE) is "
+"available here: \n"
+"%(chart)s.\n"
+"\n"
+"Using Sun/Oracle Java or OpenJDK is recommended."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:77
+#, python-format
+msgid ""
+"While the main I2P client implementation requires Java, there are several"
+"\n"
+"alternative clients which don't require Java."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:83
+msgid "Whats an \"eepsite\"?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:85
+msgid ""
+"An eepsite is a website that is hosted anonymously, a hidden service "
+"which is accessible through your web browser. \n"
+"It can be accessed by setting your web browser's HTTP proxy to use the "
+"I2P web proxy (typically it listens on localhost port 4444), and browsing"
+" to the site."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:93
+msgid ""
+"x is the number of peers you've sent or received a message from "
+"successfully in the last minute, y is the number of peers seen in the "
+"last hour or so. \n"
+"Try hovering your cursor over the other lines of information for a brief "
+"description."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:99
+msgid ""
+"Is my router an \"exit node\" to the regular Internet? I don't want it to"
+" be."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:101
+#, python-format
+msgid ""
+"No. Unlike Tor, \"exit "
+"nodes\" - or \"outproxies\" as they are referred to on the I2P network -"
+" \n"
+"are not an inherent part of the network. \n"
+"Only volunteers who specifically set up and run separate applications "
+"will relay traffic to the regular Internet. \n"
+"There are very, very few of these.\n"
+"\n"
+"By default, I2P's HTTP Proxy (configured to run on port 4444) includes a "
+"single outproxy: false.i2p. This is run on a voluntary basis by Meeh.\n"
+"\n"
+"There is an outproxy guide available on our "
+"forums, if you would like to learn more about running an outproxy."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:115
+msgid ""
+"I2P is primarily not intended, nor designed, to be used as a proxy to the"
+" regular internet. \n"
+"With that said, there are services which are provided by volunteers that "
+"act as proxies to clearnet based content - these are referred to as "
+"\"outproxies\" on the I2P network. \n"
+"There is an outproxy configured by default in I2P's HTTP client tunnel - "
+"false.i2p. \n"
+"While this service does currently exist, there is no guarantee that it "
+"will always be there as it is not an official service provided by the I2P"
+" project. \n"
+"If your main requirement from an anonymous network is the ability to "
+"access clearnet resources, we would recommend using Tor."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:126
+msgid ""
+"I2P does not encrypt the Internet, neither does Tor - for example, "
+"through Transport"
+" Layer Security (TLS). \n"
+"I2P and Tor both aim to transport your traffic as-is securely and "
+"anonymously over the corresponding network, to its destination. \n"
+"Any unencrypted traffic generated at your system will arrive at the "
+"outproxy (on I2P) or the exit node (on Tor) as unencrypted traffic. \n"
+"This means that you are vulnerable to snooping by the outproxy operators."
+" \n"
+"One way to protect your outproxy traffic against this is to ensure that "
+"any traffic that will be handled by the outproxy is encrypted with TLS."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:134
+msgid ""
+"For more information, you may read the Tor FAQ's answer to this question:"
+"\n"
+"https://www.torproject.org/docs/faq#CanExitNodesEavesdrop"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:139
+#, python-format
+msgid ""
+"In addition, you may be vulnerable to collusion between the outproxy "
+"operator\n"
+"and operators of other I2P services, if you use the same tunnels "
+"(\"shared clients\").\n"
+"There is additional discussion about this on %(zzz)s.\n"
+"This discussion has been mirrored on our "
+"forums as well."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:146
+#, python-format
+msgid ""
+"\n"
+"Ultimately, this is a question that only you can answer because the "
+"correct answer depends on your browsing behaviour, \n"
+"your threat model, and how much you "
+"choose to trust the outproxy operator."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:154
+msgid ""
+"I2P is an anonymous network - it is designed to withstand attempts at "
+"blocking or censoring of content, thus providing a means for "
+"communication that anyone can use. \n"
+"I2P traffic that transits through your router is encrypted with several "
+"layers of encryption. \n"
+"Except in the case of a serious security vulnerability (of which none are"
+" currently known), \n"
+"it is not possible to know what the contents of the traffic are and thus "
+"not possible to distinguish between traffic which one is opposed to or "
+"not opposed to. \n"
+"\n"
+" We consider the 3 parts of the question:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:164
+msgid ""
+"Distributionlocalhost "
+"6668
. \n"
+"HexChat-like client users can create a new network with the server "
+"localhost/6668
(remember to tick \"Bypass proxy server\" if "
+"you have a proxy server configured).\n"
+"Weechat users can use the following command to add a new network:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:217
+msgid ""
+"Click on the Website link at the "
+"top of your router console for instructions."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:224
+msgid "The ports that are used by I2P can be divided into 2 sections:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:229
+msgid ""
+"Internet-facing ports, which are used for communication with other I2P "
+"routers"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:230
+msgid "Local ports, for local connections"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:233
+msgid "These are described in detail below."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:238
+msgid ""
+"Internet-facing portsi2np.upnp.HTTPPort=nnnn
. \n"
+" May be disabled on confignet."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:345
+msgid ""
+"Binds to the LAN address. \n"
+" May be changed with advanced config "
+"i2np.upnp.SSDPPort=nnnn
. \n"
+" May be disabled on confignet."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:358
+msgid ""
+"Used by client apps. \n"
+" May be changed to a different port on configclients but this "
+"is not recommended. \n"
+" May be to bind to a different interface or all interfaces, or "
+"disabled, on configclients."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:371
+msgid ""
+"A higher level socket API for clients Only opened when a SAM V3 client "
+"requests a UDP session. \n"
+" May be enabled/disabled on configclients. \n"
+" May be changed in the clients.config
file with the"
+" SAM command line option sam.udp.port=nnnn
."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:384
+msgid ""
+"A higher level socket API for clients Disabled by default for new "
+"installs as of release 0.6.5. \n"
+" May be enabled/disabled on configclients. \n"
+" May be changed in the clients.config
file."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:397
+msgid ""
+"May be disabled in the clients.config
file. \n"
+" May also be configured to be bound to a specific interface or "
+"all interfaces in that file."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:409
+msgid ""
+"May be disabled in the clients.config
file. \n"
+" May also be configured to be bound to a specific interface or "
+"all interfaces in the jetty.xml
file."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:421 i2p2www/pages/site/faq.html:433
+#: i2p2www/pages/site/faq.html:445
+msgid ""
+"May be disabled or changed on the i2ptunnel page in the router console. \n"
+" May also be configured to be bound to a specific interface or "
+"all interfaces."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:457
+msgid ""
+"Outbound to 32000 only, does not listen on this port. \n"
+" Starts at 31000 and will increment until 31999 looking for a "
+"free port. \n"
+" To change, see the wrapper documentation. \n"
+" For more information see below."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:471
+msgid ""
+"To change, see the wrapper documentation. \n"
+" For more information see below."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:479
+msgid ""
+"The local I2P ports and the I2PTunnel ports do not need to be reachable "
+"from \n"
+"remote machines, but *should* be reachable locally. You can also create"
+" \n"
+"additional ports for I2PTunnel instances via "
+"http://localhost:7657/i2ptunnel/ \n"
+"(and in turn, would need to get your firewall to allow you local access, "
+"but \n"
+"not remote access, unless desired)."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:487
+msgid ""
+"So, to summarize, nothing needs to be reachable by unsolicited remote "
+"peers, but\n"
+"if you can configure your NAT/firewall to allow inbound UDP and TCP the "
+"outbound facing port, you'll"
+"\n"
+"get better performance. You will also need to be able to send outbound "
+"UDP packets\n"
+"to arbitrary remote peers (blocking IPs randomly with something like "
+"PeerGuardian\n"
+"only hurts you - don't do it)."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:497
+msgid "This question can be answered in 3 parts:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:502
+msgid ""
+"My router often displays a message saying \"Website Not Found In "
+"Addressbook\", why do I see this message?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:503
+msgid ""
+"Human-readable addresses such as http://website.i2p are references"
+" to a long, random string known as a destination. \n"
+" These references are registered and stored at addressbook services "
+"such as stats.i2p, which is run by zzz. \n"
+" You will often encounter a \"b32\" address. A \"b32\" is a hash "
+"(specifically, a SHA256 hash) of the \n"
+" destination. This hash is appended with \".b32.i2p\" and serves as a "
+"convenient way to link to your hidden service, without requiring any "
+"registration on an addressbook service."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:507
+msgid ""
+"It is possible to add subscriptions to your router's configuration which "
+"may reduce the frequency of these messages."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:508
+msgid "What is an addressbook subscription?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:509
+msgid ""
+"This is a list of files hosted on various I2P websites each of which "
+"contain a list of I2P hosts and their associated destinations."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:510
+msgid ""
+"The addressbook is located at http://localhost:7657/dns where "
+"further information can be found."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:511
+msgid "What are some good addressbook subscription links?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:512
+msgid "You may try the following:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:523
+msgid ""
+"For security purposes, the router's admin console by default only listens"
+" for connections on the local interface. \n"
+"\n"
+"There are two methods for accessing the console remotely:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:529 i2p2www/pages/site/faq.html:535
+msgid "SSH Tunnel"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:530 i2p2www/pages/site/faq.html:554
+msgid ""
+"Configuring your console to be available on a Public IP address with a "
+"username & password"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:532
+msgid "These are detailed below:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:536
+msgid ""
+"If you are running a Unix-like Operating System, this is the easiest "
+"method for remotely accessing your I2P console. \n"
+" (Note: SSH server software is available for systems running "
+"Windows, for example https://github.com/PowerShell/Win32-OpenSSH)"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:538
+msgid ""
+"Once you have configured SSH access to your system, the '-L' flag is "
+"passed to SSH with appropriate arguments - for example:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:556
+msgid "Open ~/.i2p/clients.config
and replace"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:570
+msgid ""
+"Go to http://localhost:7657/configui"
+" and add a console username and password if desired - \n"
+" Adding a username & password is highly recommended to secure "
+"your I2P console from tampering, which could lead to de-anonymization."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:572
+msgid ""
+"Go to http://localhost:7657/index and "
+"hit \"Graceful restart\", \n"
+" which restarts the JVM and reloads the client applications"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:575
+msgid ""
+"After that fires up, you should now be able to reach your console "
+"remotely. \n"
+" Load the router console at http://(System_IP):7657
and"
+" you will be prompted for the username and password you specified in step"
+" 2 above if your browser supports the authentication popup."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:578
+msgid ""
+"NOTE: You can specify 0.0.0.0 in the above configuration. \n"
+" This specifies an interface, not a network or netmask. \n"
+" 0.0.0.0 means \"bind to all interfaces\", so it can be reachable on"
+" 127.0.0.1:7657 as well as any LAN/WAN IP. \n"
+" Be careful when using this option as the console will be available "
+"on ALL addresses configured on your system."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:587
+msgid ""
+"Please see the previous answer for instructions on using SSH Port "
+"Forwarding, and also see this page in your console: \n"
+"http://localhost:7657/configi2cp"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:595
+msgid ""
+"The SOCKS proxy has been functional since release 0.7.1. SOCKS 4/4a/5 are"
+" supported. \n"
+"I2P does not have a SOCKS outproxy so it is limited to use within I2P "
+"only."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:599
+msgid ""
+"Many applications leak sensitive information that could identify you on "
+"the Internet and this is a risk that one should be aware of when using "
+"the I2P SOCKS proxy. \n"
+"I2P only filters connection data, but if the program you intend to run "
+"sends this information as content, I2P has no way to protect your "
+"anonymity. \n"
+"For example, some mail applications will send the IP address of the "
+"machine they are running on to a mail server. \n"
+"There is no way for I2P to filter this, thus using I2P to 'socksify' "
+"existing applications is possible, but extremely dangerous."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:605
+#, python-format
+msgid ""
+"If you would like more information on the socks proxy application anyway,"
+"\n"
+"there are some helpful hints on the socks page."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:613
+msgid ""
+"An I2P router only needs to be seeded once, to join the network for the "
+"first\n"
+"time. Reseeding involves fetching multiple \"RouterInfo\" files (bundled "
+"into a\n"
+"signed zip-file) from at least two predefined server URLs picked from a\n"
+"volunteer-run group of clearnet HTTPS servers."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:620
+msgid ""
+"A typical symptom of a failed reseed is the \"Known\" indicator (on the "
+"left\n"
+"sidebar of the router console) displaying a very small value (often less "
+"than\n"
+"5) which does not increase. This can occur, among other things, if your "
+"local\n"
+"firewall limits outbound traffic or if the reseed request is blocked "
+"entirely."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:627
+msgid ""
+"If you are stuck behind an ISP firewall or filter, you can use the "
+"following\n"
+"manual method (non-automated technical solution) to join the I2P network."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:632
+#, python-format
+msgid ""
+"\n"
+"As of release 0.9.33, you may also configure your router to reseed "
+"through a proxy.\n"
+"Go to %(url)s and configure the proxy type, "
+"hostname, and port."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:637
+msgid "Joining the I2P Network using a reseed file"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:638
+msgid ""
+"Please contact a known trustworthy friend who has a running I2P router, "
+"and ask\n"
+"them for help with reseeding your I2P router. Request that they send you "
+"a\n"
+"reseed file exported from their running I2P router. It is vital that the "
+"file is\n"
+"exchanged over a secure channel, e.g. encrypted to avoid external "
+"tampering (PGP\n"
+"Sign, Encrypt and Verified with a trusted public key). The file itself is"
+"\n"
+"unsigned, so please accept files only from known trusted friends. Never "
+"import\n"
+"a reseed file if you can not verify its source."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:648
+#, python-format
+msgid "To import the received %(filename)s file into your local I2P router:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:650 i2p2www/pages/site/faq.html:662
+#, python-format
+msgid "Go to %(url)s"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:651
+msgid "Under \"Manual Reseed from File\" click \"Browse...\""
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:652
+#, python-format
+msgid "Select the %(filename)s file"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:653
+msgid "Click \"Reseed from File\""
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:655
+#, python-format
+msgid "Check the log for the following message:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:659
+msgid "Sharing a reseed file"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:660
+msgid ""
+"For trusted friends you can use your local I2P router to give them a jump"
+" start:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:663
+msgid "Under \"Create Reseed File\" click \"Create reseed file\""
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:664
+#, python-format
+msgid "Securely send the %(filename)s file to your friend"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:666
+msgid ""
+"Do not reveal this file in any case to unknown users, since it contains\n"
+"sensitive private data (100 RouterInfo) from your own I2P router! In "
+"order to\n"
+"protect your anonymity: you may wait a few random hours/days before you "
+"share\n"
+"the file with your trusted friend. It is also advisable to use this "
+"procedure\n"
+"sparingly (< 2 per week)."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:674
+msgid " General guidelines for manual reseeding of I2P "
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:676
+msgid ""
+"Do not publicly publish the reseed file or share these files with a "
+"friend of a friend!"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:677
+msgid "This file should be used only for a very limited number of friends (< 3)!"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:678
+msgid "The file is valid only a few days (< 20)!"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:684
+msgid ""
+"Unless an outproxy has been specifically set up for the service you want "
+"to connect to, this cannot be done. \n"
+"There are only three types of outproxies running right now: HTTP, HTTPS, "
+"and email. Note that there is no SOCKS outproxy. \n"
+"If this type of service is required, we recommend that you use Tor. \n"
+"\n"
+"Please be aware that the Tor project recommends against using BitTorrent over Tor, \n"
+"as there are serious anonymity-related issues associated with doing so."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:698
+msgid ""
+"Within I2P, there is no requirement to use HTTPS. \n"
+" All traffic is encrypted end-to-end, any further encryption, e.g. "
+"with the use of HTTPS, doesn't create any further anonymity-related "
+"benefits.\n"
+"\n"
+" However, if one would like to use HTTPS or has a requirement to do "
+"so, the existing default I2P HTTP Proxy has support for HTTPS traffic."
+" \n"
+" Any hidden service operator would have to specifically set up and "
+"enable HTTPS access."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:707
+msgid ""
+"FTP is not supported for technical reasons.\n"
+"\n"
+" There are no FTP \"outproxies\" to the Internet—it may not even be "
+"possible to set up one. \n"
+" Any other kind of outproxy may work if it's set up with a standard "
+"tunnel. \n"
+" If you would like to set up some type of outproxy, carefully research"
+" the potential risks. \n"
+" The I2P community may or may not be able to help with the technical "
+"aspects, feel free to ask.\n"
+"\n"
+" As explained several times above, any existing outproxy isn't a core "
+"part of the network. \n"
+" They are services run by individuals and they may or may not be "
+"operational at any given time."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:724
+msgid "My router is using a large amount of CPU, what can I do about this?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:725
+msgid "There are many possible causes of high CPU usage. Here is a checklist:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:730
+msgid "Java Runtime Environment"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:731
+msgid ""
+"Try to use either OpenJDK or Sun/Oracle Java if it's available for your "
+"system. \n"
+"You can check which version of java you have installed by typing "
+"java -version
at a command/shell prompt. \n"
+"Performance tends to suffer with other implementations of java."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:736
+msgid "File sharing applications, e.g. BitTorrent"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:737
+msgid ""
+"Are you running a BitTorrent client over I2P? Try reducing the number of "
+"torrents, the bandwidth limits,\n"
+"or try turning it off completely to see if that helps."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:743
+msgid "High bandwidth settings"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:744
+msgid ""
+"Are your bandwidth limits set too high? It is possible that too much "
+"traffic is going through your I2P router and it is overloaded. \n"
+"Try reducing the setting for share bandwidth percentage on the "
+"configuration page."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:749
+msgid "I2P Version"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:750
+msgid ""
+"Make sure that you're running the latest version of I2P to get the "
+"benefits of increased performance and bug fixes."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:755
+msgid "Memory allocation"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:756
+msgid ""
+"Has enough memory been set aside for use by I2P? Look at the memory graph"
+" on the graphs page \n"
+"to see if the memory usage is \"pegged\"—the JVM is spending most "
+"of its time in garbage collection. \n"
+"Increase the setting wrapper.java.maxmemory
in the file "
+"wrapper.config
."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:763
+#, python-format
+msgid "Bursts of high-usage vs. constant 100% usage"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:764
+msgid ""
+"Is the CPU usage simply higher than you would like, or is it pegged at "
+"100% for a long time?\n"
+"If it is pegged, this could be a bug. Look in the logs for clues."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:770
+msgid "Java-related"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:771
+#, python-format
+msgid ""
+"You may be using the Java-based BigInteger library instead of the native "
+"version, especially if you are running on a new or unusual OS or hardware"
+" (OpenSolaris, mipsel, etc.).\n"
+"See the jbigi page for instructions on "
+"diagnosing, building, and testing methods."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:777
+msgid "Participating tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:778
+msgid ""
+"If your native jbigi library is working fine, the biggest user of CPU may"
+" be routing traffic for participating tunnels. \n"
+"This uses CPU because at each hop a layer of encryption must be decoded. "
+"You can limit participating traffic in two ways -\n"
+"by reducing the share bandwidth on the confignet page,\n"
+"or by setting router.maxParticipatingTunnels=nnn on the configadvanced "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:790
+msgid ""
+"New installations of I2P carry out the reseeding process automatically, "
+"as well as when the number of known peers falls to a drastically low "
+"value. \n"
+"If you need to carry out a reseed of your router, please see the reseed instructions."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:798
+msgid ""
+"If your router has 10 or more active peers, everything is fine. \n"
+"The router should maintain connections to a few peers at all times. \n"
+"The best way to stay \"better-connected\" to the network is to share more"
+" bandwidth. \n"
+"The amount of bandwidth that is shared by the router can be changed on "
+"the configuration page: \n"
+" http://localhost:7657/config"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:809
+msgid ""
+"No, there isn't anything wrong. \n"
+"This is normal behavior. \n"
+"All routers adjust dynamically to changing network conditions and "
+"demands. \n"
+"Routers come online and go offline depending on whether the system it is "
+"installed on is operational or not, as well as whether there is an "
+"available network connection. \n"
+"Your router is constantly updating its local Network Database. \n"
+"Tunnels which your router is participating in expire every 10 minutes and"
+" may or may not be rebuilt through your router."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:821
+msgid ""
+"The encryption and routing within the I2P network adds a substantial "
+"amount of overhead and limits bandwidth. \n"
+"\n"
+"We can try to clarify this with the aid of a diagram:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:829
+msgid ""
+"In this diagram, the path that some I2P traffic takes as it travels "
+"through the network is traced. \n"
+"A user's I2P router is denoted by the box labeled 'A' and an I2P Hidden "
+"Service (for example, the http://stats.i2p website) is labelled as 'B'."
+" \n"
+"Both the client and the server are using 3-hop tunnels, these hops are "
+"represented by the boxes labelled 'P', 'Q', 'R', 'X', 'Y', 'Z', 'P_1', "
+"'Q_1', 'R'_1, 'X_1', 'Y_1' and 'Z_1'."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:835
+msgid ""
+"The boxes labelled 'P', 'Q' and 'R' represent an outbound tunnel for A "
+"while the boxes labelled 'X_1', 'Y_1', 'Z_1' represent an outbound tunnel"
+" for 'B'. \n"
+"Similarly, the boxes labelled 'X', 'Y' and 'Z' represent and inbound "
+"tunnel for 'B' while the boxes labelled 'P_1', 'Q_1' and 'R_1' represent "
+"an inbound tunnel for 'A'. \n"
+"The arrows in between the boxes show the direction of traffic. \n"
+"The text above and below the arrows detail some example bandwidth between"
+" a pair of hops as well as example latencies."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:842
+msgid ""
+"When both client and server are using 3-hop tunnels throughout, a total "
+"of 12 other I2P routers are involved in relaying traffic. \n"
+"6 peers relay traffic from the client to the server which is split into a"
+" 3-hop outbound tunnel from 'A' ('P', 'Q', 'R') and a 3-hop inbound "
+"tunnel to 'B' ('X', 'Y', 'Z'). \n"
+"Similarly, 6 peers relay traffic from the server to back to the client."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:848
+msgid ""
+"First, we can consider latency - the time that it takes for a request "
+"from a client to traverse the I2P network, reach the the server and "
+"traverse back to the client. \n"
+"Adding up all latencies we see that:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:862
+msgid ""
+"The total round-trip time in our example adds up to 740 ms - certainly "
+"much higher than what one would normally see while browsing regular "
+"internet websites."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:866
+msgid ""
+"Second, we can consider available bandwidth. \n"
+"This is determined through the slowest link between hops from the client "
+"and server as well as when traffic is being transmitted by the server to "
+"the client. \n"
+"For traffic going from the client to the server, we see that the "
+"available bandwidth in our example between hops 'R' & 'X' as well as "
+"hops 'X' & 'Y' is 32 KB/s. \n"
+"Despite higher available bandwidth between the other hops, these hops "
+"will act as a bottleneck and will limit the maximum available bandwidth "
+"for traffic from 'A' to 'B' at 32 KB/s. \n"
+"Similarly, tracing the path from server to client shows that there is "
+"maximum bandwidth of 64 KB/s - between hops 'Z_1' & 'Y_1, 'Y_1' &"
+" 'X_1' and 'Q_1' & 'P_1'."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:874
+msgid ""
+"We recommend increasing your bandwidth limits. \n"
+"This helps the network by increasing the amount of available bandwidth "
+"which will in turn improve your I2P experience. \n"
+"Bandwidth settings are located on the http://localhost:7657/config "
+"page. \n"
+"Please be aware of your internet connection's limits as determined by "
+"your ISP, and adjust your settings accordingly."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:881
+msgid ""
+"We also recommend setting a sufficient amount of shared bandwidth - this "
+"allows for participating tunnels to be routed through your I2P router. \n"
+"Allowing participating traffic keeps your router well-integrated in the "
+"network and improves your transfer speeds."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:886
+#, python-format
+msgid ""
+"I2P is a work in progress. Lots of improvements and fixes are being "
+"implemented, and, generally speaking, running the latest release will "
+"help your performance.\n"
+"If you haven't, install the latest "
+"release."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:892
+msgid ""
+"In wrapper.log
I see an error that states \"Protocol "
+"family unavailable
\" when loading the Router Console"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:894
+msgid ""
+"Often this error will occur with any network enabled java software on "
+"some systems that are configured to use IPv6 by default. There are a few "
+"ways to solve this:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:899
+msgid ""
+"On Linux based systems, you can echo 0 > "
+"/proc/sys/net/ipv6/bindv6only
"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:901
+msgid "Look for the following lines in wrapper.config
."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:905
+msgid ""
+"If the lines are there, uncomment them by removing the \"#\"s. If the "
+"lines are not there, add them without the \"#\"s."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:908
+msgid ""
+"Another option would be to remove the ::1 from "
+"~/.i2p/clients.config
"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:912
+msgid ""
+"WARNING: For any changes to wrapper.config
"
+"to take effect, you must completely\n"
+"stop the router and the wrapper. Clicking Restart on your\n"
+"router console will NOT reread this file! You must\n"
+"click Shutdown, wait 11 minutes, then start I2P."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:922
+#, python-format
+msgid ""
+"If you consider every eepsite that has ever been created, yes, most of "
+"them are down.\n"
+"People and eepsites come and go.\n"
+"A good way to get started in I2P is check out a list of eepsites that are"
+" currently up.\n"
+"%(eepstatus)s tracks active eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:930
+msgid "Why is I2P listening on port 32000?"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:932
+msgid ""
+"The Tanuki java service wrapper that we use opens this port —bound "
+"to localhost— in order to communicate with software running inside "
+"the JVM. \n"
+"When the JVM is launched it is given a key so it can connect to the "
+"wrapper. \n"
+"After the JVM establishes its connection to the wrapper, the wrapper "
+"refuses any additional connections."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:937
+msgid ""
+"More information can be found in the wrapper documentation."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:944
+msgid ""
+"You may report any bugs/issues that you encounter on our bugtracker, "
+"which is available over both clearnet and I2P. \n"
+"We have a discussion forum, also available on I2P and clearnet. You can "
+"join our IRC channel as well: \n"
+"either through our IRC network, IRC2P, or on Freenode."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:950
+msgid "Our Bugtracker:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:952
+msgid "Clearnet:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:953
+msgid "On I2P:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:955
+msgid "Our forums:"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:956
+msgid ""
+"You may paste any interesting logs to a paste service such as the "
+"clearnet services listed on the \n"
+" PrivateBin Wiki, or an I2P paste service such as this \n"
+" PrivateBin instance or this"
+" \n"
+" Javascript-free paste service and"
+" follow up on IRC in #i2p<"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:960
+msgid "Join #i2p-dev Discuss with the developers on IRC"
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:964
+msgid ""
+"Please include relevant information from the router logs page which is "
+"available at: \n"
+"http://127.0.0.1:7657/logs.\n"
+"We request that you share all of the text under the 'I2P Version and "
+"Running Environment' \n"
+"section as well as any errors or warnings displayed in the various logs "
+"displayed on the page."
+msgstr ""
+
+#: i2p2www/pages/site/faq.html:976
+#, python-format
+msgid ""
+"Great! Find us on IRC:\n"
+"irc.freenode.net
channel #i2p
IRC2P
channel #i2p
i2p.vmCommSystem=true
to "
+"the\n"
+"router.config before starting."
+msgstr ""
+
+#: i2p2www/pages/site/research/index.html:131
+msgid "Testing on the Live I2P Network"
+msgstr ""
+
+#: i2p2www/pages/site/research/index.html:133
+#, python-format
+msgid ""
+"As stated above in the researcher notes, please contact\n"
+" us before you commence your testing. While we do not discourage\n"
+"researchers from responsibly testing their ideas on the live network, if "
+"an\n"
+"attack becomes apparent and we don't have any line of communication then "
+"we\n"
+"will end up taking countermeasures which could interfere with the test."
+msgstr ""
+
+#: i2p2www/pages/site/research/index.html:141
+msgid "Router Family Configuration"
+msgstr "İstiqamətləndiricinin ailə quraşdırması"
+
+#: i2p2www/pages/site/research/index.html:143
+msgid ""
+"As of release 0.9.25, I2P supports a router family configuration. This "
+"provides\n"
+"researchers who run multiple routers with the means to publicly identify "
+"those\n"
+"routers. In turn, this helps the I2P project understand that these "
+"routers are\n"
+"not running an attack on the network. It also will prevent other routers "
+"from\n"
+"including multiple routers of the family in a single tunnel, which could "
+"lead\n"
+"to deanonymization. Routers that appear to be colluding but do not have a"
+"\n"
+"declared family may be assumed to be an attack on the network, and may be"
+"\n"
+"blocked. The best way to ensure the success of your research project is "
+"to work\n"
+"with us directly."
+msgstr ""
+
+#: i2p2www/pages/site/research/index.html:155
+msgid ""
+"A router family shares a private key so that participation in the family "
+"cannot\n"
+"be spoofed. To configure a router family, click on the 'I2P Internals' "
+"link in\n"
+"the router console, and then on the 'Family' tab. Follow the instructions"
+" there\n"
+"to generate the private key for the first router in the family. Then, "
+"export\n"
+"the key from that router, and import it to other members of the family."
+msgstr ""
+
+#: i2p2www/pages/site/research/questions.html:2
+msgid "Open research questions"
+msgstr "Tədqiqatın açıq sualları"
+
+#: i2p2www/pages/site/research/questions.html:5
+msgid "Network database"
+msgstr "Şəbəkə verilənlər bazası"
+
+#: i2p2www/pages/site/research/questions.html:6
+msgid "Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/research/questions.html:19
+msgid "Transports"
+msgstr "Nəqliyyatlar"
+
+#: i2p2www/pages/site/research/questions.html:31
+msgid "Tunnels and Destinations"
+msgstr "Tunel və istiqamətlər"
+
+#: i2p2www/pages/site/research/questions.html:33
+msgid "Peer selection"
+msgstr "Bənzərlərin seçimi"
+
+#: i2p2www/pages/site/research/questions.html:46
+msgid "Unidirectional tunnels"
+msgstr "Tək istiqamətli tunellər"
+
+#: i2p2www/pages/site/research/questions.html:52
+msgid "Multihoming"
+msgstr "Çoxsaylı ünvan"
+
+#: i2p2www/pages/site/research/questions.html:59
+msgid "Message routing"
+msgstr "İsmarış istiqaməti"
+
+#: i2p2www/pages/site/research/questions.html:66
+msgid "Anonymity"
+msgstr ""
+
+#: i2p2www/pages/site/research/questions.html:75
+msgid "Network Related"
+msgstr ""
+
+#: i2p2www/pages/site/research/vrp.html:2
+msgid "Vulnerability Response Process"
+msgstr "Həssaslığı bildirən proses"
+
+#: i2p2www/pages/site/research/vrp.html:3
+msgid "January 2017"
+msgstr "Yanvar 2017"
+
+#: i2p2www/pages/site/research/vrp.html:6
+msgid ""
+"\n"
+"This process is subject to change. Please refer to this page for the "
+"current VRP."
+msgstr ""
+"\n"
+"Bu proses dəyişdirilə bilər. Mövcud VRP üçün bu səhifəyə baxın."
+
+#: i2p2www/pages/site/research/vrp.html:10
+msgid "Point of Contact for Security Issues"
+msgstr "Təhlükəsizlik məsələləri üzrə təmas nöqtəsi"
+
+#: i2p2www/pages/site/research/vrp.html:14
+msgid "Security Response Team"
+msgstr "Təhlükəsizlik tədbirlər qrupu"
+
+#: i2p2www/pages/site/research/vrp.html:16
+msgid "Only the following members have access to the security point of contact:"
+msgstr ""
+"Yalnız aşağıdakı üzvlər əlaqəli təhlükəsizlik təmas nöqtəsinə daxil ola "
+"bilərlər:"
+
+#: i2p2www/pages/site/research/vrp.html:25
+msgid "Incident Response"
+msgstr "Hadisəyə cavab"
+
+#: i2p2www/pages/site/research/vrp.html:28
+msgid "Researcher submits report via one or both of two methods:"
+msgstr ""
+"Araşdırmaçı hesabatı bir və ya hər iki üsuldan istifadə edərək təqdim "
+"edir:"
+
+#: i2p2www/pages/site/research/vrp.html:32
+msgid "Email"
+msgstr "Email"
+
+#: i2p2www/pages/site/research/vrp.html:37
+msgid ""
+"Response Team designates a Response Manager who is in charge of the "
+"particular\n"
+"report based on availability and/or knowledge-set."
+msgstr ""
+"Cavab qrupu yararlılıq və/ və ya məlumat dəstinə əsaslanan konkret "
+"hesabata cavabdeh müdir təyin edir."
+
+#: i2p2www/pages/site/research/vrp.html:42
+#, python-format
+msgid ""
+"In no more than %(limit)s working days, Response Team should gratefully\n"
+"respond to researcher using only encrypted methods."
+msgstr ""
+"%(limit)siş günündən çox olmamaqla, Response Team \n"
+"yalnız şifrəli üsullardan istifadə edən tədqiqatçıya cavab verir."
+
+#: i2p2www/pages/site/research/vrp.html:47
+msgid ""
+"Response Manager makes inquiries to satisfy any needed information and to"
+"\n"
+"confirm if submission is indeed a vulnerability."
+msgstr ""
+"Cavab meneceri hər hansı zəruri məlumatı təmin etmək üçün sorğu göndərir "
+"və \n"
+"təqdimatın həqiqətən zəiflik olduğunu təsdiqləyir."
+
+#: i2p2www/pages/site/research/vrp.html:52
+msgid "If submission proves to be vulnerable, proceed."
+msgstr "Təqdimatın zəif olduğu təsqilənirsə, davam edin."
+
+#: i2p2www/pages/site/research/vrp.html:55
+msgid "If not vulnerable:"
+msgstr "Zəif deyilsə:"
+
+#: i2p2www/pages/site/research/vrp.html:59
+msgid ""
+"Response Manager responds with reasons why submission is not a "
+"vulnerability."
+msgstr "Cavab meneceri təqdimatın zəif olmadığına dair səbəbləri açıqlayır. "
+
+#: i2p2www/pages/site/research/vrp.html:62
+msgid ""
+"Response Manager moves discussion to a new or existing ticket on public "
+"Trac if necessary."
+msgstr ""
+"Cavab meneceri müzakirəni zəruri hallarda ictimai Trac-da yeni və ya "
+"mövcud biletə keçirir."
+
+#: i2p2www/pages/site/research/vrp.html:70
+msgid ""
+"If over email, Response Manager opens a HackerOne issue for new "
+"submission."
+msgstr ""
+"E-poçt vasitəsilə cavab veribsə, cavab meneceri yeni təqdimat üçün "
+"HackerOne məsələsini açır."
+
+#: i2p2www/pages/site/research/vrp.html:74
+msgid ""
+"\n"
+"Establish severity of vulnerability:\n"
+" "
+msgstr ""
+"\n"
+"Zəifliyin səviyyəsini müəyyən etmə:"
+
+#: i2p2www/pages/site/research/vrp.html:79
+msgid ""
+"Effects network as a whole, has potential to break entire network or is "
+"on a scale of great catastrophe."
+msgstr ""
+"Effekt şəbəkəsi bütöv bir şəbəkəni pozmaq potensialına malikdir və ya "
+"böyük fəlakət miqyasındadır."
+
+#: i2p2www/pages/site/research/vrp.html:83
+msgid "Effects individual routers, or must be carefully exploited."
+msgstr ""
+"Fərdi istiqamətləndiricilərə təsir edir və ya diqqətlə istismar "
+"edilməlidir."
+
+#: i2p2www/pages/site/research/vrp.html:87
+msgid "Is not easily exploitable."
+msgstr "Asan istifadə edilə bilməz."
+
+#: i2p2www/pages/site/research/vrp.html:93
+msgid "Respond according to the severity of the vulnerability:"
+msgstr "Zəiflik səviyyəsinə uyğun cavab verin:"
+
+#: i2p2www/pages/site/research/vrp.html:97
+#, python-format
+msgid ""
+"HIGH severities must be notified on website and news feed within "
+"%(limit)s\n"
+"working days of classification."
+msgstr ""
+"YÜKSƏK səviyyə veb səhifələrdə və xəbər lentində %(limit)stəsnifat iş "
+"günləri daxilində bildirilməlidir."
+
+#: i2p2www/pages/site/research/vrp.html:102
+msgid "The notification should list appropriate steps for users to take, if any."
+msgstr "Bildirişdə istifadəçilər üçün müvafiq addımlar göstərilməlidir."
+
+#: i2p2www/pages/site/research/vrp.html:105
+msgid ""
+"The notification must not include any details that could suggest an "
+"exploitation\n"
+"path."
+msgstr ""
+"Bildirişə istismar yolunu təklif edən hər hansı məlumat daxil "
+"edilməməlidir."
+
+#: i2p2www/pages/site/research/vrp.html:109
+msgid "The latter takes precedence over the former."
+msgstr "Sonuncu öncəkindən üstündür."
+
+#: i2p2www/pages/site/research/vrp.html:113
+msgid "MEDIUM and HIGH severities will require a Point Release."
+msgstr "ORTA və YÜKSƏK səviyyə Point Release tələb edəcək."
+
+#: i2p2www/pages/site/research/vrp.html:116
+msgid "LOW severities will be addressed in the next Regular Release."
+msgstr "AŞAĞI səviyyəyə növbəti müntəzəm buraxılışda baxılacaq. "
+
+#: i2p2www/pages/site/research/vrp.html:122
+msgid "Response Team applies appropriate patch(es)."
+msgstr "Cavab qrupu müvafiq yama(lar) tətbiq edir."
+
+#: i2p2www/pages/site/research/vrp.html:126
+msgid ""
+"Response Manager designates a PRIVATE monotone \"hotfix branch\" to work "
+"in."
+msgstr ""
+"Cavab meneceri işləmək üçün ÖZƏL bir monoton \"düzəltmə bölməsi\" təyin "
+"edir."
+
+#: i2p2www/pages/site/research/vrp.html:129
+msgid "Patches are reviewed with the researcher."
+msgstr "Yamalar tədqiqatçı tərəfindən nəzərdən keçirilir."
+
+#: i2p2www/pages/site/research/vrp.html:132
+msgid ""
+"Any messages associated with PUBLIC commits during the time of review "
+"should not\n"
+"make reference to the security nature of the PRIVATE branch or its "
+"commits."
+msgstr ""
+"Baxış zamanı İCTİMAİ ilə əlaqəli hər hansı məlumat ÖZƏL bölmə və ya onun "
+"öhdəlliklərinin \n"
+"təhlükəsizliyinə istinad etməməlidir. "
+
+#: i2p2www/pages/site/research/vrp.html:136
+msgid "Vulnerability announcement is drafted."
+msgstr "Zəiflik elanları hazırlanıb."
+
+#: i2p2www/pages/site/research/vrp.html:140
+msgid "Include severity of vulnerability."
+msgstr "Zəiflik səviyyəsini əlavə edin."
+
+#: i2p2www/pages/site/research/vrp.html:143
+msgid "Include systems/apps effected."
+msgstr "Təsirlənən sistemləri/tətbiqetmələri daxil edin. "
+
+#: i2p2www/pages/site/research/vrp.html:146
+msgid "Include solutions (if any) if patch cannot be applied."
+msgstr "Yamalar tətbiq oluna bilməzsə,(əgər varsa) həll yollarını daxil edin."
+
+#: i2p2www/pages/site/research/vrp.html:150
+msgid "Release date is discussed."
+msgstr "Təqdimat tarixi müzakirə edilir."
+
+#: i2p2www/pages/site/research/vrp.html:156
+msgid ""
+"At release date, Response Team coordinates with developers to finalize "
+"update:"
+msgstr ""
+"Təqdimat tarixində cavab qrupu yeniləməni yekunlaşdırmaq üçün işi "
+"yaradıcılarla koordinasiya edir."
+
+#: i2p2www/pages/site/research/vrp.html:160
+msgid "Response Manager propagates the \"hotfix branch\" to trunk."
+msgstr "Cavab meneceri \"düzəltmə bölməsi\"ni magistral xəttə yayır. "
+
+#: i2p2www/pages/site/research/vrp.html:163
+msgid ""
+"Response Manager includes vulnerability announcement draft in release "
+"notes."
+msgstr "Cavab meneceri buraxılış qeydlərinə zəiflik elanı layihəsini daxil edir. "
+
+#: i2p2www/pages/site/research/vrp.html:166
+msgid "Proceed with the Point or Regular Release."
+msgstr "Point və ya Regular Release ilə davam edin. "
+
+#: i2p2www/pages/site/research/vrp.html:173
+msgid "Post-release Disclosure Process"
+msgstr "Buraxılışdan sonra açıqlama prosesi"
+
+#: i2p2www/pages/site/research/vrp.html:176
+#, python-format
+msgid "Response Team has %(limit)s days to fulfill all points within section III."
+msgstr ""
+"Cavab qrupunun III hissədəki bütün nöqtələri yerinə yetirmək üçün "
+"%(limit)s günü var."
+
+#: i2p2www/pages/site/research/vrp.html:180
+msgid "If the Incident Response process in section III is successfully completed:"
+msgstr "III bölmədə hadisəyə cavab prosesi uğurla başa çatdıqda:"
+
+#: i2p2www/pages/site/research/vrp.html:184
+msgid ""
+"Response Manager contacts researcher and asks if researcher wishes for "
+"credit."
+msgstr ""
+"Cavab meneceri tədqiqatçı ilə əlaqə qurur və onun kredit istəyib-"
+"istəmədiyini soruşur."
+
+#: i2p2www/pages/site/research/vrp.html:187
+msgid "Finalize vulnerability announcement draft and include the following:"
+msgstr "Zəiflik elanı layihəsini yekunlaşdırın və aşağıdakıları daxil edin:"
+
+#: i2p2www/pages/site/research/vrp.html:191
+msgid "Project name and URL."
+msgstr "Layihənin adı və URL."
+
+#: i2p2www/pages/site/research/vrp.html:194
+msgid "Versions known to be affected."
+msgstr "Təsirə məruz qalan versiyalar."
+
+#: i2p2www/pages/site/research/vrp.html:197
+msgid ""
+"Versions known to be not affected (for example, the vulnerable code was "
+"introduced in a recent version, and older versions are therefore "
+"unaffected)."
+msgstr ""
+"Təsirə məruz qalmayan versiyalar (məsələn, son versiyada zəif kod tətbiq "
+"olundu və bu səbəbdən öncəki versiyalar təsirlənmədi)."
+
+#: i2p2www/pages/site/research/vrp.html:200
+msgid "Versions not checked."
+msgstr "Versiyalar yoxlanmadı."
+
+#: i2p2www/pages/site/research/vrp.html:203
+msgid "Type of vulnerability and its impact."
+msgstr "Zəiflik növü və onun təsiri."
+
+#: i2p2www/pages/site/research/vrp.html:206
+msgid "If already obtained or applicable, a CVE-ID."
+msgstr "Əldə edilmiş və ya tətbiq oluna bilən CVE-ID."
+
+#: i2p2www/pages/site/research/vrp.html:209
+msgid "The planned, coordinated release date."
+msgstr "Planlaşdırılmış, razılaşdırılmış təqdimat tarixi."
+
+#: i2p2www/pages/site/research/vrp.html:212
+msgid ""
+"Mitigating factors (for example, the vulnerability is only exposed in "
+"uncommon, non-default configurations)."
+msgstr ""
+"Azaldıcı amillər (məsələn, zəiflik yalnız qeyri-standart quraşdırmalarda "
+"müşahidə olunur)."
+
+#: i2p2www/pages/site/research/vrp.html:215
+msgid ""
+"Workarounds (configuration changes users can make to reduce their "
+"exposure to the vulnerability)."
+msgstr ""
+"Müvəqqəti həllər (isifadəçilər zəifliyə məruz qalmalarını azaltmaq üçün "
+"quraşdırma dəyişiklikləri edə bilər)."
+
+#: i2p2www/pages/site/research/vrp.html:218
+msgid "If applicable, credits to the original reporter."
+msgstr "Mümkündürsə, əsas müxbirə kredit verin."
+
+#: i2p2www/pages/site/research/vrp.html:223
+msgid "Release finalized vulnerability announcement on website and in news feed."
+msgstr "Vebdə və xəbər lentində yekunlaşdırılmış zəiflik elanının buraxılışı."
+
+#: i2p2www/pages/site/research/vrp.html:226
+msgid ""
+"For HIGH severities, release finalized vulnerability announcement on "
+"well-known mailing lists:"
+msgstr ""
+"YÜKSƏK səviyyə üçün, yekunlaşdırılmış zəiflik elanını tanınan göndəriş "
+"siyahılarına yayın:"
+
+#: i2p2www/pages/site/research/vrp.html:234
+msgid "If applicable, developers request a CVE-ID."
+msgstr "Mümkündürsə, yaradıcılar CVE-ID tələb edir."
+
+#: i2p2www/pages/site/research/vrp.html:238
+msgid ""
+"The commit that applied the fix is made reference too in a future commit "
+"and includes a CVE-ID."
+msgstr ""
+"Düzeltməni tətbiq edən versiya, gələcək fiksasiyada da qeyd olunur və "
+"bura CVE-ID daxildir."
+
+#: i2p2www/pages/site/research/vrp.html:246
+msgid ""
+"If the Incident Response process in section III is *not* successfully "
+"completed:"
+msgstr "III bölmədə hadisəyə cavab prosesi uğurla başa *çatmadıqda*:"
+
+#: i2p2www/pages/site/research/vrp.html:250
+msgid ""
+"Response Team and developers organize an IRC meeting to discuss why/what "
+"points\n"
+"in section III were not resolved and how the team can resolve them in the"
+"\n"
+"future."
+msgstr ""
+"Cavab qrupu və yaradıcılar İİİ bölmədəki niyə/hansı nöqtələrin həll "
+"olunmadığını və gələcəkdə\n"
+" onları necə həll edə biləcəyini müzakirə etmək üçün IRC görüşünü təşkil "
+"edir."
+
+#: i2p2www/pages/site/research/vrp.html:255
+msgid ""
+"Any developer meetings immediately following the incident should include "
+"points\n"
+"made in section V."
+msgstr ""
+"Hadisədən sonra yaradıcıların istənilən görüşü V bölmədəki bəndləri "
+"nəzərə almalıdır."
+
+#: i2p2www/pages/site/research/vrp.html:259
+msgid ""
+"If disputes arise about whether or when to disclose information about a\n"
+"vulnerability, the Response Team will publicly discuss the issue via IRC "
+"and\n"
+"attempt to reach consensus."
+msgstr ""
+"Zəiflik haqqında məlumatın açıqlanması yaxud nə zaman açıqlanması ilə "
+"əlaqədar anlaşılmazlıq \n"
+"yaranarsa, cavab qrupu məsələni İRC vasitəsilə açıq müzakirə edərək, "
+"ortaq məxrəcə gəlməyə\n"
+" çalışacaq."
+
+#: i2p2www/pages/site/research/vrp.html:264
+#, python-format
+msgid ""
+"If consensus on a timely disclosure is not met (no later than %(limit)s "
+"days),\n"
+"the researcher (after %(limit)s days) has every right to expose the\n"
+"vulnerability to the public."
+msgstr ""
+"Əgər vaxtında açıqlama verməyə dair konsensus (%(limit)sgündən gec "
+"olmayaraq) əldə olunmursa, tədqiqatçı (%(limit)sgündən sonra) zəifliyi "
+"ictimaiyyətə açıqlamaq hüququna sahibdir. "
+
+#: i2p2www/pages/site/research/vrp.html:273
+msgid "Incident Analysis"
+msgstr "Hadisənin təhlili"
+
+#: i2p2www/pages/site/research/vrp.html:276
+msgid "Isolate codebase"
+msgstr "Kodbazasını ayırın"
+
+#: i2p2www/pages/site/research/vrp.html:278
+#: i2p2www/pages/site/research/vrp.html:298
+msgid "Response Team and developers should coordinate to work on the following:"
+msgstr ""
+"Cavab qrupu və yaradıcılar işləmək üçün aşağıdakı məsələlərlə bağlı "
+"koordinasiya etməlidirlər:"
+
+#: i2p2www/pages/site/research/vrp.html:282
+msgid "Problematic implementation of classes/libraries/functions, etc."
+msgstr "Siniflərin/ kitabxanaların/funksiyaların və s. problemli tətbiqi "
+
+#: i2p2www/pages/site/research/vrp.html:285
+msgid "Focus on apps/distro packaging, etc."
+msgstr "Tətbiqetmə/distro qablaşdırmaya diqqət edin və s. "
+
+#: i2p2www/pages/site/research/vrp.html:288
+msgid "Operator/config error, etc."
+msgstr "Operator/quraşdırma xətası və s."
+
+#: i2p2www/pages/site/research/vrp.html:296
+msgid "Auditing"
+msgstr "Təftiş"
+
+#: i2p2www/pages/site/research/vrp.html:302
+msgid "Auditing of problem area(s) as discussed in point 1."
+msgstr "1-ci bənddə qeyd edildiyi kimi problemli sahə(lər)in auditi."
+
+#: i2p2www/pages/site/research/vrp.html:305
+msgid "Generate internal reports and store for future reference."
+msgstr "Daxili hesabatlar yaradın və gələcək arayış üçün saxlayın."
+
+#: i2p2www/pages/site/research/vrp.html:308
+msgid ""
+"If results are not sensitive, share with the public via IRC or public "
+"Trac."
+msgstr ""
+"Nəticələr həssas deyilsə, IRC və ya ictimai Trac vasitəsilə ictimaiyyətlə"
+" bölüşün."
+
+#: i2p2www/pages/site/research/vrp.html:316
+#, python-format
+msgid ""
+"Response Team has %(limit)s days following completion of section III to "
+"ensure\n"
+"completion of section V."
+msgstr ""
+"Cavab qrupunun İİİ bölümü bitirdikdən sonra V bölmənin bitməsini təmin "
+"etmək üçün %(limit)s günü var. "
+
+#: i2p2www/pages/site/research/vrp.html:322
+msgid "Resolutions"
+msgstr "Qərarlar"
+
+#: i2p2www/pages/site/research/vrp.html:324
+msgid ""
+"Any further questions or resolutions regarding the incident(s) between "
+"the\n"
+"researcher and response + development team after public disclosure can be"
+"\n"
+"addressed via the following:"
+msgstr ""
+"Tədqiqatçı və cavab + inkişaf qrupu arasında istənilən əlavə suallar və "
+"ya hadisə(lər)lə bağlı qərarlar\n"
+" ictimai açıqlamadan sonra növbəti qaydada həll edilə bilər:"
+
+#: i2p2www/pages/site/research/vrp.html:338
+msgid "Continuous Improvement"
+msgstr "Davamlı inkişaf"
+
+#: i2p2www/pages/site/research/vrp.html:341
+msgid ""
+"Response Team and developers should hold annual meetings to review the "
+"previous\n"
+"year's incidents."
+msgstr ""
+"Cavab qrupu və yaradıcılar əvvəlki illərin hadisələrini nəzərdən keçirmək"
+" üçün illik görüşlər keçirməlidirlər. "
+
+#: i2p2www/pages/site/research/vrp.html:346
+msgid ""
+"Response Team or designated person(s) should give a brief presentation, "
+"including:"
+msgstr ""
+"Cavab qrupu və ya təyin edilmiş şəxs(lər) qısa təqdimat hazırlamalıdır, o"
+" cümlədən: "
+
+#: i2p2www/pages/site/research/vrp.html:350
+msgid "Areas of I2P affected by the incidents."
+msgstr "Hadisələrin təsir etdiyi I2P sahələri."
+
+#: i2p2www/pages/site/research/vrp.html:353
+msgid "Any network downtime or monetary cost (if any) of the incidents."
+msgstr "Hadisələrin istənilən şəbəkə kəsilməsi və ya (varsa) pul xərcləri."
+
+#: i2p2www/pages/site/research/vrp.html:356
+msgid "Ways in which the incidents could have been avoided (if any)."
+msgstr "Hadisələrin qarşısını ala biləcək yollar (əgər varsa)."
+
+#: i2p2www/pages/site/research/vrp.html:359
+msgid "How effective this process was in dealing with the incidents."
+msgstr "Bu proses hadisələrlə mübarizədə nə dərəcədə səmərəli oldu."
+
+#: i2p2www/pages/site/research/vrp.html:365
+msgid "After the presentation, Response Team and developers should discuss:"
+msgstr "Təqdimatdan sonra cavab qrupu və yaradıcılar müzakirə etməlidirlər:"
+
+#: i2p2www/pages/site/research/vrp.html:369
+msgid "Potential changes to development processes to reduce future incidents."
+msgstr ""
+"Gələcək hadisələri azaltmaq üçün inkişaf proseslərinə potensial "
+"dəyişikliklər."
+
+#: i2p2www/pages/site/research/vrp.html:372
+msgid "Potential changes to this process to improve future responses."
+msgstr "Gələcək cavabları yaxşılaşdırmaq üçün bu prosesə potensial dəyişikliklər."
+
diff --git a/i2p2www/translations/et_EE/LC_MESSAGES/docs.po b/i2p2www/translations/et_EE/LC_MESSAGES/docs.po
new file mode 100644
index 00000000..7ae7ef4c
--- /dev/null
+++ b/i2p2www/translations/et_EE/LC_MESSAGES/docs.po
@@ -0,0 +1,16123 @@
+# Estonian (Estonia) translations for I2P.
+# Copyright (C) 2018 ORGANIZATION
+# This file is distributed under the same license as the I2P project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: http://trac.i2p2.de\n"
+"POT-Creation-Date: 2018-08-24 11:47+0000\n"
+"PO-Revision-Date: 2018-08-24 11:51+0000\n"
+"Last-Translator: zzzi2p\n"
+"Language-Team: Estonian (Estonia) "
+"(http://www.transifex.com/otf/I2P/language/et_EE/)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: i2p2www/pages/site/docs/index.html:2 i2p2www/pages/site/docs/index.html:23
+msgid "Index to Technical Documentation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:3 i2p2www/pages/site/docs/naming.html:3
+#: i2p2www/pages/site/docs/transport/index.html:3
+#: i2p2www/pages/site/docs/transport/ntcp.html:3
+#: i2p2www/pages/site/docs/transport/ssu.html:3
+msgid "June 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:6
+msgid "Following is an index to the technical documentation for I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:10
+msgid ""
+"This index is ordered from the highest to lowest layers.\n"
+"The higher layers are for \"clients\" or applications;\n"
+"the lower layers are inside the router itself.\n"
+"The interface between applications and the router is the I2CP (I2P "
+"Control Protocol) API."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:17
+#, python-format
+msgid ""
+"The I2P Project is committed to maintaining accurate, current "
+"documentation.\n"
+"If you find any inaccuracies in the documents linked below, please\n"
+"enter a ticket identifying the problem."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:25 i2p2www/pages/site/docs/naming.html:6
+#: i2p2www/pages/site/docs/api/bob.html:42
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:7
+#: i2p2www/pages/site/docs/api/streaming.html:6
+#: i2p2www/pages/site/docs/applications/embedding.html:7
+#: i2p2www/pages/site/docs/applications/managed-clients.html:7
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:6
+#: i2p2www/pages/site/docs/how/network-database.html:6
+#: i2p2www/pages/site/docs/how/peer-selection.html:6
+#: i2p2www/pages/site/docs/how/tech-intro.html:9
+#: i2p2www/pages/site/docs/how/tech-intro.html:93
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:6
+#: i2p2www/pages/site/docs/tunnels/implementation.html:67
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:6
+msgid "Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:27
+msgid "Technical Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:28
+msgid "A Less-Technical Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:29
+msgid "Threat model and analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:30
+msgid "Comparisons to other anonymous networks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:31
+msgid "Specifications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:32
+msgid "Protocol stack chart"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:33
+msgid "Papers on I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:34
+msgid "Presentations, articles, tutorials, videos, and interviews"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:35
+#, python-format
+msgid ""
+"Invisible Internet Project (I2P) Project Overview"
+" August 28, 2003 (pdf)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:38
+msgid "Application-Layer Topics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:41 i2p2www/pages/site/docs/naming.html:2
+msgid "Naming and Addressbook"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:42
+msgid "Plugins Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:43
+msgid "Plugin Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:44
+#: i2p2www/pages/site/docs/applications/managed-clients.html:2
+#: i2p2www/pages/site/docs/applications/managed-clients.html:20
+msgid "Managed Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:45 i2p2www/pages/site/docs/index.html:231
+msgid "Embedding the router in your application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:46
+#: i2p2www/pages/site/docs/applications/bittorrent.html:2
+msgid "Bittorrent over I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:47
+msgid "I2PControl Plugin API"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:48
+msgid "hostsdb.blockfile Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:49 i2p2www/pages/site/docs/index.html:197
+msgid "Configuration File Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:52
+msgid "Application Layer API and Protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:53
+msgid ""
+"High-level, easy-to-use APIs for applications written in any language to "
+"send and receive data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:55
+msgid "Application Development Overview and Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:59
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:51
+msgid "I2PTunnel Configuration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:75
+msgid "SAM Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:77
+msgid "SAMv2 Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:79
+msgid "SAMv3 Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:81
+msgid "BOB Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:84
+msgid "End-to-End Transport API and Protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:85
+msgid ""
+"The end-to-end protocols used by clients for reliable and unreliable "
+"communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:87
+#: i2p2www/pages/site/docs/api/streaming.html:2
+msgid "Streaming Library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:89
+msgid "Streaming Protocol Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:91
+msgid "Streaming Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:93
+#: i2p2www/pages/site/docs/api/datagrams.html:2
+msgid "Datagrams"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:95
+msgid "Datagram Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:98
+msgid "Client-to-Router Interface API and Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:99
+msgid ""
+"The lowest-level API used for clients (applications) to send and receive "
+"traffic to a router.\n"
+"Traditionally used only by Java applications and higher-level APIs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:104
+msgid "I2CP - I2P Control Protocol / API overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:106
+msgid "I2CP Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:108
+msgid "I2CP API Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:110
+#: i2p2www/pages/site/docs/index.html:140
+msgid "Common data structures specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:112
+#: i2p2www/pages/site/docs/index.html:142
+msgid "Data Structures Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:115
+msgid "End-to-End Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:116
+msgid "How client messages are end-to-end encrypted by the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:118
+msgid "ElGamal/AES+SessionTag encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:119
+#: i2p2www/pages/site/docs/index.html:153
+msgid "ElGamal and AES cryptography details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:122
+#: i2p2www/pages/site/docs/how/tech-intro.html:11
+#: i2p2www/pages/site/docs/how/tech-intro.html:325
+msgid "Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:123
+msgid ""
+"Distributed storage and retrieval of information about routers and "
+"clients."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:125
+msgid "Network database overview, details, and threat analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:126
+msgid "Cryptographic hashes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:127
+msgid "Cryptographic signatures"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:128
+#: i2p2www/pages/site/docs/index.html:189
+msgid "Router reseed specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:131
+msgid "Router Message Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:132
+msgid ""
+"I2P is a message-oriented router. The messages sent between routers are "
+"defined by the I2NP protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:134
+msgid "I2NP - I2P Network Protocol Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:136
+msgid "I2NP Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:138
+msgid "I2NP Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:145
+#: i2p2www/pages/site/docs/how/tech-intro.html:10
+#: i2p2www/pages/site/docs/how/tech-intro.html:224
+msgid "Tunnels"
+msgstr "Tunnelid"
+
+#: i2p2www/pages/site/docs/index.html:146
+msgid ""
+"Selecting peers, requesting tunnels through those peers, and encrypting "
+"and routing messages through these tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:148
+msgid "Peer profiling and selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:149
+msgid "Tunnel routing overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:150
+msgid "Garlic routing and \"garlic\" terminology"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:151
+msgid "Tunnel building and encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:152
+msgid "ElGamal/AES"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:152
+msgid "for build request encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:154
+msgid "Tunnel building specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:155
+msgid "Low-level tunnel message specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:156
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:2
+msgid "Unidirectional Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:157
+#: i2p2www/pages/site/docs/how/peer-selection.html:299
+msgid "Peer Profiling and Selection in the I2P Anonymous Network"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:158
+msgid "2009 paper (pdf), not current but still generally accurate"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:161
+msgid "Transport Layer"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:162
+msgid "The protocols for direct (point-to-point) router to router communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:164
+msgid "Transport layer overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:166
+msgid "TCP-based transport overview and specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:168
+msgid "NTCP2 specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:170
+msgid "UDP-based transport overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:172
+msgid "SSU specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:174
+msgid "NTCP transport encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:176
+msgid "SSU transport encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:178
+msgid "Transport Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:180
+msgid "NTCP Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:182
+msgid "SSU Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:185
+msgid "Other Router Topics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:187
+msgid "Router software updates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:191
+msgid "Native BigInteger Library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:193
+msgid "Time synchronization and NTP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:195
+msgid "Performance"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:202
+msgid "Developer's Guides and Resources"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:204
+msgid "New Developer's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:206
+msgid "New Translator's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:208
+msgid "Monotone Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:210
+msgid "Developer Guidelines"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:212
+msgid "Javadocs on the standard internet:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:213
+#: i2p2www/pages/site/docs/index.html:219
+#: i2p2www/pages/site/docs/index.html:221
+#: i2p2www/pages/site/docs/index.html:223
+#, python-format
+msgid "Server %(num)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:214
+#: i2p2www/pages/site/docs/index.html:227
+msgid ""
+"Note: always verify that javadocs are current by checking the release "
+"number."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:216
+msgid "Javadocs inside I2P:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:229
+msgid "Proposals"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:233
+msgid "How to Set up a Reseed Server"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:235
+msgid "Ports used by I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:237
+msgid "Automatic updates to development builds inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:239
+msgid "Updating the wrapper manually"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:241
+msgid "User forum"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:243
+msgid "Developer forum inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:245
+msgid "Bug tracker"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:248
+msgid "Viewmtn inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:251
+msgid "I2P Source exported to GitHub"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:253
+msgid "I2P Source Git Repo inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:255
+msgid "Source translation at Transifex"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:257
+msgid "Roadmap"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:259
+msgid "To Do List"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:259
+msgid "not current"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:8
+msgid ""
+"I2P ships with a generic naming library and a base implementation \n"
+"designed to work off a local name to destination mapping, as well as an\n"
+"add-on application called the addressbook. \n"
+"I2P also supports Base32 hostnames similar to "
+"Tor's .onion addresses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:15
+msgid ""
+"The addressbook is a web-of-trust\n"
+"driven secure, distributed, and human readable naming system, sacrificing"
+" only\n"
+"the call for all human readable names to be globally unique by mandating "
+"only\n"
+"local uniqueness. While all messages in I2P are cryptographically "
+"addressed\n"
+"by their destination, different people can have local addressbook entries"
+" for\n"
+"\"Alice\" which refer to different destinations. People can still "
+"discover new\n"
+"names by importing published addressbooks of peers specified in their web"
+" of trust,\n"
+"by adding in the entries provided through a third party, or (if some "
+"people organize\n"
+"a series of published addressbooks using a first come first serve "
+"registration\n"
+"system) people can choose to treat these addressbooks as name servers, "
+"emulating\n"
+"traditional DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:29
+#, python-format
+msgid ""
+"NOTE: For the reasoning behind the I2P naming system, common arguments "
+"against it\n"
+"and possible alternatives see the naming"
+" discussion\n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:36
+msgid "Naming System Components"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:38
+msgid ""
+"There is no central naming authority in I2P.\n"
+"All hostnames are local."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:43
+msgid ""
+"The naming system is quite simple and most of it is implemented\n"
+"in applications external to the router, but bundled with\n"
+"the I2P distribution.\n"
+"The components are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:51
+msgid ""
+"The local naming service which does lookups\n"
+"and also handles Base32 hostnames."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:55
+msgid ""
+"The HTTP proxy which asks the router for "
+"lookups and points\n"
+"the user to remote jump services to assist with failed lookups."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:59
+msgid ""
+"HTTP host-add forms which allow users to "
+"add hosts to their local hosts.txt"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:62
+msgid ""
+"HTTP jump services which provide their own"
+" lookups and redirection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:65
+msgid ""
+"The addressbook application which merges "
+"external\n"
+"host lists, retrieved via HTTP, with the local list."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:69
+msgid ""
+"The SusiDNS application which is a simple web "
+"front-end\n"
+"for addressbook configuration and viewing of the local host lists."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:76
+msgid "Naming Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:78
+#, python-format
+msgid ""
+"All destinations in I2P are 516-byte (or longer) keys.\n"
+"(To be more precise, it is a 256-byte public key plus a 128-byte signing "
+"key\n"
+"plus a 3-or-more byte certificate, which in Base64 representation is 516 "
+"or more bytes.\n"
+"Non-null Certificates "
+"are in use now\n"
+"for signature type indication.\n"
+"Therefore, certificates in recently-generated destinations are more than "
+"3 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:87
+msgid ""
+"If an application (i2ptunnel or the HTTP proxy) wishes to access\n"
+"a destination by name, the router does a very simple local lookup\n"
+"to resolve that name."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:93
+msgid "Hosts.txt Naming Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:95
+msgid ""
+"The hosts.txt Naming Service does a simple linear search through\n"
+"text files. This naming service was the default until\n"
+"release 0.8.8 when it was replaced by the Blockfile Naming Service.\n"
+"The hosts.txt format had become too slow after the file grew to thousands"
+" of entries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:102
+#, python-format
+msgid ""
+"It does a linear search through three local files, in order, to\n"
+"look up host names and convert them to a 516-byte destination key.\n"
+"Each file is in a simple configuration file"
+" format, with hostname=base64, one per line.\n"
+"The files are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:114
+msgid "Blockfile Naming Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:116
+msgid ""
+"The Blockfile Naming Service stores multiple \"addressbooks\" in a single"
+"\n"
+"database file named hostsdb.blockfile.\n"
+"This Naming Service is the default since release 0.8.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:122
+#, python-format
+msgid ""
+"A blockfile is simply on-disk storage of multiple sorted maps (key-value "
+"pairs),\n"
+"implemented as skiplists.\n"
+"The blockfile format is specified on the Blockfile page.\n"
+"It provides fast Destination lookup in a compact format. While the "
+"blockfile overhead is substantial,\n"
+"the destinations are stored in binary rather than in Base 64 as in the "
+"hosts.txt format.\n"
+"In addition, the blockfile provides the capability of arbitrary metadata "
+"storage\n"
+"(such as added date, source, and comments) for each entry to implement "
+"advanced addressbook features.\n"
+"The blockfile storage requirement is a modest increase over the hosts.txt"
+" format, and the blockfile provides\n"
+"approximately 10x reduction in lookup times."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:134
+msgid ""
+"On creation, the naming service imports entries from the three files used"
+" by the hosts.txt Naming Service.\n"
+"The blockfile mimics the previous implementation by maintaining three "
+"maps that\n"
+"are searched in-order, named privatehosts.txt, userhosts.txt, and "
+"hosts.txt.\n"
+"It also maintains a reverse-lookup map to implement rapid reverse lookups."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:141
+msgid "Other Naming Service Facilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:143
+#, python-format
+msgid ""
+"The lookup is case-insensitive.\n"
+"The first match is used, and conflicts are not detected.\n"
+"There is no enforcement of naming rules in lookups.\n"
+"Lookups are cached for a few minutes.\n"
+"Base 32 resolution is described below.\n"
+"For a full description of the Naming Service API see the\n"
+"Naming Service Javadocs.\n"
+"This API was significantly expanded in release 0.8.7 to provide\n"
+"adds and removes, storage of arbitrary properties with the hostname,\n"
+"and other features."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:156
+msgid "Alternatives and Experimental Naming Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:158
+#, python-format
+msgid ""
+"The naming service is specified with the configuration property "
+"i2p.naming.impl=class.\n"
+"Other implementations are possible. For example,\n"
+"there is an experimental facility for real-time lookups (a la DNS) over "
+"the network within the router.\n"
+"For more information see the alternatives on the discussion"
+" page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:165
+msgid ""
+"The HTTP proxy does a lookup via the router for all hostnames ending in "
+"'.i2p'.\n"
+"Otherwise, it forwards the request to a configured HTTP outproxy.\n"
+"Thus, in practice, all HTTP (eepsite) hostnames must end in the pseudo-"
+"Top Level Domain '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:171
+#, python-format
+msgid ""
+"We have applied to reserve the .i2p TLD\n"
+"following the procedures specified in RFC "
+"6761."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:177
+msgid ""
+"If the router fails to resolve the hostname, the HTTP proxy returns\n"
+"an error page to the user with links to several \"jump\" services.\n"
+"See below for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:183
+msgid "Addressbook"
+msgstr "Aadressiraamat"
+
+#: i2p2www/pages/site/docs/naming.html:184
+msgid "Incoming Subscriptions and Merging"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:186
+msgid ""
+"The addressbook application periodically\n"
+"retrieves other users' hosts.txt files and merges\n"
+"them with the local hosts.txt, after several checks.\n"
+"Naming conflicts are resolved on a first-come first-served\n"
+"basis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:194
+msgid ""
+"Subscribing to another user's hosts.txt file involves\n"
+"giving them a certain amount of trust.\n"
+"You do not want them, for example, 'hijacking' a new site\n"
+"by quickly entering in their own key for a new site before\n"
+"passing the new host/key entry to you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:202
+msgid ""
+"For this reason, the only subscription configured by\n"
+"default is http://i2p-projekt.i2p/hosts.txt "
+"(http://udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p/hosts.txt)
,"
+" \n"
+"which contains a copy of the hosts.txt included\n"
+"in the I2P release.\n"
+"Users must configure additional subscriptions in their\n"
+"local addressbook application (via subscriptions.txt or SusiDNS)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:211
+msgid "Some other public addressbook subscription links:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:218
+msgid ""
+"The operators of these services may have various policies for listing "
+"hosts.\n"
+"Presence on this list does not imply endorsement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:223
+#: i2p2www/pages/site/docs/naming.html:235
+msgid "Naming Rules"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:224
+msgid ""
+"While there are hopefully not any technical limitations within I2P on "
+"host names,\n"
+"the addressbook enforces several restrictions on host names\n"
+"imported from subscriptions.\n"
+"It does this for basic typographical sanity and compatibility with "
+"browsers,\n"
+"and for security.\n"
+"The rules are essentially the same as those in RFC2396 Section 3.2.2.\n"
+"Any hostnames violating these rules may not be propagated\n"
+"to other routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:239
+msgid "Names are converted to lower case on import."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:243
+msgid ""
+"Names are checked for conflict with existing names in the existing "
+"userhosts.txt and hosts.txt\n"
+"(but not privatehosts.txt) after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:248
+msgid "Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:252
+msgid "Must not start with '.' or '-'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:256
+msgid "Must end with '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:260
+msgid "67 characters maximum, including the '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:264
+msgid "Must not contain '..'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:268
+msgid "Must not contain '.-' or '-.' (as of 0.6.1.33)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:272
+msgid "Must not contain '--' except in 'xn--' for IDN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:276
+msgid ""
+"Base32 hostnames (*.b32.i2p) are reserved for base 32 use and so are not "
+"allowed to be imported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:280
+msgid ""
+"Certain hostnames reserved for project use are not allowed\n"
+"(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, "
+"*.console.i2p, and others)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:285
+msgid "Keys are checked for base64 validity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:289
+msgid ""
+"Keys are checked for conflict with existing keys in hosts.txt (but not "
+"privatehosts.txt)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:293
+msgid "Minimum key length 516 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:297
+msgid "Maximum key length 616 bytes (to account for certs up to 100 bytes)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:302
+msgid ""
+"Any name received via subscription that passes all the checks is added "
+"via the local naming service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:306
+msgid ""
+"Note that the '.' symbols in a host name are of no significance,\n"
+"and do not denote any actual naming or trust hierarchy.\n"
+"If the name 'host.i2p' already exists, there is nothing\n"
+"to prevent anybody from adding a name 'a.host.i2p' to their hosts.txt,\n"
+"and this name can be imported by others' addressbook.\n"
+"Methods to deny subdomains to non-domain 'owners' (certificates?),\n"
+"and the desirability and feasibility of these methods,\n"
+"are topics for future discussion."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:317
+msgid ""
+"International Domain Names (IDN) also work in i2p (using punycode 'xn--' "
+"form).\n"
+"To see IDN .i2p domain names rendered correctly in Firefox's location "
+"bar,\n"
+"add 'network.IDN.whitelist.i2p (boolean) = true' in about:config."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:323
+msgid ""
+"As the addressbook application does not use privatehosts.txt at all, in "
+"practice\n"
+"this file is the only place where it is appropriate to place private "
+"aliases or\n"
+"\"pet names\" for sites already in hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:329
+msgid "Advanced Subscription Feed Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:337
+msgid "Outgoing Subscriptions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:338
+msgid ""
+"Addressbook will publish the merged hosts.txt to a location\n"
+"(traditionally hosts.txt in the local eepsite's home directory) to be "
+"accessed by others\n"
+"for their subscriptions.\n"
+"This step is optional and is disabled by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:346
+msgid ""
+"The addressbook application, together with eepget, saves the Etag and/or "
+"Last-Modified\n"
+"information returned by the web server of the subscription.\n"
+"This greatly reduces the bandwidth required, as the web server will\n"
+"return a '304 Not Modified' on the next fetch if nothing has changed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:353
+msgid ""
+"However the entire hosts.txt is downloaded if it has changed.\n"
+"See below for discussion on this issue."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:358
+msgid ""
+"Hosts serving a static hosts.txt or an equivalent CGI application\n"
+"are strongly encouraged to deliver\n"
+"a Content-Length header, and either an Etag or Last-Modified header.\n"
+"Also ensure that the server delivers a '304 Not Modified' when "
+"appropriate.\n"
+"This will dramatically reduce the network bandwidth, and\n"
+"reduce chances of corruption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:367
+msgid "Host Add Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:368
+msgid ""
+"A host add service is a simple CGI application that takes a hostname and "
+"a Base64 key as parameters\n"
+"and adds that to its local hosts.txt.\n"
+"If other routers subscribe to that hosts.txt, the new hostname/key\n"
+"will be propagated through the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:375
+msgid ""
+"It is recommended that host add services impose, at a minimum, the "
+"restrictions imposed by the addressbook application listed above.\n"
+"Host add services may impose additional restrictions on hostnames and "
+"keys, for example:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:380
+msgid "A limit on number of 'subdomains'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:384
+msgid "Authorization for 'subdomains' through various methods."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:388
+msgid "Hashcash or signed certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:392
+msgid "Editorial review of host names and/or content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:396
+msgid "Categorization of hosts by content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:400
+msgid "Reservation or rejection of certain host names."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:404
+msgid "Restrictions on the number of names registered in a given time period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:408
+msgid "Delays between registration and publication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:412
+msgid "Requirement that the host be up for verification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:416
+msgid "Expiration and/or revocation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:420
+msgid "IDN spoof rejection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:425
+msgid "Jump Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:426
+msgid ""
+"A jump service is a simple CGI application that takes a hostname as a "
+"parameter\n"
+"and returns a 301 redirect to the proper URL with a "
+"?i2paddresshelper=key
\n"
+"string appended.\n"
+"The HTTP proxy will interpret the appended string and\n"
+"use that key as the actual destination.\n"
+"In addition, the proxy will cache that key so the\n"
+"address helper is not necessary until restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:436
+msgid ""
+"Note that, like with subscriptions, using a jump service\n"
+"implies a certain amount of trust, as a jump service could maliciously\n"
+"redirect a user to an incorrect destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:442
+msgid ""
+"To provide the best service, a jump service should be subscribed to\n"
+"several hosts.txt providers so that its local host list is current."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:448
+msgid ""
+"SusiDNS is simply a web interface front-end to configuring addressbook "
+"subscriptions\n"
+"and accessing the four addressbook files.\n"
+"All the real work is done by the 'addressbook' application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:454
+msgid ""
+"Currently, there is little enforcement of addressbook naming rules within"
+" SusiDNS,\n"
+"so a user may enter hostnames locally that would be rejected by\n"
+"the addressbook subscription rules."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:460
+msgid "Base32 Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:461
+msgid ""
+"I2P supports Base32 hostnames similar to Tor's .onion addresses.\n"
+"Base32 addresses are much shorter and easier to handle than the\n"
+"full 516-character Base64 Destinations or addresshelpers.\n"
+"Example: "
+"ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:468
+#, python-format
+msgid ""
+"In Tor, the address is 16 characters (80 bits), or half of the SHA-1 "
+"hash.\n"
+"I2P uses 52 characters (256 bits) to represent the full SHA-256 hash.\n"
+"The form is {52 chars}.b32.i2p.\n"
+"Tor has recently published a\n"
+"proposal\n"
+"to convert to an identical format of {52 chars}.onion for their hidden "
+"services.\n"
+"Base32 is implemented in the naming service, which queries the\n"
+"router over I2CP to lookup the LeaseSet to get the full Destination.\n"
+"Base32 lookups will only be successful when the Destination is up and "
+"publishing\n"
+"a LeaseSet.\n"
+"Because resolution may require a network database lookup, it may take "
+"significantly\n"
+"longer than a local address book lookup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:483
+msgid ""
+"Base32 addresses can be used in most places where hostnames or full "
+"destinations\n"
+"are used, however there are some exceptions where they may fail if the\n"
+"name does not immediately resolve. I2PTunnel will fail, for example, if\n"
+"the name does not resolve to a destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:2
+msgid "Plugins"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:3
+msgid "June 2012"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:6
+msgid "General Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:7
+msgid ""
+"I2P includes a plugin architecture\n"
+"to support easy development and installation of additional software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:12
+msgid ""
+"There are now plugins available that support distributed email, blogs, "
+"IRC\n"
+"clients, distributed file storage, wikis, and more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:17
+msgid "Benefits to i2p users and app developers:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:22
+msgid "Easy distribution of applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:26
+msgid ""
+"Allows innovation and use of additional libraries without worrying about\n"
+"increasing the size of i2pupdate.sud
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:31
+msgid ""
+"Support large or special-purpose applications that would never be bundled"
+"\n"
+"with the I2P installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:36
+msgid "Cryptographically signed and verified applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:40
+msgid "Automatic updates of applications, just like for the router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:44
+msgid ""
+"Separate initial install and update packages, if desired, for smaller "
+"update downloads"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:48
+msgid ""
+"One-click installation of applications. No more asking users to modify\n"
+"wrapper.config
or clients.config
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:53
+msgid "Isolate applications from the base $I2P
installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:57
+msgid ""
+"Automatic compatibility checking for I2P version, Java version, Jetty\n"
+"version, and previous installed application version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:62
+msgid "Automatic link addition in console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:66
+msgid ""
+"Automatic startup of application, including modifying classpath, without "
+"requiring a restart"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:70
+msgid "Automatic integration and startup of webapps into console Jetty instance"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:74
+#, python-format
+msgid ""
+"Facilitate creation of 'app stores' like the one at\n"
+"%(pluginsite)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:79
+msgid "One-click uninstall"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:83
+msgid "Language and theme packs for the console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:87
+msgid "Bring detailed application information to the router console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:91
+msgid "Non-java applications also supported"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:97
+msgid "Required I2P version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:98
+msgid "0.7.12 or newer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:100
+msgid "Installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:101
+msgid ""
+"To install and start a plugin, copy the .xpi2p
install link "
+"to\n"
+"the form at the bottom of\n"
+"configclients.jsp"
+" in\n"
+"your router console and click the \"install plugin\" button. After a"
+"\n"
+"plugin is installed and started, a link to the plugin will usually appear"
+" at\n"
+"the top of your summary bar."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:110
+msgid ""
+"To update a plugin to the latest version, just click the update button on"
+"\n"
+"configclients.jsp."
+"\n"
+"There is also a button to check if the plugin has a more recent version, "
+"as\n"
+"well as a button to check for updates for all plugins. Plugins will be "
+"checked\n"
+"for updates automatically when updating to a new I2P release (not "
+"including dev\n"
+"builds)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:120
+msgid "Development"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:121
+#, python-format
+msgid ""
+"See the latest plugin specification and "
+"the\n"
+"plugin forum on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:126
+#, python-format
+msgid ""
+"See also the sources for plugins developed by various people. Some "
+"plugins, such\n"
+"as snowman, were "
+"developed\n"
+"specifically as examples."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:132
+msgid ""
+"Developers wanted! Plugins are a great way to learn more about I2P"
+"\n"
+"or easily add some feature."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:137
+msgid "Getting Started"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:138
+#, python-format
+msgid ""
+"To create a plugin from an existing binary package you will need to get\n"
+"makeplugin.sh from the i2p.scripts branch in "
+"monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:144
+msgid "Known Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:145
+msgid ""
+"Note that the router's plugin architecture does NOT currently\n"
+"provide any additional security isolation or sandboxing of plugins."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:151
+msgid ""
+"Updates of a plugin with included jars (not wars) won't be recognized if\n"
+"the plugin was already run, as it requires class loader trickery to flush"
+" the\n"
+"class cache; a full router restart is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:157
+msgid "The stop button may be displayed even if there is nothing to stop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:161
+msgid ""
+"Plugins running in a separate JVM create a logs/
directory "
+"in\n"
+"$CWD
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:166
+msgid ""
+"No initial keys are present, except for those of jrandom and zzz (using "
+"the\n"
+"same keys as for router update), so the first key seen for a signer is\n"
+"automatically accepted—there is no signing key authority."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:172
+msgid ""
+"When deleting a plugin, the directory is not always deleted, especially "
+"on\n"
+"Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:177
+msgid ""
+"Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result "
+"in a\n"
+"\"plugin is corrupt\" message if pack200 compression of the plugin file "
+"is used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:182
+msgid "Theme and translation plugins are untested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:186
+msgid "Disabling autostart doesn't always work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:2
+msgid "Ports Used by I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:3
+msgid "March 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:7
+msgid ""
+"These are the ports used or reserved by I2P, including those for known "
+"plugins,\n"
+"common alternates,\n"
+"and some typical related applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:13
+#, python-format
+msgid ""
+"Note that many of these are not enabled by default.\n"
+"There is more information in the FAQ.\n"
+"See also the documentation for individual plugins.\n"
+"Plugin authors please add any ports you use here.\n"
+"For new plugins, we recommend using the next available port\n"
+"in the 766x range."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:56
+msgid "recommended spot for new plugins/applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:2
+msgid "Reseed Hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:3
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:3
+msgid "January 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:8
+msgid "About Reseed hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:10
+msgid ""
+"Reseed hosts are needed to for bootstrapping, that is, providing the "
+"initial set of I2P nodes for your I2P node to talk to. Depending on the "
+"status of your node it may need to bootstrap every now and then if many "
+"of the nodes it knows of aren't contactable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:14
+msgid ""
+"Reseeding is done over an encrypted connection and all of the bootstrap "
+"information is signed by the reseed host you connect to, making it "
+"impossible for an unauthenticated source to provide you with false "
+"information."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:19
+msgid "Running a Reseed host"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:21
+msgid ""
+"The more reseed hosts that are run, the more resilient the I2P network "
+"becomes, and the harder it is to prevent users of I2P from connecting to "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:25
+msgid ""
+"There have also been cases where the reseed hosts we had, have been under"
+" heavy load due to botnet activities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:33
+msgid "Thank you"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:35
+msgid ""
+"If you are running a reseed server, We would like to thank you for "
+"helping to\n"
+"make the I2P network stronger and more resilient than ever."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:41
+msgid "Thank you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:2
+msgid "BOB - Basic Open Bridge"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:3
+msgid "August 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:12
+msgid "Technical differences from SAM (for the better?)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:14
+msgid ""
+"BOB has separate command and data channels. \n"
+"One, an application command channel socket to router to configure.\n"
+"Two, the application data sockets to/from router that carry only data.\n"
+"The command channel is only needed for making or setting the initial\n"
+"destination key, and to set the destination key to port bindings. \n"
+"All connections run in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:23
+msgid ""
+"SAM has one connection that does everything, and you need to parse every "
+"packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:27
+msgid ""
+"BOB does not hold keypair values, nor does the router.\n"
+"Your application holds the keypair values. \n"
+"This is to reduce any extra complexity in the router code, it also adds "
+"to\n"
+"your privacy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:34
+msgid "SAM router stores every keypair you ever make."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:38
+msgid "Those are the important differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:44
+msgid "KEYS
= keypair public+private, these are BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:47
+msgid "KEY
= public key, also BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:50
+msgid ""
+"ERROR
as is implied returns the message \"ERROR "
+"\"+DESCRIPTION+\"\\n\"
, where the DESCRIPTION
is what"
+" went wrong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:53
+msgid ""
+"OK
returns \"OK\"
, and if data is to be "
+"returned, it is on the same line. OK
means the command is "
+"finished."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:56
+msgid ""
+"DATA
lines contain information that you requested. There may"
+" be multiple DATA
lines per request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:60
+msgid ""
+"NOTE: The help command is the ONLY command that has an exception "
+"to\n"
+"the rules... it can actually return nothing! This is intentional, since\n"
+"help is a HUMAN and not an APPLICATION command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:66
+msgid "Connection and Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:68
+msgid ""
+"All BOB status output is by lines. Lines may be \\n or \\r\\n terminated,"
+" depending on the system.\n"
+"On connection, BOB outputs two lines:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:78
+msgid "The current version is:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:82
+msgid ""
+"Note that previous versions used upper-case hex digits and did not "
+"conform to I2P versioning standards.\n"
+"It is recommended that subsequent versions use digits 0-9 only."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:87
+msgid "Version history"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:92
+msgid "Version"
+msgstr "Versioon"
+
+#: i2p2www/pages/site/docs/api/bob.html:93
+msgid "I2P Router Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:94
+msgid "Changes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:97
+msgid "current version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:100
+msgid "development versions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:104
+msgid "Commands"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:106
+msgid ""
+"PLEASE NOTE:\n"
+"For CURRENT details on the commands PLEASE use the built-in help command."
+" \n"
+"Just telnet to localhost 2827 and type help and you can get full "
+"documentation on each command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:112
+msgid ""
+"Commands never get obsoleted or changed, however new commands do get "
+"added from time to time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "COMMAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "OPERAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "RETURNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:145
+msgid ""
+"Once set up, all TCP sockets can and will block as needed, and there is "
+"no need for any \n"
+"additional messages to/from the command channel. This allows the router "
+"to pace the\n"
+"stream without exploding with OOM like SAM does as it chokes on "
+"attempting to shove \n"
+"many streams in or out one socket -- that can't scale when you have alot "
+"of connections!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:152
+msgid ""
+"What is also nice about this particular interface is that writing "
+"anything to interface \n"
+"to it, is much much easier than SAM. There is no other processing to do "
+"after the set up.\n"
+"It's configuration is so simple, that very simple tools, such as nc "
+"(netcat) can be used \n"
+"to point to some application. The value there is that one could schedule "
+"up and down times \n"
+"for an application, and not have to change the application to do that, or"
+" to even have \n"
+"to stop that application. Instead, you can literally \"unplug\" the "
+"destination, and \n"
+"\"plug it in\" again. As long as the same IP/port addresses and "
+"destination keys are used \n"
+"when bringing the bridge up, the normal TCP application won't care, and "
+"won't notice.\n"
+"It will simply be fooled -- the destinations are not reachable, and that "
+"nothing is coming in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:164
+msgid "Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:166
+msgid ""
+"For the following example, we'll setup a very simple local loopback "
+"connection, \n"
+"with two destinations. Destination \"mouth\" will be the CHARGEN service "
+"from \n"
+"the INET superserver daemon. Destination \"ear\" will be a local port "
+"that you\n"
+"can telnet into, and watch the pretty ASCII test puke forth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:174
+msgid "EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:175
+msgid "Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:176
+msgid "BOB's Command response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "FROM"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "TO"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "DIALOGUE"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:187
+msgid "MAKE NOTE OF THE ABOVE DESTINATION KEY, YOURS WILL BE DIFFERENT!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:201
+msgid ""
+"At this point, there was no error, a destination with a nickname of "
+"\"mouth\" \n"
+"is set up. When you contact the destination provided, you actually "
+"connect \n"
+"to the CHARGEN
service on 19/TCP
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:207
+msgid "Now for the other half, so that we can actually contact this destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:229
+msgid ""
+"Now all we need to do is telnet into 127.0.0.1, port 37337,\n"
+"send the destination key or host address from addressbook we want to "
+"contact.\n"
+"In this case, we want to contact \"mouth\", all we do is paste in the\n"
+"key and it goes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:236
+msgid ""
+"NOTE: The \"quit\" command in the command channel does NOT "
+"disconnect the tunnels like SAM."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:253
+msgid "After a few virtual miles of this spew, press Control-]
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:265
+msgid "Here is what happened..."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:273
+msgid "You can connect to EEPSITES too!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:306
+msgid ""
+"Pretty cool isn't it? Try some other well known EEPSITES if you like, "
+"nonexistent ones, \n"
+"etc, to get a feel for what kind of output to expect in different "
+"situations. \n"
+"For the most part, it is suggested that you ignore any of the error "
+"messages. \n"
+"They would be meaningless to the application, and are only presented for "
+"human debugging."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:313
+msgid "Let's put down our destinations now that we are all done with them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:317
+msgid "First, lets see what destination nicknames we have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:329
+msgid "Alright, there they are. First, let's remove \"mouth\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:343
+msgid ""
+"Now to remove \"ear\", note that this is what happens when you type too "
+"fast,\n"
+"and shows you what typical ERROR messages looks like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:362
+msgid ""
+"I won't bother to show an example of the receiver end of a bridge\n"
+"because it is very simple. There are two possible settings for it, and\n"
+"it is toggled with the \"quiet\" command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:368
+msgid ""
+"The default is NOT quiet, and the first data to come into your\n"
+"listening socket is the destination that is making the contact. It is a\n"
+"single line consisting of the BASE64 address followed by a newline.\n"
+"Everything after that is for the application to actually consume."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:375
+msgid ""
+"In quiet mode, think of it as a regular Internet connection. No\n"
+"extra data comes in at all. It's just as if you are plain connected to\n"
+"the regular Internet. This mode allows a form of transparency much like\n"
+"is available on the router console tunnel settings pages, so that you\n"
+"can use BOB to point a destination at a web server, for example, and\n"
+"you would not have to modify the web server at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:384
+msgid ""
+"The advantage with using BOB for this is as discussed\n"
+"previously. You could schedule random uptimes for the application,\n"
+"redirect to a different machine, etc. One use of this may be something\n"
+"like wanting to try to goof up router-to-destination upness guessing.\n"
+"You could stop and start the destination with a totally different\n"
+"process to make random up and down times on services. That way you\n"
+"would only be stopping the ability to contact such a service, and not\n"
+"have to bother shutting it down and restarting it. You could redirect\n"
+"and point to a different machine on your LAN while you do updates, or\n"
+"point to a set of backup machines depending on what is running, etc,\n"
+"etc. Only your imagination limits what you could do with BOB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:3
+#: i2p2www/pages/site/docs/protocol/index.html:3
+msgid "August 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:6
+msgid "Datagram Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:7
+#, python-format
+msgid ""
+"Datagrams build upon the base I2CP to provide "
+"authenticated\n"
+"and repliable messages in a standard format. This lets applications "
+"reliably read\n"
+"the \"from\" address out of a datagram and know that the address really "
+"sent the\n"
+"message. This is necessary for some applications since the base I2P "
+"message is\n"
+"completely raw - it has no \"from\" address (unlike IP packets). In "
+"addition, the\n"
+"message and sender are authenticated by signing the payload."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:16
+#, python-format
+msgid ""
+"Datagrams, like streaming library packets,\n"
+"are an application-level construct.\n"
+"These protocols are independent of the low-level transports;\n"
+"the protocols are converted to I2NP messages by the router, and\n"
+"either protocol may be carried by either transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:25
+msgid "Application Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:26
+#, python-format
+msgid ""
+"Applications written in Java may use the \n"
+"datagram API,\n"
+"while applications in other languages \n"
+"can use SAM's datagram support.\n"
+"There is also limited support in i2ptunnel in the SOCKS proxy,\n"
+"the 'streamr' tunnel types, and udpTunnel classes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:37
+msgid "Datagram Length"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:38
+msgid ""
+"The application designer should carefully consider the tradeoff of "
+"repliable vs. non-repliable\n"
+"datagrams. Also, the datagram size will affect reliability, due to tunnel"
+" fragmentation into 1KB\n"
+"tunnel messages. The more message fragments, the more likely that one of "
+"them will be dropped\n"
+"by an intermediate hop. Messages larger than a few KB are not "
+"recommended.\n"
+"Over about 10 KB, the delivery probablility drops dramatically.\n"
+"Messages over 16 KB cannot be delivered over NTCP, dropping delivery "
+"chances even more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:47
+#, python-format
+msgid ""
+"Also note that the various overheads added by lower layers, in particular"
+" asymmetric\n"
+"ElGamal/AES, place a large burden on "
+"intermittent messages\n"
+"such as used by a Kademlia-over-UDP application. The implementations are "
+"currently tuned\n"
+"for frequent traffic using the streaming library. There are a high number"
+"\n"
+"of session tags delivered, and a short session tag lifetime, for example."
+"\n"
+"There are currently no configuration parameters available within I2CP to "
+"tune\n"
+"the ElGamal Session Tag parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:57
+msgid "I2CP Protocol Number and Ports"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:58
+msgid ""
+"The standard I2CP protocol number for datagrams is PROTO_DATAGRAM (17).\n"
+"Applications may or may not choose to set the\n"
+"protocol in the I2CP header. It is not set by default.\n"
+"It must be set to demultiplex datagram and streaming traffic received on "
+"the same Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:65
+#, python-format
+msgid ""
+"As datagrams are not connection-oriented, the application may require\n"
+"port numbers to correlate datagrams with particular peers or "
+"communications sessions,\n"
+"as is traditional with UDP over IP.\n"
+"Applications may add 'from' and 'to' ports to the I2CP (gzip) header as "
+"described in\n"
+"the I2CP page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:73
+#, python-format
+msgid ""
+"There is no method within the datagram API to specify whether it is non-"
+"repliable (raw)\n"
+"or repliable. The application should be designed to expect the "
+"appropriate type.\n"
+"The I2CP protocol number or port should be used by the application to\n"
+"indicate datagram type.\n"
+"The I2CP protocol numbers PROTO_DATAGRAM (signed) and PROTO_DATAGRAM_RAW "
+"are defined in the\n"
+"I2PSession API\n"
+"for this purpose. A common design pattern in client/server datagram "
+"applications is to\n"
+"use signed datagrams for a request which includes a nonce, and use a raw "
+"datagram\n"
+"for the reply, returning the nonce from the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:85
+#, python-format
+msgid ""
+"The protocols and ports may be set in I2CP's\n"
+"I2PSession API,\n"
+"as implemented in\n"
+"I2PSessionMuxedImpl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:93
+#: i2p2www/pages/site/docs/api/streaming.html:418
+msgid "Data Integrity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:94
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the datagram protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:100
+#: i2p2www/pages/site/docs/api/streaming.html:426
+msgid "Packet Encapsulation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:101
+#, python-format
+msgid ""
+"Each datagram is sent through I2P as a single message (or as an "
+"individual clove in a\n"
+"Garlic Message).\n"
+"Message encapsulation is implemented in the underlying\n"
+"I2CP,\n"
+"I2NP, and\n"
+"tunnel message layers.\n"
+"There is no packet delimiter mechanism or length field in the datagram "
+"protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:114
+#: i2p2www/pages/site/docs/transport/ssu.html:650
+msgid "Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:116
+msgid "See the Datagrams Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:2
+msgid "I2PControl - Remote Control Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:5
+#, python-format
+msgid ""
+"I2P enables a JSONRPC2 interface via the plugin I2PControl.\n"
+"The aim of the interface is to provide simple way to interface with a "
+"running I2P node. A client, itoopie, has been developed in parallel.\n"
+"The JSONRPC2 implementation for the client as well as the plugin is "
+"provided by the java libraries JSON-RPC 2.0. \n"
+"A list of implementations of JSON-RPC for various languages can be found "
+"at the JSON-RPC "
+"wiki."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:12
+msgid "I2PControl is by default listening on https://localhost:7650"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:14
+msgid "API, version 1."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:15
+msgid "Parameters are only provided in a named way (maps)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:19
+msgid "JSON-RPC 2 format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:20
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:45
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:58
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:68
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:77
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:87
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:102
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:155
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:176
+msgid "Request:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:33
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:50
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:62
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:72
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:82
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:93
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:119
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:165
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:191
+msgid "Response:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:44
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:46
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:47
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:51
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:52
+#: i2p2www/pages/site/docs/protocol/i2cp.html:108
+#: i2p2www/pages/site/docs/protocol/i2cp.html:483
+msgid "Description"
+msgstr "Kirjeldus"
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:48
+msgid ""
+"Token used for authenticating every request (excluding the 'Authenticate'"
+" RPC method)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:56
+msgid "Implemented methods"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:57
+msgid ""
+"Creates and returns an authentication token used for further "
+"communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:59
+msgid "The version of the I2PControl API used by the client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:60
+msgid "The password used for authenticating against the remote server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:63
+msgid "The primary I2PControl API version implemented by the server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:64
+msgid "The token used for further communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:67
+msgid "Echoes the value of the echo key, used for debugging and testing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:69
+msgid "Value will be returned in response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:70
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:80
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:91
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:117
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:163
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:73
+msgid "Value of the key 'echo' in the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:76
+msgid ""
+"Fetches rateStat from router statManager. Creates stat if not already "
+"created."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:78
+#, python-format
+msgid ""
+"Determines which rateStat to fetch, see ratestats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:79
+msgid "Determines which period a stat is fetched for. Measured in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:83
+msgid "Returns the average value for the reuested rateStat and period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:86
+msgid "Manages I2PControl. Ports, passwords and the like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:88
+msgid ""
+"Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are "
+"implemented in I2PControl currently)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:89
+msgid ""
+"Sets a new password for I2PControl, all Authentication tokens will be "
+"revoked."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:90
+msgid "Switches which port I2PControl will listen for connections on."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:94
+msgid "Returned if address was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:95
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:96
+msgid "Returned if setting was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:97
+msgid "Returns true if any changes were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:98
+msgid "Returns true if any changes requiring a restart to take effect were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:101
+msgid "Fetches basic information about the I2P router. Uptime, version etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:120
+msgid "What the status of the router is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:121
+msgid "What the uptime of the router is in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:122
+msgid "What version of I2P the router is running."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:123
+msgid "The 1 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:124
+msgid "The 15 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:125
+msgid "The 1 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:126
+msgid "The 15 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:127
+msgid "What the current network status is. According to the below enum:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:146
+msgid "How many tunnels on the I2P net are we participating in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:147
+msgid "How many peers have we communicated with recently."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:148
+msgid "How many peers are considered 'fast'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:149
+msgid "How many peers are considered 'high capacity'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:150
+msgid "Is the router reseeding hosts to its NetDB?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:151
+msgid "How many peers are known to us (listed in our NetDB)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:154
+msgid "Manages I2P router restart/shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:156
+msgid "Blocking. Initiates a search for signed updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:157
+msgid ""
+"Initiates a router reseed, fetching peers into our NetDB from a remote "
+"host."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:158
+msgid "Restarts the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:159
+msgid ""
+"Restarts the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:160
+msgid "Shuts down the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:161
+msgid ""
+"Shuts down the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:162
+msgid "Initiates a router update from signed sources."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:166
+msgid "Blocking. Returns true iff a signed update has been found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:167
+msgid "If requested, verifies that a reseed has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:168
+msgid "If requested, verifies that a restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:169
+msgid "If requested, verifies that a graceful restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:170
+msgid "If requested, verifies that a shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:171
+msgid "If requested, verifies that a graceful shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:172
+msgid "Blocking. If requested, returns the status of the the update"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:175
+msgid "Fetches or sets various network related settings. Ports, addresses etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:177
+msgid ""
+"What port is used for the TCP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:178
+msgid ""
+"What hostname is used for the TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:179
+msgid ""
+"Use automatically detected ip for TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:180
+msgid ""
+"What port is used for the UDP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:181
+msgid ""
+"What hostname is used for the UDP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:182
+msgid ""
+"Which methods should be used for detecting the ip address of the UDP "
+"transport. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:183
+msgid "What ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:184
+msgid "Is UPnP enabled. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:185
+msgid ""
+"How many percent of bandwidth is usable for participating tunnels. If "
+"null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:186
+msgid ""
+"How many KB/s of inbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:187
+msgid ""
+"How many KB/s of outbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:188
+msgid ""
+"Is laptop mode enabled (change router identity and UDP port when IP "
+"changes ). If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:189
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method. If null is submitted, current setting will"
+" be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:192
+msgid "If requested, returns the port used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:193
+msgid "If requested, returns the hostname used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:194
+msgid ""
+"If requested, returns the method used for automatically detecting ip for "
+"the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:195
+msgid "If requested, returns the port used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:196
+msgid "If requested, returns the hostname used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:197
+msgid ""
+"If requested, returns methods used for detecting the ip address of the "
+"UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:198
+msgid "If requested, returns what ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:199
+msgid "If requested, returns the UPNP setting."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:200
+msgid ""
+"If requested, returns how many percent of bandwidth is usable for "
+"participating tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:201
+msgid "If requested, returns how many KB/s of inbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:202
+msgid "If requested, returns how many KB/s of outbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:203
+msgid "If requested, returns the laptop mode."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:204
+msgid "Have the provided settings been saved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:205
+msgid "Is a restart needed for the new settings to be used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:208
+msgid "Allows for manipulation of advanced i2p settings"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set the sent key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "SetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "Set the sent key-value pairs, remove everything else"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get the key-value pairs for the sent keys"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "GetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "Get all the key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:221
+msgid "denotes an optional value."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:222
+msgid "denotes a possibly occuring return value"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:224
+msgid "Error codes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:225
+msgid "Standard JSON-RPC2 error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:226
+msgid "JSON parse error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:227
+msgid "Invalid request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:228
+msgid "Method not found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:229
+msgid "Invalid parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:230
+msgid "Internal error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:232
+msgid "I2PControl specific error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:233
+msgid "Invalid password provided."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:234
+msgid "No authentication token presented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:235
+msgid "Authentication token doesn't exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:236
+msgid "The provided authentication token was expired and will be removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:237
+msgid ""
+"The version of the I2PControl API used wasn't specified, but is required "
+"to be specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:238
+msgid ""
+"The version of the I2PControl API specified is not supported by "
+"I2PControl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:8
+#, python-format
+msgid ""
+"I2PTunnel is a tool for interfacing with and providing services on I2P.\n"
+"Destination of an I2PTunnel can be defined using a hostname,\n"
+"Base32, or a full 516-byte destination "
+"key.\n"
+"An established I2PTunnel will be available on your client machine as "
+"localhost:port.\n"
+"If you wish to provide a service on I2P network, you simply create "
+"I2PTunnel to the\n"
+"appropriate ip_address:port. A corresponding 516-byte destination key "
+"will be generated\n"
+"for the service and it will become avaliable throughout I2P.\n"
+"A web interface for I2PTunnel management is avaliable on\n"
+"localhost:7657/i2ptunnel/."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:20
+msgid "Default Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:21
+msgid "Server tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:23
+msgid ""
+"I2P Webserver - A tunnel pointed to a Jetty webserver run\n"
+"on localhost:7658 for convenient "
+"and quick hosting on I2P.\n"
+"1/(windowSize*factor)
. In standard TCP, window sizes are"
+" in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:186
+msgid ""
+"How long to wait after instantiating a new con \n"
+"before actually attempting to connect. If this is\n"
+"<= 0, connect immediately with no initial data. If greater than 0, "
+"wait\n"
+"until the output stream is flushed, the buffer fills, \n"
+"or that many milliseconds pass, and include any initial data with the SYN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:194
+msgid ""
+"How long to block on connect, in milliseconds. Negative means "
+"indefinitely. Default is 5 minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:198
+msgid ""
+"Whether to disable warnings in the logs when an incoming connection is "
+"rejected due to connection limits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:204
+msgid ""
+"Comma- or space-separated list of Base64 peer Hashes or host names to be\n"
+"contacted using an alternate DSA destination.\n"
+"Only applies if multisession is enabled and the primary session is non-"
+"DSA\n"
+"(generally for shared clients only).\n"
+"This option must be set in the context properties, NOT in the "
+"createManager() options argument.\n"
+"Note that setting this in the router context will not affect clients "
+"outside the\n"
+"router in a separate JVM and context."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:216
+msgid ""
+"Whether to listen only for the streaming protocol.\n"
+"Setting to true will prohibit communication with Destinations earlier "
+"than release 0.7.1\n"
+"(released March 2009). Set to true if running multiple protocols on this "
+"Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:226
+msgid ""
+"(0=noop, 1=disconnect)\n"
+"What to do on an inactivity timeout - do nothing, disconnect, or send a "
+"duplicate ack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:232
+msgid "Idle time before sending a keepalive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:235
+msgid "Delay before sending an ack"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:237
+msgid ""
+"The initial value of the resend delay field in the packet header, times "
+"1000.\n"
+"Not fully implemented; see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:242
+msgid ""
+"Initial timeout\n"
+"(if no sharing data available)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:249
+msgid ""
+"Initial round trip time estimate\n"
+"(if no sharing data available).\n"
+"Disabled as of release 0.9.8; uses actual RTT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid "if no sharing data available"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid ""
+"In standard TCP, window sizes are in bytes, while in I2P, window sizes "
+"are in messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:279
+msgid ""
+"(0 or negative value means unlimited)\n"
+"This is a total limit for incoming and outgoing combined."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:284
+msgid "Incoming connection limit (per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:290
+#: i2p2www/pages/site/docs/api/streaming.html:296
+msgid "(per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:302
+msgid "The MTU in bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:306
+msgid "Maximum number of retransmissions before failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:310
+msgid "Incoming connection limit (all peers; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:316
+#: i2p2www/pages/site/docs/api/streaming.html:323
+msgid ""
+"(all peers; 0 means disabled)\n"
+"Use with caution as exceeding this will disable a server for a long time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:332
+msgid ""
+"(2=interactive not supported)\n"
+"This doesn't currently do anything, but setting it to a value other than "
+"1 will cause an error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:337
+msgid "How long to block on read, in milliseconds. Negative means indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:341
+msgid ""
+"When we're in slow start, we grow the window size at the rate\n"
+"of 1/(factor). In standard TCP, window sizes are in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:348
+#: i2p2www/pages/site/docs/api/streaming.html:355
+#: i2p2www/pages/site/docs/api/streaming.html:362
+msgid ""
+"Ref: RFC 2140. Floating point value.\n"
+"May be set only via context properties, not connection options."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:369
+msgid ""
+"How long to block on write/flush, in milliseconds. Negative means "
+"indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:377
+msgid "Protocol Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:379
+msgid "See the Streaming Library Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:383
+msgid "Implementation Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:385
+msgid "Setup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:386
+msgid ""
+"The initiator sends a packet with the SYNCHRONIZE flag set. This packet "
+"may contain the initial data as well.\n"
+"The peer replies with a packet with the SYNCHRONIZE flag set. This packet"
+" may contain the initial response data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:391
+msgid ""
+"The initiator may send additional data packets, up to the initial window "
+"size, before receiving the SYNCHRONIZE response.\n"
+"These packets will also have the send Stream ID field set to 0.\n"
+"Recipients must buffer packets received on unknown streams for a short "
+"period of time, as they may\n"
+"arrive out of order, in advance of the SYNCHRONIZE packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:398
+msgid "MTU Selection and Negotiation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:399
+msgid ""
+"The maximum message size (also called the MTU / MRU) is negotiated to the"
+" lower value supported by\n"
+"the two peers. As tunnel messages are padded to 1KB, a poor MTU selection"
+" will lead to\n"
+"a large amount of overhead.\n"
+"The MTU is specified by the option i2p.streaming.maxMessageSize.\n"
+"The current default MTU of 1730 was chosen to fit precisely into two 1K "
+"I2NP tunnel messages,\n"
+"including overhead for the typical case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:408
+msgid ""
+"The first message in a connection includes a 387 byte (typical) "
+"Destination added by the streaming layer,\n"
+"and usually a 898 byte (typical) LeaseSet, and Session keys, bundled in "
+"the Garlic message by the router.\n"
+"(The LeaseSet and Session Keys will not be bundled if an ElGamal Session "
+"was previously established).\n"
+"Therefore, the goal of fitting a complete HTTP request in a single 1KB "
+"I2NP message is not always attainable.\n"
+"However, the selection of the MTU, together with careful implementation "
+"of fragmentation\n"
+"and batching strategies in the tunnel gateway processor, are important "
+"factors in network bandwidth,\n"
+"latency, reliability, and efficiency, especially for long-lived "
+"connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:419
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:427
+#, python-format
+msgid ""
+"Each packet is sent through I2P as a single message (or as an individual "
+"clove in a\n"
+"Garlic Message). Message encapsulation "
+"is implemented\n"
+"in the underlying I2CP, I2NP, and\n"
+"tunnel message layers. There is no "
+"packet delimiter\n"
+"mechanism or payload length field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:437
+msgid "Optional Delay"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:438
+msgid ""
+"Data packets may include an optional delay field specifying the requested"
+" delay,\n"
+"in ms, before the receiver should ack the packet.\n"
+"Valid values are 0 to 60000 inclusive.\n"
+"A value of 0 requests an immediate ack.\n"
+"This is advisory only, and receivers should delay slightly so that\n"
+"additional packets may be acknowledged with a single ack.\n"
+"Some implementations may include an advisory value of (measured RTT / 2) "
+"in this field.\n"
+"For nonzero optional delay values, receivers should limit the maximum "
+"delay\n"
+"before sending an ack to a few seconds at most.\n"
+"Optional delay values greater than 60000 indicate choking, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:452
+msgid "Receive Window and Choking"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:453
+msgid ""
+"TCP headers include the receive window in bytes.\n"
+"The streaming protocol does not contain a receive window, it uses only a "
+"simple choke/unchoke indication.\n"
+"Each endpoint must maintain its own estimate of the far-end receive "
+"window, in either bytes or packets.\n"
+"The recommended minimum buffer size for receiver implementations is 128 "
+"packets or 217 KB (approximately 128x1730).\n"
+"Because of I2P netowrk latency, packet drops, and the resulting "
+"congestion control,\n"
+"a buffer of this size is rarely filled.\n"
+"Overflow is, however, likely to occur on high-bandwidth \"local "
+"loopback\" (same-router) connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:462
+msgid ""
+"To quickly indicate and smoothly recover from overflow conditions,\n"
+"there is a simple mechanism for pushback in the streaming protocol.\n"
+"If a packet is received with an optional delay field of value of 60001 or"
+" higher,\n"
+"that indicates \"choking\" or a receive window of zero.\n"
+"A packet with an optional delay field of value of 60000 or less indicates"
+" \"unchoking\".\n"
+"Packets without an optional delay field do not affect the choke/unchoke "
+"state."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:470
+msgid ""
+"After being choked, no more packets with data should be sent until the "
+"transmitter is unchoked,\n"
+"except for occasional \"probe\" data packets to compensate for possible "
+"lost unchoke packets.\n"
+"The choked endpoint should start a \"persist timer\" to control the "
+"probing, as in TCP.\n"
+"The unchoking endpoint should send several packets with this field set,\n"
+"or continue sending them periodically until data packets are received "
+"again.\n"
+"Maximum time to wait for unchoking is implementation-dependent.\n"
+"Transmitter window size and congestion control strategy after being "
+"unchoked is implementation-dependent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:481
+msgid "Congestion Control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:482
+msgid ""
+"The streaming lib uses standard slow-start (exponential window growth) "
+"and congestion avoidance (linear window growth)\n"
+"phases, with exponential backoff.\n"
+"Windowing and acknowledgments use packet count, not byte count."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:489
+msgid "Close"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:490
+msgid ""
+"Any packet, including one with the SYNCHRONIZE flag set, may have the "
+"CLOSE flag sent as well.\n"
+"The connection is not closed until the peer responds with the CLOSE flag."
+"\n"
+"CLOSE packets may contain data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:498
+msgid ""
+"There is no ping function at the I2CP layer (equivalent to ICMP echo) or "
+"in datagrams.\n"
+"This function is provided in streaming.\n"
+"Pings and pongs may not be combined with a standard streaming packet;\n"
+"if the ECHO option is set, then\n"
+"most other flags, options, ackThrough, sequenceNum, NACKs, etc. are "
+"ignored."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:506
+msgid ""
+"A ping packet must have the ECHO, SIGNATURE_INCLUDED, and FROM_INCLUDED "
+"flags set.\n"
+"The sendStreamId must be greater than zero, and the receiveStreamId is "
+"ignored.\n"
+"The sendStreamId may or may not correspond to an existing connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:512
+msgid ""
+"A pong packet must have the ECHO flag set.\n"
+"The sendStreamId must be zero, and the receiveStreamId is the "
+"sendStreamId from the ping.\n"
+"Prior to release 0.9.18, the pong packet does not include any payload "
+"that was contained in the ping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:518
+msgid ""
+"As of release 0.9.18, pings and pongs may contain a payload.\n"
+"The payload in the ping, up to a maximum of 32 bytes, is returned in the "
+"pong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:523
+msgid ""
+"Streaming may be configured to disable sending pongs with the "
+"configuration i2p.streaming.answerPings=false."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:528
+msgid "Control Block Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:529
+msgid ""
+"The streaming lib supports \"TCP\" Control Block sharing.\n"
+"This shares three important streaming lib parameters\n"
+"(window size, round trip time, round trip time variance)\n"
+"across connections to the same remote peer.\n"
+"This is used for \"temporal\" sharing at connection open/close time,\n"
+"not \"ensemble\" sharing during a connection (See\n"
+"RFC 2140).\n"
+"There is a separate share per ConnectionManager (i.e. per local "
+"Destination)\n"
+"so that there is no information leakage to other Destinations on the\n"
+"same router.\n"
+"The share data for a given peer expires after a few minutes.\n"
+"The following Control Block Sharing parameters can be set per router:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:550
+msgid "Other Parameters"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:551
+msgid ""
+"The following parameters are hardcoded, but may be of interest for "
+"analysis:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:570
+#: i2p2www/pages/site/docs/how/network-database.html:895
+msgid "History"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:571
+msgid ""
+"The streaming library has grown organically for I2P - first mihi "
+"implemented the\n"
+"\"mini streaming library\" as part of I2PTunnel, which was limited to a "
+"window\n"
+"size of 1 message (requiring an ACK before sending the next one), and "
+"then it was\n"
+"refactored out into a generic streaming interface (mirroring TCP sockets)"
+" and the\n"
+"full streaming implementation was deployed with a sliding window protocol"
+" and \n"
+"optimizations to take into account the high bandwidth x delay product. "
+"Individual\n"
+"streams may adjust the maximum packet size and other options. The default"
+"\n"
+"message size is selected to fit precisely in two 1K I2NP tunnel messages,"
+"\n"
+"and is a reasonable tradeoff between the bandwidth costs of \n"
+"retransmitting lost messages, and the latency and overhead of multiple "
+"messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:585
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:344
+#: i2p2www/pages/site/docs/how/garlic-routing.html:251
+#: i2p2www/pages/site/docs/how/network-database.html:900
+#: i2p2www/pages/site/docs/how/peer-selection.html:265
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:255
+#: i2p2www/pages/site/docs/protocol/i2cp.html:723
+#: i2p2www/pages/site/docs/protocol/i2np.html:226
+#: i2p2www/pages/site/docs/transport/ntcp.html:544
+#: i2p2www/pages/site/docs/transport/ssu.html:585
+#: i2p2www/pages/site/docs/tunnels/implementation.html:506
+msgid "Future Work"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:586
+msgid ""
+"The behavior of the streaming library has a profound impact on\n"
+"application-level performance, and as such, is an important\n"
+"area for further analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:592
+msgid "Additional tuning of the streaming lib parameters may be necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:595
+#, python-format
+msgid ""
+"Another area for research is the interaction of the streaming lib with "
+"the\n"
+"NTCP and SSU transport layers.\n"
+"See the NTCP discussion page for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:600
+msgid ""
+"The interaction of the routing algorithms with the streaming lib strongly"
+" affects performance.\n"
+"In particular, random distribution of messages to multiple tunnels in a "
+"pool\n"
+"leads to a high degree of out-of-order delivery which results in smaller "
+"window\n"
+"sizes than would otherwise be the case. The router currently routes \n"
+"messages for a single from/to destination pair through a consistent set \n"
+"of tunnels, until tunnel expiration or delivery failure. The router's \n"
+"failure and tunnel selection algorithms should be reviewed for possible \n"
+"improvements."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:610
+msgid "The data in the first SYN packet may exceed the receiver's MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:613
+msgid "The DELAY_REQUESTED field could be used more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:616
+msgid ""
+"Duplicate initial SYNCHRONIZE packets on short-lived streams may not be "
+"recognized and removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:619
+msgid "Don't send the MTU in a retransmission."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:622
+msgid ""
+"Data is sent along unless the outbound window is full.\n"
+"(i.e. no-Nagle or TCP_NODELAY)\n"
+"Probably should have a configuration option for this."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:627
+msgid ""
+"zzz has added debug code to the streaming library to log packets in a "
+"wireshark-compatible\n"
+"(pcap) format; Use this to further analyze performance.\n"
+"The format may require enhancement to map more streaming lib parameters "
+"to TCP fields."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:632
+msgid ""
+"There are proposals to replace the streaming lib with standard TCP\n"
+"(or perhaps a null layer together with raw sockets).\n"
+"This would unfortunately be incompatible with the streaming lib\n"
+"but it would be good to compare the performance of the two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:3
+msgid "January 2017"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:7
+msgid ""
+"There are several bittorrent clients and trackers on I2P.\n"
+"As I2P addressing uses a Destination instead of an IP and port, minor\n"
+"changes are required to tracker and client software for operation on I2P."
+"\n"
+"These changes are specified below.\n"
+"Note carefully the guidelines for compatibility with older I2P clients "
+"and trackers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:15
+msgid ""
+"This page specifies protocol details common to all clients and trackers.\n"
+"Specific clients and trackers may implement other unique features or "
+"protocols."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:20
+msgid "We welcome additional ports of client and tracker software to I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:26
+msgid "Announces"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:27
+msgid ""
+"Clients generally include a fake port=6881 parameter in the announce, for"
+" compatibility with older trackers.\n"
+"Trackers may ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:32
+#, python-format
+msgid ""
+"The ip parameter is the base 64 of the client's\n"
+"Destination,\n"
+"using the I2P Base 64 alphabet [A-Z][a-z][0-9]-~.\n"
+"Destinations\n"
+"are 387+ bytes, so the Base 64 is 516+ bytes.\n"
+"Clients generally append \".i2p\" to the Base 64 Destination for "
+"compatibility with older trackers.\n"
+"Trackers should not require an appended \".i2p\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:42
+msgid "Other parameters are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:46
+msgid ""
+"Current Destinations for clients are 387 or more bytes (516 or more in "
+"Base 64 encoding).\n"
+"A reasonable maximum to assume, for now, is 475 bytes.\n"
+"As the tracker must decode the Base64 to deliver compact responses (see "
+"below),\n"
+"the tracker should probably decode and reject bad Base64 when announced."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:53
+msgid ""
+"The default response type is non-compact. Clients may request a compact "
+"response with\n"
+"the parameter compact=1. A tracker may, but is not required to, return\n"
+"a compact response when requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:59
+msgid ""
+"Developers of new I2P clients\n"
+"are strongly encouraged to implemenent announces over their own tunnel "
+"rather than\n"
+"the HTTP client proxy at port 4444. Doing so is both more efficient and "
+"it allows\n"
+"destination enforcement by the tracker (see below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:66
+msgid ""
+"There are no known I2P clients or trackers that currently support UDP "
+"announce/responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:71
+msgid "Non-Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:72
+msgid ""
+"The non-compact response is just as in standard bittorrent, with an I2P "
+"\"ip\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:76
+msgid ""
+"Trackers generally include a fake port key, or use the port from the "
+"announce, for compatibility with older clients.\n"
+"Clients must ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:81
+#, python-format
+msgid ""
+"The value of the ip key is the base 64 of the client's\n"
+"Destination, as "
+"described above.\n"
+"Trackers generally append \".i2p\" to the Base 64 Destination if it "
+"wasn't in the announce ip, for compatibility with older clients.\n"
+"Clients should not require an appended \".i2p\" in the responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:88
+msgid "Other response keys and values are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:94
+msgid "Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:95
+#, python-format
+msgid ""
+"In the compact response, the value of the \"peers\" dictionary key is a "
+"single byte string,\n"
+"whose length is a multiple of 32 bytes.\n"
+"This string contains the concatenated\n"
+"32-byte SHA-256 Hashes\n"
+"of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This hash must be computed by the tracker, unless destination enforcement"
+"\n"
+"(see below) is used, in which case the hash delivered in the X-I2P-"
+"DestHash\n"
+"or X-I2P-DestB32 HTTP headers may be converted to binary and stored.\n"
+"The peers key may be absent, or the peers value may be zero-length."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:109
+msgid ""
+"While compact response support is optional for both clients and trackers,"
+" it is highly\n"
+"recommended as it reduces the nominal response size by over 90%."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:116
+msgid "Destination Enforcement"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:117
+#, python-format
+msgid ""
+"Some, but not all, I2P bittorrent clients announce over their own "
+"tunnels.\n"
+"Trackers may choose to prevent spoofing by requiring this, and verifying "
+"the\n"
+"client's\n"
+"Destination\n"
+"using HTTP headers added by the I2PTunnel HTTP Server tunnel.\n"
+"The headers are X-I2P-DestHash, X-I2P-DestB64, and X-I2P-DestB32, which "
+"are\n"
+"different formats for the same information.\n"
+"These headers cannot be spoofed by the client.\n"
+"A tracker enforcing destinations need not require the ip announce "
+"parameter at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:129
+msgid ""
+"As several clients use the HTTP proxy instead of their own tunnel for "
+"announces,\n"
+"destination enforcement will prevent usage by those clients unless or "
+"until\n"
+"those clients are converted to announcing over their own tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:135
+msgid ""
+"Unfortunately, as the network grows, so will the amount of maliciousness,"
+"\n"
+"so we expect that all trackers will eventually enforce destinations.\n"
+"Both tracker and client developers should anticipate it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:143
+msgid "Announce Host Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:144
+#, python-format
+msgid ""
+"Announce URL host names in torrent files generally follow the\n"
+"I2P naming standards.\n"
+"In addition to host names from address books and \".b32.i2p\" Base 32 "
+"hostnames,\n"
+"the full Base 64 Destination (with [or without?] \".i2p\" appended) "
+"should be supported.\n"
+"Non-open trackers should recognize their own host name in any of these "
+"formats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:152
+msgid ""
+"To preserve anonymity,\n"
+"clients should generally ignore non-I2P announce URLs in torrent files."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:159
+msgid "Client Connections"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:160
+msgid ""
+"Client-to-client connections use the standard protocol over TCP.\n"
+"There are no known I2P clients that currently support uTP communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:165
+#, python-format
+msgid ""
+"I2P uses 387+ byte Destinations\n"
+"for addresses, as explained above."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:170
+msgid ""
+"If the client has only the hash of the destination (such as from a "
+"compact response or PEX), it must perform a lookup\n"
+"by encoding it with Base 32, appending \".b32.i2p\", and querying the "
+"Naming Service,\n"
+"which will return the full Destination if available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:176
+msgid ""
+"If the client has a peer's full Destination it received in a non-compact "
+"response, it should use it\n"
+"directly in the connection setup.\n"
+"Do not convert a Destination back to a Base 32 hash for lookup, this is "
+"quite inefficient."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:183
+msgid "Cross-Network Prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:184
+msgid ""
+"To preserve anonymity,\n"
+"I2P bittorrent clients generally do not support non-I2P announces or peer"
+" connections.\n"
+"I2P HTTP outproxies often block announces.\n"
+"There are no known SOCKS outproxies supporting bittorrent traffic."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:191
+msgid ""
+"To prevent usage by non-I2P clients via an HTTP inproxy, I2P trackers "
+"often\n"
+"block accesses or announces that contain an X-Forwarded-For HTTP header.\n"
+"Trackers should reject standard network announces with IPv4 or IPv6 IPs, "
+"and not deliver them in responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:200
+#, python-format
+msgid ""
+"I2P PEX is based on ut_pex.\n"
+"As there does not appear to be a formal specification of ut_pex "
+"available,\n"
+"it may be necessary to review the libtorrent source for assistance.\n"
+"It is an extension message, identified as \"i2p_pex\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with up to 3 keys, \"added\", "
+"\"added.f\", and \"dropped\".\n"
+"The added and dropped values are each a single byte string, whose length "
+"is a multiple of 32 bytes.\n"
+"These byte strings are the concatenated SHA-256 Hashes of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This is the same format as the peers dictionary value in the i2p compact "
+"response format specified above.\n"
+"The added.f value, if present, is the same as in ut_pex."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:218
+msgid ""
+"DHT support is included in the i2psnark client as of version 0.9.2.\n"
+"Preliminary differences from\n"
+"BEP 5\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client supporting DHT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:226
+msgid ""
+"Unlike standard DHT, I2P DHT does not use a bit in the options handshake,"
+" or the PORT message.\n"
+"It is advertised with an extension message, identified as \"i2p_dht\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with two keys, \"port\" and \"rport\", "
+"both integers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:233
+msgid ""
+"The UDP (datagram) port listed in the compact node info is used\n"
+"to receive repliable (signed) datagrams.\n"
+"This is used for queries, except for announces.\n"
+"We call this the \"query port\".\n"
+"This is the \"port\" value from the extension message.\n"
+"Queries use I2CP protocol number 17."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:242
+msgid ""
+"In addition to that UDP port, we use a second datagram\n"
+"port equal to the query port + 1. This is used to receive\n"
+"unsigned (raw) datagrams for replies, errors, and announces.\n"
+"This port provides increased efficiency since replies\n"
+"contain tokens sent in the query, and need not be signed.\n"
+"We call this the \"response port\".\n"
+"This is the \"rport\" value from the extension message.\n"
+"It must be 1 + the query port.\n"
+"Responses and announces use I2CP protocol number 18."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:254
+msgid ""
+"Compact peer info is 32 bytes (32 byte SHA256 Hash)\n"
+"instead of 4 byte IP + 2 byte port. There is no peer port.\n"
+"In a response, the \"values\" key is a list of strings, each containing a"
+" single compact peer info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:260
+msgid ""
+"Compact node info is 54 bytes (20 byte SHA1 Hash + 32 byte SHA256 Hash + "
+"2 byte port)\n"
+"instead of 20 byte SHA1 Hash + 4 byte IP + 2 byte port.\n"
+"In a response, the \"nodes\" key is a\n"
+"single byte string with concatenated compact node info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:267
+msgid ""
+"Secure node ID requirement: To make various DHT attacks more difficult,\n"
+"the first 4 bytes of the Node ID must match the first 4 bytes of the "
+"destination Hash,\n"
+"and the next two bytes of the Node ID must match the next two bytes of "
+"the\n"
+"destination hash exclusive-ORed with the port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:274
+msgid ""
+"In a torrent file,\n"
+"the trackerless torrent dictionary \"nodes\" key is TBD.\n"
+"It could be a list of\n"
+"32 byte binary strings (SHA256 Hashes) instead of a list of lists\n"
+"containing a host string and a port integer.\n"
+"Alternatives: A single byte string with concatenated hashes,\n"
+"or a list of strings alone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:286
+msgid "Datagram (UDP) Trackers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:287
+msgid ""
+"UDP tracker support in clients and trackers is not yet available.\n"
+"Preliminary differences from\n"
+"BEP 15\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client or tracker "
+"supporting datagram announces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:295
+msgid ""
+"A UDP tracker listens on two ports.\n"
+"The \"query port\" is the advertised port, and is used to receive "
+"repliable (signed) datagrams, for the connect request only.\n"
+"The \"response port\" is used to receive unsigned (raw) datagrams, and is"
+" the source port for all replies.\n"
+"The response port is arbitrary.\n"
+"A client sends and receives on a single port only.\n"
+"It receives only unsigned (raw) datagrams.\n"
+"Raw datagrams provides increased efficiency for replies since they "
+"contain tokens sent in the query, and need not be signed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:305
+msgid ""
+"In the announce request, the 4-byte IP is replaced by a 32-byte hash, and"
+" the port is still present,\n"
+"although it may be ignored by the tracker.\n"
+"In the announce response, each 4-byte IP and 2-byte port is replaced by a"
+" 32-byte hash (compact peer info), and no port is present.\n"
+"The client sends the announce request and scrape request to the source "
+"port in the announce response packet.\n"
+"The connect request, connect response, scrape request, scrape response, "
+"and error response are the same as in BEP 15."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:313
+msgid ""
+"Source addresses in I2P cannot be spoofed, so it is possible to use a "
+"simplified protocol\n"
+"with 2 packets instead of 4, omitting the connect request and response.\n"
+"In this case, the announce request would be a repliable datagram sent to "
+"the tracker's query port,\n"
+"and the tracker would not require a response port.\n"
+"While this is more efficient, it would be more difficult to modify an "
+"existing tracker to support this mode.\n"
+"The URL for the 4-packet-mode tracker would use standard \"udp://\" "
+"prefix. \n"
+"The URL for a modified 2-packet-mode tracker would require a different "
+"prefix if both modes are supported in I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:326
+#: i2p2www/pages/site/docs/how/intro.html:184
+msgid "Additional Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:328
+#, python-format
+msgid ""
+"I2P bittorrent standards are generally discussed on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:331
+#, python-format
+msgid ""
+"A chart of current tracker software capabilities is also available there."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:334
+#, python-format
+msgid ""
+"The\n"
+"I2P bittorrent FAQ"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:338
+#, python-format
+msgid "DHT on I2P discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:2
+msgid "Embedding I2P in your Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:3
+msgid "November 2017"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:8
+msgid ""
+"This page is about bundling the entire I2P router binary with your "
+"application.\n"
+"It is not about writing an application to work with I2P (either bundled "
+"or external)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:13
+msgid ""
+"Lots of projects are bundling, or talking about bundling, I2P. That's "
+"great if done right.\n"
+"If done wrong, it could cause real harm to our network.\n"
+"The I2P router is complex, and it can be a challenge to hide all the "
+"complexity from your users.\n"
+"This page discusses some general guidelines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:23
+msgid "Talk to us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:24
+msgid ""
+"Start a dialog. We're here to help. Applications that embed I2P are the "
+"most promising - and exciting -\n"
+"opportunities for us to grow the network and improve anonymity for "
+"everyone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:30
+msgid "Choose your router wisely"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:31
+msgid ""
+"If your application is in Java or Scala, it's an easy choice - use the "
+"Java router.\n"
+"If in C/C++, we recommend i2pd. The development of i2pcpp has stopped.\n"
+"For apps in other languages, best to use SAM or BOB or SOCKS and bundle "
+"the Java router as a separate process.\n"
+"Some of the following only applies to the Java router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:39
+msgid "Licensing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:40
+msgid "Ensure you meet the license requirements of the software you are bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:45
+msgid "Verify default configuration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:46
+msgid ""
+"A correct default configuration is crucial. Most users will not change "
+"the defaults.\n"
+"The defaults for your application may need to be different than the "
+"defaults for the router you are bundling.\n"
+"Override the router defaults if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:51
+msgid ""
+"Some important defaults to review: Max bandwidth, tunnel quantity and "
+"length, max participating tunnels.\n"
+"A lot of this depends on the expected bandwidth and usage patterns of "
+"your app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:55
+msgid ""
+"Configure enough bandwidth and tunnels to allow your users to contribute "
+"to the network.\n"
+"Consider disabling external I2CP, as you probably don't need it and it "
+"would conflict with any other running I2P instance.\n"
+"Also look at the configs for disabling killing of the JVM on exit, for "
+"example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:62
+msgid "Participating Traffic Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:63
+msgid ""
+"It may be tempting for you to disable participating traffic.\n"
+"There's several ways to do this (hidden mode, setting max tunnels to 0, "
+"setting shared bandwidth below 12 KBytes/sec).\n"
+"Without participating traffic, you don't have to worry about graceful "
+"shutdown,\n"
+"your users don't see bandwidth usage not generated by them, etc.\n"
+"However, there's lots of reasons why you should allow participating "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:70
+msgid ""
+"First of all, the router doesn't work that well if it doesn't have a "
+"chance to \"integrate\" with the network,\n"
+"which is helped tremendously by others building tunnels through you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:74
+msgid ""
+"Secondly, over 90% of the routers in the current network allow "
+"participating traffic.\n"
+"It's the default in the Java router.\n"
+"If your application doesn't route for others and it gets really popular, "
+"then it's a leech on the network,\n"
+"and it upsets the balance we have now.\n"
+"If it gets really big, then we become Tor, and spend our time begging for"
+" people to enable relaying."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:81
+msgid ""
+"Thirdly, participating traffic is cover traffic that helps your users' "
+"anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:84
+msgid ""
+"We strongly discourage you from disabling participating traffic by "
+"default.\n"
+"If you do this and your application gets hugely popular, it could break "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:90
+msgid "Persistence"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:91
+msgid ""
+"You must save the router's data (netdb, configuration, etc.) between runs"
+" of the router.\n"
+"I2P does not work well if you must reseed each startup, and that's a huge"
+" load on our reseed servers, and not very good for anonymity either.\n"
+"Even if you bundle router infos, I2P needs saved profile data for best "
+"performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:99
+msgid "Configurability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:100
+msgid ""
+"Give your users a way to change the configuration of the important "
+"settings.\n"
+"We understand that you will probably want to hide most of I2P's "
+"complexity, but it's important to show some basic settings.\n"
+"In addition to the defaults above, some network settings such as UPnP, "
+"IP/port may be helpful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:108
+msgid "Floodfill Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:109
+msgid ""
+"Above a certain bandwidth setting, and meeting other health criteria, "
+"your router will become floodfill,\n"
+"which may cause a large increase in connections and memory usage (at "
+"least with the Java router).\n"
+"Think about whether that's OK. You can disable floodfill, but then your "
+"fastest users aren't contributing what they could.\n"
+"It also depends on the typical uptime for your application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:119
+msgid "Reseeding"
+msgstr "Hangin ruuterite kontakte"
+
+#: i2p2www/pages/site/docs/applications/embedding.html:120
+msgid ""
+"Decide if you are bundling router infos or using our reseed hosts.\n"
+"The Java reseed host list is in the source code, so if you keep your "
+"source up to date, the host list will be also.\n"
+"Be aware of possible blocking by hostile governments."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:129
+msgid "Reduce Network Resource Usage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:130
+msgid ""
+"Consider setting your application tunnels to delay-open, reduce-on-idle "
+"and/or close-on-idle.\n"
+"This is straightforward if using i2ptunnel but you'll have to implement "
+"some of it yourself if using I2CP directly.\n"
+"See i2psnark for code that reduces tunnel count and then closes the "
+"tunnel, even in the presence of some background DHT activity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:138
+msgid "Updatability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:139
+msgid ""
+"Have an auto-update feature if at all possible, or at least auto-"
+"notification of a new version.\n"
+"Our biggest fear is a huge number of routers out there that can't be "
+"updated.\n"
+"We have about 6-8 releases a year of the Java router, and it's critical "
+"to the health of the network that the users keep up.\n"
+"We usually have over 80% of the network on the latest release within "
+"6 weeks after the release, and we'd like to keep it that way.\n"
+"You don't need to worry about disabling the router's built-in auto-update"
+" function, as that code is in the router console,\n"
+"which you presumably are not bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:150
+msgid "Rollout"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:151
+msgid ""
+"Have a gradual rollout plan. Don't overwhelm the network all at once.\n"
+"We currently have approximately 25K unique users per day and 40K uniques "
+"per month.\n"
+"We are probably able to handle growth of 2-3X per year without too much "
+"issue.\n"
+"If you anticipate a faster rampup than that, OR the bandwidth "
+"distribution (or uptime distribution,\n"
+"or any other significant characteristic) of your userbase is "
+"significantly different from our current userbase,\n"
+"we really need to have a discussion.\n"
+"The bigger your growth plans, the more important everthing else in this "
+"checklist is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:163
+msgid "Design for and Encourage Long Uptimes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:164
+msgid ""
+"Tell your users that I2P works best if it keeps running.\n"
+"It may be several minutes after startup before it works well, and even "
+"more after first install.\n"
+"If your average uptime is less than an hour, I2P is probably the wrong "
+"solution."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:172
+msgid "Show Status"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:173
+msgid ""
+"Provide some indication to the user that the application tunnels are "
+"ready. Encourage patience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:178
+msgid "Graceful Shutdown"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:179
+msgid ""
+"If possible, delay the shutdown until your participating tunnels expire.\n"
+"Don't let your users break tunnels easily, or at least ask them to "
+"confirm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:185
+msgid "Education and Donation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:186
+msgid ""
+"It would be nice if you give your users links to learn more about I2P and"
+" to donate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:192
+msgid "External Router Option"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:193
+msgid ""
+"Depending on your user base and application,\n"
+"it may be helpful to provide an option or a separate package to use an "
+"external router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:200
+msgid "Use of other Common Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:201
+msgid ""
+"If you plan to use or link to other common I2P services (news feeds, "
+"hosts.txt subscriptions, trackers, outproxies, etc.),\n"
+"make sure you aren't overloading them,\n"
+"and talk to the people who are running them to make sure it's ok."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:209
+msgid "Time / NTP Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:210
+msgid ""
+"I2P includes an SNTP client. I2P requires correct time to operate.\n"
+"It will compensate for a skewed system clock but this may delay startup. "
+"You may disable I2P's SNTP queries,\n"
+"but this isn't advised unless your application makes sure the system "
+"clock is correct."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:218
+msgid "Choose What and How you Bundle"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:219
+msgid ""
+"At a minimum you will need i2p.jar, router.jar, streaming.jar, and "
+"mstreaming.jar.\n"
+"You may omit the two streaming jars for a datagram-only app.\n"
+"Some apps may need more, e.g. i2ptunnel.jar or addressbook.jar.\n"
+"Don't forget jbigi.jar, or a subset of it for the platforms you support, "
+"to make the crypto much faster.\n"
+"We are currently building them for Java 7, as of 0.9.24. The source is "
+"mostly compatible with Java 6 if you want to do your own compile,\n"
+"but we may start using Java 7 features at any time without notice.\n"
+"If you're building Debian / Ubuntu packages, you should require the I2P "
+"package from our PPA instead of bundling it.\n"
+"You almost certainly do not need susimail, susidns, the router console, "
+"and i2psnark, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:229
+msgid ""
+"The following files should be included in the I2P installation directory,"
+" specified with the \"i2p.dir.base\" property.\n"
+"Don't forget certificates/reseed and certificates/ssl, required for "
+"reseeding, and blocklist.txt for IP validation.\n"
+"The geoip directory is optional, but recommended so the router can make "
+"decisions based on location.\n"
+"The hosts.txt file may be necessary, you may modify it to include any "
+"hosts your application uses.\n"
+"You may add a router.config file to the base directory to override "
+"initial defaults."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:236
+msgid ""
+"License requirements may require you to include the LICENSES.txt file and"
+" the licenses directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:242
+msgid "You may also wish to bundle a hosts.txt file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:245
+msgid "Be sure to specify a Java 7 bootclasspath if compiling with Java 8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:253
+msgid "Android considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:254
+msgid ""
+"Our Android router app may be shared by multiple clients.\n"
+"If it is not installed, the user will be prompted when he starts a client"
+" app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:258
+msgid ""
+"Some developers have expressed concern that this is a poor user "
+"experience,\n"
+"and they wish to embed the router in their app.\n"
+"We do have an Android router service library on our roadmap, which could "
+"make embedding easier.\n"
+"More information needed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:264
+#: i2p2www/pages/site/docs/applications/embedding.html:275
+msgid "If you require assistance, please contact us."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:270
+msgid "Maven jars"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:271
+msgid ""
+"We have a limited number of our jars on Maven"
+" Central.\n"
+"There are numerous trac tickets for us to address that will improve and "
+"expand the released jars on Maven Central."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:281
+msgid "Datagram (DHT) considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:282
+msgid ""
+"If your application is using I2P datagrams, e.g. for a DHT,\n"
+"there's lots of advanced options available to reduce overhead and "
+"increase reliability.\n"
+"This may take some time and experimentation to get working well.\n"
+"Be aware of size/reliability tradeoffs. Talk to us for help.\n"
+"It is possible - and recommended - to use Datagrams and Streaming on the "
+"same Destination.\n"
+"Don't create separate Destinations for this.\n"
+"Don't try to store your unrelated data in the existing network DHTs "
+"(iMule, bote, bittorrent, and router).\n"
+"Build your own. If you are hardcoding seed nodes, we recommend that you "
+"have several."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:295
+msgid "Comarketing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:296
+msgid ""
+"Let's work together. Don't wait until it's done.\n"
+"Give us your Twitter handle and start tweeting about it, we will return "
+"the favor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:302
+msgid "Malware"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:303
+msgid ""
+"Please don't use I2P for evil.\n"
+"It could cause great harm both to our network and our reputation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:309
+msgid "Join Us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:310
+msgid ""
+"This may be obvious, but join the community. Run I2P 24/7. Start an "
+"eepsite about your project.\n"
+"Hang out in IRC #i2p-dev. Post on the forums. Spread the word.\n"
+"We can help get you users, testers, translators, or even coders."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:318
+msgid "Application Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:319
+msgid ""
+"You may wish to install and play with the I2P Android app, and look at "
+"its code, for an example of an application that bundles the router.\n"
+"See what we expose to the user and what we hide.\n"
+"Look at the state machine we use to start and stop the router.\n"
+"Other examples are: Vuze, the Nightweb Android app, iMule, TAILS, iCloak,"
+" and Monero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:327
+msgid "Code Example"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:328
+msgid ""
+"None of the above actually tells you how to write your code to\n"
+"bundle the Java router, so following is a brief example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:358
+msgid ""
+"This code is for the case where your application starts the router, as in"
+" our Android app.\n"
+"You could also have the router start the application via the "
+"clients.config and i2ptunnel.config files,\n"
+"together with Jetty webapps,\n"
+"as is done in our Java packages.\n"
+"As always, state management is the difficult part."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:3
+msgid "February 2014"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:8
+#, python-format
+msgid ""
+"Clients may be started directly by the router when they are listed\n"
+"in the clients.config file.\n"
+"These clients may be \"managed\" or \"unmanaged\".\n"
+"This is handled by the ClientAppManager.\n"
+"Additionally, managed or unmanaged clients may register with the\n"
+"ClientAppManager so that other clients may retrieve a reference to them.\n"
+"There is also a simple Port Mapper facility for clients to register an\n"
+"internal port that other clients may look up."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:21
+msgid ""
+"As of release 0.9.4, the router supports managed clients.\n"
+"Managed clients are instantiated and started by the ClientAppManager.\n"
+"The ClientAppManager maintains a reference to the client and receives "
+"updates on the client's state.\n"
+"Managed clients are preferred, as it is much easier to implement state "
+"tracking\n"
+"and to start and stop a client. It also is much easier to avoid static "
+"references in the client code\n"
+"which could lead to excessive memory usage after a client is stopped.\n"
+"Managed clients may be started and stopped by the user in the router "
+"console,\n"
+"and are stopped at router shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:31
+msgid ""
+"Managed clients implement either the net.i2p.app.ClientApp or "
+"net.i2p.router.app.RouterApp interface.\n"
+"Clients implementing the ClientApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:38
+msgid ""
+"Clients implementing the RouterApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:44
+msgid "The arguments provided are specified in the clients.config file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:48
+msgid "Unmanaged Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:49
+msgid ""
+"If the main class specified in the clients.config file does not implement"
+" a managed interface,\n"
+"it will be started with main() with the arguments specified,\n"
+"and stopped with main() with the arguments specified.\n"
+"The router does not maintain a reference, since all interactions are via "
+"the static main() method.\n"
+"The console cannot provide accurate state information to the user."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:57
+msgid "Registered Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:58
+msgid ""
+"Clients, whether managed or unmanaged, may register with the "
+"ClientAppManager\n"
+"so that other clients may retrieve a reference to them.\n"
+"Registration is by name.\n"
+"Known registered clients are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:68
+msgid "Port Mapper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:69
+msgid ""
+"The router also provides a simple mechanism for clients to find an "
+"internal socket service,\n"
+"such as the HTTP proxy. This is provided by the Port Mapper.\n"
+"Registration is by name.\n"
+"Clients that register generally provide an internal emulated socket on "
+"that port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:2
+msgid "Supported Applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:5
+#: i2p2www/pages/site/docs/applications/supported.html:188
+msgid "Blogging, Forums, and Wikis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:7
+#: i2p2www/pages/site/docs/applications/supported.html:234
+msgid "Decentralized File Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:10
+#: i2p2www/pages/site/docs/applications/supported.html:246
+msgid "Development Tools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:13
+#: i2p2www/pages/site/docs/applications/supported.html:248
+msgid "Version control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:17
+#: i2p2www/pages/site/docs/applications/supported.html:267
+msgid "Domain Naming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:19
+#: i2p2www/pages/site/docs/applications/supported.html:285
+msgid "Email"
+msgstr "E-post"
+
+#: i2p2www/pages/site/docs/applications/supported.html:22
+#: i2p2www/pages/site/docs/applications/supported.html:330
+msgid "File Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:25
+#: i2p2www/pages/site/docs/applications/supported.html:332
+msgid "BitTorrent clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:27
+#: i2p2www/pages/site/docs/applications/supported.html:375
+msgid "BitTorrent trackers and indexers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:36
+#: i2p2www/pages/site/docs/applications/supported.html:442
+msgid "Network Administration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:39
+#: i2p2www/pages/site/docs/applications/supported.html:444
+msgid "General-purpose socket utilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:46
+#: i2p2www/pages/site/docs/applications/supported.html:485
+msgid "Real-time Chat"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:49
+#: i2p2www/pages/site/docs/applications/supported.html:487
+msgid "Instant messaging clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:51
+#: i2p2www/pages/site/docs/applications/supported.html:497
+msgid "IRC clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:53
+#: i2p2www/pages/site/docs/applications/supported.html:548
+msgid "IRC servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:58
+#: i2p2www/pages/site/docs/applications/supported.html:564
+msgid "Web Browsing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:61
+#: i2p2www/pages/site/docs/applications/supported.html:566
+msgid "Anonymous websites"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:63
+#: i2p2www/pages/site/docs/applications/supported.html:615
+msgid "Proxy software"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:65
+#: i2p2www/pages/site/docs/applications/supported.html:640
+msgid "Inproxies"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:67
+#: i2p2www/pages/site/docs/applications/supported.html:681
+msgid "Outproxies"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:72
+#: i2p2www/pages/site/docs/applications/supported.html:695
+msgid "Website Hosting"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:75
+#: i2p2www/pages/site/docs/applications/supported.html:710
+msgid "Web servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:82
+#, python-format
+msgid ""
+"This is intended to be a comprehensive listing of applications used with\n"
+"I2P. If you know of something that's missing please submit a ticket on\n"
+"Trac, and be sure to select the\n"
+"“www” component in the submission form."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:89
+msgid ""
+"\n"
+"Supported applications are tagged with one or more of the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:94
+#: i2p2www/pages/site/docs/applications/supported.html:281
+#: i2p2www/pages/site/docs/applications/supported.html:313
+#: i2p2www/pages/site/docs/applications/supported.html:338
+#: i2p2www/pages/site/docs/applications/supported.html:707
+msgid "bundled"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:97
+msgid ""
+"Bundled application — I2P ships with a few officially\n"
+"supported applications that let new users take immediate advantage of\n"
+"some of I2P's more useful capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:105
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:294
+#: i2p2www/pages/site/docs/applications/supported.html:407
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:526
+msgid "plugin"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:108
+#, python-format
+msgid ""
+"Third-party plugin — I2P's plugin system provides convenient\n"
+"deployment of I2P-enabled applications and allows tighter integration\n"
+"with the router. Plugins are [reviewed by the community](http://%(plugins)s) to identify security and\n"
+"anonymity issues."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:254
+#: i2p2www/pages/site/docs/applications/supported.html:263
+#: i2p2www/pages/site/docs/applications/supported.html:326
+#: i2p2www/pages/site/docs/applications/supported.html:345
+#: i2p2www/pages/site/docs/applications/supported.html:356
+#: i2p2www/pages/site/docs/applications/supported.html:371
+#: i2p2www/pages/site/docs/applications/supported.html:417
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:453
+#: i2p2www/pages/site/docs/applications/supported.html:459
+#: i2p2www/pages/site/docs/applications/supported.html:465
+#: i2p2www/pages/site/docs/applications/supported.html:475
+#: i2p2www/pages/site/docs/applications/supported.html:481
+#: i2p2www/pages/site/docs/applications/supported.html:493
+#: i2p2www/pages/site/docs/applications/supported.html:526
+#: i2p2www/pages/site/docs/applications/supported.html:532
+#: i2p2www/pages/site/docs/applications/supported.html:538
+#: i2p2www/pages/site/docs/applications/supported.html:544
+#: i2p2www/pages/site/docs/applications/supported.html:621
+#: i2p2www/pages/site/docs/applications/supported.html:630
+#: i2p2www/pages/site/docs/applications/supported.html:636
+#: i2p2www/pages/site/docs/applications/supported.html:707
+#: i2p2www/pages/site/docs/applications/supported.html:722
+#: i2p2www/pages/site/docs/applications/supported.html:728
+#: i2p2www/pages/site/docs/applications/supported.html:734
+#: i2p2www/pages/site/docs/applications/supported.html:740
+msgid "standalone"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:204
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:216
+#: i2p2www/pages/site/docs/applications/supported.html:365
+#: i2p2www/pages/site/docs/applications/supported.html:389
+#: i2p2www/pages/site/docs/applications/supported.html:398
+#: i2p2www/pages/site/docs/applications/supported.html:554
+#: i2p2www/pages/site/docs/applications/supported.html:560
+msgid "standalone/mod"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:122
+msgid ""
+"Third-party standalone application — Many standard network\n"
+"applications only require careful setup and configuration to communicate\n"
+"anonymously over I2P. These are tagged with standalone. Some\n"
+"applications, tagged with standalone/mod, require patching to\n"
+"function properly over I2P or to prevent inadvertent disclosure of\n"
+"identifying information such as the user's hostname or external IP\n"
+"address."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:135
+#: i2p2www/pages/site/docs/applications/supported.html:304
+#: i2p2www/pages/site/docs/applications/supported.html:574
+#: i2p2www/pages/site/docs/applications/supported.html:584
+#: i2p2www/pages/site/docs/applications/supported.html:593
+#: i2p2www/pages/site/docs/applications/supported.html:599
+#: i2p2www/pages/site/docs/applications/supported.html:605
+#: i2p2www/pages/site/docs/applications/supported.html:611
+#: i2p2www/pages/site/docs/applications/supported.html:653
+#: i2p2www/pages/site/docs/applications/supported.html:661
+#: i2p2www/pages/site/docs/applications/supported.html:670
+#: i2p2www/pages/site/docs/applications/supported.html:677
+#: i2p2www/pages/site/docs/applications/supported.html:691
+msgid "service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:138
+msgid ""
+"Third-party essential network service — Services which on\n"
+"the I2P network are analogous to those provided on the public Internet\n"
+"by hosting providers, ISPs, and Google: eepsite indexes and jump\n"
+"services, search engines, email, DNS-style name services, hosting,\n"
+"proxies, etc. These services focus on boosting the usefulness of the\n"
+"network as a whole, and making network content more discoverable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:150
+#: i2p2www/pages/site/docs/applications/supported.html:222
+msgid "unmaintained"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:153
+msgid ""
+"Unmaintained — This is used to tag plugins, applications,\n"
+"and services which appear to be unmaintained and may be removed from\n"
+"this listing in the future."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:161
+#, python-format
+msgid ""
+"Warning: Using an application, plugin, or service with I2P\n"
+"doesn't automatically protect your anonymity. I2P is merely a set of "
+"tools\n"
+"which can help you mitigate certain identified\n"
+"threats to anonymity. We do not and cannot make any guarantees about "
+"the\n"
+"safety of the applications, plugins, and services listed below. Most\n"
+"applications and plugins must be properly configured, and some will need "
+"to\n"
+"be patched — and even then your anonymity might not be assured. "
+"Similarly,\n"
+"services could put your anonymity at risk, either by design or through\n"
+"carelessness on their part or your own."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:173
+msgid ""
+"If you have doubts about the suitability of an application,\n"
+"plugin, or service for use with I2P, you are urged to inquire about "
+"privacy\n"
+"issues with its maintainers, to search its mailing lists and bug tracker "
+"if\n"
+"one exists, and consult trusted, knowledgeable members of the I2P\n"
+"community."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:181
+msgid ""
+"Take responsibility for your own anonymity and safety — always\n"
+"seek expert advice, educate yourself, practice good judgment, be mindful "
+"of\n"
+"disclosing personally identifying information, and don't take\n"
+"shortcuts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:203
+msgid "Lightweight forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:209
+msgid "Another lightweight blogging platform."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:215
+msgid "Most popular open source forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:221
+msgid "Distributed forums software, originally developed by jrandom."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:226
+#, python-format
+msgid ""
+"A Java-based MediaWiki clone. No external database needed.\n"
+"Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:238
+#, python-format
+msgid ""
+"Port of the Tahoe-"
+"LAFS\n"
+"distributed file system to the I2P network. Controller plugin here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:253
+msgid "Most popular distributed version control system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:259
+#, python-format
+msgid ""
+"Another distributed version control system. Currently\n"
+"used in I2P development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:271
+#, python-format
+msgid ""
+"Provides management of addressbooks, which are part of a simple,\n"
+"user-controlled I2P naming system somewhat\n"
+"analogous to the Internet's Domain Name System (DNS). Addressbooks map\n"
+"Base64 destinations to short, usually human-readable “domain” names "
+"ending\n"
+"with a .i2p suffix which the I2P router's HTTP client can resolve back to"
+"\n"
+"Base64 addresses. (Note: While Base64 destinations are globally\n"
+"unique, addressbook “domain” names only resolve to unique destinations\n"
+"locally.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:290
+msgid ""
+"Serverless peer-to-peer email application using a distributed hash table\n"
+"(DHT) for secure mail storage."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:299
+msgid ""
+"Provides email service within the I2P network via @mail.i2p addresses,\n"
+"and email gateway service between the I2P network and the public Internet"
+"\n"
+"via @i2pmail.org addresses. One of the oldest continuous services on I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:309
+msgid ""
+"Simple web browser-based email interface. Configured to use Postman's\n"
+"email service by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:318
+#, python-format
+msgid ""
+"Can be configured to use Postman's email service. See\n"
+"this comparison of MUAs,\n"
+"and configuration settings for\n"
+"SMTP and POP3."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:337
+msgid "I2P's integrated BitTorrent client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:343
+msgid ""
+"Modified version of I2PSnark, no more supported neither\n"
+" functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:350
+msgid ""
+"\n"
+"A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n"
+"improvements, including using the latest wxwidgets and python. It also\n"
+"supports use of seedless if installed for trackerless torrents and\n"
+"magnet-link like fetching of torrents within I2P.\n"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:361
+msgid ""
+"Clean, full-featured cross-platform BitTorrent client with official\n"
+"ports for several GUI toolkits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:370
+msgid "Has a plugin providing I2P support."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:377
+#, python-format
+msgid ""
+"For a detailed feature comparison of I2P-enabled trackers/indexers, see\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:385
+msgid ""
+"The code that powered one of the first major tracker/indexer sites on the"
+"\n"
+"Internet. Patched for I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:394
+#, python-format
+msgid ""
+"Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n"
+"branch of the I2P Monotone repository."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:403
+#, python-format
+msgid ""
+"zzz's Java-based open tracker. More info\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:416
+msgid "I2P port of the aMule ED2K client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:425
+#, python-format
+msgid ""
+"Port of the Phex Gnutella "
+"client. Website\n"
+"for plugin version here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:434
+#, python-format
+msgid ""
+"Cache for Gnutella peers on I2P. Website for plugin version\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:449
+msgid ""
+"OpenBSD's rewrite of the Unix standard tool, netcat, for socket relaying."
+"\n"
+"Several clones, ports, and forks have appeared over the years."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:458
+msgid "Like netcat but more powerful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:464
+msgid ""
+"Proxy providing simple, transparent SOCKS-ification of network "
+"applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:474
+msgid ""
+"Most popular implementation of the Secure Shell (SSH) protocol and "
+"related tools."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:480
+msgid "Open source Secure Shell (SSH) client for Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:492
+msgid "IM client with multiple incarnations, unsuported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:499
+msgid ""
+"Many IRC clients leak identifying information to servers or other\n"
+"clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound"
+"\n"
+"and outbound messages to scrub data such as LAN IP addresses, external IP"
+"\n"
+"addresses, local hostnames, and the name and version of the IRC client. "
+"Two\n"
+"message types in particular, DCC and CTCP, can't be sufficiently "
+"anonymized\n"
+"without changes to the protocols or to IRC client/server code, so they "
+"are\n"
+"completely blocked, except for CTCP ACTION (the message emitted by the\n"
+"/me
command) which isn't inherently dangerous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:510
+msgid ""
+"I2P's IRC filtering may not cover every possible leak — users should also"
+"\n"
+"check if their client is sending their real name or local username. "
+"Packet\n"
+"sniffers such as Wireshark are\n"
+"useful here. Eliminating remaining leaks may be as simple as changing the"
+"\n"
+"client's default configuration. If that doesn't help, inform the I2P\n"
+"developers; they may be able to solve it via additional filtering."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:522
+#, python-format
+msgid ""
+"Small Java-based IRC client. Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:531
+msgid "Cross-platform graphical IRC client based on XChat."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:537
+msgid "Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:543
+msgid "Another Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:553
+msgid "IRC server developed from scratch."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:559
+msgid "Most popular IRC server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:571
+msgid ""
+"Any website hosted anonymously on I2P, reachable through the I2P router's"
+" HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:579
+msgid ""
+"Distributed anonymous websites hosted\n"
+"using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n"
+"clients or through the Tahoe-LAFS-I2P HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:589
+#, python-format
+msgid ""
+"Website for sponge's jump service.\n"
+"Source code available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:598
+msgid "Another jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:604
+msgid "Dynamically updated eepsite index."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:610
+#, python-format
+msgid "Website for zzz's jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:620
+msgid "SOCKS-enabled caching web proxy with basic filtering capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:626
+msgid ""
+"Privacy-focused non-caching web proxy with advanced filtering\n"
+"capabilities. Excels at removing ads and other junk."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:635
+msgid "Venerable caching web proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:642
+msgid "Gateways allowing users on the public Internet to access eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:649
+#, python-format
+msgid ""
+"tino's inproxy on the public Internet,\n"
+"currently out of service,"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:658
+#: i2p2www/pages/site/docs/applications/supported.html:667
+#: i2p2www/pages/site/docs/applications/supported.html:674
+msgid "Another inproxy on the public Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:683
+msgid ""
+"Gateways allowing I2P users to access content hosted on the public "
+"Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:690
+msgid "Publicly advertised outproxy running Squid, located in Europe."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:700
+msgid ""
+"Lightweight web server and Java servlet container. I2P is tightly\n"
+"integrated with a bundled copy of Jetty which by default is configured to"
+"\n"
+"host the user's eepsite. The "
+"bundled\n"
+"Jetty also serves the I2P router console and web applications bundled "
+"with\n"
+"I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:712
+msgid ""
+"In addition to Jetty, any web server should function over I2P without\n"
+"modification so long as it's HTTP-compliant. Some web servers known to\n"
+"currently serve content on the I2P network are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:721
+msgid "Most popular web server on the public WWW."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:727
+msgid "Web server and Java servlet container. More features than Jetty."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:733
+msgid "Fast lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:739
+msgid "High-performance lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:2
+msgid "Naming discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:4
+#, python-format
+msgid ""
+"NOTE: The following is a discussion of the reasons behind the I2P naming "
+"system,\n"
+"common arguments and possible alternatives.\n"
+"See the naming page for current documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:10
+msgid "Discarded alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:12
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning "
+"with\n"
+"advocates across the spectrum of possibilities. However, given I2P's "
+"inherent\n"
+"demand for secure communication and decentralized operation, the "
+"traditional\n"
+"DNS-style naming system is clearly out, as are \"majority rules\" voting "
+"systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:19
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage "
+"done\n"
+"by hijacking a site can be tremendous - and insecure destinations have no"
+"\n"
+"value. DNSsec itself still falls back on registrars and certificate "
+"authorities,\n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the reply\n"
+"spoofed, as they are encrypted to the destination's public keys, and a "
+"destination\n"
+"itself is just a pair of public keys and a certificate. DNS-style "
+"systems on the\n"
+"other hand allow any of the name servers on the lookup path to mount "
+"simple denial\n"
+"of service and spoofing attacks. Adding on a certificate authenticating "
+"the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:33
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness of\n"
+"Sybil attacks in anonymous systems - the attacker can simply create an "
+"arbitrarily\n"
+"high number of peers and \"vote\" with each to take over a given name. "
+"Proof-of-work\n"
+"methods can be used to make identity non-free, but as the network grows "
+"the load\n"
+"required to contact everyone to conduct online voting is implausible, or "
+"if the\n"
+"full network is not queried, different sets of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:42
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of "
+"a \n"
+"naming system out of the (IP-like) communication layer. The bundled "
+"naming library\n"
+"includes a simple service provider interface which alternate naming systems can\n"
+"plug into, allowing end users to drive what sort of naming tradeoffs they"
+" prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:50
+msgid ""
+"See also Names: "
+"Decentralized, Secure, Human-Meaningful: Choose Two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:55
+msgid "(adapted from a post in the old Syndie, November 26, 2005)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:58
+msgid ""
+"Q:\n"
+"What to do if some hosts \n"
+"do not agree on one address and if some addresses are working, others are"
+" not? \n"
+"Who is the right source of a name?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:64
+msgid ""
+"A:\n"
+"You don't. This is actually a critical difference between names on I2P "
+"and how \n"
+"DNS works - names in I2P are human readable, secure, but not globally"
+" \n"
+"unique. This is by design, and an inherent part of our need for "
+"security."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:70
+msgid ""
+"If I could somehow convince you to change the destination associated with"
+" some \n"
+"name, I'd successfully \"take over\" the site, and under no circumstances"
+" is that \n"
+"acceptable. Instead, what we do is make names locally unique: "
+"they are \n"
+"what you use to call a site, just as how you can call things "
+"whatever \n"
+"you want when you add them to your browser's bookmarks, or your IM "
+"client's \n"
+"buddy list. Who you call \"Boss\" may be who someone else calls "
+"\"Sally\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:78
+msgid "Names will not, ever, be securely human readable and globally unique."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:83
+msgid ""
+"The following from zzz is a review of several common\n"
+"complaints about I2P's naming system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:89
+msgid ""
+"Inefficiency:\n"
+"The whole hosts.txt is downloaded (if it has changed, since eepget uses "
+"the etag and last-modified headers).\n"
+"It's about 400K right now for almost 800 hosts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:94
+msgid ""
+"True, but this isn't a lot of traffic in the context of i2p, which is "
+"itself wildly inefficient\n"
+"(floodfill databases, huge encryption overhead and padding, garlic "
+"routing, etc.).\n"
+"If you downloaded a hosts.txt file from someone every 12 hours it "
+"averages out to about 10 bytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:99
+msgid ""
+"As is usually the case in i2p, there is a fundamental tradeoff here "
+"between anonymity and efficiency.\n"
+"Some would say that using the etag and last-modified headers is hazardous"
+" because it exposes when you\n"
+"last requested the data.\n"
+"Others have suggested asking for specific keys only (similar to what jump"
+" services do, but\n"
+"in a more automated fashion), possibly at a further cost in anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:106
+#, python-format
+msgid ""
+"Possible improvements would be a replacement or supplement to addressbook"
+" (see %(i2host)sp),\n"
+"or something simple like subscribing to http://example.i2p/cgi-"
+"bin/recenthosts.cgi rather than http://example.i2p/hosts.txt.\n"
+"If a hypothetical recenthosts.cgi distributed all hosts from the last 24 "
+"hours, for example,\n"
+"that could be both more efficient and more anonymous than the current "
+"hosts.txt with last-modified and etag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:112
+#, python-format
+msgid ""
+"A sample implementation is on stats.i2p at\n"
+"%(url)s.\n"
+"This script returns an Etag with a timestamp.\n"
+"When a request comes in with the If-None-Match etag,\n"
+"the script ONLY returns new hosts since that timestamp, or 304 Not "
+"Modified if there are none.\n"
+"In this way, the script efficiently returns only the hosts the subscriber"
+"\n"
+"does not know about, in an addressbook-compatible manner."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:121
+msgid ""
+"So the inefficiency is not a big issue and there are several ways to "
+"improve things without\n"
+"radical change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:127
+msgid ""
+"Not Scalable:\n"
+"The 400K hosts.txt (with linear search) isn't that big at the moment and\n"
+"we can probably grow by 10x or 100x before it's a problem."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:132
+msgid ""
+"As far as network traffic see above.\n"
+"But unless you're going to do a slow real-time query over the network for"
+"\n"
+"a key, you need to have the whole set of keys stored locally, at a cost "
+"of about 500 bytes per key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:139
+msgid ""
+"Requires configuration and \"trust\":\n"
+"Out-of-the-box addressbook is only subscribed to "
+"http://www.i2p2.i2p/hosts.txt, which is rarely updated,\n"
+"leading to poor new-user experience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:144
+msgid ""
+"This is very much intentional. jrandom wants a user to \"trust\" a "
+"hosts.txt\n"
+"provider, and as he likes to say, \"trust is not a boolean\".\n"
+"The configuration step attempts to force users to think about issues of "
+"trust in an anonymous network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:149
+msgid ""
+"As another example, the \"Eepsite Unknown\" error page in the HTTP Proxy\n"
+"lists some jump services, but doesn't \"recommend\" any one in "
+"particular,\n"
+"and it's up to the user to pick one (or not).\n"
+"jrandom would say we trust the listed providers enough to list them but "
+"not enough to\n"
+"automatically go fetch the key from them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:156
+msgid ""
+"How successful this is, I'm not sure.\n"
+"But there must be some sort of hierarchy of trust for the naming system.\n"
+"To treat everyone equally may increase the risk of hijacking."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:163
+msgid "It isn't DNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:166
+msgid ""
+"Unfortunately real-time lookups over i2p would significantly slow down "
+"web browsing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:169
+msgid ""
+"Also, DNS is based on lookups with limited caching and time-to-live, "
+"while i2p\n"
+"keys are permanent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:173
+msgid "Sure, we could make it work, but why? It's a bad fit."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:178
+msgid ""
+"Not reliable:\n"
+"It depends on specific servers for addressbook subscriptions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:182
+msgid ""
+"Yes it depends on a few servers that you have configured.\n"
+"Within i2p, servers and services come and go.\n"
+"Any other centralized system (for example DNS root servers) would\n"
+"have the same problem. A completely decentralized system (everybody is "
+"authoritative)\n"
+"is possible by implementing an \"everybody is a root DNS server\" "
+"solution, or by\n"
+"something even simpler, like a script that adds everybody in your "
+"hosts.txt to your addressbook."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:190
+msgid ""
+"People advocating all-authoritative solutions generally haven't thought "
+"through\n"
+"the issues of conflicts and hijacking, however."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:196
+msgid ""
+"Awkward, not real-time:\n"
+"It's a patchwork of hosts.txt providers, key-add web form providers, jump"
+" service providers,\n"
+"eepsite status reporters.\n"
+"Jump servers and subscriptions are a pain, it should just work like DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:202
+msgid "See the reliability and trust sections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:207
+msgid ""
+"So, in summary, the current system is not horribly broken, inefficient, "
+"or un-scalable,\n"
+"and proposals to \"just use DNS\" aren't well thought-through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:212
+msgid "Alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:213
+msgid ""
+"The I2P source contains several pluggable naming systems and supports "
+"configuration options\n"
+"to enable experimentation with naming systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:218
+msgid ""
+"Meta - calls two or more other naming systems in order.\n"
+"By default, calls PetName then HostsTxt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:222
+msgid ""
+"PetName - Looks up in a petnames.txt file.\n"
+"The format for this file is NOT the same as hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:226
+msgid "HostsTxt - Looks up in the following files, in order:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:234
+msgid ""
+"AddressDB - Each host is listed in a separate file in a addressDb/"
+" directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:237
+msgid ""
+"Eepget - does an HTTP lookup request from an external\n"
+"server - must be stacked after the HostsTxt lookup with Meta.\n"
+"This could augment or replace the jump system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:243
+msgid ""
+"Exec - calls an external program for lookup, allows\n"
+"additional experimentation in lookup schemes, independent of java.\n"
+"Can be used after HostsTxt or as the sole naming system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:249
+msgid "Dummy - used as a fallback for Base64 names, otherwise fails."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:253
+msgid ""
+"The current naming system can be changed with the advanced config option "
+"'i2p.naming.impl'\n"
+"(restart required).\n"
+"See core/java/src/net/i2p/client/naming for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:258
+msgid ""
+"Any new system should be stacked with HostsTxt, or should\n"
+"implement local storage and/or the addressbook subscription functions, "
+"since addressbook\n"
+"only knows about the hosts.txt files and format."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:264
+msgid "Certificates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:265
+msgid ""
+"I2P destinations contain a certificate, however at the moment that "
+"certificate\n"
+"is always null.\n"
+"With a null certificate, base64 destinations are always 516 bytes ending "
+"in \"AAAA\",\n"
+"and this is checked in the addressbook merge mechanism, and possibly "
+"other places.\n"
+"Also, there is no method available to generate a certificate or add it to"
+" a\n"
+"destination. So these will have to be updated to implement certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:273
+#, python-format
+msgid ""
+"One possible use of certificates is for proof of work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:276
+msgid ""
+"Another is for \"subdomains\" (in quotes because there is really no such "
+"thing,\n"
+"i2p uses a flat naming system) to be signed by the 2nd level domain's "
+"keys."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:280
+msgid ""
+"With any certificate implementation must come the method for verifying "
+"the\n"
+"certificates.\n"
+"Presumably this would happen in the addressbook merge code.\n"
+"Is there a method for multiple types of certificates, or multiple "
+"certificates?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:286
+msgid ""
+"Adding on a certificate authenticating the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:2
+msgid "ElGamal/AES + SessionTag Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:7
+msgid "ElGamal/AES+SessionTags is used for end-to-end encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:11
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:19
+#: i2p2www/pages/site/docs/how/tech-intro.html:508
+msgid ""
+"The first time a router wants to encrypt a garlic message to another "
+"router, \n"
+"they encrypt the keying material for an AES256 session key with ElGamal "
+"and \n"
+"append the AES256/CBC encrypted payload after that encrypted ElGamal "
+"block. \n"
+"In addition to the encrypted payload, the AES encrypted section contains "
+"the \n"
+"payload length, the SHA256 hash of the unencrypted payload, as well as a "
+"number \n"
+"of \"session tags\" - random 32 byte nonces. The next time the sender "
+"wants \n"
+"to encrypt a garlic message to another router, rather than ElGamal "
+"encrypt \n"
+"a new session key they simply pick one of the previously delivered "
+"session \n"
+"tags and AES encrypt the payload like before, using the session key used "
+"with \n"
+"that session tag, prepended with the session tag itself. When a router "
+"receives \n"
+"a garlic encrypted message, they check the first 32 bytes to see if it "
+"matches \n"
+"an available session tag - if it does, they simply AES decrypt the "
+"message, \n"
+"but if it does not, they ElGamal decrypt the first block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:35
+#: i2p2www/pages/site/docs/how/tech-intro.html:524
+msgid ""
+"Each session tag can be used only once so as to prevent internal "
+"adversaries \n"
+"from unnecessarily correlating different messages as being between the "
+"same \n"
+"routers. The sender of an ElGamal/AES+SessionTag encrypted message "
+"chooses \n"
+"when and how many tags to deliver, prestocking the recipient with enough "
+"tags \n"
+"to cover a volley of messages. Garlic messages may detect the successful "
+"tag \n"
+"delivery by bundling a small additional message as a clove (a \"delivery "
+"status \n"
+"message\") - when the garlic message arrives at the intended recipient "
+"and \n"
+"is decrypted successfully, this small delivery status message is one of "
+"the \n"
+"cloves exposed and has instructions for the recipient to send the clove "
+"back \n"
+"to the original sender (through an inbound tunnel, of course). When the "
+"original \n"
+"sender receives this delivery status message, they know that the session "
+"tags \n"
+"bundled in the garlic message were successfully delivered."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:50
+msgid ""
+"Session tags themselves have a short lifetime, after which they are \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption.\n"
+"A session will continue to exist until all its tags are exhausted or "
+"expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:61
+msgid ""
+"Sessions are unidirectional. Tags are delivered from Alice to Bob,\n"
+"and Alice then uses the tags, one by one, in subsequent messages to Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:66
+msgid ""
+"Sessions may be established between Destinations, between Routers, or\n"
+"between a Router and a Destination.\n"
+"Each Router and Destination maintains its own Session Key Manager to\n"
+"keep track of Session Keys and Session Tags.\n"
+"Separate Session Key Managers prevents correlation of multiple "
+"Destinations\n"
+"to each other or a Router by adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:77
+msgid "Message Reception"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:78
+msgid ""
+"Each message received has one of two\n"
+"the two possible conditions:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:84
+msgid ""
+"It is part of an existing session and contains a Session Tag and an AES "
+"encrypted block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:85
+msgid "It is for a new session and contains both ElGamal and AES encrypted blocks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:88
+msgid ""
+"When a router receives a message, it will first assume it is from\n"
+"an existing session and attempt to look up the Session Tag and decrypt "
+"the following data using AES.\n"
+"If that fails, it will assume it is for a new session and attempt to\n"
+"decrypt it using ElGamal."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:97
+msgid "New Session Message Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:98
+msgid ""
+"A New Session ElGamal Message contains two parts, an encrypted ElGamal "
+"block\n"
+"and an encrypted AES block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:103
+msgid "The encrypted message contains:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:127
+msgid "ElGamal Block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:128
+msgid "The encrypted ElGamal Block is always 514 bytes long."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:132
+msgid "The unencrypted ElGamal data is 222 bytes long, containing:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:164
+#, python-format
+msgid ""
+"The 32-byte\n"
+"Session Key\n"
+"is the identifier for the session.\n"
+"The 32-byte Pre-IV will be used to generate the IV for the AES block that"
+" follows;\n"
+"the IV is the first 16 bytes of the SHA-256 Hash of the Pre-IV."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:172
+#, python-format
+msgid ""
+"The 222 byte payload is encrypted\n"
+"using ElGamal\n"
+"and the encrypted block is 514 bytes long.\n"
+""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:179
+msgid "AES Block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:180
+msgid "The unencrypted data in the AES block contains the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:254
+msgid "Minimum length: 48 bytes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:257
+#, python-format
+msgid ""
+"The data is then AES Encrypted,\n"
+"using the session key and IV (calculated from the pre-IV) from the "
+"ElGamal section.\n"
+"The encrypted AES Block length is variable but is always a multiple of 16"
+" bytes.\n"
+""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:266
+#, python-format
+msgid ""
+"Actual max payload length, and max block length, is less than 64 KB; see "
+"the I2NP Overview."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:269
+msgid "New Session Key is currently unused and is never present."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:274
+msgid "Existing Session Message Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:275
+msgid ""
+"The session tags delivered successfully are remembered for a \n"
+"brief period (15 minutes currently) until they are used or discarded.\n"
+"A tag is used by packaging one in an Existing Session Message that\n"
+"contains only an AES encrypted block, and is not preceded by an\n"
+"ElGamal block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:283
+msgid ""
+"The existing session message is\n"
+"as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:318
+msgid ""
+"The session tag also serves as\n"
+"the pre-IV. The IV is the first 16 bytes of the SHA-256 Hash of the "
+"sessionTag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:323
+msgid ""
+"To decode a message from an existing session, a router looks up the "
+"Session Tag to find an\n"
+"associated Session Key. If the Session Tag is found, the AES block is "
+"decrypted using the associated Session Key.\n"
+"If the tag is not found, the message is assumed to be a New Session Message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:331
+msgid "Session Tag Configuration Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:332
+#, python-format
+msgid ""
+"As of release 0.9.2, the client may configure the default number of "
+"Session Tags to send\n"
+"and the low tag threshold for the current session.\n"
+"For brief streaming connections or datagrams, these options may be used "
+"to significantly reduce bandwidth.\n"
+"See the I2CP options specification for "
+"details.\n"
+"The session settings may also be overridden on a per-message basis.\n"
+"See the I2CP Send Message"
+" Expires specification for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:345
+msgid ""
+"There are many possible areas to tune the Session Key Manager's "
+"algorithms;\n"
+"some may interact with the streaming library behavior, or have "
+"significant\n"
+"impact on overall performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:352
+msgid ""
+"The number of tags delivered could depend on message size, keeping in "
+"mind\n"
+"the eventual padding to 1KB at the tunnel message layer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:357
+msgid ""
+"Clients could send an estimate of session lifetime to the router, as an "
+"advisory\n"
+"on the number of tags required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:362
+msgid ""
+"Delivery of too few tags causes the router to fall back to an expensive "
+"ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:366
+msgid ""
+"The router may assume delivery of Session Tags, or await acknowledgement "
+"before using them;\n"
+"there are tradeoffs for each strategy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:371
+msgid ""
+"For very brief messages, almost the full 222 bytes of the pre-IV and "
+"padding fields in the ElGamal block\n"
+"could be used for the entire message, instead of establishing a session."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:376
+msgid ""
+"Evaluate padding strategy; currently we pad to a minimum of 128 bytes.\n"
+"Would be better to add a few tags to small messages than pad."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:381
+msgid ""
+"Perhaps things could be more efficient if the Session Tag system was "
+"bidirectional,\n"
+"so tags delivered in the 'forward' path could be used in the 'reverse' "
+"path,\n"
+"thus avoiding ElGamal in the initial response.\n"
+"The router currently plays some tricks like this when sending\n"
+"tunnel test messages to itself."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:389
+#, python-format
+msgid ""
+"Change from Session Tags to\n"
+"a synchronized PRNG."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:394
+#, python-format
+msgid ""
+"Several of these ideas may require a new I2NP message type, or\n"
+"set a flag in the\n"
+"Delivery"
+" Instructions,\n"
+"or set a magic number in the first few bytes of the Session Key field\n"
+"and accept a small risk of the random Session Key matching the magic "
+"number."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:2
+msgid "Garlic Routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:3
+msgid "March 2014"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:6
+msgid "Garlic Routing and \"Garlic\" Terminology"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:7
+msgid ""
+"The terms \"garlic routing\" and \"garlic encryption\" are often used "
+"rather loosely when referring to I2P's technology.\n"
+"Here, we explain the history of the terms, the various meanings, and\n"
+"the usage of \"garlic\" methods in I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:13
+msgid ""
+"\"Garlic routing\" was first coined by\n"
+"Michael J. Freedman\n"
+"in Roger Dingledine's Free Haven \n"
+"Master's thesis "
+"Section 8.1.1 (June 2000), as derived from \n"
+"Onion Routing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:21
+msgid ""
+"\"Garlic\" may have been used originally by I2P developers because I2P "
+"implements a form of\n"
+"bundling as Freedman describes, or simply to emphasize general "
+"differences from Tor.\n"
+"The specific reasoning may be lost to history.\n"
+"Generally, when referring to I2P, the term \"garlic\" may mean one of "
+"three things:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:28
+#: i2p2www/pages/site/docs/how/garlic-routing.html:39
+msgid "Layered Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:29
+msgid "Bundling multiple messages together"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:30
+#: i2p2www/pages/site/docs/how/garlic-routing.html:96
+msgid "ElGamal/AES Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:33
+msgid ""
+"Unfortunately, I2P's usage of \"garlic\" terminology over the past seven "
+"years has not always been precise; therefore the reader is\n"
+"cautioned when encountering the term.\n"
+"Hopefully, the explanation below will make things clear."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:40
+msgid ""
+"Onion routing is a technique for building paths, or tunnels, through a "
+"series of peers,\n"
+"and then using that tunnel.\n"
+"Messages are repeatedly encrypted by the originator, and then decrypted "
+"by each hop.\n"
+"During the building phase, only the routing instructions for the next hop"
+" are exposed to each peer.\n"
+"During the operating phase, messages are passed through the tunnel, and "
+"the\n"
+"message and its routing instructions are only exposed to the endpoint of "
+"the tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:49
+#, python-format
+msgid ""
+"This is similar to the way Mixmaster\n"
+"(see network comparisons) sends messages "
+"- taking a message, encrypting it\n"
+"to the recipient's public key, taking that encrypted message and "
+"encrypting\n"
+"it (along with instructions specifying the next hop), and then taking "
+"that\n"
+"resulting encrypted message and so on, until it has one layer of "
+"encryption\n"
+"per hop along the path."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:58
+msgid ""
+"In this sense, \"garlic routing\" as a general concept is identical to "
+"\"onion routing\".\n"
+"As implemented in I2P, of course, there are several differences from the "
+"implementation in Tor; see below.\n"
+"Even so, there are substantial similarities such that I2P benefits from a"
+"\n"
+"large amount of"
+" academic research on onion routing,\n"
+"Tor, and similar "
+"mixnets."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:67
+msgid "Bundling Multiple Messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:68
+msgid ""
+"Michael Freedman defined \"garlic routing\" as an extension to onion "
+"routing,\n"
+"in which multiple messages are bundled together.\n"
+"He called each message a \"bulb\".\n"
+"All the messages, each with its own delivery instructions, are exposed at"
+" the\n"
+"endpoint.\n"
+"This allows the efficient bundling of an onion routing \"reply block\" "
+"with the original message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:77
+msgid ""
+"This concept is implemented in I2P, as described below.\n"
+"Our term for garlic \"bulbs\" is \"cloves\".\n"
+"Any number of messages can be\n"
+"contained, instead of just a single message.\n"
+"This is a significant distinction from the onion routing implemented in "
+"Tor.\n"
+"However, it is only one of many major architectural differences between "
+"I2P and Tor;\n"
+"perhaps it is not, by itself, enough to justify a change in terminology."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:87
+msgid ""
+"Another difference\n"
+"from the method described by Freedman\n"
+"is that the path is unidirectional - there is no \"turning point\" as "
+"seen in onion routing\n"
+"or mixmaster reply blocks, which greatly simplifies the algorithm and "
+"allows for more flexible\n"
+"and reliable delivery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:97
+#, python-format
+msgid ""
+"In some cases, \"garlic encryption\" may simply mean\n"
+"ElGamal/AES+SessionTag encryption\n"
+"(without multiple layers)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:105
+msgid "\"Garlic\" Methods in I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:106
+msgid ""
+"Now that we've defined various \"garlic\" terms, we can say that\n"
+"I2P uses garlic routing, bundling and encryption in three places:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:111
+msgid "For building and routing through tunnels (layered encryption)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:112
+msgid ""
+"For determining the success or failure of end to end message delivery "
+"(bundling)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:113
+msgid ""
+"For publishing some network database entries (dampening the probability "
+"of a successful traffic analysis attack) (ElGamal/AES)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:116
+msgid ""
+"There are also significant ways that this technique can be used to "
+"improve the performance of the network, \n"
+"exploiting transport latency/throughput tradeoffs, and branching data "
+"through redundant paths to increase reliability."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:122
+msgid "Tunnel Building and Routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:123
+msgid ""
+"In I2P, tunnels are unidirectional. Each party builds two tunnels,\n"
+"one for outbound and one for inbound traffic.\n"
+"Therefore, four tunnels are required for a single round-trip message and "
+"reply."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:129
+#, python-format
+msgid ""
+"Tunnels are built, and then used, with layered encryption.\n"
+"This is described on the\n"
+"tunnel implementation page.\n"
+"Tunnel building details are defined on\n"
+"this page.\n"
+"We use\n"
+"ElGamal/AES+SessionTag for the encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:141
+#, python-format
+msgid ""
+"Tunnels are a general-purpose mechanism to transport all\n"
+"I2NP messages, and\n"
+"Garlic Messages are not used to "
+"build tunnels.\n"
+"We do not bundle multiple\n"
+"I2NP messages into a single\n"
+"Garlic Message for unwrapping at "
+"the outbound tunnel endpoint;\n"
+"the tunnel encryption is sufficient."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:152
+msgid "End-to-End Message Bundling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:153
+#, python-format
+msgid ""
+"At the layer above tunnels, I2P delivers end-to-end messages between\n"
+"Destinations.\n"
+"Just as within a single tunnel, we use\n"
+"ElGamal/AES+SessionTag for the encryption."
+"\n"
+"Each client message as delivered to the router through the\n"
+"I2CP interface becomes a single\n"
+"Garlic Clove\n"
+"with its own\n"
+"Delivery "
+"Instructions,\n"
+"inside a\n"
+"Garlic Message.\n"
+"Delivery Instructions may specify a Destination, Router, or Tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:171
+msgid ""
+"Generally, a Garlic Message will contain only one clove.\n"
+"However, the router will periodically bundle two additional\n"
+"cloves in the Garlic Message:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:176
+msgid "Garlic Message Cloves"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:179
+#, python-format
+msgid ""
+"A\n"
+"Delivery Status Message,\n"
+"with\n"
+"Delivery "
+"Instructions\n"
+"specifying that it be sent back to the originating router as an "
+"acknowledgment.\n"
+"This is similar to the \"reply block\" or \"reply onion\"\n"
+"described in the references.\n"
+"It is used for determining the success or failure of end to end message "
+"delivery.\n"
+"The originating router may, upon failure to receive the Delivery Status "
+"Message\n"
+"within the expected time period, modify the routing to the far-end "
+"Destination,\n"
+"or take other actions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:192
+#, python-format
+msgid ""
+"A\n"
+"Database Store Message,\n"
+"containing a\n"
+"LeaseSet\n"
+"for the originating Destination, with\n"
+"Delivery "
+"Instructions\n"
+"specifying the far-end destination's router.\n"
+"By periodically bundling a LeaseSet, the router ensures that the far-end "
+"will be able\n"
+"to maintain communications.\n"
+"Otherwise the far-end would have to query a floodfill router for the "
+"network database entry,\n"
+"and all LeaseSets would have to be published to the network database, as "
+"explained on the\n"
+"network database page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:210
+#, python-format
+msgid ""
+"By default, the Delivery Status and Database Store Messages\n"
+"are bundled when the local LeaseSet changes, when additional\n"
+"Session Tags\n"
+"are delivered, or if the messages have not been bundled in the previous "
+"minute.\n"
+"As of release 0.9.2, the client may configure the default number of "
+"Session Tags to send\n"
+"and the low tag threshold for the current session.\n"
+"See the I2CP options specification for "
+"details.\n"
+"The session settings may also be overridden on a per-message basis.\n"
+"See the I2CP Send Message"
+" Expires specification for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:224
+msgid ""
+"Obviously, the additional messages are currently bundled for specific "
+"purposes,\n"
+"and not part of a general-purpose routing scheme."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:229
+msgid ""
+"As of release 0.9.12, the Delivery Status Message is wrapped in another "
+"Garlic Message\n"
+"by the originator so that the contents are encrypted and not visible to "
+"routers on the return path."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:235
+msgid "Storage to the Floodfill Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:236
+#, python-format
+msgid ""
+"As explained on the\n"
+"network database page,\n"
+"local\n"
+"LeaseSets\n"
+"are sent to floodfill routers in a\n"
+"Database Store Message\n"
+"wrapped in a\n"
+"Garlic Message\n"
+"so it is not visible to the tunnel's outbound gateway."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:252
+#, python-format
+msgid ""
+"The Garlic Message mechanism is very flexible and provides a structure "
+"for\n"
+"implementing many types of mixnet delivery methods.\n"
+"Together with the unused delay option in the\n"
+"tunnel"
+" message Delivery Instructions,\n"
+"a wide spectrum of batching, delay, mixing, and routing strategies are "
+"possible."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:260
+msgid ""
+"In particular, there is potential for much more flexibility at the "
+"outbound tunnel endpoint.\n"
+"Messages could possibly be routed from there to one of several tunnels\n"
+"(thus minimizing point-to-point connections), or multicast to several "
+"tunnels\n"
+"for redundancy, or streaming audio and video."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:267
+msgid ""
+"Such experiments may conflict with the need to ensure security and "
+"anonymity, such\n"
+"as limiting certain routing paths, restricting the types of I2NP messages"
+" that may\n"
+"be forwarded along various paths, and enforcing certain message "
+"expiration times."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:273
+#, python-format
+msgid ""
+"As a part of\n"
+"ElGamal/AES encryption,\n"
+"a garlic message contains a sender\n"
+"specified amount of padding data, allowing the sender to take active "
+"countermeasures \n"
+"against traffic analysis.\n"
+"This is not currently used, beyond the requirement to pad to a multiple "
+"of 16 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:282
+#, python-format
+msgid ""
+"Encryption of additional messages to and from the\n"
+"floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:290
+#: i2p2www/pages/site/docs/how/peer-selection.html:296
+msgid "References"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:292
+msgid ""
+"The term garlic routing was first coined in Roger Dingledine's Free Haven"
+" \n"
+"Master's thesis "
+"(June 2000),\n"
+"see Section 8.1.1 authored by\n"
+"Michael J. Freedman."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:299
+msgid "Onion router publications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:301
+msgid "Onion Routing on Wikipedia"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:303
+msgid "Garlic Routing on Wikipedia"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:305
+#, python-format
+msgid ""
+"I2P Meeting 58 (2003) discussing the "
+"implementation of garlic routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:311
+msgid "Free Haven publications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:313
+msgid ""
+"Onion routing was first described in Hiding Routing Information\n"
+"by David M. Goldschlag, Michael G. Reed, and Paul F. Syverson in 1996."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:2
+msgid "A Gentle Introduction to How I2P Works"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:4
+msgid ""
+"I2P is a project to build, deploy, and maintain a network supporting "
+"secure and anonymous\n"
+"communication. People using I2P are in control of the tradeoffs between "
+"anonymity, reliability,\n"
+"bandwidth usage, and latency. There is no central point in the network on"
+" which pressure can be\n"
+"exerted to compromise the integrity, security, or anonymity of the "
+"system. The network supports\n"
+"dynamic reconfiguration in response to various attacks, and has been "
+"designed to make use of\n"
+"additional resources as they become available. Of course, all aspects of "
+"the network are open and\n"
+"freely available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:14
+msgid ""
+"Unlike many other anonymizing networks, I2P doesn't try to provide "
+"anonymity by hiding the\n"
+"originator of some communication and not the recipient, or the other way "
+"around. I2P is designed to\n"
+"allow peers using I2P to communicate with each other anonymously — "
+"both sender and recipient\n"
+"are unidentifiable to each other as well as to third parties. For "
+"example, today there are both\n"
+"in-I2P web sites (allowing anonymous publishing / hosting) as well as "
+"HTTP proxies to the normal web\n"
+"(allowing anonymous web browsing). Having the ability to run servers "
+"within I2P is essential, as it\n"
+"is quite likely that any outbound proxies to the normal Internet will be "
+"monitored, disabled, or\n"
+"even taken over to attempt more malicious attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:25
+#, python-format
+msgid ""
+"The network itself is message oriented - it is essentially a secure and "
+"anonymous IP layer, where\n"
+"messages are addressed to cryptographic keys (Destinations) and can be "
+"significantly larger than IP\n"
+"packets. Some example uses of the network include \"eepsites\" "
+"(webservers hosting normal web\n"
+"applications within I2P), a BitTorrent client (\"I2PSnark\"), or a "
+"distributed data store. With the\n"
+"help of the I2PTunnel application, we are "
+"able to stream traditional\n"
+"TCP/IP applications over I2P, such as SSH, IRC, a squid proxy, and even "
+"streaming audio. Most people\n"
+"will not use I2P directly, or even need to know they're using it. Instead"
+" their view will be of one\n"
+"of the I2P enabled applications, or perhaps as a little controller app to"
+" turn on and off various\n"
+"proxies to enable the anonymizing functionality."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:37
+#, python-format
+msgid ""
+"An essential part of designing, developing, and testing an anonymizing "
+"network is to define the threat model, since there is no such thing "
+"as \"true\" anonymity, just\n"
+"increasingly expensive costs to identify someone. Briefly, I2P's intent "
+"is to allow people to\n"
+"communicate in arbitrarily hostile environments by providing good "
+"anonymity, mixed in with\n"
+"sufficient cover traffic provided by the activity of people who require "
+"less anonymity. This way,\n"
+"some users can avoid detection by a very powerful adversary, while others"
+" will try to evade a weaker\n"
+"entity, all on the same network, where each one's messages are "
+"essentially indistinguishable\n"
+"from the others."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:48
+msgid "Why?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:49
+#, python-format
+msgid ""
+"There are a multitude of reasons why we need a system to support "
+"anonymous communication, and\n"
+"everyone has their own personal rationale. There are many other\n"
+"efforts working on finding ways to provide varying degrees of "
+"anonymity to people through the\n"
+"Internet, but we could not find any that met our needs or threat model."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:56
+msgid "How?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:58
+#, python-format
+msgid ""
+"The network at a glance is made up of a set of nodes (\"routers\") with a"
+" number of unidirectional\n"
+"inbound and outbound virtual paths (\"tunnels\", as outlined on the tunnel routing page). Each router is "
+"identified by a cryptographic RouterIdentity which is\n"
+"typically long lived. These routers communicate with each other through "
+"existing transport\n"
+"mechanisms (TCP, UDP, etc), passing various messages. Client applications"
+" have their own\n"
+"cryptographic identifier (\"Destination\") which enables it to send and "
+"receive messages. These\n"
+"clients can connect to any router and authorize the temporary allocation "
+"(\"lease\") of some tunnels\n"
+"that will be used for sending and receiving messages through the network."
+" I2P has its own internal\n"
+"network database (using a modification of the "
+"Kademlia algorithm) for\n"
+"distributing routing and contact information securely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:71
+msgid "Network topology example"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:73
+msgid ""
+"In the above, Alice, Bob, Charlie, and Dave are all running routers with "
+"a single Destination on\n"
+"their local router. They each have a pair of 2-hop inbound tunnels per "
+"destination (labeled 1, 2, 3,\n"
+"4, 5 and 6), and a small subset of each of those router's outbound tunnel"
+" pool is shown with 2-hop\n"
+"outbound tunnels. For simplicity, Charlie's inbound tunnels and Dave's "
+"outbound tunnels are not\n"
+"shown, nor are the rest of each router's outbound tunnel pool (typically "
+"stocked with a few tunnels\n"
+"at a time). When Alice and Bob talk to each other, Alice sends a message "
+"out one of her (pink)\n"
+"outbound tunnels targeting one of Bob's (green) inbound tunnels (tunnel 3"
+" or 4). She knows to send\n"
+"to those tunnels on the correct router by querying the network database, "
+"which is constantly updated\n"
+"as new leases are authorized and old ones expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:85
+#, python-format
+msgid ""
+"If Bob wants to reply to Alice, he simply goes through the same process -"
+" send a message out one of\n"
+"his outbound tunnels targeting one of Alice's inbound tunnels (tunnel 1 "
+"or 2). To make things\n"
+"easier, most messages sent between Alice and Bob are garlic\n"
+"wrapped, bundling the sender's own current lease information so that the "
+"recipient can reply\n"
+"immediately without having to look in the network database for the "
+"current data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:93
+#, python-format
+msgid ""
+"To deal with a wide range of attacks, I2P is fully distributed with no "
+"centralized resources - and\n"
+"hence there are no directory servers keeping statistics regarding the "
+"performance and reliability of\n"
+"routers within the network. As such, each router must keep and maintain "
+"profiles of various routers\n"
+"and is responsible for selecting appropriate peers to meet the anonymity,"
+" performance, and\n"
+"reliability needs of the users, as described in the peer selection\n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:102
+#, python-format
+msgid ""
+"The network itself makes use of a significant number of cryptographic\n"
+"techniques and algorithms - a full laundry list includes 2048bit "
+"ElGamal encryption, 256bit AES\n"
+"in CBC mode with PKCS#5 padding, 1024bit DSA signatures, SHA256 hashes, "
+"2048bit Diffie-Hellman\n"
+"negotiated connections with station to station authentication, and ElGamal / AES+SessionTag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:110
+msgid ""
+"Content sent over I2P is encrypted through three layers garlic encryption"
+" (used to verify the\n"
+"delivery of the message to the recipient), tunnel encryption (all "
+"messages passing through a tunnel\n"
+"is encrypted by the tunnel gateway to the tunnel endpoint), and inter "
+"router transport layer\n"
+"encryption (e.g. the TCP transport uses AES256 with ephemeral keys)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:117
+msgid ""
+"End-to-end (I2CP) encryption (client application to server application) "
+"was disabled in I2P release\n"
+"0.6; end-to-end (garlic) encryption (I2P client router to I2P server "
+"router) from Alice's router \"a\"\n"
+"to Bob's router \"h\" remains. Notice the different use of terms! All "
+"data from a to h is end-to-end\n"
+"encrypted, but the I2CP connection between the I2P router and the "
+"applications is not end-to-end\n"
+"encrypted! A and h are the routers of Alice and Bob, while Alice and Bob "
+"in following chart are the\n"
+"applications running atop of I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:126
+msgid "End to end layered encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:128
+#, python-format
+msgid ""
+"The specific use of these algorithms are outlined elsewhere."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:132
+msgid ""
+"The two main mechanisms for allowing people who need strong anonymity to "
+"use the network are\n"
+"explicitly delayed garlic routed messages and more comprehensive tunnels "
+"to include support for\n"
+"pooling and mixing messages. These are currently planned for release 3.0,"
+" but garlic routed messages\n"
+"with no delays and FIFO tunnels are currently in place. Additionally, the"
+" 2.0 release will allow\n"
+"people to set up and operate behind restricted routes (perhaps with "
+"trusted peers), as well as the\n"
+"deployment of more flexible and anonymous transports."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:141
+#, python-format
+msgid ""
+"Some questions have been raised with regards to the scalability of I2P, "
+"and reasonably so. There\n"
+"will certainly be more analysis over time, but peer lookup and "
+"integration should be bounded by\n"
+"O(log(N))
due to the network "
+"database's algorithm, while end\n"
+"to end messages should be O(1)
(scale free), since messages "
+"go out K hops through the\n"
+"outbound tunnel and another K hops through the inbound tunnel, with K no "
+"longer than 3. The size of\n"
+"the network (N) bears no impact."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:150
+msgid "When?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:151
+#, python-format
+msgid ""
+"I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use "
+"alternate transports, such as JMS, then grew into its own as an\n"
+"'anonCommFramework' in April 2003, turning into I2P in July, with code "
+"being written in earnest\n"
+"starting in August '03. I2P is currently under development, following the"
+" roadmap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:161
+msgid "Who?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:162
+#, python-format
+msgid ""
+"We have a small team spread around several "
+"continents, working to advance\n"
+"different aspects of the project. We are very open to other developers "
+"who want to get involved and\n"
+"anyone else who would like to contribute in other ways, such as "
+"critiques, peer review, testing,\n"
+"writing I2P enabled applications, or documentation. The entire system is "
+"open source - the router\n"
+"and most of the SDK are outright public domain with some BSD and Cryptix "
+"licensed code, while some\n"
+"applications like I2PTunnel and I2PSnark are GPL. Almost everything is "
+"written in Java (1.5+),\n"
+"though some third party applications are being written in Python and "
+"other languages. The code works\n"
+"on Sun Java SE and other Java Virtual"
+" Machines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:173
+msgid "Where?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:174
+#, python-format
+msgid ""
+"Anyone interested should join us on the IRC channel #i2p-dev (hosted "
+"concurrently on irc.freenode.net,\n"
+"irc.postman.i2p, irc.echelon.i2p, irc.dg.i2p and irc.oftc.net). There are"
+" currently no\n"
+"scheduled development meetings, however archives"
+" are available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:180
+#, python-format
+msgid "The current source is available in monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:185
+#, python-format
+msgid "See the Index to Technical Documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:2
+msgid "The Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:3
+msgid "April 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:8
+msgid ""
+"I2P's netDb is a specialized distributed database, containing \n"
+"just two types of data - router contact information (RouterInfos) "
+"and destination contact\n"
+"information (LeaseSets). Each piece of data is signed by the "
+"appropriate party and verified\n"
+"by anyone who uses or stores it. In addition, the data has liveliness "
+"information\n"
+"within it, allowing irrelevant entries to be dropped, newer entries to "
+"replace\n"
+"older ones, and protection against certain classes of attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:17
+msgid ""
+"The netDb is distributed with a simple technique called \"floodfill\",\n"
+"where a subset of all routers, called \"floodfill routers\", maintains "
+"the distributed database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:25
+msgid ""
+"When an I2P router wants to contact another router, they need to know "
+"some \n"
+"key pieces of data - all of which are bundled up and signed by the router"
+" into\n"
+"a structure called the \"RouterInfo\", which is distributed with the "
+"SHA256 of the router's identity\n"
+"as the key. The structure itself contains:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:32
+msgid ""
+"The router's identity (a 2048bit ElGamal encryption key, a signing key, "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:33
+msgid ""
+"The contact addresses at which it can be reached (e.g. TCP: example.org "
+"port 4108)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:34
+msgid "When this was published"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:35
+msgid "A set of arbitrary text options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:36
+msgid "The signature of the above, generated by the identity's signing key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:39
+msgid "Expected Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:41
+msgid ""
+"The following text options, while not strictly required, are expected\n"
+"to be present:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:47
+msgid ""
+"Capabilities flags - used to indicate floodfill participation, "
+"approximate bandwidth, and perceived reachability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:49
+#: i2p2www/pages/site/docs/how/network-database.html:287
+msgid "Floodfill"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:50
+msgid "Hidden"
+msgstr "Peidetud"
+
+#: i2p2www/pages/site/docs/how/network-database.html:51
+#, python-format
+msgid "Under %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+#: i2p2www/pages/site/docs/how/network-database.html:53
+#: i2p2www/pages/site/docs/how/network-database.html:54
+#: i2p2www/pages/site/docs/how/network-database.html:55
+#: i2p2www/pages/site/docs/how/network-database.html:56
+#, python-format
+msgid "%(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+msgid "default"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:57
+msgid "Reachable"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:58
+msgid "Unreachable"
+msgstr "Kättesaadamatud"
+
+#: i2p2www/pages/site/docs/how/network-database.html:59
+#, python-format
+msgid "Over %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:66
+msgid "The core library version, always the same as the router version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:70
+msgid ""
+"Basic network compatibility - A router will refuse to communicate with a "
+"peer having a different netId"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:73
+msgid "Used to determine compatibility with newer features and messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:76
+msgid ""
+"Always sent as 90m, for compatibility with an older scheme where routers "
+"published their actual uptime,\n"
+"and only sent tunnel requests to peers whose uptime was more than 60m"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:82
+msgid ""
+"These values are used by other routers for basic decisions.\n"
+"Should we connect to this router? Should we attempt to route a tunnel "
+"through this router?\n"
+"The bandwidth capability flag, in particular, is used only to determine "
+"whether\n"
+"the router meets a minimum threshold for routing tunnels.\n"
+"Above the minimum threshold, the advertised bandwidth is not used or "
+"trusted anywhere\n"
+"in the router, except for display in the user interface and for debugging"
+" and network analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:91
+msgid "Additional Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:93
+#, python-format
+msgid ""
+"Additional text options include\n"
+"a small number of statistics about the router's health, which are "
+"aggregated by\n"
+"sites such as %(stats)s\n"
+"for network performance analysis and debugging.\n"
+"These statistics were chosen to provide data crucial to the developers,\n"
+"such as tunnel build success rates, while balancing the need for such "
+"data\n"
+"with the side-effects that could result from revealing this data.\n"
+"Current statistics are limited to:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:104
+msgid "Exploratory tunnel build success, reject, and timeout rates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:105
+msgid "1 hour average number of participating tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:108
+msgid ""
+"Floodfill routers publish additional data on the number of entries in "
+"their network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:112
+msgid ""
+"The data published can be seen in the router's user interface,\n"
+"but is not used or trusted within the router.\n"
+"As the network has matured, we have gradually removed most of the "
+"published\n"
+"statistics to improve anonymity, and we plan to remove more in future "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:119
+msgid "Family Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:121
+msgid ""
+"As of release 0.9.24, routers may declare that they are part of a "
+"\"family\", operated by the same entity.\n"
+"Multiple routers in the same family will not be used in a single tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:126
+msgid "The family options are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:132
+msgid "The family name"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:147
+msgid "RouterInfo Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:148
+msgid ""
+"RouterInfos have no set expiration time.\n"
+"Each router is free to maintain its own local policy to trade off the "
+"frequency of RouterInfo lookups\n"
+"with memory or disk usage.\n"
+"In the current implementation, there are the following general policies:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:155
+msgid ""
+"There is no expiration during the first hour of uptime, as the persistent"
+" stored data may be old."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:158
+msgid "There is no expiration if there are 25 or less RouterInfos."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:161
+msgid ""
+"As the number of local RouterInfos grows, the expiration time shrinks, in"
+" an attempt to maintain\n"
+"a reasonable number RouterInfos. The expiration time with less than 120 "
+"routers is 72 hours,\n"
+"while expiration time with 300 routers is around 30 hours."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:166
+#, python-format
+msgid ""
+"RouterInfos containing SSU introducers expire in "
+"about an hour, as\n"
+"the introducer list expires in about that time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:170
+msgid ""
+"Floodfills use a short expiration time (1 hour) for all local "
+"RouterInfos, as valid RouterInfos will\n"
+"be frequently republished to them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:176
+msgid "RouterInfo Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:178
+msgid ""
+"RouterInfos are periodically written to disk so that they are available "
+"after a restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:186
+msgid "RouterInfo specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:189
+msgid "RouterInfo Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:194
+msgid ""
+"The second piece of data distributed in the netDb is a \"LeaseSet\" - "
+"documenting\n"
+"a group of tunnel entry points (leases) for a particular client "
+"destination.\n"
+"Each of these leases specify the following information:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:200
+msgid "The tunnel gateway router (by specifying its identity)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:201
+msgid "The tunnel ID on that router to send messages with (a 4 byte number)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:202
+msgid "When that tunnel will expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:204
+msgid ""
+"The LeaseSet itself is stored in the netDb under\n"
+"the key derived from the SHA256 of the destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:209
+msgid "In addition to these leases, the LeaseSet includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:213
+msgid ""
+"The destination itself (a 2048bit ElGamal encryption key, a signing key "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:214
+msgid ""
+"Additional encryption public key: used for end-to-end encryption of "
+"garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:215
+msgid ""
+"Additional signing public key: intended for LeaseSet revocation, but is "
+"currently unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:216
+msgid ""
+"Signature of all the LeaseSet data, to make sure the Destination "
+"published the LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:220
+msgid "Lease specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:222
+msgid "LeaseSet specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:225
+msgid "Lease Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:227
+msgid "LeaseSet Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:231
+msgid "Unpublished LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:232
+msgid ""
+"A LeaseSet for a destination used only for outgoing connections is "
+"unpublished.\n"
+"It is never sent for publication to a floodfill router.\n"
+"\"Client\" tunnels, such as those for web browsing and IRC clients, are "
+"unpublished.\n"
+"Servers will still be able to send messages back to those unpublished "
+"destinations,\n"
+"because of I2NP storage messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:242
+msgid "Revoked LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:243
+msgid ""
+"A LeaseSet may be revoked by publishing a new LeaseSet with zero "
+"leases.\n"
+"Revocations must be signed by the additional signing key in the LeaseSet."
+"\n"
+"Revocations are not fully implemented, and it is unclear if they have any"
+" practical use.\n"
+"This is the only planned use for that signing key, so it is currently "
+"unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:250
+msgid "Encrypted LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:251
+msgid ""
+"In an encrypted LeaseSet, all Leases are encrypted with a separate"
+" key.\n"
+"The leases may only be decoded, and thus the destination may only be "
+"contacted,\n"
+"by those with the key.\n"
+"There is no flag or other direct indication that the LeaseSet is "
+"encrypted.\n"
+"Encrypted LeaseSets are not widely used, and it is a topic for future "
+"work to\n"
+"research whether the user interface and implementation of encrypted "
+"LeaseSets could be improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:260
+msgid "LeaseSet Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:261
+msgid ""
+"All Leases (tunnels) are valid for 10 minutes; therefore, a LeaseSet "
+"expires\n"
+"10 minutes after the earliest creation time of all its Leases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:266
+msgid "LeaseSet Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:267
+msgid ""
+"There is no persistent storage of LeaseSet data since they expire so "
+"quickly."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:272
+msgid "Bootstrapping"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:273
+msgid ""
+"The netDb is decentralized, however you do need at\n"
+"least one reference to a peer so that the integration process\n"
+"ties you in. This is accomplished by \"reseeding\" your router with the "
+"RouterInfo\n"
+"of an active peer - specifically, by retrieving their "
+"routerInfo-$hash.dat
\n"
+"file and storing it in your netDb/
directory. Anyone can "
+"provide\n"
+"you with those files - you can even provide them to others by exposing "
+"your own\n"
+"netDb directory. To simplify the process,\n"
+"volunteers publish their netDb directories (or a subset) on the regular "
+"(non-i2p) network,\n"
+"and the URLs of these directories are hardcoded in I2P.\n"
+"When the router starts up for the first time, it automatically fetches "
+"from\n"
+"one of these URLs, selected at random."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:288
+msgid ""
+"The floodfill netDb is a simple distributed storage mechanism. The "
+"storage\n"
+"algorithm is simple: send the data to the closest peer that has "
+"advertised\n"
+"itself as a floodfill router. When the peer in the floodfill netDb "
+"receives a\n"
+"netDb store from a peer not in the floodfill netDb, they send it to a "
+"subset of\n"
+"the floodfill netDb-peers. The peers selected are the ones closest "
+"(according\n"
+"to the XOR-metric) to a specific key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:297
+msgid ""
+"Determining who is part of the floodfill netDb is trivial - it is exposed"
+" in each \n"
+"router's published routerInfo as a capability."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:302
+msgid ""
+"Floodfills have no central authority and do not form a \"consensus\" -\n"
+"they only implement a simple DHT overlay."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:309
+msgid "Floodfill Router Opt-in"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:311
+msgid ""
+"Unlike Tor, where the directory servers are hardcoded and trusted,\n"
+"and operated by known entities,\n"
+"the members of the I2P floodfill peer set need not be trusted, and\n"
+"change over time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:318
+msgid ""
+"To increase reliability of the netDb, and minimize the impact\n"
+"of netDb traffic on a router, floodfill is automatically enabled\n"
+"only on routers that are configured with high bandwidth limits.\n"
+"Routers with high bandwidth limits (which must be manually configured,\n"
+"as the default is much lower) are presumed to be on lower-latency\n"
+"connections, and are more likely to be available 24/7.\n"
+"The current minimum share bandwidth for a floodfill router is 128 "
+"KBytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:328
+msgid ""
+"In addition, a router must pass several additional tests for health\n"
+"(outbound message queue time, job lag, etc.) before floodfill operation "
+"is\n"
+"automatically enabled."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:334
+msgid ""
+"With the current rules for automatic opt-in, approximately 6% of\n"
+"the routers in the network are floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:339
+msgid ""
+"While some peers are manually configured to be floodfill,\n"
+"others are simply high-bandwidth routers who automatically volunteer\n"
+"when the number of floodfill peers drops below a threshold.\n"
+"This prevents any long-term network damage from losing most or all\n"
+"floodfills to an attack.\n"
+"In turn, these peers will un-floodfill themselves when there are\n"
+"too many floodfills outstanding."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:349
+msgid "Floodfill Router Roles"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:350
+msgid ""
+"A floodfill router's only services that are in addition to those of non-"
+"floodfill routers\n"
+"are in accepting netDb stores and responding to netDb queries.\n"
+"Since they are generally high-bandwidth, they are more likely to "
+"participate in a high number of tunnels\n"
+"(i.e. be a \"relay\" for others), but this is not directly related to "
+"their distributed database services."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:358
+msgid "Kademlia Closeness Metric"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:359
+msgid ""
+"The netDb uses a simple Kademlia-style XOR metric to determine closeness."
+"\n"
+"The SHA256 hash of the key being looked up or stored is XOR-ed with\n"
+"the hash of the router in question to determine closeness.\n"
+"A modification to this algorithm is done to increase the costs of Sybil attacks.\n"
+"Instead of the SHA256 hash of the key being looked up of stored, the "
+"SHA256 hash is taken\n"
+"of the 32-byte binary search key appended with the UTC date represented "
+"as an 8-byte ASCII string yyyyMMdd, i.e. SHA256(key + yyyyMMdd).\n"
+"This is called the \"routing key\", and it changes every day at midnight "
+"UTC.\n"
+"Only the search key is modified in this way, not the floodfill router "
+"hashes.\n"
+"The daily transformation of the DHT is sometimes called \"keyspace "
+"rotation\",\n"
+"although it isn't strictly a rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:372
+msgid ""
+"Routing keys are never sent on-the-wire in any I2NP message, they are "
+"only used locally for\n"
+"determination of distance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:379
+msgid "Storage, Verification, and Lookup Mechanics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:381
+msgid "RouterInfo Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:382
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"RouterInfo are exchanged with peers\n"
+"as a part of the initialization of a NTCP\n"
+"or SSU transport connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:389
+msgid "LeaseSet Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:390
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"LeaseSet are periodically exchanged with peers\n"
+"by bundling them in a garlic message along with normal traffic from the "
+"related Destination.\n"
+"This allows an initial response, and later responses, to be sent to an "
+"appropriate Lease,\n"
+"without requiring any LeaseSet lookups, or requiring the communicating "
+"Destinations to have published LeaseSets at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:398
+msgid ""
+"The DatabaseStoreMessage should be sent to the floodfill that is closest\n"
+"to the current routing key for the RouterInfo or LeaseSet being stored.\n"
+"Currently, the closest floodfill is found by a search in the local "
+"database.\n"
+"Even if that floodfill is not actually closest, it will flood it "
+"\"closer\" by\n"
+"sending it to multiple other floodfills.\n"
+"This provides a high degree of fault-tolerance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:407
+msgid ""
+"In traditional Kademlia, a peer would do a \"find-closest\" search before"
+" inserting\n"
+"an item in the DHT to the closest target. As the verify operation will "
+"tend to\n"
+"discover closer floodfills if they are present, a router will quickly "
+"improve\n"
+"its knowledge of the DHT \"neighborhood\" for the RouterInfo and "
+"LeaseSets it regularly publishes.\n"
+"While I2NP does not define a \"find-closest\" message, if it becomes "
+"necessary,\n"
+"a router may simply do an iterative search for a key with the least "
+"significant bit flipped\n"
+"(i.e. key ^ 0x01) until no closer peers are received in the "
+"DatabaseSearchReplyMessages.\n"
+"This ensures that the true closest peer will be found even if a more-"
+"distant peer had\n"
+"the netdb item."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:420
+msgid "RouterInfo Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:421
+#, python-format
+msgid ""
+"A router publishes its own RouterInfo by directly connecting to a "
+"floodfill router\n"
+"and sending it a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token. The message is not end-to-end garlic "
+"encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:435
+msgid "LeaseSet Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:436
+msgid ""
+"Storage of LeaseSets is much more sensitive than for RouterInfos, as a "
+"router\n"
+"must take care that the LeaseSet cannot be associated with the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:441
+#, python-format
+msgid ""
+"A router publishes a local LeaseSet by\n"
+"sending a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token over an outbound client tunnel for that "
+"Destination.\n"
+"The message is end-to-end garlic encrypted using the Destination's "
+"Session Key Manager,\n"
+"to hide the message from the tunnel's outbound endpoint.\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token.\n"
+"This message is sent back to one of the client's inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:454
+msgid "Flooding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:455
+#, python-format
+msgid ""
+"After a floodfill router receives a DatabaseStoreMessage containing a\n"
+"valid RouterInfo or LeaseSet which is newer than that previously stored "
+"in its\n"
+"local NetDb, it \"floods\" it.\n"
+"To flood a NetDb entry, it looks up several (currently %(floodsize)s) "
+"floodfill routers closest to the routing key\n"
+"of the NetDb entry. (The routing key is the SHA256 Hash of the "
+"RouterIdentity or Destination with the date (yyyyMMdd) appended.)\n"
+"By flooding to those closest to the key, not closest to itself, the "
+"floodfill ensures that the storage\n"
+"gets to the right place, even if the storing router did not have good "
+"knowledge of the\n"
+"DHT \"neighborhood\" for the routing key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:466
+#, python-format
+msgid ""
+"The floodfill then directly connects to each of those peers\n"
+"and sends it a I2NP DatabaseStoreMessage\n"
+"with a zero Reply Token. The message is not end-to-end garlic encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The other routers do not reply or re-flood, as the Reply Token is zero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:476
+msgid "RouterInfo and LeaseSet Lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:477
+#, python-format
+msgid ""
+"The I2NP DatabaseLookupMessage is used to "
+"request a netdb entry from a floodfill router.\n"
+"Lookups are sent out one of the router's outbound exploratory tunnels.\n"
+"The replies are specified to return via one of the router's inbound "
+"exploratory tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:483
+msgid ""
+"Lookups are generally sent to the two \"good\" (the connection doesn't "
+"fail) floodfill routers closest to the requested key, in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:487
+#, python-format
+msgid ""
+"If the key is found locally by the floodfill router, it responds with a\n"
+"I2NP DatabaseStoreMessage.\n"
+"If the key is not found locally by the floodfill router, it responds with"
+" a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"containing a list of other floodfill routers close to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:495
+msgid ""
+"LeaseSet lookups are garlic encrypted end-to-end as of release 0.9.5.\n"
+"RouterInfo lookups are not encrypted and thus are vulnerable to snooping "
+"by the outbound endpoint\n"
+"(OBEP) of the client tunnel. This is due to the expense of the ElGamal "
+"encryption.\n"
+"RouterInfo lookup encryption may be enabled in a future release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:502
+msgid ""
+"As of release 0.9.7, replies to a LeaseSet lookup (a DatabaseStoreMessage"
+" or a DatabaseSearchReplyMessage)\n"
+"will be encrypted by including the session key and tag in the lookup.\n"
+"This hides the reply from the inbound gateway (IBGW) of the reply tunnel."
+"\n"
+"Responses to RouterInfo lookups will be encrypted if we enable the lookup"
+" encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:509
+#, python-format
+msgid ""
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:513
+msgid ""
+"Due to the relatively small size of the network and the flooding "
+"redundancy of 8x,\n"
+"lookups are usually O(1) rather than O(log n) --\n"
+"a router is highly likely to know a floodfill router close enough to the "
+"key to get the answer on the first try.\n"
+"In releases prior to 0.8.9, routers used a lookup redundancy of two\n"
+"(that is, two lookups were performed in parallel to different peers), and"
+"\n"
+"neither recursive nor iterative routing for lookups was "
+"implemented.\n"
+"Queries were sent through multiple routes simultaneously\n"
+"to reduce the chance of query failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:524
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented with no "
+"lookup redundancy.\n"
+"This is a more efficient and reliable lookup that will work much better\n"
+"when not all floodfill peers are known, and it removes a serious\n"
+"limitation to network growth. As the network grows and each router knows "
+"only a small\n"
+"subset of the floodfill peers, lookups will become O(log n).\n"
+"Even if the peer does not return references closer to the key, the lookup"
+" continues with\n"
+"the next-closest peer, for added robustness, and to prevent a malicious "
+"floodfill from\n"
+"black-holing a part of the key space. Lookups continue until a total "
+"lookup timeout is reached,\n"
+"or the maximum number of peers is queried."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:536
+msgid ""
+"Node IDs are verifiable in that we use the router hash "
+"directly as both the node ID and the Kademlia key.\n"
+"Incorrect responses that are not closer to the search key are generally "
+"ignored.\n"
+"Given the current size of the network, a router has\n"
+"detailed knowledge of the neighborhood of the destination ID space."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:545
+msgid "RouterInfo Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:546
+#, python-format
+msgid ""
+"Note: RouterInfo verification is disabled as of release 0.9.7.1 to "
+"prevent\n"
+"the attack described in the paper\n"
+"Practical Attacks Against the I2P Network.\n"
+"It is not clear if verification can be redesigned to be done safely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:553
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the router's outbound exploratory tunnels.\n"
+"Lookups are end-to-end garlic encrypted to prevent snooping by the "
+"outbound endpoint(OBEP)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:561
+msgid "LeaseSet Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:562
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the outbound client tunnels for the destination "
+"of the LeaseSet being verified.\n"
+"To prevent snooping by the OBEP of the outbound tunnel,\n"
+"lookups are end-to-end garlic encrypted.\n"
+"The replies are specified to return via one of the client's inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:572
+msgid ""
+"As of release 0.9.7, replies for both RouterInfo and LeaseSet lookups (a "
+"DatabaseStoreMessage or a DatabaseSearchReplyMessage)\n"
+"will be encrypted,\n"
+"to hide the reply from the inbound gateway (IBGW) of the reply tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:580
+msgid "Exploration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:581
+#, python-format
+msgid ""
+"Exploration is a special form of netdb lookup, where a router "
+"attempts to learn about\n"
+"new routers.\n"
+"It does this by sending a floodfill router a I2NP DatabaseLookupMessage, looking for a random "
+"key.\n"
+"As this lookup will fail, the floodfill would normally respond with a\n"
+"I2NP DatabaseSearchReplyMessage containing "
+"hashes of floodfill routers close to the key.\n"
+"This would not be helpful, as the requesting router probably already "
+"knows those floodfills,\n"
+"and it would be impractical to add ALL floodfill routers to the \"don't "
+"include\" field of the lookup.\n"
+"For an exploration query, the requesting router adds a router hash of all"
+" zeros to the\n"
+"\"don't include\" field of the DatabaseLookupMessage.\n"
+"The floodfill will then respond only with non-floodfill routers close to "
+"the requested key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:595
+msgid "Notes on Lookup Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:596
+msgid ""
+"The response to a lookup request is either a Database Store Message (on "
+"success) or a\n"
+"Database Search Reply Message (on failure). The DSRM contains a 'from' "
+"router hash field\n"
+"to indicate the source of the reply; the DSM does not.\n"
+"The DSRM 'from' field is unauthenticated and may be spoofed or invalid.\n"
+"There are no other response tags. Therefore, when making multiple "
+"requests in parallel, it is\n"
+"difficult to monitor the performance of the various floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:606
+msgid "MultiHoming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:608
+msgid ""
+"Destinations may be hosted on multiple routers simultaneously, by using "
+"the same\n"
+"private and public keys (traditionally stored in eepPriv.dat files).\n"
+"As both instances will periodically publish their signed LeaseSets to the"
+" floodfill peers,\n"
+"the most recently published LeaseSet will be returned to a peer "
+"requesting a database lookup.\n"
+"As LeaseSets have (at most) a 10 minute lifetime, should a particular "
+"instance go down,\n"
+"the outage will be 10 minutes at most, and generally much less than that."
+"\n"
+"The multihoming function has been verified and is in use by several "
+"services on the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:618
+msgid "Threat Analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:619
+#, python-format
+msgid ""
+"Also discussed on the threat model "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:623
+msgid ""
+"A hostile user may attempt to harm the network by\n"
+"creating one or more floodfill routers and crafting them to offer\n"
+"bad, slow, or no responses.\n"
+"Some scenarios are discussed below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:630
+msgid "General Mitigation Through Growth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:631
+#, python-format
+msgid ""
+"There are currently around %(ffcount)s floodfill routers in the network.\n"
+"Most of the following attacks will become more difficult, or have less "
+"impact,\n"
+"as the network size and number of floodfill routers increase."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:638
+msgid "General Mitigation Through Redundancy"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:639
+#, python-format
+msgid ""
+"Via flooding, all netdb entries are stored on the %(floodsize)s floodfill"
+" routers closest to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:644
+msgid "Forgeries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:645
+msgid ""
+"All netdb entries are signed by their creators, so no router may forge a\n"
+"RouterInfo or LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:650
+msgid "Slow or Unresponsive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:651
+#, python-format
+msgid ""
+"Each router maintains an expanded set of statistics in the\n"
+"peer profile for each floodfill router,"
+"\n"
+"covering various quality metrics for that peer.\n"
+"The set includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:658
+msgid "Average response time"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:659
+msgid "Percentage of queries answered with the data requested"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:660
+msgid "Percentage of stores that were successfully verified"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:661
+msgid "Last successful store"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:662
+msgid "Last successful lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:663
+msgid "Last response"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:666
+msgid ""
+"Each time a router needs to make a determination on which floodfill "
+"router is closest to a key,\n"
+"it uses these metrics to determine which floodfill routers are \"good\".\n"
+"The methods, and thresholds, used to determine \"goodness\" are "
+"relatively new, and\n"
+"are subject to further analysis and improvement.\n"
+"While a completely unresponsive router will quickly be identified and "
+"avoided,\n"
+"routers that are only sometimes malicious may be much harder to deal with."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:676
+msgid "Sybil Attack (Full Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:677
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a large number of floodfill routers spread throughout the "
+"keyspace."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:682
+#, python-format
+msgid ""
+"(In a related example, a researcher recently created a\n"
+"large number of Tor relays.)\n"
+"If successful, this could be an effective DOS attack on the entire "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:688
+msgid ""
+"If the floodfills are not sufficiently misbehaving to be marked as "
+"\"bad\" using the peer profile\n"
+"metrics described above, this is a difficult scenario to handle.\n"
+"Tor's response can be much more nimble in the relay case, as the "
+"suspicious relays\n"
+"can be manually removed from the consensus.\n"
+"Some possible responses for the I2P network are listed below, however "
+"none of them is completely satisfactory:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:696
+msgid ""
+"Compile a list of bad router hashes or IPs, and announce the list through"
+" various means\n"
+"(console news, website, forum, etc.); users would have to manually "
+"download the list and\n"
+"add it to their local \"blacklist\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:701
+msgid ""
+"Ask everyone in the network to enable floodfill manually (fight Sybil "
+"with more Sybil)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:702
+msgid "Release a new software version that includes the hardcoded \"bad\" list"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:703
+msgid ""
+"Release a new software version that improves the peer profile metrics and"
+" thresholds,\n"
+"in an attempt to automatically identify the \"bad\" peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:707
+msgid ""
+"Add software that disqualifies floodfills if too many of them are in a "
+"single IP block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:708
+msgid ""
+"Implement an automatic subscription-based blacklist controlled by a "
+"single individual or group.\n"
+"This would essentially implement a portion of the Tor \"consensus\" "
+"model.\n"
+"Unfortunately it would also give a single individual or group the power "
+"to\n"
+"block participation of any particular router or IP in the network,\n"
+"or even to completely shutdown or destroy the entire network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:717
+msgid "This attack becomes more difficult as the network size grows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:723
+msgid "Sybil Attack (Partial Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:724
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a small number (8-15) of floodfill routers clustered closely "
+"in the keyspace,\n"
+"and distribute the RouterInfos for these routers widely.\n"
+"Then, all lookups and stores for a key in that keyspace would be directed"
+"\n"
+"to one of the attacker's routers.\n"
+"If successful, this could be an effective DOS attack on a particular "
+"eepsite, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:733
+msgid ""
+"As the keyspace is indexed by the cryptographic (SHA256) Hash of the key,"
+"\n"
+"an attacker must use a brute-force method to repeatedly generate router "
+"hashes\n"
+"until he has enough that are sufficiently close to the key.\n"
+"The amount of computational power required for this, which is dependent "
+"on network\n"
+"size, is unknown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:741
+msgid ""
+"As a partial defense against this attack,\n"
+"the algorithm used to determine Kademlia \"closeness\" varies over time.\n"
+"Rather than using the Hash of the key (i.e. H(k)) to determine closeness,"
+"\n"
+"we use the Hash of the key appended with the current date string, i.e. "
+"H(k + YYYYMMDD).\n"
+"A function called the \"routing key generator\" does this, which "
+"transforms the original key into a \"routing key\".\n"
+"In other words, the entire netdb keyspace \"rotates\" every day at UTC "
+"midnight.\n"
+"Any partial-keyspace attack would have to be regenerated every day, for\n"
+"after the rotation, the attacking routers would no longer be close\n"
+"to the target key, or to each other."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:753
+msgid ""
+"This attack becomes more difficult as the network size grows.\n"
+"However, recent research demonstrates that the keyspace rotation is not "
+"particularly effective.\n"
+"An attacker can precompute numerous router hashes in advance,\n"
+"and only a few routers are sufficient to \"eclipse\" a portion\n"
+"of the keyspace within a half hour after rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:761
+msgid ""
+"One consequence of daily keyspace rotation is that the distributed "
+"network database\n"
+"may become unreliable for a few minutes after the rotation --\n"
+"lookups will fail because the new \"closest\" router has not received a "
+"store yet.\n"
+"The extent of the issue, and methods for mitigation\n"
+"(for example netdb \"handoffs\" at midnight)\n"
+"are a topic for further study."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:771
+msgid "Bootstrap Attacks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:772
+msgid ""
+"An attacker could attempt to boot new routers into an isolated\n"
+"or majority-controlled network by taking over a reseed website,\n"
+"or tricking the developers into adding his reseed website\n"
+"to the hardcoded list in the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:779
+msgid "Several defenses are possible, and most of these are planned:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:783
+msgid ""
+"Disallow fallback from HTTPS to HTTP for reseeding.\n"
+"A MITM attacker could simply block HTTPS, then respond to the HTTP."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:787
+msgid "Bundling reseed data in the installer"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:790
+msgid "Defenses that are implemented:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:794
+msgid ""
+"Changing the reseed task to fetch a subset of RouterInfos from\n"
+"each of several reseed sites rather than using only a single site"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:798
+msgid ""
+"Creating an out-of-network reseed monitoring service that\n"
+"periodically polls reseed websites and verifies that the\n"
+"data are not stale or inconsistent with other views of the network"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:803
+msgid ""
+"As of release 0.9.14, reseed data is bundled into a signed zip file and\n"
+"the signature is verified when downloaded."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:811
+msgid "Query Capture"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:812
+#, python-format
+msgid ""
+"See also lookup\n"
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:817
+msgid ""
+"Similar to a bootstrap attack, an attacker using a floodfill router could"
+" attempt to \"steer\"\n"
+"peers to a subset of routers controlled by him by returning their "
+"references."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:822
+msgid ""
+"This is unlikely to work via exploration, because exploration is a low-"
+"frequency task.\n"
+"Routers acquire a majority of their peer references through normal tunnel"
+" building activity.\n"
+"Exploration results are generally limited to a few router hashes,\n"
+"and each exploration query is directed to a random floodfill router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:829
+#, python-format
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented.\n"
+"For floodfill router references returned in a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"response to a lookup,\n"
+"these references are followed if they are closer (or the next closest) to"
+" the lookup key.\n"
+"The requesting router does not trust that the references are\n"
+"closer to the key (i.e. they are verifiably correct.\n"
+"The lookup also does not stop when no closer key is found, but continues "
+"by querying the\n"
+"next-closet node, until the timeout or maximum number of queries is "
+"reached.\n"
+"This prevents a malicious floodfill from black-holing a part of the key "
+"space.\n"
+"Also, the daily keyspace rotation requires an attacker to regenerate a "
+"router info\n"
+"within the desired key space region.\n"
+"This design ensures that the query capture attack described in\n"
+"Hashing it out in Public\n"
+"is much more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:848
+msgid "DHT-Based Relay Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:849
+#, python-format
+msgid "(Reference: Hashing it out in Public Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:853
+#, python-format
+msgid ""
+"This doesn't have much to do with floodfill, but see\n"
+"the peer selection page\n"
+"for a discussion of the vulnerabilities of peer selection for tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:859
+msgid "Information Leaks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:860
+#, python-format
+msgid ""
+"(Reference: In Search of an Anonymous and Secure "
+"Lookup Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:864
+#, python-format
+msgid ""
+"This paper addresses weaknesses in the \"Finger Table\" DHT lookups used "
+"by Torsk and NISAN.\n"
+"At first glance, these do not appear to apply to I2P. First, the use of "
+"DHT by Torsk and NISAN\n"
+"is significantly different from that in I2P. Second, I2P's network "
+"database lookups are only\n"
+"loosely correlated to the peer "
+"selection and\n"
+"tunnel building processes; only "
+"previously-known peers\n"
+"are used for tunnels.\n"
+"Also, peer selection is unrelated to any notion of DHT key-closeness."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:875
+msgid ""
+"Some of this may actually be more interesting when the I2P network gets "
+"much larger.\n"
+"Right now, each router knows a large proportion of the network, so "
+"looking up a particular\n"
+"Router Info in the network database is not strongly indicative of a "
+"future intent to use\n"
+"that router in a tunnel. Perhaps when the network is 100 times larger, "
+"the lookup may be\n"
+"more correlative. Of course, a larger network makes a Sybil attack that "
+"much harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:883
+#, python-format
+msgid ""
+"However, the general issue of DHT information leakage in I2P needs "
+"further investigation.\n"
+"The floodfill routers are in a position to observe queries and gather "
+"information.\n"
+"Certainly, at a level of f = 0.2 (20% malicious nodes, as "
+"specifed in the paper)\n"
+"we expect that many of the Sybil threats we describe\n"
+"(here,\n"
+"here and\n"
+"here)\n"
+"become problematic for several reasons."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:897
+msgid "Moved to the netdb discussion page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:901
+msgid "End-to-end encryption of additional netDb lookups and responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:905
+msgid "Better methods for tracking lookup responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:2
+msgid "Peer Profiling and Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:3
+msgid "July 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:8
+msgid "Peer Profiling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:10
+#, python-format
+msgid ""
+"Peer profiling is the process of collecting data based on the "
+"observed performance\n"
+"of other routers or peers, and classifying those peers into groups.\n"
+"Profiling does not use any claimed performance data published by "
+"the peer itself\n"
+"in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:17
+msgid "Profiles are used for two purposes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:19
+msgid "Selecting peers to relay our traffic through, which is discussed below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:20
+#, python-format
+msgid ""
+"Choosing peers from the set of floodfill routers to use for network "
+"database storage and queries,\n"
+"which is discussed on the network database page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:27
+#: i2p2www/pages/site/docs/how/peer-selection.html:187
+#: i2p2www/pages/site/docs/tunnels/implementation.html:289
+msgid "Peer Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:28
+msgid ""
+"Peer selection is the process of choosing which routers\n"
+"on the network we want to relay our messages to go through (which peers "
+"will we \n"
+"ask to join our tunnels). To accomplish this, we keep track of how each\n"
+"peer performs (the peer's \"profile\") and use that data to estimate how"
+" \n"
+"fast they are, how often they will be able to accept our requests, and \n"
+"whether they seem to be overloaded or otherwise unable to perform what\n"
+"they agree to reliably."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:38
+#, python-format
+msgid ""
+"Unlike some other anonymous networks, in I2P,\n"
+"claimed bandwidth is untrusted and is only used to avoid those "
+"peers\n"
+"advertising very low bandwidth insufficient for routing tunnels.\n"
+"All peer selection is done through profiling.\n"
+"This prevents simple attacks based on peers claiming high bandwidth\n"
+"in order to capture large numbers of tunnels.\n"
+"It also makes\n"
+"timing attacks\n"
+"more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:50
+msgid ""
+"Peer selection is done quite frequently, as a router may maintain a large"
+" number\n"
+"of client and exploratory tunnels, and a tunnel lifetime is only 10 "
+"minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:56
+msgid "Further Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:57
+#, python-format
+msgid ""
+"For more information see the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network\n"
+"presented at PET-CON 2009.1.\n"
+"See below for notes on minor changes since the "
+"paper was published."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:65
+msgid "Profiles"
+msgstr "Profiilid"
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:66
+#, python-format
+msgid ""
+"Each peer has a set of data points collected about them, including "
+"statistics \n"
+"about how long it takes for them to reply to a network database query, "
+"how \n"
+"often their tunnels fail, and how many new peers they are able to "
+"introduce \n"
+"us to, as well as simple data points such as when we last heard from them"
+" or\n"
+"when the last communication error occurred. The specific data points "
+"gathered\n"
+"can be found in the code."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:75
+msgid ""
+"Profiles are fairly small, a few KB. To control memory usage, the profile"
+" expiration time\n"
+"lessens as the number of profiles grows.\n"
+"Profiles are kept in memory until router shutdown, when they are written "
+"to disk.\n"
+"At startup, the profiles are read so the router need not reinitialize all"
+" profiles,\n"
+"thus allowing a router to quickly re-integrate into the network after "
+"startup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:85
+msgid "Peer Summaries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:86
+msgid ""
+"While the profiles themselves can be considered a summary of a peer's \n"
+"performance, to allow for effective peer selection we break each summary "
+"down \n"
+"into four simple values, representing the peer's speed, its capacity, how"
+" well \n"
+"integrated into the network it is, and whether it is failing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:93
+msgid "Speed"
+msgstr "Kiirus"
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:94
+msgid ""
+"The speed calculation\n"
+"simply goes through the profile and estimates how much data we can\n"
+"send or receive on a single tunnel through the peer in a minute. For "
+"this estimate it just looks at\n"
+"performance in the previous minute."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:101
+msgid "Capacity"
+msgstr "Maht"
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:102
+msgid ""
+"The capacity calculation\n"
+"simply goes through the profile and estimates how many tunnels the peer\n"
+"would agree to participate in over a given time period. For this "
+"estimate it looks at \n"
+"how many tunnel build requests\n"
+"the peer has accepted, rejected, and dropped, and how many\n"
+"of the agreed-to tunnels later failed.\n"
+"While the calculation is time-weighted so that recent activity counts "
+"more than later activity,\n"
+"statistics up to 48 hours old may be included."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:113
+msgid ""
+"Recognizing and avoiding unreliable and unreachable\n"
+"peers is critically important.\n"
+"Unfortunately, as the tunnel building and testing require the "
+"participation of several peers,\n"
+"it is difficult to positively identify the cause of a dropped build "
+"request or test failure.\n"
+"The router assigns a probability of failure to each of the\n"
+"peers, and uses that probability in the capacity calculation.\n"
+"Drops and test failures are weighted much higher than rejections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:123
+msgid "Peer organization"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:124
+msgid ""
+"As mentioned above, we drill through each peer's profile to come up with "
+"a \n"
+"few key calculations, and based upon those, we organize each peer into "
+"three\n"
+"groups - fast, high capacity, and standard."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:130
+msgid "The groupings are not mutually exclusive, nor are they unrelated:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:134
+msgid ""
+"A peer is considered \"high capacity\" if its capacity calculation meets "
+"or \n"
+"exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:138
+msgid ""
+"A peer is considered \"fast\" if they are already \"high capacity\" and "
+"their \n"
+"speed calculation meets or exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:142
+msgid "A peer is considered \"standard\" if it is not \"high capacity\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:145
+#, python-format
+msgid ""
+"These groupings are implemented in the router's\n"
+"ProfileOrganizer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:150
+msgid "Group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:151
+msgid "The size of the groups may be limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:156
+msgid ""
+"The fast group is limited to 30 peers.\n"
+"If there would be more, only the ones with the highest speed rating are "
+"placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:160
+msgid ""
+"The high capacity group is limited to 75 peers (including the fast group)"
+"\n"
+"If there would be more, only the ones with the highest capacity rating "
+"are placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:164
+msgid ""
+"The standard group has no fixed limit, but is somewhat smaller than the "
+"number of RouterInfos\n"
+"stored in the local network database.\n"
+"On an active router in today's network, there may be about 1000 "
+"RouterInfos and 500 peer profiles\n"
+"(including those in the fast and high capacity groups)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:172
+msgid "Recalculation and Stability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:173
+msgid ""
+"Summaries are recalculated, and peers are resorted into groups, every 45 "
+"seconds."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:177
+msgid ""
+"The groups tend to be fairly stable, that is, there is not much \"churn\""
+" in the rankings\n"
+"at each recalculation.\n"
+"Peers in the fast and high capacity groups get more tunnels build through"
+" them, which increases their speed and capacity ratings,\n"
+"which reinforces their presence in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:188
+msgid "The router selects peers from the above groups to build tunnels through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:193
+msgid "Peer Selection for Client Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:194
+msgid ""
+"Client tunnels are used for application traffic, such as for HTTP proxies"
+" and web servers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:198
+msgid ""
+"To reduce the susceptibility to some attacks,\n"
+"and increase performance,\n"
+"peers for building client tunnels are chosen randomly from the smallest "
+"group, which is the \"fast\" group.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in a tunnel for the same client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:206
+msgid "Peer Selection for Exploratory Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:207
+msgid ""
+"Exploratory tunnels are used for router administrative purposes, such as "
+"network database traffic\n"
+"and testing client tunnels.\n"
+"Exploratory tunnels are also used to contact previously unconnected "
+"routers, which is why\n"
+"they are called \"exploratory\".\n"
+"These tunnels are usually low-bandwidth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:215
+msgid ""
+"Peers for building exploratory tunnels are generally chosen randomly from"
+" the standard group.\n"
+"If the success rate of these build attempts is low compared to the client"
+" tunnel build success rate,\n"
+"the router will select a weighted average of peers randomly from the high"
+" capacity group instead.\n"
+"This helps maintain a satisfactory build success rate even when network "
+"performance is poor.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in an exploratory tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:223
+msgid ""
+"As the standard group includes a very large subset of all peers the "
+"router knows about,\n"
+"exploratory tunnels are essentially built through a random selection of "
+"all peers,\n"
+"until the build success rate becomes too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:231
+msgid "Restrictions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:232
+msgid ""
+"To prevent some simple attacks, and for performance, there are the "
+"following restrictions:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:236
+msgid "Two peers from the same /16 IP space may not be in the same tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:239
+msgid ""
+"A peer may participate in a maximum of 33% of all tunnels created by "
+"the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:242
+msgid "Peers with extremely low bandwidth are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:245
+msgid "Peers for which a recent connection attempt failed are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:252
+msgid "Peer Ordering in Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:253
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to\n"
+"to deal with the predecessor attack\n"
+"(2008 update).\n"
+"More information is on the tunnel "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:268
+msgid "Continue to analyze an tune speed and capacity calculations as necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:271
+msgid ""
+"Implement a more aggressive ejection strategy if necessary to control "
+"memory usage as the network grows"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:274
+msgid "Evaluate group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:277
+msgid "Use GeoIP data to include or exclude certain peers, if configured"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:283
+#, python-format
+msgid ""
+"For those reading the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network,\n"
+"please keep in mind the following minor changes in I2P since the paper's "
+"publication:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:289
+msgid "The Integration calculation is still not used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:290
+msgid "In the paper, \"groups\" are called \"tiers\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:291
+msgid "The \"Failing\" tier is no longer used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:292
+msgid "The \"Not Failing\" tier is now named \"Standard\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:301
+msgid "One Cell Enough"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:303
+msgid "Tor Entry Guards"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:305
+msgid "Murdoch 2007 Paper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:307
+msgid "Tune-up for Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:309
+msgid "Low-resource Routing Attacks Against Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:2
+msgid "I2P: A scalable framework for anonymous communication"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:5
+#: i2p2www/pages/site/docs/how/tech-intro.html:20
+#: i2p2www/pages/site/docs/transport/ssu.html:342
+msgid "Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:7
+msgid "I2P Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:12
+#: i2p2www/pages/site/docs/how/tech-intro.html:397
+msgid "Transport protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:13
+#: i2p2www/pages/site/docs/how/tech-intro.html:454
+msgid "Cryptography"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:21
+msgid ""
+"I2P is a scalable, self organizing, resilient packet switched anonymous \n"
+"network layer, upon which any number of different anonymity or security "
+"conscious \n"
+"applications can operate. Each of these applications may make their own "
+"anonymity, \n"
+"latency, and throughput tradeoffs without worrying about the proper "
+"implementation \n"
+"of a free route mixnet, allowing them to blend their activity with the "
+"larger \n"
+"anonymity set of users already running on top of I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:30
+msgid ""
+"Applications available already provide the full range of typical Internet"
+" activities -\n"
+"anonymous web browsing, web hosting, chat, file sharing, e-mail,\n"
+"blogging and content syndication, newsgroups, as well as several other "
+"applications under development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:36
+msgid "Web browsing: using any existing browser that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:37
+msgid "Chat: IRC, Jabber, I2P-Messenger."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:38
+msgid ""
+"File sharing: I2PSnark, Robert, iMule, \n"
+"I2Phex, PyBit, I2P-bt\n"
+"and others."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:43
+msgid ""
+"E-mail: susimail and I2P-Bote."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:44
+msgid ""
+"Blog: using e.g. the pebble plugin or the distributed blogging software "
+"Syndie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:45
+msgid ""
+"Distributed Data Store: Save your data redundantly in the Tahoe-LAFS "
+"cloud over I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:46
+msgid "Newsgroups: using any newsgroup reader that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:49
+msgid ""
+"Unlike web sites hosted within content distribution networks like Freenet \n"
+"or GNUnet, the services "
+"hosted on \n"
+"I2P are fully interactive - there are traditional web-style search "
+"engines, \n"
+"bulletin boards, blogs you can comment on, database driven sites, and "
+"bridges \n"
+"to query static systems like Freenet without needing to install it "
+"locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:57
+msgid ""
+"With all of these anonymity enabled applications, I2P takes on the role \n"
+"of the message oriented middleware - applications say that they want to "
+"send \n"
+"some data to a cryptographic identifier (a \"destination\") and I2P takes"
+" care \n"
+"of making sure it gets there securely and anonymously. I2P also bundles a"
+" \n"
+"simple streaming library to allow I2P's "
+"anonymous \n"
+"best-effort messages to transfer as reliable, in-order streams, "
+"transparently \n"
+"offering a TCP based congestion control algorithm tuned for the high "
+"bandwidth \n"
+"delay product of the network. While there have been several simple SOCKS "
+"proxies \n"
+"available to tie existing applications into the network, their value has "
+"been \n"
+"limited as nearly every application routinely exposes what, in an "
+"anonymous \n"
+"context, is sensitive information. The only safe way to go is to fully "
+"audit \n"
+"an application to ensure proper operation and to assist in that we "
+"provide \n"
+"a series of APIs in various languages which can be used to make the most "
+"out \n"
+"of the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:74
+#, python-format
+msgid ""
+"I2P is not a research project - academic, commercial, or governmental, "
+"but \n"
+"is instead an engineering effort aimed at doing whatever is necessary to "
+"provide \n"
+"a sufficient level of anonymity to those who need it. It has been in "
+"active \n"
+"development since early 2003 with one full time developer and a dedicated"
+" \n"
+"group of part time contributors from all over the world. All of the work "
+"done \n"
+"on I2P is open source and freely available on the website, \n"
+"with the majority of the code released outright into the public domain, "
+"though \n"
+"making use of a few cryptographic routines under BSD-style licenses. The "
+"people \n"
+"working on I2P do not control what people release client applications "
+"under, \n"
+"and there are several GPL'ed applications available (I2PTunnel, \n"
+"susimail, I2PSnark, I2P-"
+"Bote, \n"
+"I2Phex and others.).\n"
+"Funding for I2P comes entirely from "
+"donations,\n"
+"and does not receive any tax breaks in any jurisdiction at this time,\n"
+"as many of the developers are themselves anonymous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:92
+msgid "Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:94
+msgid ""
+"To understand I2P's operation, it is essential to understand a few key "
+"concepts. \n"
+"First, I2P makes a strict separation between the software participating "
+"in \n"
+"the network (a \"router\") and the anonymous endpoints (\"destinations\")"
+" associated \n"
+"with individual applications. The fact that someone is running I2P is not"
+" \n"
+"usually a secret. What is hidden is information on what the user is "
+"doing, \n"
+"if anything at all, as well as what router a particular destination is "
+"connected \n"
+"to. End users will typically have several local destinations on their "
+"router \n"
+"- for instance, one proxying in to IRC servers, another supporting the "
+"user's \n"
+"anonymous webserver (\"eepsite\"), another for an I2Phex instance, "
+"another for \n"
+"torrents, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:107
+msgid ""
+"Another critical concept to understand is the \"tunnel\".\n"
+"A tunnel is a directed path through an explicitly selected list of "
+"routers.\n"
+"Layered encryption is used, so each of the routers can only decrypt a "
+"single layer.\n"
+"The decrypted information contains the IP of the next router, along with\n"
+"the encrypted information to be forwarded.\n"
+"Each tunnel has a starting point (the first router, also known as "
+"\"gateway\")\n"
+"and an end point. Messages can be sent only in one way. To send messages "
+"back,\n"
+"another tunnel is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:105
+msgid "Inbound and outbound tunnel schematic"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:120
+msgid "Figure 1: Two types of tunnels exist: inbound and outbound."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:123
+msgid ""
+"Two types of tunnels exist:\n"
+"\"outbound\" tunnels send messages away from the tunnel creator,\n"
+"while \"inbound\" tunnels bring messages to the tunnel creator.\n"
+"Combining these two tunnels allows users to send messages to each other.\n"
+"The sender (\"Alice\" in the above image) sets up an outbound tunnel,\n"
+"while the receiver (\"Bob\" in the above image) creates an inbound "
+"tunnel.\n"
+"The gateway of an inbound tunnel can receive messages from any other user"
+"\n"
+"and will send them on until the endpoint (\"Bob\").\n"
+"The endpoint of the outbound tunnel will need to send the message\n"
+"on to the gateway of the inbound tunnel.\n"
+"To do this, the sender (\"Alice\") adds instructions to her encrypted "
+"message.\n"
+"Once the endpoint of the outbound tunnel decrypts the message,\n"
+"it will have instructions to forward the message to the correct\n"
+"inbound gateway (the gateway to \"Bob\")."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:140
+msgid ""
+"A third critical concept to understand is I2P's \"network "
+"database\" (or \"netDb\") \n"
+"- a pair of algorithms used to share network metadata. The two types of "
+"metadata \n"
+"carried are \"routerInfo\" and \"leaseSets\" - the "
+"routerInfo gives routers the \n"
+"data necessary for contacting a particular router (their public keys, "
+"transport \n"
+"addresses, etc), while the leaseSet gives routers the information "
+"necessary \n"
+"for contacting a particular destination. A leaseSet contains a number of "
+"\"leases\".\n"
+"Each of this leases specifies a tunnel gateway, which allows reaching a "
+"specific destination.\n"
+"The full information contained in a lease:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:151
+msgid "Inbound gateway for a tunnel that allows reaching a specific destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:152
+msgid "Time when a tunnel expires."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:153
+msgid ""
+"Pair of public keys to be able to encrypt messages (to send through the "
+"tunnel and reach the destination)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:155
+msgid ""
+"Routers themselves send their routerInfo to the netDb directly, while "
+"leaseSets are sent through outbound tunnels\n"
+"(leaseSets need to be sent anonymously, to avoid correlating a router "
+"with his leaseSets)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:160
+msgid ""
+"We can combine the above concepts to build successful connections in the "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:164
+msgid ""
+"To build up her own inbound and outbound tunnels, Alice does a lookup in "
+"the netDb to collect routerInfo.\n"
+"This way, she gathers lists of peers she can use as hops in her tunnels.\n"
+"She can then send a build message to the first hop, requesting the "
+"construction of a tunnel and asking\n"
+"that router to send the construction message onward, until the tunnel has"
+" been constructed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:171
+msgid "Request information on other routers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:173
+msgid "Build tunnel using router information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:175
+msgid "Figure 2: Router information is used to build tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:178
+msgid ""
+"When Alice wants to send a message to Bob, she first does a lookup in the"
+" \n"
+"netDb to find Bob's leaseSet, giving her his current inbound tunnel "
+"gateways. \n"
+"She then picks one of her outbound tunnels and sends the message down it "
+"with \n"
+"instructions for the outbound tunnel's endpoint to forward the message on"
+" \n"
+"to one of Bob's inbound tunnel gateways. When the outbound tunnel "
+"endpoint \n"
+"receives those instructions, it forwards the message as requested, and "
+"when \n"
+"Bob's inbound tunnel gateway receives it, it is forwarded down the tunnel"
+" \n"
+"to Bob's router. If Alice wants Bob to be able to reply to the message, "
+"she \n"
+"needs to transmit her own destination explicitly as part of the message "
+"itself.\n"
+"This can be done by introducing a higher-level layer, which is done in "
+"the\n"
+"streaming library.\n"
+"Alice may also cut down on the response time by bundling her most \n"
+"recent LeaseSet with the message so that Bob doesn't need to do a netDb "
+"lookup \n"
+"for it when he wants to reply, but this is optional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using leaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:197
+msgid "Figure 3: LeaseSets are used to connect outbound and inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:200
+msgid ""
+"While the tunnels themselves have layered encryption to prevent "
+"unauthorized \n"
+"disclosure to peers inside the network (as the transport layer itself "
+"does \n"
+"to prevent unauthorized disclosure to peers outside the network), it is "
+"necessary \n"
+"to add an additional end to end layer of encryption to hide the message "
+"from \n"
+"the outbound tunnel endpoint and the inbound tunnel gateway. This \"garlic \n"
+"encryption\" lets Alice's router wrap up multiple messages into a "
+"single \n"
+"\"garlic message\", encrypted to a particular public key so that "
+"intermediary \n"
+"peers cannot determine either how many messages are within the garlic, "
+"what \n"
+"those messages say, or where those individual cloves are destined. For "
+"typical \n"
+"end to end communication between Alice and Bob, the garlic will be "
+"encrypted \n"
+"to the public key published in Bob's leaseSet, allowing the message to be"
+" \n"
+"encrypted without giving out the public key to Bob's own router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:215
+msgid ""
+"Another important fact to keep in mind is that I2P is entirely message "
+"based \n"
+"and that some messages may be lost along the way. Applications using I2P "
+"can \n"
+"use the message oriented interfaces and take care of their own congestion"
+" \n"
+"control and reliability needs, but most would be best served by reusing "
+"the \n"
+"provided streaming library to view I2P as "
+"a streams \n"
+"based network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:225
+msgid ""
+"Both inbound and outbound tunnels work along similar principles.\n"
+"The tunnel gateway accumulates a number of tunnel messages, eventually "
+"preprocessing \n"
+"them into something for tunnel delivery. Next, the gateway encrypts that "
+"preprocessed \n"
+"data and forwards it to the first hop. That peer and subsequent tunnel "
+"participants \n"
+"add on a layer of encryption after verifying that it isn't a duplicate "
+"before \n"
+"forward it on to the next peer. Eventually, the message arrives at the "
+"endpoint \n"
+"where the messages are split out again and forwarded on as requested. The"
+" \n"
+"difference arises in what the tunnel's creator does - for inbound "
+"tunnels, \n"
+"the creator is the endpoint and they simply decrypt all of the layers "
+"added, \n"
+"while for outbound tunnels, the creator is the gateway and they pre-"
+"decrypt \n"
+"all of the layers so that after all of the layers of per-hop encryption "
+"are \n"
+"added, the message arrives in the clear at the tunnel endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:240
+msgid ""
+"The choice of specific peers to pass on messages as well as their "
+"particular \n"
+"ordering is important to understanding both I2P's anonymity and "
+"performance \n"
+"characteristics. While the network database (below) has its own criteria "
+"for \n"
+"picking what peers to query and store entries on, tunnel creators may use"
+" any peers \n"
+"in the network in any order (and even any number of times) in a single "
+"tunnel. \n"
+"If perfect latency and capacity data were globally known, selection and "
+"ordering \n"
+"would be driven by the particular needs of the client in tandem with "
+"their \n"
+"threat model. Unfortunately, latency and capacity data is not trivial to "
+"gather \n"
+"anonymously, and depending upon untrusted peers to provide this "
+"information \n"
+"has its own serious anonymity implications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:253
+msgid ""
+"From an anonymity perspective, the simplest technique would be to pick "
+"peers \n"
+"randomly from the entire network, order them randomly and use those peers"
+" \n"
+"in that order for all eternity. From a performance perspective, the "
+"simplest \n"
+"technique would be to pick the fastest peers with the necessary spare "
+"capacity, \n"
+"spreading the load across different peers to handle transparent failover,"
+" \n"
+"and to rebuild the tunnel whenever capacity information changes. While "
+"the \n"
+"former is both brittle and inefficient, the later requires inaccessible "
+"information \n"
+"and offers insufficient anonymity. I2P is instead working on offering a "
+"range \n"
+"of peer selection strategies, coupled with anonymity aware measurement "
+"code \n"
+"to organize the peers by their profiles."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:266
+msgid ""
+"As a base, I2P is constantly profiling the peers with which it interacts"
+" \n"
+"with by measuring their indirect behavior - for instance, when a peer "
+"responds \n"
+"to a netDb lookup in 1.3 seconds, that round trip latency is recorded in "
+"the \n"
+"profiles for all of the routers involved in the two tunnels (inbound and "
+"outbound) \n"
+"through which the request and response passed, as well as the queried "
+"peer's \n"
+"profile. Direct measurement, such as transport layer latency or "
+"congestion, \n"
+"is not used as part of the profile, as it can be manipulated and "
+"associated \n"
+"with the measuring router, exposing them to trivial attacks. While "
+"gathering \n"
+"these profiles, a series of calculations are run on each to summarize its"
+" \n"
+"performance - its latency, capacity to handle lots of activity, whether "
+"they \n"
+"are currently overloaded, and how well integrated into the network they "
+"seem \n"
+"to be. These calculations are then compared for active peers to organize "
+"the \n"
+"routers into four tiers - fast and high capacity, high capacity, not "
+"failing, \n"
+"and failing. The thresholds for those tiers are determined dynamically, "
+"and \n"
+"while they currently use fairly simple algorithms, alternatives exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:284
+msgid ""
+"Using this profile data, the simplest reasonable peer selection strategy "
+"is to\n"
+"pick peers randomly from the top tier (fast and high capacity), and this "
+"is\n"
+"currently deployed for client tunnels. Exploratory tunnels (used for "
+"netDb and\n"
+"tunnel management) pick peers randomly from the \"not failing\" tier "
+"(which\n"
+"includes routers in 'better' tiers as well), allowing the peer to sample\n"
+"routers more widely, in effect optimizing the peer selection through "
+"randomized\n"
+"hill "
+"climbing. These\n"
+"strategies alone do however leak information regarding the peers in the\n"
+"router's top tier through predecessor and netDb harvesting attacks. In "
+"turn,\n"
+"several alternatives exist which, while not balancing the load as evenly,"
+" will\n"
+"address the attacks mounted by particular classes of adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:298
+msgid ""
+"By picking a random key and ordering the peers according to their XOR "
+"distance \n"
+"from it, the information leaked is reduced in predecessor and harvesting "
+"attacks \n"
+"according to the peers' failure rate and the tier's churn. Another simple"
+" \n"
+"strategy for dealing with netDb harvesting attacks is to simply fix the "
+"inbound \n"
+"tunnel gateway(s) yet randomize the peers further on in the tunnels. To "
+"deal \n"
+"with predecessor attacks for adversaries which the client contacts, the "
+"outbound \n"
+"tunnel endpoints would also remain fixed. The selection of which peer to "
+"fix \n"
+"on the most exposed point would of course need to have a limit to the "
+"duration, \n"
+"as all peers fail eventually, so it could either be reactively adjusted "
+"or \n"
+"proactively avoided to mimic a measured mean time between failures of "
+"other \n"
+"routers. These two strategies can in turn be combined, using a fixed "
+"exposed \n"
+"peer and an XOR based ordering within the tunnels themselves. A more "
+"rigid \n"
+"strategy would fix the exact peers and ordering of a potential tunnel, "
+"only \n"
+"using individual peers if all of them agree to participate in the same "
+"way \n"
+"each time. This varies from the XOR based ordering in that the "
+"predecessor \n"
+"and successor of each peer is always the same, while the XOR only makes "
+"sure \n"
+"their order doesn't change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:318
+#, python-format
+msgid ""
+"As mentioned before, I2P currently (release 0.8) includes the tiered \n"
+"random strategy above, with XOR-based ordering. A \n"
+"more detailed discussion of the mechanics involved in tunnel operation, "
+"management, \n"
+"and peer selection can be found in the tunnel "
+"spec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:326
+#, python-format
+msgid ""
+"As mentioned earlier, I2P's netDb works to share the network's metadata.\n"
+"This is detailed in the network database page,\n"
+"but a basic explanation is available below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:332
+msgid ""
+"A percentage of I2P users are appointed as 'floodfill peers'.\n"
+"Currently, I2P installations that have a lot of bandwidth and are fast "
+"enough,\n"
+"will appoint themselves as floodfill as soon as the number of existing "
+"floodfill routers\n"
+"drops too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:339
+#, python-format
+msgid ""
+"Other I2P routers will store their data and lookup data by sending simple"
+" 'store' and 'lookup' queries to the floodfills.\n"
+"If a floodfill router receives a 'store' query, it will spread the "
+"information to other floodfill routers\n"
+"using the Kademlia "
+"algorithm.\n"
+"The 'lookup' queries currently function differently, to avoid an "
+"important\n"
+"security issue.\n"
+"When a lookup is done, the floodfill router will not forward the lookup "
+"to other peers,\n"
+"but will always answer by itself (if it has the requested data)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:349
+msgid "Two types of information are stored in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:353
+msgid ""
+"A RouterInfo stores information on a specific I2P router and how "
+"to contact it"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:354
+msgid ""
+"A LeaseSet stores information on a specific destination (e.g. I2P "
+"website, e-mail server...)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:356
+msgid ""
+"All of this information is signed by the publishing party and verified by"
+" any I2P router using or storing the information.\n"
+"In addition, the data contains timing information, to avoid storage of "
+"old entries and possible attacks.\n"
+"This is also why I2P bundles the necessary code for maintaining the "
+"correct time, occasionally querying some SNTP servers \n"
+"(the pool.ntp.org round robin by"
+" default)\n"
+"and detecting skew between routers at the transport layer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:364
+msgid "Some additional remarks are also important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:369
+msgid "Unpublished and encrypted leasesets:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:370
+msgid ""
+"One could only want specific people to be able to reach a destination.\n"
+"This is possible by not publishing the destination in the netDb. You will"
+" however have to transmit the destination by other means.\n"
+"An alternative are the 'encrypted leaseSets'. These leaseSets can only be"
+" decoded by people with access to the decryption key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:377
+msgid "Bootstrapping:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:378
+msgid ""
+"Bootstrapping the netDb is quite simple. Once a router manages to receive"
+" a single routerInfo of a reachable peer,\n"
+"it can query that router for references to other routers in the network.\n"
+"Currently, a number of users post their routerInfo files to a website to "
+"make this information available.\n"
+"I2P automatically connects to one of these websites to gather routerInfo "
+"files and bootstrap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:386
+msgid "Lookup scalability:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:387
+msgid ""
+"Lookups in the I2P network are not forwarded to other netDb routers.\n"
+"Currently, this is not a major problem, since the network is not very "
+"large.\n"
+"However, as the network grows, not all routerInfo and leaseSet files will"
+" be present\n"
+"on each netDb router. This will cause a deterioration of the percentage "
+"of successful lookups.\n"
+"Because of this, refinements to the netDb will be done in the next "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:398
+msgid ""
+"Communication between routers needs to provide confidentiality and "
+"integrity \n"
+"against external adversaries while authenticating that the router "
+"contacted \n"
+"is the one who should receive a given message. The particulars of how "
+"routers \n"
+"communicate with other routers aren't critical - three separate protocols"
+" \n"
+"have been used at different points to provide those bare necessities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:406
+#, python-format
+msgid ""
+"I2P started with a TCP-based protocol which \n"
+"has since been disabled. Then, to accommodate the need for high degree "
+"communication \n"
+"(as a number of routers will end up speaking with many others), I2P moved"
+" \n"
+"from a TCP based transport to a UDP-based one - "
+"\"Secure \n"
+"Semireliable UDP\", or \"SSU\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:414
+#, python-format
+msgid "As described in the SSU spec:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:418
+msgid ""
+"The goal of this protocol is to provide secure, authenticated, \n"
+"semireliable and unordered message delivery, exposing only a minimal "
+"amount \n"
+"of data easily discernible to third parties. It should support high "
+"degree \n"
+"communication as well as TCP-friendly congestion control and may include"
+" \n"
+"PMTU detection. It should be capable of efficiently moving bulk data at "
+"rates \n"
+"sufficient for home users. In addition, it should support techniques for "
+"addressing \n"
+"network obstacles, like most NATs or firewalls."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:428
+#, python-format
+msgid ""
+"Following the introduction of SSU, after issues with congestion collapse"
+" \n"
+"appeared, a new NIO-based TCP transport called NTCP \n"
+"was implemented. It is enabled by default for outbound connections only. "
+"Those \n"
+"who configure their NAT/firewall to allow inbound connections and specify"
+" \n"
+"the external host and port (dyndns/etc is ok) on /config.jsp can receive "
+"inbound \n"
+"connections. As NTCP is NIO based, so it doesn't suffer from the 1 thread"
+" \n"
+"per connection issues of the old TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:438
+msgid ""
+"I2P supports multiple transports simultaneously. A particular transport \n"
+"for an outbound connection is selected with \"bids\". Each transport bids"
+" for \n"
+"the connection and the relative value of these bids assigns the priority."
+" \n"
+"Transports may reply with different bids, depending on whether there is "
+"already \n"
+"an established connection to the peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:446
+#, python-format
+msgid ""
+"The current implementation ranks NTCP as the highest-priority transport \n"
+"for outbound connections in most situations. SSU is enabled for both "
+"outbound \n"
+"and inbound connections. Your firewall and your I2P router must be "
+"configured \n"
+"to allow inbound NTCP connections. For further information see the NTCP \n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:455
+msgid ""
+"A bare minimum set of cryptographic primitives are combined together to \n"
+"provide I2P's layered defenses against a variety of adversaries. At the "
+"lowest \n"
+"level, inter router communication is protected by the transport layer "
+"security \n"
+"- SSU encrypts each packet with AES256/CBC with both an explicit IV and "
+"MAC \n"
+"(HMAC-MD5-128) after agreeing upon an ephemeral session key through a "
+"2048bit \n"
+"Diffie-Hellman exchange, station-to-station authentication with the other"
+" \n"
+"router's DSA key, plus each network message has their own hash for local "
+"integrity \n"
+"checking. Tunnel messages passed over the "
+"transports \n"
+"have their own layered AES256/CBC encryption with an explicit IV and "
+"verified \n"
+"at the tunnel endpoint with an additional SHA256 hash. Various other "
+"messages \n"
+"are passed along inside \"garlic messages\", which are encrypted with "
+"ElGamal/AES+SessionTags \n"
+"(explained below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:470
+msgid "Garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:471
+msgid ""
+"Garlic messages are an extension of \"onion\" layered encryption, "
+"allowing \n"
+"the contents of a single message to contain multiple \"cloves\" - fully "
+"formed \n"
+"messages alongside their own instructions for delivery. Messages are "
+"wrapped \n"
+"into a garlic message whenever the message would otherwise be passing in "
+"cleartext \n"
+"through a peer who should not have access to the information - for "
+"instance, \n"
+"when a router wants to ask another router to participate in a tunnel, "
+"they \n"
+"wrap the request inside a garlic, encrypt that garlic to the receiving "
+"router's \n"
+"2048bit ElGamal public key, and forward it through a tunnel. Another "
+"example \n"
+"is when a client wants to send a message to a destination - the sender's "
+"router \n"
+"will wrap up that data message (alongside some other messages) into a "
+"garlic, \n"
+"encrypt that garlic to the 2048bit ElGamal public key published in the "
+"recipient's \n"
+"leaseSet, and forward it through the appropriate tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:486
+msgid ""
+"The \"instructions\" attached to each clove inside the encryption layer "
+"includes \n"
+"the ability to request that the clove be forwarded locally, to a remote "
+"router, \n"
+"or to a remote tunnel on a remote router. There are fields in those "
+"instructions \n"
+"allowing a peer to request that the delivery be delayed until a certain "
+"time \n"
+"or condition has been met, though they won't be honored until the nontrivial \n"
+"delays are deployed. It is possible to explicitly route garlic "
+"messages \n"
+"any number of hops without building tunnels, or even to reroute tunnel "
+"messages \n"
+"by wrapping them in garlic messages and forwarding them a number of hops "
+"prior \n"
+"to delivering them to the next hop in the tunnel, but those techniques "
+"are \n"
+"not currently used in the existing implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:499
+msgid "Session tags"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:500
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the simple use of 2048bit ElGamal, AES256, SHA256 and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:539
+msgid ""
+"Session tags themselves have a very short lifetime, after which they are"
+" \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:549
+msgid ""
+"One alternative is to transmit only a single session tag, and from that,"
+" \n"
+"seed a deterministic PRNG for determining what tags to use or expect. By "
+"keeping \n"
+"this PRNG roughly synchronized between the sender and recipient (the "
+"recipient \n"
+"precomputes a window of the next e.g. 50 tags), the overhead of "
+"periodically \n"
+"bundling a large number of tags is removed, allowing more options in the "
+"space/time \n"
+"tradeoff, and perhaps reducing the number of ElGamal encryptions "
+"necessary. \n"
+"However, it would depend upon the strength of the PRNG to provide the "
+"necessary \n"
+"cover against internal adversaries, though perhaps by limiting the amount"
+" \n"
+"of times each PRNG is used, any weaknesses can be minimized. At the "
+"moment, \n"
+"there are no immediate plans to move towards these synchronized PRNGs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:562
+msgid "Future"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:563
+msgid ""
+"While I2P is currently functional and sufficient for many scenarios, "
+"there \n"
+"are several areas which require further improvement to meet the needs of "
+"those \n"
+"facing more powerful adversaries as well as substantial user experience "
+"optimization."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:569
+msgid "Restricted route operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:570
+msgid ""
+"I2P is an overlay network designed to be run on top of a functional "
+"packet \n"
+"switched network, exploiting the end to end principle to offer anonymity "
+"and \n"
+"security. While the Internet no longer fully embraces the end to end "
+"principle\n"
+"(due to the usage of NAT), \n"
+"I2P does require a substantial portion of the network to be reachable - "
+"there \n"
+"may be a number of peers along the edges running using restricted routes,"
+" \n"
+"but I2P does not include an appropriate routing algorithm for the "
+"degenerate \n"
+"case where most peers are unreachable. It would, however work on top of a"
+" \n"
+"network employing such an algorithm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:582
+msgid ""
+"Restricted route operation, where there are limits to what peers are "
+"reachable \n"
+"directly, has several different functional and anonymity implications, "
+"dependent \n"
+"upon how the restricted routes are handled. At the most basic level, "
+"restricted \n"
+"routes exist when a peer is behind a NAT or firewall which does not allow"
+" \n"
+"inbound connections. This was largely addressed in I2P 0.6.0.6 by "
+"integrating \n"
+"distributed hole punching into the transport layer, allowing people "
+"behind \n"
+"most NATs and firewalls to receive unsolicited connections without any "
+"configuration. \n"
+"However, this does not limit the exposure of the peer's IP address to "
+"routers \n"
+"inside the network, as they can simply get introduced to the peer through"
+" \n"
+"the published introducer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:595
+msgid ""
+"Beyond the functional handling of restricted routes, there are two levels"
+" \n"
+"of restricted operation that can be used to limit the exposure of one's "
+"IP \n"
+"address - using router-specific tunnels for communication, and offering "
+"'client \n"
+"routers'. For the former, routers can either build a new pool of tunnels "
+"or \n"
+"reuse their exploratory pool, publishing the inbound gateways to some of "
+"them \n"
+"as part of their routerInfo in place of their transport addresses. When a"
+" \n"
+"peer wants to get in touch with them, they see those tunnel gateways in "
+"the \n"
+"netDb and simply send the relevant message to them through one of the "
+"published \n"
+"tunnels. If the peer behind the restricted route wants to reply, it may "
+"do \n"
+"so either directly (if they are willing to expose their IP to the peer) "
+"or \n"
+"indirectly through their outbound tunnels. When the routers that the peer"
+" \n"
+"has direct connections to want to reach it (to forward tunnel messages, "
+"for \n"
+"instance), they simply prioritize their direct connection over the "
+"published \n"
+"tunnel gateway. The concept of 'client routers' simply extends the "
+"restricted \n"
+"route by not publishing any router addresses. Such a router would not "
+"even \n"
+"need to publish their routerInfo in the netDb, merely providing their "
+"self \n"
+"signed routerInfo to the peers that it contacts (necessary to pass the "
+"router's \n"
+"public keys). Both levels of restricted route operation are planned for "
+"I2P \n"
+"2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:617
+msgid ""
+"There are tradeoffs for those behind restricted routes, as they would "
+"likely \n"
+"participate in other people's tunnels less frequently, and the routers "
+"which \n"
+"they are connected to would be able to infer traffic patterns that would "
+"not \n"
+"otherwise be exposed. On the other hand, if the cost of that exposure is "
+"less \n"
+"than the cost of an IP being made available, it may be worthwhile. This, "
+"of \n"
+"course, assumes that the peers that the router behind a restricted route "
+"contacts \n"
+"are not hostile - either the network is large enough that the probability"
+" \n"
+"of using a hostile peer to get connected is small enough, or trusted (and"
+" \n"
+"perhaps temporary) peers are used instead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:629
+msgid "Variable latency"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:630
+msgid ""
+"Even though the bulk of I2P's initial efforts have been on low latency "
+"communication, \n"
+"it was designed with variable latency services in mind from the "
+"beginning. \n"
+"At the most basic level, applications running on top of I2P can offer the"
+" \n"
+"anonymity of medium and high latency communication while still blending "
+"their \n"
+"traffic patterns in with low latency traffic. Internally though, I2P can "
+"offer \n"
+"its own medium and high latency communication through the garlic "
+"encryption \n"
+"- specifying that the message should be sent after a certain delay, at a "
+"certain \n"
+"time, after a certain number of messages have passed, or another mix "
+"strategy. \n"
+"With the layered encryption, only the router that the clove exposed the "
+"delay \n"
+"request would know that the message requires high latency, allowing the "
+"traffic \n"
+"to blend in further with the low latency traffic. Once the transmission "
+"precondition \n"
+"is met, the router holding on to the clove (which itself would likely be "
+"a \n"
+"garlic message) simply forwards it as requested - to a router, to a "
+"tunnel, \n"
+"or, most likely, to a remote client destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:647
+msgid ""
+"There are a substantial number of ways to exploit this capacity for high"
+" \n"
+"latency comm in I2P, but for the moment, doing so has been scheduled for "
+"the \n"
+"I2P 3.0 release. In the meantime, those requiring the anonymity that high"
+" \n"
+"latency comm can offer should look towards the application layer to "
+"provide \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:655
+msgid "Open questions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:657
+msgid "How to get rid of the timing constraint?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:658
+msgid "Can we deal with the sessionTags more efficiently?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:659
+msgid ""
+"What, if any, batching/mixing strategies should be made available on the "
+"tunnels?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:660
+msgid ""
+"What other tunnel peer selection and ordering strategies should be "
+"available?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:663
+msgid "Similar systems"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:665
+msgid ""
+"I2P's architecture builds on the concepts of message oriented middleware,"
+" \n"
+"the topology of DHTs, the anonymity and cryptography of free route "
+"mixnets, \n"
+"and the adaptability of packet switched networking. The value comes not "
+"from \n"
+"novel concepts of algorithms though, but from careful engineering "
+"combining \n"
+"the research results of existing systems and papers. While there are a "
+"few \n"
+"similar efforts worth reviewing, both for technical and functional "
+"comparisons, \n"
+"two in particular are pulled out here - Tor and Freenet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:675
+#, python-format
+msgid "See also the Network Comparisons Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:680
+#: i2p2www/pages/site/docs/how/tech-intro.html:745
+msgid "website"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:682
+msgid ""
+"At first glance, Tor and I2P have many functional and anonymity related \n"
+"similarities. While I2P's development began before we were aware of the "
+"early \n"
+"stage efforts on Tor, many of the lessons of the original onion routing "
+"and \n"
+"ZKS efforts were integrated into I2P's design. Rather than building an "
+"essentially \n"
+"trusted, centralized system with directory servers, I2P has a self "
+"organizing \n"
+"network database with each peer taking on the responsibility of profiling"
+" \n"
+"other routers to determine how best to exploit available resources. "
+"Another \n"
+"key difference is that while both I2P and Tor use layered and ordered "
+"paths \n"
+"(tunnels and circuits/streams), I2P is fundamentally a packet switched "
+"network, \n"
+"while Tor is fundamentally a circuit switched one, allowing I2P to "
+"transparently \n"
+"route around congestion or other network failures, operate redundant "
+"pathways, \n"
+"and load balance the data across available resources. While Tor offers "
+"the \n"
+"useful outproxy functionality by offering integrated outproxy discovery "
+"and \n"
+"selection, I2P leaves such application layer decisions up to applications"
+" \n"
+"running on top of I2P - in fact, I2P has even externalized the TCP-like "
+"streaming \n"
+"library itself to the application layer, allowing developers to "
+"experiment \n"
+"with different strategies, exploiting their domain specific knowledge to "
+"offer \n"
+"better performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:703
+msgid ""
+"From an anonymity perspective, there is much similarity when the core "
+"networks \n"
+"are compared. However, there are a few key differences. When dealing with"
+" \n"
+"an internal adversary or most external adversaries, I2P's simplex tunnels"
+" \n"
+"expose half as much traffic data than would be exposed with Tor's duplex "
+"circuits \n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels. \n"
+"While I2P's peer selection and ordering strategies should sufficiently "
+"address \n"
+"predecessor attacks, should a switch to bidirectional tunnels be "
+"necessary,\n"
+"we could simply build an inbound and outbound tunnel along the same "
+"routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:717
+msgid ""
+"Another anonymity issue comes up in Tor's use of telescopic tunnel "
+"creation, \n"
+"as simple packet counting and timing measurements as the cells in a "
+"circuit \n"
+"pass through an adversary's node exposes statistical information "
+"regarding \n"
+"where the adversary is within the circuit. I2P's unidirectional tunnel "
+"creation \n"
+"with a single message so that this data is not exposed. Protecting the "
+"position \n"
+"in a tunnel is important, as an adversary would otherwise be able to "
+"mount \n"
+"a series of powerful predecessor, intersection, and traffic confirmation "
+"attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:727
+msgid ""
+"Tor's support for a second tier of \"onion proxies\" does offer a non-"
+"trivial \n"
+"degree of anonymity while requiring a low cost of entry, while I2P will "
+"not \n"
+"offer this topology until 2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:733
+msgid ""
+"On the whole, Tor and I2P complement each other in their focus - Tor "
+"works \n"
+"towards offering high speed anonymous Internet outproxying, while I2P "
+"works \n"
+"towards offering a decentralized resilient network in itself. In theory, "
+"both \n"
+"can be used to achieve both purposes, but given limited development "
+"resources, \n"
+"they both have their strengths and weaknesses. The I2P developers have "
+"considered \n"
+"the steps necessary to modify Tor to take advantage of I2P's design, but "
+"concerns \n"
+"of Tor's viability under resource scarcity suggest that I2P's packet "
+"switching \n"
+"architecture will be able to exploit scarce resources more effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:747
+msgid ""
+"Freenet played a large part in the initial stages of I2P's design - "
+"giving \n"
+"proof to the viability of a vibrant pseudonymous community completely "
+"contained \n"
+"within the network, demonstrating that the dangers inherent in outproxies"
+" \n"
+"could be avoided. The first seed of I2P began as a replacement "
+"communication \n"
+"layer for Freenet, attempting to factor out the complexities of a "
+"scalable, \n"
+"anonymous and secure point to point communication from the complexities "
+"of \n"
+"a censorship resistant distributed data store. Over time however, some of"
+" \n"
+"the anonymity and scalability issues inherent in Freenet's algorithms "
+"made \n"
+"it clear that I2P's focus should stay strictly on providing a generic "
+"anonymous \n"
+"communication layer, rather than as a component of Freenet. Over the "
+"years, \n"
+"the Freenet developers have come to see the weaknesses in the older "
+"design, \n"
+"prompting them to suggest that they will require a \"premix\" layer to "
+"offer \n"
+"substantial anonymity. In other words, Freenet needs to run on top of a "
+"mixnet \n"
+"such as I2P or Tor, with \"client nodes\" requesting and publishing data "
+"through \n"
+"the mixnet to the \"server nodes\" which then fetch and store the data "
+"according \n"
+"to Freenet's heuristic distributed data storage algorithms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:766
+msgid ""
+"Freenet's functionality is very complementary to I2P's, as Freenet "
+"natively \n"
+"provides many of the tools for operating medium and high latency systems,"
+" \n"
+"while I2P natively provides the low latency mix network suitable for "
+"offering \n"
+"adequate anonymity. The logic of separating the mixnet from the "
+"censorship-\n"
+"resistant distributed data store still seems self-evident from an "
+"engineering, \n"
+"anonymity, security, and resource allocation perspective, so hopefully "
+"the \n"
+"Freenet team will pursue efforts in that direction, if not simply reusing"
+" \n"
+"(or helping to improve, as necessary) existing mixnets like I2P or Tor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:777
+msgid ""
+"It is worth mentioning that there has recently been discussion and work \n"
+"by the Freenet developers on a \"globally scalable darknet\" using "
+"restricted \n"
+"routes between peers of various trust. While insufficient information has"
+" \n"
+"been made publicly available regarding how such a system would operate "
+"for \n"
+"a full review, from what has been said the anonymity and scalability "
+"claims \n"
+"seem highly dubious. In particular, the appropriateness for use in "
+"hostile \n"
+"regimes against state level adversaries has been tremendously overstated,"
+" \n"
+"and any analysis on the implications of resource scarcity upon the "
+"scalability \n"
+"of the network has seemingly been avoided. Further questions regarding "
+"susceptibility \n"
+"to traffic analysis, trust and other topics do exist, but a more in-depth"
+" \n"
+"review of this \"globally scalable darknet\" will have to wait until the "
+"Freenet \n"
+"team makes more information available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:793
+msgid ""
+"I2P itself doesn't really do much - it simply sends messages to remote "
+"destinations \n"
+"and receives messages targeting local destinations - most of the "
+"interesting \n"
+"work goes on at the layers above it. By itself, I2P could be seen as an "
+"anonymous \n"
+"and secure IP layer, and the bundled streaming"
+" library \n"
+"as an implementation of an anonymous and secure TCP layer on top of it. "
+"Beyond \n"
+"that, I2PTunnel exposes a generic TCP "
+"proxying \n"
+"system for either getting into or out of the I2P network, plus a variety "
+"of \n"
+"network applications provide further functionality for end users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:804
+msgid "Streaming library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:805
+msgid ""
+"The I2P streaming library can be viewed as a generic streaming interface "
+"(mirroring TCP sockets),\n"
+"and the implementation supports a sliding "
+"window protocol\n"
+"with several optimizations, to take into account the high delay over I2P."
+"\n"
+"Individual streams may adjust the maximum packet size and \n"
+"other options, though the default of 4KB compressed seems a reasonable "
+"tradeoff \n"
+"between the bandwidth costs of retransmitting lost messages and the "
+"latency \n"
+"of multiple messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:815
+msgid ""
+"In addition, in consideration of the relatively high cost of subsequent \n"
+"messages, the streaming library's protocol for scheduling and delivering "
+"messages \n"
+"has been optimized to allow individual messages passed to contain as much"
+" \n"
+"information as is available. For instance, a small HTTP transaction "
+"proxied \n"
+"through the streaming library can be completed in a single round trip - "
+"the \n"
+"first message bundles a SYN, FIN and the small payload (an HTTP request "
+"typically \n"
+"fits) and the reply bundles the SYN, FIN, ACK and the small payload (many"
+" \n"
+"HTTP responses fit). While an additional ACK must be transmitted to tell "
+"the \n"
+"HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy "
+"can \n"
+"deliver the full response to the browser immediately."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:828
+msgid ""
+"On the whole, however, the streaming library bears much resemblance to an"
+" \n"
+"abstraction of TCP, with its sliding windows, congestion control "
+"algorithms \n"
+"(both slow start and congestion avoidance), and general packet behavior "
+"(ACK, \n"
+"SYN, FIN, RST, etc)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:835
+msgid "Naming library and addressbook"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:836
+#, python-format
+msgid ""
+"For more information see the Naming and "
+"Addressbook page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:840
+#: i2p2www/pages/site/docs/how/tech-intro.html:914
+#: i2p2www/pages/site/docs/how/tech-intro.html:961
+#: i2p2www/pages/site/docs/how/tech-intro.html:993
+#: i2p2www/pages/site/docs/how/tech-intro.html:1001
+#: i2p2www/pages/site/docs/how/tech-intro.html:1009
+#: i2p2www/pages/site/docs/how/tech-intro.html:1019
+#: i2p2www/pages/site/docs/how/tech-intro.html:1027
+#: i2p2www/pages/site/docs/how/tech-intro.html:1049
+#, python-format
+msgid "Developed by: %(dev)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:842
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning"
+" \n"
+"with advocates across the spectrum of possibilities. However, given I2P's"
+" \n"
+"inherent demand for secure communication and decentralized operation, the"
+" \n"
+"traditional DNS-style naming system is clearly out, as are \"majority "
+"rules\" \n"
+"voting systems. Instead, I2P ships with a generic naming library and a "
+"base \n"
+"implementation designed to work off a local name to destination mapping, "
+"as \n"
+"well as an optional add-on application called the \"addressbook\". The "
+"addressbook \n"
+"is a web-of-trust-driven secure, distributed, and human readable naming "
+"system, \n"
+"sacrificing only the call for all human readable names to be globally "
+"unique \n"
+"by mandating only local uniqueness. While all messages in I2P are "
+"cryptographically \n"
+"addressed by their destination, different people can have local "
+"addressbook \n"
+"entries for \"Alice\" which refer to different destinations. People can "
+"still \n"
+"discover new names by importing published addressbooks of peers specified"
+" \n"
+"in their web of trust, by adding in the entries provided through a third "
+"party, \n"
+"or (if some people organize a series of published addressbooks using a "
+"first \n"
+"come first serve registration system) people can choose to treat these "
+"addressbooks \n"
+"as name servers, emulating traditional DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:862
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage \n"
+"done by hijacking a site can be tremendous - and insecure destinations "
+"have \n"
+"no value. DNSsec itself still falls back on registrars and certificate "
+"authorities, \n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the \n"
+"reply spoofed, as they are encrypted to the destination's public keys, "
+"and \n"
+"a destination itself is just a pair of public keys and a certificate. "
+"DNS-style \n"
+"systems on the other hand allow any of the name servers on the lookup "
+"path \n"
+"to mount simple denial of service and spoofing attacks. Adding on a "
+"certificate \n"
+"authenticating the responses as signed by some centralized certificate "
+"authority \n"
+"would address many of the hostile nameserver issues but would leave open "
+"replay \n"
+"attacks as well as hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:876
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness \n"
+"of Sybil attacks in anonymous systems - the attacker can simply create an"
+" \n"
+"arbitrarily high number of peers and \"vote\" with each to take over a "
+"given \n"
+"name. Proof-of-work methods can be used to make identity non-free, but as"
+" \n"
+"the network grows the load required to contact everyone to conduct online"
+" \n"
+"voting is implausible, or if the full network is not queried, different "
+"sets \n"
+"of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:886
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of"
+" \n"
+"a naming system out of the (IP-like) communication layer. The bundled "
+"naming \n"
+"library includes a simple service provider interface which alternate "
+"naming \n"
+"systems can plug into, allowing end users to drive what sort of naming "
+"tradeoffs \n"
+"they prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:895
+msgid ""
+"The old Syndie bundled with I2P has been replaced by the new Syndie which"
+"\n"
+"is distributed separately. For more information see the Syndie\n"
+"pages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:901
+msgid ""
+"Syndie is a safe, anonymous blogging / content publication / content "
+"aggregation \n"
+"system. It lets you create information, share it with others, and read "
+"posts \n"
+"from those you're interested in, all while taking into consideration your"
+" \n"
+"needs for security and anonymity. Rather than building its own content "
+"distribution \n"
+"network, Syndie is designed to run on top of existing networks, "
+"syndicating \n"
+"content through eepsites, Tor hidden services, Freenet freesites, normal "
+"websites, \n"
+"usenet newsgroups, email lists, RSS feeds, etc. Data published with "
+"Syndie \n"
+"is done so as to offer pseudonymous authentication to anyone reading or "
+"archiving \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:916
+msgid ""
+"I2PTunnel is probably I2P's most popular and versatile client "
+"application, \n"
+"allowing generic proxying both into and out of the I2P network. I2PTunnel"
+" \n"
+"can be viewed as four separate proxying applications - a \"client\" which"
+" receives \n"
+"inbound TCP connections and forwards them to a given I2P destination, an "
+"\"httpclient\" \n"
+"(aka \"eepproxy\") which acts like an HTTP proxy and forwards the "
+"requests to \n"
+"the appropriate I2P destination (after querying the naming service if "
+"necessary), \n"
+"a \"server\" which receives inbound I2P streaming connections on a "
+"destination \n"
+"and forwards them to a given TCP host+port, and an \"httpserver\" which "
+"extends \n"
+"the \"server\" by parsing the HTTP request and responses to allow safer "
+"operation. \n"
+"There is an additional \"socksclient\" application, but its use is not "
+"encouraged \n"
+"for reasons previously mentioned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:930
+msgid ""
+"I2P itself is not an outproxy network - the anonymity and security "
+"concerns \n"
+"inherent in a mix net which forwards data into and out of the mix have "
+"kept \n"
+"I2P's design focused on providing an anonymous network which capable of "
+"meeting \n"
+"the user's needs without requiring external resources. However, the "
+"I2PTunnel \n"
+"\"httpclient\" application offers a hook for outproxying - if the "
+"hostname requested \n"
+"doesn't end in \".i2p\", it picks a random destination from a user-"
+"provided \n"
+"set of outproxies and forwards the request to them. These destinations "
+"are \n"
+"simply I2PTunnel \"server\" instances run by volunteers who have "
+"explicitly \n"
+"chosen to run outproxies - no one is an outproxy by default, and running "
+"an \n"
+"outproxy doesn't automatically tell other people to proxy through you. "
+"While \n"
+"outproxies do have inherent weaknesses, they offer a simple proof of "
+"concept \n"
+"for using I2P and provide some functionality under a threat model which "
+"may \n"
+"be sufficient for some users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:946
+msgid ""
+"I2PTunnel enables most of the applications in use. An \"httpserver\" "
+"pointing \n"
+"at a webserver lets anyone run their own anonymous website (or "
+"\"eepsite\") \n"
+"- a webserver is bundled with I2P for this purpose, but any webserver can"
+" \n"
+"be used. Anyone may run a \"client\" pointing at one of the anonymously "
+"hosted \n"
+"IRC servers, each of which are running a \"server\" pointing at their "
+"local \n"
+"IRCd and communicating between IRCds over their own \"client\" tunnels. "
+"End \n"
+"users also have \"client\" tunnels pointing at I2Pmail's \n"
+"POP3 and SMTP destinations (which in turn are simply \"server\" instances"
+" pointing \n"
+"at POP3 and SMTP servers), as well as \"client\" tunnels pointing at "
+"I2P's CVS \n"
+"server, allowing anonymous development. At times people have even run "
+"\"client\" \n"
+"proxies to access the \"server\" instances pointing at an NNTP server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:963
+msgid ""
+"i2p-bt is a port of the mainline python BitTorrent client to run both the"
+" \n"
+"tracker and peer communication over I2P. Tracker requests are forwarded "
+"through \n"
+"the eepproxy to eepsites specified in the torrent file while tracker "
+"responses \n"
+"refer to peers by their destination explicitly, allowing i2p-bt to open "
+"up \n"
+"a streaming lib connection to query them "
+"for \n"
+"blocks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:972
+msgid ""
+"In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making"
+" \n"
+"a few modifications as necessary to strip any anonymity-compromising "
+"information \n"
+"from the application and to take into consideration the fact that IPs "
+"cannot \n"
+"be used for identifying peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:980
+msgid ""
+"I2PSnark developed: jrandom, et al, ported from mjw's Snark client"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:986
+msgid ""
+"Bundled with the I2P install, I2PSnark offers a simple anonymous "
+"BitTorrent \n"
+"client with multitorrent capabilities, exposing all of the functionality "
+"through \n"
+"a plain HTML web interface."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:995
+#, python-format
+msgid ""
+"Robert is a Bittorrent client written in Python.\n"
+"It is hosted on http://%(bob)s/Robert.html "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1003
+#, python-format
+msgid ""
+"PyBit is a Bittorrent client written in Python.\n"
+"It is hosted on %(pybit)s "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1011
+msgid ""
+"I2Phex is a fairly direct port of the Phex Gnutella filesharing client to"
+" \n"
+"run entirely on top of I2P. While it has disabled some of Phex's "
+"functionality, \n"
+"such as integration with Gnutella webcaches, the basic file sharing and "
+"chatting \n"
+"system is fully functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1021
+msgid ""
+"iMule is a fairly direct port of the aMule filesharing client \n"
+"running entirely inside I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1029
+#, python-format
+msgid ""
+"I2Pmail is more a service than an application - postman offers both "
+"internal \n"
+"and external email with POP3 and SMTP service through I2PTunnel instances"
+" \n"
+"accessing a series of components developed with mastiejaner, allowing "
+"people \n"
+"to use their preferred mail clients to send and receive mail "
+"pseudonymously. \n"
+"However, as most mail clients expose substantial identifying information,"
+" \n"
+"I2P bundles susi23's web based susimail client which has been built "
+"specifically \n"
+"with I2P's anonymity needs in mind. The I2Pmail/mail.i2p service offers "
+"transparent \n"
+"virus filtering as well as denial of service prevention with hashcash "
+"augmented \n"
+"quotas. In addition, each user has control of their batching strategy "
+"prior \n"
+"to delivery through the mail.i2p outproxies, which are separate from the "
+"mail.i2p \n"
+"SMTP and POP3 servers - both the outproxies and inproxies communicate "
+"with \n"
+"the mail.i2p SMTP and POP3 servers through I2P itself, so compromising "
+"those \n"
+"non-anonymous locations does not give access to the mail accounts or "
+"activity \n"
+"patterns of the user. At the moment the developers work on a "
+"decentralized \n"
+"mailsystem, called \"v2mail\". More information can be found on the "
+"eepsite \n"
+"%(postman)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1051
+msgid ""
+"I2P-Bote is a distributed e-mail application. It does not use the "
+"traditional\n"
+"e-mail concept of sending an e-mail to a server and retrieving it from a "
+"server.\n"
+"Instead, it uses a Kademlia Distributed Hash Table to store mails.\n"
+"One user can push a mail into the DHT, while another can request the "
+"e-mail from the DHT.\n"
+"And all the mails sent within the I2P-Bote network are automatically "
+"encrypted end-to-end. X = g^x mod"
+" p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:166
+msgid "Alice sends X to Bob (Message 1)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:167
+msgid ""
+"Bob generates a secret integer y. He then calculates Y = g^y mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:168
+msgid "Bob sends Y to Alice.(Message 2)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:169
+msgid "Alice can now compute sessionKey = Y^x mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:170
+msgid "Bob can now compute sessionKey = X^y mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:171
+msgid ""
+"Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:173
+#, python-format
+msgid ""
+"The sessionKey is then used to exchange identities in Message 3 "
+"and Message 4.\n"
+"The exponent (x and y) length for the DH exchange is documented on the\n"
+"cryptography page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:193
+msgid "Message 1 (Session Request)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:194
+#, python-format
+msgid ""
+"This is the DH request. Alice already has Bob's\n"
+"Router "
+"Identity,\n"
+"IP address, and port, as contained in his\n"
+"Router Info,\n"
+"which was published to the\n"
+"network database.\n"
+"Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:207
+#: i2p2www/pages/site/docs/transport/ntcp.html:250
+#: i2p2www/pages/site/docs/transport/ntcp.html:332
+#: i2p2www/pages/site/docs/transport/ntcp.html:437
+msgid "Size:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:209
+msgid "Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:227
+msgid "256 byte X from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:229
+msgid "SHA256 Hash(X) xored with SHA256 Hash(Bob's `RouterIdentity`)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:236
+#: i2p2www/pages/site/docs/transport/ntcp.html:319
+#: i2p2www/pages/site/docs/transport/ntcp.html:398
+msgid "Notes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:237
+msgid ""
+"Bob verifies HXxorHI using his own router hash. If it does not verify,\n"
+"Alice has contacted the wrong router, and Bob drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:243
+msgid "Message 2 (Session Created)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:244
+msgid "This is the DH reply. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:252
+#: i2p2www/pages/site/docs/transport/ntcp.html:334
+#: i2p2www/pages/site/docs/transport/ntcp.html:439
+msgid "Unencrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:274
+#: i2p2www/pages/site/docs/transport/ntcp.html:310
+msgid "256 byte Y from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:276
+msgid "SHA256 Hash(X concatenated with Y)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:279
+#: i2p2www/pages/site/docs/transport/ntcp.html:364
+msgid "4 byte timestamp (seconds since the epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:281
+msgid "12 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:285
+#: i2p2www/pages/site/docs/transport/ntcp.html:376
+#: i2p2www/pages/site/docs/transport/ntcp.html:466
+msgid "Encrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:312
+#, python-format
+msgid ""
+"48 bytes AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of Y as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:320
+msgid ""
+"Alice may drop the connection if the clock skew with Bob is too high as "
+"calculated using tsB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:325
+msgid "Message 3 (Session Confirm A)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:326
+msgid ""
+"This contains Alice's router identity, and a signature of the critical "
+"data. Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:360
+msgid "2 byte size of Alice's router identity to follow (387+)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:362
+msgid "Alice's 387+ byte `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:366
+#: i2p2www/pages/site/docs/transport/ntcp.html:461
+msgid "0-15 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:368
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Bob's `RouterIdentity`, tsA, tsB.\n"
+" Alice signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in her `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:389
+#, python-format
+msgid ""
+"448 bytes AES encrypted using the DH"
+" session key and\n"
+" the last 16 bytes of HXxorHI (i.e., the last 16 bytes "
+"of message #1) as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:400
+msgid "Bob verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:403
+msgid ""
+"Bob may drop the connection if the clock skew with Alice is too high as "
+"calculated using tsA."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:406
+msgid ""
+"Alice will use the last 16 bytes of the encrypted contents of this "
+"message as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:430
+msgid "Message 4 (Session Confirm B)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:431
+msgid "This is a signature of the critical data. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:455
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Alice's `RouterIdentity`, tsA, tsB.\n"
+" Bob signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in his `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:479
+#, python-format
+msgid ""
+"Data AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of the encrypted contents of message "
+"#2 as the IV\n"
+" 48 bytes for a DSA signature, may vary for other "
+"signature types"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:488
+msgid "Alice verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:491
+msgid ""
+"Bob will use the last 16 bytes of the encrypted contents of this message "
+"as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:506
+msgid "After Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:507
+msgid ""
+"The connection is established, and standard or time sync messages may be "
+"exchanged.\n"
+"All subsequent messages are AES encrypted using the negotiated DH session"
+" key.\n"
+"Alice will use the last 16 bytes of the encrypted contents of message #3 "
+"as the next IV.\n"
+"Bob will use the last 16 bytes of the encrypted contents of message #4 as"
+" the next IV."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:516
+msgid "Check Connection Message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:517
+msgid ""
+"Alternately, when Bob receives a connection, it could be a\n"
+"check connection (perhaps prompted by Bob asking for someone\n"
+"to verify his listener).\n"
+"Check Connection is not currently used.\n"
+"However, for the record, check connections are formatted as follows.\n"
+"A check info connection will receive 256 bytes containing:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:526
+msgid "32 bytes of uninterpreted, ignored data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:527
+msgid "1 byte size"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:528
+msgid ""
+"that many bytes making up the local router's IP address (as reached by "
+"the remote side)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:529
+msgid "2 byte port number that the local router was reached on"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:530
+msgid ""
+"4 byte i2p network time as known by the remote side (seconds since the "
+"epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:531
+msgid "uninterpreted padding data, up to byte 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:532
+msgid ""
+"xor of the local router's identity hash and the SHA256 of bytes 32 "
+"through bytes 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:535
+msgid "Check connection is completely disabled as of release 0.9.12."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:539
+msgid "Discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:540
+#, python-format
+msgid "Now on the NTCP Discussion Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:546
+msgid "The maximum message size should be increased to approximately 32 KB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:550
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then.\n"
+"However, there is currently no provision for padding beyond the next "
+"16-byte boundary,\n"
+"to create a limited number of message sizes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:558
+msgid ""
+"Memory utilization (including that of the kernel) for NTCP should be "
+"compared to that for SSU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:562
+msgid ""
+"Can the establishment messages be randomly padded somehow, to frustrate\n"
+"identification of I2P traffic based on initial packet sizes?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:2
+msgid "Secure Semireliable UDP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:7
+#, python-format
+msgid ""
+"SSU (also called \"UDP\" in much of the I2P documentation and user "
+"interfaces)\n"
+"is one of three transports currently "
+"implemented in I2P.\n"
+"The others are NTCP and NTCP2."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:13
+msgid ""
+"SSU was introduced in I2P release 0.6.\n"
+"In a standard I2P installation, the router uses both NTCP and SSU for "
+"outbound connections.\n"
+"SSU-over-IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:19
+msgid ""
+"SSU is called \"semireliable\" because it will repeatedly retransmit "
+"unacknowledged messages,\n"
+"but only up to a maximum number of times. After that, the message is "
+"dropped."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:24
+msgid "SSU Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:26
+msgid ""
+"Like the NTCP transport, SSU provides reliable, encrypted, connection-"
+"oriented, point-to-point data transport.\n"
+"Unique to SSU, it also provides IP detection and NAT traversal services, "
+"including:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:32
+msgid ""
+"Cooperative NAT/Firewall traversal using introducers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:33
+msgid ""
+"Local IP detection by inspection of incoming packets and peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:34
+msgid ""
+"Communication of firewall status and local IP, and changes to either to "
+"NTCP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:46
+#: i2p2www/pages/site/docs/transport/ssu.html:60
+#: i2p2www/pages/site/docs/transport/ssu.html:61
+#: i2p2www/pages/site/docs/transport/ssu.html:63
+#: i2p2www/pages/site/docs/transport/ssu.html:66
+#: i2p2www/pages/site/docs/transport/ssu.html:70
+#: i2p2www/pages/site/docs/transport/ssu.html:71
+#: i2p2www/pages/site/docs/transport/ssu.html:77
+msgid "See below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:84
+msgid "Protocol Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:86
+msgid "Congestion control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:88
+msgid ""
+"SSU's need for only semireliable delivery, TCP-friendly operation,\n"
+"and the capacity for high throughput allows a great deal of latitude in\n"
+"congestion control. The congestion control algorithm outlined below is\n"
+"meant to be both efficient in bandwidth as well as simple to implement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:95
+msgid ""
+"Packets are scheduled according to the router's policy, taking care\n"
+"not to exceed the router's outbound capacity or to exceed the measured \n"
+"capacity of the remote peer. The measured capacity operates along the\n"
+"lines of TCP's slow start and congestion avoidance, with additive "
+"increases\n"
+"to the sending capacity and multiplicative decreases in face of "
+"congestion.\n"
+"Unlike for TCP, routers may give up on some messages after\n"
+"a given period or number of retransmissions while continuing to transmit"
+" \n"
+"other messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:106
+msgid ""
+"The congestion detection techniques vary from TCP as well, since each \n"
+"message has its own unique and nonsequential identifier, and each message"
+"\n"
+"has a limited size - at most, 32KB. To efficiently transmit this "
+"feedback\n"
+"to the sender, the receiver periodically includes a list of fully ACKed \n"
+"message identifiers and may also include bitfields for partially received"
+"\n"
+"messages, where each bit represents the reception of a fragment. If \n"
+"duplicate fragments arrive, the message should be ACKed again, or if the\n"
+"message has still not been fully received, the bitfield should be \n"
+"retransmitted with any new updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:118
+msgid ""
+"The current implementation does not pad the packets to\n"
+"any particular size, but instead just places a single message fragment "
+"into\n"
+"a packet and sends it off (careful not to exceed the MTU)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:125
+msgid ""
+"As of router version 0.8.12,\n"
+"two MTU values are used for IPv4: 620 and 1484.\n"
+"The MTU value is adjusted based on the percentage of packets that are "
+"retransmitted."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:131
+msgid ""
+"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n"
+"the payload portion after the 28-byte IP/UDP header is a multiple of\n"
+"16 bytes, for encryption purposes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:137
+msgid ""
+"For the small MTU value, it is desirable to pack a 2646-byte\n"
+"Variable Tunnel Build Message efficiently into multiple packets;\n"
+"with a 620-byte MTU, it fits into 5 packets with nicely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:143
+msgid ""
+"Based on measurements, 1492 fits nearly all reasonably small I2NP "
+"messages\n"
+"(larger I2NP messages may be up to 1900 to 4500 bytes, which isn't going "
+"to fit\n"
+"into a live network MTU anyway)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:149
+msgid ""
+"The MTU values were 608 and 1492 for releases 0.8.9 - 0.8.11.\n"
+"The large MTU was 1350 prior to release 0.8.9."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:154
+msgid ""
+"The maximum receive packet size\n"
+"is 1571 bytes as of release 0.8.12.\n"
+"For releases 0.8.9 - 0.8.11 it was 1535 bytes.\n"
+"Prior to release 0.8.9 it was 2048 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:161
+msgid ""
+"As of release 0.9.2, if a router's network interface MTU is less than "
+"1484,\n"
+"it will publish that in the network database, and other routers should\n"
+"honor that when a connection is established."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:167
+msgid ""
+"For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n"
+"so we use an MTU where (MTN % 16 == 0), which is true for 1280.\n"
+"The maximum IPv6 MTU is 1488.\n"
+" (max was 1472 prior to version 0.9.28)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:174
+msgid "Message Size Limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:175
+msgid ""
+"While the maximum message size is nominally 32KB, the practical\n"
+"limit differs. The protocol limits the number of fragments to 7 bits, or "
+"128.\n"
+"The current implementation, however, limits each message to a maximum of "
+"64 fragments,\n"
+"which is sufficient for 64 * 534 = 33.3 KB when using the 608 MTU.\n"
+"Due to overhead for bundled LeaseSets and session keys, the practical "
+"limit\n"
+"at the application level is about 6KB lower, or about 26KB.\n"
+"Further work is necessary to raise the UDP transport limit above 32KB.\n"
+"For connections using the larger MTU, larger messages are possible."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:197
+msgid "Keys"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:199
+msgid ""
+"All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs.\n"
+"When Alice originates a session with Bob,\n"
+"the MAC and session keys are negotiated as part of the DH exchange, and "
+"are then used\n"
+"for the HMAC and encryption, respectively. During the DH exchange, \n"
+"Bob's publicly knowable introKey is used for the MAC and encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:207
+msgid ""
+"Both the initial message and the subsequent\n"
+"reply use the introKey of the responder (Bob) - the responder does \n"
+"not need to know the introKey of the requester (Alice). The DSA \n"
+"signing key used by Bob should already be known to Alice when she \n"
+"contacts him, though Alice's DSA key may not already be known by \n"
+"Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:216
+msgid ""
+"Upon receiving a message, the receiver checks the \"from\" IP address and"
+" port\n"
+"with all established sessions - if there are matches,\n"
+"that session's MAC keys are tested in the HMAC. If none\n"
+"of those verify or if there are no matching IP addresses, the \n"
+"receiver tries their introKey in the MAC. If that does not verify,\n"
+"the packet is dropped. If it does verify, it is interpreted \n"
+"according to the message type, though if the receiver is overloaded,\n"
+"it may be dropped anyway."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:227
+msgid ""
+"If Alice and Bob have an established session, but Alice loses the \n"
+"keys for some reason and she wants to contact Bob, she may at any \n"
+"time simply establish a new session through the SessionRequest and\n"
+"related messages. If Bob has lost the key but Alice does not know\n"
+"that, she will first attempt to prod him to reply, by sending a \n"
+"DataMessage with the wantReply flag set, and if Bob continually \n"
+"fails to reply, she will assume the key is lost and reestablish a \n"
+"new one."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:238
+#, python-format
+msgid ""
+"For the DH key agreement,\n"
+"RFC3526 2048bit\n"
+"MODP group (#14) is used:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:248
+#, python-format
+msgid ""
+"These are the same p and g used for I2P's\n"
+"ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:253
+msgid "Replay prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:255
+msgid ""
+"Replay prevention at the SSU layer occurs by rejecting packets \n"
+"with exceedingly old timestamps or those which reuse an IV. To\n"
+"detect duplicate IVs, a sequence of Bloom filters are employed to\n"
+"\"decay\" periodically so that only recently added IVs are detected."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:262
+msgid ""
+"The messageIds used in DataMessages are defined at layers above\n"
+"the SSU transport and are passed through transparently. These IDs\n"
+"are not in any particular order - in fact, they are likely to be\n"
+"entirely random. The SSU layer makes no attempt at messageId \n"
+"replay prevention - higher layers should take that into account."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:270
+msgid "Addressing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:272
+msgid ""
+"To contact an SSU peer, one of two sets of information is necessary:\n"
+"a direct address, for when the peer is publicly reachable, or an\n"
+"indirect address, for using a third party to introduce the peer.\n"
+"There is no restriction on the number of addresses a peer may have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:284
+msgid ""
+"Each of the addresses may also expose a series of options - special\n"
+"capabilities of that particular peer. For a list of available\n"
+"capabilities, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:290
+#, python-format
+msgid ""
+"The addresses, options, and capabilities are published in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:295
+msgid "Direct Session Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:296
+msgid ""
+"Direct session establishment is used when no third party is required for "
+"NAT traversal.\n"
+"The message sequence is as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:301
+msgid "Connection establishment (direct)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:302
+msgid ""
+"Alice connects directly to Bob.\n"
+"IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:317
+#, python-format
+msgid ""
+"After the SessionConfirmed message is received, Bob sends a small\n"
+"DeliveryStatus message\n"
+"as a confirmation.\n"
+"In this message, the 4-byte message ID is set to a random number, and the"
+"\n"
+"8-byte \"arrival time\" is set to the current network-wide ID, which is 2"
+"\n"
+"(i.e. 0x0000000000000002)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:326
+#, python-format
+msgid ""
+"After the status message is sent, the peers usually exchange\n"
+"DatabaseStore messages\n"
+"containing their\n"
+"RouterInfos,\n"
+"however, this is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:335
+msgid ""
+"It does not appear that the type of the status message or its contents "
+"matters.\n"
+"It was originally added becasue the DatabaseStore message was delayed\n"
+"several seconds; since the store is now sent immediately, perhaps\n"
+"the status message can be eliminated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:344
+msgid ""
+"Introduction keys are delivered through an external channel \n"
+"(the network database, where they are identical to the router Hash for "
+"now)\n"
+"and must be used when establishing a session key. For the indirect\n"
+"address, the peer must first contact the relayhost and ask them for\n"
+"an introduction to the peer known at that relayhost under the given\n"
+"tag. If possible, the relayhost sends a message to the addressed\n"
+"peer telling them to contact the requesting peer, and also gives \n"
+"the requesting peer the IP and port on which the addressed peer is\n"
+"located. In addition, the peer establishing the connection must \n"
+"already know the public keys of the peer they are connecting to (but\n"
+"not necessary to any intermediary relay peer)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:358
+msgid ""
+"Indirect session establishment by means of a third party introduction\n"
+"is necessary for efficient NAT traversal. Charlie, a router behind a\n"
+"NAT or firewall which does not allow unsolicited inbound UDP packets,\n"
+"first contacts a few peers, choosing some to serve as introducers. Each\n"
+"of these peers (Bob, Bill, Betty, etc) provide Charlie with an "
+"introduction\n"
+"tag - a 4 byte random number - which he then makes available to the "
+"public\n"
+"as methods of contacting him. Alice, a router who has Charlie's "
+"published\n"
+"contact methods, first sends a RelayRequest packet to one or more of the"
+" \n"
+"introducers, asking each to introduce her to Charlie (offering the \n"
+"introduction tag to identify Charlie). Bob then forwards a RelayIntro\n"
+"packet to Charlie including Alice's public IP and port number, then sends"
+"\n"
+"Alice back a RelayResponse packet containing Charlie's public IP and port"
+"\n"
+"number. When Charlie receives the RelayIntro packet, he sends off a "
+"small\n"
+"random packet to Alice's IP and port (poking a hole in his NAT/firewall),"
+"\n"
+"and when Alice receives Bob's RelayResponse packet, she begins a new \n"
+"full direction session establishment with the specified IP and port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:385
+msgid "Connection establishment (indirect using an introducer)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:387
+msgid "Alice first connects to introducer Bob, who relays the request to Charlie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:405
+msgid ""
+"After the hole punch, the session is established between Alice and "
+"Charlie as in a direct establishment."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:419
+msgid "Peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:421
+msgid ""
+"The automation of collaborative reachability testing for peers is\n"
+"enabled by a sequence of PeerTest messages. With its proper \n"
+"execution, a peer will be able to determine their own reachability\n"
+"and may update its behavior accordingly. The testing process is \n"
+"quite simple:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:440
+msgid ""
+"Each of the PeerTest messages carry a nonce identifying the\n"
+"test series itself, as initialized by Alice. If Alice doesn't \n"
+"get a particular message that she expects, she will retransmit\n"
+"accordingly, and based upon the data received or the messages\n"
+"missing, she will know her reachability. The various end states\n"
+"that may be reached are as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:450
+msgid ""
+"If she doesn't receive a response from Bob, she will retransmit\n"
+"up to a certain number of times, but if no response ever arrives,\n"
+"she will know that her firewall or NAT is somehow misconfigured, \n"
+"rejecting all inbound UDP packets even in direct response to an\n"
+"outbound packet. Alternately, Bob may be down or unable to get \n"
+"Charlie to reply."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:459
+msgid ""
+"If Alice doesn't receive a PeerTest message with the \n"
+"expected nonce from a third party (Charlie), she will retransmit\n"
+"her initial request to Bob up to a certain number of times, even\n"
+"if she has received Bob's reply already. If Charlie's first message \n"
+"still doesn't get through but Bob's does, she knows that she is\n"
+"behind a NAT or firewall that is rejecting unsolicited connection\n"
+"attempts and that port forwarding is not operating properly (the\n"
+"IP and port that Bob offered up should be forwarded)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:470
+msgid ""
+"If Alice receives Bob's PeerTest message and both of Charlie's\n"
+"PeerTest messages but the enclosed IP and port numbers in Bob's \n"
+"and Charlie's second messages don't match, she knows that she is \n"
+"behind a symmetric NAT, rewriting all of her outbound packets with\n"
+"different 'from' ports for each peer contacted. She will need to\n"
+"explicitly forward a port and always have that port exposed for \n"
+"remote connectivity, ignoring further port discovery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:480
+msgid ""
+"If Alice receives Charlie's first message but not his second,\n"
+"she will retransmit her PeerTest message to Charlie up to a \n"
+"certain number of times, but if no response is received she knows\n"
+"that Charlie is either confused or no longer online."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:488
+msgid ""
+"Alice should choose Bob arbitrarily from known peers who seem\n"
+"to be capable of participating in peer tests. Bob in turn should\n"
+"choose Charlie arbitrarily from peers that he knows who seem to be\n"
+"capable of participating in peer tests and who are on a different\n"
+"IP from both Bob and Alice. If the first error condition occurs\n"
+"(Alice doesn't get PeerTest messages from Bob), Alice may decide\n"
+"to designate a new peer as Bob and try again with a different nonce."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:498
+msgid ""
+"Alice's introduction key is included in all of the PeerTest \n"
+"messages so that she doesn't need to already have an established\n"
+"session with Bob and so that Charlie can contact her without knowing\n"
+"any additional information. Alice may go on to establish a session\n"
+"with either Bob or Charlie, but it is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:526
+msgid "Transmission window, ACKs and Retransmissions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:527
+#, python-format
+msgid ""
+"The DATA message may contain ACKs of full messages and\n"
+"partial ACKs of individual fragments of a message. See\n"
+"the data message section of\n"
+"the protocol specification page\n"
+"for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:535
+#, python-format
+msgid ""
+"The details of windowing, ACK, and retransmission strategies are not "
+"specified\n"
+"here. See the Java code for the current implementation.\n"
+"During the establishment phase, and for peer testing, routers\n"
+"should implement exponential backoff for retransmission.\n"
+"For an established connection, routers should implement\n"
+"an adjustable transmission window, RTT estimate and timeout, similar to "
+"TCP\n"
+"or streaming.\n"
+"See the code for initial, min and max parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:547
+msgid "Security"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:548
+msgid ""
+"UDP source addresses may, of course, be spoofed.\n"
+"Additionally, the IPs and ports contained inside specific\n"
+"SSU messages (RelayRequest, RelayResponse, RelayIntro, PeerTest)\n"
+"may not be legitimate.\n"
+"Also, certain actions and responses may need to be rate-limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:556
+msgid ""
+"The details of validation are not specified\n"
+"here. Implementers should add defenses where appropriate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:562
+msgid "Peer capabilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:566
+msgid ""
+"If the peer address contains the 'B' capability, that means \n"
+"they are willing and able to participate in peer tests as\n"
+"a 'Bob' or 'Charlie'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:578
+msgid ""
+"If the peer address contains the 'C' capability, that means\n"
+"they are willing and able to serve as an introducer - serving\n"
+"as a Bob for an otherwise unreachable Alice."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:587
+msgid ""
+"Analysis of current SSU performance, including assessment of window size "
+"adjustment\n"
+"and other parameters, and adjustment of the protocol implementation to "
+"improve\n"
+"performance, is a topic for future work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:593
+msgid ""
+"The current implementation repeatedly sends acknowledgments for the same "
+"packets,\n"
+"which unnecessarily increases overhead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:598
+msgid ""
+"The default small MTU value of 620 should be analyzed and possibly "
+"increased.\n"
+"The current MTU adjustment strategy should be evaluated.\n"
+"Does a streaming lib 1730-byte packet fit in 3 small SSU packets? "
+"Probably not."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:604
+msgid "The protocol should be extended to exchange MTUs during the setup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:608
+msgid "Rekeying is currently unimplemented and may never be."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:612
+msgid ""
+"The potential use of the 'challenge' fields in RelayIntro and "
+"RelayResponse,\n"
+"and use of the padding field in SessionRequest and SessionCreated, is "
+"undocumented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:617
+msgid ""
+"Instead of a single fragment per packet, a more efficient\n"
+"strategy may be to bundle multiple message fragments into the same "
+"packet,\n"
+"so long as it doesn't exceed the MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:623
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:629
+msgid ""
+"Why are introduction keys the same as the router hash, should it be "
+"changed, would there be any benefit?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:633
+msgid "Capacities appear to be unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:637
+msgid ""
+"Signed-on times in SessionCreated and SessionConfirmed appear to be "
+"unused or unverified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:642
+msgid "Implementation Diagram"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:643
+msgid ""
+"This diagram\n"
+"should accurately reflect the current implementation, however there may "
+"be small differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:651
+msgid "Now on the SSU specification page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:2
+msgid "Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:3
+msgid "October 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:7
+msgid "This page documents the current tunnel implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:9
+msgid "Tunnel overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:11
+msgid ""
+"Within I2P, messages are passed in one direction through a virtual\n"
+"tunnel of peers, using whatever means are available to pass the \n"
+"message on to the next hop. Messages arrive at the tunnel's \n"
+"gateway, get bundled up and/or fragmented into fixed-size tunnel "
+"messages, \n"
+"and are forwarded on to the next hop in the tunnel, which processes and "
+"verifies\n"
+"the validity of the message and sends it on to the next hop, and so on, "
+"until\n"
+"it reaches the tunnel endpoint. That endpoint takes the messages\n"
+"bundled up by the gateway and forwards them as instructed - either\n"
+"to another router, to another tunnel on another router, or locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:23
+msgid ""
+"Tunnels all work the same, but can be segmented into two different\n"
+"groups - inbound tunnels and outbound tunnels. The inbound tunnels\n"
+"have an untrusted gateway which passes messages down towards the \n"
+"tunnel creator, which serves as the tunnel endpoint. For outbound \n"
+"tunnels, the tunnel creator serves as the gateway, passing messages\n"
+"out to the remote endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:32
+msgid ""
+"The tunnel's creator selects exactly which peers will participate\n"
+"in the tunnel, and provides each with the necessary configuration\n"
+"data. They may have any number of hops.\n"
+"It is the intent to make\n"
+"it hard for either participants or third parties to determine the length "
+"of \n"
+"a tunnel, or even for colluding participants to determine whether they "
+"are a\n"
+"part of the same tunnel at all (barring the situation where colluding "
+"peers are\n"
+"next to each other in the tunnel)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:43
+msgid ""
+"In practice, a series of tunnel pools are used for different\n"
+"purposes - each local client destination has its own set of inbound\n"
+"tunnels and outbound tunnels, configured to meet its anonymity and\n"
+"performance needs. In addition, the router itself maintains a series\n"
+"of pools for participating in the network database and for managing\n"
+"the tunnels themselves."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:52
+msgid ""
+"I2P is an inherently packet switched network, even with these \n"
+"tunnels, allowing it to take advantage of multiple tunnels running \n"
+"in parallel, increasing resilience and balancing load. Outside of\n"
+"the core I2P layer, there is an optional end to end streaming library \n"
+"available for client applications, exposing TCP-esque operation,\n"
+"including message reordering, retransmission, congestion control, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:61
+#, python-format
+msgid ""
+"An overview of I2P tunnel terminology is\n"
+"on the tunnel overview page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:66
+msgid "Tunnel Operation (Message Processing)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:69
+#, python-format
+msgid ""
+"After a tunnel is built, I2NP messages are "
+"processed and passed through it.\n"
+"Tunnel operation has four distinct processes, taken on by various \n"
+"peers in the tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:75
+msgid ""
+"First, the tunnel gateway accumulates a number\n"
+"of I2NP messages and preprocesses them into tunnel messages for\n"
+"delivery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:80
+msgid ""
+"Next, that gateway encrypts that preprocessed data, then\n"
+"forwards it to the first hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:84
+msgid ""
+"That peer, and subsequent tunnel \n"
+"participants, unwrap a layer of the encryption, verifying that it isn't\n"
+"a duplicate, then forward it on to the next peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:89
+msgid ""
+"Eventually, the tunnel messages arrive at the endpoint where the I2NP "
+"messages\n"
+"originally bundled by the gateway are reassembled and forwarded on as \n"
+"requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:96
+msgid ""
+"Intermediate tunnel participants do not know whether they are in an\n"
+"inbound or an outbound tunnel; they always \"encrypt\" for the next hop.\n"
+"Therefore, we take advantage of symmetric AES encryption\n"
+"to \"decrypt\" at the outbound tunnel gateway,\n"
+"so that the plaintext is revealed at the outbound endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:110
+msgid "Role"
+msgstr "Roll"
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:111
+msgid "Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:112
+msgid "Encryption Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:113
+msgid "Postprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:117
+msgid "Outbound Gateway (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:141
+msgid "Fragment, Batch, and Pad"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:119
+msgid "Iteratively encrypt (using decryption operations)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:120
+#: i2p2www/pages/site/docs/tunnels/implementation.html:127
+#: i2p2www/pages/site/docs/tunnels/implementation.html:143
+#: i2p2www/pages/site/docs/tunnels/implementation.html:150
+msgid "Forward to next hop"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:124
+#: i2p2www/pages/site/docs/tunnels/implementation.html:147
+msgid "Participant"
+msgstr "Osaleja"
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:126
+msgid "Decrypt (using an encryption operation)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:133
+msgid "Decrypt (using an encryption operation) to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:134
+msgid "Reassemble Fragments, Forward as instructed to Inbound Gateway or Router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:142
+#: i2p2www/pages/site/docs/tunnels/implementation.html:149
+msgid "Encrypt"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:154
+msgid "Inbound Endpoint (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:156
+msgid "Iteratively decrypt to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:157
+msgid "Reassemble Fragments, Receive data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:163
+msgid "Gateway Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:164
+msgid "Message Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:166
+#, python-format
+msgid ""
+"A tunnel gateway's function is to fragment and pack\n"
+"I2NP messages into fixed-size\n"
+"tunnel messages\n"
+"and encrypt the tunnel messages.\n"
+"Tunnel messages contain the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:174
+msgid "A 4 byte Tunnel ID"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:175
+msgid "A 16 byte IV (initialization vector)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:176
+msgid "A checksum"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:177
+msgid "Padding, if necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:178
+msgid "One or more { delivery instruction, I2NP message fragment } pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:181
+msgid ""
+"Tunnel IDs are 4 byte numbers used at each hop - participants know what\n"
+"tunnel ID to listen for messages with and what tunnel ID they should be "
+"forwarded\n"
+"on as to the next hop, and each hop chooses the tunnel ID which they "
+"receive messages\n"
+"on. Tunnels themselves are short-lived (10 minutes).\n"
+"Even if subsequent tunnels are built using the same sequence of \n"
+"peers, each hop's tunnel ID will change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:190
+msgid ""
+"To prevent adversaries from tagging the messages along the path by "
+"adjusting\n"
+"the message size, all tunnel messages are a fixed 1024 bytes in size. To"
+" accommodate \n"
+"larger I2NP messages as well as to support smaller ones more efficiently,"
+" the\n"
+"gateway splits up the larger I2NP messages into fragments contained "
+"within each\n"
+"tunnel message. The endpoint will attempt to rebuild the I2NP message "
+"from the\n"
+"fragments for a short period of time, but will discard them as necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:199
+#, python-format
+msgid ""
+"Details are in the\n"
+"tunnel message specification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:205
+msgid "Gateway Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:207
+msgid ""
+"After the preprocessing of messages into a padded payload, the gateway "
+"builds\n"
+"a random 16 byte IV value, iteratively encrypting it and the tunnel "
+"message as\n"
+"necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel "
+"message} to the next hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:213
+msgid ""
+"How encryption at the gateway is done depends on whether the tunnel is an"
+"\n"
+"inbound or an outbound tunnel. For inbound tunnels, they simply select a"
+" random\n"
+"IV, postprocessing and updating it to generate the IV for the gateway and"
+" using \n"
+"that IV along side their own layer key to encrypt the preprocessed data."
+" For outbound \n"
+"tunnels they must iteratively decrypt the (unencrypted) IV and "
+"preprocessed \n"
+"data with the IV and layer keys for all hops in the tunnel. The result "
+"of the outbound\n"
+"tunnel encryption is that when each peer encrypts it, the endpoint will "
+"recover \n"
+"the initial preprocessed data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:225
+msgid "Participant Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:227
+msgid ""
+"When a peer receives a tunnel message, it checks that the message came "
+"from\n"
+"the same previous hop as before (initialized when the first message comes"
+" through\n"
+"the tunnel). If the previous peer is a different router, or if the "
+"message has\n"
+"already been seen, the message is dropped. The participant then encrypts"
+" the \n"
+"received IV with AES256/ECB using their IV key to determine the current "
+"IV, uses \n"
+"that IV with the participant's layer key to encrypt the data, encrypts "
+"the \n"
+"current IV with AES256/ECB using their IV key again, then forwards the "
+"tuple \n"
+"{nextTunnelId, nextIV, encryptedData} to the next hop. This double "
+"encryption\n"
+"of the IV (both before and after use) help address a certain class of\n"
+"confirmation attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:243
+msgid ""
+"Duplicate message detection is handled by a decaying Bloom filter on "
+"message\n"
+"IVs. Each router maintains a single Bloom filter to contain the XOR of "
+"the IV and\n"
+"the first block of the message received for all of the tunnels it is "
+"participating\n"
+"in, modified to drop seen entries after 10-20 minutes (when the tunnels "
+"will have\n"
+"expired). The size of the bloom filter and the parameters used are "
+"sufficient to\n"
+"more than saturate the router's network connection with a negligible "
+"chance of \n"
+"false positive. The unique value fed into the Bloom filter is the XOR of"
+" the IV \n"
+"and the first block so as to prevent nonsequential colluding peers in the"
+" tunnel \n"
+"from tagging a message by resending it with the IV and first block "
+"switched."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:256
+msgid "Endpoint Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:258
+msgid ""
+"After receiving and validating a tunnel message at the last hop in the "
+"tunnel,\n"
+"how the endpoint recovers the data encoded by the gateway depends upon "
+"whether \n"
+"the tunnel is an inbound or an outbound tunnel. For outbound tunnels, "
+"the \n"
+"endpoint encrypts the message with its layer key just like any other "
+"participant, \n"
+"exposing the preprocessed data. For inbound tunnels, the endpoint is "
+"also the \n"
+"tunnel creator so they can merely iteratively decrypt the IV and message,"
+" using the \n"
+"layer and IV keys of each step in reverse order."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:268
+msgid ""
+"At this point, the tunnel endpoint has the preprocessed data sent by the "
+"gateway,\n"
+"which it may then parse out into the included I2NP messages and forwards "
+"them as\n"
+"requested in their delivery instructions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:275
+msgid "Tunnel Building"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:277
+msgid ""
+"When building a tunnel, the creator must send a request with the "
+"necessary\n"
+"configuration data to each of the hops and wait for all of them to agree "
+"before\n"
+"enabling the tunnel. The requests are encrypted so that only the peers "
+"who need\n"
+"to know a piece of information (such as the tunnel layer or IV key) has "
+"that\n"
+"data. In addition, only the tunnel creator will have access to the "
+"peer's\n"
+"reply. There are three important dimensions to keep in mind when "
+"producing\n"
+"the tunnels: what peers are used (and where), how the requests are sent "
+"(and \n"
+"replies received), and how they are maintained."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:291
+msgid ""
+"Beyond the two types of tunnels - inbound and outbound - there are two "
+"styles\n"
+"of peer selection used for different tunnels - exploratory and client.\n"
+"Exploratory tunnels are used for both network database maintenance and "
+"tunnel\n"
+"maintenance, while client tunnels are used for end to end client messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:299
+msgid "Exploratory tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:301
+msgid ""
+"Exploratory tunnels are built out of a random selection of peers from a "
+"subset\n"
+"of the network. The particular subset varies on the local router and on "
+"what their\n"
+"tunnel routing needs are. In general, the exploratory tunnels are built "
+"out of\n"
+"randomly selected peers who are in the peer's \"not failing but active\" "
+"profile\n"
+"category. The secondary purpose of the tunnels, beyond merely tunnel "
+"routing,\n"
+"is to find underutilized high capacity peers so that they can be promoted"
+" for\n"
+"use in client tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:311
+#, python-format
+msgid ""
+"Exploratory peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:317
+msgid "Client tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:319
+msgid ""
+"Client tunnels are built with a more stringent set of requirements - the "
+"local\n"
+"router will select peers out of its \"fast and high capacity\" profile "
+"category so\n"
+"that performance and reliability will meet the needs of the client "
+"application.\n"
+"However, there are several important details beyond that basic selection "
+"that \n"
+"should be adhered to, depending upon the client's anonymity needs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:327
+#, python-format
+msgid ""
+"Client peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:332
+msgid "Peer Ordering within Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:334
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to deal with the\n"
+"predecessor attack\n"
+"(2008 update)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:341
+msgid ""
+"To frustrate the predecessor \n"
+"attack, the tunnel selection keeps the peers selected in a strict order -"
+"\n"
+"if A, B, and C are in a tunnel for a particular tunnel pool, the hop "
+"after A is always B, and the hop after\n"
+"B is always C."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:348
+msgid ""
+"Ordering is implemented by generating a random 32-byte key for each\n"
+"tunnel pool at startup.\n"
+"Peers should not be able to guess the ordering, or an attacker could\n"
+"craft two router hashes far apart to maximize the chance of being at both"
+"\n"
+"ends of a tunnel.\n"
+"Peers are sorted by XOR distance of the\n"
+"SHA256 Hash of (the peer's hash concatenated with the random key) from "
+"the random key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:363
+msgid ""
+"Because each tunnel pool uses a different random key, ordering is "
+"consistent\n"
+"within a single pool but not between different pools.\n"
+"New keys are generated at each router restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:370
+msgid "Request delivery"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:372
+#, python-format
+msgid ""
+"A multi-hop tunnel is built using a single build message which is "
+"repeatedly\n"
+"decrypted and forwarded. In the terminology of\n"
+"Hashing it out in Public,\n"
+"this is \"non-interactive\" telescopic tunnel building."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:379
+#, python-format
+msgid ""
+"This tunnel request preparation, delivery, and response method is\n"
+"designed to reduce the number of\n"
+"predecessors exposed, cuts the number of messages transmitted, verifies "
+"proper\n"
+"connectivity, and avoids the message counting attack of traditional "
+"telescopic\n"
+"tunnel creation.\n"
+"(This method, which sends messages to extend a tunnel through the "
+"already-established\n"
+"part of the tunnel, is termed \"interactive\" telescopic tunnel building "
+"in\n"
+"the \"Hashing it out\" paper.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:390
+#, python-format
+msgid ""
+"The details of tunnel request and response messages, and their "
+"encryption,\n"
+"are specified here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:395
+msgid ""
+"Peers may reject tunnel creation requests for a variety of reasons, "
+"though\n"
+"a series of four increasingly severe rejections are known: probabilistic "
+"rejection\n"
+"(due to approaching the router's capacity, or in response to a flood of "
+"requests), \n"
+"transient overload, bandwidth overload, and critical failure. When "
+"received, \n"
+"those four are interpreted by the tunnel creator to help adjust their "
+"profile of\n"
+"the router in question."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:404
+#, python-format
+msgid ""
+"For more information on peer profiling, see the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:410
+msgid "Tunnel Pools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:412
+#, python-format
+msgid ""
+"To allow efficient operation, the router maintains a series of tunnel "
+"pools,\n"
+"each managing a group of tunnels used for a specific purpose with their "
+"own\n"
+"configuration. When a tunnel is needed for that purpose, the router "
+"selects one\n"
+"out of the appropriate pool at random. Overall, there are two "
+"exploratory tunnel\n"
+"pools - one inbound and one outbound - each using the router's default "
+"configuration.\n"
+"In addition, there is a pair of pools for each local destination -\n"
+"one inbound and one outbound tunnel pool. Those pools use the "
+"configuration specified\n"
+"when the local destination connects to the router via I2CP, or the router's defaults if\n"
+"not specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:424
+#, python-format
+msgid ""
+"Each pool has within its configuration a few key settings, defining how "
+"many\n"
+"tunnels to keep active, how many backup tunnels to maintain in case of "
+"failure,\n"
+"how long the tunnels should be, whether those\n"
+"lengths should be randomized, as \n"
+"well as any of the other settings allowed when configuring individual "
+"tunnels.\n"
+"Configuration options are specified on the I2CP "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:434
+msgid "Tunnel Lengths and Defaults"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:436
+msgid "On the tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:438
+msgid "Anticipatory Build Strategy and Priority"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:440
+msgid ""
+"Tunnel building is expensive, and tunnels expire a fixed time after they "
+"are built.\n"
+"However, when a pool that runs out of tunnels, the Destination is "
+"essentially dead.\n"
+"In addition, tunnel build success rate may vary greatly with both local "
+"and global\n"
+"network conditions.\n"
+"Therefore, it is important to maintain an anticipatory, adaptive build "
+"strategy\n"
+"to ensure that new tunnels are successfully built before they are needed,"
+"\n"
+"without building an excess of tunnels, building them too soon,\n"
+"or consuming too much CPU or bandwidth creating and sending the encrypted"
+" build messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:451
+msgid ""
+"For each tuple {exploratory/client, in/out, length, length variance}\n"
+"the router maintains statistics on the time required for a successful\n"
+"tunnel build.\n"
+"Using these statistics, it calculates how long before a tunnel's "
+"expiration\n"
+"it should start attempting to build a replacement.\n"
+"As the expiration time approaches without a successful replacement,\n"
+"it starts multiple build attempts in parallel, and then\n"
+"will increase the number of parallel attempts if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:462
+msgid ""
+"To cap bandwidth and CPU usage,\n"
+"the router also limits the maximum number of build attempts outstanding\n"
+"across all pools.\n"
+"Critical builds (those for exploratory tunnels, and for pools that have\n"
+"run out of tunnels) are prioritized."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:471
+msgid "Tunnel Message Throttling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:473
+msgid ""
+"Even though the tunnels within I2P bear a resemblance to a circuit "
+"switched\n"
+"network, everything within I2P is strictly message based - tunnels are "
+"merely\n"
+"accounting tricks to help organize the delivery of messages. No "
+"assumptions are\n"
+"made regarding reliability or ordering of messages, and retransmissions "
+"are left\n"
+"to higher levels (e.g. I2P's client layer streaming library). This "
+"allows I2P\n"
+"to take advantage of throttling techniques available to both packet "
+"switched and\n"
+"circuit switched networks. For instance, each router may keep track of "
+"the \n"
+"moving average of how much data each tunnel is using, combine that with "
+"all of \n"
+"the averages used by other tunnels the router is participating in, and be"
+" able\n"
+"to accept or reject additional tunnel participation requests based on its"
+" \n"
+"capacity and utilization. On the other hand, each router can simply drop"
+" \n"
+"messages that are beyond its capacity, exploiting the research used on "
+"the \n"
+"normal Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:489
+msgid ""
+"In the current implementation, routers implement a\n"
+"weighted random early discard (WRED) strategy.\n"
+"For all participating routers (internal participant, inbound gateway, and"
+" outbound endpoint),\n"
+"the router will start randomly dropping a portion of messages as the\n"
+"bandwidth limits are approached.\n"
+"As traffic gets closer to, or exceeds, the limits, more messages are "
+"dropped.\n"
+"For an internal participant, all messages are fragmented and padded and "
+"therefore are the same size.\n"
+"At the inbound gateway and outbound endpoint, however, the dropping "
+"decision is made\n"
+"on the full (coalesced) message, and the message size is taken into "
+"account.\n"
+"Larger messages are more likely to be dropped.\n"
+"Also, messages are more likely to be dropped at the outbound endpoint "
+"than the inbound gateway,\n"
+"as those messages are not as \"far along\" in their journey and thus the "
+"network cost of\n"
+"dropping those messages is lower."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:507
+msgid "Mixing/batching"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:509
+msgid ""
+"What strategies could be used at the gateway and at each hop for "
+"delaying,\n"
+"reordering, rerouting, or padding messages? To what extent should this "
+"be done\n"
+"automatically, how much should be configured as a per tunnel or per hop "
+"setting,\n"
+"and how should the tunnel's creator (and in turn, user) control this "
+"operation?\n"
+"All of this is left as unknown, to be worked out for a distant future "
+"release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:518
+msgid "Padding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:519
+msgid ""
+"The padding strategies can be used on a variety of levels, addressing the"
+"\n"
+"exposure of message size information to different adversaries.\n"
+"The current fixed tunnel message size is 1024 bytes. Within this "
+"however, the fragmented\n"
+"messages themselves are not padded by the tunnel at all, though for end "
+"to end \n"
+"messages, they may be padded as part of the garlic wrapping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:529
+msgid ""
+"WRED strategies have a significant impact on end-to-end performance,\n"
+"and prevention of network congestion collapse.\n"
+"The current WRED strategy should be carefully evaluated and improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:2
+msgid "Old Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:5
+#, python-format
+msgid ""
+"Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see here for the current implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:3
+msgid "November 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:7
+msgid ""
+"This page describes the origins and design of I2P's unidirectional "
+"tunnels.\n"
+"For further information see:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:13
+msgid "Tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:19
+msgid "Tunnel design discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:21
+msgid "Peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:23
+msgid "Meeting 125 (~13:12-13:30)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:28
+msgid "Review"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:30
+msgid ""
+"While we aren't aware of any published research on the advantages of \n"
+"unidirecdtional tunnels,\n"
+"they appear to make it harder to detect a \n"
+"request/response pattern, which is quite possible to detect over a \n"
+"bidirectional tunnel.\n"
+"Several apps and protocols, notably HTTP,\n"
+"do transfer data in such manner. Having the traffic follow the same \n"
+"route to its destination and back could make it easier for an \n"
+"attacker who has only timing and traffic volume data to infer the path a"
+" \n"
+"tunnel is taking.\n"
+"Having the response come back along a different path arguably \n"
+"makes it harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:45
+msgid ""
+"When dealing with \n"
+"an internal adversary or most external adversaries, I2P's undirectional "
+"tunnels\n"
+"expose half as much traffic data than would be exposed with bidirectional"
+" circuits\n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:55
+msgid ""
+"The strategy of using two separate tunnels for inbound and outbound\n"
+"communication is not the only technique available, and it does have "
+"anonymity\n"
+"implications. On the positive side, by using separate tunnels it lessens"
+" the\n"
+"traffic data exposed for analysis to participants in a tunnel - for "
+"instance,\n"
+"peers in an outbound tunnel from a web browser would only see the traffic"
+" of\n"
+"an HTTP GET, while the peers in an inbound tunnel would see the payload \n"
+"delivered along the tunnel. With bidirectional tunnels, all participants"
+" would\n"
+"have access to the fact that e.g. 1KB was sent in one direction, then "
+"100KB\n"
+"in the other. On the negative side, using unidirectional tunnels means "
+"that\n"
+"there are two sets of peers which need to be profiled and accounted for, "
+"and\n"
+"additional care must be taken to address the increased speed of "
+"predecessor\n"
+"attacks. The tunnel pooling and building process\n"
+"(peer selection and ordering strategies)\n"
+"should minimize the worries of the predecessor attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:73
+msgid "Anonymity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:75
+#, python-format
+msgid ""
+"A recent paper by Hermann and Grothoff\n"
+"declared that I2P's unidirectional tunnels \"seems to be a bad design "
+"decision\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:80
+msgid ""
+"The paper's main point is that\n"
+"deanonymizations on unidirectional tunnels take a longer time, which is "
+"an \n"
+"advantage, but that an attacker can be more certain in the unidirectional"
+" case. \n"
+"Therefore, the paper claims it isn't an advantage at all, but a "
+"disadvantage, at least\n"
+"with long-living eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:88
+msgid ""
+"This conclusion is not fully supported by the paper. Unidirectional "
+"tunnels clearly \n"
+"mitigate other attacks and it's not clear how to trade off the risk of "
+"the \n"
+"attack in the paper\n"
+"with attacks on a bidirectional tunnel architecture."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:95
+msgid ""
+"This conclusion is based on an arbitrary certainty vs. time weighting \n"
+"(tradeoff) that may not be applicable in all cases. For \n"
+"example, somebody could make a list of possible IPs then issue subpoenas "
+"to \n"
+"each. Or the attacker could DDoS each in turn and via a simple \n"
+"intersection attack see if the eepsite goes down or is slowed down. So "
+"close \n"
+"may be good enough, or time may be more important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:104
+msgid ""
+"The conclusion is based on a specific weighting of the importance of "
+"certainty \n"
+"vs. time, and that weighting may be wrong, and it's definitely debatable,"
+" \n"
+"especially in a real world with subpoenas, search warrants, and other "
+"methods \n"
+"available for final confirmation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:111
+msgid ""
+"A full analysis of the tradeoffs of unidirectional vs. bidirectional \n"
+"tunnels is clearly outside the scope of the paper, and has not been done"
+" \n"
+"elsewhere. For example, how does this attack compare to the numerous "
+"possible \n"
+"timing attacks published about onion-routed networks? Clearly the authors"
+" have not\n"
+"done that analysis, if it's even possible to do it\n"
+"effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:120
+msgid ""
+"Tor uses bidirectional tunnels and has had a lot of academic review. I2P"
+" \n"
+"uses unidirectional tunnels and has had very little review. Does the lack"
+" of a \n"
+"research paper defending unidirectional tunnels mean that it is a poor "
+"design \n"
+"choice, or just that it needs more study? Timing attacks and \n"
+"distributed attacks are difficult to defend against in both I2P and Tor. "
+"The \n"
+"design intent (see references above) was that unidirectional tunnels are "
+"more \n"
+"resistant to timing attacks. However, the paper presents a somewhat "
+"different type of timing \n"
+"attack. Is this attack, innovative as it is, sufficient to label I2P's \n"
+"tunnel architecture (and thus I2P as a whole) a \"bad design\", and by \n"
+"implication clearly inferior to Tor, or is it just a design alternative "
+"that \n"
+"clearly needs further investigation and analysis? There are several other"
+" reasons \n"
+"to consider I2P currently inferior to Tor and other projects (small "
+"network \n"
+"size, lack of funding, lack of review) but is unidirectional tunnels "
+"really a \n"
+"reason?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:137
+msgid ""
+"In summary, \"bad design decision\" is apparently (since the paper does\n"
+"not label bidirectional tunnels \"bad\") shorthand for \"unidirectional \n"
+"tunnels are unequivocally inferior to bidirectional tunnels\", yet this \n"
+"conclusion is not supported by the paper."
+msgstr ""
+
diff --git a/i2p2www/translations/sk/LC_MESSAGES/docs.po b/i2p2www/translations/sk/LC_MESSAGES/docs.po
new file mode 100644
index 00000000..474640f2
--- /dev/null
+++ b/i2p2www/translations/sk/LC_MESSAGES/docs.po
@@ -0,0 +1,16124 @@
+# Slovak translations for I2P.
+# Copyright (C) 2018 ORGANIZATION
+# This file is distributed under the same license as the I2P project.
+#
+# Translators:
+# ondy, 2016
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: http://trac.i2p2.de\n"
+"POT-Creation-Date: 2018-08-24 11:47+0000\n"
+"PO-Revision-Date: 2018-08-24 11:51+0000\n"
+"Last-Translator: zzzi2p\n"
+"Language-Team: Slovak (http://www.transifex.com/otf/I2P/language/sk/)\n"
+"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 "
+"&& n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.3\n"
+
+#: i2p2www/pages/site/docs/index.html:2 i2p2www/pages/site/docs/index.html:23
+msgid "Index to Technical Documentation"
+msgstr "Index pre Technickú dokumentáciu"
+
+#: i2p2www/pages/site/docs/index.html:3 i2p2www/pages/site/docs/naming.html:3
+#: i2p2www/pages/site/docs/transport/index.html:3
+#: i2p2www/pages/site/docs/transport/ntcp.html:3
+#: i2p2www/pages/site/docs/transport/ssu.html:3
+msgid "June 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:6
+msgid "Following is an index to the technical documentation for I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:10
+msgid ""
+"This index is ordered from the highest to lowest layers.\n"
+"The higher layers are for \"clients\" or applications;\n"
+"the lower layers are inside the router itself.\n"
+"The interface between applications and the router is the I2CP (I2P "
+"Control Protocol) API."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:17
+#, python-format
+msgid ""
+"The I2P Project is committed to maintaining accurate, current "
+"documentation.\n"
+"If you find any inaccuracies in the documents linked below, please\n"
+"enter a ticket identifying the problem."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:25 i2p2www/pages/site/docs/naming.html:6
+#: i2p2www/pages/site/docs/api/bob.html:42
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:7
+#: i2p2www/pages/site/docs/api/streaming.html:6
+#: i2p2www/pages/site/docs/applications/embedding.html:7
+#: i2p2www/pages/site/docs/applications/managed-clients.html:7
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:6
+#: i2p2www/pages/site/docs/how/network-database.html:6
+#: i2p2www/pages/site/docs/how/peer-selection.html:6
+#: i2p2www/pages/site/docs/how/tech-intro.html:9
+#: i2p2www/pages/site/docs/how/tech-intro.html:93
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:6
+#: i2p2www/pages/site/docs/tunnels/implementation.html:67
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:6
+msgid "Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:27
+msgid "Technical Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:28
+msgid "A Less-Technical Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:29
+msgid "Threat model and analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:30
+msgid "Comparisons to other anonymous networks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:31
+msgid "Specifications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:32
+msgid "Protocol stack chart"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:33
+msgid "Papers on I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:34
+msgid "Presentations, articles, tutorials, videos, and interviews"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:35
+#, python-format
+msgid ""
+"Invisible Internet Project (I2P) Project Overview"
+" August 28, 2003 (pdf)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:38
+msgid "Application-Layer Topics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:41 i2p2www/pages/site/docs/naming.html:2
+msgid "Naming and Addressbook"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:42
+msgid "Plugins Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:43
+msgid "Plugin Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:44
+#: i2p2www/pages/site/docs/applications/managed-clients.html:2
+#: i2p2www/pages/site/docs/applications/managed-clients.html:20
+msgid "Managed Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:45 i2p2www/pages/site/docs/index.html:231
+msgid "Embedding the router in your application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:46
+#: i2p2www/pages/site/docs/applications/bittorrent.html:2
+msgid "Bittorrent over I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:47
+msgid "I2PControl Plugin API"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:48
+msgid "hostsdb.blockfile Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:49 i2p2www/pages/site/docs/index.html:197
+msgid "Configuration File Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:52
+msgid "Application Layer API and Protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:53
+msgid ""
+"High-level, easy-to-use APIs for applications written in any language to "
+"send and receive data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:55
+msgid "Application Development Overview and Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:59
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:51
+msgid "I2PTunnel Configuration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:75
+msgid "SAM Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:77
+msgid "SAMv2 Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:79
+msgid "SAMv3 Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:81
+msgid "BOB Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:84
+msgid "End-to-End Transport API and Protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:85
+msgid ""
+"The end-to-end protocols used by clients for reliable and unreliable "
+"communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:87
+#: i2p2www/pages/site/docs/api/streaming.html:2
+msgid "Streaming Library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:89
+msgid "Streaming Protocol Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:91
+msgid "Streaming Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:93
+#: i2p2www/pages/site/docs/api/datagrams.html:2
+msgid "Datagrams"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:95
+msgid "Datagram Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:98
+msgid "Client-to-Router Interface API and Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:99
+msgid ""
+"The lowest-level API used for clients (applications) to send and receive "
+"traffic to a router.\n"
+"Traditionally used only by Java applications and higher-level APIs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:104
+msgid "I2CP - I2P Control Protocol / API overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:106
+msgid "I2CP Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:108
+msgid "I2CP API Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:110
+#: i2p2www/pages/site/docs/index.html:140
+msgid "Common data structures specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:112
+#: i2p2www/pages/site/docs/index.html:142
+msgid "Data Structures Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:115
+msgid "End-to-End Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:116
+msgid "How client messages are end-to-end encrypted by the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:118
+msgid "ElGamal/AES+SessionTag encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:119
+#: i2p2www/pages/site/docs/index.html:153
+msgid "ElGamal and AES cryptography details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:122
+#: i2p2www/pages/site/docs/how/tech-intro.html:11
+#: i2p2www/pages/site/docs/how/tech-intro.html:325
+msgid "Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:123
+msgid ""
+"Distributed storage and retrieval of information about routers and "
+"clients."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:125
+msgid "Network database overview, details, and threat analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:126
+msgid "Cryptographic hashes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:127
+msgid "Cryptographic signatures"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:128
+#: i2p2www/pages/site/docs/index.html:189
+msgid "Router reseed specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:131
+msgid "Router Message Protocol"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:132
+msgid ""
+"I2P is a message-oriented router. The messages sent between routers are "
+"defined by the I2NP protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:134
+msgid "I2NP - I2P Network Protocol Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:136
+msgid "I2NP Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:138
+msgid "I2NP Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:145
+#: i2p2www/pages/site/docs/how/tech-intro.html:10
+#: i2p2www/pages/site/docs/how/tech-intro.html:224
+msgid "Tunnels"
+msgstr "Tunely"
+
+#: i2p2www/pages/site/docs/index.html:146
+msgid ""
+"Selecting peers, requesting tunnels through those peers, and encrypting "
+"and routing messages through these tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:148
+msgid "Peer profiling and selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:149
+msgid "Tunnel routing overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:150
+msgid "Garlic routing and \"garlic\" terminology"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:151
+msgid "Tunnel building and encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:152
+msgid "ElGamal/AES"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:152
+msgid "for build request encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:154
+msgid "Tunnel building specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:155
+msgid "Low-level tunnel message specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:156
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:2
+msgid "Unidirectional Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:157
+#: i2p2www/pages/site/docs/how/peer-selection.html:299
+msgid "Peer Profiling and Selection in the I2P Anonymous Network"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:158
+msgid "2009 paper (pdf), not current but still generally accurate"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:161
+msgid "Transport Layer"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:162
+msgid "The protocols for direct (point-to-point) router to router communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:164
+msgid "Transport layer overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:166
+msgid "TCP-based transport overview and specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:168
+msgid "NTCP2 specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:170
+msgid "UDP-based transport overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:172
+msgid "SSU specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:174
+msgid "NTCP transport encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:176
+msgid "SSU transport encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:178
+msgid "Transport Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:180
+msgid "NTCP Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:182
+msgid "SSU Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:185
+msgid "Other Router Topics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:187
+msgid "Router software updates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:191
+msgid "Native BigInteger Library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:193
+msgid "Time synchronization and NTP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:195
+msgid "Performance"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:202
+msgid "Developer's Guides and Resources"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:204
+msgid "New Developer's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:206
+msgid "New Translator's Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:208
+msgid "Monotone Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:210
+msgid "Developer Guidelines"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:212
+msgid "Javadocs on the standard internet:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:213
+#: i2p2www/pages/site/docs/index.html:219
+#: i2p2www/pages/site/docs/index.html:221
+#: i2p2www/pages/site/docs/index.html:223
+#, python-format
+msgid "Server %(num)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:214
+#: i2p2www/pages/site/docs/index.html:227
+msgid ""
+"Note: always verify that javadocs are current by checking the release "
+"number."
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:216
+msgid "Javadocs inside I2P:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:229
+msgid "Proposals"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:233
+msgid "How to Set up a Reseed Server"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:235
+msgid "Ports used by I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:237
+msgid "Automatic updates to development builds inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:239
+msgid "Updating the wrapper manually"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:241
+msgid "User forum"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:243
+msgid "Developer forum inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:245
+msgid "Bug tracker"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:248
+msgid "Viewmtn inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:251
+msgid "I2P Source exported to GitHub"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:253
+msgid "I2P Source Git Repo inside I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:255
+msgid "Source translation at Transifex"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:257
+msgid "Roadmap"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:259
+msgid "To Do List"
+msgstr ""
+
+#: i2p2www/pages/site/docs/index.html:259
+msgid "not current"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:8
+msgid ""
+"I2P ships with a generic naming library and a base implementation \n"
+"designed to work off a local name to destination mapping, as well as an\n"
+"add-on application called the addressbook. \n"
+"I2P also supports Base32 hostnames similar to "
+"Tor's .onion addresses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:15
+msgid ""
+"The addressbook is a web-of-trust\n"
+"driven secure, distributed, and human readable naming system, sacrificing"
+" only\n"
+"the call for all human readable names to be globally unique by mandating "
+"only\n"
+"local uniqueness. While all messages in I2P are cryptographically "
+"addressed\n"
+"by their destination, different people can have local addressbook entries"
+" for\n"
+"\"Alice\" which refer to different destinations. People can still "
+"discover new\n"
+"names by importing published addressbooks of peers specified in their web"
+" of trust,\n"
+"by adding in the entries provided through a third party, or (if some "
+"people organize\n"
+"a series of published addressbooks using a first come first serve "
+"registration\n"
+"system) people can choose to treat these addressbooks as name servers, "
+"emulating\n"
+"traditional DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:29
+#, python-format
+msgid ""
+"NOTE: For the reasoning behind the I2P naming system, common arguments "
+"against it\n"
+"and possible alternatives see the naming"
+" discussion\n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:36
+msgid "Naming System Components"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:38
+msgid ""
+"There is no central naming authority in I2P.\n"
+"All hostnames are local."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:43
+msgid ""
+"The naming system is quite simple and most of it is implemented\n"
+"in applications external to the router, but bundled with\n"
+"the I2P distribution.\n"
+"The components are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:51
+msgid ""
+"The local naming service which does lookups\n"
+"and also handles Base32 hostnames."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:55
+msgid ""
+"The HTTP proxy which asks the router for "
+"lookups and points\n"
+"the user to remote jump services to assist with failed lookups."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:59
+msgid ""
+"HTTP host-add forms which allow users to "
+"add hosts to their local hosts.txt"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:62
+msgid ""
+"HTTP jump services which provide their own"
+" lookups and redirection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:65
+msgid ""
+"The addressbook application which merges "
+"external\n"
+"host lists, retrieved via HTTP, with the local list."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:69
+msgid ""
+"The SusiDNS application which is a simple web "
+"front-end\n"
+"for addressbook configuration and viewing of the local host lists."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:76
+msgid "Naming Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:78
+#, python-format
+msgid ""
+"All destinations in I2P are 516-byte (or longer) keys.\n"
+"(To be more precise, it is a 256-byte public key plus a 128-byte signing "
+"key\n"
+"plus a 3-or-more byte certificate, which in Base64 representation is 516 "
+"or more bytes.\n"
+"Non-null Certificates "
+"are in use now\n"
+"for signature type indication.\n"
+"Therefore, certificates in recently-generated destinations are more than "
+"3 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:87
+msgid ""
+"If an application (i2ptunnel or the HTTP proxy) wishes to access\n"
+"a destination by name, the router does a very simple local lookup\n"
+"to resolve that name."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:93
+msgid "Hosts.txt Naming Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:95
+msgid ""
+"The hosts.txt Naming Service does a simple linear search through\n"
+"text files. This naming service was the default until\n"
+"release 0.8.8 when it was replaced by the Blockfile Naming Service.\n"
+"The hosts.txt format had become too slow after the file grew to thousands"
+" of entries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:102
+#, python-format
+msgid ""
+"It does a linear search through three local files, in order, to\n"
+"look up host names and convert them to a 516-byte destination key.\n"
+"Each file is in a simple configuration file"
+" format, with hostname=base64, one per line.\n"
+"The files are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:114
+msgid "Blockfile Naming Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:116
+msgid ""
+"The Blockfile Naming Service stores multiple \"addressbooks\" in a single"
+"\n"
+"database file named hostsdb.blockfile.\n"
+"This Naming Service is the default since release 0.8.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:122
+#, python-format
+msgid ""
+"A blockfile is simply on-disk storage of multiple sorted maps (key-value "
+"pairs),\n"
+"implemented as skiplists.\n"
+"The blockfile format is specified on the Blockfile page.\n"
+"It provides fast Destination lookup in a compact format. While the "
+"blockfile overhead is substantial,\n"
+"the destinations are stored in binary rather than in Base 64 as in the "
+"hosts.txt format.\n"
+"In addition, the blockfile provides the capability of arbitrary metadata "
+"storage\n"
+"(such as added date, source, and comments) for each entry to implement "
+"advanced addressbook features.\n"
+"The blockfile storage requirement is a modest increase over the hosts.txt"
+" format, and the blockfile provides\n"
+"approximately 10x reduction in lookup times."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:134
+msgid ""
+"On creation, the naming service imports entries from the three files used"
+" by the hosts.txt Naming Service.\n"
+"The blockfile mimics the previous implementation by maintaining three "
+"maps that\n"
+"are searched in-order, named privatehosts.txt, userhosts.txt, and "
+"hosts.txt.\n"
+"It also maintains a reverse-lookup map to implement rapid reverse lookups."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:141
+msgid "Other Naming Service Facilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:143
+#, python-format
+msgid ""
+"The lookup is case-insensitive.\n"
+"The first match is used, and conflicts are not detected.\n"
+"There is no enforcement of naming rules in lookups.\n"
+"Lookups are cached for a few minutes.\n"
+"Base 32 resolution is described below.\n"
+"For a full description of the Naming Service API see the\n"
+"Naming Service Javadocs.\n"
+"This API was significantly expanded in release 0.8.7 to provide\n"
+"adds and removes, storage of arbitrary properties with the hostname,\n"
+"and other features."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:156
+msgid "Alternatives and Experimental Naming Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:158
+#, python-format
+msgid ""
+"The naming service is specified with the configuration property "
+"i2p.naming.impl=class.\n"
+"Other implementations are possible. For example,\n"
+"there is an experimental facility for real-time lookups (a la DNS) over "
+"the network within the router.\n"
+"For more information see the alternatives on the discussion"
+" page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:165
+msgid ""
+"The HTTP proxy does a lookup via the router for all hostnames ending in "
+"'.i2p'.\n"
+"Otherwise, it forwards the request to a configured HTTP outproxy.\n"
+"Thus, in practice, all HTTP (eepsite) hostnames must end in the pseudo-"
+"Top Level Domain '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:171
+#, python-format
+msgid ""
+"We have applied to reserve the .i2p TLD\n"
+"following the procedures specified in RFC "
+"6761."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:177
+msgid ""
+"If the router fails to resolve the hostname, the HTTP proxy returns\n"
+"an error page to the user with links to several \"jump\" services.\n"
+"See below for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:183
+msgid "Addressbook"
+msgstr "Adresár"
+
+#: i2p2www/pages/site/docs/naming.html:184
+msgid "Incoming Subscriptions and Merging"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:186
+msgid ""
+"The addressbook application periodically\n"
+"retrieves other users' hosts.txt files and merges\n"
+"them with the local hosts.txt, after several checks.\n"
+"Naming conflicts are resolved on a first-come first-served\n"
+"basis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:194
+msgid ""
+"Subscribing to another user's hosts.txt file involves\n"
+"giving them a certain amount of trust.\n"
+"You do not want them, for example, 'hijacking' a new site\n"
+"by quickly entering in their own key for a new site before\n"
+"passing the new host/key entry to you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:202
+msgid ""
+"For this reason, the only subscription configured by\n"
+"default is http://i2p-projekt.i2p/hosts.txt "
+"(http://udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p/hosts.txt)
,"
+" \n"
+"which contains a copy of the hosts.txt included\n"
+"in the I2P release.\n"
+"Users must configure additional subscriptions in their\n"
+"local addressbook application (via subscriptions.txt or SusiDNS)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:211
+msgid "Some other public addressbook subscription links:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:218
+msgid ""
+"The operators of these services may have various policies for listing "
+"hosts.\n"
+"Presence on this list does not imply endorsement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:223
+#: i2p2www/pages/site/docs/naming.html:235
+msgid "Naming Rules"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:224
+msgid ""
+"While there are hopefully not any technical limitations within I2P on "
+"host names,\n"
+"the addressbook enforces several restrictions on host names\n"
+"imported from subscriptions.\n"
+"It does this for basic typographical sanity and compatibility with "
+"browsers,\n"
+"and for security.\n"
+"The rules are essentially the same as those in RFC2396 Section 3.2.2.\n"
+"Any hostnames violating these rules may not be propagated\n"
+"to other routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:239
+msgid "Names are converted to lower case on import."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:243
+msgid ""
+"Names are checked for conflict with existing names in the existing "
+"userhosts.txt and hosts.txt\n"
+"(but not privatehosts.txt) after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:248
+msgid "Must contain only [a-z] [0-9] '.' and '-' after conversion to lower case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:252
+msgid "Must not start with '.' or '-'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:256
+msgid "Must end with '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:260
+msgid "67 characters maximum, including the '.i2p'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:264
+msgid "Must not contain '..'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:268
+msgid "Must not contain '.-' or '-.' (as of 0.6.1.33)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:272
+msgid "Must not contain '--' except in 'xn--' for IDN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:276
+msgid ""
+"Base32 hostnames (*.b32.i2p) are reserved for base 32 use and so are not "
+"allowed to be imported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:280
+msgid ""
+"Certain hostnames reserved for project use are not allowed\n"
+"(proxy.i2p, router.i2p, console.i2p, *.proxy.i2p, *.router.i2p, "
+"*.console.i2p, and others)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:285
+msgid "Keys are checked for base64 validity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:289
+msgid ""
+"Keys are checked for conflict with existing keys in hosts.txt (but not "
+"privatehosts.txt)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:293
+msgid "Minimum key length 516 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:297
+msgid "Maximum key length 616 bytes (to account for certs up to 100 bytes)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:302
+msgid ""
+"Any name received via subscription that passes all the checks is added "
+"via the local naming service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:306
+msgid ""
+"Note that the '.' symbols in a host name are of no significance,\n"
+"and do not denote any actual naming or trust hierarchy.\n"
+"If the name 'host.i2p' already exists, there is nothing\n"
+"to prevent anybody from adding a name 'a.host.i2p' to their hosts.txt,\n"
+"and this name can be imported by others' addressbook.\n"
+"Methods to deny subdomains to non-domain 'owners' (certificates?),\n"
+"and the desirability and feasibility of these methods,\n"
+"are topics for future discussion."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:317
+msgid ""
+"International Domain Names (IDN) also work in i2p (using punycode 'xn--' "
+"form).\n"
+"To see IDN .i2p domain names rendered correctly in Firefox's location "
+"bar,\n"
+"add 'network.IDN.whitelist.i2p (boolean) = true' in about:config."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:323
+msgid ""
+"As the addressbook application does not use privatehosts.txt at all, in "
+"practice\n"
+"this file is the only place where it is appropriate to place private "
+"aliases or\n"
+"\"pet names\" for sites already in hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:329
+msgid "Advanced Subscription Feed Format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:337
+msgid "Outgoing Subscriptions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:338
+msgid ""
+"Addressbook will publish the merged hosts.txt to a location\n"
+"(traditionally hosts.txt in the local eepsite's home directory) to be "
+"accessed by others\n"
+"for their subscriptions.\n"
+"This step is optional and is disabled by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:346
+msgid ""
+"The addressbook application, together with eepget, saves the Etag and/or "
+"Last-Modified\n"
+"information returned by the web server of the subscription.\n"
+"This greatly reduces the bandwidth required, as the web server will\n"
+"return a '304 Not Modified' on the next fetch if nothing has changed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:353
+msgid ""
+"However the entire hosts.txt is downloaded if it has changed.\n"
+"See below for discussion on this issue."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:358
+msgid ""
+"Hosts serving a static hosts.txt or an equivalent CGI application\n"
+"are strongly encouraged to deliver\n"
+"a Content-Length header, and either an Etag or Last-Modified header.\n"
+"Also ensure that the server delivers a '304 Not Modified' when "
+"appropriate.\n"
+"This will dramatically reduce the network bandwidth, and\n"
+"reduce chances of corruption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:367
+msgid "Host Add Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:368
+msgid ""
+"A host add service is a simple CGI application that takes a hostname and "
+"a Base64 key as parameters\n"
+"and adds that to its local hosts.txt.\n"
+"If other routers subscribe to that hosts.txt, the new hostname/key\n"
+"will be propagated through the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:375
+msgid ""
+"It is recommended that host add services impose, at a minimum, the "
+"restrictions imposed by the addressbook application listed above.\n"
+"Host add services may impose additional restrictions on hostnames and "
+"keys, for example:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:380
+msgid "A limit on number of 'subdomains'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:384
+msgid "Authorization for 'subdomains' through various methods."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:388
+msgid "Hashcash or signed certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:392
+msgid "Editorial review of host names and/or content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:396
+msgid "Categorization of hosts by content."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:400
+msgid "Reservation or rejection of certain host names."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:404
+msgid "Restrictions on the number of names registered in a given time period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:408
+msgid "Delays between registration and publication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:412
+msgid "Requirement that the host be up for verification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:416
+msgid "Expiration and/or revocation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:420
+msgid "IDN spoof rejection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:425
+msgid "Jump Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:426
+msgid ""
+"A jump service is a simple CGI application that takes a hostname as a "
+"parameter\n"
+"and returns a 301 redirect to the proper URL with a "
+"?i2paddresshelper=key
\n"
+"string appended.\n"
+"The HTTP proxy will interpret the appended string and\n"
+"use that key as the actual destination.\n"
+"In addition, the proxy will cache that key so the\n"
+"address helper is not necessary until restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:436
+msgid ""
+"Note that, like with subscriptions, using a jump service\n"
+"implies a certain amount of trust, as a jump service could maliciously\n"
+"redirect a user to an incorrect destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:442
+msgid ""
+"To provide the best service, a jump service should be subscribed to\n"
+"several hosts.txt providers so that its local host list is current."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:448
+msgid ""
+"SusiDNS is simply a web interface front-end to configuring addressbook "
+"subscriptions\n"
+"and accessing the four addressbook files.\n"
+"All the real work is done by the 'addressbook' application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:454
+msgid ""
+"Currently, there is little enforcement of addressbook naming rules within"
+" SusiDNS,\n"
+"so a user may enter hostnames locally that would be rejected by\n"
+"the addressbook subscription rules."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:460
+msgid "Base32 Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:461
+msgid ""
+"I2P supports Base32 hostnames similar to Tor's .onion addresses.\n"
+"Base32 addresses are much shorter and easier to handle than the\n"
+"full 516-character Base64 Destinations or addresshelpers.\n"
+"Example: "
+"ukeu3k5oycgaauneqgtnvselmt4yemvoilkln7jpvamvfx7dnkdq.b32.i2p
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:468
+#, python-format
+msgid ""
+"In Tor, the address is 16 characters (80 bits), or half of the SHA-1 "
+"hash.\n"
+"I2P uses 52 characters (256 bits) to represent the full SHA-256 hash.\n"
+"The form is {52 chars}.b32.i2p.\n"
+"Tor has recently published a\n"
+"proposal\n"
+"to convert to an identical format of {52 chars}.onion for their hidden "
+"services.\n"
+"Base32 is implemented in the naming service, which queries the\n"
+"router over I2CP to lookup the LeaseSet to get the full Destination.\n"
+"Base32 lookups will only be successful when the Destination is up and "
+"publishing\n"
+"a LeaseSet.\n"
+"Because resolution may require a network database lookup, it may take "
+"significantly\n"
+"longer than a local address book lookup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/naming.html:483
+msgid ""
+"Base32 addresses can be used in most places where hostnames or full "
+"destinations\n"
+"are used, however there are some exceptions where they may fail if the\n"
+"name does not immediately resolve. I2PTunnel will fail, for example, if\n"
+"the name does not resolve to a destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:2
+msgid "Plugins"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:3
+msgid "June 2012"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:6
+msgid "General Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:7
+msgid ""
+"I2P includes a plugin architecture\n"
+"to support easy development and installation of additional software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:12
+msgid ""
+"There are now plugins available that support distributed email, blogs, "
+"IRC\n"
+"clients, distributed file storage, wikis, and more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:17
+msgid "Benefits to i2p users and app developers:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:22
+msgid "Easy distribution of applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:26
+msgid ""
+"Allows innovation and use of additional libraries without worrying about\n"
+"increasing the size of i2pupdate.sud
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:31
+msgid ""
+"Support large or special-purpose applications that would never be bundled"
+"\n"
+"with the I2P installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:36
+msgid "Cryptographically signed and verified applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:40
+msgid "Automatic updates of applications, just like for the router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:44
+msgid ""
+"Separate initial install and update packages, if desired, for smaller "
+"update downloads"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:48
+msgid ""
+"One-click installation of applications. No more asking users to modify\n"
+"wrapper.config
or clients.config
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:53
+msgid "Isolate applications from the base $I2P
installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:57
+msgid ""
+"Automatic compatibility checking for I2P version, Java version, Jetty\n"
+"version, and previous installed application version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:62
+msgid "Automatic link addition in console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:66
+msgid ""
+"Automatic startup of application, including modifying classpath, without "
+"requiring a restart"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:70
+msgid "Automatic integration and startup of webapps into console Jetty instance"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:74
+#, python-format
+msgid ""
+"Facilitate creation of 'app stores' like the one at\n"
+"%(pluginsite)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:79
+msgid "One-click uninstall"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:83
+msgid "Language and theme packs for the console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:87
+msgid "Bring detailed application information to the router console"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:91
+msgid "Non-java applications also supported"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:97
+msgid "Required I2P version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:98
+msgid "0.7.12 or newer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:100
+msgid "Installation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:101
+msgid ""
+"To install and start a plugin, copy the .xpi2p
install link "
+"to\n"
+"the form at the bottom of\n"
+"configclients.jsp"
+" in\n"
+"your router console and click the \"install plugin\" button. After a"
+"\n"
+"plugin is installed and started, a link to the plugin will usually appear"
+" at\n"
+"the top of your summary bar."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:110
+msgid ""
+"To update a plugin to the latest version, just click the update button on"
+"\n"
+"configclients.jsp."
+"\n"
+"There is also a button to check if the plugin has a more recent version, "
+"as\n"
+"well as a button to check for updates for all plugins. Plugins will be "
+"checked\n"
+"for updates automatically when updating to a new I2P release (not "
+"including dev\n"
+"builds)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:120
+msgid "Development"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:121
+#, python-format
+msgid ""
+"See the latest plugin specification and "
+"the\n"
+"plugin forum on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:126
+#, python-format
+msgid ""
+"See also the sources for plugins developed by various people. Some "
+"plugins, such\n"
+"as snowman, were "
+"developed\n"
+"specifically as examples."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:132
+msgid ""
+"Developers wanted! Plugins are a great way to learn more about I2P"
+"\n"
+"or easily add some feature."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:137
+msgid "Getting Started"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:138
+#, python-format
+msgid ""
+"To create a plugin from an existing binary package you will need to get\n"
+"makeplugin.sh from the i2p.scripts branch in "
+"monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:144
+msgid "Known Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:145
+msgid ""
+"Note that the router's plugin architecture does NOT currently\n"
+"provide any additional security isolation or sandboxing of plugins."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:151
+msgid ""
+"Updates of a plugin with included jars (not wars) won't be recognized if\n"
+"the plugin was already run, as it requires class loader trickery to flush"
+" the\n"
+"class cache; a full router restart is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:157
+msgid "The stop button may be displayed even if there is nothing to stop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:161
+msgid ""
+"Plugins running in a separate JVM create a logs/
directory "
+"in\n"
+"$CWD
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:166
+msgid ""
+"No initial keys are present, except for those of jrandom and zzz (using "
+"the\n"
+"same keys as for router update), so the first key seen for a signer is\n"
+"automatically accepted—there is no signing key authority."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:172
+msgid ""
+"When deleting a plugin, the directory is not always deleted, especially "
+"on\n"
+"Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:177
+msgid ""
+"Installing a plugin requiring Java 1.6 on a Java 1.5 machine will result "
+"in a\n"
+"\"plugin is corrupt\" message if pack200 compression of the plugin file "
+"is used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:182
+msgid "Theme and translation plugins are untested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/plugins.html:186
+msgid "Disabling autostart doesn't always work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:2
+msgid "Ports Used by I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:3
+msgid "March 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:7
+msgid ""
+"These are the ports used or reserved by I2P, including those for known "
+"plugins,\n"
+"common alternates,\n"
+"and some typical related applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:13
+#, python-format
+msgid ""
+"Note that many of these are not enabled by default.\n"
+"There is more information in the FAQ.\n"
+"See also the documentation for individual plugins.\n"
+"Plugin authors please add any ports you use here.\n"
+"For new plugins, we recommend using the next available port\n"
+"in the 766x range."
+msgstr ""
+
+#: i2p2www/pages/site/docs/ports.html:56
+msgid "recommended spot for new plugins/applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:2
+msgid "Reseed Hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:3
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:3
+msgid "January 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:8
+msgid "About Reseed hosts"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:10
+msgid ""
+"Reseed hosts are needed to for bootstrapping, that is, providing the "
+"initial set of I2P nodes for your I2P node to talk to. Depending on the "
+"status of your node it may need to bootstrap every now and then if many "
+"of the nodes it knows of aren't contactable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:14
+msgid ""
+"Reseeding is done over an encrypted connection and all of the bootstrap "
+"information is signed by the reseed host you connect to, making it "
+"impossible for an unauthenticated source to provide you with false "
+"information."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:19
+msgid "Running a Reseed host"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:21
+msgid ""
+"The more reseed hosts that are run, the more resilient the I2P network "
+"becomes, and the harder it is to prevent users of I2P from connecting to "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:25
+msgid ""
+"There have also been cases where the reseed hosts we had, have been under"
+" heavy load due to botnet activities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:33
+msgid "Thank you"
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:35
+msgid ""
+"If you are running a reseed server, We would like to thank you for "
+"helping to\n"
+"make the I2P network stronger and more resilient than ever."
+msgstr ""
+
+#: i2p2www/pages/site/docs/reseed.html:41
+msgid "Thank you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:2
+msgid "BOB - Basic Open Bridge"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:3
+msgid "August 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:12
+msgid "Technical differences from SAM (for the better?)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:14
+msgid ""
+"BOB has separate command and data channels. \n"
+"One, an application command channel socket to router to configure.\n"
+"Two, the application data sockets to/from router that carry only data.\n"
+"The command channel is only needed for making or setting the initial\n"
+"destination key, and to set the destination key to port bindings. \n"
+"All connections run in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:23
+msgid ""
+"SAM has one connection that does everything, and you need to parse every "
+"packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:27
+msgid ""
+"BOB does not hold keypair values, nor does the router.\n"
+"Your application holds the keypair values. \n"
+"This is to reduce any extra complexity in the router code, it also adds "
+"to\n"
+"your privacy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:34
+msgid "SAM router stores every keypair you ever make."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:38
+msgid "Those are the important differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:44
+msgid "KEYS
= keypair public+private, these are BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:47
+msgid "KEY
= public key, also BASE64"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:50
+msgid ""
+"ERROR
as is implied returns the message \"ERROR "
+"\"+DESCRIPTION+\"\\n\"
, where the DESCRIPTION
is what"
+" went wrong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:53
+msgid ""
+"OK
returns \"OK\"
, and if data is to be "
+"returned, it is on the same line. OK
means the command is "
+"finished."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:56
+msgid ""
+"DATA
lines contain information that you requested. There may"
+" be multiple DATA
lines per request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:60
+msgid ""
+"NOTE: The help command is the ONLY command that has an exception "
+"to\n"
+"the rules... it can actually return nothing! This is intentional, since\n"
+"help is a HUMAN and not an APPLICATION command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:66
+msgid "Connection and Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:68
+msgid ""
+"All BOB status output is by lines. Lines may be \\n or \\r\\n terminated,"
+" depending on the system.\n"
+"On connection, BOB outputs two lines:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:78
+msgid "The current version is:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:82
+msgid ""
+"Note that previous versions used upper-case hex digits and did not "
+"conform to I2P versioning standards.\n"
+"It is recommended that subsequent versions use digits 0-9 only."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:87
+msgid "Version history"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:92
+msgid "Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:93
+msgid "I2P Router Version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:94
+msgid "Changes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:97
+msgid "current version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:100
+msgid "development versions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:104
+msgid "Commands"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:106
+msgid ""
+"PLEASE NOTE:\n"
+"For CURRENT details on the commands PLEASE use the built-in help command."
+" \n"
+"Just telnet to localhost 2827 and type help and you can get full "
+"documentation on each command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:112
+msgid ""
+"Commands never get obsoleted or changed, however new commands do get "
+"added from time to time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "COMMAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "OPERAND"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:117
+msgid "RETURNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:145
+msgid ""
+"Once set up, all TCP sockets can and will block as needed, and there is "
+"no need for any \n"
+"additional messages to/from the command channel. This allows the router "
+"to pace the\n"
+"stream without exploding with OOM like SAM does as it chokes on "
+"attempting to shove \n"
+"many streams in or out one socket -- that can't scale when you have alot "
+"of connections!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:152
+msgid ""
+"What is also nice about this particular interface is that writing "
+"anything to interface \n"
+"to it, is much much easier than SAM. There is no other processing to do "
+"after the set up.\n"
+"It's configuration is so simple, that very simple tools, such as nc "
+"(netcat) can be used \n"
+"to point to some application. The value there is that one could schedule "
+"up and down times \n"
+"for an application, and not have to change the application to do that, or"
+" to even have \n"
+"to stop that application. Instead, you can literally \"unplug\" the "
+"destination, and \n"
+"\"plug it in\" again. As long as the same IP/port addresses and "
+"destination keys are used \n"
+"when bringing the bridge up, the normal TCP application won't care, and "
+"won't notice.\n"
+"It will simply be fooled -- the destinations are not reachable, and that "
+"nothing is coming in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:164
+msgid "Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:166
+msgid ""
+"For the following example, we'll setup a very simple local loopback "
+"connection, \n"
+"with two destinations. Destination \"mouth\" will be the CHARGEN service "
+"from \n"
+"the INET superserver daemon. Destination \"ear\" will be a local port "
+"that you\n"
+"can telnet into, and watch the pretty ASCII test puke forth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:174
+msgid "EXAMPLE SESSION DIALOGUE -- simple telnet 127.0.0.1 2827 works"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:175
+msgid "Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:176
+msgid "BOB's Command response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "FROM"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "TO"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:178
+#: i2p2www/pages/site/docs/api/bob.html:192
+#: i2p2www/pages/site/docs/api/bob.html:212
+#: i2p2www/pages/site/docs/api/bob.html:322
+#: i2p2www/pages/site/docs/api/bob.html:334
+#: i2p2www/pages/site/docs/api/bob.html:349
+msgid "DIALOGUE"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:187
+msgid "MAKE NOTE OF THE ABOVE DESTINATION KEY, YOURS WILL BE DIFFERENT!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:201
+msgid ""
+"At this point, there was no error, a destination with a nickname of "
+"\"mouth\" \n"
+"is set up. When you contact the destination provided, you actually "
+"connect \n"
+"to the CHARGEN
service on 19/TCP
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:207
+msgid "Now for the other half, so that we can actually contact this destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:229
+msgid ""
+"Now all we need to do is telnet into 127.0.0.1, port 37337,\n"
+"send the destination key or host address from addressbook we want to "
+"contact.\n"
+"In this case, we want to contact \"mouth\", all we do is paste in the\n"
+"key and it goes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:236
+msgid ""
+"NOTE: The \"quit\" command in the command channel does NOT "
+"disconnect the tunnels like SAM."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:253
+msgid "After a few virtual miles of this spew, press Control-]
"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:265
+msgid "Here is what happened..."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:273
+msgid "You can connect to EEPSITES too!"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:306
+msgid ""
+"Pretty cool isn't it? Try some other well known EEPSITES if you like, "
+"nonexistent ones, \n"
+"etc, to get a feel for what kind of output to expect in different "
+"situations. \n"
+"For the most part, it is suggested that you ignore any of the error "
+"messages. \n"
+"They would be meaningless to the application, and are only presented for "
+"human debugging."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:313
+msgid "Let's put down our destinations now that we are all done with them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:317
+msgid "First, lets see what destination nicknames we have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:329
+msgid "Alright, there they are. First, let's remove \"mouth\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:343
+msgid ""
+"Now to remove \"ear\", note that this is what happens when you type too "
+"fast,\n"
+"and shows you what typical ERROR messages looks like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:362
+msgid ""
+"I won't bother to show an example of the receiver end of a bridge\n"
+"because it is very simple. There are two possible settings for it, and\n"
+"it is toggled with the \"quiet\" command."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:368
+msgid ""
+"The default is NOT quiet, and the first data to come into your\n"
+"listening socket is the destination that is making the contact. It is a\n"
+"single line consisting of the BASE64 address followed by a newline.\n"
+"Everything after that is for the application to actually consume."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:375
+msgid ""
+"In quiet mode, think of it as a regular Internet connection. No\n"
+"extra data comes in at all. It's just as if you are plain connected to\n"
+"the regular Internet. This mode allows a form of transparency much like\n"
+"is available on the router console tunnel settings pages, so that you\n"
+"can use BOB to point a destination at a web server, for example, and\n"
+"you would not have to modify the web server at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/bob.html:384
+msgid ""
+"The advantage with using BOB for this is as discussed\n"
+"previously. You could schedule random uptimes for the application,\n"
+"redirect to a different machine, etc. One use of this may be something\n"
+"like wanting to try to goof up router-to-destination upness guessing.\n"
+"You could stop and start the destination with a totally different\n"
+"process to make random up and down times on services. That way you\n"
+"would only be stopping the ability to contact such a service, and not\n"
+"have to bother shutting it down and restarting it. You could redirect\n"
+"and point to a different machine on your LAN while you do updates, or\n"
+"point to a set of backup machines depending on what is running, etc,\n"
+"etc. Only your imagination limits what you could do with BOB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:3
+#: i2p2www/pages/site/docs/protocol/index.html:3
+msgid "August 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:6
+msgid "Datagram Overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:7
+#, python-format
+msgid ""
+"Datagrams build upon the base I2CP to provide "
+"authenticated\n"
+"and repliable messages in a standard format. This lets applications "
+"reliably read\n"
+"the \"from\" address out of a datagram and know that the address really "
+"sent the\n"
+"message. This is necessary for some applications since the base I2P "
+"message is\n"
+"completely raw - it has no \"from\" address (unlike IP packets). In "
+"addition, the\n"
+"message and sender are authenticated by signing the payload."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:16
+#, python-format
+msgid ""
+"Datagrams, like streaming library packets,\n"
+"are an application-level construct.\n"
+"These protocols are independent of the low-level transports;\n"
+"the protocols are converted to I2NP messages by the router, and\n"
+"either protocol may be carried by either transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:25
+msgid "Application Guide"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:26
+#, python-format
+msgid ""
+"Applications written in Java may use the \n"
+"datagram API,\n"
+"while applications in other languages \n"
+"can use SAM's datagram support.\n"
+"There is also limited support in i2ptunnel in the SOCKS proxy,\n"
+"the 'streamr' tunnel types, and udpTunnel classes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:37
+msgid "Datagram Length"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:38
+msgid ""
+"The application designer should carefully consider the tradeoff of "
+"repliable vs. non-repliable\n"
+"datagrams. Also, the datagram size will affect reliability, due to tunnel"
+" fragmentation into 1KB\n"
+"tunnel messages. The more message fragments, the more likely that one of "
+"them will be dropped\n"
+"by an intermediate hop. Messages larger than a few KB are not "
+"recommended.\n"
+"Over about 10 KB, the delivery probablility drops dramatically.\n"
+"Messages over 16 KB cannot be delivered over NTCP, dropping delivery "
+"chances even more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:47
+#, python-format
+msgid ""
+"Also note that the various overheads added by lower layers, in particular"
+" asymmetric\n"
+"ElGamal/AES, place a large burden on "
+"intermittent messages\n"
+"such as used by a Kademlia-over-UDP application. The implementations are "
+"currently tuned\n"
+"for frequent traffic using the streaming library. There are a high number"
+"\n"
+"of session tags delivered, and a short session tag lifetime, for example."
+"\n"
+"There are currently no configuration parameters available within I2CP to "
+"tune\n"
+"the ElGamal Session Tag parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:57
+msgid "I2CP Protocol Number and Ports"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:58
+msgid ""
+"The standard I2CP protocol number for datagrams is PROTO_DATAGRAM (17).\n"
+"Applications may or may not choose to set the\n"
+"protocol in the I2CP header. It is not set by default.\n"
+"It must be set to demultiplex datagram and streaming traffic received on "
+"the same Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:65
+#, python-format
+msgid ""
+"As datagrams are not connection-oriented, the application may require\n"
+"port numbers to correlate datagrams with particular peers or "
+"communications sessions,\n"
+"as is traditional with UDP over IP.\n"
+"Applications may add 'from' and 'to' ports to the I2CP (gzip) header as "
+"described in\n"
+"the I2CP page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:73
+#, python-format
+msgid ""
+"There is no method within the datagram API to specify whether it is non-"
+"repliable (raw)\n"
+"or repliable. The application should be designed to expect the "
+"appropriate type.\n"
+"The I2CP protocol number or port should be used by the application to\n"
+"indicate datagram type.\n"
+"The I2CP protocol numbers PROTO_DATAGRAM (signed) and PROTO_DATAGRAM_RAW "
+"are defined in the\n"
+"I2PSession API\n"
+"for this purpose. A common design pattern in client/server datagram "
+"applications is to\n"
+"use signed datagrams for a request which includes a nonce, and use a raw "
+"datagram\n"
+"for the reply, returning the nonce from the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:85
+#, python-format
+msgid ""
+"The protocols and ports may be set in I2CP's\n"
+"I2PSession API,\n"
+"as implemented in\n"
+"I2PSessionMuxedImpl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:93
+#: i2p2www/pages/site/docs/api/streaming.html:418
+msgid "Data Integrity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:94
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the datagram protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:100
+#: i2p2www/pages/site/docs/api/streaming.html:426
+msgid "Packet Encapsulation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:101
+#, python-format
+msgid ""
+"Each datagram is sent through I2P as a single message (or as an "
+"individual clove in a\n"
+"Garlic Message).\n"
+"Message encapsulation is implemented in the underlying\n"
+"I2CP,\n"
+"I2NP, and\n"
+"tunnel message layers.\n"
+"There is no packet delimiter mechanism or length field in the datagram "
+"protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:114
+#: i2p2www/pages/site/docs/transport/ssu.html:650
+msgid "Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/datagrams.html:116
+msgid "See the Datagrams Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:2
+msgid "I2PControl - Remote Control Service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:5
+#, python-format
+msgid ""
+"I2P enables a JSONRPC2 interface via the plugin I2PControl.\n"
+"The aim of the interface is to provide simple way to interface with a "
+"running I2P node. A client, itoopie, has been developed in parallel.\n"
+"The JSONRPC2 implementation for the client as well as the plugin is "
+"provided by the java libraries JSON-RPC 2.0. \n"
+"A list of implementations of JSON-RPC for various languages can be found "
+"at the JSON-RPC "
+"wiki."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:12
+msgid "I2PControl is by default listening on https://localhost:7650"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:14
+msgid "API, version 1."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:15
+msgid "Parameters are only provided in a named way (maps)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:19
+msgid "JSON-RPC 2 format"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:20
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:45
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:58
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:68
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:77
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:87
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:102
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:155
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:176
+msgid "Request:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:33
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:50
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:62
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:72
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:82
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:93
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:119
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:165
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:191
+msgid "Response:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:44
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:46
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:47
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:51
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:52
+#: i2p2www/pages/site/docs/protocol/i2cp.html:108
+#: i2p2www/pages/site/docs/protocol/i2cp.html:483
+msgid "Description"
+msgstr "Popis"
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:48
+msgid ""
+"Token used for authenticating every request (excluding the 'Authenticate'"
+" RPC method)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:56
+msgid "Implemented methods"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:57
+msgid ""
+"Creates and returns an authentication token used for further "
+"communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:59
+msgid "The version of the I2PControl API used by the client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:60
+msgid "The password used for authenticating against the remote server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:63
+msgid "The primary I2PControl API version implemented by the server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:64
+msgid "The token used for further communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:67
+msgid "Echoes the value of the echo key, used for debugging and testing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:69
+msgid "Value will be returned in response."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:70
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:80
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:91
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:117
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:163
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:73
+msgid "Value of the key 'echo' in the request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:76
+msgid ""
+"Fetches rateStat from router statManager. Creates stat if not already "
+"created."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:78
+#, python-format
+msgid ""
+"Determines which rateStat to fetch, see ratestats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:79
+msgid "Determines which period a stat is fetched for. Measured in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:83
+msgid "Returns the average value for the reuested rateStat and period."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:86
+msgid "Manages I2PControl. Ports, passwords and the like."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:88
+msgid ""
+"Sets a new listen address for I2PControl (only 127.0.0.1 and 0.0.0.0 are "
+"implemented in I2PControl currently)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:89
+msgid ""
+"Sets a new password for I2PControl, all Authentication tokens will be "
+"revoked."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:90
+msgid "Switches which port I2PControl will listen for connections on."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:94
+msgid "Returned if address was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:95
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:96
+msgid "Returned if setting was changed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:97
+msgid "Returns true if any changes were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:98
+msgid "Returns true if any changes requiring a restart to take effect were made."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:101
+msgid "Fetches basic information about the I2P router. Uptime, version etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:120
+msgid "What the status of the router is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:121
+msgid "What the uptime of the router is in ms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:122
+msgid "What version of I2P the router is running."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:123
+msgid "The 1 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:124
+msgid "The 15 second average inbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:125
+msgid "The 1 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:126
+msgid "The 15 second average outbound bandwidth in Bps."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:127
+msgid "What the current network status is. According to the below enum:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:146
+msgid "How many tunnels on the I2P net are we participating in."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:147
+msgid "How many peers have we communicated with recently."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:148
+msgid "How many peers are considered 'fast'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:149
+msgid "How many peers are considered 'high capacity'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:150
+msgid "Is the router reseeding hosts to its NetDB?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:151
+msgid "How many peers are known to us (listed in our NetDB)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:154
+msgid "Manages I2P router restart/shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:156
+msgid "Blocking. Initiates a search for signed updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:157
+msgid ""
+"Initiates a router reseed, fetching peers into our NetDB from a remote "
+"host."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:158
+msgid "Restarts the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:159
+msgid ""
+"Restarts the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:160
+msgid "Shuts down the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:161
+msgid ""
+"Shuts down the router gracefully (waits for participating tunnels to "
+"expire)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:162
+msgid "Initiates a router update from signed sources."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:166
+msgid "Blocking. Returns true iff a signed update has been found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:167
+msgid "If requested, verifies that a reseed has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:168
+msgid "If requested, verifies that a restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:169
+msgid "If requested, verifies that a graceful restart has been initiated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:170
+msgid "If requested, verifies that a shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:171
+msgid "If requested, verifies that a graceful shutdown has been initiated"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:172
+msgid "Blocking. If requested, returns the status of the the update"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:175
+msgid "Fetches or sets various network related settings. Ports, addresses etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:177
+msgid ""
+"What port is used for the TCP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:178
+msgid ""
+"What hostname is used for the TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:179
+msgid ""
+"Use automatically detected ip for TCP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:180
+msgid ""
+"What port is used for the UDP transport. If null is submitted, current "
+"setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:181
+msgid ""
+"What hostname is used for the UDP transport. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:182
+msgid ""
+"Which methods should be used for detecting the ip address of the UDP "
+"transport. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:183
+msgid "What ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:184
+msgid "Is UPnP enabled. If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:185
+msgid ""
+"How many percent of bandwidth is usable for participating tunnels. If "
+"null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:186
+msgid ""
+"How many KB/s of inbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:187
+msgid ""
+"How many KB/s of outbound bandwidth is allowed. If null is submitted, "
+"current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:188
+msgid ""
+"Is laptop mode enabled (change router identity and UDP port when IP "
+"changes ). If null is submitted, current setting will be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:189
+msgid ""
+"Token used for authenticating the client. Is provided by the server via "
+"the 'Authenticate' RPC method. If null is submitted, current setting will"
+" be returned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:192
+msgid "If requested, returns the port used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:193
+msgid "If requested, returns the hostname used for the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:194
+msgid ""
+"If requested, returns the method used for automatically detecting ip for "
+"the TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:195
+msgid "If requested, returns the port used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:196
+msgid "If requested, returns the hostname used for the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:197
+msgid ""
+"If requested, returns methods used for detecting the ip address of the "
+"UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:198
+msgid "If requested, returns what ip has been detected by the UDP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:199
+msgid "If requested, returns the UPNP setting."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:200
+msgid ""
+"If requested, returns how many percent of bandwidth is usable for "
+"participating tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:201
+msgid "If requested, returns how many KB/s of inbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:202
+msgid "If requested, returns how many KB/s of outbound bandwidth is allowed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:203
+msgid "If requested, returns the laptop mode."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:204
+msgid "Have the provided settings been saved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:205
+msgid "Is a restart needed for the new settings to be used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:208
+msgid "Allows for manipulation of advanced i2p settings"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:209
+msgid "Set the sent key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "SetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:212
+msgid "Set the sent key-value pairs, remove everything else"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:215
+msgid "Get the key-value pairs for the sent keys"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "GetAll:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:218
+msgid "Get all the key-value pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:221
+msgid "denotes an optional value."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:222
+msgid "denotes a possibly occuring return value"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:224
+msgid "Error codes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:225
+msgid "Standard JSON-RPC2 error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:226
+msgid "JSON parse error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:227
+msgid "Invalid request."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:228
+msgid "Method not found."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:229
+msgid "Invalid parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:230
+msgid "Internal error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:232
+msgid "I2PControl specific error codes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:233
+msgid "Invalid password provided."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:234
+msgid "No authentication token presented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:235
+msgid "Authentication token doesn't exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:236
+msgid "The provided authentication token was expired and will be removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:237
+msgid ""
+"The version of the I2PControl API used wasn't specified, but is required "
+"to be specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2pcontrol.html:238
+msgid ""
+"The version of the I2PControl API specified is not supported by "
+"I2PControl."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:8
+#, python-format
+msgid ""
+"I2PTunnel is a tool for interfacing with and providing services on I2P.\n"
+"Destination of an I2PTunnel can be defined using a hostname,\n"
+"Base32, or a full 516-byte destination "
+"key.\n"
+"An established I2PTunnel will be available on your client machine as "
+"localhost:port.\n"
+"If you wish to provide a service on I2P network, you simply create "
+"I2PTunnel to the\n"
+"appropriate ip_address:port. A corresponding 516-byte destination key "
+"will be generated\n"
+"for the service and it will become avaliable throughout I2P.\n"
+"A web interface for I2PTunnel management is avaliable on\n"
+"localhost:7657/i2ptunnel/."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:20
+msgid "Default Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:21
+msgid "Server tunnels"
+msgstr "Serverové tunely"
+
+#: i2p2www/pages/site/docs/api/i2ptunnel.html:23
+msgid ""
+"I2P Webserver - A tunnel pointed to a Jetty webserver run\n"
+"on localhost:7658 for convenient "
+"and quick hosting on I2P.\n"
+"1/(windowSize*factor)
. In standard TCP, window sizes are"
+" in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:186
+msgid ""
+"How long to wait after instantiating a new con \n"
+"before actually attempting to connect. If this is\n"
+"<= 0, connect immediately with no initial data. If greater than 0, "
+"wait\n"
+"until the output stream is flushed, the buffer fills, \n"
+"or that many milliseconds pass, and include any initial data with the SYN."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:194
+msgid ""
+"How long to block on connect, in milliseconds. Negative means "
+"indefinitely. Default is 5 minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:198
+msgid ""
+"Whether to disable warnings in the logs when an incoming connection is "
+"rejected due to connection limits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:204
+msgid ""
+"Comma- or space-separated list of Base64 peer Hashes or host names to be\n"
+"contacted using an alternate DSA destination.\n"
+"Only applies if multisession is enabled and the primary session is non-"
+"DSA\n"
+"(generally for shared clients only).\n"
+"This option must be set in the context properties, NOT in the "
+"createManager() options argument.\n"
+"Note that setting this in the router context will not affect clients "
+"outside the\n"
+"router in a separate JVM and context."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:216
+msgid ""
+"Whether to listen only for the streaming protocol.\n"
+"Setting to true will prohibit communication with Destinations earlier "
+"than release 0.7.1\n"
+"(released March 2009). Set to true if running multiple protocols on this "
+"Destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:226
+msgid ""
+"(0=noop, 1=disconnect)\n"
+"What to do on an inactivity timeout - do nothing, disconnect, or send a "
+"duplicate ack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:232
+msgid "Idle time before sending a keepalive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:235
+msgid "Delay before sending an ack"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:237
+msgid ""
+"The initial value of the resend delay field in the packet header, times "
+"1000.\n"
+"Not fully implemented; see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:242
+msgid ""
+"Initial timeout\n"
+"(if no sharing data available)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:249
+msgid ""
+"Initial round trip time estimate\n"
+"(if no sharing data available).\n"
+"Disabled as of release 0.9.8; uses actual RTT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid "if no sharing data available"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:255
+msgid ""
+"In standard TCP, window sizes are in bytes, while in I2P, window sizes "
+"are in messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:279
+msgid ""
+"(0 or negative value means unlimited)\n"
+"This is a total limit for incoming and outgoing combined."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:284
+msgid "Incoming connection limit (per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:290
+#: i2p2www/pages/site/docs/api/streaming.html:296
+msgid "(per peer; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:302
+msgid "The MTU in bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:306
+msgid "Maximum number of retransmissions before failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:310
+msgid "Incoming connection limit (all peers; 0 means disabled)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:316
+#: i2p2www/pages/site/docs/api/streaming.html:323
+msgid ""
+"(all peers; 0 means disabled)\n"
+"Use with caution as exceeding this will disable a server for a long time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:332
+msgid ""
+"(2=interactive not supported)\n"
+"This doesn't currently do anything, but setting it to a value other than "
+"1 will cause an error."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:337
+msgid "How long to block on read, in milliseconds. Negative means indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:341
+msgid ""
+"When we're in slow start, we grow the window size at the rate\n"
+"of 1/(factor). In standard TCP, window sizes are in bytes,\n"
+"while in I2P, window sizes are in messages.\n"
+"A higher number means slower growth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:348
+#: i2p2www/pages/site/docs/api/streaming.html:355
+#: i2p2www/pages/site/docs/api/streaming.html:362
+msgid ""
+"Ref: RFC 2140. Floating point value.\n"
+"May be set only via context properties, not connection options."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:369
+msgid ""
+"How long to block on write/flush, in milliseconds. Negative means "
+"indefinitely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:377
+msgid "Protocol Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:379
+msgid "See the Streaming Library Specification page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:383
+msgid "Implementation Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:385
+msgid "Setup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:386
+msgid ""
+"The initiator sends a packet with the SYNCHRONIZE flag set. This packet "
+"may contain the initial data as well.\n"
+"The peer replies with a packet with the SYNCHRONIZE flag set. This packet"
+" may contain the initial response data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:391
+msgid ""
+"The initiator may send additional data packets, up to the initial window "
+"size, before receiving the SYNCHRONIZE response.\n"
+"These packets will also have the send Stream ID field set to 0.\n"
+"Recipients must buffer packets received on unknown streams for a short "
+"period of time, as they may\n"
+"arrive out of order, in advance of the SYNCHRONIZE packet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:398
+msgid "MTU Selection and Negotiation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:399
+msgid ""
+"The maximum message size (also called the MTU / MRU) is negotiated to the"
+" lower value supported by\n"
+"the two peers. As tunnel messages are padded to 1KB, a poor MTU selection"
+" will lead to\n"
+"a large amount of overhead.\n"
+"The MTU is specified by the option i2p.streaming.maxMessageSize.\n"
+"The current default MTU of 1730 was chosen to fit precisely into two 1K "
+"I2NP tunnel messages,\n"
+"including overhead for the typical case."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:408
+msgid ""
+"The first message in a connection includes a 387 byte (typical) "
+"Destination added by the streaming layer,\n"
+"and usually a 898 byte (typical) LeaseSet, and Session keys, bundled in "
+"the Garlic message by the router.\n"
+"(The LeaseSet and Session Keys will not be bundled if an ElGamal Session "
+"was previously established).\n"
+"Therefore, the goal of fitting a complete HTTP request in a single 1KB "
+"I2NP message is not always attainable.\n"
+"However, the selection of the MTU, together with careful implementation "
+"of fragmentation\n"
+"and batching strategies in the tunnel gateway processor, are important "
+"factors in network bandwidth,\n"
+"latency, reliability, and efficiency, especially for long-lived "
+"connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:419
+#, python-format
+msgid ""
+"Data integrity is assured by the gzip CRC-32 checksum implemented in\n"
+"the I2CP layer.\n"
+"There is no checksum field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:427
+#, python-format
+msgid ""
+"Each packet is sent through I2P as a single message (or as an individual "
+"clove in a\n"
+"Garlic Message). Message encapsulation "
+"is implemented\n"
+"in the underlying I2CP, I2NP, and\n"
+"tunnel message layers. There is no "
+"packet delimiter\n"
+"mechanism or payload length field in the streaming protocol."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:437
+msgid "Optional Delay"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:438
+msgid ""
+"Data packets may include an optional delay field specifying the requested"
+" delay,\n"
+"in ms, before the receiver should ack the packet.\n"
+"Valid values are 0 to 60000 inclusive.\n"
+"A value of 0 requests an immediate ack.\n"
+"This is advisory only, and receivers should delay slightly so that\n"
+"additional packets may be acknowledged with a single ack.\n"
+"Some implementations may include an advisory value of (measured RTT / 2) "
+"in this field.\n"
+"For nonzero optional delay values, receivers should limit the maximum "
+"delay\n"
+"before sending an ack to a few seconds at most.\n"
+"Optional delay values greater than 60000 indicate choking, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:452
+msgid "Receive Window and Choking"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:453
+msgid ""
+"TCP headers include the receive window in bytes.\n"
+"The streaming protocol does not contain a receive window, it uses only a "
+"simple choke/unchoke indication.\n"
+"Each endpoint must maintain its own estimate of the far-end receive "
+"window, in either bytes or packets.\n"
+"The recommended minimum buffer size for receiver implementations is 128 "
+"packets or 217 KB (approximately 128x1730).\n"
+"Because of I2P netowrk latency, packet drops, and the resulting "
+"congestion control,\n"
+"a buffer of this size is rarely filled.\n"
+"Overflow is, however, likely to occur on high-bandwidth \"local "
+"loopback\" (same-router) connections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:462
+msgid ""
+"To quickly indicate and smoothly recover from overflow conditions,\n"
+"there is a simple mechanism for pushback in the streaming protocol.\n"
+"If a packet is received with an optional delay field of value of 60001 or"
+" higher,\n"
+"that indicates \"choking\" or a receive window of zero.\n"
+"A packet with an optional delay field of value of 60000 or less indicates"
+" \"unchoking\".\n"
+"Packets without an optional delay field do not affect the choke/unchoke "
+"state."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:470
+msgid ""
+"After being choked, no more packets with data should be sent until the "
+"transmitter is unchoked,\n"
+"except for occasional \"probe\" data packets to compensate for possible "
+"lost unchoke packets.\n"
+"The choked endpoint should start a \"persist timer\" to control the "
+"probing, as in TCP.\n"
+"The unchoking endpoint should send several packets with this field set,\n"
+"or continue sending them periodically until data packets are received "
+"again.\n"
+"Maximum time to wait for unchoking is implementation-dependent.\n"
+"Transmitter window size and congestion control strategy after being "
+"unchoked is implementation-dependent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:481
+msgid "Congestion Control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:482
+msgid ""
+"The streaming lib uses standard slow-start (exponential window growth) "
+"and congestion avoidance (linear window growth)\n"
+"phases, with exponential backoff.\n"
+"Windowing and acknowledgments use packet count, not byte count."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:489
+msgid "Close"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:490
+msgid ""
+"Any packet, including one with the SYNCHRONIZE flag set, may have the "
+"CLOSE flag sent as well.\n"
+"The connection is not closed until the peer responds with the CLOSE flag."
+"\n"
+"CLOSE packets may contain data as well."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:498
+msgid ""
+"There is no ping function at the I2CP layer (equivalent to ICMP echo) or "
+"in datagrams.\n"
+"This function is provided in streaming.\n"
+"Pings and pongs may not be combined with a standard streaming packet;\n"
+"if the ECHO option is set, then\n"
+"most other flags, options, ackThrough, sequenceNum, NACKs, etc. are "
+"ignored."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:506
+msgid ""
+"A ping packet must have the ECHO, SIGNATURE_INCLUDED, and FROM_INCLUDED "
+"flags set.\n"
+"The sendStreamId must be greater than zero, and the receiveStreamId is "
+"ignored.\n"
+"The sendStreamId may or may not correspond to an existing connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:512
+msgid ""
+"A pong packet must have the ECHO flag set.\n"
+"The sendStreamId must be zero, and the receiveStreamId is the "
+"sendStreamId from the ping.\n"
+"Prior to release 0.9.18, the pong packet does not include any payload "
+"that was contained in the ping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:518
+msgid ""
+"As of release 0.9.18, pings and pongs may contain a payload.\n"
+"The payload in the ping, up to a maximum of 32 bytes, is returned in the "
+"pong."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:523
+msgid ""
+"Streaming may be configured to disable sending pongs with the "
+"configuration i2p.streaming.answerPings=false."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:528
+msgid "Control Block Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:529
+msgid ""
+"The streaming lib supports \"TCP\" Control Block sharing.\n"
+"This shares three important streaming lib parameters\n"
+"(window size, round trip time, round trip time variance)\n"
+"across connections to the same remote peer.\n"
+"This is used for \"temporal\" sharing at connection open/close time,\n"
+"not \"ensemble\" sharing during a connection (See\n"
+"RFC 2140).\n"
+"There is a separate share per ConnectionManager (i.e. per local "
+"Destination)\n"
+"so that there is no information leakage to other Destinations on the\n"
+"same router.\n"
+"The share data for a given peer expires after a few minutes.\n"
+"The following Control Block Sharing parameters can be set per router:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:550
+msgid "Other Parameters"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:551
+msgid ""
+"The following parameters are hardcoded, but may be of interest for "
+"analysis:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:570
+#: i2p2www/pages/site/docs/how/network-database.html:895
+msgid "History"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:571
+msgid ""
+"The streaming library has grown organically for I2P - first mihi "
+"implemented the\n"
+"\"mini streaming library\" as part of I2PTunnel, which was limited to a "
+"window\n"
+"size of 1 message (requiring an ACK before sending the next one), and "
+"then it was\n"
+"refactored out into a generic streaming interface (mirroring TCP sockets)"
+" and the\n"
+"full streaming implementation was deployed with a sliding window protocol"
+" and \n"
+"optimizations to take into account the high bandwidth x delay product. "
+"Individual\n"
+"streams may adjust the maximum packet size and other options. The default"
+"\n"
+"message size is selected to fit precisely in two 1K I2NP tunnel messages,"
+"\n"
+"and is a reasonable tradeoff between the bandwidth costs of \n"
+"retransmitting lost messages, and the latency and overhead of multiple "
+"messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:585
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:344
+#: i2p2www/pages/site/docs/how/garlic-routing.html:251
+#: i2p2www/pages/site/docs/how/network-database.html:900
+#: i2p2www/pages/site/docs/how/peer-selection.html:265
+#: i2p2www/pages/site/docs/how/tunnel-routing.html:255
+#: i2p2www/pages/site/docs/protocol/i2cp.html:723
+#: i2p2www/pages/site/docs/protocol/i2np.html:226
+#: i2p2www/pages/site/docs/transport/ntcp.html:544
+#: i2p2www/pages/site/docs/transport/ssu.html:585
+#: i2p2www/pages/site/docs/tunnels/implementation.html:506
+msgid "Future Work"
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:586
+msgid ""
+"The behavior of the streaming library has a profound impact on\n"
+"application-level performance, and as such, is an important\n"
+"area for further analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:592
+msgid "Additional tuning of the streaming lib parameters may be necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:595
+#, python-format
+msgid ""
+"Another area for research is the interaction of the streaming lib with "
+"the\n"
+"NTCP and SSU transport layers.\n"
+"See the NTCP discussion page for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:600
+msgid ""
+"The interaction of the routing algorithms with the streaming lib strongly"
+" affects performance.\n"
+"In particular, random distribution of messages to multiple tunnels in a "
+"pool\n"
+"leads to a high degree of out-of-order delivery which results in smaller "
+"window\n"
+"sizes than would otherwise be the case. The router currently routes \n"
+"messages for a single from/to destination pair through a consistent set \n"
+"of tunnels, until tunnel expiration or delivery failure. The router's \n"
+"failure and tunnel selection algorithms should be reviewed for possible \n"
+"improvements."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:610
+msgid "The data in the first SYN packet may exceed the receiver's MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:613
+msgid "The DELAY_REQUESTED field could be used more."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:616
+msgid ""
+"Duplicate initial SYNCHRONIZE packets on short-lived streams may not be "
+"recognized and removed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:619
+msgid "Don't send the MTU in a retransmission."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:622
+msgid ""
+"Data is sent along unless the outbound window is full.\n"
+"(i.e. no-Nagle or TCP_NODELAY)\n"
+"Probably should have a configuration option for this."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:627
+msgid ""
+"zzz has added debug code to the streaming library to log packets in a "
+"wireshark-compatible\n"
+"(pcap) format; Use this to further analyze performance.\n"
+"The format may require enhancement to map more streaming lib parameters "
+"to TCP fields."
+msgstr ""
+
+#: i2p2www/pages/site/docs/api/streaming.html:632
+msgid ""
+"There are proposals to replace the streaming lib with standard TCP\n"
+"(or perhaps a null layer together with raw sockets).\n"
+"This would unfortunately be incompatible with the streaming lib\n"
+"but it would be good to compare the performance of the two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:3
+msgid "January 2017"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:7
+msgid ""
+"There are several bittorrent clients and trackers on I2P.\n"
+"As I2P addressing uses a Destination instead of an IP and port, minor\n"
+"changes are required to tracker and client software for operation on I2P."
+"\n"
+"These changes are specified below.\n"
+"Note carefully the guidelines for compatibility with older I2P clients "
+"and trackers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:15
+msgid ""
+"This page specifies protocol details common to all clients and trackers.\n"
+"Specific clients and trackers may implement other unique features or "
+"protocols."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:20
+msgid "We welcome additional ports of client and tracker software to I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:26
+msgid "Announces"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:27
+msgid ""
+"Clients generally include a fake port=6881 parameter in the announce, for"
+" compatibility with older trackers.\n"
+"Trackers may ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:32
+#, python-format
+msgid ""
+"The ip parameter is the base 64 of the client's\n"
+"Destination,\n"
+"using the I2P Base 64 alphabet [A-Z][a-z][0-9]-~.\n"
+"Destinations\n"
+"are 387+ bytes, so the Base 64 is 516+ bytes.\n"
+"Clients generally append \".i2p\" to the Base 64 Destination for "
+"compatibility with older trackers.\n"
+"Trackers should not require an appended \".i2p\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:42
+msgid "Other parameters are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:46
+msgid ""
+"Current Destinations for clients are 387 or more bytes (516 or more in "
+"Base 64 encoding).\n"
+"A reasonable maximum to assume, for now, is 475 bytes.\n"
+"As the tracker must decode the Base64 to deliver compact responses (see "
+"below),\n"
+"the tracker should probably decode and reject bad Base64 when announced."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:53
+msgid ""
+"The default response type is non-compact. Clients may request a compact "
+"response with\n"
+"the parameter compact=1. A tracker may, but is not required to, return\n"
+"a compact response when requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:59
+msgid ""
+"Developers of new I2P clients\n"
+"are strongly encouraged to implemenent announces over their own tunnel "
+"rather than\n"
+"the HTTP client proxy at port 4444. Doing so is both more efficient and "
+"it allows\n"
+"destination enforcement by the tracker (see below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:66
+msgid ""
+"There are no known I2P clients or trackers that currently support UDP "
+"announce/responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:71
+msgid "Non-Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:72
+msgid ""
+"The non-compact response is just as in standard bittorrent, with an I2P "
+"\"ip\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:76
+msgid ""
+"Trackers generally include a fake port key, or use the port from the "
+"announce, for compatibility with older clients.\n"
+"Clients must ignore the port parameter, and should not require it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:81
+#, python-format
+msgid ""
+"The value of the ip key is the base 64 of the client's\n"
+"Destination, as "
+"described above.\n"
+"Trackers generally append \".i2p\" to the Base 64 Destination if it "
+"wasn't in the announce ip, for compatibility with older clients.\n"
+"Clients should not require an appended \".i2p\" in the responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:88
+msgid "Other response keys and values are the same as in standard bittorrent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:94
+msgid "Compact Tracker Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:95
+#, python-format
+msgid ""
+"In the compact response, the value of the \"peers\" dictionary key is a "
+"single byte string,\n"
+"whose length is a multiple of 32 bytes.\n"
+"This string contains the concatenated\n"
+"32-byte SHA-256 Hashes\n"
+"of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This hash must be computed by the tracker, unless destination enforcement"
+"\n"
+"(see below) is used, in which case the hash delivered in the X-I2P-"
+"DestHash\n"
+"or X-I2P-DestB32 HTTP headers may be converted to binary and stored.\n"
+"The peers key may be absent, or the peers value may be zero-length."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:109
+msgid ""
+"While compact response support is optional for both clients and trackers,"
+" it is highly\n"
+"recommended as it reduces the nominal response size by over 90%."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:116
+msgid "Destination Enforcement"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:117
+#, python-format
+msgid ""
+"Some, but not all, I2P bittorrent clients announce over their own "
+"tunnels.\n"
+"Trackers may choose to prevent spoofing by requiring this, and verifying "
+"the\n"
+"client's\n"
+"Destination\n"
+"using HTTP headers added by the I2PTunnel HTTP Server tunnel.\n"
+"The headers are X-I2P-DestHash, X-I2P-DestB64, and X-I2P-DestB32, which "
+"are\n"
+"different formats for the same information.\n"
+"These headers cannot be spoofed by the client.\n"
+"A tracker enforcing destinations need not require the ip announce "
+"parameter at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:129
+msgid ""
+"As several clients use the HTTP proxy instead of their own tunnel for "
+"announces,\n"
+"destination enforcement will prevent usage by those clients unless or "
+"until\n"
+"those clients are converted to announcing over their own tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:135
+msgid ""
+"Unfortunately, as the network grows, so will the amount of maliciousness,"
+"\n"
+"so we expect that all trackers will eventually enforce destinations.\n"
+"Both tracker and client developers should anticipate it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:143
+msgid "Announce Host Names"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:144
+#, python-format
+msgid ""
+"Announce URL host names in torrent files generally follow the\n"
+"I2P naming standards.\n"
+"In addition to host names from address books and \".b32.i2p\" Base 32 "
+"hostnames,\n"
+"the full Base 64 Destination (with [or without?] \".i2p\" appended) "
+"should be supported.\n"
+"Non-open trackers should recognize their own host name in any of these "
+"formats."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:152
+msgid ""
+"To preserve anonymity,\n"
+"clients should generally ignore non-I2P announce URLs in torrent files."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:159
+msgid "Client Connections"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:160
+msgid ""
+"Client-to-client connections use the standard protocol over TCP.\n"
+"There are no known I2P clients that currently support uTP communication."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:165
+#, python-format
+msgid ""
+"I2P uses 387+ byte Destinations\n"
+"for addresses, as explained above."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:170
+msgid ""
+"If the client has only the hash of the destination (such as from a "
+"compact response or PEX), it must perform a lookup\n"
+"by encoding it with Base 32, appending \".b32.i2p\", and querying the "
+"Naming Service,\n"
+"which will return the full Destination if available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:176
+msgid ""
+"If the client has a peer's full Destination it received in a non-compact "
+"response, it should use it\n"
+"directly in the connection setup.\n"
+"Do not convert a Destination back to a Base 32 hash for lookup, this is "
+"quite inefficient."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:183
+msgid "Cross-Network Prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:184
+msgid ""
+"To preserve anonymity,\n"
+"I2P bittorrent clients generally do not support non-I2P announces or peer"
+" connections.\n"
+"I2P HTTP outproxies often block announces.\n"
+"There are no known SOCKS outproxies supporting bittorrent traffic."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:191
+msgid ""
+"To prevent usage by non-I2P clients via an HTTP inproxy, I2P trackers "
+"often\n"
+"block accesses or announces that contain an X-Forwarded-For HTTP header.\n"
+"Trackers should reject standard network announces with IPv4 or IPv6 IPs, "
+"and not deliver them in responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:200
+#, python-format
+msgid ""
+"I2P PEX is based on ut_pex.\n"
+"As there does not appear to be a formal specification of ut_pex "
+"available,\n"
+"it may be necessary to review the libtorrent source for assistance.\n"
+"It is an extension message, identified as \"i2p_pex\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with up to 3 keys, \"added\", "
+"\"added.f\", and \"dropped\".\n"
+"The added and dropped values are each a single byte string, whose length "
+"is a multiple of 32 bytes.\n"
+"These byte strings are the concatenated SHA-256 Hashes of the binary\n"
+"Destinations\n"
+"of the peers.\n"
+"This is the same format as the peers dictionary value in the i2p compact "
+"response format specified above.\n"
+"The added.f value, if present, is the same as in ut_pex."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:218
+msgid ""
+"DHT support is included in the i2psnark client as of version 0.9.2.\n"
+"Preliminary differences from\n"
+"BEP 5\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client supporting DHT."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:226
+msgid ""
+"Unlike standard DHT, I2P DHT does not use a bit in the options handshake,"
+" or the PORT message.\n"
+"It is advertised with an extension message, identified as \"i2p_dht\" in\n"
+"the extension "
+"handshake.\n"
+"It contains a bencoded dictionary with two keys, \"port\" and \"rport\", "
+"both integers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:233
+msgid ""
+"The UDP (datagram) port listed in the compact node info is used\n"
+"to receive repliable (signed) datagrams.\n"
+"This is used for queries, except for announces.\n"
+"We call this the \"query port\".\n"
+"This is the \"port\" value from the extension message.\n"
+"Queries use I2CP protocol number 17."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:242
+msgid ""
+"In addition to that UDP port, we use a second datagram\n"
+"port equal to the query port + 1. This is used to receive\n"
+"unsigned (raw) datagrams for replies, errors, and announces.\n"
+"This port provides increased efficiency since replies\n"
+"contain tokens sent in the query, and need not be signed.\n"
+"We call this the \"response port\".\n"
+"This is the \"rport\" value from the extension message.\n"
+"It must be 1 + the query port.\n"
+"Responses and announces use I2CP protocol number 18."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:254
+msgid ""
+"Compact peer info is 32 bytes (32 byte SHA256 Hash)\n"
+"instead of 4 byte IP + 2 byte port. There is no peer port.\n"
+"In a response, the \"values\" key is a list of strings, each containing a"
+" single compact peer info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:260
+msgid ""
+"Compact node info is 54 bytes (20 byte SHA1 Hash + 32 byte SHA256 Hash + "
+"2 byte port)\n"
+"instead of 20 byte SHA1 Hash + 4 byte IP + 2 byte port.\n"
+"In a response, the \"nodes\" key is a\n"
+"single byte string with concatenated compact node info."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:267
+msgid ""
+"Secure node ID requirement: To make various DHT attacks more difficult,\n"
+"the first 4 bytes of the Node ID must match the first 4 bytes of the "
+"destination Hash,\n"
+"and the next two bytes of the Node ID must match the next two bytes of "
+"the\n"
+"destination hash exclusive-ORed with the port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:274
+msgid ""
+"In a torrent file,\n"
+"the trackerless torrent dictionary \"nodes\" key is TBD.\n"
+"It could be a list of\n"
+"32 byte binary strings (SHA256 Hashes) instead of a list of lists\n"
+"containing a host string and a port integer.\n"
+"Alternatives: A single byte string with concatenated hashes,\n"
+"or a list of strings alone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:286
+msgid "Datagram (UDP) Trackers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:287
+msgid ""
+"UDP tracker support in clients and trackers is not yet available.\n"
+"Preliminary differences from\n"
+"BEP 15\n"
+"are described below, and are subject to change.\n"
+"Contact the I2P developers if you wish to develop a client or tracker "
+"supporting datagram announces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:295
+msgid ""
+"A UDP tracker listens on two ports.\n"
+"The \"query port\" is the advertised port, and is used to receive "
+"repliable (signed) datagrams, for the connect request only.\n"
+"The \"response port\" is used to receive unsigned (raw) datagrams, and is"
+" the source port for all replies.\n"
+"The response port is arbitrary.\n"
+"A client sends and receives on a single port only.\n"
+"It receives only unsigned (raw) datagrams.\n"
+"Raw datagrams provides increased efficiency for replies since they "
+"contain tokens sent in the query, and need not be signed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:305
+msgid ""
+"In the announce request, the 4-byte IP is replaced by a 32-byte hash, and"
+" the port is still present,\n"
+"although it may be ignored by the tracker.\n"
+"In the announce response, each 4-byte IP and 2-byte port is replaced by a"
+" 32-byte hash (compact peer info), and no port is present.\n"
+"The client sends the announce request and scrape request to the source "
+"port in the announce response packet.\n"
+"The connect request, connect response, scrape request, scrape response, "
+"and error response are the same as in BEP 15."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:313
+msgid ""
+"Source addresses in I2P cannot be spoofed, so it is possible to use a "
+"simplified protocol\n"
+"with 2 packets instead of 4, omitting the connect request and response.\n"
+"In this case, the announce request would be a repliable datagram sent to "
+"the tracker's query port,\n"
+"and the tracker would not require a response port.\n"
+"While this is more efficient, it would be more difficult to modify an "
+"existing tracker to support this mode.\n"
+"The URL for the 4-packet-mode tracker would use standard \"udp://\" "
+"prefix. \n"
+"The URL for a modified 2-packet-mode tracker would require a different "
+"prefix if both modes are supported in I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:326
+#: i2p2www/pages/site/docs/how/intro.html:184
+msgid "Additional Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:328
+#, python-format
+msgid ""
+"I2P bittorrent standards are generally discussed on %(zzz)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:331
+#, python-format
+msgid ""
+"A chart of current tracker software capabilities is also available there."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:334
+#, python-format
+msgid ""
+"The\n"
+"I2P bittorrent FAQ"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/bittorrent.html:338
+#, python-format
+msgid "DHT on I2P discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:2
+msgid "Embedding I2P in your Application"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:3
+msgid "November 2017"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:8
+msgid ""
+"This page is about bundling the entire I2P router binary with your "
+"application.\n"
+"It is not about writing an application to work with I2P (either bundled "
+"or external)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:13
+msgid ""
+"Lots of projects are bundling, or talking about bundling, I2P. That's "
+"great if done right.\n"
+"If done wrong, it could cause real harm to our network.\n"
+"The I2P router is complex, and it can be a challenge to hide all the "
+"complexity from your users.\n"
+"This page discusses some general guidelines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:23
+msgid "Talk to us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:24
+msgid ""
+"Start a dialog. We're here to help. Applications that embed I2P are the "
+"most promising - and exciting -\n"
+"opportunities for us to grow the network and improve anonymity for "
+"everyone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:30
+msgid "Choose your router wisely"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:31
+msgid ""
+"If your application is in Java or Scala, it's an easy choice - use the "
+"Java router.\n"
+"If in C/C++, we recommend i2pd. The development of i2pcpp has stopped.\n"
+"For apps in other languages, best to use SAM or BOB or SOCKS and bundle "
+"the Java router as a separate process.\n"
+"Some of the following only applies to the Java router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:39
+msgid "Licensing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:40
+msgid "Ensure you meet the license requirements of the software you are bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:45
+msgid "Verify default configuration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:46
+msgid ""
+"A correct default configuration is crucial. Most users will not change "
+"the defaults.\n"
+"The defaults for your application may need to be different than the "
+"defaults for the router you are bundling.\n"
+"Override the router defaults if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:51
+msgid ""
+"Some important defaults to review: Max bandwidth, tunnel quantity and "
+"length, max participating tunnels.\n"
+"A lot of this depends on the expected bandwidth and usage patterns of "
+"your app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:55
+msgid ""
+"Configure enough bandwidth and tunnels to allow your users to contribute "
+"to the network.\n"
+"Consider disabling external I2CP, as you probably don't need it and it "
+"would conflict with any other running I2P instance.\n"
+"Also look at the configs for disabling killing of the JVM on exit, for "
+"example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:62
+msgid "Participating Traffic Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:63
+msgid ""
+"It may be tempting for you to disable participating traffic.\n"
+"There's several ways to do this (hidden mode, setting max tunnels to 0, "
+"setting shared bandwidth below 12 KBytes/sec).\n"
+"Without participating traffic, you don't have to worry about graceful "
+"shutdown,\n"
+"your users don't see bandwidth usage not generated by them, etc.\n"
+"However, there's lots of reasons why you should allow participating "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:70
+msgid ""
+"First of all, the router doesn't work that well if it doesn't have a "
+"chance to \"integrate\" with the network,\n"
+"which is helped tremendously by others building tunnels through you."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:74
+msgid ""
+"Secondly, over 90% of the routers in the current network allow "
+"participating traffic.\n"
+"It's the default in the Java router.\n"
+"If your application doesn't route for others and it gets really popular, "
+"then it's a leech on the network,\n"
+"and it upsets the balance we have now.\n"
+"If it gets really big, then we become Tor, and spend our time begging for"
+" people to enable relaying."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:81
+msgid ""
+"Thirdly, participating traffic is cover traffic that helps your users' "
+"anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:84
+msgid ""
+"We strongly discourage you from disabling participating traffic by "
+"default.\n"
+"If you do this and your application gets hugely popular, it could break "
+"the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:90
+msgid "Persistence"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:91
+msgid ""
+"You must save the router's data (netdb, configuration, etc.) between runs"
+" of the router.\n"
+"I2P does not work well if you must reseed each startup, and that's a huge"
+" load on our reseed servers, and not very good for anonymity either.\n"
+"Even if you bundle router infos, I2P needs saved profile data for best "
+"performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:99
+msgid "Configurability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:100
+msgid ""
+"Give your users a way to change the configuration of the important "
+"settings.\n"
+"We understand that you will probably want to hide most of I2P's "
+"complexity, but it's important to show some basic settings.\n"
+"In addition to the defaults above, some network settings such as UPnP, "
+"IP/port may be helpful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:108
+msgid "Floodfill Considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:109
+msgid ""
+"Above a certain bandwidth setting, and meeting other health criteria, "
+"your router will become floodfill,\n"
+"which may cause a large increase in connections and memory usage (at "
+"least with the Java router).\n"
+"Think about whether that's OK. You can disable floodfill, but then your "
+"fastest users aren't contributing what they could.\n"
+"It also depends on the typical uptime for your application."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:119
+msgid "Reseeding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:120
+msgid ""
+"Decide if you are bundling router infos or using our reseed hosts.\n"
+"The Java reseed host list is in the source code, so if you keep your "
+"source up to date, the host list will be also.\n"
+"Be aware of possible blocking by hostile governments."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:129
+msgid "Reduce Network Resource Usage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:130
+msgid ""
+"Consider setting your application tunnels to delay-open, reduce-on-idle "
+"and/or close-on-idle.\n"
+"This is straightforward if using i2ptunnel but you'll have to implement "
+"some of it yourself if using I2CP directly.\n"
+"See i2psnark for code that reduces tunnel count and then closes the "
+"tunnel, even in the presence of some background DHT activity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:138
+msgid "Updatability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:139
+msgid ""
+"Have an auto-update feature if at all possible, or at least auto-"
+"notification of a new version.\n"
+"Our biggest fear is a huge number of routers out there that can't be "
+"updated.\n"
+"We have about 6-8 releases a year of the Java router, and it's critical "
+"to the health of the network that the users keep up.\n"
+"We usually have over 80% of the network on the latest release within "
+"6 weeks after the release, and we'd like to keep it that way.\n"
+"You don't need to worry about disabling the router's built-in auto-update"
+" function, as that code is in the router console,\n"
+"which you presumably are not bundling."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:150
+msgid "Rollout"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:151
+msgid ""
+"Have a gradual rollout plan. Don't overwhelm the network all at once.\n"
+"We currently have approximately 25K unique users per day and 40K uniques "
+"per month.\n"
+"We are probably able to handle growth of 2-3X per year without too much "
+"issue.\n"
+"If you anticipate a faster rampup than that, OR the bandwidth "
+"distribution (or uptime distribution,\n"
+"or any other significant characteristic) of your userbase is "
+"significantly different from our current userbase,\n"
+"we really need to have a discussion.\n"
+"The bigger your growth plans, the more important everthing else in this "
+"checklist is."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:163
+msgid "Design for and Encourage Long Uptimes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:164
+msgid ""
+"Tell your users that I2P works best if it keeps running.\n"
+"It may be several minutes after startup before it works well, and even "
+"more after first install.\n"
+"If your average uptime is less than an hour, I2P is probably the wrong "
+"solution."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:172
+msgid "Show Status"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:173
+msgid ""
+"Provide some indication to the user that the application tunnels are "
+"ready. Encourage patience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:178
+msgid "Graceful Shutdown"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:179
+msgid ""
+"If possible, delay the shutdown until your participating tunnels expire.\n"
+"Don't let your users break tunnels easily, or at least ask them to "
+"confirm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:185
+msgid "Education and Donation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:186
+msgid ""
+"It would be nice if you give your users links to learn more about I2P and"
+" to donate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:192
+msgid "External Router Option"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:193
+msgid ""
+"Depending on your user base and application,\n"
+"it may be helpful to provide an option or a separate package to use an "
+"external router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:200
+msgid "Use of other Common Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:201
+msgid ""
+"If you plan to use or link to other common I2P services (news feeds, "
+"hosts.txt subscriptions, trackers, outproxies, etc.),\n"
+"make sure you aren't overloading them,\n"
+"and talk to the people who are running them to make sure it's ok."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:209
+msgid "Time / NTP Issues"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:210
+msgid ""
+"I2P includes an SNTP client. I2P requires correct time to operate.\n"
+"It will compensate for a skewed system clock but this may delay startup. "
+"You may disable I2P's SNTP queries,\n"
+"but this isn't advised unless your application makes sure the system "
+"clock is correct."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:218
+msgid "Choose What and How you Bundle"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:219
+msgid ""
+"At a minimum you will need i2p.jar, router.jar, streaming.jar, and "
+"mstreaming.jar.\n"
+"You may omit the two streaming jars for a datagram-only app.\n"
+"Some apps may need more, e.g. i2ptunnel.jar or addressbook.jar.\n"
+"Don't forget jbigi.jar, or a subset of it for the platforms you support, "
+"to make the crypto much faster.\n"
+"We are currently building them for Java 7, as of 0.9.24. The source is "
+"mostly compatible with Java 6 if you want to do your own compile,\n"
+"but we may start using Java 7 features at any time without notice.\n"
+"If you're building Debian / Ubuntu packages, you should require the I2P "
+"package from our PPA instead of bundling it.\n"
+"You almost certainly do not need susimail, susidns, the router console, "
+"and i2psnark, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:229
+msgid ""
+"The following files should be included in the I2P installation directory,"
+" specified with the \"i2p.dir.base\" property.\n"
+"Don't forget certificates/reseed and certificates/ssl, required for "
+"reseeding, and blocklist.txt for IP validation.\n"
+"The geoip directory is optional, but recommended so the router can make "
+"decisions based on location.\n"
+"The hosts.txt file may be necessary, you may modify it to include any "
+"hosts your application uses.\n"
+"You may add a router.config file to the base directory to override "
+"initial defaults."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:236
+msgid ""
+"License requirements may require you to include the LICENSES.txt file and"
+" the licenses directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:242
+msgid "You may also wish to bundle a hosts.txt file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:245
+msgid "Be sure to specify a Java 7 bootclasspath if compiling with Java 8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:253
+msgid "Android considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:254
+msgid ""
+"Our Android router app may be shared by multiple clients.\n"
+"If it is not installed, the user will be prompted when he starts a client"
+" app."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:258
+msgid ""
+"Some developers have expressed concern that this is a poor user "
+"experience,\n"
+"and they wish to embed the router in their app.\n"
+"We do have an Android router service library on our roadmap, which could "
+"make embedding easier.\n"
+"More information needed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:264
+#: i2p2www/pages/site/docs/applications/embedding.html:275
+msgid "If you require assistance, please contact us."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:270
+msgid "Maven jars"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:271
+msgid ""
+"We have a limited number of our jars on Maven"
+" Central.\n"
+"There are numerous trac tickets for us to address that will improve and "
+"expand the released jars on Maven Central."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:281
+msgid "Datagram (DHT) considerations"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:282
+msgid ""
+"If your application is using I2P datagrams, e.g. for a DHT,\n"
+"there's lots of advanced options available to reduce overhead and "
+"increase reliability.\n"
+"This may take some time and experimentation to get working well.\n"
+"Be aware of size/reliability tradeoffs. Talk to us for help.\n"
+"It is possible - and recommended - to use Datagrams and Streaming on the "
+"same Destination.\n"
+"Don't create separate Destinations for this.\n"
+"Don't try to store your unrelated data in the existing network DHTs "
+"(iMule, bote, bittorrent, and router).\n"
+"Build your own. If you are hardcoding seed nodes, we recommend that you "
+"have several."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:295
+msgid "Comarketing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:296
+msgid ""
+"Let's work together. Don't wait until it's done.\n"
+"Give us your Twitter handle and start tweeting about it, we will return "
+"the favor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:302
+msgid "Malware"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:303
+msgid ""
+"Please don't use I2P for evil.\n"
+"It could cause great harm both to our network and our reputation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:309
+msgid "Join Us"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:310
+msgid ""
+"This may be obvious, but join the community. Run I2P 24/7. Start an "
+"eepsite about your project.\n"
+"Hang out in IRC #i2p-dev. Post on the forums. Spread the word.\n"
+"We can help get you users, testers, translators, or even coders."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:318
+msgid "Application Examples"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:319
+msgid ""
+"You may wish to install and play with the I2P Android app, and look at "
+"its code, for an example of an application that bundles the router.\n"
+"See what we expose to the user and what we hide.\n"
+"Look at the state machine we use to start and stop the router.\n"
+"Other examples are: Vuze, the Nightweb Android app, iMule, TAILS, iCloak,"
+" and Monero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:327
+msgid "Code Example"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:328
+msgid ""
+"None of the above actually tells you how to write your code to\n"
+"bundle the Java router, so following is a brief example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/embedding.html:358
+msgid ""
+"This code is for the case where your application starts the router, as in"
+" our Android app.\n"
+"You could also have the router start the application via the "
+"clients.config and i2ptunnel.config files,\n"
+"together with Jetty webapps,\n"
+"as is done in our Java packages.\n"
+"As always, state management is the difficult part."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:3
+msgid "February 2014"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:8
+#, python-format
+msgid ""
+"Clients may be started directly by the router when they are listed\n"
+"in the clients.config file.\n"
+"These clients may be \"managed\" or \"unmanaged\".\n"
+"This is handled by the ClientAppManager.\n"
+"Additionally, managed or unmanaged clients may register with the\n"
+"ClientAppManager so that other clients may retrieve a reference to them.\n"
+"There is also a simple Port Mapper facility for clients to register an\n"
+"internal port that other clients may look up."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:21
+msgid ""
+"As of release 0.9.4, the router supports managed clients.\n"
+"Managed clients are instantiated and started by the ClientAppManager.\n"
+"The ClientAppManager maintains a reference to the client and receives "
+"updates on the client's state.\n"
+"Managed clients are preferred, as it is much easier to implement state "
+"tracking\n"
+"and to start and stop a client. It also is much easier to avoid static "
+"references in the client code\n"
+"which could lead to excessive memory usage after a client is stopped.\n"
+"Managed clients may be started and stopped by the user in the router "
+"console,\n"
+"and are stopped at router shutdown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:31
+msgid ""
+"Managed clients implement either the net.i2p.app.ClientApp or "
+"net.i2p.router.app.RouterApp interface.\n"
+"Clients implementing the ClientApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:38
+msgid ""
+"Clients implementing the RouterApp interface must provide the following "
+"constructor:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:44
+msgid "The arguments provided are specified in the clients.config file."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:48
+msgid "Unmanaged Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:49
+msgid ""
+"If the main class specified in the clients.config file does not implement"
+" a managed interface,\n"
+"it will be started with main() with the arguments specified,\n"
+"and stopped with main() with the arguments specified.\n"
+"The router does not maintain a reference, since all interactions are via "
+"the static main() method.\n"
+"The console cannot provide accurate state information to the user."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:57
+msgid "Registered Clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:58
+msgid ""
+"Clients, whether managed or unmanaged, may register with the "
+"ClientAppManager\n"
+"so that other clients may retrieve a reference to them.\n"
+"Registration is by name.\n"
+"Known registered clients are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:68
+msgid "Port Mapper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/managed-clients.html:69
+msgid ""
+"The router also provides a simple mechanism for clients to find an "
+"internal socket service,\n"
+"such as the HTTP proxy. This is provided by the Port Mapper.\n"
+"Registration is by name.\n"
+"Clients that register generally provide an internal emulated socket on "
+"that port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:2
+msgid "Supported Applications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:5
+#: i2p2www/pages/site/docs/applications/supported.html:188
+msgid "Blogging, Forums, and Wikis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:7
+#: i2p2www/pages/site/docs/applications/supported.html:234
+msgid "Decentralized File Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:10
+#: i2p2www/pages/site/docs/applications/supported.html:246
+msgid "Development Tools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:13
+#: i2p2www/pages/site/docs/applications/supported.html:248
+msgid "Version control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:17
+#: i2p2www/pages/site/docs/applications/supported.html:267
+msgid "Domain Naming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:19
+#: i2p2www/pages/site/docs/applications/supported.html:285
+msgid "Email"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:22
+#: i2p2www/pages/site/docs/applications/supported.html:330
+msgid "File Sharing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:25
+#: i2p2www/pages/site/docs/applications/supported.html:332
+msgid "BitTorrent clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:27
+#: i2p2www/pages/site/docs/applications/supported.html:375
+msgid "BitTorrent trackers and indexers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:36
+#: i2p2www/pages/site/docs/applications/supported.html:442
+msgid "Network Administration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:39
+#: i2p2www/pages/site/docs/applications/supported.html:444
+msgid "General-purpose socket utilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:46
+#: i2p2www/pages/site/docs/applications/supported.html:485
+msgid "Real-time Chat"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:49
+#: i2p2www/pages/site/docs/applications/supported.html:487
+msgid "Instant messaging clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:51
+#: i2p2www/pages/site/docs/applications/supported.html:497
+msgid "IRC clients"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:53
+#: i2p2www/pages/site/docs/applications/supported.html:548
+msgid "IRC servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:58
+#: i2p2www/pages/site/docs/applications/supported.html:564
+msgid "Web Browsing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:61
+#: i2p2www/pages/site/docs/applications/supported.html:566
+msgid "Anonymous websites"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:63
+#: i2p2www/pages/site/docs/applications/supported.html:615
+msgid "Proxy software"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:65
+#: i2p2www/pages/site/docs/applications/supported.html:640
+msgid "Inproxies"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:67
+#: i2p2www/pages/site/docs/applications/supported.html:681
+msgid "Outproxies"
+msgstr "Východzie proxy"
+
+#: i2p2www/pages/site/docs/applications/supported.html:72
+#: i2p2www/pages/site/docs/applications/supported.html:695
+msgid "Website Hosting"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:75
+#: i2p2www/pages/site/docs/applications/supported.html:710
+msgid "Web servers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:82
+#, python-format
+msgid ""
+"This is intended to be a comprehensive listing of applications used with\n"
+"I2P. If you know of something that's missing please submit a ticket on\n"
+"Trac, and be sure to select the\n"
+"“www” component in the submission form."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:89
+msgid ""
+"\n"
+"Supported applications are tagged with one or more of the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:94
+#: i2p2www/pages/site/docs/applications/supported.html:281
+#: i2p2www/pages/site/docs/applications/supported.html:313
+#: i2p2www/pages/site/docs/applications/supported.html:338
+#: i2p2www/pages/site/docs/applications/supported.html:707
+msgid "bundled"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:97
+msgid ""
+"Bundled application — I2P ships with a few officially\n"
+"supported applications that let new users take immediate advantage of\n"
+"some of I2P's more useful capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:105
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:294
+#: i2p2www/pages/site/docs/applications/supported.html:407
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:526
+msgid "plugin"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:108
+#, python-format
+msgid ""
+"Third-party plugin — I2P's plugin system provides convenient\n"
+"deployment of I2P-enabled applications and allows tighter integration\n"
+"with the router. Plugins are [reviewed by the community](http://%(plugins)s) to identify security and\n"
+"anonymity issues."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:222
+#: i2p2www/pages/site/docs/applications/supported.html:230
+#: i2p2www/pages/site/docs/applications/supported.html:243
+#: i2p2www/pages/site/docs/applications/supported.html:254
+#: i2p2www/pages/site/docs/applications/supported.html:263
+#: i2p2www/pages/site/docs/applications/supported.html:326
+#: i2p2www/pages/site/docs/applications/supported.html:345
+#: i2p2www/pages/site/docs/applications/supported.html:356
+#: i2p2www/pages/site/docs/applications/supported.html:371
+#: i2p2www/pages/site/docs/applications/supported.html:417
+#: i2p2www/pages/site/docs/applications/supported.html:429
+#: i2p2www/pages/site/docs/applications/supported.html:438
+#: i2p2www/pages/site/docs/applications/supported.html:453
+#: i2p2www/pages/site/docs/applications/supported.html:459
+#: i2p2www/pages/site/docs/applications/supported.html:465
+#: i2p2www/pages/site/docs/applications/supported.html:475
+#: i2p2www/pages/site/docs/applications/supported.html:481
+#: i2p2www/pages/site/docs/applications/supported.html:493
+#: i2p2www/pages/site/docs/applications/supported.html:526
+#: i2p2www/pages/site/docs/applications/supported.html:532
+#: i2p2www/pages/site/docs/applications/supported.html:538
+#: i2p2www/pages/site/docs/applications/supported.html:544
+#: i2p2www/pages/site/docs/applications/supported.html:621
+#: i2p2www/pages/site/docs/applications/supported.html:630
+#: i2p2www/pages/site/docs/applications/supported.html:636
+#: i2p2www/pages/site/docs/applications/supported.html:707
+#: i2p2www/pages/site/docs/applications/supported.html:722
+#: i2p2www/pages/site/docs/applications/supported.html:728
+#: i2p2www/pages/site/docs/applications/supported.html:734
+#: i2p2www/pages/site/docs/applications/supported.html:740
+msgid "standalone"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:119
+#: i2p2www/pages/site/docs/applications/supported.html:197
+#: i2p2www/pages/site/docs/applications/supported.html:204
+#: i2p2www/pages/site/docs/applications/supported.html:210
+#: i2p2www/pages/site/docs/applications/supported.html:216
+#: i2p2www/pages/site/docs/applications/supported.html:365
+#: i2p2www/pages/site/docs/applications/supported.html:389
+#: i2p2www/pages/site/docs/applications/supported.html:398
+#: i2p2www/pages/site/docs/applications/supported.html:554
+#: i2p2www/pages/site/docs/applications/supported.html:560
+msgid "standalone/mod"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:122
+msgid ""
+"Third-party standalone application — Many standard network\n"
+"applications only require careful setup and configuration to communicate\n"
+"anonymously over I2P. These are tagged with standalone. Some\n"
+"applications, tagged with standalone/mod, require patching to\n"
+"function properly over I2P or to prevent inadvertent disclosure of\n"
+"identifying information such as the user's hostname or external IP\n"
+"address."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:135
+#: i2p2www/pages/site/docs/applications/supported.html:304
+#: i2p2www/pages/site/docs/applications/supported.html:574
+#: i2p2www/pages/site/docs/applications/supported.html:584
+#: i2p2www/pages/site/docs/applications/supported.html:593
+#: i2p2www/pages/site/docs/applications/supported.html:599
+#: i2p2www/pages/site/docs/applications/supported.html:605
+#: i2p2www/pages/site/docs/applications/supported.html:611
+#: i2p2www/pages/site/docs/applications/supported.html:653
+#: i2p2www/pages/site/docs/applications/supported.html:661
+#: i2p2www/pages/site/docs/applications/supported.html:670
+#: i2p2www/pages/site/docs/applications/supported.html:677
+#: i2p2www/pages/site/docs/applications/supported.html:691
+msgid "service"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:138
+msgid ""
+"Third-party essential network service — Services which on\n"
+"the I2P network are analogous to those provided on the public Internet\n"
+"by hosting providers, ISPs, and Google: eepsite indexes and jump\n"
+"services, search engines, email, DNS-style name services, hosting,\n"
+"proxies, etc. These services focus on boosting the usefulness of the\n"
+"network as a whole, and making network content more discoverable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:150
+#: i2p2www/pages/site/docs/applications/supported.html:222
+msgid "unmaintained"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:153
+msgid ""
+"Unmaintained — This is used to tag plugins, applications,\n"
+"and services which appear to be unmaintained and may be removed from\n"
+"this listing in the future."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:161
+#, python-format
+msgid ""
+"Warning: Using an application, plugin, or service with I2P\n"
+"doesn't automatically protect your anonymity. I2P is merely a set of "
+"tools\n"
+"which can help you mitigate certain identified\n"
+"threats to anonymity. We do not and cannot make any guarantees about "
+"the\n"
+"safety of the applications, plugins, and services listed below. Most\n"
+"applications and plugins must be properly configured, and some will need "
+"to\n"
+"be patched — and even then your anonymity might not be assured. "
+"Similarly,\n"
+"services could put your anonymity at risk, either by design or through\n"
+"carelessness on their part or your own."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:173
+msgid ""
+"If you have doubts about the suitability of an application,\n"
+"plugin, or service for use with I2P, you are urged to inquire about "
+"privacy\n"
+"issues with its maintainers, to search its mailing lists and bug tracker "
+"if\n"
+"one exists, and consult trusted, knowledgeable members of the I2P\n"
+"community."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:181
+msgid ""
+"Take responsibility for your own anonymity and safety — always\n"
+"seek expert advice, educate yourself, practice good judgment, be mindful "
+"of\n"
+"disclosing personally identifying information, and don't take\n"
+"shortcuts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:203
+msgid "Lightweight forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:209
+msgid "Another lightweight blogging platform."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:215
+msgid "Most popular open source forum software."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:221
+msgid "Distributed forums software, originally developed by jrandom."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:226
+#, python-format
+msgid ""
+"A Java-based MediaWiki clone. No external database needed.\n"
+"Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:238
+#, python-format
+msgid ""
+"Port of the Tahoe-"
+"LAFS\n"
+"distributed file system to the I2P network. Controller plugin here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:253
+msgid "Most popular distributed version control system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:259
+#, python-format
+msgid ""
+"Another distributed version control system. Currently\n"
+"used in I2P development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:271
+#, python-format
+msgid ""
+"Provides management of addressbooks, which are part of a simple,\n"
+"user-controlled I2P naming system somewhat\n"
+"analogous to the Internet's Domain Name System (DNS). Addressbooks map\n"
+"Base64 destinations to short, usually human-readable “domain” names "
+"ending\n"
+"with a .i2p suffix which the I2P router's HTTP client can resolve back to"
+"\n"
+"Base64 addresses. (Note: While Base64 destinations are globally\n"
+"unique, addressbook “domain” names only resolve to unique destinations\n"
+"locally.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:290
+msgid ""
+"Serverless peer-to-peer email application using a distributed hash table\n"
+"(DHT) for secure mail storage."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:299
+msgid ""
+"Provides email service within the I2P network via @mail.i2p addresses,\n"
+"and email gateway service between the I2P network and the public Internet"
+"\n"
+"via @i2pmail.org addresses. One of the oldest continuous services on I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:309
+msgid ""
+"Simple web browser-based email interface. Configured to use Postman's\n"
+"email service by default."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:318
+#, python-format
+msgid ""
+"Can be configured to use Postman's email service. See\n"
+"this comparison of MUAs,\n"
+"and configuration settings for\n"
+"SMTP and POP3."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:337
+msgid "I2P's integrated BitTorrent client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:343
+msgid ""
+"Modified version of I2PSnark, no more supported neither\n"
+" functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:350
+msgid ""
+"\n"
+"A fork of rufus that uses the Basic Open Bridge (BOB) and has many\n"
+"improvements, including using the latest wxwidgets and python. It also\n"
+"supports use of seedless if installed for trackerless torrents and\n"
+"magnet-link like fetching of torrents within I2P.\n"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:361
+msgid ""
+"Clean, full-featured cross-platform BitTorrent client with official\n"
+"ports for several GUI toolkits."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:370
+msgid "Has a plugin providing I2P support."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:377
+#, python-format
+msgid ""
+"For a detailed feature comparison of I2P-enabled trackers/indexers, see\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:385
+msgid ""
+"The code that powered one of the first major tracker/indexer sites on the"
+"\n"
+"Internet. Patched for I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:394
+#, python-format
+msgid ""
+"Lightweight tracker/indexer. I2P mod available in the i2p.opentracker\n"
+"branch of the I2P Monotone repository."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:403
+#, python-format
+msgid ""
+"zzz's Java-based open tracker. More info\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:416
+msgid "I2P port of the aMule ED2K client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:425
+#, python-format
+msgid ""
+"Port of the Phex Gnutella "
+"client. Website\n"
+"for plugin version here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:434
+#, python-format
+msgid ""
+"Cache for Gnutella peers on I2P. Website for plugin version\n"
+"here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:449
+msgid ""
+"OpenBSD's rewrite of the Unix standard tool, netcat, for socket relaying."
+"\n"
+"Several clones, ports, and forks have appeared over the years."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:458
+msgid "Like netcat but more powerful."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:464
+msgid ""
+"Proxy providing simple, transparent SOCKS-ification of network "
+"applications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:474
+msgid ""
+"Most popular implementation of the Secure Shell (SSH) protocol and "
+"related tools."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:480
+msgid "Open source Secure Shell (SSH) client for Windows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:492
+msgid "IM client with multiple incarnations, unsuported."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:499
+msgid ""
+"Many IRC clients leak identifying information to servers or other\n"
+"clients, so I2P's IRC and SOCKS IRC client tunnels filter certain inbound"
+"\n"
+"and outbound messages to scrub data such as LAN IP addresses, external IP"
+"\n"
+"addresses, local hostnames, and the name and version of the IRC client. "
+"Two\n"
+"message types in particular, DCC and CTCP, can't be sufficiently "
+"anonymized\n"
+"without changes to the protocols or to IRC client/server code, so they "
+"are\n"
+"completely blocked, except for CTCP ACTION (the message emitted by the\n"
+"/me
command) which isn't inherently dangerous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:510
+msgid ""
+"I2P's IRC filtering may not cover every possible leak — users should also"
+"\n"
+"check if their client is sending their real name or local username. "
+"Packet\n"
+"sniffers such as Wireshark are\n"
+"useful here. Eliminating remaining leaks may be as simple as changing the"
+"\n"
+"client's default configuration. If that doesn't help, inform the I2P\n"
+"developers; they may be able to solve it via additional filtering."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:522
+#, python-format
+msgid ""
+"Small Java-based IRC client. Plugin available here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:531
+msgid "Cross-platform graphical IRC client based on XChat."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:537
+msgid "Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:543
+msgid "Another Unixy terminal-based IRC client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:553
+msgid "IRC server developed from scratch."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:559
+msgid "Most popular IRC server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:571
+msgid ""
+"Any website hosted anonymously on I2P, reachable through the I2P router's"
+" HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:579
+msgid ""
+"Distributed anonymous websites hosted\n"
+"using Tahoe-LAFS-I2P, currently only reachable with Tahoe-LAFS-I2P\n"
+"clients or through the Tahoe-LAFS-I2P HTTP proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:589
+#, python-format
+msgid ""
+"Website for sponge's jump service.\n"
+"Source code available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:598
+msgid "Another jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:604
+msgid "Dynamically updated eepsite index."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:610
+#, python-format
+msgid "Website for zzz's jump service."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:620
+msgid "SOCKS-enabled caching web proxy with basic filtering capabilities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:626
+msgid ""
+"Privacy-focused non-caching web proxy with advanced filtering\n"
+"capabilities. Excels at removing ads and other junk."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:635
+msgid "Venerable caching web proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:642
+msgid "Gateways allowing users on the public Internet to access eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:649
+#, python-format
+msgid ""
+"tino's inproxy on the public Internet,\n"
+"currently out of service,"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:658
+#: i2p2www/pages/site/docs/applications/supported.html:667
+#: i2p2www/pages/site/docs/applications/supported.html:674
+msgid "Another inproxy on the public Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:683
+msgid ""
+"Gateways allowing I2P users to access content hosted on the public "
+"Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:690
+msgid "Publicly advertised outproxy running Squid, located in Europe."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:700
+msgid ""
+"Lightweight web server and Java servlet container. I2P is tightly\n"
+"integrated with a bundled copy of Jetty which by default is configured to"
+"\n"
+"host the user's eepsite. The "
+"bundled\n"
+"Jetty also serves the I2P router console and web applications bundled "
+"with\n"
+"I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:712
+msgid ""
+"In addition to Jetty, any web server should function over I2P without\n"
+"modification so long as it's HTTP-compliant. Some web servers known to\n"
+"currently serve content on the I2P network are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:721
+msgid "Most popular web server on the public WWW."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:727
+msgid "Web server and Java servlet container. More features than Jetty."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:733
+msgid "Fast lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/applications/supported.html:739
+msgid "High-performance lightweight web server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:2
+msgid "Naming discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:4
+#, python-format
+msgid ""
+"NOTE: The following is a discussion of the reasons behind the I2P naming "
+"system,\n"
+"common arguments and possible alternatives.\n"
+"See the naming page for current documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:10
+msgid "Discarded alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:12
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning "
+"with\n"
+"advocates across the spectrum of possibilities. However, given I2P's "
+"inherent\n"
+"demand for secure communication and decentralized operation, the "
+"traditional\n"
+"DNS-style naming system is clearly out, as are \"majority rules\" voting "
+"systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:19
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage "
+"done\n"
+"by hijacking a site can be tremendous - and insecure destinations have no"
+"\n"
+"value. DNSsec itself still falls back on registrars and certificate "
+"authorities,\n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the reply\n"
+"spoofed, as they are encrypted to the destination's public keys, and a "
+"destination\n"
+"itself is just a pair of public keys and a certificate. DNS-style "
+"systems on the\n"
+"other hand allow any of the name servers on the lookup path to mount "
+"simple denial\n"
+"of service and spoofing attacks. Adding on a certificate authenticating "
+"the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:33
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness of\n"
+"Sybil attacks in anonymous systems - the attacker can simply create an "
+"arbitrarily\n"
+"high number of peers and \"vote\" with each to take over a given name. "
+"Proof-of-work\n"
+"methods can be used to make identity non-free, but as the network grows "
+"the load\n"
+"required to contact everyone to conduct online voting is implausible, or "
+"if the\n"
+"full network is not queried, different sets of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:42
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of "
+"a \n"
+"naming system out of the (IP-like) communication layer. The bundled "
+"naming library\n"
+"includes a simple service provider interface which alternate naming systems can\n"
+"plug into, allowing end users to drive what sort of naming tradeoffs they"
+" prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:50
+msgid ""
+"See also Names: "
+"Decentralized, Secure, Human-Meaningful: Choose Two."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:55
+msgid "(adapted from a post in the old Syndie, November 26, 2005)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:58
+msgid ""
+"Q:\n"
+"What to do if some hosts \n"
+"do not agree on one address and if some addresses are working, others are"
+" not? \n"
+"Who is the right source of a name?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:64
+msgid ""
+"A:\n"
+"You don't. This is actually a critical difference between names on I2P "
+"and how \n"
+"DNS works - names in I2P are human readable, secure, but not globally"
+" \n"
+"unique. This is by design, and an inherent part of our need for "
+"security."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:70
+msgid ""
+"If I could somehow convince you to change the destination associated with"
+" some \n"
+"name, I'd successfully \"take over\" the site, and under no circumstances"
+" is that \n"
+"acceptable. Instead, what we do is make names locally unique: "
+"they are \n"
+"what you use to call a site, just as how you can call things "
+"whatever \n"
+"you want when you add them to your browser's bookmarks, or your IM "
+"client's \n"
+"buddy list. Who you call \"Boss\" may be who someone else calls "
+"\"Sally\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:78
+msgid "Names will not, ever, be securely human readable and globally unique."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:83
+msgid ""
+"The following from zzz is a review of several common\n"
+"complaints about I2P's naming system."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:89
+msgid ""
+"Inefficiency:\n"
+"The whole hosts.txt is downloaded (if it has changed, since eepget uses "
+"the etag and last-modified headers).\n"
+"It's about 400K right now for almost 800 hosts."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:94
+msgid ""
+"True, but this isn't a lot of traffic in the context of i2p, which is "
+"itself wildly inefficient\n"
+"(floodfill databases, huge encryption overhead and padding, garlic "
+"routing, etc.).\n"
+"If you downloaded a hosts.txt file from someone every 12 hours it "
+"averages out to about 10 bytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:99
+msgid ""
+"As is usually the case in i2p, there is a fundamental tradeoff here "
+"between anonymity and efficiency.\n"
+"Some would say that using the etag and last-modified headers is hazardous"
+" because it exposes when you\n"
+"last requested the data.\n"
+"Others have suggested asking for specific keys only (similar to what jump"
+" services do, but\n"
+"in a more automated fashion), possibly at a further cost in anonymity."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:106
+#, python-format
+msgid ""
+"Possible improvements would be a replacement or supplement to addressbook"
+" (see %(i2host)sp),\n"
+"or something simple like subscribing to http://example.i2p/cgi-"
+"bin/recenthosts.cgi rather than http://example.i2p/hosts.txt.\n"
+"If a hypothetical recenthosts.cgi distributed all hosts from the last 24 "
+"hours, for example,\n"
+"that could be both more efficient and more anonymous than the current "
+"hosts.txt with last-modified and etag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:112
+#, python-format
+msgid ""
+"A sample implementation is on stats.i2p at\n"
+"%(url)s.\n"
+"This script returns an Etag with a timestamp.\n"
+"When a request comes in with the If-None-Match etag,\n"
+"the script ONLY returns new hosts since that timestamp, or 304 Not "
+"Modified if there are none.\n"
+"In this way, the script efficiently returns only the hosts the subscriber"
+"\n"
+"does not know about, in an addressbook-compatible manner."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:121
+msgid ""
+"So the inefficiency is not a big issue and there are several ways to "
+"improve things without\n"
+"radical change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:127
+msgid ""
+"Not Scalable:\n"
+"The 400K hosts.txt (with linear search) isn't that big at the moment and\n"
+"we can probably grow by 10x or 100x before it's a problem."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:132
+msgid ""
+"As far as network traffic see above.\n"
+"But unless you're going to do a slow real-time query over the network for"
+"\n"
+"a key, you need to have the whole set of keys stored locally, at a cost "
+"of about 500 bytes per key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:139
+msgid ""
+"Requires configuration and \"trust\":\n"
+"Out-of-the-box addressbook is only subscribed to "
+"http://www.i2p2.i2p/hosts.txt, which is rarely updated,\n"
+"leading to poor new-user experience."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:144
+msgid ""
+"This is very much intentional. jrandom wants a user to \"trust\" a "
+"hosts.txt\n"
+"provider, and as he likes to say, \"trust is not a boolean\".\n"
+"The configuration step attempts to force users to think about issues of "
+"trust in an anonymous network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:149
+msgid ""
+"As another example, the \"Eepsite Unknown\" error page in the HTTP Proxy\n"
+"lists some jump services, but doesn't \"recommend\" any one in "
+"particular,\n"
+"and it's up to the user to pick one (or not).\n"
+"jrandom would say we trust the listed providers enough to list them but "
+"not enough to\n"
+"automatically go fetch the key from them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:156
+msgid ""
+"How successful this is, I'm not sure.\n"
+"But there must be some sort of hierarchy of trust for the naming system.\n"
+"To treat everyone equally may increase the risk of hijacking."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:163
+msgid "It isn't DNS"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:166
+msgid ""
+"Unfortunately real-time lookups over i2p would significantly slow down "
+"web browsing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:169
+msgid ""
+"Also, DNS is based on lookups with limited caching and time-to-live, "
+"while i2p\n"
+"keys are permanent."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:173
+msgid "Sure, we could make it work, but why? It's a bad fit."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:178
+msgid ""
+"Not reliable:\n"
+"It depends on specific servers for addressbook subscriptions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:182
+msgid ""
+"Yes it depends on a few servers that you have configured.\n"
+"Within i2p, servers and services come and go.\n"
+"Any other centralized system (for example DNS root servers) would\n"
+"have the same problem. A completely decentralized system (everybody is "
+"authoritative)\n"
+"is possible by implementing an \"everybody is a root DNS server\" "
+"solution, or by\n"
+"something even simpler, like a script that adds everybody in your "
+"hosts.txt to your addressbook."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:190
+msgid ""
+"People advocating all-authoritative solutions generally haven't thought "
+"through\n"
+"the issues of conflicts and hijacking, however."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:196
+msgid ""
+"Awkward, not real-time:\n"
+"It's a patchwork of hosts.txt providers, key-add web form providers, jump"
+" service providers,\n"
+"eepsite status reporters.\n"
+"Jump servers and subscriptions are a pain, it should just work like DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:202
+msgid "See the reliability and trust sections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:207
+msgid ""
+"So, in summary, the current system is not horribly broken, inefficient, "
+"or un-scalable,\n"
+"and proposals to \"just use DNS\" aren't well thought-through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:212
+msgid "Alternatives"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:213
+msgid ""
+"The I2P source contains several pluggable naming systems and supports "
+"configuration options\n"
+"to enable experimentation with naming systems."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:218
+msgid ""
+"Meta - calls two or more other naming systems in order.\n"
+"By default, calls PetName then HostsTxt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:222
+msgid ""
+"PetName - Looks up in a petnames.txt file.\n"
+"The format for this file is NOT the same as hosts.txt."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:226
+msgid "HostsTxt - Looks up in the following files, in order:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:234
+msgid ""
+"AddressDB - Each host is listed in a separate file in a addressDb/"
+" directory."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:237
+msgid ""
+"Eepget - does an HTTP lookup request from an external\n"
+"server - must be stacked after the HostsTxt lookup with Meta.\n"
+"This could augment or replace the jump system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:243
+msgid ""
+"Exec - calls an external program for lookup, allows\n"
+"additional experimentation in lookup schemes, independent of java.\n"
+"Can be used after HostsTxt or as the sole naming system.\n"
+"Includes in-memory caching."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:249
+msgid "Dummy - used as a fallback for Base64 names, otherwise fails."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:253
+msgid ""
+"The current naming system can be changed with the advanced config option "
+"'i2p.naming.impl'\n"
+"(restart required).\n"
+"See core/java/src/net/i2p/client/naming for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:258
+msgid ""
+"Any new system should be stacked with HostsTxt, or should\n"
+"implement local storage and/or the addressbook subscription functions, "
+"since addressbook\n"
+"only knows about the hosts.txt files and format."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:264
+msgid "Certificates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:265
+msgid ""
+"I2P destinations contain a certificate, however at the moment that "
+"certificate\n"
+"is always null.\n"
+"With a null certificate, base64 destinations are always 516 bytes ending "
+"in \"AAAA\",\n"
+"and this is checked in the addressbook merge mechanism, and possibly "
+"other places.\n"
+"Also, there is no method available to generate a certificate or add it to"
+" a\n"
+"destination. So these will have to be updated to implement certificates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:273
+#, python-format
+msgid ""
+"One possible use of certificates is for proof of work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:276
+msgid ""
+"Another is for \"subdomains\" (in quotes because there is really no such "
+"thing,\n"
+"i2p uses a flat naming system) to be signed by the 2nd level domain's "
+"keys."
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:280
+msgid ""
+"With any certificate implementation must come the method for verifying "
+"the\n"
+"certificates.\n"
+"Presumably this would happen in the addressbook merge code.\n"
+"Is there a method for multiple types of certificates, or multiple "
+"certificates?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/discussions/naming.html:286
+msgid ""
+"Adding on a certificate authenticating the\n"
+"responses as signed by some centralized certificate authority would "
+"address many of\n"
+"the hostile nameserver issues but would leave open replay attacks as well"
+" as \n"
+"hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:2
+msgid "ElGamal/AES + SessionTag Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:7
+msgid "ElGamal/AES+SessionTags is used for end-to-end encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:11
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the use of 2048bit ElGamal, AES256, SHA256, and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:19
+#: i2p2www/pages/site/docs/how/tech-intro.html:508
+msgid ""
+"The first time a router wants to encrypt a garlic message to another "
+"router, \n"
+"they encrypt the keying material for an AES256 session key with ElGamal "
+"and \n"
+"append the AES256/CBC encrypted payload after that encrypted ElGamal "
+"block. \n"
+"In addition to the encrypted payload, the AES encrypted section contains "
+"the \n"
+"payload length, the SHA256 hash of the unencrypted payload, as well as a "
+"number \n"
+"of \"session tags\" - random 32 byte nonces. The next time the sender "
+"wants \n"
+"to encrypt a garlic message to another router, rather than ElGamal "
+"encrypt \n"
+"a new session key they simply pick one of the previously delivered "
+"session \n"
+"tags and AES encrypt the payload like before, using the session key used "
+"with \n"
+"that session tag, prepended with the session tag itself. When a router "
+"receives \n"
+"a garlic encrypted message, they check the first 32 bytes to see if it "
+"matches \n"
+"an available session tag - if it does, they simply AES decrypt the "
+"message, \n"
+"but if it does not, they ElGamal decrypt the first block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:35
+#: i2p2www/pages/site/docs/how/tech-intro.html:524
+msgid ""
+"Each session tag can be used only once so as to prevent internal "
+"adversaries \n"
+"from unnecessarily correlating different messages as being between the "
+"same \n"
+"routers. The sender of an ElGamal/AES+SessionTag encrypted message "
+"chooses \n"
+"when and how many tags to deliver, prestocking the recipient with enough "
+"tags \n"
+"to cover a volley of messages. Garlic messages may detect the successful "
+"tag \n"
+"delivery by bundling a small additional message as a clove (a \"delivery "
+"status \n"
+"message\") - when the garlic message arrives at the intended recipient "
+"and \n"
+"is decrypted successfully, this small delivery status message is one of "
+"the \n"
+"cloves exposed and has instructions for the recipient to send the clove "
+"back \n"
+"to the original sender (through an inbound tunnel, of course). When the "
+"original \n"
+"sender receives this delivery status message, they know that the session "
+"tags \n"
+"bundled in the garlic message were successfully delivered."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:50
+msgid ""
+"Session tags themselves have a short lifetime, after which they are \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption.\n"
+"A session will continue to exist until all its tags are exhausted or "
+"expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:61
+msgid ""
+"Sessions are unidirectional. Tags are delivered from Alice to Bob,\n"
+"and Alice then uses the tags, one by one, in subsequent messages to Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:66
+msgid ""
+"Sessions may be established between Destinations, between Routers, or\n"
+"between a Router and a Destination.\n"
+"Each Router and Destination maintains its own Session Key Manager to\n"
+"keep track of Session Keys and Session Tags.\n"
+"Separate Session Key Managers prevents correlation of multiple "
+"Destinations\n"
+"to each other or a Router by adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:77
+msgid "Message Reception"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:78
+msgid ""
+"Each message received has one of two\n"
+"the two possible conditions:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:84
+msgid ""
+"It is part of an existing session and contains a Session Tag and an AES "
+"encrypted block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:85
+msgid "It is for a new session and contains both ElGamal and AES encrypted blocks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:88
+msgid ""
+"When a router receives a message, it will first assume it is from\n"
+"an existing session and attempt to look up the Session Tag and decrypt "
+"the following data using AES.\n"
+"If that fails, it will assume it is for a new session and attempt to\n"
+"decrypt it using ElGamal."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:97
+msgid "New Session Message Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:98
+msgid ""
+"A New Session ElGamal Message contains two parts, an encrypted ElGamal "
+"block\n"
+"and an encrypted AES block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:103
+msgid "The encrypted message contains:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:127
+msgid "ElGamal Block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:128
+msgid "The encrypted ElGamal Block is always 514 bytes long."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:132
+msgid "The unencrypted ElGamal data is 222 bytes long, containing:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:164
+#, python-format
+msgid ""
+"The 32-byte\n"
+"Session Key\n"
+"is the identifier for the session.\n"
+"The 32-byte Pre-IV will be used to generate the IV for the AES block that"
+" follows;\n"
+"the IV is the first 16 bytes of the SHA-256 Hash of the Pre-IV."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:172
+#, python-format
+msgid ""
+"The 222 byte payload is encrypted\n"
+"using ElGamal\n"
+"and the encrypted block is 514 bytes long.\n"
+""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:179
+msgid "AES Block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:180
+msgid "The unencrypted data in the AES block contains the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:254
+msgid "Minimum length: 48 bytes"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:257
+#, python-format
+msgid ""
+"The data is then AES Encrypted,\n"
+"using the session key and IV (calculated from the pre-IV) from the "
+"ElGamal section.\n"
+"The encrypted AES Block length is variable but is always a multiple of 16"
+" bytes.\n"
+""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:266
+#, python-format
+msgid ""
+"Actual max payload length, and max block length, is less than 64 KB; see "
+"the I2NP Overview."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:269
+msgid "New Session Key is currently unused and is never present."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:274
+msgid "Existing Session Message Specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:275
+msgid ""
+"The session tags delivered successfully are remembered for a \n"
+"brief period (15 minutes currently) until they are used or discarded.\n"
+"A tag is used by packaging one in an Existing Session Message that\n"
+"contains only an AES encrypted block, and is not preceded by an\n"
+"ElGamal block."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:283
+msgid ""
+"The existing session message is\n"
+"as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:318
+msgid ""
+"The session tag also serves as\n"
+"the pre-IV. The IV is the first 16 bytes of the SHA-256 Hash of the "
+"sessionTag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:323
+msgid ""
+"To decode a message from an existing session, a router looks up the "
+"Session Tag to find an\n"
+"associated Session Key. If the Session Tag is found, the AES block is "
+"decrypted using the associated Session Key.\n"
+"If the tag is not found, the message is assumed to be a New Session Message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:331
+msgid "Session Tag Configuration Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:332
+#, python-format
+msgid ""
+"As of release 0.9.2, the client may configure the default number of "
+"Session Tags to send\n"
+"and the low tag threshold for the current session.\n"
+"For brief streaming connections or datagrams, these options may be used "
+"to significantly reduce bandwidth.\n"
+"See the I2CP options specification for "
+"details.\n"
+"The session settings may also be overridden on a per-message basis.\n"
+"See the I2CP Send Message"
+" Expires specification for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:345
+msgid ""
+"There are many possible areas to tune the Session Key Manager's "
+"algorithms;\n"
+"some may interact with the streaming library behavior, or have "
+"significant\n"
+"impact on overall performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:352
+msgid ""
+"The number of tags delivered could depend on message size, keeping in "
+"mind\n"
+"the eventual padding to 1KB at the tunnel message layer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:357
+msgid ""
+"Clients could send an estimate of session lifetime to the router, as an "
+"advisory\n"
+"on the number of tags required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:362
+msgid ""
+"Delivery of too few tags causes the router to fall back to an expensive "
+"ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:366
+msgid ""
+"The router may assume delivery of Session Tags, or await acknowledgement "
+"before using them;\n"
+"there are tradeoffs for each strategy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:371
+msgid ""
+"For very brief messages, almost the full 222 bytes of the pre-IV and "
+"padding fields in the ElGamal block\n"
+"could be used for the entire message, instead of establishing a session."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:376
+msgid ""
+"Evaluate padding strategy; currently we pad to a minimum of 128 bytes.\n"
+"Would be better to add a few tags to small messages than pad."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:381
+msgid ""
+"Perhaps things could be more efficient if the Session Tag system was "
+"bidirectional,\n"
+"so tags delivered in the 'forward' path could be used in the 'reverse' "
+"path,\n"
+"thus avoiding ElGamal in the initial response.\n"
+"The router currently plays some tricks like this when sending\n"
+"tunnel test messages to itself."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:389
+#, python-format
+msgid ""
+"Change from Session Tags to\n"
+"a synchronized PRNG."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/elgamal-aes.html:394
+#, python-format
+msgid ""
+"Several of these ideas may require a new I2NP message type, or\n"
+"set a flag in the\n"
+"Delivery"
+" Instructions,\n"
+"or set a magic number in the first few bytes of the Session Key field\n"
+"and accept a small risk of the random Session Key matching the magic "
+"number."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:2
+msgid "Garlic Routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:3
+msgid "March 2014"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:6
+msgid "Garlic Routing and \"Garlic\" Terminology"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:7
+msgid ""
+"The terms \"garlic routing\" and \"garlic encryption\" are often used "
+"rather loosely when referring to I2P's technology.\n"
+"Here, we explain the history of the terms, the various meanings, and\n"
+"the usage of \"garlic\" methods in I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:13
+msgid ""
+"\"Garlic routing\" was first coined by\n"
+"Michael J. Freedman\n"
+"in Roger Dingledine's Free Haven \n"
+"Master's thesis "
+"Section 8.1.1 (June 2000), as derived from \n"
+"Onion Routing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:21
+msgid ""
+"\"Garlic\" may have been used originally by I2P developers because I2P "
+"implements a form of\n"
+"bundling as Freedman describes, or simply to emphasize general "
+"differences from Tor.\n"
+"The specific reasoning may be lost to history.\n"
+"Generally, when referring to I2P, the term \"garlic\" may mean one of "
+"three things:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:28
+#: i2p2www/pages/site/docs/how/garlic-routing.html:39
+msgid "Layered Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:29
+msgid "Bundling multiple messages together"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:30
+#: i2p2www/pages/site/docs/how/garlic-routing.html:96
+msgid "ElGamal/AES Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:33
+msgid ""
+"Unfortunately, I2P's usage of \"garlic\" terminology over the past seven "
+"years has not always been precise; therefore the reader is\n"
+"cautioned when encountering the term.\n"
+"Hopefully, the explanation below will make things clear."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:40
+msgid ""
+"Onion routing is a technique for building paths, or tunnels, through a "
+"series of peers,\n"
+"and then using that tunnel.\n"
+"Messages are repeatedly encrypted by the originator, and then decrypted "
+"by each hop.\n"
+"During the building phase, only the routing instructions for the next hop"
+" are exposed to each peer.\n"
+"During the operating phase, messages are passed through the tunnel, and "
+"the\n"
+"message and its routing instructions are only exposed to the endpoint of "
+"the tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:49
+#, python-format
+msgid ""
+"This is similar to the way Mixmaster\n"
+"(see network comparisons) sends messages "
+"- taking a message, encrypting it\n"
+"to the recipient's public key, taking that encrypted message and "
+"encrypting\n"
+"it (along with instructions specifying the next hop), and then taking "
+"that\n"
+"resulting encrypted message and so on, until it has one layer of "
+"encryption\n"
+"per hop along the path."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:58
+msgid ""
+"In this sense, \"garlic routing\" as a general concept is identical to "
+"\"onion routing\".\n"
+"As implemented in I2P, of course, there are several differences from the "
+"implementation in Tor; see below.\n"
+"Even so, there are substantial similarities such that I2P benefits from a"
+"\n"
+"large amount of"
+" academic research on onion routing,\n"
+"Tor, and similar "
+"mixnets."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:67
+msgid "Bundling Multiple Messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:68
+msgid ""
+"Michael Freedman defined \"garlic routing\" as an extension to onion "
+"routing,\n"
+"in which multiple messages are bundled together.\n"
+"He called each message a \"bulb\".\n"
+"All the messages, each with its own delivery instructions, are exposed at"
+" the\n"
+"endpoint.\n"
+"This allows the efficient bundling of an onion routing \"reply block\" "
+"with the original message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:77
+msgid ""
+"This concept is implemented in I2P, as described below.\n"
+"Our term for garlic \"bulbs\" is \"cloves\".\n"
+"Any number of messages can be\n"
+"contained, instead of just a single message.\n"
+"This is a significant distinction from the onion routing implemented in "
+"Tor.\n"
+"However, it is only one of many major architectural differences between "
+"I2P and Tor;\n"
+"perhaps it is not, by itself, enough to justify a change in terminology."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:87
+msgid ""
+"Another difference\n"
+"from the method described by Freedman\n"
+"is that the path is unidirectional - there is no \"turning point\" as "
+"seen in onion routing\n"
+"or mixmaster reply blocks, which greatly simplifies the algorithm and "
+"allows for more flexible\n"
+"and reliable delivery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:97
+#, python-format
+msgid ""
+"In some cases, \"garlic encryption\" may simply mean\n"
+"ElGamal/AES+SessionTag encryption\n"
+"(without multiple layers)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:105
+msgid "\"Garlic\" Methods in I2P"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:106
+msgid ""
+"Now that we've defined various \"garlic\" terms, we can say that\n"
+"I2P uses garlic routing, bundling and encryption in three places:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:111
+msgid "For building and routing through tunnels (layered encryption)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:112
+msgid ""
+"For determining the success or failure of end to end message delivery "
+"(bundling)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:113
+msgid ""
+"For publishing some network database entries (dampening the probability "
+"of a successful traffic analysis attack) (ElGamal/AES)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:116
+msgid ""
+"There are also significant ways that this technique can be used to "
+"improve the performance of the network, \n"
+"exploiting transport latency/throughput tradeoffs, and branching data "
+"through redundant paths to increase reliability."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:122
+msgid "Tunnel Building and Routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:123
+msgid ""
+"In I2P, tunnels are unidirectional. Each party builds two tunnels,\n"
+"one for outbound and one for inbound traffic.\n"
+"Therefore, four tunnels are required for a single round-trip message and "
+"reply."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:129
+#, python-format
+msgid ""
+"Tunnels are built, and then used, with layered encryption.\n"
+"This is described on the\n"
+"tunnel implementation page.\n"
+"Tunnel building details are defined on\n"
+"this page.\n"
+"We use\n"
+"ElGamal/AES+SessionTag for the encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:141
+#, python-format
+msgid ""
+"Tunnels are a general-purpose mechanism to transport all\n"
+"I2NP messages, and\n"
+"Garlic Messages are not used to "
+"build tunnels.\n"
+"We do not bundle multiple\n"
+"I2NP messages into a single\n"
+"Garlic Message for unwrapping at "
+"the outbound tunnel endpoint;\n"
+"the tunnel encryption is sufficient."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:152
+msgid "End-to-End Message Bundling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:153
+#, python-format
+msgid ""
+"At the layer above tunnels, I2P delivers end-to-end messages between\n"
+"Destinations.\n"
+"Just as within a single tunnel, we use\n"
+"ElGamal/AES+SessionTag for the encryption."
+"\n"
+"Each client message as delivered to the router through the\n"
+"I2CP interface becomes a single\n"
+"Garlic Clove\n"
+"with its own\n"
+"Delivery "
+"Instructions,\n"
+"inside a\n"
+"Garlic Message.\n"
+"Delivery Instructions may specify a Destination, Router, or Tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:171
+msgid ""
+"Generally, a Garlic Message will contain only one clove.\n"
+"However, the router will periodically bundle two additional\n"
+"cloves in the Garlic Message:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:176
+msgid "Garlic Message Cloves"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:179
+#, python-format
+msgid ""
+"A\n"
+"Delivery Status Message,\n"
+"with\n"
+"Delivery "
+"Instructions\n"
+"specifying that it be sent back to the originating router as an "
+"acknowledgment.\n"
+"This is similar to the \"reply block\" or \"reply onion\"\n"
+"described in the references.\n"
+"It is used for determining the success or failure of end to end message "
+"delivery.\n"
+"The originating router may, upon failure to receive the Delivery Status "
+"Message\n"
+"within the expected time period, modify the routing to the far-end "
+"Destination,\n"
+"or take other actions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:192
+#, python-format
+msgid ""
+"A\n"
+"Database Store Message,\n"
+"containing a\n"
+"LeaseSet\n"
+"for the originating Destination, with\n"
+"Delivery "
+"Instructions\n"
+"specifying the far-end destination's router.\n"
+"By periodically bundling a LeaseSet, the router ensures that the far-end "
+"will be able\n"
+"to maintain communications.\n"
+"Otherwise the far-end would have to query a floodfill router for the "
+"network database entry,\n"
+"and all LeaseSets would have to be published to the network database, as "
+"explained on the\n"
+"network database page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:210
+#, python-format
+msgid ""
+"By default, the Delivery Status and Database Store Messages\n"
+"are bundled when the local LeaseSet changes, when additional\n"
+"Session Tags\n"
+"are delivered, or if the messages have not been bundled in the previous "
+"minute.\n"
+"As of release 0.9.2, the client may configure the default number of "
+"Session Tags to send\n"
+"and the low tag threshold for the current session.\n"
+"See the I2CP options specification for "
+"details.\n"
+"The session settings may also be overridden on a per-message basis.\n"
+"See the I2CP Send Message"
+" Expires specification for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:224
+msgid ""
+"Obviously, the additional messages are currently bundled for specific "
+"purposes,\n"
+"and not part of a general-purpose routing scheme."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:229
+msgid ""
+"As of release 0.9.12, the Delivery Status Message is wrapped in another "
+"Garlic Message\n"
+"by the originator so that the contents are encrypted and not visible to "
+"routers on the return path."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:235
+msgid "Storage to the Floodfill Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:236
+#, python-format
+msgid ""
+"As explained on the\n"
+"network database page,\n"
+"local\n"
+"LeaseSets\n"
+"are sent to floodfill routers in a\n"
+"Database Store Message\n"
+"wrapped in a\n"
+"Garlic Message\n"
+"so it is not visible to the tunnel's outbound gateway."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:252
+#, python-format
+msgid ""
+"The Garlic Message mechanism is very flexible and provides a structure "
+"for\n"
+"implementing many types of mixnet delivery methods.\n"
+"Together with the unused delay option in the\n"
+"tunnel"
+" message Delivery Instructions,\n"
+"a wide spectrum of batching, delay, mixing, and routing strategies are "
+"possible."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:260
+msgid ""
+"In particular, there is potential for much more flexibility at the "
+"outbound tunnel endpoint.\n"
+"Messages could possibly be routed from there to one of several tunnels\n"
+"(thus minimizing point-to-point connections), or multicast to several "
+"tunnels\n"
+"for redundancy, or streaming audio and video."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:267
+msgid ""
+"Such experiments may conflict with the need to ensure security and "
+"anonymity, such\n"
+"as limiting certain routing paths, restricting the types of I2NP messages"
+" that may\n"
+"be forwarded along various paths, and enforcing certain message "
+"expiration times."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:273
+#, python-format
+msgid ""
+"As a part of\n"
+"ElGamal/AES encryption,\n"
+"a garlic message contains a sender\n"
+"specified amount of padding data, allowing the sender to take active "
+"countermeasures \n"
+"against traffic analysis.\n"
+"This is not currently used, beyond the requirement to pad to a multiple "
+"of 16 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:282
+#, python-format
+msgid ""
+"Encryption of additional messages to and from the\n"
+"floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:290
+#: i2p2www/pages/site/docs/how/peer-selection.html:296
+msgid "References"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:292
+msgid ""
+"The term garlic routing was first coined in Roger Dingledine's Free Haven"
+" \n"
+"Master's thesis "
+"(June 2000),\n"
+"see Section 8.1.1 authored by\n"
+"Michael J. Freedman."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:299
+msgid "Onion router publications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:301
+msgid "Onion Routing on Wikipedia"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:303
+msgid "Garlic Routing on Wikipedia"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:305
+#, python-format
+msgid ""
+"I2P Meeting 58 (2003) discussing the "
+"implementation of garlic routing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:311
+msgid "Free Haven publications"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/garlic-routing.html:313
+msgid ""
+"Onion routing was first described in Hiding Routing Information\n"
+"by David M. Goldschlag, Michael G. Reed, and Paul F. Syverson in 1996."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:2
+msgid "A Gentle Introduction to How I2P Works"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:4
+msgid ""
+"I2P is a project to build, deploy, and maintain a network supporting "
+"secure and anonymous\n"
+"communication. People using I2P are in control of the tradeoffs between "
+"anonymity, reliability,\n"
+"bandwidth usage, and latency. There is no central point in the network on"
+" which pressure can be\n"
+"exerted to compromise the integrity, security, or anonymity of the "
+"system. The network supports\n"
+"dynamic reconfiguration in response to various attacks, and has been "
+"designed to make use of\n"
+"additional resources as they become available. Of course, all aspects of "
+"the network are open and\n"
+"freely available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:14
+msgid ""
+"Unlike many other anonymizing networks, I2P doesn't try to provide "
+"anonymity by hiding the\n"
+"originator of some communication and not the recipient, or the other way "
+"around. I2P is designed to\n"
+"allow peers using I2P to communicate with each other anonymously — "
+"both sender and recipient\n"
+"are unidentifiable to each other as well as to third parties. For "
+"example, today there are both\n"
+"in-I2P web sites (allowing anonymous publishing / hosting) as well as "
+"HTTP proxies to the normal web\n"
+"(allowing anonymous web browsing). Having the ability to run servers "
+"within I2P is essential, as it\n"
+"is quite likely that any outbound proxies to the normal Internet will be "
+"monitored, disabled, or\n"
+"even taken over to attempt more malicious attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:25
+#, python-format
+msgid ""
+"The network itself is message oriented - it is essentially a secure and "
+"anonymous IP layer, where\n"
+"messages are addressed to cryptographic keys (Destinations) and can be "
+"significantly larger than IP\n"
+"packets. Some example uses of the network include \"eepsites\" "
+"(webservers hosting normal web\n"
+"applications within I2P), a BitTorrent client (\"I2PSnark\"), or a "
+"distributed data store. With the\n"
+"help of the I2PTunnel application, we are "
+"able to stream traditional\n"
+"TCP/IP applications over I2P, such as SSH, IRC, a squid proxy, and even "
+"streaming audio. Most people\n"
+"will not use I2P directly, or even need to know they're using it. Instead"
+" their view will be of one\n"
+"of the I2P enabled applications, or perhaps as a little controller app to"
+" turn on and off various\n"
+"proxies to enable the anonymizing functionality."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:37
+#, python-format
+msgid ""
+"An essential part of designing, developing, and testing an anonymizing "
+"network is to define the threat model, since there is no such thing "
+"as \"true\" anonymity, just\n"
+"increasingly expensive costs to identify someone. Briefly, I2P's intent "
+"is to allow people to\n"
+"communicate in arbitrarily hostile environments by providing good "
+"anonymity, mixed in with\n"
+"sufficient cover traffic provided by the activity of people who require "
+"less anonymity. This way,\n"
+"some users can avoid detection by a very powerful adversary, while others"
+" will try to evade a weaker\n"
+"entity, all on the same network, where each one's messages are "
+"essentially indistinguishable\n"
+"from the others."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:48
+msgid "Why?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:49
+#, python-format
+msgid ""
+"There are a multitude of reasons why we need a system to support "
+"anonymous communication, and\n"
+"everyone has their own personal rationale. There are many other\n"
+"efforts working on finding ways to provide varying degrees of "
+"anonymity to people through the\n"
+"Internet, but we could not find any that met our needs or threat model."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:56
+msgid "How?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:58
+#, python-format
+msgid ""
+"The network at a glance is made up of a set of nodes (\"routers\") with a"
+" number of unidirectional\n"
+"inbound and outbound virtual paths (\"tunnels\", as outlined on the tunnel routing page). Each router is "
+"identified by a cryptographic RouterIdentity which is\n"
+"typically long lived. These routers communicate with each other through "
+"existing transport\n"
+"mechanisms (TCP, UDP, etc), passing various messages. Client applications"
+" have their own\n"
+"cryptographic identifier (\"Destination\") which enables it to send and "
+"receive messages. These\n"
+"clients can connect to any router and authorize the temporary allocation "
+"(\"lease\") of some tunnels\n"
+"that will be used for sending and receiving messages through the network."
+" I2P has its own internal\n"
+"network database (using a modification of the "
+"Kademlia algorithm) for\n"
+"distributing routing and contact information securely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:71
+msgid "Network topology example"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:73
+msgid ""
+"In the above, Alice, Bob, Charlie, and Dave are all running routers with "
+"a single Destination on\n"
+"their local router. They each have a pair of 2-hop inbound tunnels per "
+"destination (labeled 1, 2, 3,\n"
+"4, 5 and 6), and a small subset of each of those router's outbound tunnel"
+" pool is shown with 2-hop\n"
+"outbound tunnels. For simplicity, Charlie's inbound tunnels and Dave's "
+"outbound tunnels are not\n"
+"shown, nor are the rest of each router's outbound tunnel pool (typically "
+"stocked with a few tunnels\n"
+"at a time). When Alice and Bob talk to each other, Alice sends a message "
+"out one of her (pink)\n"
+"outbound tunnels targeting one of Bob's (green) inbound tunnels (tunnel 3"
+" or 4). She knows to send\n"
+"to those tunnels on the correct router by querying the network database, "
+"which is constantly updated\n"
+"as new leases are authorized and old ones expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:85
+#, python-format
+msgid ""
+"If Bob wants to reply to Alice, he simply goes through the same process -"
+" send a message out one of\n"
+"his outbound tunnels targeting one of Alice's inbound tunnels (tunnel 1 "
+"or 2). To make things\n"
+"easier, most messages sent between Alice and Bob are garlic\n"
+"wrapped, bundling the sender's own current lease information so that the "
+"recipient can reply\n"
+"immediately without having to look in the network database for the "
+"current data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:93
+#, python-format
+msgid ""
+"To deal with a wide range of attacks, I2P is fully distributed with no "
+"centralized resources - and\n"
+"hence there are no directory servers keeping statistics regarding the "
+"performance and reliability of\n"
+"routers within the network. As such, each router must keep and maintain "
+"profiles of various routers\n"
+"and is responsible for selecting appropriate peers to meet the anonymity,"
+" performance, and\n"
+"reliability needs of the users, as described in the peer selection\n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:102
+#, python-format
+msgid ""
+"The network itself makes use of a significant number of cryptographic\n"
+"techniques and algorithms - a full laundry list includes 2048bit "
+"ElGamal encryption, 256bit AES\n"
+"in CBC mode with PKCS#5 padding, 1024bit DSA signatures, SHA256 hashes, "
+"2048bit Diffie-Hellman\n"
+"negotiated connections with station to station authentication, and ElGamal / AES+SessionTag."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:110
+msgid ""
+"Content sent over I2P is encrypted through three layers garlic encryption"
+" (used to verify the\n"
+"delivery of the message to the recipient), tunnel encryption (all "
+"messages passing through a tunnel\n"
+"is encrypted by the tunnel gateway to the tunnel endpoint), and inter "
+"router transport layer\n"
+"encryption (e.g. the TCP transport uses AES256 with ephemeral keys)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:117
+msgid ""
+"End-to-end (I2CP) encryption (client application to server application) "
+"was disabled in I2P release\n"
+"0.6; end-to-end (garlic) encryption (I2P client router to I2P server "
+"router) from Alice's router \"a\"\n"
+"to Bob's router \"h\" remains. Notice the different use of terms! All "
+"data from a to h is end-to-end\n"
+"encrypted, but the I2CP connection between the I2P router and the "
+"applications is not end-to-end\n"
+"encrypted! A and h are the routers of Alice and Bob, while Alice and Bob "
+"in following chart are the\n"
+"applications running atop of I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:126
+msgid "End to end layered encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:128
+#, python-format
+msgid ""
+"The specific use of these algorithms are outlined elsewhere."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:132
+msgid ""
+"The two main mechanisms for allowing people who need strong anonymity to "
+"use the network are\n"
+"explicitly delayed garlic routed messages and more comprehensive tunnels "
+"to include support for\n"
+"pooling and mixing messages. These are currently planned for release 3.0,"
+" but garlic routed messages\n"
+"with no delays and FIFO tunnels are currently in place. Additionally, the"
+" 2.0 release will allow\n"
+"people to set up and operate behind restricted routes (perhaps with "
+"trusted peers), as well as the\n"
+"deployment of more flexible and anonymous transports."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:141
+#, python-format
+msgid ""
+"Some questions have been raised with regards to the scalability of I2P, "
+"and reasonably so. There\n"
+"will certainly be more analysis over time, but peer lookup and "
+"integration should be bounded by\n"
+"O(log(N))
due to the network "
+"database's algorithm, while end\n"
+"to end messages should be O(1)
(scale free), since messages "
+"go out K hops through the\n"
+"outbound tunnel and another K hops through the inbound tunnel, with K no "
+"longer than 3. The size of\n"
+"the network (N) bears no impact."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:150
+msgid "When?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:151
+#, python-format
+msgid ""
+"I2P initially began in Feb 2003 as a proposed modification to Freenet to allow it to use "
+"alternate transports, such as JMS, then grew into its own as an\n"
+"'anonCommFramework' in April 2003, turning into I2P in July, with code "
+"being written in earnest\n"
+"starting in August '03. I2P is currently under development, following the"
+" roadmap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:161
+msgid "Who?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:162
+#, python-format
+msgid ""
+"We have a small team spread around several "
+"continents, working to advance\n"
+"different aspects of the project. We are very open to other developers "
+"who want to get involved and\n"
+"anyone else who would like to contribute in other ways, such as "
+"critiques, peer review, testing,\n"
+"writing I2P enabled applications, or documentation. The entire system is "
+"open source - the router\n"
+"and most of the SDK are outright public domain with some BSD and Cryptix "
+"licensed code, while some\n"
+"applications like I2PTunnel and I2PSnark are GPL. Almost everything is "
+"written in Java (1.5+),\n"
+"though some third party applications are being written in Python and "
+"other languages. The code works\n"
+"on Sun Java SE and other Java Virtual"
+" Machines."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:173
+msgid "Where?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:174
+#, python-format
+msgid ""
+"Anyone interested should join us on the IRC channel #i2p-dev (hosted "
+"concurrently on irc.freenode.net,\n"
+"irc.postman.i2p, irc.echelon.i2p, irc.dg.i2p and irc.oftc.net). There are"
+" currently no\n"
+"scheduled development meetings, however archives"
+" are available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:180
+#, python-format
+msgid "The current source is available in monotone."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/intro.html:185
+#, python-format
+msgid "See the Index to Technical Documentation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:2
+msgid "The Network Database"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:3
+msgid "April 2018"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:8
+msgid ""
+"I2P's netDb is a specialized distributed database, containing \n"
+"just two types of data - router contact information (RouterInfos) "
+"and destination contact\n"
+"information (LeaseSets). Each piece of data is signed by the "
+"appropriate party and verified\n"
+"by anyone who uses or stores it. In addition, the data has liveliness "
+"information\n"
+"within it, allowing irrelevant entries to be dropped, newer entries to "
+"replace\n"
+"older ones, and protection against certain classes of attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:17
+msgid ""
+"The netDb is distributed with a simple technique called \"floodfill\",\n"
+"where a subset of all routers, called \"floodfill routers\", maintains "
+"the distributed database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:25
+msgid ""
+"When an I2P router wants to contact another router, they need to know "
+"some \n"
+"key pieces of data - all of which are bundled up and signed by the router"
+" into\n"
+"a structure called the \"RouterInfo\", which is distributed with the "
+"SHA256 of the router's identity\n"
+"as the key. The structure itself contains:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:32
+msgid ""
+"The router's identity (a 2048bit ElGamal encryption key, a signing key, "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:33
+msgid ""
+"The contact addresses at which it can be reached (e.g. TCP: example.org "
+"port 4108)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:34
+msgid "When this was published"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:35
+msgid "A set of arbitrary text options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:36
+msgid "The signature of the above, generated by the identity's signing key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:39
+msgid "Expected Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:41
+msgid ""
+"The following text options, while not strictly required, are expected\n"
+"to be present:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:47
+msgid ""
+"Capabilities flags - used to indicate floodfill participation, "
+"approximate bandwidth, and perceived reachability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:49
+#: i2p2www/pages/site/docs/how/network-database.html:287
+msgid "Floodfill"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:50
+msgid "Hidden"
+msgstr "Skrytý"
+
+#: i2p2www/pages/site/docs/how/network-database.html:51
+#, python-format
+msgid "Under %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+#: i2p2www/pages/site/docs/how/network-database.html:53
+#: i2p2www/pages/site/docs/how/network-database.html:54
+#: i2p2www/pages/site/docs/how/network-database.html:55
+#: i2p2www/pages/site/docs/how/network-database.html:56
+#, python-format
+msgid "%(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:52
+msgid "default"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:57
+msgid "Reachable"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:58
+msgid "Unreachable"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:59
+#, python-format
+msgid "Over %(amount)s shared bandwidth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:66
+msgid "The core library version, always the same as the router version"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:70
+msgid ""
+"Basic network compatibility - A router will refuse to communicate with a "
+"peer having a different netId"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:73
+msgid "Used to determine compatibility with newer features and messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:76
+msgid ""
+"Always sent as 90m, for compatibility with an older scheme where routers "
+"published their actual uptime,\n"
+"and only sent tunnel requests to peers whose uptime was more than 60m"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:82
+msgid ""
+"These values are used by other routers for basic decisions.\n"
+"Should we connect to this router? Should we attempt to route a tunnel "
+"through this router?\n"
+"The bandwidth capability flag, in particular, is used only to determine "
+"whether\n"
+"the router meets a minimum threshold for routing tunnels.\n"
+"Above the minimum threshold, the advertised bandwidth is not used or "
+"trusted anywhere\n"
+"in the router, except for display in the user interface and for debugging"
+" and network analysis."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:91
+msgid "Additional Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:93
+#, python-format
+msgid ""
+"Additional text options include\n"
+"a small number of statistics about the router's health, which are "
+"aggregated by\n"
+"sites such as %(stats)s\n"
+"for network performance analysis and debugging.\n"
+"These statistics were chosen to provide data crucial to the developers,\n"
+"such as tunnel build success rates, while balancing the need for such "
+"data\n"
+"with the side-effects that could result from revealing this data.\n"
+"Current statistics are limited to:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:104
+msgid "Exploratory tunnel build success, reject, and timeout rates"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:105
+msgid "1 hour average number of participating tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:108
+msgid ""
+"Floodfill routers publish additional data on the number of entries in "
+"their network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:112
+msgid ""
+"The data published can be seen in the router's user interface,\n"
+"but is not used or trusted within the router.\n"
+"As the network has matured, we have gradually removed most of the "
+"published\n"
+"statistics to improve anonymity, and we plan to remove more in future "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:119
+msgid "Family Options"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:121
+msgid ""
+"As of release 0.9.24, routers may declare that they are part of a "
+"\"family\", operated by the same entity.\n"
+"Multiple routers in the same family will not be used in a single tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:126
+msgid "The family options are:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:132
+msgid "The family name"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:147
+msgid "RouterInfo Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:148
+msgid ""
+"RouterInfos have no set expiration time.\n"
+"Each router is free to maintain its own local policy to trade off the "
+"frequency of RouterInfo lookups\n"
+"with memory or disk usage.\n"
+"In the current implementation, there are the following general policies:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:155
+msgid ""
+"There is no expiration during the first hour of uptime, as the persistent"
+" stored data may be old."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:158
+msgid "There is no expiration if there are 25 or less RouterInfos."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:161
+msgid ""
+"As the number of local RouterInfos grows, the expiration time shrinks, in"
+" an attempt to maintain\n"
+"a reasonable number RouterInfos. The expiration time with less than 120 "
+"routers is 72 hours,\n"
+"while expiration time with 300 routers is around 30 hours."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:166
+#, python-format
+msgid ""
+"RouterInfos containing SSU introducers expire in "
+"about an hour, as\n"
+"the introducer list expires in about that time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:170
+msgid ""
+"Floodfills use a short expiration time (1 hour) for all local "
+"RouterInfos, as valid RouterInfos will\n"
+"be frequently republished to them."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:176
+msgid "RouterInfo Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:178
+msgid ""
+"RouterInfos are periodically written to disk so that they are available "
+"after a restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:186
+msgid "RouterInfo specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:189
+msgid "RouterInfo Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:194
+msgid ""
+"The second piece of data distributed in the netDb is a \"LeaseSet\" - "
+"documenting\n"
+"a group of tunnel entry points (leases) for a particular client "
+"destination.\n"
+"Each of these leases specify the following information:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:200
+msgid "The tunnel gateway router (by specifying its identity)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:201
+msgid "The tunnel ID on that router to send messages with (a 4 byte number)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:202
+msgid "When that tunnel will expire."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:204
+msgid ""
+"The LeaseSet itself is stored in the netDb under\n"
+"the key derived from the SHA256 of the destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:209
+msgid "In addition to these leases, the LeaseSet includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:213
+msgid ""
+"The destination itself (a 2048bit ElGamal encryption key, a signing key "
+"and a certificate)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:214
+msgid ""
+"Additional encryption public key: used for end-to-end encryption of "
+"garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:215
+msgid ""
+"Additional signing public key: intended for LeaseSet revocation, but is "
+"currently unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:216
+msgid ""
+"Signature of all the LeaseSet data, to make sure the Destination "
+"published the LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:220
+msgid "Lease specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:222
+msgid "LeaseSet specification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:225
+msgid "Lease Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:227
+msgid "LeaseSet Javadoc"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:231
+msgid "Unpublished LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:232
+msgid ""
+"A LeaseSet for a destination used only for outgoing connections is "
+"unpublished.\n"
+"It is never sent for publication to a floodfill router.\n"
+"\"Client\" tunnels, such as those for web browsing and IRC clients, are "
+"unpublished.\n"
+"Servers will still be able to send messages back to those unpublished "
+"destinations,\n"
+"because of I2NP storage messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:242
+msgid "Revoked LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:243
+msgid ""
+"A LeaseSet may be revoked by publishing a new LeaseSet with zero "
+"leases.\n"
+"Revocations must be signed by the additional signing key in the LeaseSet."
+"\n"
+"Revocations are not fully implemented, and it is unclear if they have any"
+" practical use.\n"
+"This is the only planned use for that signing key, so it is currently "
+"unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:250
+msgid "Encrypted LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:251
+msgid ""
+"In an encrypted LeaseSet, all Leases are encrypted with a separate"
+" key.\n"
+"The leases may only be decoded, and thus the destination may only be "
+"contacted,\n"
+"by those with the key.\n"
+"There is no flag or other direct indication that the LeaseSet is "
+"encrypted.\n"
+"Encrypted LeaseSets are not widely used, and it is a topic for future "
+"work to\n"
+"research whether the user interface and implementation of encrypted "
+"LeaseSets could be improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:260
+msgid "LeaseSet Expiration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:261
+msgid ""
+"All Leases (tunnels) are valid for 10 minutes; therefore, a LeaseSet "
+"expires\n"
+"10 minutes after the earliest creation time of all its Leases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:266
+msgid "LeaseSet Persistent Storage"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:267
+msgid ""
+"There is no persistent storage of LeaseSet data since they expire so "
+"quickly."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:272
+msgid "Bootstrapping"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:273
+msgid ""
+"The netDb is decentralized, however you do need at\n"
+"least one reference to a peer so that the integration process\n"
+"ties you in. This is accomplished by \"reseeding\" your router with the "
+"RouterInfo\n"
+"of an active peer - specifically, by retrieving their "
+"routerInfo-$hash.dat
\n"
+"file and storing it in your netDb/
directory. Anyone can "
+"provide\n"
+"you with those files - you can even provide them to others by exposing "
+"your own\n"
+"netDb directory. To simplify the process,\n"
+"volunteers publish their netDb directories (or a subset) on the regular "
+"(non-i2p) network,\n"
+"and the URLs of these directories are hardcoded in I2P.\n"
+"When the router starts up for the first time, it automatically fetches "
+"from\n"
+"one of these URLs, selected at random."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:288
+msgid ""
+"The floodfill netDb is a simple distributed storage mechanism. The "
+"storage\n"
+"algorithm is simple: send the data to the closest peer that has "
+"advertised\n"
+"itself as a floodfill router. When the peer in the floodfill netDb "
+"receives a\n"
+"netDb store from a peer not in the floodfill netDb, they send it to a "
+"subset of\n"
+"the floodfill netDb-peers. The peers selected are the ones closest "
+"(according\n"
+"to the XOR-metric) to a specific key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:297
+msgid ""
+"Determining who is part of the floodfill netDb is trivial - it is exposed"
+" in each \n"
+"router's published routerInfo as a capability."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:302
+msgid ""
+"Floodfills have no central authority and do not form a \"consensus\" -\n"
+"they only implement a simple DHT overlay."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:309
+msgid "Floodfill Router Opt-in"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:311
+msgid ""
+"Unlike Tor, where the directory servers are hardcoded and trusted,\n"
+"and operated by known entities,\n"
+"the members of the I2P floodfill peer set need not be trusted, and\n"
+"change over time."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:318
+msgid ""
+"To increase reliability of the netDb, and minimize the impact\n"
+"of netDb traffic on a router, floodfill is automatically enabled\n"
+"only on routers that are configured with high bandwidth limits.\n"
+"Routers with high bandwidth limits (which must be manually configured,\n"
+"as the default is much lower) are presumed to be on lower-latency\n"
+"connections, and are more likely to be available 24/7.\n"
+"The current minimum share bandwidth for a floodfill router is 128 "
+"KBytes/sec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:328
+msgid ""
+"In addition, a router must pass several additional tests for health\n"
+"(outbound message queue time, job lag, etc.) before floodfill operation "
+"is\n"
+"automatically enabled."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:334
+msgid ""
+"With the current rules for automatic opt-in, approximately 6% of\n"
+"the routers in the network are floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:339
+msgid ""
+"While some peers are manually configured to be floodfill,\n"
+"others are simply high-bandwidth routers who automatically volunteer\n"
+"when the number of floodfill peers drops below a threshold.\n"
+"This prevents any long-term network damage from losing most or all\n"
+"floodfills to an attack.\n"
+"In turn, these peers will un-floodfill themselves when there are\n"
+"too many floodfills outstanding."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:349
+msgid "Floodfill Router Roles"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:350
+msgid ""
+"A floodfill router's only services that are in addition to those of non-"
+"floodfill routers\n"
+"are in accepting netDb stores and responding to netDb queries.\n"
+"Since they are generally high-bandwidth, they are more likely to "
+"participate in a high number of tunnels\n"
+"(i.e. be a \"relay\" for others), but this is not directly related to "
+"their distributed database services."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:358
+msgid "Kademlia Closeness Metric"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:359
+msgid ""
+"The netDb uses a simple Kademlia-style XOR metric to determine closeness."
+"\n"
+"The SHA256 hash of the key being looked up or stored is XOR-ed with\n"
+"the hash of the router in question to determine closeness.\n"
+"A modification to this algorithm is done to increase the costs of Sybil attacks.\n"
+"Instead of the SHA256 hash of the key being looked up of stored, the "
+"SHA256 hash is taken\n"
+"of the 32-byte binary search key appended with the UTC date represented "
+"as an 8-byte ASCII string yyyyMMdd, i.e. SHA256(key + yyyyMMdd).\n"
+"This is called the \"routing key\", and it changes every day at midnight "
+"UTC.\n"
+"Only the search key is modified in this way, not the floodfill router "
+"hashes.\n"
+"The daily transformation of the DHT is sometimes called \"keyspace "
+"rotation\",\n"
+"although it isn't strictly a rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:372
+msgid ""
+"Routing keys are never sent on-the-wire in any I2NP message, they are "
+"only used locally for\n"
+"determination of distance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:379
+msgid "Storage, Verification, and Lookup Mechanics"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:381
+msgid "RouterInfo Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:382
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"RouterInfo are exchanged with peers\n"
+"as a part of the initialization of a NTCP\n"
+"or SSU transport connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:389
+msgid "LeaseSet Storage to Peers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:390
+#, python-format
+msgid ""
+"I2NP DatabaseStoreMessages containing the local "
+"LeaseSet are periodically exchanged with peers\n"
+"by bundling them in a garlic message along with normal traffic from the "
+"related Destination.\n"
+"This allows an initial response, and later responses, to be sent to an "
+"appropriate Lease,\n"
+"without requiring any LeaseSet lookups, or requiring the communicating "
+"Destinations to have published LeaseSets at all."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:398
+msgid ""
+"The DatabaseStoreMessage should be sent to the floodfill that is closest\n"
+"to the current routing key for the RouterInfo or LeaseSet being stored.\n"
+"Currently, the closest floodfill is found by a search in the local "
+"database.\n"
+"Even if that floodfill is not actually closest, it will flood it "
+"\"closer\" by\n"
+"sending it to multiple other floodfills.\n"
+"This provides a high degree of fault-tolerance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:407
+msgid ""
+"In traditional Kademlia, a peer would do a \"find-closest\" search before"
+" inserting\n"
+"an item in the DHT to the closest target. As the verify operation will "
+"tend to\n"
+"discover closer floodfills if they are present, a router will quickly "
+"improve\n"
+"its knowledge of the DHT \"neighborhood\" for the RouterInfo and "
+"LeaseSets it regularly publishes.\n"
+"While I2NP does not define a \"find-closest\" message, if it becomes "
+"necessary,\n"
+"a router may simply do an iterative search for a key with the least "
+"significant bit flipped\n"
+"(i.e. key ^ 0x01) until no closer peers are received in the "
+"DatabaseSearchReplyMessages.\n"
+"This ensures that the true closest peer will be found even if a more-"
+"distant peer had\n"
+"the netdb item."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:420
+msgid "RouterInfo Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:421
+#, python-format
+msgid ""
+"A router publishes its own RouterInfo by directly connecting to a "
+"floodfill router\n"
+"and sending it a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token. The message is not end-to-end garlic "
+"encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:435
+msgid "LeaseSet Storage to Floodfills"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:436
+msgid ""
+"Storage of LeaseSets is much more sensitive than for RouterInfos, as a "
+"router\n"
+"must take care that the LeaseSet cannot be associated with the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:441
+#, python-format
+msgid ""
+"A router publishes a local LeaseSet by\n"
+"sending a I2NP DatabaseStoreMessage\n"
+"with a nonzero Reply Token over an outbound client tunnel for that "
+"Destination.\n"
+"The message is end-to-end garlic encrypted using the Destination's "
+"Session Key Manager,\n"
+"to hide the message from the tunnel's outbound endpoint.\n"
+"The floodfill router replies with a\n"
+"I2NP DeliveryStatusMessage,\n"
+"with the Message ID set to the value of the Reply Token.\n"
+"This message is sent back to one of the client's inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:454
+msgid "Flooding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:455
+#, python-format
+msgid ""
+"After a floodfill router receives a DatabaseStoreMessage containing a\n"
+"valid RouterInfo or LeaseSet which is newer than that previously stored "
+"in its\n"
+"local NetDb, it \"floods\" it.\n"
+"To flood a NetDb entry, it looks up several (currently %(floodsize)s) "
+"floodfill routers closest to the routing key\n"
+"of the NetDb entry. (The routing key is the SHA256 Hash of the "
+"RouterIdentity or Destination with the date (yyyyMMdd) appended.)\n"
+"By flooding to those closest to the key, not closest to itself, the "
+"floodfill ensures that the storage\n"
+"gets to the right place, even if the storing router did not have good "
+"knowledge of the\n"
+"DHT \"neighborhood\" for the routing key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:466
+#, python-format
+msgid ""
+"The floodfill then directly connects to each of those peers\n"
+"and sends it a I2NP DatabaseStoreMessage\n"
+"with a zero Reply Token. The message is not end-to-end garlic encrypted,\n"
+"as this is a direct connection, so there are no intervening routers\n"
+"(and no need to hide this data anyway).\n"
+"The other routers do not reply or re-flood, as the Reply Token is zero."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:476
+msgid "RouterInfo and LeaseSet Lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:477
+#, python-format
+msgid ""
+"The I2NP DatabaseLookupMessage is used to "
+"request a netdb entry from a floodfill router.\n"
+"Lookups are sent out one of the router's outbound exploratory tunnels.\n"
+"The replies are specified to return via one of the router's inbound "
+"exploratory tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:483
+msgid ""
+"Lookups are generally sent to the two \"good\" (the connection doesn't "
+"fail) floodfill routers closest to the requested key, in parallel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:487
+#, python-format
+msgid ""
+"If the key is found locally by the floodfill router, it responds with a\n"
+"I2NP DatabaseStoreMessage.\n"
+"If the key is not found locally by the floodfill router, it responds with"
+" a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"containing a list of other floodfill routers close to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:495
+msgid ""
+"LeaseSet lookups are garlic encrypted end-to-end as of release 0.9.5.\n"
+"RouterInfo lookups are not encrypted and thus are vulnerable to snooping "
+"by the outbound endpoint\n"
+"(OBEP) of the client tunnel. This is due to the expense of the ElGamal "
+"encryption.\n"
+"RouterInfo lookup encryption may be enabled in a future release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:502
+msgid ""
+"As of release 0.9.7, replies to a LeaseSet lookup (a DatabaseStoreMessage"
+" or a DatabaseSearchReplyMessage)\n"
+"will be encrypted by including the session key and tag in the lookup.\n"
+"This hides the reply from the inbound gateway (IBGW) of the reply tunnel."
+"\n"
+"Responses to RouterInfo lookups will be encrypted if we enable the lookup"
+" encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:509
+#, python-format
+msgid ""
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:513
+msgid ""
+"Due to the relatively small size of the network and the flooding "
+"redundancy of 8x,\n"
+"lookups are usually O(1) rather than O(log n) --\n"
+"a router is highly likely to know a floodfill router close enough to the "
+"key to get the answer on the first try.\n"
+"In releases prior to 0.8.9, routers used a lookup redundancy of two\n"
+"(that is, two lookups were performed in parallel to different peers), and"
+"\n"
+"neither recursive nor iterative routing for lookups was "
+"implemented.\n"
+"Queries were sent through multiple routes simultaneously\n"
+"to reduce the chance of query failure."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:524
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented with no "
+"lookup redundancy.\n"
+"This is a more efficient and reliable lookup that will work much better\n"
+"when not all floodfill peers are known, and it removes a serious\n"
+"limitation to network growth. As the network grows and each router knows "
+"only a small\n"
+"subset of the floodfill peers, lookups will become O(log n).\n"
+"Even if the peer does not return references closer to the key, the lookup"
+" continues with\n"
+"the next-closest peer, for added robustness, and to prevent a malicious "
+"floodfill from\n"
+"black-holing a part of the key space. Lookups continue until a total "
+"lookup timeout is reached,\n"
+"or the maximum number of peers is queried."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:536
+msgid ""
+"Node IDs are verifiable in that we use the router hash "
+"directly as both the node ID and the Kademlia key.\n"
+"Incorrect responses that are not closer to the search key are generally "
+"ignored.\n"
+"Given the current size of the network, a router has\n"
+"detailed knowledge of the neighborhood of the destination ID space."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:545
+msgid "RouterInfo Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:546
+#, python-format
+msgid ""
+"Note: RouterInfo verification is disabled as of release 0.9.7.1 to "
+"prevent\n"
+"the attack described in the paper\n"
+"Practical Attacks Against the I2P Network.\n"
+"It is not clear if verification can be redesigned to be done safely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:553
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the router's outbound exploratory tunnels.\n"
+"Lookups are end-to-end garlic encrypted to prevent snooping by the "
+"outbound endpoint(OBEP)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:561
+msgid "LeaseSet Storage Verification"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:562
+msgid ""
+"To verify a storage was successful, a router simply waits about 10 "
+"seconds,\n"
+"then sends a lookup to another floodfill router close to the key\n"
+"(but not the one the store was sent to).\n"
+"Lookups sent out one of the outbound client tunnels for the destination "
+"of the LeaseSet being verified.\n"
+"To prevent snooping by the OBEP of the outbound tunnel,\n"
+"lookups are end-to-end garlic encrypted.\n"
+"The replies are specified to return via one of the client's inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:572
+msgid ""
+"As of release 0.9.7, replies for both RouterInfo and LeaseSet lookups (a "
+"DatabaseStoreMessage or a DatabaseSearchReplyMessage)\n"
+"will be encrypted,\n"
+"to hide the reply from the inbound gateway (IBGW) of the reply tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:580
+msgid "Exploration"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:581
+#, python-format
+msgid ""
+"Exploration is a special form of netdb lookup, where a router "
+"attempts to learn about\n"
+"new routers.\n"
+"It does this by sending a floodfill router a I2NP DatabaseLookupMessage, looking for a random "
+"key.\n"
+"As this lookup will fail, the floodfill would normally respond with a\n"
+"I2NP DatabaseSearchReplyMessage containing "
+"hashes of floodfill routers close to the key.\n"
+"This would not be helpful, as the requesting router probably already "
+"knows those floodfills,\n"
+"and it would be impractical to add ALL floodfill routers to the \"don't "
+"include\" field of the lookup.\n"
+"For an exploration query, the requesting router adds a router hash of all"
+" zeros to the\n"
+"\"don't include\" field of the DatabaseLookupMessage.\n"
+"The floodfill will then respond only with non-floodfill routers close to "
+"the requested key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:595
+msgid "Notes on Lookup Responses"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:596
+msgid ""
+"The response to a lookup request is either a Database Store Message (on "
+"success) or a\n"
+"Database Search Reply Message (on failure). The DSRM contains a 'from' "
+"router hash field\n"
+"to indicate the source of the reply; the DSM does not.\n"
+"The DSRM 'from' field is unauthenticated and may be spoofed or invalid.\n"
+"There are no other response tags. Therefore, when making multiple "
+"requests in parallel, it is\n"
+"difficult to monitor the performance of the various floodfill routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:606
+msgid "MultiHoming"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:608
+msgid ""
+"Destinations may be hosted on multiple routers simultaneously, by using "
+"the same\n"
+"private and public keys (traditionally stored in eepPriv.dat files).\n"
+"As both instances will periodically publish their signed LeaseSets to the"
+" floodfill peers,\n"
+"the most recently published LeaseSet will be returned to a peer "
+"requesting a database lookup.\n"
+"As LeaseSets have (at most) a 10 minute lifetime, should a particular "
+"instance go down,\n"
+"the outage will be 10 minutes at most, and generally much less than that."
+"\n"
+"The multihoming function has been verified and is in use by several "
+"services on the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:618
+msgid "Threat Analysis"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:619
+#, python-format
+msgid ""
+"Also discussed on the threat model "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:623
+msgid ""
+"A hostile user may attempt to harm the network by\n"
+"creating one or more floodfill routers and crafting them to offer\n"
+"bad, slow, or no responses.\n"
+"Some scenarios are discussed below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:630
+msgid "General Mitigation Through Growth"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:631
+#, python-format
+msgid ""
+"There are currently around %(ffcount)s floodfill routers in the network.\n"
+"Most of the following attacks will become more difficult, or have less "
+"impact,\n"
+"as the network size and number of floodfill routers increase."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:638
+msgid "General Mitigation Through Redundancy"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:639
+#, python-format
+msgid ""
+"Via flooding, all netdb entries are stored on the %(floodsize)s floodfill"
+" routers closest to the key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:644
+msgid "Forgeries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:645
+msgid ""
+"All netdb entries are signed by their creators, so no router may forge a\n"
+"RouterInfo or LeaseSet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:650
+msgid "Slow or Unresponsive"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:651
+#, python-format
+msgid ""
+"Each router maintains an expanded set of statistics in the\n"
+"peer profile for each floodfill router,"
+"\n"
+"covering various quality metrics for that peer.\n"
+"The set includes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:658
+msgid "Average response time"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:659
+msgid "Percentage of queries answered with the data requested"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:660
+msgid "Percentage of stores that were successfully verified"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:661
+msgid "Last successful store"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:662
+msgid "Last successful lookup"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:663
+msgid "Last response"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:666
+msgid ""
+"Each time a router needs to make a determination on which floodfill "
+"router is closest to a key,\n"
+"it uses these metrics to determine which floodfill routers are \"good\".\n"
+"The methods, and thresholds, used to determine \"goodness\" are "
+"relatively new, and\n"
+"are subject to further analysis and improvement.\n"
+"While a completely unresponsive router will quickly be identified and "
+"avoided,\n"
+"routers that are only sometimes malicious may be much harder to deal with."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:676
+msgid "Sybil Attack (Full Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:677
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a large number of floodfill routers spread throughout the "
+"keyspace."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:682
+#, python-format
+msgid ""
+"(In a related example, a researcher recently created a\n"
+"large number of Tor relays.)\n"
+"If successful, this could be an effective DOS attack on the entire "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:688
+msgid ""
+"If the floodfills are not sufficiently misbehaving to be marked as "
+"\"bad\" using the peer profile\n"
+"metrics described above, this is a difficult scenario to handle.\n"
+"Tor's response can be much more nimble in the relay case, as the "
+"suspicious relays\n"
+"can be manually removed from the consensus.\n"
+"Some possible responses for the I2P network are listed below, however "
+"none of them is completely satisfactory:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:696
+msgid ""
+"Compile a list of bad router hashes or IPs, and announce the list through"
+" various means\n"
+"(console news, website, forum, etc.); users would have to manually "
+"download the list and\n"
+"add it to their local \"blacklist\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:701
+msgid ""
+"Ask everyone in the network to enable floodfill manually (fight Sybil "
+"with more Sybil)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:702
+msgid "Release a new software version that includes the hardcoded \"bad\" list"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:703
+msgid ""
+"Release a new software version that improves the peer profile metrics and"
+" thresholds,\n"
+"in an attempt to automatically identify the \"bad\" peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:707
+msgid ""
+"Add software that disqualifies floodfills if too many of them are in a "
+"single IP block"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:708
+msgid ""
+"Implement an automatic subscription-based blacklist controlled by a "
+"single individual or group.\n"
+"This would essentially implement a portion of the Tor \"consensus\" "
+"model.\n"
+"Unfortunately it would also give a single individual or group the power "
+"to\n"
+"block participation of any particular router or IP in the network,\n"
+"or even to completely shutdown or destroy the entire network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:717
+msgid "This attack becomes more difficult as the network size grows."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:723
+msgid "Sybil Attack (Partial Keyspace)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:724
+#, python-format
+msgid ""
+"An attacker may mount a Sybil attack\n"
+"by creating a small number (8-15) of floodfill routers clustered closely "
+"in the keyspace,\n"
+"and distribute the RouterInfos for these routers widely.\n"
+"Then, all lookups and stores for a key in that keyspace would be directed"
+"\n"
+"to one of the attacker's routers.\n"
+"If successful, this could be an effective DOS attack on a particular "
+"eepsite, for example."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:733
+msgid ""
+"As the keyspace is indexed by the cryptographic (SHA256) Hash of the key,"
+"\n"
+"an attacker must use a brute-force method to repeatedly generate router "
+"hashes\n"
+"until he has enough that are sufficiently close to the key.\n"
+"The amount of computational power required for this, which is dependent "
+"on network\n"
+"size, is unknown."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:741
+msgid ""
+"As a partial defense against this attack,\n"
+"the algorithm used to determine Kademlia \"closeness\" varies over time.\n"
+"Rather than using the Hash of the key (i.e. H(k)) to determine closeness,"
+"\n"
+"we use the Hash of the key appended with the current date string, i.e. "
+"H(k + YYYYMMDD).\n"
+"A function called the \"routing key generator\" does this, which "
+"transforms the original key into a \"routing key\".\n"
+"In other words, the entire netdb keyspace \"rotates\" every day at UTC "
+"midnight.\n"
+"Any partial-keyspace attack would have to be regenerated every day, for\n"
+"after the rotation, the attacking routers would no longer be close\n"
+"to the target key, or to each other."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:753
+msgid ""
+"This attack becomes more difficult as the network size grows.\n"
+"However, recent research demonstrates that the keyspace rotation is not "
+"particularly effective.\n"
+"An attacker can precompute numerous router hashes in advance,\n"
+"and only a few routers are sufficient to \"eclipse\" a portion\n"
+"of the keyspace within a half hour after rotation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:761
+msgid ""
+"One consequence of daily keyspace rotation is that the distributed "
+"network database\n"
+"may become unreliable for a few minutes after the rotation --\n"
+"lookups will fail because the new \"closest\" router has not received a "
+"store yet.\n"
+"The extent of the issue, and methods for mitigation\n"
+"(for example netdb \"handoffs\" at midnight)\n"
+"are a topic for further study."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:771
+msgid "Bootstrap Attacks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:772
+msgid ""
+"An attacker could attempt to boot new routers into an isolated\n"
+"or majority-controlled network by taking over a reseed website,\n"
+"or tricking the developers into adding his reseed website\n"
+"to the hardcoded list in the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:779
+msgid "Several defenses are possible, and most of these are planned:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:783
+msgid ""
+"Disallow fallback from HTTPS to HTTP for reseeding.\n"
+"A MITM attacker could simply block HTTPS, then respond to the HTTP."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:787
+msgid "Bundling reseed data in the installer"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:790
+msgid "Defenses that are implemented:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:794
+msgid ""
+"Changing the reseed task to fetch a subset of RouterInfos from\n"
+"each of several reseed sites rather than using only a single site"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:798
+msgid ""
+"Creating an out-of-network reseed monitoring service that\n"
+"periodically polls reseed websites and verifies that the\n"
+"data are not stale or inconsistent with other views of the network"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:803
+msgid ""
+"As of release 0.9.14, reseed data is bundled into a signed zip file and\n"
+"the signature is verified when downloaded."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:811
+msgid "Query Capture"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:812
+#, python-format
+msgid ""
+"See also lookup\n"
+"(Reference: Hashing it out in Public Sections "
+"2.2-2.3 for terms below in italics)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:817
+msgid ""
+"Similar to a bootstrap attack, an attacker using a floodfill router could"
+" attempt to \"steer\"\n"
+"peers to a subset of routers controlled by him by returning their "
+"references."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:822
+msgid ""
+"This is unlikely to work via exploration, because exploration is a low-"
+"frequency task.\n"
+"Routers acquire a majority of their peer references through normal tunnel"
+" building activity.\n"
+"Exploration results are generally limited to a few router hashes,\n"
+"and each exploration query is directed to a random floodfill router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:829
+#, python-format
+msgid ""
+"As of release 0.8.9, iterative lookups are implemented.\n"
+"For floodfill router references returned in a\n"
+"I2NP DatabaseSearchReplyMessage\n"
+"response to a lookup,\n"
+"these references are followed if they are closer (or the next closest) to"
+" the lookup key.\n"
+"The requesting router does not trust that the references are\n"
+"closer to the key (i.e. they are verifiably correct.\n"
+"The lookup also does not stop when no closer key is found, but continues "
+"by querying the\n"
+"next-closet node, until the timeout or maximum number of queries is "
+"reached.\n"
+"This prevents a malicious floodfill from black-holing a part of the key "
+"space.\n"
+"Also, the daily keyspace rotation requires an attacker to regenerate a "
+"router info\n"
+"within the desired key space region.\n"
+"This design ensures that the query capture attack described in\n"
+"Hashing it out in Public\n"
+"is much more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:848
+msgid "DHT-Based Relay Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:849
+#, python-format
+msgid "(Reference: Hashing it out in Public Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:853
+#, python-format
+msgid ""
+"This doesn't have much to do with floodfill, but see\n"
+"the peer selection page\n"
+"for a discussion of the vulnerabilities of peer selection for tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:859
+msgid "Information Leaks"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:860
+#, python-format
+msgid ""
+"(Reference: In Search of an Anonymous and Secure "
+"Lookup Section 3)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:864
+#, python-format
+msgid ""
+"This paper addresses weaknesses in the \"Finger Table\" DHT lookups used "
+"by Torsk and NISAN.\n"
+"At first glance, these do not appear to apply to I2P. First, the use of "
+"DHT by Torsk and NISAN\n"
+"is significantly different from that in I2P. Second, I2P's network "
+"database lookups are only\n"
+"loosely correlated to the peer "
+"selection and\n"
+"tunnel building processes; only "
+"previously-known peers\n"
+"are used for tunnels.\n"
+"Also, peer selection is unrelated to any notion of DHT key-closeness."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:875
+msgid ""
+"Some of this may actually be more interesting when the I2P network gets "
+"much larger.\n"
+"Right now, each router knows a large proportion of the network, so "
+"looking up a particular\n"
+"Router Info in the network database is not strongly indicative of a "
+"future intent to use\n"
+"that router in a tunnel. Perhaps when the network is 100 times larger, "
+"the lookup may be\n"
+"more correlative. Of course, a larger network makes a Sybil attack that "
+"much harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:883
+#, python-format
+msgid ""
+"However, the general issue of DHT information leakage in I2P needs "
+"further investigation.\n"
+"The floodfill routers are in a position to observe queries and gather "
+"information.\n"
+"Certainly, at a level of f = 0.2 (20% malicious nodes, as "
+"specifed in the paper)\n"
+"we expect that many of the Sybil threats we describe\n"
+"(here,\n"
+"here and\n"
+"here)\n"
+"become problematic for several reasons."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:897
+msgid "Moved to the netdb discussion page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:901
+msgid "End-to-end encryption of additional netDb lookups and responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/network-database.html:905
+msgid "Better methods for tracking lookup responses."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:2
+msgid "Peer Profiling and Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:3
+msgid "July 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:8
+msgid "Peer Profiling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:10
+#, python-format
+msgid ""
+"Peer profiling is the process of collecting data based on the "
+"observed performance\n"
+"of other routers or peers, and classifying those peers into groups.\n"
+"Profiling does not use any claimed performance data published by "
+"the peer itself\n"
+"in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:17
+msgid "Profiles are used for two purposes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:19
+msgid "Selecting peers to relay our traffic through, which is discussed below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:20
+#, python-format
+msgid ""
+"Choosing peers from the set of floodfill routers to use for network "
+"database storage and queries,\n"
+"which is discussed on the network database page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:27
+#: i2p2www/pages/site/docs/how/peer-selection.html:187
+#: i2p2www/pages/site/docs/tunnels/implementation.html:289
+msgid "Peer Selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:28
+msgid ""
+"Peer selection is the process of choosing which routers\n"
+"on the network we want to relay our messages to go through (which peers "
+"will we \n"
+"ask to join our tunnels). To accomplish this, we keep track of how each\n"
+"peer performs (the peer's \"profile\") and use that data to estimate how"
+" \n"
+"fast they are, how often they will be able to accept our requests, and \n"
+"whether they seem to be overloaded or otherwise unable to perform what\n"
+"they agree to reliably."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:38
+#, python-format
+msgid ""
+"Unlike some other anonymous networks, in I2P,\n"
+"claimed bandwidth is untrusted and is only used to avoid those "
+"peers\n"
+"advertising very low bandwidth insufficient for routing tunnels.\n"
+"All peer selection is done through profiling.\n"
+"This prevents simple attacks based on peers claiming high bandwidth\n"
+"in order to capture large numbers of tunnels.\n"
+"It also makes\n"
+"timing attacks\n"
+"more difficult."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:50
+msgid ""
+"Peer selection is done quite frequently, as a router may maintain a large"
+" number\n"
+"of client and exploratory tunnels, and a tunnel lifetime is only 10 "
+"minutes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:56
+msgid "Further Information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:57
+#, python-format
+msgid ""
+"For more information see the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network\n"
+"presented at PET-CON 2009.1.\n"
+"See below for notes on minor changes since the "
+"paper was published."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:65
+msgid "Profiles"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:66
+#, python-format
+msgid ""
+"Each peer has a set of data points collected about them, including "
+"statistics \n"
+"about how long it takes for them to reply to a network database query, "
+"how \n"
+"often their tunnels fail, and how many new peers they are able to "
+"introduce \n"
+"us to, as well as simple data points such as when we last heard from them"
+" or\n"
+"when the last communication error occurred. The specific data points "
+"gathered\n"
+"can be found in the code."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:75
+msgid ""
+"Profiles are fairly small, a few KB. To control memory usage, the profile"
+" expiration time\n"
+"lessens as the number of profiles grows.\n"
+"Profiles are kept in memory until router shutdown, when they are written "
+"to disk.\n"
+"At startup, the profiles are read so the router need not reinitialize all"
+" profiles,\n"
+"thus allowing a router to quickly re-integrate into the network after "
+"startup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:85
+msgid "Peer Summaries"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:86
+msgid ""
+"While the profiles themselves can be considered a summary of a peer's \n"
+"performance, to allow for effective peer selection we break each summary "
+"down \n"
+"into four simple values, representing the peer's speed, its capacity, how"
+" well \n"
+"integrated into the network it is, and whether it is failing."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:93
+msgid "Speed"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:94
+msgid ""
+"The speed calculation\n"
+"simply goes through the profile and estimates how much data we can\n"
+"send or receive on a single tunnel through the peer in a minute. For "
+"this estimate it just looks at\n"
+"performance in the previous minute."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:101
+msgid "Capacity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:102
+msgid ""
+"The capacity calculation\n"
+"simply goes through the profile and estimates how many tunnels the peer\n"
+"would agree to participate in over a given time period. For this "
+"estimate it looks at \n"
+"how many tunnel build requests\n"
+"the peer has accepted, rejected, and dropped, and how many\n"
+"of the agreed-to tunnels later failed.\n"
+"While the calculation is time-weighted so that recent activity counts "
+"more than later activity,\n"
+"statistics up to 48 hours old may be included."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:113
+msgid ""
+"Recognizing and avoiding unreliable and unreachable\n"
+"peers is critically important.\n"
+"Unfortunately, as the tunnel building and testing require the "
+"participation of several peers,\n"
+"it is difficult to positively identify the cause of a dropped build "
+"request or test failure.\n"
+"The router assigns a probability of failure to each of the\n"
+"peers, and uses that probability in the capacity calculation.\n"
+"Drops and test failures are weighted much higher than rejections."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:123
+msgid "Peer organization"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:124
+msgid ""
+"As mentioned above, we drill through each peer's profile to come up with "
+"a \n"
+"few key calculations, and based upon those, we organize each peer into "
+"three\n"
+"groups - fast, high capacity, and standard."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:130
+msgid "The groupings are not mutually exclusive, nor are they unrelated:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:134
+msgid ""
+"A peer is considered \"high capacity\" if its capacity calculation meets "
+"or \n"
+"exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:138
+msgid ""
+"A peer is considered \"fast\" if they are already \"high capacity\" and "
+"their \n"
+"speed calculation meets or exceeds the median of all peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:142
+msgid "A peer is considered \"standard\" if it is not \"high capacity\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:145
+#, python-format
+msgid ""
+"These groupings are implemented in the router's\n"
+"ProfileOrganizer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:150
+msgid "Group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:151
+msgid "The size of the groups may be limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:156
+msgid ""
+"The fast group is limited to 30 peers.\n"
+"If there would be more, only the ones with the highest speed rating are "
+"placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:160
+msgid ""
+"The high capacity group is limited to 75 peers (including the fast group)"
+"\n"
+"If there would be more, only the ones with the highest capacity rating "
+"are placed in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:164
+msgid ""
+"The standard group has no fixed limit, but is somewhat smaller than the "
+"number of RouterInfos\n"
+"stored in the local network database.\n"
+"On an active router in today's network, there may be about 1000 "
+"RouterInfos and 500 peer profiles\n"
+"(including those in the fast and high capacity groups)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:172
+msgid "Recalculation and Stability"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:173
+msgid ""
+"Summaries are recalculated, and peers are resorted into groups, every 45 "
+"seconds."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:177
+msgid ""
+"The groups tend to be fairly stable, that is, there is not much \"churn\""
+" in the rankings\n"
+"at each recalculation.\n"
+"Peers in the fast and high capacity groups get more tunnels build through"
+" them, which increases their speed and capacity ratings,\n"
+"which reinforces their presence in the group."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:188
+msgid "The router selects peers from the above groups to build tunnels through."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:193
+msgid "Peer Selection for Client Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:194
+msgid ""
+"Client tunnels are used for application traffic, such as for HTTP proxies"
+" and web servers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:198
+msgid ""
+"To reduce the susceptibility to some attacks,\n"
+"and increase performance,\n"
+"peers for building client tunnels are chosen randomly from the smallest "
+"group, which is the \"fast\" group.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in a tunnel for the same client."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:206
+msgid "Peer Selection for Exploratory Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:207
+msgid ""
+"Exploratory tunnels are used for router administrative purposes, such as "
+"network database traffic\n"
+"and testing client tunnels.\n"
+"Exploratory tunnels are also used to contact previously unconnected "
+"routers, which is why\n"
+"they are called \"exploratory\".\n"
+"These tunnels are usually low-bandwidth."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:215
+msgid ""
+"Peers for building exploratory tunnels are generally chosen randomly from"
+" the standard group.\n"
+"If the success rate of these build attempts is low compared to the client"
+" tunnel build success rate,\n"
+"the router will select a weighted average of peers randomly from the high"
+" capacity group instead.\n"
+"This helps maintain a satisfactory build success rate even when network "
+"performance is poor.\n"
+"There is no bias toward selecting peers that were previously participants"
+" in an exploratory tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:223
+msgid ""
+"As the standard group includes a very large subset of all peers the "
+"router knows about,\n"
+"exploratory tunnels are essentially built through a random selection of "
+"all peers,\n"
+"until the build success rate becomes too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:231
+msgid "Restrictions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:232
+msgid ""
+"To prevent some simple attacks, and for performance, there are the "
+"following restrictions:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:236
+msgid "Two peers from the same /16 IP space may not be in the same tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:239
+msgid ""
+"A peer may participate in a maximum of 33% of all tunnels created by "
+"the router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:242
+msgid "Peers with extremely low bandwidth are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:245
+msgid "Peers for which a recent connection attempt failed are not used."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:252
+msgid "Peer Ordering in Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:253
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to\n"
+"to deal with the predecessor attack\n"
+"(2008 update).\n"
+"More information is on the tunnel "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:268
+msgid "Continue to analyze an tune speed and capacity calculations as necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:271
+msgid ""
+"Implement a more aggressive ejection strategy if necessary to control "
+"memory usage as the network grows"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:274
+msgid "Evaluate group size limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:277
+msgid "Use GeoIP data to include or exclude certain peers, if configured"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:283
+#, python-format
+msgid ""
+"For those reading the paper\n"
+"Peer Profiling and Selection in the I2P Anonymous "
+"Network,\n"
+"please keep in mind the following minor changes in I2P since the paper's "
+"publication:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:289
+msgid "The Integration calculation is still not used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:290
+msgid "In the paper, \"groups\" are called \"tiers\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:291
+msgid "The \"Failing\" tier is no longer used"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:292
+msgid "The \"Not Failing\" tier is now named \"Standard\""
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:301
+msgid "One Cell Enough"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:303
+msgid "Tor Entry Guards"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:305
+msgid "Murdoch 2007 Paper"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:307
+msgid "Tune-up for Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/peer-selection.html:309
+msgid "Low-resource Routing Attacks Against Tor"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:2
+msgid "I2P: A scalable framework for anonymous communication"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:5
+#: i2p2www/pages/site/docs/how/tech-intro.html:20
+#: i2p2www/pages/site/docs/transport/ssu.html:342
+msgid "Introduction"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:7
+msgid "I2P Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:12
+#: i2p2www/pages/site/docs/how/tech-intro.html:397
+msgid "Transport protocols"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:13
+#: i2p2www/pages/site/docs/how/tech-intro.html:454
+msgid "Cryptography"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:21
+msgid ""
+"I2P is a scalable, self organizing, resilient packet switched anonymous \n"
+"network layer, upon which any number of different anonymity or security "
+"conscious \n"
+"applications can operate. Each of these applications may make their own "
+"anonymity, \n"
+"latency, and throughput tradeoffs without worrying about the proper "
+"implementation \n"
+"of a free route mixnet, allowing them to blend their activity with the "
+"larger \n"
+"anonymity set of users already running on top of I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:30
+msgid ""
+"Applications available already provide the full range of typical Internet"
+" activities -\n"
+"anonymous web browsing, web hosting, chat, file sharing, e-mail,\n"
+"blogging and content syndication, newsgroups, as well as several other "
+"applications under development."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:36
+msgid "Web browsing: using any existing browser that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:37
+msgid "Chat: IRC, Jabber, I2P-Messenger."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:38
+msgid ""
+"File sharing: I2PSnark, Robert, iMule, \n"
+"I2Phex, PyBit, I2P-bt\n"
+"and others."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:43
+msgid ""
+"E-mail: susimail and I2P-Bote."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:44
+msgid ""
+"Blog: using e.g. the pebble plugin or the distributed blogging software "
+"Syndie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:45
+msgid ""
+"Distributed Data Store: Save your data redundantly in the Tahoe-LAFS "
+"cloud over I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:46
+msgid "Newsgroups: using any newsgroup reader that supports using a proxy."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:49
+msgid ""
+"Unlike web sites hosted within content distribution networks like Freenet \n"
+"or GNUnet, the services "
+"hosted on \n"
+"I2P are fully interactive - there are traditional web-style search "
+"engines, \n"
+"bulletin boards, blogs you can comment on, database driven sites, and "
+"bridges \n"
+"to query static systems like Freenet without needing to install it "
+"locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:57
+msgid ""
+"With all of these anonymity enabled applications, I2P takes on the role \n"
+"of the message oriented middleware - applications say that they want to "
+"send \n"
+"some data to a cryptographic identifier (a \"destination\") and I2P takes"
+" care \n"
+"of making sure it gets there securely and anonymously. I2P also bundles a"
+" \n"
+"simple streaming library to allow I2P's "
+"anonymous \n"
+"best-effort messages to transfer as reliable, in-order streams, "
+"transparently \n"
+"offering a TCP based congestion control algorithm tuned for the high "
+"bandwidth \n"
+"delay product of the network. While there have been several simple SOCKS "
+"proxies \n"
+"available to tie existing applications into the network, their value has "
+"been \n"
+"limited as nearly every application routinely exposes what, in an "
+"anonymous \n"
+"context, is sensitive information. The only safe way to go is to fully "
+"audit \n"
+"an application to ensure proper operation and to assist in that we "
+"provide \n"
+"a series of APIs in various languages which can be used to make the most "
+"out \n"
+"of the network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:74
+#, python-format
+msgid ""
+"I2P is not a research project - academic, commercial, or governmental, "
+"but \n"
+"is instead an engineering effort aimed at doing whatever is necessary to "
+"provide \n"
+"a sufficient level of anonymity to those who need it. It has been in "
+"active \n"
+"development since early 2003 with one full time developer and a dedicated"
+" \n"
+"group of part time contributors from all over the world. All of the work "
+"done \n"
+"on I2P is open source and freely available on the website, \n"
+"with the majority of the code released outright into the public domain, "
+"though \n"
+"making use of a few cryptographic routines under BSD-style licenses. The "
+"people \n"
+"working on I2P do not control what people release client applications "
+"under, \n"
+"and there are several GPL'ed applications available (I2PTunnel, \n"
+"susimail, I2PSnark, I2P-"
+"Bote, \n"
+"I2Phex and others.).\n"
+"Funding for I2P comes entirely from "
+"donations,\n"
+"and does not receive any tax breaks in any jurisdiction at this time,\n"
+"as many of the developers are themselves anonymous."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:92
+msgid "Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:94
+msgid ""
+"To understand I2P's operation, it is essential to understand a few key "
+"concepts. \n"
+"First, I2P makes a strict separation between the software participating "
+"in \n"
+"the network (a \"router\") and the anonymous endpoints (\"destinations\")"
+" associated \n"
+"with individual applications. The fact that someone is running I2P is not"
+" \n"
+"usually a secret. What is hidden is information on what the user is "
+"doing, \n"
+"if anything at all, as well as what router a particular destination is "
+"connected \n"
+"to. End users will typically have several local destinations on their "
+"router \n"
+"- for instance, one proxying in to IRC servers, another supporting the "
+"user's \n"
+"anonymous webserver (\"eepsite\"), another for an I2Phex instance, "
+"another for \n"
+"torrents, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:107
+msgid ""
+"Another critical concept to understand is the \"tunnel\".\n"
+"A tunnel is a directed path through an explicitly selected list of "
+"routers.\n"
+"Layered encryption is used, so each of the routers can only decrypt a "
+"single layer.\n"
+"The decrypted information contains the IP of the next router, along with\n"
+"the encrypted information to be forwarded.\n"
+"Each tunnel has a starting point (the first router, also known as "
+"\"gateway\")\n"
+"and an end point. Messages can be sent only in one way. To send messages "
+"back,\n"
+"another tunnel is required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:105
+msgid "Inbound and outbound tunnel schematic"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:120
+msgid "Figure 1: Two types of tunnels exist: inbound and outbound."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:123
+msgid ""
+"Two types of tunnels exist:\n"
+"\"outbound\" tunnels send messages away from the tunnel creator,\n"
+"while \"inbound\" tunnels bring messages to the tunnel creator.\n"
+"Combining these two tunnels allows users to send messages to each other.\n"
+"The sender (\"Alice\" in the above image) sets up an outbound tunnel,\n"
+"while the receiver (\"Bob\" in the above image) creates an inbound "
+"tunnel.\n"
+"The gateway of an inbound tunnel can receive messages from any other user"
+"\n"
+"and will send them on until the endpoint (\"Bob\").\n"
+"The endpoint of the outbound tunnel will need to send the message\n"
+"on to the gateway of the inbound tunnel.\n"
+"To do this, the sender (\"Alice\") adds instructions to her encrypted "
+"message.\n"
+"Once the endpoint of the outbound tunnel decrypts the message,\n"
+"it will have instructions to forward the message to the correct\n"
+"inbound gateway (the gateway to \"Bob\")."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:140
+msgid ""
+"A third critical concept to understand is I2P's \"network "
+"database\" (or \"netDb\") \n"
+"- a pair of algorithms used to share network metadata. The two types of "
+"metadata \n"
+"carried are \"routerInfo\" and \"leaseSets\" - the "
+"routerInfo gives routers the \n"
+"data necessary for contacting a particular router (their public keys, "
+"transport \n"
+"addresses, etc), while the leaseSet gives routers the information "
+"necessary \n"
+"for contacting a particular destination. A leaseSet contains a number of "
+"\"leases\".\n"
+"Each of this leases specifies a tunnel gateway, which allows reaching a "
+"specific destination.\n"
+"The full information contained in a lease:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:151
+msgid "Inbound gateway for a tunnel that allows reaching a specific destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:152
+msgid "Time when a tunnel expires."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:153
+msgid ""
+"Pair of public keys to be able to encrypt messages (to send through the "
+"tunnel and reach the destination)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:155
+msgid ""
+"Routers themselves send their routerInfo to the netDb directly, while "
+"leaseSets are sent through outbound tunnels\n"
+"(leaseSets need to be sent anonymously, to avoid correlating a router "
+"with his leaseSets)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:160
+msgid ""
+"We can combine the above concepts to build successful connections in the "
+"network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:164
+msgid ""
+"To build up her own inbound and outbound tunnels, Alice does a lookup in "
+"the netDb to collect routerInfo.\n"
+"This way, she gathers lists of peers she can use as hops in her tunnels.\n"
+"She can then send a build message to the first hop, requesting the "
+"construction of a tunnel and asking\n"
+"that router to send the construction message onward, until the tunnel has"
+" been constructed."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:171
+msgid "Request information on other routers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:173
+msgid "Build tunnel using router information"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:175
+msgid "Figure 2: Router information is used to build tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:178
+msgid ""
+"When Alice wants to send a message to Bob, she first does a lookup in the"
+" \n"
+"netDb to find Bob's leaseSet, giving her his current inbound tunnel "
+"gateways. \n"
+"She then picks one of her outbound tunnels and sends the message down it "
+"with \n"
+"instructions for the outbound tunnel's endpoint to forward the message on"
+" \n"
+"to one of Bob's inbound tunnel gateways. When the outbound tunnel "
+"endpoint \n"
+"receives those instructions, it forwards the message as requested, and "
+"when \n"
+"Bob's inbound tunnel gateway receives it, it is forwarded down the tunnel"
+" \n"
+"to Bob's router. If Alice wants Bob to be able to reply to the message, "
+"she \n"
+"needs to transmit her own destination explicitly as part of the message "
+"itself.\n"
+"This can be done by introducing a higher-level layer, which is done in "
+"the\n"
+"streaming library.\n"
+"Alice may also cut down on the response time by bundling her most \n"
+"recent LeaseSet with the message so that Bob doesn't need to do a netDb "
+"lookup \n"
+"for it when he wants to reply, but this is optional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using LeaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:195
+msgid "Connect tunnels using leaseSets"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:197
+msgid "Figure 3: LeaseSets are used to connect outbound and inbound tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:200
+msgid ""
+"While the tunnels themselves have layered encryption to prevent "
+"unauthorized \n"
+"disclosure to peers inside the network (as the transport layer itself "
+"does \n"
+"to prevent unauthorized disclosure to peers outside the network), it is "
+"necessary \n"
+"to add an additional end to end layer of encryption to hide the message "
+"from \n"
+"the outbound tunnel endpoint and the inbound tunnel gateway. This \"garlic \n"
+"encryption\" lets Alice's router wrap up multiple messages into a "
+"single \n"
+"\"garlic message\", encrypted to a particular public key so that "
+"intermediary \n"
+"peers cannot determine either how many messages are within the garlic, "
+"what \n"
+"those messages say, or where those individual cloves are destined. For "
+"typical \n"
+"end to end communication between Alice and Bob, the garlic will be "
+"encrypted \n"
+"to the public key published in Bob's leaseSet, allowing the message to be"
+" \n"
+"encrypted without giving out the public key to Bob's own router."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:215
+msgid ""
+"Another important fact to keep in mind is that I2P is entirely message "
+"based \n"
+"and that some messages may be lost along the way. Applications using I2P "
+"can \n"
+"use the message oriented interfaces and take care of their own congestion"
+" \n"
+"control and reliability needs, but most would be best served by reusing "
+"the \n"
+"provided streaming library to view I2P as "
+"a streams \n"
+"based network."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:225
+msgid ""
+"Both inbound and outbound tunnels work along similar principles.\n"
+"The tunnel gateway accumulates a number of tunnel messages, eventually "
+"preprocessing \n"
+"them into something for tunnel delivery. Next, the gateway encrypts that "
+"preprocessed \n"
+"data and forwards it to the first hop. That peer and subsequent tunnel "
+"participants \n"
+"add on a layer of encryption after verifying that it isn't a duplicate "
+"before \n"
+"forward it on to the next peer. Eventually, the message arrives at the "
+"endpoint \n"
+"where the messages are split out again and forwarded on as requested. The"
+" \n"
+"difference arises in what the tunnel's creator does - for inbound "
+"tunnels, \n"
+"the creator is the endpoint and they simply decrypt all of the layers "
+"added, \n"
+"while for outbound tunnels, the creator is the gateway and they pre-"
+"decrypt \n"
+"all of the layers so that after all of the layers of per-hop encryption "
+"are \n"
+"added, the message arrives in the clear at the tunnel endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:240
+msgid ""
+"The choice of specific peers to pass on messages as well as their "
+"particular \n"
+"ordering is important to understanding both I2P's anonymity and "
+"performance \n"
+"characteristics. While the network database (below) has its own criteria "
+"for \n"
+"picking what peers to query and store entries on, tunnel creators may use"
+" any peers \n"
+"in the network in any order (and even any number of times) in a single "
+"tunnel. \n"
+"If perfect latency and capacity data were globally known, selection and "
+"ordering \n"
+"would be driven by the particular needs of the client in tandem with "
+"their \n"
+"threat model. Unfortunately, latency and capacity data is not trivial to "
+"gather \n"
+"anonymously, and depending upon untrusted peers to provide this "
+"information \n"
+"has its own serious anonymity implications."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:253
+msgid ""
+"From an anonymity perspective, the simplest technique would be to pick "
+"peers \n"
+"randomly from the entire network, order them randomly and use those peers"
+" \n"
+"in that order for all eternity. From a performance perspective, the "
+"simplest \n"
+"technique would be to pick the fastest peers with the necessary spare "
+"capacity, \n"
+"spreading the load across different peers to handle transparent failover,"
+" \n"
+"and to rebuild the tunnel whenever capacity information changes. While "
+"the \n"
+"former is both brittle and inefficient, the later requires inaccessible "
+"information \n"
+"and offers insufficient anonymity. I2P is instead working on offering a "
+"range \n"
+"of peer selection strategies, coupled with anonymity aware measurement "
+"code \n"
+"to organize the peers by their profiles."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:266
+msgid ""
+"As a base, I2P is constantly profiling the peers with which it interacts"
+" \n"
+"with by measuring their indirect behavior - for instance, when a peer "
+"responds \n"
+"to a netDb lookup in 1.3 seconds, that round trip latency is recorded in "
+"the \n"
+"profiles for all of the routers involved in the two tunnels (inbound and "
+"outbound) \n"
+"through which the request and response passed, as well as the queried "
+"peer's \n"
+"profile. Direct measurement, such as transport layer latency or "
+"congestion, \n"
+"is not used as part of the profile, as it can be manipulated and "
+"associated \n"
+"with the measuring router, exposing them to trivial attacks. While "
+"gathering \n"
+"these profiles, a series of calculations are run on each to summarize its"
+" \n"
+"performance - its latency, capacity to handle lots of activity, whether "
+"they \n"
+"are currently overloaded, and how well integrated into the network they "
+"seem \n"
+"to be. These calculations are then compared for active peers to organize "
+"the \n"
+"routers into four tiers - fast and high capacity, high capacity, not "
+"failing, \n"
+"and failing. The thresholds for those tiers are determined dynamically, "
+"and \n"
+"while they currently use fairly simple algorithms, alternatives exist."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:284
+msgid ""
+"Using this profile data, the simplest reasonable peer selection strategy "
+"is to\n"
+"pick peers randomly from the top tier (fast and high capacity), and this "
+"is\n"
+"currently deployed for client tunnels. Exploratory tunnels (used for "
+"netDb and\n"
+"tunnel management) pick peers randomly from the \"not failing\" tier "
+"(which\n"
+"includes routers in 'better' tiers as well), allowing the peer to sample\n"
+"routers more widely, in effect optimizing the peer selection through "
+"randomized\n"
+"hill "
+"climbing. These\n"
+"strategies alone do however leak information regarding the peers in the\n"
+"router's top tier through predecessor and netDb harvesting attacks. In "
+"turn,\n"
+"several alternatives exist which, while not balancing the load as evenly,"
+" will\n"
+"address the attacks mounted by particular classes of adversaries."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:298
+msgid ""
+"By picking a random key and ordering the peers according to their XOR "
+"distance \n"
+"from it, the information leaked is reduced in predecessor and harvesting "
+"attacks \n"
+"according to the peers' failure rate and the tier's churn. Another simple"
+" \n"
+"strategy for dealing with netDb harvesting attacks is to simply fix the "
+"inbound \n"
+"tunnel gateway(s) yet randomize the peers further on in the tunnels. To "
+"deal \n"
+"with predecessor attacks for adversaries which the client contacts, the "
+"outbound \n"
+"tunnel endpoints would also remain fixed. The selection of which peer to "
+"fix \n"
+"on the most exposed point would of course need to have a limit to the "
+"duration, \n"
+"as all peers fail eventually, so it could either be reactively adjusted "
+"or \n"
+"proactively avoided to mimic a measured mean time between failures of "
+"other \n"
+"routers. These two strategies can in turn be combined, using a fixed "
+"exposed \n"
+"peer and an XOR based ordering within the tunnels themselves. A more "
+"rigid \n"
+"strategy would fix the exact peers and ordering of a potential tunnel, "
+"only \n"
+"using individual peers if all of them agree to participate in the same "
+"way \n"
+"each time. This varies from the XOR based ordering in that the "
+"predecessor \n"
+"and successor of each peer is always the same, while the XOR only makes "
+"sure \n"
+"their order doesn't change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:318
+#, python-format
+msgid ""
+"As mentioned before, I2P currently (release 0.8) includes the tiered \n"
+"random strategy above, with XOR-based ordering. A \n"
+"more detailed discussion of the mechanics involved in tunnel operation, "
+"management, \n"
+"and peer selection can be found in the tunnel "
+"spec."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:326
+#, python-format
+msgid ""
+"As mentioned earlier, I2P's netDb works to share the network's metadata.\n"
+"This is detailed in the network database page,\n"
+"but a basic explanation is available below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:332
+msgid ""
+"A percentage of I2P users are appointed as 'floodfill peers'.\n"
+"Currently, I2P installations that have a lot of bandwidth and are fast "
+"enough,\n"
+"will appoint themselves as floodfill as soon as the number of existing "
+"floodfill routers\n"
+"drops too low."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:339
+#, python-format
+msgid ""
+"Other I2P routers will store their data and lookup data by sending simple"
+" 'store' and 'lookup' queries to the floodfills.\n"
+"If a floodfill router receives a 'store' query, it will spread the "
+"information to other floodfill routers\n"
+"using the Kademlia "
+"algorithm.\n"
+"The 'lookup' queries currently function differently, to avoid an "
+"important\n"
+"security issue.\n"
+"When a lookup is done, the floodfill router will not forward the lookup "
+"to other peers,\n"
+"but will always answer by itself (if it has the requested data)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:349
+msgid "Two types of information are stored in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:353
+msgid ""
+"A RouterInfo stores information on a specific I2P router and how "
+"to contact it"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:354
+msgid ""
+"A LeaseSet stores information on a specific destination (e.g. I2P "
+"website, e-mail server...)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:356
+msgid ""
+"All of this information is signed by the publishing party and verified by"
+" any I2P router using or storing the information.\n"
+"In addition, the data contains timing information, to avoid storage of "
+"old entries and possible attacks.\n"
+"This is also why I2P bundles the necessary code for maintaining the "
+"correct time, occasionally querying some SNTP servers \n"
+"(the pool.ntp.org round robin by"
+" default)\n"
+"and detecting skew between routers at the transport layer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:364
+msgid "Some additional remarks are also important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:369
+msgid "Unpublished and encrypted leasesets:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:370
+msgid ""
+"One could only want specific people to be able to reach a destination.\n"
+"This is possible by not publishing the destination in the netDb. You will"
+" however have to transmit the destination by other means.\n"
+"An alternative are the 'encrypted leaseSets'. These leaseSets can only be"
+" decoded by people with access to the decryption key."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:377
+msgid "Bootstrapping:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:378
+msgid ""
+"Bootstrapping the netDb is quite simple. Once a router manages to receive"
+" a single routerInfo of a reachable peer,\n"
+"it can query that router for references to other routers in the network.\n"
+"Currently, a number of users post their routerInfo files to a website to "
+"make this information available.\n"
+"I2P automatically connects to one of these websites to gather routerInfo "
+"files and bootstrap."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:386
+msgid "Lookup scalability:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:387
+msgid ""
+"Lookups in the I2P network are not forwarded to other netDb routers.\n"
+"Currently, this is not a major problem, since the network is not very "
+"large.\n"
+"However, as the network grows, not all routerInfo and leaseSet files will"
+" be present\n"
+"on each netDb router. This will cause a deterioration of the percentage "
+"of successful lookups.\n"
+"Because of this, refinements to the netDb will be done in the next "
+"releases."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:398
+msgid ""
+"Communication between routers needs to provide confidentiality and "
+"integrity \n"
+"against external adversaries while authenticating that the router "
+"contacted \n"
+"is the one who should receive a given message. The particulars of how "
+"routers \n"
+"communicate with other routers aren't critical - three separate protocols"
+" \n"
+"have been used at different points to provide those bare necessities."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:406
+#, python-format
+msgid ""
+"I2P started with a TCP-based protocol which \n"
+"has since been disabled. Then, to accommodate the need for high degree "
+"communication \n"
+"(as a number of routers will end up speaking with many others), I2P moved"
+" \n"
+"from a TCP based transport to a UDP-based one - "
+"\"Secure \n"
+"Semireliable UDP\", or \"SSU\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:414
+#, python-format
+msgid "As described in the SSU spec:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:418
+msgid ""
+"The goal of this protocol is to provide secure, authenticated, \n"
+"semireliable and unordered message delivery, exposing only a minimal "
+"amount \n"
+"of data easily discernible to third parties. It should support high "
+"degree \n"
+"communication as well as TCP-friendly congestion control and may include"
+" \n"
+"PMTU detection. It should be capable of efficiently moving bulk data at "
+"rates \n"
+"sufficient for home users. In addition, it should support techniques for "
+"addressing \n"
+"network obstacles, like most NATs or firewalls."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:428
+#, python-format
+msgid ""
+"Following the introduction of SSU, after issues with congestion collapse"
+" \n"
+"appeared, a new NIO-based TCP transport called NTCP \n"
+"was implemented. It is enabled by default for outbound connections only. "
+"Those \n"
+"who configure their NAT/firewall to allow inbound connections and specify"
+" \n"
+"the external host and port (dyndns/etc is ok) on /config.jsp can receive "
+"inbound \n"
+"connections. As NTCP is NIO based, so it doesn't suffer from the 1 thread"
+" \n"
+"per connection issues of the old TCP transport."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:438
+msgid ""
+"I2P supports multiple transports simultaneously. A particular transport \n"
+"for an outbound connection is selected with \"bids\". Each transport bids"
+" for \n"
+"the connection and the relative value of these bids assigns the priority."
+" \n"
+"Transports may reply with different bids, depending on whether there is "
+"already \n"
+"an established connection to the peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:446
+#, python-format
+msgid ""
+"The current implementation ranks NTCP as the highest-priority transport \n"
+"for outbound connections in most situations. SSU is enabled for both "
+"outbound \n"
+"and inbound connections. Your firewall and your I2P router must be "
+"configured \n"
+"to allow inbound NTCP connections. For further information see the NTCP \n"
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:455
+msgid ""
+"A bare minimum set of cryptographic primitives are combined together to \n"
+"provide I2P's layered defenses against a variety of adversaries. At the "
+"lowest \n"
+"level, inter router communication is protected by the transport layer "
+"security \n"
+"- SSU encrypts each packet with AES256/CBC with both an explicit IV and "
+"MAC \n"
+"(HMAC-MD5-128) after agreeing upon an ephemeral session key through a "
+"2048bit \n"
+"Diffie-Hellman exchange, station-to-station authentication with the other"
+" \n"
+"router's DSA key, plus each network message has their own hash for local "
+"integrity \n"
+"checking. Tunnel messages passed over the "
+"transports \n"
+"have their own layered AES256/CBC encryption with an explicit IV and "
+"verified \n"
+"at the tunnel endpoint with an additional SHA256 hash. Various other "
+"messages \n"
+"are passed along inside \"garlic messages\", which are encrypted with "
+"ElGamal/AES+SessionTags \n"
+"(explained below)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:470
+msgid "Garlic messages"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:471
+msgid ""
+"Garlic messages are an extension of \"onion\" layered encryption, "
+"allowing \n"
+"the contents of a single message to contain multiple \"cloves\" - fully "
+"formed \n"
+"messages alongside their own instructions for delivery. Messages are "
+"wrapped \n"
+"into a garlic message whenever the message would otherwise be passing in "
+"cleartext \n"
+"through a peer who should not have access to the information - for "
+"instance, \n"
+"when a router wants to ask another router to participate in a tunnel, "
+"they \n"
+"wrap the request inside a garlic, encrypt that garlic to the receiving "
+"router's \n"
+"2048bit ElGamal public key, and forward it through a tunnel. Another "
+"example \n"
+"is when a client wants to send a message to a destination - the sender's "
+"router \n"
+"will wrap up that data message (alongside some other messages) into a "
+"garlic, \n"
+"encrypt that garlic to the 2048bit ElGamal public key published in the "
+"recipient's \n"
+"leaseSet, and forward it through the appropriate tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:486
+msgid ""
+"The \"instructions\" attached to each clove inside the encryption layer "
+"includes \n"
+"the ability to request that the clove be forwarded locally, to a remote "
+"router, \n"
+"or to a remote tunnel on a remote router. There are fields in those "
+"instructions \n"
+"allowing a peer to request that the delivery be delayed until a certain "
+"time \n"
+"or condition has been met, though they won't be honored until the nontrivial \n"
+"delays are deployed. It is possible to explicitly route garlic "
+"messages \n"
+"any number of hops without building tunnels, or even to reroute tunnel "
+"messages \n"
+"by wrapping them in garlic messages and forwarding them a number of hops "
+"prior \n"
+"to delivering them to the next hop in the tunnel, but those techniques "
+"are \n"
+"not currently used in the existing implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:499
+msgid "Session tags"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:500
+msgid ""
+"As an unreliable, unordered, message based system, I2P uses a simple "
+"combination \n"
+"of asymmetric and symmetric encryption algorithms to provide data "
+"confidentiality \n"
+"and integrity to garlic messages. As a whole, the combination is referred"
+" \n"
+"to as ElGamal/AES+SessionTags, but that is an excessively verbose way to "
+"describe \n"
+"the simple use of 2048bit ElGamal, AES256, SHA256 and 32 byte nonces."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:539
+msgid ""
+"Session tags themselves have a very short lifetime, after which they are"
+" \n"
+"discarded if not used. In addition, the quantity stored for each key is "
+"limited, \n"
+"as are the number of keys themselves - if too many arrive, either new or "
+"old \n"
+"messages may be dropped. The sender keeps track whether messages using "
+"session \n"
+"tags are getting through, and if there isn't sufficient communication it "
+"may \n"
+"drop the ones previously assumed to be properly delivered, reverting back"
+" \n"
+"to the full expensive ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:549
+msgid ""
+"One alternative is to transmit only a single session tag, and from that,"
+" \n"
+"seed a deterministic PRNG for determining what tags to use or expect. By "
+"keeping \n"
+"this PRNG roughly synchronized between the sender and recipient (the "
+"recipient \n"
+"precomputes a window of the next e.g. 50 tags), the overhead of "
+"periodically \n"
+"bundling a large number of tags is removed, allowing more options in the "
+"space/time \n"
+"tradeoff, and perhaps reducing the number of ElGamal encryptions "
+"necessary. \n"
+"However, it would depend upon the strength of the PRNG to provide the "
+"necessary \n"
+"cover against internal adversaries, though perhaps by limiting the amount"
+" \n"
+"of times each PRNG is used, any weaknesses can be minimized. At the "
+"moment, \n"
+"there are no immediate plans to move towards these synchronized PRNGs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:562
+msgid "Future"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:563
+msgid ""
+"While I2P is currently functional and sufficient for many scenarios, "
+"there \n"
+"are several areas which require further improvement to meet the needs of "
+"those \n"
+"facing more powerful adversaries as well as substantial user experience "
+"optimization."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:569
+msgid "Restricted route operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:570
+msgid ""
+"I2P is an overlay network designed to be run on top of a functional "
+"packet \n"
+"switched network, exploiting the end to end principle to offer anonymity "
+"and \n"
+"security. While the Internet no longer fully embraces the end to end "
+"principle\n"
+"(due to the usage of NAT), \n"
+"I2P does require a substantial portion of the network to be reachable - "
+"there \n"
+"may be a number of peers along the edges running using restricted routes,"
+" \n"
+"but I2P does not include an appropriate routing algorithm for the "
+"degenerate \n"
+"case where most peers are unreachable. It would, however work on top of a"
+" \n"
+"network employing such an algorithm."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:582
+msgid ""
+"Restricted route operation, where there are limits to what peers are "
+"reachable \n"
+"directly, has several different functional and anonymity implications, "
+"dependent \n"
+"upon how the restricted routes are handled. At the most basic level, "
+"restricted \n"
+"routes exist when a peer is behind a NAT or firewall which does not allow"
+" \n"
+"inbound connections. This was largely addressed in I2P 0.6.0.6 by "
+"integrating \n"
+"distributed hole punching into the transport layer, allowing people "
+"behind \n"
+"most NATs and firewalls to receive unsolicited connections without any "
+"configuration. \n"
+"However, this does not limit the exposure of the peer's IP address to "
+"routers \n"
+"inside the network, as they can simply get introduced to the peer through"
+" \n"
+"the published introducer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:595
+msgid ""
+"Beyond the functional handling of restricted routes, there are two levels"
+" \n"
+"of restricted operation that can be used to limit the exposure of one's "
+"IP \n"
+"address - using router-specific tunnels for communication, and offering "
+"'client \n"
+"routers'. For the former, routers can either build a new pool of tunnels "
+"or \n"
+"reuse their exploratory pool, publishing the inbound gateways to some of "
+"them \n"
+"as part of their routerInfo in place of their transport addresses. When a"
+" \n"
+"peer wants to get in touch with them, they see those tunnel gateways in "
+"the \n"
+"netDb and simply send the relevant message to them through one of the "
+"published \n"
+"tunnels. If the peer behind the restricted route wants to reply, it may "
+"do \n"
+"so either directly (if they are willing to expose their IP to the peer) "
+"or \n"
+"indirectly through their outbound tunnels. When the routers that the peer"
+" \n"
+"has direct connections to want to reach it (to forward tunnel messages, "
+"for \n"
+"instance), they simply prioritize their direct connection over the "
+"published \n"
+"tunnel gateway. The concept of 'client routers' simply extends the "
+"restricted \n"
+"route by not publishing any router addresses. Such a router would not "
+"even \n"
+"need to publish their routerInfo in the netDb, merely providing their "
+"self \n"
+"signed routerInfo to the peers that it contacts (necessary to pass the "
+"router's \n"
+"public keys). Both levels of restricted route operation are planned for "
+"I2P \n"
+"2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:617
+msgid ""
+"There are tradeoffs for those behind restricted routes, as they would "
+"likely \n"
+"participate in other people's tunnels less frequently, and the routers "
+"which \n"
+"they are connected to would be able to infer traffic patterns that would "
+"not \n"
+"otherwise be exposed. On the other hand, if the cost of that exposure is "
+"less \n"
+"than the cost of an IP being made available, it may be worthwhile. This, "
+"of \n"
+"course, assumes that the peers that the router behind a restricted route "
+"contacts \n"
+"are not hostile - either the network is large enough that the probability"
+" \n"
+"of using a hostile peer to get connected is small enough, or trusted (and"
+" \n"
+"perhaps temporary) peers are used instead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:629
+msgid "Variable latency"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:630
+msgid ""
+"Even though the bulk of I2P's initial efforts have been on low latency "
+"communication, \n"
+"it was designed with variable latency services in mind from the "
+"beginning. \n"
+"At the most basic level, applications running on top of I2P can offer the"
+" \n"
+"anonymity of medium and high latency communication while still blending "
+"their \n"
+"traffic patterns in with low latency traffic. Internally though, I2P can "
+"offer \n"
+"its own medium and high latency communication through the garlic "
+"encryption \n"
+"- specifying that the message should be sent after a certain delay, at a "
+"certain \n"
+"time, after a certain number of messages have passed, or another mix "
+"strategy. \n"
+"With the layered encryption, only the router that the clove exposed the "
+"delay \n"
+"request would know that the message requires high latency, allowing the "
+"traffic \n"
+"to blend in further with the low latency traffic. Once the transmission "
+"precondition \n"
+"is met, the router holding on to the clove (which itself would likely be "
+"a \n"
+"garlic message) simply forwards it as requested - to a router, to a "
+"tunnel, \n"
+"or, most likely, to a remote client destination."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:647
+msgid ""
+"There are a substantial number of ways to exploit this capacity for high"
+" \n"
+"latency comm in I2P, but for the moment, doing so has been scheduled for "
+"the \n"
+"I2P 3.0 release. In the meantime, those requiring the anonymity that high"
+" \n"
+"latency comm can offer should look towards the application layer to "
+"provide \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:655
+msgid "Open questions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:657
+msgid "How to get rid of the timing constraint?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:658
+msgid "Can we deal with the sessionTags more efficiently?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:659
+msgid ""
+"What, if any, batching/mixing strategies should be made available on the "
+"tunnels?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:660
+msgid ""
+"What other tunnel peer selection and ordering strategies should be "
+"available?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:663
+msgid "Similar systems"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:665
+msgid ""
+"I2P's architecture builds on the concepts of message oriented middleware,"
+" \n"
+"the topology of DHTs, the anonymity and cryptography of free route "
+"mixnets, \n"
+"and the adaptability of packet switched networking. The value comes not "
+"from \n"
+"novel concepts of algorithms though, but from careful engineering "
+"combining \n"
+"the research results of existing systems and papers. While there are a "
+"few \n"
+"similar efforts worth reviewing, both for technical and functional "
+"comparisons, \n"
+"two in particular are pulled out here - Tor and Freenet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:675
+#, python-format
+msgid "See also the Network Comparisons Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:680
+#: i2p2www/pages/site/docs/how/tech-intro.html:745
+msgid "website"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:682
+msgid ""
+"At first glance, Tor and I2P have many functional and anonymity related \n"
+"similarities. While I2P's development began before we were aware of the "
+"early \n"
+"stage efforts on Tor, many of the lessons of the original onion routing "
+"and \n"
+"ZKS efforts were integrated into I2P's design. Rather than building an "
+"essentially \n"
+"trusted, centralized system with directory servers, I2P has a self "
+"organizing \n"
+"network database with each peer taking on the responsibility of profiling"
+" \n"
+"other routers to determine how best to exploit available resources. "
+"Another \n"
+"key difference is that while both I2P and Tor use layered and ordered "
+"paths \n"
+"(tunnels and circuits/streams), I2P is fundamentally a packet switched "
+"network, \n"
+"while Tor is fundamentally a circuit switched one, allowing I2P to "
+"transparently \n"
+"route around congestion or other network failures, operate redundant "
+"pathways, \n"
+"and load balance the data across available resources. While Tor offers "
+"the \n"
+"useful outproxy functionality by offering integrated outproxy discovery "
+"and \n"
+"selection, I2P leaves such application layer decisions up to applications"
+" \n"
+"running on top of I2P - in fact, I2P has even externalized the TCP-like "
+"streaming \n"
+"library itself to the application layer, allowing developers to "
+"experiment \n"
+"with different strategies, exploiting their domain specific knowledge to "
+"offer \n"
+"better performance."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:703
+msgid ""
+"From an anonymity perspective, there is much similarity when the core "
+"networks \n"
+"are compared. However, there are a few key differences. When dealing with"
+" \n"
+"an internal adversary or most external adversaries, I2P's simplex tunnels"
+" \n"
+"expose half as much traffic data than would be exposed with Tor's duplex "
+"circuits \n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels. \n"
+"While I2P's peer selection and ordering strategies should sufficiently "
+"address \n"
+"predecessor attacks, should a switch to bidirectional tunnels be "
+"necessary,\n"
+"we could simply build an inbound and outbound tunnel along the same "
+"routers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:717
+msgid ""
+"Another anonymity issue comes up in Tor's use of telescopic tunnel "
+"creation, \n"
+"as simple packet counting and timing measurements as the cells in a "
+"circuit \n"
+"pass through an adversary's node exposes statistical information "
+"regarding \n"
+"where the adversary is within the circuit. I2P's unidirectional tunnel "
+"creation \n"
+"with a single message so that this data is not exposed. Protecting the "
+"position \n"
+"in a tunnel is important, as an adversary would otherwise be able to "
+"mount \n"
+"a series of powerful predecessor, intersection, and traffic confirmation "
+"attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:727
+msgid ""
+"Tor's support for a second tier of \"onion proxies\" does offer a non-"
+"trivial \n"
+"degree of anonymity while requiring a low cost of entry, while I2P will "
+"not \n"
+"offer this topology until 2.0."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:733
+msgid ""
+"On the whole, Tor and I2P complement each other in their focus - Tor "
+"works \n"
+"towards offering high speed anonymous Internet outproxying, while I2P "
+"works \n"
+"towards offering a decentralized resilient network in itself. In theory, "
+"both \n"
+"can be used to achieve both purposes, but given limited development "
+"resources, \n"
+"they both have their strengths and weaknesses. The I2P developers have "
+"considered \n"
+"the steps necessary to modify Tor to take advantage of I2P's design, but "
+"concerns \n"
+"of Tor's viability under resource scarcity suggest that I2P's packet "
+"switching \n"
+"architecture will be able to exploit scarce resources more effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:747
+msgid ""
+"Freenet played a large part in the initial stages of I2P's design - "
+"giving \n"
+"proof to the viability of a vibrant pseudonymous community completely "
+"contained \n"
+"within the network, demonstrating that the dangers inherent in outproxies"
+" \n"
+"could be avoided. The first seed of I2P began as a replacement "
+"communication \n"
+"layer for Freenet, attempting to factor out the complexities of a "
+"scalable, \n"
+"anonymous and secure point to point communication from the complexities "
+"of \n"
+"a censorship resistant distributed data store. Over time however, some of"
+" \n"
+"the anonymity and scalability issues inherent in Freenet's algorithms "
+"made \n"
+"it clear that I2P's focus should stay strictly on providing a generic "
+"anonymous \n"
+"communication layer, rather than as a component of Freenet. Over the "
+"years, \n"
+"the Freenet developers have come to see the weaknesses in the older "
+"design, \n"
+"prompting them to suggest that they will require a \"premix\" layer to "
+"offer \n"
+"substantial anonymity. In other words, Freenet needs to run on top of a "
+"mixnet \n"
+"such as I2P or Tor, with \"client nodes\" requesting and publishing data "
+"through \n"
+"the mixnet to the \"server nodes\" which then fetch and store the data "
+"according \n"
+"to Freenet's heuristic distributed data storage algorithms."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:766
+msgid ""
+"Freenet's functionality is very complementary to I2P's, as Freenet "
+"natively \n"
+"provides many of the tools for operating medium and high latency systems,"
+" \n"
+"while I2P natively provides the low latency mix network suitable for "
+"offering \n"
+"adequate anonymity. The logic of separating the mixnet from the "
+"censorship-\n"
+"resistant distributed data store still seems self-evident from an "
+"engineering, \n"
+"anonymity, security, and resource allocation perspective, so hopefully "
+"the \n"
+"Freenet team will pursue efforts in that direction, if not simply reusing"
+" \n"
+"(or helping to improve, as necessary) existing mixnets like I2P or Tor."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:777
+msgid ""
+"It is worth mentioning that there has recently been discussion and work \n"
+"by the Freenet developers on a \"globally scalable darknet\" using "
+"restricted \n"
+"routes between peers of various trust. While insufficient information has"
+" \n"
+"been made publicly available regarding how such a system would operate "
+"for \n"
+"a full review, from what has been said the anonymity and scalability "
+"claims \n"
+"seem highly dubious. In particular, the appropriateness for use in "
+"hostile \n"
+"regimes against state level adversaries has been tremendously overstated,"
+" \n"
+"and any analysis on the implications of resource scarcity upon the "
+"scalability \n"
+"of the network has seemingly been avoided. Further questions regarding "
+"susceptibility \n"
+"to traffic analysis, trust and other topics do exist, but a more in-depth"
+" \n"
+"review of this \"globally scalable darknet\" will have to wait until the "
+"Freenet \n"
+"team makes more information available."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:793
+msgid ""
+"I2P itself doesn't really do much - it simply sends messages to remote "
+"destinations \n"
+"and receives messages targeting local destinations - most of the "
+"interesting \n"
+"work goes on at the layers above it. By itself, I2P could be seen as an "
+"anonymous \n"
+"and secure IP layer, and the bundled streaming"
+" library \n"
+"as an implementation of an anonymous and secure TCP layer on top of it. "
+"Beyond \n"
+"that, I2PTunnel exposes a generic TCP "
+"proxying \n"
+"system for either getting into or out of the I2P network, plus a variety "
+"of \n"
+"network applications provide further functionality for end users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:804
+msgid "Streaming library"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:805
+msgid ""
+"The I2P streaming library can be viewed as a generic streaming interface "
+"(mirroring TCP sockets),\n"
+"and the implementation supports a sliding "
+"window protocol\n"
+"with several optimizations, to take into account the high delay over I2P."
+"\n"
+"Individual streams may adjust the maximum packet size and \n"
+"other options, though the default of 4KB compressed seems a reasonable "
+"tradeoff \n"
+"between the bandwidth costs of retransmitting lost messages and the "
+"latency \n"
+"of multiple messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:815
+msgid ""
+"In addition, in consideration of the relatively high cost of subsequent \n"
+"messages, the streaming library's protocol for scheduling and delivering "
+"messages \n"
+"has been optimized to allow individual messages passed to contain as much"
+" \n"
+"information as is available. For instance, a small HTTP transaction "
+"proxied \n"
+"through the streaming library can be completed in a single round trip - "
+"the \n"
+"first message bundles a SYN, FIN and the small payload (an HTTP request "
+"typically \n"
+"fits) and the reply bundles the SYN, FIN, ACK and the small payload (many"
+" \n"
+"HTTP responses fit). While an additional ACK must be transmitted to tell "
+"the \n"
+"HTTP server that the SYN/FIN/ACK has been received, the local HTTP proxy "
+"can \n"
+"deliver the full response to the browser immediately."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:828
+msgid ""
+"On the whole, however, the streaming library bears much resemblance to an"
+" \n"
+"abstraction of TCP, with its sliding windows, congestion control "
+"algorithms \n"
+"(both slow start and congestion avoidance), and general packet behavior "
+"(ACK, \n"
+"SYN, FIN, RST, etc)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:835
+msgid "Naming library and addressbook"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:836
+#, python-format
+msgid ""
+"For more information see the Naming and "
+"Addressbook page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:840
+#: i2p2www/pages/site/docs/how/tech-intro.html:914
+#: i2p2www/pages/site/docs/how/tech-intro.html:961
+#: i2p2www/pages/site/docs/how/tech-intro.html:993
+#: i2p2www/pages/site/docs/how/tech-intro.html:1001
+#: i2p2www/pages/site/docs/how/tech-intro.html:1009
+#: i2p2www/pages/site/docs/how/tech-intro.html:1019
+#: i2p2www/pages/site/docs/how/tech-intro.html:1027
+#: i2p2www/pages/site/docs/how/tech-intro.html:1049
+#, python-format
+msgid "Developed by: %(dev)s"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:842
+msgid ""
+"Naming within I2P has been an oft-debated topic since the very beginning"
+" \n"
+"with advocates across the spectrum of possibilities. However, given I2P's"
+" \n"
+"inherent demand for secure communication and decentralized operation, the"
+" \n"
+"traditional DNS-style naming system is clearly out, as are \"majority "
+"rules\" \n"
+"voting systems. Instead, I2P ships with a generic naming library and a "
+"base \n"
+"implementation designed to work off a local name to destination mapping, "
+"as \n"
+"well as an optional add-on application called the \"addressbook\". The "
+"addressbook \n"
+"is a web-of-trust-driven secure, distributed, and human readable naming "
+"system, \n"
+"sacrificing only the call for all human readable names to be globally "
+"unique \n"
+"by mandating only local uniqueness. While all messages in I2P are "
+"cryptographically \n"
+"addressed by their destination, different people can have local "
+"addressbook \n"
+"entries for \"Alice\" which refer to different destinations. People can "
+"still \n"
+"discover new names by importing published addressbooks of peers specified"
+" \n"
+"in their web of trust, by adding in the entries provided through a third "
+"party, \n"
+"or (if some people organize a series of published addressbooks using a "
+"first \n"
+"come first serve registration system) people can choose to treat these "
+"addressbooks \n"
+"as name servers, emulating traditional DNS."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:862
+msgid ""
+"I2P does not promote the use of DNS-like services though, as the damage \n"
+"done by hijacking a site can be tremendous - and insecure destinations "
+"have \n"
+"no value. DNSsec itself still falls back on registrars and certificate "
+"authorities, \n"
+"while with I2P, requests sent to a destination cannot be intercepted or "
+"the \n"
+"reply spoofed, as they are encrypted to the destination's public keys, "
+"and \n"
+"a destination itself is just a pair of public keys and a certificate. "
+"DNS-style \n"
+"systems on the other hand allow any of the name servers on the lookup "
+"path \n"
+"to mount simple denial of service and spoofing attacks. Adding on a "
+"certificate \n"
+"authenticating the responses as signed by some centralized certificate "
+"authority \n"
+"would address many of the hostile nameserver issues but would leave open "
+"replay \n"
+"attacks as well as hostile certificate authority attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:876
+msgid ""
+"Voting style naming is dangerous as well, especially given the "
+"effectiveness \n"
+"of Sybil attacks in anonymous systems - the attacker can simply create an"
+" \n"
+"arbitrarily high number of peers and \"vote\" with each to take over a "
+"given \n"
+"name. Proof-of-work methods can be used to make identity non-free, but as"
+" \n"
+"the network grows the load required to contact everyone to conduct online"
+" \n"
+"voting is implausible, or if the full network is not queried, different "
+"sets \n"
+"of answers may be reachable."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:886
+msgid ""
+"As with the Internet however, I2P is keeping the design and operation of"
+" \n"
+"a naming system out of the (IP-like) communication layer. The bundled "
+"naming \n"
+"library includes a simple service provider interface which alternate "
+"naming \n"
+"systems can plug into, allowing end users to drive what sort of naming "
+"tradeoffs \n"
+"they prefer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:895
+msgid ""
+"The old Syndie bundled with I2P has been replaced by the new Syndie which"
+"\n"
+"is distributed separately. For more information see the Syndie\n"
+"pages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:901
+msgid ""
+"Syndie is a safe, anonymous blogging / content publication / content "
+"aggregation \n"
+"system. It lets you create information, share it with others, and read "
+"posts \n"
+"from those you're interested in, all while taking into consideration your"
+" \n"
+"needs for security and anonymity. Rather than building its own content "
+"distribution \n"
+"network, Syndie is designed to run on top of existing networks, "
+"syndicating \n"
+"content through eepsites, Tor hidden services, Freenet freesites, normal "
+"websites, \n"
+"usenet newsgroups, email lists, RSS feeds, etc. Data published with "
+"Syndie \n"
+"is done so as to offer pseudonymous authentication to anyone reading or "
+"archiving \n"
+"it."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:916
+msgid ""
+"I2PTunnel is probably I2P's most popular and versatile client "
+"application, \n"
+"allowing generic proxying both into and out of the I2P network. I2PTunnel"
+" \n"
+"can be viewed as four separate proxying applications - a \"client\" which"
+" receives \n"
+"inbound TCP connections and forwards them to a given I2P destination, an "
+"\"httpclient\" \n"
+"(aka \"eepproxy\") which acts like an HTTP proxy and forwards the "
+"requests to \n"
+"the appropriate I2P destination (after querying the naming service if "
+"necessary), \n"
+"a \"server\" which receives inbound I2P streaming connections on a "
+"destination \n"
+"and forwards them to a given TCP host+port, and an \"httpserver\" which "
+"extends \n"
+"the \"server\" by parsing the HTTP request and responses to allow safer "
+"operation. \n"
+"There is an additional \"socksclient\" application, but its use is not "
+"encouraged \n"
+"for reasons previously mentioned."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:930
+msgid ""
+"I2P itself is not an outproxy network - the anonymity and security "
+"concerns \n"
+"inherent in a mix net which forwards data into and out of the mix have "
+"kept \n"
+"I2P's design focused on providing an anonymous network which capable of "
+"meeting \n"
+"the user's needs without requiring external resources. However, the "
+"I2PTunnel \n"
+"\"httpclient\" application offers a hook for outproxying - if the "
+"hostname requested \n"
+"doesn't end in \".i2p\", it picks a random destination from a user-"
+"provided \n"
+"set of outproxies and forwards the request to them. These destinations "
+"are \n"
+"simply I2PTunnel \"server\" instances run by volunteers who have "
+"explicitly \n"
+"chosen to run outproxies - no one is an outproxy by default, and running "
+"an \n"
+"outproxy doesn't automatically tell other people to proxy through you. "
+"While \n"
+"outproxies do have inherent weaknesses, they offer a simple proof of "
+"concept \n"
+"for using I2P and provide some functionality under a threat model which "
+"may \n"
+"be sufficient for some users."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:946
+msgid ""
+"I2PTunnel enables most of the applications in use. An \"httpserver\" "
+"pointing \n"
+"at a webserver lets anyone run their own anonymous website (or "
+"\"eepsite\") \n"
+"- a webserver is bundled with I2P for this purpose, but any webserver can"
+" \n"
+"be used. Anyone may run a \"client\" pointing at one of the anonymously "
+"hosted \n"
+"IRC servers, each of which are running a \"server\" pointing at their "
+"local \n"
+"IRCd and communicating between IRCds over their own \"client\" tunnels. "
+"End \n"
+"users also have \"client\" tunnels pointing at I2Pmail's \n"
+"POP3 and SMTP destinations (which in turn are simply \"server\" instances"
+" pointing \n"
+"at POP3 and SMTP servers), as well as \"client\" tunnels pointing at "
+"I2P's CVS \n"
+"server, allowing anonymous development. At times people have even run "
+"\"client\" \n"
+"proxies to access the \"server\" instances pointing at an NNTP server."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:963
+msgid ""
+"i2p-bt is a port of the mainline python BitTorrent client to run both the"
+" \n"
+"tracker and peer communication over I2P. Tracker requests are forwarded "
+"through \n"
+"the eepproxy to eepsites specified in the torrent file while tracker "
+"responses \n"
+"refer to peers by their destination explicitly, allowing i2p-bt to open "
+"up \n"
+"a streaming lib connection to query them "
+"for \n"
+"blocks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:972
+msgid ""
+"In addition to i2p-bt, a port of bytemonsoon has been made to I2P, making"
+" \n"
+"a few modifications as necessary to strip any anonymity-compromising "
+"information \n"
+"from the application and to take into consideration the fact that IPs "
+"cannot \n"
+"be used for identifying peers."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:980
+msgid ""
+"I2PSnark developed: jrandom, et al, ported from mjw's Snark client"
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:986
+msgid ""
+"Bundled with the I2P install, I2PSnark offers a simple anonymous "
+"BitTorrent \n"
+"client with multitorrent capabilities, exposing all of the functionality "
+"through \n"
+"a plain HTML web interface."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:995
+#, python-format
+msgid ""
+"Robert is a Bittorrent client written in Python.\n"
+"It is hosted on http://%(bob)s/Robert.html "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1003
+#, python-format
+msgid ""
+"PyBit is a Bittorrent client written in Python.\n"
+"It is hosted on %(pybit)s "
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1011
+msgid ""
+"I2Phex is a fairly direct port of the Phex Gnutella filesharing client to"
+" \n"
+"run entirely on top of I2P. While it has disabled some of Phex's "
+"functionality, \n"
+"such as integration with Gnutella webcaches, the basic file sharing and "
+"chatting \n"
+"system is fully functional."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1021
+msgid ""
+"iMule is a fairly direct port of the aMule filesharing client \n"
+"running entirely inside I2P."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1029
+#, python-format
+msgid ""
+"I2Pmail is more a service than an application - postman offers both "
+"internal \n"
+"and external email with POP3 and SMTP service through I2PTunnel instances"
+" \n"
+"accessing a series of components developed with mastiejaner, allowing "
+"people \n"
+"to use their preferred mail clients to send and receive mail "
+"pseudonymously. \n"
+"However, as most mail clients expose substantial identifying information,"
+" \n"
+"I2P bundles susi23's web based susimail client which has been built "
+"specifically \n"
+"with I2P's anonymity needs in mind. The I2Pmail/mail.i2p service offers "
+"transparent \n"
+"virus filtering as well as denial of service prevention with hashcash "
+"augmented \n"
+"quotas. In addition, each user has control of their batching strategy "
+"prior \n"
+"to delivery through the mail.i2p outproxies, which are separate from the "
+"mail.i2p \n"
+"SMTP and POP3 servers - both the outproxies and inproxies communicate "
+"with \n"
+"the mail.i2p SMTP and POP3 servers through I2P itself, so compromising "
+"those \n"
+"non-anonymous locations does not give access to the mail accounts or "
+"activity \n"
+"patterns of the user. At the moment the developers work on a "
+"decentralized \n"
+"mailsystem, called \"v2mail\". More information can be found on the "
+"eepsite \n"
+"%(postman)s."
+msgstr ""
+
+#: i2p2www/pages/site/docs/how/tech-intro.html:1051
+msgid ""
+"I2P-Bote is a distributed e-mail application. It does not use the "
+"traditional\n"
+"e-mail concept of sending an e-mail to a server and retrieving it from a "
+"server.\n"
+"Instead, it uses a Kademlia Distributed Hash Table to store mails.\n"
+"One user can push a mail into the DHT, while another can request the "
+"e-mail from the DHT.\n"
+"And all the mails sent within the I2P-Bote network are automatically "
+"encrypted end-to-end. X = g^x mod"
+" p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:166
+msgid "Alice sends X to Bob (Message 1)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:167
+msgid ""
+"Bob generates a secret integer y. He then calculates Y = g^y mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:168
+msgid "Bob sends Y to Alice.(Message 2)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:169
+msgid "Alice can now compute sessionKey = Y^x mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:170
+msgid "Bob can now compute sessionKey = X^y mod p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:171
+msgid ""
+"Both Alice and Bob now have a shared key sessionKey = g^(x*y) mod "
+"p
."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:173
+#, python-format
+msgid ""
+"The sessionKey is then used to exchange identities in Message 3 "
+"and Message 4.\n"
+"The exponent (x and y) length for the DH exchange is documented on the\n"
+"cryptography page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:193
+msgid "Message 1 (Session Request)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:194
+#, python-format
+msgid ""
+"This is the DH request. Alice already has Bob's\n"
+"Router "
+"Identity,\n"
+"IP address, and port, as contained in his\n"
+"Router Info,\n"
+"which was published to the\n"
+"network database.\n"
+"Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:207
+#: i2p2www/pages/site/docs/transport/ntcp.html:250
+#: i2p2www/pages/site/docs/transport/ntcp.html:332
+#: i2p2www/pages/site/docs/transport/ntcp.html:437
+msgid "Size:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:209
+msgid "Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:227
+msgid "256 byte X from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:229
+msgid "SHA256 Hash(X) xored with SHA256 Hash(Bob's `RouterIdentity`)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:236
+#: i2p2www/pages/site/docs/transport/ntcp.html:319
+#: i2p2www/pages/site/docs/transport/ntcp.html:398
+msgid "Notes:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:237
+msgid ""
+"Bob verifies HXxorHI using his own router hash. If it does not verify,\n"
+"Alice has contacted the wrong router, and Bob drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:243
+msgid "Message 2 (Session Created)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:244
+msgid "This is the DH reply. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:252
+#: i2p2www/pages/site/docs/transport/ntcp.html:334
+#: i2p2www/pages/site/docs/transport/ntcp.html:439
+msgid "Unencrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:274
+#: i2p2www/pages/site/docs/transport/ntcp.html:310
+msgid "256 byte Y from Diffie Hellman"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:276
+msgid "SHA256 Hash(X concatenated with Y)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:279
+#: i2p2www/pages/site/docs/transport/ntcp.html:364
+msgid "4 byte timestamp (seconds since the epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:281
+msgid "12 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:285
+#: i2p2www/pages/site/docs/transport/ntcp.html:376
+#: i2p2www/pages/site/docs/transport/ntcp.html:466
+msgid "Encrypted Contents:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:312
+#, python-format
+msgid ""
+"48 bytes AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of Y as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:320
+msgid ""
+"Alice may drop the connection if the clock skew with Bob is too high as "
+"calculated using tsB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:325
+msgid "Message 3 (Session Confirm A)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:326
+msgid ""
+"This contains Alice's router identity, and a signature of the critical "
+"data. Alice sends Bob:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:360
+msgid "2 byte size of Alice's router identity to follow (387+)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:362
+msgid "Alice's 387+ byte `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:366
+#: i2p2www/pages/site/docs/transport/ntcp.html:461
+msgid "0-15 bytes random data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:368
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Bob's `RouterIdentity`, tsA, tsB.\n"
+" Alice signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in her `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:389
+#, python-format
+msgid ""
+"448 bytes AES encrypted using the DH"
+" session key and\n"
+" the last 16 bytes of HXxorHI (i.e., the last 16 bytes "
+"of message #1) as the IV"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:400
+msgid "Bob verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:403
+msgid ""
+"Bob may drop the connection if the clock skew with Alice is too high as "
+"calculated using tsA."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:406
+msgid ""
+"Alice will use the last 16 bytes of the encrypted contents of this "
+"message as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:430
+msgid "Message 4 (Session Confirm B)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:431
+msgid "This is a signature of the critical data. Bob sends Alice:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:455
+msgid ""
+"the `Signature` of the following concatenated data:\n"
+" X, Y, Alice's `RouterIdentity`, tsA, tsB.\n"
+" Bob signs it with the `SigningPrivateKey` associated with "
+"the `SigningPublicKey` in his `RouterIdentity`"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:479
+#, python-format
+msgid ""
+"Data AES encrypted using the DH "
+"session key and\n"
+" the last 16 bytes of the encrypted contents of message "
+"#2 as the IV\n"
+" 48 bytes for a DSA signature, may vary for other "
+"signature types"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:488
+msgid "Alice verifies the signature, and on failure, drops the connection."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:491
+msgid ""
+"Bob will use the last 16 bytes of the encrypted contents of this message "
+"as the IV for the next message."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:506
+msgid "After Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:507
+msgid ""
+"The connection is established, and standard or time sync messages may be "
+"exchanged.\n"
+"All subsequent messages are AES encrypted using the negotiated DH session"
+" key.\n"
+"Alice will use the last 16 bytes of the encrypted contents of message #3 "
+"as the next IV.\n"
+"Bob will use the last 16 bytes of the encrypted contents of message #4 as"
+" the next IV."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:516
+msgid "Check Connection Message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:517
+msgid ""
+"Alternately, when Bob receives a connection, it could be a\n"
+"check connection (perhaps prompted by Bob asking for someone\n"
+"to verify his listener).\n"
+"Check Connection is not currently used.\n"
+"However, for the record, check connections are formatted as follows.\n"
+"A check info connection will receive 256 bytes containing:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:526
+msgid "32 bytes of uninterpreted, ignored data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:527
+msgid "1 byte size"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:528
+msgid ""
+"that many bytes making up the local router's IP address (as reached by "
+"the remote side)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:529
+msgid "2 byte port number that the local router was reached on"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:530
+msgid ""
+"4 byte i2p network time as known by the remote side (seconds since the "
+"epoch)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:531
+msgid "uninterpreted padding data, up to byte 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:532
+msgid ""
+"xor of the local router's identity hash and the SHA256 of bytes 32 "
+"through bytes 223"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:535
+msgid "Check connection is completely disabled as of release 0.9.12."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:539
+msgid "Discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:540
+#, python-format
+msgid "Now on the NTCP Discussion Page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:546
+msgid "The maximum message size should be increased to approximately 32 KB."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:550
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then.\n"
+"However, there is currently no provision for padding beyond the next "
+"16-byte boundary,\n"
+"to create a limited number of message sizes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:558
+msgid ""
+"Memory utilization (including that of the kernel) for NTCP should be "
+"compared to that for SSU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ntcp.html:562
+msgid ""
+"Can the establishment messages be randomly padded somehow, to frustrate\n"
+"identification of I2P traffic based on initial packet sizes?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:2
+msgid "Secure Semireliable UDP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:7
+#, python-format
+msgid ""
+"SSU (also called \"UDP\" in much of the I2P documentation and user "
+"interfaces)\n"
+"is one of three transports currently "
+"implemented in I2P.\n"
+"The others are NTCP and NTCP2."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:13
+msgid ""
+"SSU was introduced in I2P release 0.6.\n"
+"In a standard I2P installation, the router uses both NTCP and SSU for "
+"outbound connections.\n"
+"SSU-over-IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:19
+msgid ""
+"SSU is called \"semireliable\" because it will repeatedly retransmit "
+"unacknowledged messages,\n"
+"but only up to a maximum number of times. After that, the message is "
+"dropped."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:24
+msgid "SSU Services"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:26
+msgid ""
+"Like the NTCP transport, SSU provides reliable, encrypted, connection-"
+"oriented, point-to-point data transport.\n"
+"Unique to SSU, it also provides IP detection and NAT traversal services, "
+"including:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:32
+msgid ""
+"Cooperative NAT/Firewall traversal using introducers"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:33
+msgid ""
+"Local IP detection by inspection of incoming packets and peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:34
+msgid ""
+"Communication of firewall status and local IP, and changes to either to "
+"NTCP"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:46
+#: i2p2www/pages/site/docs/transport/ssu.html:60
+#: i2p2www/pages/site/docs/transport/ssu.html:61
+#: i2p2www/pages/site/docs/transport/ssu.html:63
+#: i2p2www/pages/site/docs/transport/ssu.html:66
+#: i2p2www/pages/site/docs/transport/ssu.html:70
+#: i2p2www/pages/site/docs/transport/ssu.html:71
+#: i2p2www/pages/site/docs/transport/ssu.html:77
+msgid "See below"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:84
+msgid "Protocol Details"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:86
+msgid "Congestion control"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:88
+msgid ""
+"SSU's need for only semireliable delivery, TCP-friendly operation,\n"
+"and the capacity for high throughput allows a great deal of latitude in\n"
+"congestion control. The congestion control algorithm outlined below is\n"
+"meant to be both efficient in bandwidth as well as simple to implement."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:95
+msgid ""
+"Packets are scheduled according to the router's policy, taking care\n"
+"not to exceed the router's outbound capacity or to exceed the measured \n"
+"capacity of the remote peer. The measured capacity operates along the\n"
+"lines of TCP's slow start and congestion avoidance, with additive "
+"increases\n"
+"to the sending capacity and multiplicative decreases in face of "
+"congestion.\n"
+"Unlike for TCP, routers may give up on some messages after\n"
+"a given period or number of retransmissions while continuing to transmit"
+" \n"
+"other messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:106
+msgid ""
+"The congestion detection techniques vary from TCP as well, since each \n"
+"message has its own unique and nonsequential identifier, and each message"
+"\n"
+"has a limited size - at most, 32KB. To efficiently transmit this "
+"feedback\n"
+"to the sender, the receiver periodically includes a list of fully ACKed \n"
+"message identifiers and may also include bitfields for partially received"
+"\n"
+"messages, where each bit represents the reception of a fragment. If \n"
+"duplicate fragments arrive, the message should be ACKed again, or if the\n"
+"message has still not been fully received, the bitfield should be \n"
+"retransmitted with any new updates."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:118
+msgid ""
+"The current implementation does not pad the packets to\n"
+"any particular size, but instead just places a single message fragment "
+"into\n"
+"a packet and sends it off (careful not to exceed the MTU)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:125
+msgid ""
+"As of router version 0.8.12,\n"
+"two MTU values are used for IPv4: 620 and 1484.\n"
+"The MTU value is adjusted based on the percentage of packets that are "
+"retransmitted."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:131
+msgid ""
+"For both MTU values, it is desirable that (MTU % 16) == 12, so that\n"
+"the payload portion after the 28-byte IP/UDP header is a multiple of\n"
+"16 bytes, for encryption purposes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:137
+msgid ""
+"For the small MTU value, it is desirable to pack a 2646-byte\n"
+"Variable Tunnel Build Message efficiently into multiple packets;\n"
+"with a 620-byte MTU, it fits into 5 packets with nicely."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:143
+msgid ""
+"Based on measurements, 1492 fits nearly all reasonably small I2NP "
+"messages\n"
+"(larger I2NP messages may be up to 1900 to 4500 bytes, which isn't going "
+"to fit\n"
+"into a live network MTU anyway)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:149
+msgid ""
+"The MTU values were 608 and 1492 for releases 0.8.9 - 0.8.11.\n"
+"The large MTU was 1350 prior to release 0.8.9."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:154
+msgid ""
+"The maximum receive packet size\n"
+"is 1571 bytes as of release 0.8.12.\n"
+"For releases 0.8.9 - 0.8.11 it was 1535 bytes.\n"
+"Prior to release 0.8.9 it was 2048 bytes."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:161
+msgid ""
+"As of release 0.9.2, if a router's network interface MTU is less than "
+"1484,\n"
+"it will publish that in the network database, and other routers should\n"
+"honor that when a connection is established."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:167
+msgid ""
+"For IPv6, the minimum MTU is 1280. The IPv6 IP/UDP header is 48 bytes,\n"
+"so we use an MTU where (MTN % 16 == 0), which is true for 1280.\n"
+"The maximum IPv6 MTU is 1488.\n"
+" (max was 1472 prior to version 0.9.28)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:174
+msgid "Message Size Limits"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:175
+msgid ""
+"While the maximum message size is nominally 32KB, the practical\n"
+"limit differs. The protocol limits the number of fragments to 7 bits, or "
+"128.\n"
+"The current implementation, however, limits each message to a maximum of "
+"64 fragments,\n"
+"which is sufficient for 64 * 534 = 33.3 KB when using the 608 MTU.\n"
+"Due to overhead for bundled LeaseSets and session keys, the practical "
+"limit\n"
+"at the application level is about 6KB lower, or about 26KB.\n"
+"Further work is necessary to raise the UDP transport limit above 32KB.\n"
+"For connections using the larger MTU, larger messages are possible."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:197
+msgid "Keys"
+msgstr "Kľúče"
+
+#: i2p2www/pages/site/docs/transport/ssu.html:199
+msgid ""
+"All encryption used is AES256/CBC with 32 byte keys and 16 byte IVs.\n"
+"When Alice originates a session with Bob,\n"
+"the MAC and session keys are negotiated as part of the DH exchange, and "
+"are then used\n"
+"for the HMAC and encryption, respectively. During the DH exchange, \n"
+"Bob's publicly knowable introKey is used for the MAC and encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:207
+msgid ""
+"Both the initial message and the subsequent\n"
+"reply use the introKey of the responder (Bob) - the responder does \n"
+"not need to know the introKey of the requester (Alice). The DSA \n"
+"signing key used by Bob should already be known to Alice when she \n"
+"contacts him, though Alice's DSA key may not already be known by \n"
+"Bob."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:216
+msgid ""
+"Upon receiving a message, the receiver checks the \"from\" IP address and"
+" port\n"
+"with all established sessions - if there are matches,\n"
+"that session's MAC keys are tested in the HMAC. If none\n"
+"of those verify or if there are no matching IP addresses, the \n"
+"receiver tries their introKey in the MAC. If that does not verify,\n"
+"the packet is dropped. If it does verify, it is interpreted \n"
+"according to the message type, though if the receiver is overloaded,\n"
+"it may be dropped anyway."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:227
+msgid ""
+"If Alice and Bob have an established session, but Alice loses the \n"
+"keys for some reason and she wants to contact Bob, she may at any \n"
+"time simply establish a new session through the SessionRequest and\n"
+"related messages. If Bob has lost the key but Alice does not know\n"
+"that, she will first attempt to prod him to reply, by sending a \n"
+"DataMessage with the wantReply flag set, and if Bob continually \n"
+"fails to reply, she will assume the key is lost and reestablish a \n"
+"new one."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:238
+#, python-format
+msgid ""
+"For the DH key agreement,\n"
+"RFC3526 2048bit\n"
+"MODP group (#14) is used:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:248
+#, python-format
+msgid ""
+"These are the same p and g used for I2P's\n"
+"ElGamal encryption."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:253
+msgid "Replay prevention"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:255
+msgid ""
+"Replay prevention at the SSU layer occurs by rejecting packets \n"
+"with exceedingly old timestamps or those which reuse an IV. To\n"
+"detect duplicate IVs, a sequence of Bloom filters are employed to\n"
+"\"decay\" periodically so that only recently added IVs are detected."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:262
+msgid ""
+"The messageIds used in DataMessages are defined at layers above\n"
+"the SSU transport and are passed through transparently. These IDs\n"
+"are not in any particular order - in fact, they are likely to be\n"
+"entirely random. The SSU layer makes no attempt at messageId \n"
+"replay prevention - higher layers should take that into account."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:270
+msgid "Addressing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:272
+msgid ""
+"To contact an SSU peer, one of two sets of information is necessary:\n"
+"a direct address, for when the peer is publicly reachable, or an\n"
+"indirect address, for using a third party to introduce the peer.\n"
+"There is no restriction on the number of addresses a peer may have."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:284
+msgid ""
+"Each of the addresses may also expose a series of options - special\n"
+"capabilities of that particular peer. For a list of available\n"
+"capabilities, see below."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:290
+#, python-format
+msgid ""
+"The addresses, options, and capabilities are published in the network database."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:295
+msgid "Direct Session Establishment"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:296
+msgid ""
+"Direct session establishment is used when no third party is required for "
+"NAT traversal.\n"
+"The message sequence is as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:301
+msgid "Connection establishment (direct)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:302
+msgid ""
+"Alice connects directly to Bob.\n"
+"IPv6 is supported as of version 0.9.8."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:317
+#, python-format
+msgid ""
+"After the SessionConfirmed message is received, Bob sends a small\n"
+"DeliveryStatus message\n"
+"as a confirmation.\n"
+"In this message, the 4-byte message ID is set to a random number, and the"
+"\n"
+"8-byte \"arrival time\" is set to the current network-wide ID, which is 2"
+"\n"
+"(i.e. 0x0000000000000002)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:326
+#, python-format
+msgid ""
+"After the status message is sent, the peers usually exchange\n"
+"DatabaseStore messages\n"
+"containing their\n"
+"RouterInfos,\n"
+"however, this is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:335
+msgid ""
+"It does not appear that the type of the status message or its contents "
+"matters.\n"
+"It was originally added becasue the DatabaseStore message was delayed\n"
+"several seconds; since the store is now sent immediately, perhaps\n"
+"the status message can be eliminated."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:344
+msgid ""
+"Introduction keys are delivered through an external channel \n"
+"(the network database, where they are identical to the router Hash for "
+"now)\n"
+"and must be used when establishing a session key. For the indirect\n"
+"address, the peer must first contact the relayhost and ask them for\n"
+"an introduction to the peer known at that relayhost under the given\n"
+"tag. If possible, the relayhost sends a message to the addressed\n"
+"peer telling them to contact the requesting peer, and also gives \n"
+"the requesting peer the IP and port on which the addressed peer is\n"
+"located. In addition, the peer establishing the connection must \n"
+"already know the public keys of the peer they are connecting to (but\n"
+"not necessary to any intermediary relay peer)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:358
+msgid ""
+"Indirect session establishment by means of a third party introduction\n"
+"is necessary for efficient NAT traversal. Charlie, a router behind a\n"
+"NAT or firewall which does not allow unsolicited inbound UDP packets,\n"
+"first contacts a few peers, choosing some to serve as introducers. Each\n"
+"of these peers (Bob, Bill, Betty, etc) provide Charlie with an "
+"introduction\n"
+"tag - a 4 byte random number - which he then makes available to the "
+"public\n"
+"as methods of contacting him. Alice, a router who has Charlie's "
+"published\n"
+"contact methods, first sends a RelayRequest packet to one or more of the"
+" \n"
+"introducers, asking each to introduce her to Charlie (offering the \n"
+"introduction tag to identify Charlie). Bob then forwards a RelayIntro\n"
+"packet to Charlie including Alice's public IP and port number, then sends"
+"\n"
+"Alice back a RelayResponse packet containing Charlie's public IP and port"
+"\n"
+"number. When Charlie receives the RelayIntro packet, he sends off a "
+"small\n"
+"random packet to Alice's IP and port (poking a hole in his NAT/firewall),"
+"\n"
+"and when Alice receives Bob's RelayResponse packet, she begins a new \n"
+"full direction session establishment with the specified IP and port."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:385
+msgid "Connection establishment (indirect using an introducer)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:387
+msgid "Alice first connects to introducer Bob, who relays the request to Charlie."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:405
+msgid ""
+"After the hole punch, the session is established between Alice and "
+"Charlie as in a direct establishment."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:419
+msgid "Peer testing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:421
+msgid ""
+"The automation of collaborative reachability testing for peers is\n"
+"enabled by a sequence of PeerTest messages. With its proper \n"
+"execution, a peer will be able to determine their own reachability\n"
+"and may update its behavior accordingly. The testing process is \n"
+"quite simple:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:440
+msgid ""
+"Each of the PeerTest messages carry a nonce identifying the\n"
+"test series itself, as initialized by Alice. If Alice doesn't \n"
+"get a particular message that she expects, she will retransmit\n"
+"accordingly, and based upon the data received or the messages\n"
+"missing, she will know her reachability. The various end states\n"
+"that may be reached are as follows:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:450
+msgid ""
+"If she doesn't receive a response from Bob, she will retransmit\n"
+"up to a certain number of times, but if no response ever arrives,\n"
+"she will know that her firewall or NAT is somehow misconfigured, \n"
+"rejecting all inbound UDP packets even in direct response to an\n"
+"outbound packet. Alternately, Bob may be down or unable to get \n"
+"Charlie to reply."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:459
+msgid ""
+"If Alice doesn't receive a PeerTest message with the \n"
+"expected nonce from a third party (Charlie), she will retransmit\n"
+"her initial request to Bob up to a certain number of times, even\n"
+"if she has received Bob's reply already. If Charlie's first message \n"
+"still doesn't get through but Bob's does, she knows that she is\n"
+"behind a NAT or firewall that is rejecting unsolicited connection\n"
+"attempts and that port forwarding is not operating properly (the\n"
+"IP and port that Bob offered up should be forwarded)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:470
+msgid ""
+"If Alice receives Bob's PeerTest message and both of Charlie's\n"
+"PeerTest messages but the enclosed IP and port numbers in Bob's \n"
+"and Charlie's second messages don't match, she knows that she is \n"
+"behind a symmetric NAT, rewriting all of her outbound packets with\n"
+"different 'from' ports for each peer contacted. She will need to\n"
+"explicitly forward a port and always have that port exposed for \n"
+"remote connectivity, ignoring further port discovery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:480
+msgid ""
+"If Alice receives Charlie's first message but not his second,\n"
+"she will retransmit her PeerTest message to Charlie up to a \n"
+"certain number of times, but if no response is received she knows\n"
+"that Charlie is either confused or no longer online."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:488
+msgid ""
+"Alice should choose Bob arbitrarily from known peers who seem\n"
+"to be capable of participating in peer tests. Bob in turn should\n"
+"choose Charlie arbitrarily from peers that he knows who seem to be\n"
+"capable of participating in peer tests and who are on a different\n"
+"IP from both Bob and Alice. If the first error condition occurs\n"
+"(Alice doesn't get PeerTest messages from Bob), Alice may decide\n"
+"to designate a new peer as Bob and try again with a different nonce."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:498
+msgid ""
+"Alice's introduction key is included in all of the PeerTest \n"
+"messages so that she doesn't need to already have an established\n"
+"session with Bob and so that Charlie can contact her without knowing\n"
+"any additional information. Alice may go on to establish a session\n"
+"with either Bob or Charlie, but it is not required."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:526
+msgid "Transmission window, ACKs and Retransmissions"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:527
+#, python-format
+msgid ""
+"The DATA message may contain ACKs of full messages and\n"
+"partial ACKs of individual fragments of a message. See\n"
+"the data message section of\n"
+"the protocol specification page\n"
+"for details."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:535
+#, python-format
+msgid ""
+"The details of windowing, ACK, and retransmission strategies are not "
+"specified\n"
+"here. See the Java code for the current implementation.\n"
+"During the establishment phase, and for peer testing, routers\n"
+"should implement exponential backoff for retransmission.\n"
+"For an established connection, routers should implement\n"
+"an adjustable transmission window, RTT estimate and timeout, similar to "
+"TCP\n"
+"or streaming.\n"
+"See the code for initial, min and max parameters."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:547
+msgid "Security"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:548
+msgid ""
+"UDP source addresses may, of course, be spoofed.\n"
+"Additionally, the IPs and ports contained inside specific\n"
+"SSU messages (RelayRequest, RelayResponse, RelayIntro, PeerTest)\n"
+"may not be legitimate.\n"
+"Also, certain actions and responses may need to be rate-limited."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:556
+msgid ""
+"The details of validation are not specified\n"
+"here. Implementers should add defenses where appropriate."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:562
+msgid "Peer capabilities"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:566
+msgid ""
+"If the peer address contains the 'B' capability, that means \n"
+"they are willing and able to participate in peer tests as\n"
+"a 'Bob' or 'Charlie'."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:578
+msgid ""
+"If the peer address contains the 'C' capability, that means\n"
+"they are willing and able to serve as an introducer - serving\n"
+"as a Bob for an otherwise unreachable Alice."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:587
+msgid ""
+"Analysis of current SSU performance, including assessment of window size "
+"adjustment\n"
+"and other parameters, and adjustment of the protocol implementation to "
+"improve\n"
+"performance, is a topic for future work."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:593
+msgid ""
+"The current implementation repeatedly sends acknowledgments for the same "
+"packets,\n"
+"which unnecessarily increases overhead."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:598
+msgid ""
+"The default small MTU value of 620 should be analyzed and possibly "
+"increased.\n"
+"The current MTU adjustment strategy should be evaluated.\n"
+"Does a streaming lib 1730-byte packet fit in 3 small SSU packets? "
+"Probably not."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:604
+msgid "The protocol should be extended to exchange MTUs during the setup."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:608
+msgid "Rekeying is currently unimplemented and may never be."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:612
+msgid ""
+"The potential use of the 'challenge' fields in RelayIntro and "
+"RelayResponse,\n"
+"and use of the padding field in SessionRequest and SessionCreated, is "
+"undocumented."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:617
+msgid ""
+"Instead of a single fragment per packet, a more efficient\n"
+"strategy may be to bundle multiple message fragments into the same "
+"packet,\n"
+"so long as it doesn't exceed the MTU."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:623
+msgid ""
+"A set of fixed packet sizes may be appropriate to further hide the data \n"
+"fragmentation to external adversaries, but the tunnel, garlic, and end to"
+" \n"
+"end padding should be sufficient for most needs until then."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:629
+msgid ""
+"Why are introduction keys the same as the router hash, should it be "
+"changed, would there be any benefit?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:633
+msgid "Capacities appear to be unused."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:637
+msgid ""
+"Signed-on times in SessionCreated and SessionConfirmed appear to be "
+"unused or unverified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:642
+msgid "Implementation Diagram"
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:643
+msgid ""
+"This diagram\n"
+"should accurately reflect the current implementation, however there may "
+"be small differences."
+msgstr ""
+
+#: i2p2www/pages/site/docs/transport/ssu.html:651
+msgid "Now on the SSU specification page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:2
+msgid "Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:3
+msgid "October 2010"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:7
+msgid "This page documents the current tunnel implementation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:9
+msgid "Tunnel overview"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:11
+msgid ""
+"Within I2P, messages are passed in one direction through a virtual\n"
+"tunnel of peers, using whatever means are available to pass the \n"
+"message on to the next hop. Messages arrive at the tunnel's \n"
+"gateway, get bundled up and/or fragmented into fixed-size tunnel "
+"messages, \n"
+"and are forwarded on to the next hop in the tunnel, which processes and "
+"verifies\n"
+"the validity of the message and sends it on to the next hop, and so on, "
+"until\n"
+"it reaches the tunnel endpoint. That endpoint takes the messages\n"
+"bundled up by the gateway and forwards them as instructed - either\n"
+"to another router, to another tunnel on another router, or locally."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:23
+msgid ""
+"Tunnels all work the same, but can be segmented into two different\n"
+"groups - inbound tunnels and outbound tunnels. The inbound tunnels\n"
+"have an untrusted gateway which passes messages down towards the \n"
+"tunnel creator, which serves as the tunnel endpoint. For outbound \n"
+"tunnels, the tunnel creator serves as the gateway, passing messages\n"
+"out to the remote endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:32
+msgid ""
+"The tunnel's creator selects exactly which peers will participate\n"
+"in the tunnel, and provides each with the necessary configuration\n"
+"data. They may have any number of hops.\n"
+"It is the intent to make\n"
+"it hard for either participants or third parties to determine the length "
+"of \n"
+"a tunnel, or even for colluding participants to determine whether they "
+"are a\n"
+"part of the same tunnel at all (barring the situation where colluding "
+"peers are\n"
+"next to each other in the tunnel)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:43
+msgid ""
+"In practice, a series of tunnel pools are used for different\n"
+"purposes - each local client destination has its own set of inbound\n"
+"tunnels and outbound tunnels, configured to meet its anonymity and\n"
+"performance needs. In addition, the router itself maintains a series\n"
+"of pools for participating in the network database and for managing\n"
+"the tunnels themselves."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:52
+msgid ""
+"I2P is an inherently packet switched network, even with these \n"
+"tunnels, allowing it to take advantage of multiple tunnels running \n"
+"in parallel, increasing resilience and balancing load. Outside of\n"
+"the core I2P layer, there is an optional end to end streaming library \n"
+"available for client applications, exposing TCP-esque operation,\n"
+"including message reordering, retransmission, congestion control, etc."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:61
+#, python-format
+msgid ""
+"An overview of I2P tunnel terminology is\n"
+"on the tunnel overview page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:66
+msgid "Tunnel Operation (Message Processing)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:69
+#, python-format
+msgid ""
+"After a tunnel is built, I2NP messages are "
+"processed and passed through it.\n"
+"Tunnel operation has four distinct processes, taken on by various \n"
+"peers in the tunnel."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:75
+msgid ""
+"First, the tunnel gateway accumulates a number\n"
+"of I2NP messages and preprocesses them into tunnel messages for\n"
+"delivery."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:80
+msgid ""
+"Next, that gateway encrypts that preprocessed data, then\n"
+"forwards it to the first hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:84
+msgid ""
+"That peer, and subsequent tunnel \n"
+"participants, unwrap a layer of the encryption, verifying that it isn't\n"
+"a duplicate, then forward it on to the next peer."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:89
+msgid ""
+"Eventually, the tunnel messages arrive at the endpoint where the I2NP "
+"messages\n"
+"originally bundled by the gateway are reassembled and forwarded on as \n"
+"requested."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:96
+msgid ""
+"Intermediate tunnel participants do not know whether they are in an\n"
+"inbound or an outbound tunnel; they always \"encrypt\" for the next hop.\n"
+"Therefore, we take advantage of symmetric AES encryption\n"
+"to \"decrypt\" at the outbound tunnel gateway,\n"
+"so that the plaintext is revealed at the outbound endpoint."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:110
+msgid "Role"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:111
+msgid "Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:112
+msgid "Encryption Operation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:113
+msgid "Postprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:117
+msgid "Outbound Gateway (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:118
+#: i2p2www/pages/site/docs/tunnels/implementation.html:141
+msgid "Fragment, Batch, and Pad"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:119
+msgid "Iteratively encrypt (using decryption operations)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:120
+#: i2p2www/pages/site/docs/tunnels/implementation.html:127
+#: i2p2www/pages/site/docs/tunnels/implementation.html:143
+#: i2p2www/pages/site/docs/tunnels/implementation.html:150
+msgid "Forward to next hop"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:124
+#: i2p2www/pages/site/docs/tunnels/implementation.html:147
+msgid "Participant"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:126
+msgid "Decrypt (using an encryption operation)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:133
+msgid "Decrypt (using an encryption operation) to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:134
+msgid "Reassemble Fragments, Forward as instructed to Inbound Gateway or Router"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:142
+#: i2p2www/pages/site/docs/tunnels/implementation.html:149
+msgid "Encrypt"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:154
+msgid "Inbound Endpoint (Creator)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:156
+msgid "Iteratively decrypt to reveal plaintext tunnel message"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:157
+msgid "Reassemble Fragments, Receive data"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:163
+msgid "Gateway Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:164
+msgid "Message Preprocessing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:166
+#, python-format
+msgid ""
+"A tunnel gateway's function is to fragment and pack\n"
+"I2NP messages into fixed-size\n"
+"tunnel messages\n"
+"and encrypt the tunnel messages.\n"
+"Tunnel messages contain the following:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:174
+msgid "A 4 byte Tunnel ID"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:175
+msgid "A 16 byte IV (initialization vector)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:176
+msgid "A checksum"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:177
+msgid "Padding, if necessary"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:178
+msgid "One or more { delivery instruction, I2NP message fragment } pairs"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:181
+msgid ""
+"Tunnel IDs are 4 byte numbers used at each hop - participants know what\n"
+"tunnel ID to listen for messages with and what tunnel ID they should be "
+"forwarded\n"
+"on as to the next hop, and each hop chooses the tunnel ID which they "
+"receive messages\n"
+"on. Tunnels themselves are short-lived (10 minutes).\n"
+"Even if subsequent tunnels are built using the same sequence of \n"
+"peers, each hop's tunnel ID will change."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:190
+msgid ""
+"To prevent adversaries from tagging the messages along the path by "
+"adjusting\n"
+"the message size, all tunnel messages are a fixed 1024 bytes in size. To"
+" accommodate \n"
+"larger I2NP messages as well as to support smaller ones more efficiently,"
+" the\n"
+"gateway splits up the larger I2NP messages into fragments contained "
+"within each\n"
+"tunnel message. The endpoint will attempt to rebuild the I2NP message "
+"from the\n"
+"fragments for a short period of time, but will discard them as necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:199
+#, python-format
+msgid ""
+"Details are in the\n"
+"tunnel message specification."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:205
+msgid "Gateway Encryption"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:207
+msgid ""
+"After the preprocessing of messages into a padded payload, the gateway "
+"builds\n"
+"a random 16 byte IV value, iteratively encrypting it and the tunnel "
+"message as\n"
+"necessary, and forwards the tuple {tunnelID, IV, encrypted tunnel "
+"message} to the next hop."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:213
+msgid ""
+"How encryption at the gateway is done depends on whether the tunnel is an"
+"\n"
+"inbound or an outbound tunnel. For inbound tunnels, they simply select a"
+" random\n"
+"IV, postprocessing and updating it to generate the IV for the gateway and"
+" using \n"
+"that IV along side their own layer key to encrypt the preprocessed data."
+" For outbound \n"
+"tunnels they must iteratively decrypt the (unencrypted) IV and "
+"preprocessed \n"
+"data with the IV and layer keys for all hops in the tunnel. The result "
+"of the outbound\n"
+"tunnel encryption is that when each peer encrypts it, the endpoint will "
+"recover \n"
+"the initial preprocessed data."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:225
+msgid "Participant Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:227
+msgid ""
+"When a peer receives a tunnel message, it checks that the message came "
+"from\n"
+"the same previous hop as before (initialized when the first message comes"
+" through\n"
+"the tunnel). If the previous peer is a different router, or if the "
+"message has\n"
+"already been seen, the message is dropped. The participant then encrypts"
+" the \n"
+"received IV with AES256/ECB using their IV key to determine the current "
+"IV, uses \n"
+"that IV with the participant's layer key to encrypt the data, encrypts "
+"the \n"
+"current IV with AES256/ECB using their IV key again, then forwards the "
+"tuple \n"
+"{nextTunnelId, nextIV, encryptedData} to the next hop. This double "
+"encryption\n"
+"of the IV (both before and after use) help address a certain class of\n"
+"confirmation attacks."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:243
+msgid ""
+"Duplicate message detection is handled by a decaying Bloom filter on "
+"message\n"
+"IVs. Each router maintains a single Bloom filter to contain the XOR of "
+"the IV and\n"
+"the first block of the message received for all of the tunnels it is "
+"participating\n"
+"in, modified to drop seen entries after 10-20 minutes (when the tunnels "
+"will have\n"
+"expired). The size of the bloom filter and the parameters used are "
+"sufficient to\n"
+"more than saturate the router's network connection with a negligible "
+"chance of \n"
+"false positive. The unique value fed into the Bloom filter is the XOR of"
+" the IV \n"
+"and the first block so as to prevent nonsequential colluding peers in the"
+" tunnel \n"
+"from tagging a message by resending it with the IV and first block "
+"switched."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:256
+msgid "Endpoint Processing"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:258
+msgid ""
+"After receiving and validating a tunnel message at the last hop in the "
+"tunnel,\n"
+"how the endpoint recovers the data encoded by the gateway depends upon "
+"whether \n"
+"the tunnel is an inbound or an outbound tunnel. For outbound tunnels, "
+"the \n"
+"endpoint encrypts the message with its layer key just like any other "
+"participant, \n"
+"exposing the preprocessed data. For inbound tunnels, the endpoint is "
+"also the \n"
+"tunnel creator so they can merely iteratively decrypt the IV and message,"
+" using the \n"
+"layer and IV keys of each step in reverse order."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:268
+msgid ""
+"At this point, the tunnel endpoint has the preprocessed data sent by the "
+"gateway,\n"
+"which it may then parse out into the included I2NP messages and forwards "
+"them as\n"
+"requested in their delivery instructions."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:275
+msgid "Tunnel Building"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:277
+msgid ""
+"When building a tunnel, the creator must send a request with the "
+"necessary\n"
+"configuration data to each of the hops and wait for all of them to agree "
+"before\n"
+"enabling the tunnel. The requests are encrypted so that only the peers "
+"who need\n"
+"to know a piece of information (such as the tunnel layer or IV key) has "
+"that\n"
+"data. In addition, only the tunnel creator will have access to the "
+"peer's\n"
+"reply. There are three important dimensions to keep in mind when "
+"producing\n"
+"the tunnels: what peers are used (and where), how the requests are sent "
+"(and \n"
+"replies received), and how they are maintained."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:291
+msgid ""
+"Beyond the two types of tunnels - inbound and outbound - there are two "
+"styles\n"
+"of peer selection used for different tunnels - exploratory and client.\n"
+"Exploratory tunnels are used for both network database maintenance and "
+"tunnel\n"
+"maintenance, while client tunnels are used for end to end client messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:299
+msgid "Exploratory tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:301
+msgid ""
+"Exploratory tunnels are built out of a random selection of peers from a "
+"subset\n"
+"of the network. The particular subset varies on the local router and on "
+"what their\n"
+"tunnel routing needs are. In general, the exploratory tunnels are built "
+"out of\n"
+"randomly selected peers who are in the peer's \"not failing but active\" "
+"profile\n"
+"category. The secondary purpose of the tunnels, beyond merely tunnel "
+"routing,\n"
+"is to find underutilized high capacity peers so that they can be promoted"
+" for\n"
+"use in client tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:311
+#, python-format
+msgid ""
+"Exploratory peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:317
+msgid "Client tunnel peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:319
+msgid ""
+"Client tunnels are built with a more stringent set of requirements - the "
+"local\n"
+"router will select peers out of its \"fast and high capacity\" profile "
+"category so\n"
+"that performance and reliability will meet the needs of the client "
+"application.\n"
+"However, there are several important details beyond that basic selection "
+"that \n"
+"should be adhered to, depending upon the client's anonymity needs."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:327
+#, python-format
+msgid ""
+"Client peer selection is discussed further on the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:332
+msgid "Peer Ordering within Tunnels"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:334
+#, python-format
+msgid ""
+"Peers are ordered within tunnels to deal with the\n"
+"predecessor attack\n"
+"(2008 update)."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:341
+msgid ""
+"To frustrate the predecessor \n"
+"attack, the tunnel selection keeps the peers selected in a strict order -"
+"\n"
+"if A, B, and C are in a tunnel for a particular tunnel pool, the hop "
+"after A is always B, and the hop after\n"
+"B is always C."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:348
+msgid ""
+"Ordering is implemented by generating a random 32-byte key for each\n"
+"tunnel pool at startup.\n"
+"Peers should not be able to guess the ordering, or an attacker could\n"
+"craft two router hashes far apart to maximize the chance of being at both"
+"\n"
+"ends of a tunnel.\n"
+"Peers are sorted by XOR distance of the\n"
+"SHA256 Hash of (the peer's hash concatenated with the random key) from "
+"the random key"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:363
+msgid ""
+"Because each tunnel pool uses a different random key, ordering is "
+"consistent\n"
+"within a single pool but not between different pools.\n"
+"New keys are generated at each router restart."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:370
+msgid "Request delivery"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:372
+#, python-format
+msgid ""
+"A multi-hop tunnel is built using a single build message which is "
+"repeatedly\n"
+"decrypted and forwarded. In the terminology of\n"
+"Hashing it out in Public,\n"
+"this is \"non-interactive\" telescopic tunnel building."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:379
+#, python-format
+msgid ""
+"This tunnel request preparation, delivery, and response method is\n"
+"designed to reduce the number of\n"
+"predecessors exposed, cuts the number of messages transmitted, verifies "
+"proper\n"
+"connectivity, and avoids the message counting attack of traditional "
+"telescopic\n"
+"tunnel creation.\n"
+"(This method, which sends messages to extend a tunnel through the "
+"already-established\n"
+"part of the tunnel, is termed \"interactive\" telescopic tunnel building "
+"in\n"
+"the \"Hashing it out\" paper.)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:390
+#, python-format
+msgid ""
+"The details of tunnel request and response messages, and their "
+"encryption,\n"
+"are specified here."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:395
+msgid ""
+"Peers may reject tunnel creation requests for a variety of reasons, "
+"though\n"
+"a series of four increasingly severe rejections are known: probabilistic "
+"rejection\n"
+"(due to approaching the router's capacity, or in response to a flood of "
+"requests), \n"
+"transient overload, bandwidth overload, and critical failure. When "
+"received, \n"
+"those four are interpreted by the tunnel creator to help adjust their "
+"profile of\n"
+"the router in question."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:404
+#, python-format
+msgid ""
+"For more information on peer profiling, see the\n"
+"Peer Profiling and Selection page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:410
+msgid "Tunnel Pools"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:412
+#, python-format
+msgid ""
+"To allow efficient operation, the router maintains a series of tunnel "
+"pools,\n"
+"each managing a group of tunnels used for a specific purpose with their "
+"own\n"
+"configuration. When a tunnel is needed for that purpose, the router "
+"selects one\n"
+"out of the appropriate pool at random. Overall, there are two "
+"exploratory tunnel\n"
+"pools - one inbound and one outbound - each using the router's default "
+"configuration.\n"
+"In addition, there is a pair of pools for each local destination -\n"
+"one inbound and one outbound tunnel pool. Those pools use the "
+"configuration specified\n"
+"when the local destination connects to the router via I2CP, or the router's defaults if\n"
+"not specified."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:424
+#, python-format
+msgid ""
+"Each pool has within its configuration a few key settings, defining how "
+"many\n"
+"tunnels to keep active, how many backup tunnels to maintain in case of "
+"failure,\n"
+"how long the tunnels should be, whether those\n"
+"lengths should be randomized, as \n"
+"well as any of the other settings allowed when configuring individual "
+"tunnels.\n"
+"Configuration options are specified on the I2CP "
+"page."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:434
+msgid "Tunnel Lengths and Defaults"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:436
+msgid "On the tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:438
+msgid "Anticipatory Build Strategy and Priority"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:440
+msgid ""
+"Tunnel building is expensive, and tunnels expire a fixed time after they "
+"are built.\n"
+"However, when a pool that runs out of tunnels, the Destination is "
+"essentially dead.\n"
+"In addition, tunnel build success rate may vary greatly with both local "
+"and global\n"
+"network conditions.\n"
+"Therefore, it is important to maintain an anticipatory, adaptive build "
+"strategy\n"
+"to ensure that new tunnels are successfully built before they are needed,"
+"\n"
+"without building an excess of tunnels, building them too soon,\n"
+"or consuming too much CPU or bandwidth creating and sending the encrypted"
+" build messages."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:451
+msgid ""
+"For each tuple {exploratory/client, in/out, length, length variance}\n"
+"the router maintains statistics on the time required for a successful\n"
+"tunnel build.\n"
+"Using these statistics, it calculates how long before a tunnel's "
+"expiration\n"
+"it should start attempting to build a replacement.\n"
+"As the expiration time approaches without a successful replacement,\n"
+"it starts multiple build attempts in parallel, and then\n"
+"will increase the number of parallel attempts if necessary."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:462
+msgid ""
+"To cap bandwidth and CPU usage,\n"
+"the router also limits the maximum number of build attempts outstanding\n"
+"across all pools.\n"
+"Critical builds (those for exploratory tunnels, and for pools that have\n"
+"run out of tunnels) are prioritized."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:471
+msgid "Tunnel Message Throttling"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:473
+msgid ""
+"Even though the tunnels within I2P bear a resemblance to a circuit "
+"switched\n"
+"network, everything within I2P is strictly message based - tunnels are "
+"merely\n"
+"accounting tricks to help organize the delivery of messages. No "
+"assumptions are\n"
+"made regarding reliability or ordering of messages, and retransmissions "
+"are left\n"
+"to higher levels (e.g. I2P's client layer streaming library). This "
+"allows I2P\n"
+"to take advantage of throttling techniques available to both packet "
+"switched and\n"
+"circuit switched networks. For instance, each router may keep track of "
+"the \n"
+"moving average of how much data each tunnel is using, combine that with "
+"all of \n"
+"the averages used by other tunnels the router is participating in, and be"
+" able\n"
+"to accept or reject additional tunnel participation requests based on its"
+" \n"
+"capacity and utilization. On the other hand, each router can simply drop"
+" \n"
+"messages that are beyond its capacity, exploiting the research used on "
+"the \n"
+"normal Internet."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:489
+msgid ""
+"In the current implementation, routers implement a\n"
+"weighted random early discard (WRED) strategy.\n"
+"For all participating routers (internal participant, inbound gateway, and"
+" outbound endpoint),\n"
+"the router will start randomly dropping a portion of messages as the\n"
+"bandwidth limits are approached.\n"
+"As traffic gets closer to, or exceeds, the limits, more messages are "
+"dropped.\n"
+"For an internal participant, all messages are fragmented and padded and "
+"therefore are the same size.\n"
+"At the inbound gateway and outbound endpoint, however, the dropping "
+"decision is made\n"
+"on the full (coalesced) message, and the message size is taken into "
+"account.\n"
+"Larger messages are more likely to be dropped.\n"
+"Also, messages are more likely to be dropped at the outbound endpoint "
+"than the inbound gateway,\n"
+"as those messages are not as \"far along\" in their journey and thus the "
+"network cost of\n"
+"dropping those messages is lower."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:507
+msgid "Mixing/batching"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:509
+msgid ""
+"What strategies could be used at the gateway and at each hop for "
+"delaying,\n"
+"reordering, rerouting, or padding messages? To what extent should this "
+"be done\n"
+"automatically, how much should be configured as a per tunnel or per hop "
+"setting,\n"
+"and how should the tunnel's creator (and in turn, user) control this "
+"operation?\n"
+"All of this is left as unknown, to be worked out for a distant future "
+"release."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:518
+msgid "Padding"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:519
+msgid ""
+"The padding strategies can be used on a variety of levels, addressing the"
+"\n"
+"exposure of message size information to different adversaries.\n"
+"The current fixed tunnel message size is 1024 bytes. Within this "
+"however, the fragmented\n"
+"messages themselves are not padded by the tunnel at all, though for end "
+"to end \n"
+"messages, they may be padded as part of the garlic wrapping."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/implementation.html:529
+msgid ""
+"WRED strategies have a significant impact on end-to-end performance,\n"
+"and prevention of network congestion collapse.\n"
+"The current WRED strategy should be carefully evaluated and improved."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:2
+msgid "Old Tunnel Implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/old-implementation.html:5
+#, python-format
+msgid ""
+"Note: Obsolete - NOT used! Replaced in 0.6.1.10 - see here for the current implementation"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:3
+msgid "November 2016"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:7
+msgid ""
+"This page describes the origins and design of I2P's unidirectional "
+"tunnels.\n"
+"For further information see:"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:13
+msgid "Tunnel overview page"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:19
+msgid "Tunnel design discussion"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:21
+msgid "Peer selection"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:23
+msgid "Meeting 125 (~13:12-13:30)"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:28
+msgid "Review"
+msgstr "Prehľad"
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:30
+msgid ""
+"While we aren't aware of any published research on the advantages of \n"
+"unidirecdtional tunnels,\n"
+"they appear to make it harder to detect a \n"
+"request/response pattern, which is quite possible to detect over a \n"
+"bidirectional tunnel.\n"
+"Several apps and protocols, notably HTTP,\n"
+"do transfer data in such manner. Having the traffic follow the same \n"
+"route to its destination and back could make it easier for an \n"
+"attacker who has only timing and traffic volume data to infer the path a"
+" \n"
+"tunnel is taking.\n"
+"Having the response come back along a different path arguably \n"
+"makes it harder."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:45
+msgid ""
+"When dealing with \n"
+"an internal adversary or most external adversaries, I2P's undirectional "
+"tunnels\n"
+"expose half as much traffic data than would be exposed with bidirectional"
+" circuits\n"
+"by simply looking at the flows themselves - an HTTP request and response "
+"would \n"
+"follow the same path in Tor, while in I2P the packets making up the "
+"request \n"
+"would go out through one or more outbound tunnels and the packets making "
+"up \n"
+"the response would come back through one or more different inbound "
+"tunnels."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:55
+msgid ""
+"The strategy of using two separate tunnels for inbound and outbound\n"
+"communication is not the only technique available, and it does have "
+"anonymity\n"
+"implications. On the positive side, by using separate tunnels it lessens"
+" the\n"
+"traffic data exposed for analysis to participants in a tunnel - for "
+"instance,\n"
+"peers in an outbound tunnel from a web browser would only see the traffic"
+" of\n"
+"an HTTP GET, while the peers in an inbound tunnel would see the payload \n"
+"delivered along the tunnel. With bidirectional tunnels, all participants"
+" would\n"
+"have access to the fact that e.g. 1KB was sent in one direction, then "
+"100KB\n"
+"in the other. On the negative side, using unidirectional tunnels means "
+"that\n"
+"there are two sets of peers which need to be profiled and accounted for, "
+"and\n"
+"additional care must be taken to address the increased speed of "
+"predecessor\n"
+"attacks. The tunnel pooling and building process\n"
+"(peer selection and ordering strategies)\n"
+"should minimize the worries of the predecessor attack."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:73
+msgid "Anonymity"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:75
+#, python-format
+msgid ""
+"A recent paper by Hermann and Grothoff\n"
+"declared that I2P's unidirectional tunnels \"seems to be a bad design "
+"decision\"."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:80
+msgid ""
+"The paper's main point is that\n"
+"deanonymizations on unidirectional tunnels take a longer time, which is "
+"an \n"
+"advantage, but that an attacker can be more certain in the unidirectional"
+" case. \n"
+"Therefore, the paper claims it isn't an advantage at all, but a "
+"disadvantage, at least\n"
+"with long-living eepsites."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:88
+msgid ""
+"This conclusion is not fully supported by the paper. Unidirectional "
+"tunnels clearly \n"
+"mitigate other attacks and it's not clear how to trade off the risk of "
+"the \n"
+"attack in the paper\n"
+"with attacks on a bidirectional tunnel architecture."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:95
+msgid ""
+"This conclusion is based on an arbitrary certainty vs. time weighting \n"
+"(tradeoff) that may not be applicable in all cases. For \n"
+"example, somebody could make a list of possible IPs then issue subpoenas "
+"to \n"
+"each. Or the attacker could DDoS each in turn and via a simple \n"
+"intersection attack see if the eepsite goes down or is slowed down. So "
+"close \n"
+"may be good enough, or time may be more important."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:104
+msgid ""
+"The conclusion is based on a specific weighting of the importance of "
+"certainty \n"
+"vs. time, and that weighting may be wrong, and it's definitely debatable,"
+" \n"
+"especially in a real world with subpoenas, search warrants, and other "
+"methods \n"
+"available for final confirmation."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:111
+msgid ""
+"A full analysis of the tradeoffs of unidirectional vs. bidirectional \n"
+"tunnels is clearly outside the scope of the paper, and has not been done"
+" \n"
+"elsewhere. For example, how does this attack compare to the numerous "
+"possible \n"
+"timing attacks published about onion-routed networks? Clearly the authors"
+" have not\n"
+"done that analysis, if it's even possible to do it\n"
+"effectively."
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:120
+msgid ""
+"Tor uses bidirectional tunnels and has had a lot of academic review. I2P"
+" \n"
+"uses unidirectional tunnels and has had very little review. Does the lack"
+" of a \n"
+"research paper defending unidirectional tunnels mean that it is a poor "
+"design \n"
+"choice, or just that it needs more study? Timing attacks and \n"
+"distributed attacks are difficult to defend against in both I2P and Tor. "
+"The \n"
+"design intent (see references above) was that unidirectional tunnels are "
+"more \n"
+"resistant to timing attacks. However, the paper presents a somewhat "
+"different type of timing \n"
+"attack. Is this attack, innovative as it is, sufficient to label I2P's \n"
+"tunnel architecture (and thus I2P as a whole) a \"bad design\", and by \n"
+"implication clearly inferior to Tor, or is it just a design alternative "
+"that \n"
+"clearly needs further investigation and analysis? There are several other"
+" reasons \n"
+"to consider I2P currently inferior to Tor and other projects (small "
+"network \n"
+"size, lack of funding, lack of review) but is unidirectional tunnels "
+"really a \n"
+"reason?"
+msgstr ""
+
+#: i2p2www/pages/site/docs/tunnels/unidirectional.html:137
+msgid ""
+"In summary, \"bad design decision\" is apparently (since the paper does\n"
+"not label bidirectional tunnels \"bad\") shorthand for \"unidirectional \n"
+"tunnels are unequivocally inferior to bidirectional tunnels\", yet this \n"
+"conclusion is not supported by the paper."
+msgstr ""
+